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_mem_clk : out std_logic;
15 signal dbg_addr : out std_logic_vector( 16 - 1 downto 0);
16 signal dbg_d_io : inout std_logic_vector( 8 - 1 downto 0);
17 signal dbg_vram_ad : out std_logic_vector (7 downto 0);
18 signal dbg_vram_a : out std_logic_vector (13 downto 8);
21 signal dbg_instruction : out std_logic_vector(7 downto 0);
22 signal dbg_int_d_bus : out std_logic_vector(7 downto 0);
23 signal dbg_exec_cycle : out std_logic_vector (5 downto 0);
24 -- signal dbg_index_bus : out std_logic_vector(7 downto 0);
25 -- signal dbg_acc_bus : out std_logic_vector(7 downto 0);
26 signal dbg_status : out std_logic_vector(7 downto 0);
27 signal dbg_pcl, dbg_pch, dbg_sp, dbg_x, dbg_y, dbg_acc : out std_logic_vector(7 downto 0);
28 signal dbg_dec_oe_n : out std_logic;
29 signal dbg_dec_val : out std_logic_vector (7 downto 0);
30 signal dbg_int_dbus : out std_logic_vector (7 downto 0);
31 -- signal dbg_status_val : out std_logic_vector (7 downto 0);
32 signal dbg_stat_we_n : out std_logic;
33 signal dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w : 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_ppu_addr_we_n : out std_logic;
41 signal dbg_ppu_clk_cnt : out std_logic_vector(1 downto 0);
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 vga_clk : out std_logic;
50 h_sync_n : out std_logic;
51 v_sync_n : out std_logic;
52 r : out std_logic_vector(3 downto 0);
53 g : out std_logic_vector(3 downto 0);
54 b : out std_logic_vector(3 downto 0)
59 port ( vga_clk : in std_logic;
61 h_sync_n : in std_logic;
62 v_sync_n : in std_logic;
63 r : in std_logic_vector(3 downto 0);
64 g : in std_logic_vector(3 downto 0);
65 b : in std_logic_vector(3 downto 0)
69 signal base_clk : std_logic;
70 signal vga_clk : std_logic;
71 signal reset_input : std_logic;
73 signal h_sync_n : std_logic;
74 signal v_sync_n : std_logic;
75 signal r : std_logic_vector(3 downto 0);
76 signal g : std_logic_vector(3 downto 0);
77 signal b : std_logic_vector(3 downto 0);
78 signal joypad1 : std_logic_vector(7 downto 0);
79 signal joypad2 : std_logic_vector(7 downto 0);
81 constant powerup_time : time := 2 us;
82 constant reset_time : time := 890 ns;
84 ---clock frequency = 21,477,270 (21 MHz)
85 --constant base_clock_time : time := 46 ns;
87 --DE1 base clock = 50 MHz
88 constant base_clock_time : time := 20 ns;
90 signal dbg_cpu_clk : std_logic;
91 signal dbg_ppu_clk : std_logic;
92 signal dbg_mem_clk : std_logic;
93 signal dbg_addr : std_logic_vector( 16 - 1 downto 0);
94 signal dbg_d_io : std_logic_vector( 8 - 1 downto 0);
95 signal dbg_vram_ad : std_logic_vector (7 downto 0);
96 signal dbg_vram_a : std_logic_vector (13 downto 8);
97 signal dbg_instruction : std_logic_vector(7 downto 0);
98 signal dbg_int_d_bus : std_logic_vector(7 downto 0);
99 signal dbg_exec_cycle : std_logic_vector (5 downto 0);
100 -- signal dbg_index_bus : std_logic_vector(7 downto 0);
101 -- signal dbg_acc_bus : std_logic_vector(7 downto 0);
102 signal dbg_status : std_logic_vector(7 downto 0);
103 signal dbg_pcl, dbg_pch, dbg_sp, dbg_x, dbg_y, dbg_acc : std_logic_vector(7 downto 0);
104 signal dbg_dec_oe_n : std_logic;
105 signal dbg_dec_val : std_logic_vector (7 downto 0);
106 signal dbg_int_dbus : std_logic_vector (7 downto 0);
107 -- signal dbg_status_val : std_logic_vector (7 downto 0);
108 signal dbg_stat_we_n : std_logic;
109 signal dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w : std_logic_vector (7 downto 0);
110 signal dbg_ppu_ce_n : std_logic;
111 signal dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status : std_logic_vector (7 downto 0);
112 signal dbg_ppu_addr : std_logic_vector (13 downto 0);
113 signal dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y : std_logic_vector (7 downto 0);
114 signal dbg_disp_nt, dbg_disp_attr : std_logic_vector (7 downto 0);
115 signal dbg_disp_ptn_h, dbg_disp_ptn_l : std_logic_vector (15 downto 0);
116 signal dbg_ppu_addr_we_n : std_logic;
117 signal dbg_ppu_clk_cnt : std_logic_vector(1 downto 0);
121 sim_board : de1_nes port map (
135 dbg_pcl, dbg_pch, dbg_sp, dbg_x, dbg_y, dbg_acc ,
141 dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w,
144 dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status ,
146 dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y,
147 --dbg_disp_nt, dbg_disp_attr ,
148 --dbg_disp_ptn_h, dbg_disp_ptn_l ,
153 base_clk, reset_input, joypad1, joypad2,
154 vga_clk, h_sync_n, v_sync_n, r, g, b);
156 -- dummy_vga_disp : vga_device
157 -- port map (vga_clk, reset_input, h_sync_n, v_sync_n, r, g, b);
163 wait for powerup_time;
172 --- generate base clock.
176 wait for base_clock_time / 2;
178 wait for base_clock_time / 2;