所谓流水线(pipeline)设计,通常来说是流水生产线。

同样,组合逻辑路径可以看作是一条生产线,路径上的每个逻辑单元都可以看作是一个阶段,都会产生时延。

  • 如果不采用流水设计,前后级组合逻辑依次工作,那么这条路径的模型就是

原始的生产线。如果采用流水设计,那么前后级组合逻辑可以同时工作,就像新的生产线一样。

在FPGA设计中,通常在适当组合逻辑中插入寄存器,以提高速度。这里对于插入寄存器提高速度,我们暂不分析。

流水线模型

今天我们分析一下在实现CORDIC算法中,流水线操作和控制器操作的比较。

在实现CORDIC算法时,有两种方法。第一是使用流水线操作,不仅能够提高系统速度,而且能够加快输出的速度。

16次迭代流水线仿真输出如下图:

从上图可以看到,使用流水线方式,处理第一次输出需要等待16个时钟周期外,后面的输出将以流水的方式根据输入的有效而不断输出。这种流水线方式适用于要求连续输出的场景。

上图是在C4的FPGA上综合后的资源使用情况,可以看到,资源使用量非常大,其中大量的资源都浪费在加法器以及寄存器的使用上。乘法器资源也用了20%。

第二种方式是使用控制器的模式实现CORDIC算法。

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

上图为在C4的FPGA上综合后资源的使用情况。,可以看到,比起流水线操作,控制器方式资源使用大大减少。

上面简单分析了两种方式实现CORDIC算法。我们不能够说谁优谁劣,只能是在不同的场景使用不同的方法达到最后的设计功能。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号


扫描二维码关注杭州卿萃科技FPGA极客空间


最新文章

  1. Tomcat 启动项目报错 java.lang.OutOfMemoryError: Java heap space
  2. MES系统学习
  3. Intellij IDEA13无法使用SVN
  4. cotangent Laplacian
  5. spring framework 各版本源码下载地址
  6. CImg 读取jpg, png ,tif 等格式失败解决方案
  7. Linux更换python版本 (转载)
  8. Netbeans源代码编辑技巧——使用代码补全和代码生成
  9. jQuery中操作Ajax方法小结
  10. nefu 179 珠子(最长递增子序列问题)
  11. Tencent社会招聘scrapy爬虫 --- 已经解决
  12. BZOJ1209 [HNOI2004]最佳包裹 三维凸包 计算几何
  13. bp暴力破解(转载)
  14. MySQL中的三中循环 while 、 loop 、repeat 求 1~n 的和
  15. golang内置数据类型作为函数参数
  16. windows版mysql配置--my.ini
  17. Maven 项目中 添加自己的jar包
  18. 「Vue」Vue cli3中引用mui-ui问题及解决办法
  19. Beta阶段贡献分配规则
  20. spring boot快速入门 3: controller的使用

热门文章

  1. C# 图片缩放,拖拽后保存成图片的功能
  2. 使用游标、存储过程、pivot 三种方法导入数据
  3. Week14《Java程序设计》第14次作业总结
  4. Python中列表生成式和字典生成式练习
  5. C++解决error C4996报错
  6. Vim技能修炼教程(4) - 基本功
  7. 网络编程 socket编程 - Asyncsocke
  8. js之隔行换色
  9. PHP 关于empty和isset对于参数的判断结果
  10. NET MVC 升级到5.1后,View视图中代码报错