TẠO NẤC TRỰC TIẾP (direct instantiation)

Một phần của tài liệu luận văn tìm hiểu ngôn ngữ vhdl viết chương trình thiết kê mạch cộng 8 bit song song cho 2 toán hạng (Trang 74 - 77)

- TOP làm ột generic.

generic(PT_HL,PT_LH: TIME);

7.7. TẠO NẤC TRỰC TIẾP (direct instantiation)

Một khai báo thành phần khai báo giao diện của một thành phần. Thành phần này có thểđược tạo nấc dùng phát biểu tạo nác thành phần. Tuy nhiên, trước khi thực thể chứa thành phần có thểđược mô phỏng, nấc thành phần (component instance) cần phải được buộc hoặc liên kết đến một cặp thực thể - kiến trúc (entity- architecture) hoặc tới một cấu hình. Mối ràng buộc này được đặc tả dùng cấu trúc bổ sung, nghĩa là, dùng đặc tả cấu hình hoặc khai báo cấu hình.

Tuy nhiên, có thể tạo nấc (instantiate) trực tiếp cặp thực thể - kiến trúc (entity-architecture) hoặc một cấu hình trong một phát biểu tạo nấc thành phần (component instantiation statement). Điều này lưu trữ bước liên kết bổ sung khi dùng các thành phần (component). Đây là hai dạng bổ sung của phát biểu tạo nấc thành phần có thểđược sử dụng để tạo nấc trực tiếp một thực thể hoặc một cấu hình:

component-label: entity entity-name[(architecture-name)]

[generic map (generic-association-list)] [port map (port-association-list)];

component-label: configuration configuration-name

[generic map (generic-association-list)] [port map (port-association-list)];

Ví dụ: mô tả của bộ cộng toàn phần 1bit phân cấp dùng tạo nấc trực tiếp. Chú ý, trong trường hợp này có thể

không hoặc cần thiết khai báo cấu hình, bởi vì các nấc thành phần (component instantiations) tạo nấc trực tiếp các cặp thực thể-kiến trúc hoặc các cấu hình thích hợp. Cũng như vậy, có thể hoặc không cần thiết khai báo thành phần.

entity FULL_ADDER is

port(A,B,CIN: in BIT; SUM,COUT: out BIT); end FULL_ADDER;

architecture FA_WITH_HA of FULL_ADDER is signal S1,C1,C2: BIT;

begin

HA1:entity WORK.HA(HA_STR) port map (A,B,S1,C1); HA2: entity WORK.HA(HA_STR) port map (S1,CIN,

SUM,C2); O1:configuration WORK.OR2CON port map (C1,C2,

COUT); end FA_WITH_HA;

entity HA is

port(D0,D1: in BIT; S,C: out BIT); end HA;

library ECL;

architecture HA_STR of HA is begin

X1:entity WORK.XOR2(XOR2) port map (D0,D1,S); A1: configuration ECL.AND2CON port map (D0,D1,C); end HA_STR;

Ví dụ: bộ cộng toàn phần với kiến trúc (architecture) FA_STR, đã mô tả trong phần 7.3. Chú ý, trong trường hợp này không cần đặc tả cấu hình và khai báo thành phần, bằng cách đó làm cho việc mô tả rất cô đọng.

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 signal S1,S2,S3,S4,S5: BIT; begin

X1:entity WORK.XOR2(XOR2BEH) port map (A,B,S1); X2:entity WORK.XOR2(XOR2BEH) port map(S1,CIN, SUM); A1:entity WORK.A_GATE(A_GATE_BODY) port map(

S2,A,B); A2: entity WORK.A_GATE(A_GATE_BODY) port map(

S1,CIN,SUM,C2); A3: entity HS_LIB.AND2HS(AND2STR) port map(

S4,A,CIN); O1: entity CMOS_LIB.OR2CMOS(OR2STR) port map (

S4,S5,COUT); end FA_STR;

Có thể làm trễ các mối liên kết của các cổng và các generic và các generic dẫn xuất (override prespecified generics) dùng kỹ thuật liên kết gia tăng (incremental binding mechnism). Các mối liên kết (bindings) hiện diện trong một đặc tả cấu hình tương ứng với các mối liên kết chính (primary bindings). Tuy nhiên, nó có thể

không chứa thông tin liên kết hoàn chỉnh. Thiếu thông tin có thể là: - Các cổng và các generic không kết hợp

- Các cổng và các generic mở

Ví dụ:

entity FULL_ADDER is

port(A,B,CIN: in BIT; SUM,COUT: out BIT); end FULL_ADDER;

architecture FA_STR_INCR of FULL_ADDER is component XOR2

port(D1,D2:in BIT; DZ:out BIT); end component;

component AND2

port(Z:out BIT; A0,A1:in BIT); end component;

component OR2

port(N1,N2:in BIT; Z:out BIT); end component;

for X1,X2:XOR2

use entity WORK.MY_XOR2; - đặc tả ánh xạgeneric và - ánh xạ cổng. Bởi vì tên kiến trúc không được - chỉđịnh, mặc định là kiến trúc phân tích mới nhất

for others:AND2

use entity WORK.MY_AND2(ARCH_BODY); port map (HS_B => A1, HS_A => open);

- cổng HS_Z không được kết hợp và cổng HS_A mở

for all:OR2

use entity WORK.MY_OR2

- các giá trịgeneric sẽđược dẫn xuất sau bằng đặc tả trong khai báo cấu hình. begin … end FA_STR_INCR; entity MY_XOR2 is generic(TPHL,TPLH:TIME); port(XA,XB: in BIT; XZ: out BIT); end MY_XOR2;

entity MY_AND2 is

port(HS_A,HS_B: in BIT; HS_Z: out BIT); end MY_AND2;

entity MY_OR2 is

generic(TPHL,TPLH:TIME); port(N1,N2: in BIT; Z: out BIT); end MY_OR2;

Trong các mối liên kết (binding) cho thành phần XOR2, thiếu ánh xạ cổng và generic. Trong các liên kết (binding) thành phần AND2, cổng HS_Z không được kết hợp, và trong các liên kết (binding) cho thành phần OR2, các giá trịgenericđược chỉđịnh. Tuy nhiên các giá trịgenericđã đặc tả trong khai báo cấu hình có thể dẫn xuất từ các giá trịgenericđã chỉđịnh trong đặc tả cấu hình. Những thông tin phụ và thiếu có thể được cung cấp sau trong khai báo cấu hình, có thể tồn tại trong các tập tin khác nhau. Ví dụ khai báo cấu hình thiếu thông tin:

configuration FA_INCREMENTAL of FULL_ADDER is for FA_STR_INCR

- cấu hình thành phần đầu tiên: for X1,X2:XOR2

port map (A0,A1,Z)

generic map(TPHL => 2 ns, TPLH =>5 ns); end for

- cấu hình thành phần thứ hai: for all:AND2

port map (HS_A => ‘1’,HS_Z => Z) end for - cấu hình thành phần thứ ba: for all:OR2 generic map(TPHL => 4 ns, TPLH =>6 ns); end for; end for; end FA_INCREMENTAL;

Một phần của tài liệu luận văn tìm hiểu ngôn ngữ vhdl viết chương trình thiết kê mạch cộng 8 bit song song cho 2 toán hạng (Trang 74 - 77)

Tải bản đầy đủ (PDF)

(103 trang)