Bài giảng Hệ thống điều khiển nhúng - Chương 3: Ứng dụng FBGA trong thiết kế các module điều khiển
- Giá trị D được cập nhật sau mỗi
cạnh lên của xung encB.
- Nếu bộ đếm D vượt quá giá trị
0xFF thì sẽ luôn bằng 0xFF
- Giả sử encA luôn luôn nhanh
pha hơn encB
cạnh lên của xung encB.
- Nếu bộ đếm D vượt quá giá trị
0xFF thì sẽ luôn bằng 0xFF
- Giả sử encA luôn luôn nhanh
pha hơn encB
Bạn đang xem tài liệu "Bài giảng Hệ thống điều khiển nhúng - Chương 3: Ứng dụng FBGA trong thiết kế các module điều khiển", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_he_thong_dieu_khien_nhung_chuong_3_ung_dung_fbga_t.pdf
Nội dung text: Bài giảng Hệ thống điều khiển nhúng - Chương 3: Ứng dụng FBGA trong thiết kế các module điều khiển
- I. MỘT SỐ LƯU Ý KHI THIẾT KẾ 1.1. Các biếnchỉđược gán trong 1 khối always, không được gán trong nhiềukhối always khác reg [7:0] a, b; reg [7:0] a, b; initial a = 4; initial a = 4; always @(posedge clk) begin always @(posedge clk or posedge reset) a = b + 2; begin end if (reset == 1) a = 0; always @(posedge reset) begin else a = 0; a = b + 2; end end 2 Trường ĐH Bách Khoa TP.HCM
- I. MỘT SỐ LƯU Ý KHI THIẾT KẾ 1.3. Dùng biếntạm để cậpnhậtgiátrị các bộđếm module do_dorongxung (clk, enc, D); module do_dorongxung (clk, enc, D); input clk, enc; input clk, enc; output [7:0] D; output [7:0] D; reg [7:0] D = 8’h00; reg [7:0] D = 8’h00, temp = 8’h01; reg pre_enc = 0; reg pre_enc = 0; always @(posedge clk) begin always @(posedge clk) begin pre_enc <= enc; pre_enc <= enc; if ({pre_enc, enc} == 2’b01) if ({pre_enc, enc} == 2’b11) D <= 1; temp <= temp+1; else if ({pre_enc, enc} == 2’b11) else if ({pre_enc, enc} == 2’b10) begin D <= D+1; D <= temp; temp <= 0; end end end 4 Trường ĐH Bách Khoa TP.HCM
- I. MỘT SỐ LƯU Ý KHI THIẾT KẾ 1.4. Ví dụ 2: Viếtchương trình verilog đo độ lệch pha 2 tín hiệu - Giá trị D đượccậpnhậtsaumỗi module do_dolechpha (clk, encA, encB, D); cạnh lên của xung encB. input clk, encA, encB; - NếubộđếmD vượt quá giá trị output [7:0] D; reg [7:0] D = 8’h00, temp = 8’h00; 0xFF thì sẽ luôn bằng 0xFF reg pre_enc = 0; - Giả sử encA luôn luôn nhanh pha hơn encB 6 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ CÁC MODULE ĐIỀU KHIỂN 1. Module đọc xung encoder 8 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ CÁC MODULE ĐIỀU KHIỂN 2. Module đọccảmbiếnsiêuâm > 50 ms Distance (cm) = Time (us) / 58 10 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ CÁC MODULE ĐIỀU KHIỂN 3. Module nội suy cho máy CNC, robot 12 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ CÁC MODULE ĐIỀU KHIỂN 3. Module nội suy cho máy CNC, robot (Max Pulse input 200kHz ) 14 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ CÁC MODULE ĐIỀU KHIỂN 3. Module nội suy cho máy CNC, robot • Đầu vào clk (1us), WR, LS module servo (clk,WR,LS, dT,T, Pulse,Dir); • Đầu vào T[7:0], dT[7:0] input clk, WR, LS; • ĐầuraPulse, Dir input [7:0] T, dT; output Pulse, Dir; • Khi có xung cạnh lên củaWR, dT sẽ nạpgiátrị mới. always @(posedge clk) begin • Khi LS = 1, ngõ ra Pulse = 0, acc = acc + dT; LS = 0, Pulse xuấtratheonội suy. if (acc > T) begin • dT[7] qui định bit dấuchoDir, acc = acc - T; pinout = 1; dT[7] = 1, Dir = 1. end dT [7] = 0, Dir = 0. else pinout = 0; end dT[6:0] qui định số xung cần xuất assign Pulse = ~mclk & pinout; 16 Trường ĐH Bách Khoa TP.HCM