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

这篇具有很好参考价值的文章主要介绍了【【verilog典型电路设计之流水线结构】】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

下图是一个4位的乘法器结构,用verilog HDL 设计一个两级流水线加法器树4位乘法器
【【verilog典型电路设计之流水线结构】】,Verilog学习系列,fpga开发
对于流水线结构 其实需要做的是在每级之间增加一个暂存的数据用来存储 我们得到的东西 我们一般来说会通过在每一级之间插入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文章来源地址https://www.toymoban.com/news/detail-658678.html

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

到了这里,关于【【verilog典型电路设计之流水线结构】】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【【典型电路设计之片内存储器的设计之RAM的Verilog HDL描述一】】

    RAM是随机存储器,存储单元的内容可按需随意取出或存入。这种存储器在断电后将丢失所有数据,一般用来存储一些短时间内使用的程序和数据。 其内部结构如下图所示: 例:用Verilog HDL 设计深度为8,位宽为8的单端口RAM。 单口RAM,只有一套地址总线,读和写操作是分开的

    2024年02月12日
    浏览(46)
  • FPGA流水线除法器(Verilog)原理及实现

      除法器的计算过程如下图所示。 假设数值的位宽为N。 Step1:分别将被除数和除数扩展至原来2倍位宽(2N),被除数在其左边补N位0,除数在其右边补N位0; Step2:将被除数依次左移(每次左移1位),末位补数值(该数值为被除数高N位与除数高N位的商),高N位为被除数高

    2024年02月11日
    浏览(37)
  • 基于verilog的四级流水线实现并行fft16(可计算小数和负数)

    目录 夯实基础--FFT算法 定点运算--verilog实现小数运算 Verilog代码实现  FFT系数 W 的准备  输入数值的初始化 蝶形运算端点处的值 仿真结果展示 总结        FFT是DFT的一种快速算法而不是一种新的变换,他可以在数量级的意义上提高运算速度。它主要有两种实现方法:一种是

    2024年02月05日
    浏览(52)
  • 基于Verilog HDL的FFT算法硬件实现(8点,三级流水线,DIT-FFT)

    关于fft的相关知识,在之前的文章中,有过介绍,这里不再具体介绍,可以参考学习。 从傅里叶级数(FS)到傅里叶变换(FT)最后到离散傅里叶变换(DFT)_小张爱学习哦的博客-CSDN博客_fs傅里叶级数 FFT原理(基2DIT-FFT)及C语言编程思路及实现_小张爱学习哦的博客-CSDN博客_c语言

    2024年02月14日
    浏览(37)
  • 8位加法器的流水线设计(2级流水、四级流水)

    思考:流水线的设计是为了提高频率,在一个耗时比较长的组合逻辑中,加入寄存器, 可以将这个较长的组合逻辑分裂几份,从而提升主频,缺点是增加了寄存器的资源。 二级流水线的加法器的设计思想如下: 在第一个周期完成低四位的加法计算,使用一个四位加法器即可

    2024年02月11日
    浏览(42)
  • 【软件架构】流水线设计模式

    流水线模式 流水线 模式是一种软件设计模式,它提供了构建 和执行 一系列 操作的能力。 此模式最好与 插件 模式结合使用,以便在应用程序启动时 动态 构建流水线。 顺序 流水线的最基本实现是一个简单的操作序列。 可以调用 操作 的接口来 处理 数据。 流水线一个一个

    2024年02月10日
    浏览(44)
  • 【CPU设计实战】简单流水线CPU设计

    CPU输入的、运算的、存储的、输出的数据都在组合逻辑和时序逻辑电路上流转,这些逻辑电路称为 数据通路 。 32位处理器用32位触发器来存放PC。PC的输出送到 虚实地址转换部件进行转换 ,PC的输入有两个,一个是复位值0xBFC00000,一个是复位撤销后每执行一条指令更新为当前

    2024年02月12日
    浏览(45)
  • 16位流水线CPU设计(部分)

    概括:本文介绍一个16位的流水线CPU设计与模拟过程,该流水线CPU由 IF 、 ID 、 EXE 、 MEM 和 WB 五个功能段组成,结构如下图所示。在各功能段之间分别设计了四个锁存段,即 IF_LATCH、ID_LATCH、EXE_LATCH和 WB_LATCH 。各基本模块使用 VHDL 硬件描述语言进行描述,各段的大部分功能模

    2024年02月03日
    浏览(37)
  • 6设计指令流水线-1【FPGA模型机课程设计】

    2023-5-25 09:25:05 以下内容源自《【FPGA模型机课程设计】》 仅供学习交流使用 0集中实践环节计划书【FPGA模型机课程设计】 2023-5-30 16:03:03 添加MEM_WB模块 2023-5-30 19:00:25 IF模块添加stall 2023-5-30 21:08:26 修改stall相关的处理 在id ctrl 流水寄存器中修改 因为原来没有理解stall[5:0]是什么

    2024年02月08日
    浏览(47)
  • 1.6流水线:流水线、流水线周期、流水线执行时间、流水线吞吐率、流水线加速比

    相关参数计算:流水线执行时间计算、流水线吞吐率、流水线加速比等。 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包