OSDN Git Service

vga edge reset adjustment
[motonesfpga/motonesfpga.git] / tools / qt_proj_test5 / qt_proj_test5.vhd
1 library ieee;\r
2 use ieee.std_logic_1164.all;\r
3 use ieee.std_logic_unsigned.conv_integer;\r
4 \r
5 --  \r
6 --   MOTO NES FPGA On GHDL Simulation Environment Virtual Cuicuit Board\r
7 --   All of the components are assembled and instanciated on this board.\r
8 --  \r
9 \r
10 entity qt_proj_test5 is \r
11     port (\r
12 \r
13     signal dbg_cpu_clk  : out std_logic;\r
14     signal dbg_ppu_clk  : out std_logic;\r
15     signal dbg_addr : out std_logic_vector( 16 - 1 downto 0);\r
16     signal dbg_d_io : out std_logic_vector( 8 - 1 downto 0);\r
17 \r
18     signal dbg_ppu_ce_n    : out std_logic;\r
19     signal dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status : out std_logic_vector (7 downto 0);\r
20     signal dbg_ppu_addr : out std_logic_vector (13 downto 0);\r
21     signal dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y : out std_logic_vector (7 downto 0);\r
22     signal dbg_disp_nt, dbg_disp_attr : out std_logic_vector (7 downto 0);\r
23     signal dbg_disp_ptn_h, dbg_disp_ptn_l : out std_logic_vector (15 downto 0);\r
24 \r
25     signal dbg_ppu_addr_we_n    : out std_logic;\r
26     signal dbg_ppu_clk_cnt          : out std_logic_vector(1 downto 0);\r
27 \r
28 \r
29 \r
30         base_clk        : in std_logic;\r
31         base_clk_27mhz  : in std_logic;\r
32         rst_n           : in std_logic;\r
33         h_sync_n    : out std_logic;\r
34         v_sync_n    : out std_logic;\r
35         r           : out std_logic_vector(3 downto 0);\r
36         g           : out std_logic_vector(3 downto 0);\r
37         b           : out std_logic_vector(3 downto 0)\r
38 \r
39         );\r
40 end qt_proj_test5;\r
41 \r
42 architecture rtl of qt_proj_test5 is\r
43 \r
44     component clock_divider\r
45         port (  base_clk    : in std_logic;\r
46                 reset_n     : in std_logic;\r
47                 cpu_clk     : out std_logic;\r
48                 ppu_clk     : out std_logic;\r
49                 mem_clk     : out std_logic;\r
50                 vga_clk     : out std_logic\r
51             );\r
52     end component;\r
53 \r
54     component ram\r
55         generic (abus_size : integer := 16; dbus_size : integer := 8);\r
56         port (  \r
57                 clk               : in std_logic;\r
58                 ce_n, oe_n, we_n  : in std_logic;   --select pin active low.\r
59                 addr              : in std_logic_vector (abus_size - 1 downto 0);\r
60                 d_io              : inout std_logic_vector (dbus_size - 1 downto 0)\r
61         );\r
62     end component;\r
63 \r
64     component ppu port (\r
65         signal dbg_ppu_ce_n    : out std_logic;\r
66         signal dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status : out std_logic_vector (7 downto 0);\r
67         signal dbg_ppu_addr : out std_logic_vector (13 downto 0);\r
68         signal dbg_ppu_data, dbg_ppu_scrl_x, dbg_ppu_scrl_y : out std_logic_vector (7 downto 0);\r
69 \r
70         signal dbg_ppu_clk                      : out std_logic;\r
71         signal dbg_nes_x                        : out std_logic_vector (8 downto 0);\r
72         signal dbg_vga_x                        : out std_logic_vector (9 downto 0);\r
73         signal dbg_disp_nt, dbg_disp_attr       : out std_logic_vector (7 downto 0);\r
74         signal dbg_disp_ptn_h, dbg_disp_ptn_l   : out std_logic_vector (15 downto 0);\r
75         signal dbg_plt_addr                     : out std_logic_vector (4 downto 0);\r
76         signal dbg_plt_data                     : out std_logic_vector (7 downto 0);\r
77 \r
78         signal dbg_ppu_addr_we_n                : out std_logic;\r
79         signal dbg_ppu_clk_cnt                  : out std_logic_vector(1 downto 0);\r
80 \r
81                 clk         : in std_logic;\r
82                 mem_clk     : in std_logic;\r
83                 ce_n        : in std_logic;\r
84                 rst_n       : in std_logic;\r
85                 r_nw        : in std_logic;\r
86                 cpu_addr    : in std_logic_vector (2 downto 0);\r
87                 cpu_d       : inout std_logic_vector (7 downto 0);\r
88 \r
89                 vblank_n    : out std_logic;\r
90                 rd_n        : out std_logic;\r
91                 wr_n        : out std_logic;\r
92                 ale         : out std_logic;\r
93                 vram_ad     : inout std_logic_vector (7 downto 0);\r
94                 vram_a      : out std_logic_vector (13 downto 8);\r
95 \r
96                 vga_clk     : in std_logic;\r
97                 h_sync_n    : out std_logic;\r
98                 v_sync_n    : out std_logic;\r
99                 r           : out std_logic_vector(3 downto 0);\r
100                 g           : out std_logic_vector(3 downto 0);\r
101                 b           : out std_logic_vector(3 downto 0)\r
102     );\r
103     end component;\r
104 \r
105     component v_address_decoder\r
106     generic (abus_size : integer := 14; dbus_size : integer := 8);\r
107         port (  clk         : in std_logic; \r
108                 mem_clk     : in std_logic;\r
109                 rd_n        : in std_logic;\r
110                 wr_n        : in std_logic;\r
111                 ale         : in std_logic;\r
112                 v_addr      : in std_logic_vector (13 downto 0);\r
113                 v_data      : in std_logic_vector (7 downto 0);\r
114                 nt_v_mirror : in std_logic;\r
115                 pt_ce_n     : out std_logic;\r
116                 nt0_ce_n    : out std_logic;\r
117                 nt1_ce_n    : out std_logic\r
118             );\r
119     end component;\r
120 \r
121     component chr_rom\r
122         generic (abus_size : integer := 13; dbus_size : integer := 8);\r
123         port (  \r
124                 clk             : in std_logic;\r
125                 ce_n            : in std_logic;     --active low.\r
126                 addr            : in std_logic_vector (abus_size - 1 downto 0);\r
127                 data            : out std_logic_vector (dbus_size - 1 downto 0);\r
128                 nt_v_mirror     : out std_logic\r
129         );\r
130     end component;\r
131 \r
132     component ls373\r
133         generic (\r
134             dsize : integer := 8\r
135         );\r
136         port (  c         : in std_logic;\r
137                 we_n      : in std_logic;\r
138                 oc_n      : in std_logic;\r
139                 d         : in std_logic_vector(dsize - 1 downto 0);\r
140                 q         : out std_logic_vector(dsize - 1 downto 0)\r
141         );\r
142     end component;\r
143 \r
144     \r
145     \r
146     constant data_size : integer := 8;\r
147     constant addr_size : integer := 16;\r
148     constant vram_size14    : integer := 14;\r
149 \r
150     constant ram_2k : integer := 11;      --2k = 11 bit width.\r
151     constant rom_32k : integer := 15;     --32k = 15 bit width.\r
152     constant rom_4k : integer := 12;     --4k = 12 bit width. (for test use)\r
153     constant vram_1k : integer := 10;      --1k = 10 bit width.\r
154     constant chr_rom_8k : integer := 13;     --32k = 15 bit width.\r
155 \r
156     signal cpu_clk  : std_logic;\r
157     signal ppu_clk  : std_logic;\r
158     signal mem_clk   : std_logic;\r
159     signal vga_clk   : std_logic;\r
160 \r
161     signal ppu_ce_n    : std_logic;\r
162     signal r_nw        : std_logic;\r
163     signal cpu_addr    : std_logic_vector (2 downto 0);\r
164     signal cpu_d       : std_logic_vector (7 downto 0);\r
165     signal vblank_n    : std_logic;\r
166     signal rd_n        : std_logic;\r
167     signal wr_n        : std_logic;\r
168     signal ale         : std_logic;\r
169     signal vram_ad     : std_logic_vector (7 downto 0);\r
170     signal vram_a      : std_logic_vector (13 downto 8);\r
171     signal v_addr   : std_logic_vector (13 downto 0);\r
172     signal nt_v_mirror  : std_logic;\r
173     signal pt_ce_n  : std_logic;\r
174     signal nt0_ce_n : std_logic;\r
175     signal nt1_ce_n : std_logic;\r
176 \r
177     signal ale_n       : std_logic;\r
178     signal vga_clk_n   : std_logic;\r
179         \r
180     signal dbg_ppu_addr_dummy               : std_logic_vector (13 downto 0);\r
181     signal dbg_nes_x                        : std_logic_vector (8 downto 0);\r
182     signal dbg_vga_x                        : std_logic_vector (9 downto 0);\r
183     signal dbg_plt_addr                     : std_logic_vector (4 downto 0);\r
184     signal dbg_plt_data                     : std_logic_vector (7 downto 0);\r
185     signal dbg_ppu_data_dummy               : std_logic_vector (7 downto 0);\r
186     signal dbg_ppu_status_dummy             : std_logic_vector (7 downto 0);\r
187     signal dbg_ppu_scrl_x_dummy             : std_logic_vector (7 downto 0);\r
188     \r
189     \r
190 \r
191 begin\r
192     --ppu/cpu clock generator\r
193     clock_inst : clock_divider port map \r
194         (base_clk, rst_n, cpu_clk, ppu_clk, mem_clk, vga_clk);\r
195 \r
196     dbg_cpu_clk <= vga_clk;\r
197     dbg_ppu_addr <= "00000" & dbg_nes_x;\r
198     dbg_d_io <= "000" & dbg_plt_addr;\r
199     dbg_ppu_data <= dbg_plt_data;\r
200     dbg_addr <= "00" & v_addr;\r
201     dbg_ppu_status <= vram_ad;\r
202     dbg_ppu_scrl_x(0) <= ale;\r
203     dbg_ppu_scrl_x(1) <= rd_n;\r
204     dbg_ppu_scrl_x(2) <= wr_n;\r
205     dbg_ppu_scrl_x(3) <= nt0_ce_n;\r
206     dbg_ppu_scrl_x(4) <= vga_clk_n;\r
207     \r
208     ppu_inst: ppu port map (  \r
209         dbg_ppu_ce_n                                        ,\r
210         dbg_ppu_ctrl, dbg_ppu_mask, dbg_ppu_status_dummy          ,\r
211         dbg_ppu_addr_dummy                                        ,\r
212         dbg_ppu_data_dummy, dbg_ppu_scrl_x_dummy, dbg_ppu_scrl_y        ,\r
213 \r
214         dbg_ppu_clk                      ,\r
215         dbg_nes_x                        ,\r
216         dbg_vga_x                        ,\r
217         dbg_disp_nt, dbg_disp_attr                          ,\r
218         dbg_disp_ptn_h, dbg_disp_ptn_l                      ,\r
219         dbg_plt_addr                     ,\r
220         dbg_plt_data                     ,\r
221         dbg_ppu_addr_we_n                                   ,\r
222         dbg_ppu_clk_cnt                                     ,\r
223 \r
224                 ppu_clk         ,\r
225                 mem_clk     ,\r
226                 ppu_ce_n        ,\r
227                 rst_n       ,\r
228                 r_nw        ,\r
229                 cpu_addr    ,\r
230                 cpu_d       ,\r
231 \r
232                 vblank_n    ,\r
233                 rd_n        ,\r
234                 wr_n        ,\r
235                 ale         ,\r
236                 vram_ad     ,\r
237                 vram_a      ,\r
238 \r
239                 vga_clk     ,\r
240                 h_sync_n    ,\r
241                 v_sync_n    ,\r
242                 r           ,\r
243                 g           ,\r
244                 b           \r
245 \r
246         );\r
247 \r
248     ppu_addr_decoder : v_address_decoder generic map (vram_size14, data_size) \r
249         port map (ppu_clk, mem_clk, rd_n, wr_n, ale, v_addr, vram_ad, \r
250                 nt_v_mirror, pt_ce_n, nt0_ce_n, nt1_ce_n);\r
251 \r
252     ---VRAM/CHR ROM instances\r
253     v_addr (13 downto 8) <= vram_a;\r
254 \r
255     --transparent d-latch\r
256          ale_n <= not ale;\r
257          vga_clk_n <= not vga_clk;\r
258     vram_latch : ls373 generic map (data_size)\r
259                 port map(vga_clk, ale_n, ale, vram_ad, v_addr(7 downto 0));\r
260 \r
261     vchr_rom : chr_rom generic map (chr_rom_8k, data_size)\r
262             port map (mem_clk, pt_ce_n, v_addr(chr_rom_8k - 1 downto 0), vram_ad, nt_v_mirror);\r
263 \r
264     --name table/attr table\r
265     vram_nt0 : ram generic map (vram_1k, data_size)\r
266             port map (mem_clk, nt0_ce_n, rd_n, wr_n, v_addr(vram_1k - 1 downto 0), vram_ad);\r
267 \r
268     vram_nt1 : ram generic map (vram_1k, data_size)\r
269             port map (mem_clk, nt1_ce_n, rd_n, wr_n, v_addr(vram_1k - 1 downto 0), vram_ad);\r
270 \r
271     --set initial vram value...\r
272     vram_p : process (cpu_clk, rst_n)\r
273 use ieee.std_logic_arith.conv_std_logic_vector;\r
274     variable init_step_cnt, plt_step_cnt, \r
275             nt_step_cnt, enable_ppu_step_cnt : integer;\r
276     variable init_done : std_logic;\r
277     variable global_step_cnt : integer;\r
278 \r
279 procedure ppu_set (ad: in integer; dt : in integer) is\r
280 begin\r
281     r_nw <= '0';\r
282     ppu_ce_n <= '0';\r
283     cpu_addr <= conv_std_logic_vector(ad, 16)(2 downto 0);\r
284     cpu_d <= conv_std_logic_vector(dt, 8);\r
285     ale <= 'Z';\r
286 end;\r
287 procedure ppu_clr is\r
288 begin\r
289     cpu_addr <= (others => 'Z');\r
290     cpu_d <= (others => 'Z');\r
291     r_nw <= '1';\r
292     ppu_ce_n <= '1';\r
293     ale <= '0';\r
294 end;\r
295 \r
296     begin\r
297         if (rst_n = '0') then\r
298             \r
299             r_nw <= 'Z';\r
300             ppu_ce_n <= 'Z';\r
301             cpu_addr <= (others => 'Z');\r
302             cpu_d <= (others => 'Z');\r
303             \r
304             init_done := '0';\r
305             global_step_cnt := 0;\r
306             init_step_cnt := 0;\r
307             plt_step_cnt := 0;\r
308             nt_step_cnt := 0;\r
309             enable_ppu_step_cnt := 0;\r
310 \r
311         elsif (rising_edge(cpu_clk)) then\r
312             if (init_done = '0') then\r
313                 if (global_step_cnt = 0) then\r
314                     --step0.0 = init ppu.\r
315                     if (init_step_cnt = 0) then\r
316                         --PPUCTRL=00\r
317                         ppu_set(16#2000#, 16#00#);\r
318                     elsif (init_step_cnt = 2) then\r
319                         --PPUMASK=00\r
320                         ppu_set(16#2001#, 16#00#);\r
321                     else\r
322                         ppu_clr;\r
323                         if (init_step_cnt > 2) then\r
324                             global_step_cnt := global_step_cnt + 1;\r
325                         end if;\r
326                     end if;\r
327                     init_step_cnt := init_step_cnt + 1;\r
328 \r
329                 elsif (global_step_cnt = 1) then\r
330                     --step0.1 = palette set.\r
331 --palettes:\r
332 --;;;bg palette\r
333 --      .byte   $0f, $00, $10, $20\r
334 --      .byte   $0f, $04, $14, $24\r
335 --      .byte   $0f, $08, $18, $28\r
336 --      .byte   $0f, $0c, $1c, $2c\r
337 --;;;spr palette\r
338 --      .byte   $0f, $00, $10, $20\r
339 --      .byte   $0f, $06, $16, $26\r
340 --      .byte   $0f, $08, $18, $28\r
341 --      .byte   $0f, $0a, $1a, $2a\r
342                     \r
343                     \r
344                     if (plt_step_cnt = 0) then\r
345                         --set vram addr 3f00\r
346                         ppu_set(16#2006#, 16#3f#);\r
347                     elsif (plt_step_cnt = 2) then\r
348                         ppu_set(16#2006#, 16#00#);\r
349                     \r
350                     elsif (plt_step_cnt = 4) then\r
351                         --set palette data\r
352                         ppu_set(16#2007#, 16#0f#);\r
353                     elsif (plt_step_cnt = 6) then\r
354                         ppu_set(16#2007#, 16#00#);\r
355                     elsif (plt_step_cnt = 8) then\r
356                         ppu_set(16#2007#, 16#10#);\r
357                     elsif (plt_step_cnt = 10) then\r
358                         ppu_set(16#2007#, 16#20#);\r
359 \r
360                     elsif (plt_step_cnt = 12) then\r
361                         ppu_set(16#2007#, 16#0f#);\r
362                     elsif (plt_step_cnt = 14) then\r
363                         ppu_set(16#2007#, 16#04#);\r
364                     elsif (plt_step_cnt = 16) then\r
365                         ppu_set(16#2007#, 16#14#);\r
366                     elsif (plt_step_cnt = 18) then\r
367                         ppu_set(16#2007#, 16#24#);\r
368  \r
369                     elsif (plt_step_cnt = 20) then\r
370                         ppu_set(16#2007#, 16#0f#);\r
371                     elsif (plt_step_cnt = 22) then\r
372                         ppu_set(16#2007#, 16#08#);\r
373                     elsif (plt_step_cnt = 24) then\r
374                         ppu_set(16#2007#, 16#18#);\r
375                     elsif (plt_step_cnt = 26) then\r
376                         ppu_set(16#2007#, 16#28#);\r
377  \r
378                     elsif (plt_step_cnt = 28) then\r
379                         ppu_set(16#2007#, 16#0f#);\r
380                     elsif (plt_step_cnt = 30) then\r
381                         ppu_set(16#2007#, 16#0c#);\r
382                     elsif (plt_step_cnt = 32) then\r
383                         ppu_set(16#2007#, 16#1c#);\r
384                     elsif (plt_step_cnt = 34) then\r
385                         ppu_set(16#2007#, 16#2c#);\r
386  \r
387                     else\r
388                         ppu_clr;\r
389                         if (plt_step_cnt > 10) then\r
390                             global_step_cnt := global_step_cnt + 1;\r
391                         end if;\r
392                     end if;\r
393                     plt_step_cnt := plt_step_cnt + 1;\r
394                     \r
395                 elsif (global_step_cnt = 2) then\r
396                     --step1 = name table set.\r
397                     if (nt_step_cnt = 0) then\r
398                         --set vram addr 2004 (first row, 4th col)\r
399                         ppu_set(16#2006#, 16#20#);\r
400                     elsif (nt_step_cnt = 2) then\r
401                         ppu_set(16#2006#, 16#04#);\r
402                     elsif (nt_step_cnt = 4) then\r
403                         --set name tbl data\r
404                         --0x44, 45, 45 = DEE\r
405                         ppu_set(16#2007#, 16#44#);\r
406                     elsif (nt_step_cnt = 6) then\r
407                         ppu_set(16#2007#, 16#45#);\r
408                     elsif (nt_step_cnt = 8) then\r
409                         ppu_set(16#2007#, 16#45#);\r
410                     else\r
411                         ppu_clr;\r
412                         if (nt_step_cnt > 8) then\r
413                             global_step_cnt := global_step_cnt + 1;\r
414                         end if;\r
415                     end if;\r
416                     nt_step_cnt := nt_step_cnt + 1;\r
417                     \r
418                 elsif (global_step_cnt = 3) then\r
419                     --final step = enable ppu.\r
420                     if (enable_ppu_step_cnt = 0) then\r
421                         --show bg\r
422                         --PPUMASK=1e (show bg and sprite)\r
423                         --PPUMASK=0e (show bg only)\r
424                         ppu_set(16#2001#, 16#0e#);\r
425                     elsif (enable_ppu_step_cnt = 2) then\r
426                         --show enable nmi\r
427                         --PPUCTRL=80\r
428                         ppu_set(16#2000#, 16#80#);\r
429                     else\r
430                         ppu_clr;\r
431                         if (enable_ppu_step_cnt > 2) then\r
432                             global_step_cnt := global_step_cnt + 1;\r
433                         end if;\r
434                     end if;\r
435                     enable_ppu_step_cnt := enable_ppu_step_cnt + 1;\r
436 \r
437                 else\r
438                     ale <= 'Z';\r
439                     init_done := '1';\r
440                 end if;\r
441             end if;\r
442         \r
443         end if;\r
444     end process;\r
445             \r
446 --    signal addr : std_logic_vector( addr_size - 1 downto 0);\r
447 --    signal d_io : std_logic_vector( data_size - 1 downto 0);\r
448 --\r
449 --component counter_register\r
450 --    generic (\r
451 --        dsize       : integer := 8;\r
452 --        inc         : integer := 1\r
453 --    );\r
454 --    port (  clk         : in std_logic;\r
455 --            rst_n       : in std_logic;\r
456 --            ce_n        : in std_logic;\r
457 --            we_n        : in std_logic;\r
458 --            d           : in std_logic_vector(dsize - 1 downto 0);\r
459 --            q           : out std_logic_vector(dsize - 1 downto 0)\r
460 --    );\r
461 --end component;\r
462 --\r
463 --component prg_rom\r
464 --    generic (abus_size : integer := 15; dbus_size : integer := 8);\r
465 --    port (  clk             : in std_logic;\r
466 --            ce_n           : in std_logic;   --select pin active low.\r
467 --            addr            : in std_logic_vector (abus_size - 1 downto 0);\r
468 --            data            : inout std_logic_vector (dbus_size - 1 downto 0)\r
469 --        );\r
470 --end component;\r
471 --\r
472 --component processor_status \r
473 --    generic (\r
474 --            dsize : integer := 8\r
475 --            );\r
476 --    port (  \r
477 --    signal dbg_dec_oe_n    : out std_logic;\r
478 --    signal dbg_dec_val     : out std_logic_vector (dsize - 1 downto 0);\r
479 --    signal dbg_int_dbus    : out std_logic_vector (dsize - 1 downto 0);\r
480 --    signal dbg_status_val    : out std_logic_vector (7 downto 0);\r
481 --    signal dbg_stat_we_n    : out std_logic;\r
482 --    \r
483 --            clk         : in std_logic;\r
484 --            res_n       : in std_logic;\r
485 --            dec_oe_n    : in std_logic;\r
486 --            bus_oe_n    : in std_logic;\r
487 --            set_flg_n   : in std_logic;\r
488 --            flg_val     : in std_logic;\r
489 --            load_bus_all_n      : in std_logic;\r
490 --            load_bus_nz_n       : in std_logic;\r
491 --            set_from_alu_n      : in std_logic;\r
492 --            alu_n       : in std_logic;\r
493 --            alu_v       : in std_logic;\r
494 --            alu_z       : in std_logic;\r
495 --            alu_c       : in std_logic;\r
496 --            stat_c      : out std_logic;\r
497 --            dec_val     : inout std_logic_vector (dsize - 1 downto 0);\r
498 --            int_dbus    : inout std_logic_vector (dsize - 1 downto 0)\r
499 --        );\r
500 --end component;\r
501 --\r
502 --    ---status register\r
503 --    signal status_reg, int_d_bus : std_logic_vector (7 downto 0);\r
504 --    signal stat_dec_oe_n : std_logic;\r
505 --    signal stat_bus_oe_n : std_logic;\r
506 --    signal stat_set_flg_n : std_logic;\r
507 --    signal stat_flg : std_logic;\r
508 --    signal stat_bus_all_n : std_logic;\r
509 --    signal stat_bus_nz_n : std_logic;\r
510 --    signal stat_alu_we_n : std_logic;\r
511 --    signal alu_n : std_logic;\r
512 --    signal alu_z : std_logic;\r
513 --    signal alu_c : std_logic;\r
514 --    signal alu_v : std_logic;\r
515 --    signal stat_c : std_logic;\r
516 --    signal trig_clk : std_logic;\r
517 --    \r
518 --    \r
519 --    \r
520 --    component alu_test\r
521 --    port (  \r
522 --        d1    : in std_logic_vector(7 downto 0);\r
523 --        d2    : in std_logic_vector(7 downto 0);\r
524 --        d_out    : out std_logic_vector(7 downto 0);\r
525 --        carry_clr_n : in std_logic;\r
526 --        ea_carry : out std_logic\r
527 --        );\r
528 --end component;\r
529 --\r
530 --    signal d1, d2, d_out : std_logic_vector (7 downto 0);\r
531 --    signal ea_carry, gate_n    : std_logic;\r
532 --        signal carry_clr_n : std_logic;\r
533 \r
534 \r
535     \r
536     \r
537 --    trig_clk <= not cpu_clk;\r
538 --\r
539 --    pcl_inst : counter_register generic map (16) port map\r
540 --        (cpu_clk, rst_n, '0', '1', (others => '0'), addr(15 downto 0));\r
541 --\r
542 --    rom_inst : prg_rom generic map (12, 8) port map\r
543 --        (base_clk, '0', addr(11 downto 0), d_io);\r
544 --\r
545 --    dbg_addr <= addr;\r
546 --    dbg_d_io <= d_io;\r
547 --\r
548 --    dbg_cpu_clk <= cpu_clk;\r
549 --    dbg_ppu_clk <= ppu_clk;\r
550 --\r
551 --    dbg_d1 <= d1;\r
552 --    dbg_d2 <= d2;\r
553 --    dbg_d_out <= d_out;\r
554 --    dbg_ea_carry <= ea_carry;\r
555 --    dbg_carry_clr_n <= carry_clr_n;\r
556 --    dbg_gate_n <= gate_n;\r
557 --    \r
558 --    dummy_alu : alu_test\r
559 --    port map (  \r
560 --        d1, d2, d_out, carry_clr_n , ea_carry\r
561 --        );\r
562 --\r
563 --        gate_n <= not ea_carry;\r
564 --    dec_test_p : process (rst_n, ea_carry, trig_clk)\r
565 --    begin\r
566 --        if (rst_n = '0') then\r
567 --            d1 <= "00000000";\r
568 --            d2 <= "00000000";\r
569 --            carry_clr_n <= '0';\r
570 --            --gate_n <= '1';\r
571 ----        elsif (ea_carry = '1') then\r
572 ----            gate_n <= '0';\r
573 ----            carry_clr_n <= '0';\r
574 --        elsif (rising_edge(trig_clk)) then\r
575 --            if (addr(5 downto 0) = "000001") then\r
576 --            --addr=01\r
577 --                carry_clr_n <= '1';\r
578 --                d1 <= "00010011";\r
579 --                d2 <= "01000111";\r
580 --                --gate_n <= '1';\r
581 --            elsif (addr(5 downto 0) = "000010") then\r
582 --            --addr=02\r
583 --                carry_clr_n <= '1';\r
584 --                d1 <= "00110011";\r
585 --                d2 <= "11001111";\r
586 --                --gate_n <= '1';\r
587 --            elsif (addr(5 downto 0) = "000011") then\r
588 --            --addr=03\r
589 --                carry_clr_n <= '1';\r
590 --                d1 <= "00001010";\r
591 --                d2 <= "01011001";\r
592 --                --gate_n <= '1';\r
593 --            elsif (addr(5 downto 0) = "000100") then\r
594 --            --addr=04\r
595 --                carry_clr_n <= '1';\r
596 --                d1 <= "10001010";\r
597 --                d2 <= "10011001";\r
598 --                --gate_n <= '1';\r
599 --            else\r
600 --                carry_clr_n <= '1';\r
601 --                d1 <= "00000000";\r
602 --                d2 <= "00000000";\r
603 --                --gate_n <= '1';\r
604 --            end if;\r
605 --        end if;\r
606 --    end process;\r
607 --\r
608 --\r
609 --    --status register\r
610 --    status_register : processor_status generic map (8) \r
611 --            port map (\r
612 --    dbg_dec_oe_n,\r
613 --    dbg_dec_val,\r
614 --    dbg_int_dbus,\r
615 --    dbg_status_val,\r
616 --    dbg_stat_we_n    ,\r
617 --                    trig_clk , rst_n, \r
618 --                    stat_dec_oe_n, stat_bus_oe_n, \r
619 --                    stat_set_flg_n, stat_flg, stat_bus_all_n, stat_bus_nz_n, \r
620 --                    stat_alu_we_n, alu_n, alu_v, alu_z, alu_c, stat_c,\r
621 --                    status_reg, int_d_bus);\r
622 --\r
623 --    dbg_status <= status_reg;\r
624 --    status_test_p : process (addr)\r
625 --    begin\r
626 --        if (addr(5 downto 0) = "000010") then\r
627 --        --addr=02\r
628 --        --set status(7) = '1'\r
629 --            stat_dec_oe_n <= '1';\r
630 --            stat_bus_oe_n <= '1';\r
631 --            stat_set_flg_n <= '0';\r
632 --            stat_flg <= '1';\r
633 --            stat_bus_all_n <= '1';\r
634 --            stat_bus_nz_n <= '1'; \r
635 --            stat_alu_we_n <= '1';\r
636 --            status_reg <= "01000000";\r
637 --            int_d_bus <= "00000000";\r
638 --\r
639 --        elsif (addr(5 downto 0) = "000100") then\r
640 --        --addr=04\r
641 --        --set status(2) = '0'\r
642 --            stat_dec_oe_n <= '1';\r
643 --            stat_bus_oe_n <= '1';\r
644 --            stat_set_flg_n <= '0';\r
645 --            stat_flg <= '0';\r
646 --            stat_bus_all_n <= '1';\r
647 --            stat_bus_nz_n <= '1'; \r
648 --            stat_alu_we_n <= '1';\r
649 --            status_reg <= "00000100";\r
650 --            int_d_bus <= "00000000";\r
651 --\r
652 --        elsif (addr(5 downto 0) = "000110") then\r
653 --        --addr=06\r
654 --        --set nz from bus, n=1\r
655 --            stat_dec_oe_n <= '1';\r
656 --            stat_bus_oe_n <= '1';\r
657 --            stat_set_flg_n <= '1';\r
658 --            stat_flg <= '0';\r
659 --            stat_bus_all_n <= '1';\r
660 --            stat_bus_nz_n <= '0'; \r
661 --            stat_alu_we_n <= '1';\r
662 --            status_reg <= (others => 'Z');\r
663 --            int_d_bus <= "10000000";\r
664 --\r
665 --        elsif (addr(5 downto 0) = "001000") then\r
666 --        --addr=08\r
667 --        --set nz from bus, z=1\r
668 --            stat_dec_oe_n <= '1';\r
669 --            stat_bus_oe_n <= '1';\r
670 --            stat_set_flg_n <= '1';\r
671 --            stat_flg <= '0';\r
672 --            stat_bus_all_n <= '1';\r
673 --            stat_bus_nz_n <= '0'; \r
674 --            stat_alu_we_n <= '1';\r
675 --            status_reg <= (others => 'Z');\r
676 --            int_d_bus <= "00000000";\r
677 --\r
678 --        else\r
679 --            stat_dec_oe_n <= '0';\r
680 --            stat_bus_oe_n <= '1';\r
681 --            stat_set_flg_n <= '1';\r
682 --            stat_flg <= '1';\r
683 --            stat_bus_all_n <= '1';\r
684 --            stat_bus_nz_n <= '1'; \r
685 --            stat_alu_we_n <= '1';\r
686 --            status_reg <= (others => 'Z');\r
687 --            int_d_bus <= (others => 'Z');\r
688 --        end if;\r
689 --    end process;\r
690 \r
691 end rtl;\r
692 \r