EDA课程设计数字抢答器Word格式.docx

上传人:b****7 文档编号:21827866 上传时间:2023-02-01 格式:DOCX 页数:21 大小:188.07KB
下载 相关 举报
EDA课程设计数字抢答器Word格式.docx_第1页
第1页 / 共21页
EDA课程设计数字抢答器Word格式.docx_第2页
第2页 / 共21页
EDA课程设计数字抢答器Word格式.docx_第3页
第3页 / 共21页
EDA课程设计数字抢答器Word格式.docx_第4页
第4页 / 共21页
EDA课程设计数字抢答器Word格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

EDA课程设计数字抢答器Word格式.docx

《EDA课程设计数字抢答器Word格式.docx》由会员分享,可在线阅读,更多相关《EDA课程设计数字抢答器Word格式.docx(21页珍藏版)》请在冰豆网上搜索。

EDA课程设计数字抢答器Word格式.docx

2、主要模块设计

2.1、抢答鉴别模块

在这个模块中主要实现抢答过程中的抢答鉴别功能。

其电路框图如下。

其中,rst为复位信号,当该信号高电平有效时,电路无论处于何种状态都恢复为初始状态,即所有的输出信号都为0;

EN为抢答使能信号,该信号高电平有效;

s0、s1、s2、s3为抢答按钮,高电平时有效。

当使能信号EN为低电平时,如果有参赛者按下按钮,则提前抢答报警信号FALSE[3..0]的对应位输出高电平,以示警告;

当EN为高电平时,首先将提前抢答报警信号FALSE[3..0]复位清0,然后根据选手按下抢答按钮的先后顺序选择最先抢答的信号,其对应的抢答状态显示信号LEDA~LEDD输出高电平,抢答成功组别编号由信号states输出,并锁存抢答器此时的状态,直到清0信号有效为止。

在每一轮新的抢答之前,都要使用复位清零信号rst,清除上一轮抢答对判断电路留下的使用痕迹,使电路恢复初始状态。

图2抢答鉴别模块框图

2.2、计时模块

在这个模块中主要实现抢答过程中的计时功能,在有组别抢答后开始倒计时,若在规定时间没人回答,则超时报警。

其中有系统复位信号rst;

抢答使能信号s;

无人抢答警报信号warn;

计时中止信号stop;

图3计时模块框图

2.3、计分模块

抢答计分电路的设计一般按照一定数制进行加减即可,但随着计数数目的增加,要将计数数目分解成十进制并进行译码显示会变得较为复杂。

为了避免该种情况,通常是将一个大的进制数分解为数个十进制以内的进制数,并将计数器级连。

但随着数位的增加,电路的接口也会相应增加。

因此,本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,既减少了接口,又简化了设计。

其电路框图如下,该模块输入信号为加分选择信号add和组别选择信号chose[3..0],其中,加分选择信号add高电平有效,有效时对组别选择信号chose[3..0]选择的参赛组进行加分;

组别选择输入信号chose[3..0]即抢答鉴别模块的输出信号states[3..0]。

输出信号分别对应四组竞赛者的得分。

图4计分模块框图

2.4、译码显示模块

译码显示模块用于显示每组选手的分数,计时的时间等信息。

显示电路的实质就是一个简单的LED共阴极显示模块的译码器。

7段数码管LED常用的一般8字型为a,b,c,d,e,f,g,P,其中P为小数点,共阴LED低电平有效。

在这里我们不需要用到小数点位,因此用位宽为7的矢量表示7段数码管即可。

7段LED共阴极显示模块的框图如图所示。

其中,IN4[3…0]为输入信号,以4位2进制数表示;

OUT7[6…0]为输出信号,将输入的二进制数译码显示为十进制数字的0~9。

图5译码显示模块框图

2.5、报警模块

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内有人抢答,指示灯显示抢答组别,扬声器发出2~3秒的音响。

即有效电平输入信号i;

状态输出信号q。

图6报警模块框图

2.6、整体框图

从上述设计方案中我们可以大致得到数字竞赛抢答器的系统框图,如下图所示,其中抢答时钟信号clk2;

系统复位信号rst;

抢答状态显示信号states;

图7抢答器系统框图

3、仿真结果

3.1、抢答鉴别模块仿真

抢答鉴别模块的仿真波形图如图所示。

当鉴别模块的清零复位信号rst为高电平时,无论四组参赛者谁按下抢答按钮,系统输出均为零,同时组别显示端输出信号也显示为零;

当清零信号rst为低电平时,s0、s1、s2、s3四组参赛者谁先按下抢答按钮,其对应的显示灯LEDx亮起,states[3..0]输出抢答成功的选手编号。

图8抢答鉴别模块仿真波形图

3.2计时模块

计时模块的仿真波形如图所示。

实现了抢答过程中的计时功能,在有抢答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。

图9计时模块仿真波形图

3.3计分模块仿真

系统设计过程中,当计分复位端RST=1时,并且组别输入信号CHOSE=0000,其中的组别输入信号是抢答鉴别模块的输出信号,计分器复位,此时以上四组都不会产生加减分操作。

然而当计分复位端RST=0时,此时计分器可以计分。

当CHOS=0001时,组别显示为A组,此时主持人利用计分器对A组进行加减分操作;

当CHOS=0010时,组别显示为B组,此时主持人则利用计分器对B组进行加减分操作,以此类推。

下图仿真为A组回答正确,加分。

图10计分模块仿真波形图

3.4译码模块仿真

当in4="

0000"

,out7输出"

0111111"

此时数码管显示0;

0001"

0000110"

此时数码管显示1;

0010"

1011011"

此时数码管显示2;

0011"

1001111"

此时数码管显示3;

0100"

1100110"

此时数码管显示4;

0101"

1101101"

此时数码管显示5;

0110"

1111101"

此时数码管显示6;

0111"

0000111"

此时数码管显示7;

1000"

1111111"

此时数码管显示8;

1001"

1101111"

此时数码管显示9;

图11译码显示模块仿真波形图

3.5、报警模块仿真

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内如果人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;

仿真如下图。

图12报警模块仿真波形图

3.6、整体仿真

对电路整体进行仿真,得出如下仿真波形图12。

图中,当复位信号rst为高电平时,系统所有信号都清零;

当主持人按下开始键,抢答器开始工作。

图13整体仿真波形图

4、原理连线图

根据系统设计要求,将各模块连线得到如下系统框图。

主持人按下使能端EN,抢答器开始工作。

四位抢答者谁先按下抢答按钮,则抢答成功,对应的显示灯亮起,并通过显示电路模块显示参赛编号。

抢答成功的选手进入答题阶段,如果正确回答问题,则加分信号add有效,给相应的参赛组加分。

如果复位信号rst有效,使得抢答器在下一轮抢答前,其抢答成功的组别判断恢复为初始状态,开始新一轮抢答。

 

图14原理连线图

5、致谢

对于此次课程设计,首先我得诚挚的感谢我的指导老师,从设计、整改及论文的定稿过程中,自始至终都倾注着老师的心血。

老师以严谨的治学之道、宽厚仁慈的胸怀、积极乐观的生活态度,兢兢业业的工作作风为我树立了学习的典范,他们的教诲与鞭策将激励我在学习和生活的道路上励精图治,开拓创新。

他们渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。

我真诚地谢谢老师们的指导和关怀。

于个人,通过这次课程设计,我进一步加深了对电子设计自动化的了解。

并进一步熟练了对QuartusII软件的操作。

EDA这门课程也不像学习理论般那么空洞,有了更加贴切的了解及运用。

做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。

最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。

总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

6、详细仪器清单

名称

型号

数量

计算机

联想

1

QuartusII开发软件

9.0

EDA/SOPC实验开发系统

GW48-PK2

参考文献

[1]孙俊逸.EDA技术课程设计.华中科技大学出版社.2008.2-12

[2]潘松.EDA应用技术.北京理工大学出版社.2003

[3]徐志军.EDA技术与PLD设计[M].北京科学出版社.2002

[4]黄仁欣.EDA技术实用教程.清华大学出版社.2004

[5]崔建明.电工电子EDA仿真技术.北京高等教育出版社,2004

[6]曹昕燕、周风臣、聂春燕.EDA技术试验与课程设计.清华大学出版社.2007

[7]谢自美.电子线路设计实验测试.华中科技大学出版社.1999

[8]赵世强、许杰.电子电路EDA技术.西安电子科技大学出版社.2001

[9]江国强.EDA技术习题与实验.电子工业出版社.2012

[10]高有堂.EDA技术及应用实践.清华大学出版社.2006-08

附录

VHDL程序

1)抢答鉴别模块

libraryieee;

useieee.std_logic_1164.all;

entityqdjbis

port(rst:

instd_logic;

EN:

s0,s1,s2,s3:

LEDA:

outstd_logic;

LEDB:

LEDC:

LEDD:

false:

outstd_logic_vector(3downto0);

states:

outstd_logic_vector(3downto0));

endqdjb;

architectureoneofqdjbis

signaltmp:

std_logic_vector(3downto0);

signaltag:

std_logic;

begin

tmp<

=s0&

s1&

s2&

s3;

process(rst,EN,s0,s1,s2,s3,tmp)

ifrst='

1'

THEN

states<

="

;

LEDA<

='

0'

LEDB<

LEDC<

LEDD<

false<

tag<

elsifEN='

then

ifs0='

false(3)<

endif;

ifs1='

false

(2)<

ifs2='

false

(1)<

ifs3='

false(0)<

else

false<

iftag='

iftmp="

elsiftmp="

endif;

endprocess;

endone;

2)计时模块

useieee.std_logic_unsigned.all;

entityjsis

port(clk,rst,s,stop:

warn:

ta,tb:

bufferstd_logic_vector(3downto0));

endjs;

architectureoneofjsis

signalco:

std_logic;

p1:

process(clk,rst,s,stop,ta)

begin

orstop='

then

ta<

elsifclk'

eventandclk='

co<

ifs='

ifta="

co<

elseta<

=ta-1;

endprocessp1;

p2:

process(co,rst,s,stop,tb)

tb<

elsifco'

eventandco='

iftb="

thentb<

elsetb<

=tb-1;

endprocessp2;

3)计分模块

entityjfis

port(rst:

instd_logic;

add:

chose:

instd_logic_vector(3downto0);

aa2,aa1,aa0,bb2,bb1,bb0:

outstd_logic_vector(3downto0);

cc2,cc1,cc0,dd2,dd1,dd0:

outstd_logic_vector(3downto0));

endentityjf;

architectureartofjfis

process(rst,add,chose)is

variablea2,a1:

std_logic_vector(3downto0);

variableb2,b1:

variablec2,c1:

variabled2,d1:

if(rst='

)then

a2:

a1:

b2:

b1:

c2:

c1:

d2:

d1:

elsif(add'

eventandadd='

ifchose="

ifa1="

a1:

ifa2="

else

=a2+'

=a1+'

elsifchose="

ifb1="

b1:

ifb2="

=b2+'

=b1+'

ifc1="

c1:

ifc2="

=c2+'

=c1+'

ifd1="

d1:

ifd2="

=d2+'

=d1+'

aa2<

=a2;

aa1<

=a1;

aa0<

bb2<

=b2;

bb1<

=b1;

bb0<

cc2<

=c2;

cc1<

=c1;

cc0<

dd2<

=d2;

dd1<

=d1;

dd0<

endarchitectureart;

4)译码显示模块

entityymxsis

port(in4:

out7:

outstd_logic_vector(6downto0));

endymxs;

architectureartofymxsis

process(in4)

casein4is

when"

=>

out7<

whenothers=>

0000000"

endcase;

endarchitecture;

5)报警模块

entityalarmis

port(clk,i:

q:

outstd_logic);

endalarm;

architecturebehaveofalarmis

signalwarn:

signaln:

integerrange0to20;

q<

=warn;

process(clk)

ifclk'

ifi='

then

warn<

elsif(i='

andn<

=19)then

=notwarn;

n<

=n+1;

endprocess;

endbehave;

6)TOP模块

entitytopis

port(rst,en,ADD,s0,s1,s2,s3:

LEDA,LEDB,LEDC,LEDD:

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

当前位置:首页 > 小学教育 > 其它课程

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

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