抢答器的设计EDA课程设计.docx

上传人:b****5 文档编号:3744941 上传时间:2022-11-25 格式:DOCX 页数:15 大小:108.88KB
下载 相关 举报
抢答器的设计EDA课程设计.docx_第1页
第1页 / 共15页
抢答器的设计EDA课程设计.docx_第2页
第2页 / 共15页
抢答器的设计EDA课程设计.docx_第3页
第3页 / 共15页
抢答器的设计EDA课程设计.docx_第4页
第4页 / 共15页
抢答器的设计EDA课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

抢答器的设计EDA课程设计.docx

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

抢答器的设计EDA课程设计.docx

抢答器的设计EDA课程设计

EDA课程设计报告书

 

课题名称

抢答器的设计

姓名

王昆

学号

0812201-36

院系

物理与电信工程系

专业

电子信息工程

指导教师

周来秀讲师

 

2011年6月10日

一、设计任务及要求

1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~S3表示。

2.设置一个系统清除和抢答控制开关rst,该开关由主持人控制。

3.抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在LED和数码管上显示,同时提示灯亮。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如20秒)

5.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示20。

指导教师签名:

年月日

二、指导教师评语

 

指导教师签名:

年月日

三、成绩

 

验收盖章

年月日

抢答器的设计

王昆

(湖南城市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)

1设计目的

本次设计的目的就是了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。

通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创造能力。

通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标。

2设计的主要内容和要求

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。

当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。

若抢答时间内无人抢答,则报警灯亮。

回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。

因此要完成抢答器的逻辑功能,该电路应包括抢答器鉴别模块、抢答器计数模块、报警模块、译码模块、分频模块。

3整体设计方案

1、概述

将该任务分成五个模块进行设计,分别为:

抢答器鉴别模块、抢答器计时模块、报警模块、分频模块、译码模块。

2、抢答器鉴别模块

在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余的抢答信号封锁的功能。

其中有四个抢答信号s0、s1、s2、s3;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号warm。

3、抢答器计数模块

在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。

其中有抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。

4、报警模块

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内,人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk。

5、译码模块

在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。

6、分频模块:

在这个模块中主要实现抢答过程中所需的时钟信号。

7、顶层文件

在这个模块中是对前五个模块的综合编写的顶层文件。

4软件设计

4.1主电路图连线

图4.1主电路连线图

4.2子模块设计

4.2.1抢答鉴别模块

该模块主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余的抢答信号封锁的功能,并有四个抢答信号s0、s1、s2、s3;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号warm

图4.2抢答器鉴别元件图

VHDL源程序

libraryieee;--库头文件

useieee.std_logic_1164.all;--用了标准逻辑的IEEE第1164号文件,这个文件包括了VHDL中的经常用的许多东西

useieee.std_logic_unsigned.all;

entityxuanshouis--定义实体

port(rst,clk2:

instd_logic;

s0,s1,s2,s3:

instd_logic;--4个组

states:

bufferstd_logic_vector(3downto0);

light:

bufferstd_logic_vector(3downto0);

warm:

outstd_logic);

endxuanshou;

architectureoneofxuanshouis--定义了实体的一个结构体

signalst:

std_logic_vector(3downto0);

begin

p1:

process(s0,rst,s1,s2,s3,clk2)

begin

ifrst='0'then

warm<='0';st<="0000";

elsifclk2'eventandclk2='1'then--锁存,当有一组选中时其他组再抢答没作用

if(s0='1'orst(0)='1')andnot(st

(1)='1'orst

(2)='1'orst(3)='1')

thenst(0)<='1';

endif;

if(s1='1'orst

(1)='1')andnot(st(0)='1'orst

(2)='1'orst(3)='1')

thenst

(1)<='1';

endif;

if(s2='1'orst

(2)='1')andnot(st(0)='1'orst

(1)='1'orst(3)='1')

thenst

(2)<='1';

endif;

if(s3='1'orst(3)='1')andnot(st(0)='1'orst

(1)='1'orst

(2)='1')

thenst(3)<='1';

endif;

warm<=st(0)orst

(1)orst

(2)orst(3);

endif;

endprocessp1;

p2:

process(states(0),states

(1),states

(2),states(3),light)

begin

if(st="0000")thenstates<="0000";

elsif(st<="0001")thenstates<="0001";

elsif(st<="0010")thenstates<="0010";

elsif(st<="0100")thenstates<="0011";

elsif(st<="1000")thenstates<="0100";

endif;

light<=st;

endprocessp2;

endone;

4.2.2计数模块

该模块主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警,抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta

图4.3计数元件图

VHDL源程序

libraryieee;--库头文件

useieee.std_logic_1164.all;--用了标准逻辑的IEEE第1164号文件

useieee.std_logic_unsigned.all;

entityJSis----定义实体

port(clk1,rst,start,stop:

instd_logic;

ta,tb:

bufferstd_logic_vector(3downto0));

endJS;

architectureoneofJSis–定义结构体

signalco:

std_logic;

begin

p1:

process(clk1,rst,start,stop,ta)

begin

ifrst='0'orstop='1'then

ta<="0000";--清零,倒计时60秒

elsifclk1'eventandclk1='1'then

co<='0';

ifstart='1'then

ifta="0000"then

ta<="1001";co<='1';

elseta<=ta-1;--置数控制,如果不想要60可以从TA,TB输入倒计时秒数

endif;

endif;

endif;

endprocessp1;

p2:

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

begin

ifrst='0'orstop='1'then

tb<="0010";

elsifco'eventandco='1'then

ifstart='1'then

iftb="0000"thentb<="0011";--遇到9则自动变为0,否则减一

elsetb<=tb-1;

endif;

endif;

endif;

endprocessp2;

endone;

4.2.3报警模块

该模块主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内,人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk

图4.4报警元件图

VHDL源程序

libraryieee;--库头文件

useieee.std_logic_1164.all;--用了标准逻辑的IEEE第1164号文件

entityshengyinis6port(rst:

instd_logic;

warn:

instd_logic;

clk:

instd_logic;

ta,tb:

inintegerrange0to9;

stop:

instd_logic;

alm:

outstd_logic);

end;

architecturebhvofshengyinis--定义了实体的一个结构体

begin

process(warn,ta,tb,stop,clk)

begin

ifrst='0'then

alm<='0';

elsifstop='1'then

alm<='0';

elsifta=0andtb=0then

alm<=clk;

elsifwarn='1'then

alm<=clk;

elsealm<='0';

endif;

endprocess;

end;

4.2.4七段译码器模块

该模块中主要实现抢答过程中将BCD码转换成7段的功能。

VHDL源程序

LIBRARYIEEE;--库头文件

USEIEEE.STD_LOGIC_1164.ALL;--用了标准逻辑的IEEE第1164号文件

ENTITYYMQIS

PORT(bcd:

INSTD_LOGIC_VECTOR(3DOWNTO0);

dout:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDYMQ;

ARCHITECTURErtlOFYMQIS--定义了实体的一个结构体

BEGIN

PROCESS(bcd)

BEGIN

CASEbcdIS

WHEN"0000"=>dout<="1000000";

WHEN"0001"=>dout<="1111001";

WHEN"0010"=>dout<="0100100";

WHEN"0011"=>dout<="0110000";

WHEN"0100"=>dout<="0011001";

WHEN"0101"=>dout<="0010010";

WHEN"0110"=>dout<="0000010";

WHEN"0111"=>dout<="1111000";

WHEN"1000"=>dout<="0000000";

WHEN"1001"=>dout<="0010000";

WHENOTHERS=>dout<="1111111";

ENDCASE;

ENDPROCESS;

ENDrtl;

图4.5译码元件图

4.2.5分频模块(用500HZ的时钟和1HZ的计数时钟)

该模块主要实现抢答过程中所需的时钟信号。

VHDL源程序

libraryieee;--库头文件

useieee.std_logic_1164.all;--用了标准逻辑的IEEE第1164号文件

entitydiv100is

port(

clk:

instd_logic;

clk100:

outstd_logic);

enddiv100;

architectureartofdiv100is--定义了实体的一个结构体

signalnum:

integerrange0to99;

signaltemp:

std_logic;

begin

process(clk)

begin

ifclk'eventandclk='1'then

ifnum=99then

num<=0;temp<=nottemp;

elsenum<=num+1;

endif;

clk100<=temp;

endif;

endprocess;

endart;

图4.6Div100元件图

2.DIV50M:

这是一个50M分频,将50MHZ的信号分为1HZ。

图4.7分频元件图

VHDL源程序

LIBRARYIEEE;--库头文件

USEIEEE.STD_LOGIC_1164.ALL;--用了标准逻辑的IEEE第1164号文件

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYfenpinIS

PORT(clk:

INSTD_LOGIC;

clk50:

OUTSTD_LOGIC);

ENDfenpin;

ARCHITECTURErtlOFfenpinIS--定义了实体的一个结构体

SIGNALcount:

STD_LOGIC_VECTOR(25DOWNTO0);

BEGIN

PROCESS(clk)

BEGIN

IF(clk'eventANDclk='1')THEN

IF(count="10111110101111000010000000")THEN

Count<="00000000000000000000000000";

ELSE

Count<=count+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk)

BEGIN

IF(clk'eventANDclk='1')THEN

IF(count="10111110101111000010000000")THEN

clk50<='1';

ELSE

clk50<='0';

ENDIF;

ENDIF;

ENDPROCESS;

END;

5系统仿真

5.1抢答鉴别仿真

抢答时需要一个允许开始抢答信号,设为states,该信号输入后,指示灯亮,信号为light,提示选手开始抢答,为了鉴别抢答者,设置s0,s1,s2,s3为了使系统重新进入抢答状态,还需要一个复位信号,设置为rst。

在图中可以看出,s0的速度最快,但明显有一点抢先,紧随其后的依次是s1,s2,s3,这3人均没有抢先,而且可以看出,抢答开始后,4个灯亮。

图5.1抢答鉴别仿真图

5.2计数仿真

计时信号设为十位和个位信号tb,ta以及抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;

从图中可以看出,每10个ta使tb改变1,stop时停止计时。

图5.2计数仿真图

5.3报警仿真

当主持人按下控制键,有限时间内人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk

图5.3报警仿真图

5.4顶层仿真图

顶层模块是以上几个模块综合起来,并且实现整个系统的功能

由图可以看出,当抢答开始后,如果限制时间,即20s内无人抢答,则输出超时报警信号。

超前抢答时,也会报警

如图,s0明显有些抢先,虽然他的速度最快,然后依次是s2,s1,s3,所以s2才是有效的最快抢答成功者,并且可以看到,灯在选手抢答时亮起,声音信号也在抢答时响起。

图5.4顶层仿真图

6使用说明

抢答器器系统的设计已全部完成,能实现预期的效果,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题,当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。

若抢答时间内无人抢答,则报警灯亮。

回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。

抢答器系统的设计中体现了vhdl覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点,本设计在实用方面具有一定的价值。

7设计总结

上机实践中,我发现一不小心就会调用错误,说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。

在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块进行调就可以了,充分体现了结构化编程的优势。

在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。

在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。

用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。

通过的紧张工作,完成了我的设计任务——抢答器的设计。

通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。

对软件工程的一些错误理解有了重新的认识。

在设计过程中,遇到了很多问题,在解决这些问题的过程中,对它们有了重新的正确认识。

更重要的是在设计过程中培养锻炼了我科学严谨的学习、工作作风和认真的态度。

本次设计课不仅仅培养了我们的实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。

此次系统设计给我提供了一个既动手又动脑、自学、独立实践的机会,使我养成了勤翻阅各种相关资料的习惯,将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。

参考文献

[1]席砺莼,董丽梅,田梦周,闫宏伟.基于VHDL语言的抢答器系统设计[J].现代电子技术.2003(03):

79-81.[2]张立,张光新,柴磊,周泽魁.FPGA在多功能抢答器系统中的应用[J].仪器仪表学报.2005(S2):

743-745.[3]林愿.基于CPLD/FPGA的抢答器系统的设计实现[J].国外电子元器件.2007(07):

26-29.[4]黄建新,刘迈,谭克俊.基于FPGA芯片设计抢答器的研究[J].吉林化工学院学报.2003(03):

52-55.[5]黄再银.多功能抢答器的设计[J].电子技术应用.2002(08):

71-73.

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

当前位置:首页 > 高中教育 > 初中教育

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

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