关于PIPELINE,也许你应该知道

所谓流水线(pipeline)设计,通常来说是流水生产线。
同样,组合逻辑路径可以看作是一条生产线,路径上的每个逻辑单元都可以看作是一个阶段,都会产生时延。
如果不采用流水设计,前后级组合逻辑依次工作,那么这条路径的模型就是
原始的生产线。如果采用流水设计,那么前后级组合逻辑可以同时工作,就像新的生产线一样。
在FPGA设计中,通常在适当组合逻辑中插入寄存器,以提高速度。这里对于插入寄存器提高速度,我们暂不分析。

流水线模型
今天我们分析一下在实现CORDIC算法中,流水线操作和控制器操作的比较。
在实现CORDIC算法时,有两种方法。第一是使用流水线操作,不仅能够提高系统速度,而且能够加快输出的速度。
16次迭代流水线仿真输出如下图:
从上图可以看到,使用流水线方式,处理第一次输出需要等待16个时钟周期外,后面的输出将以流水的方式根据输入的有效而不断输出。这种流水线方式适用于要求连续输出的场景。

上图是在C4的FPGA上综合后的资源使用情况,可以看到,资源使用量非常大,其中大量的资源都浪费在加法器以及寄存器的使用上。乘法器资源也用了20%。
第二种方式是使用控制器的模式实现CORDIC算法。

上图是使用控制器的方式实现CORDIC算法,可以看到每个输出都需要等待16个时钟周期,时效性比流水线方式低很多,适用于不需要实时输出的场景。

上图为在C4的FPGA上综合后资源的使用情况。,可以看到,比起流水线操作,控制器方式资源使用大大减少。
上面简单分析了两种方式实现CORDIC算法。我们不能够说谁优谁劣,只能是在不同的场景使用不同的方法达到最后的设计功能。
版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处
作者:杭州卿萃科技ALIFPGA
原文地址:杭州卿萃科技FPGA极客空间 微信公众号

扫描二维码关注杭州卿萃科技FPGA极客空间
关于PIPELINE,也许你应该知道的更多相关文章
- fackbook的Fresco的Image Pipeline以及自身的缓存机制
fackbook的Fresco的Image Pipeline以及自身的缓存机制 配置之前.首先需要知道两点:一点是Bitmap缓存.一点是如果你仅仅需要一个缓存,那么不调用setSmallImageD ...
- [持续交付实践] pipeline使用:项目样例
项目说明 本文将以一个微服务项目的具体pipeline样例进行脚本编写说明.一条完整的pipeline交付流水线通常会包括代码获取.单元测试.静态检查.打包部署.接口层测试.UI层测试.性能专项测试( ...
- 一种简单实现Redis集群Pipeline功能的方法及性能测试
上一篇文章<redis pipeline批量处理提高性能>中我们讲到redis pipeline模式在批量数据处理上带来了很大的性能提升,我们先来回顾一下pipeline的原理,redis ...
- ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part II
https://www.cnblogs.com/artech/archive/2007/09/13/891266.html 二.ASP.NET Runtime Pipeline(续ASP.NET Ht ...
- redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作
前段时间在做用户画像的时候,遇到了这样的一个问题,记录某一个商品的用户购买群,刚好这种需求就可以用到Redis中的Set,key作为productID,value 就是具体的customerid集合, ...
- Building the Testing Pipeline
This essay is a part of my knowledge sharing session slides which are shared for development and qua ...
- 分享我对 ASP.NET vNext 的一些感受,也许多年回过头看 So Easy!
写在前面 阅读目录: Visual Studio "14" CTP 关于 ASP.NET vNext ASP.NET vNext 实践 后记 ASP.NET vNext 发布已经过 ...
- Scrapy:为spider指定pipeline
当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...
- 图解Netty之Pipeline、channel、Context之间的数据流向。
声明:本文为原创博文,禁止转载. 以下所绘制图形均基于Netty4.0.28版本. 一.connect(outbound类型事件) 当用户调用channel的connect时,会发起一个 ...
随机推荐
- line-height:150% 和 line-height:1.5的区别
line-height:150% 是继承父元素的距离 line-height:1.5 是计算各子元素的距离 1.当line - height 为百分比时: body{ font-size:14px; ...
- 更新pip源,提高python下载安装包速度的方式(window及linux)
python需要经常安装各种模块,而pip是很强大的模块安装工具,自带的pip下载源在国外,导致每次下载速度太慢,所以我们最好是将自己使用的pip源更换更换成国内的下载源可提高开发效率 linux环境 ...
- Mimiktaz抓取本机密码
Mimiktaz2.0以后的版本只需要两条命令即可实现密码的抓取 mimikatz # privilege::debug mimikatz # sekurlsa::logonpasswords
- ETL学习整理 PostgreSQL
ETL分别是“Extract”.“ Transform” .“Load”三个单词的首字母缩写也就是“抽取”.“转换”.“装载”,但我们日常往往简称其为数据抽取. ETL是BI/DW(商务智能/数据仓库 ...
- ionic安装插件常用命令
常见插件查找网站: http://ngcordova.com/docs/plugins http://cordova.apache.org/plugins/ $ ionic plugin list / ...
- MAC 下安装 SVN
在mac下安装svn走了很多弯路,进过探索,现在对svn的安装做了总结,可以分为2种: 1.由于 xCode自带svn,所以可以安装xCode 1).打开App Store,搜索xCode,下载安装 ...
- Java堆空间溢出解决方法 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
一般通过java -jar filename.jar运行jar包,但是当运行的java程序需要较大的内存时,可能会造成堆空间溢出. 例如,加载了几个G大小的json文件,运行报错: Exception ...
- Ext JS 5 关于Store load返回json错误信息或异常的处理
关于在store load的时候服务器返回错误信息或服务器出错的处理.ExtJS4应该也能用,没测试过. 这里有两种情况: 服务器返回错误json错误信息,状态为200 服务器异常,状态为500 一. ...
- Git详解之十 Git常用命令
下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一. ...
- Centos kvm+ceph
Centos kvm+ceph 一. centos6.5 安装kvm 1. disable selinux 2. 确认支持intel虚拟化 3. 安装需要的包 4.设置桥接网络 5.运行kvm ins ...