2 use IEEE.std_logic_1164.all;
3 use ieee.std_logic_arith.all;
5 entity testbench_motones_sim is
6 end testbench_motones_sim;
8 architecture stimulus of testbench_motones_sim is
12 signal dbg_cpu_clk : out std_logic;
13 signal dbg_ppu_clk : out std_logic;
14 signal dbg_emu_ppu_clk : out std_logic;
15 signal dbg_cpu_mem_clk : out std_logic;
16 signal dbg_r_nw : out std_logic;
17 signal dbg_addr : out std_logic_vector( 16 - 1 downto 0);
18 signal dbg_d_io : out std_logic_vector( 8 - 1 downto 0);
19 signal dbg_v_addr : out std_logic_vector (13 downto 0);
20 signal dbg_v_data : out std_logic_vector (7 downto 0);
23 signal dbg_instruction : out std_logic_vector(7 downto 0);
24 signal dbg_int_d_bus : out std_logic_vector(7 downto 0);
25 signal dbg_exec_cycle : out std_logic_vector (5 downto 0);
26 signal dbg_ea_carry : out std_logic;
27 signal dbg_status : out std_logic_vector(7 downto 0);
28 signal dbg_sp, dbg_x, dbg_y, dbg_acc : out std_logic_vector(7 downto 0);
29 signal dbg_dec_oe_n : out std_logic;
30 signal dbg_dec_val : out std_logic_vector (7 downto 0);
31 signal dbg_int_dbus : out std_logic_vector (7 downto 0);
34 signal dbg_ppu_ce_n : out std_logic;
35 signal dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status : out std_logic_vector (7 downto 0);
36 signal dbg_ppu_addr : out std_logic_vector (13 downto 0);
37 signal dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y : out std_logic_vector (7 downto 0);
38 signal dbg_disp_nt, dbg_disp_attr : out std_logic_vector (7 downto 0);
39 signal dbg_disp_ptn_h, dbg_disp_ptn_l : out std_logic_vector (15 downto 0);
40 signal dbg_nmi : out std_logic;
41 signal dummy_nmi : in std_logic;
45 base_clk : in std_logic;
47 joypad1 : in std_logic_vector(7 downto 0);
48 joypad2 : in std_logic_vector(7 downto 0);
49 h_sync_n : out std_logic;
50 v_sync_n : out std_logic;
51 r : out std_logic_vector(3 downto 0);
52 g : out std_logic_vector(3 downto 0);
53 b : out std_logic_vector(3 downto 0);
54 nt_v_mirror : in std_logic
58 signal base_clk : std_logic;
59 signal reset_input : std_logic;
60 signal nmi_input : std_logic;
61 signal dbg_nmi : std_logic;
62 signal dummy_nmi : std_logic;
64 signal h_sync_n : std_logic;
65 signal v_sync_n : std_logic;
66 signal r : std_logic_vector(3 downto 0);
67 signal g : std_logic_vector(3 downto 0);
68 signal b : std_logic_vector(3 downto 0);
69 signal joypad1 : std_logic_vector(7 downto 0);
70 signal joypad2 : std_logic_vector(7 downto 0);
71 signal nt_v_mirror : std_logic;
73 constant powerup_time : time := 2 us;
74 constant reset_time : time := 890 ns;
76 ---clock frequency = 21,477,270 (21 MHz)
77 --constant base_clock_time : time := 46 ns;
79 --DE1 base clock = 50 MHz
80 constant base_clock_time : time := 20 ns;
82 signal dbg_cpu_clk : std_logic;
83 signal dbg_ppu_clk : std_logic;
84 signal dbg_emu_ppu_clk : std_logic;
85 signal dbg_cpu_mem_clk : std_logic;
86 signal dbg_r_nw : std_logic;
87 signal dbg_addr : std_logic_vector( 16 - 1 downto 0);
88 signal dbg_d_io : std_logic_vector( 8 - 1 downto 0);
89 signal dbg_v_addr : std_logic_vector (13 downto 0);
90 signal dbg_v_data : std_logic_vector (7 downto 0);
91 signal dbg_instruction : std_logic_vector(7 downto 0);
92 signal dbg_int_d_bus : std_logic_vector(7 downto 0);
93 signal dbg_exec_cycle : std_logic_vector (5 downto 0);
94 signal dbg_ea_carry : std_logic;
95 signal dbg_status : std_logic_vector(7 downto 0);
96 signal dbg_pcl, dbg_pch, dbg_sp, dbg_x, dbg_y, dbg_acc : std_logic_vector(7 downto 0);
97 signal dbg_dec_oe_n : std_logic;
98 signal dbg_dec_val : std_logic_vector (7 downto 0);
99 signal dbg_int_dbus : std_logic_vector (7 downto 0);
100 signal dbg_stat_we_n : std_logic;
101 signal dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w : std_logic_vector (7 downto 0);
102 signal dbg_ppu_ce_n : std_logic;
103 signal dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status : std_logic_vector (7 downto 0);
104 signal dbg_ppu_addr : std_logic_vector (13 downto 0);
105 signal dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y : std_logic_vector (7 downto 0);
106 signal dbg_disp_nt, dbg_disp_attr : std_logic_vector (7 downto 0);
107 signal dbg_disp_ptn_h, dbg_disp_ptn_l : std_logic_vector (15 downto 0);
108 signal dbg_ppu_addr_we_n : std_logic;
109 signal dbg_ppu_clk_cnt : std_logic_vector(1 downto 0);
113 sim_board : de1_nes port map (
128 dbg_sp, dbg_x, dbg_y, dbg_acc ,
134 dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status ,
136 dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y,
137 dbg_disp_nt, dbg_disp_attr ,
138 dbg_disp_ptn_h, dbg_disp_ptn_l ,
142 base_clk, reset_input, joypad1, joypad2,
143 h_sync_n, v_sync_n, r, g, b, nt_v_mirror);
149 wait for powerup_time;
158 --- generate base clock.
162 wait for base_clock_time / 2;
164 wait for base_clock_time / 2;
169 constant nmi_wait : time := 100657965 ps;
170 --constant nmi_wait : time := 10 ms;
171 constant vblank_time : time := 60 us;
172 variable wait_cnt : integer := 0;
175 if (wait_cnt = 0) then
177 wait for powerup_time + reset_time + nmi_wait;
178 wait_cnt := wait_cnt + 1;
181 wait for vblank_time ;
183 wait for vblank_time / 4;
187 dummy_nmi <= nmi_input;
190 --set chr rom mirror setting.