Ví dụ mô hình mạch đa hợp đúng

Một phần của tài liệu Ngôn ngữ lập trình VHDL chương 2 (Trang 35 - 36)

V. XỬ LÝ TUẦN TỰ

b. Ví dụ mô hình mạch đa hợp đúng

Trong ví dụ này thì mô hình không đúng ở trên được viết lại để cho thấy cách giải quyết vấn đề của mô hình không đúng:

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL; ENTITY mux IS

PORT (i0, i1, i2, i3, a, b: IN STD_LOGIC;

q: OUT STD_LOGIC);

END mux;

ARCHITECTURE better OF mux IS BEGIN

PROCESS (i0, i1, i2, i3, a, b) VARIABLE muxval : INTEGER; BEGIN

muxval := 0;

IF (a = „1‟ ) THEN muxval := muxval + 1;

END IF;

IF (b = „1‟ ) THEN muxval := muxval + 2;

END IF; CASE muxval IS WHEN 0 => q <= I0 AFTER 10 ns; WHEN 1 => q <= I1 AFTER 10 ns; WHEN 2 => q <= I2 AFTER 10 ns; WHEN 3 => q <= I3 AFTER 10 ns; WHEN OTHERS => NULL;

END CASE;

END PROCESS; END better;

Khi phát biểu thứ nhất muxval:=0; được thực hiện thì giá trị 0 được đặt vào cho biến muxval

ngay lặp tức. Giá trị không được sắp xếp vì muxval trong ví dụ này là biến, không phải là tín hiệu.

điện bên trong. Ô nhớ lưu trữ cục bộ được cập nhật ngay lập tức và giá trị mới có thể được dùng sau đó trong mô hình cho các tính toán sau đó.

Do biến muxval được khởi tạo giá trị 0 ngay lập tức nên hai phát biểu gán trong quá trình dùng giá trị 0 như giá trị khởi tạo và cộng với các con số thích hợp tuỳ thuộc vào tuỳ thuộc vào giá trị của tín hiệu ab. Các phát biểu gán này cũng được thực hiện ngay lập tức và do đó khi phát biểu case được thực hiện thì biến muxval đã chứa giá trị đúng. Từ giá trị này tín hiệu ngõ vào đúng có thể được truyền đến ngõ ra.

Một phần của tài liệu Ngôn ngữ lập trình VHDL chương 2 (Trang 35 - 36)

Tải bản đầy đủ (PDF)

(83 trang)