- 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 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ì hỗ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 tồ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 tồn phần được minh họa trong hình 7.5
Mơ hình cấu trúc cho mạch cộng tồ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 tồ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 C2 HAFT_ADDER HA1 HAFT_ADDER HA1 SUM COUT B A S1 C1 D1 D0 CIN Hình 7.5: Bộ cộng tồn phần 1bit phân cấp
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;
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.