资料介绍
描述
这是一个由 5 部分组成的博客,以下是链接:
第 2 部分:在 Spartan 6 FPGA 上使用 Xilinx ISE 的组合逻辑
第 3 部分:在 Cyclone-IV FPGA 上使用 Quartus Prime 的顺序逻辑
第 4 部分:在 Artix-7 FPGA 上使用 Vivado 的组合逻辑与顺序逻辑
第 5 部分:最终项目 - DE0 Nano 开发板上的 Pong 游戏
主意:
该项目旨在通过应用本博客前面部分中学到的所有概念来构建一个简单的 Pong 游戏(单人游戏)。
乒乓球游戏的输入(用户控制)将通过旋转编码器,输出可以在 VGA 监视器中看到。
概念:
1. 旋转编码器:-
这是旋转编码器的内部接线。黄色表示 VCC,灰色表示 GND。当编码器旋转时,两个输出在 1 和 0 之间切换。
![pYYBAGNod46AY9MnAAA7rQMiH0E234.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod46AY9MnAAA7rQMiH0E234.png)
根据脉冲的位置,我们可以确定方向,我们可以将脉冲数作为该方向的计数。
![poYBAGNod5GAfS7OAABaRHrG8L0883.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod5GAfS7OAABaRHrG8L0883.png)
让蓝色波形为输出 1,绿色为输出 2。
那么我们如何确定方向呢?如果您非常仔细地观察波形,您会注意到在输出 1 的每个上升沿,如果输出 2 为低电平,那么它是顺时针方向的。
在输出 1 的上升沿,如果输出 2 为 HIGH,那么我们可以说它是逆时针的,但这种方法在现实生活中解码信号并不可靠。
我们如何解码信号?
答案 - 正交解码器。
正交解码器的设计:
![pYYBAGNod5OAGhRTAAAnFVrhFu4359.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod5OAGhRTAAAnFVrhFu4359.png)
测试设计:
我们将使用 Terasic System Builder 为 Quartus Prime 构建项目。
![poYBAGNod5aAKXq3AAEYzGESpec623.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod5aAKXq3AAEYzGESpec623.png)
我们将使用 8 个板载 LED 作为计数器的输出,使用 1 个 RGB LED 作为旋转编码器的方向并检查旋转编码器的开关。
您可以通过查看本博客系列的第 3 部分来熟悉 Quartus Prime 软件。
验证码:
![pYYBAGNod5uAfdCpAADE4PiFqSg962.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod5uAfdCpAADE4PiFqSg962.png)
QSF 文件和 SDC 文件:
![poYBAGNod56AYh-4AAEbuM4NwwU084.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod56AYh-4AAEbuM4NwwU084.png)
。
好吧,这个术语对您来说应该非常熟悉,因为我们可能至少使用过一次 VGA 监视器,或者甚至现在可能正在使用它。
1987 年首次与 IBM PS/2 系列计算机一起推出,之后它被广泛用于几乎所有带 DVI 的 PC,直到 2003 年 HDMI 出现,之后由于更高的分辨率和更好的帧速率,它被广泛采用,到了当年2015 年有超过 40 亿台设备使用 HDMI。
让我们看一下VGA Pinout:
![pYYBAGNod6CAZWZGAAA0QtdN9RY758.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod6CAZWZGAAA0QtdN9RY758.png)
VGA有5种主要信号,分别是红、绿、蓝、水平同步和垂直同步。
来自多伦多大学的有用信息:
“VGA监视器可以被认为是一个像素网格,其中每个像素是一个可以设置为特定颜色的图片元素。有480行,每行由640个像素组成。(在本项目中使用)VGA接口串行工作,也就是说,每个像素的颜色信息一个接一个地发送,而不是一次发送。
颜色可以使用由每种基本颜色(红、绿、蓝)的强度组成的三元组来表示。监视器期望这些值是模拟的,因此使用了 DAC(数模转换器)。
需要认识到的一个重要事实是 VGA 显示器没有内存,因此不会存储写入其中的像素信息。相反,必须将像素连续发送到显示器以实现稳定的图像。VGA 适配器确实有内存,将负责不断地发送像素信息。”
让我们看一下时序图以了解有关该协议的更多信息:
![poYBAGNod6OAE4MbAABX9o0nayw506.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod6OAE4MbAABX9o0nayw506.png)
![pYYBAGNod6iAGNjxAABcccI5mcc776.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod6iAGNjxAABcccI5mcc776.png)
测试VGA协议:
![poYBAGNod6qAHWgwAAERwXfzja0390.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod6qAHWgwAAERwXfzja0390.png)
我将使用 Verilog 模块为 VGA 生成水平同步和垂直同步
![pYYBAGNod66ATEUZAADyi_PXnA4226.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod66ATEUZAADyi_PXnA4226.png)
现在,一旦我们有了这个模块,我们就可以在显示器上绘制任何形状。
![poYBAGNod7CAWtHOAAD3BfTxqVk968.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod7CAWtHOAAD3BfTxqVk968.png)
所需时钟为 25MHz,因此首先将板载 50MHz 除以 2 得到 25MHz。
hvsync_generator 模块将在 VGA(顶部)模块中实例化。数字 160、240 表示监视器中的水平位置,480 是监视器中可能的最大垂直距离。
R-1、G-1、B-1对应白色,R-1、G-0、B-0对应红色,R-1、G-1、B-0对应黄色,以此类推上。
约束文件和SDC文件:
![pYYBAGNod7OAR_8kAAGFpypTP9E044.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod7OAR_8kAAGFpypTP9E044.png)
![poYBAGNod7eATFi1AACUDyTwE0o281.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod7eATFi1AACUDyTwE0o281.png)
测试 VGA 输出:
现在我们已经学习并测试了旋转编码器和 VGA 模块,让我们开始构建乒乓球游戏。
3. 乒乓游戏的制作:
![poYBAGNod7qART9oAAEni2Y--H8675.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod7qART9oAAEni2Y--H8675.png)
1.首先创建一个文件,用于生成水平同步和垂直同步信号并固定显示区域
![pYYBAGNod7yAHYyXAADdGr2mPZ0696.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod7yAHYyXAADdGr2mPZ0696.png)
2.接下来添加乒乓球游戏的代码,如以下步骤所述
声明输入和输出,然后声明分频器,如博客系列的第 3部分所述
![pYYBAGNod76ACFUgAAB8R_DqTUo370.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod76ACFUgAAB8R_DqTUo370.png)
3. 接下来实例化水平同步和垂直同步信号的模块,并编写旋转编码器的代码,如本博客前面所述。
然后我们根据计数器值移动弹跳器,计数器值可以通过旋转编码器递增或递减
![poYBAGNod8GACIDHAADHBoTCQlc512.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod8GACIDHAADHBoTCQlc512.png)
4. 在这一步中,让我们编写将在乒乓球比赛中使用的球的代码:
![pYYBAGNod8WAB3NHAABNT5R9wmc348.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod8WAB3NHAABNT5R9wmc348.png)
5.根据滑动开关,选择弹跳器是手动还是自动移动,根据球的位置,反转球与任何物体碰撞的方向。
观察碰撞和旋转编码器旋转的方向,设置输出到板载 LED
![poYBAGNod8eAdJ44AAEk7SinW40799.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod8eAdJ44AAEk7SinW40799.png)
6.接下来编写代码,每次碰撞时更新球的位置并重置碰撞检测器
![pYYBAGNod8mAPDMJAACnmhBuDG4884.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod8mAPDMJAACnmhBuDG4884.png)
7. 最后根据开关位置改变颜色,并将 RGB 信号分配给各自的输出,并仅在显示器的总区域内显示。
![poYBAGNod8uAEXKZAABsN1D7iWA934.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod8uAEXKZAABsN1D7iWA934.png)
8.现在写约束文件和SDC文件
约束文件:
![pYYBAGNod9GAbKLnAAER96H-PRs989.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod9GAbKLnAAER96H-PRs989.png)
![poYBAGNod9OAftFsAABbcs3wQXI783.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod9OAftFsAABbcs3wQXI783.png)
SDC 文件:
![pYYBAGNod9aAQmtJAACedtI0_qA878.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod9aAQmtJAACedtI0_qA878.png)
综合逻辑图:
![pYYBAGNod9mAdwihAADwP5Rg3Ek601.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod9mAdwihAADwP5Rg3Ek601.png)
分析起来太复杂了,但它确实有效!
连接:
查看下面给出的约束和图像,以了解有关如何连接模块的更多信息。
![pYYBAGNod9uAWiacAAEMOADxsE8482.png](https://file.elecfans.com/web2/M00/78/97/pYYBAGNod9uAWiacAAEMOADxsE8482.png)
![poYBAGNod9-ALTCYAABO0I2kp4A900.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod9-ALTCYAABO0I2kp4A900.png)
![poYBAGNod-KAAgTEAACtJMJVvbU321.png](https://file.elecfans.com/web2/M00/78/05/poYBAGNod-KAAgTEAACtJMJVvbU321.png)
VGA:
在 Pmod VGA 中,您会注意到它支持 12 位,但在这个项目中,我们只使用 3 位,红色一位,绿色一位,蓝色一位。
将 DE0 Nano 的 Red 引脚连接到 DAC 中权重最高的 Pmod 的 R3 其余位将在 Pmod 内部接地。
以同样的方式将绿色连接到 G3,将蓝色连接到 B3。在 Pmod 中水平同步到 HS 和垂直同步到 VS。将 Pmod 的 VCC 和 GND 连接到 DE0 Nano 中的相应引脚。
旋转编码器:
按照约束文件中的规定,将旋转编码器的数据引脚连接到 ROT_A 和旋转编码器的 Clk 引脚到 ROT_B 输入。
将旋转编码器的 VCC 和 GND 连接到 DE0 Nano 中的相应引脚。
你完成了!
对 FPGA 进行编程并提供连接(请参阅引脚分配手册),您将看到球和滑块。确保启用所需的开关以查看操作。
乒乓球游戏的最终输出
参考:
1. https://how2electronics.com/construction-working-rotary-encoder/
2. https://reference.digilentinc.com/reference/pmod/pmodvga/reference-manual
3. https://reference.digilentinc.com/learn/programmable-logic/tutorials/vga-display-congroller/start
5. https://numato.com/kb/simple-vga-design-example-for-telesto/
- 基于FPGA乒乓球比赛游戏机的设计 1次下载
- Arduino液晶显示乒乓球游戏 0次下载
- 迷你乒乓球含Arduino Nano WS2812B LED灯条 0次下载
- 乒乓球游戏机Proteus仿真 2次下载
- DE 10 Nano Power Tree 3次下载
- DE 10 Nano Power Tree 7次下载
- FPGA基础应用乒乓球游戏实例 5次下载
- 使用FPGA实现乒乓球游戏的论文说明 17次下载
- DE1O Nano SoC开发板的用户手册免费下载 27次下载
- 乒乓球游戏机VHDL程序 12次下载
- 基于FPGA的乒乓游戏机设计 56次下载
- 基于EasyFPGA030的模拟乒乓比赛设计 27次下载
- 基于FPGA的乒乓游戏机设计 86次下载
- FPGA重要设计思想及工程应用之乒乓操作 44次下载
- 模拟乒乓球比赛设计 112次下载
- IIC总线的FPGA实现说明 270次阅读
- 基于FPGA的2048小游戏实现案例 744次阅读
- 经典设计思想:乒乓操作 687次阅读
- 管道管径 DE与DN区别 7137次阅读
- 如何使用Arduino Nano控制红绿灯 4283次阅读
- FPGA重构优势有哪些 1925次阅读
- 基于Altera DE0开发板的超声波测距模块设计 3228次阅读
- dfrobot Arduino Nano控制板介绍 5025次阅读
- dfrobotBluno Nano主控板简介 2165次阅读
- dfrobotDFRduino Nano 3.0控制器介绍 2162次阅读
- EDA实验之在FPGA上设计一个DDS模块 1927次阅读
- 如何用乒乓球做一个简易的数字时钟显示屏? 4233次阅读
- Virtex5 FPGA在ISE + Planahead上部分可重构功能的流程和技术要点 3421次阅读
- 如何将MCU应用到FPGA中:关于FPGA(1) 3592次阅读
- [图文] iPhone 5 Nano SIM剪卡教程 1675次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论