Verilog流水线_verilog菜鸟教程

Verilog流水线_verilog菜鸟教程需求说明:Verilog设计基础内容   :流水线设计来自   :时间的诗流水线设计前言:本文从四部分对流水线设计进行分析,具体如下:第一部分什么是流水线第二部分什么时候用流水线设计第三部分使用流水线的优缺点第四部分流水线加法器举例第一什么是流水线流水线设计就是将组合逻辑系统地分割

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

需求说明:Verilog设计基础

内容       :流水线设计

来自       :时间的诗



流水线设计

前言:

本文从四部分对流水线设计进行分析,具体如下:

第一部分什么是流水线

第二部分什么时候用流水线设计

第三部分使用流水线的优缺点

第四部分流水线加法器举例

第一 什么是流水线

流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。

目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行

执行,所以能提高数据吞吐率(提高处理速度)。

第二 什么时候用流水线设计

使用流水线一般是时序比较紧张,对电路工作频率较高的时候。典型情况如下:

1)功能模块之间的流水线,用乒乓 buffer 来交互数据。代价是增加了 memory 的数量,但是和获得的巨大性能提升相

比,可以忽略不计。

2) I/O 瓶颈,比如某个运算需要输入 8 个数据,而 memroy 只能同时提供 2 个数据,如果通过适当划分运算步骤,使用

流水线反而会减少面积。

3)片内 sram 的读操作,因为 sram 的读操作本身就是两极流水线,除非下一步操作依赖读结果,否则使用流水线是自

然而然的事情。

4)组合逻辑太长,比如(a+b)*c,那么在加法和乘法之间插入寄存器是比较稳妥的做法。

第三  使用流水线的优缺点

1)优点: 流水线缩短了在一个时钟周期内给的那个信号必须通过的通路长度,增加了数据吞吐量,从而可以提高时钟

频率,但也导致了数据的延时。举例如下:

例如:一个 2 级组合逻辑,假定每级延迟相同为 Tpd,

1.无流水线的总延迟就是 2Tpd,可以在一个时钟周期完成,但是时钟周期受限制在 2Tpd;

2.流水线:

每一级加入寄存器(延迟为 Tco)后,单级的延迟为 Tpd+Tco,每级消耗一个时钟周期,流水线需要 2 个时钟周期

来获得第一个计算结果,称 为首次延迟,它要 2*( Tpd+Tco),但是执行重复操作时,只要一个时钟周期来获得最后的

计算结果,称为吞吐延迟( Tpd+Tco)。可见只要 Tco 小于 Tpd,流水线就可以提高速度。 特别需要说明的是,流水线

并不减小单次操作的时间,减小的是整个数据的操作时间,请大家认真体会。

2) 缺点: 功耗增加,面积增加,硬件复杂度增加,特别对于复杂逻辑如 cpu 的流水线而言,流水越深,发生

需要 hold 流水线或 reset 流水线的情况时,时间损失越大。 所以使用流水线并非有利无害,大家需权衡考虑。

第四 一个 8bit 流水线加法器的小例子

非流水线:

module add8(
  a, 
  b, 
  c);
  input  [7:0] a;
  input  [7:0] b;
  output [8:0] c;


  assign c[8:0] = {1'd0, a} + {1'd0, b};
endmodule

采用两级流水线:第一级低 4bit,第二级高 4bit,所以第一个输出需要 2 个时钟周期有效,后面的数据都是 1 个周期

之后有效。

module adder8_2(
  clk,
  cin,
  cina,
  cinb,
  
  sum,
  cout);
  
  input          clk;
  input          cin;
  input  [7:0]   cina;
  input  [7:0]   cinb;
  
  output [7:0]   sum;
  output         cout;
  
  reg            cout;
  reg            cout1; //插入的寄存器
  reg   [3 :0 ]  sum1 ; //插入的寄存器
  reg   [7 :0 ]  sum;
  reg   [3:0]    cina_reg;
  reg   [3:0]    cinb_reg;//插入的寄存器
  
  
  always @(posedge clk) //第一级流水
  begin
    {cout1 , sum1} <= cina[3:0] + cinb [3:0] + cin ;
  end
  
  always @(posedge clk)
  begin
    cina_reg <= cina[7:4];
    cinb_reg <= cinb[7:4];
  end
  
  
  
  always @(posedge clk) //第二级流水
  begin
    {cout ,sum[7:0]} <= {
  
  {1'b0,cina_reg[3:0]} + {1'b0,cinb_reg[3:0]} + cout1 ,sum1[3:0]} ;
  end
endmodule

这里讲到的流水线,主要是一种硬件设计的算法,如第一条中表述的流水线设计就是将组合逻辑系统地分割,并在各

个部分(分级)之间插入寄存器,并暂存中间数据的方法。

针对处理器中的流水线结构。比如,比如 5—6 个不同功能的电路单元组成一条指令处理流水线,

然后将一条指令分成 5—6 步后再由这些电路单元分别执行,这样就能实现在一个 CPU 时钟周期完成一条指令,因此

提高 CPU 的运算速度。 一般的 CPU 中,每条整数流水线都分为四级流水, 即指令预取、 译码、 执行、 写回结果, 

openrisc采用的是 5 级整数流水线。

当然它们的核心思想都是利用并行执行提高效率。

总结一下,流水线就是插入寄存器,以面积换取速度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170383.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月14日 上午8:36
下一篇 2022年8月14日 上午8:36


相关推荐

  • JAVA的垃圾回收机制_java的内存回收机制

    JAVA的垃圾回收机制_java的内存回收机制一:垃圾回收机制的意义java语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,java中的额对象不在有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存;内存泄露:指该内存空间使用完毕后未回收,在不涉及复杂数据结构的一般…

    2022年10月10日
    4
  • java权限拦截器

    java权限拦截器SecurityInterceptor.javapackagelight.mvc.framework.interceptors;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importlight.

    2022年5月29日
    36
  • linux 查看 定时任务 crontab 日志记录

    linux 查看 定时任务 crontab 日志记录在 Unix 和类 Unix 的操作系统之中 crontab 命令常用于设置周期性被执行的指令 也可以理解为设置定时任务 crontab 中的定时任务有时候没有成功执行 什么原因呢 这时就需要去日志里去分析一下了 那该如何查看 crontab 的日志记录呢 1 linux 看 var log cron log 这个文件就可以 可以用 tail f var log cron log 观察 2 unix 在 var spool cron tmp 文件中 有 croutXXX0018 的 tmp 文件 tail

    2026年3月17日
    3
  • CSS3与页面布局学习总结(四)——页面布局的多种方法

    CSS3与页面布局学习总结(四)——页面布局的多种方法一、负边距与浮动布局1.1、负边距所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%。当一个元素与另一个元素margin取负值时将拉近距离。常见的功能

    2022年8月3日
    19
  • 朋友圈一键集赞_朋友圈秒赞怎么做到的

    朋友圈一键集赞_朋友圈秒赞怎么做到的哈喽,今天又来给大家伙推荐神器啦~相信各位都曾遇到或亲身参与过朋友圈集赞活动。比如说部分商家、公众号为了达到宣传和涨粉的需求,要求用户转发相关的活动文章、海报到朋友圈,集满一定数量的赞后,才会给予相应的优惠或福利。这种动辄几十,上百的集赞要求,对于平时连朋友圈都懒得发的社畜来说,难度系数直逼五颗星。其一是碍于面子不便集赞,二是实在没有那么多朋友来给自己点赞。图片可是,商家、公众号们赠送的活动福利实在是“太香了”!虽然没有威逼,但是在利诱之下,难免不心动。正所谓,有需求就有市场。用户存在集赞难的痛点,

    2025年9月20日
    8
  • EXT中的apply方法

    EXT中的apply方法Ext.apply=function(o,c,defaults){if(defaults){//no"this"referenceforfriendlyoutofscopecallsExt.apply(o,defaults);}if(o&&c&&typeofc==…

    2022年7月28日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号