------------------------------------------------------------------------------- -- 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_NthOrderPoly.vhd -- Author : Mentor Graphics -- Created : 2002/05/21 -- Last update: 2003-05-20 ------------------------------------------------------------------------------- -- Description: Nth-degree S-domain polynomial transfer function, with -- electrical connections. ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2002/05/21 1.0 Mentor Graphics Created -- 2003/04/15 1.1 Mentor Graphics Added z-domain architecture ------------------------------------------------------------------------------- library IEEE; use IEEE.math_real.all; use IEEE.electrical_systems.all; entity e_NthOrderPoly is generic ( -- User may add comma-separated generic values into num and den -- arrays. These values represent the transfer function -- coefficients in ascending powers of s (s0, s1, s2, etc). -- The size of num and den vectors is defined by the number of -- comma-separated coeffs. num : real_vector := (314.0, 0.0); -- Numerator coeffs. in rad/s den : real_vector := (314.0, 1.0); -- Denominator coeffs. in rad/s k : real := 1.0; -- Normalizing gain Fsmp : real := 10.0e3; -- For z-dmn only: Sample frequency (in Hz) init_delay : real := 0.0; -- For z-dmn only: Initial Delay (real) z_num : real_vector := (0.0314, 0.0314); -- For z-dmn only: num coeffs. z_den : real_vector := (2.0314, -1.9686) -- For z-dmn only: den coeffs. ); port ( terminal input : electrical; terminal output : electrical); end entity e_NthOrderPoly; ------------------------------------------------------------------------------- -- Transfer Function: -- -- a0 + a1s + a2s^2 ... -- Vo(s) = K * ------------------------ Vin(s) -- b0 + b1s + b2s^2 ... ------------------------------------------------------------------------------- architecture s_dmn of e_NthOrderPoly is quantity vin across input to electrical_ref; quantity vout across iout through output to electrical_ref; begin vout == k*vin'ltf(num, den); -- S-domain transfer function end architecture s_dmn; -- Z Domain Implementation ------------------------------------------------------------------------------- -- Transfer Function: -- -- a0 + a1z^(-1) + a2z^(-2) + ... -- H(z) = K * ------------------------------- -- b0 + b1z^(-1) + b2z^(-2) + ... ------------------------------------------------------------------------------- architecture z_dmn of e_NthOrderPoly is quantity vin across input to electrical_ref; quantity vout across iout through output to electrical_ref; constant T : real := 1.0/Fsmp; begin vout == k*vin'ztf(z_num, z_den, T, init_delay); -- Z-domain transfer function end architecture z_dmn; ------------------------------------------------------------------------------- -- Copyright (c) 2003 Mentor Graphics Corporation -------------------------------------------------------------------------------