26 lines
915 B
Systemverilog
26 lines
915 B
Systemverilog
module addr_decode
|
|
(
|
|
input [24:0] i_addr,
|
|
|
|
input config_reg_sel,
|
|
|
|
output o_rom_cs,
|
|
output o_leds_cs,
|
|
output o_timer_cs,
|
|
output o_multiplier_cs,
|
|
output o_divider_cs,
|
|
output o_uart_cs,
|
|
output o_spi_cs,
|
|
output o_sdram_cs
|
|
);
|
|
|
|
assign o_rom_cs = (i_addr >= 25'hf000 && i_addr <= 25'hffff) && ~config_reg_sel;
|
|
assign o_timer_cs = (i_addr >= 25'heff8 && i_addr <= 25'heffb) && ~config_reg_sel;
|
|
assign o_multiplier_cs = (i_addr >= 25'heff0 && i_addr <= 25'heff7) && ~config_reg_sel;
|
|
assign o_divider_cs = (i_addr >= 25'hefe8 && i_addr <= 25'hefef) && ~config_reg_sel;
|
|
assign o_uart_cs = (i_addr >= 25'hefe6 && i_addr <= 25'hefe7) && ~config_reg_sel;
|
|
assign o_spi_cs = (i_addr >= 25'hefd8 && i_addr <= 25'hefdb) && ~config_reg_sel;
|
|
assign o_leds_cs = (i_addr == 25'hefff) && ~config_reg_sel;
|
|
assign o_sdram_cs = (i_addr < 25'he000 || i_addr >= 25'h10000) && ~config_reg_sel;
|
|
|
|
endmodule |