写在前面的话

作为初学者,通常情况下我们所设计的电路都是低速的电路,一般都在百兆以下。那么,当我们需要设计高速电路的时候,就需要用到流水线。本节,梦翼师兄和大家一起初步地学习流水线。

流水线基本概念

流水线的设计,就是指对延时较大的组合逻辑插入寄存器,把较大的组合逻辑拆分成几个时钟周期来完成,以提高系统的最大时钟频率。但是这样做,会导致数据输出的延时,假若插入一个寄存器,则数据输出就到产生一个时钟周期的延时,假若插入N个寄存器,就会产生N个时钟周期的延时,下面我们用两幅图来描述这种关系。

上图的总延时等于max{2,3} + 4 = 7ns;系统的时钟周期必须要大于7ns。当经过流水线改造之后,如下图所示:

经过流水线改造之后,总延时等于max{2,3} + 1 + 4 = 8ns;但是系统的时钟周期只要大于4ns即可(引入了触发器,数据的采集需要发生在时钟上升沿),总处理数据的吞吐量增加了。

流水线改造实例

接下来我们用一个很简单的例子来说明如何对电路进行简单的流水线改造,假设我们现在要实现(4*a+6*b)-10,那么我们可以用原理图的方式来实现这一算法。

首先,跟之前的项目一样,新建一个项目工程。当工程建立完毕之后,我们不需要新建verilog HDL file,而是新建一个Block Diagram / Schematic File,如下图所示:

然后我们在新建的原理图里面,双击一下鼠标左键,然后在左上角的library里面找到lpm_mult,如下图所示:

点击【OK】,选择一下程序保存的路径然后选择【NEXT】,如下图所示:

点击【NEXT】之后,会弹出配置乘法器的选项,如下图所示:

这里是选择乘法器的位宽,直接点击【NEXT】得到下图:

如上图所示,选择让输入的数据乘以一个常数,然后点击【Finish】;同理再新建一个输入的数据乘以常数6的乘法器。

现在我们已经实现了4*a与6*b,接下来我们新建一个加法器双击原理图,在library里面找到lmp_add_sub,然后点击【OK】,选择好程序保存的路径之后,就会出现配置加法的选项,如下图所示:

选择仅仅使用减法,而且把位宽调到16位,然后点击【NEXT】如下图所示:

选择输入的数据减去一个固定的常数,然后选择【Finish】即可。接着我们新建一个Verilog HDL File文件,写一个16位的寄存器组;

代码如下:

/****************************************************

*   Engineer        :   梦翼师兄

*   QQ               :   761664056

*   The module function:  寄存器

*****************************************************/

00  module reg_data(clk,data_in,data_out);

01  input clk;//时钟输入端口

02  input [15:0]data_in;//数据输入端口

03

04  output reg [15:0]data_out;//数据输入端口

05

06  always@(posedge clk)

07      begin

08          data_out<=data_in;//输出数据等于输入数据

09      end

10  endmodule

接着我们选择左上角的File,然后选择Creat/Updata,再选择Crear Symbol File,将代码文件转换成原理图文件

然后我们回到原理图的文件里面,双击原理图,在左上角的library里面会多出一个projet,然后在projet里面找到刚才写的寄存器,然后双击放进原理图里面,然后我们用一样的方法,再新建一个8位位宽的寄存器组,然后放进原理图里面,完成之后把线连接好,如下图所示:

然后还没有接线的模块,可以选择右键,选择Generate Pins for Symbol Ports

然后再把未接上的线给全部接上,如下图所示:

把所以先接上之后,可以按crtl+L,进行全编译,查看静态时序分析,观察系统时钟最大频率是多少。如下图所示:

由上图可知,在还未改造成流水线结构的时候,系统时钟的最大频率是151.88Mhz,然后我们现在开始改造流水线结构(在各节点加入寄存器),看看系统时钟最大频率能上升多少,改流水线结构,如下图所示:

在改造流水线之后,我们可以再一次全编译(ctrl + L),之后我们再继续查看静态时序分析报告,观察系统时钟频率的最大值,如下图所示:

经过流水线改造之后,系统时钟的最大频率由151.88Mhz提升至了303.12Mhz,大幅系统时钟频率。

java流水线工程设计_进阶项目(7)流水线设计讲解相关推荐

  1. Java丛浩然_结对项目(java实现)

    二.PSP表格 PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟) Planning 计划 30 25 · Estimate · 估计这个任务 ...

  2. java 附带编译_附带项目的好处

    java 附带编译 辅助项目是您在家里,下班后,为了自己的"娱乐"或满足您学习新事物的愿望而做的事情,以防您的工作场所没有给您机会(或者至少没有足够的机会) . 辅助项目也是一种构 ...

  3. java俄罗斯方块答辩_俄罗斯方块项目答辩.ppt

    俄罗斯方块项目答辩.ppt ,俄罗斯方块,小组杨洪松.杨明虹.严虹雨 组长杨洪松 组员杨明虹.严虹雨项目编写背景 项目开发进程 项目功能及项目效果 所运用的技术.开发工具 项目组各成员完成的内容 完成 ...

  4. 数据仓库中宽表的设计原则_实际项目中交互设计原则的运用

    在实际项目中设计交互行为方式的时候,我们该怎么去运用的这些交互设计原则呢? 通常我们在设计过程中,会提到设计要满足一定的交互设计原则,而对于一名交互设计师来说,原则是在设计过程中遵循的一种大众认可的, ...

  5. java接口设计规范_关于团队API接口规范设计

    这篇文章主要介绍我在一家移动互联网企业的做的接口规范文档,这篇文档帮助团队内部的协作起到很大的作用.可能文章内容会掺杂个人对接口的理解,各位大佬望批评指正. 更新记录 2019-09-21 marke ...

  6. java车险源代码_车辆保险系统的设计与实现.pdf

    车辆保险系统的设计与实现 摘 要 本论文主要阐述了基于Web技术的车辆保险系统的设计与实现.本系统前端 使用具备独特优势的JSP技术实现,后端采用MVC框架,在此基础上使用Myeclips e作为 发 ...

  7. 影院售票系统java和数据库_影院售票管理系统的设计与实现(SSH,SQLServer)(含录像)...

    影院售票管理系统的设计与实现(SSH,SQLServer)(含录像)(毕业论文15900字,程序代码,SQLServer数据库) 本毕业设计的内容,阐述了实现整个电影票预订系统功能的系统.从实现电影票 ...

  8. java医疗保险系统_医疗保险管理信息系统的设计与实现(SSH,MySQL)(含录像)

    医疗保险管理信息系统的设计与实现(SSH,MySQL)(含录像)(任务书,论文10900字,程序代码,MySQL数据库) 本论文就此医疗保险管理系统进行了详细全面的论述.访问本系统的用户为管理员角色, ...

  9. 基于Java EE平台项目管理系统的设计与实现(论文+PPT+源码)

    分类号_______________ 密级________________ UDC _______________ 学号 毕业设计(论文) 论文题目 基于Java EE平台项目管理系统的设计与实现 T ...

最新文章

  1. 离线数据处理与流数据处理的区别
  2. 调驱动 一定注意 cache 表的
  3. ubuntu下vi/vim 的基本使用法
  4. 如何理解 SAP UI5 的 sap.ui.define 函数
  5. Rocketmq集群架构图
  6. Cannot resolve the collation conflict between SQL_Latin1_General_CP1_CI_AS and Latin1_General_100...
  7. 一点杂感 以及 java8 Streams API 与 C# Linq 简要对比分析
  8. 其实,大部分人都不需要你去培养
  9. Docker拉取ZooKeeper镜像安装运行
  10. CentOS7下安装Tomcat
  11. 从里面学到的关于过去的经验 中篇
  12. raspberry pi_使用Raspberry Pi配置业余无线电网关
  13. 蓝桥杯 ALGO-158 算法训练 sign函数
  14. 云中漫步——迎接云计算时代的到来
  15. cmd下载的python包,pycharm中却无法使用
  16. 怎么根据分隔符号将Excel数据换行复制
  17. Shel脚本-初步入门之《06》
  18. 永恒之蓝的简单介绍以及利用
  19. Rust:error[E0468]: an `extern crate` loading macros must be at the crate root 处理方法
  20. 如何找到算法的时间复杂度

热门文章

  1. GDT——陶瓷气体放电管的连接方式-优恩讲解
  2. 网站seo优化到底该怎么做呢
  3. 快速上手JVM系列(整合篇)
  4. VLC详细的使用说明以及配置…
  5. Wide-Bandgap宽禁带(WBG)器件(如GaN和SiC)市场将何去何从?
  6. opc-ua协议机器数据采集-python
  7. 关闭windows或者windows server多用户会话
  8. HDU6356 Glad You Came(2018HDU多校联赛第五场,线段树)
  9. CSS 的权重和优先级
  10. java jdbc 无效的列名_java.sql.SQLException列名无效