Tighten UART address

The current scheme has UART0 repeating throughout the UART address range.

This patch tightens the address checking so that it only occurs once.

Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
pull/79/head
Alastair D'Silva 5 years ago
parent 4174cd8e93
commit ccd52bf6f2

@ -106,7 +106,7 @@ begin
-- Wishbone slaves address decoder & mux -- Wishbone slaves address decoder & mux
slave_intercon: process(wb_master_out, wb_bram_out, wb_uart0_out) slave_intercon: process(wb_master_out, wb_bram_out, wb_uart0_out)
-- Selected slave -- Selected slave
type slave_type is (SLAVE_UART, type slave_type is (SLAVE_UART_0,
SLAVE_MEMORY, SLAVE_MEMORY,
SLAVE_NONE); SLAVE_NONE);
variable slave : slave_type; variable slave : slave_type;
@ -116,8 +116,8 @@ begin
if wb_master_out.adr(63 downto 24) = x"0000000000" then if wb_master_out.adr(63 downto 24) = x"0000000000" then
slave := SLAVE_MEMORY; slave := SLAVE_MEMORY;
elsif wb_master_out.adr(63 downto 24) = x"00000000c0" then elsif wb_master_out.adr(63 downto 24) = x"00000000c0" then
if wb_master_out.adr(15 downto 12) = x"2" then if wb_master_out.adr(23 downto 12) = x"002" then
slave := SLAVE_UART; slave := SLAVE_UART_0;
end if; end if;
end if; end if;


@ -130,7 +130,7 @@ begin
when SLAVE_MEMORY => when SLAVE_MEMORY =>
wb_bram_in.cyc <= wb_master_out.cyc; wb_bram_in.cyc <= wb_master_out.cyc;
wb_master_in <= wb_bram_out; wb_master_in <= wb_bram_out;
when SLAVE_UART => when SLAVE_UART_0 =>
wb_uart0_in.cyc <= wb_master_out.cyc; wb_uart0_in.cyc <= wb_master_out.cyc;
wb_master_in <= wb_uart0_out; wb_master_in <= wb_uart0_out;
when others => when others =>

Loading…
Cancel
Save