La Red de Conocimientos Pedagógicos - Conocimientos educativos - Tesis de Graduación del Calendario Perpetuo

Tesis de Graduación del Calendario Perpetuo

/*

Este experimento implementa un reloj digital que puede mostrar horas, minutos y segundos.

*/

Reloj del módulo (clk, rst, dataout, en);

Entrada clk, rst

salida[7: 0]salida de datos;

reg[7:0]salida de datos;

salida[7:0]en;

reg[7:0]es ;

reg[3:0]salida de datos _ buf[7:0];

reg[25:0]CNT;

reg[15: 0]CNT_scan;

reg[3:0]data out_code;

wire[5:0]cal; //Lleva todos los niveles de banderas

Asignar cal[0]=(dataout_buf[0]==9)? 1:0;

¿Asignar cal[1]=(cal[0]&&dataout_buf[1]==5)? 1:0;

¿Asignar cal[2]=(cal[1]&&dataout_buf[3]==9)? 1:0;

¿Asignar cal[3]=(cal[2]&&dataout_buf[4]==5)? 1:0;

¿Asignar cal[4]=(cal[3]&&dataout_buf[6]==9)? 1:0;

¿Asignar cal[5]=(cal[3]&&data out_buf[6]===2&&dataout_buf[7]==1)? 1:0;

siempre@(posedge clk o negedge rst)

iniciar

if (!rst) iniciar

cnt _ escanear & lt=0;

en & lt= 8 ' b 1111 _ 1110

Fin

En caso contrario, iniciar

cnt _; scan & lt= CNT _ scan+1;

if(CNT _ scan = = 16 'hffff)begin

es[7:1]& lt;= es[6: 0];

es[0]<= es[7];

Fin

Fin

Fin

Siempre@(*)

Inicio

Caso (inglés)

8 ' b 1111 _ 1110:

salida de datos _ código = salida de datos _ buf[0];

8 ' b 1111 _ 1101:

salida de datos _ código = salida de datos _ buf[1];

8 ' b 1111 _ 1011:

salida de datos _ código = salida de datos _ buf[2];

8 ' b 1111 _ 0111:

salida de datos _ código = salida de datos _ buf[3];

8 ' b 1110 _ 1111:

salida de datos _ código = salida de datos _ buf[4];

8 ' b 1101 _ 1111:

salida de datos _ código = salida de datos _ buf[5];

8 ' b 1011 _ 1111:

salida de datos _ código = salida de datos _ buf[6];

8 ' b 0111 _ 1111:

datos

out_code = datos out_buf[7];

Valor predeterminado:

datos out_code = datos out_buf[0];

Fin de caso

Fin

siempre@(posedge clk o negedge rst)

Inicio

if (!rst)

cnt & lt=0;

si no(cnt!=40000000)

cnt & lt= CNT+1;

Otro

cnt & lt=0 ;

Fin

Siempre @ (colocar clic o negar borde primero)//Implementar las funciones de conteo y acarreo.

Iniciar

Si (!rst) inicio

salida de datos _ buf[0]<=0;

salida de datos _ buf[1]<=0;

salida de datos _ buf[2]<=15;

salida de datos _ buf[3]<=0 ;

salida de datos _ buf[4]& lt;=0;

salida de datos _ buf[5]& lt;=15;

salida de datos _ buf[6 ]<=2;

salida de datos _ buf[7]<=1;

Fin

En caso contrario, inicio

p>

if(cnt==26'd40000000) start

if (!cal[0])

salida de datos _ buf[0]<= salida de datos _ buf[0] +1;

De lo contrario, inicie

datos fuera _ buf[0]<=0;

if (!cal[1 ])

data out_buf[1]<= data out_buf[1]+1;

De lo contrario, inicie

data out_buf [1]<=0;

if(!kar[2])

datos out_buf[3]<= datos out_buf[3]+ 1;

De lo contrario, iniciar

datos salida _ buf[3]<=0;

if (! Carl[3])

salida de datos _ buf[4]& lt; ]+1;

De lo contrario, inicie

datos fuera _ buf[4]& lt; =0;

if (!kar[4])

salida de datos _ buf[6]< = salida de datos _ buf[6]+1;

else start

salida de datos _ buf[6]< =0;

if (!kal[5])

salida de datos _ buf[7]<= salida de datos_buf[7]+1;

Otros

datos out_buf[7]<=0;

Fin

Fin

Fin

Fin

Fin

Fin

Fin

Fin

Siempre@(código de salida de datos)

Inicio

Caso (código de salida de datos)

4'b0000:

salida de datos = 8'b 1100_0000;

4'b0001:

salida de datos = 8'b 1111_1001 ;

4'b0010:

salida de datos = 8 ' b 1010 _ 0100;

4'b0011:

salida de datos = 8' b 1011_0000;

4'b0100:

salida de datos = 8' b 1001_1001;

4'b0101:

salida de datos = 8' b 1001_0010;

4'b0110:

salida de datos = 8' b 1000_0010 ;

4' b0111:

datos

salida = 8 ' b 1111 _ 1000;

4'b1000:

salida de datos = 8 ' b 1000 _ 0000

Fin de caso

Fin

Fin del módulo

Puedes cambiarlo nuevamente. No debería ser difícil. ¡Buena suerte!