日常·唠嗑

      在写这篇文章之前,对这个专栏做一个补充解释。本来按我之前的想法是,把这个专栏写成一个比较层次化,一层一层慢慢深入的系统化专栏。但是,在工作的时候,刚好在做某一件事,在这个时间段,对这个知识点比较深刻,所以就提前把这篇文章写了,导致此专栏可能没有按一步一步深入来写,会有些跳动,大家可以根据自己情况看文章。
      在写零基础学FPGA(六):FPGA时钟架构(Xilinx为例,完整解读)这篇文章的时候,稍微提了一下FPGA基本结构,但是由于主题不同,所以没有深入去讲。
      本篇文章,结合软硬件,讲一下FPGA基本结构。以Xilinx及Altera为例。

一、概述

      可配置逻辑模块是可编程阵列的重要组成部分,是FPGA的核心部分,占据FPGA大部分的芯片面积,可编程逻辑单元是其中的基本模块。

      基于查找表(Look Up Table,LUT)的可编程逻辑单元主要由以下几部分组成:两个四输入的LUT,两个进位逻辑,两个可编程触发器,还包含配置用的SRAM、信号产生模块以及控制逻辑等。

      每个可编程逻辑单元中还包含一个与门资源,用来实现有效的乘法运算。LUT从本质上来说是四位地址的16×1的RAM,每个地址存放一个数值。对于任何四输入的函数,都可以写出它的真值表,然后根据它的真值表在其寄存器中对应的位置存放为“1”和“0”。这样对应不同的输入地址就得到不同的结果。(有点像卡若图那样子)可以看看这篇文章:查找表(LUT)。

      其中四输入的LUT用来实现任意四输入的函数,通过两个LUT的组合可以实现任意五输入的函数,同时每个LUT还可以实现16×1的RAM和16×1的移位寄存器。进位逻辑可以实现快速的算术运算、级联函数生成器,同时也作为LUT输出函数与触发器资源之间的通道。函数生成器的输出可以直接当作模块的输出,也可以送入D触发器,然后通过D触发器输出。其中,可配置模块中的储存单元也是可以被配置的,它可以被配置成D触发器,也可以被配置成电平敏感的锁存器。可编程触发器的输入可以是函数生成器的输出也可以是其他信号直接短接函数发生器的输出。存储器还包括同步置位信号和复位信号。置位信号在配置过程中强迫存储单元回到初始化状态。复位信号使触发器变为与初始状态相反的状态,它与置位信号相反。这些控制信号也可以被配置成异步的使能信号。这些信号都是独立可以颠倒的,它们被一个可配置逻辑单元中的两个D触发器所共享。

      在这里,有一篇文章,非常值得大家阅读: 你的fpga为什么不能正常工作——拆解第一款FPGA芯片分析原理
      笔者第一次看这篇文章,也大受震撼,仔细阅读,会有一种遨游在芯片海洋里的感觉,海洋里的每种生物都栩栩如生。