- TOP làm ột generic.
generic(PT_HL,PT_LH: TIME);
7.4. KHAI BÁO CÁU HÌNH (configuration declaration)
Khai báo cấu hình phải xuất hiện trong một thân kiến trúc (architecture body). Vì vậy, để thay đổi mối liên kết (binding) ta phải thay đổi thân kiến trúc và phân tích lại. Điều này có thể gây trở ngại và tốn thời gian. Đẽ
tránh điều này, người ta dùng khai báo cấu hình đểđặc tả một mối liên kết.
Một khai báo cấu hình là một đơn vị thiết kếđộc lập. Vì vậy nó cho phép liên kết trễ các thành phần, nghĩa là, các mối liên kết có thểđược thực hiện sau khi đã viết thân kiến trúc (architecture body). Nó cũng có thể có nhiều khai báo cấu hình cho một thực thể (entity), mỗi khai báo cấu hình định nghĩa một tập hợp các mối liên kết cho các thành phần trong một thân kiến trúc đơn(single architecture body), hoặc có thểđặc tả
một cặp đơn vị thực thể – kiến trúc (unique entity-architecture pair). Dạng thức đặc trưng của khai báo cấu hình là:
configuaration configuaration-name of entity-name is
block-configuaration
end [configuaration] [configuaration-name];
Nó khai báo một cấu hình (configuration) với tên là configuration-name của thực thểentity-name. Một block- configurationđịnh nghĩa mối liên kết của các thành phần trong khối, nơi mà một khối có thể là một thân kiến trúc (architecture body), một phát biểu khối, hoặc một phát biểu phát sinh (generate). Mối liên kết (binding) của các thành phần định nghĩa trong một phát biểu khối và trong một phát biểu phát sinh (generate) được thảo luận trong chương 10. Cấu hình khối là một cấu trúc đệ quy có dạng:
for block-name of entity-name is
component-configuarations block-configuarations
end for;
block-name là tên của một thân kiến trúc (architecture body), nhãn của một phát biểu khối, hoặc nhãn của một phát biểu phát sinh. Khối mức cao nhất (top-level block) luôn luôn là một thân kiến trúc. Một
component-configuration liên kết các thành phần trong một khối với các thực thể, và có dạng: for list-of-comp-labels: comp-name[binding-indication;]
[block-configuarations] end for;
Cấu hình khối bên trong một cấu hình thành phần định nghĩa mối liên kết của các thành phần ở mức kế tiếp trong cặp thực thể – kiến trúc (entity-architecture) đặc tả bởi dấu hiệu liên kết (binding indication).
Có hai dạng khác của dấu hiệu liên kết:
use configuration configuration-name - Dạng 2
use open - Dạng 3
Trong dạng 2, dấu hiệu liên kết (binding indication)chỉ rằng các nấc thành phần (component instance)được buộc tới một cấu hình của một thực thể (entity) mức thấp hơn chỉ bởi tên cấu hình. Nghĩa là khai báo cấu hình với một tên như vậy phải tồn tại. Trong dạng 3, dấu hiệu liên kết (binding indication) chỉ rằng các mối liên kết chưa được đặc tả và bị trì hoãn lại. Cả hai dạng này của dấu hiệu liên kết cũng có thể dùng trong đặc tả
cấu hình.
Ví dụ: khai báo cấu hình đặc tả cấu hình thành phần cho tất cả các nấc thành phần (component instances) trong kiến trúc (architecture) FA_STR của thực thể (entity) FULL_ADDER đã mô tả trong phần trước:
library CMOS_LIB;
configuration FA_CON of FULL_ADDER is for FA_STR
use WORK.all; for A1,A2,A3: AND2
use entity CMOS_LIB.BIGAND2(AND2STR); end for;
for others: OR2 –dùng mặc định, dùng OR2 từ thư viện WORK end for;
for all: XOR2
use configuration WORK.XOR2CON; end for;
end for; end FA_CON;
Cấu hình (configuration) FA_CON liên kết kiến trúc (architecture) FA_STR với thực thể (entity)
FULL_ADDER. Các thành phần bên trong thân kiến trúc (architecture body) này, nấc (instance) A1, A2 và A3, được buộc tới thực thể (entity) BIGAND2 trong thư viện CMOS_LIB. Với tất cả các nấc (instance) của thành phần (component) OR2, các mối liên kết mặc định được sử dụng; đây là các thực thể trong thư viện cùng tên với tên thành phần. Cấu hình thành phần cuối cùng mô tả một kiểu khác của dấu hiệu liên kết (binding indication). Trong trường hợp này, tất cả các nấc thành phần (component instance) được buộc tới một cấu hình thay vì cặp thực thể – kiến trúc (entity-architecture). Tất cả các nấc (instance) của thành phần (component) XOR2 được buộc tới cấu hình (configuration) XOR2CON trong thư viện làm việc. Kiểu liên kết này cũng có thểđược đặc tả trong đặc tả cấu hình.
Điểm mạnh của khai báo cấu hình là ở chỗ các thành phần con (sub-component) có thểđược buộc dùng khai báo cấu hình đơn. Ví dụ, giả sử một mạch cộng toàn phần (full-adder circuit) gồm hai bộ cộng bán phần (full-adder) và một cổng OR. Mạch cộng bán phần bao gồm một cổng XOR và AND. Sự phân cấp cửa bộ cộng toàn phần được minh họa trong hình 7.5
Mô hình cấu trúc cho mạch cộng toàn phần và mạch cộng bán phần, khai báo cấu hình đặc tả mối liên kết cho các thành phần trong bộ cộng toàn phần:
entity FULL_ADDER is
port(A,B,CIN: in BIT; SUM,COUT: out BIT); end;
architecture FA_WITH_HA of FULL_ADDER is component HAFT_ADDER
port(HA,HB: in BIT; HS,HC:out BIT); end component;
component OR2
port(A,B:in BIT; Z: out BIT); end component;
signal S1,C1,C2: BIT; begin
HA1:HAFT_ADDER port map (A,B,S1,C1); HA2:HAFT_ADDER port map (S1,CIN,SUM,C2); O1:OR2 port map (C1,C2,COUT);
end FA_WITH_HA; entity HA is
port(D0,D1: in BIT; S,C: out BIT); end HA; C2 HAFT_ADD ER HA1 HAFT_ADD ER HA1 SUM COUT B A S1 C1 D1 D0 CIN
architecture HA_STR of HA 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 (D0,D1,S); A1:AND2 port map (D0,D1,C); end HA_STR;
library ECL;
configuration FA_HA_CON of FULL_ADDER is for FA_WITH_HA: - cấu hình khối mức cao nhất
for HA1,HA2: HAFT_ADDER
use entity WORK.HA(HA_STR);
port map(D0=>HA,D1=>HB,S=>HS,C=>HC); for HA_STR – cấu hình khối lồng nhau
for all: XOR2
use entity WORK.XOR2(XOR2); end for;
for A1:AND2
use configuration ECL.AND2CON; end for;
end for; for O1:OR2
use configuration WORK.OR2CON; end for;
end for; end FA_HA_CON;
Cấu hình khối mức cao nhất đặc tả mối liên kết của các componentinstances trình bày trong thân kiến trúc (architecture body) FA_WITH_HA. Nấc (instance) HA1 và HA2 được buộc tới thực thểđặc tả bởi cặp thực thể – kiến trúc (entity-architecture), thực thể (entity)HA và kiến trúc (architecture) HA_STR. Cấu hình khối lồng nhau đặc tả mối liên kết của các nác thành phần (componentinstance) trình bày trong thân kiến trúc (architecture body) HA_STR. Bằng cách này, một cấu hình có thểđược lồng vào nhau với độ sâu tùy ý và có thểđược dùng để liên kết tất cả các thành phần trong một phân cấp.
Theo như ví dụ trên, khi các thành phần trong một phân cấp được ràng buộc, một khai báo cấu hình
đơn có thểđược sử dụng để thay thế một tập hợp đặc tả cấu hình. Nếu các đặc tả cấu hình đã được sử dụng trong ví dụ trước, chúng phải được bao gồm một cách độc lập trong thân kiến trúc (architecture body) FA_WITH_HA và HA_STR, và các thân kiến trúc này sẽ phải được biên dịch lại mỗi khi thay đổi mối liên kết. Chú ý, mỗinác thành phần (componentinstance) không được buộc đồng thời với đặc tả cấu hình.