FPGA内部资源介绍(1)-逻辑资源块

近期有许多小伙伴私信小编,希望小编出一些FPGA基础知识,能对FPGA有初步的认识。小编立马奋笔疾书,熬夜整理了一些学习FPGA必备的基础知识,双手呈上~~,每天一个干货,一星期带你入门FPGA!

敲黑板!都是干货!

逻辑资源块是FPGA中最重要的资源,它在FPGA芯片中占的比重最大。Xilinx公司称它为时B.即ConffgurabeLogic Bock:而Altera公司称它为AM即 Adapive logic Module。Xilinx把一个CLB划分为若干个slice,每个slice中一般又包含若干个LUT、寄存器、异或门和复用器等;Altera把一个ALM划分为若干个ALUT 和寄存器等,而每个ALUT 中一般又可包含若干个LUT,全加器和复用器等。因此虽然逻辑资源块在不同的器件中叫法不一样(当然结构上也会有略微的差别),但它们的本质是类似的。在FPGA芯片中,逻辑资源块是均匀分布的,不过在列的方向上,它们的排列一般更加紧密些,这估计是为了减少加法进位链的延迟和实现高性能的寄存器链吧。

下面,我们给出 Xilinx公司 Virtex-5系列芯片中的基本slice结构图(图1)和Altera公司StratixN系列芯片中的基本ALM结构图(图2)供大家对比。

对比图1和图2可以看出,无论是CLB还是ALM,它们包含的基本元素都是相似的。下面我们详细介绍一下这些基本元素。

1.LUT

LUT 即查找表的意思,它是FPGA芯片与其他可编程逻辑芯片之间最大的区别。LUT可以有多个输入引脚,但只能有一个输出引脚。我们可以用 ROM 的概念来理解 LUT,即,般来说,一个N输人的查找表,它的行为相当于一个地址总线为N位,单位存储量为1bit,总存储量为2bit的单口 ROM。例如,对于一个2输人的查找表,如果按照"逻辑与"的真值表去配置其内部ROM的存储内容,那么它的行为就相当于一个与门;如果按照"逻辑或"的真值表去配置其内部ROM的存储内容,那么它的行为就相当于一个或门;如果固定住一个输人引脚,也可以很方便地模拟非门的行为;如果恰当地组合两个2输人的LUT,也可以很方便地实现任意3输人逻辑:以此类推。因此,只要通过恰当的连接,我们可以用该LUT实现任意的组合逻辑功能。进一步分析,通讨结合【共同语言→数字逻辑电路基础知识→数字锣辑的化简】中关于最小项概念的介绍,我们可以知道,LUT中的每一个存储单位都对应于逻辑表达式中的一个最小项,因此,LUT可以方便地描述任何组合逻辑。目前来说,FPGA中的基本 LUT一般都是4输入,6输人甚至更多输人引脚的,那么它们所能实现的逻辑功能就更加复杂、灵活和多变。

图1

图2

除此以外,LUT不仅仅可以实现灵活、多变的组合逻辑,通过恰当地配置,它甚至可以模拟寄存器的行为,例如图3用LUT完美地模仿了一个寄存器的行为(前提是 LUT中的存储空间被正确配置)。

图3

其中,两个LUT分别模仿了两个锁存器的行为,上面的4输人LUT模拟了一个高电平冼通的latch行为,下面的5输人LUT模拟了一个低电平选通的latch行为而两个LUT中的反馈回路是模拟 latch 在阻止状态下保持原值的关键。

注意,在LUT模仿寄存器的例子中,使用了反馈结构。对于组合逻辑来说,使用反馈结构是很危险的,因为一不小心引入了负反馈就会造成逻辑的混乱。在使用 LUT的时候也是一样,要注意不要引人负反馈。不过LUT 有一个区别于与或非门逻辑的显著特点,那就是 LUT 虽然可以很好地模拟任何组合逻辑,但它实际上不是一个纯粹的组合逻辑,因为组合逻辑的电路是没有记忆的,而LUT是有记忆的,虽然这种记忆一旦建立起来就不会改变直到掉电或下一次电路配置。这是因为LUT有内部存储单元,而它的实现形式可以是ROM、 RAM、寄存器或者MUX加一系列到电源或地的开关等。当然了,由于LUT的实现形式多种多样,因此在 FPGA 中,也可以用 LUT 实现 ROM、RAM甚至移位寄存器。

2.加法器

加法是所有二进制运算的基础,因此它在 FPGA 中的地位非常重要。而二进制加法中最重要的功能元素就是异或操作,因此,为了实现高性能的加法,Xilinx采用了专门的异或门,而 Altera也是引人了专门的全加器。虽然LUT也可以模拟异或门的功能,但是它的延迟相比于专有的异或门来说还是太大,尤其是两个多位数据的相加时,由于级联效应,会导致处理变慢。因此,目前在FPGA的逻辑资源块中,都是留有专门的异或门外加专门的进位链布线资源,再配合相关资源实现全加器的。不过 LUT可以配合异或门实现超前进位加法器,进一步提高加法器的性能。

3.寄存器

FPGA中有丰富的寄存器资源,这也是它区别于CPLD的地方。寄存器是时序逻辑的基础,由于它对电路状态的保持和记忆特性,才使得数字电路具有千变万化的功能。FPGA中的寄存器一般可以被配置为D类型的触发器或者锁存器。配置为D类型的触发器时,根据生产厂商以及型号的不同,可能会有一些其他的功能管脚,例如异步复位、同步复位、时钟使能、同步置位等。FPGA中寄存器的输出一般都会连到附近一个寄存器的输人MUX中,通过配置该 MUX,可以将多个寄存器串联起来形成寄存器链,实现移位寄存器电路。

4.MUX

MUX就是复用器,也叫多路选择器。FPGA的逻辑资源块中,有很多MUX,根据用法可以分为两类:一类是配置MUX,它的选通是在配置FPGA的时候确定的,因此它决定了所处逻辑资源块的功能;另一类是逻辑MUX,它的选通是由此时的内部逻辑决定的,因此它是内部逻辑的一部分。由此可见配置MUX在FPGA中的作用更大一些,通讨改变配置 MUX的选通情况,可以让逻批资源块定现多种名样的功能。例如,通过改变配置MUX的选通情况我们可以只使用逻辑资源块中的组合逻辑部分,也可以只使用其中的寄存器,甚至可以同时使用这两部分,但它们却分别隶属于不同的功能模块。

相关推荐
北城笑笑4 小时前
FPGA 14 ,硬件开发板分类详解,FPGA开发板与普通开发板烧录的区别
fpga开发·fpga
2202_754421544 小时前
一个计算频率的模块
驱动开发·fpga开发
小灰灰的FPGA5 小时前
低速接口项目之串口Uart开发(七)——如何在FPGA项目中实现自适应波特率串口功能
fpga开发
fei_sun1 天前
【Verilog】第一章作业
fpga开发·verilog
深圳市雷龙发展有限公司longsto1 天前
基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面
fpga开发
9527华安1 天前
FPGA实现PCIE3.0视频采集转10G万兆UDP网络输出,基于XDMA+GTH架构,提供工程源码和技术支持
网络·fpga开发·udp·音视频·xdma·pcie3.0·万兆网
able陈1 天前
为什么verilog中递归函数需要定义为automatic?
fpga开发
fei_sun1 天前
【Verilog】第二章作业
fpga开发·verilog
碎碎思1 天前
如何使用 Vivado 从源码构建 Infinite-ISP FPGA 项目
fpga开发·接口隔离原则
江山如画,佳人北望1 天前
fpga-状态机的设计及应用
fpga开发