Bộ so sánh không dấu và có dấu 12 1-

Một phần của tài liệu Ngôn ngữ mô tả phần cứng với VHDL (Trang 122 - 125)

Hình 9.3 hiện lên sơđồ của bộ so sánh. Kích thước của vector được so sánh là generic (n+1). 3 đầu ra phải được cung cấp là: 1 đầu ra là a>b, 1 đầu ra là a = b, đầu ra còn lại là a < b. 3 giải pháp được giới thiệu : đầu tiên xét a và b là các số có dấu, trong khi 2 giải pháp còn lại là các số không dấu. Kết quả mô phỏng sẽ cho chúng ta thấy rõ hơn.

Hình 9.3.Mô hình ca b so sánh

Bộ so sánh có dấu:

Để làm việc với số có dấu hoặc số không dấu thì chúng ta đều phải khai báo gói std_logic_arith (cụ thể chúng ta sẽ thấy trong đoạn mã dưới đây). Mã thiết kế bộ so sánh có dấu:

---- Bo so sanh co dau: ---

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all; -- can thiet! --- ENTITY Bo_so_sanh_co_dau IS

GENERIC (n: INTEGER := 7);

x1, x2, x3: OUT STD_LOGIC); END Bo_so_sanh_co_dau;

--- ARCHITECTURE arc OF Bo_so_sanh_co_dau IS BEGIN x1 <= '1' WHEN a > b ELSE '0'; x2 <= '1' WHEN a = b ELSE '0'; x3 <= '1' WHEN a < b ELSE '0'; END arc; --- Kết quả mô phỏng: Hình 9.4. Kết qu mô phng b so sánh có du Bộ so sánh không dấu 1:

Phần mã VHDL sau đây là bản sao của phần mã đã được trình bày (ở bộ

so sánh không dấu).

---- Bo so sanh khong dau 1: ---

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all; --rat can thiet! ---

ENTITY Bo_so_sanh_khong_dau1 IS GENERIC (n: INTEGER := 7);

PORT (a, b: IN UNSIGNED (n DOWNTO 0); x1, x2, x3: OUT STD_LOGIC); END Bo_so_sanh_khong_dau1;

--- ARCHITECTURE arc OF Bo_so_sanh_khong_dau1 IS BEGIN x1 <= '1' WHEN a > b ELSE '0'; x2 <= '1' WHEN a = b ELSE '0'; x3 <= '1' WHEN a < b ELSE '0'; END arc; ---

Kết quả:

Hình 9.5.1.Kết qu b so sánh không du 1

Bộ so sánh không dấu 2:

Bộ so sánh không dấu có thể cũng được thực hiện với STD_LOGIC_VECTORS, trong trường hợp này không cần thiết phải khai báo std_logic_arith.

Mã thiết kế sẽ như sau:

---- Bo so sanh khong dau: ---

LIBRARY ieee;

USE ieee.std_logic_1164.all;

--- ENTITY comparator IS

GENERIC (n: INTEGER := 7);

PORT (a, b: IN STD_LOGIC_VECTOR (n DOWNTO 0); x1, x2, x3: OUT STD_LOGIC);

END comparator;

--- ARCHITECTURE unsigned OF comparator IS BEGIN x1 <= '1' WHEN a > b ELSE '0'; x2 <= '1' WHEN a = b ELSE '0'; x3 <= '1' WHEN a < b ELSE '0'; END unsigned; Mô phỏng kết quả: Hình 9.5.2. Kết qu ca b so sánh không du2

Một phần của tài liệu Ngôn ngữ mô tả phần cứng với VHDL (Trang 122 - 125)

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

(150 trang)