数字竞赛抢答器课程设计Verilog语言实现
用Verilog HDL编写的四路抢答器
module count20(a,clr,q1,q2); //计数器,从20计到0 input wire a; input wire clr; output reg [3:0]q1; output reg [3:0]q2; always@(posedge a or negedge clr) begin if(clr==0) begin q1<=4'b0000; q2<=4'b0010; end else if(q1==0) begin q2<=q2-1; q1<=9; end else q1<=q1-1; end endmodule
在BASYS 2 开发板的管脚配置: NET "A_TO_D[3]" LOC = F12; NET "A_TO_D[2]" LOC = J12; NET "A_TO_D[1]" LOC = M13; NET "A_TO_D[0]" LOC = K14; NET "a_to_g[6]" LOC = L14; NET "a_to_g[5]" LOC = H12; NET "a_to_g[4]" LOC = N14; NET "a_to_g[3]" LOC = N11; NET "a_to_g[2]" LOC = P12; NET "a_to_g[1]" LOC = L13; NET "a_to_g[0]" LOC = M12; NET "qiang_da[3]" LOC = A7; NET "qiang_da[2]" LOC = M4; NET "qiang_da[0]" LOC = G12; NET "qiang_da[1]" LOC = C11; NET "clk" LOC = B8; NET "button" LOC = P11; NET "button" CLOCK_DEDICATED_ROUTE = FALSE; NET "xuan" LOC = G1;
Verilog数字抢答器
数字抢答器设计与制作一、设计任务设计并制作一个数字抢答器。
二、设计要求1.抢答器同时供9名选手或9个代表队比赛,分别用9个按钮SW1 ~ SW9表示。
2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。
3.抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LCD数码管上显示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
三、方案论证与总体设计1、提出方案。
本设计是一个数字电路设计题,可提出两种方案。
方案Ι由COMS系列数字集成电路:CD4543、CD4071、CD4069及少数外围电路组成。
方案Π由TTL系列数字集成电路:74LS248、74LS04、74LS32、74LS116及少数外围电路组成。
两种电路原理方框图一样(见图一),其工作原理为:接通电源后,主持人将开关拨到”清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置于“开始”状态,抢答器开始工作。
选手在抢答时,抢答器完成:优先判断、编号锁存、编号显示。
当一轮抢答之后,如果再次抢答必须由主持人再次操作”清除”和”开始”状态开关。
图一、电路原理方框图2、方案比较。
两种方案的设计原理相同,只是用的集成电路不同。
TTL 双极器件、电源电压5V、速度快数ns、功耗大mA级、负载力大,负载以mA计,不用端多半可不做处理。
CMOS 单级器件、电源电压可到15V、速度慢几百nS,功耗低省电uA级、负载力小以容性负载计,不用端必须处理。
设计便携式和电池供电的设备多用CMOS芯片,对速度要求较高的最好选用TTL中的74SXXX系列。
本电路对速度要求不大,选用CMOS型数字集成块来组成抢答器。
四、单元电路设计1.图中左上方所示为9路开关阵列电路,从图上可以看出其结构非常简单。
电路中,R1为下拉和限流电阻。
R2、R3、R4、R5用于分压,其中R1的阻值必须比R2~R5都小,当任一开关按下时,相应的输出为高电平,否则为低电平。
基于FPGA技术实现智能抢答器的设计
河北工业大学城市学院毕业设计说明书作者:陈厚黎学号: 098063 系:信息工程系专业:电子科学与技术题目:基于FPGA技术实现智能抢答器的设计指导者:伍萍辉教授(姓名) (专业技术职务)评阅者:(姓名) (专业技术职务)年月日目次1引言............................................................................................................................................. - 1 -1.1 本课题的发展现状................................................................................................................ - 1 -1.2 本课题研究的目的和意义.................................................................................................. - 1 -1.3、实现方法概述...................................................................................................................... - 2 -2 基本应用电路设计................................................................................................................ - 5 -2.1 抢答器设计基本要求.......................................................................................................... - 5 -2.2 硬件电路设计........................................................................................................................ - 6 -2.3 软件程序设计........................................................................................................................ - 6 -3 系统总体电路图...................................................................................................................... - 18 -4 编程及测试.............................................................................................................................. - 19 -结论.......................................................................................................................................... - 20 -参考文献................................................................................................................................ - 21 -致谢.......................................................................................................................................... - 22 -附录.............................................................................................................................................. - 23 -1引言FPGA(即现场可编程门阵列)差不多最早出现在上个世纪的八十年代中期,现场可编程门阵列是在PAL、GAL、CPLD等一系列可编程的器件的基础上更先进的发展产物。
数字电子技术实验报告范文-基于FGPA的4位智能抢答器(verilogHDL)
数字电子技术实验报告范文-基于FGPA的4位智能抢答器(verilogHDL)基于FPGA的4位智能抢答器一、设计任务要求基于EDA/SOPC系统开发平台,运用QuartuⅡ可编程逻辑器件开发软件,设计一个4位智能抢答器,在开发箱上,本系统使用频率为1000赫兹的时钟脉冲。
要求如下:2、系统上电和按下“复位”按键后4位数码管显示“0000”,此时只有“开始”按键有效,其他按键不起作用;4、抢答的有效时间为10秒,如果定时抢答的时间已到而没有选手抢答,本次抢答无效,封锁输入电路,禁止抢答,数码管左边显示“10”,右边显示“00”;此状态一直保持到主持人将系统复位为止;二、设计步骤本次设计主要采用VerilogHDL语言,总体编程思路采用模块化设计方式,主要分为3个模块,一个主控制及按键输入模块,一个计时显示模块,一个抢答组号显示模块,分别对这3个子模块进行独立编程设计,编译仿真通过并生成元件,在顶层使用原理图或者VerilogHDL语言的方式将3个模块连接起来三、模块设计思路对于这个任务来说,计时显示模块和抢答组号显示模块的模块并不复杂,复杂的模块是主控制及按键输入模块,所以我决定再将主控制模块拆分成两个小的模块——按键输入模块、按键输入判断输出模块。
后者使用4个D触发器来实现,当游戏开始的时候4个D触发器都会接收按键按下的信息,并且判断是否出现问题,下面我就真实的程序来进行说明。
1、主控制模块的按键输入模块LED3=how0;LED4=how0;endendEndmodule总体的电路图如下:(有些模糊,是因为电路图的连线过长,截图的时候不得不截成一个明显的长方形图形)四、实验总结:通过这次的实验任务,学习了一些verilogHDL语言的知识,也复习了数字电子技术相关的知识。
以前只是在纸上画过一些原理图,如果需要改动某一个点的时候就会出现牵一发而动全身的现象,对于比较复杂的电路设计,纸上的勾勾画画很显然会很浪费时间,所以对于程序设计电路的方式我相信大多数人是持欢迎态度的。
基于Verilog HDL的数字竞赛抢答器
欽件打夜场宗用2021年第2期售廉与电atChina Computer & Communication 基于Verilog HDL 的数字竞赛抢答器孙阔王颖*(大连理工大学城市学院电子与自动化学院,辽宁大连116024)摘 要:数字抢答器拥有广阔的市场前景,在电视节目、各类高校的比赛中都可以使用数字抢答器。
本文基于 Verilong HDL 设计了一种数字抢答器,该数字抢答器以6个参赛组为基础实现其他功能,具有一定的审场价值.关键词:Verilog HDL;数字抢答器;FPGA中图分类号:TP311.52 文献标识码:A 文章编号:1003-9767 (2021) 02-112-02Digital Competition Answerer Based on Verilog HDLSUN Kuo, WANG Ying*(School of Electronics and Automation, City College, Dalian University of Technology, Dalian Liaoning 116024, China)Abstract : Digital answering devices have broad market prospects, and digital answering devices can be used in TV programs and competitions in various colleges and universities. This paper designs a digital answering device based, on Verilong HDL ・ The digital answering device implements other functions based on 6 participating groups and has a certain market value.Keywords : Verilog HDL; digital answerer; FPGA0引言近年来,随着科学技术的不断发展,抢答器的功能以及实现方法也越来越多,在竞赛中使用抢答器是一种很流行的 比赛方式,深受比赛各方的青睐冋。
数字竞赛抢答器课程设计Verilog语言实现
数字竞赛抢答器课程设计V e r i l o g语言实现可编程器件与应用课程设计报告姓名: XXX学号: XXXXXXXXXX专业班级:信息XXX题目:数字式竞赛抢答器指导老师:一、绪论背景:随着电子技术的发展,可编程逻辑器件(PLD)的出现,使得电子系统的设计者利用EDA(电子设计自动化)软件,就可以独立设计自己的专用集成电路(ASIC)器件。
可编程逻辑器件是一种半导体集成器件的半成品。
在可编程逻辑器件的芯片中按一定方式(阵列形式或单元阵列形式)制作了大量的门、触发器等基本逻辑器件,对这些基本器件适当地连接,就可以完成某个电路或系统的功能。
数字式竞赛抢答器控制系统是工厂、学校和电视台等单位举办各种智力竞赛等娱乐活动中经常使用的重要基础设备之一。
目前设计抢答器的方法很多,例如用传统的PCB板设计、用PIC设计或者用单片机设计。
而用Verilog可以更加快速、灵活地设计出符合各种要求的抢答器,优于其他设计方法,使设计过程达到高度自动化。
本文介绍的4路数字式竞赛抢答器基于Verilog语言、以EDA技术作为开发手段、采用CPLD(复杂的可编程逻辑器件)作为控制核心设计而成。
与传统设计相比较,不仅简化了接口和控制,也提高了系统的整体性能和工作可靠性,具有电路简单、成本低廉、操作方便、灵敏可靠等优点。
意义:数字式竞赛抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器存在分立元件使用较多,造成每路的成本偏高,而现代电子技术的发展要求电子电路朝数字化、集成化方向发展,因此设计出数字化全集成电路的多路抢答器是现代电子技术发展的要求。
二、实现方案设计要求:1、设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用。
2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3、设置一个主持人“复位”按钮。
4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2~3秒的音响。
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版
抢答器-verilog一.实验要求设计一个可容纳四组参赛的数字式抢答器,每组设一个按钮供抢答使用。
抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用;设置一个主持人“复位”按钮,主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,用指示灯显示抢答组别,扬声器发出2—3s的音响。
设置犯规电路,对提前抢答和超时答题(例如3min)的组别鸣笛示警,并由组别显示电路显示出犯规组别。
设置一个计分电路,每组开始预置10分,由主持人记分,答对一次加1分,答错一次减1分。
二.实验方框图三.答题规则(本实验均采用脉冲按键模式)四.本次实验的verilog源程序module answer(clk,k1,k2,k3,k4,o1,o2,o3,o4,out1,out2,start,reset1, save); //抢答信号鉴别,保持模块input clk,k1,k2,k3,k4,start,reset1;//k1~k2是选手按键output o1,o2,o3,o4,out1,out2;//o1~o2是抢答信号显示灯output[2:0] save; //用于保存选手的抢答信号reg o1,o2,o3,o4,out1,out2,ok;reg[7:0] counter;reg[2:0] save;integer i;always@(posedge clk)if(reset1)//当reset1为1时复位清零begin{o1,o2,o3,o4,out1,out2,ok}<=7'b0000000;counter<=0;i=0;endelsebegin////if(start)beginok<=1;save<=0;endif(!ok)//reset1和ok为0时,有人按键表示犯规begin //一旦有人按键,他的输出信号将屏蔽其他人的按键if(k1&&!o2&&!o3&&!o4)begino1<=1;save<=1;endif(k2&&!o1&&!o3&&!o4)begino2<=1;save<=2;endif(k3&&!o1&&!o2&&!o4)begino3<=1;save<=3;endif(k4&&!o1&&!o2&&!o3)begino4<=1;save<=4;endif(o1 || o2 || o3 || o4)//提前按键扬声器响out1<=1;endelse//reset1为0,ok为1时,有人按键为正常抢答begin//if(k1 || k2 || k3 || k4)begin //一旦有人按键,他的输出信号将屏蔽其他人的按键if(k1&&!o2&&!o3&&!o4)begino1<=1;save<=1;endif(k2&&!o1&&!o3&&!o4)begino2<=1;save<=2;endif(k3&&!o1&&!o2&&!o4)begino3<=1;save<=3;endif(k4&&!o1&&!o2&&!o3)begino4<=1;save<=4;endendif(o1 || o2 || o3 || o4)begini=i+1;if(i<2)out2<=1;//有人抢到题,响几下铃。
Verilog HDL 课程设计报告 四人抢答器电路设计 河海大学
河海大学计算机与信息学院(常州)课程设计报告题目四人抢答器电路设计学号 1062510130 授课班号 274302 学生姓名王聪同组成员 1062510135 张恒指导教师奚吉完成时间2013.01.04四人抢答器电路设计摘要Verilog HDL课程设计的主要动机是1.培养综合运用知识和独立开展实践创新的能力;2.通过完成四人抢答器电路设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础;3.通过搭建调试电路,进一步熟悉相关仪器设备的使用;4.通过Verilog程序的编写,进一步熟悉Verilog HDL的语法知识;5.规范化训练学生撰写技术研究报告,提高书面表达能力。
四人抢答器电路设计的主要问题在于各个模块的正确分配,从而使设计出的电路更加符合要求。
为了使各个模块能够正确分配,在程序开始设计之前,必须反复推敲本组的设计方案并设计好各个模块的方框图。
如果一切都设计好之后,那么最后的电路会具有抢答第一信号鉴别和锁存功能、主持人清屏功能、30秒倒计时功能、蜂鸣器报警功能。
实现四人抢答器的预期功能需要:1.将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2.遇到本组内解决不了的问题,及时和其他小组交流或询问老师;3.进行模块调试时,根据试验箱上现象的不同及时调整相关程序的内容。
本次课程设计的实现的重要结果1.完成了实验环境搭建;2.实现了一四人抢答器,有人抢答成功后,其他人再抢答无效;3.通过蜂鸣器响1秒来提示抢答成功,并在数码管上显示抢答者的序号;4.主持人通过按键清除抢答信息,并开始30秒的答题倒计时,当倒计时结束时,通过蜂鸣器响1秒来提示回答问题时间到,此时可以开始新一轮的抢答。
当然,本次课程设计还有诸多不足之处,我们已经力求改进以求设计的实用性及完美性。
抢答器( Verilog HDL实现)
桂林电子科技大学信息科技学院《EDA技术与应用》实训报告学号0952100110姓名赵万里指导教师:江国强杨艺敏2011年04月20日实训题目:智能电子抢答器1.系统设计1.1 设计要求1.1.1 设计任务设计并制作一台智能电子抢答器。
1.1.2 技术要求①用EDA实训仪的I/O设备和PLD芯片实现智能电子抢答器的设计。
②智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。
③电路具有第一抢答信号的鉴别和锁存功能。
在主持人将复位按钮按下后开始抢答,并用EDA实训仪上的八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”的响声,并维持3秒钟,此时电路自锁,不再接受其他选手的抢答信号。
④设计一个计分电路,每组在开始时设置为100分,抢答后由主持人计分,答对一次加10分,答错一次减10分。
⑤设计一个犯规电路,对提前抢答和超时抢答者鸣喇叭示警,并显示犯规的组别序号。
1.2 方案比较(1) 设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮。
(2) 电路具有第一抢答信号的鉴别和锁存功能。
在主持人按下复位按钮后,若参加者按抢答开关,则该组指示灯亮。
此时,电路应具备自锁功能,使别组的抢答开关不起作用。
(3)自锁后,用八段数码管显示抢答者的序号,同时指示灯亮。
(4) 设置计分电路。
每组在开始时预置成100,抢答后由主持人计分,答对一次加10,否则减10分。
(5)电路具有淘汰功能,当每组的100分减少到0时,该组被淘汰,以后每次抢答,该组抢答按钮都无效。
1.3 方案论证1.3.1 总体思路总体分为四部分:倒计时模块、计分模块、抢答模块和分屏显示模块。
倒计时模块用一个20000000分频。
产生一个进位,连接一个30的减法计数器构成。
计分模块中分为两部分,一部分用于计分,另一部分用于处理计数器的进制问题,当加到A时自动向前进位,并且把A变为0。
当减少到F时,向前借位,并且把F变为9。
这就实现了把十六进制变成一般用的十进制。
verilog抢答器(最经典)
抢答器设计题目:智能电子抢答器专业:电子信息工程2011 年 1 月 7 日摘要抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。
电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。
本设计是以四路抢答为基本概念。
从实际应用出发,利用电子设计自动化( EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。
它以Verilog HDL 硬件描述语言作为平台,结合动手实验而完成的。
它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。
本抢答器的电路主要有四部分组成:鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用Quartus II工具软件完成了Verilog HDL源程序编写和硬件下载。
这个抢答器设计基本上满足了实际比赛应用中的各种需要。
在实际中有很大的用途。
关键词:抢答器 Quartus II Verilog HDL EP1C3T144C81引言硬件描述语言 Hardware Description Language 是硬件设计人员和电子设计自动化 EDA 工具之间的界面。
其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。
即利用计算机的巨大能力对用 Verilog HDL 或 VHDL 建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表 Netlist,根据型仿真验证无误后用于制造ASIC芯片或写入 EPLD 和 FPGA 器件中。
Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。
用Verilog HDL编写的四路抢答器演示幻灯片
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抢答器(两个程序)
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)系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。
verilog抢答器设计报告
湖北师范学院电工电子实验教学省级示范中心电子版实验报告抢答器一.任务解析用Verilog硬件描述语言设计抢答器,实现:1、四人通过按键抢答,最先按下按键的人抢答成功,此后其他人抢答无效。
2、每次只有一人可获得抢答资格,一次抢答完后主持人通过复位按键复位,选手再从新抢答。
3、有从新开始游戏按键,游戏从新开始时每位选手有5分的初始分,答对加1分,答错扣1分,最高分不能超过9分,当选手得分减为0时取消该选手抢答资格。
4、选手抢答成功时其对应的分数闪烁。
二.方案论证(画框图并分析)抢答部分(对应snatch模块)在quartusII下的仿真原理图如下所示:第2页,共6页抢答部分的代码如下:计分模块的代码如下:顶层模块的代码如下:三.重难点解析抢答器的核心部分为巧妙地利用D触发器的反馈,在检测到第一个上升沿时将按键(未按下时接低电平)接入的与门锁住,以保证与门只有一个上升沿输出,从而实现“最先按下按键的人抢答成功,此后其他人抢答无效”。
在与门输出上升沿的同时检测按键,以确定是哪位选手抢答,用寄存器存下抢答选手的信息,最后确定哪个led灯亮以及那位选手对应的分数闪烁。
至于取消0分选手抢答资格,则是将各选手的分数反馈到选手抢答的按键,通过与门关闭相应选手按键上升沿的进入。
其他功能的实现相对简单,在此不再赘述。
将各模块代码写好并测试后,在主模块中调用并分配引脚,引脚分配好后,从新编译、下载就可实验了。
分别验证上述的各种功能,看是否达到预期的效果。
四.硬件资源分配(给出引脚分配说明)芯片选用EP1K30TC114-3,clr接全局清零键pin124,start(游戏从新开始键)接pin49,up(加分键)接pin47,down接pin48,四个抢答按键key3、key2、key1、key0、分别接pin59、pin60、pin62、pin63,7段数码管的7盏灯a、b、c、d、e、f、g分别pin118、pin119、pin120、pin121、pin122、pin128、pin130,数码管选择信号sel0、sel1、sel2分别接pin132、pin133、pin135,抢答指示灯led0、led1、led2、led3分别接pin136、pin137、pin138、pin140。
fpga数字抢答器课程设计
fpga数字抢答器课程设计一、课程目标知识目标:1. 让学生掌握FPGA(现场可编程门阵列)的基础知识,理解数字抢答器的原理和设计流程;2. 培养学生运用数字逻辑设计方法,结合FPGA技术实现简单数字系统的能力;3. 使学生了解数字抢答器的各个功能模块及其相互关系,掌握相关电路的设计与调试方法。
技能目标:1. 培养学生运用FPGA开发工具进行数字逻辑设计和编程的能力;2. 培养学生通过实际操作,学会使用相关仪器和设备进行数字电路的调试与测试;3. 提高学生团队协作能力和问题解决能力,能有效地分析问题、设计方案并完成任务。
情感态度价值观目标:1. 激发学生对电子技术领域的兴趣,培养其创新意识和探索精神;2. 培养学生严谨的科学态度,注重实践操作,养成良好的学习习惯;3. 引导学生关注科技发展,认识到所学知识在实际应用中的价值,增强社会责任感。
本课程针对高年级学生,结合学科特点,注重理论与实践相结合,提高学生的实际操作能力和创新思维。
通过课程学习,使学生能够掌握FPGA数字抢答器的设计方法,培养具备实际工程应用能力的优秀电子技术人才。
二、教学内容本章节教学内容主要包括以下三个方面:1. 数字逻辑设计基础:- 引导学生复习数字逻辑基础知识,包括逻辑门、组合逻辑和时序逻辑等;- 结合教材相关章节,讲解FPGA的基本原理及其在数字系统设计中的应用。
2. FPGA数字抢答器设计:- 分析数字抢答器的功能需求,明确各个功能模块的设计目标;- 依据教材内容,详细介绍FPGA设计流程,包括硬件描述语言(HDL)编程、综合、布局布线等;- 指导学生完成数字抢答器各功能模块的设计与实现。
3. 实践操作与调试:- 安排学生进行实际操作,学会使用FPGA开发板和相关仪器设备;- 教学内容包括:电路搭建、程序下载、调试与测试等;- 引导学生掌握常见问题分析方法,解决实际操作过程中遇到的技术难题。
教学内容安排和进度:1. 数字逻辑设计基础(2课时)2. FPGA数字抢答器设计(4课时)3. 实践操作与调试(4课时)三、教学方法针对本章节内容,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 对于数字逻辑设计基础和FPGA基本原理等理论知识,采用讲授法进行教学,结合教材章节,系统性地讲解相关知识,为学生奠定扎实的理论基础。
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)系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可编程器件与应用课程设计报告姓名: XXX学号: XXXXXXXXXX专业班级:信息XXX题目数字式竞赛抢答器指导老师:、绪论背景:随着电子技术的发展,可编程逻辑器件(PLD )的出现,使得电子系统的设计者利用EDA (电子设计自动化)软件,就可以独立设计自己的专用集成电路(ASIC )器件。
可编程逻辑器件是一种半导体集成器件的半成品。
在可编程逻辑器件的芯片中按一定方式(阵列形式或单元阵列形式)制作了大量的门、触发器等基本逻辑器件,对这些基本器件适当地连接,就可以完成某个电路或系统的功能。
数字式竞赛抢答器控制系统是工厂、学校和电视台等单位举办各种智力竞赛等娱乐活动中经常使用的重要基础设备之一。
目前设计抢答器的方法很多,例如用传统的PCB板设计、用PIC设计或者用单片机设计。
而用Verilog可以更加快速、灵活地设计出符合各种要求的抢答器,优于其他设计方法,使设计过程达到高度自动化。
本文介绍的4路数字式竞赛抢答器基于Verilog语言、以EDA技术作为开发手段、采用CPLD (复杂的可编程逻辑器件)作为控制核心设计而成。
与传统设计相比较,不仅简化了接口和控制,也提高了系统的整体性能和工作可靠性,具有电路简单、成本低廉、操作方便、灵敏可靠等优点。
意义:数字式竞赛抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器存在分立元件使用较多,造成每路的成本偏高,而现代电子技术的发展要求电子电路朝数字化、集成化方向发展,因此设计出数字化全集成电路的多路抢答器是现代电子技术发展的要求。
实现方案设计要求:1设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用。
2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3、设置一个主持人“复位”按钮。
4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2~3秒的音响。
5、设置一个计分电路,每组开始预置5分,由主持人记分,答对一次加1分,答错一次减1分。
6、设置犯规电路,对超时答题(例如1分钟)的组别鸣笛示警,并由组别显示电路显示出犯规组别,该轮该选手退出,由裁判员重新发令,其他人再抢答。
此设计问题可分为第一信号鉴别、锁存模块,答题计时电路模块,计分电路模块和扫描显示模块四部分。
第一信号鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,在得到第一信号后,将输入端封锁,使其他组的抢答信号无效,可以用触发器或锁存器实现。
设置抢答按钮K1、K2、K3、K4,主持人复位信号judge,蜂鸣器驱动信号buzzout。
judge=O时,第一信号鉴别、锁存电路、答题计时电路复位,在此状态下,若有抢答按钮按下,鸣笛示警并显示犯规组别;judge=1时,开始抢答,由第一信号鉴别锁存电路形成第一抢答信号,进行组别显示,控制蜂鸣器发出声响,并启动答题计时电路,若计时时间到,主持人复位信号还没有按下,则由蜂鸣器发出犯规示警声。
计分电路是一个相对独立的模块,采用十进制加/减计数器、数码管数码扫描显示,设置复位信号Reset、加减分信号add_min,加减分状态键key_state, Reset=0时所有得分回到起始分(5分),且加、减分信号无效;Reset=1时,由第一信号鉴别、锁存电路的输出信号选择进行加减分的组别,当key_state=1时,按一次add_min,第一抢答组加1分;当key_state=O时,每按一次add_min,则减1分。
以下为每个模块的设计过程。
三、程序及仿真/******************************************************************顶层模块信号定义:elk:基准时钟输入信号;k1,k2,k3,k4 :抢答按钮输入信号;seg数码管段输出引脚;si:数码管位输出引脚;add_mi n:加减分按键;key_state:加减分模式选择按键;reset:初始5分设置键信号;judge:裁判员抢答开始键信号;o5:超时信号;o1、o2、o3、o4 :抢答组别LED 显示输出信号;buzz:示警输出信号;******************************************************************/moduleqia ngdaqi(clk,k1,k2,k3,k4,seg,sl,add_ min ,key_state,reset,judge,o1,o2,o3,o4,o5,buzz,vg,sel);in put clk,k1,k2,k3,k4,add_ min, key_state,reset,judge;output[7:0] seg; output[3:0] sl; output reg sel; output o1,o2,o3,o4,o5,vg; output buzz;reg [3:0] vg=0010; wire o1,o2,o3,o4; wire[3:0] s1,s2,s3,s4;/*模块引用*/sel Q1(clk,k1,k2,k3,k4,judge,o1,o2,o3,o4,o5,buzz); 〃调用抢答信号锁存显示电路count Q2(clk,o1,o2,o3,o4,add_min,key_state,reset,s1,s2,s3,s4); //调用计分电路dled Q3(seg,sl,s1,s2,s3,s4,clk); 〃调用数码管显示电路en dmodule/****************************************************************信号锁存电路信号定义:CLK时钟信号;K1、K2、K3 K4、K5 K6:抢答按钮信号;out1、out2、out3、out4、out5、out6 :抢答LED显示信号;judge:裁判员抢答开始信号;buzzout:示警输出信号;flag:答题是否超时的标志;****************************************************************/module Sel(clk,k1,k2,k3,k4,judge,out1,out2,out3,out4,out5,buzzout);in put Clk,k1,k2,k3,k4,judge; output out1,out2,out3,out4,out5,buzzout;reg out1,out2,out3,out4,out5,block,buzzout; reg[32:0] count;reg[27:0] coun ter; reg flag;always@(posedge clk )begin cou nter=cou nter+1; //裁判员发开始抢答信号,初始指示灯灭,蜂鸣器禁声if(!judge) begin {out1,out2,out3,out4,out5,block}<=6'b111110;coun t=0; flag=0; endelse begin if(!k1) //第一组别按键是否按下begi n if(!block)begi n out1=0; 〃点亮第一组别指示灯block=1; 〃封锁别组抢答信号count=1; 〃第一组已按下按钮,可启动答题计时器end endelse if(!k2) 〃第二组别按键是否按下begi n if(!block)begi n out2=0; block=1;co un t=1; endendelse if(!k3) 〃第三组别按键是否按下begi n if(!block)begi n out3=0; block=1; coun t=1; endendelse if(!k4) 〃第四组别按键是否按下begi n if(!block)begi n out4=0; block=1; coun t=1; endendend /*答题计时开始,并判断是否答题超时*/if(cou nt!=O)begin if(count==32'hc11e7a00)//如果答题时间到了1分钟,亮犯规灯begi n coun t=0; out5<=0; flag=1'b1; endelse beg in coun t=co un t+1; endendend ////蜂鸣器发声always@(co un ter[7])if(flag==1) buzzout=!(cou nter[11]&coun ter[22 ]&cou nter[27]);else buzzout=1'b0;en dmodule/**************************************************************去键盘抖动信号定义:clkin:基准时钟输入信号;clkout:周期为20ms的信号输出;*************************************************************/module f_1M(clk in ,clkout);In put clkin; output clkout;reg clkout; reg[18:0] count;always @(n egedge clkin)if(cou nt==19'd500000)begin coun t<=19'd000000; clkout<=~clkout; endelse coun t<=co un t+1'b1;en dmodule/**************************************************************计分电路信号定义:clk:时钟信号;c1,c2,c3,c4:抢答组别输入信号;add_min:加减分按钮;key_state:加减分标志按钮;reset:初始5分设置信号;count1:第一组得分输出;count2:第二组得分输出;count3:第三组得分输出;count4:第四组得分输出;*************************************************************/ module coun t(clk,c1,c2,c3,c4,add_ min, key_state,reset,co un t1,co un t2,co un t3,co un t4); in put clk,c1,c2,c3,c4,add_ min, key_state,reset; output[3:0] coun t1,co un t2,co un t3,co unt4;reg[3:0] coun t1,co un t2,co un t3,co un t4; wire clkO; reg keyout;f_1M f_1Ma(clk,clkO); //引用获得20毫秒的子模块always @(n egedge clk0)keyout=add_ min;always @(posedge keyout) //根据相应组别加减分begi n if(!reset) 〃初始化各组的起始分数{cou nt1,cou nt2,cou nt3,cou nt4}=16'h5555;if(!key_state) // key_state为低电平,选组别减分模式begin if(!c1) 〃第一组别减1分,最高分为10分,最低分为0分begin if(cou nt1!=4'b0000) cou nt仁cou nt1-1; endif(!c2) 〃第二组别减1分,最高分为10分,最低分为0分begin if(cou nt2!=4'b0000) cou nt2=cou nt2-1; endif(!c3) 〃第三组别减1分,最高分为10分,最低分为0分begin if(cou nt3!=4'b0000) cou nt3=cou nt3-1; endif(!c4) 〃第四组别减1分,最高分为10分,最低分为0分begin if(cou nt4!=4'b0000) coun t4=cou nt4-1; endend else // key_state为高电平,选组别加分模式begi n if(!c1) 〃第一组别加分,最高分为10分,最低分为0分begi n if(cou nt1>9) cou nt仁0;else coun t1=co un t1+1; endif(!c2) 〃第二组别加分, 最高分为10分, 最低分为0分begi n if(cou nt2>9) coun t2=0; else coun t2=co un t2+1; endif(!c3) 〃第三组别加分,最高分为10分, 最低分为0分begi n if(cou nt3>9) coun t3=0; else coun t3=co un t3+1; endif(!c4) 〃第四组别加分,最高分为10分, 最低分为0分begi n if(cou nt4>9) coun t4=0;else coun t4=co un t4+1; end end enden dmodule/******************************************************************数码管显示电路信号定义:clk:时钟信号;seg:数码管段输出引脚;sl:数码管位输出引脚;score1:第一组得分输入;score2:第二组得分输入;score3:第三组得分输入;score4:第四组得分输入;****************************************************************module dled (seg,sl,score1,score2,score3,score4,clk,vg); output[7:0] seg; output[3:0] sl; output reg [3:0] vg=0010; in put clk; in put[3:0] score1,score2,score3,score4;reg[7:0] seg_reg; 〃定义数码管段输出寄存器reg[3:0] sl_reg; 〃定义数码管位输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[16:0] cou nt; 〃定义计数器寄存器always@(posedge elk) begi n coun t=eo un t+1; endalways@(cou nt[14:13]) begin case(count[14:13])en dmodule管脚分配图如下:〃定义clock信号上升沿触发//计数器值加1〃定义显示数据触发事件2'h0:disp_dat=score1; 2'h1:disp_dat=score2; 2'h2:disp_dat=score3; 2'h3:disp_dat=score4; endcasecase(cou nt[14:13]) 2'h0:sl_reg=4'b1110; 2'h1:sl_reg =4'b1101; 2'h2:sl_reg =4'b1011; 2'h3:sl_reg =4'b0111; endcase end //在个位数码管上显示第一组别的分数值〃在十位数码管上显示第二组别的分数值//在百位数码管上显示第三组别的分数值//在千位数码管上显示第四组别〃选择数码管显示位//选择个位数码管//选择十位数码管//选择百位数码管always@(disp_dat)begincase(disp_dat)4'h0:seg_reg=8'h3f; 〃显示数据0//显示数据的解码过程4'h1:seg_reg=8'h06; // 显示数据 14'h2:seg_reg=8'h5b; 〃显示数据 24'h3:seg_reg=8'h4f; 〃显示数据 34'h4:seg_reg=8'h66; 〃显示数据 44'h5:seg_reg=8'h6d; //显示数据 54'h6:seg_reg=8'h7d; //显示数据 64'h7:seg_reg=8'h07; //显示数据74'h8:seg_reg=8'h7f; 〃显示数据84'h9:seg_reg=8'h6f; 〃显示数据94'ha:seg_reg=8'h77; //显示数据 a4'hb:seg_reg=8'h7c; 〃显示数据 b4'hc:seg_reg=8'h39; 〃显示数据 c4'hd:seg_reg=8'h51; //显示数据 d4'he:seg_reg=8'h79; 〃显示数据 e4'hf:seg_reg=8'h71; 〃显示数据 fendcase endassig n seg=seg_reg; assig n sl=sl_reg; 〃输出数码管解码结果四、总结1打开Quartus II软件,对该工程文件进行编译处理,若在编译过程中发现错误,找出并更正错误直至成功为止。