III. MÔ TẢ PHẦN CỨNG TRONG VHDL
8. PHÁT BIỂU WAIT
Phát biểu WAIT cung cấp cho người thiết kế khả năng dừng tạm thời việc thực thi tuần tự của một quá trình hoặc một chương trình con. Các điều kiện để tiếp tục việc thực thi quá trình hoặc chương trình con tạm dừng có thể được thực hiện bằng một trong 3 cách như sau:
• WAIT ON (chờ) các thay đổi tín hiệu.
• WAIT UNTIL (chờ cho đến khi) một biểu thức là đúng. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
• WAIT FOR (chờ trong) một khoảng thời gian cụ thể.
Các phát biểu WAIT có thể được sử dụng cho một số mục đích khác nhau. Hiện nay lệnh
WAIT được dụng phổ biến nhất là dùng để chỉ ra các ngõ vào xung clock cho các công cụ tổng hợp. Phát biểu WAIT chỉ định xung clock cho phát biểu quá trình được đọc bởi các công cụ tổng hợp nhằm tạo ra mạch logic tuần tự chẳng hạn như các thanh ghi và các flip flop.
Các công dụng khác là trì hoãn việc thực thi quá trình trong một khoảng thời gian hoặc hiệu chỉnh danh sách nhạy của một quá trình.
Chúng ta khảo sát phát biểu quá trình sử dụng phát biểu WAIT được dùng để tạo mức logic tuần tự:
PROCESS (clock, d)
BEGIN
WAIT UNTIL clock = ‘1’ AND clock’EVENT;
q <= d;
END PROCESS;
Quá trình này dùng để phát hiện xung clock cạnh lên của flip flop. Thuộc tính ’EVENT đi cùng với xung clock là true khi ngõ vào xung clock có thay đổi. Tổ hợp của 2 điều kiện là xung clock có giá trị ‘1’ và xung clock có thay đổi nên có thể xem như xung clock vừa xuất hiện xung cạnh lên. Kết quả của quá trình này là đợi hoặc chờ phát biểu WAIT cho đến khi xuất hiện xung clock cạnh lên và giá trị của d được gán cho ngõ ra q.
Thêm chức năng reset đồng bộ cho ví dụ trên như sau:
PROCESS (clock, d)
BEGIN
WAIT UNTIL clock = ‘1’ AND clock’EVENT;
IF (reset = ‘1’) THEN q <= ‘0’; ELSE q <= d;
END IF;
END PROCESS;
Trong ví dụ trên thì khi có xung clock thì tín hiệu reset được kiểm tra trước: nếu tín hiệu reset tích cực thì gán giá trị ‘0’ cho ngõ ra q, ngược lại thì gán tín hiệu d.
Chức năng reset không đồng bộ cũng được thực hiện như sau:
PROCESS (clock, d)
BEGIN
IF (reset = ‘1’) THEN q <= ‘0’;
ELSE clock’EVENT AND clock = ‘1’ THEN q <= d;
END IF;
WAIT ON reset, clock;
END PROCESS;
Quá trình này chứa phát biểu WAIT ON sẽ làm cho quá trình ngừng thực hiện cho đến khi có một trong hai sự kiện reset hoặc xung clock thay đổi. Sau đó phát biểu IF được thực hiện và nếu tín hiệu reset là tích cực thì flip flop bị reset bất đồng bộ, ngược lại xung clock được kiểm tra để Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
Phát biểu WAIT cũng có thể được sử dụng để điều khiển các tín hiệu của quá trình hay chương trình con nhạy với bất kỳ điểm nào trong khi thực hiện chương trình.
Ví dụ 2-23: PROCESS BEGIN WAIT ON a; WAIT ON b; END PROCESS;