OSDN Git Service

6f7f383207f1949290437014dd9940ad8f496de8
[motonesfpga/motonesfpga.git] / de1_nes / de1_nes.vhd
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.std_logic_unsigned.conv_integer;
4
5 --  
6 --   MOTO NES FPGA On GHDL Simulation Environment Virtual Cuicuit Board
7 --   All of the components are assembled and instanciated on this board.
8 --  
9
10 entity de1_nes is 
11     port (
12 --debug signal
13     signal dbg_cpu_clk  : out std_logic;
14     signal dbg_ppu_clk  : out std_logic;
15     signal dbg_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_vram_ad  : out std_logic_vector (7 downto 0);
20     signal dbg_vram_a   : out std_logic_vector (13 downto 8);
21 ---monitor inside cpu
22     signal dbg_instruction  : out std_logic_vector(7 downto 0);
23     signal dbg_int_d_bus    : out std_logic_vector(7 downto 0);
24     signal dbg_exec_cycle   : out std_logic_vector (5 downto 0);\r
25     \r
26     signal dbg_ea_carry     : out std_logic;\r
27     signal dbg_wait_a58_branch_next     : out std_logic;\r
28     
29 --    signal dbg_index_bus    : out std_logic_vector(7 downto 0);
30 --    signal dbg_acc_bus      : out std_logic_vector(7 downto 0);
31     signal dbg_status       : out std_logic_vector(7 downto 0);
32 --    signal dbg_pcl, dbg_pch : out std_logic_vector(7 downto 0);\r
33     signal dbg_sp, dbg_x, dbg_y, dbg_acc       : out std_logic_vector(7 downto 0);
34     signal dbg_dec_oe_n    : out std_logic;
35     signal dbg_dec_val     : out std_logic_vector (7 downto 0);
36     signal dbg_int_dbus    : out std_logic_vector (7 downto 0);
37 --    signal dbg_status_val    : out std_logic_vector (7 downto 0);
38 --    signal dbg_stat_we_n    : out std_logic;
39 --    signal dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w    : out std_logic_vector (7 downto 0);\r
40 \r
41     signal dbg_ppu_ce_n    : out std_logic;\r
42     signal dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status : out std_logic_vector (7 downto 0);\r
43     signal dbg_ppu_addr : out std_logic_vector (13 downto 0);\r
44     signal dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y : out std_logic_vector (7 downto 0);\r
45 \r
46 --    signal dbg_disp_nt, dbg_disp_attr : out std_logic_vector (7 downto 0);\r
47 --    signal dbg_disp_ptn_h, dbg_disp_ptn_l : out std_logic_vector (15 downto 0);\r
48     signal dbg_ppu_addr_we_n    : out std_logic;\r
49     signal dbg_ppu_clk_cnt          : out std_logic_vector(1 downto 0);\r
50     \r
51     \r
52     \r
53 --NES instance
54         base_clk        : in std_logic;
55         rst_n           : in std_logic;
56         joypad1     : in std_logic_vector(7 downto 0);
57         joypad2     : in std_logic_vector(7 downto 0);
58         vga_clk     : out std_logic;
59         h_sync_n    : out std_logic;
60         v_sync_n    : out std_logic;
61         r           : out std_logic_vector(3 downto 0);
62         g           : out std_logic_vector(3 downto 0);
63         b           : out std_logic_vector(3 downto 0);\r
64         
65         --SDRAM Signals\r
66                 dram_addr       :       out std_logic_vector (11 downto 0);             --Address (12 bit)\r
67                 dram_bank       :       out std_logic_vector (1 downto 0);              --Bank\r
68                 dram_cas_n      :       out std_logic;                                                  --Column Address is being transmitted\r
69                 dram_cke        :       out std_logic;                                                  --Clock Enable\r
70                 dram_clk        :       out std_logic;                                                  --Clock\r
71                 dram_cs_n       :       out std_logic;                                                  --Chip Select (Here - Mask commands)\r
72                 dram_dq         :       inout std_logic_vector (15 downto 0);   --Data in / Data out\r
73                 dram_ldqm       :       out std_logic;                                                  --Byte masking\r
74                 dram_udqm       :       out std_logic;                                                  --Byte masking\r
75                 dram_ras_n      :       out std_logic;                                                  --Row Address is being transmitted\r
76                 dram_we_n       :       out std_logic                                                   --Write Enable\r
77          );
78 end de1_nes;
79
80 architecture rtl of de1_nes is
81     component mos6502
82         generic (   dsize : integer := 8;
83                     asize : integer :=16
84                 );
85         port (  
86     signal dbg_instruction  : out std_logic_vector(7 downto 0);
87     signal dbg_int_d_bus  : out std_logic_vector(7 downto 0);
88     signal dbg_exec_cycle      : out std_logic_vector (5 downto 0);
89     signal dbg_ea_carry     : out std_logic;\r
90     signal dbg_wait_a58_branch_next     : out std_logic;\r
91 --    signal dbg_index_bus    : out std_logic_vector(7 downto 0);
92 --    signal dbg_acc_bus      : out std_logic_vector(7 downto 0);
93     signal dbg_status       : out std_logic_vector(7 downto 0);
94     signal dbg_pcl, dbg_pch, dbg_sp, dbg_x, dbg_y, dbg_acc       : out std_logic_vector(7 downto 0);
95     signal dbg_dec_oe_n    : out std_logic;
96     signal dbg_dec_val     : out std_logic_vector (7 downto 0);
97     signal dbg_int_dbus    : out std_logic_vector (7 downto 0);
98 --    signal dbg_status_val    : out std_logic_vector (7 downto 0);
99     signal dbg_stat_we_n    : out std_logic;
100     signal dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w    : out std_logic_vector (7 downto 0);\r
101     
102                 input_clk   : in std_logic; --phi0 input pin.
103                 rdy         : in std_logic;
104                 rst_n       : in std_logic;
105                 irq_n       : in std_logic;
106                 nmi_n       : in std_logic;
107                 dbe         : in std_logic;
108                 r_nw        : out std_logic;
109                 phi1        : out std_logic;
110                 phi2        : out std_logic;
111                 addr        : out std_logic_vector ( asize - 1 downto 0);
112                 d_io        : inout std_logic_vector ( dsize - 1 downto 0)
113         );
114     end component;
115
116     component clock_divider
117         port (  base_clk    : in std_logic;
118                 reset_n     : in std_logic;
119                 cpu_clk     : out std_logic;
120                 ppu_clk     : out std_logic;
121                 mem_clk     : out std_logic;
122                 vga_clk     : out std_logic
123             );
124     end component;
125
126     component address_decoder
127     generic (abus_size : integer := 16; dbus_size : integer := 8);
128         port (  phi2        : in std_logic;
129                 mem_clk     : in std_logic;
130                 R_nW        : in std_logic; 
131                 addr        : in std_logic_vector (abus_size - 1 downto 0);
132                 d_io        : in std_logic_vector (dbus_size - 1 downto 0);
133                 rom_ce_n    : out std_logic;
134                 ram_ce_n    : out std_logic;
135                 ppu_ce_n    : out std_logic;
136                 apu_ce_n    : out std_logic
137     );
138     end component;
139
140     component ram
141         generic (abus_size : integer := 16; dbus_size : integer := 8);
142         port (  
143                 clk               : in std_logic;
144                 ce_n, oe_n, we_n  : in std_logic;   --select pin active low.
145                 addr              : in std_logic_vector (abus_size - 1 downto 0);
146                 d_io              : inout std_logic_vector (dbus_size - 1 downto 0)
147         );
148     end component;
149
150     component prg_rom
151         generic (abus_size : integer := 15; dbus_size : integer := 8);
152         port (
153                 clk             : in std_logic;
154                 ce_n            : in std_logic;     --active low.
155                 addr            : in std_logic_vector (abus_size - 1 downto 0);
156                 data            : out std_logic_vector (dbus_size - 1 downto 0)
157         );
158     end component;
159
160     component ppu
161     port (  \r
162     signal dbg_ppu_ce_n    : out std_logic;\r
163     signal dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status : out std_logic_vector (7 downto 0);\r
164     signal dbg_ppu_addr : out std_logic_vector (13 downto 0);\r
165     signal dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y : out std_logic_vector (7 downto 0);\r
166     signal dbg_disp_nt, dbg_disp_attr : out std_logic_vector (7 downto 0);\r
167     signal dbg_disp_ptn_h, dbg_disp_ptn_l : out std_logic_vector (15 downto 0);\r
168     signal dbg_ppu_addr_we_n    : out std_logic;\r
169     signal dbg_ppu_clk_cnt          : out std_logic_vector(1 downto 0);\r
170     \r
171             clk         : in std_logic;
172             mem_clk     : in std_logic;
173             sdram_clk   : in std_logic;\r
174             ce_n        : in std_logic;
175             rst_n       : in std_logic;
176             r_nw        : in std_logic;
177             cpu_addr    : in std_logic_vector (2 downto 0);
178             cpu_d       : inout std_logic_vector (7 downto 0);
179             vblank_n    : out std_logic;
180             rd_n        : out std_logic;
181             wr_n        : out std_logic;
182             ale         : out std_logic;
183             vram_ad     : inout std_logic_vector (7 downto 0);
184             vram_a      : out std_logic_vector (13 downto 8);
185             vga_clk     : in std_logic;
186             h_sync_n    : out std_logic;
187             v_sync_n    : out std_logic;
188             r           : out std_logic_vector(3 downto 0);
189             g           : out std_logic_vector(3 downto 0);
190             b           : out std_logic_vector(3 downto 0);
191             --SDRAM Signals\r
192             wbs_adr_i   :       out std_logic_vector (21 downto 0);             --Address (Bank, Row, Col)\r
193             wbs_dat_i   :       out std_logic_vector (15 downto 0);             --Data In (16 bits)\r
194             wbs_we_i    :       out std_logic;                                                  --Write Enable\r
195             wbs_tga_i   :       out std_logic_vector (7 downto 0);              --Address Tag : Read/write burst length-1 (0 represents 1 word, FF represents 256 words)\r
196             wbs_cyc_i   :       out std_logic;                                                  --Cycle Command from interface\r
197             wbs_stb_i   :       out std_logic;                                                  --Strobe Command from interface\r
198             wbs_dat_o   :       in std_logic_vector (15 downto 0);              --Data Out (16 bits)\r
199             wbs_stall_o :       in std_logic;                                                   --Slave is not ready to receive new data\r
200             wbs_err_o   :       in std_logic;                                                   --Error flag: OOR Burst. Burst length is greater that 256-column address\r
201             wbs_ack_o   :       in std_logic                                                    --When Read Burst: DATA bus must be valid in this cycle\r
202     );
203     end component;
204
205     component v_address_decoder
206     generic (abus_size : integer := 14; dbus_size : integer := 8);
207         port (  clk         : in std_logic; 
208                 mem_clk     : in std_logic;
209                 rd_n        : in std_logic;
210                 wr_n        : in std_logic;
211                 ale         : in std_logic;
212                 v_addr      : in std_logic_vector (13 downto 0);
213                 v_data      : in std_logic_vector (7 downto 0);
214                 nt_v_mirror : in std_logic;
215                 pt_ce_n     : out std_logic;
216                 nt0_ce_n    : out std_logic;
217                 nt1_ce_n    : out std_logic
218             );
219     end component;
220
221     component chr_rom
222         generic (abus_size : integer := 13; dbus_size : integer := 8);
223         port (  
224                 clk             : in std_logic;
225                 ce_n            : in std_logic;     --active low.
226                 addr            : in std_logic_vector (abus_size - 1 downto 0);
227                 data            : out std_logic_vector (dbus_size - 1 downto 0);
228                 nt_v_mirror     : out std_logic
229         );
230     end component;
231
232     component ls373
233         generic (
234             dsize : integer := 8
235         );
236         port (  c         : in std_logic;
237                 oc_n      : in std_logic;
238                 d         : in std_logic_vector(dsize - 1 downto 0);
239                 q         : out std_logic_vector(dsize - 1 downto 0)
240         );
241     end component;
242
243     component apu
244         port (  clk         : in std_logic;
245                 ce_n        : in std_logic;
246                 rst_n       : in std_logic;
247                 r_nw        : inout std_logic;
248                 cpu_addr    : inout std_logic_vector (15 downto 0);
249                 cpu_d       : inout std_logic_vector (7 downto 0);
250                 rdy         : out std_logic
251         );
252     end component;
253 \r
254     component pll_clk_gen\r
255         PORT\r
256         (\r
257             inclk0              : IN STD_LOGIC  := '0';\r
258             c0              : OUT STD_LOGIC ;\r
259             locked              : OUT STD_LOGIC \r
260         );\r
261     end component;\r
262 \r
263     component sdram_controller\r
264       generic\r
265            (\r
266             reset_polarity_g    :       std_logic       := '0' --When rst = reset_polarity_g, system is in RESET mode\r
267             );\r
268       port (\r
269             --Clocks and Reset \r
270             clk_i               :       in std_logic;   --Wishbone input clock\r
271             rst                 :       in std_logic;   --Reset\r
272             pll_locked  :       in std_logic;   --PLL Locked indication, for CKE (Clock Enable) signal to SDRAM\r
273             \r
274             --SDRAM Signals\r
275             dram_addr   :       out std_logic_vector (11 downto 0);             --Address (12 bit)\r
276             dram_bank   :       out std_logic_vector (1 downto 0);              --Bank\r
277             dram_cas_n  :       out std_logic;                                                  --Column Address is being transmitted\r
278             dram_cke    :       out std_logic;                                                  --Clock Enable\r
279             dram_cs_n   :       out std_logic;                                                  --Chip Select (Here - Mask commands)\r
280             dram_dq             :       inout std_logic_vector (15 downto 0);   --Data in / Data out\r
281             dram_ldqm   :       out std_logic;                                                  --Byte masking\r
282             dram_udqm   :       out std_logic;                                                  --Byte masking\r
283             dram_ras_n  :       out std_logic;                                                  --Row Address is being transmitted\r
284             dram_we_n   :       out std_logic;                                                  --Write Enable\r
285        \r
286             -- Wishbone Slave signals to Read/Write interface\r
287             wbs_adr_i   :       in std_logic_vector (21 downto 0);              --Address (Bank, Row, Col)\r
288             wbs_dat_i   :       in std_logic_vector (15 downto 0);              --Data In (16 bits)\r
289             wbs_we_i    :       in std_logic;                                                   --Write Enable\r
290             wbs_tga_i   :       in std_logic_vector (7 downto 0);               --Address Tag : Read/write burst length-1 (0 represents 1 word, FF represents 256 words)\r
291             wbs_cyc_i   :       in std_logic;                                                   --Cycle Command from interface\r
292             wbs_stb_i   :       in std_logic;                                                   --Strobe Command from interface\r
293             wbs_dat_o   :       out std_logic_vector (15 downto 0);             --Data Out (16 bits)\r
294             wbs_stall_o :       out std_logic;                                                  --Slave is not ready to receive new data\r
295             wbs_err_o   :       out std_logic;                                                  --Error flag: OOR Burst. Burst length is greater that 256-column address\r
296             wbs_ack_o   :       out std_logic;                                                  --When Read Burst: DATA bus must be valid in this cycle\r
297                                                                     --When Write Burst: Data has been read from SDRAM and is valid\r
298 \r
299             --Debug signals\r
300             cmd_ack             :       out std_logic;                                                  --Command has been acknowledged\r
301             cmd_done    :       out std_logic;                                                  --Command has finished (read/write)\r
302             init_st_o   :       out std_logic_vector (3 downto 0);              --Current init state\r
303             main_st_o   :       out std_logic_vector (3 downto 0)               --Current main state\r
304        ); \r
305     end component;\r
306
307     constant data_size : integer := 8;
308     constant addr_size : integer := 16;
309     constant vram_size14    : integer := 14;
310
311     constant ram_2k : integer := 11;      --2k = 11 bit width.
312     constant rom_32k : integer := 15;     --32k = 15 bit width.
313     constant rom_4k : integer := 12;     --4k = 12 bit width. (for test use)
314     constant vram_1k : integer := 10;      --1k = 10 bit width.
315     constant chr_rom_8k : integer := 13;     --32k = 15 bit width.
316
317     signal cpu_clk  : std_logic;
318     signal ppu_clk  : std_logic;
319     signal mem_clk  : std_logic;
320     signal vga_out_clk   : std_logic;
321     signal sdram_clk : std_logic;\r
322     signal sdram_clk_locked : std_logic;\r
323
324     signal rdy, irq_n, nmi_n, dbe, r_nw : std_logic;
325     signal phi1, phi2 : std_logic;
326     signal addr : std_logic_vector( addr_size - 1 downto 0);
327     signal d_io : std_logic_vector( data_size - 1 downto 0);
328
329     signal rom_ce_n : std_logic;
330     signal ram_ce_n : std_logic;
331     signal ram_oe_n : std_logic;
332     signal ppu_ce_n : std_logic;
333     signal apu_ce_n : std_logic;
334
335     signal rd_n     : std_logic;
336     signal wr_n     : std_logic;
337     signal ale      : std_logic;
338     signal vram_ad  : std_logic_vector (7 downto 0);
339     signal vram_a   : std_logic_vector (13 downto 8);
340     signal v_addr   : std_logic_vector (13 downto 0);
341     signal nt_v_mirror  : std_logic;
342     signal pt_ce_n  : std_logic;
343     signal nt0_ce_n : std_logic;
344     signal nt1_ce_n : std_logic;
345
346     -- SDRAM signals to Read/Write interface\r
347     signal wbs_adr_i    :       std_logic_vector (21 downto 0);         --Address (Bank, Row, Col)\r
348     signal wbs_dat_i    :       std_logic_vector (15 downto 0);         --Data In (16 bits)\r
349     signal wbs_we_i         :   std_logic;                                                      --Write Enable\r
350     signal wbs_tga_i    :       std_logic_vector (7 downto 0);          --Address Tag : Read/write burst length-1 (0 represents 1 word, FF represents 256 words)\r
351     signal wbs_cyc_i    :       std_logic;                                                      --Cycle Command from interface\r
352     signal wbs_stb_i    :       std_logic;                                                      --Strobe Command from interface\r
353     signal wbs_dat_o    :       std_logic_vector (15 downto 0);         --Data Out (16 bits)\r
354     signal wbs_stall_o  :       std_logic;                                                      --Slave is not ready to receive new data\r
355     signal wbs_err_o    :       std_logic;                                                      --Error flag: OOR Burst. Burst length is greater that 256-column address\r
356     signal wbs_ack_o    :       std_logic;                                                      --When Read Burst: DATA bus must be valid in this cycle\r
357                                                                 --When Write Burst: Data has been read from SDRAM and is valid\r
358     --Debug signals\r
359     signal cmd_ack              :       std_logic;                                                      --Command has been acknowledged\r
360     signal cmd_done         :   std_logic;                                                      --Command has finished (read/write)\r
361     signal init_st_o    :       std_logic_vector (3 downto 0);          --Current init state\r
362     signal main_st_o    :       std_logic_vector (3 downto 0);          --Current main state\r
363 \r
364     signal dbg_disp_nt, dbg_disp_attr : std_logic_vector (7 downto 0);\r
365     signal dbg_disp_ptn_h, dbg_disp_ptn_l : std_logic_vector (15 downto 0);\r
366     signal dbg_pcl, dbg_pch : std_logic_vector(7 downto 0);\r
367     signal dbg_stat_we_n    : std_logic;\r
368     signal dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w    : std_logic_vector (7 downto 0);\r
369
370 begin
371
372     irq_n <= '0';
373     vga_clk <= vga_out_clk;
374
375     --ppu/cpu clock generator
376     clock_inst : clock_divider port map 
377         (base_clk, rst_n, cpu_clk, ppu_clk, mem_clk, vga_out_clk);
378
379     --mos 6502 cpu instance
380     cpu_inst : mos6502 generic map (data_size, addr_size) 
381         port map (
382     dbg_instruction,
383     dbg_int_d_bus,
384     dbg_exec_cycle,
385     dbg_ea_carry,\r
386     dbg_wait_a58_branch_next,\r
387  --   dbg_index_bus,
388  --   dbg_acc_bus,
389     dbg_status,
390     dbg_pcl, dbg_pch, dbg_sp, dbg_x, dbg_y, dbg_acc,
391     dbg_dec_oe_n,
392     dbg_dec_val,
393     dbg_int_dbus,
394 --    dbg_status_val    ,
395     dbg_stat_we_n    ,
396     dbg_idl_h, dbg_idl_l, dbg_dbb_r, dbg_dbb_w,\r
397
398                 cpu_clk, '1', --rdy, -----for testing...
399                 rst_n, irq_n, nmi_n, dbe, r_nw, 
400                 phi1, phi2, addr, d_io);
401
402     addr_dec_inst : address_decoder generic map (addr_size, data_size) 
403         port map (phi2, mem_clk, r_nw, addr, d_io, rom_ce_n, ram_ce_n, ppu_ce_n, apu_ce_n);
404
405     --main ROM/RAM instance
406 --    prg_rom_inst : prg_rom generic map (rom_32k, data_size)
407 --            port map (mem_clk, rom_ce_n, addr(rom_32k - 1 downto 0), d_io);
408     prg_rom_inst : prg_rom generic map (rom_4k, data_size)
409             port map (mem_clk, rom_ce_n, addr(rom_4k - 1 downto 0), d_io);
410
411     ram_oe_n <= not R_nW;
412     prg_ram_inst : ram generic map (ram_2k, data_size)
413             port map (mem_clk, ram_ce_n, ram_oe_n, R_nW, addr(ram_2k - 1 downto 0), d_io);
414
415     --nes ppu instance
416     ppu_inst : ppu 
417         port map (\r
418             dbg_ppu_ce_n    ,\r
419             dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status, dbg_ppu_addr, \r
420             dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y,\r
421             dbg_disp_nt, dbg_disp_attr, dbg_disp_ptn_h, dbg_disp_ptn_l ,\r
422             dbg_ppu_addr_we_n    ,\r
423             dbg_ppu_clk_cnt          ,\r
424                 \r
425                 ppu_clk, mem_clk, sdram_clk, ppu_ce_n, rst_n, r_nw, addr(2 downto 0), d_io, 
426                 nmi_n, rd_n, wr_n, ale, vram_ad, vram_a,
427                 vga_out_clk, h_sync_n, v_sync_n, r, g, b,\r
428                 --SDRAM Signals\r
429                 wbs_adr_i       ,\r
430                 wbs_dat_i       ,\r
431                 wbs_we_i        ,\r
432                 wbs_tga_i       ,\r
433                 wbs_cyc_i       ,\r
434                 wbs_stb_i       ,\r
435                 wbs_dat_o       ,\r
436                 wbs_stall_o     ,\r
437                 wbs_err_o       ,\r
438                 wbs_ack_o       \r
439                 );
440
441     ppu_addr_decoder : v_address_decoder generic map (vram_size14, data_size) 
442         port map (ppu_clk, mem_clk, rd_n, wr_n, ale, v_addr, vram_ad, 
443                 nt_v_mirror, pt_ce_n, nt0_ce_n, nt1_ce_n);
444
445     ---VRAM/CHR ROM instances
446     v_addr (13 downto 8) <= vram_a;
447
448     --transparent d-latch
449     vram_latch : ls373 generic map (data_size)
450                 port map(ale, '0', vram_ad, v_addr(7 downto 0));
451
452     vchr_rom : chr_rom generic map (chr_rom_8k, data_size)
453             port map (mem_clk, pt_ce_n, v_addr(chr_rom_8k - 1 downto 0), vram_ad, nt_v_mirror);
454
455     --name table/attr table
456     vram_nt0 : ram generic map (vram_1k, data_size)
457             port map (mem_clk, nt0_ce_n, rd_n, wr_n, v_addr(vram_1k - 1 downto 0), vram_ad);
458
459     vram_nt1 : ram generic map (vram_1k, data_size)
460             port map (mem_clk, nt1_ce_n, rd_n, wr_n, v_addr(vram_1k - 1 downto 0), vram_ad);
461
462 --    --APU/DMA instance
463 --    apu_inst : apu
464 --        port map (cpu_clk, apu_ce_n, rst_n, r_nw, addr, d_io, rdy);
465 \r
466     pll_inst : pll_clk_gen\r
467         PORT map (   base_clk, sdram_clk, sdram_clk_locked );\r
468 \r
469     dram_clk <= sdram_clk;\r
470     sdram_ctl_inst : sdram_controller\r
471     port map (\r
472         --Clocks and Reset \r
473                 sdram_clk, \r
474         rst_n, \r
475         sdram_clk_locked,\r
476         \r
477         --SDRAM Signals\r
478         dram_addr       ,\r
479         dram_bank       ,\r
480         dram_cas_n      ,\r
481         dram_cke        ,\r
482         dram_cs_n       ,\r
483         dram_dq         ,\r
484         dram_ldqm       ,\r
485         dram_udqm       ,\r
486         dram_ras_n      ,\r
487         dram_we_n       ,\r
488            \r
489         -- Wishbone Slave signals to Read/Write interface\r
490         wbs_adr_i       ,\r
491         wbs_dat_i       ,\r
492         wbs_we_i        ,\r
493         wbs_tga_i       ,\r
494         wbs_cyc_i       ,\r
495         wbs_stb_i       ,\r
496         wbs_dat_o       ,\r
497         wbs_stall_o     ,\r
498         wbs_err_o       ,\r
499         wbs_ack_o       ,\r
500 \r
501         --Debug signals\r
502         cmd_ack         ,\r
503         cmd_done        ,\r
504         init_st_o       ,\r
505         main_st_o       \r
506     ); \r
507
508     dbg_cpu_clk <= cpu_clk;
509     dbg_ppu_clk <= ppu_clk;
510     dbg_mem_clk <= mem_clk;
511     dbg_r_nw <= r_nw;
512     dbg_addr <= addr;
513     dbg_d_io <= d_io;
514     dbg_vram_ad  <= vram_ad ;
515     dbg_vram_a   <= vram_a  ;
516
517
518 end rtl;
519