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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • checkbox选中和不选中 jqu_jquery checkbox 选中不选中

    checkbox选中和不选中 jqu_jquery checkbox 选中不选中展开全部$(function(){//动态绑定默认状态//$(“#ck”).attr(“checked”,true)//选中//$(“#ck”).attr(“checked”,false)//未选中//点击判断选中还是未选中$(“#ck”).click(function(){if($(this).is(“:checked”)){alert(“选中”);}else{alert…

    2022年6月30日
    26
  • fulltext mysql_mysql深入理解全文索引fulltext及实例剖析

    fulltext mysql_mysql深入理解全文索引fulltext及实例剖析本文章通过以下几个小章节向大家介绍 mysql 全文索引的相关知识 mysql 全文索引原理及使用条件如何创建全文索引全文索引的基本语法及使用方法全文索引使用实例 mysql 全文索引使用条件首页要先明白 mysql 的全文检索原理 mysql 使用的是一个非常简单的剖析器来将文本分隔成词 空格 标点等 比如 welcomtoyou 将分隔为三个词 welcom to you 但是对中文来说 比如

    2025年7月28日
    9
  • Spring的Bean加载流程

    Spring的Bean加载流程

    2021年4月10日
    227
  • “idea激活码永久”【2021最新】

    (“idea激活码永久”)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsa…

    2022年3月26日
    102
  • c语言窗体关机程序代码,c语言 关机程序代码[通俗易懂]

    c语言窗体关机程序代码,c语言 关机程序代码[通俗易懂]通过C语言实现关机,有两种方式:1通过system函数,调用dos的关机命令。通过stdlib.h中的intsystem(char*cmd);可以执行dos命令cmd。dos下关机的命令为shutdown-s,于是嗲用system(“shutdown-s”);即可实现关机操作。2通过调用windows提供的api函数,来实现关机:voidshut_down_windows(){HAN…

    2022年7月22日
    16
  • java把集合转为数组_java根据下标删除数组元素

    java把集合转为数组_java根据下标删除数组元素Arrays.asList()方法返回的是一个Arrays的内部类ArrayList,而不是java.util.ArrayList.内部类中没有重写add()方法. 解决办法是重新创建一个集合,把旧的传递进去

    2022年8月23日
    11

发表回复

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

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