⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cy7c453.vhd

📁 VHDL的ram和fifo model code 包含众多的厂家
💻 VHD
📖 第 1 页 / 共 3 页
字号:
            VARIABLE wr_stat    : stat_type  ;            VARIABLE wr_inhibit : BOOLEAN := false;            VARIABLE program_wr : BOOLEAN := false;            VARIABLE DataReg    : STD_LOGIC_VECTOR(FIFOWordLenght - 1 DOWNTO 0);            -- Timing Check Variables            VARIABLE Tviol_D0_CKW           : X01 := '0';            VARIABLE TD_D0_CKW              : VitalTimingDataType;            VARIABLE Tviol_MRNeg_CKW        : X01 := '0';            VARIABLE TD_MRNeg_CKW           : VitalTimingDataType;            VARIABLE Tviol_MRNeg_CKR        : X01 := '0';            VARIABLE TD_MRNeg_CKR           : VitalTimingDataType;            VARIABLE Tviol_ENWNeg_CKW       : X01 := '0';            VARIABLE TD_ENWNeg_CKW          : VitalTimingDataType;            VARIABLE Tviol_ENRNeg_CKR       : X01 := '0';            VARIABLE TD_ENRNeg_CKR          : VitalTimingDataType;            VARIABLE Tviol_CKW_MRNeg        : X01 := '0';            VARIABLE TD_CKW_MRNeg           : VitalTimingDataType;            VARIABLE Tviol_CKR_MRNeg        : X01 := '0';            VARIABLE TD_CKR_MRNeg           : VitalTimingDataType;            VARIABLE Pviol_CKW              : X01 := '0';            VARIABLE TD_CKW                 : VitalPeriodDataType :=                                              VitalPeriodDataInit;            VARIABLE Pviol_CKR              : X01 := '0';            VARIABLE TD_CKR                 : VitalPeriodDataType :=                                              VitalPeriodDataInit;            VARIABLE Pviol_FLNeg            : X01 := '0';            VARIABLE TD_FLNeg               : VitalPeriodDataType :=                                              VitalPeriodDataInit;            VARIABLE Pviol_MRNeg            : X01 := '0';            VARIABLE TD_MRNeg               : VitalPeriodDataType :=                                              VitalPeriodDataInit;            VARIABLE Rviol_CKW_MRNeg        : X01 := '0';            VARIABLE RD_CKW_MRNeg           : VitalTimingDataType;            VARIABLE Rviol_CKR_MRNeg        : X01 := '0';            VARIABLE RD_CKR_MRNeg           : VitalTimingDataType;            VARIABLE Rviol_ENRNeg_FLNeg     : X01 := '0';            VARIABLE RD_ENRNeg_FLNeg        : VitalTimingDataType;            VARIABLE Rviol_ENWNeg_FLNeg     : X01 := '0';            VARIABLE RD_ENWNeg_FLNeg        : VitalTimingDataType;            -- Functionality Results Variables            VARIABLE Violation  : X01 := '0';        BEGIN            --------------------------------------------------------------------            -- Timing Check Section            --------------------------------------------------------------------            IF (TimingChecksOn) THEN                VitalSetupHoldCheck (                    TestSignal      => Data,                    TestSignalName  => "D",                    RefSignal       => CKW,                    RefSignalName   => "CKW",                    SetupHigh       => tsetup_D0_CKW,                    SetupLow        => tsetup_D0_CKW,                    HoldHigh        => thold_D0_CKW,                    HoldLow         => thold_D0_CKW,                    CheckEnabled    => TRUE,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_D0_CKW,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_D0_CKW);                VitalSetupHoldCheck (                    TestSignal      => ENWNeg,                    TestSignalName  => "ENWNeg",                    RefSignal       => CKW,                    RefSignalName   => "CKW",                    SetupHigh       => tsetup_ENWNeg_CKW,                    SetupLow        => tsetup_ENWNeg_CKW,                    HoldHigh        => thold_ENWNeg_CKW,                    HoldLow         => thold_ENWNeg_CKW,                    CheckEnabled    => TRUE,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_ENWNeg_CKW,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_ENWNeg_CKW );                VitalSetupHoldCheck (                    TestSignal      => ENRNeg,                    TestSignalName  => "ENRNeg",                    RefSignal       => CKR,                    RefSignalName   => "CKR",                    SetupHigh       => tsetup_ENWNeg_CKW,                    SetupLow        => tsetup_ENWNeg_CKW,                    HoldHigh        => thold_ENWNeg_CKW,                    HoldLow         => thold_ENWNeg_CKW,                    CheckEnabled    => TRUE,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_ENRNeg_CKR,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_ENRNeg_CKR );                VitalSetupHoldCheck (                    TestSignal      => CKW,                    TestSignalName  => "RNeg",                    RefSignal       => MRNeg,                    RefSignalName   => "MRNeg",                    SetupLow        => tsetup_CKW_MRNeg,                    CheckEnabled    => TRUE,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_CKW_MRNeg,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_CKW_MRNeg );                VitalSetupHoldCheck (                    TestSignal      => CKR,                    TestSignalName  => "RNeg",                    RefSignal       => MRNeg,                    RefSignalName   => "MRNeg",                    SetupLow        => tsetup_CKW_MRNeg,                    CheckEnabled    => TRUE,                    RefTransition   => '\',                    HeaderMsg       => InstancePath & PartID,                    TimingData      => TD_CKR_MRNeg,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Tviol_CKR_MRNeg );                VitalPeriodPulseCheck (                    TestSignal      =>  CKR,                    TestSignalName  =>  "CKR",                    Period          =>  tperiod_CKR,                    PulseWidthLow   =>  tpw_CKR_negedge,                    PulseWidthHigh  =>  tpw_CKR_posedge,                    PeriodData      =>  TD_CKR,                    XOn             =>  XOn,                    MsgOn           =>  MsgOn,                    HeaderMsg       =>  InstancePath & PartID,                    CheckEnabled    =>  TRUE,                    Violation       =>  Pviol_CKR );                VitalPeriodPulseCheck (                    TestSignal      =>  CKW,                    TestSignalName  =>  "CKW",                    Period          =>  tperiod_CKR,                    PulseWidthLow   =>  tpw_CKR_negedge,                    PulseWidthHigh  =>  tpw_CKR_posedge,                    PeriodData      =>  TD_CKW,                    XOn             =>  XOn,                    MsgOn           =>  MsgOn,                    HeaderMsg       =>  InstancePath & PartID,                    CheckEnabled    =>  TRUE,                    Violation       =>  Pviol_CKW );                VitalPeriodPulseCheck (                    TestSignal      =>  MRNeg,                    TestSignalName  =>  "MRNeg",                    PulseWidthLow   =>  tpw_MRNeg_negedge,                    PeriodData      =>  TD_MRNeg,                    XOn             =>  XOn,                    MsgOn           =>  MsgOn,                    HeaderMsg       =>  InstancePath & PartID,                    CheckEnabled    =>  TRUE,                    Violation       =>  Pviol_MRNeg );                VitalPeriodPulseCheck (                    TestSignal      =>  FLNeg,                    TestSignalName  =>  "MRNeg",                    PulseWidthLow   =>  tpw_FLNeg_negedge,                    PeriodData      =>  TD_FLNeg,                    XOn             =>  XOn,                    MsgOn           =>  MsgOn,                    HeaderMsg       =>  InstancePath & PartID,                    CheckEnabled    =>  TRUE,                    Violation       =>  Pviol_FLNeg );               VitalRecoveryRemovalCheck (                    TestSignal      => CKW,                    TestSignalName  => "CKW",                    RefSignal       => MRNeg,                    RefSignalName   => "MRNeg",                    Recovery        => trecovery_CKW_MRNeg,                    ActiveLow       => FALSE,                    CheckEnabled    => TRUE,                    RefTransition    => '/',                    HeaderMsg       => InstancePath & partID,                    TimingData      => RD_CKW_MRNeg,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Rviol_CKW_MRNeg);                VitalRecoveryRemovalCheck (                    TestSignal      => CKR,                    TestSignalName  => "CKR",                    RefSignal       => MRNeg,                    RefSignalName   => "MRNeg",                    Recovery        => trecovery_CKW_MRNeg,                    ActiveLow       => FALSE,                    CheckEnabled    => TRUE,                    RefTransition   => '/',                    HeaderMsg       => InstancePath & partID,                    TimingData      => RD_CKR_MRNeg,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Rviol_CKR_MRNeg);                 VitalRecoveryRemovalCheck (                    TestSignal      => ENWNeg,                    TestSignalName  => "ENWNeg",                    RefSignal       => FLNeg,                    RefSignalName   => "FLNeg",                    Recovery        => trecovery_ENRNeg_FLNeg,                    ActiveLow       => FALSE,                    CheckEnabled    => TRUE,                    RefTransition    => '/',                    HeaderMsg       => InstancePath & partID,                    TimingData      => RD_ENWNeg_FLNeg,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Rviol_ENWNeg_FLNeg);                VitalRecoveryRemovalCheck (                    TestSignal      => ENRNeg,                    TestSignalName  => "ENRNeg",                    RefSignal       => FLNeg,                    RefSignalName   => "FLNeg",                    Recovery        => trecovery_ENRNeg_FLNeg,                    ActiveLow       => FALSE,                    CheckEnabled    => TRUE,                    RefTransition    => '/',                    HeaderMsg       => InstancePath & partID,                    TimingData      => RD_ENRNeg_FLNeg,                    XOn             => XOn,                    MsgOn           => MsgOn,                    Violation       => Rviol_ENRNeg_FLNeg);                 Violation := Tviol_D0_CKW        OR                             Pviol_CKR           OR                             Pviol_CKW           OR                             Pviol_MRNeg         OR                             Rviol_ENWNeg_FLNeg     OR                             Rviol_ENRNeg_FLNeg  OR                             Rviol_CKW_MRNeg     OR                             Rviol_CKR_MRNeg;                ASSERT   Violation = '0'                REPORT   InstancePath & partID & " : signal values may be" &                 " incorrect due timing violation(s)"                SEVERITY Warning;            END IF; -- Timing Check Section        ---------------------------------------------------------------        -- Functionality section        ---------------------------------------------------------------            IF falling_edge(MRNeg) THEN                Start <= '0';                WritePointer <= 0;                ReadPointer <= 0;                CountPointer <= 0;                parity_enable <= FALSE;                EmptyOffReg <= 16;                FullOffReg <= 16;                wr_inhibit := FALSE;            ELSIF rising_edge(MRNeg) THEN                IF NOT program_wr THEN                    ProgReg <= "000000001";                END IF;                ENeg_zd  <= '0';                HFNeg_zd  <= '1';                XONeg_zd <= '0';                Start <= '1';                IF OENeg = '0' THEN                    Q_zd <= (OTHERS => '0');                ELSIF OENeg = '1' THEN                    Q_zd <= (OTHERS => 'Z');                END IF;                IF XINeg='0' THEN                    fifo_mode := single;                    rd_stat := act;                    wr_stat := act;                ELSIF FLNeg='0' THEN                    fifo_mode := first_exp;                    rd_stat := act;                    wr_stat := act;                ELSE                    fifo_mode := other_exp;                    rd_stat := inact;                    wr_stat := inact;                END IF;            ELSIF  MRNeg='0' THEN                IF rising_edge(CKW) AND ENWNeg = '0' THEN                    program_wr:=TRUE;                    EmptyOffReg <= 16*to_nat(Data(5 DOWNTO 0));                    FullOffReg <= 16*to_nat(Data(5 DOWNTO 0));                    ProgReg <= Data;                    IF Data(8)='0' THEN                        parity_enable<=FALSE;                    ELSE                        parity_enable<=TRUE;                    END IF;                    IF Data(7)='0' THEN                        parity_generate<=TRUE;                    ELSE                        parity_generate<=FALSE;                    END IF;                    parity_odd_even<=Data(6);                END IF;                IF rising_edge(CKR) AND ENRNeg = '0' THEN                    IF OENeg = '0' THEN                        Q_zd <= ProgReg;                    ELSIF OENeg = '1' THEN                        Q_zd <= (OTHERS => 'Z');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -