Escribir comparador numérico de dos bits en VHDL
El comparador numérico de dos bits es un comparador compuesto por cuatro terminales de entrada y tres terminales de salida, que realiza la comparación del tamaño de dos números binarios de dos bits (usando niveles altos y bajos para representar la entrada y la salida). es el siguiente:
(la tabla xx es un estado arbitrario)
Por lo tanto, al diseñar, defina entidades con 4 terminales de entrada y 3 terminales de salida, a saber, A1A0, B1B0 y f1(a>b)f2(a<b)f3(a=b)
Los códigos específicos son los siguientes:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY homework2 IS
PORT(A1:IN STD_LOGIC; --定义4个输入端和3个输出端
A0:IN STD_LOGIC;
B1:IN STD_LOGIC;
B0:IN STD_LOGIC;
f1:OUT STD_LOGIC;
f2:OUT STD_LOGIC;
f3:OUT STD_LOGIC);
END homework2;
ARCHITECTURE HA OF homework2 IS
SIGNAL tmp:STD_LOGIC_VECTOR(3 DOWNTO 0);--定义一个信号数组
BEGIN
tmp<=A1 & B1 & A0 & B0; --用&连接四个输入值,并赋值给tmp
PROCESS(tmp)
BEGIN
CASE tmp IS --CASE语句实现具体代码
WHEN "0000" =>f1<='0';f2<='0';f3<='1';
WHEN "0001" =>f1<='0';f2<='1';f3<='0';
WHEN "0010" =>f1<='1';f2<='0';f3<='0';
WHEN "0011" =>f1<='0';f2<='0';f3<='1';
WHEN "0100" =>f1<='0';f2<='1';f3<='0';
WHEN "0101" =>f1<='0';f2<='1';f3<='0';
WHEN "0110" =>f1<='0';f2<='1';f3<='0';
WHEN "0111" =>f1<='0';f2<='1';f3<='0';
WHEN "1000" =>f1<='1';f2<='0';f3<='0';
WHEN "1001" =>f1<='1';f2<='0';f3<='0';
WHEN "1010" =>f1<='1';f2<='0';f3<='0';
WHEN "1011" =>f1<='1';f2<='0';f3<='0';
WHEN "1100" =>f1<='0';f2<='0';f3<='1';
WHEN "1101" =>f1<='0';f2<='1';f3<='0';
WHEN "1110" =>f1<='1';f2<='0';f3<='0';
WHEN "1111" =>f1<='0';f2<='0';f3<='1';
END CASE;
END PROCESS;
END HA;
Los resultados de la simulación son los siguientes: