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

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

3天内不再提示

采用RTL代码描述位宽相同的两个数相加或相减

FPGA技术驿站 来源:Lauren的FPGA 2020-09-27 15:17 次阅读

本文用的芯片型号为xcku115-flvd1924-1L-i,时钟频率为400MHz。

两个有符号数相加

采用RTL代码描述位宽相同的两个数相加或相减,无论是有符号数还是无符号数,Vivado综合后的结果是一致的。以32bit数据为例,相应的代码如下图所示。这里考虑到两个32bit数据相加其结果可能为33bit,同时对于高速设计(时钟频率至少400MHz)为了满足性能,对输入和输出分别添加了流水寄存器

最终的资源利用率如下图所示。

从逻辑级数的角度看,逻辑级数最大为5(有一条),大多数路径为3,如下图所示。

从综合属性角度看,可以通过use_dsp属性使得该加法操作映射到DSP48中,该属性的使用方法如下图所示。

采用DSP48实现时,上述代码可达到完全映射,不会消耗SLICE中的任何资源。假定时钟频率为400MHz,对比使用LUT+FF和DSP48两种实现方式,不难看出后者在时序(逻辑级数降低至1)和功耗方面均有优势。

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

    关注

    30

    文章

    5028

    浏览量

    117719
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59064
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66764

原文标题:两个数相加,三个数相加有什么不同

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

收藏 人收藏

    评论

    相关推荐

    原电池中的两个电极能是相同的吗?

    在原电池的设计和运作中,两个电极是否可以相同,这取决于电池的类型和所需的电化学反应。
    的头像 发表于 04-26 17:32 71次阅读

    PSOC同时使用两个Em_EEPROM,有一个数据会丢失的原因?

    PSOC同时使用两个Em_EEPROM,现在发现有一个数据会丢失,想查看两个Em_EEPROM的起始地址和结束地址,在哪里可以看的到?
    发表于 02-21 07:20

    labview怎么查数组中相同元素的个数

    数组中的每个元素。 在每次循环迭代中,使用“Case Structure”结构将当前元素与数组中的其他元素进行比较。为此,可以使用另一个嵌套的“For Loop”来遍历数组并计算相同元素的个数。 在嵌套的“For Loop”中,使用“Equal?”函数来比较
    的头像 发表于 12-28 16:42 1020次阅读

    AD9269在AD两个通道的入口输入峰值相同的差分信号,为什么AD两个通道的输出不同?

    在AD两个通道的入口输入峰值相同的差分信号,为什么AD两个通道的输出不同,最高位的符号为什么不同
    发表于 12-12 06:55

    数字前端生存指南—RTL

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

    关于AD6688输出的问题

    论坛的大牛们好,我最近在使用AD6688,是一款14的ADC,但是如果配置N=16,CS=0的话,输出的数据会是16的。我本以为是高两位两位
    发表于 12-01 07:31

    python中如何交换两个数的值相加

    Python是一种简单易学的高级语言,其交换两个数的值相加是一种常见的操作。交换变量的值可以在许多情况下发挥作用,如算法、排序、逻辑控制等。本文将详细介绍Python中实现交换两个数
    的头像 发表于 11-29 17:29 349次阅读

    python中如何交换两个数的位置

    在Python中,我们可以使用多种方法来交换两个数的位置。下面将详细介绍这些方法,并提供示例代码和解释。 方法一:使用临时变量进行交换 这是最简单的方法之一,我们可以使用一个临时变量来交换两个数
    的头像 发表于 11-22 10:56 1285次阅读

    python怎样让列表里的数相加

    中,可以使用方括号来定义一个列表,例如: numbers = [ 1 , 2 , 3 , 4 , 5 ] 我们可以使用for循环遍历这个列表,并将每个数相加到一个累加变量中。以下是一个简单的代码示例
    的头像 发表于 11-22 09:53 1049次阅读

    两个串口,停止不同互相通讯会怎样?

    两个串口,波特率相同,停止不同。比如A串口停止为1,B串口停止2,互相通讯会出现什么后果?
    发表于 11-02 07:19

    怎么保证两个设备的SPI通信相位相同

    怎么保证两个设备的SPI通信相位相同
    发表于 10-15 12:28

    从可综合的RTL代码的角度聊聊interface

    SystemVerilog引入了interface,这里我们从可综合的RTL代码的角度聊聊interface。
    的头像 发表于 10-12 09:06 887次阅读
    从可综合的<b class='flag-5'>RTL</b><b class='flag-5'>代码</b>的角度聊聊interface

    JK触发器与T触发器的Verilog代码实现和RTL电路实现

    JK 触发器的 Verilog 代码实现和 RTL 电路实现
    的头像 发表于 10-09 17:29 2526次阅读
    JK触发器与T触发器的Verilog<b class='flag-5'>代码</b>实现和<b class='flag-5'>RTL</b>电路实现

    【verilog每日一练】变量截取语法

    使用变量[起始地址 +: 数据],变量[结束地址 -: 数据] 的语法截取变量部分的
    发表于 09-01 18:04

    是否有示例代码显示如何使用FlexIO同时读取两个多个引脚?

    是否有示例代码显示如何使用 FlexIO 同时读取两个多个引脚? 我有兴趣在一个时钟上读取多个 ADC 并输出到 DAC。
    发表于 05-19 10:03