¿Cómo utilizar VHDL para escribir un programa de contador ascendente y descendente binario de ocho bits con reinicio asíncrono, configuración síncrona y habilitación de conteo?
Tenga en cuenta también:
Errores en el diseño del contador reversible. Si los dos procesos tienen el mismo criterio de condición, habrá problemas de conflicto de señales paralelas. No se permite asignar la misma señal en múltiples procesos; de lo contrario, serán varios controladores.
biblioteca ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.
la entidad adderOrsubber es
port(
clk: en std_logic;
rst: en std_logic; --fuwei
rec: en std_logic; --zhishu
as.in std_logic; -- agregar o sub
c1, c2: en std_logic --control num1, num2 p>
zhishu: en std_logic_vector(7 hasta 0);
resultnum: out std_logic_vector(7 hasta 0)
end; /p>
la arquitectura uno de adderOrsubber es
señal num1, num2: std_logic_vector(7 hasta 0);
señal tempnum: std_logic_vector(7 hasta 0);
indicador de señal: std_logic:='0';
comenzar
resultnumlt;=tempnum )
--control num1 num2;
--zhi 0
proceso(primero, clk)
comenzar
si(primero = '0') entonces
num1lt;="00000000";
num2lt;="00000000";
elsif (rising_edge(clk)) entonces
if(c1 = ' 0') entonces
num1lt;=num1 1;
elsif(c2 = '0') entonces
num2lt;=num2 1;
finalizar si;
finalizar si
finalizar el proceso
--y o sub
proceso(as)
comenzar
if(as = '0')
luego marcar lt; = no marcar
finalizar
finalizar proceso;
---figura zhishu
proceso(num1, num2, flag, rec, clk)
comenzar
si rise_edge(clk) entonces
if(rec = '0') entonces
tempnumlt;=zhishu;
elsif(flag = '0 ') entonces
tempnumlt;=num1 num2;
elsif(bandera = '1') entonces
tempnum lt;=num1-num2;
finaliza si
finaliza
> finalizar proceso;
finalizar uno;