基于FPGA的四路抢答器的Verilog-HDL代码

合集下载

基于FPGA的四路抢答器

基于FPGA的四路抢答器

北华航天工业学院《EDA技术综合设计》课程设计报告报告题目:竞赛抢答器作者所在系部:电子工程系作者所在专业:电子信息工程作者所在班级:B10212作者姓名:郭思华指导教师姓名:胡辉完成时间:2012-12-16内容摘要EDA技术是现代电子信息工程领域的一门新技术,他是先进的计算机工作平台上开发出来的一套电子系统设计的软硬件工具,并设计先进的电子系统设计方法。

本文介绍了以FPGA为基础的四路抢答器的设计,此次设计是一个有4组抢答输入,并具有抢答计时控制,到时报警以及时间显示等功能的通用型抢答器。

此次设计它以VHDL硬件描述为平台,结合动手实践完成。

该抢答器分为五个模块:抢答模块、计时模块、选择模块,位循环模块和译码模块。

利用QuartusⅡ工具软件完成率编译仿真验证。

关键词EDA、可编程逻辑器件、计数器、显示器目录一概述 (1)二方案设计与论证 (1)三单元电路程序设计及其功能验证 (2)(一)抢答锁存模块的设计 (2)(二)计时模块的设计 (4)(三)数据选择模块的设计 (5)(四)译码模块的设计 (6)(五)位循环模块的设计 (8)四完整电路设计与分析 (9)(一)主电路图 (9)(二)时序仿真图 (9)(三)芯片引脚分布图 (10)五性能测试与分析 (10)六实验设备 (10)七心得体会 (10)八参考文献 (11)课程设计任务书一、概述抢答器主要由抢答模块、计时模块、选择模块,位循环模块和译码模块组成。

在整个抢答器中主持人在抢答前设置好抢答时间,在复位开始按键按下后,抢答器开始倒计时,若在计时时间内无人抢答,则抢答器报警提示,若在计时过程中有人抢答,则数码管显示第一个抢答的人的编号,同时停止计时。

抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。

二、方案设计与论证将该任务分成五个模块进行设计,分别为:抢答器抢答模块、抢答器计时模块、位循环模块、译码模块和选择模块。

基于FPGA平台的四位抢答器设计

基于FPGA平台的四位抢答器设计

现代电子系统设计综合题目——抢答器班级:电子信息工程(4)班姓名:尹燕宁学号:07090403日期:2011-12-14合作者:王启俊按照抢答器的设计要求,本设计主要实现以下基本功能:(1) 抢答器可以容纳四组参赛队进行抢答。

(2)系统复位后进入抢答状态,抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警。

(3)能显示抢答台号,且一组抢答后,则不接纳其他组抢答。

根据其设计要求,经过仔细试验和比较开始时所设想的两种方案,采用了以下方案以满足要求:倒计时模块应用动态显示方法显示两位变化的数字,倒计时过程中无人抢答则在计时结束后触发bell 信号发出报警声表示超时,有人抢答时则首先按下按钮的人通过一个stop信号屏蔽掉其他人的抢答信号,且不再计时。

在具体实现方案时,根据给定的电子综合设计实验箱的模块和已有元件的限制,对方案进行了如下调整和补充:首先是进行时钟信号分频,由给定的50MHz的时钟分成1Hz,以实现按秒倒计时;其次是倒计时显示的两位数字,由于只有一个静态显示数码管且被用于显示抢答台号,所以必须运用动态显示来进行两位数字的显示和控制;最后是复位后的初值设定,以使上一次抢答的结果不会影响下一次的抢答过程,增加电路的稳定性。

经过仿真以及实验,本设计能够圆满完成设计要求,且具有电路简洁、方案易懂、操作方便、抗干扰性强等特点,经过适当的轻微改造即可作为实际比赛时的四组抢答器,效果良好。

第一章方案的论证与设计第二章理论计算第三章电路图及相关设计文件第四章仿真与测试分析第五章设计总结第六章参考文献第七章附件(含完整电路图、VHDL设计文件)第一章方案的论证与设计为便于进行电路的方案设计和模块化设计,首先根据要求画出实现抢答器功能的系统框图如下所示:根据其设计要求,按照现有的知识水平和实验设备,提出了以下两种实现抢答器的方案:(一)倒计时部分采用静态显示,方便简单。

四人抢答部分根据抢答信号的高低来判断是否继续倒计时并且屏蔽掉其他后来的抢答信号。

四路抢答器报告参考模板

四路抢答器报告参考模板

硬件描述语言课程设计报告哈尔滨理工大学电子科学与技术系摘要Verilog HDL本身是一门比较复杂的语言,语法结构丰富。

在王老师所教书中介绍了基于Verilog HDL的数字设计的基本原理和方法,重点是电路设计。

为更好的将所学Verilog HDL语言的理论知识与实际应用结合起来,学会分析、解决实际的数字电路问题,锻炼独立进行某些数字应用系统的开发设计工作能力,我们在老师的指导下完成了此次项目设计。

本设计题目为四路抢答器电路,用Verilog HDL语言编写软件实现四路抢答功能。

裁判发出开始信号后抢答有效(裁判使用拨码开关),一人抢答成功后其他人抢答无效直至裁判复位此状态后方可继续抢答(选手使用按键),同时使用数码管显示出选手的编号。

四路抢答器电路设计的主要问题在于如何实现各个模块的正确分配,进而使设计出的电路更加符合要求。

为了使各个模块能够正确分配,在程序开始设计之前,必须反复推敲本组的设计方案并设计好各个模块的方框图。

根据实验题目要求并进行电路的仿真,电路的设计应包括2个模块,即实例化模块和抢答模块。

此次设计四路抢答器电路的目的就是让同学们在学习Verilog HDL理论的基础上,通过对题目要求的分析进一步实现实际电路的设计,使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。

【关键词】Verilog HDL,四路抢答器,模块,数码管显示,电路设计第一部分系统的设计1.1、设计要求(1)裁判发出开始信号后抢答有效。

(2)设选手及裁判按钮,选手使用按键,裁判使用拨码开关。

(3)一人抢答成功后,其他人再抢答无效,裁判复位此状态后方可继续抢答。

(4)使用数码管显示选手的编号。

1.2、设计目标(1)我们在课本上学习了相关的基础知识,所以需要进一步对实际题目进行程序编写,以巩固所学知识,还可以发现自身不足。

verilog--4路抢答器设计-带30s倒计时

verilog--4路抢答器设计-带30s倒计时

四路抢答器一、程序module qiangda4(clr,clk,input1,input2,input3,input4,seg,clockin,scan,LED);input clr,clk,input1,input2,input3,input4;output [7:0] seg; //7段数码管数据output [7:0] scan; //数码管位选output [3:0] LED; //输出LED灯指示output clockin; //蜂鸣器reg [7:0] seg;reg [7:0] scan;reg [3:0] LED;reg clockin;reg [3:0] data;reg input_flag,count_flag;reg [14:0] count1;reg [8:0] count2;reg [3:0] LED_N;//reg clock_flag;reg div1khz,div1hz;reg [2:0] cnt;reg [3:0] dat;//reg [7:0] data_count;reg [3:0] count_one,count_ten;initial count_one='d0; //初始化initial count_ten='d3;initial data=4'b0000;initial LED_N=4'b1111;//-------------fenping分频1khz-----------------------------------always @(posedge clk )beginif(count1=='d25000)begin div1khz<=~div1khz;count1<=0;endelsebegin count1<=count1+1'b1;endend//-------------fenping--1hz-------------------------------always @(posedge div1khz)beginif(count2=='d500)begin div1hz<=~div1hz;count2<=0;endelsebegin count2<=count2+1'b1;endend//----------------------------------------------------------always @(posedge div1hz or negedge clr)beginif(!clr)begincount_one<='d0;count_ten<='d3;count_flag<=1'b0;endelse if((!input_flag)&(!count_flag))begin if(count_one=='d0&&count_ten=='d0)begin count_flag<=1'b1;endelse if(count_one=='d0)begin count_one<=4'b1001;count_ten<=count_ten-1'b1;endelsebegin count_one<=count_one-1'b1;endendelsebegin count_one<=count_one;count_ten<=count_ten;endend//-----------------------------------------------------------always @(posedge clk ) //or input1 or input2 or input3 or input4 beginif(!clr)beginLED_N<=4'b1111;//clock_flag<=1'b0;input_flag<=1'b0;data<=4'b0000;endelse if((!input_flag)&(!count_flag))beginif(input1==0)begindata<=4'b0001;LED_N<=4'b0111;input_flag<=1'b1;endelse if(input2==0)begindata<=4'b0010;LED_N<=4'b1011;input_flag<=1'b1;endelse if(input3==0)begindata<=4'b0011;LED_N<=4'b1101;input_flag<=1'b1;endelse if(input4==0)begindata<=4'b0100;LED_N<=4'b1110;input_flag<=1'b1;endelsebegindata<=data;LED_N<=LED_N;input_flag<=input_flag;endendend//-------------led灯及蜂鸣器--------------------------------------------------- always @(posedge clk)beginLED<=LED_N;clockin<=div1khz&(input_flag|count_flag);//dat<=data;end//--------------shu ma guan sao miao数码管扫描--------------------------------- always @(posedge div1khz)beginif(cnt=='d3)begin cnt<=0;endelsebegin cnt<=cnt+1'b1;endend//-----------------------------------------------------always @(cnt,data,count_one,count_ten)begincase(cnt)//3'b000 : begin scan<=8'b01111111;end3'b001 : begin scan<=8'b10111111;dat<=data;end //选手编号3'b010 : begin scan<=8'b11011111;dat<=count_one;end //倒计时3'b011 : begin scan<=8'b11101111;dat<=count_ten;enddefault : begin scan<=8'bx;dat<=4'bx;endendcaseend//--------------------------------------------------------always @(dat)begincase(dat)4'b0000 : seg[7:0]<=8'b11000000;4'b0001 : seg[7:0]<=8'b11111001;4'b0010 : seg[7:0]<=8'b10100100;4'b0011 : seg[7:0]<=8'b10110000;4'b0100 : seg[7:0]<=8'b10011001;4'b0101 : seg[7:0]<=8'b10010010;4'b0110 : seg[7:0]<=8'b10000010;4'b0111 : seg[7:0]<=8'b11111000;4'b1000 : seg[7:0]<=8'b10000000;4'b1001 : seg[7:0]<=8'b10010000;4'b1010 : seg[7:0]<=8'b10001000;4'b1011 : seg[7:0]<=8'b10000011;4'b1100 : seg[7:0]<=8'b11000110;4'b1101 : seg[7:0]<=8'b10100001;4'b1110 : seg[7:0]<=8'b10000110;4'b1111 : seg[7:0]<=8'b10001110;default : seg[7:0]<=8'bx;endcaseendendmodule二、框图三、设计思路四路抢答,有30s倒计时,当有人抢答时,数码管显示对应选手编号,同时对应LED灯亮,蜂鸣器响起,此时其他选手抢答无效。

verilog_hdl_fpga抢答器

verilog_hdl_fpga抢答器

FPGA期末结业论文基于FPGA&VerilogHDL的四路抢答器院系:物理与电子学院专业:电子信息科学与技术任课教师:学号:姓名:2013年12月目录(0)摘要 (2)(1)引言 (3)1.1关于课程设计 (3)1.1.1课程设计目的 (3)1.1.2课程设计内容 (3)1.2开发工具简介 (4)1.2.1 EDA技术 (4)1.2.2 硬件描述语言-Verilog HDL (4)1.2.3 Verilog HDL设计流程 (5)1.2.4 FPGA基本特点 (5)1.2.5 FPGA工作原理 (5)(2)概述 (5)2.1 设计过程 (5)2.1.1系统设计要求 (5)2.1.2系统设计方案 (6)(3)系统设计 (6)3.1系统组图 (6)3.2系统主源程序 (8)(4)仿真综合 (10)(5)结论 (13)(6)参考文献 (13)(7)附录 (13)0摘要抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。

电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。

本设计是以四路抢答为基本概念。

从实际应用出发,利用电子设计自动化( EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。

它以Verilog HDL硬件描述语言作为平台,结合动手实验而完成的。

它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。

本抢答器的电路主要有四部分组成:鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用Quartus II工具软件完成了Verilog HDL源程序编写和硬件下载。

这个抢答器设计基本上满足了实际比赛应用中的各种需要。

在实际中有很大的用途。

关键词:抢答器 Quartus II Verilog HDL EP1C3T144C81引言硬件描述语言 Hardware Description Language 是硬件设计人员和电子设计自动化 EDA 工具之间的界面。

基于FPGA的抢答器设计

基于FPGA的抢答器设计

基于FPGA的抢答器设计摘要本文介绍了一种采用EDA技术,基于FPGA并在QuartusⅡ工具软件环境下使用Verilog硬件描述语言编写的数码管显示4路抢答器的电路设计。

本次设计的抢答器能够同时供应4位选手或者4个代表队进行抢答比赛,分别使用4个按钮a,b,c,d表示。

同时需要设置系统复位和抢答控制开关,这需由主持人控制。

主持人在允许抢答的情况下,计时器开始从30s开始倒计时,直到有人抢答成功后,由锁存器将时间锁存住,此时数码管上将显示剩余时间及抢答成功选手号码,同时对应选手的LED灯也被点亮。

在判断选手是否回答正确后,由主持人控制加减按钮进行给分。

在一轮比赛结束后,主持人按下复位按钮,则除了计分模块外,其他模块都复位为初始时刻,为下一轮的比赛做好准备。

系统芯片主要采用EP2C8Q208,由抢答判别模块,计时模块,分频器模块,计分模块,锁存器模块,数码管驱动模块组成。

经过编译及其仿真所设计的程序,该设计的抢答器基本能够实现此次设计的要求,从而完成了抢答器应具备的功能。

关键词:抢答器,数码显示,硬件描述语言,可编程逻辑门阵列FPGA-BASED RESPONDER DESIGNABSTRACTThis article introduces the design of 4 answering device circuit using an EDA technology Verilog HDL language in FPGA and QuartusⅡ environment.At the same time,the 4 answering device circuit is displayed by the digital.The Responder can also supply four players or four teams to answer in the game, respectively, using four buttons a, b, c, d. Setting reset and answer in a system control switch, which controls required by the moderator. When the moderator allows to answer, the timer starts counts down from the 30s until someone answers successfully, by the time the latch latches will to live, then the remaining time and the number of the player who responds successfully will be displayed on the digital tube, at the same time the LED of the corresponding player lights will be lighted. Determined whether the contestant answers correctly, the moderator will give points by controlling the addition and subtraction button. At the end of the game, the moderator presses the reset button, others modules are reseted to the initial time for the next round of the game except the scoring module.The system uses mainly the EP2C8Q208. At the same time the system is made from the answer in decision block, timing module, divider block, scoring module latch module, LED driver modules. After compilation and simulation of the design process, the design Responder can basically achieve the design requirements, thus completing the Responder function.KEY WORDS:Responder,Digital display, HDL ,FPGA目录前言 (1)第1章绪论 (3)§1.1 选题背景 (3)§1.1.1 EDA技术发展 (3)§1.1.2 课题研究的必要性 (4)§1.2 研究课题的内容 (4)第2章系统方案设计 (6)§2.1 FPGA简介 (6)§2.1.1 FPGA芯片结构 (8)§2.1.2 FPGA设计流程 (12)§2.1.3 FPGA软件设计 (13)§2.1.4 FPGA的应用 (14)§2. 2Verilog HDL概述 (15)§2.2.1 Verilog HDL简介 (15)§2.2.2 Verilog HDL主要功能 (16)§2.2.3 Verilog HDL与VHDL的区别 (16)§2.3 抢答器总体设计方案 (17)§2.3.1 抢答器构成 (18)§2.3.2 抢答器工作原理 (18)第3章抢答器模块设计与实现 (19)§3.1 抢答判别模块 (19)§3.2 数码管驱动模块 (20)§3.3 计时模块 (22)§3.4 分频器模块 (23)§3.5 计分模块 (23)§3.6 锁存模块 (24)§3.7 总体模块 (24)第4章抢答器程序设计、实现与仿真 (26)§4.1 抢答判别程序设计 (26)§4.2 数码管驱动模块程序设计 (28)§4.3 计时模块程序设计 (29)§4.4 分频模块程序设计 (31)§4.5 计分模块程序设计 (32)§4.6 锁存模块程序设计 (36)结论 (38)参考文献 (39)致谢 (41)附录 (42)前言随着人类社会的高速发展,电子行业也随之迅猛的发展,这也使得人们越来越想方设法的是自己更加方便、轻松的生活,例如:自从有了电视遥控器开启电视,更改电视频道,我们再也不用跑来跑去用手改换频道;自从有了全自动洗衣机,我们再也不用半自动洗衣机或者人工搓衣板去清洗衣服;自从有了交通灯,不仅省去了很多人力去指挥交通,而且使交通更加井然有序。

基于XILINX FPGA的抢答器设计

基于XILINX FPGA的抢答器设计

基于XILINX FPGA的抢答器设计电子科技大学微电子与固体电子学院吴洪天2603001018目录一、摘要 (2)二、任务要求 (3)三、总体设计方案 (4)四、各模块实现过程与仿真结果 (6)(一)选手编码锁存器模块 (6)(二)分频器模块 (9)(三)蜂鸣器模块 (11)(四)定时器模块 (15)(五)显示译码模块 (18)(六)顶层模块 (21)五、下载和调试 (26)六、总结 (27)一、摘要FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,通过它可以实现各种数字逻辑电路。

随着微电子技术的发展,FPGA内部集成了越来越多的门电路单元,利用FPGA可实现的系统也越来越复杂。

为了实现对FPGA 的编程配置,需要使用硬件描述语言,最常用的硬件描述语言有VHDL和Verilog hdl两种,由于Verilog语法简单,且接近于C语言,使用也相对较灵活,因此这里选择使用Verilog进行编程。

在这里,我们要用FPGA实现一个四个选手的抢答器。

抢答器是一种典型的异步时序逻辑电路,因此整个系统不受同步时钟的控制。

在进行系统设计时,采用自顶而下的设计思路,先根据系统的整体功能构思出顶层模块的功能,再根据具体的功能分成各种子模块进行设计。

在用硬件描述语言进行描述时,可以有两种描述方式,一种是行为描述,另一种是结构描述。

行为描述方式按照模块要实现功能用描述性语句描述模块输入对模块输出的影响,这种描述方式简单灵活,可以不用过多考虑具体的电路结构,然而,这样也可能存在所描述的电路无法实现的情况,造成综合工具无法综合;结构描述方式类似于传统构建电路的方法,利用各种已经构造好的模块或元件直接相连形成新的模块,这种描述方式需要考虑电路的具体结构,因此设计起来也相对较麻烦,但可综合率较高。

在这个系统的设计中,各个子模块采用行为描述方式进行构造,以提高效率,但需要时刻考虑所描述的语句是否可综合,顶层模块采用结构描述语句,由于顶层模块只需简单地将各个子模块连接在一起,无需考虑电路的工作的过程和原理,因此采用结构描述方式也很容易。

用VerilogHDL编写四路抢答器

用VerilogHDL编写四路抢答器
input wire [3:0]qiang_da; reg [2:0]bian_ma; wire suo; input wire qing_ling; input wire fankui; output reg [2:0]bian_ma_cun; output wire suo_1;
always@(*) begin case(qiang_da) 1:bian_ma=3'b001; 2:bian_ma=3'b010; 4:bian_ma=3'b011; 8:bian_ma=3'b100; default:bian_ma=3'b000; endcase end
assign suo=(~bian_ma_cun[0])&(~bian_ma_cun[1])&(~bian_ma_cun [2]);
assign suo_1=suo&fankui;
always@(*) begin if(qing_ling==1) bian_ma_cun<=3'b000; else if(suo_1==0) bian_ma_cun<=bian_ቤተ መጻሕፍቲ ባይዱa_cun; else bian_ma_cun<=bian_ma; end
output wire [6:0]a_to_g; output wire [3:0]A_TO_D; input wire clk;//50MHz时钟 wire [3:0]qian; wire [3:0]bai; wire [2:0]shi; wire [2:0]ge; wire cp;//1s时钟 input wire [3:0]qiang_da; input button; wire suo_1; wire [2:0]bian_ma_cun; wire fankui; output wire xuan; shumaguan shumaguan0(a_to_g,A_TO_D,clk,qian,bai,shi,ge); cp_1s cp_1s0(clk,cp); xuan_shou xuan_shou0(qiang_da,button,suo_1,bian_ma_cun,fankui); wei_xuan wei_xuan0(bian_ma_cun,xuan,shi,ge); fuwei_kongzhi fuwei_kongzhi0(button,xuan); jishu_kongzhi jishu_kongzhi0(bai,qian,cp,suo_1,xuan,fankui); endmodule

数字电子技术实验报告——基于FGPA的4位智能抢答器(verilog HDL)

数字电子技术实验报告——基于FGPA的4位智能抢答器(verilog HDL)

基于FPGA的4位智能抢答器一、设计任务要求基于E DA/SOPC 系统开发平台,运用Q uartusⅡ可编程逻辑器件开发软件,设计一个4位智能抢答器,在开发箱上,本系统使用频率为1000 赫兹的时钟脉冲。

要求如下:1、可以同时供4名选手抢答,其编号分别为1、2、3、4,各用抢答按键S1、S2、S3、S4,按键编号与选手编号对应。

主持人设置有一个“开始”按键S5,一个“复位”按键S6,用于控制抢答的开始和系统的复位;各个按键按下为“0”,弹起为“1”;2、系统上电和按下“复位”按键后4位数码管显示“0000”,此时只有“开始”按键有效,其他按键不起作用;3、当主持人按下“开始”按键后,开始计时,数码管左边两位显示计时的时间,单位为“秒”;如果有选手按下抢答按键,定时器停止工作,数码管显示器上左边两个数码管显示抢答时刻的时间;选手编号立即锁存并显示在右边的两个数码管上,同时封锁输入电路,禁止其他选手抢答;此状态一直保持到主持人将系统复位为止;4、抢答的有效时间为10 秒,如果定时抢答的时间已到而没有选手抢答,本次抢答无效,封锁输入电路,禁止抢答,数码管左边显示“10”,右边显示“00”;此状态一直保持到主持人将系统复位为止;5、附加提高:在主持人未按下开始按键时,如果有人抢答则犯规,在数码管上右边两位闪烁犯规选手的编号,闪烁频率为0.5H Z,左边两位显示“00”;此状态一直保持到主持人将系统复位为止。

二、设计步骤本次设计主要采用V erilog HDL 语言,总体编程思路采用模块化设计方式,主要分为3 个模块,一个主控制及按键输入模块,一个计时显示模块,一个抢答组号显示模块,分别对这3个子模块进行独立编程设计,编译仿真通过并生成元件,在顶层使用原理图或者Verilog HDL 语言的方式将3个模块连接起来完成整个设计。

锁定管脚并编译仿真通过,下载到开发箱进行测试。

三、模块设计思路对于这个任务来说,计时显示模块和抢答组号显示模块的模块并不复杂,复杂的模块是主控制及按键输入模块,所以我决定再将主控制模块拆分成两个小的模块——按键输入模块、按键输入判断输出模块。

基于FPGA的电子抢答器的程序设计毕业设计

基于FPGA的电子抢答器的程序设计毕业设计

基于FPGA的电子抢答器的程序设计摘要随着科学技术日新月异,文化生活日渐丰硕,在各类竞赛、抢答场合电子抢答器已经作为一种工具取得了较为普遍的应用。

顾名思义,电子抢答器是一种通过抢答者的指示灯显示、数码显示和警示显示等手腕准确、公正、直观地判定出最先取得发言权选手的设备。

这次设计有4组抢答输入,每组设置一个抢答按钮供抢答者利用。

电路具有第一抢答信号的辨别和锁存功能。

当第一抢答者按下抢答开关时,该组指示灯亮以示抢答成功。

同时,电路也具有自锁功能,保证能够实此刻一路成功抢答有效后,其他三路均不能抢答。

本设计基于VHDL语言,采纳FPGA为操纵核心,并结合动手实践完成,具有电路简单、操作方便、灵敏靠得住等优势。

该四路抢答器利用VHDL硬件描述语言进行编程,分为七个模块:判定模块,锁存模块,转换模块,扫描模块,片选模块,按时报警模块和译码模块。

编程完成后,利用QuartersII工具软件进行编译仿真验证。

关键词:VHDL,FPGA,四路抢答器,仿真目录1 概述 (1)设计背景 (1)抢答器现状 (1)本论文要紧完成的工作 (1)设计心得 (2)2 开发工具简介 (3)VHDL语言简介 (3)FPGA开发进程与应用 (4)FPGA进展历程及现状 (4)FPGA工作原理 (4)FPGA开发流程 (5)Quartus II软件 (6)3系统设计 (8)系统设计要求 (8)系统设计方案 (8)系统硬件设计方案 (8)系统软件设计方案 (8)系统原理详述 (10)4 电路程序设计及仿真 (12)抢答锁存模块设计 (12)VHDL源程序 (12)抢答锁存电路的模块 (13)仿真 (14)总结 (15)致谢 (17)参考文献 (18)郑州轻工业学院课程设计任务书题目基于FPGA的电子抢答器的程序设计专业班级电子信息工程10-1班学号姓名要紧内容、大体要求、要紧参考资料等:要紧内容:抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判定出抢答者的机械。

基于FPGA的四路抢答器设计

基于FPGA的四路抢答器设计

摘要本文介绍了以FPGA为基础的四路抢答器的设计,此次设计是一个有4组抢答输入,并具有抢答计时控制,按键消抖以及积分显示等功能的通用型抢答器。

主持人有4个按键控制,可以进行开始抢答,对各抢答小组成绩进行相应加减操作以及所有积分重置。

此次设计程序使用verilog语言编写,并且使用modelsim进行相关仿真,最后在FPGA开发板上烧录程序进行实际操作演示实现了相应功能,达到了此次设计的目的。

本设计采用FPGA 来做增强了时序控制的灵活性,同时由于FPGA的IO端口资源丰富,可以再本设计基础上稍加修改可以重复设计出具有多组输入的抢答器。

关键字:按键消抖;显示;仿真;四路抢答;AbstractIn this paper, the design of four channel responder based on FPGA is proposed. The design contains four channel input, and also it has timing function, button-stop-shaking function, score display function. And the result of the design is a universal responder. The host has four buttons to control, in order to start response, add or sub the scores for each group and clear all group scores. The design program uses verilog language to write software. And modelsim is used to simulate the function on computer. At last the actual design results are demonstrated on the FPGA development board, and the functions are well veified. The result achieves the purpose of the design. The design uses FPGA to enhance the flexibility of timing control. At the same time because of IO port resoures in FPGA are much rich, if you want to design more channels responder, you just only repeat design on the basic of the design which is slightly modified.Keywords: button-stop-shaking; display; simulate; four channel responder;目录1引言 (4)2FPGA原理及其相关工具软件的介绍 (4)2.1FPGA开发过程与应用 (4)2.1.1FPGA发展历程及现状 (5)2.1.2FPGA工作原理 (5)2.1.3FPGA开发流程 (5)2.2Quartus II软件 (6)2.3Simulink软件 (7)2.3.1代码仿真 (7)2.3.2门级仿真和时序仿真 (8)3实验步骤及仿真调试结果 (8)3.1功能描述及设计架构 (8)3.2抢答器程序流程图和各模块软件代码分析 (9)3.2.1抢答器程序结构及主程序流程图 (9)3.2.2主控制及按键输入模块 (11)3.2.3计时模块 (13)3.2.4BCD显示模块 (13)3.3顶层模块连线及开发板硬件配置 (14)3.4modelsim仿真 (18)4结论 (20)谢辞.............................................................................................................. 错误!未定义书签。

基于FPGA的四人抢答器设计实验报告.doc

基于FPGA的四人抢答器设计实验报告.doc

南京铁道职业技术学院EDA技术及其应用实验报告
实训课程:EDA技术及其应用
实训项目:基于FPGA的四人抢答器
指导老师:于淑萍
姓名:张秀梅
班级:电子信息1101
学号:19
2012年12月21日星期五
基于FPGA的四人抢答器设计
一、顶层原理图:
二、四人抢答器工作原理:
@功能要求:
1、1)有多路抢答,抢答台数为4;
2)具有抢答器开始后20秒倒计时,20秒倒计时后五人抢答显示超时,并报警;
3)能显示超前抢答台号并显示犯规报警;
2、系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各
路抢答信号封锁,同时铃声响起,直至该路按键松下,显示牌显示该路抢答台号。

@设计说明:
四人抢答器框图:
四人抢答器框图
系统复位后,反馈信号为高电平,使K1,K2,K3,K4输入有效,当抢答开始后,在第一个人按键后,保持电路输出低电平,同时送显示电路,让其保存按键的台号并输出,并反馈给抢答台,使所有抢答台输入无效,计时电路停止。

当有人在规定时间无人抢答时,倒计时电路输出超时信号。

当主持人开始未说完时,有人抢先按键时将显示犯规信号。

三、各功能模块的语言源文件:
@Cnt20.v文件:
module cnt20(stop,start,reset,CLK,q,yellow,green,red);。

用Verilog HDL编写的四路抢答器演示幻灯片

用Verilog HDL编写的四路抢答器演示幻灯片
5
always@(*)//4位位选译码 case(wei) 3:begin A_TO_D=4'b1110; duan=qian; end 2:begin A_TO_D=4'b1101;
6
module cp_1s(clk,a); //提供1秒脉 冲
input wire clk; output reg a; reg [25:0]q; always@(posedge clk)
output reg zong_kong;
always@(posedge fu_wei)
begin
zong_kong<=~zong_kong;
11
module jishu_kongzhi(q1,q2,clk,suo,clr,fa nkui);//计数电路及其控制模块
output wire [3:0]q1;
四路抢答器设计
——Verilog HDL语言
1
抢答器为四路,20秒倒计时,抢 到后显示锁定,计时停止,若 提前抢答会在另外数码管显示 抢答号码。
在BASYS 2 开发板上可以实现
2
module qiang_da_qi(a_to_g,A_TO_D,clk,q iang_da,button,xuan
14
qing_ling;
8
assign suo=(~bian_ma_cun[0])&(~bian_ ma_cun[1])&(~bian_ma_cun[2]);
assign suo_1=suo&fankui;
always@(*) begin if(qing_ling==1)
9
module wei_xuan(bian_ma_cun,xuan,bai, ge);//控制选手是否提前抢答模 块

verilog-HDL抢答器(两个程序)

verilog-HDL抢答器(两个程序)

v e r i l o g-H D L抢答器(两个程序)-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN一、设计任务智力竞赛抢答器Verilog HDL要求有6位参赛者进行抢答,有六个抢答信号进行抢答。

当有抢答选手按下抢答键后系统能够快速准确的判断是那一组选手按下了抢答信号,由于系统比较小,速度比较快一般不会有同时按下的可能,所以只有六种状态,然后系统能够根据这六种状态进行适时的显示和提示。

当有选手按下以后就对抢答信号进行锁存,其他选手的输入无效。

然后就是对抢答进行时间限制了,根据设定的时间进行倒计时,当倒计时完成还没有人抢答的时候系统发出警报声音提示时间已经到了。

当有选手在主持人未按下抢答键抢答时视为超前抢答,系统显示该选手号,同时蜂鸣器响,该抢答无效。

还有清除复位键,抢答完成以后按复位键即可清除已有的状态。

通过Verilog HDL程序代码实现系统的各个功能。

二、设计目的与要求目的:理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,培养学生正确的设计思想,严肃认真、实事求是的科学态度和勇于探索的创新精神。

通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤,通过Verilog 程序的编写,进一步熟悉Verilog HDL 的语法知识;规范化训练学生撰写技术研究报告,提高书面表达能力。

要求:掌握FPGA设计系统的一般方法。

熟练掌握使用modelsim软件设计较复杂的数字逻辑电路。

培养学生独立分析问题和解决实际问题的能力。

三、课程设计的内容设计一抢答器,要求如下:(1)抢答台数为6;(2)具有抢答开始后20s倒计时,20秒倒计时后6人抢答显示超时,并报警;(3)能显示超前抢答台号并显示犯规报警;(4)系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。

基于FPGA的四路抢答器的Verilog-HDL代码

基于FPGA的四路抢答器的Verilog-HDL代码

moduleqiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4,Led1 ,Led2,Led3,Buzzer);// 开始声明各个端口//输入口input clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4;//输出口output [0:7] Led1; //倒计时时使用的LED控制端output [0:7] Led2; //数码管控制端output [0:7] Led3; //分数显示数码管控制端output Buzzer; //蜂鸣器//各个寄存器变量声明reg [0:7] Led1;reg [0:7] Led2;reg [0:7] Led3;reg cnt=32'b0;reg Buzzer;reg score=4’hf;//分数显示寄存器//配置寄存器,EnFlat是表明开始抢答的标志位reg EnFlat=1'b0;//BuClk是蜂鸣器的标志位reg BuClk=1'b0;//BuL是做蜂鸣器的延时用reg [0:7]BuL=8'd0;//抢答选手标志位reg answer=3’d0;//各组分数标志位reg score1=4’d5;reg score2=4’d5;reg score3=4’d5;reg score4=4’d5;//------------初始化模块---------------always @ (posedge clk)//捕捉时钟begin//初始化各按键并开始抢答beginif(inputEn==1'b0)begin//初始化各个标志位和参数EnFlat=1'b1;//倒计时开始时8个Led灯全亮Led1=8'b11111111;//组号显示静态数码管(数码管为共阳极)的控制端,有8位Led2=8'b11111111;//分数显示数码管控制端Led3=8'b11111111;//蜂鸣器标志位BuClk=1'b0;//蜂鸣器的控制管脚,低电平为发声音Buzzer=1'b1;endend//--------抢答模块-------beginif(EnFlat==1'b1)begin//如果按键1按下if(inputL1==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;//选手标志位改变,用于加减分数模块answer=3’d1;//静态数码管显示序号'1' ,及显示选手对应的组号Led2=8'hf9;//指示蜂鸣器发声BuClk=1'b1;end//如果按键2按下else if(inputL2==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d2;Led2=8'ha4;BuClk=1'b1;end//如果按键3按下else if(inputL3==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d3;Led2=8'hb0;BuClk=1'b1;end//如果按键4按下else if(inputL4==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d4;Led2=8'h99;BuClk=1'b1;endendend//-------------------加减分数模块----------------//第一组加减分if(answer ==3’d1)beginif(add)score1=score1+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score1=score1-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score1;//把第一组的分数赋值给分数寄存器end//第二组加减分if(answer ==3’d2)beginif(add)score2=score2+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score2=score2-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score2;end//第三组加减分if(answer ==3’d3)beginif(add)score3=score3+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score3=score3-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score3;end//第四组加减分if(answer ==3’d4)beginif(add)score4=score4+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score4=score4-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score4;end//-----------------倒计时模块--------------------beginif(EnFlat==1'b1)beginif(cnt!=32'd4*******)//计时实现1HZ分频cnt=cnt+32'd1;elsebegincnt=32'd0;Led1=8'b11111111<<1'b1;//Led1左移一个单位,实现一秒的倒计时endendif(Led1==8'b0)//倒计时结束还没有按键按下,则抢答停止且蜂鸣器响EnFlat=1'b0;BuClk=1'b1;end//----------蜂鸣器模块-----------------//当蜂鸣器标志位置1时//进入此蜂鸣器处理程序beginif(BuClk==1'b1)begin//蜂鸣器发声Buzzer=1'b0;//延时变量加1BuL = BuL + 8'd1;//当到达延时的时间时关掉蜂鸣器if(BuL==8'd255)begin//延时变量复位BuL=8'd0;//蜂鸣器标志位复位BuClk=1'b0;//蜂鸣器停掉Buzzer=1'b1;endendend//-------------重置模块----------------//按下clr键以后各组参数重置,整个比赛重新开始if(clr)begin//重置各个标志位和参数EnFlat=1'b1;//重置时8个Led灯全亮Led1=8'b11111111;//选手号静态数码管的控制端,有8位Led2=8'b11111111;//选手分数显示数码管重置Led3=8'b11111111;//蜂鸣器标志位重置BuClk=1'b0;//蜂鸣器的控制管脚重置,低电平为发声音Buzzer=1'b1;//各组分数重置score1=4’d5;score2=4’d5;score3=4’d5;score4=4’d5;//分数显示寄存器重置answer=8’hff;end//-----------数码显示模块------------begincase(score)4'h0: Led3 = 8'hc0; //显示04'h1: Led3 = 8'hf9; //显示14'h2: Led3 = 8'ha4; //显示24'h3: Led3 = 8'hb0; //显示34'h4: Led3 = 8'h99; //显示44'h5: Led3 = 8'h92; //显示54'h6: Led3 = 8'h82; //显示64'h7: Led3 = 8'hf8; //显示74'h8: Led3 = 8'h80; //显示84'h9: Led3 = 8'h90; //显示94'ha: Led3 = 8'hbf; //显示-default:Led3 = 8'hff; //不显示endcaseendendendmodule。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的四路抢答器的Verilog-HDL代码moduleqiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4,Led1,Led2,L ed3,Buzzer);// 开始声明各个端口//输入口input clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4;//输出口output [0:7] Led1; //倒计时时使用的LED控制端output [0:7] Led2; //数码管控制端output [0:7] Led3; //分数显示数码管控制端output Buzzer; //蜂鸣器//各个寄存器变量声明reg [0:7] Led1;reg [0:7] Led2;reg [0:7] Led3;reg cnt=32'b0;reg Buzzer;reg score=4’hf;//分数显示寄存器//配置寄存器,EnFlat是表明开始抢答的标志位reg EnFlat=1'b0;//BuClk是蜂鸣器的标志位reg BuClk=1'b0;//BuL是做蜂鸣器的延时用reg [0:7]BuL=8'd0;//抢答选手标志位reg answer=3’d0;//各组分数标志位reg score1=4’d5;reg score2=4’d5;reg score3=4’d5;reg score4=4’d5;//------------初始化模块---------------always @ (posedge clk)//捕捉时钟begin//初始化各按键并开始抢答beginif(inputEn==1'b0)begin//初始化各个标志位和参数EnFlat=1'b1;//倒计时开始时8个Led灯全亮Led1=8'b11111111;//组号显示静态数码管(数码管为共阳极)的控制端,有8位Led2=8'b11111111;//分数显示数码管控制端Led3=8'b11111111;//蜂鸣器标志位BuClk=1'b0;//蜂鸣器的控制管脚,低电平为发声音Buzzer=1'b1;endend//--------抢答模块-------beginif(EnFlat==1'b1)begin//如果按键1按下if(inputL1==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;//选手标志位改变,用于加减分数模块answer=3’d1;//静态数码管显示序号'1' ,及显示选手对应的组号Led2=8'hf9;//指示蜂鸣器发声BuClk=1'b1;end//如果按键2按下else if(inputL2==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d2;Led2=8'ha4;BuClk=1'b1;end//如果按键3按下else if(inputL3==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d3;Led2=8'hb0;BuClk=1'b1;end//如果按键4按下else if(inputL4==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3’d4;Led2=8'h99;BuClk=1'b1;endendend//-------------------加减分数模块----------------//第一组加减分if(answer ==3’d1)beginif(add)score1=score1+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score1=score1-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score1;//把第一组的分数赋值给分数寄存器end//第二组加减分if(answer ==3’d2)beginif(add)score2=score2+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score2=score2-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score2;end//第三组加减分if(answer ==3’d3)beginif(add)score3=score3+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score3=score3-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score3;end//第四组加减分if(answer ==3’d4)beginif(add)score4=score4+1;//当主持人判定选手的回答正确时,按下add键进行加分操作elseif(stu)score4=score4-1;//当主持人判定选手的回答错误时,按下stu键进行减分操作score=score4;end//-----------------倒计时模块--------------------beginif(EnFlat==1'b1)beginif(cnt!=32'd4*******)//计时实现1HZ分频cnt=cnt+32'd1;elsebegincnt=32'd0;Led1=8'b11111111<<1'b1;//Led1左移一个单位,实现一秒的倒计时endendif(Led1==8'b0)//倒计时结束还没有按键按下,则抢答停止且蜂鸣器响EnFlat=1'b0;BuClk=1'b1;end//----------蜂鸣器模块-----------------//当蜂鸣器标志位置1时//进入此蜂鸣器处理程序beginif(BuClk==1'b1)begin//蜂鸣器发声Buzzer=1'b0;//延时变量加1BuL = BuL + 8'd1;//当到达延时的时间时关掉蜂鸣器if(BuL==8'd255)begin//延时变量复位BuL=8'd0;//蜂鸣器标志位复位BuClk=1'b0;//蜂鸣器停掉Buzzer=1'b1;endendend//-------------重置模块----------------//按下clr键以后各组参数重置,整个比赛重新开始if(clr)begin//重置各个标志位和参数EnFlat=1'b1;//重置时8个Led灯全亮Led1=8'b11111111;//选手号静态数码管的控制端,有8位Led2=8'b11111111;//选手分数显示数码管重置Led3=8'b11111111;//蜂鸣器标志位重置BuClk=1'b0;//蜂鸣器的控制管脚重置,低电平为发声音Buzzer=1'b1;//各组分数重置score1=4’d5;score2=4’d5;score3=4’d5;score4=4’d5;//分数显示寄存器重置answer=8’hff;end//-----------数码显示模块------------begincase(score)4'h0: Led3 = 8'hc0; //显示04'h1: Led3 = 8'hf9; //显示14'h2: Led3 = 8'ha4; //显示24'h3: Led3 = 8'hb0; //显示34'h4: Led3 = 8'h99; //显示44'h5: Led3 = 8'h92; //显示54'h6: Led3 = 8'h82; //显示64'h7: Led3 = 8'hf8; //显示74'h8: Led3 = 8'h80; //显示84'h9: Led3 = 8'h90; //显示94'ha: Led3 = 8'hbf; //显示-default:Led3 = 8'hff; //不显示endcaseendendendmodule。

相关文档
最新文档