低功耗技术——流水线设计(加法器和乘法器)

news/2024/11/26 18:47:03/

文章目录

  • 前言
  • 一、流水线
    • 1、16bit加法器
    • 2、无符号4bit乘法器
    • 3、编写一个4bit乘法器模块,并例化该乘法器求解c=12*a+5*b
  • 二、降低FPGA功耗
    • 1、静态功耗
    • 2、动态功耗


前言

2023.3.31 今天学习降低功耗的一些方法


在这里插入图片描述

一、流水线

电路最高工作频率:取决于最长的组合逻辑电路的延时值

数据传播时,在某一个时刻,该路径下许多电路逻辑单元都没有工作,电路效率很低。

流水线:将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。

在这里插入图片描述

举例:两级组合逻辑,非流水线操作,一个周期就能输出结果;
流水线设计的话,插入两级寄存器,输出第一个数据需要两个周期,接下来每个周期输出一个数据。

优点:每一小部分并行处理,提高了数据吞吐率;同时小部分的延时较小,提高电路时钟频率。

缺点:插入寄存器,实际上是用面积换速度的方法,会导致芯片面积增加,布线困难,时钟偏差增加,功耗也会增加。

应用场景

  • 组合逻辑较长
  • 功能模块之间的流水线,用乒乓来交换数据

1、16bit加法器

非流水线设计:
在这里插入图片描述

module adder(input [15:0] a,input [15:0] b,input clk,input cin,output cout,output [15:0] sum
);assign {cout,sum} = a + b + cin;
endmodule

流水线设计:
在这里插入图片描述
有个疑问,第二级寄存器是不是也可以不需要,但是加法计算需要时间?

module adder(input [15:0] a,input [15:0] b,input clk,input cin,output cout,output reg [15:0] sum
);reg [7:0] a_r;reg [7:0] b_r;reg cout_r;reg [7:0] sum_r;//第一级寄存器,除了寄存低8bit的计算结果,还要寄存没有用到的高8bit,所有数据经过寄存器要相同,这样数据才会同时达到第二级寄存器always@(posedge clk)begina_r <= a[158];b_r <= b[158];{cout_r, sum_r} <= a[7:0] + b[7:0] + cin;end//第二级寄存器always@(posedge clk)begin{cout, sum[158]} <= a_r + b_r + cout_r;sum[7:0] <= sum_r;end
endmodule

2、无符号4bit乘法器

乘法器:并行(*)、移位相加、查找表、加法树、并行乘法器

下面是流水线乘法器的电路图
在这里插入图片描述

module multi_pipe#(parameter size = 4
)(input 						clk 		,   input 						rst_n		,input	[size-1:0]			mul_a		,input	[size-1:0]			mul_b		,output	reg	[size*2-1:0]	mul_out		
);parameter N = size * 2;//definationwire [N - 1 : 0] temp [3:0];reg [N - 1 : 0] adder_0;reg [N - 1 : 0] adder_1;//outputgenvar i;generatefor(i = 0; i < 4; i = i + 1)begin : loopassign temp[i] = mul_b[i] ? mul_a << i : 'd0;endendgenerate//这一部分为了更清楚,也可以分开写成两个,因为这里用到了两级寄存器always@(posedge clk or negedge rst_n)beginif(!rst_n) beginadder_0 <= 'd0;adder_1 <= 'd0;mul_out <= 'd0;endelse beginadder_0 <= temp[0] + temp[1];adder_1 <= temp[2] + temp[3];mul_out <= adder_0 + adder_1;endend
endmodule

3、编写一个4bit乘法器模块,并例化该乘法器求解c=12a+5b

//4bit乘法器模块
module mul(input [3:0] a,input [3:0] b,output [7:0] c
);wire [7:0] tmp [3:0];genvar i;generate for (i=0; i<4; i=i+1) beginassign tmp[i] = a[i] ? b << i : 'd0;endendgenerateassign c = tmp[0] + tmp[1] + tmp[2] + tmp[3];endmodulemodule calculation(input clk,input rst_n,input [3:0] a,input [3:0] b,output [8:0] c);wire [7:0] tmp0;wire [7:0] tmp1;reg  [8:0] c_r;mul mul_0 (a, 12, tmp0);mul mul_1 (b, 5 , tmp1);always @(posedge clk or negedge rst_n) beginif (!rst_n) beginc_r <= 'd0;endelse beginc_r <= tmp0 + tmp1;endendassign c = c_r;
endmodule

二、降低FPGA功耗

1、静态功耗

使用低功耗的工艺来设计芯片,减小漏电流;也可以降低温度来降低静态功耗。

2、动态功耗

  • 选择适当的IO标准,IO端电压高,功耗大
  • 信号使能,用片选或者时钟使能来控制寄存器
  • 禁止非活动状态的时钟树翻转,之前时钟使能是使得时钟不总是翻转,但是时钟树总是在翻转的,这样还是会有功耗,因此要把非活跃区域的时钟树禁止翻转来减少功耗
  • 减少状态机的转换量,使用1位有效编码或格雷码
  • 选择合适的低功耗器件

http://www.ppmy.cn/news/36735.html

相关文章

MySQL 启动报错权限不足,问题解决

MySQL初始化以后&#xff0c;启动失败&#xff01; 命令&#xff1a;systemctl start mysqld &#xff0c;提示启动不成功&#xff0c;请查看服务状态&#xff0c;如图 提示权限不足就很纳闷了&#xff0c;为啥呢&#xff1f; ①、关闭selinux防火墙 临时关闭&#xff1a;sete…

点云处理之KD-Tree

在点云处理领域&#xff0c;KD-Tree是一种常用的数据结构&#xff0c;用于加速近似最近邻搜索(Nearest Neighbor Search)、点云分割(Segmentation)、物体识别(Object Recognition)、三维重建(3D Reconstruction)等操作。本篇博客将详细介绍KD-Tree的原理、构建和应用。 一、KD…

【css】渐变-背景渐变、边框渐变、文字渐变

渐变 ● 线性渐变&#xff08;向下/向上/向左/向右/对角线&#xff09; ● 径向渐变&#xff08;由其中心定义&#xff09; 线性渐变 background-image: linear-gradient(direction, color-stop1, color-stop2, ...);● direction 可选值&#xff0c;定义渐变的方向&#xf…

node_express框架01

01_express 基本结构 注意点&#xff1a;app.get 指定了 get 方法&#xff0c;如果是 app.all 就是指定了所有的请求方法&#xff08;例如&#xff1a;post delete 都是包含的&#xff09;&#xff0c;而 app.get(/) 里面访问的是根路径&#xff0c;如果访问别的路径&#xff…

MySQL OCP888题解073-slave创建新relay log文件的策略

文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3.1、知识点1&#xff1a;Relay Log创建新日志文件的策略4、总结1、原题 1.1、英文原题 1.2、答案 A、B 2、题目解析 2.1、题干解析 本题考察MySQL复制时&#xff0c;中继日志的生成…

GNU-Radio简介

GNU Radio的历史 GNU Radio是一个自由、开源的软件无线电平台&#xff0c;它的由来可以追溯到美国电气与计算机工程师协会&#xff08;IEEE&#xff09;的一项研究项目。该项目最初是由Doug W. 约翰逊&#xff08;Doug W. Johnson&#xff09;和Matt Ettus于1997年发起的&…

MiniOB 并发B+树实现解析

MiniOB 是 OceanBase 联合华中科技大学推出的一款用于教学的小型数据库系统&#xff0c;希望能够帮助数据库爱好者系统性的学习数据库原理与实战。 B 树介绍 B 树是传统数据库中常见的索引数据结构&#xff0c;比如MySQL、PostgreSQL都实现了B树索引。B 树是一个平衡多叉树&am…

NoSQL数据库简介

NoSQL代表“不仅是SQL”&#xff0c;指的是一种数据库管理系统&#xff0c;旨在处理大量非结构化和半结构化数据。与使用具有预定义架构的表格格式的传统SQL数据库不同&#xff0c;NoSQL数据库是无模式的&#xff0c;并且允许灵活和动态的数据结构。 NoSQL数据库是必需的&…