📄 idt72v815.vhd
字号:
IF Depth_Expanint='1' THEN IF (Rd_RAM_Onint='1') and (Read_Pointerint= (RAMSize-1)) THEN Read_Enableint <= '0'; END IF; END IF; END IF; END PROCESS; Read_Enable_Delay:PROCESS (RSNeg, RCLK) BEGIN IF RSNeg = '0' THEN Read_En_Delint <= '0' ; ELSIF RCLK'event and RCLK='1' THEN Read_En_Delint <= Read_Enableint ; END IF; END PROCESS; -- WXONeg Output ---------------------------------------------------------------------------- WXOHFNeg_zd <= not WXOint WHEN (Depth_Expanint='1') ELSE not HFint ; WX0_Trigger1: PROCESS (RSNeg,WXO_Tg2int,WCLK) BEGIN IF (RSNeg='0') or (WXO_Tg2int='1') THEN WXO_Tg1int <= '0'; ELSIF WCLK'event and WCLK='1' THEN IF (Wr_RAM_Onint='1') and (Write_Pointerint=(RAMSize-1)) THEN WXO_Tg1int<= '1'; END IF; END IF; END PROCESS; WX0_Trigger2: PROCESS (RSNeg, WCLK) BEGIN IF (RSNeg='0') THEN WXO_Tg2int <= '0'; ELSIF WCLK'event and WCLK='0' THEN WXO_Tg2int <= WXO_Tg1int; END IF; END PROCESS; WXOint<= WXO_Tg1int and (not WXO_Tg2int); -- RXONeg_zd Output ---------------------------------------------------------------------------- RX0_Trigger1: PROCESS (RSNeg,RXO_Tg2int,RCLK) BEGIN IF (RSNeg='0') or (RXO_Tg2int='1') THEN RXO_Tg1int <= '0'; ELSIF RCLK'event and RCLK='1' THEN IF (Rd_RAM_Onint='1') and (Read_Pointerint=(RAMSize-1)) THEN RXO_Tg1int<= '1'; END IF; END IF; END PROCESS; RX0_Trigger2: PROCESS (RSNeg, RCLK) BEGIN IF (RSNeg='0') THEN RXO_Tg2int <= '0'; ELSIF RCLK'event and RCLK='0' THEN RXO_Tg2int <= RXO_Tg1int; END IF; END PROCESS; RXONeg_zd <= not (RXO_Tg1int and (not RXO_Tg2int)) ; ---------------------------------------------------------------------------- -- Output Logic -- ---------------------------------------------------------------------------- Zerosint <=(others =>'0'); Data_Outint <= RAM(Read_Pointerint) WHEN (LDNeg='1') and (Emptyint='0') ELSE Zerosint&PAE_Offset_Regint WHEN (FWFTint='0') and (LDNeg='0') and (Rd_Offset_Pntint='0') ELSE Zerosint&PAF_Offset_Regint WHEN (FWFTint='0') and (LDNeg='0') and (Rd_Offset_Pntint='1') ELSE Output_Regint; Fst_Wrdint <='1' WHEN ((FWFTint='1') and (EmpDint='1') and (Emptyint ='0')) ELSE '0'; Output_Register: PROCESS (RSNeg, RCLK) BEGIN IF RSNeg = '0' THEN Output_Regint <= (others =>'0') ; ELSIF RCLK'event and RCLK='1' THEN IF (Fst_Wrdint ='1') THEN Output_Regint <= RAM(Read_Pointerint); ELSE IF (RENNeg='0') and (Read_Enableint='1') THEN Output_Regint <= Data_Outint; END IF; END IF; END IF; END PROCESS; Q_zd <= Output_Regint WHEN (OENeg='0') and (Read_En_Delint='1') ELSE (others => 'Z') ; ---------------------------------------------------------------------------- -- Path Delay Section -- ---------------------------------------------------------------------------- -- Path delay for EFORNeg ; PathDelay_EFORNeg: PROCESS (EFORNeg_zd) VARIABLE EFORNeg_GlitchData: VitalGlitchDataType; BEGIN VitalPathDelay01( OutSignal => EFORNeg, OutSignalName=> "EFORNeg", OutTemp => EFORNeg_zd, GlitchData => EFORNeg_GlitchData, Paths => ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => RCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_EFORNeg,--tREF PathCondition => TRUE ) ) ); END PROCESS; -- Path delay for PAENeg ; PathDelay_PAENeg: PROCESS (PAENeg_zd) VARIABLE PAENeg_GlitchData: VitalGlitchDataType; BEGIN IF Syncint='0' THEN -- (asynchronous) VitalPathDelay01( OutSignal => PAENeg, OutSignalName=> "PAENeg", OutTemp => PAENeg_zd, GlitchData => PAENeg_GlitchData, Paths => ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => RCLK'LAST_EVENT,-- PathDelay => tpd_WCLK_PAENeg,--tPAEA PathCondition => (RENNeg='0') ), 2 => (InputChangeTime => WCLK'LAST_EVENT,-- PathDelay => tpd_WCLK_PAENeg,--tPAEA PathCondition => (WENNeg='0') ) ) ); ELSE -- (synchronous) VitalPathDelay01( OutSignal => PAENeg, OutSignalName=> "PAENeg", OutTemp => PAENeg_zd, GlitchData => PAENeg_GlitchData, Paths => ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => RCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_PAENeg,--tPAES PathCondition => TRUE ) ) ); END IF;-- END PROCESS; -- Path delay for PAFNeg ; PathDelay_PAFNeg: PROCESS (PAFNeg_zd) VARIABLE PAFNeg_GlitchData: VitalGlitchDataType; BEGIN IF Syncint='0' THEN -- (asynchronous) VitalPathDelay01( OutSignal => PAFNeg, OutSignalName=> "PAFNeg", OutTemp => PAFNeg_zd, GlitchData => PAFNeg_GlitchData, Paths => ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => RCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_PAFNeg,--tPAFA PathCondition => (RENNeg='0') ), 2 => (InputChangeTime => WCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_PAFNeg,--tPAFA PathCondition => (WENNeg='0') ) ) ); ELSE -- (synchronous) VitalPathDelay01( OutSignal => PAFNeg, OutSignalName=> "PAFNeg", OutTemp => PAFNeg_zd, GlitchData => PAFNeg_GlitchData, Paths => ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => WCLK'LAST_EVENT,-- PathDelay => tpd_WCLK_PAFNeg,--tPAFS PathCondition => TRUE ) ) ); END IF;-- END PROCESS; -- Path delay for FFIRNeg ; PathDelay_FFIRNeg: PROCESS (FFIRNeg_zd) VARIABLE FFIRNeg_GlitchData: VitalGlitchDataType; BEGIN VitalPathDelay01( OutSignal => FFIRNeg, OutSignalName=> "FFIRNeg", OutTemp => FFIRNeg_zd, GlitchData => FFIRNeg_GlitchData, Paths => ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => WCLK'LAST_EVENT,-- PathDelay => tpd_WCLK_FFIRNeg,--tWFF PathCondition => TRUE ) ) ); END PROCESS; -- Path delay for WXOHFNeg ; PathDelay_WXOHFNeg: PROCESS (WXOHFNeg_zd) VARIABLE WXOHFNeg_GlitchData: VitalGlitchDataType; BEGIN VitalPathDelay01( OutSignal => WXOHFNeg, OutSignalName=> "WXOHFNeg", OutTemp => WXOHFNeg_zd, Mode => VitalTransport, GlitchData => WXOHFNeg_GlitchData, Paths => -- HF ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => RCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_WXOHFNeg,--tHF PathCondition => (Depth_Expanint ='0') and (RENNeg='0') ), 2 => (InputChangeTime => WCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_WXOHFNeg,--tHF PathCondition => (Depth_Expanint ='0') and (WENNeg='0') ), -- WXO 3 => (InputChangeTime => WCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_RXONeg,--tXO PathCondition => (Depth_Expanint ='1') ) ) ); END PROCESS; -- Path delay for RXONeg ; PathDelay_RXONeg: PROCESS (RXONeg_zd) VARIABLE RXONeg_GlitchData: VitalGlitchDataType; BEGIN VitalPathDelay01( OutSignal => RXONeg, OutSignalName=> "RXONeg", OutTemp => RXONeg_zd, Mode => VitalTransport, GlitchData => RXONeg_GlitchData, Paths => ( 0 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_EFORNeg,--tRSF PathCondition => TRUE ), 1 => (InputChangeTime => RCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_RXONeg,--tXO PathCondition => TRUE ) ) ); END PROCESS; -- Path delay for Q ; PathDelay_Q_Gen: FOR i IN RAMWordLength-1 DOWNTO 0 GENERATE PathDelay_Q: PROCESS (Q_zd(i)) VARIABLE Q_GlitchData: VitalGlitchDataType; BEGIN VitalPathDelay01Z( OutSignal => Q(i), OutSignalName=> "Q", OutTemp => Q_zd(i), GlitchData => Q_GlitchData, Paths => ( 0 => (InputChangeTime => OENeg'LAST_EVENT,-- PathDelay => tpd_OENeg_Q0,-- tOLZ/tOE/tOHZ PathCondition => TRUE ), 1 => (InputChangeTime => RSNeg'LAST_EVENT,-- PathDelay => tpd_RSNeg_Q0,--tRSF PathCondition => TRUE ), 2 => (InputChangeTime => RCLK'LAST_EVENT,-- PathDelay => tpd_RCLK_Q0,--tA PathCondition => (RENNeg='0') ) ), MsgOn => False ); END PROCESS; END GENERATE;END BLOCK VITALBehavior;END vhdl_behavioral;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -