辩论赛计时器Word文档下载推荐.docx
《辩论赛计时器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《辩论赛计时器Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
任务书下达日期
2013年5月01日
设计完成日期
2013年5月22日
目录
1、设计内容.............................................................................3
2、设计要求.............................................................................3
3、设计思路............................................................................3
4、安装、调试步骤................................3
5、问题分析与设计改进...........................7
6、设计结果、总结与设计调试体会.......................................8
7、附录.........................................10
八、参考文献.........................................................................17
1.设计内容
依照现有辩论赛规则,设计制作一个简易的计时装置。
2.设计要求
根据实验要求作预习报告。
根据实验需求,进行程序的设计。
根据以前设计的经验,反复调试程序。
调试通过,下载到FPGA开发板上进行实践调试。
完成整个过程,写实验报告。
3.设计思路
1.了解辩论赛流程及原则
辩论赛由开篇立论、双方攻辩、攻辩小结、自由辩论和总结陈词五部分组成。
1.1开篇立论、攻辩小结、总结陈词部分需一方发言终止后,另一方才允许发言。
1.2双方攻辩和自由辩论中,双方需要交替发言,一方发言时,本方计时器工作;
另一方计时器处于停滞状态。
2.程序实现模块化设计,由简单到困难循序渐进。
本实验中要完成倒数计时,状态控制与过渡,文字提示的显示,按键消抖等功能。
系统正常工作时,发光二极管循环闪烁提醒辩手时间的流逝;
八段数码管显示剩余时间;
发光数码管显示发言者属于哪一方(正方/反方);
拨码开关控制是对正方计时,还是对反方计时;
按键1控制计时状态;
按键2实现计时状态的转换。
具体模块设计参照附录中代码设计。
4.安装、调试步骤
3.1.根据实验要求作预习;
3.2.建立工程,设计程序:
1)新建工程;
2)新建verilogHDL文件(注:
文件名和模块名称要和工程名保持一致)。
3)调试程序:
见实验附录
3.3.配置管脚:
参照实验指导中的管脚图,配置管脚。
3.4.下载到开发板,观察实验结果,尝试创造自己的实验方案:
3.5.完成实验报告。
5.问题分析与设计改进
设计中我们用16*8点阵显示“正方”和“反方”,但在分频的时钟tick2下反复调试不能实现闪烁。
其实是我们肉眼观测不出来,因此在此时钟下有设计了一个计时器间接实现分频
于是得到了预想的结果
六、设计结果、总结与设计调试体会
1.设计结果:
经过反复的调整与调试我们得到了如下的结果
2.总结与设计调试体会:
本次课程所设计的辩论赛计时器。
通过这次课程设计让我们了解和学习了更多关于数字系统设计的知识,为今后的学习打下了坚实的基础。
在试验中,我们也遇到了不少困难,但通过查找资料、和学长同学交流最终解决了问题,每当解决一个问题都会很高兴和成就感,又学到了很多东西。
也在课程设计中找到许多乐趣,从学习中寻求快乐。
7.附录(代码)
modulekeshe(clk,stop,zf,C,R,led_seg,led_dig,ledin,zt,ft);
inputclk,stop,zf,zt,ft;
//stop-正方或反方倒计时使能0-有效zf-选择正方或反方1-选择正方0-选择反方zt/ft分别为正方或反方清零
outputC,R,led_seg,led_dig,ledin;
//设定点阵管脚C-1亮R-0亮设定LED显示管脚led_seg-1亮,led_dig-0亮,
reg[5:
0]z,f;
//z循环控制正方倒计时30-00f循环控制反方倒计时30-00
reg[0:
7]R,ledin;
15]C;
7]led_seg,led_dig;
reg[4:
0]m;
reg[2:
0]n;
//计时器
reg[25:
0]i,j;
regtick1,tick2;
regts;
reg[3:
0]zs,zg,fs,fg;
//正方十位正方个位反方十位反方个位
integerjjjj;
always@(posedgeclk)//分频
begin
if(i==9999999)
begin
tick1<
=~tick1;
i<
=0;
end
else
i<
=i+1;
end
always@(posedgeclk)
if(j>
999)
tick2<
=~tick2;
j<
j<
=j+1;
always@(posedgetick1)
if(zf)
if(stop==0)//z循环控制正方倒计时30-00
if(z==0)
beginz<
=30;
zs<
=3;
zg<
else
beginz<
=z-1;
=z/10;
=z%10;
if(zt)//正方倒计时清零操作
end
if(stop==0)//f循环控制反方倒计时30-00
if(f==0)
beginf<
fs<
fg<
beginf<
=f-1;
=f/10;
=f%10;
if(ft)//反方倒计时清零操作
always@(posedgetick2)
begin
case(n)
0:
led_dig<
=8'
b11011111;
case(zs)//显示正方十位0-3
led_seg<
b11111100;
1:
b01100000;
2:
b11011010;
3:
b11110010;
4:
b01100110;
5:
b10110110;
6:
b10111110;
endcase
end
1:
b11101111;
case(zg)//显示正方个位0-9
7:
b11100000;
8:
b11111110;
9:
b11110110;
2:
b11111101;
case(fs)//显示反方十位0-3
3:
case(fg)//显示反方个位0-9
endcase
if(n==4)
n<
n<
=n+1;
if(zf&
&
z>
5)//显示正方
begin
case(m)
0:
beginC=16'
b0001000000000000;
R=8'
b01111111;
1:
b0000100001111110;
b10111111;
2:
b0111111100001000;
3:
b0000100000101000;
4:
b0001111000101110;
b11110111;
5:
b0010001000101000;
b11111011;
6:
b0100001000101000;
7:
b1000011011111111;
if(m==7)
m<
m<
=m+1;
elseif(zf==0&
f>
5)//显示反方
b0001000001111110;
b0000100001000000;
b0111111101111110;
b0000100001100010;
b0001111001010100;
b0010001001001000;
b0100001001010100;
b1000011001000011;
if(m==7)
elseif(zf==1&
z<
6)//正方闪烁
if(jjjj<
20000)
begin
jjjj<
=jjjj+1;
end
10000)
case(m)
0:
1:
2:
3:
4:
5:
6:
7:
endcase
m<
C=16'
b00000000000000000;
b00000000;
f<
6)//反方闪烁
9999)
end
begin
ledin=8'
b00001111;
if(zs==0&
zg<
=5)
case(ts)
0:
beginledin=8'
1:
b11110000;
if(fs==0&
fg<
ts<
=ts+1;
if(ts==1)
endmodule
八、参考文献
[1]周润景.基于QuartusII的FPGA/CPLD数字系统设计实例(第2版)[M].电子工业出版社(2013-01出版)
[2]夏宇闻.verilog数字系统设计教程(第2版)[M].北京航空航天大学出版社,2008.