多路抢答器设计eda课程设计毕设论文.docx

上传人:b****5 文档编号:4946131 上传时间:2022-12-12 格式:DOCX 页数:19 大小:344.50KB
下载 相关 举报
多路抢答器设计eda课程设计毕设论文.docx_第1页
第1页 / 共19页
多路抢答器设计eda课程设计毕设论文.docx_第2页
第2页 / 共19页
多路抢答器设计eda课程设计毕设论文.docx_第3页
第3页 / 共19页
多路抢答器设计eda课程设计毕设论文.docx_第4页
第4页 / 共19页
多路抢答器设计eda课程设计毕设论文.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

多路抢答器设计eda课程设计毕设论文.docx

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

多路抢答器设计eda课程设计毕设论文.docx

多路抢答器设计eda课程设计毕设论文

目录

目录1

一、方案设计与论证4

二、单元电路设计5

(一)抢答鉴别模块5

(二)计时模块7

(三)数据选择模块9

(四)报警模块11

(五)译码模块13

(六)分频模块14

(七)顶层文件16

(八)主电路连线图19

(九)将程序下载到芯片FLEX—EPF10LC84-4上,引脚图如下19

三、器件编程与下载20

四、性能测试与分析20

五、实验设备20

六、心得体会21

七、参考文献21

程序设计流程图

一、方案设计与论证

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

抢答器鉴别模块、抢答器计时模块、抢答器记分模块、分频模块、译码模块、数选模块、报警模块,最后是撰写顶层文件。

1、抢答器鉴别模块:

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

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

2、抢答器计时模块:

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

其中有抢答时钟信号clk2;系统复位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。

3、数据选择模块:

在这个模块中主要实现抢答过程中的数据输入功能,输入信号a[3..0]、b[3..0]、c[3..0];计数输出信号s;数据输出信号y;计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。

4、报警模块:

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

5、译码模块:

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

6、分频模块:

在这个模块中主要实现抢答过程中实现输出双脉冲的功能。

7、顶层文件:

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

抢答器的设计分析

按照要求,我们可以将整个系统分为四个主要模块:

抢答鉴别模块;抢答计时模块;抢答计分模块;译码显示模块。

对于需显示的信息,需要增加或外接译码器,进行显示译码。

考虑到实验开发平台提供的输出显示资源的限制,我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。

整个系统的大致组成框图如图2.1所示。

 

图2.1

2电子抢答器的结构原理

  2.1电子抢答器的整体结构

  电子抢答器的整体结构如图1所示。

它包括鉴别与锁存模块、定时与犯规设置模块以及计分模块。

二、单元电路设计

(一)抢答鉴别模块

1、VHDL源程序

libraryieee;--抢答鉴别模块

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityqdjbis

port(rst,clk2:

instd_logic;

s0,s1,s2,s3:

instd_logic;

states:

bufferstd_logic_vector(3downto0);

tmp:

outstd_logic);

endqdjb;

architectureoneofqdjbis

signalst:

std_logic_vector(3downto0);

begin

p1:

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

begin

ifrst='0'then

tmp<='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;

tmp<=s0ors1ors2ors3;

endif;

endprocessp1;

p2:

process(states(0),states

(1),states

(2),states(3))

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;

endprocessp2;

endone;

2、仿真图:

抢答鉴别模块图

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

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

(二)计时模块

1、VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityjsis

port(clk,rst,s,stop:

instd_logic;

warn:

outstd_logic;

ta,tb:

bufferstd_logic_vector(3downto0));

endjs;

architectureoneofjsis

signalco:

std_logic;

begin

p1:

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

begin

ifrst='0'orstop='1'then

ta<="0000";

elsifclk'eventandclk='1'then

co<='0';

ifs='1'then

ifta="0000"then

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

elseta<=ta-1;

endif;

endif;

endif;

endprocessp1;

p2:

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

begin

ifrst='0'orstop='1'then

tb<="0010";

elsifco'eventandco='1'then

ifs='1'then

iftb="0000"thentb<="0011";

elsetb<=tb-1;

endif;

endif;

endif;

endprocessp2;

endone;

2、仿真图

计时模块图

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

其中有抢答时钟信号clk2;系统复位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。

(三)数据选择模块

1、VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

entitysjxzis

port(a,b,c:

instd_logic_vector(3downto0);

clk2,rst:

instd_logic;

s:

outstd_logic_vector(1downto0);

y:

outstd_logic_vector(3downto0));

endsjxz;

architecturebody_chooserofsjxzis

signalcount:

std_logic_vector(1downto0);

begin

s<=count;

process(clk2,rst)

begin

if(rst='0')thencount<="00";

elsif(clk2'eventandclk2='1')then

if(count>="10")then

count<="00";

elsecount<=count+1;

endif;

endif;

casecountis

when"00"=>y<=a;

when"01"=>y<=b;

when"10"=>y<=c;

whenothers=>null;

endcase;

endPROCESS;

endbody_chooser;

2、仿真图

数据选择模块图

在这个模块中主要实现抢答过程中的数据输入功能,输入信号a[3..0]、b[3..0]、c[3..0];计数输出信号s;数据输出信号y;计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。

(四)报警模块

1、VHDL源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYALARMIS

PORT(CLK,I:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

ENDALARM;

ARCHITECTUREBEHAVEOFALARMIS

SIGNALWARN:

STD_LOGIC;

SIGNALN:

INTEGERRANGE0TO20;

BEGIN

Q<=WARN;

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFI='0'THEN

WARN<='0';

ELSIF(I='1'ANDN<=19)THEN

WARN<=NOTWARN;

N<=N+1;

ELSE

WARN<='0';

ENDIF;

ENDIF;

ENDPROCESS;

ENDBEHAVE;

2、仿真图

报警模块图

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

(五)译码模块

1、VHDL源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYYMQIS

PORT(AIN4:

INSTD_LOGIC_VECTOR(3DOWNTO0);

DOUT7:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDYMQ;

ARCHITECTUREARTOFYMQIS

BEGIN

PROCESS(AIN4)

BEGIN

CASEAIN4IS

WHEN"0000"=>DOUT7<="1111110";--0

WHEN"0001"=>DOUT7<="0110000";--1

WHEN"0010"=>DOUT7<="1101101";--2

WHEN"0011"=>DOUT7<="1111001";--3

WHEN"0100"=>DOUT7<="0110011";--4

WHEN"0101"=>DOUT7<="1011011";--5

WHEN"0110"=>DOUT7<="1011111";--6

WHEN"0111"=>DOUT7<="1110000";--7

WHEN"1000"=>DOUT7<="1111111";--8

WHEN"1001"=>DOUT7<="1111011";--9

WHENOTHERS=>DOUT7<="0000000";

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREART;

2、仿真图

译码模块图

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

 

(六)分频模块

1、VHDL源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYclkdivIS

PORT(clk2:

INSTD_LOGIC;

clk16:

OUTSTD_LOGIC);

ENDclkdiv;

ARCHITECTURErtlOFclkdivIS

SIGNALcount:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk2)

BEGIN

IF(clk2'eventANDclk2='1')THEN

IF(count="1111")THEN

Count<="0000";

ELSE

Count<=count+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk2)

BEGIN

IF(clk2'eventANDclk2='1')THEN

IF(count="1111")THEN

clk16<='1';

ELSE

clk16<='0';

ENDIF;

ENDIF;

ENDPROCESS;

ENDrtl;

2、仿真图

分频模块图

在这个模块中主要实现抢答过程中实现输出双脉冲的功能。

 

(七)顶层文件

1、VHDL源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityqiangdaqiis

port(clk,clk2,s,s0,s1,s2,s3,stop,rst:

instd_logic;

n,k,q_out:

outstd_logic;

m:

outstd_logic_vector(1downto0);

a,b,c,d,e,f,g:

outstd_logic);

endqiangdaqi;

architecturebhvofqiangdaqiis

componentqdjbis

port(clk2,rst:

instd_logic;

s0,s1,s2,s3:

instd_logic;

tmp:

outstd_logic;

states:

outstd_logic_vector(3downto0));

endcomponent;

componentjsis

port(clk,rst,s,stop:

instd_logic;

warn:

outstd_logic;

ta,tb:

bufferstd_logic_vector(3downto0));

endcomponent;

componentsjxzis

port(clk2,rst:

instd_logic;

s:

outstd_logic_vector(1downto0);

a,b,c:

instd_logic_vector(3downto0);

y:

outstd_logic_vector(3downto0));

endcomponent;

componentymqis

port(ain4:

instd_logic_vector(3downto0);

dout7:

outstd_logic_vector(6downto0));

endcomponent;

componentalarmis

port(clk,i:

instd_logic;

q:

outstd_logic);

endcomponent;

signalstates_out,ta_out,tb_out,y_out:

std_logic_vector(3downto0);

signalledout:

std_logic_vector(6downto0);

signalw:

std_logic;

begin

a<=ledout(6);b<=ledout(5);c<=ledout(4);d<=ledout(3);e<=ledout

(2);f<=ledout

(1);g<=ledout(0);

u1:

qdjbportmap(clk2,rst,s0,s1,s2,s3,tmp=>k,states=>states_out);

u2:

jsportmap(clk,rst,s,stop,warn=>n,ta=>ta_out,tb=>tb_out);

u3:

sjxzportmap(clk2=>clk2,rst=>rst,s=>m,a=>states_out,b=>ta_out,c=>tb_out,y=>y_out);

u4:

ymqportmap(ain4=>y_out,DOUT7=>ledout);

u5:

alarmportmap(clk2,s,q_out);

endbhv;

2、仿真图

顶层文件图

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

(八)主电路连线图

(九)将程序下载到芯片FLEX—EPF10LC84-4上,引脚图如下

三、器件编程与下载

将编译好的模块程序下载到CPLD中(注:

device选取要与硬件对应,否则会导致实验失败),连线做硬件实验。

四、性能测试与分析

按下rst键清零,按下s键,观察数码管是否开始倒计时,扬声器是否发出报警声,按下s0,观察数码管是否显示1和抢答的时间,再按s1,s2.s3均不改变显示,按下rst键,观察是否清零,再按s键,不按别的,直到计时时间到,观察是否显示00,扬声器是否发出报警。

五、实验设备

计算机,EL教学实验箱

六、心得体会

通过这次对抢答器的设计和实践,学到了很多的东西,不仅巩固了以前所学的知识,而且学到了书本上没有的东西,在调试中每修改一个小的错误,自己心中的成就感就徒增,特别是把一个程序模块转化成原理图时,自己从课本看到是一段话“首先打开要转换的VHDL文件,选择File-Creat/Update-Creatsymbel/FilesforcurrentFile命令,即可将当前文件变成一个元件符号SINGT,然后再于另一工程中调用此元件,但必须注意,此工程和已生成的都在同一文件夹中”———课本P-130页,这一段话一开始让我不知其解,后到XX搜索,发现也是这几句话,后看到软件中的File中”Block-Diagram/SchematicFile”,又去查英语字典,原来要先建立空白的原理图再到工程中添加已生成的模块图,觉的书本写的很简洁,但实际操作起来却是另外一种感觉,真是“纸上得到终觉浅,绝知此事要躬行”这句话的含义。

在这次设计,把理论与实践信结合起来,在老师的指导下和视频学习下,有些关键的问题才得以解决,锻炼了自己的能力,对以后走的路有了更清楚的认识,同时有了更多的信心。

七、参考文献

[1]、江国强:

《EDA技术习题与实验》,电子工业出版社

[2]、曹昕燕,周风臣,聂春燕:

《EDA技术试验与课程设计》,清华大学出版社

[3]、黄仁欣:

《EDA技术实用教程》,清华大学出版社

指导教师评语及设计成绩

评语

 

 

课程设计成绩:

指导教师:

日期:

年月日

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

当前位置:首页 > 高等教育 > 军事

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

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