Bài giảng Điều khiển nhúng - Chương 2: Ngôn ngữ VERILOG
lượt xem 7
download
Bài giảng "Điều khiển nhúng - Chương 2: Ngôn ngữ VERILOG" cung cấp cho người học các kiến thức: Giới thiệu, thiết kế phân cấp, VERILOG HDL, phép gán, toán tử, phát biểu có điều kiện,... Mời các bạn cùng tham khảo nội dung chi tiết.
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 2: Ngôn ngữ VERILOG
- Chương 2 NGÔN NGỮ VERILOG 1
- I. GIỚI THIỆU 1.1. Ngôn ngữ mô tả phần cứng HDL 1950’s 1980’s (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ấp. 2 Trường ĐH Bách Khoa TP.HCM
- I. GIỚI THIỆU 1.1. Ngôn ngữ mô tả phần cứng HDL 1995’s (Hardware Description Language) - Thiết kế mạch số (1995’s ->): vẽ mạch schematic ->... hoàn tất - Hai ngôn ngữ phổ biến: Verilog HDL (1984) và VHDL (1980). - Được sử dụng rộng rãi trong thiết kế và mô phỏng mạch số ở mức độ thanh ghi (register-transfer level). - Một thiết kế HDL bao gồm nhiều module, mỗi module chứa nhiều phân cấp và giao tiếp với các module khác thông qua tập input, output, và bidirectional port. 3 Trường ĐH Bách Khoa TP.HCM
- I. GIỚI THIỆU 1.2. Ưu điểm HDL so với Schematic: - Xây dựng và lưu trữ 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ết HDL, vẽ sơ đồ • Synthesis: lựa chọn phần tử, tối ưu logic, ước lượng thời gian • Implementation: gán chân, lập trình vào FPGA - Dễ dàng thay đổi, chỉnh sửa thiết kế mà không cần thay đổi phần cứng. - Đáp ứng các yêu cầu thiết kế phức tạp 4 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ PHÂN CẤP 2.1. Các mô tả (abstraction) trong thiết kế phần cứ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). 5 Trường ĐH Bách Khoa TP.HCM
- II. THIẾT KẾ PHÂN CẤP 2.1. Các mô tả (abstraction) trong thiết kế phần cứ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
- II. THIẾT KẾ PHÂN CẤP 2.2. Khác nhau giữa Mô tả cấu trúc với Mô tả hành vi: - Mô tả hành vi (Behavioral modeling): diễn tả chuyện gì xảy ra với Q, Qbar theo hàm của Rbar, Sbar. - Mô tả cấu trúc (Structural modeling): diễn tả chuyện gì xảy ra với Q, Qbar theo hàm của 1 netlist gồm của các phần tử (các cổng) liên kết với nhau. - Trong Verilog, một module có thể diễn đạt bằng cả Mô tả cấu trúc và Mô tả hành vi 7 Trường ĐH Bách Khoa TP.HCM
- 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
- II. THIẾT KẾ PHÂN CẤP 2.3. Ví dụ: Mô tả cấu trúc 9 Trường ĐH Bách Khoa TP.HCM
- 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ĩa là thi công đúng 10 Trường ĐH Bách Khoa TP.HCM
- III. VERILOG HDL 3.1. Tổng hợp (Synthesis) và Mô phỏng (Simulation) 11 Trường ĐH Bách Khoa TP.HCM
- 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ệu kết nối cục bộ reg declarations; -> lưu trữ cục bộ, biến cục bộ variable declarations; -> lưu trữ cục bộ trong module module instantiations; -> mô tả cấu trú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
- III. VERILOG HDL 3.2. Module – Ví dụ 1 module name(portlist); module or_nand_3 (enable, x1, x2, x3, x4, y); port declarations; input enable, x1, x2, x3, x4; parameter declarations; output y; wire declarations; reg y; always @ (enable or x1 or x2 or x3 or x4) reg declarations; if (enable) variable declarations; y = !((x1 | x2) & (x3 | x4)); module instantiations; else dataflow statements; y = 1; // operand is a constant. always blocks; endmodule initial blocks; tasks and functions; endmodule 13 Trường ĐH Bách Khoa TP.HCM
- 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); function or_nand; reg declarations; 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
- III. VERILOG HDL 3.2. Module – Ví dụ 2 module or_nand_5 (enable, x1, x2, x3, x4, y); module name(portlist); input enable, x1, x2, x3, x4; port declarations; output y; parameter declarations; reg y; wire declarations; always @ (enable or x1 or x2 or x3 or x4) reg declarations; or_nand (enable, x1, x2, x3, x4, y); variable declarations; task or_nand; module instantiations; input enable, x1, x2, x3, x4; output y1; dataflow statements; begin always blocks; y1 = !(enable & (x1 | x2) & (x3 | x4)); initial blocks; end tasks and functions; endtask endmodule endmodule 15 Trường ĐH Bách Khoa TP.HCM
- III. VERILOG HDL 3.3. Giá trị dữ liệu (Data value) - 4 loại giá trị: • 0: mức thấp, 1: mức cao • Z: hi-Z, X: unkown - Khi khởi tạo, các biến có giá trị X - Gán giá 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
- III. VERILOG HDL 3.3. Loại dữ liệu (Data type) - 2 loại dữ liệu: wire và reg • wire: là giá trị được gán liên tục (continuously assigned), không có khả năng nhớ, không lưu trữ. • reg (reg, integer): là giá trị gán thủ tục (procedurally assigned), có khả năng nhớ, lưu trữ - Mô tả cấu trúc có thể sử dụng dữ liệu wire, không sử dụng dữ liệu reg - Mô tả hành vi có thể sử dụng dữ liệu reg (trong cấu trúc initial và always), không sử dụng dữ liệu wire - Ví dụ: wire Reset; // 1-bit wire reg signed [3:0] counter; // 4-bit register wire [7:0] Addr; // 8-bit wire integer cla; // maximum 32-bit 17 Trường ĐH Bách Khoa TP.HCM
- III. VERILOG HDL 3.3. Loại dữ liệu (Data type) 18 Trường ĐH Bách Khoa TP.HCM
- III. VERILOG HDL 3.4. Ví dụ: Viết module cho các mạch sau bằng Verilog: 19 Trường ĐH Bách Khoa TP.HCM
- 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ực hiện một lần khi reg b; khởi động (khi bật nguồn) initial - Khối always thực hiện lặp lại liên tục begin • always @(a or b) a = 0; -> any changes in a or b b = 0; end • always @(posedge a) 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Nguyên lý hệ điều hành - ĐH Hàng Hải VN
55 p | 59 | 15
-
Bài giảng Hệ thống nhúng: Phần 2 - Đậu Trọng Hiển
91 p | 64 | 14
-
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 | 132 | 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 | 20 | 7
-
Bài giảng Hệ thống nhúng - ThS. Lưu Hoàng
43 p | 68 | 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 | 37 | 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 | 23 | 5
-
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
16 p | 31 | 4
-
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 | 29 | 4
-
Bài giảng Vi điều khiển 8051 - Bài 5: Giao tiếp của 8051
15 p | 0 | 0
-
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 | 0 | 0
-
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 | 0 | 0
-
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 | 0 | 0
-
Bài giảng Vi điều khiển 8051 - Bài 1: Tổng quan về 8051
10 p | 0 | 0
-
Bài giảng Xử lý bảng tính (Bộ môn Tin học cơ sở) – Bài 4: Các hàm điều khiển
21 p | 0 | 0
-
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 | 0 | 0
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