------------------------------------------------------------------------------- -- 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 : Lamp_dual.vhd -- Author : Mentor Graphics -- Created : 2002/06/08 -- Last update: 2003/01/22 ------------------------------------------------------------------------------- -- Description: Dual Filament Incandescent Lamp Model -- Default parameter setting typical for a 60/40 Watt/12 V -- Automotive Headlamp ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2002/06/08 1.0 Mentor Graphics Created -- 2003/01/22 1.1 Mentor Graphics Fixed error, added temp_amb_K -- and temp_cold_K -- 2003/03/28 1.2 Mentor Graphics Modified real/temperature subtypes ------------------------------------------------------------------------------- -- Use proposed IEEE natures and packages library IEEE; use IEEE.THERMAL_SYSTEMS.all; use IEEE.ELECTRICAL_SYSTEMS.all; entity Lamp_dual is generic ( r1_cold : resistance := 0.2; -- Filament resistance at temp_cold r2_cold : resistance := 0.3; -- Filament resistance at temp_cold temp_cold : real := 27.0; -- Calibration temperature [deg C] alpha : real := 0.0045; -- Resistive temp coefficient [Ohms/C] ke1 : real := 0.85e-12; -- Radiation coefficient filament 1 [Watts/K^4] rth1 : real := 400.0; -- Thermal resistance filament 1 [C/Watt] cth1 : real := 0.25e-3; -- Thermal heat capacitance filament 1 [Joules/C] ke2 : real := 0.65e-12; -- Radiation coefficient filament 2 [Watts/K^4] rth2 : real := 500.0; -- Thermal resistance filament 2 [C/Watt] cth2 : real := 0.0002; -- Thermal heat capacitance filament 2 [Joules/C] rth12 : real := 200.0; -- Thermal resistance between filaments 1 and 2 [C/Watt] ke12 : real := 0.15e-12; -- Radiation coupling between filaments 1 and 2 [Watts/K^4] temp_amb : real := 27.0); -- Ambient temperature [deg C] port (terminal p1, p2, m : electrical); end entity Lamp_dual; library ieee; use ieee.math_real.all; ------------------------------------------------------------------------------- -- Dynamic Thermal Architecture -- Equation based (behavioral) description of dynamics ------------------------------------------------------------------------------- architecture dyn_therm of Lamp_dual is constant temp_amb_K : temperature := temp_amb + 273.18; constant temp_cold_K : temperature := temp_cold + 273.18; quantity v1 across i1 through p1 to m; quantity v2 across i2 through p2 to m; quantity r1_temp : resistance; -- Resistance at temp_fil1 [Ohms] quantity r2_temp : resistance; -- Resistance at temp_fil2 [Ohms] quantity temp_fil1 : temperature; -- Filament 1 temperature [K] quantity temp_fil2 : temperature; -- Filament 2 temperature [K] quantity hflow1 : heat_flow; -- Heat flow from filament 1 [Watts] quantity hflow2 : heat_flow; -- Heat flow from filament 2 [Watts] quantity hflow12 : heat_flow; -- Heat flow from filament 1 to filament 2 begin r1_temp == r1_cold*(1.0 + alpha*(temp_fil1 - temp_cold_K)); v1 == i1*r1_temp; hflow1 == v1*i1; hflow1 == cth1*temp_fil1'dot + ke1*SIGN(temp_fil1 - temp_amb_K)*(temp_fil1**4 - temp_amb_K**4) + (temp_fil1 - temp_amb_K)/rth1 + hflow12; r2_temp == r2_cold*(1.0 + alpha*(temp_fil2 - temp_cold_K)); v2 == i2*r2_temp; hflow2 == v2*i2; hflow2 == cth2*temp_fil2'dot + ke2*SIGN(temp_fil2 - temp_amb_K)*(temp_fil2**4 - temp_amb_K**4) + (temp_fil2 - temp_amb_K)/rth2 - hflow12; hflow12 == (temp_fil1 - temp_fil2)/rth12 + ke12*SIGN(temp_fil1 - temp_fil2)*(temp_fil1**4 - temp_fil2**4); -- Note: For alpha, cth and rth, temperatures specified in C or K will -- work since each represents a ratio, for which only the change in -- temperature is significant, not its absolute offset. end architecture dyn_therm; ------------------------------------------------------------------------------- -- Copyright (c) 2003 Mentor Graphics Corporation -------------------------------------------------------------------------------