资源描述:
《EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、EDA课程设计多功能数字钟设计程序清单数字系统设计与verilogHDL(第四版)王金明/*引脚锁定基于DE2一70,芯片为EP2C70F896,信号定义如下:Clk50m:50MHz时钟输,mode:模式选择0:计时模式1:设置闹钟模式mcheck:手动调整时间turn:手动调整时间,在时、分之间选择change:对选中的数据调整ledhourl,led_hour0,led_minul,led_minu0,led_secl,ledsec0;alert:闹钟输出ld_alert:是否设置了闹钟ld_hour,id_min,ld_sec:
2、在调整时,指示选中了时,分还是秒*/moduleclock(clk50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,led_minu0,led_sec1,led_sec0,alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec);inputclk50m;inputmode;//key0键inputturn;//keyl键inputchange;//key2键inputmreset;//switch0复位,低电平有效outputalert
3、;//gpioO->IOAOoutputld_alert;//ledgO-led19outputld_check;//ledgl-led22outputld_hour;//ledr3-led13outputld_min;//ledr9-led9outputld_sec;//ledr7-led7output[6:0]led_hour1;output[6:0]led_hour0;output[6:0]led_minu1;output[6:0]led_minu0;output[6:0]led_sec1;output[6:0]led_sec0;
4、reg[1:0]modestate;//00:计时模式10:闹钟模式;01:手动调整模式;11:非法模式wirenowmode;//记录当前模式,0:计时模式;1:设置闹钟模式wireischecking;//是否在手动调整时间assign{nowmode,ischecking}=modestate;always@(negedgemode)//两个按钮都是低电平有效begincase(modestate)2'b00:modestate<=2'b10;//设置闹钟模式优先2'b10:modestate<=2'b01;//手动调整模式2'b
5、01:modestate<=2'b00;default:modestate<=2'b00;endcaseendwirereset,clk_1hz;switch#(8)rmjitter(clk50m,mresetr,reset);clk50mtolgenlhz(clk50m,clk_1hz);//生成1Hz的时钟wire[2:0]selcode;//对turn信号在不同模式bitselseldecoder(nowmode,ischecking,turn,selcode,reset);wire[3:0]clocktime0,clocktim
6、el,clocktime2,clocktime3,clocktime4,clockthre5;//计时输出的时钟数值wireclockalarmon;//整点报时的闹钟输出wire[2:0]counterselcode;assigncounterselcode=(modestate==2'b01)?selcode:3'b000;counter_timeclock_time(clk_1hz,counterselcode,~change,clocktime5,clocktime4,clocktime3,clocktime2,clocktim
7、e1,clocktime0,clockalarmon,reset);wire[3:0]alarmtime0,alarmtime1,alarmtime2,alarmtime3;wirealarmon;alarm_timealarm_time(clk_1hz,nowmode,selcode[2:1],change,{clocktime5,clocktime4,clocktime3,clocktime2,clocktime1},{alarmtime3,alarmtime2,alarmtime1,alarmtime0},alarmon,rese
8、t);wirevoiceout;alarmalarmvoice(clk50m,{clockalarmon,alarmon},voiceout,raset);//显示输出部分assign{ld_hour,ld