FPGA简介
FPGA(Field-Programmable Gate Array), 即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器材的基础上进一步开展的产品。它是作为专用集成电路(ASIC)领域中的一种半定制电路而呈现的,既处理了定制电路的缺乏,又克服了原有可编程器材门电路数有限的缺陷。
本文首要介绍的是FPGA的片上资源运用状况,别离是从组合逻辑及时序逻辑来具体的剖析。
解析FPGA的片上资源运用状况
怎么剖析FPGA芯片上的组合逻辑(LUT)和时序逻辑(REG)的利用率。
一、怎么得到LUT与REG的运用份额
咱们先看一个FPGA工程的编译成果陈述:
在这个陈述中,咱们能够看到如下信息:
Total logic elements 24071/24624(98%): 该芯片中共有24624个LE资源,其间的98%在这个工程的这次编译中得到了运用。
Total combinaTIonal funcTIons 21612/24624(88%): 该芯片的24624个LE资源中,88%用于完成组合逻辑。
Dedicated logic registers 8858/24624(36%): 该芯片的24624个LE资源中,36%用于完成寄存器,即时序逻辑。
便是从上述信息中,我得到了组合逻辑与时序逻辑的运用份额——21612/8858 = 2.4:1。
二、一份更具体的资源利用率陈述
在这个陈述中,有一点或许会令人困惑:为什么Total combinaTIonal funcTIons与Dedicated logic registers之和(30470)大于Total logic elements(24071),乃至大于该芯片的总资源(24624)。咱们再来看一份更具体的资源运用陈述——Fitter Resource Usage Summary:
这份陈述包括许多信息,在这儿咱们只需要关怀Total logic elements一项。Total logic elements 24071/24624(98%)由三种运用状况不同的LE资源组成:仅用于完成组合逻辑的LE(Combinational with no register 15213),仅用于完成时序逻辑的LE(Register only 2459),一起用于完成组合逻辑和时序逻辑的LE(Combinational with a register 6399)。
三、从Resource Property Editor看LE的运用状况
在进一步剖析这些数据之前,咱们有必要回忆一下FPGA的根本组成元素LE(Logic Element)的结构和功用。以Altera的Cyclone III系列FPGA芯片为例,其LE内部结构如下图所示:
这个LE一起用于完成组合逻辑和时序逻辑,其间蓝色部分为组合逻辑(一个4输入LUT),其间黄色高亮部分为时序逻辑(一个D触发器)。 咱们再来看一个更风趣的LE:
这个LE也一起用于完成组合逻辑和时序逻辑,与上一幅图不同的当地在于,这儿的组合逻辑(4输入LUT)与时序逻辑(REG)并没有衔接联系。组合逻辑从COMBOUT直接输出,时序逻辑从REGOUT输出。这种互不相关的组合逻辑与时序逻辑共用同一个LE的状况很特别,这是选用了Register Packing资源优化技能之后的完成方法。假如没有选用这一资源优化技能,就要用两个LE来别离完成相应的组合逻辑和时序逻辑。
理解了上面这两幅图,咱们也能由此类推,幻想出仅用于完成组合逻辑的LE(Combinational with no register)和仅用于完成时序逻辑的LE(Register only)该是什么姿态。
四、“数字总算对上了!”
咱们回到前面关于资源利用率剖析的部分。有了上面介绍的常识,咱们应该能够把资源利用率陈述中三种运用状况不同的LE区别开了。
咱们把“一起用于完成组合逻辑和时序逻辑的LE(6399)”别离加到“仅用于完成组合逻辑的LE(15213)”和“仅用于完成时序逻辑的LE(2459)”上面,就能够得到“悉数组合逻辑”(Total combinational functions = 6399 + 15213 = 21612)和“悉数寄存器”(Dedicated logic registers = 6399 + 2459 = 8858)两个数值了。这两个数值便是榜首幅图中关于资源利用率的汇总陈述成果,它们的份额刚好便是2.4:1。
因为6399这个数字被运用了两次,所以咱们开始关于“Total combinational functions与Dedicated logic registers之和(30470 = (6399 + 15213) + (6399 + 2459))大于Total logic elements(24071 = 6399 + 15213 + 2459)”的困惑也得到了回答。
五、总结
因为FPGA规划中用到的组合逻辑与时序逻辑的数量不均衡,部分LE会仅用于完成组合逻辑或时序逻辑;进一步,因为布局方位的约束,独自完成组合逻辑或时序逻辑的两个LE或许不能合并到一个LE中完成。所以,在资源利用率陈述中会呈现三种运用状况不同的LE。
因为过长的组合逻辑链(级联的LUT)会引进较大的延时,而时序逻辑(REG)能够把较长的组合逻辑链分割成较短的组合逻辑链,有效地缩短要害途径和次要害途径的长度,从而进步该FPGA规划的全体时序功能,所以组合逻辑与时序逻辑的运用份额能够作为点评一个FPGA规划时序功能的辅佐参数。
过于杂乱的组合逻辑也会占用多个LE。咱们在编写HDL代码的时分,不能独自把削减Register的运用量作为节约资源的手法,而应该统筹组合逻辑与时序逻辑,依据方针PLD器材的底层结构,编写组合逻辑和时序逻辑份额契合PLD器材资源份额的代码。