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.
100 trang |
Chia sẻ: lylyngoc | Lượt xem: 1617 | Lượt tải: 2
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