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

📄 cy7c1360.vhd

📁 vhdl cod for ram.For sp3e
💻 VHD
📖 第 1 页 / 共 5 页
字号:
        END IF;        OBuf2 := OBuf1;        -- The State Machine        CASE state IS            WHEN desel =>                CASE command IS                    WHEN ds =>                        OBuf1 := (OTHERS => 'Z');                    WHEN begin_rw  | SCrd =>                        IF command = begin_rw THEN                            state <= begin_rdwr;                        ELSE                            state <= SCread;                        END IF;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        Mem_read;                    WHEN SCwr =>                        state <= SCwrite;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN SPwr_burst =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN SPwr_susp =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN read_burst =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN read_susp =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                END CASE;            WHEN begin_rdwr | SCread =>                Burst_Cnt := 0;                CASE command IS                    WHEN ds =>                        state <= desel;                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN begin_rw  | SCrd =>                        IF command = begin_rw THEN                            state <= begin_rdwr;                        ELSE                            state <= SCread;                        END IF;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        Mem_read;                    WHEN SCwr =>                        state <= SCwrite;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN SPwr_burst =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN SPwr_susp =>                        IF state = begin_rdwr THEN                            state <= SPwrite;                            OBuf1 := (OTHERS => 'Z');                            OBuf2 := (OTHERS => 'Z');                            Mem_write;                        END IF;                    WHEN read_burst =>                        state <= read;                        Burst_Cnt := Burst_Cnt + 1;                        offset := Burst_Seq(memstart)(Burst_Cnt);                        MemAddr := startaddr + offset;                        Mem_read;                    WHEN read_susp =>                        OBuf1 := (OTHERS => 'Z');                END CASE;            WHEN SPwrite =>                CASE command IS                    WHEN ds =>                        state <= desel;                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN begin_rw  | SCrd =>                        IF command = begin_rw THEN                            state <= begin_rdwr;                        ELSE                            state <= SCread;                        END IF;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        Mem_read;                    WHEN SCwr =>                        state <= SCwrite;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN SPwr_burst =>                        state <= SPwrite;                        Burst_Cnt := Burst_Cnt + 1;                        IF (Burst_Cnt = 4) THEN                            Burst_Cnt := 0;                        END IF;                        offset := Burst_Seq(memstart)(Burst_Cnt);                        MemAddr := startaddr + offset;                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN SPwr_susp =>                        state <= SPwrite;                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN read_burst =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN read_susp =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                END CASE;            WHEN SCwrite =>                Burst_Cnt := 0;                CASE command IS                    WHEN ds =>                        state <= desel;                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN begin_rw  | SCrd =>                        IF command = begin_rw THEN                            state <= begin_rdwr;                        ELSE                            state <= SCread;                        END IF;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        Mem_read;                    WHEN SCwr =>                        state <= SCwrite;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN SPwr_burst =>                        state <= SPwrite;                        Burst_Cnt := Burst_Cnt + 1;                        offset := Burst_Seq(memstart)(Burst_Cnt);                        MemAddr := startaddr + offset;                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN SPwr_susp =>                        OBuf1 := (OTHERS => 'Z');                    WHEN read_burst =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN read_susp =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                END CASE;            WHEN read =>                CASE command IS                    WHEN ds =>                        state <= desel;                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN begin_rw  | SCrd =>                        IF command = begin_rw THEN                            state <= begin_rdwr;                        ELSE                            state <= SCread;                        END IF;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        Mem_read;                    WHEN SCwr =>                        state <= SCwrite;                        MemAddr := to_nat(AddressIn);                        startaddr := MemAddr;                        memstart := to_nat(AddressIn(1 DOWNTO 0));                        OBuf1 := (OTHERS => 'Z');                        Mem_write;                    WHEN SPwr_burst =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN SPwr_susp =>                        OBuf1 := (OTHERS => 'Z');                        OBuf2 := (OTHERS => 'Z');                    WHEN read_burst =>                        state <= read;                        Burst_Cnt := Burst_Cnt + 1;                        IF (Burst_Cnt = 4) THEN                            Burst_Cnt := 0;                        END IF;                        offset := Burst_Seq(memstart)(Burst_Cnt);                        MemAddr := startaddr + offset;                        Mem_read;                    WHEN read_susp =>                        state <= read;                END CASE;        END CASE;        IF (OENegIn = '0') THEN           D_zd <= OBuf2;        END IF;    END IF;    IF (OENegIn = '1') THEN        D_zd <= (OTHERS => 'Z');    ELSIF falling_edge(OENegIn) AND (ZZIn = '0') AND zz_reset THEN        D_zd <= OBuf2;    END IF;    IF rising_edge(ZZIn) THEN        IF zz_reset THEN            IF state = desel THEN                zz_start := TRUE;                zz_false := FALSE;            ELSE                zz_start := FALSE;                count := 0;                zz_false := TRUE;                ASSERT false                    REPORT InstancePath & partID & "The device must be " &                           "deselected prior to entering the sleep mode."                    SEVERITY SeverityMode;            END IF;        ELSE            zz_stop := FALSE;            count := 0;            ASSERT false                REPORT InstancePath & partID & ": 2tCYC are "                       &  "required to exit from sleep mode."                SEVERITY SeverityMode;        END IF;    ELSIF falling_edge(ZZIn) THEN        IF zz_reset THEN            zz_start := FALSE;            count := 0;            IF NOT zz_false THEN                ASSERT false                    REPORT InstancePath & partID & ": 2tCYC are "                           & "required to enter into sleep mode."                    SEVERITY SeverityMode;            END IF;        ELSE            zz_stop := TRUE;        END IF;    END IF;    IF rising_edge(CLKIn) THEN        IF zz_start THEN            IF count < 2 THEN                count := count + 1;            ELSE                zz_reset := FALSE;                zz_start := FALSE;                count := 0;            END IF;        END IF;        IF zz_stop THEN            IF count < 2 THEN                count := count + 1;            ELSE                zz_reset := TRUE;                zz_stop := FALSE;                count := 0;            END IF;        END IF;    END IF;    IF NOT zz_reset AND zz_stop AND (CE2In = '1' OR CE1NegIn = '0'    OR CE3NegIn = '0' OR ADSPNIn = '0' OR ADSCNIn = '0') THEN        ASSERT FALSE            REPORT InstancePath & partID & ": CEs, ADSC and ADSP must " &            "remain inac

⌨️ 快捷键说明

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