EDA数字时钟

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1EDA技术及应用课程设计说明书2013届电子信息工程专业1313081班级题目数字时钟设计学号131308139姓名张指导教师王大力二О一五年六月二十五日2一、数字时钟基本原理(标题用黑体三号)一个完整的时钟应有三部分组成:秒脉冲发生器、计数显示部分和时钟调整部分。一个时钟的精确与否主要取决于秒脉冲的精度。为了保证及时准确我们对系统时钟48MHZ进行了48000000分频,从而得到1Hz的秒脉冲。定义2个键,分别完成了暂停、清零的基本功能。二、秒表的硬件设计3元器件表:序号名称参数个数1电阻1k142电阻10k103电阻50Ω14电阻200Ω85电阻100Ω6数码管——27钟振——18独石电容——69电解电容——1Input/GCLKRn1Input/GCLK2/OE22VCC3I/O4I/O5I/O6TDI7I/O8I/O9GND10I/O11I/O12TMS13I/O14VCC15I/O16I/O17I/O18I/O19I/O20I/O21GND22VCC23I/O24I/O25I/O26I/O27I/O28I/O29GND30I/O31TCK32I/O33I/O34VCC35I/O36I/O37TDO38I/O39I/O40I/O41GND42Input/GCLK143Input/OE144U1EPM7064VCC5VVCC5VVCC5VGNDGNDGNDGNDCOM0COM1COM2COM3COM4COM5COM6COM7LED_ALED_BLED_CLED_DLED_ELED_FLED_GLED_DPVCC5VSYS_CLKSDASCLOSRINGLED0LED1LED2LED3SW0SW1SW2SW3TDITMSTCKTDO410按键——411三极管——912发光二极管(红)——313发光二极管(红)——314电路板——115双排插头——116电源接插线——1三、数字时钟Verilog实现moduleclock(clk,key,dig,seg);//模块名clockinputclk;//输入时钟input[1:0]key;//输入按键output[7:0]dig;//数码管选择输出引脚output[7:0]seg;//数码管段输出引脚reg[7:0]seg_r;//定义数码管输出寄存器reg[7:0]dig_r;//定义数码管选择输出寄存器reg[3:0]disp_dat;//定义显示数据寄存器reg[24:0]count;//定义计数寄存器reg[23:0]hour;//定义现在时刻寄存器5regsec,keyen;//定义标志位reg[1:0]dout1,dout2,dout3;//寄存器wire[1:0]key_done;//按键消抖输出assigndig=dig_r;//输出数码管选择assignseg=seg_r;//输出数码管译码结果//秒信号产生部分always@(posedgeclk)//定义clock上升沿触发begincount=count+1'b1;if(count==25'd12000000)//0.25S到了吗?begincount=25'd0;//计数器清零sec=~sec;//置位秒标志endend//按键消抖处理部分assignkey_done=(dout1|dout2|dout3);//按键消抖输出always@(posedgecount[17])begindout1=key;dout2=dout1;dout3=dout2;endalways@(negedgekey_done[0])6beginkeyen=~keyen;//将琴键开关转换为乒乓开关end//数码管动态扫描显示部分always@(posedgeclk)//count[17:15]大约1ms改变一次begincase(count[17:15])//选择扫描显示数据3'd0:disp_dat=hour[3:0];//秒个位3'd1:disp_dat=hour[7:4];//秒十位3'd2:disp_dat=4'ha;//显示-3'd3:disp_dat=hour[11:8];//分个位3'd4:disp_dat=hour[15:12];//分十位3'd5:disp_dat=4'ha;//显示-3'd6:disp_dat=hour[19:16];//时个位3'd7:disp_dat=hour[23:20];//时十位endcasecase(count[17:15])//选择数码管显示位3'd0:dig_r=8'b11111110;//选择第一个数码管显示3'd1:dig_r=8'b11111101;//选择第二个数码管显示3'd2:dig_r=8'b11111011;//选择第三个数码管显示3'd3:dig_r=8'b11110111;//选择第四个数码管显7示3'd4:dig_r=8'b11101111;//选择第五个数码管显示3'd5:dig_r=8'b11011111;//选择第六个数码管显示3'd6:dig_r=8'b10111111;//选择第七个数码管显示3'd7:dig_r=8'b01111111;//选择第八个数码管显示endcaseendalways@(posedgeclk)begincase(disp_dat)4'h0:seg_r=8'hc0;//显示04'h1:seg_r=8'hf9;//显示14'h2:seg_r=8'ha4;//显示24'h3:seg_r=8'hb0;//显示34'h4:seg_r=8'h99;//显示44'h5:seg_r=8'h92;//显示54'h6:seg_r=8'h82;//显示64'h7:seg_r=8'hf8;//显示74'h8:seg_r=8'h80;//显示84'h9:seg_r=8'h90;//显示94'ha:seg_r=8'hbf;//显示-default:seg_r=8'hff;//不显示endcase8if((count[17:15]==3'd2)&sec)seg_r=8'hff;end//计时处理部分always@(negedgesecornegedgekey_done[1])//计时处理beginif(!key_done[1])//是清零键吗?beginhour=24'h0;//是,则清零endelseif(!keyen)beginhour[3:0]=hour[3:0]+1'b1;//秒加1if(hour[3:0]==4'ha)beginhour[3:0]=4'h0;hour[7:4]=hour[7:4]+1'b1;//秒的十位加一if(hour[7:4]==4'h6)beginhour[7:4]=4'h0;hour[11:8]=hour[11:8]+1'b1;//分个位加一if(hour[11:8]==4'ha)beginhour[11:8]=4'h0;hour[15:12]=hour[15:12]+1'b1;//分十位加一if(hour[15:12]==4'h6)beginhour[15:12]=4'h0;hour[19:16]=hour[19:16]+1'b1;//时个位加一if(hour[19:16]==4'ha)beginhour[19:16]=4'h0;9hour[23:20]=hour[23:20]+1'b1;//时十位加一endif(hour[23:16]==8'h24)hour[23:16]=8'h0;endendendendendendendmodule管脚分配:信号引脚1C61C12EDASeg[0]169169169Seg[1]170170170Seg[2]167167167Seg[3]168168168Seg[4]165165165Seg[5]166166166Seg[6]163163163Seg[7]164164164dig[0]160160160dig[1]159159159dig[2]162162162dig[3]161161161dig[4]20423621510dig[5]199237216dig[6]198238213dig[7]205239214key[0]121121121key[1]122122122clock282828四、课程设计总结通过这次设计,进一步加深了对EDA的了解,让我学会了各个并行进程间相互通信协同工作的过程,进一步了解了VerilogHDL语言的结构和编程方法,并通过硬件实验和对FPGA的程序下载初步掌握了电子EDA的设计方法,为以后的学习打下基础。特别是每当每一个子模块编写测试成功时,心里特别开心程序仿真是理想环境下的结果,容易实现,而移植到硬件系统上会出现实际的问题,比如接线的不稳定等,需要耐心排查故障,找出解决方案。虽然在设计过程中遇到一些困难但解决这些问题的过程无疑是对自己自身专业素质的一种提高。总的来说,这次设计的数字时钟还是比较成功的,有点小小的成就感,终于觉得所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识而且锻炼了能力,使自己对以后的路有了更加清楚的认识,同时对未来有了更多的信心。感谢老师在设计过程中对我们出现的问题进行详细而具体的解答,以及对我们设计的各种启发,同时也感谢在设计时同学们11给予的帮助。五、指导教师评语成绩指导教师签名

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功