您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > verilog篮球24秒
华中科技大学《电子线路设计、测试与实验》实验报告实验名称:篮球24秒计时器院(系):电子与信息工程专业班级:卓越1101姓名:汪加林学号:U201113167时间:2012.12.20地点:南一楼东303实验成绩:指导教师:汪小燕2011年12月20日一.实验目的1.学会将FPGA中时钟分频2.学会如何用verilog编写计时电路3.学会用verilog实现数码管的动态显示二.实验元器件类型型号(参数)数量FPGA实验板1三.实验原理功能块:一.计时程序:1.思路:当遇到load信号时,首先是置数24,个位从4变到0之后,从十位借位,十位变成1,个位变成9,然后各位从9变成0,从十位借位,十位变成0,个位变成9,最终个位变成0,此时发出警报指示24秒结束。2.代码:if(stop==0)//stop信号高电平有效beginif(qh==0&&ql==0)//24秒计时完成,发出警报beginalarm=1;endelseif(ql==0)beginqh=qh-4'b0001;ql=4'b1001;endelsebeginql=ql-4'b0001;end二.复位程序:1.思路:分配一个管脚开关控制是否复位。当外界输入为复位时,直接将数字置为24.2.代码:if(load)//异步置数beginqh=4'b0010;ql=4'b0100;alarm=0;end三.译码程序:1.思路:七段数码管显示2.代码:moduleled_7(BCD,out,clk);input[3:0]BCD;inputclk;output[6:0]out;reg[6:0]out;always@(posedgeclk)case(BCD)4'b0000:out=7'b0000001;4'b0001:out=7'b1001111;4'b0010:out=7'b0010010;4'b0011:out=7'b0000110;4'b0100:out=7'b1001100;4'b0101:out=7'b0100100;4'b0110:out=7'b0100000;4'b0111:out=7'b0001111;4'b1000:out=7'b0000000;4'b1001:out=7'b0000100;default:out=7'bx;endcaseendmodule四.动态显示程序:1.思路:由于Bysys2上4个数码管的7个led共阴极,故每次只能亮一个,采用动态扫描程序,结合人眼的视觉暂留效应,可以让人觉得两个数码管显示不一样的数字。其实每一刻只亮了一个。关键是如何使数码管循环亮呢?此实验中只需要两个数码管亮即可,可将剩下两个一直置为低电平,不亮。可采用一个一位计数器。0时十位数字亮,1时个位数字亮,遇到时钟,每次加1,这样就可以实现不停地0,1,0,1循环啦。2.代码:always@(posedgeclk_3)//segscanbegincase(count)1'b0:beginscan=4'b0111;temp=qh;end1'b1:beginscan=4'b1011;temp=ql;endendcaseendassignsw=scan;五.分频程序1.思路;程序中需要两个分频模块。因为FPGA板子上的时钟是50MHZ,而计时需要1HZ的脉冲时钟;另外一个就是数码管动态扫描程序需要一个16HZ左右的时钟。2.代码:moduledivision(in_50MHz,out_1Hz);//产生一个1HZ的时钟,用于计时inputin_50MHz;outputout_1Hz;regout_1Hz;reg[25:0]cnt;always@(posedgein_50MHz)begincnt=cnt+1'B1;if(cnt26'd24999999)out_1Hz=0;elsebeginif(cnt=26'd50000000)cnt=26'b0;elseout_1Hz=1;endendendmodulemodulefreqdiv(in_50MHz,out_16Hz);//产生16HZ的时钟,用于数码管动态扫描inputin_50MHz;outputout_16Hz;regout_16Hz;reg[22:0]cnt;always@(posedgein_50MHz)begincnt=cnt+1'B1;if(cnt23'd156250)out_16Hz=0;elsebeginif(cnt=23'd312500)cnt=23'b0;elseout_16Hz=1;endendendmodule管脚分配程序:NETled[6]LOC=L14;NETled[5]LOC=H12;NETled[4]LOC=N14;NETled[3]LOC=N11;NETled[2]LOC=P12;NETled[1]LOC=L13;NETled[0]LOC=M12;NETsw[0]LOC=F12;NETsw[1]LOC=J12;NETsw[2]LOC=M13;NETsw[3]LOC=K14;NETstopLOC=P11;NETloadLOC=L3;NETclkLOC=B8;NETalarmLOC=M5;
本文标题:verilog篮球24秒
链接地址:https://www.777doc.com/doc-5459767 .html