数字系统设计智力竞赛抢答器Verilog HDL建模.docx
- 文档编号:14301900
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:19
- 大小:427.45KB
数字系统设计智力竞赛抢答器Verilog HDL建模.docx
《数字系统设计智力竞赛抢答器Verilog HDL建模.docx》由会员分享,可在线阅读,更多相关《数字系统设计智力竞赛抢答器Verilog HDL建模.docx(19页珍藏版)》请在冰点文库上搜索。
数字系统设计智力竞赛抢答器VerilogHDL建模
(此文档为word格式,下载后您可任意编辑修改!
)
课程设计报告
课程名称
现代数字系统设计
设计题目
智力竞赛抢答器VerilogHDL建模
系别
机械与电子工程系
班级
学生姓名
学号
任课教师
完成时间
南湖学院教务办
目录
一、设计任务与要求1
二、方案设计与论证1
2.1方案论证1
2.2综合分析3
三、模块设计及程序清单4
3.1抢答模块4
3.2锁存模块5
3.3计数模块7
3.4声音警报模块9
3.5声音信号产生模块11
四、仿真过程与仿真结果12
4.1仿真过程12
4.2仿真分析14
五、结果分析与结论16
六、设计心得16
七、参考文献16
致谢17
起至日期:
第17周周一~第19周周一
设计题目:
智力竞赛抢答器VerilogHDL建模
设计要求:
1、5组参赛者进行抢答;
2、当抢先者按下按钮时,抢答器能准确判断,并以声、光标志(模拟)。
要求声响、光亮时间为3s后自动结束;
3、抢答器应具有互锁功能,某组抢答后能自动封锁其他各组进行抢答;
4、具有限时功能,分5s、10s、15s三档时间,时间到自动发出声响,且计时时间通过数码管显示(以7段译码输出、动态扫描方式);
5、犯规、违章警告信号(如主持人未说“开始抢答”,抢答者按下按钮),以指示灯闪烁标志;
6、系统具有一个总复位开关;
7、用VerilogHDL对此抢答器进行建模,并在ModelsimSE或QuartusII平台进行仿真测试,给出仿真结果。
设计任务
智力竞赛抢答器的VerilogHDL建模
一、设计任务与要求
智力竞赛抢答器VerilogHDL要求有5组参赛者进行抢答,有五个抢答信号进行抢答。
当有抢答选手按下抢答键后系统能够快速准确的判断是那一组选手按下了抢答信号,由于系统比较小,速度比较快一般不会有同时按下的可能,所以只有五种状态,然后系统能够根据这五种状态进行适时的显示和提示。
本系统设计的是以数码管显示对应选手的编码,并且显示选手之前对应的LED灯。
当有选手按下以后就对抢答信号进行锁存,其他选手的输入无效。
然后就是对抢答进行时间限制了,根据设定的时间进行倒计时,当倒计时完成还没有人抢答的时候系统发出警报声音提示时间已经到了。
当有选手在设定的时间里面完成抢答后,系统自动停止计时。
系统需要主持人进行控制,当主持人按下开始以后才能抢答,否则抢答无效。
还有清除复位键,抢答完成以后按复位键即可清除已有的状态。
通过VerilogHDL建模实现系统的各个模块功能,最后将系统连接完成,进行编译仿真。
二、方案设计与论证
2.1方案论证
本系统采用VerilogHDL语言进行建模,总共分为五个模块,分别是抢答模块,锁存器模块,计数模块,声音产生模块、声音信号控制模块。
抢答模块有三个输入,分别是抢答信号,清除信号,和使能信号。
抢答模块有五组选手进行抢答,当使能信号有效以后,抢答信号其中一个有效则进行抢答锁存,然后输出抢答以后的各种状态,并且显示。
计数模块可以进行倒计时,在使能信号有效的时候进行倒计时,然后发出控制信号控制声音控制模块,进行声音警报。
方案一:
采用单片机来实现智力竞赛抢答器。
基于单片机的智力竞赛抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。
主持人按下开始抢答键才可以抢答。
主持人没有按下开始抢答按纽(start),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。
主持人按下开始抢答按纽(P3.0),蜂鸣响声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒内有人抢答则最后五秒倒计时警报。
单片机最小系统、抢答按键模块(一位数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。
基于单片机的智力竞赛抢答器硬件原理图如下:
图一:
基于单片机的智力竞赛抢答器
通过软件设计能够完成任务要求的基本功能,软件可以采用C语言编写,由于系统不是很大编写难度不是很大,通过然间查询方式,查询是否有抢答按键按下,当有抢答按键按下的时候系统开始通过数码管DS1显示抢答选手的编码,LED等(D1~D5)显示对应选手面前的LED灯。
同时系统开始倒计时,计时器部分可以通过单片机定时器中断实现,当定时器计时完成后还没有抢答则进行报警5s,表示抢答结束。
用单片机实现的智力竞赛抢答器是基于软件和硬件的电路,实现起来比较简单,但是在运行时候由于单片机采用的是软件查询的方式,系统在运行的时候要一步一步查询软件的执行,耗时比较多。
方案二、采用FPGA来实现智力竞赛抢答器,用VerilogHDL语言进行建模,然后将各个模块按照设计的方案相连接,进行电路仿真分析通过以后就可以下载到FPGA板通过相应引脚的连接即可以实现电路的功能。
FPGA的使用非常灵活,同一片FPGA通过不同的编程数据可以产生不同的电路功能。
通过FPGA设计电路首先要建立各个模块,本系统可以通过一个抢答模块,锁存模块,计数模块以及声音控制模块等来实现电路的功能,通过各个模块之间的相互连接就能够建立一个完整的电路系统了。
系统的整体框图如下图所示:
图二:
基于FPGA智力竞赛抢答器
通过综合分析以后,得到的RTL图如下:
图三:
RTL图
2.2综合分析
综合以上分析我们可知FPGA和单片机都可以实现智力竞赛抢答器这一系统,但是FPGA运行速度快FPGA内部集成锁项环,可以把外部时钟倍频,核心频率可以到几百M,而单片机运行速度低的多.在高速场合,单片机无法代替FPGA,在这一系统中当选手进行抢答的时候,要求系统的运行速度较快,否则当有两个选手抢答的时间相差不是很大的时候,对于单片机系统通过查询方式占用很大的系统资源,运行速度比较慢,会造成抢答判断错误。
单片机IO口有限,而FPGA动辄数百IO,可以很容易用不同IO连接各外设。
所以我们选用FPGA来实现智力竞赛抢答器,用VerilogHDL语言实现编程。
三、模块设计及程序清单
本次设计的抢答器系统由5部分模块组成,分别是:
选手抢答模块、锁存模块、计数模块、声音警报模块、声音信号控制模块。
3.1抢答模块
抢答模块主要完成两个功能,一是准确的判断出第一位抢答者,二是当选手抢答后送出声音使能信号,作为下个模块的声音的触发信号。
其VerilogHDL源程序如下:
case(player)//选手抢答信号
5'b00001:
//五位抢答信号判断
begin
y1<=1;
y2<=5'b00001;
ea<=1'b0;
end
……
default:
//没有相符合的信号时则执行此句
begin
y1<=0;
y2=5'b00000;
ea<=1;
end
endcase
以上模块通过一个case语句来实现抢答功能,case语句是一个条件语句,当play信号的值为“00001”时候程序执行第一个“beginend”里面的语句,当play信号为“00010”的时候程序执行第二个“beginend”里面的语句,依次类推如果play的值与以上信号都不符的话就执行default后面的语句。
通过模块编译以后所得的模块框图如下:
图四:
抢答模块
通过综合以后我们可以得到RTL图如下:
图五:
抢答模块RTL图
3.2锁存模块
锁存模块是对第一位抢答者的信号进行锁存,其后的信号无效。
其中d为锁存输入信号,clk为时钟信号,ea为使能信号,clear为清除信号,q为锁存输出信号,alm0为触发选手抢答报警的声音信号。
整个模块VerilogHDL源程序如下:
elseif(ea==1'b0)//使能信号有效则执行下面语句
begin
q<=d;//将d的值传给q
if(clk==1'b1)//时钟到达则执行下面
begin
temp=temp+1;
if(temp==2)
begin
alm0<=1'b0;
temp=temp-1;
end
else
begin
alm0<=1'b1;
end
end
end
以上模块主要通过if进行条件判断选择,当条件符合的时候则执行,模块通过编译综合以后得到的框图如下所示:
图六:
锁存模块
综合以后得到的RTL图如下:
图七:
锁存器RTL图
3.3计数模块
计数模块,比赛中要求第一抢答者在规定时间内回答问题,系统开始30秒倒计时,倒计时完毕发出响声,若能在规定时间内完成,由主持人按使能开关停止倒计时,不发出响声。
计数模块的源程如下:
elseif(clk==1'b1)
begin
if(en==1'b1)
begin
ll<=ll-1;
if(ll==4'b0000)
begin
ll<=4'b1001;
hh<=hh-1;
if(hh==4'b0000&ll==4'b0000)
begin
hh<=4'b0000;
ll<=4'b0000;
if(stop==1'b1)
begin
ll<=ll;
hh<=hh;
end
end
end
end
end
high<=ll;
low<=hh;
end
计数模块主要通过if条件语句实现,当条件满足的时候则执行下面的语句,通过对计数模块编译以后生成的系统框图如下:
图八:
计数模块
综合以后的RTL图如下:
图九:
计数模块
3.4声音警报模块
声音警报模块、当锁存器锁存第一位抢答选手时,触发短时间报警,显示抢答完成,并且当计时完成时也产生报警信号。
这部分的设计程序如下:
elseif(high==0&low==0)
begin
alm<=1'b1;
end
elseif(m==1'b1)
begin
alm<=1'b1;
end
else
begin
alm<=1'b0;
end
end
以上模块通过编译以后形成的计数器系统框图如下:
图十:
声音警报模块
综合以后得到的RTL图如下:
图十一:
声音警报模块RTL图
3.5声音信号控制模块
声音信号控制模块由于声音频率与抢答器频率不同,因此本模块使用单独的时间信号,当报警信号为高电平时,此模块向蜂鸣器输入声音信号使其产生报警音,反之则不输出。
其VerilogHDL程序如下:
always@(a)
begin
if(a==1'b1)
begin
s<=c;
end
else
begin
s<=1'b0;
end
end
以上模块通过编译以后生成的系统框图如下:
图十二:
声音信号产生模块
综合以后得到的RTL图如下:
图十三:
声音信号控制模块
四、仿真过程与仿真结果
4.1仿真过程
使用QuartusⅡ进行建模和综合以后就可以调用ModelSim进行功能仿真了,首先在QuartusⅡ里面进行相应的设置,在工程文件夹下面会新建一个simulation\modelsim的文件夹,之后我们的仿真文件就会生成在这个文件里面ModelSim仿真需要三个文件,分别是测试文件,电路接线文件,和库文件,我们将这三个文件复制到modelsim文件夹下面就可以进行功能仿真了。
在QuartusⅡ运行Processing/Start/StartTestBench...生成一个测试模版在测试模版中写入一下测试程序:
modulekechegnsheji_vlg_tst();
regeachvec;
regclear;
regclk;
reg[4:
0]qiangda;
regshengyinclk;
regstart;
regstop;
wirefengmingqi;
wire[3:
0]xuanshou_hao;
wire[4:
0]xuanshou_led;
kechegnshejii1(
.clear(clear),
.clk(clk),
.fengmingqi(fengmingqi),
.qiangda(qiangda),
.shengyinclk(shengyinclk),
.start(start),
.stop(stop),
.xuanshou_hao(xuanshou_hao),
.xuanshou_led(xuanshou_led)
);
initial
begin
qiangda<=5'b00001;
start<=1;
stop<=0;
clear<=0;
$display("Runningtestbench");
end
initial
begin
clk=0;
forever
#10clk=~clk;//产生50MHz的时钟
end
endmodule
4.2仿真分析
在Modelsim下我们输入抢答信号qiangda<=5b'00001以后得到的仿真波形图如下:
图十四:
仿真波形图
我们修改抢答信号以后再进行波形仿真,仿真结果和预想的一样,当我们将仿真信号qiangda<=5'b0010后,输出信号xuanshou_led也变为00100,对应的xuanshou_hao变为0011为三号。
我们得知仿真结果正确。
图十五:
修改抢答信号以后的仿真图
然后我们修改清零信号clear为1,即有效,通过仿真我们可以得到我们预想的波形图如下:
图十六:
修改清零信号输出波形图
系统时钟通过一下代码产生:
begin
clk=0;
forever
#10clk=~clk;//产生50MHz的时钟
end
endmodule
通过仿真我们可以观测到一下波形图:
图十七:
时钟波形
五、结果分析与结论
从建立各个模块到模块综合再到整个系统综合,通过仿真我们发现我们设计之中存在的一些问题,通过系统仿真我们发现抢答模块在抢答信号发生以后通过锁存模块能够将信号送给LED等和数码管并且显示正确的数字和波形。
通过测试文件我们能够得到正确的时钟信号,仿真波形没有太大的问题,可以下载到FPGA了。
六、设计心得
1、在抢答鉴别电路设计中,A、B、C、D、E五组抢答,理论上应该有32种可能情况,但实际上由于芯片反应速度快到一定程度时,两组以上同时抢答成功的可能性非常不,因此我们可设计成只有五种情况,这大大简化了电路的设计复杂性。
2、通过本次合成设计,我们又一遍熟悉了VerilogHDL语言进行建模,并且通过实际操作学会了怎么使用Quartus和Modelsim这两个平台来完成一个完整的课程设计。
以及对基于FPGA的系统开发流程有了一个整体认识,在今后的学习中我们将会很好的利用这两个平台。
七、参考文献
[1].王金明,《数字系统设计与VerilogHDL》(第三版).北京:
电子工业出版社,2009
[2].潘松,黄继业.《EDA技术实用教程》(第二版).北京:
科学出版社,2005
[3].焦素敏.《EDA应用技术》.北京:
清华大学出版社,2002
[4].高吉祥,《电子技术基础实验与课程设计》.北京:
电子工业出版社,2001
[5].曾繁态,等.《EDA工程概论》.北京:
清华大学出版社,2003
致谢
从接受我们上数字系统设计与VerilogHDL这们课程开始我们就得到了胡文静老师的精心的指导和热情的帮助。
在课程设计过程通过我们整个组的共同努力和老师耐心的指导才得以完成,在最后的测试检查阶段老师在百忙之中抽出时间为我们进行指导,这样使得我们能够顺利的完成这次课程设计工作,在短暂的几个月的相处时间里,老师渊博的知识,敏锐的思路和实事求是的工作作风给我留下了深刻的印象,这将使得我终身受益,谨此向老师表示衷心的感谢和崇高的敬意。
同时也有同班的很多好心同学的热情帮助,给我们组的课程设计提出了很多很好的建议在此一并感谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字系统设计智力竞赛抢答器Verilog HDL建模 数字 系统 设计 智力 竞赛 抢答 Verilog HDL 建模
![提示](https://static.bingdoc.com/images/bang_tan.gif)