module Riscv151 #( parameter CPU_CLOCK_FREQ = 50_000_000, parameter RESET_PC = 32'h4000_0000, parameter BAUD_RATE = 115200 )( input clk, input rst, input FPGA_SERIAL_RX, output FPGA_SERIAL_TX ); // Memories wire [11:0] bios_addra, bios_addrb; wire [31:0] bios_douta, bios_doutb; wire bios_ena, bios_enb; bios_mem bios_mem ( .clk(clk), .ena(bios_ena), .addra(bios_addra), .douta(bios_douta), .enb(bios_enb), .addrb(bios_addrb), .doutb(bios_doutb) ); wire [13:0] dmem_addr; wire [31:0] dmem_din, dmem_dout; wire [3:0] dmem_we; wire dmem_en; dmem dmem ( .clk(clk), .en(dmem_en), .we(dmem_we), .addr(dmem_addr), .din(dmem_din), .dout(dmem_dout) ); wire [31:0] imem_dina, imem_doutb; wire [13:0] imem_addra, imem_addrb; wire [3:0] imem_wea; wire imem_ena; imem imem ( .clk(clk), .ena(imem_ena), .wea(imem_wea), .addra(imem_addra), .dina(imem_dina), .addrb(imem_addrb), .doutb(imem_doutb) ); // Construct your datapath, add as many modules as you want wire we; wire [4:0] ra1, ra2, wa; wire [31:0] wd; wire [31:0] rd1, rd2; reg_file rf ( .clk(clk), .we(we), .ra1(ra1), .ra2(ra2), .wa(wa), .wd(wd), .rd1(rd1), .rd2(rd2) ); // On-chip UART uart #( .CLOCK_FREQ(CPU_CLOCK_FREQ), .BAUD_RATE(BAUD_RATE) ) on_chip_uart ( .clk(clk), .reset(rst), .data_in(), .data_in_valid(), .data_out_ready(), .serial_in(FPGA_SERIAL_RX), .data_in_ready(), .data_out(), .data_out_valid(), .serial_out(FPGA_SERIAL_TX) ); endmodule