EDA技术课程设计报告乒乓球游戏电路设计_第1页
EDA技术课程设计报告乒乓球游戏电路设计_第2页
EDA技术课程设计报告乒乓球游戏电路设计_第3页
EDA技术课程设计报告乒乓球游戏电路设计_第4页
EDA技术课程设计报告乒乓球游戏电路设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、eda 技术课程设计报告eda乒乓球游戏机设计学 院计信学院专 业信息安全学 生 姓 名xxx学 号0000000000设计题目乒乓球游戏电路设计内容及要求:内容及要求:设计乒乓球游戏电路,用按键与 led 表示输入与输出。 (1)初始时,16 个 led 最边上的点亮,按下键表示发球,亮的灯依次向对方移动;当到达另一边倒数第 4 个灯时表示乒乓球触到桌面反弹;对方必须在反弹后且靠近己方的最后一个灯亮起来前按下按键表示接球,否则输球;接球后灯亮的规则、对方接球的规则同发球; (2)双方靠近自己的 4 个灯亮邓间隔 0.4s,其余灯亮灯间隔 0.8s; (3)输球或者犯规,本局游戏结束; (4)

2、乒乓球比赛规则计分,显示于数码管; (5)工作时钟 100hz 即可; (6)完成流程:设计规范文档、底层模块设计与代码输入及其功能仿真、约束与综合、布局布线、下载验证等。 进度安排:进度安排:第 1-2 天:讲解题目,准备参考资料,检查、调试实验软硬件,进入设计环境,开始设计方案和验证方案的准备;第 3-4 天:完成设计与验证方案,经指导老师验收后进入模块电路设计;第 5-7 天:完成模块电路设计,进行代码输入和相应的功能仿真;第 8-9 天:约束设计,综合、下载,实现设计目标,并指导老师验收设计;整理设计资料,撰写报告、准备答辩;第 10 天:验收合格后进行答辩。指导教师(签字):年 月

3、日主管院长(签字):年 月 日eda 技术课程设计报告i摘 要 乒乓球游戏电路是一个对输入信号、输入时机正确与否的判断,并用 16 个 led 表示乒乓球球台和乒乓球,用数码管模拟显示器,显示比赛局数比分和每局玩家得分的电路。电路并不复杂,整体分为两个模块:一,游戏主模块;二,计分显示模块。主模块完成用 led 表示球和球台并对玩家是否击球、是否犯规做出判断,并且将两位玩家的游戏得分进行输出。计分显示模块完成对局数比分的运算,显示局数比分和每局游戏玩家的得分。实现中采用 verilog hdl 描述、modelsim 进行功能仿真、quartus ii 进行逻辑综合和适配下载,选用 cyclo

4、ne 系列 ep1c6q240c8 型号的芯片上实现。在此过程中,完整地建立了测试平台,完成了功能和时序仿真,从而保证了设计的功能与时序的正确性。关键词关键词 verilog hdl;fpga;乒乓球游戏eda 技术课程设计报告ii目 录摘 要.ii引 言.11 总体电路结构设计.21.1 电路功能与性能.21.2 主要设计概述.21.3 电路接口.31.4 电路功能框图.41.5 验证方案.42 模块设计.52.1 游戏主模块设计 .52.2 计分显示模块设计 .63 电路约束与综合.83.1 时序约束 .83.2 引脚锁定约束 .11 3.3 电路综合报告.134 设计仿真与测试.144.

5、1 仿真与测试的功能列表.144.2 仿真平台构建和仿真结果 .154.2.1 电路功能仿真结果.154.2.2 电路后仿真结果.16结论.17参考文献.18附录 a 设计源代码.19附录 b 仿真代码.27附录 c fpga 设计中的 hdl 编码风格.30eda 技术课程设计报告0引 言fpga 是英文 field programmable gate array 的缩写,即现场可编程门阵列,它是作为专用集成电路 asic(application specific integrated circuit)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限

6、的缺点。fpga 能完成任何数字器件的功能,上至高性能 cpu,下至简单的 74 系列电路,都可以用 fpga 来实现。可编程逻辑器件 fpga 以其开发周期短、成本低、功耗低、可靠性高等优势,以及开发测试技术的日益普及,广泛应用于通信、航空、医疗等领域,近年来在消费电子领域中的应用也日渐增加。在此设计了一个简易的乒乓球游戏用于对 fpga 设计进行了解、学习。游戏设计过程并不复杂,采用了 verilog hdl 语言编程实现,在 modelsim se 环境下进行仿真,在 quartus集成环境下进行了约束、综合、布局布线、下载过程。结果表明:在设定的比赛规则(7 局 4 胜制,每局比分最多

7、记录到 15)下,游戏机运行正常。由于条件所限无法在现场进行验证,本设计采用开发板上按键开关的 0/1 变化替代玩家的输入信号,按键替代全局复位等来实现验证。eda 技术课程设计报告11 总体电路结构设计1.1 电路功能与性能乒乓球游戏电路,用按键与 led 表示输入与输出。比赛规则约定:七局四胜;11 分一局;比赛进行, 16 个 led 排列成行模拟乒乓球台;点亮的 led 模拟乒乓球,受 fpga 控制从左到右或从右到左移动;比赛选手通过按钮输入模拟击球信号,实现 led 移位方向的控制;若发亮的 led 运动在球台倒数第四个至对方终点之间时,对方未能及时按下击球按钮使其向相反方向移动,

8、即失去一分。(1)初始时,16 个 led 最边上的点亮,按下键表示发球,亮的灯依次向对方移动;移位计数器控制。(2)当到达另一边倒数第 4 个灯时表示乒乓球触到桌面反弹;对方必须在反弹后且靠近己方的最后一个灯亮起来前按下按键表示接球,否则输球;(3)接球后灯亮的规则、对方接球的规则同发球; (4)双方靠近自己的 4 个灯亮的间隔 0.4s,其余灯亮的间隔 0.8s;计数器来实现时钟控制(5)输球或者犯规,即失去一分;自动显示于数码管(共阴)(6)乒乓球比赛规则计分,显示于数码管; (7)工作时钟 100hz; 1.2 主要设计概述此次设计中采用将设计分块的方法,用不同的模块实现不同的功能,然

9、后将各个模块连接起来。可将设计分为两个模块。一个是对输入信号进行处理,设定游戏规则,输出得分。另一个是对得分进行处理,得出比分,再转化到数码管上进行显示。eda 技术课程设计报告21.3 电路接口电路接口主要分为 3 部分,输入信号:玩家 1,玩家 2,复位键,输入时钟。中间变量信号:玩家 1 得分、玩家 1 局数得分、玩家 2 得分、玩家 2 局数得分、数码管转换变量。输出信号:数码管选择信号 sel,数码管显示。具体见下表。 表 1.3 接口信号表名称io 属性描述备注clkin输入时钟,100hz 频率全局时钟resetin全局复位键0 有效play1in玩家 1 击球信号按键按下时有效

10、play2in玩家 2 击球信号按键按下时有效light15:0inout16 位 led 模拟球台和乒乓球高电平有效sel2:0out数码管选择控制 8 位数码管循环led6:0out7 段数码管显示共阴eda 技术课程设计报告31.4 电路功能框图 依照功能,将电路分为 2 个功能模块:主功能模块,处理输入信号,完成球台及球的模拟,输出玩家得分信号。计分显示模块,以玩家得分为输入,计算玩家局数比分及数码管的显示。电路的功能框图如下所示。图 1.4 电路功能框图1.5验证方案设计主要分为两个子模块,游戏主模块、计分数码管显示模块。对两个子模块分别进行验证。对主游戏模块的验证可使玩家 1、2

11、分别在正确或错误的时间输入,观察所得结果。对计分显示模块的验证可编辑 2 个玩家的得分情况,观察数码管的显示情况。前仿真完成后,再用综合器进行后仿真,主要是布局布线、时序约束、管脚约束等。成功后便可下载相应的 fpga 器件中,进行实物模拟验证。eda 技术课程设计报告42 模块设计 设计共有 2 个功能模块,分别是游戏主程序模块和记分显示模块。游戏主程序以玩家击球为输入,判断玩家是否在正确的击球时机,记录哪位玩家得分,输出玩家分数供计分显示模块进行处理。计分显示模块以游戏主程序所记玩家得分为输入,记录每局比赛两位玩家的得分,最后显示局数比分和每局玩家得分。2.1 游戏主模块设计游戏主模块 g

12、ame 主要完成球台部分的设计,以两位玩家的击球为输入,使 16 个led 依次亮灭,根据游戏规则输出比分。以两个按键开关来模拟两位玩家的击球动作。开始时最边上的两个 led 亮,发球后有发球方 led 先亮,依次亮到对方。若对方在倒数第 4 个 led 亮至最后一个亮之前按下按键(表示接球) ,则 led 向反方向一次亮灭。若没有按下按键,对方加一分。两边的 4 个 led 亮灭速度为每 0.4s 一个,中间 8 个为每 0.8s 一个。接球、发球 led 模式相同。状态机模块的接口信号有时钟、复位、玩家1、玩家 2、得分输出 1、得分输出 2、球台模拟灯,具体如下表 2.1 所示。表 2.

13、1 制状态机模块接口信号表名称io 描述描述备注clkin时钟信号 100hzrstin复位信号,有效时端口赋值为 00 有效play1in玩家 1 击球信号,用按键开关表示play1in用于控制中间的 8 个 led 每 0.8s 依次亮灭1 有效sum13:0out玩家 1 得分,4dit 数据sum23:0out玩家 2 得分,4dit 数据light15:0out16dit 数据,每一位控制一个 lededa 技术课程设计报告5状态转移图如下图 2.1 所示。图 2.1 状态机模块状态转移图2.2 计分显示模块设计计分显示模块,以主模块输出的玩家得分情况运算出局数比分,显示局势比分和每

14、局两位玩家的得分。输入信号有时钟,复位,玩家 1 得分,玩家 2 得分,输出为六位数码管显示,其中包含玩家 1 局数一位,玩家 2 局数一位,玩家 1 得分两位,玩家2 得分两位。具体如下表 2.2 所示。表 2.2 模块接口信号表名称io 描述描述备注clkin控制时钟,100hzrstin复位,使所有端口恢复初值0 有效sum13:0in玩家 1 得分,4dit 数据sum23:0in玩家 2 得分,4dit 数据led6:0out六位数码管显示,由 sel 选控,使其高速刷新,看起来就是连续显示eda 技术课程设计报告6计分显示模块功能框图如下:图 2.2rtl 框图eda 技术课程设计

15、报告73 电路约束与综合实现 fpga/cpld 设计中的约束主要可以分为两个方面,一是时序约束,另一个是管脚约束,而一般不考虑面积约束、设计规则约束和工作环境约束。综合工具直接采用quartus ii 进行。3.1 时序约束时序约束主要分为输入/输出延时约束、时钟约束以及异步时钟数据间的约束等内容。本设计中由于是同步设计,而且没有纯组合逻辑的输入与输出,时钟约束变得简单。设计中仅需要对输入延时、输出延时、触发器间的延时进行约束即可。根据实际的工作环境,设计电路工作时钟设定为 100hz。输入延时和输出延时均设定为时钟周期的 60%,时钟周期 10ms。游戏主模块 game 时间约束语句:#

16、create clockcreate_clock -name clk -period 10000.000 -waveform 5000.000 10000.000 get_ports clk# set input delayset_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports play1set_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports play2set_input_delay -add_delay -clock get_cloc

17、ks clk 6000.000 get_ports rst# set output delayset_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light0set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light1set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light2set_output_delay -add_delay

18、-clock get_clocks clk 6000.000 get_ports light3set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light4set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light5set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light6eda 技术课程设计报告8set_output_dela

19、y -add_delay -clock get_clocks clk 6000.000 get_ports light7set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light8set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light9set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light10set_output_del

20、ay -add_delay -clock get_clocks clk 6000.000 get_ports light11set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light12set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light13set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports light14set_output

21、_delay -add_delay -clock get_clocks clk 6000.000 get_ports light15set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum10set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum11set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum12set_output_d

22、elay -add_delay -clock get_clocks clk 6000.000 get_ports sum13set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum20set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum21set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum22set_output_delay

23、 -add_delay -clock get_clocks clk 6000.000 get_ports sum23计分显示模块时间约束语句:# create clockcreate_clock -name clk -period 10000.000 -waveform 5000.000 10000.000 get_ports clk# set input delayset_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports rstset_input_delay -add_delay -clock get_clocks

24、 clk 6000.000 get_ports sum10set_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum11set_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum12set_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum13set_input_delay -add_delay -clock get_clocks clk 600

25、0.000 get_ports sum20set_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum21eda 技术课程设计报告9set_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum22set_input_delay -add_delay -clock get_clocks clk 6000.000 get_ports sum23# set output delayset_output_delay -add_delay -

26、clock get_clocks clk 6000.000 get_ports led0set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports led1set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports led2set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports led3set_output_delay -add_delay -clock ge

27、t_clocks clk 6000.000 get_ports led4set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports led5set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports led6set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sel0set_output_delay -add_delay -clock get_clocks

28、 clk 6000.000 get_ports sel1set_output_delay -add_delay -clock get_clocks clk 6000.000 get_ports sel2eda 技术课程设计报告103.2 引脚锁定约束由于开发板上的电源、时钟、复位以及其它功能键等的连接已经固定,管脚约束所要完成的只要锁定即可。游戏主模块管脚约束如下表:todirectionlocationi/o bankvref groupi/o standardreservedgroupcurrent strengthclkinputpin_281b1_n1led6outputpin_411

29、b1_n2led6.0led5outputpin_391b1_n1led6.0led4outputpin_381b1_n1led6.0led3outputpin_371b1_n1led6.0led2outputpin_241b1_n1led6.0led1outputpin_231b1_n1led6.0led0outputpin_211b1_n0led6.0rstinputpin_581b1_n2sel2outputpin_451b1_n2sel2.0sel1outputpin_441b1_n2sel2.0sel0outputpin_431b1_n2sel2.0sum13inputsum13.0

30、sum12inputsum13.0sum11inputsum13.0sum10inputsum13.0sum23inputsum23.0sum22inputsum23.0sum21inputsum23.0sum20inputsum23.0表 3.2.1 游戏主模块管脚约束表(sum1、sum2 是传输给计分显示模块的信号,所以没有管脚约束)eda 技术课程设计报告11计分显示模块管脚约束如下表:todirectionlocationi/o bankvref groupi/o standardreservedgroupcurrent strengthclkinputpin_281b1_n1lig

31、ht15outputpin_1174b4_n0light15.0light14outputpin_1164b4_n0light15.0light13outputpin_1154b4_n0light15.0light12outputpin_1144b4_n0light15.0light11outputpin_1134b4_n0light15.0light10outputpin_1084b4_n0light15.0light9outputpin_1074b4_n0light15.0light8outputpin_1064b4_n0light15.0light7outputpin_1054b4_n0

32、light15.0light6outputpin_1044b4_n0light15.0light5outputpin_1034b4_n0light15.0light4outputpin_1024b4_n0light15.0light3outputpin_1014b4_n1light15.0light2outputpin_1004b4_n1light15.0light1outputpin_994b4_n1light15.0light0outputpin_984b4_n1light15.0play1inputpin_664b4_n2play2inputpin_591b1_n2rstinputpin

33、_581b1_n2sum13outputsum13.0sum12outputsum13.0sum11outputsum13.0sum10outputsum13.0sum23outputsum23.0sum22outputsum23.0sum21outputsum23.0sum20outputsum23.0表 3.2.2 计分显示模块管脚约束表(sum1、sum2 为游戏主模块传来的信号,所以无管脚约束)eda 技术课程设计报告123.3 电路综合报告游戏主模块 game 样本报告:图 3.1.1 游戏主模块报告计分显示模块 jifenqi 样本报告:eda 技术课程设计报告13图 3.1.2

34、计分显示模块报告4 设计仿真与测试功能验证分为两部分,一部分是电路功能与时序的软件仿真,采用 moldsim 完成;另一部分是将配置文件下载后在开发板上对设计进行测试,通过开关、按键、led、数码管以及示波器、逻辑分析仪等方式进行。eda 技术课程设计报告144.1 仿真与测试的功能列表功能仿真与测试要针对每一条设计需要实现的功能进行。设计中要求实现的、需要仿真与测试功能列表如下:游戏主模块:1) 复位功能当复位信号低有效时,电路应处于复位状态:运行控制信号处于无效(低电平) 、任何输入没有响应、数码管显示无效;当复位信号变为高电平时,电路正常工作。2) 时钟信号当有时钟时电路正常工作;没有时

35、钟信号时,除复位外所有的输入没有响应,所有的输出没有变化。3) play1、play2先 play1 输入,计算应隔 1.2s-1.5s 后输入 play2,表示接球,再隔 0.8s-1.2s 之间输入 play1,表示接球,依次测试游戏正常进行。若在相应时间内无 play1 或 play2 的输入(或是犯规) ,游戏就会进入初始状态并且记录得分。计分显示模块:1) 复位功能当复位信号低有效时,电路应处于复位状态:运行控制信号处于无效(低电平) 、任何输入没有响应、数码管显示无效;当复位信号变为高电平时,电路正常工作。2) 时钟信号当有时钟时电路正常工作;没有时钟信号时,除复位外所有的输入没有

36、响应,所有的输出没有变化。3) sum1、sum2玩家 1、2 的比分输入。共有 4 种情况:sum1 大于 sum2 并且sum2 不大于 9;sum2 大于 sum1 并且 sum1 不大于 9;sum1、sum2=10 并且sum1-sum21;sum1、sum2=10 并且 sum2-sum11;查看数码管显示情况。4.2 仿真平台构建和仿真结果4.2.1 电路功能仿真结果 游戏主模块功能仿真eda 技术课程设计报告15图 4.2.1.1 游戏主模块仿真波形图 计分器模块功能仿真图 4.2.1.2 计分显示模块仿真波形图4.2.2 电路后仿真结果游戏主模块eda 技术课程设计报告16图

37、 4.2.2.1 游戏主模块后仿真波形图计分显示模块(所设延时过小)图 4.2.2.1 计分显示模块后仿真波形图eda 技术课程设计报告17结论程序设计、软件仿真皆可通过。硬件实际模拟由于器件问题无法实现。通过本次设计加强了对 verilog hdl 硬件描述语言的理解。对仿真软件 modelsim se 和综合器件 quartus ii 的使用更加清晰。完整的进行了 fpga 设计的过程。在实际的 fpga 开发中,选用 modelsim+ quartusii 的 eda 工具组合能很好地规划设计流程,充分利用各eda 工具的优点,提高开发效率。eda 技术课程设计报告18参考文献1 g.

38、david ripley.dvi-a digital multimedia technology. communication of the acm,july,1982,322 micheal.d.ciletti,advanced digital with the verilog hdl m. 电子工业出版社,20043 micheal keating,pierre bricaud.reuse methodology for system on a chip design.second edition.kluwer academic publisher,20004 杜慧敏 基于 verilog

39、 的 fpga 设计基础 西安电子科技大学出版社,2006,25 易建勋 微处理器的结构与性能 清华大学出版社 2003.96 求是科技 fpga 数字电子系统设计与开发实例导航 人民邮电出版社 2005.67 雷丽文 微机原理与接口技术 电子工业出版社 1997.2 8 夏宇闻 verilog 数字系统设计教程 北京航空航天大学出版社 2003.7 9 高福祥 接口技术 东北大学出版社,1999.12eda 技术课程设计报告19附录 a 设计源代码游戏主模块:timescale 1ms/1msmodule game(clk,rst,play1,play2,light,sum1,sum2);i

40、nput clk,rst;input play1,play2;/output15:0 light;output3:0 sum1,sum2;/wire clk,rst;wire play1,play2;/reg15:0 light;reg3:0 sum1,sum2;/reg5:0 cnt1,cnt2;always(posedge clk or negedge rst)if(!rst) cnt16b10_0111) cnt1=0; else cnt1=cnt1+1b1; end/always(posedge clk or negedge rst)if(!rst) cnt27b100_1111) c

41、nt2=0; else cnt2=cnt2+1b1; end/parameter s_0=4b0000, s_1=4b0001, s_2=4b0010,eda 技术课程设计报告20 s_3=4b0011, s_4=4b0100, s_5=4b0101, s_6=4b0110, s_7=4b0111, s_8=4b1000, s_9=4b1001, s_10=4b1010; reg3:0 curr_st,next_st;/always(posedge clk or negedge rst)if(!rst) begin next_st=s_0; sum1=0; sum2=0; light=16b0

42、000_0000_0000_0000; endelse case(curr_st)s_0:begin light=16b1000_0000_0000_0001; if(play1) next_st=s_1; else if(play2) next_st=s_8; else next_st=s_0; ends_1:begin light=16b0000_0000_0000_0001; next_st=s_2; ends_2:if(cnt1=6b10_0111) light=(light1); else if(light=16b0000_0000_0000_1000) next_st=s_3; e

43、lse next_st=s_2;s_3: if(cnt2=7b100_1111) light=(light1); else if(light=16b0000_1000_0000_000) next_st=s_4; else next_st=s_3;s_4:if(cnt1=6b10_0111)eda 技术课程设计报告21 light=(light1); else if(light=16b1000_0000_0000_0000) begin next_st=s_4; if(light16b1000_0000_0000_000&play2) next_st=s_5; else if(light=16

44、b1000_0000_0000_0000) next_st=s_9; end s_5:if(cnt1=6b10_0111) light1); else if(light=16b0001_0000_0000_0000) next_st=s_6; else next_st=s_5;s_6:if(cnt2=7b100_1111) light1); else if(light=16b0000_0000_0001_0000) next_st=s_7; else next_st=s_6;s_7:if(cnt1=6b10_0111) light1); else if(light=16b0000_0000_0

45、000_0001) begin next_st16b0000_0000_0000_0001&play1) next_st=s_2; else if(light=16b0000_0000_0000_0001) next_st=s_10; end s_8:begin light=16b1000_0000_0000_0000; next_st=s_5; ends_9:begin sum1=sum1+1b1; next_st=s_0; ends_10:begin sum2=sum2+1b1; next_st=s_0; endendcase/eda 技术课程设计报告22always(posedge cl

46、k or negedge rst)if(!rst) curr_st=s_0;else curr_st=next_st;endmodule计分显示模块:timescale 1ms/1msmodule jifenqi(clk,rst,sum1,sum2,led,sel);input clk;input rst;input3:0 sum1,sum2;output6:0 led;output2:0 sel;/wire clk;wire rst;wire3:0 sum1,sum2;reg6:0 led;/reg6:0 led_p11,led_p12,led_p21,led_p22;reg6:0 led_

47、j1,led_j2;reg2:0 jushu_p1,jushu_p2;/reg2:0 sel;reg2:0 cnt;/always(posedge clk or negedge rst) if(!rst) cnt=0; else cnt=cnt+1b1;/always(cnt)case(cnt) 3b000:sel=3b000; 3b001:sel=3b001; 3b010:sel=3b010; 3b011:sel=3b011; 3b100:sel=3b100;eda 技术课程设计报告23 3b101:sel=3b101; 3b110:sel=3b110; 3b111:sel=3b111;en

48、dcase/always(sum1)case(sum1) 4b0000:begin led_p11=7b100_0000;led_p12=7b100_0000; end 4b0001:begin led_p11=7b111_1001;led_p12=7b100_0000; end 4b0010:begin led_p11=7b010_0100;led_p12=7b100_0000; end 4b0011:begin led_p11=7b011_0000;led_p12=7b100_0000; end 4b0100:begin led_p11=7b001_1001;led_p12=7b100_0

49、000; end 4b0101:begin led_p11=7b001_0010;led_p12=7b100_0000; end 4b0110:begin led_p11=7b000_0010;led_p12=7b100_0000; end 4b0111:begin led_p11=7b111_1000;led_p12=7b100_0000; end 4b1000:begin led_p11=7b000_0000;led_p12=7b100_0000; end 4b1001:begin led_p11=7b001_0000;led_p12=7b100_0000; end 4b1010:begi

50、n led_p11=7b100_0000;led_p12=7b111_1001; end 4b1011:begin led_p11=7b111_1001;led_p12=7b111_1001; endeda 技术课程设计报告24 4b1100:begin led_p11=7b010_0100;led_p12=7b111_1001; end 4b1101:begin led_p11=7b011_0000;led_p12=7b111_1001; end 4b1110:begin led_p11=7b001_1001;led_p12=7b111_1001; end 4b1111:begin led_

51、p11=7b001_0010;led_p12=7b111_1001; endendcase/always(sum2)case(sum2) 4b0000:begin led_p21=7b100_0000;led_p22=7b100_0000; end 4b0001:begin led_p21=7b111_1001;led_p22=7b100_0000; end 4b0010:begin led_p21=7b010_0100;led_p22=7b100_0000; end 4b0011:begin led_p21=7b011_0000;led_p22=7b100_0000; end 4b0100:

52、begin led_p21=7b001_1001;led_p22=7b100_0000; end 4b0101:begin led_p21=7b001_0010;led_p22=7b100_0000; end 4b0110:begin led_p21=7b000_0010;led_p22=7b100_0000; end 4b0111:begin led_p21=7b111_1000;led_p22=7b100_0000; end 4b1000:begin led_p21=7b000_0000;led_p22=7b100_0000; endeda 技术课程设计报告25 4b1001:begin

53、led_p21=7b001_0000;led_p22=7b100_0000; end 4b1010:begin led_p21=7b100_0000;led_p22=7b111_1001; end 4b1011:begin led_p21=7b111_1001;led_p22=7b111_1001; end 4b1100:begin led_p21=7b010_0100;led_p22=7b111_1001; end 4b1101:begin led_p21=7b011_0000;led_p22=7b111_1001; end 4b1110:begin led_p21=7b001_1001;l

54、ed_p22=7b111_1001; end 4b1111:begin led_p21=7b001_0010;led_p22=7b111_1001; endendcase/always(posedge clk or negedge rst)if(!rst) begin jushu_p1=0; jushu_p2=0; endelse if(sum1=4b1011&sum24b1001) jushu_p1=jushu_p1+1b1;else if(sum2=4b1011&sum14b1001) jushu_p24b1001&sum21001&(sum1-sum2)1) jushu_p14b1001

55、&sum21001&(sum2-sum1)1) jushu_p2=jushu_p2+1b1;/always(posedge clk)case(jushu_p1)3b000:led_j1=7b100_0000;3b001:led_j1=7b111_1001;3b010:led_j1=7b010_0100;eda 技术课程设计报告263b011:led_j1=7b011_0000;3b100:led_j1=7b001_1001;endcase/always(posedge clk)case(jushu_p2)3b000:led_j2=7b100_0000;3b001:led_j2=7b111_10

56、01;3b010:led_j2=7b010_0100;3b011:led_j2=7b011_0000;3b100:led_j2=7b001_1001;endcase/always(posedge clk)case(sel) 3b000:led=led_j1; 3b001:led=led_j2; 3b010:led=0; 3b011:led=led_p11; 3b100:led=led_p12; 3b101:led=0; 3b110:led=led_p21; 3b111:led=led_p22; endcaseendmoduleeda 技术课程设计报告27附录 b 仿真代码仿真代码游戏主模块例化

57、+激励timescale 1ms/1msmodule game_tb();wire15:0 light;wire3:0 sum1,sum2;/include./stim/game_stim.vgame game( .clk(clk), .rst(rst), .play1(play1), .play2(play2), .light(light), .sum1(sum1), .sum2(sum2);endmodulereg clk,rst,play1,play2;/initial begin clk=0; forever #5 clk=clk; end/initial begin rst=0; #

58、40 rst=1; end/initial begin play1=0; #10 play1=1;#10 play1=0;forever begin #1710 play1=1; #15 play1=0; endend/initial beginplay2=0;#810 play2=1;#10 play2=0;/forever begin #1710 play2=1; #15 play2=0; endeda 技术课程设计报告28end/initial begin#10000000 $stop; end计分显示模块例化+激励timescale 1ms/1msmodule jifenqi_tb()

59、;wire6:0 led;wire2:0 sel;include./stim/jifenqi_stim.vjifenqi jifenqi( .clk(clk), .rst(rst), .sum1(sum1), .sum2(sum2), .led(led), .sel(sel);endmodule reg clk,rst;reg3:0 sum1,sum2;/initial begin clk=0; forever #50 clk=clk; end/initial beginrst=0; #40 rst=1;endinitial beginsum1=4b0000;#110 sum1=4b0001;

60、 #100 sum1=4b0010;#100 sum1=4b0011;#100 sum1=4b0100;#100 sum1=4b0101;#100 sum1=4b0110;#100 sum1=4b0111;#100 sum1=4b1000;#100 sum1=4b1001;#100 sum1=4b1010;eda 技术课程设计报告29#100 sum1=4b1011;#100 sum1=4b1100;#100 sum1=4b1101;#100 sum1=4b1110;#100 sum1=4b1111;#100 sum1=4b1011;#100 sum1=4b1000;#100 sum1=4b1

温馨提示

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

评论

0/150

提交评论