FPGA之初认识

什么是FPGA

FPGA(Field-Programmable Gate Array),即现场可编程门阵列 。看到编程两个字码农就笑了,不就是编程嘛,那可是我们的强项 。且慢,此编程非彼编程 。一定要把 FPGA 的编程和软件编程区分开来 。软件的编程,处理器会逐条的把语言翻译成各种控制信号,去控制内部电路完成一个个运算或操作 。那么FPGA的编程是怎么实现的呢?无论 Altera 家还是 Xlinix 家的 FPGA,叫法有什么差异,基本单元都相似,都是由真值表和 D 触发器构成 。改变真值表的值就改变了逻辑功能,再通过和D触发器组合来实现任何时序逻辑 。所以我们对 FPGA 的编程,实际上就是去修改这些真值表和连接关系,使他们组成一张专门的真值表,去实现特定的功能 。这和软件编程一步步运行程序有本质的区别 。要想玩转 FPGA,就必须理解 FPGA 内部的工作原理,学习如何利用这些单元实现复杂的逻辑设计 。

谁用FPGA?

FPGA是给设计电子系统的工程师使用的。这些工程师通常是使用已有的芯片搭配在一起完成一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法满足系统的需求时,就需要用FPGA来快速的定义一个能用的芯片。前面说了,FPGA里面无法就是一些“真值表”、触发器、各种连线以及一些硬件资源,电子系统工程师使用FPGA进行设计时无非就是考虑如何将这些资源组合起来实现一定的逻辑功能而已。

FPGA的结构

FPGA内部主要三块:可编程的逻辑单元、可编程的连线和 可编程的IO模块。

可编程的逻辑单元是什么?其基本结构是某种存储器(SRAM、 FLASH等)制成的4输入或6输入1输出地“真值表”加上一个D触发器构成。任何一个4、1组合逻辑电路,都有一张对应的“真值表”,若用存储器制成的4、1“真值表”,只需要修改其“真值表”内部值就可以输出任意4、1组合逻辑。这些“真值表”内部值是什么?就是那些01编码而已。如果要实现时序逻辑电路怎么办?这不又是D触发器嘛,任何的时序逻辑都可以转换为组合逻辑+D触发器来完成。

但这毕竟只实现了4输入1输出的逻辑电路而已,通常逻辑电路的规模那是相当的大哦。那怎么办呢?这个时候就需要用到可编程连线了。在这些连线上有很多用存储器控制的链接点,通过改写对应存储器的值就可以确定哪些线是连上的而哪些线是断开的。这就可以把很多可编程逻辑单元组合起来形成大型的逻辑电路。

最后就是可编程的IO,这其实是FPGA作为芯片级使用必须要注意的。任何芯片都必然有输入引脚和输出引脚。有可编程的IO可以任意的定义某个非专用引脚(FPGA中有专门的非用户可使用的测试、下载用引脚)为输入还是输出,还可以对IO的电平标准进行设置。

总归一句话,FPGA之所以可编程是因为可以通过特殊的01代码制作成一张张 “真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功能。现在的FPGA,不单单是有前面讲的那三块,还有很多专用的硬件功能单元,如何利用好这些单元实现复杂的逻辑电路设计,是从菜鸟迈向高手的路上必须要克服的障碍。而这一切,还是必须先从了解FPGA内部逻辑及其工作原理做起。

HDL语言

HDL语言的英语全称是:Hardware Description Language,注意这个单词Description,而不是Design。老外为什么要用Description这个词而不是Design呢?因为HDL确实不是用用来设计硬件的,而仅仅是用来描述硬件的。描述这个词精确地反映了HDL语言的本质,HDL语言不过是已知硬件电路的文本表现形式而已,只是将电路用文本的形式描述出来而已。

在编写语言之前,硬件电路应该已经被设计出来了。但是很多人就不理解了,既然硬件都已经被设计出来了,直接拿去制作部就完了,为什么还要转化为文字表达形式再通过EDA工具这些麻烦的流程呢?硬件设计也是有不同的抽象层次,每一个层次都需要设计。最高的抽象层次为算法级、然后依次是体系结构级、寄存器传输级、门级、物理版图级。使用HDL的好处在于我们已经设计好了一个寄存器传输级的电路,那么用HDL描述以后转化为文本的形式,剩下的向更低层次的转换就可以让EDA工具(注)去做了,这就大大的降低了工作量。也就是说在对这一抽象层次上硬件单元进行描述可以被EDA工具(FPGA开发软件)理解转化为底层的门级电路或其他结构的电路(即FPGA内部逻辑功能实现形式)。

HDL也可以描述更高的抽象层级如算法级或者是体系结构级,但目前受限于EDA软件的发展,EDA软件还无法理解这么高的抽象层次,所以 HDL描述这样抽象层级是无法被转化为较低的抽象层级的。所以在阅读或编写HDL语言,尤其是可综合的HDL,不应该看到的是语言本身,而是要看到语言背后所对应的硬件电路结构。这种硬件描述语言看到的不应是一行行的代码而是一块一块的硬件模块。

数字电路基础

说到底,FPGA 就是一堆数字逻辑组合在一起实现特定功能而已 。所以数字电路基础知识是根本 。如果你连触发器,组合电路,时序电路,竞争,毛刺等等基本概念还莫能两可不清不楚的话,那玩转 FPGA 只能是痴人说梦的幻想了 。我们必须要好好的学好数字电路基础这门课,基本的数字电路烂熟于心 。把这些基础打牢固,再往更深的方向发展 。什么时候能够从抽象的算法中提炼算法的结构,再分解成具体的模块并通过硬件电路实现出来,这时候就算从菜鸟级别步入老鸟级别了 。

/*注释*/

*EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

*数字逻辑知识是根本,FPGA说白了是一种实现数字逻辑的方式而已。

时间: 2024-10-13 16:21:30

FPGA之初认识的相关文章

FPGA初体验之用户IP核封装

实验平台:Vivado 2015 开发板:Xilinx ZYNQ-7020 内容:创建和封装用户IP核流程 第一步:打开Vivado 2015,新建工程. 第二步:更改工程名和存放路径,点击下一步. 第三步:选择RTL工程,点击下一步. 第四步:点击创建文件,输入IP核名称(自定义),点击OK. 点击下一步. 点击下一步. 第五步:选择对应的芯片.我的开发板用的芯片是xc7z020clg-1,点击下一步. 点击完成. 直接点击OK. 第六步:编辑myip.v 代码:myip.v 1 `times

FPGA初体验之驱动安装

1.USB转UART驱动 这是调试需要使用到的驱动,串口调试需要此驱动. 安装好驱动后将开发板UART口与电脑连接.然后打开电脑的设备管理器 找到串口设备CP210x,我电脑的端口映射是COM3. 2.终端登陆工具SecureCRT 众多的终端工具中,SecureCRT是比较好用的一种. 点击取消 点击Connet 点击New Session 选择Serial,点击下一步. 波特率选择115200,端口选择刚刚查看到的COM3,同时右边栏勾选XON/XOFF,并取消勾选RTS/CTS. 名字可以

OpenCL学习笔记(一):摩尔定律、异构计算与OpenCL初印象

关于摩尔定律: 摩尔定律1965年提出,晶体管密度是按照每年翻倍发展的,之后的趋势也是这样--每一代芯片的的时钟频率提高50%,而同时工艺节点减小了0.3,功耗密度翻倍(保持功耗相同的情况下,面积0.7*0.7=0.49,因此提高频率使得性能提升了):而在2000年中期之后,出现了物理尺寸更小的器件,意味着,我们没有办法保持功耗密度不变,而同时提高频率,结果我们看到自此之后,时钟频率并没有显著提高,需要通过并行来提高性能,所以多核CPU流行起来.即使是最基本的处理器,超标量和无序指令执行等高级体

FPGA学习笔记——点亮LED

软件平台:win7(64bit) + Quartus II 9.1 (64-Bit) 硬件平台:东理电子Easy-FPGA Cyclone II EP2C5T114C8N   这个开发板买了很长时间了,买来后一直放那,下面来一个点灯的例子. 1. 实验任务 点亮发光二极管. 通过这个实验, 熟悉并掌握 CPLD/FPGA 开发软件 Quartus II 的使用方法和开发流程以及 Verilog HDL 的编程方法. 2. 实验环境 软件实验环境为 Quartus II 9.1 开发软件. 3.

FPGA那些事 --经典总结

规范很重要 工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现有错,回头再看自己写的代码,估计很多信号功能都忘了,更不要说检错了:如果一个项目做了一半一个人走了,接班的估计得从头开始设计:如果需要在原来的版本基础上增加新功能,很可能也得从头来过,很难做到设计的可重用性. 在逻辑方面,我觉得比较重要的规范有这些: 1.设计必须文档化. 要将设计思路,详细实现等写入文档,然后经过

FPGA开发全攻略——FPGA发展以及赛灵思系列产品

原文链接: FPGA开发全攻略连载之八:从可编程器件发展看FPGA未来趋势 FPGA开发全攻略连载之九:FPGA主要供应商与产品(1) FPGA开发全攻略连载之九:FPGA主要供应商与产品(2) FPGA开发全攻略连载之九:FPGA主要供应商与产品(3) 可编程逻辑器件的发展历史可编程逻辑器件的发展可以划分为4个阶段,即从20世纪70年代初到70年代中为第1段,20世纪70年代中到80年代中为第2阶段,20世纪80年代到90年代末为第3阶段,20世纪90年代末到目前为第4阶段. 第1阶段的可编程

FPGA开发流程1(详述每一环节的物理含义和实现目标)

要知道,要把一件事情做好,不管是做哪们技术还是办什么手续,明白这个事情的流程非常关键,它决定了这件事情的顺利进行与否.同样,我们学习FPGA开发数字系统这个技术,先撇开使用这个技术的基础编程语言的具体语法.使用工具和使用技巧不谈,咱先来弄清楚FPGA的开发流程是什么. FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总体按照图1进行,有些步骤可能由于其在当前项目中的条件的宽度的允许,可以免去,比如静态仿真过程,这样来达到项目时间上的优势.但是,大部分的流程步

02-FPGA设计流程介绍——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线——普利斯队长精心奉献 课程目标: 1.了解并学会FPGA开发设计的整体流程 2.设计一个二选一选择器并进行功能仿真.时序仿真以及板级验证 实验平台:芯航线FPGA开发板.杜邦线 实验内容: 良好的文件夹设置以及工程管理是一个好的FPGA设计的基础,在学习之初就建立俩良好的习惯,会少走一些弯路.因此我们首先在新建的工程文件夹下面,分别建立如图2-1所示的子文件夹. 图2-1 FPGA工程子文件夹 上图中,prj为工程文件存放目录:rtl为verilog可综合代码存放目录:testbench

GPU相比FPGA更具优势,适应AI快速变化需求

<strong>飞象网讯</strong>(源初/文)上周,在 GTC19 大会期间,NVIDIA 加速计算产品管理总监 Paresh Kharya 对关于 GPU 相比 FPGA 的优势的问题时回答表示,GPU 在可编程上具备明显优势,整个开发时间更短. 他表示称目前做好一个 FPGA,整个编程时间就要几个月,而且还要在硬件层面对它进行编程.然而现在 AI 变化速度非常快,甚至更新是以分钟来计算的,所以必须要在软件端实现高度灵活的可编程.恰恰 GPU 是 AI 领域的专用芯片,他