Filename: “AET_ch8”
Multi-Domain Modeling
1.1 MEMS Accelerometers Modeling1
Sensing is typically performed in two steps:
- Transform acceleration to mechanical displacement
- Transform mechanical displacement to electrical signal
Microflexural Structure
Daspot: (D)
- Model frictional resistance as damping force proportional to rate of movement (velocity)
Seismic Mass (M):
- Model inertia as force proportional to rate of velocity (acceleration)
Spring (K):
- Model structural elasticity as spring force proportional to movement
Inertia, dissipative, elasticity characteristics determine transient (time domain) and bandwidth (frequency domain) response.
Where:
ω0natural resonant frequency - oscillation with no damping/forcing
ξdamping factor – actual damping/critical damping
ωdamped resonant frequency
x/aprimary transducer transfer function – displacement/unit acceleration
Capacitive Sensing
Seismic mass forms one plate of a parallel plate capacitance. Movement of mass changes area/gap between parallel plates and , consequently the capacitance.
Differential Capacitance Sensing
Easier to detect relative (differential) change rather than absolute change
Comb finger capacitances connected in parallel to add to form C1 and C2.
Sensing requires a bridge circuit with complementary AC source VS.
C1 = C2=> no acceleration
C1≠ C2=> acceleration
Signal Detection is based on
Sin x Sin y = 0.5[cos(x-y) – cos(x+y)]
LIBRARY IEEE;
USE IEEE.ENERGY_SYSTEMS.ALL;
USE IEEE.ELECTRICAL_SYSTEMS.ALL;
USE IEEE.MECHANICAL_SYSTEMS.ALL;
ENTITY comb_drive IS
GENERIC(m : MASS := 0.16*nano;
d : DAMPING := 4.0e-6;
k : STIFFNESS := 2.6455;
a : REAL := 2.0e-6 * 110.0e-6;
do : REAL := 1.5e-6);
PORT(TERMINAL proof_mass, ref : TRANSLATIONAL;
TERMINAL top_el, mid_el, bot_el : ELECTRICAL);
END ENTITY comb_drive;
ARCHITECTURE bcr OF comb_drive IS
--Free quantities
QUANTITY vel : VELOCITY;
QUANTITY qtm, qbm : CHARGE;
QUANTITY dtm, dbm : DISPLACEMENT;
QUANTITY ctm, cbm : CAPACITANCE;
--branch quantities
QUANTITY pos ACROSS force THROUGH proof_mass TO ref;
QUANTITY vtm ACROSS itm THROUGH top_el TO mid_el;
QUANTITY vbm ACROSS ibm THROUGH bot_el TO mid_el;
BEGIN
--compute displacement of comb drive --mechanical dynamics
--compute change in capacitance--electrical dynamics
--compute generated current
END ARCHITECTURE bcr;
LIBRARY IEEE;
USE IEEE.MATH_REAL.ALL;
USE IEEE.MECHANICAL_SYSTEMS.ALL;
ENTITY ENV_FORCE IS
GENERIC(MAG_AC, MAG_DC : FORCE :=0.0;
FREQ : REAL := 0.0);--CONSTANT, QUANTITY not allowed in GENERIC
PORT(TERMINAL PT1, PT2 : TRANSLATIONAL);
END ENTITY ENV_FORCE;
ARCHITECTURE SINE OF env_force IS
QUANTITY FORCE THROUGH PT1 TO PT2;
BEGIN
FORCE == MAG_AC*SIN(MATH_2_PI*FREQ*NOW);
END ARCHITECTURE SINE;
LIBRARY IEEE;
USE IEEE.MATH_REAL.ALL;
USE IEEE.ELECTRICAL_SYSTEMS.ALL;
ENTITY vsource IS
GENERIC(MAG_AC, MAG_DC : VOLTAGE := 0.0;
FREQ : REAL := 0.0);
PORT (TERMINAL p, m : ELECTRICAL);
END ENTITY vsource;
ARCHITECTURE sine OF vsource IS
QUANTITY v across i THROUGH p TO m;
BEGIN
v == mag_ac*SIN(MATH_2_PI*freq*NOW)+mag_dc;
END ARCHITECTURE sine;
Signal Detection
The modulated signal in r1.v can be demodulated by mixing the signal with a local oscillator with the same frequency as the carrier.
[A(t)Sin x] Sin y = 0.5A(t)[cos(x-y) – cos(x+y)]
If x=y
[A(t)Sin x] Sin x =0.5A(t)[1-cos2x]=0.5A(t)-0.5A(t)cos2x
A(t) can be recovered by low pass filtering.
gs1=6.28e3/(s+6.28e3) 1kHz cutoff frequency
1.2 Electrical and Thermal Modeling
Thermal Components3
- Temperature Source (T):Across Quantity like V, unit K(Kelvin)
- Heat Flow Source (H):Through Quantity like I, unit J/s(Joules/sec)
- Thermal Resistance (RTH) :Resistive component like R, unit K*s/J
- Thermal Capacitance (CTH): Capacitive component like C, unit J/K
Thermal Resistance (RTH):
T(t)= RTH H(t)
Thermal Resistance VHDL-AMS Model
library ieee;
use ieee.thermal_systems.all;
entity rth is
port(
quantity k: in real:= 1.0; -- linear coefficient (k*s/J)
terminal th1, th2: thermal);
end entity rth;
architecture beha of rth is
quantity t across h through th1 to th2;
begin
t == h*k;
end beha;
Thermal Capacitance (CTH):
Where:
T0 is the initial temperature 293 K.
Thermal Capacitance VHDL-AMS Model
library ieee;
use ieee.thermal_systems.all;
entity cth is
port(
quantity c_th: in real := 1.0; -- thermal capacitance (J/K)
quantity t0: in real := 293.0; -- initial temperature (K)
terminal th1: thermal);
end entity cth;
architecture beha of cth is
quantity t across h through th1 to thermal_ref;
quantity h_int : real := t0;
begin
Break
h_int => t0 * c_th;
h_int'dot == h;
t == h_int / c_th;
end beha;
Thermometer -Like voltmeter
library ieee;
use ieee.thermal_systems.all;
entity thm is
port(
quantity temp: out real; -- temperature (K)
terminal th1 : thermal);
end entity thm;
architecture beha of thm is
quantity t across th1 to thermal_ref;
begin
t == temp;
end beha;
Thermal Source--Like voltage source
------
library ieee;
use ieee.thermal_systems.all;
entity t is
port(
quantity value: in real:= 293.0; -- temperature (K)
terminal th1: thermal);
end entity t;
architecture beha of t is
quantity t_ across h through th1 to thermal_ref;
begin
t_ == value;
end beha;
θ=370K; rth1: k=1 K/W; cth1: c_th=1 Ws/K
θ=370K; rth1: k=2 K/W; cth1: c_th=1 Ws/K
θ=370K; rth1: k=1 K/W; cth1: c_th=2 Ws/K
Simple Diode without Thermal Modeling
LIBRARY IEEE;
USE IEEE.ELECTRICAL_SYSTEMS.ALL;
USE IEEE.MATH_REAL.ALL;
ENTITY D IS
GENERIC (
ISAT : REAL := 1.0e-12; -- Saturation current
VT : REAL := 35.0e-3; -- Thermal voltage
RR : REAL := 100.0e3; -- Reverse resistance
VF : REAL := 0.8; -- Forward voltage
RB : REAL := 1.0e-3 -- Bulk Resistance
);
PORT (TERMINAL p,m : ELECTRICAL);
END ENTITY D;
ARCHITECTURE behav OF D IS
QUANTITY v ACROSS i THROUGH p TO m;
BEGIN
IF (v >= 0.0) USE
i == ISAT * ((exp(v/VT)) - 1.0);
ELSE
i == v/RR;
END USE;
END ARCHITECTURE;
ARCHITECTURE equiv OF d IS
CONSTANT vlimit : REAL := VF/(1.0 - (RB/RR));
QUANTITY v ACROSS i THROUGH p TO m;
BEGIN
IF (v < vlimit) USE
i == v/RR;
ELSE
i == (v-VF)/RB;
END USE;
END ARCHITECTURE equiv;
Model Using Basics Vs AMS
Models Usings Basics
Simple Diode Thermal Model1 (vt is assumed constant)
LIBRARY IEEE;
USE IEEE.ENERGY_SYSTEMS.ALL; --Define K (boltzmann), Q(elec_charge)
USE IEEE.ELECTRICAL_SYSTEMS.ALL;
USE IEEE.THERMAL_SYSTEMS.ALL;
USE IEEE.MATH_REAL.ALL;
ENTITY MyDiodeTh IS
GENERIC (
ISAT : REAL := 1.0e-12; -- Saturation current
vt : REAL := 35.0e-3; -- Thermal voltage
RR : REAL := 100.0e3; -- Reverse resistance
VF : REAL := 0.8; -- Forward voltage
RB : REAL := 1.0e-3 -- Bulk Resistance
);
PORT (TERMINAL anode,cathode : ELECTRICAL;
TERMINAL junction: THERMAL);
END ENTITY MyDiodeTh;
ARCHITECTURE behav OF mydiodeth IS
QUANTITY vd ACROSS id THROUGH anode TO cathode;
QUANTITY temp ACROSS power THROUGH thermal_ref TO junction;
BEGIN
IF (vd >= 0.0) USE
id == ISAT * ((exp(vd/vt)) - 1.0);
ELSE
id == vd/RR;
END USE;
power == vd*id;
END ARCHITECTURE behav;
Simple Diode Thermal Model2 (vt depends on temp)
LIBRARY IEEE;
USE IEEE.ENERGY_SYSTEMS.ALL; --Define K (boltzmann), Q(elec_charge)
USE IEEE.ELECTRICAL_SYSTEMS.ALL;
USE IEEE.THERMAL_SYSTEMS.ALL;
USE IEEE.MATH_REAL.ALL;
ENTITY MyDiodeTh IS
GENERIC (
ISAT : REAL := 1.0e-12; -- Saturation current
RR : REAL := 100.0e3; -- Reverse resistance
VF : REAL := 0.8; -- Forward voltage
RB : REAL := 1.0e-3 -- Bulk Resistance
);
PORT (TERMINAL anode,cathode : ELECTRICAL;
TERMINAL junction: THERMAL);
END ENTITY MyDiodeTh;
ARCHITECTURE behav OF mydiodeth IS
QUANTITY vd ACROSS id THROUGH anode TO cathode;
QUANTITY temp ACROSS power THROUGH thermal_ref TO junction;
QUANTITY vt : voltage;-- thermal voltage
BEGIN
IF (vd >= 0.0) USE
id == ISAT * ((exp(vd/vt)) - 1.0);
ELSE
id == vd/RR;
END USE;
vt == temp * K/Q;-- thermal voltage is temp dependend
power == vd*id;
END ARCHITECTURE behav;
Simple Diode Thermal Model3 (vt depends on temp & id depends on id)
LIBRARY IEEE;
USE IEEE.ENERGY_SYSTEMS.ALL; --Define K (boltzmann), Q(elec_charge)
USE IEEE.ELECTRICAL_SYSTEMS.ALL;
USE IEEE.THERMAL_SYSTEMS.ALL;
USE IEEE.MATH_REAL.ALL;
ENTITY DiodeTh IS
GENERIC (iss : REAL := 1.0e-4;
n, af : REAL := 1.0;
tt, cj0, vj, rs, kf : REAL :=0.0);
PORT (TERMINAL anode, cathode : ELECTRICAL;
TERMINAL junction: THERMAL);
END ENTITY DiodeTh;
ARCHITECTURE Level0 OF diodeth IS
QUANTITY vd ACROSS id, ic THROUGH anode TO cathode;
QUANTITY temp ACROSS power THROUGH thermal_ref TO junction;
QUANTITY qc : charge;
QUANTITY vt : voltage;-- thermal voltagge
BEGIN
qc == tt*id - 2.0*cj0 * sqrt(vj**2 -vj*vd+1.0e-20);--1.0e-20 is added to prevent division by zero error
ic == qc'DOT;
id == iss*(exp((vd-rs*id)/(n*vt)) - 1.0);
vt == temp * K/Q;
power == vd*id;
END ARCHITECTURE Level0;
Note: When the diode is forward bias vd >0 (<0 reverse polarity), the solver oscillate. The solution is incorrect.
REFERENCES
- “Analog and Mixed-Signal Modeling Using the VHDL-AMS Language”, E.C. Beaverton et.al., 36th Design Automation Conference, New Orleans, June 21-25, 1999.
- “Simulation System SIMPLORER VHDL-AMS Tutorial,” English Edition, © 2003 Ansoft Corporation.
- Simulation System SIMPLORER® v.6.0 User Manual, English Edition, © 1996-2002, Ansoft Corporation.