Updated timer and prepare for reflow
diff --git a/verilog/rtl/hs32_user_proj/dev_timer.v b/verilog/rtl/hs32_user_proj/dev_timer.v index 3352d93..3b20e49 100644 --- a/verilog/rtl/hs32_user_proj/dev_timer.v +++ b/verilog/rtl/hs32_user_proj/dev_timer.v
@@ -63,13 +63,13 @@ endcase // Timer scaling - reg[9:0] divider; + reg[10:0] divider; wire scale_clk = clk_source == 1 ? 1 : - clk_source == 2 ? divider[2] : // scale clk 8 - clk_source == 3 ? divider[5] : // scale clk 64 - clk_source == 4 ? divider[7] : // scale clk 256 - clk_source == 5 ? divider[9] : // scale clk 1024 + clk_source == 2 ? divider[3] : // scale clk 8 + clk_source == 3 ? divider[6] : // scale clk 64 + clk_source == 4 ? divider[8] : // scale clk 256 + clk_source == 5 ? divider[10] : // scale clk 1024 clk_source == 6 ? io_risen : clk_source == 7 ? io_fallen : 0; // !! Check not disabled !! // @@ -82,7 +82,7 @@ timer_mode == `TIMER_MODE_SPWM ? io_spwm : timer_mode == `TIMER_MODE_DPWM ? io_dpwm : io_normal; assign io = output_mode == `TIMER_OUTPUT_INV ? ~io_output : io_output; - assign io_oe = timer_mode != 0; + assign io_oe = output_mode != 0; // Configuration, drives: match, tconfig always @(posedge clk) if(reset) begin @@ -108,7 +108,11 @@ always @(posedge clk) if(reset || we) begin divider <= 0; end else begin - divider <= divider + 1; + if(scale_clk) begin + divider <= 0; + end else begin + divider <= divider + 1; + end end // Counter, drives: counter
diff --git a/verilog/rtl/hs32cpu b/verilog/rtl/hs32cpu index 53cb12d..cf52da5 160000 --- a/verilog/rtl/hs32cpu +++ b/verilog/rtl/hs32cpu
@@ -1 +1 @@ -Subproject commit 53cb12d24426cce72ffac6a8057f95df8a6108c5 +Subproject commit cf52da5f677e86c0391191d52955eabbf8ca59c6