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

📄 fifo7881.vhd

📁 VHDL的ram和fifo model code 包含众多的厂家
💻 VHD
📖 第 1 页 / 共 5 页
字号:
   END IF ;    ------------------------------------------------------------------------    -- Set IR high after reset    ------------------------------------------------------------------------    IF ((WCLK_ipd'EVENT) AND (To_X01(WCLK_ipd) = '1') AND         (To_X01(RSNeg_ipd) = '1') AND (wordcounter = 0) AND         (rst = 0) AND (irflag = 0)) THEN        wrtclkcount := wrtclkcount + 1 ;        d_temp := TO_X01(d) ;        CASE wrtclkcount IS            WHEN 1 => NULL ;            WHEN 2 =>                flagstate := "0101" ;                IRF_zd := flagstate(3) ;                irflag := 1 ;                wrtclkcount := 0 ;            WHEN OTHERS => NULL ;        END CASE ;    END IF ;    ------------------------------------------------------------------------    -- Determine the status of the FIFO and assign the flag pins    ------------------------------------------------------------------------    ae_limit := ae_offset ;    af_limit := 1024 - af_offset ;    hf_limit := 512 ;    f_limit := 1024 ;    IF not Is_X(d) THEN       CASE flagstate IS           WHEN "X10X" => NULL ;           WHEN "X100" => NULL ;           WHEN "0100" => NULL ;           WHEN "0101" =>               IF ((wordcounter > ae_limit) AND (wordcounter <  hf_limit)) THEN                   flagstate := "0001" ;                   orflag := 0 ;                   irflag := 1 ;                   ORF_zd := flagstate(0) ;                   AF_zd  := flagstate(1) ;                   HF_zd  := flagstate(2) ;                   IRF_zd := flagstate(3) ;               END IF ;           WHEN "0001" =>               IF ((wordcounter > 0) AND (wordcounter <= ae_limit)) THEN                   flagstate := "0101" ;                   orflag := 0 ;                   irflag := 1 ;                   ORF_zd := flagstate(0) ;                   AF_zd  := flagstate(1) ;                   HF_zd  := flagstate(2) ;                   IRF_zd := flagstate(3) ;               END IF ;               IF ((wordcounter >=  hf_limit) AND (wordcounter < af_limit)) THEN                   flagstate := "0011" ;                   orflag := 0 ;                   irflag := 1 ;                   ORF_zd := flagstate(0) ;                   AF_zd  := flagstate(1) ;                   HF_zd  := flagstate(2) ;                   IRF_zd := flagstate(3) ;               END IF ;            WHEN "0011" =>                IF ((wordcounter > ae_limit) AND (wordcounter <  hf_limit)) THEN                    flagstate := "0001" ;                    orflag := 0 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;                IF ((wordcounter >= af_limit) AND (wordcounter < f_limit )) THEN                    flagstate := "0111" ;                    orflag := 0 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;            WHEN "0111" =>                IF ((wordcounter >=  hf_limit) AND (wordcounter < af_limit)) THEN                    flagstate := "0011" ;                    orflag := 0 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;                IF (wordcounter = f_limit ) THEN                    flagstate := "0110" ;                    orflag := 0 ;                    irflag := 0 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;            WHEN "0110" => NULL ;            WHEN "1101" =>                -- IF (wordcounter = 0) THEN                --     flagstate := "0101" ;                --     orflag := 0 ;                --     irflag := 1 ;                --     ORF_zd := flagstate(0) ;                --     AF_zd  := flagstate(1) ;                --     HF_zd  := flagstate(2) ;                --     IRF_zd := flagstate(3) ;                -- END IF ;                IF ((wordcounter > ae_limit) AND (wordcounter <  hf_limit)) THEN                    flagstate := "1001" ;                    orflag := 1 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;            WHEN "1001" =>                IF ((wordcounter > 0) AND (wordcounter <= ae_limit)) THEN                    flagstate := "1101" ;                    orflag := 1 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;                IF ((wordcounter >=  hf_limit) AND (wordcounter < af_limit)) THEN                    flagstate := "1011" ;                    orflag := 1 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;            WHEN "1011" =>                IF ((wordcounter > ae_limit) AND (wordcounter <  hf_limit)) THEN                    flagstate := "1001" ;                    orflag := 1 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;                IF ((wordcounter >= af_limit) AND (wordcounter < f_limit )) THEN                    flagstate := "1111" ;                    orflag := 1 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;            WHEN "1111" =>                IF ((wordcounter >=  hf_limit) AND (wordcounter < af_limit)) THEN                    flagstate := "1011" ;                    orflag := 1 ;                    irflag := 1 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;                IF (wordcounter = f_limit ) THEN                    flagstate := "1110" ;                    orflag := 1 ;                    irflag := 0 ;                    ORF_zd := flagstate(0) ;                    AF_zd  := flagstate(1) ;                    HF_zd  := flagstate(2) ;                    IRF_zd := flagstate(3) ;                END IF ;            WHEN "1110" => NULL ;            WHEN OTHERS =>                flagstate := "XXXX" ;                ORF_zd := flagstate(0) ;                AF_zd := flagstate(1) ;                HF_zd    := flagstate(2) ;                IRF_zd := flagstate(3) ;        END CASE ;    END IF ;        ------------------------------------------------------------------------        -- Path Delay Section        ------------------------------------------------------------------------        VitalPathDelay01 (            OutSignal       =>  ORF,            OutSignalName   =>  "ORF",            OutTemp         =>  ORF_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => RSNeg_ipd'LAST_EVENT,                      PathDelay         => (0 ns, 0 ns),                      PathCondition     => (RSNeg_ipd = '0') ),                1 => (InputChangeTime   => RCLK_ipd'LAST_EVENT,                      PathDelay         => tpd_RCLK_ORF,                      PathCondition     => TRUE ) ),            GlitchData      => ORF_GlitchData );        VitalPathDelay01 (            OutSignal       =>  IRF,            OutSignalName   =>  "IRF",            OutTemp         =>  IRF_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => RSNeg_ipd'LAST_EVENT,                      PathDelay         => (0 ns, 0 ns),                      PathCondition     => (RSNeg_ipd = '0') ),                1 => (InputChangeTime   => WCLK_ipd'LAST_EVENT,                      PathDelay         => tpd_WCLK_IRF,                      PathCondition     => TRUE ) ),            GlitchData      => IRF_GlitchData );        VitalPathDelay01 (            OutSignal       =>  AF,            OutSignalName   =>  "AF",            OutTemp         =>  AF_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => RSNeg_ipd'LAST_EVENT,                      PathDelay         => tpd_RSNeg_AF,                      PathCondition     => (RSNeg_ipd = '0') ),                1 => (InputChangeTime   => RCLK_ipd'LAST_EVENT,                      PathDelay         => tpd_RCLK_AF,                      PathCondition     => TRUE ) ),            GlitchData      => AF_GlitchData );       VitalPathDelay01 (            OutSignal       =>  HF,            OutSignalName   =>  "HF",            OutTemp         =>  HF_zd,            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => RSNeg_ipd'LAST_EVENT,                      PathDelay         => tpd_RSNeg_HF,                      PathCondition     => (RSNeg_ipd = '0') ),                1 => (InputChangeTime   => RCLK_ipd'LAST_EVENT,                      PathDelay         => tpd_RCLK_HF,                      PathCondition     => TRUE ) ),            GlitchData      => HF_GlitchData );        VitalPathDelay01Z (            OutSignal       =>  Q17,            OutSignalName   =>  "Q17",            OutTemp         =>  Q_zd(17),            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => OE_ipd'LAST_EVENT,                      PathDelay         => tpd_OE_Q0,                      PathCondition     => TRUE ),                1 => (InputChangeTime   => RCLK_ipd'LAST_EVENT,                      PathDelay         => tpd_RCLK_Q0,                      PathCondition     => TRUE ) ),            GlitchData      => Q_GlitchData );        VitalPathDelay01Z (            OutSignal       =>  Q16,            OutSignalName   =>  "Q16",            OutTemp         =>  Q_zd(16),            XOn             => XOn,            MsgOn           => MsgOn,            Paths           => (                0 => (InputChangeTime   => OE_ipd'LAST_EVENT,                      PathDelay         => tpd_OE_Q0,                 

⌨️ 快捷键说明

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