嵌入式 > 技术百科 > 详情

PLD/FPGA 结构与原理初步

发布时间:2023-04-20 发布时间:
|

一.查找表(look-up-table)的原理与结构

采用这种结构的pld芯片我们也可以称之为fpga:如altera的acex,apex系列,xilinx的spartan,virtex系列等。

查找表(look-up-table)简称为lut,lut本质上就是一个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的结构

我们看一看xilinx spartan-ii的内部结构,如下图:

xilinx spartan-ii 芯片内部结构

slices结构

spartan-ii主要包括clbs,i/o块,ram块和可编程连线(未表示出)。在spartan-ii中,一个clb包括2个slices,每个slices包括两个lut,两个触发器和相关逻辑。 slices可以看成是spartanii实现逻辑的最基本结构 (xilinx其他系列,如spartanxl,virtex的结构与此稍有不同,具体请参阅数据手册)

altera的flex/acex等芯片的结构如下图:

altera flex/acex 芯片的内部结构

逻辑单元(le)内部结构

flex/acex的结构主要包括lab,i/o块,ram块(未表示出)和可编程行/列连线。在flex/acex中,一个lab包括8个逻辑单元(le),每个le包括一个lut,一个触发器和相关的相关逻辑。le是flex/acex芯片实现逻辑的最基本结构(altera其他系列,如apex的结构与此基本相同,具体请参阅数据手册)

二.查找表结构的fpga逻辑实现原理

我们还是以这个电路的为例:

a,b,c,d由fpga芯片的管脚输入后进入可编程连线,然后作为地址线连到到lut,lut中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。 该电路中d触发器是直接利用lut后面d触发器来实现。时钟信号clk由i/o脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与i/o脚相连,把结果输出到芯片管脚。这样pld就完成了图3所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)

这个电路是一个很简单的例子,只需要一个lut加上一个触发器就可以完成。对于一个lut无法完成的的电路,就需要通过进位逻辑将多个单元相连,这样fpga就可以实现复杂的逻辑。

由于lut主要适合sram工艺生产,所以目前大部分fpga都是基于sram工艺的,而sram工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到fpga中,然后fpga就可以正常工作,由于配置时间很短,不会影响系统正常工作。 也有少数fpga采用反熔丝或flash工艺,对这种fpga,就不需要外加专用的配置芯片。

三.其他类型的fpga和pld

随着技术的发展,在2004年以后,一些厂家推出了一些新的pld和fpga,这些产品模糊了pld和fpga的区别。例如altera最新的maxii系列pld,这是一种基于fpga(lut)结构,集成配置芯片的pld,在本质上它就是一种在内部集成了配置芯片的fpga,但由于配置时间极短,上电就可以工作,所以对用户来说,感觉不到配置过程,可以传统的pld一样使用,加上容量和传统pld类似,所以altera把它归作pld。 还有像lattice的xp系列fpga,也是使用了同样的原理,将外部配置芯片集成到内部,在使用方法上和pld类似,但是因为容量大,性能和传统fpga相同,也是lut架构,所以lattice仍把它归为fpga。

四.选择pld还是fpga?

根据上一篇pld的结构和原理可以知道,pld分解组合逻辑的功能很强,一个宏单元就可以分解十几个甚至20-30多个组合逻辑输入。而fpga的一个lut只能处理4输入的组合逻辑,因此,pld适合用于设计译码等复杂组合逻辑。 但fpga的制造工艺确定了fpga芯片中包含的lut和触发器的数量非常多,往往都是几千上万,pld一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,fpga的平均逻辑单元成本大大低于pld。 所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用fpga就是一个很好选择。 同时pld拥有上电即可工作的特性,而大部分fpga需要一个加载过程,所以,如果系统要可编程逻辑器件上电就要工作,那么就应该选择pld。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Intel Skylake新架构的秘密:逆超线程.单核猛增