mpc940.vhd
来自「Vhdl cod for a clock for sp3e」· VHDL 代码 · 共 184 行
VHD
184 行
---------------------------------------------------------------------------------- File Name: mpc940.vhd---------------------------------------------------------------------------------- Copyright (C) 1999 Free Model Foundry http://www.FreeModelFoundry.com/-- -- This program is free software; you can redistribute it and/or modify-- it under the terms of the GNU General Public License version 2 as-- published by the Free Software Foundation.-- -- MODIFICATION HISTORY:-- -- version: | author: | mod date: | changes made:-- V1.0 R. Munden 99 JUN 09 Initial release-- ---------------------------------------------------------------------------------- PART DESCRIPTION:-- -- Library: Clock-- Technology: LVCMOS-- Part: MPC940-- -- Description: 1:18 Clock Distributor with Muxed Inputs--------------------------------------------------------------------------------LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.VITAL_timing.ALL; USE IEEE.VITAL_primitives.ALL;LIBRARY FMF; USE FMF.gen_utils.ALL;---------------------------------------------------------------------------------- ENTITY DECLARATION--------------------------------------------------------------------------------ENTITY mpc940 IS GENERIC ( -- tipd delays: interconnect path delays tipd_LVCMOSCLK : VitalDelayType01 := VitalZeroDelay01; tipd_PECLCLK : VitalDelayType01 := VitalZeroDelay01; tipd_CLKSEL : VitalDelayType01 := VitalZeroDelay01; tipd_PECLCLKNeg : VitalDelayType01 := VitalZeroDelay01; -- tpd delays tpd_LVCMOSCLK_Q0 : VitalDelayType01 := UnitDelay01; tpd_PECLCLK_Q0 : VitalDelayType01 := UnitDelay01; -- generic control parameters InstancePath : STRING := DefaultInstancePath; MsgOn : BOOLEAN := DefaultMsgOn; XOn : Boolean := DefaultXOn; -- For FMF SDF technology file usage TimingModel : STRING := DefaultTimingModel ); PORT ( Q17 : OUT std_logic := 'U'; Q16 : OUT std_logic := 'U'; Q15 : OUT std_logic := 'U'; Q14 : OUT std_logic := 'U'; Q13 : OUT std_logic := 'U'; Q12 : OUT std_logic := 'U'; Q11 : OUT std_logic := 'U'; Q10 : OUT std_logic := 'U'; Q9 : OUT std_logic := 'U'; Q8 : OUT std_logic := 'U'; Q7 : OUT std_logic := 'U'; Q6 : OUT std_logic := 'U'; Q5 : OUT std_logic := 'U'; Q4 : OUT std_logic := 'U'; Q3 : OUT std_logic := 'U'; Q2 : OUT std_logic := 'U'; Q1 : OUT std_logic := 'U'; Q0 : OUT std_logic := 'U'; LVCMOSCLK : IN std_logic := 'L'; PECLCLK : IN std_logic := 'L'; CLKSEL : IN std_logic := 'L'; PECLCLKNeg : IN std_logic := 'H' ); ATTRIBUTE VITAL_LEVEL0 of mpc940 : ENTITY IS TRUE;END mpc940;---------------------------------------------------------------------------------- ARCHITECTURE DECLARATION--------------------------------------------------------------------------------ARCHITECTURE vhdl_behavioral of mpc940 IS ATTRIBUTE VITAL_LEVEL1 of vhdl_behavioral : ARCHITECTURE IS TRUE; SIGNAL LVCMOSCLK_ipd : std_ulogic := 'X'; SIGNAL PECLCLK_ipd : std_ulogic := 'X'; SIGNAL CLKSEL_ipd : std_ulogic := 'X'; SIGNAL PECLCLKNeg_ipd : std_ulogic := 'X'; SIGNAL Qint : std_ulogic := 'X';BEGIN ---------------------------------------------------------------------------- -- Wire Delays ---------------------------------------------------------------------------- WireDelay : BLOCK BEGIN w_19 : VitalWireDelay (LVCMOSCLK_ipd, LVCMOSCLK, tipd_LVCMOSCLK); w_20 : VitalWireDelay (PECLCLK_ipd, PECLCLK, tipd_PECLCLK); w_21 : VitalWireDelay (CLKSEL_ipd, CLKSEL, tipd_CLKSEL); w_22 : VitalWireDelay (PECLCLKNeg_ipd, PECLCLKNeg, tipd_PECLCLKNeg); END BLOCK; ---------------------------------------------------------------------------- -- Concurrent procedure calls ---------------------------------------------------------------------------- a_1: VITALBUF (q => Q0, a => Qint); a_2: VITALBUF (q => Q1, a => Qint); a_3: VITALBUF (q => Q2, a => Qint); a_4: VITALBUF (q => Q3, a => Qint); a_5: VITALBUF (q => Q4, a => Qint); a_6: VITALBUF (q => Q5, a => Qint); a_7: VITALBUF (q => Q6, a => Qint); a_8: VITALBUF (q => Q7, a => Qint); a_9: VITALBUF (q => Q8, a => Qint); a_10: VITALBUF (q => Q9, a => Qint); a_11: VITALBUF (q => Q10, a => Qint); a_12: VITALBUF (q => Q11, a => Qint); a_13: VITALBUF (q => Q12, a => Qint); a_14: VITALBUF (q => Q13, a => Qint); a_15: VITALBUF (q => Q14, a => Qint); a_16: VITALBUF (q => Q15, a => Qint); a_17: VITALBUF (q => Q16, a => Qint); a_18: VITALBUF (q => Q17, a => Qint); ---------------------------------------------------------------------------- -- CLock Process with mux ---------------------------------------------------------------------------- ECLClock_mux : PROCESS (PECLCLK_ipd, PECLCLKNeg_ipd, LVCMOSCLK_ipd, CLKSEL_ipd) -- Functionality Results Variables VARIABLE Mode : X01; VARIABLE CLK_var : std_ulogic; VARIABLE Q_zd : std_ulogic; VARIABLE PrevData : std_logic_vector(0 to 1); -- Output Glitch Detection Variables VARIABLE CLK_GlitchData : VitalGlitchDataType; BEGIN ------------------------------------------------------------------------ -- Functionality Section ------------------------------------------------------------------------ VitalStateTable ( StateTable => diff_rec_tab, DataIn => (PECLCLK_ipd, PECLCLKNeg_ipd), Result => CLK_var, PreviousDataIn => PrevData ); Q_zd := VitalMUX2 ( data0 => CLK_var, data1 => LVCMOSCLK_ipd, dselect => CLKSEL_ipd ); ------------------------------------------------------------------------ -- Path Delay Section ------------------------------------------------------------------------ VitalPathDelay01 ( OutSignal => Qint, OutSignalName => "Q", OutTemp => Q_zd, GlitchData => CLK_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => PECLCLK_ipd'LAST_EVENT, PathDelay => tpd_PECLCLK_Q0, PathCondition => (CLKSEL_ipd = '0' OR CLKSEL_ipd = 'L')), 1 => (InputChangeTime => LVCMOSCLK_ipd'LAST_EVENT, PathDelay => tpd_LVCMOSCLK_Q0, PathCondition => (CLKSEL_ipd /= '0' OR CLKSEL_ipd /= 'L')) ) ); END PROCESS;END vhdl_behavioral;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?