📄 std8980.vhd
字号:
IF tdooutcnt = tdoincnt - 1 OR (tdooutcnt = 3 AND tdoincnt = 0) THEN IF MODE = "000" THEN ASSERT false REPORT "ASP should be run in" & " gated-clock mode" SEVERITY ERROR; ELSE clkrun := false; END IF; ELSE IF tdooutcnt = 3 THEN tdooutcnt := 0; ELSE tdooutcnt := tdooutcnt + 1; END IF; END IF; ELSE tdobitcnt := tdobitcnt + 1; END IF; END IF; WHEN ASP_in => IF Count = 0 THEN TAP_state := prev_state; OP_done := true; TDI_on := false; TDOint := 'Z'; command(3 downto 0) := "0000"; RDYint := '1'; ELSE Count := Count - 1; END IF; WHEN ASP_out => IF Count = 0 THEN TAP_state := prev_state; OP_done := true; TDI_on := false; TDOint := 'Z'; command(3 downto 0) := "0000"; RDYint := '1'; ELSE Count := Count - 1; TDOint := TDO_fifo(tdooutcnt)(tdobitcnt); IF tdobitcnt = 7 THEN TDOS := '0'; tdobitcnt := 0; IF tdooutcnt = tdoincnt - 1 OR (tdooutcnt = 3 AND tdoincnt = 0) THEN IF MODE = "000" THEN ASSERT false REPORT "ASP should be run in" & " gated-clock mode" SEVERITY ERROR; ELSE clkrun := false; END IF; ELSE IF tdooutcnt = 3 THEN tdooutcnt := 0; ELSE tdooutcnt := tdooutcnt + 1; END IF; END IF; ELSE tdobitcnt := tdobitcnt + 1; END IF; END IF; END CASE; OPCOD := to_nat(command(3 downto 0)); Count32 := to_slv(Count,32); Counter_reg(3) := Count32(31 downto 24); Counter_reg(2) := Count32(23 downto 16); Counter_reg(1) := Count32(15 downto 8); Counter_reg(0) := Count32(7 downto 0); CTRS := '0'; END IF; -- TDI Buffer IF TDI_on AND rising_edge(TCKsig) THEN TDI_fifo(tdiincnt)(tdibitcnt) := TDI_nwv; DTDI := TDI_nwv; RDYint := '1'; TDIS := '1'; IF tdibitcnt = 7 THEN tdibitcnt := 0; IF tdiincnt = 3 THEN tdiincnt := 0; ELSE tdiincnt := tdiincnt + 1; END IF; ELSE tdibitcnt := tdibitcnt + 1; END IF; END IF; -- Tri-State and discrete control IF TOE_nwv = '1' OR NTOE = '1' THEN TDO_zd := 'Z'; TMS_zd := 'Z'; TRST_zd := 'Z'; TCK_zd := 'Z'; ELSIF MODE = "010" THEN clkrun := false; TRST_zd := NTRST AND TRSTint; TCK_zd := TCKint; -- TDI_nwv := DTDI; ELSE TRST_zd := TRSTint; TCK_zd := TCKint; END IF; -- Discrete Control IF falling_edge(TCKsig) THEN IF MODE = "010" THEN TMS_zd := DTMS; TDO_zd := DTDO; ELSE TMS_zd := TMSint; TDO_zd := TDOint; END IF; END IF; RDY_zd := RDYint; -------------------------------------------------------------------- -- Path Delay Section -------------------------------------------------------------------- VitalPathDelay01 ( OutSignal => RDY, OutSignalName => "RDY", OutTemp => RDY_zd, GlitchData => RDY_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_RDY, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => TCKsig, OutSignalName => "TCK", OutTemp => TCK_zd, GlitchData => TCK_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => CLKIN'LAST_EVENT, PathDelay => VitalExtendToFillDelay(tpd_CLKIN_TCK), PathCondition => TRUE), 1 => (InputChangeTime => TOENeg'LAST_EVENT, PathDelay => tpd_TOENeg_TDO, PathCondition => TRUE), 2 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TDO, PathCondition => (MODE /= "010")), 3 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TMS, PathCondition => (MODE = "010")) ) ); VitalPathDelay01Z ( OutSignal => TDO, OutSignalName => "TDO", OutTemp => TDO_zd, GlitchData => TDO_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => RSTNeg'LAST_EVENT, PathDelay => VitalExtendToFillDelay(tpd_RSTNeg_TDO), PathCondition => TOE_nwv = '0'), 1 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TDO, PathCondition => (MODE /= "010")), 2 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TMS, PathCondition => (MODE = "010")), 3 => (InputChangeTime => TOENeg'LAST_EVENT, PathDelay => tpd_TOENeg_TDO, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => TMS, OutSignalName => "TMS", OutTemp => TMS_zd, GlitchData => TMS_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => RSTNeg'LAST_EVENT, PathDelay => VitalExtendToFillDelay(tpd_RSTNeg_TDO), PathCondition => TOE_nwv = '0'), 1 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TDO, PathCondition => (MODE /= "010")), 2 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TMS, PathCondition => (MODE = "010")), 3 => (InputChangeTime => TOENeg'LAST_EVENT, PathDelay => tpd_TOENeg_TDO, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => TRSTNeg, OutSignalName => "TRSTNeg", OutTemp => TRST_zd, GlitchData => TRST_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => RSTNeg'LAST_EVENT, PathDelay => VitalExtendToFillDelay(tpd_RSTNeg_TDO), PathCondition => TOE_nwv = '0'), 1 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TDO, PathCondition => (MODE /= "010")), 2 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_TMS, PathCondition => (MODE = "010")), 3 => (InputChangeTime => TOENeg'LAST_EVENT, PathDelay => tpd_TOENeg_TDO, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(0), OutSignalName => "D0", OutTemp => DOut_zd(0), GlitchData => D0_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(1), OutSignalName => "D1", OutTemp => DOut_zd(1), GlitchData => D1_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(2), OutSignalName => "D2", OutTemp => DOut_zd(2), GlitchData => D2_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(3), OutSignalName => "D3", OutTemp => DOut_zd(3), GlitchData => D3_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(4), OutSignalName => "D4", OutTemp => DOut_zd(4), GlitchData => D4_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(5), OutSignalName => "D5", OutTemp => DOut_zd(5), GlitchData => D5_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(6), OutSignalName => "D6", OutTemp => DOut_zd(6), GlitchData => D6_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); VitalPathDelay01Z ( OutSignal => DataOut(7), OutSignalName => "D7", OutTemp => DOut_zd(7), GlitchData => D7_GlitchData, XOn => XOn, MsgOn => MsgOn, Paths => ( 0 => (InputChangeTime => STRBNeg'LAST_EVENT, PathDelay => tpd_STRBNeg_D0, PathCondition => TRUE) ) ); END PROCESS Behaviour; END BLOCK;END vhdl_behavioral;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -