

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河海大学物联网工程学院Verilog HDL 项目设计报告题目 拔河游戏机专业电子科学与技术学号1562910123、1562910125授课班号_学生 徐子豪、诗欣 指导教师 华迪、齐本胜摘要和关键字为了掌握数字系统的设计方法,掌握硬件描述语言一一Verilog I1DL,掌握模块化设计方法,掌握开发软件的使用方法。选择 基于FPGA开发板设计的拔河游戏机,使用两个按键进行比赛, 利用按键按下的快慢作为模拟的双方选手拔河过程,led灯的变 化决定绳子的位置,led灯到了一边以后比赛终止,整个过程的 难点在于,需要过滤信号,使按键产生的信号稳定,所以程序中 需要有按键消抖模块,同时需标识符来控
2、制比赛的开始与结束。 关键词:verilog拔河比赛消抖模块标识符In order to master the design method of digital system, we mustmaster the hardware description language - Verilog IIDL,grasp the modular design met hod and master the way ofdeveloping software. ChoiceTug of war game FPGA development board based on the design,the use
3、of two button game, using key press speed as bothplayers tug of war of Simulation, change led lamp decide theposition of the rope, LED lights to the side after the end game,the difficulty lies in the whole process, need to filter thesignal, the stable signal generated by the keys so, theprocedure re
4、quires a key debounce module, also need to controlthe gamers identifier and end start.Key words: Verilog tug shake-off module identifier 一、系统设计1 .实验要求设计拔河游戏电路,用按键与LED表示输入与输出。(1)初始时,16个LED中间的两个点亮,然后游戏双方不停按 动按键,点亮的两个LED向按动按键慢的一方移动;(2)每按动一下按键,LED向对方移动一格;(3)只要LED移动到头,游戏结束;(4)工作时钟100Hz即可;(5)完成全部流程:设计规文档、
5、模块设计、代码输入、功能 仿真、约束与综合、布局布线、时序仿真、下载验证等。2 .方案对比脉冲信号方案:在选定一定的时间周期,检测按键A与按键B的产生的 脉冲个数,进行比较,若A的脉冲数量大于B,则Led向A方向移动,反之则向B方向移动,若相等则不动。消抖模块方案给所定按键两个状态,一个前状态,一个后状态,当时 钟时钟的脉冲沿来临时,将按键状态赋值给前状态, 设置定 时器,当计数计满后,前状态值赋给后状态,按键输出值为 前状态和后状态的取反的并。此方案当一直按住按键时,按键电平信号一直为高,取 反后的变为低,可以避免一直按住而直接比赛结束的特殊情 况。3.系统框图由分频后的时钟信号模块控制按键
6、信号模块,之后进入比较 模块,若A的脉冲数大于B,则Led向A代表方向移动,反 之则向B代表方向移动,若相等则不动。由Led的位置决定 使能端的开启与关闭,若移动至A或B的顶端,则使能端控 制Led无法再移动。4.代码设计和说明(1)对于输入端口输出端口的定义,和寄存器,线网型变量 的,以及计数常量的定义module project_ba(Clk,Rst_n,KEY1,KEY2.LED);input Clk;input Rst_n;input KEY1;input KEY2;/定义输入output 15:0 LED;/定义输出reg 27:0 I Cnt;reg Clk lOOhz;reg e
7、n;reg Keyl n;reg Keyl n工eg;reg Key2 n;reg Key2 n reg;reg |3:0 t;reg 15:0 led;wire keyl,key2;parameter CNT = 28rd49 999;assign key2 = Key2 n &(Key2_n_reg);(2)分频模块,将Basys3的100M系统时钟分频成为周期为10ms, 100Hz频率always(posedge Clk or posedge Rst_ n)beginif(Rst n) beginCnt = 28d0;Clk_100hz = 0;endelse if (Cnt
8、= CNT) beginCnt = 28d0;Clk_100hz = Clk lOOhz;endelseCnt = Cnt + 1 * bl;end(3)按键消抖模块,给每一个按键两个状态,保证按键产生的信号可以消除抖动稳定。always (posedge Clk or posedge Rst_n)begin if(Rst n)else beginKey 1 n = Key 1 n_reg;Key2 n = Key2 n reg;end endalways (*)beg inif(Cnt = CNT) beginKeyI n reg = KEY 1:Key2 n reg = KEY2;end
9、else beginKeyl_n_reg = Key 1 n;Key2 n regendKey2 n; enclassign key 1 = Key 1 n &(Key 1_n_reg);begin Key I n=0;Key2一n = 0;end(4)比较模块,每当时钟的上升沿,便比较A,B的脉冲个数,即谁按得快,输出就为1,否则就为0always(posedge Clk)begin if(t = 4dO t = 4dl4) en = 1bO;elseen = 1bl;end(5)移动模块always(posedge Clk lOOhz or posedge Rstn ) beg i
10、nif(Rst_n)t = 7;elseif (en)case (key 1,key2)2blO : t = t + lbl;2b01 : t = t - Phi;default:t = t;endcaseend(6)译码模块,将得到的信号t转化为,Led的显示,最后赋值给Led输出端口,并且由数码管显示胜利的一方always(*)begincase (t)4rd0 :led =16Fb00000000 000000114dl :led =16b00000000 000001104d2 :led =16b00000000 000011004rd3 :led =16rb00000000 0001
11、1000 4rd4 :led= 16b000000000011_0000;4d5 :led= 16b0000000001100000;4d6 :led=16b0000000011000000;4d7 :led= 16b00000001_ 10000000;4rd8 :led= 16b00000011_ 00000000;4d9 :led= 16b00000110 00000000;4dlO:led=16b0000110000000000;4dll:led= 16b0001100000000000;4rdl2:led= 16b0011000000000000;4dl3:led= 16b01100
12、00000000000;4dl4:led16bll00000000000000;default : led = 16*b0000 0000 0000 0000;endcaseendassign LED = led;endmodule二、结果与讨论1、仿真代码define elk period 10/定义时钟周期module BaTB():reg Clk;reg Rst n;reg KEY1, KEY2; wire15:0 LED; projectba uO(.Clk(Clk),.Rst n (Rst n),.KEYl(KEYl),.KEY2(KEY2),.LED(LED);initialbeg
13、inClk = 0; endalways # ( clk period /2) Clk = Clk; initial beginKEY1 = 0;KEY2 = 0;#(clk_period * 10);Rst_n二1;#( clk period * 10);Rst_n = 0; KEY1 = 1:KEY2 = 0;#(clk_period * 100);KEY1 = 1:KEY2 = 0;#(clk_period * 100);KEY1 = 1:KEY2 = 0; endendmodule 2、仿真波形可以看到一直给Keyl施加高电平时钟信号,Led灯的高电平一直向1方向的led灯方向移动,由
14、此可得仿真成功。3、问题与分析在仿真成功以后生成比特流文件时一直显示错误无法成 功,之后在请教其他同学以后,共同分析后发现,一开始设 计中的数码管模块无法在结束后对应显示,于是便删除了数 码管模块,在led移动到一端后便是游戏结束标志。b ht.i0130icik6 i?4、结果在分析出问题兵解决之后,将程序烧写到fpgd开发板上, 设计的功能都能实现,于是上板验证也成功。三、心得体会一开始接触这个课题的时候,不知道怎么下手,通过其他同学的 讲解以及查找资料基本了解了拔河游戏机的设计原理。通过这次 课程设计,我更加感到理论和实际之间的差异很大。我也越来越 强烈地感到要掌握一项技术,唯一的办法也
15、是最好的办法就是实 践。只有通过实践才能将书本上的知识应用,也只有实践才能发 现很多问题,真正掌握知识,学以致用。虽然遇到的问题很多, 但是同时得到很多有用的经验。这些对于以后的学习和工作都有很大的帮助。1夏宇闻,Verilog数字系统设计教程,航天航空大学,20132王金明,数字系统设计与Verilog IIDL,电子工业,2009!1!参考文献 3松,EDA技术实用教程,科学,2009 附录实物板级验证图:1、左边队员胜利三0*|4U XIUNX|UMVRSrTVP0OG*M8H88H8;kOLW Ul U |tM .3|o8. S:S.1=1.uni 3亠1K、吒XIUNXPWIUMVL
16、WVPBOGAMIJI1(-2二二OIOPO3*0rp Jac-2、右边队员胜利血:=二Ji 時1EL 3. EI. 1:1.M亠 35 3、清零重置4、源代码module project ba(Clk,Rst_n,KEYl,KEY2,LED);inputClk;inputRst_n;inputKEY1;inputKEY2;定义输入output 15:0 LED;/定义输出reg 27:0: Cnt;reg Clk lOOhz;reg en;reg Keyl _n;reg Keyl n_reg;reg Key2_n;reg Key2_n_reg;reg 3:0: t;reg 15:0: led
17、;wire keyl,key2;parameter CNT = 28d49 999;always(posedge Clk or posedge Rst_n) beginif (Rst_n) beginCnt= 28d0;Clk_100hz=0;endelse if (Cnt = CNT) beginCnt= 28,d0;Clk_100hz=Clk_100hz;endelseCnt= Cnt + lbl;end always(posedge Clk or posedge Rst_n) begin if (Rst_n)begin Key1 n =0;Key2_n =0;endelse beginK
18、ey1 n = Key1 n_reg;Key2_n = Key2 nreg;endendalways(posedge Clk lOOhz or posedge Rst_n ) beginif (Rst n)t = 7;elseif(en)case(keyltkey2)2rbl0 : t = t +lrbl;2b01: t = t -rbi;default:t = t;endcaseendalways(*)beginif (Cnt = CNT) beginKeyl_n_reg =KEY1;Key2 n_reg =KEY2;endelse beginKeyl_n_reg =Keyl n;Key2_
19、n_reg =Key2 n;endendassign keyl=Keyl _n (assign key2=Key2 _n(Keyl_n_reg);CKey2_n_reg);always(posedgeClk)beginif(t =4dO | t = 4dl4)en =rbo;elseen =lbl;endalways(*)begincase(t)4dOled =16b0000 0000 0000 00114dlled =16b0000 0000 0000 01104d2led =16rb0000 0000 0000 .11004d3led =16b0000 0000 000110004d4le
20、d =16b0000 0000 0011 00004d5led =16b0000 0000 0110 00004d6led =16b0000 0000 J100 00004d7led =16b0000 00011000 00004d8led =16b0000 0011,0000 00004d9led =16b0000 0110 0000 00004dlO:led =16rb0000 1100 0000 0000;4dll:led =16b0001_1000 0000 0000;4dl2:led =16b0011_0000 0000 0000;4dl3:led =16b0110 0000 000
21、0 0000;4dl4:led =16bl100 0000 0000 0000;default : led =16Fb0000 0000 0000 0000;endcaseend/译码模块assign LED = led;endmodule5、测试文件define elk period 10/定义时钟周期module BaTB():reg Clk;reg Rst_n;reg KEY1, KEY2;wire15:0 LED;project ba uO(.Clk(Clk), Rst_ n (Rst n),.KEYl(KEYl),.KEY2(KEY2),.LED(LED);initialbeginClk = 0; endalways # ( clk period /2) Clk =、Clk;initial beginKEY1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业字号注册合同
- 2025年代理服务合同样本
- 2025年建筑室内装修工程合同样本
- 2025年旅游客船租赁合同模板
- 2025年企业办公耗材供应合同协议
- 2025年合作购置商铺合同条款协议
- 2025年副食品供应合同文本
- 大数据时代决策效率提升路径-深度研究
- 跨文化管理中的信任构建-深度研究
- 保健食品安全风险控制-深度研究
- 英语-时文阅读-7年级(8篇)
- 数据挖掘(第2版)全套教学课件
- 产学研融合创新合作机制
- 分拣员工作管理制度
- 胃早癌-经典课件
- 酒店管理概论 课件 第1章 酒店管理概述
- 网络分布式系统架构
- 幕墙工安全技术交底
- 集装箱七点检查表
- 创伤伤口包扎术(加压包扎止血法)技术操作考核评分标准
- 篮球场改造工程投标方案(技术方案)
评论
0/150
提交评论