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
11 --logic analyzer reference clock
12 signal dbg_base_clk: out std_logic;
15 pi_base_clk : in std_logic;
16 pi_rst_n : in std_logic;
17 pi_joypad1 : in std_logic_vector(7 downto 0);
18 pi_joypad2 : in std_logic_vector(7 downto 0);
19 po_h_sync_n : out std_logic;
20 po_v_sync_n : out std_logic;
21 po_r : out std_logic_vector(3 downto 0);
22 po_g : out std_logic_vector(3 downto 0);
23 po_b : out std_logic_vector(3 downto 0);
24 pi_nt_v_mirror : in std_logic;
27 po_dbg_cnt : out std_logic_vector (63 downto 0)
31 signal dbg_base_clk : std_logic;
32 signal base_clk : std_logic;
33 signal reset_input : std_logic;
34 signal nmi_input : std_logic;
35 signal dbg_nmi : std_logic;
36 signal dummy_nmi : std_logic;
38 signal h_sync_n : std_logic;
39 signal v_sync_n : std_logic;
40 signal r : std_logic_vector(3 downto 0);
41 signal g : std_logic_vector(3 downto 0);
42 signal b : std_logic_vector(3 downto 0);
43 signal joypad1 : std_logic_vector(7 downto 0);
44 signal joypad2 : std_logic_vector(7 downto 0);
45 signal nt_v_mirror : std_logic;
46 signal dbg_cnt : std_logic_vector (63 downto 0);
48 constant powerup_time : time := 2 us;
49 constant reset_time : time := 890 ns;
51 ---clock frequency = 21,477,270 (21 MHz)
52 --constant base_clock_time : time := 46 ns;
54 --DE1 base clock = 50 MHz
55 constant base_clock_time : time := 20 ns;
59 sim_board : de0_cv_nes port map (
61 base_clk, reset_input, joypad1, joypad2,
62 h_sync_n, v_sync_n, r, g, b, nt_v_mirror, dbg_cnt);
68 wait for powerup_time;
77 --- generate base clock.
81 wait for base_clock_time / 2;
83 wait for base_clock_time / 2;
88 constant nmi_wait : time := 100657965 ps;
89 --constant nmi_wait : time := 10 ms;
90 constant vblank_time : time := 60 us;
91 variable wait_cnt : integer := 0;
94 if (wait_cnt = 0) then
96 wait for powerup_time + reset_time + nmi_wait;
97 wait_cnt := wait_cnt + 1;
100 wait for vblank_time ;
102 wait for vblank_time / 4;
106 dummy_nmi <= nmi_input;
109 --set chr rom mirror setting.