OpenCores
URL https://opencores.org/ocsvn/cpu_lecture/cpu_lecture/trunk

Subversion Repositories cpu_lecture

[/] [cpu_lecture/] [trunk/] [src/] [opc_fetch.vhd] - Diff between revs 10 and 13

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 10 Rev 13
Line 111... Line 111...
                            (P_OPC( 3 downto  0) = "0000")))    -- LDS, STS
                            (P_OPC( 3 downto  0) = "0000")))    -- LDS, STS
            else '0';
            else '0';
 
 
    -- Two cycle opcodes:
    -- Two cycle opcodes:
    --
    --
 
    -- 10q0 qq0d dddd 1qqq - LDD (Y + q)
 
    -- 10q0 qq0d dddd 0qqq - LDD (Z + q)
    -- 1001 000d dddd .... - LDS etc.
    -- 1001 000d dddd .... - LDS etc.
    -- 1001 0101 0000 1000 - RET
    -- 1001 0101 0000 1000 - RET
    -- 1001 0101 0001 1000 - RETI
    -- 1001 0101 0001 1000 - RETI
    -- 1001 1001 AAAA Abbb - SBIC
    -- 1001 1001 AAAA Abbb - SBIC
    -- 1001 1011 AAAA Abbb - SBIS
    -- 1001 1011 AAAA Abbb - SBIS
    -- 1111 110r rrrr 0bbb - SBRC
    -- 1111 110r rrrr 0bbb - SBRC
    -- 1111 111r rrrr 0bbb - SBRS
    -- 1111 111r rrrr 0bbb - SBRS
    --
    --
    L_WAIT <= '0'  when ((L_INVALIDATE = '1') or (I_INTVEC(5)  = '1'))
    L_WAIT <= '0'  when ((L_INVALIDATE = '1') or (I_INTVEC(5)  = '1'))
         else L_T0 when ((P_OPC(15 downto   9) = "1001000" )    -- LDS etc.
         else L_T0 when ( (   (P_OPC(15 downto  14) = "10" )        -- LDD
 
                          and (P_OPC(12) = '0')
 
                          and (P_OPC( 9) = '0') )
 
                     or (      P_OPC(15 downto   9) = "1001000")    -- LDS etc.
                     or ((P_OPC(15 downto   8) = "10010101")    -- RET etc.
                     or ((P_OPC(15 downto   8) = "10010101")    -- RET etc.
                      and (P_OPC(3 downto 0) /= "1010"))        -- but not DEC
                      and (P_OPC(3 downto 0) /= "1010"))        -- but not DEC
                     or  ((P_OPC(15 downto 10) = "100110")      -- SBIC, SBIS
                     or ( (    P_OPC(15 downto 10) = "100110")      -- SBI[CS]
                      and (P_OPC(8) = '1'))
                      and (P_OPC(8) = '1'))
                     or  (P_OPC(15 downto  10) = "111111"))     -- SBRC, SBRS
                     or  (P_OPC(15 downto  10) = "111111"))         -- SBR[CS]
         else '0';
         else '0';
 
 
    L_INVALIDATE <= I_CLR or I_SKIP;
    L_INVALIDATE <= I_CLR or I_SKIP;
 
 
    Q_OPC <= X"00000000" when (L_INVALIDATE = '1')
    Q_OPC <= X"00000000" when (L_INVALIDATE = '1')

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.