⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opt_two_pole_lpf.m

📁 HERE IS A GOOD PSO TOOL BOX
💻 M
字号:
% Optimal two-pole lowpass filter implementation.% (a figure with the tradeoff between the power and noise is generated)% FIX: make sure that this numerical example is fine.%% This is an example taken directly from the paper:%%   Geometric Programming and its Applications to EDA Problems%   (DATE Tutorial 2005) by Boyd, Kim, and Mohan.%   (see pages 87-92)%% Implements an optimal two-pole Butterworth filter with frequency wc,% which minimizes total power, subject to area, output noise limits, etc.% The problem can be posed as a generalized GP:%%   minimize   P(u1) + P(u2) %       s.t.   t1 = sqrt(2)/wc,   t2 = (1/sqrt(2))/wc%              Aamp(u1) + Aamp(u2) + Acap(v1) + Acap(v2) <= Amax%              M = (wc/4*sqrt(2))*sqrt(N1^2 + 2*N2^2) <= Mmax%% where variables are u1, u2, v1, and v2.%% Almir Mutapcic 02/02/06close all; clear all;% set the quiet flag (no solver reporting)global QUIET; QUIET = 1;% problem constantswc = 10^8;wc = 100;Amax = 4*10^-6;Amax = 4*10^-1;% GP variablesgpvar W1 L1 W2 L2 Acap1 Acap2% amplifier modelAamp1 = W1*L1;Aamp2 = W2*L2;P1 = (2.5*10^-4)*(W1/L1);P2 = (2.5*10^-4)*(W2/L2);g1 = (4*10^-5)*W1/L1;g2 = (4*10^-5)*W2/L2;N1 = sqrt(7.5*10^-16)*sqrt(L1/W1);N2 = sqrt(7.5*10^-16)*sqrt(L2/W2);C1 = (10^-4)*Acap1;C2 = (10^-4)*Acap2;t1 = C1/g1;t2 = C2/g2;M = wc/(4*sqrt(2))*sqrt(N1^2 + 2*N2^2);% variable parameter (max noise)Mmax = [10:10:100]*10^-6;Mmax = [10:10:100]*10^-4;% objective is to minimize total power of the implementation% obj = P(u1) + P(u2) (private variables, let u1 = L and u2 = W)obj = P1 + P2;% constraint set constr = [ ...  t1 == sqrt(2)/wc;  t2 == (1/sqrt(2))/wc;  Aamp1 + Aamp2 + Acap1 + Acap2 <= Amax;];power = zeros(1,10);status = {};% setup GP problems with varying parameter Mmax and obtain tradeoff curvefor m = 1:length(Mmax)  % add constraints that have varying parameters  constr(4) = M <= Mmax(m);  % solve the optimal filter implementation problem  prob = gpproblem(obj, constr);  res = solve(prob);  power(m) = res.obj_value;  status{end+1} = res.status;enddisp('Displaying power vector: ')power% enable solver reportsglobal QUIET; QUIET = 0;% tradeoff plotsemilogy(Mmax*10^3, power*10^3);xlabel('max noise Mmax (milli-Volts)');ylabel('power P (milli-Watts)');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -