【 IC每日一题】

news2024/11/24 8:44:38

IC每日一题

  • 1 八股题:低功耗设计方法
    • 1.1 功耗类型
      • 1.1.1 动态功耗
      • 1.1.2 静态功耗
    • 1.2 SoC低功耗设计方法
      • 1.2.1 基于时钟clock的低功耗设计
      • 1.2.2 基于电压域voltage的低功耗设计
      • 1.2.3 多阈值库
      • 1.2.4 RTL低功耗设计
  • 2 手撕题:序列检测
    • 2.1 移位寄存器写法
    • 2.2 状态机写法

Less Is More.

1 八股题:低功耗设计方法

芯片最经常考虑的trade off: PPA;
概念背景:为什么需要低功耗设计,以手机为例,功耗越低,手机电池越耐用;功耗越低,意味着越环保、系统系统越稳定、系统越可靠、散热成本越低等;

1.1 功耗类型

在这里插入图片描述

1.1.1 动态功耗

动态功耗 = 翻转功耗 + 短路功耗;
翻转功耗即传输数据(0–>1; 1–>0的变化);
短路功耗即由短路电流引起的功耗;

1.1.2 静态功耗

静态功耗是由 漏电流引起的功耗;
在这里插入图片描述

漏电流的几部分组成:PN结反向电流;源级和漏极之间的亚阈值电流;栅极漏级漏电流;栅极和衬底之间的隧道电流;

1.2 SoC低功耗设计方法

SOC中主要功耗:时钟树、处理器和存储器;
以下这张图能够给予设计指导;
在这里插入图片描述

低功耗设计一般方法主要有以下:

1.2.1 基于时钟clock的低功耗设计

----思想:门控时钟:当某子系统不工作时,进行时钟门控掉,减少翻转;
在这里插入图片描述

可以使用DC工具自动添加时钟;

1.2.2 基于电压域voltage的低功耗设计

电压与功耗有密切的关系;通过设置多电压区域技术;
在这里插入图片描述

1.2.3 多阈值库

在进行工艺替换时,考虑选择多种阈值的cell;

1.2.4 RTL低功耗设计

  • 并行处理和流水线Pipline:通过将任务分解为多个并行的子任务,并在子任务之间插入寄存器,可以减少关键路径上的延迟,从而降低功耗。
  • 优化编码:格雷码代替二进制,减少翻转;
  • 资源共享复用: 比如存储资源;总线资源复用等;
  • 操作数隔离: APB总线在下一次传输来临之前,地址/控制信号可以不变,以此来降低功耗;

2 手撕题:序列检测

题目:检测序列比如: 1100_1101;主要有以下两种写法;

2.1 移位寄存器写法

//=======================================
//--Author  : colonel
//--Date    :10—25
//--Module  : sequence_check_det
//--Function: check a sequence
//=======================================
module sequen_check_det(
//==========================< 端口 >=========================
input wire clk,
input wire rst_n,
input wire din,
output wire det
);
//==========================< 参数 >=========================
parameter SEQUENCE_DET = 8'b1100_1101;

//==========================< 信号 >=========================
reg [8 -1:0] data;

//=========================================================
//-- 寄存器来确定
//=========================================================
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        data <= 8'b0000_0000;
    end else begin
        data <= {data[6:0],din};
    end
end

assign det = (data==SEQUENCE_DET) ? 1'b1 : 1'b0;

endmodule

);

endmodule

2.2 状态机写法

题目:做序列检测1011;
状态机写法:
状态机图:


//=======================================
//--Author  : colonel
//--Date    :10—25
//--Module  : sequence_check_det
//--Function: check a sequence using FSM
//=======================================
module sequen_check_det_fsm(
//==========================< 端口 >=========================
input wire clk,
input wire rst_n,
input wire din,
output wire det
);
//==========================< 参数 >==========================
localparam SEQUENCE_DET = 4'b1011; 
localparam IDLE = 4'b0000;
localparam S1 = 4'b0001;
localparam S2 = 4'b0010;
localparam S3 = 4'b0100;
localparam S4 = 4'b1000;

//==========================< 信号 >==========================
reg [3:0] sta_cur;
reg [3:0] sta_nxt;

//===========================================================
//--FSM-1:fsm transition
//===========================================================
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        sta_cur <= IDLE;
    end else begin
        sta_cur <= sta_nxt;
    end
end

//===========================================================
//--FSM-2:fsm jumb condition
//===========================================================
always @(*) begin
    case (sta_cur)
        IDLE: begin 
            if(din==1'b1) begin
                sta_nxt <= S1;
            end else begin
                sta_nxt <= IDLE;
            end
        end

        S1: begin
            if(din==1'b0) begin
                sta_nxt <= S2;
            end else begin
                sta_nxt <= S1;
            end
        end

        S2: begin
            if(din==1'b1) begin
                sta_nxt <= S3;
            end else begin
                sta_nxt <= IDLE;
            end
        end

        S3: begin
            if(din==1'b1) begin
                sta_nxt <= S4;
            end else begin
                sta_nxt <= S2;
            end
        end

        S4: begin
            if(din==1'b1) begin
                sta_nxt <= S1;
            end else begin
                sta_nxt <= S2;
            end
        end
        default: begin
            sta_nxt <= IDLE;
        end
    endcase
end

//===========================================================
//--FSM-3:fsm action
//--det logic
//===========================================================
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        det <= 1'b0;
    end else begin
        case (sta_cur)
            IDLE: det <= 1'b0;
            S0  : det <= 1'b0;
            S1  : det <= 1'b0;
            S2  : det <= 1'b0;
            S3  : det <= 1'b0;
            S4  : det <= 1'b1;
            default: det <= 1'b0;
        endcase
    end
end

endmodule

以上是序列检测器的两种写法;
[REF]
1.https://blog.csdn.net/wangkai_2019/article/details/106854081
2.https://blog.csdn.net/qq_57502075/article/details/127084530

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2223935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ClickHouse 3节点集群安装

ClickHouse 简介 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 官方网站&#xff1a;https://clickhouse.com/ 项目地址&#xff1a;https://github.com/ClickHouse/ClickHouse 横向扩展集群介绍 此示例架构旨在提供可扩展性。它包括三个节点&#xff…

ffmpeg视频滤镜: 色温- colortemperature

滤镜简述 colortemperature 官网链接 》 FFmpeg Filters Documentation 这个滤镜可以调节图片的色温&#xff0c;色温值越大显得越冷&#xff0c;可以参考一下下图&#xff1a; 咱们装修的时候可能会用到&#xff0c;比如选择灯还有地板的颜色的时候&#xff0c;选暖色调还是…

提升产品竞争力之--IPD产品成本篇

在汉捷的咨询过程中&#xff0c;很多企业老总交流时都会提起这个抱怨&#xff1a;“现在产品竞争太激烈了&#xff0c;客户买产品首先看价格&#xff0c;你价格高一点就买别家的啦……” 汉捷咨询在前文谈到“通过定义产品包需求&#xff0c;来提升产品竞争力。差异化开发&…

Maven - Assembly实战

文章目录 PreAssembly插件基本配置使用示例示例1&#xff1a;创建包含依赖的JAR包示例2&#xff1a;自定义描述符示例3&#xff1a;多模块项目打包 实战 _qiwenfile结构pom.xml触发脚本 实战 _nacos输出 zip / tar.gz常见问题及解决方案 Pre Spring Boot - 瘦身大作战&#xf…

Go 版本升级 | 统计 Github 社区 Go 版本分布情况

背景 因为最近三年用的 Go 版本是 1.16&#xff0c;但最新的版本升级到了 1.23&#xff0c;很多依赖的三方包最新文件都已经升级&#xff0c;使用了泛型以及 GO 新版本的特性&#xff0c;导致我只能适配 Go1.16 的三方包旧版本&#xff0c;但这种问题发生的频率多了后&#xf…

解决运行jar错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序

报错 众所周知jdk8以上都没有Javafx java -jar target/myyscan-1.0-SNAPSHOT.jar 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序解决 https://gluonhq.com/products/javafx/ 去下载/javafx/到本地&#xff0c;选择自己的型号 然后记得指定路径 java --m…

React类组件详解

React类组件是通过创建class继承React.Component来创建的&#xff0c;是React中用于构建用户界面的重要部分。以下是对React类组件的详细解释&#xff1a; 一、定义与基本结构 类组件使用ES6的class语法定义&#xff0c;并继承自React.Component。它们具有更复杂的功能&#xf…

R语言机器学习算法实战系列(十二)线性判别分析分类算法 (Linear Discriminant Analysis)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍LDA的原理LDA的步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve保存模型总结优点:缺…

《性能之巅:洞悉系统、企业与云计算》-观测工具-笔记

《性能之巅&#xff1a;洞悉系统、企业与云计算》第一章&#xff08;绪论&#xff09;和第二章&#xff08;方法&#xff09;的笔记&#xff0c;请参考Part 1&#xff0c;第三章&#xff08;操作系统&#xff09;的笔记&#xff0c;请参考Part 2&#xff0c;本文是第四章——观…

鸿蒙开发融云demo发送文本消息

鸿蒙开发融云demo发送文本消息 融云鸿蒙版是不带UI的&#xff0c;得自己一步步搭建。 这次说如何发送文本消息&#xff0c;并且显示文本消息 一、思路 发送用&#xff1a;IMEngine.getInstance().sendMessage 显示文本&#xff1a; Text(ImUtils.dealMyTextContent(this.ms…

Linux:磁盘深潜:探索文件系统、连接之道与库的奥秘

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 磁盘 1.1 磁盘的物理结构 1.2 磁盘的存储结构 1.3 磁盘的逻辑结构 ​编辑二 文件系统 2.1 简单了解 2.2 inode 2.3 文件描述符&#xff0c;进程与文件系统的关系 ​编辑2…

格姗知识圈博客网站开源了!

格姗知识圈博客 一个基于 Spring Boot、Spring Security、Vue3、Element Plus 的前后端分离的博客网站&#xff01;本项目基本上是小格子一个人开发&#xff0c;由于工作和个人能力原因&#xff0c;部分技术都是边学习边开发&#xff0c;特别是前端&#xff08;工作中是后端开…

模型选择拟合

1.通过多项式拟合交互探索概念 import math import numpy as np import torch from torch import nn from d2l import torch as d2l 2.使用三阶多项式来生成训练和测试数据的标签 max_degree 20 # 多项式的最大阶数 n_train, n_test 100, 100 # 训练和测试数据集大小 true…

SQL Server 当前日期及其未来三天的日期

当前日期及其未来三天的日期&#xff0c;并分别以 YYYY-MM-DD 和 yyyyMMdd 的格式展示 1、当前日期及其未来三天的日期&#xff0c;以 YYYY-MM-DD的格式展示 WITH CurrentDate AS (SELECT GETDATE() AS 当前日期 ) -- 使用 CONVERT 函数 SELECTCONVERT(VARCHAR(10), 当前日期,…

【论文笔记】MLSLT: Towards Multilingual Sign Language Translation

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: MLSLT: Towards Multiling…

springboot医疗物品采购系统-计算机设计毕业源码10210

摘 要 本文基于Spring Boot框架&#xff0c;设计并实现了一个医疗物品采购系统。该系统旨在解决医疗物品采购中的管理和信息化问题&#xff0c;提供便捷的服务和支持。通过系统的设计与实现&#xff0c;实现了医疗物品的供应商家管理、物品类型管理、物品仓库管理、采购计划管…

小渡Ai论文写作:文献综述黑科技LitMaps30s找到所有文献

✨Litmaps 究竟是什么呢&#xff1f; Litmaps 是一款极为强大的文献搜索与追踪工具&#xff01; 它不但能够助力你找到相关的研究文献&#xff0c;还能够依据你提供的文献生成一张学术地图&#xff0c;清晰地展现文献之间的引用链以及研究发展趋势。 恰似一张璀璨的星空图&a…

Linux中安装配置SQLite3,并实现C语言与SQLite3的交互。

前言 SQLite 是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。本次实验介绍在Linux上实现C语言和SQLite3的交互&#xff0c;利用C语言编写相关语句&#xff0c;连接数据库、操作数…

python实战(三)——文本向量化/文本表示

一、概念 文本向量化是自然语言处理领域的重要环节&#xff0c;也是现在大语言模型开发重要基础。计算机程序无法理解文字信息&#xff08;实际上非数值类型的信息都无法理解&#xff09;&#xff0c;因此我们需要将文字信息转换成计算机程序可理解的数值类型。通俗来说就是我们…

Python 精品学习资料收藏下载,Python 字符串处理备忘单

重点在这&#xff1a; &#xff08;请移步图中作者处&#xff0c;获取高清大图下载链接&#xff09; Python 中的字符串&#xff08;String&#xff09;是一种用于表示文本的数据类型。字符串是不可变的&#xff0c;这意味着一旦创建&#xff0c;你不能改变字符串中的字符&am…