bring in external reset and la
diff --git a/verilog/dv/caravel/user_proj_example/io_ports/io_ports.c b/verilog/dv/caravel/user_proj_example/io_ports/io_ports.c
index 159efd5..bc8dbc3 100644
--- a/verilog/dv/caravel/user_proj_example/io_ports/io_ports.c
+++ b/verilog/dv/caravel/user_proj_example/io_ports/io_ports.c
@@ -66,9 +66,12 @@
// Configure LA probes [31:0], [127:64] as inputs to the cpu
// Configure LA probes [63:32] as outputs from the cpu
reg_la0_ena = 0xFFFFFFFF; // [31:0]
- reg_la1_ena = 0x00000000; // [63:32]
- reg_la2_ena = 0xFFFFFFFF; // [95:64]
+ reg_la1_ena = 0x00000000; // [95:64]
+ reg_la2_ena = 0x00000000; // [63:32]
reg_la3_ena = 0xFFFFFFFF; // [127:96]
+ // Set Counter value to zero through LA probes [63:32]
+ reg_la2_data = 0x00000002;
+
}
diff --git a/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v b/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v
index ccbbb35..3528f47 100644
--- a/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v
+++ b/verilog/dv/caravel/user_proj_example/io_ports/io_ports_tb.v
@@ -49,12 +49,10 @@
// simulation. Normally this would be a slow clock and the digital PLL
// would be the fast clock.
- always #5 clock <= (clock === 1'b0);
- always #20 step <= !step;
+ always #12.5 clock <= (clock === 1'b0);
initial begin
clock = 0;
- step = 0;
end
initial begin
@@ -127,31 +125,6 @@
wire USER_VDD1V8 = power4;
wire VSS = 1'b0;
- caravel uut (
- .vddio (VDD3V3),
- .vssio (VSS),
- .vdda (VDD3V3),
- .vssa (VSS),
- .vccd (VDD1V8),
- .vssd (VSS),
- .vdda1 (USER_VDD3V3),
- .vdda2 (USER_VDD3V3),
- .vssa1 (VSS),
- .vssa2 (VSS),
- .vccd1 (USER_VDD1V8),
- .vccd2 (USER_VDD1V8),
- .vssd1 (VSS),
- .vssd2 (VSS),
- .clock (clock),
- .gpio (gpio),
- .mprj_io (mprj_io),
- .flash_csb(flash_csb),
- .flash_clk(flash_clk),
- .flash_io0(flash_io0),
- .flash_io1(flash_io1),
- .resetb (RSTB)
- );
-
reg step;
reg dir;
@@ -179,18 +152,6 @@
wire phase_b2_h;
wire resetn;
-
- spiflash #(
- .FILENAME("io_ports.hex")
- ) spiflash (
- .csb(flash_csb),
- .clk(flash_clk),
- .io0(flash_io0),
- .io1(flash_io1),
- .io2(), // not used
- .io3() // not used
- );
-
// assign CHARGEPUMP = mprj_io[15];
assign analog_out1 = mprj_io[27];
assign analog_out2 = mprj_io[28];
@@ -217,7 +178,7 @@
// assign mprj_io[22] = COPI;
assign mprj_io[32] = step;
assign mprj_io[33] = dir;
- assign resetn = ~RSTB;
+ assign resetn = RSTB;
always @(posedge clock) begin
if (!resetn) begin
@@ -254,6 +215,43 @@
end
end
+ caravel uut (
+ .vddio (VDD3V3),
+ .vssio (VSS),
+ .vdda (VDD3V3),
+ .vssa (VSS),
+ .vccd (VDD1V8),
+ .vssd (VSS),
+ .vdda1 (USER_VDD3V3),
+ .vdda2 (USER_VDD3V3),
+ .vssa1 (VSS),
+ .vssa2 (VSS),
+ .vccd1 (USER_VDD1V8),
+ .vccd2 (USER_VDD1V8),
+ .vssd1 (VSS),
+ .vssd2 (VSS),
+ .clock (clock),
+ .gpio (gpio),
+ .mprj_io (mprj_io),
+ .flash_csb(flash_csb),
+ .flash_clk(flash_clk),
+ .flash_io0(flash_io0),
+ .flash_io1(flash_io1),
+ .resetb (RSTB)
+ );
+
+
+ spiflash #(
+ .FILENAME("io_ports.hex")
+ ) spiflash (
+ .csb(flash_csb),
+ .clk(flash_clk),
+ .io0(flash_io0),
+ .io1(flash_io1),
+ .io2(), // not used
+ .io3() // not used
+ );
+
pwm_duty duty1(
.clk(clock),
.resetn(resetn),
diff --git a/verilog/rtl/rapcore_caravel.v b/verilog/rtl/rapcore_caravel.v
index c1147f8..fdb979e 100644
--- a/verilog/rtl/rapcore_caravel.v
+++ b/verilog/rtl/rapcore_caravel.v
@@ -20,7 +20,7 @@
*-------------------------------------------------------------
*/
-module rapcores #(
+module rapcore_caravel #(
parameter BITS = 32
)(
`ifdef USE_POWER_PINS
@@ -87,8 +87,8 @@
// Assuming LA probes [63:32] are for controlling the count register
assign la_write = ~la_oen[63:32] & ~{BITS{valid}};
// Assuming LA probes [65:64] are for controlling the count clk & reset
- assign clk = wb_clk_i;
- assign rst = (~la_oen[65]) ? la_data_in[65]: wb_rst_i;
+ assign clk = (~la_oen[64]) ? la_data_in[64]: wb_clk_i;
+ assign rst = ~la_oen[65] && la_data_in[65] && ~wb_rst_i;
// GPIO output enable (0 = output, 1 = input)
assign io_oeb[15] = 1'b0; // CHARGEPUMP
@@ -136,19 +136,20 @@
wire resetn;
reg [12:0] resetn_counter = 0;
- assign resetn = &resetn_counter;
+ assign resetn = &resetn_counter && rst;
always @(posedge wb_clk_i) begin
- if (!resetn && !wb_rst_i) resetn_counter <= resetn_counter +1;
+ if (!resetn && !wb_rst_i && rst) resetn_counter <= resetn_counter +1;
end
// IO
- assign io_out[7:0] = resetn_counter[7:0]; //count;
+ assign io_out[7:0] = resetn_counter[12:5]; //count;
rapcore rapcore0 (
// IO Pads
.CLK(wb_clk_i),
+ .resetn_in(resetn),
.CHARGEPUMP(io_out[15]),
.analog_cmp1(io_in[25]),
.analog_out1(io_out[27]),
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index b6e1d4f..271a862 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -64,7 +64,7 @@
/* User project is instantiated here */
/*--------------------------------------*/
- rapcores rapcores0 (
+ rapcore_caravel rapcore_caravel0 (
`ifndef SIM
`ifdef USE_POWER_PINS