verilog HDL抢答器(两个程序)
更新时间:2023-12-04 10:33:01 阅读量: 教育文库 文档下载
- verilog推荐度:
- 相关推荐
一、设计任务
智力竞赛抢答器Verilog HDL要求有6位参赛者进行抢答,有六个抢答信号进行抢答。当有抢答选手按下抢答键后系统能够快速准确的判断是那一组选手按下了抢答信号,由于系统比较小,速度比较快一般不会有同时按下的可能,所以只有六种状态,然后系统能够根据这六种状态进行适时的显示和提示。当有选手按下以后就对抢答信号进行锁存,其他选手的输入无效。然后就是对抢答进行时间限制了,根据设定的时间进行倒计时,当倒计时完成还没有人抢答的时候系统发出警报声音提示时间已经到了。当有选手在主持人未按下抢答键抢答时视为超前抢答,系统显示该选手号,同时蜂鸣器响,该抢答无效。还有清除复位键,抢答完成以后按复位键即可清除已有的状态。通过Verilog HDL程序代码实现系统的各个功能。
二、设计目的与要求
目的:理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,培养学生正确的设计思想,严肃认真、实事求是的科学态度和勇于探索的创新精神。通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤,通过Verilog 程序的编写,进一步熟悉Verilog HDL 的语法知识;规范化训练学生撰写技术研究报告,提高书面表达能力。 要求:
? 掌握FPGA设计系统的一般方法。
? 熟练掌握使用modelsim软件设计较复杂的数字逻辑电路。 ? 培养学生独立分析问题和解决实际问题的能力。
三、 课程设计的内容
设计一抢答器,要求如下:
(1)抢答台数为6;
(2)具有抢答开始后20s倒计时,20秒倒计时后6人抢答显示超时,并报警; (3)能显示超前抢答台号并显示犯规报警;
(4)系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。
四、系统设计方案
根据系统设计要求可知,系统的输入信号有:主持人按钮inputEn,各选手的抢答按钮分别是inputL1、inputL2、inputL3、inputL4,inputL5,inputL6,主
持人和选手抢答按钮都是低电平有效,系统复位信号clr(高电平有效),系统时钟信号clk,系统的输出信号有:六个人抢答成功与否的指示灯控制信号输出口Led2,犯规抢答时报警器Buzzer(低电平有效)。本系统应具有的功能有:能够准确的判断出是哪位抢答者,当主持人没按抢答时,有人抢答了则蜂鸣器报警,并显示该选手号,当主持人按了抢答键时有人抢答了,同时封锁抢答信号,其他选手抢答无效,不显示该选手号。
五、仿真过程与仿真结果
仿真过程:使用ModelSim进行功能测试,首先在里面进行相应的设置,在工程文件夹下面会新建一个modelsim的文件夹,然后编写实现功能的程序和测试文件,最后保存编译执行就可以进行功能仿真了。 仿真结果:
结果分析与讨论:可以看到0时刻系统复位状态,2s时2号超前抢答(inputEn为高电平,inputL2为低电平),系统显示2蜂鸣器并犯规报警(Buzzer为低电平),8s时系统复位状态,12s时4号选手先抢答成功(inputL4为低电平)显示4,14s时3号选手后抢答,不显示3,20s时系统复位。
六、总结
通过本次合成设计,我又一遍熟悉了Verilog HDL语言进行建模,并且通过实际操作学会了怎么使用Modelsim这个软件来完成一个完整的课程设计。以及对基于FPGA的系统开发流程有了一个整体认识,我越来越认识到一点, 编程对
项目实现有着至关重要的, 我们在硬件开发的过程中更应该重视编程, 将编程看作是完善开发的不可缺少的一部分。虽然题目简单,但这也磨练了我的意志。第一次做的太复杂了,然后一次次修改,做成最简单功能的。在一次次的反复设计、论证和测试中, 提高了逻辑分析能力、全面分析问题的能力以及发现问题、解决问题的能力。通过对各方面资料的收集, 我的知识面也进一步拓宽了。同时,我也发现了自己的不足, 像语言表达还比较差, 不能更清楚地表达自己的意思, 逻辑分析能力和编程能力有待提高,有些预先的想法都未能实现。在系统的结构设计上也还有很长的路需要走,这是需要时间去积累的。在今后的学习中我还得加以改进。
七、程序
系统主要Verilog HDL源程序:
module QiangDaQi
(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer); //一开始声明有哪些端口
input clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6; output [0:7]Led2;//Led2显示选手号
output Buzzer;//低电平时蜂鸣器发出声音
reg EnFlat=1'b0;//EnFlat为高电平时开始抢答 reg [0:2]Led2=3'd0; reg Buzzer=1'b1;
always @ (posedge clk)//时钟上升沿 begin
if(inputEn==1)//如果主持人没按按钮就有人抢答 begin
if(inputL1==0)
begin Led2=3'd1;Buzzer=1'b0;end if(inputL2==0)
begin Led2=3'd2;Buzzer=1'b0;end if(inputL3==0)
begin Led2=3'd3;Buzzer=1'b0;end if(inputL4==0)
begin Led2=3'd4;Buzzer=1'b0;end if(inputL5==0)
begin Led2=3'd5;Buzzer=1'b0;end if(inputL6==0)
begin Led2=3'd6;Buzzer=1'b0;end end
if(inputEn==1'b0)//为低电平时表示主持人按下抢答按钮开始抢答 begin
EnFlat=1'b1; if(EnFlat==1'b1) begin
if(inputL1==1'b0)//一号选手抢答
begin
Led2=3'd1;
EnFlat=1'b0;//为低电平禁止其他选手抢答 Buzzer=1'b1; end
else //一开始没加else发现仿真结果随着输入数据变化而变化 if(inputL2==1'b0)//二号选手抢答 begin
Led2=3'd2; EnFlat=1'b0; Buzzer=1'b0; end else
if(inputL3==1'b0)//三号选手抢答 begin
Led2=3'd3;
EnFlat=1'b0;//为低电平禁止其他选手抢答 Buzzer=1'b1; end
else
if(inputL4==1'b0)//四号选手抢答 begin
Led2=3'd4;
EnFlat=1'b0;//为低电平禁止其他选手抢答 Buzzer=1'b1; end else
if(inputL5==1'b0)//五号选手抢答 begin
Led2=3'd5;
EnFlat=1'b0;//为低电平禁止其他选手抢答 Buzzer=1'b1; end else
if(inputL6==1'b0)//六号选手抢答 begin
Led2=3'd6;
EnFlat=1'b0;//为低电平禁止其他选手抢答 Buzzer=1'b1; end end end
if(clr)//按下clr键以后各组参数重置,整个比赛重新开始 begin
EnFlat=1'b0;
Led2=3'd0;//为低电平时,选手前的灯点亮 Buzzer=1'b1;//为高电平不响 end end
endmodule
测试程序
`timescale 1s/1s
module qiangdaqi_test();
reg clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;//输入口 wire [0:7]Led2;//Led2显示选手号
wire Buzzer;//低电平时蜂鸣器发出声音 QiangDaQi
u1(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer);
initial begin #0
clk=1;clr=0;inputEn=1;inputL1=1;inputL2=1;inputL3=1;inputL4=1;inputL5=1;inputL6=1;
#2 inputL2=0;//二号选手超前抢答 #4 clr=1;inputL2=1;//复位 #2 clr=0;
#4 inputEn=0;inputL4=0;//四号选手先抢答显示4 #2 inputL3=0;//三号选手后抢答不显示3 #4 clr=1;inputEn=1;inputL3=1;inputL4=1; #2 clr=0; end
always #1 clk=~clk; endmodule
程序二
module QiangDaQi
(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1,Led2,Led3,Buzzer);
//一开始声明有哪些端口 input
clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,add,stu;//输入口
output [0:5]Led1;//对应参赛选手前的灯
output [0:7]Led2,Led3;//Led2显示选手号Led3显示选手分数 output Buzzer;//低电平时蜂鸣器发出声音
reg EnFlat=1'b1;//EnFlat为高电平时开始抢答
正在阅读:
verilog HDL抢答器(两个程序)12-04
对秦腔发展及《秦之声》有一些看法想谈一谈07-27
1.5一意孤行(续)09-02
开封旅游分析04-02
《校园防疫,共同参与》国旗下的讲话范文03-23
供配电实验05-31
加强网络舆论引导工作汇报相关范文02-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 抢答器
- 两个
- verilog
- 程序
- HDL
- 《工程力学》复习题
- 人教版小学六年级数学上册教材分析
- 人教初中语文七上7散文诗二首金色花优质课教案
- XXX局政务服务工作自查整改工作报告
- 无线及核心网理论试题-样题
- 第六章 财产保险之财产损失保险练习题(含答案)
- 2012年班组长比武理论复习题
- 2009年乡镇党委书记个人工作总结
- 环境规划与管理期末考试重点(含题目和答案)重点修改版
- 小学语文《乡下人家》阅读理解及答案
- 大工17春《钢筋混凝土结构》在线作业2
- 简单随机抽样(答案)
- 课文
- 城轨课程设计报告
- 金融工程学复习题答案
- (第一套)基础护理学练习题1
- 临近既有线金属网片防护栅栏技术交底 - 图文
- 企业内部控制具体规范第4号 - 对外投资
- 岩石力学考试题
- 2015年MRI技师上岗证真题及答案