Red de conocimiento informático - Problemas con los teléfonos móviles - divisor vhdl

divisor vhdl

Nombre de archivo: fq_divider.vhd

----Este módulo es un divisor de frecuencia, que divide la frecuencia del reloj de 1 KHZ en una frecuencia de reloj de una vez por minuto

----De hecho, este código fuente puede realizar la división de frecuencia de cualquier número entero, principalmente dejando que el valor de N establezca el número correspondiente

------------- -------------------------------------------------- -- ----------

BIBLIOTECA IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

p>

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY fq_divider IS

generic(n:integer:=60000);

PORT(

p>

CLK, restablecer: IN STD_LOGIC;

CLK_OUT: búfer STD_LOGIC

);

END;

ARQUITECTURA A DE fq_divider IS

SEÑAL CNT1, CNT2: entero:=0;

SEÑAL OUTTEMP: STD_LOGIC;

SEÑAL LOUT : STD_LOGIC;

SEÑAL DE SALIDA3: STD_LOGIC:='0';

COMENZAR

P1: PROCESO(CLK)

COMENZAR

SI CLK' EVENTO Y CLK='1' ENTONCES

SI CNT1=n-1 ENTONCES

CNT1lt;=0;

ELSE

CNT1lt ;=CNT1 1;

TERMINAR SI;

TERMINAR SI

TERMINAR PROCESO

P2: PROCESO(CLK)

COMENZAR

SI CLK'EVENT Y CLK='0' ENTONCES

SI CNT2=n-1 ENTONCES

CNT2lt;=0 ;

ELSE

CNT2lt;=CNT2 1;

FINALIZAR SI;

TERMINAR SI ;

FIN DEL PROCESO P2;

P3: PROCESO(CNT1, CNT2)

COMENZAR

si ((n mod 2)= 1) entonces

SI CNT1=1 ENTONCES

SI CNT2=0 ENTONCES

OUTTEMPlt;='1';

ELSE

OUTTEMPlt;= '0';

END IF

ELSIF CNT1=(n 1)/2 THEN

IF CNT2= (n 1)/2 ENTONCES

> OUTTEMPlt;='1';

ELSE OUTTEMPlt;='0';

END IF;

ELSE

OUTTEMPlt; ='0';

END IF;

else

si cnt1=1 entonces

outtemplt;='1';

elsif (cnt1=(n/2 1)) entonces

outtemplt;='1';

else

outtemplt;= '0';

finalizar si;

finalizar si;

FIN DEL PROCESO P3; reset)

COMENZAR

si reset='0' entonces

clk_outlt;=clk;

elsif ((n/=2 ) y (n/=1)) entonces

IF OUTTEMP'EVENT AND OUTTEMP='1' THEN

CLK_OUTlt;=NOT CLK_OUT;

END IF ;

elsif (n=2) entonces

si(clk'event y clk='1')entonces

clk_outlt;=not clk_out;

p>

finalizar si;

else

clk_outlt;=clk;

finalizar si;

FINALIZAR PROCESO P4;

FIN A;