您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 四路抢答器EDA课程设计
EDA课程设计报告——四路抢答器一方案设计将该任务分成七个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、抢答器记分模块、分频模块、译码模块、数选模块、报警模块,最后是顶层文件。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.顶层文件:在这个模块中是对前七个模块的综合编写的顶层文件。二单元电路设计(一)抢答模块1.VHDL源程序LIBRARYIEEE;--抢答鉴别模块USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYqdjbISPORT(rst,clk2:INSTD_LOGIC;s0,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;2.仿真图:3.抢答鉴别模块符号图在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。其中有四个抢答信号s0、s1、s2、s3;抢答使能信号s;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号tmp。(二)计时模块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;ENDIF;ENDIF;ENDIF;ENDPROCESSP2;ENDONE;2.仿真图3.计时模块符号图在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行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;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;WHEN01=Y=B;WHEN10=Y=C;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;ENDBODY_CHOOSER;2.仿真图3.数据选择模块符号图在这个模块中主要实现抢答过程中的数据输入功能,输入信号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;ENTITYALARMISPORT(CLK,I:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDALARM;ARCHITECTUREBEHAVEOFALARMISSIGNALWARN:STD_LOGIC;SIGNALN:INTEGERRANGE0TO20;BEGINQ=WARN;PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENIFI='0'THENWARN='0';ELSIF(I='1'ANDN=19)THENWARN=NOTWARN;N=N+1;ELSEWARN='0';ENDIF;ENDIF;ENDPROCESS;ENDBEHAVE;2.仿真图3.报警模块符号图在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内如果人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;状态输出信号q;计数脉冲clk2。(五)译码模块1.VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYYMQISPORT(AIN4:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT7:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDYMQ;ARCHITECTUREARTOFYMQISBEGINPROCESS(AIN4)BEGINCASEAIN4ISWHEN0000=DOUT7=1111110;--0WHEN0001=DOUT7=0110000;--1WHEN0010=DOUT7=1101101;--2WHEN0011=DOUT7=1111001;--3WHEN0100=DOUT7=0110011;--4WHEN0101=DOUT7=1011011;--5WHEN0110=DOUT7=1011111;--6WHEN0111=DOUT7=1110000;--7WHEN1000=DOUT7=1111111;--8WHEN1001=DOUT7=1111011;--9WHENOTHERS=DOUT7=0000000;ENDCASE;ENDPROCESS;ENDARCHITECTUREART;2.仿真图3.译码模块符号图在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。(六)分频模块1.VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYclkdivISPORT(clk2:INSTD_LOGIC;clk16:OUTSTD_LOGIC);ENDclkdiv;ARCHITECTURErtlOFclkdivISSIGNALcount:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk2)BEGINIF(clk2'eventANDclk2='1')THENIF(count=1111)THENCount=0000;ELSECount=count+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(clk2)BEGINIF(clk2'eventANDclk2='1')THENIF(count=1111)THENclk16='1';ELSEclk16='0';ENDIF;ENDIF;ENDPROCESS;ENDrtl;2.仿真图3.分频模块图在这个模块中主要实现抢答过程中实现输出双脉冲的功能。(七)顶层文件1.
本文标题:四路抢答器EDA课程设计
链接地址:https://www.777doc.com/doc-7305021 .html