查找表(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 二.pldfpga基于查找表(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的结构与此基本相同,具体请参阅数据手册) 二.pldfpga 查找表结构的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,就不需要外加专用的配置芯片。 三.pldfpga 其他类型的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。 四.pldfpga基于乘积项(product-term)结构cpld cpld多是基于乘积项(product-term)的结构。采用这种结构的cpld芯片有:altera的max7000,max3000系列(eeprom工艺),xilinx的xc9500系列(flash工艺)和lattice,cypress的大部分产品(eeprom工艺) 我们先看一下这种cpld的总体结构(以max7000为例,其他型号的结构与此都非常相似):
图1 基于乘积项的cpld内部结构 这种cpld可分为三块结构:宏单元(marocell),可编程连线(pia)和i/o控制块。宏单元是cpld的基本结构,由它来实现基本的逻辑功能。图1中兰色部分是多个宏单元的集合(因为宏单元较多,没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。i/o控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。图1 左上的input/gclk1,input/gclrn,input/oe1,input/oe2 是全局时钟,清零和输出使能信号,这几个信号有专用连线与pld中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。 宏单元的具体结构见下图:
图2 宏单元结构 左侧是乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑。后面的乘积项选择矩阵是一个“或”阵列。两者一起完成组合逻辑。图右侧是一个可编程d触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。如果不需要触发器,也可以将此触发器旁路,信号直接输给pia或输出到i/o脚。
马达控制MCU模块TWR-56F8257的主要特点性能及应用电路分析
机器人和机械手在工业应用中有什么区别
2012射频及无线通信测试研讨会
热管理系统建模案例:各个回路的搭建
圆桌讨论:照明对视频监控系统的性能有何影响?
FPGA入门-查找表结构和乘积项结构
MAX16070, MAX16071应用电路
术语解释
决定无线测试系统未来的三个趋势
英伟达公布2020年第二季度财报,盈利和营收均超出华尔街分析师预期
七彩虹CVN B760主板实战测试
软通动力首次为中联重科提供服务
飞兆的智能负载开关帮您解决智能手机的续航问题
电压敏电阻与热敏电阻的基本原理和应用
《突破视听产品 打造本地生态》的演讲
高压变频器在电厂循环水泵上的应用
东超导热填料分享导热双面胶影响导热性都有哪些因素?
环保用电监管系统平台在河南濮阳市的研究与应用
微信红包人工客服电话是多少
红魔Mars电竞手机的性能到底有多强