ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:126.96KB ,
资源ID:3779048      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3779048.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDAVerilog拔河游戏机报告讲解.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EDAVerilog拔河游戏机报告讲解.docx

1、EDAVerilog拔河游戏机报告讲解课程设计(论文)任务书 电气与电子工程 学院 电子信息工程 专业 2013-2 班 一、课程设计(论文)题目 拔河游戏机 二、课程设计(论文)工作自 2015 年 12 月 28 日起至 2016 年 1 月 8 日止。三、课程设计(论文) 地点: 电子测控实验室 四、课程设计(论文)内容要求:1)课程设计任务: 1)设计一个能进行拔河游戏的电路2)电路使用8个(或7个)发光二极管,开机后只有中间两个(或中间一个)发亮,此即拔河的终点。 3)游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点就移动一次。 4)

2、亮点移动到任意一端的终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。 5)用数码管显示获胜者的盘数。 6)*在亮点移动到中端二极管是蜂鸣器报警一方获胜。2)课程设计论文编写要求(1)课程设计任务及要求(2)总体电路设计(3)模块设计-给出各个模块的详细设计思路(4)管脚绑定-列表或截图给出管脚绑定情况(5)仿真及FPGA开发板调试-给出运行仿真波形截图,分析运行结果。(6)设计体会与小结-设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。(7)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(8)报告按规定排版

3、打印,要求装订平整,否则要求返工;(9)课设报告的装订顺序如下:封面-任务书-中文摘要-目录-正文-附录(代码及相关图片)(10)严禁抄袭,如有发现,按不及格处理。3)课程设计评分标准: (1)学习态度:10分;(2)系统设计:20分;(3)代码调试:20分;(4)回答问题:20分;(5)论文撰写:30分。4)课程设计进度安排进度安排:本设计持续10天,其中最后一天为答辩时间。第1-2天:讲解题目,准备参考资料,检查、调试实验软硬件,进入设计环境,开始设计方案和验证方案的准备;第3-4天:完成设计与验证方案,经指导老师验收后进入模块电路设计;第5-7天:完成模块电路设计,进行代码输入,并完成代

4、码的初步仿真;第8-9天:代码功能仿真正确,约束设计,综合、下载,实现设计目标,并指导老师验收设计;整理设计资料,撰写报告、准备答辩;第10天:验收合格后进行答辩。学生签名: 2015 年 12 月 28 日课程设计(论文)评审意见(1)学习态度(10分):优()、良()、中()、一般()、差(); (2)系统设计(20分):优( )、良()、中()、一般()、差(); (3)代码调试(20分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)论文撰写(30分):优()、良()、中()、一般()、差(); 评阅人: 职称: 2

5、016 年 1 月 10 日摘要经过一个学期的EDA学习,要检验自己的学习效果,最好的方法就是课程设计。拔河游戏机是一个十分有趣的项目,不仅可以检验学习的情况,同时可以提高自己对EDA的兴趣。拔河游戏机由分频模块、按键扫描模块、计分模块、响铃模块、动态扫描模块、数码管选择模块以及译码模块组成,把输入20MHz时钟晶振信号分成合适频率的时钟输入进各个模块,开始游戏后,令双方按下按键,即可完成项目目标。本次项目设计使用Verilog HDL语言,完成拔河游戏机的设计。实用软件有Quartus 13和ModelSim-Altera10.1d,在其环境下进行代码的编写编译以及现象仿真,而后烧写到Cyc

6、loneE EP4CE30F23C7 FPGA实验板中,经过测试之后最终完成拔河游戏机的基本要求。关键字:Verilog HDL,Quartus,FPGA,拔河游戏机目录一、课程设计任务及要求1、设计任务:1)设计一个能进行拔河游戏的电路。2)电路使用8个(或7个)发光二极管,开机后只有中间两个(一个)发亮,此即拔河的中心点。3)游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。4)亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。5)用数码管显示获胜者的盘数。6)附加,亮点移动到任

7、意一方终点时,蜂鸣器报警提醒。2、要求:1)全部使用Verilog HDL硬件描述语言编写。2)使用ModelSim-Altera软件进行仿真并对结果进行分析。3)分析预期现象与实际现象之间产生差别的原因。二、总体电路设计1、拔河游戏机总体设计思想: 在20MHz的时钟信号作用下,经过分频模块分频成1KHz和10Hz的时钟信号,数码管动态扫描使用1KHz的频率,按键扫描使用10Hz的频率,通过按键扫描将双方的按键情况输入,并产生与之相对应晶体管亮点位置的位移,当位移至某一方的终点时,将按键使能端关闭,蜂鸣器报警开启,并使获胜方的分数加一,将分数通过译码在数码管上显示出来。可以通过游戏复位按键是

8、晶体管亮点回到中心,通过分数复位按键使双方分数全部清零。2、总体电路组成 CLK 图2-1 拔河游戏机总体设计框图三、模块设计1、分频模块设计设计思路:由于FPGA芯片内部提供的时钟信号为20MHz,因此需要将其分频为10Hz,1KHz的信号,为后续的按键扫描,蜂鸣器报警以及数码管动态扫描显示提供时钟脉冲激励。通过设置模计数器cnt1khz与cnt10hz,在20MHz时钟脉冲下计数,并将输出时钟翻转,最终输出的分别是1KHz,10Hz的时钟分别名为clk1khz与clk10hz。 cnt1khz 9999时翻转CLK20MHz cnt10hz 999999时翻转图3-1 分频模块框图2、按键

9、扫描与亮点位移模块设计设计思路:s1和s2是按键经过消抖后的输入变量,8位ledtemp是亮点当前位置的状态变量,初值为00011000,t是亮点位移的中间变量初值为3即亮点处在中间。配合时钟脉冲,并且游戏使能端开启的情况下,当key1按下key2不按下时,t自减1,当key1不按下key2按下时,t自加1,其他情况t保持不变。而后用case语句对应不同的t给予不同的ledtemp值,例如t=1意味着亮点应该左移了两位,给ledtemp赋值01100000。最后在always块之外用assign语句将ledtemp赋值给输出led。 clk10hz 不是 是 不是 是 Case(t)图3-2

10、按键扫描与亮点位移框图3、比赛计分以及游戏锁定模块设计思路:拔河游戏机在任意一方将亮点按动到自己那边终点后,所得分数就会加一,且此时按动游戏按键无效。按动按键使亮点到达终点时即t等于0或者等于6,0为左端终点,6为右端终点。故可以设定一个游戏使能变量k且赋初始值为1,计数使能变量j初始值为1,在k等于1时按键有效,然后每当t变化一次之后就对其进行判断,当t到达了0或者6,将游戏时能变量k置0,且对相应的分数变量left与right加一,并将计数使能变量j置0,同时在这之中放入BCD码转换模块,将二进制的left和right转换为十进制方便译码。 k=1 不是 t变化 是 不是 t=6 是 图3

11、-3 比赛计分与游戏锁定框图4、获胜报警模块设计思路:在时钟脉冲激励下,检测并判断t的值,若t等于0或6,蜂鸣器变量ring置1,是蜂鸣器报警。 clk1khz 是 图3-4 获胜报警模块框图5、动态扫描、数码管选择与译码模块设计思路:通过绑定三个通选信号,对8个数码管进行扫描。在代码中设定输出q以及与其对应的中间变量qtemp,赋予初值为0,令其在1KHz的时钟下自加一,而当其等于7时置零。选择译码管使用case语句,在q所对应的数码管上赋予希望输出的值,即可完成选择。Case语句对应相应数字的段码完成译码。1khz时钟qtemp=0 不是是图3-5 动态扫描模块框图6、按键消抖模块设计思路

12、:按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。所以在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象我们需要将其消抖。不断地检测输入信号,与上个及上上个信号进行或运算,除非连续出现三个低电平才能说出现下降沿认为是按键按下。四、管脚绑定表一 管脚绑定Node NameDirectionLocationaoutputPIN_W10boutputPIN_V10coutputPIN_U10doutputPIN_T10eoutputPIN_V11foutputPIN_U11goutputPIN_T1

13、1led7outputPIN_U8led6outputPIN_AB8led5outputPIN_U7led4outputPIN_V7led3outputPIN_W7led2outputPIN_Y7led1outputPIN_AA7led0outputPIN_AB7RingoutputPIN_A20q2outputPIN_AA8q1outputPIN_Y10q0outputPIN_AA10clkinputPIN_G22key1inputPIN_E12key2inputPIN_E13rst_ninputPIN_T2rsts_ninputPIN_T11、a b c d e f g 为数码管输出段码。

14、2、8位led对应8位发光二极管。3、Ring为对应蜂鸣器。4、3位q为数码管通选信号。5、clk绑定20MHz时钟。6、key1、key2为双方玩家输入按键。7、rst_n、rsts_n分别为发光二级管与游戏使能端的复位以及游戏分数清零的按钮。五、仿真及FPGA开发板调试1、rst_n对使能端的复位在rst_n一开始为高电平时,j、k、t变量没有给赋值所以为高阻态,而当rst_n复位为低电平之后就对他们进行了赋值,使三个变量j=1、k=1、t=3。图5-1 rst_n复位仿真图像2、不同按键状态的led变化当左边玩家按下按键右边玩家没有按下时,即key1为0、key2为1则led应该一直往左

15、移直到11000000停止,而当右边玩家按下按键左边玩家没有按下时,即key1为1、key2为0则led应该一直往右移直到00000011停止,其他情况时led保持初值00011000不变。图5-2 key1/key2为0/1时led仿真图像图5-3 key1/key2为1/0时led仿真图像3、计分与蜂鸣器的报警在rst_n置0将led复位后,再将rsts_n置0将left和right同时置0,而后移动led。当led位移到最左端或者最右端时,停止移动,并且蜂鸣器置1,最左端则left加一最右断则right加一。图5-4 左边玩家获胜仿真图像图5-5 右边玩家获胜仿真图像六、设计体会与小结两

16、周的EDA课程设计让我学到了很多东西,之前的实验的内容相比课程设计实在是小巫见大巫。实验仅仅只是一个小模块,而课程设计确实众多模块合成一个大的工程。不光是对EDA所学知识的检验,同时也是对我们细心程度以及耐心的极大考验。从得到课题,再到查找资料,代码编写,仿真以及烧写到板子上调试,每一步都不简单,每一步都会涉及到方方面面,总的来说最后的完工真的是不容易。在设计过程中有一些容易忽略的小问题,可能就会使得整个项目出错。比如说时序的选择、阻塞非阻塞赋值以及if语句case语句的其他情况考虑,在代码的编写过程中经常会出现的问题比如同一个变量一会儿使用阻塞赋值一会儿使用非阻塞赋值,或者是同一个变量在不同

17、always块中被赋值,这些都是不允许的。还有就是代码的逻辑问题,可能你的代码编译出来没有错误,仿真貌似也是正确的图像,但是烧写到开发板上就是不对,那么就要考虑代码逻辑的问题了,在几个变量当中谁的优先级更高,判断语句嵌套是到底应该先满足那个条件等等。通过这次课程设计我学到了许多以前没有重视的东西,不仅丰富了知识量,还提高了自己的实践能力。我认为学习这种课程就应该多多实践,多找闲暇时间做一做比较有代表性的项目,丰富见识,积累经验,这样不单单能巩固课堂所学,还可以汲取更多的课外知识,真正有效的提高自己的能力。七、参考文献1 王金明.数字系统设计与Verilog HDLM. 北京:电子工业出版社,2

18、010.2 王金明,徐志军,苏勇.EDA技术与Verilog HDL设计M.北京:电子工业出版社,2013.3 夏宇文.Verilog数字系统设计教程M.北京:北京航空航天大学出版社,2003.4潘松,黄继业.EDA技术实用教程(第三版).北京:科学出版社,20065孟涛.电子电工与EDA实践教程(第二版).北京:电子工业出版社,2012附录RTL代码:module tug(clk,rst_n,rsts_n,led,q,key1,key2,a,b,c,d,e,f,g,Ring);input key1,key2,clk,rst_n,rsts_n;output 7:0 led;reg 7:0 le

19、ft,right;output Ring;reg ring;wire s1,s2;output 2:0 q;output reg a,b,c,d,e,f,g;reg 2:0 qtemp;reg 7:0 ledtemp;reg j,k; /使能中间变量reg 3:0 y;reg 2:0 t;reg clk1khz;reg 31:0 cnt1khz;reg clk10hz;reg 31:0 cnt10hz;/-1khz分频-always (posedge clk or negedge rst_n) begin if(!rst_n) begin cnt1khz=0; clk1khz=0; end e

20、lse if(cnt1khz=9999) begin cnt1khz=0; clk1khz=clk1khz; end else cnt1khz=cnt1khz+1;end /-10hz分频-always (posedge clk or negedge rst_n) begin if(!rst_n) begin cnt10hz=0; clk10hz=0; end else if(cnt10hz=999999) begin cnt10hz=0; clk10hz=clk10hz; end else cnt10hz=cnt10hz+1;end/-主函数-always(posedge clk or ne

21、gedge rst_n) begin if(!rst_n) begin ledtemp=8b00011000; k=1; j=1; t=3; end else if(!rsts_n) begin right=0; left=0; end else if(k=1) begin case(key1,key2) 2b01:t=t-1; 2b10:t=t+1; default:t=6|t=0) begin k=0; if(t=6&j=1) begin if(right3:0=9) begin right3:0=0; if(right7:4=9) right7:4=0; else begin right

22、7:4=right7:4+1; j=0; end end else begin right3:0=right3:0+1; j=0; end end else if(t=0&j=1) begin if(left3:0=9) begin left3:0=0; if(left7:4=9) left7:4=0; else begin left7:4=left7:4+1; j=0; end end else begin left3:0=left3:0+1; j=0; end end end else begin k=k; end end begin case(t) 3d0:ledtemp=8b11000

23、000; 3d1:ledtemp=8b01100000; 3d2:ledtemp=8b00110000; 3d3:ledtemp=8b00011000; 3d4:ledtemp=8b00001100; 3d5:ledtemp=8b00000110; 3d6:ledtemp=8b00000011; default:ledtemp=ledtemp; endcase end endassign led=ledtemp;/-响铃模块-always(posedge clk)begin if(!rst_n) begin ring=0; end else if(t=0|t=6) begin ring=1;

24、end else ring=0;endassign Ring=ring & clk1khz;/-动态扫描-always(posedge clk1khz or negedge rst_n) begin if(!rst_n) qtemp=0; else if(qtemp=7) qtemp2:0=0; else qtemp=qtemp+1; endassign q=qtemp;/-数码管选择模块-always(q) begin case(q) 3b000:y=right3:0; 3b001:y=right7:4; 3b010:y=4d10; 3b011:y=4d10; 3b100:y=4d10; 3

25、b101:y=4d10; 3b110:y=left3:0; 3b111:y=left7:4; default:y=4d10; endcase end/-译码模块-always(y) begin case(y) 4d0:a,b,c,d,e,f,g=7b1111110; 4d1:a,b,c,d,e,f,g=7b0110000; 4d2:a,b,c,d,e,f,g=7b1101101; 4d3:a,b,c,d,e,f,g=7b1111001; 4d4:a,b,c,d,e,f,g=7b0110011; 4d5:a,b,c,d,e,f,g=7b1011011; 4d6:a,b,c,d,e,f,g=7b1

26、011111; 4d7:a,b,c,d,e,f,g=7b1110000; 4d8:a,b,c,d,e,f,g=7b1111111; 4d9:a,b,c,d,e,f,g=7b1111011; default:a,b,c,d,e,f,g=7b0000000; endcase endXiaodou u1(.clk(clk),.key1(key1),.key2(key2),.s1(s1),.s2(s2);endmodulemodule Xiaodou(key1,key2,clk,s1,s2);input key1,key2,clk;output s1,s2;reg a1,a2,a3,b1,b2,b3;/-消抖模块-always (posedge clk)begin a1=key1; a2=a1; a3=a2; b1=key2; b2=b1; b3=b2;endassign s1=(a1|a2|a3);assign s2=(b1|b2|b3);endmoduleTestbench仿真测试代码:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1