为什么电路要设计得这么复杂?

news2025/1/9 1:33:16

首先提出这个问题就很不容易啊,我们看两个精彩回答。

From 骄建:

假设我们回到第一个实用放大电路诞生之前

某天你开始做一个CS单管放大器,电阻负载,可是有一大堆问题,电阻做的不准,温度对器件影响大,电源噪声,增益不够等等

你决定改进一下,你用理想电流源做负载,增益变大了,你很高兴,可现在又蹦出来一大堆新问题:首先你做不了理想电流源,其次你这电路的非线性简直是弯到姥姥家去了,而且增益还是不够使的。

你苦思冥想,搞出来了所谓的差分电路,很好的抑制了非线性,但代价是两倍的功耗和面积,当你把差分电路负载换成电流源后又出了新问题:你很难把做负载的管子偏置到饱和区,这迫使你换思路:要么引入CMFB,要么就用新结构。此外,增益大小还行,但PVT问题简直让人崩溃。

你深入学习了自动化的理论,决定引入电路设计中划时代的思想——反馈,这样你就可以通过做大loop gain来稳定环路增益。因此你的主要目标变成了做一个增益超大的电路。你开始研究,最终你搞出来了一个叫做cascode的结构,这个结构可以变大阻抗,你发展了级联的思想,把cascode差分电路和单管电路级联到一块,第一次得到了经典5管放大电路。

然后你的第一次实验不出意料的失败了。

温漂对电源的影响还没有解决,为了解决温漂,你研究了半导体物理,创造性的引入补偿思想,使用三极管和一大堆运放搭建出了第一个带隙基准电路(PATA),这个电路比你的五管运放复杂了不知道多少倍。第二次实验,你发现了新的问题:这破电路的输出摆幅比阈值电压还小!

又是一夜无眠,你创造性的设计了一种名为folded的结构,这个结构用更大的功耗和更多的管子换来了摆幅的优化,然后你的第三次实验再度失败,因为你发现,电路的增益在随频率改变?

你重新投入器件研究,建立了管子的高频分析理论,提出了miller效应,极点观察法和开路时间常数法来计算电路的高频特性,当你尝试向电路里添加电容和反馈时,你发现这个电路居然开始了诡异的震荡???

于是你把巴尔豪森判据引入了电路分析,发展了电路的稳定性理论,之后你的五管运放终于可以运行了,但你对增益还是不满意,你知道增益必须变得更大,但过多的级联会导致电路不稳定,天才的你反其道而行之,使用电流—电压反馈影响输出阻抗的思路,设计出了人类历史上第一个gain boosting结构,这个结构用较小的不稳定性换来了更大的输出阻抗。

现在你把CMFB加入你的电路中,再扔到一个闭环反馈里,一个2级的运算放大器就诞生了。之后你使用电流镜做负载设计出了差分输入转单端输出的理论,你很满意,觉得这项工作可以拿诺奖(并没有)。

而这仅仅是一个放大器。。。。。

随后的某一天,你开始思考极端情况,假如频率极高,电路变成分布式的,该如何处理呢?

于是传输线诞生了。你开始对电路进行建模,发展了端口网络理论。

为了进行阻抗匹配,你又设计了一大堆五花八门的匹配网络。RF电路的高频级之间必须加上阻抗匹配网络。这把电路变的不直观了。研究者往往看着你电路里莫名出现的网络一头雾水。

为了发射信号,你开始研究一种名叫马尔尚巴伦的结构,并用它设计出了一个PA,这时你又发现非线性可以在信号调制中发挥作用,你利用非线性和吉尔伯特单元设计出了人类史上第一个混频器,第一个VCO,你将混频器和反馈结合设计出了注入锁定拓扑的分频器,当你研究单摆时突然茅塞顿开的设计出了人类历史上最重要的电路之一——PLL并讨论了它的锁定问题,随后你又天才性的将PLL和可变分频器组合,设计出了一个可以输出频率为三角调制的电路,这个电路被称为FMCW信号发生器,可惜非线性使得电路变得越加复杂。PLL中滤波器的引入迫使你考虑更多的指标,更多的极点,更多的带宽,你设计了切比雪夫滤波器,椭圆滤波器,每一个都够写一本书。LNA被引入,这玩意儿设计比二级OP复杂多了。有时为了减小功率,保护器件,你又设计了基于triode的x型衰减器。

那你的墓志铭上该咋写呢?

“最大成就是设计了一个FMCW雷达收发机系统”。

。。。。。。。。。

这就是电路设计的复杂性,衡量的指标太多,增益上去带宽下来,带宽上去噪声上来,噪声下去非线性又上来了,为了减小这些影响,电路必须做的复杂再复杂。一个有用的电路往往又是一些基本电路组合起来的,导致最后的电路变得极端复杂。

From:牧神园地

这位同学能提出这个问题,说明很有硬件天赋啊,可以考虑从事硬件设计这个方向。^_^

接下来我们开始正题,个人认为硬件电路可以简单也可以复杂,这取决于什么呢?接下来我们来举个栗子。

1. 领导要我设计个点灯(LED)电路:好,给你点上;只需要:电源+串接LED+串接电阻(R)+GND,这个电路很简单吧(如下左图),但是我们的电源从哪里来呢?一般市电是AC 220V电压,也不能直接用啊,那就还需要一个一次电源模块(AC-DC,如下右图),得到+5V电压电源。

图片

2. 领导一看,唉,你这个灯只能一直亮着不行啊,总得给它闪一闪啥的吧?我二话不说,行!那就给他加个晶振和逻辑门电路吧,给他们输出1Hz的闪动的指示灯。

图片

3. 正当我信心满满地准备着原理图,领导过来说:小王,你看你这个灯啊,只能1HZ干闪,客户说了,他们想能够控制的,我想它亮就亮、灭就灭、闪出SOS都可以。我一想就问领导:那得上单片机了?领导大手一挥:OK~

图片

4. 我正加着班看着单片机资料,领导过来说:小王啊,你看单片机都上了,要不加一个网口吧,这样方便远程控制和升级啊。我xxx,那得换个高级的单片机啊,还要加一个100M PHY芯片。

图片

5. 又过了一个星期,我正干的热火朝天,原理图快完工了,领导兴奋的跑过来说:咱们项目要升级了,赶紧分析分析,怎么把LED灯改成液晶面板;这会我懵逼了:怎么改?这没法改啊!只能推倒重来,选一款ARM处理器ba

图片

6. 终于全部搞好了原理图,让互连的同事开始布局布线了,我正检查着PCB布局,突然发觉边上有个人,不出意料的还是领导,他说:小王在忙着呢?嗯,你看看能不能加个摄像头啊?我:哦,那我要看看这款ARM是否支持,还有其它的么?领导说:嗯,再加个喇叭和5G模块?我一听头都大了:哦,哦,哦,这个信息量有点大,我得理一理。

图片

7. 终于安稳了,PCB已经全部画好准备投板,领导过来叫我去趟会议室,我以为这么快就来奖励了吗?想想心里就激动;一进会议室,领导说:小王,你这段时间辛苦了。我心里窃喜。领导接着说:这个项目啊,客户觉得功能还不够,需要对声音和图像信息进行采集、处理和智能识别,然后上报服务器端,同时通过显示器进行反馈。这个项目对我们公司非常重要,硬件方案还得辛苦你一下。内心万马奔腾。咋整?要请出X86了嘛?(如下为随手画的图,不代表真实实现)

图片

至此,这个设计已不是一个硬件工程师所能实现的了,除了单板硬件本身,还需要复杂的结构设计,散热设计,安规和EMC设计,工艺设计,生产测试设计,除此之外更需要各层软件设计需求。我举起手:领导,我要求再加100个人。此时我已经忘记了我最初到底是要干嘛的~-_-!!!

正如很多人所说,硬件设计就像搭积木(在某个层面来说是类似的,但绝不仅仅是搭积木);硬件设计是先做加法(先搭上去)后做减法(再抽掉),加法虽然不易但是减法更难:减法需要去澄清客户真正的需求,要从系统角度去理解和整合硬件功能模块。一个好的硬件设计是用最简单、可靠的硬件电路实现客户所有的需求。

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

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

相关文章

mpack简明教程

文章目录 摘要MessagePack简介MPACK的简单使用在定长的buffer存储不定长的数据读取截断的数据 摘要 本文先简单介绍MessagePack的基本概念。 然后,介绍一个MessagePack C API - MPack的通常使用。 接着尝试对MPack截断数据的读取。 注:本文完整代码见…

Android 回退页面不是上个页面

问题 Android 回退页面不是上个页面 详细问题 笔者进行Android 开发&#xff0c;点击返回上一层&#xff0c;显示页面不是上个页面&#xff0c;而是之前的某个页面 页面跳转代码 private void navigateToActivity(Context context, Class<?> targetActivityClass) {I…

【lesson57】信号量和生产者消费者模型(环形队列版)

文章目录 信号量概念信号量接口初始化销毁等待发布 基于环形队列的生产者消费者模型编码Common.hLockGuard.hppTask.hppsem.hppRingQueue.hppConProd.cc 信号量概念 POSIX信号量和SystemV信号量作用相同&#xff0c;都是用于同步操作&#xff0c;达到无冲突的访问共享资源目的…

Python 使用 raise 语句抛出异常

在 Python 编程中&#xff0c;异常处理是至关重要的一部分。异常能够帮助程序在面对错误和意外情况时进行适当的处理&#xff0c;从而使程序具有更好的稳定性和可靠性。而 raise 语句则是 Python 中用来手动触发异常的关键工具之一。本文将探讨 Python 中 raise 语句的使用方法…

算法--数论二

这里写目录标题 高斯消元高斯消元求线性方程组用途高斯消元的数学思想例题代码 二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 高斯消元 高斯消元求线性方程组 用途 这个…

【机器学习案例5】语言建模 - 最常见的预训练任务一览表

自监督学习 (SSL) 是基于 Transformer 的预训练语言模型的支柱,该范例涉及解决有助于建模自然语言的预训练任务 (PT)。本文将所有流行的预训练任务放在一起,以便我们一目了然地评估它们。 SSL 中的损失函数 这里的损失函数只是模型训练的各个预训练任务损失的加权和。 以BE…

CSP-201909-1-小明种苹果

CSP-201909-1-小明种苹果 #include <iostream> using namespace std; int main() {long long sumApple 0, maxNum 0, maxAppleNum 0, n, m;cin >> n >> m;for (long long i 0; i < n; i){long long appleNum, delta 0;cin >> appleNum;for (l…

Kibana:如何嵌入 Kibana 仪表板

作者&#xff1a;Carly Richmond 像我这样的前端工程师经常提出的要求是将 Kibana 等来源的现有仪表板嵌入到 JavaScript Web 应用程序中。 这是我必须多次执行的任务&#xff0c;因为我们希望快速部署用户生成的视图或允许用户控制给定的视图。 从我们从精彩的开发者社区收到的…

模拟电子技术——分压式偏置放大电路、多级放大电路、差动放大电路、互补输出级

文章目录 前言基本放大电路链接&#xff0c;上一篇 [基本放大电路](https://blog.csdn.net/weixin_47541751/article/details/136112075?spm1001.2014.3001.5502) 一、分压式偏置放大电路什么是分压式偏置电路分压式电路组成电路分析估算静态工作点 二、多级放大电路什么是多级…

【方法】如何打开带密码的RAR分卷压缩文件?

RAR分卷文件是一种特殊的RAR压缩文件格式&#xff0c;也就是将文件压缩成多个相同大小的压缩包&#xff0c;可以更方便传输。那如果收到了带有密码的RAR分卷压缩文件&#xff0c;要如何打开呢&#xff1f; 无论RAR分卷压缩文件是否设置了密码保护&#xff0c;在打开或者解压分…

【题解】数的范围(二分模板)

笔记 if (check(mid)) L mid &#xff0c;则 mid L R 1 >> 1 if (check(mid)) R mid &#xff0c;则 mid L R >> 1 题目 #include<bits/stdc.h> using namespace std;int n, q; int a[100010]; int b[10010]; typedef pair<int, int> PII;v…

html的列表标签

列表标签 列表在html里面经常会用到的&#xff0c;主要使用来布局的&#xff0c;使其整齐好看. 无序列表 无序列表[重要]&#xff1a; ul &#xff0c;li 示例代码1&#xff1a; 对应的效果&#xff1a; 无序列表的属性 属性值描述typedisc&#xff0c;square&#xff0c;…

java-8组合式异步编程

11.1 Future 接口 Future接口在Java5中被引人&#xff0c;设计初衷是对将来某个时刻会发生的结果进行建模。它建模了一种异步计算&#xff0c;返回一个执行运算结果的引用&#xff0c;当运算结束后&#xff0c;这个引用被返回给调用方。在Future中触发那些潜在耗时的操作把调用…

LEETCODE 164. 破解闯关密码

class Solution { public:string crackPassword(vector<int>& password) {vector<string> password_str;for(int i0;i<password.size();i){password_str.push_back(to_string(password[i]));}//希尔排序int gappassword.size()/2;while(gap>0){for(int i…

Netty Review - 底层零拷贝源码解析

文章目录 Pre概述源码解析入口索引AbstractNioByteChannel.NioByteUnsafe#readallocHandle.allocate(allocator) 小结传统的零拷贝 Pre Netty Review - 直接内存的应用及源码分析 概述 Netty 的零拷贝技术是通过优化数据传输过程中的数据复制操作&#xff0c;以降低系统的开销…

Kotlin基本语法 3 类

1.定义类 package classStudyclass Player {var name:String "jack"get() field.capitalize()set(value) {field value.trim()} }fun main() {val player Player()println(player.name)player.name " asdas "println(player.name)} 2.计算属性与防范…

Matlab|基于支持向量机的电力短期负荷预测【三种方法】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序主要是对电力短期负荷进行预测&#xff0c;采用三种方法&#xff0c;分别是最小二乘支持向量机&#xff08;LSSVM&#xff09;、标准粒子群算法支持向量机和改进粒子群算法支持向量机三种方法对负荷进行…

Codeforces Round 925 (Div. 3) D. Divisible Pairs (Java)

Codes Round 925 (Div. 3) D. Divisible Pairs (Java) 比赛链接&#xff1a;Codeforces Round 925 (Div. 3) D题传送门&#xff1a;D.Divisible Pairs 题目&#xff1a;D.Divisible Pairs 题目描述 输出格式 For each test case, output a single integer — the number o…

【Windows】MacOS制作纯净版Windows10安装U盘

方法一、在window系统中更新win10&#xff08;不更新引导程序&#xff09; cp -rp /Volumes/Windows10专业版\ 64位/* /Volumes/WIN10/https://baijiahao.baidu.com/s?id1760695844372493842&wfrspider&forpc 方法二、在window系统中更新win10&#xff08;更新引导程…

C语言学习day15:数组强化训练

题目一&#xff1a; 称体重&#xff1a;分别给10个值&#xff0c;来获得最大值 思路&#xff1a; 定义数组&#xff0c;给数组内赋10个值第一个下标的值与第二个下标的值进行比较定义max&#xff0c;将比较得来的较大的值赋值给max一直比较直到比较到最后一个下标&#xff0…