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

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

3天内不再提示

写RTL代码时,尽可能地做到代码风格与硬件结构相匹配

FPGA技术驿站 来源:Lauren的FPGA 作者:Lauren的FPGA 2020-09-24 14:02 次阅读

两个数相加,三个数相加有什么不同 接下来,我们考虑4个32-bit有符号数相加该如何实现,其中目标时钟频率仍为400MHz。以UltraScale Plus系列芯片为目标芯片。 第一种方案:四个数直接相加此方案对应的电路图如下图所示。这里不难看出关键路径是三个加法器所在路径,这将是时序收敛的瓶颈。

此电路对应的SystemVerilog代码如下图所示。

从综合后的结果来看,逻辑级数最高为7。

第二种方案:加法树

加法树的结构如下图所示,两两相加。与第一种方案相比,可以有效降低逻辑级数。

此电路对应的SystemVerilog代码如下图所示。

从综合后的结果来看,逻辑级数最高为6。 第三种方案:加法链之所以选用加法链的结构是因为DSP48本身就是这种链式结构。对应的电路如下图所示。其中a0和a1端口有一级寄存器,a2端口有两级寄存器,a3端口有三级寄存器。

此电路对应的SystemVerilog代码如下图所示。

接下来,我们对这三种方案进行比较,如下图所示。不难看出,第一种方案逻辑级数最高,消耗的LUT也最多,时序结果也是最差的(尽管达到了收敛的目的)。后两种方案不相上下。

如果将这三种方案通过综合属性USE_DSP使其映射到DSP48上,结果如何呢?如下图所示。不难看出,第一种方案只消耗了两个DSP,资源利用率最低,但时序也是最糟糕的。后两种方案都用了三个DSP,但第三种方案由于可以很好地匹配硬件结构,故时序最好。

对比下来不难得出这样的结论:写RTL代码时,尽可能地做到代码风格与硬件结构相匹配,可达到更好的性能。

Tcl之$$a 80%的概率...... AI Engine到底是什么?

ACAP不可不知的几个基本概念

嵌套的for循环,到底对哪个执行pipeline更好

HLS中循环的并行性(2)

HLS中循环的并行性(1)

HLS优化方法DATAFLOW你用了吗

HLS中如何控制流水程度

Vivado HLS学习资料有哪些

如何查看可综合C代码的中间结果

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

HLS IP Library? HLS Math Library:csim ?C/RTL co-sim(2) HLS Math Library:csim ?C/RTL co-sim(1) 加法运算很简单? AXI-4 Lite与AXI-4 Memory Mapped有什么区别? 深入理解AXI-4 Memory Mapped 接口协议 AXI是Interface还是Bus? 如何阅读时序报告 时序报告要看哪些指标 如何使set_max_delay不被覆盖 一些小巧的IP IP是用DCP还是XCI? 如果使用第三方综合工具,Xilinx IP… IP生成文件知多少 IP的约束需要处理吗? IP为什么被Locked? copy_ip你用过吗? IP是XCI还是XCIX 如何降低OSERDES/CLK和CLKDIV的Clock Skew 如何获取Device DNA 谈谈设计复用 过约束到底怎么做 时序收敛之Baseline 什么情况下要用OOC综合方式 异步跨时钟域电路该怎么约束 如何复用关键路径的布局布线信息 Vivado学习资料有哪些? 异步跨时钟域电路怎么设计 ECO都有哪些应用 FPGA中的CLOCK REGION和SLR是什么含义 FPGA中的BEL, SITE, TILE是什么含义 约束文件有哪些 如何高效复用Block的位置信息? 如何复用关键寄存器的位置信息 部分可重配置都生成哪些.bit文件 VIO你用对了吗 Device视图下能看到什么 Schematic视图下能看到什么 都是pin,有什么区别 都是net,有什么区别 如何快速查找目标cell 学习笔记:深度学习与INT8 学习笔记:多层感知器 学习笔记:单层感知器的局限性 学习笔记:单层感知器基础知识 学习笔记:神经网络学习算法 学习笔记:神经网络模型 学习笔记:ReLU的各种变形函数 学习笔记:神经元模型(2) 学习笔记:神经元模型(1) 学习笔记:深度学习之“深” 学习笔记:深度学习之“学习” 学习笔记:人工智能机器学习和深度学习 2019文章汇总

原文标题:加法树还是加法链?

文章出处:【微信公众号:Lauren的FPGA】欢迎添加关注!文章转载请注明出处。

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

    关注

    10323

    文章

    10718

    浏览量

    528167
  • 32-bit
    +关注

    关注

    0

    文章

    7

    浏览量

    6406

原文标题:加法树还是加法链?

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何写出稳定的单片机代码

    这篇文章分享怎么写出稳定的单片机代码。     我对优秀代码的理解,大体分为两个部分:高效和稳定。   两者都能做到很好的,如果靠自己摸索,没有刻意去练习,可能需要花10年,甚至更久
    的头像 发表于 11-15 16:40 271次阅读
    如何写出稳定的单片机<b class='flag-5'>代码</b>

    参数化的延迟链代码分享

    在日常代码的过程中,我们经常会用到“打拍”的操作。如图1代码段所示。这个打拍的作用,很多时候主要是为了减少亚稳态。
    的头像 发表于 10-21 13:54 138次阅读
    参数化的延迟链<b class='flag-5'>代码</b>分享

    Verilog 如何做到心中有电路?

    :要在 Verilog 代码做到心中有电路,可以尝试以下方法: 深入学习数字电路基础知识:包括各种逻辑门、组合逻辑电路、时序逻辑电路的原理和结构,理解它们的工作方式和功能。 分解复
    发表于 09-26 20:30

    ida反编译出来代码能直接用吗

    一些有助于人类阅读但不影响机器执行的元信息,如注释、文档字符串以及某些编译时优化的细节。因此,反编译出来的代码可能无法完全还原原始代码的意图和结构。 二、依赖性问题 即使反编译出来的
    的头像 发表于 09-02 10:55 512次阅读

    低噪声放大器的第一级放大电路要尽可能的放大,为什么?

    为什么低噪声放大器的第一级放大电路要尽可能的放大?
    发表于 08-30 07:40

    为了尽可能的消除模拟开关的影响,xtr105的电压至少需要多少伏?

    开关,那么RZ,Rg应该怎么确定阻值,模拟开关应该算进线路电阻中吗?。为了尽可能的消除模拟开关的影响,xtr105的电压至少需要多少伏?Q1选择除了datasheet中给的三个选项有可以替代的吗,三个三极管好像都是比较老的产品了。最后,xtr105的输出可以直接连到ADC上吗?
    发表于 08-26 06:27

    请问怎样修改电路使带宽尽可能加宽到200MHz以上,增益不要有太大的波动?

    在此电路中输入为100mV,但是在50MHz到100MHz才能进行五倍的增益,超过这个频率就会迅速衰减,我想请问怎样修改电路使带宽尽可能加宽到200MHz以上,增益不要有太大的波动谢谢。
    发表于 08-23 07:04

    软件设计哲学:新“代码整洁之道”

    ”、“方法长度最多不要超过 5 行”和“优秀的代码都是自解释的,很少会有注释”等等观点奉为圭臬,但是由于其成书较早,其中的一些观点显然已经不再使用当前业务开发环境了。就拿前两点来说,看上去能让每个小方法尽可能
    的头像 发表于 07-22 12:18 211次阅读
    软件设计哲学:新“<b class='flag-5'>代码</b>整洁之道”

    电路的阻抗如何匹配

    电路的阻抗匹配是指调整电路组件(包括源和负载)之间的阻抗,使电源能尽可能多地传递能量,而不是产生反射。当源、传输线以及负载的阻抗都相等时,可以达到最佳的阻抗匹配,从而最大限度地减少信号的反射和损耗
    的头像 发表于 06-28 08:29 1927次阅读
    电路的阻抗如何<b class='flag-5'>匹配</b>

    定华雷达知识讲堂:DHE雷达物位计应用中常见的问题及处理方法

    方法:清除故障代码。若清除不了,参照故障代码列表,进行相应处理或与我司联系。 3、选型不合理 处理方法:对介电常数小的被测介质或应用于复杂的环境,尽可能选处理干扰同波功能强的。尽可能
    的头像 发表于 06-05 13:42 249次阅读

    如何提升代码质量与效率的秘诀

    提高编程能力其实没有捷径,最佳方式就是多代码。 不过,除了大量代码,提升编程能力还需要大量阅读别人
    的头像 发表于 04-28 14:53 359次阅读
    如何提升<b class='flag-5'>代码</b>质量与效率的秘诀

    阿里云内部全面推行AI代码

    阿里云正在内部全面推行 AI 编程,使用通义灵码辅助程序员代码、读代码、查 BUG、优化代码等。
    的头像 发表于 04-07 09:22 528次阅读

    【鸿蒙】OpenHarmony 4.0蓝牙代码结构简析

    OpenHarmony 4.0蓝牙代码结构简析前言 OpenHarmony 4.0上蓝牙仓和目录结构进行一次较大整改,本文基于4.0以上版本对蓝牙代码进行分析,便于读者快速了解和学习
    的头像 发表于 02-26 16:08 1492次阅读
    【鸿蒙】OpenHarmony 4.0蓝牙<b class='flag-5'>代码</b><b class='flag-5'>结构</b>简析

    需要修改AD7176-2的采样率从10sps到10Ksps,采样率尽可能多的变化,怎么操作?

    请问我需要修改AD7176-2的采样率从10sps到10Ksps,采样率尽可能多的变化,需要怎么做?通过修改主时钟频率来改变采样率吗?
    发表于 12-15 08:25

    数字前端生存指南—RTL

    在数字前端领域,RTL几乎与“设计代码”概念相同。
    的头像 发表于 12-04 10:14 8408次阅读
    数字前端生存指南—<b class='flag-5'>RTL</b>