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
    +关注

    关注

    1602

    文章

    21325

    浏览量

    593216
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119374
  • 加法器
    +关注

    关注

    6

    文章

    174

    浏览量

    29732
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66776

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    加法器

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

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

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

    4位并行的BCD加法器电路图

       图二所示为4位并行的BCD加法器电路。其中上面加法器的输入来自低一级的BCD数字。下
    发表于 03-28 16:35 1.2w次阅读
    4位并行的BCD<b class='flag-5'>加法器</b>电路图

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

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

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

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

    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.6w次阅读
    同相<b class='flag-5'>加法器</b>电路原理与同相<b class='flag-5'>加法器</b>计算

    加法器是如何实现

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

    加法器设计代码参考

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

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

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

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

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

    加法器的工作原理和电路解析

    加法器可以是半加法器或全加法器。不同之处在于半加法器仅用于将两个 1 位二进制数相加,因此其总和只能从 0 到 2。为了提高这种性能,开发了FullAdder。它能够添加三个 1 位二
    的头像 发表于 06-29 14:27 7642次阅读
    全<b class='flag-5'>加法器</b>的工作原理和电路解析

    镜像加法器的电路结构及仿真设计

    镜像加法器是一个经过改进的加法器电路,首先,它取消了进位反相门;
    的头像 发表于 07-07 14:20 1350次阅读
    镜像<b class='flag-5'>加法器</b>的电路结构及仿真设计