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

📄 cy7c1380.vhd

📁 vhdl cod for ram.For sp3e
💻 VHD
📖 第 1 页 / 共 5 页
字号:
            SEVERITY SeverityMode;        ASSERT (not(Is_X(ADSPNIn)))            REPORT InstancePath & partID & ": Unusable value for ADSPN"            SEVERITY SeverityMode;        ASSERT (not(Is_X(ADSCNIn)))            REPORT InstancePath & partID & ": Unusable value for ADSCN"            SEVERITY SeverityMode;        ASSERT (not(Is_X(CE2In)))            REPORT InstancePath & partID & ": Unusable value for CE2"            SEVERITY SeverityMode;        ASSERT (not(Is_X(CE1NegIn)))            REPORT InstancePath & partID & ": Unusable value for CE1Neg"            SEVERITY SeverityMode;        ASSERT (not(Is_X(CE3NegIn)))            REPORT InstancePath & partID & ": Unusable value for CE3Neg"            SEVERITY SeverityMode;        -- Command Decode        IF (GWNIn = '1' AND (BWENIn = '1' OR (BWENIn = '0' AND BWANIn = '1'           AND BWBNIn = '1' AND BWCNIn = '1' AND BWDNIn = '1'))) THEN            R := '1';        ELSE            R := '0';        END IF;        IF ((CE3NegIn = '1' AND CE1NegIn = '0') AND (ADSPNIn = '0' OR              (ADSPNIn = '1' AND ADSCNIn = '0'))) OR              (CE1NegIn = '1' AND ADSCNIn = '0') OR              ((CE2In = '0' AND CE1NegIn = '0') AND (ADSPNIn = '0' OR              (ADSPNIn = '1' AND ADSCNIn = '0'))) THEN            command := ds;        ELSIF ((CE3NegIn = '0' AND CE2In = '1' AND CE1NegIn = '0')              AND (ADSPNIn = '0' OR (ADSPNIn = '1' AND ADSCNIn = '0'))              AND R = '1') THEN              command := begin_read;        ELSIF (ADSCNIn = '1' AND (ADSPNIn = '1' OR CE1NegIn = '1')              AND R = '1') THEN            IF ADVNIn = '0' THEN                command := read_burst;            ELSE                command := read_susp;            END IF;        ELSIF (CE3NegIn = '0' AND CE2In = '1' AND CE1NegIn = '0'              AND ADSPNIn = '0' AND R = '0') THEN            command := begin_SPwr;        ELSIF (ADSCNIn = '1' AND (ADSPNIn = '1' OR CE1NegIn = '1')              AND R = '0') THEN            IF ADVNIn = '0' THEN                command := SPwr_burst;            ELSE                command := SPwr_susp;            END IF;        ELSIF (CE3NegIn = '0' AND CE2In = '1' AND CE1NegIn = '0' AND              ADSPNIn = '1' AND ADSCNIn = '0' AND R = '0') THEN            command := SCwr;        ELSE            ASSERT false                REPORT InstancePath & partID & ": Could not decode "                       & "command."                SEVERITY SeverityMode;        END IF;        OBuf2 := OBuf1;        cycle2 := cycle1;        -- The State Machine        CASE state IS            WHEN desel =>                CASE command IS                    WHEN ds =>                        OBuf1 := (others => 'Z');                        cycle1 := true;                    WHEN begin_SPwr =>                        cycle1 := false;                        cycle2 := false;                        state <= begin_SPwrite;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 downto 0));                    WHEN begin_read =>                        cycle1 := false;                        cycle2 := false;                        state <= begin_rd;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 downto 0));                        IF MemDataA(MemAddr) = -2 THEN                            OBuf1(8 downto 0) := (others => 'U');                        ELSIF MemDataA(MemAddr) = -1 THEN                            OBuf1(8 downto 0) := (others => 'X');                        ELSE                            OBuf1(8 downto 0) := to_slv(MemDataA(MemAddr),9);                        END IF;                        IF MemDataB(MemAddr) = -2 THEN                            OBuf1(17 downto 9) := (others => 'U');                        ELSIF MemDataB(MemAddr) = -1 THEN                            OBuf1(17 downto 9) := (others => 'X');                        ELSE                            OBuf1(17 downto 9) := to_slv(MemDataB(MemAddr),9);                        END IF;                        IF MemDataC(MemAddr) = -2 THEN                            OBuf1(26 downto 18) := (others => 'U');                        ELSIF MemDataC(MemAddr) = -1 THEN                            OBuf1(26 downto 18) := (others => 'X');                        ELSE                            OBuf1(26 downto 18) := to_slv(MemDataC(MemAddr),9);                        END IF;                        IF MemDataD(MemAddr) = -2 THEN                            OBuf1(35 downto 27) := (others => 'U');                        ELSIF MemDataD(MemAddr) = -1 THEN                            OBuf1(35 downto 27) := (others => 'X');                        ELSE                            OBuf1(35 downto 27) := to_slv(MemDataD(MemAddr),9);                        END IF;                    WHEN SCwr =>                        cycle1 := false;                        cycle2 := false;                        state <= SCwrite;                        MemAddr := to_nat(AddressIn);                        OBuf1 := (others => 'Z');                        IF GWNIn = '0' THEN                            MemDataA(MemAddr) := -1;                            MemDataB(MemAddr) := -1;                            MemDataC(MemAddr) := -1;                            MemDataD(MemAddr) := -1;                            IF Violation /= 'X' THEN                                MemDataA(MemAddr) := to_nat(DatAIn);                                MemDataB(MemAddr) := to_nat(DatBIn);                                MemDataC(MemAddr) := to_nat(DatCIn);                                MemDataD(MemAddr) := to_nat(DatDIn);                            END IF;                        ELSE                            IF (BWANIn = '0') THEN                                MemDataA(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataA(MemAddr) := to_nat(DatAIn);                                END IF;                            END IF;                            IF (BWBNIn = '0') THEN                                MemDataB(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataB(MemAddr) := to_nat(DatBIn);                                END IF;                            END IF;                            IF (BWCNIn = '0') THEN                                MemDataC(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataC(MemAddr) := to_nat(DatCIn);                                END IF;                            END IF;                            IF (BWDNIn = '0') THEN                                MemDataD(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataD(MemAddr) := to_nat(DatDIn);                                END IF;                            END IF;                        END IF;                    WHEN SPwr_burst =>                        cycle1 := false;                        cycle2 := false;                        OBuf1 := (others => 'Z');                    WHEN SPwr_susp =>                        cycle1 := false;                        cycle2 := false;                        OBuf1 := (others => 'Z');                    WHEN read_burst =>                        cycle1 := false;                        cycle2 := false;                        OBuf1 := (others => 'Z');                    WHEN read_susp =>                        cycle1 := false;                        cycle2 := false;                        OBuf1 := (others => 'Z');                END CASE;            WHEN begin_rd =>                Burst_Cnt := 0;                CASE command IS                    WHEN ds =>                        state <= desel;                        OBuf1 := (others => 'Z');                    WHEN begin_SPwr =>                        OBuf1 := (others => 'Z');                        state <= begin_SPwrite;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 downto 0));                    WHEN begin_read =>                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 downto 0));                        IF MemDataA(MemAddr) = -2 THEN                            OBuf1(8 downto 0) := (others => 'U');                        ELSIF MemDataA(MemAddr) = -1 THEN                            OBuf1(8 downto 0) := (others => 'X');                        ELSE                            OBuf1(8 downto 0) := to_slv(MemDataA(MemAddr),9);                        END IF;                        IF MemDataB(MemAddr) = -2 THEN                            OBuf1(17 downto 9) := (others => 'U');                        ELSIF MemDataB(MemAddr) = -1 THEN                            OBuf1(17 downto 9) := (others => 'X');                        ELSE                            OBuf1(17 downto 9) := to_slv(MemDataB(MemAddr),9);                        END IF;                        IF MemDataC(MemAddr) = -2 THEN                            OBuf1(26 downto 18) := (others => 'U');                        ELSIF MemDataC(MemAddr) = -1 THEN                            OBuf1(26 downto 18) := (others => 'X');                        ELSE                            OBuf1(26 downto 18) := to_slv(MemDataC(MemAddr),9);                        END IF;                        IF MemDataD(MemAddr) = -2 THEN                            OBuf1(35 downto 27) := (others => 'U');                        ELSIF MemDataD(MemAddr) = -1 THEN                            OBuf1(35 downto 27) := (others => 'X');                        ELSE                            OBuf1(35 downto 27) := to_slv(MemDataD(MemAddr),9);                        END IF;                    WHEN SCwr =>                        state <= SCwrite;                        MemAddr := to_nat(AddressIn);                        OBuf1 := (others => 'Z');                         IF GWNIn = '0' THEN                            MemDataA(MemAddr) := -1;                            MemDataB(MemAddr) := -1;                            MemDataC(MemAddr) := -1;                            MemDataD(MemAddr) := -1;                            IF Violation /= 'X' THEN                                MemDataA(MemAddr) := to_nat(DatAIn);                                MemDataB(MemAddr) := to_nat(DatBIn);                                MemDataC(MemAddr) := to_nat(DatCIn);                                MemDataD(MemAddr) := to_nat(DatDIn);                            END IF;                        ELSE                            IF (BWANIn = '0') THEN                                MemDataA(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataA(MemAddr) := to_nat(DatAIn);                                END IF;                            END IF;                            IF (BWBNIn = '0') THEN                                MemDataB(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataB(MemAddr) := to_nat(DatBIn);                                END IF;                            END IF;                            IF (BWCNIn = '0') THEN                                MemDataC(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataC(MemAddr) := to_nat(DatCIn);                                END IF;                            END IF;                            IF (BWDNIn = '0') THEN                                MemDataD(MemAddr) := -1;                                IF Violation /= 'X' THEN                                    MemDataD(MemAddr) := to_nat(DatDIn);                                END IF;                            END IF;                        END IF;                    WHEN SPwr_burst =>                        OBuf1 := (others => 'Z');                    WHEN SPwr_susp =>                        state <= SPwrite;                        OBuf1 := (others => 'Z');                        IF GWNIn = '0' THEN                            MemDataA(MemAddr) := -1;                            MemDataB(MemAddr) := -1;                            MemDataC(MemAddr) := -1;                            MemDataD(MemAddr) := -1;                            IF Violation /= 'X' THEN                                MemDataA(MemAddr) := to_nat(DatAIn);                                MemDataB(MemAddr) := to_nat(DatBIn);                                MemDataC(MemAddr) := to_nat(DatCIn);                                MemDataD(MemAddr) := to_nat(DatDIn);                            END IF;                        ELSE  

⌨️ 快捷键说明

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