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

📄 hy5ps121621f.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 5 页
字号:
          When DSEL =>            NextState := IDLE;          When NOP =>            NextState := IDLE;          When ACT =>            if (TimingCheckFlag = TRUE) then              assert (PcgPdExtFlag = FALSE) report              "WARNING : (tXP_CHECK) : tXP timing error!"              severity WARNING;              assert (now - last_aref >= tRFC) report              "WARNING : (tRFC_CHECK) : tRFC timing error!"              severity WARNING;              assert (SelfRefExt2NRFlag /= TRUE) report              "ERROR : (tXSNR_CHECK) : Needs tXSNR Timing after Self Refresh."              severity error;            end if;            BankActivateFlag <= TRUE;            NextState := RACT;           When PCG =>            if (TimingCheckFlag = TRUE) then              assert (SelfRefExt2NRFlag /= TRUE) report              "ERROR : (tXSNR_CHECK) : Needs tXSNR Timing after Self Refresh."              severity error;              assert (PcgPdExtFlag = FALSE) report              "WARNING : (tXP_CHECK) : tXP timing error!"              severity WARNING;            end if;            NextState := IDLE;          When PCGA =>            if (TimingCheckFlag = TRUE) then              assert (SelfRefExt2NRFlag /= TRUE) report              "ERROR : (tXSNR_CHECK) : Needs tXSNR Timing after Self Refresh."              severity error;              assert (PcgPdExtFlag = FALSE) report              "WARNING : (tXP_CHECK) : tXP timing error!"              severity WARNING;            end if;            NextState := IDLE;          When AREF =>            if (TimingCheckFlag = TRUE) then              assert (PcgPdExtFlag = FALSE) report              "WARNING : (tXP_CHECK) : tXP timing error!"              severity WARNING;              assert (SelfRefExt2NRFlag /= TRUE) report              "ERROR : (tXSNR_CHECK) : Needs tXSNR Timing after Self Refresh."              severity error;              assert (now - last_aref >= tRFC) report              "WARNING : (tRFC_CHECK) : tRFC timing error!"              severity WARNING;            end if;            last_aref <= transport now after 1 ns;            AutoRefFlag <= TRUE, FALSE after 2 ns;            NextState := IDLE;          When SREF =>            if (TimingCheckFlag = TRUE) then              assert (PcgPdExtFlag = FALSE) report              "WARNING : (tXP_CHECK) : tXP timing error!"              severity WARNING;              assert (SelfRefExt2NRFlag /= TRUE) report              "ERROR : (tXSNR_CHECK) : Needs tXSNR Timing after Self Refresh."              severity error;            end if;            SelfRefFlag <= TRUE;            NextState := SLFREF;          When PDEN =>            if (TimingCheckFlag = TRUE) then              assert (PcgPdExtFlag = FALSE) report              "WARNING : (tXP_CHECK) : tXP timing error!"              severity WARNING;              assert (SelfRefExt2NRFlag /= TRUE) report              "ERROR : (tXSNR_CHECK) : Needs tXSNR Timing after Self Refresh."              severity error;            end if;            PcgPdFlag <= TRUE;            NextState := PWRDN;          When EMRS3 =>            NextState := IDLE;            mrs_cmd_in <= transport '1', '0' after 2 ns;          When EMRS1 =>            OpCode := ADDR(12 downto 0);            EXT_MODE_REGISTER_SET (OpCode, EMR);            ExtModeRegister <= EMR;            NextState := IDLE;            if (ADDR(0) = '0') then              DLL_lock_enable <= '1';            end if;            mrs_cmd_in <= transport '1', '0' after 2 ns;         When EMRS2 =>            OpCode := ADDR(12 downto 0);            EXT_MODE_REGISTER_SET2 (OpCode, EMR2);            ExtModeRegister2 <= EMR2;            NextState := IDLE;            mrs_cmd_in <= transport '1', '0' after 2 ns;          When MRS =>            if (TimingCheckFlag = TRUE) then              assert (PcgPdExtFlag = FALSE) report              "WARNING : (tXP_CHECK) : tXP timing error!"              severity WARNING;              assert (SelfRefExt2NRFlag /= TRUE) report              "ERROR : (tXSNR_CHECK) : Needs tXSNR Timing after Self Refresh."              severity error;            end if;            OpCode := ADDR(12 downto 0);            MODE_REGISTER_SET (OpCode, MR);            ModeRegister <= MR;            ModeRegisterSetFlag <= TRUE;            if (ADDR(8) = '1') then              DLL_reset <= transport '1', '0' after 200 * clk_cycle;            end if;            NextState := IDLE;             mrs_cmd_in <= transport '1', '0' after 2 ns;          When others =>            assert false report            "WARNING : (STATE_MACHINE) : Illegal Command Issued. Command Ignored."            severity warning;            NextState := IDLE;        End Case;      When PWRUP =>        Case CurrentCommand Is          When DSEL =>            if (PUSCheckFlag = TRUE) then              NextState := PWRUP;            else              NextState := IDLE;            end if;          When NOP =>            if (PUSCheckFlag = TRUE) then              NextState := PWRUP;            else              NextState := IDLE;            end if;          When EMRS3 =>            NextState := PWRUP;            mrs_cmd_in <= transport '1', '0' after 2 ns;          When EMRS1 =>            if (TimingCheckFlag = TRUE and PUSCheckFlag = TRUE) then            assert (PUSPCGAFlag1 = TRUE) report            "ERROR : (Power Up Sequence) : PCGA Command must be issued before EMRS setting!"            severity error;            end if;            OpCode := ADDR(12 downto 0);            EXT_MODE_REGISTER_SET (OpCode, EMR);            ExtModeRegister <= EMR;            NextState := PWRUP;            if (ADDR(0) = '0') then              DLL_lock_enable <= '1';            end if;             mrs_cmd_in <= transport '1', '0' after 2 ns;         When EMRS2 =>            OpCode := ADDR(12 downto 0);            EXT_MODE_REGISTER_SET2 (OpCode, EMR2);            ExtModeRegister2 <= EMR2;            NextState := PWRUP;            mrs_cmd_in <= transport '1', '0' after 2 ns;          When MRS =>            if (TimingCheckFlag = TRUE) then            assert (DLL_lock_enable = '1') report            "WARNING : (STATE_MACHINE) : EMRS Command (with DLL enable flag) Must be Issued before MRS Command !"            severity warning;            end if;            OpCode := ADDR(12 downto 0);            MODE_REGISTER_SET (OpCode, MR);            ModeRegister <= MR;            ModeRegisterSetFlag <= TRUE;            NextState := PWRUP;            if (ADDR(8) = '1') then              DLL_reset <= transport '1', '0' after 200 * clk_cycle;            end if;            mrs_cmd_in <= transport '1', '0' after 2 ns;          When PCGA =>            PrechargeAllFlag <= TRUE;            NextState := PWRUP;          When AREF =>            AutoRefFlag <= TRUE, FALSE after 2 ns;            if (PUSCheckFinFlag = TRUE) then              NextState := IDLE;            else              NextState := PWRUP;            end if;            last_aref <= transport now after 1 ns;          When others =>            assert false report            "ERROR : (STATE_MACHINE) : Invalid Command Issued during Power Up Sequence."            severity error;        End Case;      When PWRDN =>        Case CurrentCommand Is          When NOP =>            NextState := PWRDN;          When PDEX =>            if (PcgPdFlag = TRUE) then              PcgPdExtFlag <= transport TRUE, FALSE after tXP * clk_cycle;               PcgPdFlag <= FALSE;              NextState := IDLE;            elsif (ModeRegister.SAPD = '0') then              ActPdExtFlag <= transport TRUE, FALSE after tXARD * clk_cycle;              NextState := RACT;            elsif (ModeRegister.SAPD = '1') then              SlowActPdExtFlag <= transport TRUE, FALSE after (6 - ExtModeRegister.AL) * clk_cycle;              NextState := RACT;            end if;          When others =>            assert false report            "WARNING : (STATE_MACHINE) : Illegal Command Issued. Command Ignored."            severity warning;            NextState := PWRDN;        End Case;       When SLFREF =>        Case CurrentCommand Is          When NOP =>            NextState := SLFREF;          When SREX =>            SelfRefExt2NRFlag <= transport TRUE, FALSE after tXSNR;            SelfRefExt2RDFlag <= transport TRUE, FALSE after tXSRD * clk_cycle;            SelfRefFlag <= FALSE;            NextState := IDLE;          When others =>            assert false report            "WARNING : (STATE_MACHINE) : Illegal Command Issued. Command Ignored."            severity warning;            NextState := SLFREF;        End Case;                When RACT =>        Case CurrentCommand Is          When DSEL =>            NextState := RACT;          When NOP =>            NextState := RACT;          When RD =>            if (TimingCheckFlag = TRUE) then              assert (SelfRefExt2RDFlag /= TRUE) report              "ERROR : (tXSRD_CHECK) : Needs tXSRD Timing after Self Refresh."              severity error;              assert (ActPdExtFlag = FALSE) report              "WARNING : (tXARD_CHECK) : tXARD timing error!"              severity WARNING;              assert (SlowActPdExtFlag = FALSE) report              "WARNING : (tXARDS_CHECK) : tXARDS timing error!"              severity WARNING;            end if;            Read_CA <= '1', '0' after 2 ns;            NextState := READ;          When RDAP =>            if (TimingCheckFlag = TRUE) then              assert (SelfRefExt2RDFlag /= TRUE) report              "ERROR : (tXSRD_CHECK) : Needs tXSRD Timing after Self Refresh."              severity error;              assert (ActPdExtFlag = FALSE) report              "WARNING : (tXARD_CHECK) : tXARD timing error!"              severity WARNING;              assert (SlowActPdExtFlag = FALSE) report              "WARNING : (tXARDS_CHECK) : tXARDS timing error!"              severity WARNING;            end if;            AutoPrechargeFlag(conv_integer(BkAdd)) <= transport                         '1' after (ExtModeRegister.AL + ModeRegister.BURST_LENGTH/2 - 2) * clk_cycle + tRTP,                        '0' after (ExtModeRegister.AL + ModeRegister.BURST_LENGTH/2 - 2) * clk_cycle + tRTP + 2 ns;            Read_CA <= '1', '0' after 2 ns;            NextState := READ;          When WR =>            Write_CA <= '1', '0' after 2 ns;            NextState := WRITE;          When WRAP =>            AutoPrechargeFlag(conv_integer(BkAdd)) <= transport                         '1' after (ExtModeRegister.AL + ModeRegister.CAS_LATENCY - 1 +                                     ModeRegister.BURST_LENGTH/2 + ModeRegister.TWR) * clk_cycle,                        '0' after (ExtModeRegister.AL + ModeRegister.CAS_LATENCY - 1 +                                    ModeRegister.BURST_LENGTH/2 + ModeRegister.TWR) * clk_cycle + 2 ns;            Write_CA <= '1', '0' after 2 ns;            NextState := WRITE;          When ACT =>            BankActivateFlag <= TRUE;            NextState := RACT;          When PCG =>            PrechargeFlag <= TRUE;            if ((BankActivatedFlag = "0001") or (BankActivatedFlag = "0010") or                 (BankActivatedFlag = "0100") or (BankActivatedFlag = "1000")) then              NextState := IDLE;            else              NextState := RACT;            end if;          When PCGA =>            PrechargeAllFlag <= TRUE;            NextState := IDLE;          When PDEN =>            NextState := PWRDN;          When others =>            assert false report            "WARNING : (STATE_MACHINE) : Illegal Command Issued. Command Ignored."            severity warning;            NextState := RACT;        End Case;      When READ =>        Case CurrentCommand Is          When DSEL =>            NextState := READ;          When NOP =>            NextState := READ;          When RD =>            if (TimingCheckFlag = TRUE) then              assert (SelfRefExt2RDFlag /= TRUE) report              "ERROR : (tXSRD_CHECK) : Needs tXSRD Timing after Self Refresh."              severity error;            end if;            Read_CA <= '1', '0' after 2 ns;            NextState := READ;          When RDAP =>            if (TimingCheckFlag = TRUE) then              assert (SelfRefExt2RDFlag /= TRUE) report              "ERROR : (tXSRD_CHECK) : Needs tXSRD Timing after Self Refresh."              severity error;            end if;            AutoPrechargeFlag(conv_integer(BkAdd)) <= transport                         '1' after (ExtModeRegister.AL + ModeRegister.BURST_LENGTH/2 - 2) * clk_cycle + tRTP,                        '0' after (ExtModeRegister.AL + ModeRegister.BURST_LENGTH/2 - 2) * clk_cycle + tRTP + 2 ns;            Read_CA <= '1', '0' after 2 ns;            NextState := READ;          When WR =>            Write_CA <= '1', '0' after 2 ns;            NextState := WRITE;          When WRAP =>            AutoPrechargeFlag(conv_integer(BkAdd)) <= transport                         '1' after (ExtModeRegister.AL + ModeRegister.CAS_LATENCY - 1 +                                    ModeRegister.BURST_LENGTH/2 + ModeRegister.TWR) * clk_cycle,                        '0' after (ExtModeRegister.AL + ModeRegister.CAS_LATENCY - 1 +                                    ModeRegister.BURST_LENGTH/2 + ModeRegister.TWR) * clk_cycle + 2 ns;            Write_CA <= '1', '0' after 2 ns;            NextState := WRITE;          When ACT =>            BankActivateFlag <= TRUE;            NextState := READ;          When PCG =>            PrechargeFlag <= TRUE;            NextState := READ;          When PCGA =>            PrechargeAllFlag <= TRUE;

⌨️ 快捷键说明

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