spartan3e: invert reset and use the interrupt example by stefan
authorBernhard Urban <lewurm@gmail.com>
Sun, 9 Jan 2011 01:03:55 +0000 (02:03 +0100)
committerBernhard Urban <lewurm@gmail.com>
Sun, 9 Jan 2011 01:03:55 +0000 (02:03 +0100)
cpu/src/core_top_s3e.vhd
cpu/src/rom_b.vhd
spartan3e/spartan3e.ucf

index e047c62f8dbb665f1e20b4099475780850e768e2..eb1082322f202fe6bcd2bdb70d448bf7bac8d277 100644 (file)
@@ -17,6 +17,7 @@ entity core_top is
                  -- uart
                        bus_tx : out std_logic;
                        bus_rx : in std_logic;
+                       led1 : out std_logic;
                        
                        sseg0 : out std_logic_vector(0 to 6);
                        sseg1 : out std_logic_vector(0 to 6);
@@ -167,7 +168,8 @@ syn: process(sys_clk, sys_res)
 
 begin
 
-       if sys_res = '0' then
+       if sys_res = '1' then
+               led1 <= '0';
 --                     vers.result <= (others => '0');
 --                     vers.result_addr <= (others => '0');
 --                     vers.address <= (others => '0');
@@ -183,8 +185,9 @@ begin
                sync <= (others => '0');
        
        elsif rising_edge(sys_clk) then
+               led1 <= '1';
 --             vers <= vers_nxt;
-                       sync(1) <= sys_res;
+                       sync(1) <= not sys_res;
                        for i in 2 to SYNC_STAGES loop
                                sync(i) <= sync(i - 1);
                        end loop;
index d57a959d978f9f9d60ac5bf1cc79a49a36423ad9..d7b5da1fb29500f6a855b0d8615828b8cf2c63ba 100644 (file)
@@ -124,35 +124,23 @@ begin
 --                             when "00000001000" => data_out <= x"e7280004";
 --                     --      when "00000001001" => data_out <= x"eb7ffb81";
 
-                       --      when "0000000" => data_out <= "11101011000000000000010000000010";
-                       --      when "0000001" => data_out <= "11101011000000000001000000000110";
-                       --      when "0000010" => data_out <= x"eb000008";
+                               when "0000000" => data_out <= "11101011000000000000010000000010";
+                               when "0000001" => data_out <= "11101011000000000001000000000110";
+                               when "0000010" => data_out <= x"eb000008";
 
-                       --      when "0001000" => data_out <= x"ed090058";
-                       --      when "0001001" => data_out <= x"ed110060";
-                       --      when "0001010" => data_out <= x"ed190080";
-                       --      when "0001011" => data_out <= x"ed210120";
-                       --      when "0001100" => data_out <= x"ed280018";
-                       --      when "0001101" => data_out <= x"e7aa0000";
+                               when "0001000" => data_out <= x"ed090058";
+                               when "0001001" => data_out <= x"ed110060";
+                               when "0001010" => data_out <= x"ed190080";
+                               when "0001011" => data_out <= x"ed210120";
+                               when "0001100" => data_out <= x"ed280018";
+                               when "0001101" => data_out <= x"e7aa0000";
 
                        --      when "0100000" => data_out <= x"f7aa0000";
-                       --      when "0100001" => data_out <= x"e7390000";
-                       --      when "0100010" => data_out <= x"e13b8008";
-                       --      when "0100011" => data_out <= x"e7b98000";
-                       --      when "0100100" => data_out <= x"e7b88000";
-                       --      when "0100101" => data_out <= x"eb000008";
-
-       when "0000000" => data_out <= x"eb000281";--br 5;;
-       when "0000001" => data_out <= "11101011000000000001000000000110";
-       when "0000010" => data_out <= x"eb000008";
-
-when "0000101" => data_out <= x"ed0101b8";--ldi r0, 0x2037;;
-when "0000110" => data_out <= x"ed0901d8";--ldi r1, 0x203b;;
-when "0000111" => data_out <= x"ed100020";--ldi r2, 4;;
-when "0001000" => data_out <= x"ed180028";--ldi r3, 5;;
-when "0001001" => data_out <= x"e7900000";--stw r2, 0(r0);;
-when "0001010" => data_out <= x"e7988000";--stw r3, 0(r1);;
-
+                               when "0100001" => data_out <= x"e7390000";
+                               when "0100010" => data_out <= x"e13b8008";
+                               when "0100011" => data_out <= x"e7b98000";
+                               when "0100100" => data_out <= x"e7b88000";
+                               when "0100101" => data_out <= x"eb000008";
 
                                when others => data_out <=    "11101011000000000000000000000010";
 
index 4cc5151fadde5bd5721ae8dc265b016d06a0bc5a..1cec582437b63b165a70629d55bd18772beb1a7e 100644 (file)
@@ -80,6 +80,7 @@ NET "sys_clk" PERIOD = 20 ns HIGH 40 % ;
 #NET "FX2_IO<18>" LOC = "E11" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 ;
 #NET "FX2_IO<19>" LOC = "E12" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 ;
 #NET "FX2_IO<20>" LOC = "F12" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 ;
+NET "led1" LOC = "F12" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 ;
 #NET "FX2_IO<21>" LOC = "A13" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 ;
 #NET "FX2_IO<22>" LOC = "B13" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 ;
 #NET "FX2_IO<23>" LOC = "A14" | IOSTANDARD = LVCMOS33 | SLEW = FAST | DRIVE = 8 ;