FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它并不能直接下载网页游戏到手机上。FPGA通常用于硬件设计和原型开发,用于实现定制化的电子逻辑功能。
如果你想在手机上玩网页游戏,你可以在手机的浏览器中直接访问网页游戏的网站,无需任何特殊的硬件支持。如果你对FPGA有其他方面的疑问,比如如何用FPGA开发与手机交互的硬件设备,比如用于游戏控制的设备,那可能需要进行硬件和软件的结合,这通常涉及到嵌入式系统开发的知识。
如果你对如何在手机上下载和运行游戏有疑问,建议你直接在应用商店搜索和下载游戏,或者询问手机相关的技术问题。
开源FPGA硬件模拟游戏机,原汁原味的复古游戏体验带你回童年
所以FPGA硬件模拟游戏机这样的产品,在Retro Gamer圈子里面,一直都是奉为神器,目前实际的商用产品,比较知名的就是Analogue了,他们的Mega SG和Super Nt便是基于FPGA芯片,来硬件模拟回世嘉MD,以及任天堂的SFC两大经典电视主机,实际运行效果获得一众Retro Gamer、老游戏玩家的好评,誉为最佳的模拟游戏主机,但它们售价不菲(190美元),而且也不容易买到(Super Nt已经买不到了)。
而且FPGA的硬件模拟,还可以解决用原机或者开源硬件来玩经典游戏的两大问题。第一个是显示输出,因为经典游戏机年代久远,原机用的都是RF、AV、分量那种旧式的模拟信号显示输出,原机需要通过采集卡或者魔改芯片,才能连接到现代采用HDMI数字显示的电视机或者显示器上,这带来一点显示延迟,也不够“原味”,第二就是输入延迟,在软件模拟器,经典游戏机的控制器输入其实都是通过代码转换模拟输入,所以在Raspberry Pi这样的SBC开源硬件上,玩经典游戏会有一定的输入延迟,虽然数字上只是毫秒级,但一些技术高超的硬核,或者童年肌肉记忆深刻的玩家,始终觉得那些控制操作与原机的手感有明显差别。
FPGA下载网页游戏手机
特别是原机的声音部分,由于各种经典游戏机用了各种特制的音频芯片,现代硬件想要还原原声,需要非常复杂的编程来解决,但开发模拟器的程序员大多都是自己兴趣爱好,一般难以有投入时间精力去作极致的优化开发三国题材策略单机游戏大全,能做到没杂音、听个响就很不错了,但这些兼容性、准确性的问题,在FPGA的硬件模拟上就要容易解决很多了,因为FPGA本身可以通过定制编程来复制(replication)原机芯片的运行逻辑,达到与原来相同的效率和效果。
首先这个FPGA,即现场可编程门阵列,个人理解是可灵活定制和修改运行逻辑的集成电路芯片(高人可指教解释更准确的定义),其实PC DIY玩家们,对FPGA最大的印象,应该都是Intel在多年前了收购全球最大的FPGA制造商Altera,用于加大投入到做IoT和AI领域,而FPGA本身也是更多用在生产、机器人的特定行业的设备开发和制造,我们普通消费者平时都不会直接接触到,当然这里不是在讲FPGA是什么和有什么用之类的,而是讲FPGA来硬件模拟复古游戏这件事。
作为一名Retro Gamer(复古经典游戏玩家),我一直都很喜欢重新在摩登设备上,重温古老但非常好玩的经典游戏(现代游戏我也玩,但大多是守望先锋这样的电竞类网游),比如街机、SFC、GBA等经典主机、掌机上的老游戏,但其实相比玩游戏本身,我可能更多是在折腾“玩模拟游戏的硬件”这件事上,最主要便是安装了模拟器的第一方掌机、或者开源掌机,以及SBC这样的产品,但这些硬件设备本质上,其实都是通过软件模拟的方式实现玩经典游戏的,但到最近,我发现了其实还可以用FPGA开发板来做到硬件级模拟复古游戏机。
因此,对于FPGA器件,我们若希望它产品化,可以脱机(PC机)运行,那么就必须在板级设计时考虑它的配置电路。也不用太担心,其实FPGA厂商的器件手册里也会给出推荐的配置芯片和参考电路,大多情况下依葫芦画瓢便可。当然了,板级设计还是马虎不得的,有几个方面是需要注意的:
在这里我们不过多的研究JTAG的原理。对于电路设计来说,JTAG的四个信号TCK/TMS/TDI/TDO(TRST信号一般可以不用)以及电源、地连接到下载线即可。
FPGA器件都支持JTAG进行在线配置,JTAG边界扫描的基本原理如图2.11所示。在FPGA器件内部,边界扫描寄存器由TDI信号作为数据输入,TDO信号作为数据输出,形成一个很大的移位寄存器链。而JTAG通过整个寄存器链,可以配置或者访问FPGA器件的内部逻辑状态或者各个I/O引脚的当前状态。
「博文精选」PWM蜂鸣器驱动之FPGA在线下载配置
如图7.20所示,在弹出的Hardware Setup页面里,选择当前硬件为USB Blaster,然后close。如果当前硬件里面没有USB Blaster选项,首先确认硬件上是否已经把USB Blaster和 PC连接好,然后再尝试多次拔插一下看看,或者重新启动Quartus II软件看看。
入门学习FPGA需要什么条件?要安装哪些软件,如何安装?
先说硬件条件,其实无论是学习哪项电子技术,FPGA也好,单片机或者嵌入式开发也好,都需要一个基本的硬件条件就是需要买一块开发板。因为电子技术是需要动手去实践的,光靠看理论知识没办法完全掌握。开发板有贵也有便宜的,对于初学者来说不需要买太高级的,只需要一款具备基本功能的开发板。等你真正入门了之后,再根据自己需求去购买进阶的开发板。像以下这款就是我当时买的入门级开发板,之前的文章也有介绍过。
问这种问题的,一般是学生,他们没有做过产品,没有遇到过工程上的问题。IP核并非万能,不能满足所有需求。尽量少用闭源IP核,一旦出问题,这种黑匣子很可能让产品难产。
ZYNQ和SOC的应用领域并不广,还有很多人没听过这种东西,导致求职的不利。开发工具编译时间长,浪费较多时间。绝大多数工作,都只是负责一方面,也就是说另一方面,很有可能派不上用场。
加上软核,可能会影响到其它的逻辑的功能。这是在资源并不十分充足的情况下,再加上软核,导致布局布线变得相当困难。软核不开源,出现Bug的时候,不容易调试。工程上很少使用,极有可能派不上用场。
性价比不高,一般的软核性能大概跟Cortex M3或M4差不多,用FPGA那么贵的东西去做一个性能一般的CPU,在工程上是非常不划算的。不如另外加一块M3。
把前面学到的理论运用到FPGA上面,如果这时你有前面第七个阶段的水平,你将轻松地独立完成图像算法设计(图像处理是离不开接口的,上面第五个阶段有讲)。推荐《基于FPGA的嵌入式图像处理系统设计》、《基于FPGA的数字图像处理原理及应用》。
这部分的理论是需要高数、复变、线性代数、信号与系统、数字信号处理等基础,基础不好的话,建议先补补基础再来。看不懂的理论也可以暂时先放下,或许学到后面就自然而然地开窍了。推荐《数字图像处理》。
有C/C++基础的可以学习OpenCV,否则的话,建议学MATLAB。这个阶段下,只要学会简单的调用函数即可,暂时不用深究实现的细节。推荐《数字图像处理matlab版》、《学习OpenCV》。
花一、两周的时间学习PS,对图像处理有个大概的了解,知道各种图片格式、直方图、色相、通道、滤镜、拼接等基本概念,并能使用它。这部分是0基础,目的让大家对图像处理有个感性的认识,而不是一上来就各种各样的公式推导。推荐《Photoshop CS6完全自学教程》。
此外,MATLAB还能用于调试HDL(用MATLAB的计算结果跟用HDL算出来的一步步对照,可以知道哪里出问题)。推荐的教材是《MATLAB宝典》和杜勇的《数字滤波器的MATLAB与FPGA实现》。
现在你发现,原来FPGA会涉及到那么多知识,你可以选一个感兴趣的方向,但是工作中很有可能用到其中几个方向的知识,所以理论还是学得越多越好。如果你要更上一层,数学和英语是不可避免的。
压缩、编码、加密 —— 数论、抽象代数、现代编码技术、信息论与编码、数据压缩导论、应用密码学、音频信息处理技术、数字视频编码技术原理
接口应用 —— 如:UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太网接口)、SATA、光纤、DisplayPort
这个时候,你已经会使用FPGA了,但是还有很多事情做不了(比如,FIR滤波器、PID算法、OFDM等),因为理论没学好。我大概地分几个方向供大家参考,后面跟的是要掌握的理论课。
掌握了TCL/TK之后,可以学习虚拟Jtag(ISE也有类似的工具)制作属于自己的调试工具,此外,有时间的话,最好再学个python。脚本,意味着一劳永逸。
因为Quartus和ISE的编辑器功能太弱,影响了开发效率。所以建议使用Sublime text编辑器中代码片段的功能,以减少重复性劳动。Modelsim也是常用的仿真工具,学会TCL/TK以编写适合自己的DO文件,使得仿真变得自动化,推荐的教材是《TCL/TK入门经典》。
你可能发现你综合出来的电路尽管没错,但有很多警告。这个时候,你得学会同步设计原则、优化电路,是速度优先还是面积优先,时钟树应该怎样设计,怎样同步两个异频时钟等等。
在这里先掌握简单的testbench就可以了。推荐的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。
现在,你可以设计一些数字电路了,像交通灯、电子琴、DDS等等,推荐的教材是夏老《Verilog 数字系统设计教程》(第三版)。在这一阶段,你要做到的是:给你一个指标要求或者时序图,你能用HDL设计电路去实现它。这里你需要一块开发板,可以选Altera的cyclone IV系列,或者Xilinx的Spantan 6。
在这一阶段,推荐的教材是《Verilog传奇》、《Verilog HDL高级数字设计》或者是《用于逻辑综合的VHDL》。不看书也能写出个三段式状态机就可以进入下一阶段了。
HDL是硬件描述语言,突出硬件这一特点,所以要用数电的思维去思考HDL,而不是用C语言或者其它高级语言,如果不能理解这句话的,可以看《什么是硬件以及什么是软件》。
Quartus、ISE、Vivado、Design Compiler 、Synopsys的VCS、iverilog、Lattice的Diamond、Microsemi/Actel的Libero、Synplify pro),然后再模仿着写,最后不看书也能写出来。
第一句话是:还没学数电的先学数电。然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL。因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间去区分这两种语言,而不是在学习如何使用它。当然,你思维能转得过来,也可以选verilog,毕竟在国内verilog用得比较多。
以上几条只是我目前总结菜鸟们在学习FPGA时所最容易跑偏的地方,FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一位高手却是难上加难。要真成为李昌镐那样的神一般的选手,除了靠刻苦专研,恐怕还确实得要一点天赋。
无论是FPGA的哪个方向,都离不开数字逻辑知识的支撑。FPGA说白了是一种实现数字逻辑的方式而已。如果连最基本的数字逻辑的知识都有问题,学习FPGA的愿望只是空中楼阁而已。数字逻辑是任何电子电气类专业的专业基础知识,也是必须要学好的一门课。
而真正要把FPGA用好,那光懂点FPGA知识就远远不够了。因为最终要让FPGA里面的资源如何组合,实现何种功能才能满足系统的需要,那就需要懂得更多更广泛的知识。
这些工程师通常是使用已有的芯片搭配在一起完成一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法满足系统的需求时,就需要用FPGA来快速的定义一个能用的芯片。
FPGA是给谁用的?很多学校是为给学微电子专业或者集成电路设计专业的学生用的,其实这不过是很多学校受资金限制,买不起专业的集成电路设计工具而用FPGA工具替代而已。其实FPGA是给设计电子系统的工程师使用的。
HDL也可以描述更高的抽象层级如算法级或者是体系结构级,但目前受限于EDA软件的发展,EDA软件还无法理解这么高的抽象层次,所以HDL描述这样抽象层级是无法被转化为较低的抽象层级的,这也就是所谓的不可综合。
在FPGA设计中,就是在将这以抽象层级的意见描述成HDL语言,就可以通过FPGA开发软件转化为上一点中所述的FPGA内部逻辑功能实现形式。
使用HDL的好处在于我们已经设计好了一个寄存器传输级的电路,那么用HDL描述以后转化为文本的形式苹果手机游戏网页化怎么弄,剩下的向更低层次的转换就可以让EDA工具去做了,这就大大的降低了工作量。这就是可综合的概念,也就是说在对这一抽象层次上硬件单元进行描述可以被EDA工具理解并转化为底层的门级电路或其他结构的电路。
硬件设计也是有不同的抽象层次,每一个层次都需要设计。最高的抽象层次为算法级、然后依次是体系结构级、寄存器传输级、门级、物理版图级。
描述这个词精确地反映了HDL语言的本质,HDL语言不过是已知硬件电路的文本表现形式而已,只是将以后的电路用文本的形式描述出来而已。而在编写语言之前,硬件电路应该已经被设计出来了。语言只不过是将这种设计转化为文字表达形式而已。
HDL语言的英语全称是:Hardware Deion Language,注意这个单词Deion,而不是Design。老外为什么要用Deion这个词而不是Design呢?因为HDL确实不是用用来设计硬件的,而仅仅是用来描述硬件的。
不了解FPGA内部结构,就不能明白最终代码如何变到FPGA里面去的,也就无法深入的了解如何能够充分运用FPGA。现在的FPGA,不单单是有前面讲的那三块,还有很多专用的硬件功能单元,如何利用好这些单元实现复杂的逻辑电路设计,是从菜鸟迈向高手的路上必须要克服的障碍。而这一切,还是必须先从了解FPGA内部逻辑及其工作原理做起。
总归一句话,FPGA之所以可编程是因为可以通过特殊的01代码制作成一张张 “真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功能。
任何芯片都必然有输入引脚和输出引脚。有可编程的IO可以任意的定义某个非专用引脚(FPGA中有专门的非用户可使用的测试、下载用引脚)为输入还是输出,还可以对IO的电平标准进行设置。
专题: 三国塔单机游戏 真三国单机游戏 单机新三国游戏上一篇KEIL下载网页代码游戏
下一篇网页设计apex游戏主题