2 use ieee.std_logic_1164.all;
\r
3 use ieee.std_logic_unsigned.conv_integer;
\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
10 entity qt_proj_test5 is
\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
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
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
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
42 architecture rtl of qt_proj_test5 is
\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
55 generic (abus_size : integer := 16; dbus_size : integer := 8);
\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
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
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
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
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
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
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
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
122 generic (abus_size : integer := 13; dbus_size : integer := 8);
\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
134 dsize : integer := 8
\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
146 constant data_size : integer := 8;
\r
147 constant addr_size : integer := 16;
\r
148 constant vram_size14 : integer := 14;
\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
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
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
177 signal ale_n : std_logic;
\r
178 signal vga_clk_n : std_logic;
\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
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
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
208 ppu_inst: ppu port map (
\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
217 dbg_disp_nt, dbg_disp_attr ,
\r
218 dbg_disp_ptn_h, dbg_disp_ptn_l ,
\r
221 dbg_ppu_addr_we_n ,
\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
252 ---VRAM/CHR ROM instances
\r
253 v_addr (13 downto 8) <= vram_a;
\r
255 --transparent d-latch
\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
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
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
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
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
279 procedure ppu_set (ad: in integer; dt : in integer) is
\r
283 cpu_addr <= conv_std_logic_vector(ad, 16)(2 downto 0);
\r
284 cpu_d <= conv_std_logic_vector(dt, 8);
\r
287 procedure ppu_clr is
\r
289 cpu_addr <= (others => 'Z');
\r
290 cpu_d <= (others => 'Z');
\r
297 if (rst_n = '0') then
\r
301 cpu_addr <= (others => 'Z');
\r
302 cpu_d <= (others => 'Z');
\r
305 global_step_cnt := 0;
\r
306 init_step_cnt := 0;
\r
309 enable_ppu_step_cnt := 0;
\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
317 ppu_set(16#2000#, 16#00#);
\r
318 elsif (init_step_cnt = 2) then
\r
320 ppu_set(16#2001#, 16#00#);
\r
323 if (init_step_cnt > 2) then
\r
324 global_step_cnt := global_step_cnt + 1;
\r
327 init_step_cnt := init_step_cnt + 1;
\r
329 elsif (global_step_cnt = 1) then
\r
330 --step0.1 = palette set.
\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
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
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
350 elsif (plt_step_cnt = 4) then
\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
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
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
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
389 if (plt_step_cnt > 10) then
\r
390 global_step_cnt := global_step_cnt + 1;
\r
393 plt_step_cnt := plt_step_cnt + 1;
\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
412 if (nt_step_cnt > 8) then
\r
413 global_step_cnt := global_step_cnt + 1;
\r
416 nt_step_cnt := nt_step_cnt + 1;
\r
418 elsif (global_step_cnt = 3) then
\r
419 --final step = enable ppu.
\r
420 if (enable_ppu_step_cnt = 0) then
\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
428 ppu_set(16#2000#, 16#80#);
\r
431 if (enable_ppu_step_cnt > 2) then
\r
432 global_step_cnt := global_step_cnt + 1;
\r
435 enable_ppu_step_cnt := enable_ppu_step_cnt + 1;
\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
449 --component counter_register
\r
451 -- dsize : integer := 8;
\r
452 -- inc : integer := 1
\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
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
472 --component processor_status
\r
474 -- dsize : integer := 8
\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
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
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
520 -- component alu_test
\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
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
537 -- trig_clk <= not cpu_clk;
\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
542 -- rom_inst : prg_rom generic map (12, 8) port map
\r
543 -- (base_clk, '0', addr(11 downto 0), d_io);
\r
545 -- dbg_addr <= addr;
\r
546 -- dbg_d_io <= d_io;
\r
548 -- dbg_cpu_clk <= cpu_clk;
\r
549 -- dbg_ppu_clk <= ppu_clk;
\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
558 -- dummy_alu : alu_test
\r
560 -- d1, d2, d_out, carry_clr_n , ea_carry
\r
563 -- gate_n <= not ea_carry;
\r
564 -- dec_test_p : process (rst_n, ea_carry, trig_clk)
\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
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
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
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
595 -- carry_clr_n <= '1';
\r
596 -- d1 <= "10001010";
\r
597 -- d2 <= "10011001";
\r
598 -- --gate_n <= '1';
\r
600 -- carry_clr_n <= '1';
\r
601 -- d1 <= "00000000";
\r
602 -- d2 <= "00000000";
\r
603 -- --gate_n <= '1';
\r
609 -- --status register
\r
610 -- status_register : processor_status generic map (8)
\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
623 -- dbg_status <= status_reg;
\r
624 -- status_test_p : process (addr)
\r
626 -- if (addr(5 downto 0) = "000010") then
\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
639 -- elsif (addr(5 downto 0) = "000100") then
\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
652 -- elsif (addr(5 downto 0) = "000110") then
\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
665 -- elsif (addr(5 downto 0) = "001000") then
\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
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