下面的内容来自:《从算法设计到硬件逻辑的实现》

所谓流水线设计实际上就是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组暂存中间数据。K 级的流水线就是从组合逻辑的输入到输出恰好有 K 个寄存器组(分为 K 级,每一级都有一个寄存器组)上一级的输出是下一级的输入而又无反馈的电路。

图 5.6 表示了如何将把组合逻辑设计转换为相同组合逻辑功能的流水线设计。这个组合逻辑包括两级。第一级的延迟是 T1 和 T3 两个延迟中的最大值;第二级的延迟等于 T2 的延迟。为了通过这个组合逻辑得到稳定的计算结果输出,需要等待的传播延迟为[max(T1,T3)+T2]个时间单位。在从输入到输出的每一级插入寄存器后,流水线设计的第一级寄存器所具有的总的延迟为 T1 与 T3 时延中的最大值加上寄存器的 Tco(触发时间)。同样,第二级寄存器延迟为 T2 的时延加上 Tco。采用流水线设计为取得稳定的输出总体计算周期为:

max(max(T1,T3)+Tco,(T2+Tco))

流水线设计需要两个时钟周期来获取第一个计算结果,而只需要一个时钟周期来获取随后的计算结果。开始时用来获取第一个计算结果的两个时钟周期被称为采用流水线设计的首次延迟(latency)。

对于 CPLD 来说,器件的延迟如 T1、T2 和 T3 相对于触发器的 Tco 要长得多,并且寄存器的建立时间 Tsu 也要比器件的延迟快得多。只有在上述关于硬件时延的假设为真的情况下,流水线设计才能获得比同功能的组合逻辑设计更高的性能。

采用流水线设计的优势在于它能提高吞吐量(throughput)。假设 T1、T2 和 T3 具有同样的传递延迟 Tpd。对于组合逻辑设计而言,总的延迟为 2*Tpd。对于流水线设计来说,计算周期为(Tpd+Tco)。前面提及的首次延迟(latency)的概念实际上就是将(从输入到输出)最长的路径进行初始化所需要的时间总量;吞吐延迟则是执行一次重复性操作所需要的时间总量。在组合逻辑设计中,首次延迟和吞吐延迟同为 2*Tpd。与之相比,在流水线设计中,首次延迟是 2*(Tpd+Tco),而吞吐延迟是 Tpd+Tco。如果 CPLD 硬件能提供快速的Tco,则流水线设计相对于同样功能的组合逻辑设计能提供更大的吞吐量。典型的富含寄存器资源的 CPLD 器件(如 Lattice 的 ispLSI 8840)的 Tpd 为 8.5ns,Tco 为 6ns。

流水线设计在性能上的提高是以消耗较多的寄存器资源为代价的。对于非常简单的用于数据传输的组合逻辑设计,例如上述例子,将它们转换成流水线设计可能只需增加很少的寄存器单元。随着组合逻辑变得复杂,为了保证中间的计算结果都在同一时钟周期内得到,必须在各级之间加入更多的寄存器。如果需要在 CPLD 中实现复杂的流水线设计,以获取更优良的性能,具有丰富寄存器资源的 CPLD 结构并且具有可预测的延迟这两大特点的 FPGA是一个很有吸引力的选择。

具体的案例我就不举例了,因为我看不懂!

下面直接给结论:

改为流水线结构是提高组合逻辑吞吐量从而增强计算性能的一个重要办法。为获取高性能所付出的代价是要使用更多的寄存器。要实现这样大规模的运算部件,只含少量寄存器资源的普通 PLD 器件是无法办到的,必须使用拥有大量寄存器资源的 CPLD 或 FPGA 器件或设计专用的 ASIC。

当用 Verilog 语言描述流水线结构的运算部件时,要使用结构描述,才能够真正综合成设计者想要的流水线结构。简单的运算符表达式只有在综合库中存有相应的流水线结构的宏库部件时,才能综合成流水线结构从而显著地提高运算速度。(希望综合库中有吧) 从这一意义上来说,深入了解和掌握电路的结构是进行高水平 HDL 设计的基础。

最后给出一个纯英文的文档,我还没耐心去读,应该还不错:http://www-inst.eecs.berkeley.edu/~cs61c/sp15/lec/13/2015Sp-CS61C-L13-kavs-Pipelining-1up.pdf

【FPGA】流水线学习笔记相关推荐

  1. FPGA系统性学习笔记连载_Day1数字电路基础篇

    FPGA系统性学习笔记连载_Day1数字电路基础篇 连载<叁芯智能FPGA设计与研发就业班-第一天> <数字电路基础1> 原创作者:紫枫术河 转载请联系群主授权,否则追究责任 ...

  2. FPGA系统性学习笔记连载_Day19【综合实验】之【数字钟】【Intel Cycle IV FPGA平台验证】

    FPGA系统性学习笔记连载_Day19[综合实验]之[数字钟][Intel Cycle IV FPGA平台验证] 本系列为FPGA系统性学习学员学习笔记整理分享,如有学习或者购买开发板意向,可加交流群 ...

  3. FPGA系统性学习笔记连载_Day8【4位乘法器、4位除法器设计】 【原理及verilog实现、仿真】篇

    FPGA系统性学习笔记连载_Day8[4位乘法器.4位除法器设计] [原理及verilog实现.仿真]篇 连载<叁芯智能fpga设计与研发-第8天> [4位乘法器.4位除法器设计] [原理 ...

  4. FPGA系统性学习笔记连载_Day7【16位比较器设计】 【原理及verilog实现、仿真】篇

    FPGA系统性学习笔记连载_Day7[16位比较器设计] [原理及verilog实现.仿真]篇 连载<叁芯智能fpga设计与研发-第7天>[16位比较器设计] [原理及verilog实现. ...

  5. 达芬奇PRO板的FPGA功能学习笔记(一)

    达芬奇PRO板的FPGA功能学习笔记(一) 从编译到实现需要五个步骤: 1.写代码(verilog语言) 2.综合分析 3.写约束文件 约束文件主要是定义接口,命令第一个关键字代表命令的名称,其后的每 ...

  6. FPGA系统性学习笔记连载_Day15【状态机、自动售货机】 【原理及verilog仿真】篇

    FPGA系统性学习笔记连载_Day15[状态机.自动售货机] [原理及verilog仿真]篇 本系列为FPGA系统性学习学员学习笔记整理分享,如有学习或者购买开发板意向,可加交流群联系群主. 连载&l ...

  7. 数字设计FPGA应用学习笔记

    转载https://blog.csdn.net/chinkwoyu/article/details/80259064 数字设计FPGA应用学习笔记 数字设计FPGA应用学习笔记 第一章 FPGA基础及 ...

  8. 流水线学习笔记(一)

    摘要:对于偏软件的程序员,时常对指令的乱序执行,寄存器重命名,超标量处理器,等名词感到疑惑.本文将对这些知识进行初步介绍,为你解开这些疑惑.本文是我阅读Computer Architecture- A ...

  9. FPGA — BRAM学习笔记—读写操作

    使用软件: Vivado 开发板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA BRAM笔记 BRAM介绍 同步双端口BRAM BRAM读写操作 (1)读操 ...

最新文章

  1. mysql版本 时间_【MySQL】MySQL版本时间线和MySQL各版本的区别
  2. 单源最短路——dijkstra算法
  3. boost::log::sinks::syslog用法的测试程序
  4. 城市间紧急救援 (25 分)【dijkstra模板 超时原因】
  5. c 语言读文件数据库,C语言文件怎么读取?
  6. 演示: GTS流量×××和CAR流量监管的效果及相关实践计划
  7. [html] DOM节点的根节点是不是body?
  8. 顺着 IT 的潮流,C语言再次迎来了春天!学好了C语言能做什么?
  9. 网页中、英文安全字体选择及设置
  10. Java停车场管理系统使用栈和队列任务台程序
  11. 系统集成项目管理视频课程
  12. EBS R12.1安装中文补丁包BUG:FAILED: file XLIFFLoader.class on worker [X]
  13. jquery点击按钮显示和隐藏div
  14. 余承东:华为P50系列无5G版本,但依然流畅
  15. 机器学习and深度学习学习资料
  16. 综述-自动驾驶中基于图像的3D目标检测
  17. 遇到一个奇怪的问题——关于VS2013、VS2015中字符集(多字节字符集和Unicode字符集)的选择
  18. 注意力机制Attention Mechanism的数学原理
  19. 每次遇到浏览器主页被篡改的问题,就特别气愤加头疼
  20. Centos互信搭建

热门文章

  1. CISCO RS 的常用命令
  2. python r语言 作图_R语言低级绘图函数-rect
  3. 点云的无序性_PU-Net:解决3D点云数据的上采样问题
  4. c语言dp状态转移方程,[总结-动态规划]经典DP状态设定和转移方程
  5. linux sqlncli 乱码,SQL SERVE报错SQLNCLI 返回了消息 Unspecified error
  6. kicad绿油开窗_GitHub - OS-Q/S05: KiCad EDA
  7. ecshop affiche.php,affiche.php
  8. python两行数据相加_python高手养成记08:教你快速写出自己的python程序
  9. 集成两路MAX1169的STC8G1K08模块,带有两路PWM输出
  10. 多种方式测量AMP328频率响应