Bài giảng Thiết kế logic số (VLSI design) - Chương II: Ngôn ngữ VHDL (Phần 1)

pptx 16 trang phuongnguyen 4350
Bạn đang xem tài liệu "Bài giảng Thiết kế logic số (VLSI design) - Chương II: Ngôn ngữ VHDL (Phần 1)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptxbai_giang_thiet_ke_logic_so_vlsi_design_chuong_ii_ngon_ngu_v.pptx

Nội dung text: Bài giảng Thiết kế logic số (VLSI design) - Chương II: Ngôn ngữ VHDL (Phần 1)

  1. Thiết kế logic số (Digital Logic design) Bộ môn KT Xung, số, Vi xử lý 08/2013
  2. Mục đích, nội dung • Nội dung: Lịch sử phát triển ngôn ngữ VHDL, Cấu trúc chương trình VHDL, Kiến trúc dạng hành vi và dạng luồng dữ liệu • Thời lượng: 3 tiết bài giảng. quangkien82@gmail.com 2/16
  3. Lịch sử phát triển của VHDL • VHDL VHSIC HDL (Very-High-Speed-Intergrated-Circuit Hardware Description Language) • 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 and TI. • 1986: Chuyển giao toàn bộ bản quyền cho Viện Kỹ thuật Điện và Điện tử (IEEE). • 1987: Công bố thành một 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 quangkien82@gmail.com 3/16
  4. Đặc điểm VHDL 1. Tính phổ biến 2. Độc lập với công nghệ. 3. Khả năng mô tả nhiều cấp độ. 4. Khả năng trao đổi, tái sử dụng. quangkien82@gmail.com 4/16
  5. Các dạng mã nguồn VHDL HDL for Specification HDL for Simulation HDL for Synthesis quangkien82@gmail.com 5/16
  6. Cấu trúc chương trình VHDL Khai báo thư viện LIBRARY declaration Mô tả thực thể ENTITY Declaration Mô tả kiến trúc ARCHITECTURE Hành vi Luồng dữ liệu Cấu trúc Behavioral DataFlow Structure quangkien82@gmail.com 6/16
  7. VD1– Khối cộng FULL_ADDER A B Cin 0110 + 0101 Cout 0 1011 Σ Sum quangkien82@gmail.com 7/16
  8. FULL_ADDER - Dataflow 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 quangkien82@gmail.com 8/16
  9. FULL_ADDER - Dataflow sum = (a xor b) xor Cin; Cout = (a and b) or (Cin and (a xor b)); A B Cout Cin Sum quangkien82@gmail.com 9/16
  10. 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 quangkien82@gmail.com 10/16
  11. Trắc nghiệm 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 quangkien82@gmail.com 11/16
  12. Trắc nghiệm Câu 3: Phát biểu sau nào sau đây không chính xác: A. Cổng dạng linkage có thể đóng vai trò là bất cứ cổng dạng gì B. Cổng buffer đóng vai trò là cổng ra hoặc tín hiệu bên trong C. Cổng inout bắt buộc phải điều khiển dưới dạng cổng 3 trạng thái D. Không thể gán giá trị cho cổng dạng input. quangkien82@gmail.com 12/16
  13. Trắc nghiệm Câu 4: 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ì buộc phải gán 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. quangkien82@gmail.com 13/16
  14. Trắc nghiệm Câu 5: Phát biểu nào sau đây không là đặc điểm của ngôn ngữ VHDL: A. Có tính phổ biến cao và được hỗ trợ rộng rãi bởi các công cụ thiết kế. B. Có khả năng mô tả những thiết kế với độ phức tạp không hạn chế C. Là một ngôn ngữ dùng để xây dựng các chương trình mô tả các khối số. D. Có khả năng mô tả ở nhiều dạng với các cấp độ chi tiết khác nhau. quangkien82@gmail.com 14/16
  15. Tìm lỗi sai ở đoạn code sau entity accumulator is port( data : in std_logic_vector(3 downto 0); nRST : in out std_logic; 1acc : buffer std_logic_vector(3 down to 0); CLK : in std_logic; ); end accumulator; quangkien82@gmail.com 15/16
  16. Tìm lỗi sai ở đoạn code sau begin process(clk) begin if clk = 1 and clk'event then a <= inp; outp <= b; end if; end process; process (oe, bidir) if( oe = '0') then bidir <= "ZZZZZZZZ“ b <= bidir; else bidir <= a; b <= bidir; end; end process; end maxpld; quangkien82@gmail.com 16/16