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

Subversion Repositories c16

[/] [c16/] [trunk/] [vhdl/] [test.vhd] - Diff between revs 2 and 9

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

Rev 2 Rev 9
Line 18... Line 18...
END testbench;
END testbench;
 
 
ARCHITECTURE behavior OF testbench IS
ARCHITECTURE behavior OF testbench IS
 
 
        COMPONENT cpu_engine
        COMPONENT cpu_engine
        PORT(   CLK      : in  std_logic;
        PORT(
                        CCK      : in  std_logic;
                clk_i : IN std_logic;
                        CLR      : in  std_logic;
                dat_i : IN std_logic_vector(7 downto 0);
                        Q_PC   : out std_logic_vector(15 downto 0);
                rst_i : IN std_logic;
                        Q_OPC  : out std_logic_vector( 7 downto 0);
                ack_i : IN std_logic;
                        Q_CAT  : out op_category;
                int : IN std_logic;
                        Q_IMM  : out std_logic_vector(15 downto 0);
                dat_o : OUT std_logic_vector(7 downto 0);
                        Q_CYC  : out cycle;
                adr_o : OUT std_logic_vector(15 downto 0);
 
                cyc_o : OUT std_logic;
                        -- input/output
                stb_o : OUT std_logic;
                        INT      : in  std_logic;
                tga_o : OUT std_logic_vector(0 to 0);
                        IO_ADR   : out std_logic_vector(7 downto 0);
                we_o : OUT std_logic;
                        IO_RD    : out std_logic;
                halt : OUT std_logic;
                        IO_WR    : out std_logic;
                q_pc : OUT std_logic_vector(15 downto 0);
                        IO_RDAT  : in  std_logic_vector( 7 downto 0);
                q_opc : OUT std_logic_vector(7 downto 0);
 
                q_cat : OUT op_category;
                        -- memory
                q_imm : OUT std_logic_vector(15 downto 0);
                        XM_ADR  : out std_logic_vector(15 downto 0);
                q_cyc : OUT cycle;
                        XM_RDAT : in  std_logic_vector( 7 downto 0);
                q_sx : OUT std_logic_vector(1 downto 0);
                        XM_WDAT : out std_logic_vector( 7 downto 0);
                q_sy : OUT std_logic_vector(3 downto 0);
                        XM_WE   : out std_logic;
                q_op : OUT std_logic_vector(4 downto 0);
                        XM_CE   : out std_logic;
                q_sa : OUT std_logic_vector(4 downto 0);
 
                q_smq : OUT std_logic;
                        -- select signals
                q_we_rr : OUT std_logic;
                        Q_SX    : out std_logic_vector(1 downto 0);
                q_we_ll : OUT std_logic;
                        Q_SY    : out std_logic_vector(3 downto 0);
                q_we_sp : OUT SP_OP;
                        Q_OP    : out std_logic_vector(4 downto 0);
                q_rr : OUT std_logic_vector(15 downto 0);
                        Q_SA    : out std_logic_vector(4 downto 0);
                q_ll : OUT std_logic_vector(15 downto 0);
                        Q_SMQ   : out std_logic;
                q_sp : OUT std_logic_vector(15 downto 0)
 
 
                        -- write enable/select signal
 
                        Q_WE_RR  : out std_logic;
 
                        Q_WE_LL  : out std_logic;
 
                        Q_WE_SP  : out SP_OP;
 
 
 
                        Q_RR     : out std_logic_vector(15 downto 0);
 
                        Q_LL     : out std_logic_vector(15 downto 0);
 
                        Q_SP     : out std_logic_vector(15 downto 0);
 
                        HALT       : out std_logic
 
                );
                );
        END COMPONENT;
        END COMPONENT;
 
 
        signal  CLK      : std_logic;
        signal  CLK_I   : std_logic;
        signal  CLR      : std_logic;
        signal  DAT_I   : std_logic_vector( 7 downto 0);
        signal  Q_PC   : std_logic_vector(15 downto 0);
        signal  DAT_O   : std_logic_vector( 7 downto 0);
        signal  Q_OPC  : std_logic_vector( 7 downto 0);
        signal  RST_I   : std_logic;
        signal  Q_CAT  : op_category;
        signal  ACK_I   : std_logic;
        signal  Q_CYC  : cycle;
        signal  ADR_O   : std_logic_vector(15 downto 0);
        signal  Q_IMM  : std_logic_vector(15 downto 0);
        signal  CYC_O   : std_logic;
 
        signal  STB_O   : std_logic;
 
        signal  TGA_O   : std_logic_vector( 0 downto 0);          -- '1' if I/O
 
        signal  WE_O    : std_logic;
 
 
        signal  Q_SP     : std_logic_vector(15 downto 0);
 
        signal  Q_LL     : std_logic_vector(15 downto 0);
 
        signal  Q_RR     : std_logic_vector(15 downto 0);
 
 
 
        -- input/output
 
        signal  INT      : std_logic;
        signal  INT      : std_logic;
        signal  IO_RD    : std_logic;
 
        signal  IO_ADR   : std_logic_vector( 7 downto 0);
 
        signal  IO_WR    : std_logic;
 
        signal  IO_RDAT  : std_logic_vector( 7 downto 0);
 
        signal  HALT     : std_logic;
        signal  HALT     : std_logic;
 
 
                        -- memory
                        -- debug signals
        signal  XM_ADR  : std_logic_vector(15 downto 0);
                        --
        signal  XM_RDAT : std_logic_vector( 7 downto 0);
        signal  Q_PC    : std_logic_vector(15 downto 0);
        signal  XM_WDAT : std_logic_vector( 7 downto 0);
        signal  Q_OPC   : std_logic_vector( 7 downto 0);
        signal  XM_WE   : std_logic;
        signal  Q_CAT   : op_category;
        signal  XM_CE   : std_logic;
        signal  Q_IMM   : std_logic_vector(15 downto 0);
 
        signal  Q_CYC   : cycle;
 
 
                        -- select signals
                        -- select signals
        signal  Q_SX    : std_logic_vector(1 downto 0);
        signal  Q_SX    : std_logic_vector(1 downto 0);
        signal  Q_SY    : std_logic_vector(3 downto 0);
        signal  Q_SY    : std_logic_vector(3 downto 0);
        signal  Q_OP    : std_logic_vector(4 downto 0);
        signal  Q_OP    : std_logic_vector(4 downto 0);
Line 99... Line 84...
                        -- write enable/select signal
                        -- write enable/select signal
        signal  Q_WE_RR  : std_logic;
        signal  Q_WE_RR  : std_logic;
        signal  Q_WE_LL  : std_logic;
        signal  Q_WE_LL  : std_logic;
        signal  Q_WE_SP  : SP_OP;
        signal  Q_WE_SP  : SP_OP;
 
 
 
        signal  Q_RR    : std_logic_vector(15 downto 0);
 
        signal  Q_LL    : std_logic_vector(15 downto 0);
 
        signal  Q_SP    : std_logic_vector(15 downto 0);
 
 
        signal clk_counter : INTEGER := 0;
        signal clk_counter : INTEGER := 0;
 
 
BEGIN
BEGIN
 
 
        uut: cpu_engine PORT MAP(
        uut: cpu_engine
                CLK        => CLK,
        PORT MAP(
                CCK        => CLK,
                clk_i => clk_i,
                CLR        => CLR,
                dat_i => dat_i,
                Q_PC     => Q_PC,
                dat_o => dat_o,
                Q_OPC    => Q_OPC,
                rst_i => rst_i,
                Q_CAT    => Q_CAT,
                ack_i => ack_i,
                Q_IMM    => Q_IMM,
                adr_o => adr_o,
                Q_CYC    => Q_CYC,
                cyc_o => cyc_o,
 
                stb_o => stb_o,
                INT        => INT,
                tga_o => tga_o,
                IO_ADR     => IO_ADR,
                we_o => we_o,
                IO_RD      => IO_RD,
                int => int,
                IO_WR      => IO_WR,
                halt => halt,
                IO_RDAT    => IO_RDAT,
                q_pc => q_pc,
 
                q_opc => q_opc,
                XM_ADR     => XM_ADR,
                q_cat => q_cat,
                XM_RDAT    => XM_RDAT,
                q_imm => q_imm,
                XM_WDAT    => XM_WDAT,
                q_cyc => q_cyc,
                XM_WE      => XM_WE,
                q_sx => q_sx,
                XM_CE      => XM_CE,
                q_sy => q_sy,
 
                q_op => q_op,
                Q_SX     => Q_SX,
                q_sa => q_sa,
                Q_SY     => Q_SY,
                q_smq => q_smq,
                Q_OP     => Q_OP,
                q_we_rr => q_we_rr,
                Q_SA     => Q_SA,
                q_we_ll => q_we_ll,
                Q_SMQ    => Q_SMQ,
                q_we_sp => q_we_sp,
 
                q_rr => q_rr,
                Q_WE_RR  => Q_WE_RR,
                q_ll => q_ll,
                Q_WE_LL  => Q_WE_LL,
                q_sp => q_sp
                Q_WE_SP  => Q_WE_SP,
 
 
 
                Q_RR     => Q_RR,
 
                Q_LL     => Q_LL,
 
                Q_SP     => Q_SP,
 
                HALT     => HALT
 
        );
        );
 
 
 
        ack_i <= stb_o;
 
 
-- *** Test Bench - User Defined Section ***
-- *** Test Bench - User Defined Section ***
        PROCESS -- clock process for CLK,
        PROCESS -- clock process for CLK_I,
        BEGIN
        BEGIN
                CLOCK_LOOP : LOOP
                CLOCK_LOOP : LOOP
                        CLK <= transport '0';
                        CLK_I <= transport '0';
                        WAIT FOR 1 ns;
                        WAIT FOR 1 ns;
                        CLK <= transport '1';
                        CLK_I <= transport '1';
                        WAIT FOR 1 ns;
                        WAIT FOR 1 ns;
                        WAIT FOR 11 ns;
                        WAIT FOR 11 ns;
                        CLK <= transport '0';
                        CLK_I <= transport '0';
                        WAIT FOR 12 ns;
                        WAIT FOR 12 ns;
                END LOOP CLOCK_LOOP;
                END LOOP CLOCK_LOOP;
        END PROCESS;
        END PROCESS;
 
 
        PROCESS(CLK)
        PROCESS(CLK_I)
        BEGIN
        BEGIN
                if (rising_edge(CLK)) then
                if (rising_edge(CLK_I)) then
                        if (Q_CYC = M1) then
                        if (Q_CYC = M1) then
                                CLK_COUNTER <= CLK_COUNTER + 1;
                                CLK_COUNTER <= CLK_COUNTER + 1;
                        end if;
                        end if;
 
 
                        if (XM_ADR(0) = '0') then         IO_RDAT <= X"44";       -- data
                        if (ADR_O(0) = '0') then          DAT_I <= X"44"; -- data
                        else                                                    IO_RDAT <= X"01";       -- control
                        else                                                    DAT_I <= X"01"; -- control
                        end if;
                        end if;
 
 
                        case CLK_COUNTER is
                        case CLK_COUNTER is
                                when 0           =>      CLR <= '1';   INT <= '0';
                                when 0           =>      RST_I <= '1';   INT <= '0';
                                when 1          =>      CLR <= '0';
                                when 1          =>      RST_I <= '0';
--                              when 20         =>      INT <= '1';
--                              when 20         =>      INT <= '1';
 
 
 
 
                                when 1000       =>      CLK_COUNTER <= 0;
                                when 1000       =>      CLK_COUNTER <= 0;
                                                                ASSERT (FALSE) REPORT
                                                                ASSERT (FALSE) REPORT

powered by: WebSVN 2.1.0

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