verilog流水线设计代码_流水线cpu设计verilog

verilog流水线设计代码_流水线cpu设计verilog介绍定义:流水线设计就是将组合逻辑分割,并在各级之间插入寄存器,暂存中间数据的方法。以面积换速度。优点:每一部分延时降低——可用更快的时钟;大部分电路同时运算——提高数据吞吐率。缺点:增加面积;流水线并不减小单个数据操作的时间,减小的是整个数据流的操作时间;(不懂)功耗增加,硬件复杂度增加,特别对于复杂逻辑如cpu的流水线而言,流水越深,发生需要hold流水线或reset流水线的情况时,时间损失越大。所以使用流水线并非有利无害,大家需权衡考虑。应用场景:1)组合逻辑太长,

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

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

介绍

定义:流水线设计就是将组合逻辑分割,并在各级之间插入寄存器,暂存中间数据的方法。以面积换速度。
在这里插入图片描述

在这里插入图片描述

优点:每一部分延时降低——可用更快的时钟;大部分电路同时运算——提高数据吞吐率。
缺点:增加面积;流水线并不减小单个数据操作的时间,减小的是整个数据流的操作时间;
(不懂)功耗增加,硬件复杂度增加,特别对于复杂逻辑如 cpu 的流水线而言,流水越深,发生需要 hold 流水线或 reset 流水线的情况时,时间损失越大。 所以使用流水线并非有利无害,大家需权衡考虑。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

应用场景
1)组合逻辑太长,比如(a+b)*c,那么在加法和乘法之间插入寄存器是比较稳妥的做法。
2)功能模块之间的流水线,用乒乓 buffer来交互数据。代价是增加了 memory 的数量,但是和获得的巨大性能提升相比,可以忽略不计。(详见乒乓设计)

(3 4不懂)
3) I/O 瓶颈,比如某个运算需要输入 8 个数据,而 memroy 只能同时提供 2 个数据,如果通过适当划分运算步骤,使用流水线反而会减少面积。
4)片内 sram 的读操作,因为 sram 的读操作本身就是两极流水线,除非下一步操作依赖读结果,否则使用流水线是自然而然的事情。

举例 8bit 流水线加法器
非流水线:

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

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

  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) //第一级同时要寄存高4位
  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

参考资料
https://blog.csdn.net/times_poem/article/details/52033535

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 编译器指令重排和CPU指令重排_十进制调整指令DA怎么用

    编译器指令重排和CPU指令重排_十进制调整指令DA怎么用这个知识点也是很多人说不清道不明的地方,感觉都知道,说又说不出来。为什么会这样呢?因为这几个字,很容易被当成动词去理解,其实正确的理解是当成名词,即指令重排现象。那什么时候会产生指令重排现象呢?两个阶段:1、编译期;2、运行期。编译期指令重排解释型语言是在运行期间执行编译+运行动作,所以运行效率较编译型语言低。Java既可以作为解释型语言去用,也可以作为编译型语言。但是主流的做法是当成编译型语言在…

    2022年10月8日
    2
  • 关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解[通俗易懂]

    关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解[通俗易懂]lambda是Python编程语言中使用频率较高的一个关键字。那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多。这里,我们通过阅读各方资料,总结了关于Python中的lambda的“一个语法,三个特性,四个用法,一个争论”。欢迎阅读和沟通(个人微信:slxiaozju)。由于文章是从我的公众号上复制过来的,因此排版不整齐,但是内容绝对充实,欢迎关注公众…

    2022年8月12日
    7
  • phpstorm2020激活码【在线破解激活】

    phpstorm2020激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    115
  • Admin组件

    Django提供了admin组件为项目提供基本的管理后台功能(对数据表的增删改查)。本篇文章通过对admin源码简单分析admin内部原理,扩展使用方式,为以后进行定制和自己开发组件做铺垫

    2022年3月29日
    37
  • Mac 卸载Java「建议收藏」

    Mac 卸载Java「建议收藏」Mac彻底卸载Javamac上终端安装了太多的JavaJDK版本,计划全部删除,重新安装最新版本JDK。打开终端输入以下命令://1、移除JavaAppletPlugin.plugin与JavaControlPanel.prefpanesudorm-fr/Library/Internet\Plug-Ins/JavaAppletPlugin.pluginsudorm-fr/Library/PreferencesPanes/JavaControlPanel.prefpane

    2022年5月19日
    83
  • 各种窗口最小化快捷键详解「建议收藏」

    各种窗口最小化快捷键详解「建议收藏」一、ALT+Esc可以使当前窗口最小化。二、Win+D最小化所有窗口,再按一下就可以还原窗口。三、Windows+M最小化所有窗口。四、Windows+Shift+M还原最小化的窗口。五、A

    2022年8月4日
    5

发表回复

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

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