Kĩ thuật điện tử - Chương 5: Thiết kế số dùng vhdl

1. GIỚI THIỆU (tt) VHDL (Very High Speed Integrated Circuits HDL): Ngôn ngữ được dùng để mô tả các hệ thống số: lập tài liệu (documentation), mô phỏng (simulation), kiểm chứng (verification) và tổng hợp (synthesis). VHDL được chuẩn hóa vào năm 1987 qua chuẩn IEEE 1076 (VHDL-87) và được cập nhật năm 1993 (VHDL-93). Sau đó được bổ sung qua chuẩn IEEE 1164 với hệ thống logic đa trị. Ứng dụng: thiết kế với các PLD, CPLD và FPGA. Sự khác biệt giữa VHDL và các ngôn ngữ lập trình thông thường Ngôn ngữ lập trình thông thường: tuần tự VHDL: song song

ppt135 trang | Chia sẻ: hoang10 | Lượt xem: 856 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Kĩ thuật điện tử - Chương 5: Thiết kế số dùng vhdl, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 5 THIẾT KẾ SỐ DÙNG VHDL Bài giảng môn Kỹ thuật số 21Giảng viên: Nguyễn Hữu Chân ThànhNỘI DUNGGIỚI THIỆU VỀ HDLs (Hardware Description Languages)CÁC CẤU TRÚC CƠ BẢN CỦA VHDLCÁC PHÁT BIỂU ĐỒNG THỜICÁC PHÁT BIỂU TUẦN TỰTHIẾT KẾ MẠCH TUẦN TỰTHIẾT KẾ MÁY TRẠNG THÁITHIẾT KẾ PHÂN CẤPBài giảng môn Kỹ thuật số 22Giảng viên: Nguyễn Hữu Chân Thành1. GIỚI THIỆUCác phương pháp thiết kế:Các phương trình BooleanThiết kế dựa trên SchematicCác ngôn ngữ mô tả phần cứng HDLs (Hardware Description Languages): VHDL, Verilog HDL, ABEL, Bài giảng môn Kỹ thuật số 23Giảng viên: Nguyễn Hữu Chân Thành1. GIỚI THIỆU (tt)Quá trình thiết kế hệ thống số:Bài giảng môn Kỹ thuật số 24Giảng viên: Nguyễn Hữu Chân Thành1. GIỚI THIỆU (tt)Các công cụ CAD:Nhập yêu cầu thiết kế (design entry)Dùng bảng chân trịTrực tiếpVẽ dạng sóng quan hệ vào/ra (Waveform Editor)Dùng sơ đồ mạch (Graphic Editor) → thiết kế phân cấpDùng HDLsBài giảng môn Kỹ thuật số 25Giảng viên: Nguyễn Hữu Chân Thành1. GIỚI THIỆU (tt)Các công cụ CAD:Tổng hợp (synthesis):Tổng hợp logic (logic synthesis/logic optimization)Ánh xạ công nghệ (technology mapping)Tổng hợp sơ đồ mạch (layout synthesis/physical design) Mô phỏng (simulation)Mô phỏng chức năng (functional simulation)Mô phỏng định thời (timing simulation)Bài giảng môn Kỹ thuật số 26Giảng viên: Nguyễn Hữu Chân Thành1. GIỚI THIỆU (tt)VHDL (Very High Speed Integrated Circuits HDL):Ngôn ngữ được dùng để mô tả các hệ thống số: lập tài liệu (documentation), mô phỏng (simulation), kiểm chứng (verification) và tổng hợp (synthesis).VHDL được chuẩn hóa vào năm 1987 qua chuẩn IEEE 1076 (VHDL-87) và được cập nhật năm 1993 (VHDL-93). Sau đó được bổ sung qua chuẩn IEEE 1164 với hệ thống logic đa trị.Ứng dụng: thiết kế với các PLD, CPLD và FPGA.Sự khác biệt giữa VHDL và các ngôn ngữ lập trình thông thườngNgôn ngữ lập trình thông thường: tuần tựVHDL: song songBài giảng môn Kỹ thuật số 27Giảng viên: Nguyễn Hữu Chân Thành2. CÁC CẤU TRÚC CƠ BẢN CỦA VHDL2.1. EntityInterface declarationFunctional definitionEntityEntity DeclarationArchitecture bodyBlack boxInternalmachineryPackagesBài giảng môn Kỹ thuật số 28Giảng viên: Nguyễn Hữu Chân Thành2.1. Entity (tt)Khai báo entityEntity định nghĩa giao tiếp của module phần cứng với môi trường bên ngoài sử dụng nó.Cú pháp khai báo:entity entity_name is generics portsbegin entity statementsend [entity] entity_name;Bài giảng môn Kỹ thuật số 29Giảng viên: Nguyễn Hữu Chân Thành2.1. Entity (tt)Các port trong khai báo entity:Mỗi tín hiệu I/O trong một khai báo entity được xem là một port.Mỗi port được khai báo phải có tên, chiều dữ liệu (mode) và kiểu dữ liệu.port (port_name: mode data_type; port_name: mode data_type; port_name: mode data_type); Các mode:In: luồng dữ liệu chỉ đi vào entity.Out: luồng dữ liệu chỉ đi ra khỏi entity.Buffer: tương tự out, nhưng cho phép hồi tiếp nộiInout: luồng dữ liệu có thể vào hay ra entity và cũng cho phép hồi tiếp nội.Bài giảng môn Kỹ thuật số 210Giảng viên: Nguyễn Hữu Chân Thành2.1. Entity (tt)Kiểu dữ liệu:IEEE 1076/93: boolean, bit, bit_vector, integer, IEEE std_logic_1164: std_ulogic, std_ulogic_vector, std_logic và std_logic_vector (hệ thống logic đa trị).Các kiểu dữ liệu do người sử dụng đinh nghĩa.Khai báo của các kiểu dữ liệu phải cho phép entity thấy được qua các mệnh đề library và use.Ví dụ 2.1: khai báo cổng ANDentity andgate is port (A, B: in bit; C : out bit);end andgate;Bài giảng môn Kỹ thuật số 211Giảng viên: Nguyễn Hữu Chân Thành2.1. Entity (tt)Ví dụ 2.2: khai báo bộ so sánh 4-bitentity eqcomp4 isport (A, B : in bit_vector(3 downto 0); equals : out bit);end eqcomp4; Ví dụ 2.3:library ieee;use ieee.std_logic_1164.all; entity eqcomp4 is port (a, b : in std_logic_vector(3 downto 0); equals: out std_logic); end eqcomp4;Bài giảng môn Kỹ thuật số 212Giảng viên: Nguyễn Hữu Chân Thành2.2. Thân kiến trúc (Architecture body)Khai báo entity là một hộp đen với mô tả các giao tiếp I/O còn thân kiến trúc cung cấp mô tả chức năng của hộp đen đó.Một entity có thể có nhiều thân kiến trúc.Mỗi thân kiến trúc chỉ kết hợp với một khai báo entity.Các kiến trúc của VHDL được chia làm 2 loại:Mô tả hành vi (behavior description)Mô tả dạng giải thuật (algorithmic description)Mô tả luồng dữ liệu (data flow description)Mô tả cấu trúc (structural description)Một thiết kế có thể dùng một trong các loại trên hay cũng có thể kết hợp các loại với nhau. Bài giảng môn Kỹ thuật số 213Giảng viên: Nguyễn Hữu Chân Thành1. GIỚI THIỆU (tt)Biểu diễn hệ thống:Dạng hành vi: mô tả chức năng của hệ thống → tập trung vào quan hệ giữa các tín hiệu vào và ra.Dạng cấu trúc: mô tả cài đặt bên trong của hệ thống → đặc tả rõ ràng các thành phần nào được dùng và kết nối giữa chúng.Bài giảng môn Kỹ thuật số 214Giảng viên: Nguyễn Hữu Chân Thành2.2. Thân kiến trúc (Architecture body) (tt)Khai báo thân kiến trúc:architecture architecture_name of entity_name is declarationsbegin concurrent_statementsend [architecture] architecture_name; Mô tả hành vi: mô tả chức năng của hệ thống → tập trung vào quan hệ giữa các tín hiệu vào và ra.Mô tả dạng giải thuật: còn được gọi là mô tả cấp cao (high-level) vì nó tương tự với mô tả trong các ngôn ngữ cấp cao như C, Basic Bài giảng môn Kỹ thuật số 215Giảng viên: Nguyễn Hữu Chân Thành2.2. Thân kiến trúc (Architecture body) (tt)Ví dụ 2.4: Mô tả dạng giải thuật:-- bộ so sánh bằng 4-bit entity eqcomp4 is port (a, b : in std_logic_vector(3 downto 0); equals: out std_logic);end eqcomp4;architecture behavioral of eqcomp4 isbegin comp: process (a, b) begin if a=b then equals = basketball else ‘0’;Bài giảng môn Kỹ thuật số 231Giảng viên: Nguyễn Hữu Chân Thành2.5.1.2. Kiểu integerVHDL hỗ trợ các số nguyên trong khoảng – 2147483648 (hay –(231-1)) ÷ 2147483647 ((231-1)) → (32-bit) type integer is range -2147483648 to 2147483647;Một đối tượng kiểu integer có thể ràng buộc với một khoảng. variable a : integer range -255 to 255;Các thao tác với số có dấu và không dấu → tùy công cụ tổng hợp hỗ trợ. 2.5.1.3. Kiểu real Giá trị trong khoảng -1.0E38 ÷ +1.0E38 type real is range -1.0E38 to 1.0E38;Thường không được hỗ trợ trong các công cụ tổng hợp do lượng tài nguyên cần để cài đặt các thao tác số học là rất lớn.Bài giảng môn Kỹ thuật số 232Giảng viên: Nguyễn Hữu Chân Thành2.5.1.4. Kiểu vật lý Thường là các đơn vị đo, không có ý nghĩa cho việc tổng hợp.Ví dụ 2.16: Kiểu vật lý định nghĩa sẵn là time type time is range -2147483647 to 2147483647unitsfs;ps = 1000 fs;ns = 1000 ps;us = 1000 ns;ms = 1000 us;sec = 1000 ms;min = 60 sec;hr = 60 min;end units;Bài giảng môn Kỹ thuật số 233Giảng viên: Nguyễn Hữu Chân Thành2.5.2. Kiểu phức hợpMột đối tượng kiểu phức hợp có thể giữ nhiều giá trị tại 1 thời điểm.Có 2 loại kiểu phức hợp:(1) Kiểu mảng (array type)(2) Kiểu bản ghi (record type)Bài giảng môn Kỹ thuật số 234Giảng viên: Nguyễn Hữu Chân Thành2.5.2.1. Kiểu mảngĐối tượng kiểu mảng gồm nhiều phần tử có cùng kiểu dữ liệu.Các kiểu định nghĩa sẵn:Ví dụ 2.17:type bit_vector is array (natural range ) of bit;type std_logic_vector is array (natural range ) of std_logic;signal a: std_logic_vector (7 downto 0);Người dùng cũng có thể định nghĩa kiểu riêng:Ví dụ 2.18:type byte is array(7 downto 0) of bit;signal b: byte;type data_word is array (7 downto 0) of std_logic; -- 1Dtype ROM is array (0 to 125) of data_word; -- 1D x 1Dtype decode_matrix is array (positive range 15 downto 1, natural range 3 downto 0) of std_logic; -- 2DBài giảng môn Kỹ thuật số 235Giảng viên: Nguyễn Hữu Chân Thành2.5.2.1. Kiểu mảng (tt)Một đối tượng mảng có thể gán cho một đối tượng mảng khác có cùng kiểu dữ liệu.Phép gán có thể thực hiện cho toàn bộ mảng, một phần tử hay một phần của mảng.Ví dụ 2.19:signal X: std_logic_vector(0 to 3);X ) of std_logic;type signed is array (natural range ) of std_logic;Numeric_bit:type unsigned is array (natural range ) of bit;type signed is array (natural range ) of bit;Tham khảo thêm các package khác trong \Refs\ieee1164pkg.pdfBài giảng môn Kỹ thuật số 239Giảng viên: Nguyễn Hữu Chân Thành2.5.5. Chuyển đổi kiểu dữ liệuChuyển đổi từ một kiểu dữ liệu này sang một kiểu dữ liệu khác.Các package bổ sung cung cấp sẵn một số hàm chuyển đổi kiểu (tham khảo \Refs\ieee1164pkg.pdf).Ví dụ 2.24: - to_stdlogicvector(bit_vector): chuyển bit_vector thành std_logic_vector.signal a: bit_vector(3 downto 0);signal b: std_logic_vector(3 downto 0); a ‘0’);Bài giảng môn Kỹ thuật số 247Giảng viên: Nguyễn Hữu Chân Thành3.1. Phép gán tín hiệu đơn giản (tt)Phép gán tín hiệu là không tức thời → có delayInertial delay (mặc định)Transport delayVí dụ 3.2:Bài giảng môn Kỹ thuật số 248Giảng viên: Nguyễn Hữu Chân Thành3.1. Phép gán tín hiệu đơn giản (tt)Mỗi phép gán tín hiệu đồng thời trong architecture tạo ra một driver cho tín hiệu → nhiều phép gán sẽ tạo ra nhiều driver.Ví dụ 3.3:Bài giảng môn Kỹ thuật số 249Giảng viên: Nguyễn Hữu Chân Thành3.1. Phép gán tín hiệu đơn giản (tt)Ví dụ 3.4: Tạo mạch tổ hợp với phát biểu gán tín hiệu đơn giản status y else c;Bài giảng môn Kỹ thuật số 267Giảng viên: Nguyễn Hữu Chân Thành3.3. Phép gán tín hiệu theo điều kiện (tt)So sánh giữa phát biểu gán tín hiệu chọn lọc và theo điều kiện:Trong phát biểu gán tín hiệu chọn lọc, mỗi chọn lựa tương ứng với một hàng trong bảng chân trị. → thích hợp cho các mạch mô tả bằng bảng chân trị hay bảng hoạt động như bảng chân trị.Trong phát biểu gán tín hiệu theo điều kiện, các điều kiện phải theo thứ tự từ trên xuống. → thích hợp cho các mạch cần có sự ưu tiên giữa các hoạt động. Bài giảng môn Kỹ thuật số 268Giảng viên: Nguyễn Hữu Chân Thành3.4. Phát biểu khởi trị componentDạng tổng quát:label: component_name generic map(generic_association_list) port map(port_association_list);Có 2 cách kết hợp giữa các tham số hình thức và các tham số thực:Kết hợp theo vị trí (positional association): mỗi tham số thực trong khởi trị component được ánh xạ theo vị trí của tham số hình thức trong khai báo component.Kết hợp theo tên (named association): formal1 => actual1, formal2 => actual2, Bài giảng môn Kỹ thuật số 269Giảng viên: Nguyễn Hữu Chân Thành3.4. Phát biểu khởi trị component (tt)Ví dụ 3.20:entity dec2to4 is port(s0,s1,en : in bit; y0,y1,y2,y3 : out bit); end dec2to4; architecture structural of dec2to4 is component inv port(a : in bit; b : out bit); end component; component and3 port(a1,a2,a3 : in bit; o1 : out bit); end component; signal ns0,ns1 : bit; begin i1 : inv port map(s0,ns0); i2 : inv port map(s1,ns1); a1 : and3 port map(en,ns0,ns1,y0); a2 : and3 port map(en,s0,ns1,y1); a3 : and3 port map(en,ns0,s1,y2); a4 : and3 port map(a1 => en, a2 => s0, a3 => s1, o1 => y3); end structural;Bài giảng môn Kỹ thuật số 270Giảng viên: Nguyễn Hữu Chân Thành3.5. Phát biểu processDạng tổng quát:[label:] process [sensitivity_list] is -- is [VHDL-93] process declarations begin sequential statements end process [label];Process có 2 trạng thái:Thực thi (execution): mỗi khi có một trong các tín hiệu trong danh sách cảm nhận (sensitivity list) thay đổi giá trị.Treo (suspension): khi thực thi xong phát biểu cuối cùng trong process hay gặp phát biểu wait.wait for time_expression;wait until boolean_condition;wait on sensitivity_list; Bài giảng môn Kỹ thuật số 271Giảng viên: Nguyễn Hữu Chân Thành3.5. Phát biểu process (tt)Ví dụ 3.21:proc1: process (a,b,c) begin x b) then gt b) then gt b) then gt b) then gt {sequential_statement} when choice_2 => {sequential_statement} when choice_n => {sequential_statement} end case;Lưu ý:choice_i phải là một giá trị hợp lệ hay một tập các giá trị hợp lệ của expression.Các giá trị của choice_i phải loại trừ nhau (mutually exclusive) và phủ tất cả các giá trị có thể của select_expression.Từ khóa others có thể được dùng trong chọn lựa cuối cùng để phủ cho tất cả các giá trị không dùng.Bài giảng môn Kỹ thuật số 284Giảng viên: Nguyễn Hữu Chân Thành4.2. Phát biểu case .. when (tt)Ví dụ 4.9: Mô tả mạch MUX 4 → 1architecture case_arch of mux4 isbeginmux_4_1: process (a, b, c, d, s) begin case s is when “00” => x x x x x x x x code code code code high middle low high high high high middle low high middle low sig_a sig_a sig_a ‘Z’); else cnt_out ‘Z’) when oe = ‘0’ else cnt;end a;Bài giảng môn Kỹ thuật số 2117Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁICó nhiều cách khác nhau để mô tả một máy trạng thái: Bài giảng môn Kỹ thuật số 2118Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁI (tt)Một khuôn dạng mô tả máy trạng thái (reset bất đồng bộ): Moore outputBài giảng môn Kỹ thuật số 2119Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁI (tt)Khuôn dạng đầy đủ: Bài giảng môn Kỹ thuật số 2120Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁI (tt)Ví dụ 6.1: Mô tả FSM sau: Bài giảng môn Kỹ thuật số 2121Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁI (tt)Trường hợp cần ngõ ra Mealy đồng bộ có thể dùng khuôn dạng:Dùng thêm 1 tín hiệu tạm temp cho ngõ ra Bài giảng môn Kỹ thuật số 2122Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁI (tt)Ví dụ 6.2: Mô tả lại FSM của vd 6.1với ngõ ra đồng bộ:Bài giảng môn Kỹ thuật số 2123Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁI (tt)Ví dụ 6.3: Mô tả FSM sau:Chỉ dùng 1 process cho khối logic trạng thái kế tiếp và hiện tại Tạo khối logic ngõ ra riêngBài giảng môn Kỹ thuật số 2124Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁIVí dụ 6.3: (tt) Dùng 2 processBài giảng môn Kỹ thuật số 2125Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁIVí dụ 6.4: Mô tả FSM sau: Chỉ dùng 1 process cho khối logic trạng thái kế tiếp và hiện tại Tạo khối logic ngõ ra riêngBài giảng môn Kỹ thuật số 2126Giảng viên: Nguyễn Hữu Chân Thành6. THIẾT KẾ MÁY TRẠNG THÁIVấn đề gán trạng thái:library IEEE;use IEEE.std_logic_1164.all;library SYNOPSYS;use SYNOPSYS.attributes.all;...architecture fsmexampe_arch of fsmexamp istype Sreg_type is (INIT, A0, A1, OK0, OK1);attribute enum_encoding of Sreg_type: type is"0000 0001 0010 0100 1000";signal Sreg: Sreg_type;...library IEEE;use IEEE.std_logic_1164.all;...architecture fsmexampc_arch of fsmexamp issubtype Sreg_type is STD_LOGIC_VECTOR (1 to 4);constant INIT: Sreg_type := "0000";constant A0 : Sreg_type := "0001";constant A1 : Sreg_type := "0010";constant OK0 : Sreg_type := "0100";constant OK1 : Sreg_type := "1000";signal Sreg: Sreg_type;...Bài giảng môn Kỹ thuật số 2127Giảng viên: Nguyễn Hữu Chân Thành7. THIẾT KẾ PHÂN CẤP TRONG VHDLBài giảng môn Kỹ thuật số 2128Giảng viên: Nguyễn Hữu Chân Thành7. THIẾT KẾ PHÂN CẤP TRONG VHDL (tt)Để dùng một component trong thiết kế cần có hai bước:Khai báo component: cho biết tên và các giao tiếp của component.Khởi tạo component: kết hợp các tín hiệu với các port của component.Bài giảng môn Kỹ thuật số 2129Giảng viên: Nguyễn Hữu Chân Thành7. THIẾT KẾ PHÂN CẤP TRONG VHDL (tt)Có 2 cách cơ bản để khai báo 1 component:Khai báo trong đoạn mã chính của thiết kế.Khai báo trong một PACKAGE. Bài giảng môn Kỹ thuật số 2130Giảng viên: Nguyễn Hữu Chân Thành7. THIẾT KẾ PHÂN CẤP TRONG VHDL (tt)Có 2 cách kết hợp giữa các tham số hình thức và tham số thực:Theo vị trí: mỗi tham số thực trong khởi tạo component được ánh xạ theo vị trí của mỗi port trong khai báo component.Theo tên: danh sách kết hợp có dạng: (không cần theo thứ tự)formal1 => actual1, formal2 => actual2, Bài giảng môn Kỹ thuật số 2131Giảng viên: Nguyễn Hữu Chân Thành7. THIẾT KẾ PHÂN CẤP TRONG VHDL (tt)Ví dụ 7.1: Thực hiện mạch logic như hình sau: Bài giảng môn Kỹ thuật số 2132Giảng viên: Nguyễn Hữu Chân Thành7. THIẾT KẾ PHÂN CẤP TRONG VHDL (tt)Ví dụ 7.1: (tt) wBài giảng môn Kỹ thuật số 2133Giảng viên: Nguyễn Hữu Chân Thành7. THIẾT KẾ PHÂN CẤP TRONG VHDL (tt)Ví dụ 7.1: (tt)Cũng có thể khai báo component trong 1 PACKAGE như sau: Bài giảng môn Kỹ thuật số 2134Giảng viên: Nguyễn Hữu Chân ThànhQ&ABài giảng môn Kỹ thuật số 2135Giảng viên: Nguyễn Hữu Chân Thành
Tài liệu liên quan