Verilog流水线设计
流水线概述
如下图为工厂流水线,工厂流水线就是将一个工作(比如生产一个产品)分成多个细分工作,在生产流水线上由多个不同的人分步完成。这个待完成的产品在流水线上一级一级往下传递。
比如完成一个产品,需要8道工序,每道工序需要10s,那么流水线启动后,不间断工作的话,第一个产品虽然要80s才完成,但是接下来每10s就能产出一个产品。使得速度大大提高。当然这也增加了人员等资源的付出。
对于电路的流水线设计思想与上述思想异曲同工,也是以付出增加资源消耗为代价,去提高电路运算速度。
流水线设计实例
这里以一个简单的8位无符号数全加器的设计为实例来进行讲解,
实现 assign {c_out,data_out [7:0]} = a[7:0] + b[7:0] +c_in
c_out 为进位位。
(源码链接:https://pan.baidu.com/s/1-imO5A51dJ_pfWpRfOYcHg 提取码:dx0k )
如果有数字电路常识的人都知道,利用一块组合逻辑电路去做8位的加法,其速度肯定比做2位的加法慢。因此这里可以采用4级流水线设计,每一级只做两位的加法操作,当流水线一启动后,除第一个加法运算之外,后面每经过一个2位加法器的延时,就会得到一个结果。
整体结构如下,每一级通过in_valid,o_valid信号交互,分别代表每一级的输入输出有效信号。
第一级:做最低两位与进位位的加法操作,并将运算结果和未做运算的高六位传给下一级。
第二级:做2,3两位与上一级加法器的进位位的加法操作,并将本级运算结果和未做运算的高4位传给下一级。
第三级:做4,5两位与进位位的加法操作,并将运算结果和未做运算的高2位传给下一级。
第四级:做最高两位与上一级加法器输出的进位位的加法操作,并将结果组合输出。
仿真结果如下:如图,当整体模块in_valid有效时,送进去的数据a=1,b=5,c_in=1;故经过四个周期后,o_valid信号拉高,同时获得运算结果data_out=7。(本设计的流水线每级延时为一个时钟周期)
总结
流水线就是通过将一个大的组合逻辑划分成分步运算的多个小组合逻辑来运算,从而达到提高速度的目的。
在设计流水线的时候,我们一般要尽量使得每级运算所需要的时间差不多,从而做到流水匹配,提高效率。因为流水线的速度由运算最慢的那一级电路决定。
Verilog流水线设计相关推荐
- 【Verilog 流水线设计】以全加器为例阐述流水线设计的影响
目录 流水线设计思想 全加器 非流水线全加器设计 Verilog设计 testbench设计 仿真波形 RTL视图 资源使用情况 流水线加法器设计 Verilog设计 testbench设计 仿真波形 ...
- Verilog 流水线设计
一.什么是流水线 流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法. 目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作 ...
- Verilog 流水线设计 Pipeline
介绍 定义:流水线设计就是将组合逻辑分割,并在各级之间插入寄存器,暂存中间数据的方法.以面积换速度. 优点:每一部分延时降低--可用更快的时钟:大部分电路同时运算--提高数据吞吐率. 缺点:增加面积: ...
- Verilog十大基本功1(流水线设计Pipeline Design)
需求说明:Verilog设计基础 内容 :流水线设计 来自 :时间的诗 流水线设计 前言: 本文从四部分对流水线设计进行分析,具体如下: 第一部分什么是流水线 第二部分什么时候 ...
- Verilog 除法器设计(包含单步设计和流水线设计)
Verilog 除法器设计(包含单步设计和流水线设计) 1 除法器原理(定点) 2 除法器设计 2.1 单步运算设计 2.2 流水级例化 1 除法器原理(定点) 和十进制除法类似,计算 27 除以 5 ...
- FPGA中的流水线设计(含Verilog范例)
一.流水线设计介绍 在高速通信系统设计中,如何提高系统的工作速度至关重要,通常使用的方法有两种: 1. 并行方式设计:可减少模块间的延时: 2. 流水线设计:流水线设计如同生产线一样,将整个执行过程分 ...
- 芯片设计之流水线设计-IC学习笔记(四)
文章目录 1.1 熟悉的经典MIPS五级流水线 1.2 流水线深度设置的正面意义与反面意义 1.3 选择使用流水线设计的理由 1.4 流水线的stage划分 参考文献 pipeline流水线设计是一种 ...
- 移位寄存器专题(verilog HDL设计)
目录 移位寄存器简介 分类 4位右移位寄存器工作原理 1. 16位右移位寄存器 2. 16位左移寄存器 3. 串行输入并行输出寄存器 4. 并行输入串行输出移位寄存器 移位寄存器简介 移位寄存器内的数 ...
- 为什么在 Verilog HDL 设计中一定要用同步而不能用异步时序逻辑?
本博文内容来源于:<从算法设计到硬件逻辑的实现>,仅供学习交流使用! 同步时序逻辑是指表示状态的寄存器组的值只可能在唯一确定的触发条件发生时刻改变.只能由时钟的正跳沿或负跳沿触发的状态机就 ...
最新文章
- mysql 5.7 1055_mysql 5.7报1055错误的解决方法
- An Edge-Guided Image Interpolation Algorithm via Directional Filtering and Data Fusion【翻译】
- javascript 内部函数的定义及调用
- 后台开发经典书籍--深入理解计算机系统
- 小波的秘密1_小波变换概况与综述
- WPF WebBrowser 加载 html ,出现安全警告, 运行 脚本和 activeX 控件,
- H.264 视频质量评价方法 (基于视频内容)
- 沫沫金:EasyUI 固定列
- 通讯录管理系统 指针 链表 学生管理系统 人员管理系统
- win10系统迁移后系统重装_Win10技巧:Windows 10系统迁移方法!
- CSS之vmin和vmax
- 北京奥运会赛事电视直播表(绝对完整)--每天就抱着电视看吧!
- 数据库标准语言SQL(六)——单表查询(二)
- c#通联支付demo_通联支付接口示例源码(.net/php/java)
- linux 实验感悟_linux实训心得_linux实习心得体会范文
- 微信6.5.7手机号码如何解绑
- MaxCompute(ODPS)实现笛卡尔积
- 华为IOT,与开发者共建物联网生态
- 如何提升计算机的网络性能,计算机优化及性能提升一点通
- 从产品经理的角度如何提升项目的交付质量?