verilog流水线设计代码_十进制BCD译码器的verilog

verilog流水线设计代码_十进制BCD译码器的verilog流水线概述如下图为工厂流水线,工厂流水线就是将一个工作(比如生产一个产品)分成多个细分工作,在生产流水线上由多个不同的人分步完成。这个待完成的产品在流水线上一级一级往下传递。比如完成一个产品,需要8道工序,每道工序需要10s,那么流水线启动后,不间断工作的话,第一个产品虽然要80s才完成,但是接下来每10s就能产出一个产品。使得速度大大提高。当然这也增加了人员等资源的付出。对于电路的流水线…

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

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

流水线概述

如下图为工厂流水线,工厂流水线就是将一个工作(比如生产一个产品)分成多个细分工作,在生产流水线上由多个不同的人分步完成。这个待完成的产品在流水线上一级一级往下传递。
在这里插入图片描述

比如完成一个产品,需要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。(本设计的流水线每级延时为一个时钟周期)

在这里插入图片描述

总结

流水线就是通过将一个大的组合逻辑划分成分步运算的多个小组合逻辑来运算,从而达到提高速度的目的。

在设计流水线的时候,我们一般要尽量使得每级运算所需要的时间差不多,从而做到流水匹配,提高效率。因为流水线的速度由运算最慢的那一级电路决定。

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

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

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


相关推荐

  • vue解决跨域问题用后端配合吗_vue图片跨域解决

    vue解决跨域问题用后端配合吗_vue图片跨域解决vue解决跨域问题

    2022年9月17日
    4
  • MATLAB 粒子群算法,例题与常用模版

    MATLAB 粒子群算法,例题与常用模版MATLAB粒子群算法本文学习自:ParticleSwarmOptimizationinMATLAB-YarpizVideoTutorial与《精通MATLAB智能算法》1.简介:ParticleSwarmOptimization,粒子群优化算法,常用来找到方程的最优解。2.算法概述:每次搜寻都会根据自身经验(自身历史搜寻的最优地点)和种群…

    2022年5月1日
    41
  • 如何在ASP.NET MVC中获取客户端的IP地址?

    如何在ASP.NET MVC中获取客户端的IP地址?I’mtotallynewtotheASP.NETMVCstack,andIwaswonderingwhathappenedtothesimplePageobje

    2022年7月22日
    10
  • Java-Object转JSONObject

    Java-Object转JSONObject第一种方式importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;Objectimages=datum.getImages();if(null!=images){StringdoImages=(String)datum.getImages();charc=doImages.charAt(0);charb=doImages.charAt(d

    2022年4月29日
    76
  • Python入门经典练习题

    Python入门经典练习题【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?【程序2】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于1

    2022年7月3日
    27
  • ubuntu 安装多个CUDA版本并可以随时切换

    ubuntu 安装多个CUDA版本并可以随时切换CUDA是什么就不介绍了,直接讲怎么实现CUDA多版本的共存和实时切换。1、安装多个版本的CUDA这里,我们以cuda9-1版本和cuda9-0版本为例(先安装哪个无所谓) 首先,在cuda版本库中选择自己需要的cuda版本。 然后,选择对应的安装包,这里选择runfile类型的安装文件,以便后面设置每个cuda的安装路径。 下载完成以后,我们利用cd命令,进入到cuda_8.0.61_375.2…

    2022年6月17日
    43

发表回复

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

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