0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

常用代码的逻辑级数预估

FPGA十年老鸟 来源:FPGA十年老鸟 2024-07-18 14:38 次阅读

一、前言

现在我们知道,想要FPGA的主频跑得高,那么工程的逻辑级数要尽量低才行,但一个大的逻辑工程如此的庞大,代码已经编写完成再来考虑逻辑级数那就有一点晚了,因为很多功能都是时序强相关,改了一个地方可能牵扯到更多的地方要跟着改,工程大了改起来就痛苦了。因此想要FPGA设计的逻辑级数低,从每个代码块就需要开始注意了,因此可以把常见的一些语法块所综合的逻辑级数总结起来。这样我们不仅大致知道逻辑级数的范围,同时优化代码的时候也知道从哪里下手。当然,我们需要通过Vivado来进行综合,逻辑级数的性能也与Vivado的综合策略有很大的关系,一般来说使用默认的Vivado的综合策略就可以了,经过这么数十年的迭代,可以认为Vivado的综合策略已经是最优的了,影响逻辑级数主要变数的就是代码的设计质量了。注意本文的结论是基于K7系列FPGA得到的,其他器件由于资源结构发生变化则需要重新总结。

FPGA设计中常见的逻辑有哪些?虽然一个大型工程很复杂,但实际上分解出来的也基本都是是加法器(减法器、累加器),比较器、条件语句(CASE语句)组成的,其他的例如乘法器和存储器基本都是使用内部专用资源实现的,因此这里不作为分析。如果我们能把这些主要的元素全部综合一遍,大致了解其逻辑级数的范围,对于我们整个设计的逻辑级数控制是很有帮助的。

二、加法器

我们首先分析一个8bit位宽的加法器

module test(
input [7:0]a_i,
input [7:0]b_i,
output [7:0]sum_o
);


assign sum_o = a_i + b_i;
endmodule

e58dd88c-44a6-11ef-b8af-92fbcf53809c.png

从原理图网表可以看出逻辑级数为3。这里我们探究一下LUT2和CARRY4这些原语的实现细节。在数字电路中,二进制加法器的公式为:

式中 表示异或逻辑,+表示或逻辑,AB表示A和B的与逻辑,O表示和,CO表示进位。下标i表示bit的位数。

而我们看一下CARRY4的内部结构,如图所示。

e5b939dc-44a6-11ef-b8af-92fbcf53809c.png

当且时,那么就可以得出二进制加法器的公式,如下:

而是通过通过LUT2来实现,CARRY4可以实现4位的二进制加法器,同时CARRY4可以接收来自上一个CARRY4进位,以及将当前第4bit的进位输出到下一级CARRY4,以便组成更高位数的加法运算。

下面是通过调整位宽所测得的逻辑级数,大家可以自己实践来做更细致化的统计,以满足自己设计时对逻辑级数的估计需求。

e5d708ae-44a6-11ef-b8af-92fbcf53809c.png

从表中观察到以下几个现象:

(1)P=A+B+C与P=A+B使用的是相同的LUT和CARRY4资源,相同位宽下逻辑级数只是增加了1级。图9-3是P=A+B+C的综合原理图,是为什么从原理图中明明发现P=A+B+C的8bit加法中有14个LUT,为啥实际使用的资源是8个LUT呢?这里就不得不佩服Xilinx 7系列芯片中的6输入查找表(LUT6)设计了,LUT6内部可以拆分成两个LUT5,因此LUT6设计了两个输出端口。只需要满足两个任意定义的五输入或更少输入的布尔函数(使用LUT6的A1-A5端口),只要这两个函数包含共同的输入,且LUT6的A6端口拉高的时候,就可以实现两个LUT5或更少端口的LUT。例如图9-3其中两个方框中LUT3和LUT4包含相同的输入,因此被综合进了同一个LUT6中,如图所示。

因此做设计,可以综合时序和资源的考虑,如果时序要求没有这么高,则可直接写为P=A+B+C,相比于拆成两部分做两级流水(TEMP = A +B、 TEMP = A + C),能够节省一半以上的逻辑资源。

e5fa7802-44a6-11ef-b8af-92fbcf53809c.png

e61d9670-44a6-11ef-b8af-92fbcf53809c.png

(2)P=A+B+C+D的32bit加法的最高逻辑级数比P=A+B+C的32bit加法的最高逻辑级数还要小,初一看感觉有点突破认知,按理来说前者的最高逻辑级数会比后者高才对。同时我们看到前者比后者多用了60个LUT,因此逻辑级数除了取决于自己的代码外,还会与综合的实现算法有关系,这点应该是综合工具通过资源和时序(逻辑级数)的性能进行综合判断。

(3)P=A+1型加法或者其变种累加器P=P+1,虽然是一个常数相加,使用的资源比常规的加法运算少很多,但位宽大了之后其逻辑级数也是不容忽视的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1620

    文章

    21497

    浏览量

    598697
  • 加法器
    +关注

    关注

    6

    文章

    183

    浏览量

    29955
  • 逻辑设计
    +关注

    关注

    1

    文章

    41

    浏览量

    11548

原文标题:逻辑设计漫谈——常用代码的逻辑级数预估(加法器)

文章出处:【微信号:FPGA十年老鸟,微信公众号:FPGA十年老鸟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    常用逻辑门电路符号图

    本帖最后由 gk320830 于 2015-3-9 18:06 编辑 常用逻辑门电路符号图
    发表于 04-07 08:21

    可编程逻辑芯片 FPGA 速度级数

    可编程逻辑芯片 FPGA 中的CYCLONE IV系列的芯片·主要指标中的速度级数代表什么意思?
    发表于 09-13 21:29

    常用逻辑电平

    [url=]常用逻辑电平[/url]
    发表于 01-29 13:53

    如何对simth滞后系统预估器编程进行matlab仿真呢

    一般的大滞后系统常用的控制方法有哪几种?怎样去实现一种simth滞后系统预估器编程呢?如何对simth滞后系统预估器编程进行matlab仿真呢?
    发表于 11-19 06:21

    傅立叶级数ppt

    傅立叶级数一、三角级数二、三角函数系的正交性三、函数展开成傅立叶级数
    发表于 10-30 13:07 26次下载
    傅立叶<b class='flag-5'>级数</b>ppt

    几种常用高速逻辑电平电路的特点及应用

    几种常用逻辑电平电路的特点及应用 几种常用逻辑电平电路的特点及应用 标签/分类: 在通用的电子器件设备中,TTL和CMOS电路的应用非常广泛。但
    发表于 08-21 15:34 1319次阅读
    几种<b class='flag-5'>常用</b>高速<b class='flag-5'>逻辑</b>电平电路的特点及应用

    常用集成电路逻辑符号对照表

    常用集成电路逻辑符号对照表  
    发表于 11-22 13:02 1.1w次阅读
    <b class='flag-5'>常用</b>集成电路<b class='flag-5'>逻辑</b>符号对照表

    常用逻辑门及其符号简介

    常用逻辑门及其符号简介
    发表于 12-03 10:59 6.3w次阅读

    逻辑代数的基本公式和常用公式

    逻辑代数的基本公式和常用公式 序号            
    发表于 02-28 19:01 2.1w次阅读
    <b class='flag-5'>逻辑</b>代数的基本公式和<b class='flag-5'>常用</b>公式

    常用基本逻辑门电路功能测试实验

    常用基本逻辑门电路功能测试实验 一、实验目的 1.验证常用门电路的逻辑功能。 2.了解常用74LS系列门电路的引脚分布。 3.根据所
    发表于 03-08 17:06 3w次阅读

    常用的FPGA代码

    常用的FPGA代码,VHDL语言编写。需要请下载
    发表于 05-26 11:36 16次下载

    如何在C代码中插入寄存器?

    对于逻辑级数较高的路径,常用的方法之一是在其中插入流水寄存器,将路径打断,从而降低逻辑延迟,这在HDL代码中实现起来比较容易。此外,从RTL
    的头像 发表于 02-02 17:07 2955次阅读
    如何在C<b class='flag-5'>代码</b>中插入寄存器?

    Verilog常用的循环语句及用途

    本文主要介绍verilog常用的循环语句,循环语句的用途,主要是可以多次执行相同的代码逻辑
    的头像 发表于 05-12 18:26 1768次阅读

    三角级数和傅里叶级数的区别

    解这两个概念。 首先来了解一下什么是三角级数。三角级数是一种特殊的函数级数,其中各项是一些三角函数的线性组合。三角级数常用于解决周期函数的问
    的头像 发表于 09-07 16:43 1340次阅读

    常用的组合逻辑电路有哪些

    组合逻辑电路是数字逻辑电路的一种,其特点是输出只依赖于当前的输入状态,而与输入信号的变化历史无关。组合逻辑电路广泛应用于数字系统中,如计算机、通信设备、控制设备等。以下是对常用的组合
    的头像 发表于 07-30 14:41 315次阅读