基于Verilog的乒乓球游戏电路设计

上传人:无*** 文档编号:150647787 上传时间:2022-09-10 格式:DOC 页数:12 大小:145.51KB
收藏 版权申诉 举报 下载
基于Verilog的乒乓球游戏电路设计_第1页
第1页 / 共12页
基于Verilog的乒乓球游戏电路设计_第2页
第2页 / 共12页
基于Verilog的乒乓球游戏电路设计_第3页
第3页 / 共12页
资源描述:

《基于Verilog的乒乓球游戏电路设计》由会员分享,可在线阅读,更多相关《基于Verilog的乒乓球游戏电路设计(12页珍藏版)》请在装配图网上搜索。

1、 大学EDA课程设计姓名: 学号: 班级: 专业: 学院: 目 录0 引言- 2 -1 设计要求- 2 -2 设计思路- 2 -3 Verilog程序- 3 -4 功能仿真- 9 -5 总结- 11 -致谢.- 11 -参考文献.- 11 -基于Verilog的乒乓球游戏电路设计0 引言可编程器件的广泛应用,为数字系统的设计带来了极大的灵活性。可编程器件可以通过软件编程对硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样快捷方便。高速发展的FPGA、CPLD兼有串、并行工作方式和高速、高可靠性的特点,在电子系统设计中得到了广泛应用。通常使用硬件描述语言(Hardware Desc

2、ription Language,HDL)进行数字电子系统设计。目前应用广泛的硬件描述语言有:VHDL语言,Verilog HDL语言,AHDL语言。Verilog语言由于具有强大的行为描述能力和丰富的仿真语句从而成为系统设计领域最佳的硬件描述语言。鉴于如上所述,本系统使用Verilog语言进行设计,采用自上向下的设计方法。利用Quartus II 6.0 进行Verilog程序的编译与综合,然后用Modelism SE 6.0进行功能仿真和时序仿真,并使用GW48系列SOPC/EDA实验开发系统进行下载验证。1 设计要求图1 乒乓球游戏实物图设计如图1所示的乒乓球游戏实物图的模拟控制器。发球

3、方最后一位LED点亮,按下键表示发球,亮的灯依次向对方移动,当到达对方最后一位时0.5s内对方必须按下按键表示接球,接球后LED灯向对方移动,否则输球。接球时,LED没有亮到最后一位时就按下接球按键为犯规。输球或者犯规,对方加1分,率先加到11分者游戏胜出这一局。2 设计思路考虑到游戏的复杂度,采用状态机来实现这些模式转换。用到6个状态,如表1所示:状态功能S0复位状态,也是判断发球权的状态S1甲方发球S2球从甲方向乙方右移,若此时乙方接球就给甲方加一分,并将球权给甲方S3开始判断乙方是否在0.5S内接球S4乙方发球S5球从乙方向甲方左移,若此时甲方接球就给乙方加一分,并将球权给乙方S6开始判

4、断甲方是否在0.5S内接球表1 状态介绍为了美化设计,加入了蜂鸣、用数码管显示分数和发球权等功能。3 Verilog程序module pingpangok(state,nextstate,clk2hz,rst,k_a,k_b,led8s,led7s1,led7s2,led7s3,led7s4,led7s5,speaker);/clk2hz指一个2Hz的时钟输入, rst异步复位, k_a和k_b是比赛双方按键, speaker是蜂鸣器/led8s是一排8个发光二极管代表球场, led7s14是4个显示分数的数码管, led7s5是显示发球权的数码管input clk2hz,rst,k_a,k_

5、b;output 7:0 led8s;output 6:0 led7s1,led7s2,led7s3,led7s4,led7s5;output speaker;output 2:0 state,nextstate;reg 7:0 led8s;reg 6:0 led7s1,led7s2,led7s3,led7s4,led7s5;reg 3:0 score_a,score_b;reg 2:0 state,nextstate;reg speaker;parameter s0=3b000,/复位状态,也是判断发球权的状态; s1=3b001,/甲方发球; s2=3b010,/球从甲方向乙方右移,若此时

6、乙方接球就给甲方加一分,并将球权给甲方; s3=3b011,/开始判断乙方是否在0.5S内接球; s4=3b100,/乙方发球; s5=3b101,/球从乙方向甲方左移,若此时甲方接球就给乙方加一分,并将球权给乙方; s6=3b110;/开始判断甲方是否在0.5S内接球;/-进程块1:状态交换-always (posedge clk2hz or posedge rst)beginif(rst)state=s0;/rst上升沿复位elsestate=nextstate;end/-进程块2:游戏逻辑控制核心-always (state or k_a or k_b or score_a or sco

7、re_b)begincase(state)s0: beginled7s5=7b0111111;/第五个数码管显示数字0,表示发球权可以开始判断了;led8s=7b00000000;score_a=0;score_b=0;/给甲乙双方的分数复位;if(k_a)beginspeaker=1b1;/因为按键k_a要持续按着保持高电位1,蜂鸣器鸣叫是提示可以松手了;nextstate=s1;endelse if(k_b)beginspeaker=1b1;nextstate=s4; end elsenextstate=s0;ends1: beginled7s5=7b0000110;/第五个数码管显示数字

8、1,表示发球权现在是甲方的;if(led8s=8b00000000)led8s=8b10000000;/点亮的灯出现在最右边,即甲方发球;nextstate=s2;if(speaker)speaker=1b0;/将刚才鸣叫的蜂鸣器关闭;ends2: beginif(led8s=8b00000010)beginled8s1;nextstate=s3;/进入判断乙方接球的状态;endelsebeginled8s1;nextstate=s1;endif(k_b)beginscore_a=score_a+1;speaker=1b1;/若在此期间乙方抢先按键,就判断乙方输,给甲方加1分,并让蜂鸣器鸣叫;

9、nextstate=s1;led8s=8b00000000;endends3: beginif(k_b)beginnextstate=s4;/乙方接球成功,并进入乙方发球的s4状态;led8s=8b00000000;endelsebeginscore_a=score_a+1;speaker=1b1;nextstate=s1;/乙方接球不成功,则甲方加一分,并进入甲方发球的s1状态,蜂鸣器鸣叫;led8s=8b00000000;endends4: beginled7s5=7b1011011;/第五个数码管显示数字2,表示发球权现在是乙方的;if(led8s=8b00000000)led8s=8b

10、00000001;/点亮的灯出现在最左边,即乙方发球;nextstate=s5;if(speaker)speaker=1b0;/将刚才鸣叫的蜂鸣器关闭;ends5: beginif(led8s=8b01000000)beginled8s=led8s1;nextstate=s6;/进入判断甲方接球的状态;endelsebeginled8s=led8s1;nextstate=s4;endif(k_a)beginscore_b=score_b+1;speaker=1b1;/若在此期间甲方抢先按键,就判断甲方输,给乙方加1分,并让蜂鸣器鸣叫;nextstate=s4;led8s=8b00000000;

11、endends6: beginif(k_a)beginnextstate=s1;/甲方接球成功,并进入甲方发球的s1状态;led8s=8b00000000;endelsebeginscore_b=score_b+1;speaker=1b1;nextstate=s4;/甲方接球不成功,则乙方加一分,并进入乙方发球的s4状态,蜂鸣器鸣叫;led8s=8b00000000;endenddefault: nextstate=s0;endcase/-甲乙双方的分数各用2个数码管显示-if(score_a=11 & score_b=11)beginscore_a=0;score_b=0;/如果任一方得11

12、分,一局结束,计分清零;endcase(score_a)8b0000: beginled7s1=7b0111111;led7s2=7b0111111;/数码管显示0分; end8b0001: beginled7s1=7b0111111;led7s2=7b0000110;/数码管显示1分; end8b0010: beginled7s1=7b0111111;led7s2=7b1011011;/数码管显示2分; end8b0011: beginled7s1=7b0111111;led7s2=7b1001111;/数码管显示3分; end8b0100: beginled7s1=7b0111111;le

13、d7s2=7b1100110;/数码管显示4分; end8b0101: beginled7s1=7b0111111;led7s2=7b1101101;/数码管显示5分; end8b0110: beginled7s1=7b0111111;led7s2=7b1111101;/数码管显示6分; end8b0111: beginled7s1=7b0111111;led7s2=7b0000111;/数码管显示7分; end8b1000: beginled7s1=7b0111111;led7s2=7b1111111;/数码管显示8分; end8b1001: beginled7s1=7b0111111;le

14、d7s2=7b1101111;/数码管显示9分; end8b1010: beginled7s1=7b0000110;led7s2=7b0111111;/数码管显示10分; end8b1011: beginled7s1=7b0000110;led7s2=7b0000110;/数码管显示11分; enddefault: beginled7s1=7b0111111;led7s2=7b0111111;/数码管显示0分; endendcasecase(score_b)8b0000: beginled7s3=7b0111111;led7s4=7b0111111;/数码管显示0分; end8b0001: b

15、eginled7s3=7b0111111;led7s4=7b0000110;/数码管显示1分; end8b0010: beginled7s3=7b0111111;led7s4=7b1011011;/数码管显示2分; end8b0011: beginled7s3=7b0111111;led7s4=7b1001111;/数码管显示3分; end8b0100: beginled7s3=7b0111111;led7s4=7b1100110;/数码管显示4分; end8b0101: beginled7s3=7b0111111;led7s4=7b1101101;/数码管显示5分; end8b0110: b

16、eginled7s3=7b0111111;led7s4=7b1111101;/数码管显示6分; end8b0111: beginled7s3=7b0111111;led7s4=7b0000111;/数码管显示7分; end8b1000: beginled7s3=7b0111111;led7s4=7b1111111;/数码管显示8分; end8b1001: beginled7s3=7b0111111;led7s4=7b1101111;/数码管显示9分; end8b1010: beginled7s3=7b0000110;led7s4=7b0111111;/数码管显示10分; end8b1011:

17、beginled7s3=7b0000110;led7s4=7b0000110;/数码管显示11分; enddefault: beginled7s3=7b0111111;led7s4=7b0111111;/数码管显示0分; endendcaseendendmodule4功能仿真功能仿真是最基本的仿真验证,它只能仿真设计中的逻辑功能。通过功能仿真,可以验证整个系统的逻辑功能是否正确。用户可以通过观看仿真的波形来对系统的逻辑功能进行分析,并可以以此为依据,对设计进行必要的修改和完善。由于本系统的状态情况较为复杂,下面就几种典型的情况进行系统的综合和仿真:(1)甲方发球后,乙方提前击球,同时甲方得分。

18、图2为仿真结果图,观察波形可知,球从左到右,乙方提前击球后a_score+1,即甲方得分。图2功能仿真结果01(2)甲方发球后,乙方在最后一个LED灯亮的时候才接球。图3为仿真结果图,观察波形可知,乙方接球后,球从右到左。图3功能仿真结果02(3)甲方发球后,乙方一直不接球。图4为仿真结果图,观察波形可知,最后一个LED亮了0.5s内乙方没有接球,a_score+1,即甲方得分。图4功能仿真结果035总结通过这次大作业的练习,我对EDA有了更加深入的理解,对用Verilog语言设计程序不再感到陌生。我对设计要求进行了仔细的分析,对设计算法不断地进行优化,对程序反复地进行调试,这在很大程度上锻炼了我解决问题的能力。另外,通过这次课程设计我的Verilog编程能力得到了很大的提高,同时熟练掌握了Quartus和Modelsim这两个EDA软件。总之,这次课程设计让我受益匪浅,非常感谢老师给我们这次学习的机会。致谢:在这为期一周的课程设计中,感谢XX老师给予的悉心指导和帮助,以及感谢XX实验室提供的EDA硬件和软件的实验环境。参考文献: 1 xx. xxM.xx:xx,2008.6.- 11 -

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!