Home > Community > Forums > RF Design > Verilog-A large-signal model for a fixed-fixed beam RF MEMS resonator


* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Verilog-A large-signal model for a fixed-fixed beam RF MEMS resonator 

Last post Wed, Apr 6 2011 3:01 PM by vcaeken. 0 replies.
Started by vcaeken 06 Apr 2011 03:01 PM. Topic has 0 replies and 1363 views
Page 1 of 1 (1 items)
Sort Posts:
  • Wed, Apr 6 2011 3:01 PM

    • vcaeken
    • Not Ranked
    • Joined on Fri, Aug 13 2010
    • Posts 3
    • Points 15
    Verilog-A large-signal model for a fixed-fixed beam RF MEMS resonator Reply
    /* Verilog-A large-signal model for a fixed-fixed beam RF MEMS resonator
    Content of RF_MEMS_RESONATOR.va. Open-source code covered by BSD license.

    The Verilog-A large signal model can be used for operating point, small signal (AC, SP)
    and large signal (HB, PSS, QPSS) simulations, using ADS, SpectreRF or Qucs. It includes
    large-signal electromechanical effects, as well as small-signal Brownian noise. It does
    not include electro-thermal effects yet.

    1st of October, 2011
    Check for update: http://www-personal.umich.edu/~vcaeken

    Reference: "Modeling RF MEMS Devices", by K. Van Caekenberghe,
    IEEE Microwave Magazine, vol. 13, no. 1, pp. 83-110, Jan.-Feb. 2012 */

    `include "disciplines.vams"
    `include "constants.vams"
    `define EPS 1e-10
    // `define POW(x,y) pow( (x) , y )
    `define POW(x,y) pow( (x+`EPS) , y )

    module RF_MEMS_RESONATOR (in,out,beam);
        inout in, out, beam;
        electrical in, out, beam, dVindt, dVoutdt;
        kinematic z, velocity;

        // Model parameters
        parameter real m=2.275e-13 from (0:inf]; // beam mass [kg]
        parameter real b=2.721e-9 from (0:inf]; // damping coefficient [N.s/m]
        parameter real k_1=1.505e3 from (0:inf]; // k_i: stiffness parameters [N/m^i]
        parameter real k_2=0 from [-inf:inf];
        parameter real k_3=-6.2e15 from [-inf:inf];
        parameter real k_4=0 from [-inf:inf];
        parameter real k_5=1.2e30 from [-inf:inf];
        parameter real g_0=0.33e-6 from (0:inf]; // gap [m]
        parameter real C_0=0.185e-15 from (0:inf]; // capacitance [F]

        real C_m, E_max, eta, f_m, F_e, F_s, i_out_max, kappa, k_1_eff, k_3_eff, L_m, Q_m, R_m, Vin, Vout, v_in_max, z_c;

        analog begin

        @ ( initial_step ) begin

            $strobe("\n%M: b (Damping coefficient [N.s/m]) = %E",b);
            $strobe("%M: m (Effective beam mass [kg]) = %E",m);
            $strobe("%M: k_1 (Stiffness parameter [N/m^1]) = %E",k_1);
            $strobe("%M: k_2 (Stiffness parameter [N/m^2]) = %E",k_2);
            $strobe("%M: k_3 (Stiffness parameter [N/m^3]) = %E",k_3);
            $strobe("%M: k_4 (Stiffness parameter [N/m^4]) = %E",k_4);
            $strobe("%M: k_5 (Stiffness parameter [N/m^5]) = %E",k_5);
            $strobe("%M: C_0 (Transducer capacitance [F]) = %E",C_0);
            $strobe("%M: g_0 (Transducer gap [m]) = %E",g_0);

            $strobe("%M: k_1_eff (Effective stiffness parameter [N/m^1]) = %E",k_1_eff);
            $strobe("%M: k_3_eff (Effective stiffness parameter [N/m^3]) = %E",k_3_eff);
            $strobe("%M: f_m_e (Mechanical resonant frequency [Hz]) = %E",f_m);
            $strobe("%M: Q (Mechanical Q factor [) = %E",Q_m);
            if (eta == 0) eta=`EPS;
            $strobe("%M: eta (Electromechanical coupling coefficient (DC-biased beam) [A.s/m]) = %E",eta);
            $strobe("%M: R_m (Motional resistance (DC-biased beam) [Ohm]) = %E",R_m);
            $strobe("%M: C_m (Motional capacitance (DC-biased beam) [F]) = %E",C_m);
            $strobe("%M: L_m (Motional inductance (DC-biased beam) [H]) = %E",L_m);
            $strobe("%M: kappa (Amplitude-frequency coefficient (DC-biased beam) [1/(m^2.s)]) = %E",kappa);
            $strobe("%M: z_c (Critical displacement (DC-biased beam) [m]) = %E",z_c);
            $strobe("%M: i_out_max (Maximum output current (DC-biased beam) [A]) = %E",i_out_max);
            $strobe("%M: v_in_max (Maximum input voltage (DC-biased beam) [V]) = %E",v_in_max);
            $strobe("%M: E_max (Maximum reactive energy (DC-biased beam) [J]) = %E",E_max);

        $strobe("\n%M: V_in [V] = %E", Vin);
        $strobe("%M: V_out [V]= %E", Vout);

            // F_e: voltage-controlled electrostatic force [N]
        $strobe("%M: F_e (Electrostatic force [N]) = %E", F_e);

            // F_s: spring force [N]
        $strobe("%M: F_s (Spring force [N]) = %E", F_s);

        // Nonlinear state-space description
        Pos(z):ddt(Pos(velocity))==1/m*(-b*Pos(velocity)-F_s+F_e+white_noise(4.0*`P_K*$temperature*b, "BROWNIAN_NOISE"));

        `define SLEW   
        `ifdef SLEW   
            V(dVindt) <+ddt(V(in, beam));



    Filed under:
    • Post Points: 5
Page 1 of 1 (1 items)
Sort Posts:
Started by vcaeken at 06 Apr 2011 03:01 PM. Topic has 0 replies.