------------------------------------------------------------------------------- -- Copyright (c) 2001 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 : PressurePulse.vhd -- Author : Mentor Graphics -- Created : 2001-06-16 -- Last update: 2003-05-13 ------------------------------------------------------------------------------- -- Description: Ideal Hydraulic Pulse Pressure Source -- Includes Frequency Domain Settings ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2001-06-16 1.0 Mentor Graphics Created -- 2002-05-21 1.1 Mentor Graphics Updated std format -- 2002-06-06 1.2 Mentor Graphics Fixed bug when delay=0 ------------------------------------------------------------------------------- -- -- ...Model Summary -- -- This model represents an ideal pulse pressure source. Its characteristics -- are such that the specified pressure is applied across from port1 to -- port2 and flow rate is such that the specified pressure is maintained. -- The characteristic used is that of the pulse-type sources, where the user -- inputs GENERIC values for timing aspects of the pulse. There is also -- capability for modeling small signal characteristics using the "ac_mag" -- and "ac_phase" GENERIC values. The polarity of the flow rate is -- consistant with the general convention where the value is positive when -- the "flow" is through from port1 to port2. ------------------------------------------------------------------------------- library IEEE; use IEEE.MATH_REAL.all; use IEEE.fluidic_systems.all; entity PressurePulse is generic ( initial : pressure := 0.0; -- Initial value [N/m**2] pulse : pressure; -- Pulsed value [N/m**2] ti2p : time; -- Transition time - initial to pulse [sec] tp2i : time; -- Transition time - pulse to initial [sec] delay : time; -- Delay time [sec] width : time; -- Duration of pulse [sec] period : time; -- Period [sec] (Note: period must -- be > width + ti2p + tp2i) ac_mag : pressure := 1.0; -- AC magnitude [N/m^2] ac_phase : real := 0.0); -- AC phase [degrees] port ( terminal port1, port2 : fluidic); end entity PressurePulse; architecture ideal of PressurePulse is -- Declare Through and Across Branch Quantities quantity p across flow through port1 to port2; -- Declare quantity in frequency domain for AC analysis quantity ac_spec : real spectrum ac_mag, math_2_pi*ac_phase/360.0; -- Signal used in CreateEvent process below signal pulse_signal : pressure := initial; -- Function to convert numbers of type TIME to type REAL function time2real(tt : time) return real is begin return time'pos(tt) * 1.0e-15; end time2real; -- Convert ti2p and tp2i generics to type REAL (needed for 'RAMP attribute) constant ri2p : real := time2real(ti2p); constant rp2i : real := time2real(tp2i); begin if domain = quiescent_domain or domain = time_domain use p == pulse_signal'ramp(ri2p, rp2i); else -- if DOMAIN = FREQUENCY_DOMAIN use p == ac_spec; end use; -- Process to define pulse profile CreateEvent : process begin wait until domain = time_domain; -- Run process in Time Domain only wait for delay; loop pulse_signal <= pulse; wait for (width + ti2p); pulse_signal <= initial; wait for (period - width - ti2p); end loop; end process CreateEvent; end architecture ideal; ------------------------------------------------------------------------------- -- Copyright (c) 2001 Mentor Graphics Corporation -------------------------------------------------------------------------------