diff --git a/Z80CpuMonLX9Jason.xise b/Z80CpuMonLX9Jason.xise index 94507c1..93e93e0 100644 --- a/Z80CpuMonLX9Jason.xise +++ b/Z80CpuMonLX9Jason.xise @@ -365,7 +365,7 @@ - + diff --git a/src/Z80CpuMon.ucf b/src/Z80CpuMon.ucf index dde90ff..4d334ef 100644 --- a/src/Z80CpuMon.ucf +++ b/src/Z80CpuMon.ucf @@ -48,7 +48,7 @@ NET "led3" LOC="P43" | IOSTANDARD = LVCMOS33 ; # Red LED (near SW1) NET "led6" LOC="P25" | IOSTANDARD = LVCMOS33 ; # Red LED (just left of FPGA) NET "led8" LOC="P47" | IOSTANDARD = LVCMOS33 ; # Green LED (near SW1) NET "sw1" LOC="P39" | IOSTANDARD = LVCMOS33 ; # Bottom Switch -NET "nsw2" LOC="P69" | IOSTANDARD = LVCMOS33 | PULLUP ; # Top Switch +NET "sw2" LOC="P69" | IOSTANDARD = LVCMOS33 | PULLUP ; # Top Switch # I/O's for test connector #NET tvs1 LOC=P48 | IOSTANDARD = LVCMOS33 | DRIVE=16 ; diff --git a/src/Z80CpuMon.vhd b/src/Z80CpuMon.vhd index 8e6b1be..df72fb8 100644 --- a/src/Z80CpuMon.vhd +++ b/src/Z80CpuMon.vhd @@ -23,7 +23,10 @@ use work.OhoPack.all ; entity Z80CpuMon is generic ( - UseT80Core : boolean := true + UseT80Core : boolean := true; + LEDsActiveHigh : boolean := false; -- default value correct for GODIL + SW1ActiveHigh : boolean := true; -- default value correct for GODIL + SW2ActiveHigh : boolean := false -- default value correct for GODIL ); port ( clock49 : in std_logic; @@ -55,7 +58,7 @@ entity Z80CpuMon is -- GODIL Switches sw1 : in std_logic; - nsw2 : in std_logic; + sw2 : in std_logic; -- GODIL LEDs led3 : out std_logic; @@ -141,8 +144,21 @@ signal ex_data : std_logic_vector(7 downto 0); signal rd_data : std_logic_vector(7 downto 0); signal mon_data : std_logic_vector(7 downto 0); +signal led3_n : std_logic; -- led to indicate ext trig 0 is active +signal led6_n : std_logic; -- led to indicate ext trig 1 is active +signal led8_n : std_logic; -- led to indicate CPU has hit a breakpoint (and is stopped) +signal sw_interrupt_n : std_logic; -- switch to pause the CPU +signal sw_reset_n : std_logic; -- switch to reset the CPU + begin + -- Generics allows polarity of switches/LEDs to be tweaked from the project file + sw_reset_n <= not sw1 when SW1ActiveHigh else sw1; + sw_interrupt_n <= not sw2 when SW2ActiveHigh else sw2; + led3 <= not led3_n when LEDsActiveHigh else led3_n; + led6 <= not led6_n when LEDsActiveHigh else led6_n; + led8 <= not led8_n when LEDsActiveHigh else led8_n; + inst_dcm0 : entity work.DCM0 port map( CLKIN_IN => clock49, CLKFX_OUT => clock_avr @@ -178,10 +194,10 @@ begin avr_RxD => avr_RxD, avr_TxD => avr_TxD, sw1 => '0', - nsw2 => nsw2, - led3 => led3, - led6 => led6, - led8 => led8, + nsw2 => sw_interrupt_n, + led3 => led3_n, + led6 => led6_n, + led8 => led8_n, tmosi => tmosi, tdin => tdin, tcclk => tcclk, @@ -384,7 +400,7 @@ begin end if; end process; - RESET_n_int <= RESET_n and (not sw1) and nRST; + RESET_n_int <= RESET_n and sw_reset_n and nRST; test1 <= TState(0); test2 <= TState(1);