资源描述:
《数字电子技术课程设计报告--基于fpga的四位智能抢答器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数字电子技术课程设计报告--基于FPGA的四位智能抢答器专业:XXX班级:XXX姓名:XXX学号:XXX一、设计任务及要求基于EDA/SOPC系统幵发平台,运用QuartusII可编程逻辑器件开发软件,设计一个4位智能抢答器。要求如下:1、可以同时供4名选手抢答,其编号分别为1、2、3、4,各用抢答按键SI、S2、S3、S4,按键编号与选手编号对应。主持人设置右一个开始按键S5,一个清零按键S6,用于控制抢答的开始和系统的清零;2、抢答器具有定时抢答的功能,一次抢答的时间为10秒。当主持人启动“开始”按键后,用4位LED数码管左边两
2、位显示10s的倒计时;3、抢答器具存数据锁存和显示的功能,抢答开始后,如果存选手按动按键,其编号立即锁存并显示在数码管上(显示在右边的两个数码管上),同时封锁输入电路,禁止其他选手抢答;优先选手的编号一直保持到主持人将系统清零为止;4、参赛选手在设定的时问内进行抢答,抢答有效,定时器停止工作,显示器上显示抢答时刻的时间(左边两个数码管上)和参赛选手的编号(显示在右边的两个数码管上),并保持到主持人将系统清零为止;如果定时抢答的时间己到而没有选手抢答,本次抢答无效,封锁输入电路,禁止抢答,定时器显示“00”并闪烁,闪烁频率为0.5HZ
3、;—直保持到主持人将系统清零为止;5、在主持人未按下开始按键时,如果存人抢答则犯规,在显示器上右边两位闪烁犯规选手的编号,闪烁频率为0.5Hz;—直保持到主持人将系统清零为止;6、说明:系统上电和按下清零按键后显示“0000”,设计中的时钟脉冲频率为1000赫兹;7、附加:加入按键软件消抖功能及加减分数显示计分功能;能够设置不同的抢答时间,以便应用于不同的抢答系统。二、设计原理及方案本次设计主要采用verilogHDL语言,总体编程思路采用模块化设计方式,主要分为3个模块,一个主控制及按扭输入模块,一个LED计时提示模块,一个抢答组
4、号显示模块,分别对这3个子模块进行独立编程设计,并生成元件,并在顶层使用原理图的方式将3个模块连接起来完成整个设计。锁定管脚并编译通过,下载到试验箱进行测试。总设计框图:LED1ALED2ALED计时提示模块LED4主控制及按钮输入模块CLK开始淸零选手1选手2选手3选手4解析:在上图框架中LH)计时提示模块、抢答组号显示模块都为译码器,主控制及按钮输入模块实现具体功能。主控制及按钮输入模块主要功能为计时、显示、闪烁、分频。其先将需要输出的内容以8421BCD码的形式输入给下一级,再通过WD计时提示模块和抢答组号显示模块的程序将84
5、21BCD码译为对应的数据显示,最后和对应的共阳极数码显示管的管脚相连,显示最后的数据。三、电路源文件1、主控制与按钮输入模块modulezhukongzhi(elk,clear,start,pi,p2,p3,pd,answer1,answer2,ql,q2);inputelk,clear,start,pi,p2,p3,p4;output[3:0]ql,q2output[3:0]answer1,answer2;wire[3:0]qqbqq2;wireco;reg[3:0]answer1,answer2;regst;regcr;reg
6、en;regkp;reg[10:0]tm;regtemp;regtemp2;reg[3:0]tenip3;reg[3:0]ql;reg[3:0]q2;regflag;regflagl;regflag2;initialbeginflag2=l;st=l;cr=l;flagl=l;tm=0;temp=0;f1ag=0:kp=0;answerl^fbOOOO;answer2=45bOOOO;endalways®(negedgestartornegedgeclear)beginif(!start)beginst=0;cr=l;endelse
7、if(!clear)beginst二1;cr=0;enclendjishi2cou(clk,cr,st,qql,qq2,co,kp);always@(posedgeelk)beginbeginif(st==l,bl)beginflag=l;beginif(!clear)flagl=l;endbeginbeginif((pl—l*bO)&flagl)beginflagl=0;tcmp3=4,bOOOl;endelseif((p2==l,bO)&flagl)beginflagl=0;tcmp3=4,bOOlO;endelseif((p3
8、==l’bO)&flagl)beginflagl=0;tcmp3=4,bOOll;endelseif((p4==fbO)&flagl)beginflagl=0;tcmp3=4,bOlOO;endendif(flagl=:0)if((t