Número de línea de estadísticas del código fuente Vhdl
-Este módulo es un divisor de frecuencia que divide la frecuencia del reloj de 1 KHZ una vez por minuto.
-De hecho, el código fuente puede realizar la división de frecuencia de cualquier número entero, principalmente estableciendo el valor de n en el número correspondiente.
-
Biblioteca IEEE
Usa IEEE. STD_LOGIC_1164. Todos;
Utiliza IEEE. STD_LOGIC_ARITH. Todos;
Utiliza IEEE.
STD_LOGIC_UNSIGNED todos;
La entidad fq_divider es
Genérica (n: entero:= 60000);
Puerto (
CLK, restablecer); :En STD_LOGIC;
CLK _Salida: Buffer Standard_Logic
);
Fin;
Arquitectura A de fq_divider para
Señal CNT1, CNT2: entero:= 0;
Señal de salida temp:STD_LOGIC;
Señal LOUT: STD_LOGIC;
SEÑAL out 3:STD_LOGIC:= ' 0 ';
Inicio
P1: Proceso (CLK)
Inicio
Si CLK evento y CLK='1' entonces
Si CNT1=n-1, entonces
CNT 1<=0;
Otros
CNT 1 <= CNT 1+1;
Finalizar SI;
Finalizar SI;
Finalizar proceso p 1 ;
P2: Proceso (CLK)
Inicio
Si evento CLK y CLK = 0, entonces
Si CNT2=n- 1, entonces
CNT2 & lt=0;
Otros
CNT2 & lt= cn T2+1;
Fin
Fin; IF;
Finalizar proceso P2;
P3: Proceso (CNT1, CNT2)
Iniciar
Si ((n mod 2) =1) entonces
Si CNT1=1, entonces
Si CNT2=0, entonces
OUTTEMP & lt=' 1';
Otro
OUTTEMP & lt='0';
Fin IF;
ELSIF CNT1=(n+1 )/2Entonces
Si CNT2=(n+1)/2, entonces
OUTTEMP & lt='1';
ELSE OUTTEMP & lt= '0';
Fin IF;
Otros
OUTTEMP & lt='0';
Fin IF;
Otros
Si cnt1=1, entonces
outtemp & lt='1';
elsif (cnt1=(n/2+1 ))Entonces
outtemp & lt='1';
Otro
outtemp & lt='0';
Finalizar si ;
Fin if;
Finalizar proceso P3;
P4: Procesamiento (temperatura de salida, reloj, reset)
Inicio
p>Si reset ='0 ', luego
clk _ out & lt= clk
elsif ((n/=2) y (n/=1)) Luego
Si el evento OUTTEMP y OUTTEMP='1', entonces
CLK_OUT<= no es CLK_OUT;
End IF;
p>
elsif ( n=2) entonces
si (clk'event y clk='1 ') entonces
clk _ out & lt= no clk _ out
Fin if;
Otros
clk _ out & lt= clk
Finalizar si;
Finalizar proceso P4;
Fin A;