本章接下来的内容,将着重介绍如何得到要求的GBW与PM,同学们可以参照对比sansen第五、六章学习,但抛开课本,也完全可以理解本部分的内容。我们会将重点放在如何通过给定的指标——相位裕度以及GBW,得到合适的小信号参数——第一级跨导gm1、第二级跨导gm2以及密勒补偿电容Cc,而抛开诸如“开环频率响应与闭环频率响应的关系”、“为什么需要70°的相位裕度,频率响应才能完全没有尖峰”以及“频率特性与其他指标如何折中”等问题。
以上被我们忽略的问题,事实上都及其重要,但我相信第一次接触运放设计的同学们,比起“尽善尽美”地掌握所有运放设计理论,更关心如何快速上手,即如何满足设计指标。因此,在本节内容中,我们只需要关心,我们如何得到60°的相位裕度,以及100MHz的GBW,而无需关心这些指标为什么是这样,满足这样的指标又意味着适用于哪些应用。
接下来,笔者将贯通全章,通过分步骤的方式,带领同学们一步步从给定的相位裕度、GBW,得到合适的设计参数。
首先需要明确的是,由于我们引入的运放环境,是单位增益负反馈,因此反馈系数F=1,则环路增益LG可以表示为:

其中Aopen为运放的开环增益。
也就是说,反馈系统环路增益的频率响应,与运放本身开环的频率响应几乎一致,只有相位上存在180°的区别。因此,在以下的分析中,我们采用运放的开环频率响应,代替环路增益的频率响应。
我们接下来,把目光放在GBW与PM。在这两个指标中,GBW是相对容易理解与分析的一个,即增益与带宽的乘积,也可以理解为单位增益带宽,直接与运放传输函数中的极零点相关联。
而相位裕度这一指标则不那么直观,我们首先要将“相位裕度大于60°”这一要求,转化为对极零点位置的要求。

首先,我们知道,这个电路存在一个主极点——由Cc的密勒效应引入,一个次极点——由负载电容CL引入,以及一个正零点——由Cc的前馈效应引入。
在这里我们忽略了由节点A引入的一个极零点对,因为这一节点的寄生电容引入的零点位于它引入的极点的二倍处,且该零点为负零点,可以很大程度上补偿自身引入的极点,因此我们认为这一极零点对频率响应影响较小。但由于极点在零点之前,因此我们这里给这一因素留有设计裕量,认为这一极零点对“吃掉”了5°的PM,而忽略这一对极零点对频率响应的其他影响。
零极点定性分析与Bode图示意:

基于以上分析,二级运放的频率响应可以被描述为:
其中,Av0为直流增益,ωz为零点,ωd为主极点,ωnd为次主极点。我们在这里先不讨论这些极零点具体的表达式。
相位裕度大于60°,也就意味着,将s=j*GBW代入H(s)的表达式,其相位∠H(s)应大于-120°,即:

去掉负号后:

由于GBW等于直流增益Av0与主极点ωd为主极点的乘积,而Av0通常足够大,所以其的

我们认为约等于90°。因此有:

现在只剩下一个零点与一个次主极点,而零点在设计中,由于其频率较高,通常对相位裕度的影响小于次主极点,因此我们只给零点带来的相移留8°的余量,则有:

那么我们就可以得到ωnd与GBW的关系:

在这里我们留有余量,则认为次主极点ωnd应至少为GBW的4倍。同时:

那么我们就可以得到ωz与GBW的关系:

在这里我们留有余量,则认为ωz应至少为GBW的8倍。
至此,我们将相位裕度的要求,转化为了次主极点ωnd、ωz与GBW的关系,更有利于我们对二级运放进行直观的设计。
在明确了对极零点的要求后,我们还需要用二级运放中的小信号设计参数——gm1、gm2以及Cc,来写出极零点的表达式。
首先,我们画出差分小信号模型图:

其中:
Rn1为第一级的输出阻抗,由M1与M4的输出阻抗并联构成;
Cn1为第一级输出节点对地的寄生电容(不包含补偿电容的密勒效应),由M1、M4的漏极电容以及M2的栅极电容构成;
RL为第二级的输出阻抗,由第二级的两个管子——M2、M6的输出电阻并联组成;
CL为二级运放的负载电容,由指标决定为1pF,会被M2、M6的漏极电容略微影响。
在这里,我们将第一、二级等效为两个gm单元,大小分别等于M1管的gm1与M2管的gm2。
然后,我们可以进一步简化我们的小信号模型图:

在之后的篇幅中,我们都采用这个小信号模型,对差分小信号进行分析计算。
得到了小信号模型,我们就可以通过计算,得到这个小信号电路的零极点。
我们在这里总结了ωnd与GBW的简化形式,在后续的分析中,我们采用以下的表达式,在方便设计的同时,保证了准确性:

我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我正在尝试学习Ruby词法分析器和解析器(whitequarkparser)以了解更多有关从Ruby脚本进一步生成机器代码的过程。在解析以下Ruby代码字符串时。defadd(a,b)returna+bendputsadd1,2它导致以下S表达式符号。s(:begin,s(:def,:add,s(:args,s(:arg,:a),s(:arg,:b)),s(:return,s(:send,s(:lvar,:a),:+,s(:lvar,:b)))),s(:send,nil,:puts,s(:send,nil,:add,s(:int,1),s(:int,3))))任何人都可以向我解释生成的
我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:
假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl
在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定