Đặc trưng hành vi của mơ hình:

Một phần của tài liệu Tìm hiểu ngôn ngữ DHVL.doc (Trang 25 - 27)

Một kiểu tương phản với mơ tả trước đĩ là kiểu hành vi của 1 thực thể bao gồm các phát biểu thực hiện liên tục cĩ thứ tự. Tập hợp các phát biểu tuần tự được xác định bên trong phát biểu process. Nĩ khơng được xác định trong cấu trúc của thực thể , chỉ là 1 hàm của nĩ.

Một phát biêu process là 1 phát biểu đồng thời cĩ thể thêm vào architecture. Ví dụ hành vi cho thực thể DECODER2x4 bao gồm :

architecture DEC_SEQUENTIAL of DECODER2x4 is begin

Process (A,B,ENABLE)

Variable ABAR,BBAR: BIT; begin

ABAR := not A; --statement1 BBAR := not B; --statement 2 If ENABLE = ‘1’ then --statement 3 Z(3) <= not (A and B); --statement 4 Z(0) <= not (ABAR and BBAR) ; --statement 5 Z(2) <= not ( A and BBAR); --statement 6 Z(1) <= not ( ABAR and B); --statement 7 Else

Z <= ”1111”; --statement 8 End if;

End process;

End DEC_SEQUENTIAL;

Một phát biểu process cĩ 1 phần khai báo (trước từ begin ) và 1 phần phát biểu ( giữa từ begin và end process ). Các phát biểu được đưa vào phần phát biểu là các phát biểu tuần tự và sẽ được thực thi 1 cách tuần tự .

Danh sách các tín hiệu trong ngoặc sau từ process thiết lập danh sách 1 cách cĩ thứ tự , phát biểu process thực thi khi cĩ 1 sự kiện trên bất kỳ tín hiệu nào trên danh sách đĩ .

Trong ví dụ trên ,khi cĩ 1 sự kiện xảy ra trên tín hiệu A,B hoặc ENABLE , các phát biểu trong process sẽ thực thi 1 cách tuần tự.

Khai báo biến ( bắt đầu bằng từ variable) khai báo 2 biến ABAR và BBAR, biến khác với tín hiệu là nĩ luơn được gán giá trị ngay tức khắc và phép gán tín hiệu là := tổ hợp ký hiệu, nĩ được gán giá trị sau khoảng delay ( xác định do người sử dụng hoặc mặc nhiên là khoảng delta) và phép gán điều khiển việc gán giá trị cho biến <= tổ hợp symbol .

Khai báo biến trong process cĩ phạm vi chỉ trong process đĩ . Biến cĩ thể khai báo trong chương trình con , chương trình con sẽ được bàn luận trong chương 8. Khai báo biến bên ngồi process hoặc chương trình con thì gọi là shared variable. Các biến này cĩ thể cập nhật và đọc nhiều process.

Chú ý tín hiệu khơng được khai báo trong process . Các phát biểu gán tín hiệu xuất hiện trong process được gọi là phát biêu gán tín hiệu tuần tự , kể cả phát biểu gán biến ,thực hiện tuần tự độc lập với việc xuất hiện các sự kiện trên mỗi tín hiệu trong biểu thức bên tay phải , khác với việc thực thi của các phát biểu gán tín hiệu đồng thời trong phần trước .

Trong architecture , nếu 1 sự kiện xuất hiện trên tín hiệu A,B hoặc ENABLE , phát biểu 1 , phát biểu gán biến thực thixong thì phát biểu 2 mới thực thi và cứ thế

tiếp tục . Với phát biểu thứ 3 , phát biểu if, được điều khiển bởi giá trị của tín hiệu ENABLE, nếu ENABLE lên ‘1’ thì 4 phát biểu gán kế tiếp thực hiện gán giá trị độc lập A,B ABAR,BBAR , tín hiệu đích sẽ được gán cho chúng từng giá trị sau khoảng delay ∆ . Nếu ENABLE là ‘0’ thì giá trị ‘1’ được gán cho mọi phần tử output trong dãy Z. Khi thực hiện xong process , process ở trong trạng thái treo và đợi đến khi cĩ sự kiện khác xuất hiện.

Cĩ tồn tại phát biểu case hoặc loop trong process , ngữ nghĩa và cấu trúc của phát biểu này cũng giống như trong các ngơn ngữ cấp cao khác là C hoặc pascal . Cĩ thể sử dụng phát biểu wait trong process. Nĩ cĩ

thể sử dụng để chờ cho 1 giá trị thời gian , cho tới khi điều kiện thành true , hoặc đến khi cĩ 1 sự kiện xuất hiện trên tín hiệu .

Process này khơng cĩ danh sách nhận vào bởi vì xuất hiện phát biểu wait trong process . Đĩ là điều quan trọng để nhớ rằng process khơng bao giờ kết thúc .

Tất cả các process thực hiện suốt quá trình mơ phỏng cho đến khi cĩ trạng thái treo. Sau đây là ví dụ mơ tả 1 Flip_Flop :

Entity LS_DFF is

Port ( Q:out BIT; D,CLK : in BIT ); End LS_DFF; Architecture LS_DFF_BEH of LS_DFF is Begin Process (D,CLK) Begin If CLK =’1’ then Q <= D; End if ; End process; End LS_DFF_BEH;

Process được thực hiện khi cĩ 1 sự kiện trên tín hiệu D hoặc CLK . Nếu CLK =’1’,giá trị của D được gán cho Q . Nếu CLK=’0’ thì khơng thực hiện phép gán . Trong khi CLK =‘1’ , mọi thay đổi trên D đều xuất hiện trên Q , chỉ khi CLK=’0’ thì giá trị Q vẫn khơng đổi.

Một phần của tài liệu Tìm hiểu ngôn ngữ DHVL.doc (Trang 25 - 27)