OSDN Git Service

status register integrated into cpu.
[motonesfpga/motonesfpga.git] / simulation / cpu / testbench_mos6502.vhd
1
2 library IEEE;
3 use IEEE.std_logic_1164.all;
4 use ieee.std_logic_arith.all;
5
6
7 entity testbench_mos6502 is
8 end testbench_mos6502;
9
10 architecture stimulus of testbench_mos6502 is 
11     component mos6502
12         generic (   dsize : integer := 8;
13                     asize : integer :=16
14                 );
15         port (  input_clk   : in std_logic; --phi0 input pin.
16                 rdy         : in std_logic;
17                 rst_n       : in std_logic;
18                 irq_n       : in std_logic;
19                 nmi_n       : in std_logic;
20                 dbe         : in std_logic;
21                 r_nw        : out std_logic;
22                 phi1        : out std_logic;
23                 phi2        : out std_logic;
24                 addr        : out std_logic_vector ( asize - 1 downto 0);
25                 d_io        : inout std_logic_vector ( dsize - 1 downto 0)
26         );
27     end component;
28
29     component address_decoder
30     generic (abus_size : integer := 16; dbus_size : integer := 8);
31         port (  phi2        : in std_logic;
32                 R_nW        : in std_logic; 
33                 addr       : in std_logic_vector (abus_size - 1 downto 0);
34                 d_io       : inout std_logic_vector (dbus_size - 1 downto 0)
35     );
36     end component;
37
38
39     constant dsize : integer := 8;
40     constant asize : integer := 16;
41     constant cpu_clk : time := 589 ns;
42     signal phi0 : std_logic;
43     signal rdy, rst_n, irq_n, nmi_n, dbe, r_nw, phi1, phi2 : std_logic;
44     signal addr : std_logic_vector( asize - 1 downto 0);
45     signal cpu_d : std_logic_vector( dsize - 1 downto 0);
46
47 begin
48
49     irq_n <= '0';
50     nmi_n <= '0';
51     rdy <= '1';
52     cpu_inst : mos6502 generic map (dsize, asize) 
53         port map (phi0, rdy, rst_n, irq_n, nmi_n, dbe, r_nw, 
54                 phi1, phi2, addr, cpu_d);
55
56     addr_dec_inst : address_decoder generic map (asize, dsize) 
57         port map (phi2, r_nw, addr, cpu_d);
58
59     reset_p : process
60     begin
61         wait for 1 us;
62         rst_n <= '0';
63         wait for 1 us;
64         rst_n <= '1';
65         wait;
66     end process;
67
68     clock_p : process
69     begin
70         phi0 <= '1';
71         wait for cpu_clk / 2;
72         phi0 <= '0';
73         wait for cpu_clk / 2;
74     end process;
75
76
77 end stimulus ;
78