OSDN Git Service

vga output working...
[motonesfpga/motonesfpga.git] / tools / qt_proj_test5 / qt_proj_test5.vhd
index 7d0a149..f6b69ca 100644 (file)
@@ -29,6 +29,7 @@ entity qt_proj_test5 is
 \r
 \r
         base_clk       : in std_logic;\r
+        base_clk_27mhz         : in std_logic;\r
         rst_n          : in std_logic;\r
         h_sync_n    : out std_logic;\r
         v_sync_n    : out std_logic;\r
@@ -60,6 +61,14 @@ architecture rtl of qt_proj_test5 is
         );\r
     end component;\r
 \r
+    component vga_clk_gen\r
+        PORT\r
+        (\r
+            inclk0             : IN STD_LOGIC  := '0';\r
+            c0         : OUT STD_LOGIC \r
+        );\r
+    END component;\r
+\r
 signal pos_x       : std_logic_vector (8 downto 0);\r
 signal pos_y       : std_logic_vector (8 downto 0);\r
 signal nes_r       : std_logic_vector (3 downto 0);\r
@@ -91,6 +100,8 @@ end component;
     signal cpu_clk  : std_logic;\r
     signal ppu_clk  : std_logic;\r
     signal vga_clk   : std_logic;\r
+    signal vga_clk_pll : std_logic;\r
+    \r
 \r
     signal addr : std_logic_vector( addr_size - 1 downto 0);\r
     signal d_io : std_logic_vector( data_size - 1 downto 0);\r
@@ -183,6 +194,9 @@ end component;
 \r
 \r
 begin\r
+    --ppu/cpu clock generator\r
+    clock_inst : clock_divider port map \r
+        (base_clk, rst_n, cpu_clk, ppu_clk, vga_clk);\r
 \r
     ppu_inst: dummy_ppu \r
         port map (  ppu_clk     ,\r
@@ -193,8 +207,18 @@ begin
                 nes_g       ,\r
                 nes_b       \r
         );\r
+\r
+        vga_clk_gen_inst : vga_clk_gen\r
+        PORT map\r
+        (\r
+            base_clk_27mhz, vga_clk_pll\r
+        );\r
+\r
+    \r
     vga_ctl_inst : vga_ctl\r
     port map (  ppu_clk     ,\r
+            --vga_clk_pll, \r
+            --ppu_clk ,\r
             vga_clk     ,\r
             rst_n       ,\r
             pos_x       ,\r
@@ -210,163 +234,159 @@ begin
     );\r
 \r
 \r
-    trig_clk <= not cpu_clk;\r
-\r
-    pcl_inst : counter_register generic map (16) port map\r
-        (cpu_clk, rst_n, '0', '1', (others => '0'), addr(15 downto 0));\r
-\r
-    rom_inst : prg_rom generic map (12, 8) port map\r
-        (base_clk, '0', addr(11 downto 0), d_io);\r
-\r
-    dbg_addr <= addr;\r
-    dbg_d_io <= d_io;\r
-\r
-    --ppu/cpu clock generator\r
-    clock_inst : clock_divider port map \r
-        (base_clk, rst_n, cpu_clk, ppu_clk, vga_clk);\r
-\r
-    dbg_cpu_clk <= cpu_clk;\r
-    dbg_ppu_clk <= ppu_clk;\r
-\r
-    dbg_d1 <= d1;\r
-    dbg_d2 <= d2;\r
-    dbg_d_out <= d_out;\r
-    dbg_ea_carry <= ea_carry;\r
-    dbg_carry_clr_n <= carry_clr_n;\r
-    dbg_gate_n <= gate_n;\r
-    \r
-    dummy_alu : alu_test\r
-    port map (  \r
-        d1, d2, d_out, carry_clr_n , ea_carry\r
-        );\r
-\r
-        gate_n <= not ea_carry;\r
-    dec_test_p : process (rst_n, ea_carry, trig_clk)\r
-    begin\r
-        if (rst_n = '0') then\r
-            d1 <= "00000000";\r
-            d2 <= "00000000";\r
-            carry_clr_n <= '0';\r
-            --gate_n <= '1';\r
---        elsif (ea_carry = '1') then\r
---            gate_n <= '0';\r
+--    trig_clk <= not cpu_clk;\r
+--\r
+--    pcl_inst : counter_register generic map (16) port map\r
+--        (cpu_clk, rst_n, '0', '1', (others => '0'), addr(15 downto 0));\r
+--\r
+--    rom_inst : prg_rom generic map (12, 8) port map\r
+--        (base_clk, '0', addr(11 downto 0), d_io);\r
+--\r
+--    dbg_addr <= addr;\r
+--    dbg_d_io <= d_io;\r
+--\r
+--    dbg_cpu_clk <= cpu_clk;\r
+--    dbg_ppu_clk <= ppu_clk;\r
+--\r
+--    dbg_d1 <= d1;\r
+--    dbg_d2 <= d2;\r
+--    dbg_d_out <= d_out;\r
+--    dbg_ea_carry <= ea_carry;\r
+--    dbg_carry_clr_n <= carry_clr_n;\r
+--    dbg_gate_n <= gate_n;\r
+--    \r
+--    dummy_alu : alu_test\r
+--    port map (  \r
+--        d1, d2, d_out, carry_clr_n , ea_carry\r
+--        );\r
+--\r
+--        gate_n <= not ea_carry;\r
+--    dec_test_p : process (rst_n, ea_carry, trig_clk)\r
+--    begin\r
+--        if (rst_n = '0') then\r
+--            d1 <= "00000000";\r
+--            d2 <= "00000000";\r
 --            carry_clr_n <= '0';\r
-        elsif (rising_edge(trig_clk)) then\r
-            if (addr(5 downto 0) = "000001") then\r
-            --addr=01\r
-                carry_clr_n <= '1';\r
-                d1 <= "00010011";\r
-                d2 <= "01000111";\r
-                --gate_n <= '1';\r
-            elsif (addr(5 downto 0) = "000010") then\r
-            --addr=02\r
-                carry_clr_n <= '1';\r
-                d1 <= "00110011";\r
-                d2 <= "11001111";\r
-                --gate_n <= '1';\r
-            elsif (addr(5 downto 0) = "000011") then\r
-            --addr=03\r
-                carry_clr_n <= '1';\r
-                d1 <= "00001010";\r
-                d2 <= "01011001";\r
-                --gate_n <= '1';\r
-            elsif (addr(5 downto 0) = "000100") then\r
-            --addr=04\r
-                carry_clr_n <= '1';\r
-                d1 <= "10001010";\r
-                d2 <= "10011001";\r
-                --gate_n <= '1';\r
-            else\r
-                carry_clr_n <= '1';\r
-                d1 <= "00000000";\r
-                d2 <= "00000000";\r
-                --gate_n <= '1';\r
-            end if;\r
-        end if;\r
-    end process;\r
-\r
-\r
-    --status register\r
-    status_register : processor_status generic map (8) \r
-            port map (\r
-    dbg_dec_oe_n,\r
-    dbg_dec_val,\r
-    dbg_int_dbus,\r
-    dbg_status_val,\r
-    dbg_stat_we_n    ,\r
-                    trig_clk , rst_n, \r
-                    stat_dec_oe_n, stat_bus_oe_n, \r
-                    stat_set_flg_n, stat_flg, stat_bus_all_n, stat_bus_nz_n, \r
-                    stat_alu_we_n, alu_n, alu_v, alu_z, alu_c, stat_c,\r
-                    status_reg, int_d_bus);\r
-\r
-    dbg_status <= status_reg;\r
-    status_test_p : process (addr)\r
-    begin\r
-        if (addr(5 downto 0) = "000010") then\r
-        --addr=02\r
-        --set status(7) = '1'\r
-            stat_dec_oe_n <= '1';\r
-            stat_bus_oe_n <= '1';\r
-            stat_set_flg_n <= '0';\r
-            stat_flg <= '1';\r
-            stat_bus_all_n <= '1';\r
-            stat_bus_nz_n <= '1'; \r
-            stat_alu_we_n <= '1';\r
-            status_reg <= "01000000";\r
-            int_d_bus <= "00000000";\r
-\r
-        elsif (addr(5 downto 0) = "000100") then\r
-        --addr=04\r
-        --set status(2) = '0'\r
-            stat_dec_oe_n <= '1';\r
-            stat_bus_oe_n <= '1';\r
-            stat_set_flg_n <= '0';\r
-            stat_flg <= '0';\r
-            stat_bus_all_n <= '1';\r
-            stat_bus_nz_n <= '1'; \r
-            stat_alu_we_n <= '1';\r
-            status_reg <= "00000100";\r
-            int_d_bus <= "00000000";\r
-\r
-        elsif (addr(5 downto 0) = "000110") then\r
-        --addr=06\r
-        --set nz from bus, n=1\r
-            stat_dec_oe_n <= '1';\r
-            stat_bus_oe_n <= '1';\r
-            stat_set_flg_n <= '1';\r
-            stat_flg <= '0';\r
-            stat_bus_all_n <= '1';\r
-            stat_bus_nz_n <= '0'; \r
-            stat_alu_we_n <= '1';\r
-            status_reg <= (others => 'Z');\r
-            int_d_bus <= "10000000";\r
-\r
-        elsif (addr(5 downto 0) = "001000") then\r
-        --addr=08\r
-        --set nz from bus, z=1\r
-            stat_dec_oe_n <= '1';\r
-            stat_bus_oe_n <= '1';\r
-            stat_set_flg_n <= '1';\r
-            stat_flg <= '0';\r
-            stat_bus_all_n <= '1';\r
-            stat_bus_nz_n <= '0'; \r
-            stat_alu_we_n <= '1';\r
-            status_reg <= (others => 'Z');\r
-            int_d_bus <= "00000000";\r
-\r
-        else\r
-            stat_dec_oe_n <= '0';\r
-            stat_bus_oe_n <= '1';\r
-            stat_set_flg_n <= '1';\r
-            stat_flg <= '1';\r
-            stat_bus_all_n <= '1';\r
-            stat_bus_nz_n <= '1'; \r
-            stat_alu_we_n <= '1';\r
-            status_reg <= (others => 'Z');\r
-            int_d_bus <= (others => 'Z');\r
-        end if;\r
-    end process;\r
+--            --gate_n <= '1';\r
+----        elsif (ea_carry = '1') then\r
+----            gate_n <= '0';\r
+----            carry_clr_n <= '0';\r
+--        elsif (rising_edge(trig_clk)) then\r
+--            if (addr(5 downto 0) = "000001") then\r
+--            --addr=01\r
+--                carry_clr_n <= '1';\r
+--                d1 <= "00010011";\r
+--                d2 <= "01000111";\r
+--                --gate_n <= '1';\r
+--            elsif (addr(5 downto 0) = "000010") then\r
+--            --addr=02\r
+--                carry_clr_n <= '1';\r
+--                d1 <= "00110011";\r
+--                d2 <= "11001111";\r
+--                --gate_n <= '1';\r
+--            elsif (addr(5 downto 0) = "000011") then\r
+--            --addr=03\r
+--                carry_clr_n <= '1';\r
+--                d1 <= "00001010";\r
+--                d2 <= "01011001";\r
+--                --gate_n <= '1';\r
+--            elsif (addr(5 downto 0) = "000100") then\r
+--            --addr=04\r
+--                carry_clr_n <= '1';\r
+--                d1 <= "10001010";\r
+--                d2 <= "10011001";\r
+--                --gate_n <= '1';\r
+--            else\r
+--                carry_clr_n <= '1';\r
+--                d1 <= "00000000";\r
+--                d2 <= "00000000";\r
+--                --gate_n <= '1';\r
+--            end if;\r
+--        end if;\r
+--    end process;\r
+--\r
+--\r
+--    --status register\r
+--    status_register : processor_status generic map (8) \r
+--            port map (\r
+--    dbg_dec_oe_n,\r
+--    dbg_dec_val,\r
+--    dbg_int_dbus,\r
+--    dbg_status_val,\r
+--    dbg_stat_we_n    ,\r
+--                    trig_clk , rst_n, \r
+--                    stat_dec_oe_n, stat_bus_oe_n, \r
+--                    stat_set_flg_n, stat_flg, stat_bus_all_n, stat_bus_nz_n, \r
+--                    stat_alu_we_n, alu_n, alu_v, alu_z, alu_c, stat_c,\r
+--                    status_reg, int_d_bus);\r
+--\r
+--    dbg_status <= status_reg;\r
+--    status_test_p : process (addr)\r
+--    begin\r
+--        if (addr(5 downto 0) = "000010") then\r
+--        --addr=02\r
+--        --set status(7) = '1'\r
+--            stat_dec_oe_n <= '1';\r
+--            stat_bus_oe_n <= '1';\r
+--            stat_set_flg_n <= '0';\r
+--            stat_flg <= '1';\r
+--            stat_bus_all_n <= '1';\r
+--            stat_bus_nz_n <= '1'; \r
+--            stat_alu_we_n <= '1';\r
+--            status_reg <= "01000000";\r
+--            int_d_bus <= "00000000";\r
+--\r
+--        elsif (addr(5 downto 0) = "000100") then\r
+--        --addr=04\r
+--        --set status(2) = '0'\r
+--            stat_dec_oe_n <= '1';\r
+--            stat_bus_oe_n <= '1';\r
+--            stat_set_flg_n <= '0';\r
+--            stat_flg <= '0';\r
+--            stat_bus_all_n <= '1';\r
+--            stat_bus_nz_n <= '1'; \r
+--            stat_alu_we_n <= '1';\r
+--            status_reg <= "00000100";\r
+--            int_d_bus <= "00000000";\r
+--\r
+--        elsif (addr(5 downto 0) = "000110") then\r
+--        --addr=06\r
+--        --set nz from bus, n=1\r
+--            stat_dec_oe_n <= '1';\r
+--            stat_bus_oe_n <= '1';\r
+--            stat_set_flg_n <= '1';\r
+--            stat_flg <= '0';\r
+--            stat_bus_all_n <= '1';\r
+--            stat_bus_nz_n <= '0'; \r
+--            stat_alu_we_n <= '1';\r
+--            status_reg <= (others => 'Z');\r
+--            int_d_bus <= "10000000";\r
+--\r
+--        elsif (addr(5 downto 0) = "001000") then\r
+--        --addr=08\r
+--        --set nz from bus, z=1\r
+--            stat_dec_oe_n <= '1';\r
+--            stat_bus_oe_n <= '1';\r
+--            stat_set_flg_n <= '1';\r
+--            stat_flg <= '0';\r
+--            stat_bus_all_n <= '1';\r
+--            stat_bus_nz_n <= '0'; \r
+--            stat_alu_we_n <= '1';\r
+--            status_reg <= (others => 'Z');\r
+--            int_d_bus <= "00000000";\r
+--\r
+--        else\r
+--            stat_dec_oe_n <= '0';\r
+--            stat_bus_oe_n <= '1';\r
+--            stat_set_flg_n <= '1';\r
+--            stat_flg <= '1';\r
+--            stat_bus_all_n <= '1';\r
+--            stat_bus_nz_n <= '1'; \r
+--            stat_alu_we_n <= '1';\r
+--            status_reg <= (others => 'Z');\r
+--            int_d_bus <= (others => 'Z');\r
+--        end if;\r
+--    end process;\r
 \r
 end rtl;\r
 \r