基于FPGA的乒乓球游戏机控制器设计


辽宁科技学院本科生毕业设计(论文)

第I页

基于 FPGA 的乒乓球游戏机设计

摘 要

Verilog 是甚高速集成电路硬件描述语言。目前,verilog 已成为许多设计 自动化工具普遍采用的标准化硬件描述语言。 verilog 语言功能性强, 覆盖面广, 灵活性高,具有很好的实用性。本文设计一个基于 verilog 的乒乓游戏机,乒乓 游戏机由状态机、记分器、译码显示器与按键去抖等部分所组成。通过对各部分 编写 verilog 程序,然后进行编译、仿真、逻辑综合、逻辑适配,最后进行编程 下载,并且通过 EDA 实验箱的验证,实现乒乓游戏机的基本功能。

关键词:verilog;EDA;乒乓游戏机

辽宁科技学院本科生毕业设计(论文)

第 II 页

Abstract

VERILOG is high speed IC hardware describe language. VERILOG already becomes the language of normalizing hardware describe that a lot of design automation implement adopts commonly at present. The VERILOG language function is strong. The face covering is broad, flexibility high and have the very good pragmatism. One main body of the book is designed waits for what part group is accomplished owing to that VERILOG table tennis game machine, table tennis game machine go to tremble from state machine, marker, decoding display and button. By compiling and composing VERILOG procedure to every part, then compiling, simulate, logic synthesis, logic fitting. Carry out programming time be loaded with finally. Then verification and by GW48 type EDA experiment box, realize table tennis game machine’s fundamental function.

Key words: VERILOG:EDA; Table tennis game machine

辽宁科技学院本科生毕业设计(论文)

第 III 页

目 录
1 绪论.............................................................. 1 1.1 课题的背景和意义 ........................................... 1 1.2 国内外研究现状 ............................................. 1 1.3 本论文的主要内容 ........................................... 2 2 Quartus II 与 Modelsim 软件简介.................................... 3 2.1Quartus II 简介 ............................................. 3 2.2Modelsim 简介 ............................................... 4 3 方案选择与系统总体设计............................................ 6 3.1 整体方案的选择 ............................................. 6 3.1.1 设计任务与要求 ....................................... 6 3.1.2 设计的原理和方法 ..................................... 7 3.1.3 芯片的选择 ........................................... 8 3.2 系统总体设计 ............................................... 8 3.2.1 乒乓游戏机的组成示意图 ............................... 8 3.2.2 本系统的逻辑分框图 ................................... 9 4 系统各部分电路的详细设计......................................... 10 4.1 七段数码管显示译码电路 .................................... 10 4.2 按键去抖电路 .............................................. 11 4.3 状态机设计 ................................................ 11 4.3.1 状态机的 6 种状态及状态转移 .......................... 11 4.3.2 状态机/球台控制电路 ................................. 13

辽宁科技学院本科生毕业设计(论文)

第 IV 页

4.4 记分器设计 ................................................ 15 5 系统的整体综合与仿真............................................. 16 5.1 顶层文件设计 .............................................. 16 5.2 系统程序框图: ............................................ 17 5.3 整个系统的综合与仿真 ...................................... 18 5.3.1 电路符号 ........................................... 18 5.3.2 系统仿真 ........................................... 18 6 系统的运行与仿真过程............................................. 20 6.1 系统程序的编译 ............................................ 20 6.2 系统的仿真 ................................................ 22 结论............................................................... 24 谢 辞.............................................................. 25 参考文献........................................................... 26 附录............................................................... 27

辽宁科技学院本科生毕业设计(论文)

第1页

1 绪论
1.1 课题的背景和意义 随着人们的物质生活越来越好了,人们开始对娱乐生活有了新的要求,特别 是进入新世纪以来各种电子产品的不断出现,更是促进了我国电子行业的发展, 为此,能够推出一款新的游戏产品是非常有前景的,本设计正是考虑了当前的社 会现状,想设计出一款“乒乓球”游戏机,以往可能有过这方面的设计出现过, 但是那些大多数都是采用的单片机等来实现的,本设计将采用最新的 FPGA 技术 对“乒乓球”游戏机进行实现。 日常娱乐生活中,智能化的娱乐产品非常流行。FPGA 具有功能强、可靠性 高、使用方便、体积小及重量轻等优点。国外已广泛应用于自动化控制的各个领 域。近年来,国内的 FPGA 技术与产品开发应用方面的发展也很快,各种电子产 品已越来越多地采用 FPGA 控制系统且性价比高。本文从实用的角度以 Altera 公司的 EP2C35F484I8 芯片为核心设计了一种智能“乒乓球”游戏机。实践证明, 该游戏机运行状况稳定、可靠,满足了智能化要求。

1.2 国内外研究现状

随着社会的进步和工业技术的发展,在电子线路设计领域中,设计自动化工 具已经逐步为设计者所接受,成为主要的设计手段。目前,VERILOG 已成为许多 设计自动化工具普遍采用的标准化硬件描述语言, 掌握 VERILOG 语言, VERILOG 用 语言设计电子线路,是电子线路设计者必须掌握的基本技能。VERILOG 支持数字 电路的开发环境,VERILOG 也支持各种设计方法:自顶向下、自底向上或混合的 方法[1]。VERILOG 语言功能性强,覆盖面大,灵活性高,具有很好的实用性[2]。 本文设计一个基于 VERILOG 的乒乓游戏机, 乒乓游戏机是由 5 个发光二极管代表 乒乓球台,中间的发光二极管兼作球网,用点亮的发光二极管按一定方向移动来 表示球的运动。在游戏机的两侧各设置两个开关,甲乙二人按乒乓球比赛规则来 操作开关。本设计由译码显示器、记分器、状态机/球台控制器与按键去抖等部

辽宁科技学院本科生毕业设计(论文)

第2页

分组成。本设计是用实验箱进行模拟乒乓机,用发光二极管代表乒乓球台,最中 间的发光二极管作球网,用点亮的发光二极管按一定方向移动来表示球的运动, 用按钮设置发球和接球开关。 1.3 本论文的主要内容 本论文的主要内容是设计一个基于 FPGA 的“乒乓球”游戏机,在广泛收集 相关资料的基础上,对“乒乓球”游戏机进行了深入的研究,利用现场可编程门 阵列 FPGA 完成本次设计。整个系统以 ALtera 公司的 EP2C35 芯片为核心,采用 verilog HDL 语言进行开发,配置了相应的输入、信号处理及显示电路,并进行 仿真及验证。 本论文各章的内容如下: 第一章介绍了“乒乓球”游戏机设计的背景及意义,并简单的的阐述了目前 国内外在这方面的发展现状。 第二章介绍了 Quartus II 软件以及 Modelsim 软件的使用和特点。 第三章介绍了对于系统的整体设计以及相关的设计任务和设计要求, 并简单 的分析了整个系统的设计流程和方法。 第四章主要是介绍在整个“乒乓球”游戏机系统中各个模块的工作原理及过 程。 第五章主要是对系统进行原理图的设计和对整个系统的仿真。 第六章主要是对整个的设计过程和仿真的的过程做一个简单的描述。

辽宁科技学院本科生毕业设计(论文)

第3页

软件简介 2 Quartus II 与 Modelsim 软件简介
2.1Quartus II 简介 Quartus II 是 Altera 公司的综合性 PLD 开发软件,支持原理图、VHDL、 VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种设计 输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完 整 PLD 设计流程。 Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完 成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统 一,功能集中,易学易用等特点。 Quartus II 支持 Altera 的 IP 核, 包含了 LPM/MegaFunction 宏功能模块库, 使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第 三方 EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三 方 EDA 工具。 此外,Quartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合, 可以方便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开 发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的 开发平台。 Maxplus II 作为 Altera 的上一代 PLD 设计软件,由于其出色的易用性而得 到了广泛的应用。目前 Altera 已经停止了对 Maxplus II 的更新支持,Quartus II 与之相 比不仅 仅 是支持器 件类型 的丰 富和图形 界面的 改变 。Altera 在 Quartus II 中包含了许多诸如 SignalTap II、Chip Editor 和 RTL Viewer 的设 计辅助工具,集成了 SOPC 和 HardCopy 设计流程,并且继承了 Maxplus II 友好 的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能 力和直观易用的接口,越来越受到数字系统设计者的欢迎。

辽宁科技学院本科生毕业设计(论文)

第4页

2.2Modelsim 简介

Mentor 公司的 ModelSim 是业界最优秀的 HDL 语言仿真软件,它能提供友好 的仿真环境,是业界唯一的单内核支持 VHDL 和 Verilog 混合仿真的仿真器。它 采用直接优化的编译技术、Tcl/Tk 技术、和单一内核仿真技术,编译仿真速度 快,编译的代码与平台无关,便于保护 IP 核,个性化的图形界面和用户接口, 为用户加快调错提供强有力的手段,是 FPGA/ASIC 设计的首选仿真软件。 主要特点: ? RTL 和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真; ? 单内核 VHDL 和 Verilog 混合仿真; ? 源代码模版和助手,项目管理; ? 集成了性能分析、波形比较、代码覆盖、数据流 ChaseX、Signal Spy、 虚拟对象 Virtual Object、Memory 窗口、Assertion 窗口、源码窗口显示信号 值、信号条件断点等众多调试功能; ? C 和 Tcl/Tk 接口,C 调试; ? 对 SystemC 的直接支持,和 HDL 任意混合 ? 支持 SystemVerilog 的设计功能; ? 对系统级描述语言的最全面支持,SystemVerilog, SystemC, PSL; ? ASIC Sign off。 ModelSim 分几种不同的版本:SE、PE、LE 和 OEM,其中 SE 是最高级的版本, 而集成在 Actel、Atmel、Altera、Xilinx 以及 Lattice 等 FPGA 厂商设计工具 中的均是其 OEM 版本。SE 版和 OEM 版在功能和性能方面有较大差别,比如对于 大家都关心的仿真速度问题,以 Xilinx 公司提供的 OEM 版本 ModelSim XE 为例, 对于代码少于 40000 行的设计,ModelSim SE 比 ModelSim XE 要快 10 倍;对于 代码超过 40000 行的设计,ModelSim SE 要比 ModelSim XE 快近 40 倍。ModelSim

辽宁科技学院本科生毕业设计(论文)

第5页

SE 支持 PC、UNIX 和 LINUX 混合平台;提供全面完善以及高性能的验证功能;全 面支持业界广泛的标准; Mentor Graphics 公司提供业界最好的技术支持与服务。

辽宁科技学院本科生毕业设计(论文)

第6页

3 方案选择与系统总体设计
3.1 整体方案的选择

本课题将采用 Altera 公司的 EP2C35F484I8 芯片进行基于 FPGA 的 “乒乓球” 游戏机设计。

3.1.1 设计任务与要求

设计一个乒乓球游戏机,模拟乒乓球比赛基本过程和规则,并能自动裁判和 计分。具体要求如下: 使用乒乓球游戏机的甲,乙双方各在不同的位置发球或击球。乒乓球的位置 和移动方向可由 LED 显示灯和一次点亮的方向决定,球的移动速度设为 0.5s 移 动 1 位。使用者可按乒乓球的位置发出相应的动作,提前击球或出界均判失分。

辽宁科技学院本科生毕业设计(论文)

第7页

3.1.2 设计的原理和方法 乒乓球游戏机是用 5 个发光二极管代表乒乓球台, 中间发光二极管兼作乒乓 球网,用点亮的发光二极管按一定的方向移动来表示球的运动。另外设置发球开 关 Af,Bf 以及接球开关 Aj,Bj。利用 7 段数码管作为记分牌。 甲乙双方按乒乓球比赛规则来操作开关。当甲方按动发球开关 af 时,靠近 甲方的第一个灯亮,然后按顺序向乙方移动;当球过网后,乙方可以接球,接球 后灯反方向移动,双方继续比赛;如果一方提前击球或未击球,则判失分,对方 加分。重新发球后继续比赛。 本设计主要的设计方法是采用文本编辑法,利用 verilog HDL 语言描述乒乓 球游戏机,并进行综合和仿真。

图 3.1 系统设计流程图

辽宁科技学院本科生毕业设计(论文)

第8页

3.1.3 芯片的选择 在这次设计中选用的 FPGA 芯片是 Altera 公司的 Cyclone(飓风)系列的芯 片,型号为:EP2C35。它是基于 1.5V 的,采用 0.13um 全铜 SRAM 工艺、TQFP 封 装, 5980 个逻辑单元, 个锁相环, 个 M4K RAM 块, 有 2 20 其中每个 RAM 为 4kbit, 可以另加一位奇偶校验位。

3.2 系统总体设计

乒乓游戏机的组成示意图 3.2.1 乒乓游戏机的组成示意图

图 3.2 乒乓球游戏机组成示意图

本设计中的乒乓游戏机是由 5 个发光二极管代表乒乓球台, 中间的发光二极 管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的 两侧各设置两个开关,一个是发球开关 af、bf;另一个是击球开关 aj、bj。甲 乙二人按乒乓球比赛规则来操作开关。当甲方按动发球开关 af 时,靠近甲方的

辽宁科技学院本科生毕业设计(论文)

第9页

第一个发光二极管亮,然后发光二极管由甲向乙依次点亮,代表乒乓球的移动。 当球过网后按设计者规定的球位,乙方就可以击球。若乙方提前击球或没有击中 球,则判乙方失分,甲方的记分牌自动加一分。然后重新发球,比赛继续进行。 比赛一直要进行到一方记分牌达到 21 分,该局才结束。本设计由译码显示器、 按键去抖、状态机/球台控制器和记分器等部分所组成。 3.2.2 本系统的逻辑分框图

图 3.2 系统逻辑分框图

辽宁科技学院本科生毕业设计(论文)

第 10 页

4 系统各部分电路的详细设计
4.1 七段数码管显示译码电路

图 4.1 译码显示电路符号

七段数码是纯组合电路,通常的小规模专用 IC,如 74 或 4000 系列的器件 只能作十进制 BCD 码译码,然而数字系统中的数据处理和运算都是 2 进制的,所 以输出表达都是 16 进制的,为了满足 16 进制数的译码显示,最方便的方法就是 利用 VHDL 译码程序在 FPGA 或 CPLD 中实现。七段数码管分为共阴极和共阳极两 种[8]。简而言之,对共阴极来说,公共引脚要接地,想要点亮某段数码管,就 在相应的引脚加上高电平;对共阴极来说刚好相反,公共引脚提高电平,想要点 亮某段数码管,就在相应的引脚加上低电平[9]。七段 BCD 码译码器的设计,输 出信号 LED7S 的 7 位分别接如图 4 所示数码管的七个段, 高位在左, 低位在右[9]。 例如当 LED7S 输出为“1101101” 时,数码管的 7 个段:g、f、e、d、c、b、a 分别接 1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示“5” 。 带使能信号 EN 的译码电路的 verilog 程序中,EN 为高电平时,译码器正常 工作;EN 为低电平时,译码器输出 0000000,表示数码管无显示。用选择信号赋 值语句描述,将综合成组合逻辑电路。

辽宁科技学院本科生毕业设计(论文)

第 11 页

4.2 按键去抖电路

图 4.2 按键电路符号

键盘的按键闭合与释放瞬间,输入的信号会有毛刺。如果不进行消抖处理, 系统会将这些毛刺误以为是用户的另一次输入,导致系统的误操作。防抖电路有 很多种,最简单、最容易理解的就是计数法。其原理是对键值进行计数,当某一 键值保持一段时间不改变时(计数器达到一定值后) ,才确认它为有效值;否则 将其判为无效键值,重新对键值进行计算。

4.3 状态机设计

4.3.1 状态机的 6 种状态及状态转移

本状态机有 6 种状态,分别是 WAITSTATE、ATOB、BTOA、ASCORE、BSCORE 和 FINALRESULT,其含义如下表所示:

辽宁科技学院本科生毕业设计(论文)

第 12 页

状态机的 6 种状态及含义:
表 4.1 状态机 6 种状态表









WAITSTATE

等待状态,等待 A 或 B 方开球

ATOB

球从 A 向 B 方移动

BTOA

球从 B 向 A 方移动

ASCORE

A 得一分

BSCORE

B 得一分

FINALRESULT

比赛结束(最终判分),在此状态下需要按复位键, 才能开始下一轮比赛

结合上表从下图中很清楚地看出乒乓游戏机比赛过程中球的移动情况, 及加 分方法,还可以初步了解到本状态机设计的基本思路:

图 4.3 乒乓游戏机状态转移图

辽宁科技学院本科生毕业设计(论文)

第 13 页

4.3.2 状态机/球台控制电路 状态机/ 状态机是种很重要的时序电路,也是本设计的核心部件。状态机属于时序电 路范畴,实现一个控制功能更为方便,并提高了控制速度。本次设计中状态机的 符号如下图所示:

图 4.4 状态机、球台控制电路符号

在 本 设 计 中 , 状 态 机 用 两 个 信 号 表 示 状 态 : STATE 表 示 当 前 状 态 , TABLESTATE 表示下一个状态。此状态机由两个进程构成,状态机的输入/输出引 脚的作用如下表所示。其中 SCOREAL[3..0]、SCOREAH[3..0]、SCOREBL[3..0]、 SCOREBH[3..0]用七段 BCD 码译码器显示得分情况,而 SCOREA、SCOREB 用二进制 进行加分,由记分器反馈回来。

辽宁科技学院本科生毕业设计(论文)

第 14 页

输入/输出引脚的作用:
表 4.2 输入输出引脚表









CLK

所需时钟可由系统时钟分频得到。 此时时钟决定了球移动的速度, 可根据 实际需要调整。

RESET

复位键, 比赛重新开始, 记分器清 0

af、bf

A 和 B 双方的开始的开球键

aj,bj

A 和 B 双方的击球键(可以将其与开 球键合并)

CLEAR 号)

将记分器清 0(给记分器的控制信

INCREASEA 、INCREASEB

分别为 A、B 双方的加分信号(给记 分器的控制信号)

SCOREAL[3..0]SCOREAH[3..0] SCOREBL[3..0]SCOREBH[3..0] SCOREA、SCOREB A、B 双方的分数(由记分器给出)

LIGHT[4..0]

接 5 个发光二极管

AWIN、BWIN

分别接发光二极管,表示 A 或 B 方 胜出

辽宁科技学院本科生毕业设计(论文)

第 15 页

4.4 记分器设计

图 4.5 计分器电路符号

记分器元件符号如上图所示,本设计中记分器比较简单,只须根据状态机给 出的两个信号(INCREASEA 和 INCREASEB)对六个分数(SCOREAL、SCOREAH 和 SCOREBL、SCOREBH、SCOREA、SCOREB)进行操作。

辽宁科技学院本科生毕业设计(论文)

第 16 页

5 系统的整体综合与仿真
5.1 顶层文件设计 “乒乓球”游戏机系统主要由译码电路,按键去抖电路,状态机/球台控制 电路等构成,下图为系统的顶层文件设计原理图:

图 5.1 顶层文件设计原理图

辽宁科技学院本科生毕业设计(论文)

第 17 页

5.2 系统程序框图: 系统程序框图: 系统的程序框图如下图所示,程序清单见附录:

图 5.2 系统程序框图

辽宁科技学院本科生毕业设计(论文)

第 18 页

5.3 整个系统的综合与仿真 5.3.1 电路符号 乒乓球游戏机的电路符号如下图所示。输入信号:系统时钟 clk1khz(输入 1KHZ 的时钟信号) ;系统复位端 rst;甲方发球 af;乙方发球 bf;甲方击球 aj; 乙方击球 bj;输出信号:5 个 LED 显示模块 shift[4…0];数码管地址选择信号 scan[3…0];7 段显示控制信号 seg7[6..0]。

图 5.3 系统电路符号

5.3.2 系统仿真 由于本系统的状态情况比较的多, 下面就几种典型的情况进行系统的综合和 仿真: 1、甲方发球后乙方提前击球,同时甲方得分:下图为仿真的结果图,观察 波形可知,球的移动方向为从左到右,乙提前击球后 a_core 加 1,即甲方得分。

图 5.4 仿真结果图

辽宁科技学院本科生毕业设计(论文)

第 19 页

2、甲方发球后,乙方在过网后击球:此情况的功能仿真结果如下图所示, 观察波形可知,乙接到球后,球的运动方向变为从右到左。

图 5.5 仿真结果图

3、甲方发球后,乙方没有击球:此情况的功能仿真结果图如下图所示,观 察波形可知,乙没有接球,则甲方加分。

图 5.6 仿真结果图

辽宁科技学院本科生毕业设计(论文)

第 20 页

6 系统的运行与仿真过程
6.1 系统程序的编译 1、运行新建项目向导,新建一个项目,选择之前创建好的文件夹,用来存放该 项目的文件,如图 6.1 所示:

2、 该步骤主要是为以后的仿真做准备, 如图 6.2 所示选择仿真软件为 modelsim, 编程语言为 verilog HDL。

辽宁科技学院本科生毕业设计(论文)

第 21 页

3、创建完项目之后接着再新建一个 verilog HDL file 用来编辑之前设计好的 程序,再编辑区输入设计好的程序之后,点击编译按钮开始编译文件,通过不断 的调试修改直到编译成功为止,如图 6.3 所示:

辽宁科技学院本科生毕业设计(论文)

第 22 页

6.2 系统的仿真 1、点击进入仿真软件 modelsim 之后,点击如图 6.4 所示的按钮,找到之前准备 好的文件,开始编译,观察信息区,直到编译成功为止。

2、在 work 库中找到编译成功的文件 zhouyou,双击准备开始仿真,如图 6.5 所 示:

辽宁科技学院本科生毕业设计(论文)

第 23 页

3、如图 6.6 所示开始给定各个变量的初始值,以及所需的时钟信号 根据自己的需要和仿真的方便性考虑时钟的大小.

4、给定完时钟信号和各个变量的初始值之后,开始点击进入仿真界面,运行开 始仿真,具体的步骤如图 6.7 所示:

辽宁科技学院本科生毕业设计(论文)

第 24 页

结论

本文进行乒乓游戏机软件设计,并用 EDA 实验箱进行验证,目标芯片是 Altera 公司 CycloneII 系列的 EP2C35F484I8,本设计由状态机/球台控制器、记 分器、译码显示器、按键去抖等模块组成。通过实验箱模拟乒乓球游戏机,用发 光二极管代表乒乓球台,最中间的发光二极管作球网,用点亮的发光二极管按一 定方向移动来表示球的运动,用按钮设置发球和接球开关。最终实现乒乓机能模 拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。本设计用了 16 个发光 二极管当乒乓球台。本设计可以再改进一下,把指示胜利 2 个发光二极管用数码 管来代替,这样不仅可以完成之前的功能,而且可以显示比赛的局数。 通过几个月的努力,基本完成了毕业设计任务书所要求的内容,而且在实验 箱上对大部分功能进行了仿真,取得了预期的结果,总之,通过自己的努力以及 同学和老师的帮助,圆满的完成了本次设计任务。

辽宁科技学院本科生毕业设计(论文)

第 25 页

谢 辞
通过两个多月的毕业设计, 我学习了怎样运用 FPGA 设计乒乓球游戏机系统。 非常感谢我的指导老师孙禾,在整个设计过程中一直耐心教导,认真负责, 细心教诲,让我领略到如何实现一个系统的设计,以及如何使用书本知识到实际 应用上去。在很多细节上,孙老师的指导与教诲,让人受益匪浅。 感谢四年来测控技术与仪器专业各位老师的孜孜教诲和学校的细心培养, 让 我能有今天的进步,在今后的工作中发挥自己的价值。 最后要感谢我身后的父亲,母亲,一直以来对我的信任和支持,有朝一日, 希望可以回给他们同样的爱。 感谢辽宁科技学院四年的学习!

辽宁科技学院本科生毕业设计(论文)

第 26 页

参考文献
[1] 边计年.用 VHDL 设计电子线路[M].北京:清华出版社,2000:2. [2] 黄任.VHDL 入门?解惑?经典实例?经验总结[M].北京:北京航天大学出 版社,2005:3-5,115. [3] 尹常永.EDA 技术/电子设计实验讲义[M].西安:西安电子科技大学出版 社,2004:3. [4] 杨刚.现代电子技术—VHDL 与数字系统设计[M].北京:电子工业出版 社, 2004:6. [5] 甘历.VHDL 应用与开发实验[M].北京:科学出版社,2003:4. [6] 侯伯亨.VHDL 硬件描述语言与数字逻辑电路设计[M].西安:西安电子科 技大学出版社,1999:27. [7] 潭会生,张昌凡.EDA 技术及应用[M].西安:西安电子科技大学出版社, 2004:81,233,256. [8] 王振红.VHDL 数字电路设计与应用实践教程[M].北京:机械工业出版 社,2005:35,37. [9] 李宜达.数字逻辑电路设计与实现[M].北京:科学出版社,2004:144.

辽宁科技学院本科生毕业设计(论文)

第 27 页

附录
1、系统程序: module zhouyou (shift,scan,seg7,clk1khz,rst,af,aj,bf,bj); output[4:0] shift; output[3:0] scan; output[6:0] seg7; input clk1khz; input af; input aj; input bf; input bj; input rst; reg[4:0] shift; reg[3:0] scan; reg[6:0] seg7; reg clk1_2hz; reg[3:0] a_score,b_score; reg[1:0] cnt; reg[3:0] data; reg[3:0] a_one,a_ten,b_one,b_ten; reg[7:0] count; reg a,b;

辽宁科技学院本科生毕业设计(论文)

第 28 页

reg[4:0] shift_1;

always@(posedge clk1khz) begin if(count=='b1111_1010) begin clk1_2hz<=~clk1_2hz; count<=0; end else begin count<=count+1;end

if(cnt=='b11) begin cnt<='b00;end else begin cnt<=cnt+1;end end

always@(posedge clk1khz) begin if(rst) begin a_score<=0;b_score<=0;a<=0;b<=0;shift_1<=0;end else begin

辽宁科技学院本科生毕业设计(论文)

第 29 页

if(!a&&!b&&af) begin a<=1;shift_1<='b10000;end else if(!a&&!b&&bf) begin b<=1;shift_1<='b00001;end else if(a&&!b) begin if(shift_1>'b00100) begin if(bj) begin a_score<=a_score+1; a<=0;b<=0; shift_1<='b00000;end else begin shift_1[4:1]<=shift_1[4:1]>>1;end end else if(shift_1=='b0) begin a_score<=a_score+1;a<=0;b<=0;end else begin if(bj) begin a<=0;b<=1;end

辽宁科技学院本科生毕业设计(论文)

第 30 页

else begin shift_1[4:1]<=shift_1[4:1]>>1;end end end else if(b&&!a) begin if(shift_1<'b00100&&shift_1!='b0) begin if(aj) begin b_score<=b_score+1; a<=0;b<=0; shift_1<='b00000; end else begin shift_1[3:0]<=shift_1[3:0]<<1;end end else if(shift_1=='b0) begin b_score<=b_score+1;a<=0;b<=0;end else begin if(aj)

辽宁科技学院本科生毕业设计(论文)

第 31 页

begin a<=1;b<=0;end else begin shift_1[3:0]<=shift_1[3:0]<<1;end end end end shift<=shift_1; if(a_score=='b1011&&!rst) begin a_score<=a_score;b_score<=b_score;end if(b_score=='b1011&&!rst) begin a_score<=a_score;b_score<=b_score;end end always@(posedge clk1khz) begin case(a_score[3:0]) 'b0000:begin a_one<='b0000;a_ten<='b0000;end 'b0001:begin a_one<='b0001;a_ten<='b0000;end 'b0010:begin a_one<='b0010;a_ten<='b0000;end 'b0011:begin a_one<='b0011;a_ten<='b0000;end 'b0100:begin a_one<='b0100;a_ten<='b0000;end 'b0101:begin a_one<='b0101;a_ten<='b0000;end 'b0110:begin a_one<='b0110;a_ten<='b0000;end

辽宁科技学院本科生毕业设计(论文)

第 32 页

'b0111:begin a_one<='b0111;a_ten<='b0000;end 'b1000:begin a_one<='b1000;a_ten<='b0000;end 'b1001:begin a_one<='b1001;a_ten<='b0000;end 'b1010:begin a_one<='b0000;a_ten<='b0001;end 'b0011:begin a_one<='b0001;a_ten<='b0001;end default:begin a_one<='bx;a_ten<='bx;end endcase

case(b_score[3:0]) 'b0000:begin b_one<='b0000;b_ten<='b0000;end 'b0001:begin b_one<='b0001;b_ten<='b0000;end 'b0010:begin b_one<='b0010;b_ten<='b0000;end 'b0011:begin b_one<='b0011;b_ten<='b0000;end 'b0100:begin b_one<='b0100;b_ten<='b0000;end 'b0101:begin b_one<='b0101;b_ten<='b0000;end 'b0110:begin b_one<='b0110;b_ten<='b0000;end 'b0111:begin b_one<='b0111;b_ten<='b0000;end 'b1000:begin b_one<='b1000;b_ten<='b0000;end 'b1001:begin b_one<='b1001;b_ten<='b0000;end 'b1010:begin b_one<='b0000;b_ten<='b0001;end 'b0011:begin b_one<='b0001;b_ten<='b0001;end default:begin b_one<='bx;b_ten<='bx;end

辽宁科技学院本科生毕业设计(论文)

第 33 页

endcase

case(cnt[1:0]) 'b00:begin data<=b_one;scan<='b0001;end 'b01:begin data<=b_ten;scan<='b0010;end 'b10:begin data<=a_one;scan<='b0100;end 'b11:begin data<=a_ten;scan<='b1000;end default:begin data<='bx;scan<='bx;end endcase

case(data[3:0]) 'b0000: seg7[6:0]=7'b1111110; 'b0001: seg7[6:0]=7'b0110000; 'b0010: seg7[6:0]=7'b1101101; 'b0011: seg7[6:0]=7'b1111001; 'b0100: seg7[6:0]=7'b0110011; 'b0101: seg7[6:0]=7'b1011011; 'b0110: seg7[6:0]=7'b1011111; 'b0111: seg7[6:0]=7'b1110000; 'b1000: seg7[6:0]=7'b1111111; 'b1001: seg7[6:0]=7'b1111011;

辽宁科技学院本科生毕业设计(论文)

第 34 页

default: seg7[6:0]='bx; endcase end

endmodule


相关文档

基于FPGA乒乓球比赛游戏机的设计
基于FPGA_乒乓球比赛游戏机_的设计
基于FPGA的乒乓球游戏设计
基于FPGA的乒乓球游戏机控制器设计毕业设计(论文)
基于FPGA乒乓球游戏机Verilog设计
基于FPGA的乒乓球游戏参考设计
基于FPGA的乒乓球游戏机
fpga 乒乓球游戏机
基于FPGA的多模式可视化乒乓游戏设计
电脑版