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的选通情况我们可以只使用逻辑资源块中的组合逻辑部分,也可以只使用其中的寄存器,甚至可以同时使用这两部分,但它们却分别隶属于不同的功能模块。

相关推荐
仲南音1 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20202 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy2 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia2 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20202 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安3 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议