b. Thủ tục và các đặc trưng của chúng.
3.9.2. Các thể hiện của component
Một component được định nghĩa trong một architecture có thể được thể hiện thông qua việc sử dụng các phát biểu thể hiện của chúng. Khi thể hiện chỉ được phép thể hiện phần giao tiếp của component (bao gồm tên, kiểu, hướng của các cổng vào ra của chúng), các tín hiệu bên trong chúng không được thể hiện.
Cú pháp thể hiện component như sau:
instantiation_label : component _name port map (
[ local_port_name =>] expression { [local_port_name =>] expression} );
Một phát biểu thể hiện component cần phải khai báo phần nhãn của thể hiện trước instantiation_label. Hình vẽ 3.11 và 3.12 dưới đây mô tả phần giao diện và phần thực thi bên trong của một bộ cộng full_Adder.
Hình 3.12: Các thành phần bên trong bộ Full_adder.
Như trên hình vẽ chúng ta thấy phần thực thi có ba loại cổng khác nhau và chúng được mang tên như sau: OR2_gate, AND2_gate, XOR_gate, chúng được dùng để xây dựng nên bộ cộng. Để mô tả và thể hiện chúng trong thiết kế, ta có thể viết chương trình để thực thi từng thành phần của chúng như sau:
library IEEE;
use IEEE.STD_LOGIC_1164.all; Entity AND2_gate is
port ( I0, I1 : in STD_LOGIC ; O : out STD_LOGIC ); End AND2_gate; Architecture BHV of AND2_gate is Begin O <= I0 and I1; End BHV; --- library IEEE; use IEEE.STD_LOGIC_1164.all; Entity XOR_gate is
port ( I0, I1 : in STD_LOGIC ; O : out STD_LOGIC ); End XOR_gate; Architecture BHV of XOR_gate is Begin O <= I0 xor I1; End BHV; ---
library IEEE;
use IEEE.STD_LOGIC_1164.all; Entity OR2_gate is
port ( I0, I1 : in STD_LOGIC ; O : out STD_LOGIC ); End OR2_gate; Architecture BHV of OR2_gate is Begin O <= I0 xor I1; End BHV;
Để thể hiện các component này trong một thiết kế, ta khai báo chúng như sau:
library IEEE;
use IEEE.STD_LOGIC_1164.all; Entity FULL_ADDER is
port (A, B, Cin : in STD_LOGIC; Sum, Cout : out STD_LOGIC);
End FULL_ADDER;
Architecture IMP of FULL_ADDER is component XOR_gate
port ( I0, I1 : in STD_LOGIC; O : out STD_LOGIC ); end component ;
component AND2_gate
port ( I0, I1 : in STD_LOGIC; O : out STD_LOGIC ); end component;
component OR2_gate
port ( I0, I1 : in STD_LOGIC; O : out STD_LOGIC ); end component;
signal N1, N2, N3: STD_LOGIC; begin
U1 : XOR_gate port map (I0 => A, I1=> B, O=>N1); U2 :AND2_gate port map ( A, B, N2);
U3 :AND2_gate port map ( Cin, N1, N3); U4 :XOR_gate port map ( Cin, N1, Sum);
U5 :OR2_gate port map ( N3, N2, Cout); end IMP;