ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Uso De Display Y PS2


Enviado por   •  21 de Mayo de 2013  •  4.510 Palabras (19 Páginas)  •  435 Visitas

Página 1 de 19

Laboratorio 2

“Uso de Display e Interfaz PS/2”

IPD432 Sistemas Digitales Avanzados

Diego Hinojosa C. 2821019-1

Heinrich Reinking E. 2821070-1

Diseño de Módulos

Modulo Principal:

module Main(

input clk, kd, kc, //reloj 50 Mhz, ingreso de dato y reloj del teclado

input [7:0] sw, //switch's

input pul0, pul2, pul3, //pulsadores

output [7:0] Led, //Led's

output [3:0] dctl, //control de display

output [7:0] ssg //control de segmentos

);

wire [7:0] value; //valor ASCii de la tecla

wire kbs; //señal de palabra leida de tecla

wire clkd,clk0,clk1,clk2,clk3,clkf; //señales de reloj

wire [15:0] k, x, m, cont; //k=valor numerico de tecla; x y m= valores a asignar; //cont = cuenta parcial

wire [15:0] num_final; //numera que será desplegado por display

wire rst;

assign bx = pul3; //asocia el 4° pulsador a bx

assign bm = pul2; //asocia el 3° pulsador a bm

assign rst = pul0; //asocia el 1° pulsador a reset

assign clkf = (sw[7]==1)? 0 : //Aplicación de lógica de ALU para realizar

({sw[6],sw[5]}==0)? clk0 : //cambio de velocidades de conteo; la primera

({sw[6],sw[5]}==1)? clk1 : //velocidad es un hz, la segunda 2, la tercera

({sw[6],sw[5]}==2)? clk2 : //5 y la cuarta 10 hz

clk3;

assign Led[0] = pul0; //asociación del 1° led al primer pulsador

assign Led[1] = pul2; //asociación del 2° led al primer pulsador

assign Led[2] = pul3; //asociación del 3° led al primer pulsador

assign Led[7] = clkf; //asociación del 8° led al primer pulsador

clkdspl clk1Khz (clk, clkd); //reloj para el display (1Khz)

clkv0 clk1hz (clk, clk0); //reloj 1, corre a 1 hz

clkv1 clk2hz (clk, clk1); //reloj 2, corre a 2 hz

clkv2 clk5hz (clk, clk2); //reloj 3, corre a 5 hz

clkv3 clk10z (clk, clk3); //reloj 4, corre a 10 hz

kbd driver (rst, clk, kd, kc, kbs, value); //controlador de teclado

procesador brain (kbs, rst, sw[0], sw[1], sw[2], value, k); //procesa el valor ASCii al valor //numerico

counter count (clkf, rst, bx, bm, sw[4], sw[3], k, cont, x, m); //contador de x a x+m

dspl_man ctrl_dspl (clk, sw[0], sw[1], sw[2], k, cont, x, m, //Módulo de control de

Led[3], Led[4], Led[5], Led[6], num_final); //display, controla

//lo que se mostrará por el //display

display dspl (clkd, num_final, ssg, dctl); //controlador de display con conversor

//hexadecimal a BCD 7 segmentos

Endmodule

Módulo clkdspl:

module clkdspl( input clk, output reg clk1Khz );

reg [15:0] count;

always@(posedge clk)begin //De acuerdo a la velocidad del reloj

count <= count + 1; //(50 Mhz), es necesario que cuente 25000

if(count == 25000)begin //cantos de subida para generar un reloj

clk1Khz <= clk1Khz + 1; //de 1 Khz

count <= 0;

end

end

endmodule

Módulo clk1hz:

module clkv0( input clk, output reg clk0 );

reg [24:0] count;

always@(posedge clk)begin

count <= count +1; //De acuerdo a la velocidad del reloj

if(count == 25000000)begin //(50 Mhz), es necesario que cuente clk0 <= clk0 +1; //25000000 cantos de subida para count <= 0; //generar un de 1 hz reloj

end

end

endmodule

Módulo clk2hz:

module clkv1( input clk, output reg clk1 );

reg [23:0] count;

always@(posedge clk)begin

count <= count +1; //De acuerdo a la velocidad del reloj

if(count == 12500000)begin //(50 Mhz), es necesario que cuente clk1 <= clk1

...

Descargar como (para miembros actualizados)  txt (19.1 Kb)  
Leer 18 páginas más »
Disponible sólo en Clubensayos.com