Escribir comparador numérico de dos bits en VHDL

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:
inserte la descripción de la imagen aquí
(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:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/ws15168689087/article/details/109992986
Recomendado
Clasificación