
Bài giảng Điều khiển nhúng - Chương 3: Ứng dụng FPGA trong thiết kế các module điều khiển
lượt xem 4
download

Bài giảng "Điều khiển nhúng - Chương 3: Ứng dụng FPGA trong thiết kế các module điều khiển" cung cấp cho người học các kiến thức: Một số lưu ý khi thiết kế, thiết kế các module điều khiển. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Điều khiển nhúng - Chương 3: Ứng dụng FPGA trong thiết kế các module điều khiển
- Chương 3 ỨNG DỤNG FPGA 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ến chỉ được gán trong 1 khối always, không được gán trong nhiều khố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.2. Để phát hiện xung cạnh lên của các tín hiệu, dùng xung clk tần số cao chèn vào module demxung_encoder (clk, enc, D); module demxung_encoder (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; reg pre_enc = 0; reg pre_enc = 0; always @(posedge clk) begin always @(posedge clk) begin pre_enc
- I. MỘT SỐ LƯU Ý KHI THIẾT KẾ 1.3. Dùng biến tạm để cập nhật giá 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
- I. MỘT SỐ LƯU Ý KHI THIẾT KẾ 1.4. Ví dụ 1: Viết chương trình verilog đo tần số - Giá trị D được cập nhật sau mỗi module do_tanso (clk, enc, D); input clk, enc; cạnh lên của xung enc. output [7:0] D; - Tần số xung clk chọn rất lớn so reg [7:0] D = 8’h00, temp = 8’h00; với tần số của xung enc reg pre_enc = 0; - Nếu bộ đếm D vượt quá giá trị always @(posedge clk) begin 0xFF thì sẽ luôn bằng 0xFF … end 5 Trường ĐH Bách Khoa TP.HCM
- I. MỘT SỐ LƯU Ý KHI THIẾT KẾ 1.4. Ví dụ 2: Viết chương trình verilog đo độ lệch pha 2 tín hiệu - Giá trị D được cập nhật sau mỗi module do_dolechpha (clk, encA, encB, D); cạnh lên của xung encB. input clk, encA, encB; - Nếu bộ đếm D 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 Sơ đồ kết nối phần cứng các module điều khiển 7 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 1. Module đọc xung encoder • Đầu vào clk, encA, encB, rst, x4 • Đầu ra 16 bit D[15:0] • Khi rst = 1: D[15:0] = 16’h8000 • Khi rst = 0: D[15:0] đếm lên, xuống theo xung encA, encB • Đếm x1, x2, x4 module encoder (clk,encA,encB,x4,rst,D); input clk, encA, encB, rst; input [1:0] x4; output [15:0] D; reg [15:0] D = 16’h8000; … 9 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ CÁC MODULE ĐIỀU KHIỂN 2. Module đọc cảm biến siê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 2. Module đọc cảm biến siêu âm • Đầu vào clk (1us), EchoPulse module sfr04 (clk, EchoPusle, Trigger, D); • Đầu ra 16 bit D[15:0], Trigger input clk, EchoPuse; • Chân Trigger có độ rộng xung output Trigger; output [15:0] D; 10us, lặp lại với chu kỳ T = 50ms reg [15:0] D = 16’h0000; (Chỉnh T = 1ms khi mô phỏng) … • Ngõ ra D[15:0] cập nhật khi có cạnh xuống của EchoPulse. (Đơn vị đo us). • Nếu D = 0xFFFF thì không được tăng D. 11 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 13 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 - Thuật toán nội suy đường thẳng theo phương pháp xung chuẩn - dT1: độ tăng trục X - dT2: độ tăng trục Y - T: thời gian lặp lại 15 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; input [7:0] T, dT; • Đầu ra Pulse, Dir output Pulse, Dir; • Khi có xung cạnh lên của WR, … dT sẽ nạp giá trị mới. always @(posedge clk) begin • Khi LS = 1, ngõ ra Pulse = 0, acc = acc + dT; LS = 0, Pulse xuất ra theo nội suy. if (acc > T) begin • dT[7] qui định bit dấu cho Dir, acc = acc - T; pinout = 1; dT[7] = 1, Dir = 1. end else pinout = 0; dT [7] = 0, Dir = 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

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cơ sở lập trình 1: Giới thiệu môn học - Lê Quý Tài
9 p |
140 |
8
-
Bài giảng Điều khiển lập trình - Chương 2: Lập trình ứng dụng cơ bản PLC
49 p |
22 |
7
-
Bài giảng Điều khiển nhúng - Chương 2: Ngôn ngữ VERILOG
43 p |
37 |
7
-
Bài giảng Hệ thống nhúng - ThS. Lưu Hoàng
43 p |
72 |
7
-
Bài giảng Điều khiển truy cập dữ liệu
10 p |
89 |
6
-
Bài giảng Điều khiển lập trình PLC - Bùi Thúc Minh
67 p |
43 |
6
-
Bài giảng Tin học đại cương (Phần 3: Lập trình C): Chương 4 - Viện Công nghệ Thông tin & Truyền thông
64 p |
24 |
5
-
Bài giảng Điều khiển nhúng - Chương 1: Thiết kế phần cứng dùng FPGA
26 p |
31 |
4
-
Bài giảng Vi điều khiển 8051 - Bài 8: I/O và ngắt của 8051
27 p |
3 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 7: I/O của 8051 và 8255
15 p |
8 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 6: Giao tiếp của 8051 - Tạo bản đồ địa chỉ
15 p |
8 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 5: Giao tiếp của 8051
15 p |
7 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 4: Lập trình cho 8051 - Số học và lôgic
22 p |
3 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 3: Lập trình hợp ngữ cho bộ vi điều khiển 8051
21 p |
4 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 2: Cấu trúc bộ vi điều khiển 8051 - Giới thiệu về lập trình hợp ngữ
24 p |
8 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 9: Các bộ định thời của 8051
15 p |
2 |
2
-
Bài giảng Vi điều khiển 8051 - Bài 1: Tổng quan về 8051
10 p |
4 |
1


Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
