Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Dismiss
Join GitHub today
GitHub is home to over 31 million developers
working together to host and review code,
manage projects, and build software together.
Sign up
Introducción
Los prescalers sirven para ralentizar las señales de reloj. Por la entrada entra una señal de
reloj de frecuencia f y por la salida se obtiene una de frecuencia menor. En este tutorial
haremos un prescaler de N bits para hacer parpadear un led a diferentes frecuencias
Para un prescaler de N bits, las fórmulas que relacionan las frecuencias y periodos de entrada
con los de salida son:
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 1/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
Internamente está constituido por un contador de 2 bits, cuyas salidas son d0 y d1. La de
mayor peso es la que se saca como señal de salida. Este contador se incrementa en cada
flanco de subida de clk, que tiene un periodo T. Si observamos las señales de salida de sus
dos bits (d0 y d1):
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 2/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 3/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
14 732.42 Hz 1.365 ms No
15 366.21 Hz 2.73 ms No
16 183.1 Hz 5.46 ms No
17 92.552 Hz 10.92 ms No
18 45.776 Hz 21.84 ms No
19 22.888 Hz 43.69 ms Si
20 11.444 Hz 87.38 ms Si
21 5.722 Hz 174.76 ms Si
22 2.861 Hz 349.52 ms Si
El ojo humano tiene una frecuencia de refresco de unos 25Hz. Esto significa que frecuencias
superiores no se aprecian. Si hacemos parpadear el led con una frecuencia superior, lo
apreciaremos como si siempre estuviese encendido (no lo veremos parpadear)
Al usar el prescarler con el led, a partir de 19 bits es cuando se puede apreciar el parpadeo.
Cuanto más bits, más lento parpadeará el led.
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 4/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
//-- prescaler.v
//-- clk_in: señal de reloj de entrada
//-- clk_out: Señal de reloj de salida, con menor frecuencia
module prescaler(input clk_in, output clk_out);
wire clk_in;
wire clk_out;
endmodule
Por defecto el prescaler es de 22 bits, por lo que la frecuencia de clk_out es de 2.9Hz aprox.
Sólo hay que dar otro valor a N para cambiar la frecuencia de salida
Síntesis en la FPGA
La señal de la placa iCEstick de 12 MHZ se introduce a clk_in a través del pin 21 de la fpga. La
salida clk_out se envía directamente al led D1 (pin 99), para que parpadee a su misma
frecuencia
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 5/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
$ make sint
Recurso ocupación
PIOs 2 / 96
PLBs 5 / 160
BRAMs 0 / 16
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 6/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
Simulación
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 7/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
//-- prescaler_tb.v
module prescaler_tb();
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 8/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
counter_check = counter_check + 1;
end
# 99 $display("FIN de la simulacion");
# 100 $finish;
end
endmodule
$ make sim
En esta simulación del prescaler de 2 bits vemos cómo efectivamente la señal de salida tiene
un periodo de 4 veces el de la señal de entrada.
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 9/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
parameter N = 2;
El resultado es:
Ejercicios propuestos
Modificar el prescaler para valores de N = 18, 19, 20 y 21. Sintetizarlos y descargarlos en
la iCEstick
Realizar la simulación para N = 4
Conclusiones
TODO
Pages 49
Inicio (EN)
Capítulos
0 You are leaving the privative sector (EN)
1 ¡Hola mundo! (EN) (RU)
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 10/11
24/2/2019 Capítulo 5: Prescaler de N bits · Obijuan/open-fpga-verilog-tutorial Wiki · GitHub
https://github.com/Obijuan/open-fpga-verilog-tutorial.wiki.git
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Cap%C3%ADtulo-5%3A-Prescaler-de-N-bits 11/11