Thứ Hai, 21 tháng 4, 2014

bài giảng-vhdl - Very High speed integrated circuit Description Language


LINK DOWNLOAD MIỄN PHÍ TÀI LIỆU "bài giảng-vhdl - Very High speed integrated circuit Description Language": http://123doc.vn/document/570135-bai-giang-vhdl-very-high-speed-integrated-circuit-description-language.htm


Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
Mô tả architechture dưới dạng cấu trúc (structure)
Ví dụ, chương trình bộ cộng trên sẽ có dạng:
ENTITY HALF_ADDER IS
PORT( A,B : IN BIT;
SUM,CARRY : OUT BIT);
END HALF_ADDER;
ARCHITECTURE HA_STRUCTURE OF HALF_ADDER IS
Component XOR2
Port(X,Y: in BIT; Z: out BIT);
End component
Component AND2
Port(L,M: in BIT; N: out BIT);
End component
BEGIN
X1: XOR2 port map (A,B,SUM);
A1: AND2 port map (A,B,CARRY);
END HA_STRUCTURE;

Chú ý, trong trường hợp này các tín hiệu trong Port Map(ánh xạ cổng) của đối tượng
trong thành phần này và các tín hiệu trong khai báo phải được liên kết theo vị trí
Mô tả architechture dưới dạng dòng dữ liệu (data flow)
Ví dụ, chương trình bộ cộng trên sẽ có dạng:
ENTITY HALF_ADDER IS
PORT( A,B : IN BIT;
SUM,CARRY : OUT BIT);
END HALF_ADDER;
ARCHITECTURE HA_STRUCTURE OF HALF_ADDER IS
BEGIN
SUM<=A xor B;
CARRY<=A and B;
END HA_STRUCTURE;
Mô hình dòng dữ liệu sử dụng phát biểu gán tín hiệu đồng thời, ký hiệu <= chỉ giá trị
được gán cho tín hiệu. Phép gán được thực hiện khi có 1 sự kiện tín hiệu của biểu thức
bên phải.

GV: Nguyễn Trọng Hải Trang 4
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
Mô tả architechture dưới dạng hành vi (behavioral)
Kiểu mô tả hành vi bao gồm tập hợp thứ tự các phép gán tín hiệu tuần tự được khai báo
bên trong phát biểu process.
Biến được khai báo trong process là biến cục bộ. Tín hiệu không được khai báo trong
process
Ví dụ, chương trình bộ cộng trên sẽ có dạng:
ENTITY HALF_ADDER IS
PORT( A,B : IN BIT;
SUM,CARRY : OUT BIT);
END HALF_ADDER;
ARCHITECTURE HA_STRUCTURE OF HALF_ADDER IS
BEGIN
Process(A,B);
Begin

SUM<=A xor B;
CARRY<=A and B;
End process;
END HA_STRUCTURE;
Ví dụ, mô tả một D-FF:

CK


DQ
Q



ENTITY DFF IS
PORT( D,CK : IN BIT;
Q : OUT BIT);
END DFF;
ARCHITECTURE DFF_BEHAVIOR OF DFF IS
BEGIN
Process(CK);
Begin
If rising_edge(ck) then
Q<=D;
End if;
End process;
END DFF_BEHAVIOR ;
GV: Nguyễn Trọng Hải Trang 5
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
Mô tả architechture dưới dạng hỗn hợp (mixed style)
Có thể trộn lẫn 3 kiểu trong một architechture
Ví dụ, mô tả mạch cộng toàn phần (FULL_ADDER) sau



:








dataflowstructure
A
B



X1





Cin









behavio
r
SUM
CARRY
ENTITY FULL_ADDER IS
PORT( A,B,CIN : IN BIT;
SUM, COUT : OUT BIT);
END DFF;
ARCHITECTURE FA_MIXED OF FULL_ADDER IS
Component XOR2
Port(X,Y: in BIT; Z: out BIT);
End component
Signal S1: BIT Khai báo tín hiệu cục bộ trong architechture
BEGIN
X1: XOR2 port map (A,B,S1); structure
Process(A,B,CIN); behavior
Variable T1,T2,T3: BIT;
Begin

T1:=A and B;

T2:=A and CIN;

T3:=B and CIN;
COUT<=T1 or T2 or T3;
End process;
SUM<=S1 xor CIN; dataflow
END FULL_ADDER;
GV: Nguyễn Trọng Hải Trang 6
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
4. CONFIGURATION
Configuration dùng để liên kết các hợp phần tới entity
configuration ban đầu có thể được ấn định tới rất nhiều architecture trong một entity.











Định cấu hình cho phép mô phỏng các thiết kế ở thành phần con, dễ dàng kiểm tra
được thiết kế hơn một chương trình lớn.
Một cấu hình được dùng để nối từng cặp như sau:
ENTITY component_i IS
ARCHITECHTURE
Behavioral
OF
component_i
IS
….
ARCHITECHTURE
dataflow
OF
component_i
IS
….
ARCHITECHTURE
Structural
OF
component_i
IS
….
• Một thân architecture tới khai báo entity của nó.
• Một component với một entity.
Ví dụ, xây dựng một entity FULL_ADDER ở trên có thể tách ra làm ba architecture
body: FA_BEHAVIOR, FA_STRUCTURE, và FA_MIXED. Một architecture bất kỳ
có thể được chọn bằng cách đặc tả một configuration thích hợp.
Library HS_LIB, CMOS_LIB;
ENTITY FULL_ADDER IS
Port(A,B,Cin : IN BIT; SUM, Cout: OUT BIT);
END FULL_ADDER;

ARCHITECTURE FA_STR OF FULL_ADDER IS
Component XOR2
Port(D1,D2 : IN BIT; DZ : OUT BIT);
END componen;
Component AND2
Port ( Z: OUT BIT; B0,B1: IN BIT);
END Component;

Đặc tả cấu hình:
GV: Nguyễn Trọng Hải Trang 7
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
CONFIGURATION FA_BINDING OF FULL_ADDER IS
For FA_STR
For X1,X2 : XOR2
use entity WORK.XOR2(XOR2BEH);
End for;
liên kết thực thể với nhiều đối tượng của một thành phần.
For A3: AND2
Use entity HS_LIB.AND2HS(AND2STR);
PORT MAP (HS_B => A1, HS_Z=>Z, HS_A => A0 );
End for;
liên kết thực thể với các đối tượng đơn của một thành phần.
For all : OR2
Use entity CMOS_LIB.OR2CMOS(OR2STR);
End for;
liên kết thực thể với tất cả các đối tượng của thành phần OR2.
For others: AND2
Use entity WORK.A_GATE(A_GATE_BODY);
PORT MAP(A0,A1,Z);
End for;

liên kết thực thể với tất cả các đối tượng không được liên kết của
thành phần AND2.
End for;
End for;
Signal S1, S2, S3, S4, S5: BIT;
BEGIN
X1: XOR2 port map(A, B, S1);
X1: XOR2 port map(S1, Cin, SUM);
A1: AND2 port map(S2, A, B);
A2: AND2 port map(S3, B, Cin);
A3: AND2 port map(S4, A, Cin);
O1: OR2 port map(S2, S3, S5);
O2: OR2 port map(S3, B, Cin);
NAND_GATE port map(S4,S5,Cout);
END FA_STR;

GV: Nguyễn Trọng Hải Trang 8
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
Có 4 đặc tả cấu hình trong phần khai báo của thân kiến trúc (architecture body):
• Đặc tả thứ nhất chỉ rằng đối tượng có nhãn X1 và X2 của component XOR2 liên
kết với entity bởi cặp entity - architecture XOR2 và XOR2BEH có sẵn trong thư
viện WORK.
• Đặc tả thứ hai liên kết đối tượng component AND2 có nhãn A3 đến entity bởi cặp
entity - architecture AND2HS và AND2STR đã có trong thư viện thiết kế
HS_LIB. Anh xạ của cổng thành phần (AND2 ) và các cổ
ng thực thể(AND2HS)
được liên kết theo tên (name association).
• Đặc tả thứ ba chỉ rằng tất cả các đối tượng của component OR2 được liên kết với
entity bởi cặp entity - architecture có sẵn trong thư viện thiết kế CMOS_LIB.
• Đặc tả cuối cùng chỉ rằng tất cả các đối tượng không liên kết (unbound) của
component AND2, đối tượng A1 và A2 được liên kết tới entity khác là: A_GATE
có architecture A_GATE_BODY, kiến trúc này có sẵn trong thư
viện WORK.
Trong ví dụ này đã chỉ ra các đối tượng của cung một thành phần (component) có thể
được liên kết(bound) với các thực thể khác nhau.

II. CÁC KHAI BÁO TRONG VHDL.
1. Khai báo kiểu hỗ trợ.
Kiểu liệt kê, số nguyên, dãy một chiều và kiểu bản ghi.
• Kiểu liệt kê.
Ví dụ,
Type STD_ULOGIC is (‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘_’);
std_ulogic là 1 kiểu liệt kê bao gồm 9 giá trị được khai báo là
U<X<0<1<Z<W<L<H< _.
Signal S: STD_ULOGIC;
Type STATE_TYPE is (HALT, READY, RUN, ERROR);
HALT< READY< RUN< ERROR
Variable STATE: STATE_TYPE;
Type CODE_TYPE is (NUL, ‘0’, ‘1’);
Function CODE (C: in INTEGER) return CODE_TYPE;
Kiểu STD_ULOGIC và STATE_TYPE là 2 kiểu liệt kê; tuy nhiên mức độ trừu tượng
của STATE_TYPE cao hơn của STD_ULOGIC.
Trật tự các giá trị xuất hiện trong khai báo liệt kê định nghĩa thứ tự của chúng, giá trị
bên trái nhỏ hơn giá trị bên phải.
• Kiểu nguyên.
Kiểu nguyên là 1 tập hợp những giá trị rơi vào vùng số nguyên được chỉ ra.
Ví dụ,
type LENGTH is range 0 to 1000;
GV: Nguyễn Trọng Hải Trang 9
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
type BYTE_INT is range –128 to 127;
type MY_INTEGER is range -2147483647 to 2147483647;
• Kiểu dãy nhiều chiều.
Kiểu dãy nhiều chiều được VHDL hỗ trợ để định nghĩa một tập chỉ số.
Tuy nhiên chỉ có dãy một chiều được công cụ tổng hợp cho phép. Vậy phải khai báo
hai dãy một chiều thay vì một dãy hai chiều.
Ví dụ,
Type WORD is array (31 downto 0) of BIT;
Type RAM is array (1023 downto 0) of WORD;
Thay vì:
Type OTHER_RAM is array (1023 downto 0, 31 downto 0) of BIT
• Kiểu bản ghi
Kiểu bản ghi định nghĩa tập các kiểu khác nhau. Mỗi thành phần bản ghi được định vị
bằng tên của nó, và có thể dịch bởi công cụ tổng hợp như là giá trị độ dời không đổi
hoặc được biến đổi trong vài trường hợp (khái niệm bản ghi không còn tồn tại nữa, địa
chỉ thành phần được tính toán chỉ một lần và trở thành mã cố
định).
Ví dụ,
Architecture A of E is
Type CODE_TYPE is (NONE, DATA, STATMT) ;
Type ITEM_TYPE is record;
CODE: CODE_TYPE;
INT: INTEGER;
End record;
Signal S1, S2 : ITEM_TYPE;
Begin
Process
Variable V: ITEM_TYPE;
Begin
S1 <= V;
V:= S2;

S2.INT <= 0;
V.CODE := S1.CODE;
• Tiêu chuẩn IEEE
Khối STD_LOGIC_1164 định nghĩa các giá trị kiểu đa luận lý. Khối này được hỗ trợ
bởi tất cả công cụ tổng hợp.
Ví dụ,
Type STD_LOGIC is ( ‘U’, Uninitialized
‘X’, Forcing Unknown
‘0’, Forcing 0
‘1’, Forcing 1
‘Z’, High Impedance
‘W’, Weak Unknown
‘L’, Weak 0
GV: Nguyễn Trọng Hải Trang 10
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
‘H’, Weak 1
‘U’, Don’t care );
'X', '1', '0' là giá trị mạnh và trội hơn các giá trị yếu 'W', 'L', 'H' và chúng lại trội hơn 'Z'.
'1' và '0' có thể hiểu như là nối nguồn và nối đất.
Giá trị 'U'và 'W' được gọi là giá trị gần luận lý, chủ yếu có chức năng mô phỏng và
hiển nhiên không có ý nghĩa phần cứng. Giá trị 'U' là chữ tận cùng bên trái trong định
nghĩa STD_ULOGIC liệt kê, và là giá trị mặc định cho các biến số hoặc các tín hiệu
ban đầu trước khi được gán các giá trị
'X' và 'W' biểu diễn trạng thái mà bộ mô phỏng
không thể xác định được. 'W' có ảnh hưởng ít hơn có thể bị gán đến '0', '1' và 'X'.
Do các công cụ tổng hợp chưa thể phân biệt giữa các độ mạnh yếu, nên các giá trị 'L'
và 'H' không có ngữ nghĩa tổng hợp chuẩn.
'Z' có thể được dùng trong mô phỏng như là kết quả khi không có bộ điều khiển nào
đang hoạt động. Đối với tổng hợp, phần c
ứng đặc biệt được ám chỉ khi gán phép gán
giá trị vô hướng 'Z' được dùng, mục đích của phép gán là đặt đầu ra tới bộ đệm 3 trạng
thái.
2. Các kiểu không hỗ trợ.
Vài kiểu dữ liệu không được dùng cho mục đích tổng hợp (ví dụ, tất cả kiểu vật lý định
nghĩa bởi người thiết kế không được hỗ trợ), kiểu vật lý định nghĩa trước TIME không
được h
ỗ trợ. Ngay cả sự ràng buộc thời gian đối với tổng hợp không được biểu diễn
trong VHDL với các biểu thức thời gian. Do đó mệnh đề after và reject không được
dịch và không có công cụ tổng hợp nào có thể đảm bảo rằng tín hiệu sẽ thay đổi sau
một khoảng thời gian chính xác.
Nếu các mệnh đề này được sử dụng trong mô tả VHDL, công cụ tổng hợp sẽ bỏ
qua và
kết quả phần cứng có thể mâu thuẫn với mô tả đầu vào. Điều này nói rằng kiểu mẫu
chính xác cho tổng hợp không dùng bất kỳ biểu thức thời gian nào, bao gồm lệnh biểu
thức thời gian wait for. Trong mô phỏng qúa trình bị tạm ngưng trong thời gian định
nghĩa bởi biểu thức for. Trong suốt giai đoạn này, tất cả tín hiệu giữ các giá trị mới của
chúng. Trong miền tổng hợp không thể phỏng đoán phần cứng với các kết quả như vậy
mà không cung cấp phần cứng vì nó quá phức tạp và quá đặc biệt (như bộ định thời
gian).
3. Các kiểu con.
Các kiểu con rất hữu dụng cho tổng hợp. Ở mỗi bước mô phỏng, các kiểu con cung cấp
khả năng mạnh mẽ cho việc kiểm tra sử dụng kiểu. Các kiểu con còn thừ
a hưởng tất cả
toán tử định nghĩa từ các kiểu cơ bản của chúng.
Ví dụ, chức năng thao tác trên kiểu BIT_VECTOR có thể được dùng với bất kỳ kiểu
con của BIT_VECTOR dài bằng giá trị còn lại trong khoảng thích hợp.
III. CÁC ĐỐI TƯỢNG VHDL.
Đối tượng trong VHDL là các thông tin về hằng số, biến số và tín hiệu.
1. Hằng số.
Các khai báo hằng số:
Constant constant_name : type_name [:=value]
Ví dụ,
GV: Nguyễn Trọng Hải Trang 11
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
Constant rise_time : time :=10 ns;
Constant bus_width : integer :=8;
Ví dụ,
Type TAB2 is array (BIT, BIT) of BIT;
Constant AND_TAB: TAB2 := ((‘0’, ’0’), (‘0’, ‘1’));
Giá trị hằng số được tính toán chỉ một lần. Quá trình tổng hợp chấp nhận hằng số của
bất kỳ kiểu tổng hợp nào.
Trong trường hợp khai báo như vậy không tạo ra bất kỳ phần cứng nào:
Nếu hằng số được dùng trong phép gán tín hiệu như các lệnh dưới đây thì phần cứng
được suy ra:
Ví dụ,
Signal Z, A, B : BIT;

Z <= AND_TAB (A,B);
Sự khai báo hằng số không tạo ra phần cứng. Hằng số chỉ cung cấp điều kiện để xác
định phần cứng. Hằng số là một biểu thức vì vậy nó tồn tại trong cùng một nơi như các
biểu thức:
Ví dụ, Phía phải của phép gán tín hiệu
Constant COD1: BIT_VECTOR := X ”EA”;
Constant MASK: BIT_VECTOR:=”01111111”;
Signal V, R, A: BIT_VECTOR(7 downto 0);

begin
V <= COD1; R <= A and MASK;

Ví dụ, trong biểu thức lệnh if hoặc case
If S= CST1 then …
Case
VALUE is
When CST_N =>…
Ví dụ, trong lệnh đồng thời có điều kiện:
Z <= CST1 when A=’1’ else S when B= CST2 else CST3;
2. Khai báo biến số và tín hiệu.
Các khai báo biến số
Variable variable_name : type_name [:=value];
Ví dụ,
Variable CTRL_STATUS : BIT_VECTOR (10 DOWNTO 0);
GV: Nguyễn Trọng Hải Trang 12
Bài giảng Thiết Kế Hệ Thống Số Phần VHDL
Ở đây biến CTRL_STATUS là một dãy có 11 phần tử, mỗi phần tử trong dãy có kiểu
là BIT
Ví dụ, Thực hiện mạch sau








DQ
Q

(DATA and “01”)
(0)
(DATA and “10”)
(1)



CK
Z
Clock
Entity MEMO_ONE is
Port ( DATA: in BIT_VECTOR (1 downto 0);
CLOCK :in BIT;
Z: out BIT);
Constant K1: BIT_VECTOR : = “01”;
Constant K2: BIT_VECTOR := “10” ;
End MEMO_ONE;

Architecture
A of MEMMO_ONE is
Begin
Process (CLOCK)
Variable A1, A2: BIT_VECTOR(DATA’range);
Variable A3: BIT;
Begin
If CLOCK = ‘1’ and CLOCK’event then
A1 := DATA and K1;
A2 := DATA and K2;
A3 := A1(0) or A2(1);
Z <= A3;
End if;
End process;
End
A;
Các biến số sử dụng trong ví dụ trên không tạo ra bất kỳ phần cứng nào. Thật ra quá
trình tương đương có thể được cho mà không có bất kỳ biến nào, ở đó tất cả các biến
được thay thế bởi các phương trình của chúng. Chúng ta có thể viết lại như sau.
Begin
If CLOCK = ‘1’ and CLOCK’event then
Z <= (DATA and K2)(1) or (DATA and K1)(0);
End if;
Khai báo tín hiệu:
Cú pháp:
Signal signal_name : type_name [:=value]
GV: Nguyễn Trọng Hải Trang 13

Không có nhận xét nào:

Đăng nhận xét