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

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

3天内不再提示

基于FPGA实现Mem加法器

Spinal FPGA 来源:Spinal FPGA 2023-10-17 10:22 次阅读

编 者 按

前段时间和几个人闲谈,看看在FPGA里面实现一个Mem加法器怎么玩儿

加法器

看一个很简单的代码:

val memContext=Array.fill(16*1024)(0)
def addOne(index:Int)={
memContext(index)=memContext(index)
}

一个很简单的功能。一个16K大小的数组。在软件人眼里这连最初级的面试题都算不上是吧~

那么我们考虑下在FPGA里面的实现。数组位宽如此之大,如果谁上来说用寄存器实现那真的要贻笑大方了~这种情况无他,只能使用Block Mem来实现。

相比于软件,逻辑设计引入了时序的概念,也就是加上了时钟这个维度。这里是要首先读出原始的数据加1后再写回回去。而对于Block Mem,其读延迟至少有一拍的读延迟,这里实现需要先读后写,如果要实现每拍均能处理一个指令那显然是需要Mem Write First类型了。

Block Mem

对于Block Mem,下面是Xilinx中Block Ram的结构图:

ad614d6e-6bf7-11ee-939d-92fbcf53809c.jpg

对于Block RAM,地址线在进入到Memory Array之前会先经过一级寄存器。Memory Array选择输出则会经过一级Latch,随后可通过选择器选择是直接输出还是再经过一级寄存器输出。

对于Block RAM的使用,如果选择读延迟为1 cycle,那么Dout会通过Latches输出,如果读延迟为2 cycle,那么Dout将会通过寄存器输出。初学FPGA那会儿,一般在使用Block RAM时,往往就无脑的选择一拍的delay设计模式。现在再来看,在FPGA设计里,这种形式往往不利于提升时钟频率。在FPGA设计里,如果想要尽可能提高时钟频率,那么对于Block Ram的使用则需要将Block Ram中Dout前的寄存器给使用起来,即读延迟需要两拍的延迟。而再考虑Block RAM的拼接,布局布线的位置,那么可能就需要更高的读延迟了。

对于高频设计,Memory的Write First的设计实现就需要考虑读延迟的拍数了~

假定Read Latency为N,那么上面的例子就相当于:

ad6c1d84-6bf7-11ee-939d-92fbcf53809c.jpg

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

    关注

    1625

    文章

    21658

    浏览量

    601622
  • Xilinx
    +关注

    关注

    71

    文章

    2163

    浏览量

    120961
  • 加法器
    +关注

    关注

    6

    文章

    183

    浏览量

    30086
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68316

原文标题:做个Mem加法器——Mem Write First

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

收藏 人收藏

    评论

    相关推荐

    运算放大器的同相加法器和反相加法器

      运算放大器构成加法器 可以分为同相加法器和反相加法器
    发表于 08-05 17:17 3w次阅读
    运算放大器的同相<b class='flag-5'>加法器</b>和反相<b class='flag-5'>加法器</b>

    加法器

    请问下大家,,进位选择加法器和进位跳跃加法器的区别是啥啊?我用Verilog实现16位他们的加法器有什么样的不同啊?还请知道的大神告诉我一下。。
    发表于 10-20 20:23

    什么是加法器加法器的原理是什么 ?

    什么是加法器加法器的原理是什么 反相加法器等效原理图解析
    发表于 03-11 06:30

    加法器,加法器是什么意思

    加法器,加法器是什么意思 加法器 :  加法器是为了实现加法的。  即是产生数的和的装置。加数
    发表于 03-08 16:48 5498次阅读

    十进制加法器,十进制加法器工作原理是什么?

    十进制加法器,十进制加法器工作原理是什么?   十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的“校正”逻辑来
    发表于 04-13 10:58 1.4w次阅读

    FPU加法器的设计与实现

    浮点运算器的核心运算部件是浮点加法器,它是实现浮点指令各种运算的基础,其设计优化对于提高浮点运算的速度和精度相当关键。文章从浮点加法器算法和电路实现的角度给出设计
    发表于 07-06 15:05 47次下载
    FPU<b class='flag-5'>加法器</b>的设计与<b class='flag-5'>实现</b>

    Xilinx 公司的加法器

    Xilinx FPGA工程例子源码:Xilinx 公司的加法器
    发表于 06-07 15:07 12次下载

    同相加法器电路原理与同相加法器计算

    同相加法器输入阻抗高,输出阻抗低 反相加法器输入阻抗低,输出阻抗高.加法器是一种数位电路,其可进行数字的加法计算。当选用同相加法器时,如A输
    发表于 09-13 17:23 5.7w次阅读
    同相<b class='flag-5'>加法器</b>电路原理与同相<b class='flag-5'>加法器</b>计算

    加法器是什么?加法器的原理,类型,设计详解

    加法器是为了实现加法的。即是产生数的和的装置。加数和被加数为输入,和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。
    发表于 06-06 08:45 2.4w次阅读
    <b class='flag-5'>加法器</b>是什么?<b class='flag-5'>加法器</b>的原理,类型,设计详解

    加法器是如何实现

     verilog实现加法器,从底层的门级电路级到行为级,本文对其做出了相应的阐述。
    发表于 02-18 14:53 6203次阅读
    <b class='flag-5'>加法器</b>是如何<b class='flag-5'>实现</b>的

    加法器设计代码参考

    介绍各种加法器的Verilog代码和testbench。
    发表于 05-31 09:23 19次下载

    超前进位加法器是如何实现记忆的呢

    行波进位加法器和超前进位加法器都是加法器,都是在逻辑电路中用作两个数相加的电路。我们再来回顾一下行波进位加法器
    发表于 08-05 16:45 1456次阅读
    超前进位<b class='flag-5'>加法器</b>是如何<b class='flag-5'>实现</b>记忆的呢

    加法器的原理及采用加法器的原因

    有关加法器的知识,加法器是用来做什么的,故名思义,加法器是为了实现加法的,它是一种产生数的和的装置,那么
    的头像 发表于 06-09 18:04 5051次阅读

    加法器的原理是什么 加法器有什么作用

    加法器是数字电路中的基本组件之一,用于执行数值的加法运算。加法器的基本原理和作用可以从以下几个方面进行详细阐述。
    的头像 发表于 05-23 15:01 2387次阅读
    <b class='flag-5'>加法器</b>的原理是什么 <b class='flag-5'>加法器</b>有什么作用

    串行加法器和并行加法器的区别?

    串行加法器和并行加法器是两种基本的数字电路设计,用于执行二进制数的加法运算。它们在设计哲学、性能特点以及应用场景上有着明显的区别。
    的头像 发表于 05-23 15:06 2142次阅读