intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng HDL & FPGA - Chương 4: Ngôn ngữ mô tả phần cứng VHDL

Chia sẻ: Nguyệt Thượng Vô Phong | Ngày: | Loại File: PDF | Số trang:98

16
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng HDL & FPGA - Chương 4: Ngôn ngữ mô tả phần cứng VHDL. Chương này cung cấp cho sinh viên những nội dung kiến thức gồm: giới thiệu về VHDL; tín hiệu và các kiểu dữ liệu; các phép toán số học và logic; các lệnh song song và tuần tự; các cấu trúc tuần tự; chương trình con; GENERATE statement; Test Bench;... Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng HDL & FPGA - Chương 4: Ngôn ngữ mô tả phần cứng VHDL

  1. 207
  2. Chương 4. Ngôn ngữ mô tả phần cứng VHDL 4.1 Giới thiệu về VHDL 4.2 Tín hiệu và các kiểu dữ liệu 4.3 Các phép toán số học và logic 4.4 Các lệnh song song và tuần tự 4.5 Các cấu trúc tuần tự 4.6 Chương trình con 4.7 GENERATE statement 4.8 Test Bench 208
  3. 4.1 Giới thiệu về VHDL • VHDL = VHSIC Hardware Description Language • VHSIC = Very High Speed Integrated Circuit • Là ngôn ngữ lập trình dùng để mô tả hoạt động của hệ thống số • Được quy định trong chuẩn IEEE 1076 từ năm 1983 • Các ngôn ngữ mô tả phần cứng khác: Verilog Abel 209
  4. library IEEE; -- Su dung thu vien chuan IEEE use IEEE.STD_LOGIC_1164.ALL; --Su dung tat ca cac thanh phan trong goi STD_LOGIC_1164 entity hex2led is Port ( HEX : in std_logic_vector(3 downto 0); LED : out std_logic_vector(6 downto 0)); end hex2led; -- Khai bao hoat dong cua hex2Led architecture Behavioral of hex2led is begin with HEX SELect LED
  5. 4.1 Giới thiệu về VHDL Ví dụ 1 • Thiết kế mạch ‘Test’ với 3 đầu vào 8-bit (In1, In2, In3) và hai đầu ra 1 bit (Out1, Out2). Out1=‘1’ khi In1=In2 và Out2=‘1’ khi In1 = In3 Test Compare In1 Out1 A EQ B In2 Compare A In3 EQ Out2 B 211 Test là một khối gồm 2 bản copy của khối compare
  6. 4.1 Giới thiệu về VHDL Ví dụ 1 Thiết kế khối compare dùng mạch tổ hợp Compare A[0] XNOR A B[0] A[1] AND EQ B[1] EQ B A[7] B[7] 212
  7. 4.1 Giới thiệu về VHDL Ví dụ 1 • Thiết kế khối Compare dùng VHDL ‘Entity’ xác định giao diện với bên ngoài của khối cần thiết kế - -Eight bit comparator: Bộ so sánh 8 bit entity Compare is port( A,B: in bit_vector(0 to 7); EQ: out bit); end Compare; đầu vào và ra được gọi là port architecture Behav1 of Compare is begin ‘Architecture’ miêu tả hoạt động EQ
  8. 4.1 Giới thiệu về VHDL Component và Instantiation • Biểu diễn Test bằng VHDL entity Test is port( In1,In2,In3: in bit_vector(0 to 7); Out1,Out2: out bit); end Test; architecture Struct1 of Test is component Compare is port( A,B: in bit_vector(0 to 7); 2 bản copy của cùng một EQ: out bit); component end component; ‘Compare’ begin Compare1: Compare port map (A=>In1,B=>In2,EQ=>Out1); Compare2: Compare port map (A=>In1,B=>In3,EQ=>Out2); end Struct1; Chú ý: - Hai bản comparator chạy song song với nhau !!! - Đây là architecture miêu tả cấu trúc của entity Test 214
  9. 4.1 Giới thiệu về VHDL Cấu hình (Configuration) • Khi một entity có nhiều architectures, ta sẽ xử dụng architecture nào? • Làm thế nào để gắn ‘Components’ với ‘Entities’? -- Configuration information: architecture selection -- and component-entity binding configuration Build1 of Test is for Struct1 for Compare1: Comparator use entity Compare(Behav1) port map (A => X, B => Y, EQ => Z); end for; for others: Comparator use entity Compare(Behav1) port map (A => X, B => Y, EQ => Z); end for; end for; end Build1; 215
  10. 4.1 Giới thiệu về VHDL Khai báo Entity và Architecture ENTITY: entity Entity_name is port(Signal_name: in Signal_type; Signal_name: out Signal_type); end Entity_name; ARCHITECTURE: architecture Architecture_name of Entity_name is Khai báo các tín hiệu cục bộ; Khai báo các components; begin Các câu lệnh; end Architecture_name; 216
  11. 4.1 Giới thiệu về VHDL Khai báo component COMPONENT: component Component_name is port( Signal_name: in Signal_type; Signal_name: out Signal_type); end component; Khai báo copy của COMPONENT : Instance_name: Component_name port map (Signal_list); Hoặc cách thứ 2, copy trực tiếp: Instance_name: Entity_name(Architecture_name) port map (Signal_list); 217
  12. 4.1 Giới thiệu về VHDL Ví dụ 2 • Biểu diễn cổng AND bằng VHDL A Y B C -- 3-input AND gate entity AND3 is port ( A,B,C: in bit; Y: out bit); end AND3; architecture RTL of AND3 is begin Y
  13. 4.1 Giới thiệu về VHDL Ví dụ 2 • Biểu diễn cổng OR bằng VHDL A Y B C -- 3-input OR gate entity OR3 is port ( A,B,C: in bit; Y: out bit); end OR3; architecture RTL of OR3 is begin Y
  14. 4.1 Giới thiệu về VHDL Ví dụ 2 • Biểu diễn cổng INV bằng VHDL A Y -- INV gate entity INV is port ( A: in bit; Y: out bit); end INV; architecture RTL of INV is begin Y
  15. 4.1 Giới thiệu về VHDL Ví dụ 3 • Thiết kế bộ MUX 2-1 dùng VHDL A Y B S entity MUX21 is port ( A,B,S: in bit; Y: out bit); end MUX21; architecture Behav of MUX21 is begin Y
  16. Ví dụ 3 (Quan trọng) Mô tả bộ MUX theo kiểu cấu trúc entity MUX21 is port (A,B,S: in bit; S Y Y: out bit); A Y end MUX21; 1 A B architecture Struct of MUX21 is signal U,V,W : bit; 0 B S component AND2 port ( X,Y: in bit; Z: out bit); Y = AS + BS’ end component; component OR2 A port ( X,Y: in bit; W Z: out bit); S Y end component; component INV V U port ( X: in bit; Z: out bit); B end component; begin Gate1: INV port map (X=>S,Z=>U); Gate2: AND2 port map (X=>A,Y=>S,Z=>W); Gate3: AND2 port map (X=>U,Y=>B,Z=>V); Gate4: OR2 port map (X=>W,Y=>V,Z=>Y); end Struct; 222
  17. 223
  18. 4.1 Giới thiệu về VHDL Ví dụ 3 • Giả sử ta muốn sử dụng các cổng AND, OR và INV ở ví dụ 2 trong MUX21 configuration Use3InputGates of MUX21 is for Behav Entities end for; A Y for Struct B for Gate1:INV use entity INV(RTL) C port map (A=>X,Y=>Z); end for; A Y for All:AND2 use entity AND3(RTL) port map (A=>X,B=>Y,C=>’1’,Y=>Z); end for; for Gate4:OR2 use entity OR3(RTL) Components port map (A=>X,B=>Y,C=>’0’,Y=>Z); X end for; Z end for; Y end Use3InputGates; X Z 224
  19. Ví dụ: Thiết kế bộ MUX 4-1 dùng các bộ MUX 2-1 A Y B S entity MUX21 is port ( U A,B,S: in std_logic; Y: out std_logic); end MUX21; mux1 + Giả thiết có entity MUX21 thực hiện bộ MUX từ 2 sang 1 đã được thiết kế trước. Mô tả của MUX21 như trên. V mux3 + Hãy viết chương trình VHDL mô tả mux2 bộ MUX41 sử dụng các bộ MUX21 đã có (dùng component và port map) 225
  20. Ví dụ: Thiết kế bộ MUX 4-1 dùng các bộ MUX 2-1 A Y B S entity MUX21 is port ( U A,B,S: in std_logic; Y: out std_logic); end MUX21; + Viết chương trình VHDL mô tả bộ MUX41 sử dụng các bộ MUX21 đã có (dùng component và port map) V + Viết Testbench để mô phỏng kiểm tra thiết kế MUX41 + Cài đặt Vivado 226
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2