Thiết kế nhờ máy tính - NguyễnThành Kiên

1. Giớithiệu VHDL. 2. Cấu trúc code. 3. Cáckiểu dữ liệu. 4. Cácphép toán và thuộc tính. 5. Codesong song/Code tuần tự. 6. Tín hiệu và biến. 7. Máy hữu hạn trạng thái. 8. Phương pháp thiết kếđacấp (Packages,Components,Subprogram) 9. Attibutes & Configurations. 10.Tổng hợp mã VHDL.

pdf100 trang | Chia sẻ: lylyngoc | Lượt xem: 1507 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Thiết kế nhờ máy tính - NguyễnThành Kiên, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Thiết kế nhờ máy tính Nguyễn Thành Kiên Bộ môn Kỹ thuật Máy tính Khoa Công nghệ thông tin, ĐH BKHN Copyright © by N.T.K - 8/2008 Tài liệu tham khảo  Text Book:  Circuit Design with VHDL, Volnei A.Pedroni, MIT press.  VHDL Programming by Examples, Douglas L.Perry, McGraw Hill.  Reference Books:  1076 IEEE Standard Vhdl Language Reference Manual 2002, IEEE Computer Society.  Microprocessor Design Principles and Practices with VHDL, Enoch O. Hwang.  HDL Chip Design- A Practical Guide for Designing, Synthesizing and Simulating ASICs and FPGAs using VHDL or Verilog, Douglas J.Smith. Copyright © by N.T.K - 8/2008 Phần mềm học tập  Active-HDL 7.1.sp2  Quartus (for Altera FPGAs)  ISE (for Xilinx FPGAs)  www.opencores.org Copyright © by N.T.K - 8/2008 Giảng viên  Nguyễn Thành Kiên  Giảng viên Bộ môn Kỹ thuật Máy tính Khoa CNTT, ĐHBKHN.  Mobile: +84983588135  Email: kiennt-fit@mail.hut.edu.vn Copyright © by N.T.K - 8/2008 Yêu cầu môn học  Tham gia >75% số giờ học.  Nghỉ ≥ 5 buổi => Học lại.  Nghỉ ≥ 3 buổi => Không thi lần 1.  Cách tính điểm:  Bài kiểm tra giữa kỳ: 20%  Bài tập lớn: 20%  Bài kiểm tra cuối kỳ: 60% Copyright © by N.T.K - 8/2008 Nội dung môn học  I. Thiết kế mạch với ngôn ngữ VHDL.  1. Giới thiệu VHDL.  2. Cấu trúc code.  3. Các kiểu dữ liệu.  4. Các phép toán và thuộc tính.  5. Code song song/Code tuần tự.  6. Tín hiệu và biến.  7. Máy hữu hạn trạng thái.  8. Phương pháp thiết kế đa cấp (Packages,Components,Subprogram)  9. Attibutes & Configurations.  10. Tổng hợp mã VHDL.  II. Thiết kế CPU.  1. Nguyên tắc thiết kế CPU.  2. Các thành phần của CPU.  3. Tối ưu hóa, mô phỏng, tổng hợp và triển khai CPU. Copyright © by N.T.K - 8/2008 Nội dung môn học  I. Thiết kế mạch với ngôn ngữ VHDL.  1. Giới thiệu VHDL.  2. Cấu trúc code.  3. Các kiểu dữ liệu.  4. Các phép toán và thuộc tính.  5. Code song song/Code tuần tự.  6. Tín hiệu và biến.  7. Máy hữu hạn trạng thái.  8. Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).  9. Attibutes & Configurations.  II. Thiết kế CPU. Copyright © by N.T.K - 8/2008 1. Giới thiệu ngôn ngữ VHDL. Phương pháp thiết kế bằng HDL Phương pháp thiết kế truyền thống Copyright © by N.T.K - 8/2008 1. Giới thiệu ngôn ngữ VHDL.  VHDL là gì?  Một ngôn ngữ mô tả phần cứng:  VHDL - VHSIC Hardware Description Language.  VHSIC - Very High Speed Integrated Circuits.  Là chuẩn do Bộ QP Mỹ phát triển từ thập niên 70. Dựa trên ngôn ngữ lập trình ADA, nhằm tạo ra tài liệu mô tả hoạt động của các mạch điện tử.  1987 được IEEE chuẩn hóa trong IEEE 1076-1987.  1993 hoàn thiện lại thành IEEE 1076-1993.  2002 giải quyết vấn đề protected types=>IEEE 1076-2002 Copyright © by N.T.K - 8/2008 1. Giới thiệu ngôn ngữ VHDL.  VHDL là chuẩn độc lập mô tả hệ thống:  Các nhà phát triển hệ thống dựa trên VHDL để mô tả, thiết kế hệ thống.  Các phần mềm mô phỏng có thể thực hiện mô phỏng hoạt động của hệ thống mô tả.  Các phần mềm tổng hợp có thể thực hiện tổng hợp sinh ra mạch thực để thực hiện hệ thống.  Mạch sau khi tổng hợp có thể được nạp xuống chip để thực hiện chức năng mô tả.  Chức năng: mô tả hoạt động của các hệ thống hoặc mạch điện tử nhằm thực hiện các hệ thống hoặc mạch này trên linh kiện thực. Copyright © by N.T.K - 8/2008 1. Giới thiệu ngôn ngữ VHDL.  Ưu điểm của VHDL:  Cho phép hoạt động của hệ thống được mô tả (modeled) và kiểm thử (simulated) trước khi các công cụ tổng hợp “dịch” thiết kế sang phần cứng thực tế (gates and wires).  Cho phép mô tả hệ thống song song.  Khi các mô hình VHDL được “dịch” sang “gates and wires” thì nó có thể được nạp lên phần cứng CPLD và FPGA để thực thi. Copyright © by N.T.K - 8/2008 1. Giới thiệu ngôn ngữ VHDL.  Hai ứng dụng chính của VHDL là:  PLD (Programmable Logic Device):  CPLD (Complex PLD)  FPGA (Field Programmable Gate Array).  ASIC (Application-Specific IC) Copyright © by N.T.K - 8/2008 Quy trình thiết kế mạch dựa trên VHDL Copyright © by N.T.K - 8/2008 Các công cụ thiết kế VHDL  Bộ công cụ của nhà sản xuất chip:  Quartus/Maxplus => tổng hợp VHDL code lên chip CPLD/FPGA của Altera.  ISE => tổng hợp VHDL code lên chip CPLD/FPGA của Xilinx.  Một số công cụ của các hãng thứ ba:  ActiveHDL  Leonardo Spectrum (Mentor Graphics).  Synplify (Synplicity).  ModelSim (Mentor Graphics). Copyright © by N.T.K - 8/2008 Một ví dụ VHDL đơn giản Copyright © by N.T.K - 8/2008 Một ví dụ VHDL đơn giản Copyright © by N.T.K - 8/2008 Nội dung môn học  I. Thiết kế mạch với ngôn ngữ VHDL.  1. Giới thiệu VHDL.  2. Cấu trúc code.  3. Các kiểu dữ liệu.  4. Các phép toán và thuộc tính.  5. Code song song/Code tuần tự.  6. Tín hiệu và biến.  7. Máy hữu hạn trạng thái.  8. Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).  9. Attibutes & Configurations.  II. Thiết kế CPU. Copyright © by N.T.K - 8/2008 Code structure library IEEE; use IEEE.std_logic_1164.all; ENTITY full_adder IS PORT (a,b,cin: in bit; s,cout:out bit); END full_adder; Architecture dataflow of full_adder is begin s <= a xor b xor cin; cout <= (a and b) or (a and cin) or (b and cin); end dataflow; Copyright © by N.T.K - 8/2008 Cấu trúc code  Thư viện LIBRARY  ENTITY  ARCHITECTURE Copyright © by N.T.K - 8/2008 Thư viện LIBRARY  A LIBRARY là một tập các đoạn mã thường được sử dụng. Đặt các đoạn mã thường sử dụng vào thư viện cho phép chúng có thể được tái sử dụng hoặc chia sẻ giữa các thiết kế khác nhau. Copyright © by N.T.K - 8/2008 Thư viện LIBRARY  Khai báo thư viện: Copyright © by N.T.K - 8/2008 Thư viện LIBRARY  Các thư viện thường sử dụng:  ieee.std_logic_1164 (from the ieee library),  standard (from the std library), and  work (work library).LIBRARY ieee; -- A semi-colon (;) indicates USE ieee.std_logic_1164.all; -- the end of a statement or LIBRARY std; -- declaration, while a double USE std.standard.all; -- dash (--) indicates acomment. LIBRARY work; USE work.all; Copyright © by N.T.K - 8/2008 Thư viện LIBRARY  std_logic_1164  Gói của thư viện IEEE hỗ trợ multi-level logic.  std  Gói thư viện tài nguyên (kiểu dữ liệu, text IO…) cho môi trường thiết kế VHDL.  work  Gói thư viện chứa các thiết kế của người dùng mới tạo ra. Copyright © by N.T.K - 8/2008 Thư viện LIBRARY  Thư viện IEEE:  std_logic_1164  std_logic (8 mức logic),std_ulogic (9 mức logic)  std_logic_arith  Thực hiện các phép toán số học và so sánh.  std_logic_signed  Thực hiện các phép toán với kiểu DL std_logic_vector, dữ liệu coi là có dấu  std_logic_unsigned  Thực hiện các phép toán với kiểu DL std_logic_vector, dữ liệu coi là không dấu. Copyright © by N.T.K - 8/2008 Cấu trúc code  Thư viện LIBRARY  ENTITY  ARCHITECTURE Copyright © by N.T.K - 8/2008 ENTITY  ENTITY là danh sách đặc tả của các cổng vào ra (input/output pins) của mạch.  PORT là giao diện của mạch với các mạch bên ngoài khác, PORT thường là các chân pin. BLACK_BOX rst d[7:0] clk q[7:0] co Copyright © by N.T.K - 8/2008 ENTITY  signal_mode: chiều truyền dữ liệu  IN, OUT, INOUT (2chiều), BUFFER (khi tín hiệu ra được dùng cho các tín hiệu khác bên trong).  signal_type:  bit, std_logic, integer…  Port_name:  Đặt tên theo quy tắc đặt tên chuẩn, tránh các từ khóa. Copyright © by N.T.K - 8/2008 ENTITY Chế độ signal_mode cho biết chiều dữ liệu được truyền nhận:  IN Dữ liệu chỉ đi vào ENTITY  OUT Dữ liệu chỉ đi ra khỏi ENTITY (và không được sử dụng bên trong)  INOUT Dữ liệu là hai chiều (đi vào và ra)  BUFFER Dữ liệu đi ra khỏi ENTITY và cũng được đưa quay trở lại vào trong Entity Copyright © by N.T.K - 8/2008 Ví dụ về ENTITY ENTITY mux IS PORT (a, b: IN std_logic_vector(7 downto 0); sel: IN STD_LOGIC_VECTOR(0 to 1); c: OUT STD_LOGIC_VECTOR(7 downto 0)); END mux; Copyright © by N.T.K - 8/2008 Cấu trúc code  Thư viện LIBRARY  ENTITY  ARCHITECTURE Copyright © by N.T.K - 8/2008 ARCHITECTURE  Phần ARCHITECTURE mô tả mạch hoạt động như thế nào. Một ARCHITECTURE luôn gắn với một ENTITY và mô tả hoạt động của ENTITY đó. Một ARCHITECTURE chỉ gắn với một ENTITY nhưng Một ENTIY có thể có nhiều ARCHITECTURE khác nhau Copyright © by N.T.K - 8/2008 ARCHITECTURE  ARCHITECTURE có hai phần:  Phần khai báo (optional)  Khai báo tín hiệu và biến.  Phần mã code:  Mô tả cách kết nối, hoạt động của mạch. Copyright © by N.T.K - 8/2008 ARCHITECTURE  Ví dụ về mạch NAND: Mô tả kết nối mạch: Mạch thực hiện thao tác NAND trên 2 đầu vào (a,b) và gán (<=) kết quả cho đầu ra x. Copyright © by N.T.K - 8/2008 VD1: Full_adder  Bộ cộng hai số 1bit đầy đủ library IEEE; use IEEE.std_logic_1164.all; ENTITY full_adder IS PORT (a,b,cin: in std_logic; s,cout:out std_logic); END full_adder; Architecture dataflow of full_adder is begin s <= a xor b xor cin; cout <= (a and b) or (a and cin) or (b and cin); end dataflow; Adder A(7:0) B(7:0) C(7:0) Copyright © by N.T.K - 8/2008 library IEEE; use IEEE.std_logic_1164.all; ENTITY adder IS PORT (A,B: IN std_logic_vector(7 downto 0); C: OUT std_logic_vector(7 downto 0)); END adder; Architecture dataflow of adder is begin C <= A+B; end dataflow; Adder A(7:0) B(7:0) C(7:0) Copyright © by N.T.K - 8/2008 VD2: D Flip-flop, asyn reset D flip-flop tích cực theo sườn dương của xung đồng hồ clk với tín hiệu reset không đồng bộ. Hoạt động: + rst = ‘1’ => q<=‘0’ không phụ thuộc clk. + rst = ‘0’, sườn dương clk => q<=d. LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------- ENTITY dff IS PORT ( d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC); END dff; --------------------------------------- ARCHITECTURE behavior OF dff IS BEGIN PROCESS (rst, clk) BEGIN IF (rst='1') THEN q <= '0'; ELSIF (clk'EVENT AND clk='1') THEN q <= d; END IF; END PROCESS; END behavior;DEMO Copyright © by N.T.K - 8/2008 VD2: RS Flip-flop, asyn reset  Bài tập tại lớp:  Viết VHDL code mô tả flip-flop RS đồng bộ theo sườn âm với tín hiệu reset không đồng bộ. Copyright © by N.T.K - 8/2008 VD2: RS Flip-flop, asyn reset LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------- ENTITY RSff IS PORT ( r,s,clk,rst: IN STD_LOGIC; q: OUT STD_LOGIC); END RSff; --------------------------------------- ARCHITECTURE behavior OF RSff IS BEGIN PROCESS (rst, clk) BEGIN IF (rst='1') THEN q <= '0'; ELSIF (clk'EVENT AND clk=‘0') THEN if (r='0' and s='1')then q<= '1'; elsif (r='1' and s='0') then q<='0'; elsif (r='1' and s='1') then q<= '-'; end if; END IF; END PROCESS; END behavior; Copyright © by N.T.K - 8/2008 VD3: asyn-reset DFF & NAND ENTITY example IS PORT ( a, b, clk: IN BIT; q: OUT BIT); END example; --------------------------------------- ARCHITECTURE example OF example IS SIGNAL temp : BIT; BEGIN temp <= a NAND b; PROCESS (clk) BEGIN IF (clk'EVENT AND clk='1') THEN q<=temp; END IF; END PROCESS; END example; --------------------------------------- Sự kết hợp giữa mạch tổ hợp và mạch dãy DEMO Copyright © by N.T.K - 8/2008 VD4: Bộ dồn kênh Multilpexor a,b: hai kênh vào 8bit sel: các bit chọn kênh c: kênh ra 8bit Copyright © by N.T.K - 8/2008 VD4: Bộ dồn kênh Multilpexor LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux IS PORT ( a,b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0); c : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END ENTITY mux; --------------------------------------- ARCHITECTURE example OF mux IS BEGIN PROCESS (a, b, sel) BEGIN IF (sel = "00") THEN c <= "00000000"; ELSIF (sel=“01”) THEN c <= a; ELSIF (sel = "10") THEN c <= b; ELSE c <= “ZZZZZZZZ”; END IF; END PROCESS; END example; Copyright © by N.T.K - 8/2008 Demostration  Sử dụng phần mềm ActiveHDL thiết kế và mô phỏng bộ cộng đầy đủ:  Tạo workspace làm việc.  Tạo một mạch thiết kế design.  Viết VHDL source code.  Thêm file vào design.  Dịch workspace.  Đưa tín hiệu vào dạng waveform mô phỏng. Copyright © by N.T.K - 8/2008 Nội dung môn học  I. Thiết kế mạch với ngôn ngữ VHDL.  1. Giới thiệu VHDL.  2. Cấu trúc code.  3. Các kiểu dữ liệu.  4. Các phép toán và thuộc tính.  5. Code song song/Code tuần tự.  6. Tín hiệu và biến.  7. Máy hữu hạn trạng thái.  8. Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).  9. Attibutes & Configurations.  II. Thiết kế CPU. Copyright © by N.T.K - 8/2008 3. Các kiểu dữ liệu.  3.1. Các kiểu đối tượng.  3.1.1. Signal  3.1.2. Variable  3.1.3. Constant  3.2. Các kiểu dữ liệu. Copyright © by N.T.K - 8/2008 3.1. Các kiểu đối tượng  Một đối tượng VHDL bao gồm 1 trong các loại sau:  Signal: biểu diễn cho dây kết nối giữa các cổng của các thành phần trong hệ thống.  Variable: được sử dụng lưu trữ dữ liệu nội bộ tạm thời, chỉ visible bên trong process.  Constant: hẳng số Copyright © by N.T.K - 8/2008 3.1.1. Signal  Các đối tượng signal được sử dụng để kết nối - truyền thông giữa các entity nhằm tạo nên hệ thống. Signal Copyright © by N.T.K - 8/2008 3.1.1. Signal  Phân loại:  External Signal: là các tín hiệu kết nối hệ thống với bên ngoài, tạo nên giao diện ghép nối của hệ thống với các hệ thống khác.  Internal Signal: là các tín hiệu chỉ nhúng bên trong hệ thống, không nhìn thấy từ bên ngoài, tạo ra sự truyền thông giữa các thành phần bên trong hệ thống. Copyright © by N.T.K - 8/2008 3.1.1. Signal  External Signal & Internal Signal: External Signal Internal Signal Khai báo trong Entity Khai báo trong Architecture ENTITY myboard IS PORT ( [SIGNAL] a,b,c: inout bit; data,extbus,result: inout bit_vector(0 to 7)); END myboard; ARCHITECTURE structure OF myboard IS SIGNAL x,y: bit; SIGNAL intbus: bit_vector(0 to 7); BEGIN Copyright © by N.T.K - 8/2008 3.1.1. Signal  Vị trí khai báo signal:  Phần khai báo của ENTITY  Phần khai báo của ARCHITECTURE  Phần khai báo của PACKAGE  Khai báo signal: SIGNAL name: mode type [:=initial_value] Không cần trong ENTITY Chỉ cần trong ENTITY Copyright © by N.T.K - 8/2008 3.1.1. Signal  Ví dụ khai báo signal trong package: LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; PACKAGE sigdecl IS TYPE bus_type IS ARRAY(0 to 7) OF std_logic; SIGNAL vcc : std_logic := ‘1’; SIGNAL ground : std_logic := ‘0’; FUNCTION magic_function( a : IN bus_type) RETURN bus_type; END sigdecl; => USE WORK.sigdecl.ALL; Copyright © by N.T.K - 8/2008 3.1.1. Signal  Phạm vi tác động của khai báo signal:  Một signal được khai báo trong PACKAGE thì sử dụng được (visible) trong tất cả các thiết kế sử dụng gói package này.  Một signal được khai báo trong ENTITY thì sử dụng được (visible) trong tất cả các ARCHITECTURE gắn với ENTITY này.  Một signal được khai báo trong phần khai báo của ARCHITECTURE thì chỉ sử dụng được trong architecture này.  Một signal được khai báo trong 1 khối (block) bên trong ARCHITECTURE thì chỉ sử dụng được bên trong khối đó. Copyright © by N.T.K - 8/2008 3.1.1. Signal  Ví dụ về phạm vi tác động của signal A B C D E F Copyright © by N.T.K - 8/2008 3.1.1. Signal  Một đặc điểm quan trọng của signal khi được sử dụng bên trong một phần của mã tuần tự (vd PROCESS, FUNCTION, PROCEDURE) là:  Giá trị không được cập nhật ngay lập tức sau câu lệnh, mà phải đến kết thúc đoạn mã tuần tự đó. Về nhà tìm hiểu, hôm sau hỏi Copyright © by N.T.K - 8/2008 3.1.2. Biến (variable)  Biến variable chỉ biểu diễn các dữ liệu nội bộ, chỉ có thể sử dụng bên trong PROCESS, FUNCTION, hoặc PROCEDURE.  Giá trị của biến variable không thể truyền ra ngoài trực tiếp.  Giá trị của biến được cập nhật trực tiếp sau từng dòng mã lệnh. Copyright © by N.T.K - 8/2008 3.1.2. Biến (variable)  Khai báo biến:  VARIABLE name: type [range] [:= init_value]; VARIABLE control: BIT := '0'; VARIABLE count: INTEGER RANGE 0 TO 100; VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000"; Copyright © by N.T.K - 8/2008 Ví dụ về sử dụng variabl e trong VHDL LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------- ENTITY count_ones IS PORT ( din: IN STD_LOGIC_VECTOR (7 DOWNTO 0); ones: OUT INTEGER RANGE 0 TO 8); END count_ones; --------------------------------------- ARCHITECTURE ok OF count_ones IS BEGIN PROCESS (din) VARIABLE temp: INTEGER RANGE 0 TO 8; BEGIN temp := 0; FOR i IN 0 TO 7 LOOP IF (din(i)='1') THEN temp := temp + 1; END IF; END LOOP; ones <= temp; END PROCESS; END ok; Copyright © by N.T.K - 8/2008 LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY mux IS PORT ( a, b, c, d, s0, s1: IN STD_LOGIC; y: OUT STD_LOGIC); END mux; ----------------------------------------- ARCHITECTURE not_ok OF mux IS SIGNAL sel : INTEGER RANGE 0 TO 3; BEGIN PROCESS (a, b, c, d, s0, s1) BEGIN sel <= 0; IF (s0='1') THEN sel <= sel + 1;END IF; IF (s1='1') THEN sel <= sel + 2;END IF; CASE sel IS WHEN 0 => y<=a; WHEN 1 => y<=b; WHEN 2 => y<=c; WHEN 3 => y<=d; END CASE; END PROCESS; END not_ok; LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY mux IS PORT ( a, b, c, d, s0, s1: IN STD_LOGIC; 7y: OUT STD_LOGIC); END mux; ----------------------------------------- ARCHITECTURE ok OF mux IS BEGIN PROCESS (a, b, c, d, s0, s1) VARIABLE sel : INTEGER RANGE 0 TO 3; BEGIN sel := 0; IF (s0='1') THEN sel := sel + 1; END IF; IF (s1='1') THEN sel := sel + 2; END IF; CASE sel IS WHEN 0 => y<=a; WHEN 1 => y<=b; WHEN 2 => y<=c; WHEN 3 => y<=d; END CASE; END PROCESS; END ok; Copyright © by N.T.K - 8/2008 So sánh giữa Signal & Variable Copyright © by N.T.K - 8/2008 3.1.3. Hằng số (Constant)  Hằng số Constant là các tên được gán cho các giá trị cụ thể của 1 kiểu DL. Sử dụng hằng số cho phép người thiết kế xây dựng mô hình dễ hiểu (better- documented) và dễ thay đổi.  Khai báo hằng số:  CONSTANT name : type := value;  Hằng số có thể khai báo trong package, entity hoặc architecture. Phạm vi tác động giống như tín hiệu signal. Copyright © by N.T.K - 8/2008 3.1.3. Hằng số (Constant)  Ví dụ về khai báo hằng số: CONSTANT set_bit : BIT := '1'; CONSTANT pi: REAL := 3.1414; CONSTANT datamemory : memory := ( ('0','0','0','0'), ('0','0','0','1'), ('0','0','1','1')); Copyright © by N.T.K - 8/2008 3.2. Các kiểu dữ liệu VHDL Copyright © by N.T.K - 8/2008 3.2.1. Kiểu dữ liệu vô hướng  Kiểu dữ liệu vô hướng (Scalar Types):  Integer types  Real types  Enumerated types  Physical types Copyright © by N.T.K - 8/2008 Kiểu số nguyên Integer  Kiểu dl số nguyên 32 bit, synthesizable.  Hỗ trợ các phép tóan: +, -, *, /  Dải giá trị biểu diễn được:  -2,147,483,647  => +2,147,483,647 ARCHITECTURE test OF test IS BEGIN PROCESS(X) VARIABLE a : INTEGER; VARIABLE b : int_type; BEGIN a := 1; --Ok 1 a := -1; --Ok 2 a := 1.0; --error 3 END PROCESS; END test; Copyright © by N.T.K - 8/2008 Kiểu số thực Real  Kiểu dl số thực, un-synthesizable.  Dải giá trị biểu diễn được:  -1.0E+38  => +1.0E+38. ARCHITECTURE test OF test IS SIGNAL a : REAL; BEGIN a <= 1.0; --Ok 1 a <= 1; --error 2 a <= -1.0E10; --Ok 3 a <= 1.5E-20; --Ok 4 a <= 5.3 ns; --error 5 END test; Copyright © by N.T.K - 8/2008 Kiểu dữ liệu liệt kê ENUMERATED  Kiểu dữ liệu liệt kê rất hữu ích cho việc mô hình hóa trừu tượng, bi
Tài liệu liên quan