基于FPGA四路电子抢答器设计
更新时间:2023-07-28 19:16:01 阅读量: 实用文档 文档下载
EDA课程设计四路电子抢答器设计
基于FPGA四路电子抢答器设计
基于FPGA四路电子抢答器设计
摘要:介绍一种基于FPGA的抢答器设计,给出了顶层电路原理图和主模块的部分VHDL源程序。利用MAX+PLUSⅡ开发平台完成了编译、仿真,并下载到EPF10K10LC84-4器件中进行测试。该抢答器不仅能实现互锁、自锁和倒计时功能,而且能用声音、数码管准确提示抢答的优先结果和犯规情况,具有广泛的应用前景。
关键词:抢答器;FPGA;VHDL;仿真
EDA课程设计四路电子抢答器设计
Abstrsct :This paper introduces the design of answering racer based on FPGA.The toplayer schematic and parts of VHDL source
Program are presented.Its encoding and simulation are compeleted with MAX+PLUSⅡ.The program is tested by EPF10LC84-4.The function of interlock,self lock and invert counter is performed with sound and BCD-TO-SEVEN-SEGMENT showwing the priority and rule-broken.
Key worlds:answering racer;FPGA;VHDL;simulation
一、引言
现场可编程门阵列(简称FPGA)是20世纪80年代末出现的高密度可编程逻辑器件,采用基于静态随机存储器的FPGA是易失性的,每次重新加电,FPGA都要重新装入配置数据。
突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据,即可令其完成不同的硬件功能[1]。本文利用Max+plusⅡ软件作为开发工具,设计了一种基于FPGA的抢答器。该抢答器具有外围电路少,系统功能扩展性强,大
EDA课程设计四路电子抢答器设计
大缩短了产品的研发周期,提高了设计的可靠性和成功率。
VHDL语言是一种用于电路设计的高级语言。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体分成外部和内部,既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
二、设计要求
抢答器主要由抢答模块、计时模块、选择模块,位循环模块和译码模块组成。在整个抢答器中主持人在抢答前设置好抢答时间,在复位开始按键按下后,抢答器开始倒计时,若在计时时间内无人抢答,则抢答器报警提示,若在计时过程中有人抢答,则数码管显示第一个抢答的人的编号,同时停止计时。抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。
(1) 抢答器可容纳四位选手使用。
(2)电路具有第一抢答信号的鉴别和清零功能。在主持人将系统复位并发出抢答指令后,抢答开始,若参赛选手按抢答按钮,则该组指示灯亮并用显示器显示选手的号码,此时,电路具备自锁功能,使其它抢答按钮不起作用。如果无人抢答,主持人可以按复位键,开始新一轮的抢答。
三、 设计方案
1、抢答锁存模块;
在这个模块中主要实现抢答过程中的抢答功能。在抢答开始后,当任意一路抢答器按下后,信号输入并进行锁存,这时其它抢答按键再按下也不起作用。此
EDA课程设计四路电子抢答器设计
模块有A、B、C、D四路抢答输入信号;复位信号R;输出报警信号BJ;数据输出信号Y。
2、抢答器计时模块:
在这个模块中主要实现抢答过程中的计时功能。在抢答开始主持人按下复位键后进行60秒的倒计时,并且在60秒倒计时后无人抢答显示超时并报警,若有选手抢答则计时停止,主持人也可以手动设置计时时间。此模块包含时钟信号CLK;系统复位信号R;修改时间使能信号EN;无人抢答警报信号BJ;有人抢答停止计时信号ST;时间设置输入十位和个位信号cg,cs;计时十位和个位输出信号SW,GW。
3、数据选择模块:
在这个模块中主要实现抢答过程中的数据循环显示功能,通过SEL信号的循环输入,从而控制数码管的循环显示,利用人眼的视觉停留使人感觉数码管是同时常亮的。此模块包含输入显示位控制信号SEL;数据输入信号H,G,S;数据输出信号Z 。
4、译码模块:
在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。在本 次课设中主要用于对时间的个位、十位的数值进行相应的译码,使其在数码 管上能显示出正常数字。此模块包含输入信号SJ,输出信号Y。
5、位循环模块:
实现抢答过程中对数码管扫描显示位的控制。在本次课设中共利用了三个数码管,所以将SEL设置在000,001,010三个数之间循环,使得数 码管仅显示后三位。此模块包含CLK控制信号,复位控制信号R,输出信号SEL。
四、子模块设计与仿真
(一)抢答锁存模块
1、VHDL源程序
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY QDMK IS
EDA课程设计四路电子抢答器设计
PORT(A,B,C,D:IN std_logic;
R:IN std_logic;
SIGNAL CLK:IN std_logic;
BJ:OUT std_logic;
Y:buffer std_logic_vector(6 DOWNTO 0));
END QDMK;
ARCHITECTURE behave OF QDMK IS
BEGIN
PROCESS(A,B,C,D,R,CLK)
BEGIN
IF R='1'THEN
Y<="0000000";
BJ<='0';
ELSIF CLK'event AND CLK='1'THEN
IF Y<="0000000" THEN
IF A='1' THEN
Y<="0110000";
ELSIF B='1' THEN
Y<="1101101";
ELSIF C='1' THEN
Y<="1111001";
ELSIF D='1' THEN
Y<="0110011";
END IF;
ELSE NULL;
END IF;
BJ<=A OR B OR C OR D;
END IF;
END PROCESS;
END behave;
2、仿真图
EDA课程设计四路电子抢答器设计
由图中可看出在复位信号R从高电平降到低电平后,抢答器开始正常工作,A最先抢答,这时开始报警,数码管输出显示1,说明A最先抢答。
(二)计时模块
1、VHDL源程序
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY JS IS
PORT(R,ST,EN,CLK:IN std_logic;
cg,cs:IN std_logic_vector(3 DOWNTO 0);
GW,SW:BUFFER std_logic_vector(3 DOWNTO 0);
BJ:OUT std_logic);
END JS;
ARCHITECTURE behave OF JS IS
BEGIN
PROCESS(R,EN,ST,CLK)
BEGIN
IF ST='0'THEN
IF R='1'THEN
IF EN='1'THEN
GW<=cg;
SW<=cs;
BJ<='0';
ELSE GW<="0000";
SW<="0110";
BJ<='0';
END IF;
ELSIF CLK'EVENT AND CLK='1'THEN
IF GW<="0000"THEN
GW<="1001";
IF SW="0000"THEN
SW<="0110";
ELSE SW<=SW-1;
END IF;
ELSE GW<=GW-1;
END IF;
IF GW="0000"AND SW<="0000"THEN
GW<="0000";
SW<="0110";
BJ<='1';
EDA课程设计四路电子抢答器设计
END IF;
END IF;
ELSE BJ<='0';
END IF;
END PROCESS;
END behave;
2、仿真图
从图中可看出,在复位信号为1时,始能信号EN为1,这时计时时间改变为cs,cg中输入的06秒,在复位信号变为0后开始计时,在计时时间到达0时由于无人抢答(由停止信号ST控制),故产生报警信号开始报警。在停止信号为1后,停止计时,在停止信号为0时,计时再次开始。
(三)数据选择模块
1、VHDL源程序
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY XZMK IS
PORT(SEL:IN std_logic_vector(2 DOWNTO 0);
H,S,G:IN std_logic_vector(6 DOWNTO 0);
Z:OUT std_logic_vector(6 DOWNTO 0));
END XZMK;
ARCHITECTURE behave OF XZMK IS
BEGIN
WITH SEL SELECT
Z<=H when"000",
G when"001",
S when"010",
EDA课程设计四路电子抢答器设计
"0000000" when others;
END behave;
2、仿真图
从图中可看出,在SEL信号为2时,输出计时时间的十位(S信号),在SEL信号为1时,输出计时时间的个位(G信号),在SEL信号为0时,输出最先抢答的抢答器的编号(H信号)。
(四)译码模块
1、VHDL源程序
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY YMMK IS
PORT(SJ:IN std_logic_vector(3 DOWNTO 0);
Y:OUT std_logic_vector(6 DOWNTO 0));
END ENTITY;
ARCHITECTURE behave OF YMMK IS
BEGIN
PROCESS(SJ)
BEGIN
CASE SJ IS
WHEN"0000"=>Y<="1111110";
WHEN"0001"=>Y<="0110000";
WHEN"0010"=>Y<="1101101";
WHEN"0011"=>Y<="1111001";
WHEN"0100"=>Y<="0110011";
WHEN"0101"=>Y<="1011011";
WHEN"0110"=>Y<="1011111";
WHEN"0111"=>Y<="1110000";
WHEN"1000"=>Y<="1111111";
WHEN"1001"=>Y<="1110011";
EDA课程设计四路电子抢答器设计
WHEN OTHERS=>Y<="0000000";
END CASE;
END PROCESS;
END behave;
2、仿真
从图中可看出,本模块对输入的BCD码信号(SJ信号)进行了编译,输出信号Y,使其能在数码管上对应显示出相应的数值。
(五)位循环模块
1、VHDL源程序
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY SEL IS
PORT(CLK,R:IN std_logic;
SEL:buffer std_logic_vector(2 DOWNTO 0));
END SEL;
ARCHITECTURE behave OF SEL IS
BEGIN
PROCESS(CLK,R)
BEGIN
IF R='1' THEN
SEL<="000";
ELSIF CLK'EVENT AND CLK='1'THEN
IF SEL="010"THEN
SEL<="000";
EDA课程设计四路电子抢答器设计
ELSE SEL<=SEL+1;
END IF;
END IF;
END PROCESS;
END behave;
2、仿真
从图中看出,在复位开始信号为1时不工作,在为0后开始工作,SEL信号在0-2这三个数内随CLK信号的变化循环,实现数码管的循环显示。
五、完整电路设计与分析
(一)主电路图
下图为具有完整抢答器功能的结构图,其中用到了抢答模块一个,计时模块一个,
译码模块两个,选择模块一个,位循环模块一个。共有17个输入,11个输出。
EDA课程设计四路电子抢答器设计
(二)时序仿真图
下图为整个模块的时序仿真图,由图中可看出,在复位信号为0后,抢答器开始工作,在有抢答信号后抢答器报警,数码管轮流显示计时时间及最先抢答的抢答器对应的号码。
(三)芯片引脚分布图
下图为将程序下载到芯片前设置的引脚分布。
EDA课程设计四路电子抢答器设计
六、性能测试与分析
将R键拨到0观察数码管是否开始从60倒计时,然后再将R键拨回1,之后将使能信号EN拨至1,将cs,cg设置为想要输入的时间,然后将R拨至0,观察数码管是否显示修改过之后的时间,并从设置好的时间开始计时。在计时功能验证完成后,按下抢答信号,此时抢答器发出警报声,并在数码管上显示出最先抢答的组对应的编号,说明抢答器功能正常。
七、实验设备
装有QuartusⅡ的计算机,教学实验箱,导线若干。
八、心得体会
在EDA技术中最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术。该技术只需要通过计算机就能对所设计的电子系统从不同层次的性能特点上,进行一系列准确的测试和仿真,大大的方便了我们的设计,避免了受现实中有限的器件的限制。
EDA课程设计四路电子抢答器设计
在本次课程设计中,我做的是四路抢答器。在最开始的一个礼拜,我先是从网络上找到了类似题目的课程设计,参考并阅读了他人的程序,然后再在电脑上按模块编写成序,编写完成后进行了仿真。在编写程序的过程中,我发现自己在对VHDL语言的掌握上还有很多欠缺,程序也是经过了许多遍的修改之后,才做到了在尽可能简练的基础上将功能完整实施出来。在自模块编写完成后我又开始进行了完整电路的设计,在电路连接完成后进行了时序仿真,在第一次仿真完成后我发现电路仿真结果与预期所设想的还存在一些差距,经检查发现是计时模块有一点问题,在经过改正之后,终于仿真出理想的时序图。
在这次课程设计中,我体会到了要想完成一个完整的设计是多么复杂与不易。通过这次课设,锻炼了我进行编程以及设计的能力,也让我认识到了自己的不足,更坚定了我认真学习的决心。
正在阅读:
基于FPGA四路电子抢答器设计07-28
2016浙江省法制办行政执法网上机考考试在线题库10套真题试卷(3)03-10
Linux服务器批量巡检脚本使用说明04-20
基于MATLAB的锅炉水温与流量串级控制系统的设计03-28
江苏省法制办城管执法文书格式110-02
医药企业管理学光盘-案例辨析等04-28
2015年浙江省行政执法资格考试多选题库04-09
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 四路
- 抢答器
- 基于
- 设计
- 电子
- FPGA
- 生鲜电商模式变革--基于微信O2O解决方案
- 马克思主义基本原理概论(2018新版)前四章课后思考题答案
- 实验1 数据库设计与实现
- 伸筋接骨胶囊改善骨折(气滞血瘀证)的随机、双盲、多中心平行对照Ⅲ期临床研究_卢勇
- 课题一 起动型蓄电池
- 2016年华南师范大学法学院00410国际法学复试笔试仿真模拟题
- 国产经典电影介绍
- 2015审定新人教版小学数学五年级下册数学第五单元《图形的运动三》测试卷含答案
- 成立黄河金三角高职教育集团的可行性分析
- 牛津小学英语4A期末复习归类
- 世界奢侈品之名表
- 开关柜母排安装工艺规程
- 兰花科创2017年年度报告摘要
- 《公共政策概论》形考册答案
- 教学反思的主要方法
- 趣味运动会策划书
- 国家电网公司表彰奖励工作管理办法
- 16位ALUVHDL实现源程序
- 浅谈中国传统文化在现代设计中的运用
- 苏教版小学语文三年级上册教案