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 của 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);
PORT (a, b: IN SIGNED (n DOWNTO 0); 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ụ phỏng bộ so sỏnh cú dấu
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 dấu 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ả của bộ so sỏnh khụng dấu2