OSDN Git Service

bg attr display ok.
[motonesfpga/motonesfpga.git] / simulation / ppu / ppu.vhd
1 library ieee;
2 use ieee.std_logic_1164.all;
3
4 entity ppu is 
5     port (  clk         : in std_logic;
6             ce_n        : in std_logic;
7             rst_n       : in std_logic;
8             r_nw        : in std_logic;
9             cpu_addr    : in std_logic_vector (2 downto 0);
10             cpu_d       : inout std_logic_vector (7 downto 0);
11             vblank_n    : out std_logic;
12             rd_n        : out std_logic;
13             wr_n        : out std_logic;
14             ale         : out std_logic;
15             vram_ad     : inout std_logic_vector (7 downto 0);
16             vram_a      : out std_logic_vector (13 downto 8);
17             vga_clk     : in std_logic;
18             h_sync_n    : out std_logic;
19             v_sync_n    : out std_logic;
20             r           : out std_logic_vector(3 downto 0);
21             g           : out std_logic_vector(3 downto 0);
22             b           : out std_logic_vector(3 downto 0)
23     );
24 end ppu;
25
26 architecture rtl of ppu is
27
28 component ppu_render
29     port (  clk         : in std_logic;
30             rst_n       : in std_logic;
31             vblank_n    : out std_logic;
32             rd_n        : out std_logic;
33             wr_n        : out std_logic;
34             ale         : out std_logic;
35             vram_ad     : inout std_logic_vector (7 downto 0);
36             vram_a      : out std_logic_vector (13 downto 8);
37             plt_bus_ce_n : in std_logic;
38             plt_r_nw    : in std_logic;
39             plt_addr    : in std_logic_vector (4 downto 0);
40             plt_data    : inout std_logic_vector (5 downto 0);
41             pos_x       : out std_logic_vector (8 downto 0);
42             pos_y       : out std_logic_vector (8 downto 0);
43             r           : out std_logic_vector (3 downto 0);
44             g           : out std_logic_vector (3 downto 0);
45             b           : out std_logic_vector (3 downto 0)
46     );
47 end component;
48
49 component vga_ctl
50     port (  ppu_clk     : in std_logic;
51             vga_clk     : in std_logic;
52             rst_n       : in std_logic;
53             pos_x       : in std_logic_vector (8 downto 0);
54             pos_y       : in std_logic_vector (8 downto 0);
55             nes_r       : in std_logic_vector (3 downto 0);
56             nes_g       : in std_logic_vector (3 downto 0);
57             nes_b       : in std_logic_vector (3 downto 0);
58             h_sync_n    : out std_logic;
59             v_sync_n    : out std_logic;
60             r           : out std_logic_vector(3 downto 0);
61             g           : out std_logic_vector(3 downto 0);
62             b           : out std_logic_vector(3 downto 0)
63     );
64 end component;
65
66 signal pos_x       : std_logic_vector (8 downto 0);
67 signal pos_y       : std_logic_vector (8 downto 0);
68 signal nes_r       : std_logic_vector (3 downto 0);
69 signal nes_g       : std_logic_vector (3 downto 0);
70 signal nes_b       : std_logic_vector (3 downto 0);
71
72 signal plt_bus_ce_n : std_logic;
73 signal plt_r_nw    : std_logic;
74 signal plt_addr    : std_logic_vector (4 downto 0);
75 signal plt_data    : std_logic_vector (5 downto 0);
76
77 begin
78
79
80     ---TODO: for the time being...
81     plt_bus_ce_n <= 'Z';
82     plt_r_nw <= 'Z';
83     plt_addr <= (others => 'Z');
84     plt_data <= (others => 'Z');
85
86     render_inst : ppu_render port map (clk, rst_n, vblank_n, 
87             rd_n, wr_n, ale, vram_ad, vram_a,
88             plt_bus_ce_n, plt_r_nw, plt_addr, plt_data,
89             pos_x, pos_y, nes_r, nes_g, nes_b);
90
91     vga_inst : vga_ctl port map (clk, vga_clk, rst_n, 
92             pos_x, pos_y, nes_r, nes_g, nes_b,
93             h_sync_n, v_sync_n, r, g, b);
94 end rtl;
95