Código Verilog para divisor de frecuencia
On febrero 17, 2021 by admin¿Me pueden ayudar a crear un código Verilog para circuito divisor de frecuencia que pueda generar 50Hz señal de reloj de 50MHz señal usando Contador síncrono de 16 bits. Intenté hacerlo, ¡pero no funcionó!
module divier_16 (clk_in, clk_out); input clk_in; wire w; wire [0:15]temp; output clk_out; count_16 c1 (clk_in, w); count_16 c2 (w, temp); assign clk_out= temp[6];
Comentarios
- Usando ¿16 bits de qué?
- ¿Y qué has probado? ¿Podrías publicar tu código?
- Contador síncrono de 16 bits
- ¿Puedes usar dos de estos?
- Bien. Luego, primero divida por 1000, luego divida por otros 1000 ..
Respuesta
Desafortunadamente, 16 bits no son suficientes para convertir una señal de 50 MHz en una señal de 50 Hz. Esto se debe a que necesita dividir el reloj entre 1 millón. $$ 2 ^ {16} = 65536 $$ Por lo tanto, no es suficiente. A un contador con al menos 20 bits sería suficiente porque: $$ 2 ^ {20} = 1048576 $$
Para convertir la señal, simplemente cuenta hasta 1 millón de ciclos de reloj y luego cambia el estado de la señal de salida .
ejemplo:
always @(posedge clk_in) begin count_20 <= count_20 + 1; if(count_20 == 1000000) begin count<=0; clk_out <= !clk_out; end end
Editar: resulta que ^^ daría como resultado una señal de 25Hz, por lo que solo necesita contar hasta 500000, lo que necesita 19 bits. La pregunta entonces es dónde ese vigésimo bit proviene de ver que es necesario dividirlo por 1 millón. Bueno, el bit clk_out sirve como ese vigésimo bit.
Comentarios
- otra solución es usar varios de esos contadores de 16 bits. necesitaría al menos 16 de esos (16 * 65536 = 2 ² ⁰ = 1048576)
- Es posible que haya cometido un error, creo que mi solución resultaría en 25Hz?
- solo necesitaría dos, eso le daría 32 bits
- @Makoto sí, necesita contar hasta 500_000, y en segundo lugar, lo más probable es que haya una advertencia sobre usando un tipo de asignación diferente en la construcción siempre, creo que quiso decir
clk_out <= !clk_out
; - sí, lo cambiará
Deja una respuesta