当前位置: 首页 > news >正文

【【verilog典型电路设计之流水线结构】】

verilog典型电路设计之流水线结构

下图是一个4位的乘法器结构,用verilog HDL 设计一个两级流水线加法器树4位乘法器
在这里插入图片描述
对于流水线结构 其实需要做的是在每级之间增加一个暂存的数据用来存储 我们得到的东西 我们一般来说会通过在每一级之间插入D触发器来保证数据的联通

通过在第一级和第二级,第二级和第三级加法器之间插入D触发器组,可以实现两级流水设计。
reg类型其实是用在always块中所以我们在其中引入always块 来保证reg 的使用
下面是两级 流水线的简单代码

module mul_addtree_2_stage(clk,clr,mul_a,mul_b,mul_out);input clk,clr;
input [3:0] mul_a,mul_b; 
output [7:0] mul_out;
reg[7:0] add_tmp_1,add_tmp_2,mul_out;
wire [7:0] stored0,stored1,stored2,stored3;
assign 
stored3=mul_b[3]?{1'b0,mul_a,3'b0}:8'b0;
assign 
stored2=mul_b[2]?{2'b0,mul_a,2'b0}:8'b0;
assign stored1=mul_b[1]?{3'b0,mul_a,1'b0}:8'b0;
assign stored0=mul_b[0]?{4'b0,mul_a}:8'b0;
always@(posedge clk or negedge clr)
if(!clr) begin
add_tmp_1<=8'b0000_0000;
add_tmp_2<=8'b0000_0000;
mul_out<=8'b0000_0000;
end
else begin
add_tmp_1<=stored3+stored2;
add_tmp_2<=stored1+stored0;
mul_out<=add_tmp_1+add_tmp_2;
end
end
endmodule

下面是流水线结构的testbench

module mult addtree_2_stag_tb;
reg clk, clr;
reg [3:0]mult_a, mult b;
wire [7:0]mult_out;
mul_addtree_2_stage
U1(.mul_a(mult_a),..mul_b(mult_b),
.mul_out(mult_out),.clk(clk),.clr(clr));
initial
begin
clk=0; clr=0; mult_a=1; mult_b=1;
#5 clr=1;
end
always #10 clk=~clk;
initial
begin
repeat(5)
begin
#20 mult_a=mult_a+1; mult_b=mult_b+1;
end
end
endmodule
http://www.lryc.cn/news/130835.html

相关文章:

  • 大数据课程K2——Spark的RDD弹性分布式数据集
  • Seaborn数据可视化(一)
  • Sentinel规则持久化
  • Transformer 相关模型的参数量计算
  • 企业信息化过程----应用管理平台的构建过程
  • 揭秘程序员的鄙视链,你在哪一层?看完我想哭
  • 在docker下进行mysql的主从复制
  • 【机器学习】处理不平衡的数据集
  • JVM前世今生之JVM内存模型
  • redis事务对比Lua脚本区别是什么
  • Java“牵手”根据店铺ID获取1688店铺所有商品数据方法,1688API实现批量店铺商品数据抓取示例
  • linux-shell脚本收集
  • 使用 MBean 和 日志查看 Tomcat 线程池核心属性数据
  • Visual Studio 2019源码编译cpu版本onnxruntime
  • Go和Java实现模板模式
  • angular:quill align的坑
  • 设计模式篇---抽象工厂(包含优化)
  • Azure创建可用性集
  • SpringBoot中优雅的实现隐私数据脱敏(提供Gitee源码)
  • Elasticsearch集群shard过多后导致的性能问题分析
  • Unity框架学习--5 事件中心管理器
  • (二)结构型模式:3、过滤器模式(Filter、Criteria Pattern)(C++示例)
  • 谷歌在Chrome浏览器中推进抗量子加密技术
  • Kotlin的数组
  • centos 安装docker
  • Oracle-如何判断字符串包含中文字符串(汉字),删除中文内容及保留中文内容
  • File 类的用法, InputStream和Reader, OutputStream和Writer 的用法
  • AtCoder Beginner Contest 315 Task:A/B/C/E
  • 【项目实践】基于LSTM的一维数据扩展与预测
  • webshell实践,在nginx上实现负载均衡