Toỏn tử 3 6-

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

VHDL cung cấp một số toỏn tử sau:

 Toỏn tử gỏn.

 Toỏn tử logic.

 Toỏn tử toỏn học.

 Toỏn tử so sỏnh.

 Toỏn tử dịch.

Sau đõy chỳng ta sẽ xem xột cụ thể từng toỏn tử một.

4.1.1 Toỏn tử gỏn.

VHDL định nghĩa ba loại toỏn tử gỏn sau: <=: Dựng gỏn giỏ trị cho SIGNAL.

:= : Dựng gỏn giỏ trị cho VARIABLE, CONSTANT,GENERIC. =>: Dựng gỏn giỏ trị cho thành phần cỏc vector và cỏc loại giỏ trị

khỏc.

Vớ dụ:

SIGNAL x : STD_LOGIC;

VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL w: STD_LOGIC_VECTOR(0 TO 7); x <= '1'; y := "0000 w <= "10000000"; w <= (0 =>'1', OTHERS =>'0'); 4.1.2 Toỏn tử Logic.

VHDL định nghĩa cỏc toỏn tử logic sau:

NOT, AND, OR, NAND, NOR, XOR, XNOR

Dữ liệu cho cỏc toỏn tử này phải là kiểu: BIT, STD_LOGIC, STD_ULIGIC, BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR. Vớ dụ: y <= NOT a AND b; y <= NOT (a AND b); y <= a NAND b; 4.1.3 Toỏn tử toỏn học.

Cỏc toỏn tử này dựng cho cỏc kiểu dữ liệu số như là:INTEGER, SIGNED, UNSIGNED, REAL. Cỏc toỏn tử bao gồm:

+ To ỏn tử cộng.

- To ỏn tử trừ.

* To ỏn tử nhõn.

** To ỏn tử lấy mũ.

MOD Phộp chia lấy phần nguyờn.

REM Phộp chia lấy phần dư.

ABS Phộp lấy giỏ trị tuyệt đối.

4.1.4 Toỏn tử so sỏnh. Cú cỏc toỏn tử so sỏnh sau: = So sỏnh bằng /= So sỏnh khụng bằng. < So sỏnh nhỏ hơn. > So sỏnh lớn hơn. <= So sỏnh nhỏ hơn hoặc bằng. >= So sỏnh lớn hơn ho ặc bằng. 4.1.5 Toỏn tử dịch. Cỳ phỏp sử dụng toỏn tử dịch là:

<left operand> <shift operation> <right operand>

Trong đú <left operand> cú kiểu là BIT_VECTOR, cũn <right operand> cú kiểu là INTEGER. Cú hai toỏn tử dịch:

Sll To ỏn tử dịch trỏi. Điền 0 vào phớa phải.

Rll To ỏn tử dịch phải. Điền 0 vào phớa trỏi.

4.2. Thuộc tớnh.

4.1.1. Thuộc tớnh dữ liệu.

VHDL cung cấp cỏc thuộc tớnh sau.

d‟LOW Trả về giỏ trị nhỏ nhất của chỉ số mảng.

d‟HIGH Trả về chỉ số lớn nhất của mảng.

d‟LEFT Trả về chỉ số bờn trỏi nhất của mảng.

d‟RIGHT Trả về chỉ số bờn phải nhất của mảng.

d‟LENGTH Trả về kớch thước của mảng.

d‟RANGE Trả về mảng chứa chỉ số.

d‟REVERSE_RANGE Trả về mảng chứa chỉ số được đảo ngược. Vớ dụ: Nếu d là một vector được khai bỏo như sau:

SIGNAL d : STD_LOGIC_VECTOR(0 TO 7)

Ta sẽ cú:

d'LOW = 0, d'HIGH = 7, d'LEFT = 7, d'RIGHT = 0, d'LENGTH = 8, d'RANGE = (7 downto 0), d'REVERSE_RANGE = (0 to 7).

Cỏc thuộc tớnh này cú thể dựng trong cỏc vũng lặp:

FOR i IN RANGE (0 TO 7) LOOP ... FOR i IN x'RANGE LOOP ...

FOR i IN RANGE (x'LOW TO x'HIGH) LOOP ... FOR i IN RANGE (0 TO x'LENGTH-1) LOOP ...

Nếu tớn hiệu cú kiểu liệt kờ thỡ:

d’POS(val) Trả về vị trớ cú giỏ trị là val.

d’LEFTOF(value) Trả về giỏ trị ở vị trớ bờn trỏi của value.

d’VAL(row,colum) Trả về giỏ trị ở một vị trớ đặc biệt.

4.1.2. Thuộc tớnh tớn hiệu.

Cỏc thuộc tớnh loại này chỉ được ỏp dụng đối với dữ liệu SIGNAL. Nếu s là một SIGNAL thỡ ta cú :

s‟EVENT : Trả về true khi một sự kiện xảy ra đối với s. s‟STABLE: Trả về true nếu khụng cú sự kiện nào xảy ra đối

với s.

s‟ACTIVE: Trả về true khi s = 1.

s‟QUIET<time>: Trả về true khi trong kho ảng thời gian time khong cú sự kiện nào xảy ra.

s‟LAST_EVENT: Trả về thời gian trụi qua kể từ sự kiện cuối cựng s‟LAST_ACTIVE: Trả về thới gian kể từ lần cuối cựng s = 1

s‟LAST_VALUE: Trả về giỏ trị của s trước sự kiện trước đú. Trong cỏc thuộc tớnh trờn thỡ thuộc tớnh s‟EVENT là hay được dựng nhất.

Vi dụ:Đõy là vớ dụ với tớn hiệu đồng hồ.

IF (clk'EVENT AND clk='1')... IF (NOT clk'STABLE AND clk='1')... WAIT UNTIL (clk'EVENT AND clk='1'); IF RISING_EDGE(clk)...

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