blob: 1385bf091ad2c39e7bf7d5bd3e4401e3cfeb1c56 [file] [log] [blame]
`define USE_POWER_PINS
module pulpino_top_wrapper
(
`ifdef USE_POWER_PINS
inout vccd1, // User area 1 1.8V supply
inout vssd1, // User area 1 digital ground
`endif
// Wishbone Slave ports (WB MI A)
input wb_clk_i,
input wb_rst_i,
// Wishbone Slave ports (WB MI A)
input wb_clk_i,
input wb_rst_i,
input wbs_stb_i,
input wbs_cyc_i,
input wbs_we_i,
input [3:0] wbs_sel_i,
input [31:0] wbs_dat_i,
input [31:0] wbs_adr_i,
output wbs_ack_o,
output [31:0] wbs_dat_o,
// Logic Analyzer Signals
input [127:0] la_data_in,
output [127:0] la_data_out,
input [127:0] la_oenb,
// IOs
input [`MPRJ_IO_PADS-1:0] io_in,
output [`MPRJ_IO_PADS-1:0] io_out,
output [`MPRJ_IO_PADS-1:0] io_oeb,
// IRQ
output [2:0] irq
);
wire [`MPRJ_IO_PADS-1:0] io_in;
wire [`MPRJ_IO_PADS-1:0] io_out;
wire [`MPRJ_IO_PADS-1:0] io_oeb;
wire clk;
wire rst_n;
assign rst_n = ~wb_rst_i;
assign clk = wb_clk_i;
// IO
assign io_oeb[19:10] = 10'b0000000000; // drive low to enable
assign io_oeb[24] = 1'b0;
assign io_oeb[30] = 1'b0;
assign io_oeb[37:31] = 7'b0000000;
assign la_data_out[127:109] = 19'b1111111110000000000;
reg [6:0] leds;
reg [19:0] counter;
always @ (posedge clk) begin
if (rst_n == 1'b0) begin
counter <= 20'h00000;
leds <= 7'b0000000;
end
else begin
counter <= counter + 1;
if (counter == 20'hFFFFF) begin
counter <= 0;
leds <= leds + 1;
end
end
end
assign io_out[37:37] = leds;
assign irq[2:0] = 3'b000;
assign wbs_ack_o = 1'b0;
assign wbs_dat_o = 32'h00000000;
pulpino_top
#(
.USE_ZERO_RISCY (1),
.RISCY_RV32F (0),
.ZERO_RV32M (1),
.ZERO_RV32E (0)
)
pulpino_top
(
`ifdef USE_POWER_PINS
.vccd1(vccd1), // User area 1 1.8V supply
.vssd1(vssd1), // User area 1 digital ground
`endif
.clk (clk),
.rst_n (rst_n),
.clk_sel_i (1'b0),
.clk_standalone_i (1'b0),
.testmode_i (1'b0),
.fetch_enable_i (io_in[8]),
.scan_enable_i (io_in[9]),
.spi_clk_i (la_data_in[0]),
.spi_cs_i (la_data_in[1]),
.spi_mode_o (la_data_out[6]),
.spi_sdo0_o (la_data_out[7]),
.spi_sdo1_o (la_data_out[8]),
.spi_sdo2_o (la_data_out[9]),
.spi_sdo3_o (la_data_out[10]),
.spi_sdi0_i (la_data_in[2]),
.spi_sdi1_i (la_data_in[3]),
.spi_sdi2_i (la_data_in[4]),
.spi_sdi3_i (la_data_in[5]),
.spi_master_clk_o (io_out[10]),
.spi_master_csn0_o (io_out[11]),
.spi_master_csn1_o (io_out[12]),
.spi_master_csn2_o (io_out[13]),
.spi_master_csn3_o (io_out[14]),
.spi_master_mode_o (io_out[15]),
.spi_master_sdo0_o (io_out[16]),
.spi_master_sdo1_o (io_out[17]),
.spi_master_sdo2_o (io_out[18]),
.spi_master_sdo3_o (io_out[19]),
.spi_master_sdi0_i (io_in[20]),
.spi_master_sdi1_i (io_in[21]),
.spi_master_sdi2_i (io_in[22]),
.spi_master_sdi3_i (io_in[23]),
.scl_pad_i (la_data_in[11]),
.scl_pad_o (),
.scl_padoen_o (),
.sda_pad_i (la_data_in[12]),
.sda_pad_o (),
.sda_padoen_o (),
.uart_tx (io_out[24]),
.uart_rx (io_in[25]),
.uart_rts (),
.uart_dtr (),
.uart_cts (1'b0),
.uart_dsr (1'b0),
.gpio_in (la_data_in[44:13]),
.gpio_out (la_data_out[76:45]),
.gpio_dir (la_data_out[108:77]),
.gpio_padcfg (),
.tck_i (io_in[26]),
.trstn_i (io_in[27]),
.tms_i (io_in[28]),
.tdi_i (io_in[29]),
.tdo_o (io_out[30]),
.pad_cfg_o (),
.pad_mux_o ()
);
endmodule