📄 idt71v65603.vhd
字号:
DataOut(21) => DQC3, DataOut(22) => DQC4, DataOut(23) => DQC5, DataOut(24) => DQC6, DataOut(25) => DQC7, DataOut(26) => DQC8, DataOut(27) => DQD0, DataOut(28) => DQD1, DataOut(29) => DQD2, DataOut(30) => DQD3, DataOut(31) => DQD4, DataOut(32) => DQD5, DataOut(33) => DQD6, DataOut(34) => DQD7, DataOut(35) => DQD8, DatAIn(0) => DQA0_nwv, DatAIn(1) => DQA1_nwv, DatAIn(2) => DQA2_nwv, DatAIn(3) => DQA3_nwv, DatAIn(4) => DQA4_nwv, DatAIn(5) => DQA5_nwv, DatAIn(6) => DQA6_nwv, DatAIn(7) => DQA7_nwv, DatAIn(8) => DQA8_nwv, DatBIn(0) => DQB0_nwv, DatBIn(1) => DQB1_nwv, DatBIn(2) => DQB2_nwv, DatBIn(3) => DQB3_nwv, DatBIn(4) => DQB4_nwv, DatBIn(5) => DQB5_nwv, DatBIn(6) => DQB6_nwv, DatBIn(7) => DQB7_nwv, DatBIn(8) => DQB8_nwv, DatCIn(0) => DQC0_nwv, DatCIn(1) => DQC1_nwv, DatCIn(2) => DQC2_nwv, DatCIn(3) => DQC3_nwv, DatCIn(4) => DQC4_nwv, DatCIn(5) => DQC5_nwv, DatCIn(6) => DQC6_nwv, DatCIn(7) => DQC7_nwv, DatCIn(8) => DQC8_nwv, DatDIn(0) => DQD0_nwv, DatDIn(1) => DQD1_nwv, DatDIn(2) => DQD2_nwv, DatDIn(3) => DQD3_nwv, DatDIn(4) => DQD4_nwv, DatDIn(5) => DQD5_nwv, DatDIn(6) => DQD6_nwv, DatDIn(7) => DQD7_nwv, DatDIn(8) => DQD8_nwv, AddressIn(0) => A0_nwv, AddressIn(1) => A1_nwv, AddressIn(2) => A2_nwv, AddressIn(3) => A3_nwv, AddressIn(4) => A4_nwv, AddressIn(5) => A5_nwv, AddressIn(6) => A6_nwv, AddressIn(7) => A7_nwv, AddressIn(8) => A8_nwv, AddressIn(9) => A9_nwv, AddressIn(10) => A10_nwv, AddressIn(11) => A11_nwv, AddressIn(12) => A12_nwv, AddressIn(13) => A13_nwv, AddressIn(14) => A14_nwv, AddressIn(15) => A15_nwv, AddressIn(16) => A16_nwv, AddressIn(17) => A17_nwv ); -- Type definition for state machine TYPE mem_state IS (desel, begin_rd, begin_wr, burst_rd, burst_wr ); SIGNAL state : mem_state; TYPE sequence IS ARRAY (0 to 3) OF INTEGER RANGE -3 to 3; TYPE seqtab IS ARRAY (0 to 3) OF sequence; CONSTANT il0 : sequence := (0, 1, 2, 3); CONSTANT il1 : sequence := (0, -1, 2, -1); CONSTANT il2 : sequence := (0, 1, -2, -1); CONSTANT il3 : sequence := (0, -1, -2, -3); CONSTANT il : seqtab := (il0, il1, il2, il3); CONSTANT ln0 : sequence := (0, 1, 2, 3); CONSTANT ln1 : sequence := (0, 1, 2, -1); CONSTANT ln2 : sequence := (0, 1, -2, -1); CONSTANT ln3 : sequence := (0, -3, -2, -1); CONSTANT ln : seqtab := (ln0, ln1, ln2, ln3); SIGNAL Burst_Seq : seqtab; SIGNAL D_zd : std_logic_vector(35 DOWNTO 0); BEGIN Burst_Setup : PROCESS BEGIN IF (LBONegIn = '1') THEN Burst_Seq <= il; ELSE Burst_Seq <= ln; END IF; WAIT; -- Mode can be set only during power up END PROCESS Burst_Setup; ---------------------------------------------------------------------------- -- Main Behavior Process ---------------------------------------------------------------------------- Behavior : PROCESS (BWDNIn, BWCNIn, BWBNIn, BWANIn, DatDIn, DatCIn, DatBIn, DatAIn, CLKIn, CKENIn, AddressIn, RIn, OENegIn, ADVIn, CE2In, CE1NegIn, CE2NegIn, ZZIn) -- Type definition for commands TYPE command_type is (ds, burst, read, write ); -- Timing Check Variables VARIABLE Tviol_BWDN_CLK : X01 := '0'; VARIABLE TD_BWDN_CLK : VitalTimingDataType; VARIABLE Tviol_BWCN_CLK : X01 := '0'; VARIABLE TD_BWCN_CLK : VitalTimingDataType; VARIABLE Tviol_BWBN_CLK : X01 := '0'; VARIABLE TD_BWBN_CLK : VitalTimingDataType; VARIABLE Tviol_BWAN_CLK : X01 := '0'; VARIABLE TD_BWAN_CLK : VitalTimingDataType; VARIABLE Tviol_CKENIn_CLK : X01 := '0'; VARIABLE TD_CKENIn_CLK : VitalTimingDataType; VARIABLE Tviol_ADVIn_CLK : X01 := '0'; VARIABLE TD_ADVIn_CLK : VitalTimingDataType; VARIABLE Tviol_CE1NegIn_CLK : X01 := '0'; VARIABLE TD_CE1NegIn_CLK : VitalTimingDataType; VARIABLE Tviol_CE2NegIn_CLK : X01 := '0'; VARIABLE TD_CE2NegIn_CLK : VitalTimingDataType; VARIABLE Tviol_CE2In_CLK : X01 := '0'; VARIABLE TD_CE2In_CLK : VitalTimingDataType; VARIABLE Tviol_RIn_CLK : X01 := '0'; VARIABLE TD_RIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatDIn_CLK : X01 := '0'; VARIABLE TD_DatDIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatCIn_CLK : X01 := '0'; VARIABLE TD_DatCIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatBIn_CLK : X01 := '0'; VARIABLE TD_DatBIn_CLK : VitalTimingDataType; VARIABLE Tviol_DatAIn_CLK : X01 := '0'; VARIABLE TD_DatAIn_CLK : VitalTimingDataType; VARIABLE Tviol_AddressIn_CLK : X01 := '0'; VARIABLE TD_AddressIn_CLK : VitalTimingDataType; VARIABLE Pviol_CLK : X01 := '0'; VARIABLE PD_CLK : VitalPeriodDataType := VitalPeriodDataInit; -- Memory array declaration TYPE MemStore IS ARRAY (0 to 262143) OF INTEGER RANGE -2 TO 511; VARIABLE MemDataA : MemStore; VARIABLE MemDataB : MemStore; VARIABLE MemDataC : MemStore; VARIABLE MemDataD : MemStore; VARIABLE MemAddr : NATURAL RANGE 0 TO 262143; VARIABLE MemAddr1 : NATURAL RANGE 0 TO 262143; VARIABLE startaddr : NATURAL RANGE 0 TO 262143; VARIABLE Burst_Cnt : NATURAL RANGE 0 TO 4 := 0; VARIABLE memstart : NATURAL RANGE 0 TO 3 := 0; VARIABLE offset : INTEGER RANGE -3 TO 3 := 0; VARIABLE command : command_type; VARIABLE BWD1 : UX01; VARIABLE BWC1 : UX01; VARIABLE BWB1 : UX01; VARIABLE BWA1 : UX01; VARIABLE BWD2 : UX01; VARIABLE BWC2 : UX01; VARIABLE BWB2 : UX01; VARIABLE BWA2 : UX01; VARIABLE wr1 : boolean := false; VARIABLE wr2 : boolean := false; VARIABLE wr3 : boolean := false; -- Functionality Results Variables VARIABLE Violation : X01 := '0'; VARIABLE OBuf1 : std_logic_vector(35 DOWNTO 0) := (OTHERS => 'Z'); VARIABLE OBuf2 : std_logic_vector(35 DOWNTO 0) := (OTHERS => 'Z'); BEGIN -------------------------------------------------------------------- -- Timing Check Section -------------------------------------------------------------------- IF (TimingChecksOn) THEN VitalSetupHoldCheck ( TestSignal => BWDNIn, TestSignalName => "BWD", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK, HoldHigh => thold_BWANeg_CLK, HoldLow => thold_BWANeg_CLK, CheckEnabled => (CKENIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWDN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWDN_CLK ); VitalSetupHoldCheck ( TestSignal => BWCNIn, TestSignalName => "BWC", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK, HoldHigh => thold_BWANeg_CLK, HoldLow => thold_BWANeg_CLK, CheckEnabled => (CKENIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWCN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWCN_CLK ); VitalSetupHoldCheck ( TestSignal => BWBNIn, TestSignalName => "BWB", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK, HoldHigh => thold_BWANeg_CLK, HoldLow => thold_BWANeg_CLK, CheckEnabled => (CKENIn ='0'), RefTransition => '/', HeaderMsg => InstancePath & PartID, TimingData => TD_BWBN_CLK, XOn => XOn, MsgOn => MsgOn, Violation => Tviol_BWBN_CLK ); VitalSetupHoldCheck ( TestSignal => BWANIn, TestSignalName => "BWA", RefSignal => CLKIn, RefSignalName => "CLK", SetupHigh => tsetup_BWANeg_CLK, SetupLow => tsetup_BWANeg_CLK,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -