------------------------------------------------------------------------------- -- 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 : diode.vhd -- Author : Mentor Graphics -- Created : 2001/06/16 -- Last update: 2003-05-13 ------------------------------------------------------------------------------- -- Description: Basic Diode model ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2001/06/16 1.0 Mentor Graphics Created -- 2001/11/07 1.1 Mentor Graphics Added limit_exp function -- 2001/05/24 1.2 Mentor Graphics Added Generic parameter Isat ------------------------------------------------------------------------------- library IEEE; use IEEE.math_real.all; -- Use IEEE natures and packages use IEEE.electrical_systems.all; -- FUNDAMENTAL_CONSTANTS package needed for Boltzmann constant -- (PHYS_K = Joules/Kelvin) and electron charge (PHYS_Q = coulomb) use IEEE.FUNDAMENTAL_CONSTANTS.all; entity diode is generic ( Isat : current := 1.0e-14); -- Saturation current [Amps] port ( terminal p, n : electrical); end entity diode; ------------------------------------------------------------------------------- -- Ideal Architecture: i = is*(exp(v/vt) - 1) ------------------------------------------------------------------------------- architecture ideal of diode is -- Declare internal quanties and constants quantity v across i through p to n; constant TempC : real := 27.0; -- Ambient Temperature [Degrees] constant TempK : real := 273.0 + TempC; -- Temperaure [Kelvin] constant vt : real := PHYS_K*TempK/PHYS_Q; -- Thermal Voltage -- This function is to limit the exponential function to avoid convergence -- problems due to numerical overflow. At x=100, it becomes a straight line -- with slope matching that at the intercept. function limit_exp( x : real ) return real is variable abs_x : real := abs(x); variable result : real; begin if abs_x < 100.0 then result := exp(abs_x); else result := exp(100.0) * (abs_x - 99.0); end if; -- If exponent is negative, set exp(-x) = 1/exp(x) if x < 0.0 then result := 1.0 / result; end if; return result; end function limit_exp; begin -- ideal architecture -- Fundamental equation i == Isat*(limit_exp(v/vt) - 1.0); end architecture ideal; ------------------------------------------------------------------------------- -- Copyright (c) 2001 Mentor Graphics Corporation -------------------------------------------------------------------------------