《verilog抢答器(最经典)要点.pdf》由会员分享,可在线阅读,更多相关《verilog抢答器(最经典)要点.pdf(18页珍藏版)》请在三一文库上搜索。
1、抢答器设计 题目:智能电子抢答器 专业:电子信息工程 2011 年1 月7 日 2 摘要 抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直 观地判断出抢答者的机器。电子抢答器的中心构造一般都是由抢答器由单 片机以及外围电路组成。 本设计是以四路抢答为基本概念。从实际应用出发, 利用电子设计自动化 ( EDA) 技术, 用可编程逻辑器件设计具有扩充功能的抢答器。它以Verilog HDL 硬件描述语言作为平台, 结合动手实验而完成的。 它的特点是电路简单、 制作方 便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。本抢答器的电路主 要有四部分组成:鉴别锁存电路、FPGA 主芯片
2、EP1C3T144C8电路、计分电路以 及扫描显示模块的电路,并利用Quartus II工具软件完成了 Verilog HDL源程 序编写和硬件下载。这个抢答器设计基本上满足了实际比赛应用中的各种需要。 在实际中有很大的用途。 关键词:抢答器 Quartus II Verilog HDL EP1C3T144C8 3 1 引言 硬件描述语言 Hardware Description Language 是硬件设计人员和电子设 计自动化 EDA 工具之间的界面。其主要目的是用来编写设计文件,建立电子系 统行为级的仿真模型。即利用计算机的巨大能力对用 Verilog HDL 或 VHDL 建 模的复杂
3、数字逻辑进行仿真, 然后再自动综合以生成符合要求且在电路结构上可 以实现的数字逻辑网表 Netlist, 根据型仿真验证无误后用于制造ASIC 芯片或写 入 EPLD 和 FPGA 器件中。 Verilog HDL 是一种硬件描述语言( HDL:Hardware Discription Language) , 是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑 电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL就是在用途最广泛的C 语言的基础上发展起来的一种件 描述语言,它是由GDA(Gateway Design Automation)公司
4、的 PhilMoorby在 1983 年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了 相关的故障模拟与时序分析工具。1985 年 Moorby 推出它的第三个商用仿真 器 Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应 用。 1989 年 CADENCE 公司收购了GDA公司,使得Verilog HDL成为了该公 司的独家专利。1990 年 CADENCE 公司公开发表了Verilog HDL,并成立 LVI 组织以促进Verilog HDL成为 IEEE 标准,即IEEE Standard 1364-1995. Verilog HDL的最大
5、特点就是易学易用,如果有C语言的编程经验,可 以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安 排在与 ASIC设计等相关课程内部进行讲授,由于HDL 语言本身是专门面向硬 件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。 2 关于课程设计 21 课程设计目的 理论联系实际, 巩固和运用所学课程, 提高分析、 解决计算机技术实际问题的独 立工作能力, 通过对一个智力抢答器的设计, 进一步加深对计算机原理以及数字 电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、 制作与调试的 方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机
6、技术实 际问题的独立工作能力。 为了进一步了解计算机组成原理与系统结构,深入学习 EDA技术,用 Verilog HDL语言去控制将会使我们对本专业知识可以更好地掌 握。 22 课程设计的内容 1 用 EDA实训仪的 I/O 设备和 PLD芯片实现智能电子抢答器的设计 2 智能电子抢答器可容纳4 组参赛者抢答,每组设一个抢答器 4 3 电路具有第一抢答信号的鉴别和锁存功能。在主持人将复位按钮按下后开 始抢答,并用 EDA实训仪上面的八段数码管显示抢答者的序号,同时扬声器发出 “嘟嘟”的响声,并维持 3 秒钟,此时电路自锁,不再接受其他选手的抢答信号 4 设置计分电路,每组开始时设置为6 分,抢
7、答后由主持人计分,答对一次 加 1 分,错一次减 1 分。 3 开发工具简介 31 EDA技术 EDA是电子设计自动化( Electronic Design Automation)的缩写,在20 世纪 90 年代初从计算机辅助设计(CAD ) 、计算机辅助制造( CAM ) 、计算机辅助测试 (CAT )和计算机辅助工程( CAE )的概念发展而来的。 EDA 技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言 HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优 化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下 载等工作。 EDA 技术
8、的出现,极大地提高了电路设计的效率和可操作性,减轻了 设计者的劳动强度。 利用 EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统, 大量工作可以通过计算机完成, 并可以将电子产品从电路设计、 性能分析到设计 出 IC 版图或 PCB版图的整个过程的计算机上自动处理完成。 现在对 EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、 化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前 EDA技术已 在各大公司、 企事业单位和科研教学部门广泛使用。例如在飞机制造过程中, 从 设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。 32 硬件描述语言 Ve
9、rilog HDL Verilog HDL 是硬件描述语言的一种,用于数字电子系统设计。该语言是 1983 年由 GDA ( GateWay Design Automation )公司的 Phil Moorby 首创的。 Phil Moorby 后来成为 Verilog XL 的主要设计者和 Cadence 公司( Cadence Design System )的第一个合伙人。在 1984-1985 年间, Phil Moorby 设计出 第一个名为 Verilog-XL 的仿真器; 1986 年,他对 Verilog HDL 的发展又一 次作出了巨大贡献 提出了用于快速门级仿真的 XL 算法
10、。 随着 Verilog-XL 算法的成功, Verilog HD 语言得到迅速发展。 1989 年, Cadence 公司收购 GDA 公司, Verilog HDL 语言成为了 Cadence 公司的私有 财产。 1990 年, Cadence 公司决定公开 Verilog HDL 语言,并成立了 OVI ( Open Verilog International )组织,并负责促进 Verilog HDL 语言的发 展。基于 Verilog HDL 的优越性, IEEE 于 1995 年制定了 Verilog HDL 的 5 IEEE 标准, 即 Verilog HDL1364-1995
11、; 2001 年发布了 Verilog HDL1364-2001 标准。 33 Verilog HDL 的设计流程一般是: 1 文本编辑:用任何文本编辑器都可以进行, 也可以用专用的 HDL 编辑环境。 通常 Verilog HDL 文件保存为 .v 文件。 2 功能仿真: 将文件调入 HDL 仿真软件进行功能仿真, 检查逻辑功能是否正 确(也叫前仿真,对简单的设计可以跳过这一步,只有在布线完成之后,才进行 时序仿真)。 3 逻辑综合: 将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布 尔表达式。逻辑综合软件会生成 .edf ( EDIF )的 EDA 工业标准文件。(最 好不用 MA
12、X+PLUS II 进行综合,因为只支持 VHDL/Verilog HDL 的子集) 4 布局布线: 将 .edf 文件调入 PLD 厂家提供的软件中进行布线, 即把设计 好的逻辑安放到 CPLD/FPGA 内。 5 时序仿真: 需要利用在布局布线中获得的精确参数,用仿真软件验证电路的 时序(也叫后仿真)。 3.4 FPGA 采用了逻辑单元阵列LCA(Logic Cell Array )这样一个新概念,内部 包括可配置逻辑模块CLB (Configurable Logic Block ) 、 输出输入模块 IOB (Input Output Block )和内部连线( Interconnect
13、 )三个部分。 FPGA 的基本特点主要 有: 1)采用 FPGA 设计 ASIC 电路,用户不需要投片生产,就能得到合用的芯片。 -2)FPGA 可做其它全定制或半定制ASIC 电路的中试样片。 3)FPGA 内部有丰富的触发器和IO 引脚。 4)FPGA 是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA 采用高速 CHMOS 工艺,功耗低,可以与CMOS 、TTL 电平兼容。 可以说, FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 6 目前 FPGA 的品种很多,有 XILINX 公司的 Virtex 系列、 TI 公司的 TPC 系
14、列、 ALTERA 公司的 Stratix 系列等。 FPGA 是由存放在片内RAM 中的程序来设置其工作状态的,因此,工作时需要 对片内的 RAM 进行编程。用户可以根据不同的配置模式, 采用不同的编程方式。 加电时, FPGA 芯片将 EPROM 中数据读入片内编程RAM 中, 配置完成后,FPGA 进入工作状态。掉电后, FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。FPGA 的编程无须专用的FPGA 编程器, 只须用通用的 EPROM 、 PROM 编程器即可。当需要修改FPGA 功能时,只需换一片EPROM 即可。这 样,同一片 FPGA ,不同的编程数据,可
15、以产生不同的电路功能。因此,FPGA 的使用非常灵活。 FPGA 有多种配置模式:并行主模式为一片FPGA 加一片 EPROM 的方式;主 从模式可以支持一片PROM 编程多片 FPGA ; 串行模式可以采用串行PROM 编 程 FPGA;外设模式可以将FPGA 作为微处理器的外设,由微处理器对其编程。 4 设计过程 41 系统设计要求 本设计的具体要求是: (1) 设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按 钮。 (2) 电路具有第一抢答信号的鉴别和锁存功能。在主持人按下复位按钮后,若 参加者按抢答开关,则该组指示灯亮。此时,电路应具备自锁功能,使别组的抢 答开关不起作
16、用。 (3)自锁后,用八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”并且 持续 3 秒。 (4) 设置计分电路。每组在开始时预置成6,抢答后由主持人计分,答对一次 加 1,否则减 1 分 。 42 系统设计方案 根据系统设计要求可知,系统的输入信号有:各组的抢答按钮1、2、3、 4,系统清零信号CLR ,系统时钟信号CLK ,计分复位端 RST ,加分按钮端 ADD , 计时预置控制端LDN ,计时使能端EN ,计时预置数据调整按钮TA 、TB ;系统的 输出信号有:四个组抢答成功与否的指示灯控制信号输出口LEDA 、LEDB 、LEDC 、 LEDD ,四个组抢答时的计时数码显示控制信号
17、若干,抢答成功组别显示的控制信 号若干,各组计分动态显示的控制信号若干。本系统应具有的功能有: 第一抢答 信号的鉴别和锁存功能;数码管显示;计分控制。 根据以上的分析,我们可将整个系统分为四个主要模块:抢答鉴别模 7 块;抢答计分模块;显示译码模块;EP1C3T144C8 接口模块。 抢答原理图 显示蜂鸣原理图 8 计分显示模块(由于板大小限制,只显示两组)pcb EP1C3T144C8 接口原理图 系统的工作原理如下:当主持人按下使能端EN时,抢答器开始工作,1、2、3、4 四位 抢答者谁最先抢答成功则此选手的台号灯(LED1LED4 )将点亮,并且主持人前的组别显示 数码管讲显示出抢答成功
18、者的台号;接下来主持人提问,若回答正确,主持人按 加分按钮,抢答积分模块将给对应的组加分,并将组的总分显示在对应的选手计 分数码管上。在此过程中。完成第一轮抢答后,主持人清零,接着重新开始,步 骤如上。 43 主要 VHDL 源程序 module YangLu(clk,inputEn,inputL1,inputL2,inputL3,inputL4,Sig1,Sig2,Sig3,Sig4,Led,Buzz er); / 一开始时声明有哪些端口 /输入口 9 input clk,inputEn,inputL1,inputL2,inputL3,inputL4; /输出口 output Sig1,Si
19、g2,Sig3,Sig4; output 0:7Led; output Buzzer; /在输出口配置个寄存器 ,以便运算 reg Sig1=1b1,Sig2=1b1,Sig3=1b1,Sig4=1b1; reg 0:7Led; reg Buzzer; /配置寄存器 ,EnFlat 是表明开始抢答的标志位 reg EnFlat=1b0; /BuClk 是蜂鸣器的标志位 reg BuClk=1b0; /BuL 是做蜂鸣器的延时用 reg 0:7BuL=8d0; always (posedge clk)/ 捕捉时钟 begin /初始化各按键并开始抢答 if(inputEn=1b0) begin
20、/初始化各个标志位和参数 EnFlat=1b1; /各个按键对应的 LED 控制端 Sig1=1b1; Sig2=1b1; Sig3=1b1; Sig4=1b1; /静态数码管的控制端 ,有 8 位 Led=8b11111111; BuClk=1b0; /蜂鸣器的控制管脚 ,低电平为发声音 Buzzer=1b1; end 10 /开始抢答 if(EnFlat=1b1) begin /如果按键 1 按下 if(inputL1=1b0) begin /禁止其他选手抢答 EnFlat=1b0; /对应的 LED 点亮 Sig1=1b0; /静态数码管显示序号 1 Led=8b01101111; /指
21、示蜂鸣器发声 BuClk=1b1; end /如果按键 2 按下 else if(inputL2=1b0) begin /禁止其他选手抢答 EnFlat=1b0; Sig2=1b0; Led=8b00011010; BuClk=1b1; end /如果按键 3 按下 else if(inputL3=1b0) begin /禁止其他选手抢答 EnFlat=1b0; Sig3=1b0; Led=8b01001010; BuClk=1b1; 11 end /如果按键 4 按下 else if(inputL4=1b0) begin /禁止其他选手抢答 EnFlat=1b0; Sig4=1b0; Led
22、=8b01101001; BuClk=1b1; end end /当蜂鸣器标志位置1 时 /进入此蜂鸣器处理程序 if(BuClk=1b1) begin /蜂鸣器发声 Buzzer=1b0; /延时变量加 1 BuL = BuL + 8d1; /当到达延时的时间时关掉蜂鸣器 if(BuL=8d255) begin /延时变量复位 BuL=8d0; /蜂鸣器标志位复位 BuClk=1b0; /蜂鸣器停掉 Buzzer=1b1; end end 12 end endmodule 5 静态调试 静态调试是在不加电压即电路不工作的情况下进行的测试。参照所画的PCB 图,主要检 查电路板是否完好。该导通
23、是否已导通,无短路现象,检查元器件是否使用正确,检查焊点 是否有虚焊。检查无误后,方可加电使其工作。 6 总结 本次实训为期两周,分组选题。由于种种原因,我们两个人选择了3 个人一 组的题目。确定下题目后, 首先就是方案的确定。 经过老师的辅导、 同学的帮助、 翻阅相关资料, 综合各方面的考虑, 最后确定用 FPGA 来实现电子抢答器的功能。 FPGA 首先要有最主要的芯片, 感谢童有为老师提供的EP1C3T144C8芯片和接口 电路模块,这是本次实训的基础。但是要了解EP1C3T144C8芯片的构造,需要 查看大量的英文资料, 我并没有气馁, 一个管脚一个管脚的对比, 终于弄清楚了 实现功能
24、的大体思路。然后就是学习Verilog HDL语言,虽然以前学过,但是时 间比较久了,差不多都忘了,用了几天时间熟悉了Verilog HDL 源程序的编写。 最后是硬件的调试,这是个漫长的过程,EP1C3T144C8 芯片的接口也非常的繁 杂,最后我坚持了下来。 通过这次实训,我对Verilog HDL有了深入的认识。同时也对EDA产生了更 加浓厚的兴趣。本次实训,也检验了自己的能力,加强了逻辑思维的能力,不过 我也发现了自身存在的一些问题,比如在protel软件的应用上还有很多不成熟 不理解的地方, 但是相信在以后的学习生活中我可以很好的与予改正,取得更好 的成绩,也希望日后老师能不厌其烦的
25、指导我,给予我更大的支持。 13 谢辞 本论文设计在各位老师的悉心指导和严格要求下业已完成,从选题到具体的 实训和写作过程, 无不凝聚着老师们的心血和汗水。在我实训期间, 老师为我提 供了种种专业知识上的指导和一些富于创造性的建议,老师们严谨求实的态度使 我深受感动,没有这样的帮助和关怀和熏陶,我不会这么顺利的完成实训任务。 在此向老师们表示深深的感谢和崇高的敬意! 这次实训还要感谢黄钟鸣同学的热情帮助,是他让我在短时间内熟悉了 Verilog HDL源程序的编写。在硬件调试阶段,也有很多同学给予了帮助,在此 谢谢你们了。 我还要借此机会向给予我诸多教诲和帮助的各位老师表示由衷的谢意,感 谢他
26、们的辛勤栽培。 不积跬步何以至千里, 各位任课老师认真负责, 在他们的悉 心帮助和支持下, 我能够很好的掌握和运用专业知识,并在实训中得以体现, 顺 利完成实训任务。 同时,在论文写作过程中,我还参考了有关的书籍和论文,在这里一并向 有关的作者表示谢意。 我还要感谢同组的各位同学以及我的各位室友,在这段时间里,你们给了 我很多的启发, 提出了很多宝贵的意见, 对于你们帮助和支持, 在此我表示深深 地感谢! 14 参考文献 1 谭会生,张昌凡. EDA技术及应用 . 第二版 . 西安电子科技大学出版社, 2009 2 李大社,基于 Quartus II 的 FPGA/CPLD 设计实例精解,电子
27、工业出版社, 2010 3 李国洪,胡辉,沈明山 . EDA 技术与实验 . 机械工业出版社, 2009 4 西勒提 (MichaelD.Ciletti), Verilog HDL高级数字设计,电子工业 出版社, 2010 5 刘建清 . 从零开始学 CPLD 和 Verilog.HDL 编程技术,国防工业出版社,2007 6 巴斯克,夏宇闻,甘伟译. VERILOG HDL入门,北京航空航天大学,2010 7 王港元等,电子技能基础 ( 第二版 ) ,四川大学出版社, 2001 15 附录 module YangLu(clk,inputEn,inputL1,inputL2,inputL3,i
28、nputL4,Sig1,Sig2,Sig3,Sig4,Led,Buzzer); input clk,inputEn,inputL1,inputL2,inputL3,inputL4; output Sig1,Sig2,Sig3,Sig4; output 0:7Led; output Buzzer; reg Sig1=1b1,Sig2=1b1,Sig3=1b1,Sig4=1b1; reg 0:7Led; reg Buzzer; reg EnFlat=1b0; reg BuClk=1b0; reg 0:7BuL=8d0; always (posedge clk)/ 捕捉时钟 begin if(inp
29、utEn=1b0) begin EnFlat=1b1; Sig1=1b1; 16 Sig2=1b1; Sig3=1b1; Sig4=1b1; Led=8b11111111; BuClk=1b0; Buzzer=1b1; end if(EnFlat=1b1) begin if(inputL1=1b0) begin EnFlat=1b0; Sig1=1b0; Led=8b01101111; BuClk=1b1; end else if(inputL2=1b0) begin EnFlat=1b0; Sig2=1b0; Led=8b00011010; BuClk=1b1; end else if(inputL3=1b0) begin 17 EnFlat=1b0; Sig3=1b0; Led=8b01001010; BuClk=1b1; end else if(inputL4=1b0) begin EnFlat=1b0; Sig4=1b0; Led=8b01101001; BuClk=1b1; end end if(BuClk=1b1) begin Buzzer=1b0; BuL = BuL + 8d1; if(BuL=8d255) begin BuL=8d0; BuClk=1b0; Buzzer=1b1; end end end endmodule 18
链接地址:https://www.31doc.com/p-5198410.html