La simulación de temporización del contador VHDL es anormal
cnt debe definirse como una variable en el proceso de proceso.
if(cnt1<"111111") then
cnt1<=; cnt1+1 ;
Hay retroalimentación en con; usar <= para asignar un buen valor es una característica de la señal. Su asignación se retrasa y los resultados requeridos no se pueden obtener usando la simulación de tiempo. Se puede resolver utilizando variables y no hay demora en la asignación de valores a las variables.
El siguiente es mi contador de cuatro dígitos; preste atención a la definición de la variable y use ( := )
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164. TODOS;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTIDAD js ES
PUERTO (clk,clr: IN STD_LOGIC;
q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
END js;
El comportamiento de la ARQUITECTURA DE js ES
COMENZAR
PROCESO(clk ,clr)
VARIABLE q1: STD_LOGIC_VECTOR(3 DOWNTO 0);--definido como una variable
COMENZAR
SI clr = '0' ENTONCES q1: ="0000" ;
ELSIF CLK'EVENT AND CLK = '1' ENTONCES
IF q1 ="1111" ENTONCES
q1:="0000" ;
ELSE
q1 := q1 + 1;--No hay retraso para la asignación de variables: =.
TERMINAR SI;
q<=q1;
TERMINAR SI;
TERMINAR PROCESO;
FIN comportamiento;