已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术课程设计报告设计名称: EDA课程设计设计题目: 经典数字游戏过河专业:电子信息工程专业 班级:0学生姓名 学号:指导老师题目:基于FPGA的经典数字游戏过河的设计摘要:基于FPGA的洗衣机控制器设计,主要通过使用VerilogHDL语言,在Quartus2上完成电路设计以及程序开发模拟,实现经典的猫狗鼠过河游戏。本设计硬件主要5个按键10个LED灯以及2个数码管;软件设计时采用有限状态机来实现,设置了十个状态,由玩家输入的按键值来决定状态之间的转换。全部程序由控制器模块,分频模块,按键去抖模块,控制模块,十进制转换模块组成,顶层模块使用原理图实现,底层由Verilog HDL语句实现。在编程之后还进行了功能仿真,给出了仿真的结果以及仿真图。并对本次设计的完成情况进行了系统性的总结。关键字:FPGA,Quartus2,Verilog HDL语言,过河,状态机目录一、系统设计3 1 设计要求3 2 总体设计方案3 (1) 设计思路3 (2) 系统组成3二、单元硬件电路设计4 1 键盘去抖模块4 2 显示模块4 3 状态控制模块4三、软件设计4 1 状态控制模块程序设计5 2 按键去抖程序设计5 3 时钟分频模块程序设计64 十进制转换模块程序设计6四、系统仿真测试6 1 洗衣机模块仿真6 2 控制模块仿真6 3 按键去抖模块仿真7 4 分频模块仿真7五、编译下载调试8六、总结12附录:附录一 电路原理图13附录二 管脚定义13附录三 程序代码14一、系统设计1、设计要求一个人将一只狗、一只猫和一只老鼠渡过河的经典游戏用模块实现; 游戏要求:独木舟1次只能装载人和1只动物,且猫狗、猫鼠不能友好相处,设计过河方案,将三只动物安全渡过河,则游戏胜利结束。 1、用LED以适当的方式表示各种动物、河和独木舟以及过河的动作; 2、以数码管显示完成游戏所经历的过河次数; 3、调置复位键,当游戏失败后,以LED显示或数码管显示E等方式来表示此时程序挂起,俺复位键课重新开始新一轮游戏。2、总体设计方案1、设计思路本课程设计需要使用Verilog HDL 语言编程,实现经典的猫狗鼠过河游戏。设计时采用有限状态机来实现本游戏。本设计硬件主要有5个按键10个LED灯以及2个数码管;5个按键用来玩家输入以及复位按键,10个LED分别用来显示河对岸状态与进行过河状态以及输赢的情况;2个数码管用来显示玩家所经历的过河次数。题目要求设计一个过河游戏电路,实现游戏实现状态的控制。1. 状态控制模块基本实现要求功能,包括LED输出、数码管显示次数。2. 分频模块实现从高频向低频转换,供控制模块等使用3按键去抖模块,实现对按键的去抖功能。4. 状态控制模块控制各种状态间转换5. 十进制转换模块,因为实验箱自带显示译码,所以省掉数码管模块。6. 定义管脚,最终能在试验箱上显示结果2、系统组成过河游戏电路主要由状态控制模块,时钟分频模块,按键去抖模块,计数模块,十进制转换模块组成。如图1-1所示时钟分频模块(产生50HZ信号)键盘去抖模块(5个按键的输入)状态控制模块以及计数模块数码管显示步数十进制转换模块LED显示图1-1二、单元硬件电路设计1、按键去抖模块 设有5个按键:一个复位键,四个过河状态控制的按键,表示正在过河的才做过程。2、显示模块 设有10个LED灯,2个数码管。LED灯中分两部分,LED0-LED3中四个表示河对岸的状态,一个表示是否错误,一个表示是否游戏成功;LED8-LED11中四个表示另一岸的状态(guo he zhuang tai?)。2个数码管显示游戏所用步数。3、状态控制模块模块是以一片altera公司的Cyclone2系列FPGA为主体,配合一些外围电路实现的。Cyclone2 系列FPGA采用全铜层、低K值、1.2伏SRAM工艺设计,裸片尺寸被尽可能最小的优化。采用300毫米晶圆,以TSMC成功的90nm工艺技术为基础,Cyclone II 器件提供了4,608到68,416个逻辑单元(LE),并具有一整套最佳的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口电路、4kbit嵌入式存储器块、锁相环(PLL)和高速差分I/O能力。三、软 件 设 计 采用Quartus2作为开发工具对可编程逻辑器件FPGA的编程,底层由Verilog HDL语句实现,顶层使用原理图实现。软件设计由状态控制模块,时钟分频模块,按键去抖模块,十进制转换模块四部分组成,由于输入时钟为50MHZ,因此使用分频模块输出50HZ的方波,给控制模块提供信号,控制模块输出的计数输入给数码管显示译码模块,按键消抖模块的作用是为了消除按键抖动而设立的。1、主控制模块程序设计状态控制模块采用有限状态机实现对过河游戏状态的控制。具体如下S状态表示河对岸的各状态,共十一个状态,包括一个错状态,K表示按键所给条件,表示正在过河的各种情况.我们采用led灯来表示过河的状态。如当ren he猫在河对岸,我们记为(1010),猫在河对岸时我们记为(0010),同理一共有10个允许出现的状态,还包括一个错误的状态。状态有:S0=(0000) S1=(1010) S2=(0010) S4=(1110) S5=(0100) S6=(0001) S7=(1101) S8=(0101) S9=(1111) S10错误状态同状态一样设置K1=(1000)表示人单独运动, K2=(1100)表示人和狗一起运动, K3=(1010)表示人和猫一起运动,K4=(1001)表示人和鼠一起运动。 当输出最终为(1111)是游戏一胜利而告终。状态转换示意图如3-1下S0S1S2S4S3S6S5S7S8S9K3K1K4K2K1K3K2K4K1K3图3-12、按键去抖程序设计在进行独立按键或者矩阵式按键的设计的时候,我们在按下键盘的时候其实并不只是按下去有一个抖动的过程,就连松手的过程也有抖动,然而这个抖动通常被人们所忽略,从而导致输入数据的错误和乱码,因此我们必须对按键进行按键的消抖处理。FPGA的Verilog HDL语言是硬件描述语言,主要运用了状态机和延时的消抖方式。3、时钟分频模块程序设计该模块通过输入的clock信号(50MHZ)分频后得到50HZ供给控制模块,通过两个1000分频输出50HZ的时钟信号,提供给其余各个模块。4、十进制转换模块程序设计该模块主要是为了实现将系统中二进制数转换为十进制数分别显示在数码管中表示游戏行走的步数,由于数码管系统自行译码为4为位二进制数,从而使得一个数码管显示十六进制数。四、系统仿真测试1状态控制模块仿真 如下图4-1out_n表示按键的次数,ledout表示4个led输出的状态,最开始7个按键顺利完成游戏,ledout输出15即(1111),outdata表示胜利,此时输出为1。按下复位键后状态清零,游戏重新开始,当按下key2是游戏失败outdata2表示游戏失败输出1.图4-12. 十进制模块仿真 如图4-2图4-2输入24,十位是nsouta输出2,各位osoutb输出4.3时钟分频模块仿真 如图4-3图4-3(由于分频数较大,所以输入信号显得过于密集)输入时钟信号的频率为输出信号的100倍。4. 按键去抖模块仿真 如图4-4图4-4通过计数使得按键带到一定时间后输出一个周期的脉冲。五、编译下载调试1.初始状态图5-1左边两排led灯,上面一排表示河对岸,初始状态为s0(0000),下面的是此案状态值正好与对岸相反(1111)。右上角两个显示为00的数码管表示游戏进行的步数即按键的次数。F1是复位键,F2是表人单独运动的键,F3表示人和狗运动,F4表示人和猫运动,F5表示人和鼠一起运动。2.游戏运行中图5-2游戏正在顺利进行,尚未出错,已运行3步3.游戏失败图5-3游戏失败,上面一排的第7个led灯亮,表示游戏失败。4.游戏成功图5-4上面一排led前四个全亮表示人狗猫鼠已经到达河对岸,下面的全灭,第一排最右边的led灯亮表示游戏成功,数码管显示7步完成游戏附录附录一:顶层文件图 如图附录二:管脚定义 Node namedirectionlocationgroupI/O bankVref groupI/O standardCrruent strength(24mA)clkInputPIN_P256B6_N03.324mAkey1InputPIN_AA108B8_N13.324mAkey2InputPIN_AB108B8_N13.324mAkey3InputPIN_AE68B8_N13.324mAkey4InputPIN_V226B6_N13.324mAledout0OutputPIN_AE8Ledout3.08B8_N03.324mAledout1OutputPIN_W12Ledout3.08B8_N03.324mAledout2OutputPIN_W11Ledout3.08B8_N03.324mAledout3OutputPIN_AC10Ledout3.08B8_N03.324mAnsouta0OutputPIN_AD21Nsouta3.07B7_N03.324mAnsouta1OutputPIN_AF22Nsouta3.07B7_N03.324mAnsouta2OutputPIN_AE22Nsouta3.07B7_N03.324mAnsouta3OutputPIN_V18Nsouta3.07B7_N03.324mAnsoutb0OutputPIN_AB21Nsoutb3.07B7_N03.324mAnsoutb1OutputPIN_AD23Nsoutb3.07B7_N03.324mAnsoutb2OutputPIN_AD22Nsoutb3.07B7_N03.324mAnsoutb3OutputPIN_AC21Nsoutb3.07B7_N03.324mAoutdataOutputPIN_AA118B8_N13.324mAoutdata2OutputPIN_AF78B8_N13.324mArstInputPIN_Y118B8_N13.324mAshow10OutputPIN_U21Show13.06B6_N03.324mAshow11OutputPIN_U20Show13.06B6_N03.324mAshow12OutputPIN_T19Show13.06B6_N03.324mAshow13OutputPIN_R19Show13.06B6_N03.324mA附录三:程序代码1. 按键去抖代码 module anjian(clk,keyin,keyout);input clk;input keyin;output keyout;reg 3:0count;reg keyout;always(posedge clk)beginif(keyin=1) begin count=2)&(count3) keyout=1; else keyout=0; endelse begin keyout=0; count=0; endendendmodule2.千分频代码 module f1000(clockin,clockout);input clockin;output clockout;reg clockout;reg9:0 count;always (posedge clockin) begin if(count=499) begin clockout=clockout; count=0; end else count=count+1b1; endendmodule3.十进制转换代码 module jz10(clock,datain,nsouta,nsoutb); input clock; input7:0 datain; output 3:0nsouta,nsoutb; reg 3:0a; reg 3:0nsouta,nsoutb; always (posedge clock) begin nsoutb=datain%10; nsouta=datain/10; endendmodule4.主控制程序代码module guohe_con(clk,rst,key1,key2,key3,key4,ledout,out_n,outdata,outdata2,show1);input clk;input rst;input key1,key2,key3,key4; /输入output7:0 out_n; /完成游戏所经历的过河次数output3:0 ledout; /表示人狗猫鼠的状output3:0 show1; /显示变量output outdata; /游戏成功outdata=1output outdata2; /游戏失败outdata2=1reg10:0 state;reg7:0 out_n;reg7:0 count;reg3:0 ledout;reg3:0 show1;reg outdata;reg outdata2;parameter s0=11b00000000001, /0000 s1=11b00000000010, /1010 s2=11b00000000100, /0010 s3=11b00000001000, /1110 s4=11b00000010000, /1011 s5=11b00000100000, /0100 s6=11b00001000000, /0001 s7=11b00010000000, /1101 s8=11b00100000000, /0101 s9=11b01000000000, /1111 s10=11b10000000000; /error always(posedge clk) if(rst) begin count=0; out_n=count; state=s0; ledout=4b0000; outdata=0; outdata2=0; show1=4b0000; end else case(state) s0: begin out_n=count; ledout=4b0000; if(key3=1) begin show1=4b1010; state=s1; /0000 to 1010 count=count+1; end else if(key1key2key4) begin state=s10; /error count=count+1; end else state=s0; end s1: begin out_n=count; ledout=4b1010; if(key1=1) begin show1=4b1000; count=count+1; state=s2; /1010 to 0010 end else if(key3) begin show1=4b1010; /ren he mao hui; gai cheng state=s0; /1010 to 0000 count=count+1; end else if(key2key4) begin state=s10; /error count=count+1; end else state=s1; /error end s2: begin ledout=4b0010; out_n=count; if(key2=1) begin show1=4b1100; state=s3; /0010 to 1110 count=count+1; end else if(key1=1) begin show1=4b1000; state=s1; /0010 to 1010 count=count+1; end else if(key4=1) begin show1=4b1001; state=s4; /0010 to 1011 count=count+1; end else if(key3=1) begin show1=4b1010; state=s10; /error count=count+1; end else state=s2; end s3: begin out_n=count; ledout=4b1110; if(key2=1) begin show1=4b1100; state=s2; /1110 to 0010 count=count+1; end else if(key3=1) begin show1=4b1010; state=s5; /1110 to 0100 count=count+1; end else if(key1key4) begin state=s10; /error count=count+1; end else state=s3; end s4: begin out_n=count; ledout=4b1011; if(key3=1) begin show1=4b1010; state=s6; /1011 to 0001 count=count+1; out_n=count; end else if(key4=1) begin show1=4b1001; state=s2; /1011 to 0010 count=count+1; out_n=count; end else if(key1key2) begin state=s10; /error count=count+1; out_n=count; end else state=s4; end s5: begin out_n=count; ledout=4b0100; if(key4=1) begin show1=4b1001; state=s7; /0100 to 1101 count=count+1; end else if(key3=1) begin show1=4b1010; state=s3; /0100 to 1110 count=count+1; end else if(key1key2) begin state=s10; /error count=count+1; end else state=s5; end s6: begin out_n=count; ledout=4b0010; if(key2=1) begin show1=4b1100; state=s7; /0010 to 1101 count=count+1; end else if(key3=1) begin show1=4b1010; state=s4; /0010 to 1011 count=count+1; end else if(key1key4) begin state=s10; /e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化传媒公司市场专员的招聘面试指南
- 国际酒店企业财务面试必答题
- 能源行业客户经理面试要点解析
- 股市投资分析基本原理及实践指导
- 媒体记者面试技能提升宝典
- 餐饮业厨师长招聘:餐厅厨师长面试须知
- 小学消防安全主题教育活动
- 品牌建设与运营的融合策略
- 项目主管技能与面试技巧详解
- 2026年广东省深圳市高三一模生物试题答案讲解课件
- DB23∕T 3242-2022 秸秆固化成型燃料站设计技术规范
- CT引导下介入治疗技术优化
- 2025年中职化学(无机化学)试题及答案
- 2026年湖南生物机电职业技术学院单招职业适应性测试题库带答案
- 深静脉血栓护理查房
- 2026年辽宁师范高等专科学校单招职业技能考试题库必考题
- 高层建筑结构的体系布置教案
- 2026年山东外事职业大学单招综合素质考试必刷测试卷附答案
- 2025年烟台南山单招试题及答案
- 生菜课件教学课件
- 淋浴房技术知识培训内容
评论
0/150
提交评论