Skip to content

Commit 5ec6599

Browse files
committed
Rewrite resets
1 parent 4eccd3d commit 5ec6599

File tree

8 files changed

+219
-206
lines changed

8 files changed

+219
-206
lines changed

rtl/i2c_init.v

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,30 @@ always @* begin
431431
end
432432

433433
always @(posedge clk) begin
434+
state_reg <= state_next;
435+
436+
// read init_data ROM
437+
init_data_reg <= init_data[address_next];
438+
439+
address_reg <= address_next;
440+
address_ptr_reg <= address_ptr_next;
441+
data_ptr_reg <= data_ptr_next;
442+
443+
cur_address_reg <= cur_address_next;
444+
445+
cmd_address_reg <= cmd_address_next;
446+
cmd_start_reg <= cmd_start_next;
447+
cmd_write_reg <= cmd_write_next;
448+
cmd_stop_reg <= cmd_stop_next;
449+
cmd_valid_reg <= cmd_valid_next;
450+
451+
data_out_reg <= data_out_next;
452+
data_out_valid_reg <= data_out_valid_next;
453+
454+
start_flag_reg <= start & start_flag_next;
455+
456+
busy_reg <= (state_reg != STATE_IDLE);
457+
434458
if (rst) begin
435459
state_reg <= STATE_IDLE;
436460

@@ -449,33 +473,7 @@ always @(posedge clk) begin
449473
start_flag_reg <= 1'b0;
450474

451475
busy_reg <= 1'b0;
452-
end else begin
453-
state_reg <= state_next;
454-
455-
// read init_data ROM
456-
init_data_reg <= init_data[address_next];
457-
458-
address_reg <= address_next;
459-
address_ptr_reg <= address_ptr_next;
460-
data_ptr_reg <= data_ptr_next;
461-
462-
cur_address_reg <= cur_address_next;
463-
464-
cmd_valid_reg <= cmd_valid_next;
465-
466-
data_out_valid_reg <= data_out_valid_next;
467-
468-
start_flag_reg <= start & start_flag_next;
469-
470-
busy_reg <= (state_reg != STATE_IDLE);
471476
end
472-
473-
cmd_address_reg <= cmd_address_next;
474-
cmd_start_reg <= cmd_start_next;
475-
cmd_write_reg <= cmd_write_next;
476-
cmd_stop_reg <= cmd_stop_next;
477-
478-
data_out_reg <= data_out_next;
479477
end
480478

481479
endmodule

rtl/i2c_master.v

Lines changed: 45 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -827,49 +827,8 @@ always @* begin
827827
end
828828

829829
always @(posedge clk) begin
830-
if (rst) begin
831-
state_reg <= STATE_IDLE;
832-
phy_state_reg <= PHY_STATE_IDLE;
833-
delay_reg <= 16'd0;
834-
delay_scl_reg <= 1'b0;
835-
delay_sda_reg <= 1'b0;
836-
cmd_ready_reg <= 1'b0;
837-
data_in_ready_reg <= 1'b0;
838-
data_out_valid_reg <= 1'b0;
839-
scl_o_reg <= 1'b1;
840-
sda_o_reg <= 1'b1;
841-
busy_reg <= 1'b0;
842-
bus_active_reg <= 1'b0;
843-
bus_control_reg <= 1'b0;
844-
missed_ack_reg <= 1'b0;
845-
end else begin
846-
state_reg <= state_next;
847-
phy_state_reg <= phy_state_next;
848-
849-
delay_reg <= delay_next;
850-
delay_scl_reg <= delay_scl_next;
851-
delay_sda_reg <= delay_sda_next;
852-
853-
cmd_ready_reg <= cmd_ready_next;
854-
data_in_ready_reg <= data_in_ready_next;
855-
data_out_valid_reg <= data_out_valid_next;
856-
857-
scl_o_reg <= scl_o_next;
858-
sda_o_reg <= sda_o_next;
859-
860-
busy_reg <= !(state_reg == STATE_IDLE || state_reg == STATE_ACTIVE_WRITE || state_reg == STATE_ACTIVE_READ) || !(phy_state_reg == PHY_STATE_IDLE || phy_state_reg == PHY_STATE_ACTIVE);
861-
862-
if (start_bit) begin
863-
bus_active_reg <= 1'b1;
864-
end else if (stop_bit) begin
865-
bus_active_reg <= 1'b0;
866-
end else begin
867-
bus_active_reg <= bus_active_reg;
868-
end
869-
870-
bus_control_reg <= bus_control_next;
871-
missed_ack_reg <= missed_ack_next;
872-
end
830+
state_reg <= state_next;
831+
phy_state_reg <= phy_state_next;
873832

874833
phy_rx_data_reg <= phy_rx_data_next;
875834

@@ -881,15 +840,58 @@ always @(posedge clk) begin
881840
mode_write_multiple_reg <= mode_write_multiple_next;
882841
mode_stop_reg <= mode_stop_next;
883842

843+
delay_reg <= delay_next;
844+
delay_scl_reg <= delay_scl_next;
845+
delay_sda_reg <= delay_sda_next;
846+
884847
bit_count_reg <= bit_count_next;
885848

849+
cmd_ready_reg <= cmd_ready_next;
850+
851+
data_in_ready_reg <= data_in_ready_next;
852+
886853
data_out_reg <= data_out_next;
887854
data_out_last_reg <= data_out_last_next;
855+
data_out_valid_reg <= data_out_valid_next;
888856

889857
scl_i_reg <= scl_i;
890858
sda_i_reg <= sda_i;
859+
860+
scl_o_reg <= scl_o_next;
861+
sda_o_reg <= sda_o_next;
862+
891863
last_scl_i_reg <= scl_i_reg;
892864
last_sda_i_reg <= sda_i_reg;
865+
866+
busy_reg <= !(state_reg == STATE_IDLE || state_reg == STATE_ACTIVE_WRITE || state_reg == STATE_ACTIVE_READ) || !(phy_state_reg == PHY_STATE_IDLE || phy_state_reg == PHY_STATE_ACTIVE);
867+
868+
if (start_bit) begin
869+
bus_active_reg <= 1'b1;
870+
end else if (stop_bit) begin
871+
bus_active_reg <= 1'b0;
872+
end else begin
873+
bus_active_reg <= bus_active_reg;
874+
end
875+
876+
bus_control_reg <= bus_control_next;
877+
missed_ack_reg <= missed_ack_next;
878+
879+
if (rst) begin
880+
state_reg <= STATE_IDLE;
881+
phy_state_reg <= PHY_STATE_IDLE;
882+
delay_reg <= 16'd0;
883+
delay_scl_reg <= 1'b0;
884+
delay_sda_reg <= 1'b0;
885+
cmd_ready_reg <= 1'b0;
886+
data_in_ready_reg <= 1'b0;
887+
data_out_valid_reg <= 1'b0;
888+
scl_o_reg <= 1'b1;
889+
sda_o_reg <= 1'b1;
890+
busy_reg <= 1'b0;
891+
bus_active_reg <= 1'b0;
892+
bus_control_reg <= 1'b0;
893+
missed_ack_reg <= 1'b0;
894+
end
893895
end
894896

895897
endmodule

rtl/i2c_master_axil.v

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,34 @@ always @* begin
640640
end
641641

642642
always @(posedge clk) begin
643+
s_axil_awready_reg <= s_axil_awready_next;
644+
s_axil_wready_reg <= s_axil_wready_next;
645+
s_axil_bvalid_reg <= s_axil_bvalid_next;
646+
s_axil_arready_reg <= s_axil_arready_next;
647+
s_axil_rdata_reg <= s_axil_rdata_next;
648+
s_axil_rvalid_reg <= s_axil_rvalid_next;
649+
650+
cmd_address_reg <= cmd_address_next;
651+
cmd_start_reg <= cmd_start_next;
652+
cmd_read_reg <= cmd_read_next;
653+
cmd_write_reg <= cmd_write_next;
654+
cmd_write_multiple_reg <= cmd_write_multiple_next;
655+
cmd_stop_reg <= cmd_stop_next;
656+
cmd_valid_reg <= cmd_valid_next;
657+
658+
data_in_reg <= data_in_next;
659+
data_in_valid_reg <= data_in_valid_next;
660+
data_in_last_reg <= data_in_last_next;
661+
662+
data_out_ready_reg <= data_out_ready_next;
663+
664+
prescale_reg <= prescale_next;
665+
666+
missed_ack_reg <= missed_ack_next;
667+
668+
cmd_fifo_overflow_reg <= cmd_fifo_overflow_next;
669+
write_fifo_overflow_reg <= write_fifo_overflow_next;
670+
643671
if (rst) begin
644672
s_axil_awready_reg <= 1'b0;
645673
s_axil_wready_reg <= 1'b0;
@@ -653,32 +681,7 @@ always @(posedge clk) begin
653681
missed_ack_reg <= 1'b0;
654682
cmd_fifo_overflow_reg <= 1'b0;
655683
write_fifo_overflow_reg <= 1'b0;
656-
end else begin
657-
s_axil_awready_reg <= s_axil_awready_next;
658-
s_axil_wready_reg <= s_axil_wready_next;
659-
s_axil_bvalid_reg <= s_axil_bvalid_next;
660-
s_axil_arready_reg <= s_axil_arready_next;
661-
s_axil_rvalid_reg <= s_axil_rvalid_next;
662-
cmd_valid_reg <= cmd_valid_next;
663-
data_in_valid_reg <= data_in_valid_next;
664-
data_out_ready_reg <= data_out_ready_next;
665-
prescale_reg <= prescale_next;
666-
missed_ack_reg <= missed_ack_next;
667-
cmd_fifo_overflow_reg <= cmd_fifo_overflow_next;
668-
write_fifo_overflow_reg <= write_fifo_overflow_next;
669684
end
670-
671-
s_axil_rdata_reg <= s_axil_rdata_next;
672-
673-
cmd_address_reg <= cmd_address_next;
674-
cmd_start_reg <= cmd_start_next;
675-
cmd_read_reg <= cmd_read_next;
676-
cmd_write_reg <= cmd_write_next;
677-
cmd_write_multiple_reg <= cmd_write_multiple_next;
678-
cmd_stop_reg <= cmd_stop_next;
679-
680-
data_in_reg <= data_in_next;
681-
data_in_last_reg <= data_in_last_next;
682685
end
683686

684687
i2c_master

rtl/i2c_master_wbs_16.v

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -585,37 +585,40 @@ always @* begin
585585
end
586586

587587
always @(posedge clk) begin
588-
if (rst) begin
589-
wbs_ack_o_reg <= 1'b0;
590-
cmd_valid_reg <= 1'b0;
591-
data_in_valid_reg <= 1'b0;
592-
data_out_ready_reg <= 1'b0;
593-
prescale_reg <= DEFAULT_PRESCALE;
594-
missed_ack_reg <= 1'b0;
595-
cmd_fifo_overflow_reg <= 0;
596-
write_fifo_overflow_reg <= 0;
597-
end else begin
598-
wbs_ack_o_reg <= wbs_ack_o_next;
599-
cmd_valid_reg <= cmd_valid_next;
600-
data_in_valid_reg <= data_in_valid_next;
601-
data_out_ready_reg <= data_out_ready_next;
602-
prescale_reg <= prescale_next;
603-
missed_ack_reg <= missed_ack_next;
604-
cmd_fifo_overflow_reg <= cmd_fifo_overflow_next;
605-
write_fifo_overflow_reg <= write_fifo_overflow_next;
606-
end
607-
608588
wbs_dat_o_reg <= wbs_dat_o_next;
589+
wbs_ack_o_reg <= wbs_ack_o_next;
609590

610591
cmd_address_reg <= cmd_address_next;
611592
cmd_start_reg <= cmd_start_next;
612593
cmd_read_reg <= cmd_read_next;
613594
cmd_write_reg <= cmd_write_next;
614595
cmd_write_multiple_reg <= cmd_write_multiple_next;
615596
cmd_stop_reg <= cmd_stop_next;
616-
597+
cmd_valid_reg <= cmd_valid_next;
598+
617599
data_in_reg <= data_in_next;
600+
data_in_valid_reg <= data_in_valid_next;
618601
data_in_last_reg <= data_in_last_next;
602+
603+
data_out_ready_reg <= data_out_ready_next;
604+
605+
prescale_reg <= prescale_next;
606+
607+
missed_ack_reg <= missed_ack_next;
608+
609+
cmd_fifo_overflow_reg <= cmd_fifo_overflow_next;
610+
write_fifo_overflow_reg <= write_fifo_overflow_next;
611+
612+
if (rst) begin
613+
wbs_ack_o_reg <= 1'b0;
614+
cmd_valid_reg <= 1'b0;
615+
data_in_valid_reg <= 1'b0;
616+
data_out_ready_reg <= 1'b0;
617+
prescale_reg <= DEFAULT_PRESCALE;
618+
missed_ack_reg <= 1'b0;
619+
cmd_fifo_overflow_reg <= 0;
620+
write_fifo_overflow_reg <= 0;
621+
end
619622
end
620623

621624
i2c_master

rtl/i2c_master_wbs_8.v

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -575,37 +575,40 @@ always @* begin
575575
end
576576

577577
always @(posedge clk) begin
578-
if (rst) begin
579-
wbs_ack_o_reg <= 1'b0;
580-
cmd_valid_reg <= 1'b0;
581-
data_in_valid_reg <= 1'b0;
582-
data_out_ready_reg <= 1'b0;
583-
prescale_reg <= DEFAULT_PRESCALE;
584-
missed_ack_reg <= 1'b0;
585-
cmd_fifo_overflow_reg <= 1'b0;
586-
write_fifo_overflow_reg <= 1'b0;
587-
end else begin
588-
wbs_ack_o_reg <= wbs_ack_o_next;
589-
cmd_valid_reg <= cmd_valid_next;
590-
data_in_valid_reg <= data_in_valid_next;
591-
data_out_ready_reg <= data_out_ready_next;
592-
prescale_reg <= prescale_next;
593-
missed_ack_reg <= missed_ack_next;
594-
cmd_fifo_overflow_reg <= cmd_fifo_overflow_next;
595-
write_fifo_overflow_reg <= write_fifo_overflow_next;
596-
end
597-
598578
wbs_dat_o_reg <= wbs_dat_o_next;
579+
wbs_ack_o_reg <= wbs_ack_o_next;
599580

600581
cmd_address_reg <= cmd_address_next;
601582
cmd_start_reg <= cmd_start_next;
602583
cmd_read_reg <= cmd_read_next;
603584
cmd_write_reg <= cmd_write_next;
604585
cmd_write_multiple_reg <= cmd_write_multiple_next;
605586
cmd_stop_reg <= cmd_stop_next;
606-
587+
cmd_valid_reg <= cmd_valid_next;
588+
607589
data_in_reg <= data_in_next;
590+
data_in_valid_reg <= data_in_valid_next;
608591
data_in_last_reg <= data_in_last_next;
592+
593+
data_out_ready_reg <= data_out_ready_next;
594+
595+
prescale_reg <= prescale_next;
596+
597+
missed_ack_reg <= missed_ack_next;
598+
599+
cmd_fifo_overflow_reg <= cmd_fifo_overflow_next;
600+
write_fifo_overflow_reg <= write_fifo_overflow_next;
601+
602+
if (rst) begin
603+
wbs_ack_o_reg <= 1'b0;
604+
cmd_valid_reg <= 1'b0;
605+
data_in_valid_reg <= 1'b0;
606+
data_out_ready_reg <= 1'b0;
607+
prescale_reg <= DEFAULT_PRESCALE;
608+
missed_ack_reg <= 1'b0;
609+
cmd_fifo_overflow_reg <= 0;
610+
write_fifo_overflow_reg <= 0;
611+
end
609612
end
610613

611614
i2c_master

0 commit comments

Comments
 (0)