抢答器VerilogHDL实现

合集下载

抢答器(-Verilog-HDL实现)

抢答器(-Verilog-HDL实现)

抢答器(-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抢答器设计报告

verilog抢答器设计报告

湖北师范学院电工电子实验教学省级示范中心电子版实验报告抢答器一•任务解析用VerilOg硬件描述语言设计抢答器,实现:1、四人通过按键抢答,最先按下按键的人抢答成功,此后其他人抢答无效。

2、每次只有一人可获得抢答资格,一次抢答完后主持人通过复位按键复位,选手再从新抢答。

3、有从新开始游戏按键,游戏从新开始时每位选手有5分的初始分,答对加1分,答错扣1分,最高分不能超过9分,当选手得分减为0时取消该选手抢答资格。

4、选手抢答成功时其对应的分数闪烁。

•方案论证(画框图并分析)抢答部分(对应SnatCh模块)在quartusll下的仿真原理图如下所示:第2页,共6页抢答部分的代码如下:InOdUIe SnatCh(CLr F key,data j led,m) ;/∕≠⅛答慎块input clr;//主持人复J f立按键input[3:0] key;//四个技犍对应四竝选手input [15 :0] data^∕⅛i⅛手的分数反銀进来以取消0分选手抢答资格OUtPUt [3 : 0] Ied√ //四位选手抢答指示灯QUtPUt [2:0]町"存储抢答结果〔有没有人抢答及谁抢答:>reg C I q;reg[1:0] ≡;Wire out={key[0]fc{data[S:0]!=0))∣(key[l]&(data[7;4]1=0))Ifk已y[2]&(data[11:0]!=0}) I (⅛ey[3]盂{data [15 :12]1=0) };"选手分数减为零时取消其抢答资格Wire CIk=OUt⅛(Jq);assign In-{c,s};//⅛lways(⅛ {posedge Clk Or negedge CIr)if (!clr}begin q<=O;c<=O;end"主持人复位else begin c<=l;q<=J q;end//有i⅛手抢答时匸直1, q为D触发:器输出端Ialway≡&(p□≤edge CIk)case(key)rb0001zs<=2l b00r77检测到有人抢答时立即将选手抢答信息存入s4 ・b0010:s<=2'b01;4 ・b0100ιs<=2,b!0;4,blOOO≈3<=2t bll;default: s<=2,b??;//其他情况^为高阻值.endcaseassign l≡d- U-τ ≡ } --3 ' blOO ) ^4 ,b3301: 「矩答亍空芋J⅛τ⅛<Γ亮t{c f s}≡=3'blθl),b0010:f {c,s}=3,bllθ) ?4I bolO0: l(c13}=3,blll) 74τbiα00: 4τb0000;e JTidmodu Ie计分模块的代码如下:InQdUle StQre {star t小PrdowmSr q);"计分模圳input start J up r down;input [2:0] s;"通过S可以判断有没有人抢答21哪位选手抢答ClUtPUtr15-0] q;reg[15:0] q;/∕q[3: Ob q[7:41 J q[ll:81,q[15H21分别存放四位选手的分数LCELL aa (UP f CieIaylIP) , bb (down^ de laydown) ; ''∕i^ 用系统延时模块Wire clk=delayupIdelaydo⅛m;always0(posedge CIk Or POSedge start)if {start)q<=161h5555;//给抢答的四人毎人一个初始分数5分else if (up)//加按键按下时加1分case (S)3'blOO:if (q[3^J<⅛τh9)q[3 = 0]<=q[3r01+lτbl;//最高分不能超过93τbl01∑if (q[7z41<4τh9)q[7z4]<=q[7z4]+l l bl;//3*bllO:if (q[llιB]<4t h9)q∣[llι8]<=q[llι8]+l t bl;//3,blllzif(q[15:12]<4'h9)q(15:12]<=q[15:12]+1t bl;//endcaseelsecase (s)3τblOO=if(q[3=O]>O)q[3r{)]<^ι[3:Ol-I l b1;//最低分不能小于03,bl01=if (q[7 = 4]>0)q[7 = 4]<=q[7 = 4]-l l bl;//S1DllOiif(q[llzB]>O)q[11:0]<=q[11;B]-l'bl;//3l blllzif(q[15:12]>0)q[15:12]<=q[15:12]-l1bl;//endcase endmodule顶层模块的代码如下:module top (StaEt J Clr f CLkJ UPJ Idowlb key f⅛f b f c, Cb S l E 内*SeI J led}主槟块input start,clr f亡IlGUpr down;input[3:0] key;OUtPUt a f b f亡de,frg;OUtPUt[2:0] sei;OUtPUt[3:0] led;wire f lash f wup j WdDWr L;∏内部节点〔连线】Wire [2:0]fuck;Wire [3:0]out; Wire [15:0]Whore; deboυnced⅞bl(.clk(s) J-key_In (υp}…key_OUt (WUP))「"按⅛⅛⅛4⅛τd⅞⅛2(.clk(s) J-Ifey in{mod)…key-αut (WdOWn));"按键去抖动SCaIn SCan (.clk(s) J.q(sel)} J∕∕⅛⅛mux9 mux LaI (VhOre(S: 0]} r r a2 (4 ,ha} j r a3 (WhOre [7 : 4])…訥K ,ha) J+a5(w⅛0R[11:3]I,.a6{4rħa)I r,a7(Whore[15:12]) r,aS{4τha),-Bel{≤el)「”DdfuCk) J r clk{flash}. ”OUt{out});//4 rħa在CIeIed里定文为全熄deled CieIeelL in (out) t.a (a), ,b (b), .c (c) f.d(d) f.e (e) j. f (f) ,r.g{g)}数码管驱动Store SitOre (. Start (st⅛rt} f-UP (VrUP) f- CIawn (IJaoWn) f . 5 (fuck) ,r,q{wħαre)); //分⅛fc控制SnatCh Snatcħ {r clr (dr) J key {⅛ey) F -Cia t⅛ (WhOre) I- Ied (ISdI Z p jn(fυck)); /丿抢答控制div_cIk divclkl(.cifi(clk), .f (15,d4θθθ) Ir,cko(≤) H "分频CliVCI⅛2(. Cki (Clk)5.f (21d2), T C)co (flash));endιπodule•重难点解析抢答器的核心部分为巧妙地利用D触发器的反馈,在检测到第一个上升沿时将按键(未按下时接低电平)接入的与门锁住,以保证与门只有一个上升沿输出,从而实现“最先按下按键的人抢答成功,此后其他人抢答无效”。

基于Verilog HDL的数字竞赛抢答器

基于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语言实现

数字竞赛抢答器课程设计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_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 工具之间的界面。

智能抢答器的Verilog设计及Quartus_仿真

智能抢答器的Verilog设计及Quartus_仿真

本文用 Verilog HDL 设计实现一个具有四组输入的, 能够显示抢 答倒计时时间和抢答组数等信息,并且对抢答后各组的成绩进行处理 并显示的抢答器。利用 Verilog HDL 硬件描述语言设计抢答器,使抢答 器 硬 件 电 路 更 加 简 单 ,抢 答 器 时 序 控 制 灵 活 ;利 用 FPGA I / O 端 口 可 自定义特点,在本文设计智能抢答器基础上,增加抢答器的按键阵列,
1 系统设计
1.1 抢答器系统的功能 抢答器具体功能如下:(1)可同时进行四组人的抢答。 (2)设置一个
抢答控制开关,只有按下开 始 按 钮 才 能 抢 答 ;(3)抢 答 器 具 有 抢 答 倒 计 时功能,一次抢答的倒计时时间为 60s。 (4)抢 答 器 具 有 锁 存 与 显 示 功 能。 即选手按动按钮 ,锁存相应的组号 ,显示组号 。 抢答实行优先锁存 , 优先抢答选手的相应组号和成绩一直保持到下一轮抢答开始 。(5)参赛 选手在设定的抢答有效时间内进行抢答,抢答有效,如果抢答延迟时 间已到,无人抢答,本次抢答无效,系统回到开始前的等待状态。 (6)当 抢答有效后,可以根据抢答选手回答问题正确与否对选手相应组数的 成绩进行加分操作。
中央空调系统是按天气最热、负荷最大设计的,并留有 10%-20% 的余量,根据负载变化随之增减,但冷冻水泵和冷却水泵不能随负载 变化作出相应的调节,冷冻水、冷却水几乎长期在大流量、小温差的状 态下运行,造成能量的极大浪费。
3 节能改造的可行性分析
变频调速性能好,调速范围大,静态稳定性好,运行效率高。 根据 冷却水温选择冷却塔开启的台数,容易造成能源浪费,冷却水的温度 由温度传感器传送信号至 PLC,由 PLC 计算后,对冷却塔风机开启,以 28℃为基数,温度每上 升 2℃开 启 两 台 散 热 风 机 ,每 下 降 2℃延 时 5 分 钟后停止 2 台风机,以达到节能效果。

基于Verilog HDL语言的新型抢答器设计

基于Verilog HDL语言的新型抢答器设计

基于Verilog HDL语言的新型抢答器设计
周奇;王晓春;王立伟;王延群
【期刊名称】《现代仪器与医疗》
【年(卷),期】2008(014)005
【摘要】本文提出一种基于Verilog HDL语言的抢答器设计方法.该设计实现有三组输入,具有抢答倒计时功能,对各抢答小组成绩进行加减操作并显示的抢答器.文中介绍抢答器设计架构、硬件电路和控制程序的设计方法.该抢答器采用Verilog HDL语言模块化和层次化的思想,使设计十分简单,能够广泛应用于各种竞赛中.【总页数】4页(P43-46)
【作者】周奇;王晓春;王立伟;王延群
【作者单位】中国医学科学院生物医学工程研究所,天津,300192;中国医学科学院生物医学工程研究所,天津,300192;中国医学科学院生物医学工程研究所,天
津,300192;中国医学科学院生物医学工程研究所,天津,300192
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于Verilog HDL语言的全自动洗衣机控制器的设计与仿真 [J], 陈飞云
2.基于Verilog HDL语言的全自动洗衣机控制器的设计与仿真 [J], 陈飞云;
3.基于Verilog HDL语言的CAN总线控制器设计及验证 [J], 许莉娅;段帅君;李传南
4.基于Verilog HDL语言的复杂交通指标灯设计与实现 [J], 杨杨
5.基于Verilog HDL语言的一种奇偶校验码与极化码级联的编码器设计与仿真 [J], 彭逸飞
因版权原因,仅展示原文概要,查看原文内容请购买。

抢答器verilog版

抢答器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语言程序

路抢答器verilog语言程序

8路抢答器v e r i l o g语言程序(共4页)-本页仅作为预览文档封面,使用时请删除本页-/****************************************************************************** **Copyright(c) , All right reservedProject name : 八路抢答器File name :Author : THE CEmail============================================================================= Description : 八路抢答器Called by :File tree :============================================================================= Revision History:Date By Ver. Change Description------------------------------------------------------------------------------2012-12-26 THE C 首次归档******************************************************************************* */`timescale 1ns/100psmodule choose8_1(input clk,input rst,input [7:0] keyin,output reg [2:0] sel,output reg [7:0] display);reg [9:0] count;reg clk_1hz,flag;reg [4:0] t;reg [3:0] disp;reg [3:0] data;always @ (negedge clk)if (count<999)count=count+1;elsebegincount=0;clk_1hz=~clk_1hz;endalways @ (posedge clk or negedge rst)beginif (!rst)begindata <= 4'b1010;flag <= 1'b0;endelseif (!flag && t)case (keyin [7:0])8'b00000001 : begin data<=4'b0001; flag<=1; end 8'b00000010 : begin data<=4'b0010; flag<=1; end 8'b00000100 : begin data<=4'b0011; flag<=1; end 8'b00001000 : begin data<=4'b0100; flag<=1; end 8'b00010000 : begin data<=4'b0101; flag<=1; end 8'b00100000 : begin data<=4'b0110; flag<=1; end 8'b01000000 : begin data<=4'b0111; flag<=1; end 8'b : begin data<=4'b1000; flag<=1; enddefault : begin data<=data; flag<=flag; endendcaseelse;endalways @ (posedge clk_1hz or negedge rst)beginif (!rst)t<=30;elseif (t>0 && !flag)t<=t-1;elset<=t;endalways @ (posedge clk or negedge rst)beginif (!rst)sel [2:0] <= 3'b000;elsebeginsel [2:0] <= sel[2:0]+3'b001;endendalways @ (*)begincase( sel[2:0] )3'b000: disp [3:0] = t/10;3'b001: disp [3:0] = t%10;3'b010: disp [3:0] = 4'b1111;3'b011: disp [3:0] = 4'b1010+clk_1hz;3'b100: disp [3:0] = 4'b1010+clk_1hz;3'b101: disp [3:0] = 4'b1010+clk_1hz;3'b110: disp [3:0] = 4'b1111;3'b111: disp [3:0] = data;endcaseendalways @ (*)begincase( disp )4'b0000: display [7:0]=8'b01111110; //04'b0001: display [7:0]=8'b00110000; //14'b0010: display [7:0]=8'b01101101; //24'b0011: display [7:0]=8'b01111001; //34'b0100: display [7:0]=8'b00110011; //44'b0101: display [7:0]=8'b01011011; //54'b0110: display [7:0]=8'b01011111; //64'b0111: display [7:0]=8'b01110000; //74'b1000: display [7:0]=8'b01111111; //84'b1001: display [7:0]=8'b01111011; //94'b1010: display [7:0]=8'b00000001; //-default: display [7:0]=8'b00000000; //全灭 endcaseendendmodule。

8路抢答器verilog语言程序

8路抢答器verilog语言程序

8路抢答器v e r i l o g语言程序-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN/****************************************************************************** **Copyright(c) , All right reservedProject name : 八路抢答器File name :Author : THE CEmail============================================================================= Description : 八路抢答器Called by :File tree :============================================================================= Revision History:Date By Ver. Change Description------------------------------------------------------------------------------2012-12-26 THE C 首次归档******************************************************************************* */`timescale 1ns/100psmodule choose8_1(input clk,input rst,input [7:0] keyin,output reg [2:0] sel,output reg [7:0] display);reg [9:0] count;reg clk_1hz,flag;reg [4:0] t;reg [3:0] disp;reg [3:0] data;always @ (negedge clk)if (count<999)count=count+1;elsebegincount=0;clk_1hz=~clk_1hz;endalways @ (posedge clk or negedge rst)beginif (!rst)begindata <= 4'b1010;flag <= 1'b0;endelseif (!flag && t)case (keyin [7:0])8'b00000001 : begin data<=4'b0001; flag<=1; end 8'b00000010 : begin data<=4'b0010; flag<=1; end 8'b00000100 : begin data<=4'b0011; flag<=1; end 8'b00001000 : begin data<=4'b0100; flag<=1; end 8'b00010000 : begin data<=4'b0101; flag<=1; end 8'b00100000 : begin data<=4'b0110; flag<=1; end 8'b01000000 : begin data<=4'b0111; flag<=1; end 8'b : begin data<=4'b1000; flag<=1; enddefault : begin data<=data; flag<=flag; endendcaseelse;endalways @ (posedge clk_1hz or negedge rst)beginif (!rst)t<=30;elseif (t>0 && !flag)t<=t-1;elset<=t;endalways @ (posedge clk or negedge rst)beginif (!rst)sel [2:0] <= 3'b000;elsebeginsel [2:0] <= sel[2:0]+3'b001;endendalways @ (*)begincase( sel[2:0] )3'b000: disp [3:0] = t/10;3'b001: disp [3:0] = t%10;3'b010: disp [3:0] = 4'b1111;3'b011: disp [3:0] = 4'b1010+clk_1hz;3'b100: disp [3:0] = 4'b1010+clk_1hz;3'b101: disp [3:0] = 4'b1010+clk_1hz;3'b110: disp [3:0] = 4'b1111;3'b111: disp [3:0] = data;endcaseendalways @ (*)begincase( disp )4'b0000: display [7:0]=8'b01111110; //04'b0001: display [7:0]=8'b00110000; //14'b0010: display [7:0]=8'b01101101; //24'b0011: display [7:0]=8'b01111001; //34'b0100: display [7:0]=8'b00110011; //44'b0101: display [7:0]=8'b01011011; //54'b0110: display [7:0]=8'b01011111; //64'b0111: display [7:0]=8'b01110000; //74'b1000: display [7:0]=8'b01111111; //84'b1001: display [7:0]=8'b01111011; //94'b1010: display [7:0]=8'b00000001; //-default: display [7:0]=8'b00000000; //全灭 endcaseendendmodule。

用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个模块连接起来完成整个设计。

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

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

用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 课程设计报告 四人抢答器电路设计 河海大学

河海大学计算机与信息学院(常州)课程设计报告题目四人抢答器电路设计学号 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抢答器(两个程序)

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-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)。

抢答器(-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。

这就实现了把十六进制变成一般用的十进制。

抢答模块分两部分,复位模块和抢答模块,每次抢答都要初始化按键。

抢答模块又分为误抢,无人抢答和正确抢答。

每次抢答,当有一组按下抢答,立即锁定,亮相应的分数和组号,并且亮起各种抢答所对应的灯信号。

(即所要求的蜂鸣器)分屏显示模块中用每次抢答的组号作为输入,当抢答后立即换屏显示其组号分数。

1.3.2 设计方案(1)根据设计要求需要一个时钟的接入端clk,清除端clrn,使倒计时复位,count进位端当倒计时到0时进位,进位端返回到j,使倒计时停止。

当佣人抢答时,输入一个低电平,在取反输入到i,使倒计时停止。

ﻩﻩﻩﻩ(图1)(2)电路的计分模块,d位组号的输入端,是s1位计数按键,p位加减的控制端,高电平是s1位加分,低电平s1位减分,t1、t2、t3、t4位各组的分数输出端,cnn1、cnn2、cnn3、cnn4分别为第一组、第二组、第三组、第四组的减分进位端,当分数减少到0的时候,产生进位,使该组不能再次抢答,使其淘汰。

(图2)(3)抢答模块,clk位时钟的输入端,再程序的开始捕捉时钟的上升沿,qd是抢答初始化,每次抢答开始首先初始化,使抢答就位,准备开始抢答。

qd1、qd2、qd3、qd4为四组的抢答按键,每次有一组抢答后程序立即锁定,使别的组不能再抢答。

K为抢答开的的控制键,k 高电平时开始抢答,低电平时抢答即为误抢。

cnn1、cnn2、cnn3、cnn4位减数进位端,sig、sig1、sig2为各种抢的标志的输出,即亮灯(蜂鸣器)。

d位抢答者的组号输出端。

(图3)(4)分屏显示模块mux_1,d,t1、t2、t3、t4分别为组号和各组分数的输入端,w换屏信号的输入端,qs位输出。

(图4)(5)全局电路2.各个模块程序的设计(1)倒计时模块,20000000分频产生进位,输入到计数器模块,完成30秒计数。

(2)计分模块,用一个按键和一个拨动开关,拨动开关高点平时按键每按一次加十分,低电平时每按一次减十分。

(3)抢答模块A、一个复位键,四个抢答键,当按下复位键后,如果有选手抢答,则电路立即锁定,使其他组不能再次抢答。

B、在没有开始抢答之前,如果用人抢答即为误抢,显示其组号,分数。

C、30秒倒计时开始,抢答者都不抢答,则表示无人抢答,亮起相应的灯。

(4)分屏显示模块,此模块完全由输入的组号控制。

3.制作与调试过程(1)30秒倒计时的调试,管脚锁定clk,使每秒产生一个进位,送到减数器模块。

(2)计分模块,锁定两组的管脚,进行操作,组号的输入用拨动开关控制。

(3)抢答模块,锁定相应的管脚,进行抢答,误抢和无人抢答操作,测试是否能够锁定,以及亮灯,显示正确的组号分数。

4.结论本次实训为期三周,确定下题目后,首先就是方案的确定。

经过老师的辅导、同学的帮助、翻阅相关资料,综合各方面的考虑。

了解EP1C3T144C8芯片的构造,需要查看大量的英文资料,我并没有气馁,一个管脚一个管脚的对比,终于弄清楚了实现功能的大体思路。

然后就是再次学习Verilog HDL语言,虽然以前学过,但是差不多都忘了,用了几天时间熟悉了Verilog HDL 源程序的编写。

最后是硬件的调试,这是个漫长的过程,EP1C3T144C8芯片的接口也非常的繁杂,最后我坚持了下来。

5.实训心得体会通过这次实训,我对Verilog HDL有了深入的认识。

同时也对E DA产生了更加浓厚的兴趣。

本次实训,也检验了自己的能力,加强了逻辑思维的能力,不过我也发现了自身存在的一些问题,比如在quartus软件的应用上还有很多不成熟不理解的地方,但是相信在以后的学习生活中我可以很好的与予改正,取得更好的成绩,也希望日后老师能不厌其烦的指导我,给予我更大的支持。

6.参考文献1 江国强EDA技术与应用第三版电子工业出版社2010 2谭会生,张昌凡. EDA技术及应用.第二版.西安电子科技大学出版社,2009ﻫ附录:①仿真波形图(部分模块)ﻩﻩﻩ(图1 30秒倒计时)②程序清单(1)倒计时模块A.20000000分频程序modulecnt60(clk,cout,i,j,m);input clk,i,j,m;reg [24:0]ﻩq;output reg cout;always @(posedgeclk&(~i)&(~j)&(~m))beginif(q<20000000-1) q=q+1;else q=0;if(q==20000000-1)cout=1;else cout=0;endendmoduleB、30秒倒计时程序module cntdj(clrn,clk,q,count);input clk,clrn;output reg [7:0] q;output regcount;always @(posedge clk or negedge clrn)if(~clrn)begin q='h30;count='h0; endelse beginif(q==0) q='h30;else q=q-1;if(q[3:0]=='hf)begin q[3:0]=9;endif(q=='h0)count=1;elsecount=0;endendmodule(2)计分模块程序module jiajianjishu(t1,t2,t3,t4,s1,d,count,cnn 1,cnn2,cnn3,cnn4,p);input s1,p;input [3:0]d;output reg count,cnn1,cnn2,cnn3,cnn4;output reg[11:0]t1,t2,t3,t4;initial begint1='h100;t2='h100;t3='h100;t4='h100; endalways @(posedges1)beginif(p)beginﻩif(d=='h1) begint1=t1+'h10;ﻩﻩif(t1[7:4]=='ha)beginﻩﻩﻩﻩﻩﻩt1[7:4]=0;t1[11:8]=t1[11:8]+1;ﻩﻩﻩﻩﻩendﻩﻩelse if(t1=='h1000) count=1;ﻩﻩﻩﻩﻩelse count=0;endﻩﻩelse if(d=='h2)begin t2=t2+'h10;ﻩﻩﻩﻩﻩif(t2[7:4]=='ha)beginﻩﻩﻩﻩﻩﻩt2[7:4]=0;t2[11:8]=t2[11:8]+1;ﻩﻩﻩﻩendﻩﻩﻩﻩelse if(t2=='h1000) count=1;ﻩﻩelse count=0;endﻩelse if(d=='h3) begint3=t3+'h10;ﻩﻩif(t3[7:4]=='ha)beginﻩﻩﻩﻩﻩﻩﻩt3[7:4]=0;t3[11:8]=t3[11:8]+1;ﻩﻩﻩﻩendﻩﻩﻩﻩelse if(t3=='h1000) count=1;ﻩﻩﻩﻩelse count=0;endﻩﻩelseif(d=='h4) begin t4=t4+'h10;ﻩﻩﻩﻩﻩif(t4[7:4]=='ha)beginﻩﻩﻩﻩﻩt4[7:4]=0;t4[11:8]=t4[11:8]+1;ﻩﻩﻩﻩﻩﻩendﻩﻩﻩﻩﻩelse if(t4=='h1000)count=1;ﻩﻩﻩelse count=0;endﻩelse begin t1='h100;t2='h100;t3='h100;t4='h100; end endelse if(~p)beginif(d=='h1) begin t1=t1-'h10;ﻩﻩﻩif(t1[7:4]=='hf)begin t1[7:4]=9;t1[11:8]=t1[11:8]-1;ﻩﻩﻩﻩif(t1[11:8]=='hf)begint1[11:8]=0;endﻩﻩﻩﻩﻩﻩ/*elset1[11:8]=t1[11:8];*/ﻩﻩﻩﻩﻩﻩﻩendﻩﻩﻩelseif(t1[11:4]=='h0)begin cnn1=1;t1[11:0]='h0; endﻩelsecnn1=0;ﻩendﻩﻩelse if(d=='h2) begint2=t2-'h10;ﻩﻩﻩﻩif(t2[7:4]=='hf)begin t2[7:4]=9;t2[11:8]=t2[11:8]-1;ﻩﻩﻩﻩif(t2[11:8]=='hf)begin t2[11:8]=0;endﻩﻩﻩﻩﻩﻩ/* else t2[11:8]=t2[11:8];*/ﻩﻩﻩﻩﻩendﻩﻩﻩﻩﻩﻩelse if(t2[11:4]=='h0)begincnn2=1;t2[11:0]='h0;endﻩﻩﻩﻩelse cnn2=0;endﻩﻩelse if(d=='h3)begint3=t3-'h10;ﻩﻩﻩﻩﻩﻩif(t3[7:4]=='hf)begin t3[7:4]=9;t3[11:8]=t3[11:8]-1;ﻩﻩﻩﻩﻩﻩﻩif(t3[11:8]=='hf)begint3[11:8]=0;endﻩﻩﻩﻩﻩﻩﻩﻩﻩ/*elset3[11:8]=t3[11:8];*/ﻩﻩﻩﻩﻩﻩﻩendﻩﻩﻩﻩelse if(t3[11:4]=='h0) begin cnn3=1;t3[11:0]='h0;endﻩﻩﻩﻩelse cnn3=0;endelseif(d=='h4) begin t4=t4-'h10;ﻩﻩﻩﻩﻩﻩif(t4[7:4]=='hf)begin t4[7:4]=9;t4[11:8]=t 4[11:8]-1;ﻩﻩﻩﻩﻩﻩﻩif(t4[11:8]=='hf)begin t4[11:8]=0;endﻩﻩﻩﻩ/*else t4[11:8]=t4[11:8];*/ﻩﻩﻩﻩﻩﻩﻩendﻩﻩﻩﻩﻩﻩﻩﻩﻩelse if(t4[11:4]=='h0) begin cnn4=1;t4[11:0]='h0 ;endﻩﻩﻩﻩﻩelsecnn4=0;endﻩﻩelsebegin t1=100;t2=100;t3=100;t4=100;endendendendmodule(3)抢答模块程序module qdq(clk,qd,qd1,qd2,qd3,qd4,Sig,Sig1,Sig2,d,k,g,cnn1,cnn2,cnn3,cnn4);input clk,qd,qd1,qd2,qd3,qd4,k,g,cnn1,cnn2,cnn3,cnn 4;output Sig,Sig1,Sig2;output [3:0]d;reg Sig='h0,Sig1='h0,Sig2='h0; reg[3:0]d;reg zd=1'b0;always @(posedgeclk)beginif(qd==1'b0)beginﻩzd=1'b1;Sig='h0;ﻩSig1='h0;Sig2='h0;ﻩd='h0;ﻩﻩendif(k)beginif(zd==1'b1)beginﻩﻩif((qd1==1'b0)&(~cnn1))ﻩﻩbeginﻩﻩzd=1'b0;ﻩSig='h1;endﻩelse if((qd2==1'b0)&(~cnn2))ﻩbeginﻩﻩzd=1'b0;ﻩSig='h1;ﻩﻩd=2;ﻩendﻩﻩelse if((qd3==1'b0)&(~cnn3))ﻩbeginﻩzd=1'b0;ﻩSig='h1;ﻩﻩﻩd=3;ﻩendﻩelseif((qd4==1'b0)&(~cnn4))ﻩbeginﻩﻩﻩzd=1'b0;ﻩﻩﻩSig='h1;ﻩﻩd=4;ﻩﻩendﻩﻩelse if(g)begin zd=1'b0;Sig2='h1; endendelse if(~k)beginﻩif(zd==1'b1)ﻩbeginif((qd1==1'b0)&(~cnn1))ﻩbeginﻩzd=1'b0;ﻩﻩSig1='h1;ﻩd=1;endﻩelse if((qd2==1'b0)&(~cnn2)) ﻩﻩbeginﻩzd=1'b0;ﻩﻩﻩSig1='h1;d=2;ﻩﻩﻩendﻩelse if((qd3==1'b0)&(~cnn3))ﻩbeginﻩzd=1'b0;Sig1='h1;ﻩd=3;endﻩelseif((qd4==1'b0)&(~cnn4))ﻩﻩbeginﻩzd=1'b0;Sig1='h1;ﻩd=4;ﻩﻩendendendﻩﻩendendmodule(4)分屏显示模块程序module mux_1(d,t1,t2,t3,t4,w,qs);inputw;input [3:0] d;input[11:0] t1,t2,t3,t4;outputreg[15:0] qs;alwaysbeginif(w)beginqs[15:12]=d;ﻩif(d==1)beginqs[11:0]=t1;end ﻩelse if(d==2)begin qs[11:0]=t2;endﻩelse if(d==3)beginqs[11:0]=t3;end ﻩﻩelse if(d==4)beginqs[11:0]=t4;endﻩelse qs[11:0]=0;ﻩendelseqs[15:0]=0;endendmodule。

相关文档
最新文档