FPGA的逻辑结构:

FPGA由三大要素构成:


  • 可编程逻辑块要素(Configurable Logic Block,CLB)
  • 输入/输出块要素(Input Output Block,IOB)连接I/O引脚和内部布线,包括接口协议,控制电路等
  • 布线要素(Routing Resource,RR),包括开关块、连接块、布线通道
一、 可编程技术

首先说一下FPGA配置存储器的技术。
主要分为三类:


  • SRAM型。
    能够使用最先进的CMOS工艺,目前FPGA可编程技术的主流。
  • 闪存型。
  • 反熔丝型。

    下面介绍一下FPGA的逻辑实现方式。
二、 FPGA的逻辑实现

目前FPGA使用最广泛的逻辑实现方式是查找表的实现方式(LUT)。
PLD(CPLD)用的最多的逻辑实现方式为与或整列
下面介绍几种可以实现逻辑的方式。


  • 基于查找表的逻辑实现
    查找表(Look-Up-Table), 一个字(word)只有一位的内存表。字数取决于地址的位数。FPGA中的查找表大多都是基于SRAM实现。
    下图中使用的是3输入的查找表,可以实现任意三输入的逻辑函数。(目前FPGA中的LUT单元中一般使用4,5,6输入的结构)
    k输入的查找表由2 k 个SRAM单元和一个2 k 输入的数据选择器组成。查找表的输入就是内存表的地址信号,输出就是该地址所选字的一位数据。k输入的查找表可以实现2^(2 k) 种逻辑函数。
    k=2 : 16种
    k=3 : 256种
    k=4 : 65536种
    下图采用查找表实现逻辑表达式M=AB+AC+BC。
    先依据查找表的输入数对真值表进行转换,然后将函数f直接写入内存。当所要实现的逻辑函数的输入数比查找表的输入数大时,FPGA可以联合其他LUT来实现。


  • 基于乘积项的逻辑实现
    以乘积项为例介绍PLA(PLD)中逻辑实现原理。下图是PLA的简化结构.此结构有一个AND整列和OR整列构成。使用乘积项实现电路时,需要计算逻辑函数的最小项之和,因此这种方式在设计时逻辑简化非常重要。积之和形式的逻辑函数可以分为积项和与项。

    乘积项的内部结构如下图所示:
    在AND整列里,输入信号和各个AND门的输入通过可编程开关控制连接。AND整列里可以实现k个最大输入数为n的逻辑与项。之后k个输出在作为OR整列的输入,可以实现m个k输入的逻辑或。下图实现了四个三输入的乘积项逻辑函数

    对于逻辑表达式M=AB+AC+BC,下图展示了电路的实现方式。图中交差点代表可编程开关。


  • 基于数据选择器的逻辑实现
    下图是3个2输入的数据选择器(2-MUX)和一个或门。可以实现多种8输入1输出的逻辑电路。
    但是此种电路并不能像以上两种一样能够实现输入数量的所有逻辑电路。因此需要通过组合来实现。



2-1MUX能实现所有的逻辑函数如下表:


继续对逻辑表达式:M=AB+AC+BC分析,如下:
首先,瞎弄变量A对逻辑表达式进行香农展开,得到的部分函数F1和F2。所以可以分别用AND和OR门。这两个前面表中已经存在。因此只需要一个MUX就可以实现。

参考资料: