0
Tải bản đầy đủ (.doc) (67 trang)

Các phép gán tín hiệu có chọn lựa.

Một phần của tài liệu KIẾN THỨC CƠ BẢN VỀ VHDL (Trang 50 -53 )

Phép gán tín hiệu có chọn lựa có thể chỉ một đích gán và cũng chỉ có một biểu thức with. Giá trị này được kiểm tra giống như phát biểu Case thông thờng. Nó sẽ quản lý bất cứ sự thay đổi nào xuất hiện tới các tín hiệu được chọn lựa. Cú pháp của chúng như sau:

with choice_expression select

target <= {expression [after time_expression] when choices} expression [ after time_expression] when choices;

Bất kỳ phép gán tín hiệu có chọn lựa nào đều có thể được mô tả tương đương bởi phát biểu process có chứa phát biểu case. Bạn không được sử dụng phát biểu gán tín có chọn lựa ở trong một process .

Ví dụ 1:

with SEL select

Z <= a when 0 | 1 | 2, b when 3 to 10, c when others; Ví dụ 2: process ( SEL, a, b, c ) case SEL is when 0 | 1 | 2| => Z <= a;

when 3 to 10 => Z <= b; when others => Z <= c; end case;

end process ;

Hai ví dụ trên đây là hoàn toàn tương đương nhau.

3.7.4. Các phát biểu Block

Các block cho phép người thiết kế nhóm các phần theo trật tự logic của các mẫu đồng thời, với điều kiện là các phần này không nằm trong lược đồ sử dụng của các mẫu khác (các mẫu mà chúng được sử dụng để thay thế các thành phần khác trong một thiết kế). Các block được sử dụng để tổ chức các phát biểu gán đồng thời theo thứ bậc. Cú pháp của chúng như sau:

label : Block

{block_declarative_part} begin

{concurrent_statement} end block [label];

Phần khai báo block chỉ ra các đối tượng thuộc miền cục bộ của block và có thể là các thành phần sau đây:

- Khai báo tín hiệu. - Khai báo hằng. - Khai báo kiểu.

- Khai báo các kiểu con. - Thân các chương trình con - Khai báo bí danh ALIAS - Các mệnh đề use

- Khai báo các thành phần ( Component).

Các đối tượng được khai báo trong một block chỉ được phép hoạt động trong block đó và các block vòng trong của nó. Khi một block con khai báo một đối tượng có trùng tên với đối tượng trong block cha thì khai báo của block con sẽ định nghĩa lại đối tượng trùng tên với block cha.

Ví dụ:

signal : out 1 : integer; signal : out 2 : bit;

begin B1 : block signal S : bit; begin B1-1 : block signal S : integer; begin out 1 <= S ; end block B1-1; end block B1; B2: block begin out 2 <= S ; end block B2; end BHV;

Trong ví dụ này ta thấy block B1-1 là block con của block B1. Cả B1 và B1-1 đều khai báo tín hiệu S. Tín hiệu S trong B1-1 sẽ là kiểu integer và truyền cho tín hiệu out 1 cũng là kiểu integer, mặc dù S được khai báo trong B1 là kiểu Bit. Tín hiệu S trong B1 được sử dụng trong B2 là kiểu Bit, trùng với kiểu tín hiệu out 2.

3.7.5. Các lời gọi thủ tục đồng thời

Một lời gọi thủ tục đồng thời chính là một lời gọi thủ tục mà nó được thực thi ở bên ngoài một process, nó đứng độc lập trong một kiến trúc architecture. Lời gọi thủ tục đồng thời bao gồm:

- Có các tham số IN, OUT, INOUT. - Có thể có nhiều hơn một giá trị trả về - Nó được xem như một phát biểu.

- Nó tương đương với một process có chứa một lời gọi thủ tục đơn. Hai ví dụ dưới đây là tương đương nhau.

Ví dụ 1:

begin procedure_any (a,b) ; end...; Ví dụ 2: architecture ... begin process begin

procedure_ any (a,b); wait on a,b;

end process ; end ...;

3.7.6. Các chương trình con

Các chương trình con bao gồm các thủ tục và các hàm mà nó có thể được gọi để thực hiện công việc nào đó lặp lại từ các vị trí gọi khác nhau trong VHDL. Trong VHDL cung cấp hai kiểu chương trình con khác nhau là:

- Các thủ tục (Procedure). - Các hàm ( Function ).

Một phần của tài liệu KIẾN THỨC CƠ BẢN VỀ VHDL (Trang 50 -53 )

×