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

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

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.mzph.cn/news/684973.shtml

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

相关文章

AI:129-基于深度学习的极端天气事件预警

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

HTML5 Canvas与JavaScript携手绘制动态星空背景

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>星空背景</title> </head> <body style"overflow-x:hidden;"><canvas …

wayland(xdg_wm_base) client 使用 dmabuf 最简实例

文章目录 前言一、zwp_linux_dmabuf_v1 协议二、wayland client 使用 zwp_linux_dmabuf_v1 协议传递dma-buf代码实例1. wayland_dmabuf.c 代码实例2. xdg-shell-protocol.c 和 xdg-shell-client-protocol.h3. linux-dmabuf-unstable-v1-client-protocol.h 和 linux-dmabuf-unst…

机器学习算法与Python实战 | 常见统计概率分布实现(内含python代码)

本文来源公众号“机器学习算法与Python实战”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;https://mp.weixin.qq.com/s/0Lgmdvey70wXQcP1XQvylQ 在平时的科研中&#xff0c;我们经常使用统计概率的相关知识来帮助我们进行城市研…

第五节 zookeeper集群与分布式锁_2

1.分布式锁概述 1.1 什么是分布式锁 1&#xff09;要介绍分布式锁&#xff0c;首先要提到与分布式锁相对应的是线程锁。 线程锁&#xff1a;主要用来给方法、代码块加锁。当某个方法或代码使用锁&#xff0c;在同一时刻仅有一个线程执行该方法或该代码段。 线程锁只在同一J…

【医学知识图谱 自动补全 关系抽取】生成模型 + 医学知识图谱 = 发现三元组隐藏的关系实体对

生成模型 医学知识图谱 发现三元组新关系实体对 提出背景问题&#xff1a;如何自动发现并生成医疗领域中未被标注的实体关系三元组&#xff1f;CRVAE模型 提出背景 论文&#xff1a;https://dl.acm.org/doi/pdf/10.1145/3219819.3220010 以条件关系变分自编码器&#xff08;…

第7章 Page449 7.8.9智能指针 std::unique_ptr课堂作业,使用智能指针改写foo()函数

源代码&#xff1a; /** \brief 使用std::unique_ptr改写智能指针章节开始的foo()函数** \param* \param* \return**/ #include <iostream> #include <memory>using namespace std;struct O {~O(){cout << "我是被管的对象。我要被释放啦......" …

php基础学习之文件包含

描述 在一个php脚本中&#xff0c;将另一个php文件包含进来&#xff0c;合作实现某种功能 这个描述看起来似乎和C/Java等语言的头文件/包有点类似&#xff0c;但本质是不一样的 打个比方&#xff1a; C/Java的头文件/包更像是一个工具箱&#xff0c;存放各种很完善的工具&#…

Git快速掌握,通俗易懂

Git分布式版本控制工具 介绍 Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。Git是由Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git可以帮助开发者们管理代码的版本&#xff0c;避免代码冲突&#…

机器学习分类评估四个术语TP,FP,FN,TN

分类评估方法主要功能是用来评估分类算法的好坏&#xff0c;而评估一个分类器算法的好坏又包括许多项指标。了解各种评估方法&#xff0c;在实际应用中选择正确的评估方法是十分重要的。 这里首先介绍几个常见的模型评价术语&#xff0c;现在假设我们的分类目标只有两类&#x…

Dockerfile 常用指令

1、FROM 指定base镜像。 2、Docker history 显示镜像的构建历史&#xff0c;也就是Dockerfile的执行过程。 Missing 表示无法获取IMAGE ID&#xff0c;通常从Docker Hub下载的镜像会有这个问题。 3、调试Dockerfile&#xff0c;使用sudo docker run -it XXXX&#xff0c;XXXX…

英文单词-计算:Calculate与Compute的区别是什么

英文单词-计算:Calculate与Compute的区别是什么 compute 源自法语&#xff1b;calculate 源自拉丁语。在使用上&#xff0c;calculate 使用得更为广泛 calculate侧重人的分析&#xff0c;而compute侧重机器的运算。 calculator是“计算器”&#xff0c;而computer是“计算机”…

输入输出自定义映射矩阵(数据结构树)

输出自定义FC其它算法实现&#xff0c;可以参考下面文章&#xff1a; https://rxxw-control.blog.csdn.net/article/details/125994252https://rxxw-control.blog.csdn.net/article/details/125994252下面我们看下我们的控制要求。在学习本篇博客之前大家可以熟悉下数据结构图…

Mybatis——Javaweb进阶学习(五)

目录 一、Mybatis快速入门1.创建Springboot工程&#xff0c;数据库表user&#xff0c;实体类User2.引入Mybaties相关依赖3.编写Sql语句 二、lombok1.基本概念2.使用方法 三、基础操作1.环境准备a.数据库准备b.创建员工实体类Emp数据类型对比命名对比 c.Mapper接口创建 2.删除操…

CSS盒子的概念

盒子模型 盒子的概念 页面中的每一个标签都可以看做是一个“盒子”&#xff0c;通过盒子的视角更方便的进行布局 浏览器在渲染&#xff08;显示&#xff09;网页时&#xff0c;会将网页中的元素看做是一个个的矩形区域&#xff0c;称之为“盒子” 盒子模型 CSS中规定每个盒…

从计算机恢复已删除文件的 6 种方法!

如果您的重要文件之一已从计算机中删除怎么办&#xff1f;如果不小心从硬盘中删除了文件怎么办&#xff1f; 如今的公司通常将重要数据存储在云或硬盘中。但最重要的是&#xff0c;您必须考虑这样一个事实&#xff1a;您可能会丢失计算机上的数据。数据丢失的原因有多种&#x…

C语言-----用二维数组解决菱形的打印问题

1.打印菱形&#xff0c;多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜线和正斜线的长度。 #include <stdio.h>int main() {int n0;while(scanf("%d",&n)! EOF){int i0;int j0;f…

【数据结构】12 堆栈应用:表达式求值

表达式类型 后缀表达式 有一个常量表达式的中缀表达式为&#xff1a;5 6 / 2 - 3 * 4&#xff0c;其后缀形式表示为&#xff1a; 5 6 2 / 3 4 -。后缀表达式的特点是运算符位于两个预算数之后。其前缀表达式为&#xff1a; - 5 / 6 2 3 4。 后缀表达式相比于中缀表达式的…

彻底理解无刷电机

前言 现在很多设备都是搭载的无刷电机而不是有刷电机了&#xff0c;为啥&#xff1f;性能好啊&#xff01; 引入 同性相斥异性相吸 可以看出&#xff0c;只要改变磁铁的极性&#xff0c;电机就能转起来 那 怎么改变磁铁极性呢&#xff1f; 右手螺旋定则可以根据电流的流向…

可变参数(c/c++)

目录 一、C语言版本 二、C的实现方法 2.1数据包 2.2sizeof...运算符 2.3可变参数模板的使用 2.4emplace_back() 有时候我们在编写函数时&#xff0c;可能不知道要传入的参数个数&#xff0c;类型 。比如我们要实现一个叠加函数&#xff0c;再比如c语言中的printf,c中的emp…