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 
pdf 16 trang xuanthi 29/12/2022 2400
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:

  • pdfbai_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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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