Bài giảng Hệ thống điều khiển nhúng - Chương 1: Ngôn ngữ Verilog

Ngôn ngữ mô tả phần cứng HDL
(Hardware Description Language)
- Thiết kế mạch số (1950’s, 1980’s):
vẽ mạch schematic -> lựa chọn linh
kiện -> thi công.
- Mạch schematic gồm có:
• Phần tử (component): Cổng
(Gate), Điện trở, (LEDs, LCD)
Chips,…
• Dây kết nối các phần tử
• Input, Output -> xem 1 mạch
schematic như 1 phần tử -> kết
nối phân cấ 
pdf 43 trang xuanthi 29/12/2022 2160
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống điều khiển nhúng - Chương 1: Ngôn ngữ Verilog", để 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_1_ngon_ngu_verilo.pdf

Nội dung text: Bài giảng Hệ thống điều khiển nhúng - Chương 1: Ngôn ngữ Verilog

  1. I. GIỚI THIỆU 1.1. Ngôn ngữ mô tả phầncứng HDL 1950’s 1980’s (Hardware Description Language) -Thiếtkế mạch số (1950’s, 1980’s): vẽ mạch schematic -> lựachọn linh kiện -> thi công. -Mạch schematic gồmcó: •Phầntử (component): Cổng (Gate), Điệntrở, (LEDs, LCD) Chips, •Dâykếtnốicácphầntử • Input, Output -> xem 1 mạch schematic như 1 phầntử -> kết nối phân cấp. 2 Trường ĐH Bách Khoa TP.HCM
  2. I. GIỚI THIỆU 1.2. Ưu điểmHDL so với Schematic: -Xâydựng và lưutrữ HDL trong các file. - Các file có thểđóng gói và xử lý bởi các công cụ: •Design: ViếtHDL, vẽ sơđồ • Synthesis: lựachọnphầntử, tối ưulogic, ướclượng thờigian • Implementation: gán chân, lập trình vào FPGA -Dễ dàng thay đổi, chỉnh sửathiếtkế mà không cầnthayđổiphầncứng. - Đáp ứng các yêu cầuthiếtkế phức tạp 4 Trường ĐH Bách Khoa TP.HCM
  3. II. THIẾT KẾ PHÂN CẤP 2.1. Các mô tả (abstraction) trong thiếtkế phầncứng: -Môtả cấu trúc (Structural modeling). -Môtả dòng dữ liệu (Dataflow modeling). -Môtả hành vi (Behavioral modeling) 6 Trường ĐH Bách Khoa TP.HCM
  4. II. THIẾT KẾ PHÂN CẤP 2.3. Ví dụ: Mô tả hành vi 8 Trường ĐH Bách Khoa TP.HCM
  5. III. VERILOG HDL 3.1. Tổng hợp (Synthesis) và Mô phỏng (Simulation) -Tập trung vào mô phỏng và viết chính xác ngôn ngữ Verilog - Ghi nhớ: Mô phỏng đúng không có nghĩalàthicôngđúng 10 Trường ĐH Bách Khoa TP.HCM
  6. III. VERILOG HDL 3.2. Module module name(portlist); -> tên module (danh sách port) port declarations; -> hướng của port (input, output, bidir) parameter declarations; -> tham số, khai báo module khác wire declarations; -> tín hiệukếtnốicụcbộ reg declarations; -> lưutrữ cụcbộ, biếncụcbộ variable declarations; -> lưutrữ cụcbộ trong module module instantiations; -> mô tả cấutrúc dataflow statements; -> mô tả hành vi always blocks; -> mô tả hành vi initial blocks; -> mô tả hành vi tasks and functions; endmodule 12 Trường ĐH Bách Khoa TP.HCM
  7. III. VERILOG HDL 3.2. Module – Ví dụ 1 module name(portlist); module or_nand_4 (enable, x1, x2, x3, x4, y); port declarations; input enable, x1, x2, x3, x4; parameter declarations; output y; wire declarations; assign y = or_nand(enable, x1, x2, x3, x4); reg declarations; function or_nand; input enable, x1, x2, x3, x4; variable declarations; begin module instantiations; or_nand = ~(enable & (x1 | x2) & (x3 | dataflow statements; x4)); always blocks; end initial blocks; endfunction tasks and functions; endmodule endmodule 14 Trường ĐH Bách Khoa TP.HCM
  8. III. VERILOG HDL 3.3. Giá trị dữ liệu(Data value) -4 loạigiátrị: •0: mứcthấp, 1: mức cao • Z: hi-Z, X: unkown - Khi khởitạo, các biếncógiátrị X -Gángiátrị các hằng số: {bit width}’{base}{value} • parameter RED = 6’b010_111 : 010111 • parameter BLUE = 8'b0110 : 00000110 • 4'bx01 : xx01 • 16'H3AB : 0000001110101011 • 24 : 0 0011000 • 5'O36 : 11011 • 8'hz : zzzzzzzz 16 Trường ĐH Bách Khoa TP.HCM
  9. III. VERILOG HDL 3.3. Loạidữ liệu (Data type) 18 Trường ĐH Bách Khoa TP.HCM
  10. IV. PHÉP GÁN (ASSIGNMENT) 4.1. Khối initial và always module initalways (clk); -Môtả hành vi reg [7:0] a; -Khối initial chỉ thựchiệnmộtlần khi reg b; khởi động (khi bật nguồn) initial -Khối always thựchiệnlặplại liên tục begin • always @(a or b) a = 0; -> any changes in a or b b = 0; • always @(posedge a) end always @ (posedge clk) -> a transitions from 0 to 1 begin • always @(negedge a) a = a + 1; -> a transitions from 1 to 0 b = 1; • always @* end -> any changes in “inputs” endmodule; 20 Trường ĐH Bách Khoa TP.HCM
  11. IV. PHÉP GÁN (ASSIGNMENT) 4.2. Phép gán liên tục (continuous assignment) - Cú pháp: assign LHS = RHS; -LHS : kiểudữ liệubắtbuộclàwire. -RHS: kiểudữ liệucóthể là wire, reg, hằng số, biểuthức - Giá trị của RHS luôn luôn đượcgán module nand(q1, q2, a, b) cho LHS input a, b; -Tấtcả các phép gán hoạt động đồng output q1, q2; thời, chỉ phụ thuộc netlist assign q1 = ~(a | b); assign q2 = ~(a & b); -Mỗingõrachỉđượcgán1 lần endmodule -Thường sử dụng trong kếtnối các assign {q1,q2} = {~(a | b),~(a & b)}; cổng logic 22 Trường ĐH Bách Khoa TP.HCM
  12. IV. PHÉP GÁN (ASSIGNMENT) 4.4. Phép gán thủ tục blocking và // Blocking non-blocking reg [7:0] a, b; - Blocking: phép gán củahànglệnh initial b = 0; trên phải được hoàn thành trước initial a = 4; khi thựchiệnhànglệnh bên dưới. always @(posedge clk) begin - Non-blocking: các biếndữ liệuchỉ a = b + 2; đượccậpnhậtsaukhirakhỏi1 b = a * 3; khối. end - Trong thựctế, không đượcgán // Non-blocking blocking và non-blocking trong reg [7:0] a, b; cùng 1 khối always. always @(posedge clk) begin -Vídụ: Giá trị củaa, b bằng bao a <= b + 2; nhiêu sau 3 chu kỳ xung clk? b <= a * 3; end 24 Trường ĐH Bách Khoa TP.HCM
  13. IV. PHÉP GÁN (ASSIGNMENT) 4.4. Phép gán thủ tục blocking và non-blocking 26 Trường ĐH Bách Khoa TP.HCM
  14. V. TOÁN TỬ (OPERATOR) 5.1. Các dạng toán tử: • Arithmetic: + (cộng), - (trừ), * (nhân), / (chia), (mũ), % (số dư) • Bitwise: & (and), | (or), ~ (negate), ^ (xor), ^~ (xnor) • Reduction: assign q = &a, q = |(4'b0001) = 1, q = ^(4'b0111) = 1 • Logical: !, &&, ||, !=, (4'b1100) && (4'b0011) = 0 • Relational: a b, a = b, a ==b, a != b • Logical shift: > • Arithmetic shift: >> • Selection: assign q = c ? a : b • Concatenation: {a, b[3:2], c} = {a, b[3], b[2], c} = a 4-bit vector • Replication: 4{a} = {a, a, a, a}, {a, 3{b,c}} = {a, b, c, b, c, b, c} 28 Trường ĐH Bách Khoa TP.HCM
  15. V. TOÁN TỬ (OPERATOR) 5.2. Ví dụ: reg [5:0] A = 6′b101111; reg [5:0] B, C; B = A >> 2; // 6’b001011 B = A>>>2; // 6’b111011 C = A + B; // 6’b101010 C = A & B; // 6’b101011 C = {A[2:1], B[2:0]}; // 6’b011011 assign out = &A; // A[0]&A[1]&A[2] &A[3]&A[4]&A[5] = 0 assign out = (A[1]) ? ((A[0]) ? B[1] : B[2]) : B[0]; // = 1 C = out ? A : C; // 6′b101111 30 Trường ĐH Bách Khoa TP.HCM
  16. VI. PHÁT BIỂU CÓ ĐIỀU KIỆN 6.1. if-then-else: 32 Trường ĐH Bách Khoa TP.HCM
  17. VI. PHÁT BIỂU CÓ ĐIỀU KIỆN 6.2. Case: 34 Trường ĐH Bách Khoa TP.HCM
  18. VI. PHÁT BIỂU CÓ ĐIỀU KIỆN 6.3. Ví dụ: - Dùng phát biểu if-then-else module mux_4bits(y, a, b, c, d, sel); input [3:0] a, b, c, d; input [1:0] sel output [3:0] y; reg [3:0] y; always @ (a or b or c or d or sel) begin if (sel == 0) y = a; else if (sel == 1) y = b; else if (sel == 2) y = c; else if (sel == 3) y = d; else y = 4'bx; end endmodule 36 Trường ĐH Bách Khoa TP.HCM
  19. VI. PHÁT BIỂU CÓ ĐIỀU KIỆN 6.3. Ví dụ: -Thựchiệnsơđồsau dùng phát biểu if-then-else và Case 38 Trường ĐH Bách Khoa TP.HCM
  20. VI. PHÁT BIỂU CÓ ĐIỀU KIỆN 6.4. Mộtsố Flip-Flop tiêu biểu: -D Flip-Flop với Reset không đồng bộ: module dff (data, clk, reset, q); input data, clk, reset; output q; reg q; always @(posedge clk or negedge reset) if (~reset) q <= 1'b0; else q <= data; endmodule 40 Trường ĐH Bách Khoa TP.HCM
  21. VI. PHÁT BIỂU CÓ ĐIỀU KIỆN 6.4. Mộtsố Flip-Flop tiêu biểu: -D Flip-Flop với Preset, Reset không đồng bộ: module dff (data, clk, preset, reset, q); input data, clk, preset, reset; output q; reg q; always @ (posedge clk or negedge reset or posedge preset) if (~reset) q <= 1'b0; else if (preset) q <= 1'b1; else q <= data; endmodule 42 Trường ĐH Bách Khoa TP.HCM