------------------------------------------------------------------------------- -- 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 : controller_totem.vhd -- Author : Mentor Graphics -- Created : 2003-05-30 -- Last update: ------------------------------------------------------------------------------- -- Description: Driver control logic with tri-state capability. Controls pull-up and -- pull-down modules (switches) arranged as a totem-pole output stage. For input -- d_input = '1', the non-inverting output d_output_ninv <= '1' (turns the pull-up -- element "On") and the inverting output d_output_inv <= '0' (turns the pull-down -- element "Off"). If the input is '0', the opposite happens. For any other input -- value (e.g. 'Z'), both outputs go to '0', which turns both the pull-up and pull-down -- modules "Off", to produce a high impedance (analog) output condition. -- Note: The Pull-up and Pull-down modules can be switch_nonlinear.vhd, switch_pwl_iv.vhd, -- or any other user-defined switch model. ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2003-05-30 1.0 Mentor Graphics Created ------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity controller_totem is port ( d_input : in std_logic; d_output_ninv : out std_logic; -- Non-inverting output (goes to pull-up) d_output_inv : out std_logic -- Inverting output (goes to pull-down) ); end entity controller_totem; architecture behavioral of controller_totem is begin process (d_input) is begin if (d_input = '1') then d_output_ninv <= '1'; d_output_inv <= '0'; elsif (d_input = '0') then d_output_ninv <= '0'; d_output_inv <= '1'; else -- High-impedance or "weak" input state ('Z' or 'L' or 'H' or other) d_output_ninv <= '0'; d_output_inv <= '0'; end if; end process; end architecture behavioral; ------------------------------------------------------------------------------- -- Copyright (c) 2003 Mentor Graphics Corporation -------------------------------------------------------------------------------