------------------------------------------------------------------------------- -- Copyright (c) 2003 Mentor Graphics Corporation -- -- This model is a component of the Mentor Graphics VHDL-AMS educational open -- source model library, and is covered by this license agreement. This model, -- including any updates, modifications, revisions, copies, and documentation -- are copyrighted works of Mentor Graphics. USE OF THIS MODEL INDICATES YOUR -- COMPLETE AND UNCONDITIONAL ACCEPTANCE OF THE TERMS AND CONDITIONS SET FORTH -- IN THIS LICENSE AGREEMENT. Mentor Graphics grants you a non-exclusive -- license to use, reproduce, modify and distribute this model, provided that: -- (a) no fee or other consideration is charged for any distribution except -- compilations distributed in accordance with Section (d) of this license -- agreement; (b) the comment text embedded in this model is included verbatim -- in each copy of this model made or distributed by you, whether or not such -- version is modified; (c) any modified version must include a conspicuous -- notice that this model has been modified and the date of modification; and -- (d) any compilations sold by you that include this model must include a -- conspicuous notice that this model is available from Mentor Graphics in its -- original form at no charge. -- -- THIS MODEL IS LICENSED TO YOU "AS IS" AND WITH NO WARRANTIES, EXPRESS OR -- IMPLIED. MENTOR GRAPHICS SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES OF -- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. MENTOR GRAPHICS SHALL -- HAVE NO RESPONSIBILITY FOR ANY DAMAGES WHATSOEVER. ------------------------------------------------------------------------------- -- File : e_LPF_2nd.vhd -- Author : Mentor Graphics -- Created : 2002/05/20 -- Last update: 2003-05-20 ------------------------------------------------------------------------------- -- Description: 2nd order Lowpass Filter with electrical connections. ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2001/11/27 1.0 Mentor Graphics Created -- 2003/04/15 1.1 Mentor Graphics Added z-domain architecture ------------------------------------------------------------------------------- library IEEE; use IEEE.MATH_REAL.all; library IEEE; use IEEE.electrical_systems.all; entity e_LPF_2nd is generic ( K : real := 1.0; -- Filter Gain Fp : real := 100.0; -- Double Pole Frequency [Hz] Q : real := 0.707; -- Quality factor Fsmp : real := 10.0e3 -- For Z-dmn only: Sample frequency (in Hz) ); port ( terminal input : electrical; terminal output : electrical ); end entity e_LPF_2nd; ------------------------------------------------------------------------------- -- Transfer Function: -- -- wp^2 -- Vo(s) = K * --------------------- Vin(s) -- wp^2 + (wp/Q)*s + S^2 ------------------------------------------------------------------------------- -- S Domain Implementation architecture s_dmn of e_LPF_2nd is quantity vin across input; quantity vout across iout through output; constant wp : real := math_2_pi*Fp; -- Frequency in Radians constant num : real_vector := (wp*wp, 0.0, 0.0); -- Numerator array constant den : real_vector := (wp*wp, wp/Q, 1.0); -- Denominator array begin vout == K * vin'ltf(num, den); -- Laplace Transform of input end architecture s_dmn; -- Z Domain Implementation (via bilinear transform, no pre-warping) architecture z_dmn of e_LPF_2nd is quantity vin across input; quantity vout across iout through output; constant T : real := 1.0/Fsmp; -- Sample period constant wp : real := math_2_pi*Fp; -- Frequency in Radians constant n0 : real := Q*T**3*wp**2; -- num z-0 constant n1 : real := 3.0*Q*T**3*wp**2; -- num z-1 constant n2 : real := 3.0*Q*T**3*wp**2; -- num z-2 constant n3 : real := Q*T**3*wp**2; -- num z-3 constant d0 : real := 4.0*Q*T + 2.0*T**2*wp + Q*T**3*wp**2; -- den z-0 constant d1 : real := -4.0*Q*T + 2.0*T**2*wp + 3.0*Q*T**3*wp**2; -- den z-1 constant d2 : real := -4.0*Q*T - 2.0*T**2*wp + 3.0*Q*T**3*wp**2; -- den z-2 constant d3 : real := 4.0*Q*T - 2.0*T**2*wp + Q*T**3*wp**2; -- den z-3 constant num : real_vector := (n0, n1, n2, n3); -- Numerator array constant den : real_vector := (d0, d1, d2, d3); -- Denominator array begin vout == K * vin'ztf(num, den, T); -- Z-domain transfer function end architecture z_dmn; ------------------------------------------------------------------------------- -- Copyright (c) 2003 Mentor Graphics Corporation -------------------------------------------------------------------------------