@@ -27,8 +27,6 @@ parameter [1:0] READ_RAM = 2'b01; // Read RAM Data
2727parameter [1 : 0 ] SEND_BIT = 2'b10 ; // Send Data Bit
2828parameter [1 : 0 ] SEND_RST = 2'b11 ; // Send Reset Code
2929
30- logic bit_rdy;
31-
3230logic ram_rd_st;
3331logic ram_rd_en;
3432logic [31 : 0 ] ram_rd_q;
@@ -45,7 +43,7 @@ logic ram_rd_rdy;
4543logic ram_rd_done;
4644
4745wire bit_done = ram_rd_st | bit_done_in;
48- wire ram_next = bit_done & (bit_sel == 5'd23 );
46+ wire ram_next = (bit_sel == 5'd23 );
4947wire ram_done = (ram_rd_addr == 6'h00 );
5048
5149edge2en ram_rd_en_edge (
8583 if (! rst_n_in) begin
8684 ctl_sta <= IDLE ;
8785
88- bit_rdy <= 1'b0 ;
89-
9086 ram_rd_st <= 1'b0 ;
9187 ram_rd_en <= 1'b0 ;
9288
@@ -97,28 +93,26 @@ begin
9793 bit_data_out <= 1'b0 ;
9894 end else begin
9995 case (ctl_sta)
100- IDLE :
101- ctl_sta <= frame_rdy_in ? READ_RAM : ctl_sta;
102- READ_RAM :
103- ctl_sta <= ram_rd_done ? SEND_BIT : ctl_sta;
104- SEND_BIT :
105- ctl_sta <= ram_next ? (ram_done ? SEND_RST : READ_RAM ) : ctl_sta;
106- SEND_RST :
107- ctl_sta <= (rst_cnt == CNT_50_US ) ? IDLE : ctl_sta;
108- default :
109- ctl_sta <= IDLE ;
96+ IDLE :
97+ ctl_sta <= frame_rdy_in ? READ_RAM : ctl_sta;
98+ READ_RAM :
99+ ctl_sta <= ram_rd_done ? SEND_BIT : ctl_sta;
100+ SEND_BIT :
101+ ctl_sta <= (bit_done & ram_next) ? (ram_done ? SEND_RST : READ_RAM ) : ctl_sta;
102+ SEND_RST :
103+ ctl_sta <= (rst_cnt == CNT_50_US ) ? IDLE : ctl_sta;
104+ default :
105+ ctl_sta <= IDLE ;
110106 endcase
111107
112- bit_rdy <= (ctl_sta == SEND_BIT ) & bit_done;
113-
114- ram_rd_st <= ((ctl_sta == IDLE ) | ram_rd_st) & (ctl_sta != SEND_BIT );
108+ ram_rd_st <= (ctl_sta != SEND_BIT ) & ((ctl_sta == IDLE ) | ram_rd_st);
115109 ram_rd_en <= (ctl_sta == READ_RAM ) & ~ ram_rd_done;
116110
117- bit_sel <= (ctl_sta == SEND_BIT ) ? bit_sel + bit_done : 5'h00 ;
111+ bit_sel <= (ctl_sta == SEND_BIT ) ? bit_sel + ( bit_done & ~ ram_next) : 5'h00 ;
118112 rst_cnt <= (ctl_sta == SEND_RST ) ? rst_cnt + 1'b1 : 16'h0000 ;
119113
120- bit_rdy_out <= bit_rdy ;
121- bit_data_out <= ram_rd_data[5'd23 - bit_sel];
114+ bit_rdy_out <= (ctl_sta == SEND_BIT ) & bit_done ;
115+ bit_data_out <= (ctl_sta == SEND_BIT ) & bit_done ? ram_rd_data[5'd23 - bit_sel] : bit_data_out ;
122116 end
123117end
124118
0 commit comments