100% encontró este documento útil (2 votos)
460 vistas11 páginas

Codigos Ejemplos Verilog

Este documento presenta varios ejemplos de código Verilog para controlar LEDs, incluyendo controlar el brillo de un LED usando PWM, hacer que un LED parpadee, mostrar números en un display de 7 segmentos usando contadores, y generar señales para un monitor VGA. También explica brevemente los conceptos de sincronización horizontal y vertical para la generación de señales de video.

Cargado por

Jorgito Xd
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (2 votos)
460 vistas11 páginas

Codigos Ejemplos Verilog

Este documento presenta varios ejemplos de código Verilog para controlar LEDs, incluyendo controlar el brillo de un LED usando PWM, hacer que un LED parpadee, mostrar números en un display de 7 segmentos usando contadores, y generar señales para un monitor VGA. También explica brevemente los conceptos de sincronización horizontal y vertical para la generación de señales de video.

Cargado por

Jorgito Xd
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CODIGOS EJEMPLOS VERILOG

ING. YESID SANTAFE


BRILLO DE UN LED
module LED(clk, LED1);
input clk;
output LED1;

reg [23:0] cnt;


always @(posedge clk) cnt<=cnt+1;
wire [3:0] PWM_input = cnt[23] ? cnt[22:19] : ~cnt[22:19];
reg [4:0] PWM;

always @(posedge clk) PWM <= PWM[3:0]+PWM_input;

assign LED1 = PWM[4];

endmodule
Variando la intensidad del LED
module LEDblink(clk, LED);
input clk;
// reloj de tpicamente de 10 MHz a 50 M
output LED;
/ / Crear un contador binario
reg [32:0] cnt;

always @(posedge clk) cnt<=cnt+1;


assign LED = cnt[22];

/ / el LED parpadea en unos pocos Hz (cambiar el ndice de poco para


cambiar la velocidad intermitente)

endmodule
module LED_PWM(clk, PWM_input, LED);
input clk;
input [3:0] PWM_input; / / 16 niveles de intensidad

output LED; reg [4:0] PWM;


always @(posedge clk) PWM <= PWM[3:0]+PWM_input;
assign LED = PWM[4];

endmodule

Para el control de la intensidad ms LED, un PWM es una solucin ideal.


Contador decimal
module LED_7seg(clk, segA, segB, segC, segD, segE, segF, segG, segDP);
input clk;
output segA, segB, segC, segD, segE, segF, segG, segDP;
reg [23:0] cnt;
always @(posedge clk) cnt<=cnt+24'h1;
wire cntovf = &cnt; // BCD is a counter that counts from 0 to 9
reg [3:0] BCD;
always @(posedge clk) if(cntovf) BCD <= (BCD==4'h9 ? 4'h0 : BCD+4'h1);
reg [7:0] SevenSeg;
always @(*) case(BCD) 4'h0: SevenSeg = 8'b11111100;
4'h1: SevenSeg = 8'b01100000;
4'h2: SevenSeg = 8'b11011010;
4'h3: SevenSeg = 8'b11110010;
4'h4: SevenSeg = 8'b01100110;
4'h5: SevenSeg = 8'b10110110;
4'h6: SevenSeg = 8'b10111110;
4'h7: SevenSeg = 8'b11100000;
4'h8: SevenSeg = 8'b11111110;
4'h9: SevenSeg = 8'b11110110;
default: SevenSeg = 8'b00000000;
Endcase
assign {segA, segB, segC, segD, segE, segF, segG, segDP} = SevenSeg;
endmodule
Un monitor VGA requiere 5 seales para
mostrar una imagen:
R, G and B (red, green and blue signals).
R, G y B (seales rojo, verde y azul).

HS y VS (horizontal and vertical


synchronization).

SA y VS (sincronizacin horizontal y
vertical).
El R, G y B son las seales analgicas, mientras
que SA y VS son seales digitales.
Pines 13 y 14 del conector VGA (SA y VS) son seales
digitales, por lo que se puede conducir directamente a
partir de dos pines CPLD (o por medio de resistencias
de los valores bajos, como 10 o 20).

Los pines 1, 2 y 3 (R, G y B) son 75 seales analgicas


con valores nominales de 0.7V. Con salidas 3.3V FPGA,
utilizan tres 270 resistencias en serie.
Las resistencias forman divisores de tensin con las
resistencias de 75 en las entradas del monitor para
que sea 3.3V 3.3 * 75 / (270 +75) = 0.72V, muy cerca de
0.7V.

La excitacin de estos tres pines con diferentes


combinaciones de 0 y 1, nos da hasta 8 colores.

tierra son los pines 5, 6, 7, 8 y 10.


Frecuencia del generador

Un monitor muestra siempre una imagen


Eso es rgida, no se puede cambiar eso.
lnea por lnea, de arriba a abajo. Cada lnea
se dibuja de izquierda a derecha.

Sin embargo, se especifica cuando el dibujo


empieza por el envo de pulsos cortos en el SA
y VS a intervalos fijos. SA, hace una nueva lnea
para empezar a dibujar, mientras que VS dice
que el fondo se ha llegado (hace que el
monitor se remontan hasta la lnea superior).

Para el estndar de seal de Frecuencia vertical Frecuencia


vdeo VGA de 640x480, las (VS) Horizontal (SA)
frecuencias de los pulsos 60 Hz (= 60 pulsos 31,5 kHz (= 31.500
deben ser: por segundo) pulsos por segundo
CODIGO DE EJEMPLO

CODIGO VERILOG

CODIGO VHDL

CODIGOS EJEMPLOS VERILOG
ING. YESID SANTAFE
BRILLO DE UN LED
module LED(clk, LED1);
input clk;
output LED1;
reg [23:0] cnt;
always @(posedge clk) cnt<=cnt+1;
wire [3:0]
Variando la intensidad del LED 
module LEDblink(clk, LED); 
input clk;
// reloj de típicamente de 10 MHz a 50 M
output LED;
module LED_PWM(clk, PWM_input, LED);
input clk; 
input [3:0] PWM_input; / / 16 niveles de intensidad
output LED; reg [4:0] PW
Contador decimal
module LED_7seg(clk, segA, segB, segC, segD, segE, segF, segG, segDP);
input clk;
output segA, segB, segC, segD, segE, segF,
Un monitor VGA requiere 5 señales para
mostrar una imagen:
R, G and B (red, green and blue signals).
R, G y B (señales rojo,
Pines 13 y 14 del conector VGA (SA y VS) son señales
digitales, por lo que se puede conducir directamente a
partir de dos pin
Frecuencia del generador 
Un monitor muestra siempre una imagen 
línea por línea, de arriba a abajo. Cada línea 
se dibuja de

También podría gustarte