您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于VHDL的四路抢答器
《EDA技术综合设计》课程设计报告报告题目:基于VHDL的四路抢答器作者所在系部:电子工程系作者所在专业:作者所在班级:作者姓名:指导教师姓名:完成时间:目录一概述………………………………………………………………………3二方案设计与论证………………………………………………………………31三单元电路设计…………………………………………………………………33.1抢答鉴别模块……………………………………………………33.1.1源程序设计…………………………………………………………43.1.2仿真图………………………………………………………………43.2抢答计时模块…………………………………………………………53.2.1源程序设计…………………………………………………………53.2.2仿真图………………………………………………………………63.3数据选择模块……………………………………………………………63.3.1源程序设计…………………………………………………………63.3.2仿真图………………………………………………………………73.4报警模块…………………………………………………………………73.4.1源程序设计…………………………………………………………73.4.2仿真图………………………………………………………………83.5分频模块……………………………………………………………………83.5.1源程序设计…………………………………………………………83.5.2仿真图…………………………………………………………………93.6顶层文件…………………………………………………………………93.6.1源程序设计……………………………………………………………93.6.2仿真图………………………………………………………………103.7顶层文件……………………………………………………………………103.8主电路连线图………………………………………………………………10四、器件编程与下载……………………………………………………………11五性能测试与分析………………………………………………………………12(要围绕设计要求中的各项指标进行)六实验设备………………………………………………………………………12七心得体会………………………………………………………………………12八参考文献………………………………………………………………………13课程设计任务书课题名称基于VHDL的四路枪答器完成时间2指导教师职称学生姓名班级总体设计要求和技术要点设计要求:1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~S3表示。2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。5.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。6.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。技术要点:1、实现封锁功能;3、总程序的编译、仿真、打包并下载到实验箱。工作内容及时间进度安排工作内容:1、编程、仿真、打包、编辑总程序,编译。2、下载到实验箱,验证结果。进度安排:周一到周五上机调试程序。周六并下载验证,做硬件实验。周日课设验收并总结报告。课程设计成果1.与设计内容对应的软件程序2.课程设计报告书3.成果使用说明书4.设计工作量要求课程设计流程图一、概述3抢答器主要由抢答鉴别模块、抢答计时模块、数据选择模块、报警器、译码模块和分频模块组成。在设计中,要实现倒计时功能,并且主持人按键后才能抢答,一人抢答后,其他人就不能再抢答了。抢答器共有3个输出显示,选手代号、计数器的个位和十位,把这三个输出与显示译码器连接,实现显示功能。当主持人按下控制键、选手按下抢答键或倒计时到时蜂鸣器短暂响起。二、方案设计与论证将该任务分成六个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、数据选择模块、报警模块、译码模块和分频模块,最后是撰写顶层文件。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、顶层文件:在这个模块中是对前七个模块的综合编写的顶层文件。一、单元电路设计3.1抢答鉴别模块3.1.1、VHDL源程序libraryieee;--抢答鉴别模块useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityqdjbisport(rst,clk2:instd_logic;4s0,s1,s2,s3:instd_logic;states:bufferstd_logic_vector(3downto0);tmp:outstd_logic);endqdjb;architectureoneofqdjbissignalst:std_logic_vector(3downto0);beginp1:process(s0,rst,s1,s2,s3,clk2)beginifrst='0'thentmp='0';st=0000;elsifclk2'eventandclk2='1'thenif(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))beginif(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;3.1.2、仿真图:53.2抢答计时模块3.2.1、VHDL源程序libraryieee;--抢答器计时模块useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjsisport(clk,rst,s,stop:instd_logic;warn:outstd_logic;ta,tb:bufferstd_logic_vector(3downto0));endjs;architectureoneofjsissignalco:std_logic;beginp1:process(clk,rst,s,stop,ta)beginifrst='0'orstop='1'thenta=0000;elsifclk'eventandclk='1'thenco='0';ifs='1'thenifta=0000thenta=1001;co='1';elseta=ta-1;endif;endif;endif;endprocessp1;p2:process(co,rst,s,stop,tb)beginifrst='0'orstop='1'thentb=0010;elsifco'eventandco='1'thenifs='1'theniftb=0000thentb=0011;elsetb=tb-1;6endif;endif;endif;endprocessp2;3.2.2、仿真图3.3数据选择模块3.3.1、VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;ENTITYsjxzISPORT(a,b,c:INSTD_LOGIC_vector(3downto0);clk2,rst:INSTD_LOGIC;s:outSTD_LOGIC_vector(1downto0);y:OUTSTD_LOGIC_vector(3downto0));ENDsjxz;ARCHITECTUREbody_chooserOFsjxzISSIGNALcount:STD_LOGIC_VECTOR(1DOWNTO0);BEGINs=count;PROCESS(clk2,rst)BEGINif(rst='0')thencount=00;elsif(clk2'eventandclk2='1')thenif(count=10)thencount=00;elsecount=count+1;endif;endif;casecountisWHEN00=y=a;7WHEN01=y=b;WHEN10=y=c;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;ENDbody_chooser;3.3.2、仿真图3.4报警模块3.4.1、VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYALARMISPORT(CLK,I:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDALARM;ARCHITECTUREBEHAVEOFALARMISSIGNALwarn:STD_LOGIC;SIGNALN:INTEGERRANGE0TO20;BEGINQ=warn;PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THE
本文标题:基于VHDL的四路抢答器
链接地址:https://www.777doc.com/doc-6342150 .html