EDA课程报告(可变速时钟)

所需积分/C币:22 2018-05-29 22:57:47 322KB PDF
28
收藏 收藏
举报

运用FPGA设计三种速度的时钟,用按键控制速度可变速数字 时钟,首先要实现数码管的显示功能,即数码管的段选和位选,还有译码;接下 来因为是变速时钟,需要三种不同的时钟信号,同时数码管的扫描显示需要一个 时钟信号,还有按键信号的取样也需要一个时钟信号,所以总共需要 5 种不同的 时钟信号,分频五次;又因为是 24 小时制,所以当秒为 59 时,分加 1,同时秒 置为 0;当秒为 59 ,分为 59 时,小时加 1,同时秒,分置为 0;当秒为 59 , 分为 59,小时为 23 时,秒,分,时都置为 0;最后因为是变速时钟,所以需要 一个状态机来转换时钟状态,有三种状态,对应三种不同的速度。将以上要求完 成后,当按下开发板上的按键时,会切换不同的速度,实现三种速度的变速数字时钟,达成课程考核要求。
EDA课程设计报告 频率过慢,则会有断断续续的显示;如果显示的频率加快,则人眼就分辨不出这 和视觉残余。一般来说人眼分辨不出500-1000HZ频率的变化,所以我选择的是 1000HZ的扫措信号。程序如下: case(count) 3 do: dig r=8 b01111lll /选择第一个数码管显示 dl:dig r=8 b1011111l //选择第二个数码管显示 3d2:digr=8b110111; //选择第三个数码管显小 3d3:digr=8b11101111 //选择第四个数码管显小 d4:digr-8b11110111; //选择第五个数码管显示 3d5:digr=8b11111011; /选择第六个数码管显示 3d6:digr=8b1111101; /选择第七个数码管显示 3d7:digr=8b1111110; //选择第八个数码管显示 DG7 b c d c:g dp v33 ACLSV VOw 甲1Dx VCC33V vav i(C33\ ( 350 图3数码管电路 3.2数码管段选设计 实验廾发板上的数码管为共阳极数码管,由8个发光二极管构成,通过不同 的组合可川来显示数字09、字符AF,符号“-”及小数点。同时,它的8 个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接髙电平( EDA课程设计报告 般接电源),其它管脚接段驱动电路输岀端。当某段驱动电路的输岀端为低电平 时,则该端所连接的字段导通并点亮。 七段译码: case( disp dat)/七段译码 4 h0:seg r=8 hc0 //显示 4h1:segr=8’hf9 //显示1 1 h2: seg r=8 ha1 //显小2 1h3: seg= hb0 //显小3 4 h4:scg r-8h99 //显示4 4 h5: seg r=8 h92 //显示5 4 h6: seg r=8h82 //显示6 4h7: seg r=8 hf8; //显示7 4 h8: seg r=8h80 //显示8 4 h9: seg r=8h90 //显示9 4 ha: seg r=8 b1O11ll11 endcase 图1数码管引脚图 3.3速度切换设计 因为要使用三科速度,所以采用状态机进行设置 if(button==2 b00) begin if(counter==30 d50000000) begin counter(=0: sec<=sec+l; end end EDA课程设计报告 else if(button==2 b01 legin if(counter==30'd5000000) begin counter(=0; sec<=sec-1: end end else begin ir(counter==30'd500000) begin counter =0; sec=sec+l; endend 3.4按键消抖设计 出现连续4个1才认为是1,出现连续4个0才认为是0。 always @(posedge clk 5kHz) legin key dl3:1」<=keyd2:0」 key d[o]=key f (key d==4 b1111) key o< =1 b0 else if (key d==4b0000 key o-1 bl EDA课程设计报告 4.仿真结果 41分频仿真结果 11111 19300000ns 19400000ns 1950000ns 图5分频仿真图 图中,第一条为时钟波形,第二条为扫描波形,第三条为消抖波形。在这里, 因为计数的三种时钟在程序里没有单独写出来,而是直接赋给秒,所以这里只能 仿真扫描信号和消抖信号的波形图。由图可知消抖信号的一个周期为 19400001930000-100000ns,换算成频率的话,也就是1khz,而由图可知扫描 信号周期为消抖信号的5倍,所以消抖信号的频率为扫描信号的5倍,即5khz, 符合程序所需,仿真成功 4.2进制仿真结果 图6进制仿真图 EDA课程设计报告 图中,第一条为小时波形,第二条为分钟波形,第三条为秒波形,可知当秒 计到59时,分会加一。因为波形有限,无法将所以进制转换纳入其中 4.3数码管位选,段选仿真结果 山1111 加n五 0:11 图7数码管段选,位选图 图中,第一·条波形为品振吋钟,第二天波形为位选波形,第三条为段选波 形,第四条为扫描信号的波形。可知一个扫描信号周期后,位选波形就会跳到下 位,符合所需状态。 5.出现的问题及解决办法 1.按键按下时不能马上改变速度。 解决方法:减小让数器的位长。 2.刚廾始时,数码管是一个接一个亮的。 解决方法:减小扫描频率 EDA课程设计报告 6.附录 module shizhongover(clk, rst, seg, dig, key) /*输入输出定义 input clk, rst input key output [7: 0]seg output [7: odig; /*定义寄存器型变量* wire[7: 0] seg wire[7: 0] dig reg[25: 0] counter reg[5: 0] sec reg[5: 0] min; eg[5: 0] hour reg[7: 0] seg r /定义数码管输出寄存器 reg 1g I /定义数码管选择输出寄存器 reg[3: 0 disp dat //定义显示数据寄存器 reg[2: 0]count //定义计数寄存器 reg[3: 0] a, b, c, d,e,f reg key 0; /按键输出 reg [3: 0]key d //按键输入 reg [1: 0]button=2'b0 reg[31:0cnt=32'd0; reg [31: 0 cnt1=32' d0 EDA课程设计报告 reg clk 5kHz assign dig=dig r /输出数码管选择 assign seg seg r reg clk 1kHz al ways @(posedge clk if(cnt1>=25000 begin cnt1 <=1 b0 lk 1kHz- clk lkh else cnt1 cnt1 +1 b1 l ways @(posedge clk 1kHz) //定义上升沿触发进程 e8 count<= count+1’b1 end /*时钟显示* I ways o (posedge clk 1kHz) legin a=hour/10 b=hour%10 c=min/10 d=min%10 e=sec/10 EDA课程设计报告 f=sec%10 case(count) /选择扫描显小数据 3 d0: disp dat=a; /第一个数码管 3 dl: disp dat = b //第二个数码管 3 d2: disp dat= 4 ha //第三个数码管 3 d3: disp dat =c /第四个数码管 3 d4: disp dat =d //第五个数码管 3 d5: disp dat 4 ha; //第六个数码管 3 d6: disp dat //第七个数码管 3 d7: disp dat=f: //第八个数码管 endcase case(count) /选择数码管显示位 3 d0: dig r=8 b01111111 /选择第一个数码管显示 3d1:digr=8b1011111 /选择第二个数码管显示 3 d2: dig r=8b11011111 /选择第三个数码管显示 3d3:digr-83b11101111; //选择第四个数码管显示 3 d: dig r=8 b11110111 /选择第机个数码管显小 3 d5:dig r=8b11111011 /选择第六个数码管显示 16: dig r=8b11111101 /选择第七个数码管显示 3d7:digr=8’bl11110 /选择第八个数码管显示 endcase

...展开详情
试读 14P EDA课程报告(可变速时钟)
立即下载 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
EDA课程报告(可变速时钟) 22积分/C币 立即下载
1/14
EDA课程报告(可变速时钟)第1页
EDA课程报告(可变速时钟)第2页
EDA课程报告(可变速时钟)第3页

试读结束, 可继续读2页

22积分/C币 立即下载