在项目过程中需要用FPGA在尽量少的时钟周期内实现多个数据相加。如果直接用组合的形式实现延迟太高,占用资源也太多,因此考虑基于流水线的并行加法树来实现多个数据相加,主要参考文章https://blog.csdn.net/MmikerR/article/details/106469344,使用Verilog对加法树进行了实现,通过模块的递归调用,实现了任意个数、任意位宽数据的并行加法计算。

整个结构类似于二叉树,每一级将待加数据分成2组,通过递归最后分解为单个数,结合DELAY_STAGES参数的传递实现单枝上数据的延迟,每个节点插入寄存器。每个节点都对其两个子节点的输出进行求和。每一层中间插入寄存器,实现流水作业,同时,根据实际需求也可以通过DELAY_STAGES参数的设置实现不插入寄存器的纯组合形式。对L=7个数进行求和计算过程如下图所示,每个节点的输出表示对L个数求和的结果。

System Verilog的程序参考博客中已经给出了,在转写Verilog的过程中有几点需要注意:

1)generate if的用法

2)二维数组打平

3)参数控制树的深度和求和个数

4)移位寄存器的改写

5)位宽匹配

仿真测试了对256个1bit数相加的结果,计算共用了8个时钟周期。

Verilog并行加法树实现相关推荐

  1. FPGA并行加法树设计

    之前在设计中遇到过1个问题,如何在verilog中并行实现大量数据(几十.几百个甚至更多)的加法操作. 最直接想到的方法一般会类似: reg [7:0] data [N - 1 : 0];wire[M ...

  2. 数字电路基础知识——组合逻辑电路之乘法器的设计(一)—— 并行、移位相加、加法树、查找表乘法器

    数字电路基础知识--乘法器的设计(一)-- 并行.移位相加.加法树.查找表 乘法器的设计主要应用在数字信号处理和数字通信,本节主要介绍乘法器的四种实现方法.使用并行乘法器.移位相加乘法器.查找表乘法器 ...

  3. 网站性能分析(下)-让网站并行加载但顺序执行JS

    如果网站不支持JavaScript,复杂的功能将无法正常工作.在开发当中通常有几个脚本会写在HTML文件的头部.你嵌入的越多,网站的速度潜在的变得越慢.因此提高并行加载速度变得非常有必要,在前面的文章 ...

  4. 从零开始构建基于textcnn的文本分类模型(上),word2vec向量训练,预训练词向量模型加载,pytorch Dataset、collete_fn、Dataloader转换数据集并行加载

    伴随着bert.transformer模型的提出,文本预训练模型应用于各项NLP任务.文本分类任务是最基础的NLP任务,本文回顾最先采用CNN用于文本分类之一的textcnn模型,意在巩固分词.词向量 ...

  5. ajax加载对应的json,jQuery:多个AJAX/JSON请求对应单个回调并行加载

    因为我们使用jQuery,这意味着需要调用 jQuery.getScript 和 jQuery.getJSON 函数. 我知道这些函数都是异步执行(asyncronously)并且会延迟一段时间返回, ...

  6. mysql并行加载机制_Mysql表引擎优化

    http://blog.csdn.net/naughty610/article/details/7464794 MyISAM: 第一,优化参数 这个表引擎只存储索引的缓存,而不存储数据的缓存.可以通过 ...

  7. 【Azure Data Platform】ETL工具(13)——ADF并行加载多个文件

    本文属于[Azure Data Platform]系列. 接上文:[Azure Data Platform]ETL工具(12)--ADF 参数 本文介绍ADF 的并行导入多个文件 前言 在一个数据类的 ...

  8. 【Verilog基础】Verilog实现加扰器(Scrambler )与解扰器(Descrambler)

    文章目录 一.加扰器和解扰器简介 二.加扰器和解扰器原理框图 三.加扰器和解扰器Verilog实现 3.1.加扰器实现 3.2.解扰器实现 3.3.TestBench 参考 一.加扰器和解扰器简介 一 ...

  9. html并行加载,html – 浏览器中的最大并行HTTP连接数?

    我创建一些挂起的连接到http服务器(彗星,反向ajax等).它工作确定,但我看到浏览器只允许同时给定域的两个挂起的连接.因此,如果用户在他们的浏览器的Tab1中查看我的网络应用程序,也尝试在Tab2 ...

  10. verilog自加为什么会出现高阻态

    之前在写自加逻辑时,仿真结果经常会出现高阻态,常常百思不得其解,这次简单分析一下. always@(negedge clk_ad or negedge rst_n)begin if(!rst_n)be ...

最新文章

  1. 月薪5万程序员眼中的单例模式
  2. create-react-app支持antd按需导入
  3. python3 ssl.CertificateError: hostname manifest.googlevideo.com doesn t match either
  4. flask_requirements
  5. mac改变文件权限git识别为修改的问题
  6. numpy(1)-numpy.ndarray
  7. union all怎么用在循环里_ai软件怎么使用?ai里基本功能怎么用?
  8. 定时修改列表 服务器版,Unity定时回调(服务端不依赖Update)
  9. java listener详解_Java监听器Listener使用详解
  10. Converter Tutorial
  11. 美团提出具有「位置编码」的Transformer,性能优于ViT和DeiT
  12. linux里的网卡自动连接,【Raspberry Pi】USB无线网卡自动连接
  13. java读取clob字段的几种方法(转)
  14. Ansible Inventory
  15. 解决只可以上QQ却不可以上网问题
  16. python 无头浏览器_python3使用无头浏览器
  17. 传说中的世界500强面试题-数学能力(2)
  18. 10g gtx 光纤通信测试_光纤通信系统仿真实验
  19. 清华现超级“学霸” 15门课程100分4门99分(图)
  20. 站内信 java_站内信的实现思路表的设计

热门文章

  1. python实战演练二:抓取我自己csdm博客信息的标题和文章链接,并存入文件夹《列表存入数据到txt》
  2. 用python批量下载网易云音乐_python实现网易云音乐批量下载
  3. 数理统计中的卡方分布,t分布和F分布
  4. python常用代码大全,常用库大全
  5. 物联网(IOT)介绍与发展背景
  6. ildasm.exe查看dll库支持的Net版本
  7. android真机调试工具,ADB 安卓真机调试工具
  8. linux 交叉编译yuv,libyuv交叉编译
  9. python压缩视频文件_python压缩图片和视频
  10. 第十届泰迪杯数据挖掘B题电力系统负荷预测分析