资源描述:
《基于BASYS2的简易数字钟.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/***********************************verilog*************************************/moduleclock_final(clk,clr,switch,ad,adj,o_seg,a);inputclk,clr,switch,ad;input[3:0]adj;//output[2:0]led;//led灯output[6:0]o_seg;//7段数码管output[3:0]a;//扫描输出reg[6:0]segs;//数码管寄存器reg[3:0]a;
2、reg[15:0]temp;//显示过程的中间变量wire[23:0]cnt;//走时模式和校时模式临时变量wireen0,enp1,enp2,enp3,enp4,enp5,cp1hz,cp,out_500hz;//switch-N3转换信号分两个屏一个是小时/分钟,一个是分钟/秒//clr-E2清零信号//adj[3]控制小时的十位设置//adj[2]控制小时的个位设置//adj[1]控制分钟的十位设置//adj[0]控制分钟的个位设置initialbegina=4'b1110;end//初始化assigncp=cp1h
3、z,//判断ad是否等于1,如果等于,cp就输出cp10hz否则就输出cp1hz,en0=(~ad)
4、(switch&adj[0]),enp1=~ad?(cnt[3:0]==4'd9):(adj[1]&switch),enp2=~ad?(cnt[7:4]==4'd5)&(cnt[3:0]==4'd9):(adj[0]&switch==0),enp3=~ad?(enp2&(cnt[11:8]==4'd9)):(adj[1]&switch==0),enp4=~ad?(enp3&(cnt[15:12]==4'd5)):(adj[
5、2]&switch==0),enp5=~ad?(enp4&((cnt[19:16]==4'd9)
6、(cnt[23:20]==4'b0010&cnt[19:16]==4'd3))):(adj[3]&switch==0),o_seg=segs;in50MHz_out1Hzu0(clk,cp1hz);//输出频率1HZin50MHz_out_8MHzu7(clk,out_500hz);//输出500HZcounter10u1(en0,clr,cp,cnt[3:0]);//second个位计数counter6u2(enp1,clr
7、,cp,cnt[7:4]);//second十位计数counter10u3(enp2,clr,cp,cnt[11:8]);//minutes个位计数counter6u4(enp3,clr,cp,cnt[15:12]);//minutes十位计数counter10_hu5(enp4,clr,cp,cnt[19:16],cnt[23:20]);//hours个位计数counter3u6(enp5,clr,cp,cnt[23:20]);//hours十位计数//////always@(ad)begin//显示模式选择//if((
8、~ad))begintemp[15:0]<=cnt1[15:0];temp[31:16]<=cnt1[23:8];end//elsebegintemp[15:0]<=cnt;temp[31:16]<=cnt[23:8];end//endalways@(posedgeclk)beginif(switch==1'b0)temp<=cnt[23:8];elseif(switch==1'b1)temp<=cnt[15:0];endalways@(posedgeout_500hz)beginif(a==4'b1110)a<=4'b1
9、101;//M13elseif(a==4'b1101)a<=4'b1011;//J12elseif(a==4'b1011)a<=4'b0111;//F12elsea<=4'b1110;//K14endalways@(posedgeclk)//数码管显示译码if(switch==1'b0)beginif(a==4'b1110)//K14begincase(temp[3:0])4'd0:segs<=7'b1000000;//04'd1:segs<=7'b1111001;//14'd2:segs<=7'b0100100;4'd3
10、:segs<=7'b0110000;4'd4:segs<=7'b0011001;4'd5:segs<=7'b0010010;4'd6:segs<=7'b0000010;4'd7:segs<=7'b1111000;4'd8:segs<=7'b0000000;4'd9:segs<=7'b0010000;//