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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • goland 激活码2021.3月最新在线激活[通俗易懂]

    goland 激活码20213月最新在线激活,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 数据结构

    数据结构数据结构

  • Salesforce中的单点登录简介「建议收藏」

    Salesforce中的单点登录简介「建议收藏」单点登录的定义引自维基百科:单点登录(英语:Singlesignon,缩写为SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,

  • mysql查询语句select-(null,not null,is null和is not null)

    mysql查询语句select-(null,not null,is null和is not null)1一些概念  1.1null与notnull  null和notnull是mysql的字段属性,或称为数据类型的属性,不属于任何类型。null值也不等同于空值,空值是不占用存储空间的,null占用存储空间,如对myisam表占用1bit额外存储空间。  1.2isnull与isnotnull  isnull和isnotnull是mysq

  • python第三方库怎么下载安装_简谈下载安装Python第三方库的三种方法「建议收藏」

    python第三方库怎么下载安装_简谈下载安装Python第三方库的三种方法「建议收藏」如何下载安装Python第三方库(注:此文章以Windows的安装环境为前提)一、利用Python中的pip进行第三方库的下载首先我们要搞清楚Python中的pip是个什么东东?pip是一个安装和管理Python包的工具,可以对python的包进行管理和升级等操作。具体的方法如下:1、首先是要找到python安装中自带的pip的路径在哪个地方,(我是默认安装的Python3.6,Python中默…

    2022年10月14日
  • 慕课软件质量保证与测试(习题集)

    慕课软件质量保证与测试(习题集)慕课金陵科技学院.软件质量保证与测试.期末复习.习题汇总0总目录1绪论1.1软件质量保证与测试的产生与发展1.2软件缺陷,软件错误,软件故障1.3软件质量保证与测试的意义,原则和挑战1.4单元测试1.5课后作业2软件测试策略2.1软件测试的模型,过程和生命周期2.2软件测试的方法和技术2.3单元测试2.4课后作业3黑盒测试3.1黑盒测试概述3.2等价类划分测试3.3边界值测试3.4错误推测法3.5判定表驱动法3.6因果图法3.7场景法3.8正交实验法3.9单元测试

发表回复

您的电子邮箱地址不会被公开。

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