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.2.8. Các mô tả về đối tượng
Một đối tượng là một thành phần được đặt tên trong một mơ tả VHDL mà có giá trị theo kiểu đã được chỉ định. Có 3 lớp đối tượng: hằng số, biến số và tín hiệu. hai kiểu đầu được trình bầy sau đây, cịn kiểu thứ ba sẽ được trình bầy trong phần 3.3.2.1. Việc mơ tả và sử dụng các hằng số và biến số hoàn toàn giống như trong các ngơn ngữ lập trình khác.
Một hằng số là một đối tượng được khởi động theo một giá trị chỉ định trước khi nó được khởi tạo, và khơng thể thay đổi. Cú pháp của nó là:
mô tả hằng số ::=
constant liệt kê tên định danh : biểu diễn kiểu con [ := biểu thức ]
Các mô tả hằng số thiếu biểu thức khởi động được gọi là các hằng số hoãn, và chỉ có thể xuất hiện trong các mơ tả đóng gói (xem mục 3.2.5.3). Giá trị khởi động phải được cung cấp tương ứng trong thân đóng gói.
Ví dụ:
constant e : real := 2.71828; constant delay : Time := 5 ns; constant max_size : natural;
Một biến là một đối tượng mà giá trị có thể thay đổi được sau khi khởi động. Cú pháp của nó là:
mơ tả biến ::=
Nếu vắng thành phần biểu thức, thì một giá trị mặc định sẽ được gán khi biến
được khởi tạo. Nếu giá trị mặc định đối với các kiểu vô hướng là giá trị bên trái
nhất của kiểu đó, thì đó là kiểu số đầu tiên trong danh sách, và là giá trị thấp nhất theo thứ tự sắp xếp từ dưới lên, hoặc cao nhất từ trên xuống. Nếu biến là một kiểu tổ hợp, thì giá trị mặc định là tổ hợp của các giá trị mặc định đối với từng phần tử, dựa trên kiểu của phần tử.
Ví dụ:
variable count : natural := 0; variable trace : trace_array;
Dựa vào một đối tượng có sẵn, nó có thể cung cấp tên thay thế cho một phần hoặc cả đối tượng đó. Để thực hiện, người ta sử dụng kiểu mô tả tên phụ (alias). Cú pháp như sau:
mô tả tên phụ ::= alias tên dịnh danh : biểu diễn kiểu con is tên; Ví dụ như sau:
variable instr : bit_vector(31 downto 0);
alias op_code : bit_vector(7 downto 0) is instr(31 downto 24); 4.2.2.9. Các thuộc tính
Các kiểu và các đối tượng được mô tả trong một mơ tả VHDL có thể có thêm thơng tin phụ, và được gọi là các thuộc tính, tương ứng với chúng. Đây là một số thuộc tính chuẩn đã định nghĩa sẵn. Một thuộc tính được tham chiếu bằng cách sử dụng dấu “`”. Ví dụ:
thing`attr
Đầu tiên, đối với bất kỳ kiểu vô hướng hoặc kiểu con T nào, có thể sử dụng
các thuộc tính sau:
Thuộc tính Kết quả trả về
T'left Left bound of T --
T'right Right bound of T
T'low Lower bound of T
Đối với phạm vi sắp xếp tăng dần, T`left = T`low và T`right = T`high. Đối với
phạm vi sắp xếp giảm dần, T`left = T`high và T`right = T`low.
Thứ hai, đối với bất kỳ kiểu vật lý hoặc kiểu con T, kiểu con X là một phần của kiểu con T và kiểu số ngun N, thì có thể sử dụng các thuộc tính sau:
Thuộc tính Kết quả trả về
T'pos(X) Position number of X in T
T'val(N) Value at position N in T
T'leftof(X) Value in T which is one position left from X T'rightof(X) Value in T which is one position right from X T'pred(X) Value in T which is one position lower than X T'succ(X) Value in T which is one position higher than X
Đối với phạm vi sắp xếp tăng dần, T'leftof(X) = T'pred(X) và T'rightof(X) =
T'succ(X). Đối với phạm vi sắp xếp giảm dần T'leftof(X) = T'succ(X) và T'rightof(X) = T'pred(X).
Thứ ba, đối với bất kỳ kiểu mảng hoặc đối tượng kiểu A, thì có thể sử dụng các thuộc tính sau:
Thuộc tính Kết quả trả về
A'left(N) Left bound of index range of dim’n N of A
A'right(N) Right bound of index range of dim’n N of A
A'low(N) Lower bound of index range of dim’n N of A
A'high(N) Upper bound of index range of dim’n N of A A'range(N) Index range of dim’n N of A
A'reverse_range(N) Reverse of index range of dim’n N of A A'length(N) Length of index range of dim’n N of A