II. Giới thiệu môi trường lập trình ISE.
CHƯƠNG IV: NGÔN NGỮ VHDL 4.1 Giới thiệu chung về ngôn ngữ VHDL
4.2.5.3. Đóng gói và mơ tả thân các đóng gó
Một đóng gói là một tập bao gồm các kiểu, các hằng số, các chương trình con và có thể cả các thành phần khác, thường thường nó được dự định cho hoạt động của một vài dịch vụ thành phần hoặc để tách một nhóm các thành phần có liên quan với nhau. Đặc biệt, chi tiết các giá trị hằng số và các thân chương trình con có thể
ẩn do người dùng, chúng chỉ nhìn thấy được giao diện mà thơi.
Một đóng gói có thể phân chia thành hai phần: phần mơ tả đóng gói dùng để định nghĩa giao diện của nó và phần thân đóng gói dùng để định nghĩa các chi tiết
khác. Phần thân có thể bỏ qua nếu chúng khơng có chi tiết nào. Cú pháp của phần mơ tả đóng gói như sau:
mơ tả đóng gói ::=
package tên định danh is
phần mô tả đóng gói
end [tên đơn của đóng gói];
phần mơ tả đóng gói ::= {thành phần mơ tả đóng gói} thành phần mơ tả đóng gói ::=
mơ tả chương trình con | mơ tả kiểu
| mô tả kiểu con | mô tả hằng số | mô tả tên phụ | mệnh đề sử dụng
Các mô tả định nghĩa các thành phần khác mà nhìn thấy được đối với người dùng đóng gói, và chúng cũng nhìn thấy được bên trong của thân đóng gói.
Ví dụ :
package data_types is
subtype address is bit_vector(24 downto 0); subtype data is bit_vector(15 downto 0); constant vector_table_loc : address;
function data_to_int(value : data) return integer; function int_to_data(value : integer) return data; end data_types;
Trong ví dụ trên, giá trị của hằng số vector_table_loc và thân của hai chương trình con khác nhau, do vậy thân một đóng gói cũng cần phải gán.
Cú pháp của thân một đóng gói là: thân đóng gói ::=
package body tên đơn của thân đóng gói is
phần mơ tả thân đóng gói
end [tên đơn của thân đóng gói];
phần mơ tả thân đóng gói ::= {thành phần mơ tả thân đóng gói} thành phần mơ tả thân đóng gói ::=
mơ tả chương trình con | mô tả kiểu
| mô tả kiểu con | mô tả hằng số | mô tả tên phụ | mệnh đề sử dụng
Thân đối với đóng gói data_types biểu diễn ở trên có thể viết lại như sau:
package body data_types is
constant vector_table_loc : address := X"FFFF00"; function data_to_int(value : data) return integer is
body of data_to_int
end data_to_int;
function int_to_data(value : integer) return data is
body of int_to_data
end int_to_data; end data_types;
Trong thân đóng gói này, giá trị đối với hằng số được chỉ định trước, và thân
đóng gói phải được gán trước. Các mô tả kiểu con không được lặp lại, do các mơ tả đóng gói là nhìn thấy được trong thân đóng gói.