CLK Divider Ayuda

K

Kaiser

Guest
Tengo un reloj de 50 MHz en mi tabla y necesito un reloj de 60 Hz para mi ...... diseño de
Alguien puede sugerir algo que ver ...?
Un descripiton verilog ....( que será muy agradable con comentarios-mods general)

THX de antemano!

 
Aquí va el código Verilog!Código:

clk_div módulo (clk_50mhz, rst_n, clk_60hz);

clk_50mhz de entrada, rst_n;

salida clk_60hz;

reg clk_60hz;reg [47:0] en mostrador;siempre @ (clk_50mhz posedge o rst_n negedge) comienzan

if (! rst_n) comienzan

contador <= 48'h00000;

clk_60hz <= 1'b0;

end else begin

if (contador == 48'h65B9A) comienzan

contador <= 48'h00000;

clk_60hz <= ~ clk_60hz;

end else begin

contador <= contador 1'b1;

final

end / / else:! if (! rst_n)

end / / siempre @ (clk_50mhz posedge o rst_n negedge)

endmodule / / clk_div
 
lo entiendo de una universidad ...sé su nombre D. ..VHDLCódigo:

Si usted necesita un reloj más lento, aquí es un simple algoritmo divisor de reloj, que divide el reloj por 2N.Donde:N = f (CLK) / (2 * f (deseada))
- Archivo "clk_div.vhd"- Un divisor de reloj de genéricos, se divide por 2 * N- Adaptado de "VHDLL Primer", de J. Bhasker, p.
295-------------------------------------------------- ----------------------------------------IEEE biblioteca;

ieee.std_logic_1164.all uso;clk_div entidad es

genéricos (N: positivo: = 2);

puerto

(fast_clk, reset: in std_logic;

slow_clk: std_logic búfer

);

clk_div fin;de comportamiento de la arquitectura es clk_div

empezar

(proceso de restablecimiento, fast_clk)

variable cuenta: natural;

empezar

Si el reajuste = '1 ', entonces

count: = 0;

slow_clk <= '0 ';

rising_edge elsif (fast_clk) entonces

count: = count 1;

Si count = N, entonces

slow_clk <= no slow_clk;

count: = 0;

END IF;

END IF;

proceso de finalización;

comportamiento final;
 
siempre @ (clk_50mhz posedge o rst_n negedge) comienzan
if (! rst_n) comienzanTendrá Filp borde doble fracaso.¿Es su CPLD / FPGA capaz? [/ U]

 
Cita:siempre @ (clk_50mhz posedge o rst_n negedge) comienzan

if (! rst_n) comienzanTendrá Filp borde doble fracaso.
¿Es su CPLD / FPGA capaz?

 
Muchas gracias .... muy

fue amablemente ..Después de que me miraba por encima de sus sugerencias, he hecho este (de 50Mhz downto 1Hz con el 50% de ciclo de dutty)clk_div módulo (clk_in, reset, clk_1hz);
clk_in de entrada, reajuste;
salida clk_1hz;
reg clk_1hz;reg [25] en mostrador;

siempre @ (clk_in posedge o restablecer posedge)
empezar
if (reset)
empezar
contador <= 26'h0;
clk_1hz <= 1'b0;
final
algo más
empezar
if (contador == 26'h17D7840)
empezar
contador <= 26'h0;
clk_1hz <= ~ clk_1hz;
final
algo más
contador <= contador 1'b1;
final
final

endmoduletodas las observaciones que se aprecia ...Alta después de 11 minutos:nand_gates escribió:

Aquí va el código Verilog!
Código:

clk_div módulo (clk_50mhz, rst_n, clk_60hz);

clk_50mhz de entrada, rst_n;

salida clk_60hz;

reg clk_60hz;reg [47:0] en mostrador;siempre @ (clk_50mhz posedge o rst_n negedge) comienzan

if (! rst_n) comienzan

contador <= 48'h00000;

clk_60hz <= 1'b0;

end else begin

if (contador == 48'h65B9A) comienzan

contador <= 48'h00000;

clk_60hz <= ~ clk_60hz;

end else begin

contador <= contador 1'b1;

final

end / / else:! if (! rst_n)

end / / siempre @ (clk_50mhz posedge o rst_n negedge)

endmodule / / clk_div
 
50 MHz no se divide uniformemente a 60 Hz.La proporción es 833333.333 ...

Se puede construir un contador que cuenta desde 0 a 2.499.999 y genera un pulso a medida que pasa 0, 833333, y 1666666.Eso le dará tres pulsos cada 2500000 relojes que es exactamente 60 Hz.Pero los pulsos no son iguales de tiempo, no hay un ciclo de fluctuación (20 ns).
Código:

Top Module (CLK, hz60);

CLK de entrada;

reg [21:0] count = 0;

salida reg hz60 = 0;siempre @ (clk posedge) comienzan

count <= (count == 2499999)?
0: cuenta 1;

hz60 <= (count == 0) | (count == 833333) | (count == 1666666);

final

endmodule
 
echo47 escribió:

Eso le dará tres pulsos cada 2500000 relojes que es exactamente 60 Hz.
Pero los pulsos no son iguales de tiempo, no hay un ciclo de fluctuación (20 ns).
 
Mi contador ha 20ns jitter período.El período es 16666660ns, 16666660ns, 16666680ns, y luego se repite.El promedio de los tres períodos es 16666666.6666 ...nanosegundos, que es exactamente 60 Hz.

Incluso los osciladores de reloj mejor tener alguna jitter (generalmente picosegundos), debido al ruido térmico.Usted siempre debe medir la frecuencia de un reloj por un promedio de muchos ciclos.

 
nand_gates escribió:

Aquí va el código Verilog!
Código:

clk_div módulo (clk_50mhz, rst_n, clk_60hz);

clk_50mhz de entrada, rst_n;

salida clk_60hz;

reg clk_60hz;reg [47:0] en mostrador;siempre @ (clk_50mhz posedge o rst_n negedge) comienzan

if (! rst_n) comienzan

contador <= 48'h00000;

clk_60hz <= 1'b0;

end else begin

if (contador == 48'h65B9A) comienzan

contador <= 48'h00000;

clk_60hz <= ~ clk_60hz;

end else begin

contador <= contador 1'b1;

final

end / / else:! if (! rst_n)

end / / siempre @ (clk_50mhz posedge o rst_n negedge)

endmodule / / clk_div
 
de montaña,

1.Sin la declaración de reg, la señal de salida que por defecto a un alambre en lugar de un registro.

Se pueden combinar las dos declaraciones: clk_60hz reg salida;2.N, 48 bits es un exceso.La parte superior 29 bits son siempre cero.

Por cierto, este módulo no genera 60 Hz.Se genera aproximadamente 59.999952 Hz.

 
siempre @ (clk_50mhz posedge o rst_n negedge) comienzan
if (! rst_n) comienzan

este diseño está bien, es sólo un RESET asíncrono
, No un Filp borde doble fracaso.
es una demanda por CPLD / FPGA.

 
Can any1 explicar ABT Reloj doblador y cómo implementarlo ?....

 
kumar_eee escribió:

Can any1 explicar ABT Reloj doblador y cómo implementarlo ?....
 

Welcome to EDABoard.com

Sponsor

Back
Top