Mỗi một Entity bao gồm nhiều kiến trúc khác nhau. Trong quá trình thiết kế, người thiết kế có thể muốn thử nghiệm với các sự biến đổi khác nhau của thiết kế bằng việc chọn lựa các kiểu kiến trúc khác nhau. Configuration có thể được sử dụng để cung cấp một sự thay thế nhanh các thể hiện của các phần tử (Component) trong một thiết kế dạng cấu trúc. Cú pháp khai báo của Configuration này như sau:
Configuration configuration_name of entity_name is {configuration_decalarative_part}
For block_specification {use_cluse}
{configuration_item} end for;
Với một Entity của bộ cộng FULL_ADDER như đã giới thiệu ở phần trên, ở ví dụ này ta có thể sử dụng chúng trong phép định cấu hình như sau:
configuration FADD_CONFIG of FULL_ADDER is For STRUCTURE
for HA1, HA2 : HALF_ADDER use entity burcin.HALF_ADDER(structure);
for OR1: OR_GATE use Entity burcin.OR_GATE; end for;
end FADD_CONFIG;
Ở đây tên của phép định cấu hình là tùy ý, trong ví dụ này ta lấy tên là FADD_CONFIG, còn với dòng lệnh For STRUCTURE chỉ ra kiến trúc được định cấu hình và được sử dụng với thực thể Entity FULL_ADDER. Giả sử chúng ta đã dịch hai thực thể HALF_ADDER và OR_GATE thành thư viện với tên là burcin và sử dụng chúng trong ví dụ trên.
3.1.5. Các thư viện thiết kế
Kết quả của việc biên dịch VHDL là chúng được cất giữ bên trong các thư viện để dùng cho bước mô phỏng tiếp theo, điều này giống như việc sử dụng một phần tử đã được khai báo trong một thiết kế khác. Một thư viện thiết kế có thể chứa các đơn vị thư viện như sau:
- Các đóng gói (PACKAGES) - Các thực thể Entity
- Các kiểu kiến trúc Architectures
- Các phép định cấu hình Configurations.
Chú ý! VHDL không hỗ trợ các thư viện theo thứ bậc. Ta có thể có nhiều thư viện
theo ý muốn nhưng không được khai báo lồng nhau!
Để mở một thư viện và truy cập chúng như một Entity đã được biên dịch trong một thiết kế VHDL mới, điều đầu tiên cần làm là phải khai báo tên thư viện. Cú pháp của chúng như sau:
Library library_name : [path/directory_name];
Ta có thể truy cập các đơn vị đã được biên dịch từ một thư viện VHDL tới ba mức như sau:
library_name.Package_name.item_name
Ví dụ: Giả sử chúng ta tạo một đóng gói để cất một hằng mà hằng này được sử dụng
trong nhiều thiết kế, sau đó dịch nó và cất vào trong thư viện với tên là burcin.
Package my_pkg is
constant delay: time:=10ns; end my_pkg;
Tiếp đến chúng ta gọi my_pkg để sử dụng chúng trong thiết kế dưới đây:
architecture DATAFLOW of FULL_ADDER is signal S : BIT;
begin
S <= A xor B;
SUM <= S xor CIN after burcin.my_pkg.delay; COUT <= (A and B ) or (S and CIN) after 5ns; end DATAFLOW;
3.2. CÁC ĐỐI TƯỢNG DỮ LIỆU
Một đối tượng dữ liệu giữ một giá trị của một kiểu nhất định. Trong VHDL có ba lớp đối tượng dữ liệu :
- Các biến (Variables). - Các tín hiệu (Signals).
Lớp cuả một đối tượng được chỉ ra bởi một từ khoá và nó được chỉ ra ở điểm bắt đầu của một khai báo.