深圳网站设计公司龙岗,手机 电脑 同步 wordpress,湖南网站优化代运营,cms WordPress discuz 什么是fpga FPGA是英文Field Programmable Gate Array的缩写#xff0c;即现场可编程门阵列#xff0c;它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中 的一种半定制电路而出现的#xff0c;既解决了定制电路的不足… 什么是fpga FPGA是英文Field Programmable Gate Array的缩写即现场可编程门阵列它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中 的一种半定制电路而出现的既解决了定制电路的不足又克服了原有可编程器件门电路数有限的缺点。 FPGA采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个新概念内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有
a) 采用FPGA设计ASIC电路用户不需要投片生产就能得到合用的芯片。
b) FPGA可做其它全定制或半定制ASIC电路的中试样片。
c) FPGA内部有丰富的触发器和I/O引脚。
d) FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
e) FPGA采用高速CHMOS工艺功耗低可以与CMOS、TTL电平兼容。
可以说FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的因此工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式采用不同的编程方式。
加电时FPGA芯片将EPROM中数据读入片内编程RAM中配置完成后FPGA进入工作状态。这个过程在资料中称为“加载”或者“装载”是不是有点怪怪的类似于arm系列的芯片中bootrom加载bootloader到internal sram中。掉电后FPGA恢复成白片内部逻辑关系消失因 此FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时只需换一 片EPROM即可。这样同一片FPGA不同的编程数据可以产生不同的电路功能。因此FPGA的使用非常灵活。 lut 查找表Look-Up-Table)简称为LUTLUT本质上就是一个RAM。 目前FPGA中多使用4输入的LUT所以每一个LUT可以看成一个有4位地址线的16x1的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果并把结果事先写入RAM,这样每输入一个信号进行逻辑运算就等于输入一个地址进行查表找出地址对应的内容然后输出即可。
下面是一个4输入与门的例子 实际逻辑电路 LUT的实现方式 a,b,c,d 输入 逻辑输出 地址 RAM中存储的内容 0000 0 0000 0 0001 0 0001 0 .... 0 ... 0 1111 1 1111 1 基于查找表LUT)的FPGA的结构 通过上面对lut的描述如果你联想到可以使用这个来实现fpga那么就恭喜你你简直是太聪明了。 下面由小郭同志帮你以几个fpga为例来说明基于lut的fpga结构。 我们看一看xilinx Spartan-II的内部结构如下图 xilinx Spartan-II 芯片内部结构 Slices结构 Spartan-II主要包括CLBsI/O块RAM块和可编程连线未表示出。在spartan-II中一个CLB包括2个Slices,每个slices包括两个LUT两个触发器和相关逻辑。 Slices可以看成是SpartanII实现逻辑的最基本结构 (xilinx其他系列如SpartanXL,Virtex的结构与此稍有不同具体请参阅数据手册
altera的FLEX/ACEX等芯片的结构如下图 altera FLEX/ACEX 芯片的内部结构 逻辑单元LE内部结构
FLEX/ACEX的结构主要包括LABI/O块RAM块未表示出和可编程行/列连线。在FLEX/ACEX中一个LAB包括8个逻辑单元LE,每个LE包括一个LUT一个触发器和相关的相关逻辑。LE是FLEX/ACEX芯片实现逻辑的最基本结构(altera其他系列如APEX的结构与此基本相同具体请参阅数据手册 lut结构的fpga的基本工作原理 上电后程序加载到fpga中的internal ram中接下来lut就可以工作了据spec中讲述这个过程很快基本可以忽略。在军工和航天类的fpga中可以把程序直接搞到flash或者eeprom中不需要这个load的过程实现上电运行的特性类似于pld。 下面接着描述基于lut结构的fpga的基本原理。 我们还是以这个电路的为例
A,B,C,D由FPGA芯片的管脚输入后进入可编程连线然后作为地址线连到到LUTLUT中已经事先写入了所有可能的逻辑结果通过地址查找到相应的数据然后输出这样组合逻辑就实现了。 该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道直接连接到触发器的时钟端。触发器的输出与I/O脚相连把结果输出到芯片管脚。这样PLD就完成了图3所示电路的功能。以上这些步骤都是由软件自动完成的不需要人为干预
这个电路是一个很简单的例子只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的的电路就需要通过进位逻辑将多个单元相连这样FPGA就可以实现复杂的逻辑。
由于LUT主要适合SRAM工艺生产所以目前大部分FPGA都是基于SRAM工艺的而SRAM工艺的芯片在掉电后信息就会丢失一定需要外加一片专用配置芯片在上电的时候由这个专用配置芯片把数据加载到FPGA中然后FPGA就可以正常工作由于配置时间很短不会影响系统正常工作。 也有少数FPGA采用反熔丝或Flash工艺对这种FPGA就不需要外加专用的配置芯片。 由于FPGA需要被反复烧写它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求目前主流FPGA都采用了基于SRAM工艺或者是基于FLASH工艺的查找表结构通过每次烧写改变查找表内容的方法实现对FPGA的重复配置。 那么查找表取代与非门电路的原理是什么呢我们知道一个n输入的逻辑运算不管是与或非运算还是异或运算等等最多只可能存在2n种结果若我们事先将相应的结果存放于一个存贮单元不就相当于实际了与非门电路的功能了吗FPGA的原理正是如此它通过烧写文件去配置查找表的内容从而在相同的电路情况下实现了不同的逻辑功能。以例1为例它的真值表如表1所示。我们只需用将输出y的值事先存放在一个1x16的SRAM或者FLASH中然后用a、b、c、d做地址索引查找输出就可以代替与门运算得到等价的结果。【例1】 一个四输入与门电路assign y abcd; 表1 例1对应的真值表 输入 输出a b c d y0 0 0 0 00 0 0 1 00 0 1 0 00 0 1 1 00 1 0 0 00 1 0 1 00 1 1 0 00 1 1 1 01 0 0 0 01 0 0 1 01 0 1 0 01 0 1 1 01 1 0 0 01 1 0 1 01 1 1 0 01 1 1 1 1 fpga中的宝贵资源io资源其决定了gpga的扩展性dcm数字时钟管理器用来实现倍频并且可以消抖ip核这个就不用说了吧bram可以用来实现成堆栈/fifo/ram等这个怎么实现我就不明白了没有做过上面有些是自己总结不可全信哦。