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

Một phần của tài liệu Tài liệu Ngôn ngữ lập trình VHDL pptx (Trang 33 - 35)

V. XỬ LÝ TUẦN TỰ

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

Mô hình không đúng của bộ đa hợp có thiếu sót làm cho mô hình hoạt động không đúng. Mô hình này được trình bày như sau:

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 wrong OF mux IS SIGNAL muxval: INTEGER; BEGIN

PROCESS (i0, i1, i2, i3, a, b) 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 wrong;

Khi có 1 trong các tín hiệu ngõ vào nằm trong danh sách nhạy thay đổi giá trị thì các phát biểu tuần tự được thực hiện.

Phát biểu quá trình trong ví dụ này chứa 4 phát biểu tuần tự.

Phát biểu thứ nhất khởi tạo tín hiệu cục bộ muxval với giá trị ‘0’. Các phát biểu tuần tự con cộng giá trị cho tín hiệu tuỳ thuộc vào của các tín hiệu vào ab.

Phát biểu case cuối cùng lựa chọn một ngõ vào để truyền đến ngõ ra tuỳ thuộc vào giá trị của tín hiệu muxval. Mô hình này có một thiếu sót nghiêm trọng với phát biểu: muxval <=0; làm cho giá trị 0 được sắp xếp như một sự kiện đối với tín hiệu muxval. Thực tế thì giá trị 0 được sắp xếp trong một sự kiện cho thời gian trể delta để mô phỏng bởi vì không có thời gian trì hoãn.

Khi phát biểu thứ 2:

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

được thực hiện, giá trị của tín hiệu muxval là giá trị được truyền ở lần cuối cùng. Giá trị mới đã sắp xếp từ phát biểu thứ nhất chưa được truyền đến. Trong thực tế thì khi nhiều phép gán cho tín hiệu xảy ra trong cùng phát biểu quá trình thì giá trị gán sau cùng là giá trị được truyền.

Tín hiệu muxval có giá trị vô nghĩa (không xác định) khi bắt đầu quá trình. Giá trị của

muxval không thay đổi cho đến khi các phát biểu nằm trong quá trình được thực hiện xong. Nếu tín hiệu b có giá trị là ‘1’ thì sau đó giá trị vô nghĩa được cộng thêm với 2.

Ví dụ tiếp theo sẽ chặt chẻ hơn. Sự khác nhau giữa 2 mô hình của 2 ví dụ là khai báo muxval

và phép gán cho mulval. Trong mô hình ví dụ trước, muxval tín hiệuphát biểu gán tín hiệu

được dùng để gán giá trị cho muxval. Trong mô hình ví dụ này thì muxvalbiếnphép gán biến được dùng để gán giá trị cho muxval.

Một phần của tài liệu Tài liệu Ngôn ngữ lập trình VHDL pptx (Trang 33 - 35)

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

(83 trang)