Kiểu dữ liệu cú dấu và khụng dấu ( Signed and Unsigned).

Một phần của tài liệu Thiết kế vi mạch bằng VHDL (Trang 25 - 27)

Như đó đề cập trước đõy, cỏc kiểu dữ liệu này được định nghĩa trong gúi

std_logic_arith của thư viện ieee. Cỳ phỏp của chỳng được minh họa trong vớ

dụ dưới đõy: Vớ dụ:

SIGNAL x: SIGNED (7 DOWNTO 0); SIGNAL y: UNSIGNED (0 TO 3);

Lưu ý rằng cỳ phỏp của chỳng tương tự với STD_LOGIC_VECTOR, khụng giống như INTEGER.

Một giỏ trị UNSIGNED là một số khụng bao giờ nhỏ hơn zero. Vớ dụ, “0101” biểu diễn số thập phõn 5, trong khi “1101” là 13. Nhưng nếu kiểu SIGNED được sử dụng thay vào, giỏ trị cú thể là dương hoặc õm ( theo định dạng bự 2). Do đú, “0101” vẫn biểu diễn số 5, trong khi “1101” sẽ biểu diễn số -3

Để sử dụng kiểu dữ liệu SIGNED hoặc UNSIGNED, gúi

std_logic_arith của thư viện ieee, phải được khai bỏo. Bất chấp cỳ phỏp của

chỳng, kiểu dữ liệu SIGNED và UNSIGNED cú hiệu quả chủ yếu đối với cỏc phộp toỏn số học, nghĩa là, ngược với STD_LOGIC_VECTOR, chỳng chấp nhận cỏc phộp toỏn số học. Ở một khớa cạnh khỏc, cỏc phộp toỏn logic thỡ khụng được phộp.

* Vớ dụ:

Cỏc phộp toỏn hợp lệ và khụng hợp lệ đối với kiểu dữ liệu signed/unsigned:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all; -- gúi cần thiết thờm vào

...

SIGNAL a: IN SIGNED (7 DOWNTO 0); SIGNAL b: IN SIGNED (7 DOWNTO 0); SIGNAL x: OUT SIGNED (7 DOWNTO 0); ...

v <= a + b; -- hợp lệ (phộp toỏn số học OK) OK)

w <= a AND b; -- khụng hợp lệ (phộp toỏn logic khụng OK) khụng OK)

Cỏc phộp toỏn hợp lệ và khụng hợp lệ với std_logic_vector:

LIBRARY ieee;

USE ieee.std_logic_1164.all; -- khụng thờm gúi đũi hỏi

...

SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); ...

v <= a + b; -- khụng hợp lệ (phộp toỏn số học khụng OK) toỏn số học khụng OK)

w <= a AND b; -- hợp lệ (phộp toỏn logic OK)

* Vớ dụ: Cỏc phộp toỏn số học với std_logic_vector

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_unsigned.all; -- bao gồm gúi thờm vào

...

SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); ... (adsbygoogle = window.adsbygoogle || []).push({});

v <= a + b; -- hợp lệ (phộp toỏn số học OK), khụng dấu OK), khụng dấu

w <= a AND b; -- hợp lệ (phộp toỏn logic OK).

Một phần của tài liệu Thiết kế vi mạch bằng VHDL (Trang 25 - 27)