VHDL语言四人抢答器Word格式文档下载.docx

上传人:b****1 文档编号:4331797 上传时间:2023-05-03 格式:DOCX 页数:19 大小:446.85KB
下载 相关 举报
VHDL语言四人抢答器Word格式文档下载.docx_第1页
第1页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第2页
第2页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第3页
第3页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第4页
第4页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第5页
第5页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第6页
第6页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第7页
第7页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第8页
第8页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第9页
第9页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第10页
第10页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第11页
第11页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第12页
第12页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第13页
第13页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第14页
第14页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第15页
第15页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第16页
第16页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第17页
第17页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第18页
第18页 / 共19页
VHDL语言四人抢答器Word格式文档下载.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VHDL语言四人抢答器Word格式文档下载.docx

《VHDL语言四人抢答器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《VHDL语言四人抢答器Word格式文档下载.docx(19页珍藏版)》请在冰点文库上搜索。

VHDL语言四人抢答器Word格式文档下载.docx

2.学习怎样用vhdl语言来描述自己的设计思路,调试硬件后,能够使产品实现功能。

3.进一步掌握用vhdl语言编写数字电路。

4.在做课题过程中,掌握多位共阴极扫描显示数码管的驱动及编码,学会使用和调试硬件。

四、设计背景

现代电子产品几乎渗透了社会的各个领域EDA技术是电子设计的发展趋势, 

EDA工具从数字系统设计的单一领域,应用范围己涉及模拟、微波等多个领域,可实现各个领域电子系统设计的测试、设计仿真和布局布线等。

设计者只要完成对电子系统的功能描述,就可利用计算机和EDA工具,进行设计处理,最终得到设计结果。

随着大规模集成电路技术和计算机技术的不断发展,即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。

不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。

从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。

抢答器是一种应用非常广泛的设备,在各种竞猜、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。

早期的抢答器只由几个三极管可控硅、发光管等组成,能通过发光管的指示辨认出选手。

现在大多数抢答器均使用单片机和数字集成电路,并增加了许多新的功能,如选手号码显示、抢按器或抢按后的计时、选手得分显示等功能。

五、使用工具:

装有QuartusII软件的PC、Cyclone系列FPGA开发板(ep2c5t144c8)

六、设计原理

根据设计要求,我们经过分析应用分模块的方式比较容易设计该抢答器,我们底层应用VHDL语言,顶层应用原理图的方式进行设计,然后通过仿真验证并不断修改完善设计。

模块:

(1)四人按键抢答模块:

设计为五个输入按键,其实S键为主持人控制抢答过程的按键,当有选手抢答后使其他人的按键无效。

然后根据抢答成功者的编号使对应LED灯点亮,同时输出一个状态让数码管显示抢答者编号。

主持人S键复位,开始下一轮抢答。

(2)计时模块:

在有人抢答后开始一个60秒的倒计时,并输出道数码管显示,CLK来自1HZ分频模块。

(3)计分模块:

在选手答题正确后通过外接ADD键给该选手加分,每次加十分,并输出到数码管显示,CLEAR键为清空所有选手分数。

(4)译码模块:

讲选手序号,倒计时以及选手分数显示出来,CLK由1KHz分频模块提供。

(5)1HZ与1KHz分频模块:

程序由FPGA板的50MHz频率编写。

7、设计结构

8、原理图:

九、模块程序

1、抢答模块

程序:

Libraryieee;

Useieee.std_logic_1164.all;

Useieee.std_logic_unsigned.all;

Useieee.std_logic_arith.all;

EntityQDis

Port(

s,clk:

instd_logic;

s0,s1,s2,s3:

states:

bufferstd_logic_vector(3downto0);

T:

outstd_logic;

LIANG:

XI:

bufferstd_logic_vector(3downto0));

EndQD;

ArchitectureaaofQDis

signals_0,s_1,s_2,s_3,l_1,l_2,l_3,l_4:

std_logic;

begin

process(s0,s1,s2,s3,s,clk)

begin

XI<

="

1111"

;

if(s='

0'

)thens_0<

='

s_1<

s_2<

s_3<

LIANG<

elsif(clk'

eventandclk='

1'

)then

if(s_0='

ors_1='

ors_2='

ors_3='

thennull;

elsifs0='

thens_0<

states<

0001"

1110"

elsifs1='

thens_1<

0010"

1101"

elsifs2='

thens_2<

0011"

1011"

elsifs3='

thens_3<

0100"

0111"

elsestates<

0000"

endif;

T<

=s_0ors_1ors_2ors_3;

endprocess;

endaa;

说明:

S为主持人复位键;

S0,S1,S2,S3:

四个抢答选手;

STATES:

抢答组号输出

T:

在S按下后使倒计时停止;

LIANG:

控制四个LED灯,点亮选手对应LED灯;

XI:

使另外四个LED灯熄灭;

2、计时模块

libraryieee;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_1164.all;

entityJSis

port(clk,s,T:

sw,gw:

endJS;

architectureaaofJSis

process(clk,s,T)

)thensw<

0110"

gw<

elsif(clk'

)then

if(T='

)thengw<

=gw;

sw<

=sw;

elsif(gw="

1001"

if(sw="

elsesw<

=sw-1;

endif;

else

gw<

=gw-1;

if(sw=0andgw=0)thensw<

endaa;

S:

按下后倒计时开始;

SW:

输出倒计时十位数;

GW:

输出倒计时百位数

3、计分模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYJFQIS

PORT(RST:

INSTD_LOGIC;

ADD:

CHOS:

INSTD_LOGIC_VECTOR(3DOWNTO0);

OUT1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITYJFQ;

ARCHITECTUREARTOFJFQIS

BEGIN

PROCESS(RST,ADD,CHOS)IS

VARIABLEPOINTS_A0:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_B0:

VARIABLEPOINTS_C0:

VARIABLEPOINTS_D0:

BEGIN

IFRST='

THEN

POINTS_A0:

POINTS_B0:

POINTS_C0:

POINTS_D0:

ELSIF(ADD'

EVENTANDADD='

)THEN

IFCHOS="

THEN

IFPOINTS_A0="

ELSE

=POINTS_A0+1;

ENDIF;

IFPOINTS_B0="

=POINTS_B0+1;

IFPOINTS_C0="

=POINTS_C0+1;

IFPOINTS_D0="

=POINTS_D0+1;

IFchos="

thenout1<

=POINTS_a0;

ELSIFchos="

=POINTS_b0;

=POINTS_c0;

=POINTS_D0;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREART;

RST:

分数清零按键;

ADD:

加分按键;

CHOS=STATES:

输入选手组号;

OUT1:

输出分数;

4、译码显示模块

entityYMis

port(a:

instd_logic_vector(3downto0);

b:

c:

clk1:

Y:

adres:

outstd_logic_vector(7downto0);

led7s:

outstd_logic_vector(7downto0));

endYM;

ARCHITECTUREsegledofYMis

signalS:

integerrange0to12;

signalD:

std_logic_vector(3downto0);

signalzero:

P1:

process(clk1)

begin

zero<

ifclk1'

eventandclk1='

then

ifS<

5then

S<

=S+1;

else

=1;

endif;

endprocessP1;

P2:

process(S)

caseSis

when1=>

D<

=a;

adres<

01111111"

when2=>

=b;

11011111"

when3=>

=c;

11101111"

when4=>

=Y;

11111101"

when5=>

=zero;

adres<

11111110"

whenothers=>

null;

endcase;

endprocessP2;

P3:

process(D)

caseDis

when"

=>

led7s<

11000000"

--0

11111001"

--1

10100100"

--2

10110000"

--3

10011001"

--4

0101"

10010010"

--5

10000010"

--6

11111000"

--7

1000"

10000000"

--8

10011000"

--9

endprocessP3;

endsegled;

A:

B:

倒计时十位;

C:

倒计时个位;

Y:

选手分数;

ADRES:

控制数码管位选;

LED7S:

控制数码管段选;

5、分频模块

entityFPis

port(clk:

inSTD_LOGIC;

clk1Hz:

outstd_logic);

endFP;

ARCHITECTUREsegledofFPis

PROCESS(clk)

VARIABLEcount:

INTEGERRANGE0TO49999999;

BEGIN

IFclk'

EVENTANDclk='

IFcount<

=24999999THEN

clk1Hz<

count<

=24999999时divls=0并且count加1

count:

=count+1;

ELSIFcount>

=24999999ANDcount<

=49999999THEN

ELSEcount:

=0;

ENDPROCESS;

ENDARCHITECTUREsegled;

(分频1HZ时将其中的数去掉三个9)

6、计分器ADD加分输入消抖模块

ENTITYXIAODIS

PORT(CLK,ADD:

INSTD_LOGIC;

ADD_EN:

OUTSTD_LOGIC);

ENDENTITY;

ARCHITECTUREBHVOFXIAODIS

PROCESS(CLK,ADD)

VARIABLECOUNT1:

INTEGERRANGE0TO100000;

IFADD='

IFRISING_EDGE(CLK)THEN

IFCOUNT1<

100000THENCOUNT1:

=COUNT1+1;

ELSECOUNT1:

=COUNT1;

IFCOUNT1=99999THENADD_EN<

ELSEADD_EN<

ELSECOUNT1:

END;

十:

引脚分配

11、设计结果验证

编译成功后下载到FPGA板上进行结果验证:

数码管显示06000;

按下S后,显示05900;

S0抢答后,显示1倒计时停止按下ADD显示10第一个LED灯点亮;

S1抢答后,显示2倒计时停止按下ADD显示10第二个LED灯点亮;

S2抢答后,显示3倒计时停止按下ADD显示10第三个LED灯点亮;

S3抢答后,显示4倒计时停止按下ADD显示10第四个LED灯点亮;

若按下RST键,所有选手得分清零。

十二:

总结

在这次的课程设计中,我对VHDL语言以及QUARTUSII软件的应用有了更深刻的认识。

一个个程序的编写及模块的生成锻炼了我的思维,让我对每个模块的功能、每段程序的作用有了更多的了解。

通过不断的思考,总的原理图才能够完成。

通过不断的出错与修改、完善,最终才能在FPGA上应用,我感觉付出都是值得的。

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

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2