SIGNAL 7 6-

Một phần của tài liệu 221640 (Trang 77 - 79)

SIGNAL phục vụ giải quyết cỏc giỏ trị vào và ra của mạch, cũng như là giữa cỏc đơn vị bờn trong của nú. Tớn hiệu biểu diễn cho việc kết nối mạch (cỏc dõy). Thể hiện là, tất cả cỏc PORT của ENTITY là cỏc tớn hiệu mặc định.

Cỳ phỏp:

SIGNAL name : type [range] [:= initial_value];

Vớ dụ:

SIGNAL control: BIT := '0';

SIGNAL count: INTEGER RANGE 0 TO 100; SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0);

Khai bỏo của SIGNAL cú thể được tạo ra ở cỏc chỗ giống nhau như là khai bỏo CONSTANT.

Khớa cạnh quan trọng của SIGNAl, khi sử dụng bờn trong một phần của mó tuần tự (PROCESS), sự cập nhật nú khụng tức thỡ. Giỏ trị mới của khụng nờn được đợi để được đọc trước khi kết thỳc PROCESS, FUNCTION, hoặc PROCEDURE tương ứng.

Phộp toỏn gỏn cho SIGNAL là “<=” (count <= 35;). Giỏ trị khởi tạo khụng thể tổng hợp được, chỉ được xột khi mụ phỏng.

Khớa cạnh khỏc ảnh hưởng đến kết quả khi nhiều phộp gỏn được tạo cựng SIGNAL. Trỡnh biờn dịch cú thể thụng bỏo và thoỏt sự tổng hợp, hoặc cú thể suy ra mạch sai (bằng cỏch chỉ xột phộp gỏn cuối cựng). Do đú, việc xột lập cỏc giỏ trị khởi tạo, nờn được thực hiện với VARIABLE.

Vớ dụ 7.2a: Bộ đếm số số „1‟ trong một vector nhị phõn din temp ones ns 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 00 01 02 03 04 05 06 0 1 2 3 4 5 0 1 2 3 4 5 6 Hỡnh 7.2a.1. Kết quả mụ phỏng LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY count_ones IS

PORT ( din: IN STD_LOGIC_VECTOR (7 DOWNTO 0); ones: OUT INTEGER RANGE 0 TO 8); END count_ones;

ARCHITECTURE not_ok OF count_ones IS SIGNAL temp: INTEGER RANGE 0 TO 8; BEGIN PROCESS (din) BEGIN temp <= 0; FOR i IN 0 TO 7 LOOP IF (din(i)='1') THEN temp <= temp + 1; END IF; END LOOP; ones <= temp; END PROCESS; END not_ok;

Một phần của tài liệu 221640 (Trang 77 - 79)