verilogHDL抢答器两个程序Word格式.docx

上传人:b****5 文档编号:19358844 上传时间:2023-01-05 格式:DOCX 页数:14 大小:41.16KB
下载 相关 举报
verilogHDL抢答器两个程序Word格式.docx_第1页
第1页 / 共14页
verilogHDL抢答器两个程序Word格式.docx_第2页
第2页 / 共14页
verilogHDL抢答器两个程序Word格式.docx_第3页
第3页 / 共14页
verilogHDL抢答器两个程序Word格式.docx_第4页
第4页 / 共14页
verilogHDL抢答器两个程序Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

verilogHDL抢答器两个程序Word格式.docx

《verilogHDL抢答器两个程序Word格式.docx》由会员分享,可在线阅读,更多相关《verilogHDL抢答器两个程序Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

verilogHDL抢答器两个程序Word格式.docx

五、仿真过程与仿真结果

仿真过程:

使用ModelSim进行功能测试,首先在里面进行相应的设置,在工程文件夹下面会新建一个modelsim的文件夹,然后编写实现功能的程序和测试文件,最后保存编译执行就可以进行功能仿真了。

仿真结果:

结果分析与讨论:

可以看到0时刻系统复位状态,2s时2号超前抢答(inputEn为高电平,inputL2为低电平),系统显示2蜂鸣器并犯规报警(Buzzer为低电平),8s时系统复位状态,12s时4号选手先抢答成功(inputL4为低电平)显示4,14s时3号选手后抢答,不显示3,20s时系统复位。

六、总结

通过本次合成设计,我又一遍熟悉了VerilogHDL语言进行建模,并且通过实际操作学会了怎么使用Modelsim这个软件来完成一个完整的课程设计。

以及对基于FPGA的系统开发流程有了一个整体认识,我越来越认识到一点,编程对项目实现有着至关重要的,我们在硬件开发的过程中更应该重视编程,将编程看作是完善开发的不可缺少的一部分。

虽然题目简单,但这也磨练了我的意志。

第一次做的太复杂了,然后一次次修改,做成最简单功能的。

在一次次的反复设计、论证和测试中,提高了逻辑分析能力、全面分析问题的能力以及发现问题、解决问题的能力。

通过对各方面资料的收集,我的知识面也进一步拓宽了。

同时,我也发现了自己的不足,像语言表达还比较差,不能更清楚地表达自己的意思,逻辑分析能力和编程能力有待提高,有些预先的想法都未能实现。

在系统的结构设计上也还有很长的路需要走,这是需要时间去积累的。

在今后的学习中我还得加以改进。

七、程序

系统主要VerilogHDL源程序:

moduleQiangDaQi

(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer);

//一开始声明有哪些端口

inputclk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;

output[0:

7]Led2;

//Led2显示选手号

outputBuzzer;

//低电平时蜂鸣器发出声音

regEnFlat=1'

b0;

//EnFlat为高电平时开始抢答

reg[0:

2]Led2=3'

d0;

regBuzzer=1'

b1;

always(posedgeclk)//时钟上升沿

begin

if(inputEn==1)//如果主持人没按按钮就有人抢答

begin

if(inputL1==0)

beginLed2=3'

d1;

Buzzer=1'

end

if(inputL2==0)

d2;

if(inputL3==0)

d3;

if(inputL4==0)

d4;

if(inputL5==0)

d5;

if(inputL6==0)

d6;

end

if(inputEn==1'

b0)//为低电平时表示主持人按下抢答按钮开始抢答

EnFlat=1'

if(EnFlat==1'

b1)

if(inputL1==1'

b0)//一号选手抢答

Led2=3'

EnFlat=1'

//为低电平禁止其他选手抢答

Buzzer=1'

end

else//一开始没加else发现仿真结果随着输入数据变化而变化

if(inputL2==1'

b0)//二号选手抢答

Buzzer=1'

else

if(inputL3==1'

b0)//三号选手抢答

else

if(inputL4==1'

b0)//四号选手抢答

if(inputL5==1'

b0)//五号选手抢答

if(inputL6==1'

b0)//六号选手抢答

if(clr)//按下clr键以后各组参数重置,整个比赛重新开始

begin

Led2=3'

//为低电平时,选手前的灯点亮

//为高电平不响

endmodule

测试程序

`timescale1s/1s

moduleqiangdaqi_test();

regclk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;

//输入口

wire[0:

wireBuzzer;

QiangDaQiu1(clk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led2,Buzzer);

initial

#0clk=1;

clr=0;

inputEn=1;

inputL1=1;

inputL2=1;

inputL3=1;

inputL4=1;

inputL5=1;

inputL6=1;

#2inputL2=0;

//二号选手超前抢答

#4clr=1;

//复位

#2clr=0;

#4inputEn=0;

inputL4=0;

//四号选手先抢答显示4

#2inputL3=0;

//三号选手后抢答不显示3

always#1clk=~clk;

程序二

(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1,Led2,Led3,Buzzer);

inputclk,clr,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,add,stu;

5]Led1;

//对应参赛选手前的灯

7]Led2,Led3;

//Led2显示选手号Led3显示选手分数

regBuClk=1'

//为高电平时进入蜂鸣器处理程序

//regadd,stu;

//add答题正确加一分stu答题错误减一分

//regclr=0;

//重置键

5]Led1=6'

b111111;

2]answer=3'

reg[0:

3]score=4'

d0,score1=4'

d0,score2=4'

3]score3=4'

d0,score4=4'

d0,score5=4'

d0,score6=4'

//各选手分数计算

regBuzzer=1;

4]daojishi=5'

d20;

//用于产生20s倒计时

7]Led2=8'

b11111111,Led3=8'

b11111111;

beginLed1=6'

b111110;

answer=3'

BuClk=1'

beginLed2=6'

b111101;

b111011;

b110111;

b101111;

b011111;

Led1=6'

BuClk=1'

begin

answer=3'

//为高电平时转到对应选手加减分程序中去

//转到蜂鸣器程序

end

EnFlat=1'

answer=3'

BuClk=1'

end

end

if(inputL5==1'

if(inputL6==1'

if(daojishi!

=5'

d0)//用于1Hz信号

daojishi=daojishi-1;

else//倒计时结束抢答器还没按下则抢答停止且蜂鸣器响

daojishi=5'

BuClk=1'

if(BuClk==1'

b1)//当蜂鸣器标志为1时

//蜂鸣器发声

if(answer==3'

d1)//第一组加减分

Led1=6'

//点亮该选手前的LED灯

Led2=8'

hf9;

//选手号数码管显示1

if(add)

score1=score1+1;

//当主持人判定选手的回答正确时,按下add键进行加分操作

else

if((stu||inputEn)&

&

(score1!

=0))

score1=score1-1;

//当主持人判定选手的回答错误时,按下stu键进行加分操作

elsescore1=0;

score=score1;

//把第一组的分数赋值给分数寄存器

d2)//第二组加减分

Led2=8'

ha4;

score2=score2+1;

(score2!

score2=score2-1;

elsescore2=0;

score=score2;

d3)//第三组加减分

hb0;

score3=score3+1;

(score3!

score3=score3-1;

elsescore3=0;

score=score3;

d4)//第四组加减分

h99;

score4=score4+1;

(score4!

score4=score4-1;

elsescore4=0;

score=score4;

d5)//第五组加减分

h92;

score5=score5+1;

(score5!

score5=score5-1;

elsescore5=0;

score=score5;

d6)//第六组加减分

h82;

score6=score6+1;

(score6!

score6=score6-1;

elsescore6=0;

score=score6;

case(score)//?

?

4'

d0:

Led3=8'

hc0;

4'

d1:

d2:

d3:

d4:

d5:

d6:

d7:

hf8;

d8:

h80;

d9:

h90;

default:

hff;

endcase

//重置时六个Led全灭

//熄灭选手号静态数码管

Led3=8'

//熄灭分数显示数码管

//蜂鸣器标志位重置

//蜂鸣器控制管脚重置

score=0;

//score1=4'

score2=4'

score3=4'

//score4=4'

score5=4'

score6=4'

regclk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6;

//regclr;

//regadd,stu;

QiangDaQiu1(clk,clr,add,stu,inputEn,inputL1,inputL2,inputL3,inputL4,inputL5,inputL6,Led1,Led2,Led3,Buzzer);

add=0;

stu=0;

#2inputEn=0;

inputL2=0;

add=1;

#2clr=1;

#1inputL3=0;

#2inputEn=1;

#40inputEn=0;

inputL1=0;

inputL2=1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1