From 8558b10449023bd73fafd703e7c3cddff012cb8e Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Sun, 9 Jan 2011 02:03:55 +0100 Subject: [PATCH] spartan3e: invert reset and use the interrupt example by stefan --- cpu/src/core_top_s3e.vhd | 7 +++++-- cpu/src/rom_b.vhd | 40 ++++++++++++++-------------------------- spartan3e/spartan3e.ucf | 1 + 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/cpu/src/core_top_s3e.vhd b/cpu/src/core_top_s3e.vhd index e047c62..eb10823 100644 --- a/cpu/src/core_top_s3e.vhd +++ b/cpu/src/core_top_s3e.vhd @@ -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; diff --git a/cpu/src/rom_b.vhd b/cpu/src/rom_b.vhd index d57a959..d7b5da1 100644 --- a/cpu/src/rom_b.vhd +++ b/cpu/src/rom_b.vhd @@ -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"; diff --git a/spartan3e/spartan3e.ucf b/spartan3e/spartan3e.ucf index 4cc5151..1cec582 100644 --- a/spartan3e/spartan3e.ucf +++ b/spartan3e/spartan3e.ucf @@ -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 ; -- 2.25.1