raven 4 macro test
diff --git a/designs/raven_soc/src/raven_soc.v b/designs/raven_soc/src/raven_soc.v
index b27c719..23b9ece 100644
--- a/designs/raven_soc/src/raven_soc.v
+++ b/designs/raven_soc/src/raven_soc.v
@@ -206,7 +206,7 @@
assign clk = (ext_clk_sel == 1'b1) ? ext_clk : pll_clk;
// ADC clock assignments
-
+
assign adc0_clk = (adc0_clksrc == 2'b00) ? rcosc_in :
(adc0_clksrc == 2'b01) ? spi_sck :
(adc0_clksrc == 2'b10) ? xtal_in :
@@ -224,9 +224,9 @@
assign gpio_out[2] = (rcosc_output_dest == 2'b01) ? rcosc_in : gpio[2];
assign gpio_out[3] = (rcosc_output_dest == 2'b10) ? rcosc_in : gpio[3];
assign gpio_out[4] = (rcosc_output_dest == 2'b11) ? rcosc_in : gpio[4];
- assign gpio_out[5] = (xtal_output_dest == 2'b01) ? xtal_in : gpio[5];
- assign gpio_out[6] = (xtal_output_dest == 2'b10) ? xtal_in : gpio[6];
- assign gpio_out[7] = (xtal_output_dest == 2'b11) ? xtal_in : gpio[7];
+ assign gpio_out[5] = (xtal_output_dest == 2'b01) ? xtal_in : gpio[5];
+ assign gpio_out[6] = (xtal_output_dest == 2'b10) ? xtal_in : gpio[6];
+ assign gpio_out[7] = (xtal_output_dest == 2'b11) ? xtal_in : gpio[7];
assign gpio_out[8] = (pll_output_dest == 2'b01) ? pll_clk : gpio[8];
assign gpio_out[9] = (pll_output_dest == 2'b10) ? pll_clk : gpio[9];
assign gpio_out[10] = (pll_output_dest == 2'b11) ? clk : gpio[10];
@@ -238,7 +238,7 @@
assign gpio_outenb[0] = (comp_output_dest == 2'b00) ? gpio_oeb[0] : 1'b0;
assign gpio_outenb[1] = (comp_output_dest == 2'b00) ? gpio_oeb[1] : 1'b0;
- assign gpio_outenb[2] = (rcosc_output_dest == 2'b00) ? gpio_oeb[2] : 1'b0;
+ assign gpio_outenb[2] = (rcosc_output_dest == 2'b00) ? gpio_oeb[2] : 1'b0;
assign gpio_outenb[3] = (rcosc_output_dest == 2'b00) ? gpio_oeb[3] : 1'b0;
assign gpio_outenb[4] = (rcosc_output_dest == 2'b00) ? gpio_oeb[4] : 1'b0;
assign gpio_outenb[5] = (xtal_output_dest == 2'b00) ? gpio_oeb[5] : 1'b0;
@@ -255,7 +255,7 @@
assign gpio_pullup[0] = (comp_output_dest == 2'b00) ? gpio_pu[0] : 1'b0;
assign gpio_pullup[1] = (comp_output_dest == 2'b00) ? gpio_pu[1] : 1'b0;
- assign gpio_pullup[2] = (rcosc_output_dest == 2'b00) ? gpio_pu[2] : 1'b0;
+ assign gpio_pullup[2] = (rcosc_output_dest == 2'b00) ? gpio_pu[2] : 1'b0;
assign gpio_pullup[3] = (rcosc_output_dest == 2'b00) ? gpio_pu[3] : 1'b0;
assign gpio_pullup[4] = (rcosc_output_dest == 2'b00) ? gpio_pu[4] : 1'b0;
assign gpio_pullup[5] = (xtal_output_dest == 2'b00) ? gpio_pu[5] : 1'b0;
@@ -272,7 +272,7 @@
assign gpio_pulldown[0] = (comp_output_dest == 2'b00) ? gpio_pd[0] : 1'b0;
assign gpio_pulldown[1] = (comp_output_dest == 2'b00) ? gpio_pd[1] : 1'b0;
- assign gpio_pulldown[2] = (rcosc_output_dest == 2'b00) ? gpio_pd[2] : 1'b0;
+ assign gpio_pulldown[2] = (rcosc_output_dest == 2'b00) ? gpio_pd[2] : 1'b0;
assign gpio_pulldown[3] = (rcosc_output_dest == 2'b00) ? gpio_pd[3] : 1'b0;
assign gpio_pulldown[4] = (rcosc_output_dest == 2'b00) ? gpio_pd[4] : 1'b0;
assign gpio_pulldown[5] = (xtal_output_dest == 2'b00) ? gpio_pd[5] : 1'b0;
@@ -443,7 +443,7 @@
// 1 bandgap
// 1 power-on-reset (POR)
// 1 temperature alarm
-
+
// NOTE: Signals affecting critical core functions are controlled through
// an independent SPI having read-only access through the picorv32 core.
// SPI pins are independent of picorv32 SPI master. Signals controlled by
@@ -475,7 +475,7 @@
// SPI slave: 0x030000c0 (read-only)
// Memory map details:
- // GPIO: 32 channels total.
+ // GPIO: 32 channels total.
// addr 0x03000000 data (16 bits)
// addr 0x03000001 out (=1) or in (=0) (default 0)
// addr 0x03000002 pu (=1) or none (=0) (default 0)
@@ -691,16 +691,16 @@
end
end
-`ifndef SRAM_COMPILER
+`ifndef SRAM_COMPILER
raven_soc_mem #(.WORDS(MEM_WORDS)) picomem (
.clk(clk),
.ena(resetn),
.wen((mem_valid && !mem_ready && mem_addr < 4*MEM_WORDS) ? mem_wstrb : 4'b0),
- .addr(mem_addr[23:2]),
+ .addr(mem_addr),
.wdata(mem_wdata),
.rdata(ram_rdata)
);
-`endif
+`endif
endmodule
@@ -739,19 +739,21 @@
input clk,
input ena,
input [3:0] wen,
- input [21:0] addr,
+ input [31:0] addr,
input [31:0] wdata,
output reg [31:0] rdata
);
- wire [31:0] rdata_w;
+ wire [63:0] rdata_w;
- sram_16_256_8_scn4m_subm sram1 (.clk0(clk), .csb0(ena), .web0(wen[0]|wen[1]), .wmask0(wen[1:0]), .addr0(addr[7:0]), .din0(wdata[7:0]), .dout0(rdata_w[15:0]));
- sram_16_256_8_scn4m_subm sram2 (.clk0(clk), .csb0(ena), .web0(wen[2]|wen[3]), .wmask0(wen[3:2]), .addr0(addr[15:8]), .din0(wdata[15:8]), .dout0(rdata_w[31:16]));
+ sram_16_256_8_scn4m_subm sram1 (.clk0(clk), .csb0(ena), .web0(wen[0]), .wmask0({wen[0], wen[0]}), .addr0(addr[7:0]), .din0(wdata[7:0]), .dout0(rdata_w[15:0]));
+ sram_16_256_8_scn4m_subm sram2 (.clk0(clk), .csb0(ena), .web0(wen[1]), .wmask0({wen[1], wen[1]}), .addr0(addr[15:8]), .din0(wdata[15:8]), .dout0(rdata_w[31:16]));
+ sram_16_256_8_scn4m_subm sram3 (.clk0(clk), .csb0(ena), .web0(wen[2]), .wmask0({wen[2], wen[2]}), .addr0(addr[23:16]), .din0(wdata[23:16]), .dout0(rdata_w[47:32]));
+ sram_16_256_8_scn4m_subm sram4 (.clk0(clk), .csb0(ena), .web0(wen[3]), .wmask0({wen[3], wen[3]}), .addr0(addr[31:24]), .din0(wdata[31:24]), .dout0(rdata_w[63:48]));
always @(posedge clk) begin
if (ena == 1'b1) begin
- rdata <= rdata_w;
+ rdata <= wen[0]? rdata_w[31:0] : rdata_w[63:32];
end
end
endmodule