------------------------------------------------------------------------------- -- 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 : switch_nonlinear.vhd -- Author : Mentor Graphics -- Created : 2003-05-30 -- Last update: ------------------------------------------------------------------------------- -- Description: Non-linear Switch. Can be used as a pull-up or pull-down element -- in a totem-pole drive stage configuration. Has linear and saturation regions -- of operation. -- Switching is controlled by a digital input, which causes a gain factor (k) to -- ramp between 0.0 and 1.0 during the transition time (t_ramp). This gain factor -- scales the effective i vs. v relationship (k = 1 implies fully "ON"; -- k = 0 implies fully "Off", i.e. no current). ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2003-05-30 1.0 Mentor Graphics Created Library IEEE; use IEEE.std_logic_1164.all; use IEEE.electrical_systems.all; entity switch_nonlinear is generic ( i_sat : real := 0.1; -- Saturation break-point (i_sat, v_sat) v_sat : real := 1.0; r_sat : real := 50.0; -- Effective small-signal impedance for voltages above v_sat t_ramp : real := 100.0e-12 -- Switching time ); port ( d_input : in std_logic; -- Input logic signal terminal pos, neg : electrical ); end entity switch_nonlinear; architecture behavioral of switch_nonlinear is quantity v across i through pos to neg; signal k : real := 0.0; quantity k_ramp : real := 0.0; begin transition: process (d_input) is begin if d_input = '1' then k <= 1.0; else k <= 0.0; end if; end process transition; k_ramp == k'ramp(t_ramp, t_ramp); -- Ramped coefficient (vs. time) to scale drive current if v'above(v_sat) use i == k_ramp*(i_sat + (v - v_sat)/r_sat); -- saturation region else i == k_ramp*(i_sat/v_sat)*v; -- active region end use; break on v'above(v_sat); end architecture behavioral; ------------------------------------------------------------------------------- -- Copyright (c) 2003 Mentor Graphics Corporation -------------------------------------------------------------------------------