Bài giảng Thiết kế logic số - Chương 2: Ngôn ngữ VHDL (Phần 1) - Hoàng Văn Phúc
Nội dung: Lịch sử phát triển ngôn ngữ VHDL, Cấu
trúc chương trình VHDL, Các dạng mô tả kiến trúc
và ví dụ
Thời lượng: 3 tiết bài giảng
Phương pháp: Thuyết trình + Slides + Bảng + Minh
hoạ trên ModelSim
Yêu cầu: Nắm được các đặc điểm, cấu trúc chương
trình VHDL, các dạng mô tả kiến trúc, hiểu cách xử
lý với ngôn ngữ VHDL
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế logic số - Chương 2: Ngôn ngữ VHDL (Phần 1) - Hoàng Văn Phúc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Thiết kế logic số - Chương 2: Ngôn ngữ VHDL (Phần 1) - Hoàng Văn Phúc
Giáo viên: TS. Hoàng Văn Phúc Bộ môn KT Xung-Số-Vi xử lý, Khoa Vô tuyến Điện tử 02/2017 Thiết kế logic số (Digital Logic design) Chương 2: Ngôn ngữ VHDL Bài giảng: Giới thiệu VHDL, cấu trúc chương trình VHDL https://sites.google.com/site/phucvlsi/teaching Nội dung: Lịch sử phát triển ngôn ngữ VHDL, Cấu trúc chương trình VHDL, Các dạng mô tả kiến trúc và ví dụ Thời lượng: 3 tiết bài giảng Phương pháp: Thuyết trình + Slides + Bảng + Minh hoạ trên ModelSim Yêu cầu: Nắm được các đặc điểm, cấu trúc chương trình VHDL, các dạng mô tả kiến trúc, hiểu cách xử lý với ngôn ngữ VHDL Nội dung, Phương pháp 2 Chương 2: Ngôn ngữ VHDL Tài liệu: Giáo trình “Thiết kế logic số”, Học viện KTQS, trang 41-53 Douglas L Perry, VHDL Programming by Example, 4th Edition, 2002 Phần mềm: Phần mềm soạn thảo Notepad++ Phần mềm mô phỏng Modelsim Tài liệu tham khảo và phần mềm hỗ trợ 3 Chương 2: Ngôn ngữ VHDL Kiểm tra bài cũ 4 Câu hỏi: Thiết bị logic khả trình nào hiện nay (đã học trong bài giảng 1) có thể cung cấp nhiều tài nguyên và có khả năng xử lý mạnh mẽ nhất? A. PLA B. PAL C. FPGA D. CPLD Chương 2: Ngôn ngữ VHDL 5 VHDL: Very-High-Speed-Integrated-Circuit Hardware Description Language (Ngôn ngữ mô tả phần cứng vi mạch tốc độ rất cao) 1981: Phát triển bởi Bộ Quốc phòng Mỹ 1983-1985: Được phát triển thành một ngôn ngữ HDL chính thống bởi 3 công ty Intermetrics, IBM và TI 1986: Chuyển giao toàn bộ bản quyền cho IEEE 1987: Công bố thành chuẩn ngôn ngữ IEEE-1076 1987 2002: Công bố chuẩn VHDL IEEE-1076 2002 2009: Công bố chuẩn VHDL IEEE-1076 2009 Lịch sử phát triển của VHDL Chương 2: Ngôn ngữ VHDL HDL RTL code (tổng hợp) testbench (mô phỏng) HDL trong phân cấp thiết kế hệ thống số Một số ngôn ngữ HDL: VHDL, Verilog, AHDL 6 (Vật lý) (Cấu trúc) (Chức năng) (Kiến trúc) ________________________________________________________ RTL (Register Transfer Level): Mức truyền thanh ghi (mức mô tả HDL) Tại sao cần có VHDL? Có thể hỗ trợ mô hình hoá, thiết kế, mô phỏng, kiểm tra mạch số phức tạp Tự động hóa thiết kế, kiểm tra, mô tả độc lập với công nghệ 7 Chương 2: Ngôn ngữ VHDL VHDL for Specification VHDL for Simulation VHDL for Synthesis Các dạng mã nguồn VHDL 8 VHDL for Specification: Mã nguồn VHDL cho mô tả đặc tính kỹ thuật VHDL for Simulation: Mã nguồn VHDL cho mô phỏng VHDL for Synthesis: Mã nguồn VHDL cho tổng hợp Tính phổ biến Độc lập với công nghệ Khả năng mô tả đa cấp Khả năng trao đổi, tái sử dụng Đặc điểm của VHDL 9 Chương 2: Ngôn ngữ VHDL Phân cấp trong thiết kế với VHDL 10 Chương 2: Ngôn ngữ VHDL Gói Thực thể Kiến trúc Các phát biểu Concurrent Statement: Phát biểu đồng thời Sequential Statement: Phát biểu tuần tự HDL có phải ngôn ngữ lập trình? 11 Không phải điều khiển thực hiện thao tác của hệ thống mà là tạo ra/mô phỏng hệ thống phần cứng Chương 2: Ngôn ngữ VHDL VHDL có phải ngôn ngữ lập trình? 12 Không phải điều khiển thực hiện thao tác của hệ thống mà là tạo ra/mô phỏng hệ thống phần cứng Chương 2: Ngôn ngữ VHDL VHDL: ngôn ngữ luồng dữ liệu (dataflow language) các phép xử lý xảy ra đồng thời khác với Các ngôn ngữ thủ tục (procedural computing languages) như Pascal, C, assembly: các lệnh được thực thi tuần tự Ví dụ VHDL đơn giản 13 Chương 2: Ngôn ngữ VHDL VHDL code: if (S = '1') then Y <= B; else Y <= A; end if; Phần cứng tạo ra: ? Ví dụ VHDL đơn giản 14 Chương 2: Ngôn ngữ VHDL VHDL code: if (S = '1') then Y <= B; else Y <= A; end if; Phần cứng tạo ra: MUX2 HDL trong qui trình thiết kế vi mạch số sơ lược 15 Chương 2: Ngôn ngữ VHDL Tổng hợp Front-end Back-end Mô tả HDL ban đầu Thiết kế mức cổng Thiết kế vật lý Mô tả mức RTL bằng HDL Các chỉ tiêu kỹ thuật và ràng buộc Thiết kế chip Lựa chọn cấu trúc Sắp xếp, tạo kết nối HDL trong qui trình thiết kế trên FPGA 16 Chương 2: Ngôn ngữ VHDL Một số lưu ý về VHDL Không phân biệt chữ hoa/thường với tên biến, hằng, tín hiệu, tên entity, architecture. Trừ trường hợp giá trị trực tiếp („Z‟, „X‟ chứ không phải là „z‟, „x‟) Thống nhất một loại in hoa hay in thường Một entity có thể có nhiều architecture khác nhau (để chọn architecture nào được dùng thì dùng phát biểu configuration) Các thành phần của một thiết kế VHDL có thể đặt ở trong nhiều file khác nhau (.vhd). Tuy nhiên, thiết kế VHDL cho một thực thể nên đặt trong 1 file duy nhất (1 entity/1 file) 17 Chương 2: Ngôn ngữ VHDL Các từ khoá của VHDL 18 Chương 2: Ngôn ngữ VHDL Cấu trúc chương trình VHDL Khai báo thư viện LIBRARY declaration Mô tả thực thể ENTITY Declaration Hành vi Behavioral Luồng dữ liệu DataFlow Cấu trúc Structure Mô tả kiến trúc ARCHITECTURE 19 Các kiểu dữ liệu, toán tử Giao diện của khối thiết kế Cấu trúc bên trong Chương 2: Ngôn ngữ VHDL Khai báo thư viện (library) 20 • Phải được đặt đầu tiên trong mỗi thiết kế VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; • IEEE.STD_LOGIC_1164: cung cấp các kiểu dữ liệu std_ulogic, std_logic, std_ulogic_vector, std_logic_vector, các hàm logic như and, or, not, nor, xor các hàm chuyển đổi giữa các kiểu dữ liệu trên. • IEEE.STD_LOGIC_ARITH: định nghĩa các kiểu dữ liệu số nguyên SIGNED, UNSIGNED, INTEGER, cung cấp các hàm số học bao gồm “+”, “-”, “*”, “/”, so sánh “”, “=”, các hàm dịch trái, dịch phải, các hàm chuyển đổi từ kiểu vector sang các kiểu số nguyên. Chương 2: Ngôn ngữ VHDL Mô tả thực thể (entity) 21 • Khai báo về mặt cấu trúc các cổng vào ra (port) • Các tham số tĩnh (generic) của một khối thiết kế VHDL. • Với mô tả để kiểm tra (test bench): khai báo dạng entity trống, chỉ có tên entity entity full_adder is port ( A, B, Cin : in bit; Cout, S : out bit); end full_adder ; Chương 2: Ngôn ngữ VHDL Các dạng mô tả kiến trúc (architecture) Hành vi (Behavioral): Thể hiện chức năng mạch thông qua mô tả đáp ứng (hành vi) của mạch Luồng dữ liệu (Dataflow): Sử dụng các phép gán tín hiệu trực tiếp để mô tả mối quan hệ đầu ra/đầu vào của mạch Cấu trúc (Structure): Thiết kế lớn được mô tả bởi tổ hợp của các phần tử nhỏ hơn (Component) 22 Chương 2: Ngôn ngữ VHDL 0110 0101 0 1011 + VD1– Khối cộng toàn phần (Full Adder) 23 Chương 2: Ngôn ngữ VHDL A B Cin S Cout 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Bảng chức năng của Full Adder 24 Chương 2: Ngôn ngữ VHDL A B Cin S Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Bảng chức năng của Full Adder 25 Chương 2: Ngôn ngữ VHDL Full Adder theo kiến trúc kiểu hành vi: add: process (A, B, Cin) begin if (A ='0' and B='0' and Cin = '0') then S <= '0'; Cout <= '0'; elsif (A = '1' and B = '0' and Cin = '0') or (A = '0' and B = '1' and Cin = '0') or (A = '0' and B = '0' and Cin = '1') then S <= '1'; Cout <= '0'; elsif (A = '1' and B = '1' and Cin = '0') or (A = '1' and B = '0' and Cin = '1') or (A = '0' and B = '1' and Cin = '1') then S <= '0'; Cout <= '1'; elsif (A = '1' and B = '1' and Cin = '1') then S <= '1'; Cout <= '1'; end if; end process add; 26 Chương 2: Ngôn ngữ VHDL S <= (A xor B) xor Cin; Cout <= (A and B) or (Cin and (A xor B)); Full Adder theo kiến trúc kiểu luồng dữ liệu (Dataflow) Phần cứng tạo ra: 27 Phát biểu VHDL: Chương 2: Ngôn ngữ VHDL ? S <= (A xor B) xor Cin; Cout <= (A and B) or (Cin and (A xor B)); Full Adder theo kiến trúc kiểu luồng dữ liệu (Dataflow) Phần cứng tạo ra: 28 Phát biểu VHDL: Chương 2: Ngôn ngữ VHDL Bộ cộng 4-bit được tạo ra từ các Full Adder: Bộ cộng 4-bit dạng cấu trúc (Structure) 29 Chương 2: Ngôn ngữ VHDL Bộ cộng 4-bit dạng cấu trúc (VHDL) u0: component full_adder port map (A => A(0), B => B(0), Cin => C(0), S => S(0), Cout => C(1)); u1: component full_adder port map (A => A(1), B => B(1), Cin => C(1), S => S(1), Cout => C(2)); u2: component full_adder port map (A => A(2), B => B(2), Cin => C(2), S => S(2), Cout => C(3)); u3: component full_adder port map (A => A(3), B => B(3), Cin => C(3), S => S(3), Cout => C(4)); 30 FA Chương 2: Ngôn ngữ VHDL Kết nối các thành phần nhỏ (component) trong một thiết kế lớn hơn u0: component read_pointer port map (.); u1: component write_pointer port map (); 31 Chương 2: Ngôn ngữ VHDL Tổng kết bài giảng Lịch sử hình thành VHDL, các đặc điểm, ứng dụng Cấu trúc của chương trình VHDL Các kiểu mô tả kiến trúc: hành vi, luồng dữ liệu, cấu trúc Ví dụ với full adder và bộ cộng 4-bit 32 Chương 2: Ngôn ngữ VHDL Chuẩn bị nội dung thảo luận về VHDL VHDL coding style Tự động kiểm tra thiết kế trên VHDL Mô hình hóa FSM trên VHDL Xử lý file text với VHDL testbench 33 Chương 2: Ngôn ngữ VHDL Trắc nghiệm Câu 1: Các thành phần bắt buộc của một thiết kế VHDL là: A.Khai báo thư viện B.Khai báo thực thể và mô tả kiến trúc C.Mô tả kiến trúc và khai báo cấu hình tương ứng D.Khai báo thư viện, thực thể và mô tả kiến trúc 34 Chương 2: Ngôn ngữ VHDL Câu 2: Mô tả kiến trúc dạng nào sau đây thể hiện bản chất mạch thiết kế rõ nhất: A. Dạng cấu trúc B. Dạng hành vi C. Dạng cấu trúc kết hợp hành vi D. Dạng luồng dữ liệu 35 Chương 2: Ngôn ngữ VHDL Trắc nghiệm Câu 3: Tham số tĩnh của một thiết kế là A. Các hằng số khai báo trong thiết kế đó B. Các cổng vào ra khai báo trong thực thể của thiết kế C. Các biến generic khai báo trong thực thể của thiết kế, khi sử dụng thiết kế đó như một khối con thì phải gán một giá trị cố định. D. Các tín hiệu và khối con cài đặt trong mô tả kiến trúc. 36 Chương 2: Ngôn ngữ VHDL Trắc nghiệm
File đính kèm:
- bai_giang_thiet_ke_logic_so_chuong_2_ngon_ngu_vhdl_hoang_van.pdf