------------------------------------------------------------------------------- -- 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 : fuse.vhd -- Author : Mentor Graphics -- Created : 2002-08-14 -- Last update: 2003-05-13 ------------------------------------------------------------------------------- -- Description: Dynamic Thermal (self-heating) fuse model ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2002-08-14 1.0 Mentor Graphics Created ------------------------------------------------------------------------------- -- This is a dynamic fuse model. It models the internal self-heating and -- resulting element temperature variations, so that it can be used to compute -- fuse "blow" conditions under dynamic current operating conditions. It also -- includes automatic ambient temperature derating. The user supplies data -- values from the static "time-curve", and other information available from -- the datasheet or the manufacturer. The default fuse parameter values are -- for a typical 10Amp automotive fuse. library IEEE; use IEEE.std_logic_1164.all; use IEEE.electrical_systems.all; use IEEE.thermal_systems.all; entity fuse is generic ( i_min_blow : current := 12.0; -- Minimum current required to blow -- fuse at temp_cold [A] i_fast_blow : current := 110.0; -- High current corresponding to -- time_fast_blow [A] time_fast_blow : real := 0.01; -- Time to blow fuse at current -- i_fast_blow and at temp_cold [sec] r_cold : resistance := 0.01; -- Resistance at temp_cold [Ohms] temp_cold : real := 27.0; -- Calibration temperature [deg C] alpha : real := 3.9e-3; -- Resistive temp coefficient of -- fuse element [Ohms/C] temp_melt : real := 400.0; -- Fuse element melting temperature -- [deg C] temp_ambient : real := 27.0); -- Ambient temperature [deg C] port ( terminal p1, p2 : electrical); end entity fuse; architecture dynamic of fuse is quantity v across i through p1 to p2; -- Total fuse voltage drop and current quantity r : resistance; -- Instantaneous resistance of fuse -- element at temp_element [Ohms] quantity temp_element : real; -- Instantaneous fuse element -- temperature [C] signal r_switch : resistance := 0.0; -- Resistance of ideal "melt" switch constant r_melt : resistance := r_cold*(1.0 + alpha*(temp_melt - temp_cold)); -- Resistance at temp_melt constant rth : real := (temp_melt - temp_cold)/(r_melt*i_min_blow**2); -- Thermal resistance [C/Watt] constant cth : real := (time_fast_blow*i_fast_blow**2*(r_melt + r_cold)/2.0)/(temp_melt - temp_cold); -- Thermal heat capacitance [Joules/C] begin r == r_cold*(1.0 + alpha*(temp_element - temp_cold)); v == i*(r + r_switch'RAMP(1.0e-6, 1.0e-6)); r*i**2 == cth*temp_element'DOT + (temp_element - temp_ambient)/rth; melt : process begin wait until Domain = time_domain; if i >= i_min_blow then r_switch <= 1.0e6; break; report "Fuse melted at DC operating current = " & current'IMAGE(i); else wait until temp_element'ABOVE(temp_melt); r_switch <= 1.0e6; break; report "Fuse melted at time = " & real'IMAGE(NOW); end if; end process melt; end architecture dynamic; ------------------------------------------------------------------------------- -- Copyright (c) 2001 Mentor Graphics Corporation -------------------------------------------------------------------------------