⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mea.v

📁 rs的译码器
💻 V
📖 第 1 页 / 共 3 页
字号:
      end
    //in the above branches, we have deal with the detailed case of li = 1
    
    //in the following branches, we will deal with the detailed case of li = 2
    else if( current_state == swap_reload && clken == 1'b1 && reload_counter == 5'he && li == 5'h2 )
      begin
      R16 <= R15 ;       Q16 <= R16;  L16 <= L15;       U16 <= L16;
      R15 <= R14 ;       Q15 <= R15;  L15 <= L14;       U15 <= L15;
      R14 <= R13 ;       Q14 <= Q14;  L14 <= L13;       U14 <= U14;
      R13 <= R12 ;       Q13 <= Q13;  L13 <= L12;       U13 <= U13;
      R12 <= R11 ;       Q12 <= Q12;  L12 <= L11;       U12 <= U12;
      R11 <= R10 ;       Q11 <= Q11;  L11 <= L10;       U11 <= U11;
      R10 <= R9  ;       Q10 <= Q10;  L10 <= L9 ;       U10 <= U10;
      R9  <= R8  ;       Q9  <= Q9 ;  L9  <= L8 ;       U9  <= U9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end    
    //in the above branches, we have deal with the detailed case of li = 2
    
    //in the following branches, we will deal with the detailed case of li = 3
    else if( current_state == swap_reload && clken == 1'b1 && reload_counter == 5'hd && li == 5'h3 )
      begin
      R16 <= R15 ;       Q16 <= R16;  L16 <= L15;       U16 <= L16;
      R15 <= R14 ;       Q15 <= R15;  L15 <= L14;       U15 <= L15;
      R14 <= R13 ;       Q14 <= R14;  L14 <= L13;       U14 <= L14;
      R13 <= R12 ;       Q13 <= Q13;  L13 <= L12;       U13 <= U13;
      R12 <= R11 ;       Q12 <= Q12;  L12 <= L11;       U12 <= U12;
      R11 <= R10 ;       Q11 <= Q11;  L11 <= L10;       U11 <= U11;
      R10 <= R9  ;       Q10 <= Q10;  L10 <= L9 ;       U10 <= U10;
      R9  <= R8  ;       Q9  <= Q9 ;  L9  <= L8 ;       U9  <= U9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end    
    //in the above branches, we have deal with the detailed case of li = 3
    
    //in the following branches, we will deal with the detailed case of li = 4
    else if( current_state == swap_reload && clken == 1'b1 && reload_counter == 5'hc && li == 5'h4 )
      begin
      R16 <= R15 ;       Q16 <= R16;  L16 <= L15;       U16 <= L16;
      R15 <= R14 ;       Q15 <= R15;  L15 <= L14;       U15 <= L15;
      R14 <= R13 ;       Q14 <= R14;  L14 <= L13;       U14 <= L14;
      R13 <= R12 ;       Q13 <= R13;  L13 <= L12;       U13 <= L13;
      R12 <= R11 ;       Q12 <= Q12;  L12 <= L11;       U12 <= U12;
      R11 <= R10 ;       Q11 <= Q11;  L11 <= L10;       U11 <= U11;
      R10 <= R9  ;       Q10 <= Q10;  L10 <= L9 ;       U10 <= U10;
      R9  <= R8  ;       Q9  <= Q9 ;  L9  <= L8 ;       U9  <= U9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end    
    //in the above branches, we have deal with the detailed case of li = 4
    
    //in the following branches, we will deal with the detailed case of li = 5
    else if( current_state == swap_reload && clken == 1'b1 && reload_counter == 5'hb && li == 5'h5 )
      begin
      R16 <= R15 ;       Q16 <= R16;  L16 <= L15;       U16 <= L16;
      R15 <= R14 ;       Q15 <= R15;  L15 <= L14;       U15 <= L15;
      R14 <= R13 ;       Q14 <= R14;  L14 <= L13;       U14 <= L14;
      R13 <= R12 ;       Q13 <= R13;  L13 <= L12;       U13 <= L13;
      R12 <= R11 ;       Q12 <= R12;  L12 <= L11;       U12 <= L12;
      R11 <= R10 ;       Q11 <= Q11;  L11 <= L10;       U11 <= U11;
      R10 <= R9  ;       Q10 <= Q10;  L10 <= L9 ;       U10 <= U10;
      R9  <= R8  ;       Q9  <= Q9 ;  L9  <= L8 ;       U9  <= U9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end    
    //in the above branches, we have deal with the detailed case of li = 5
    
    //in the following branches, we will deal with the detailed case of li = 6
    else if( current_state == swap_reload && clken == 1'b1 && reload_counter == 5'ha && li == 5'h6 )
      begin
      R16 <= R15 ;       Q16 <= R16;  L16 <= L15;       U16 <= L16;
      R15 <= R14 ;       Q15 <= R15;  L15 <= L14;       U15 <= L15;
      R14 <= R13 ;       Q14 <= R14;  L14 <= L13;       U14 <= L14;
      R13 <= R12 ;       Q13 <= R13;  L13 <= L12;       U13 <= L13;
      R12 <= R11 ;       Q12 <= R12;  L12 <= L11;       U12 <= L12;
      R11 <= R10 ;       Q11 <= R11;  L11 <= L10;       U11 <= L11;
      R10 <= R9  ;       Q10 <= Q10;  L10 <= L9 ;       U10 <= U10;
      R9  <= R8  ;       Q9  <= Q9 ;  L9  <= L8 ;       U9  <= U9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end
    //in the above branches, we have deal with the detailed case of li = 6
    
    //in the following branches, we will deal with the detailed case of li = 7
    else if( current_state == swap_reload && clken == 1'b1 && reload_counter == 5'h9 && li == 5'h7 )
      begin
      R16 <= R15 ;       Q16 <= R16;  L16 <= L15;       U16 <= L16;
      R15 <= R14 ;       Q15 <= R15;  L15 <= L14;       U15 <= L15;
      R14 <= R13 ;       Q14 <= R14;  L14 <= L13;       U14 <= L14;
      R13 <= R12 ;       Q13 <= R13;  L13 <= L12;       U13 <= L13;
      R12 <= R11 ;       Q12 <= R12;  L12 <= L11;       U12 <= L12;
      R11 <= R10 ;       Q11 <= R11;  L11 <= L10;       U11 <= L11;
      R10 <= R9  ;       Q10 <= R10;  L10 <= L9 ;       U10 <= L10;
      R9  <= R8  ;       Q9  <= Q9 ;  L9  <= L8 ;       U9  <= U9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end
    //in the above branches, we have deal with the detailed case of li = 7
    
    //in the following branches, we will deal with the detailed case of li = 8
    else if( current_state == swap_reload && clken == 1'b1 && reload_counter == 5'h8 && li == 5'h8 )
      begin
      R16 <= R15 ;       Q16 <= R16;  L16 <= L15;       U16 <= L16;
      R15 <= R14 ;       Q15 <= R15;  L15 <= L14;       U15 <= L15;
      R14 <= R13 ;       Q14 <= R14;  L14 <= L13;       U14 <= L14;
      R13 <= R12 ;       Q13 <= R13;  L13 <= L12;       U13 <= L13;
      R12 <= R11 ;       Q12 <= R12;  L12 <= L11;       U12 <= L12;
      R11 <= R10 ;       Q11 <= R11;  L11 <= L10;       U11 <= L11;
      R10 <= R9  ;       Q10 <= R10;  L10 <= L9 ;       U10 <= L10;
      R9  <= R8  ;       Q9  <= R9 ;  L9  <= L8 ;       U9  <= L9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end    
    //in the above branches, we have deal with the detailed case of li = 8
    
    else if  (    current_state == swap_reload && clken == 1'b1 &&
              ( ( reload_counter >= 5'hf && reload_counter < 5'h10 && li == 5'h2 )
             || ( reload_counter >= 5'he && reload_counter < 5'h10 && li == 5'h3 )
             || ( reload_counter >= 5'hd && reload_counter < 5'h10 && li == 5'h4 )
             || ( reload_counter >= 5'hc && reload_counter < 5'h10 && li == 5'h5 )
             || ( reload_counter >= 5'hb && reload_counter < 5'h10 && li == 5'h6 )
             || ( reload_counter >= 5'ha && reload_counter < 5'h10 && li == 5'h7 )
             || ( reload_counter >= 5'h9 && reload_counter < 5'h10 && li == 5'h8 ) )
             ) 
      begin
      R16 <= R15 ;       Q16 <= Q16;  L16 <= L15;       U16 <= U16;
      R15 <= R14 ;       Q15 <= Q15;  L15 <= L14;       U15 <= U15;
      R14 <= R13 ;       Q14 <= Q14;  L14 <= L13;       U14 <= U14;
      R13 <= R12 ;       Q13 <= Q13;  L13 <= L12;       U13 <= U13;
      R12 <= R11 ;       Q12 <= Q12;  L12 <= L11;       U12 <= U12;
      R11 <= R10 ;       Q11 <= Q11;  L11 <= L10;       U11 <= U11;
      R10 <= R9  ;       Q10 <= Q10;  L10 <= L9 ;       U10 <= U10;
      R9  <= R8  ;       Q9  <= Q9 ;  L9  <= L8 ;       U9  <= U9 ;
      R8  <= R7  ;       Q8  <= Q8 ;  L8  <= L7 ;       U8  <= U8 ;
      R7  <= R6  ;       Q7  <= Q7 ;  L7  <= L6 ;       U7  <= U7 ;
      R6  <= R5  ;       Q6  <= Q6 ;  L6  <= L5 ;       U6  <= U6 ;
      R5  <= R4  ;       Q5  <= Q5 ;  L5  <= L4 ;       U5  <= U5 ;
      R4  <= R3  ;       Q4  <= Q4 ;  L4  <= L3 ;       U4  <= U4 ;
      R3  <= R2  ;       Q3  <= Q3 ;  L3  <= L2 ;       U3  <= U3 ;
      R2  <= R1  ;       Q2  <= Q2 ;  L2  <= L1 ;       U2  <= U2 ;
      R1  <= R0  ;       Q1  <= Q1 ;  L1  <= L0 ;       U1  <= U1 ;
      R0  <= result_RQ ; Q0  <= Q0 ;  L0  <= result_LU; U0  <= U0 ;
      end
    
    else if( (current_state == swap_reload || current_state == non_swap_reload) && clken == 1'b1 && reload_counter >= 5'h10 )
      begin
      R16 <= R16 ;       Q16 <= Q16;  L16 <= L16;       U16 <= U16;
      R15 <= R15 ;       Q15 <= Q15;  L15 <= L15;       U15 <= U15;
      R14 <= R14 ;       Q14 <= Q14;  L14 <= L14;       U14 <= U14;
      R13 <= R13 ;       Q13 <= Q13;  L13 <= L13;       U13 <= U13;
      R12 <= R12 ;       Q12 <= Q12;  L12 <= L12;       U12 <= U12;
      R11 <= R11 ;       Q11 <= Q11;  L11 <= L11;       U11 <= U11;
      R10 <= R10 ;       Q10 <= Q10;  L10 <= L10;       U10 <= U10;
      R9  <= R9  ;       Q9  <= Q9 ;  L9  <= L9 ;       U9  <= U9 ;
      R8  <= R8  ;       Q8  <= Q8 ;  L8  <= L8 ;       U8  <= U8 ;
      R7  <= R7  ;       Q7  <= Q7 ;  L7  <= L7 ;       U7  <= U7 ;
      R6  <= R6  ;       Q6  <= Q6 ;  L6  <= L6 ;       U6  <= U6 ;
      R5  <= R5  ;       Q5  <= Q5 ;  L5  <= L5 ;       U5  <= U5 ;
      R4  <= R4  ;       Q4  <= Q4 ;  L4  <= L4 ;       U4  <= U4 ;
      R3  <= R3  ;       Q3  <= Q3 ;  L3  <= L3 ;       U3  <= U3 ;
      R2  <= R2  ;       Q2  <= Q2 ;  L2  <= L2 ;       U2  <= U2 ;
      R1  <= R1  ;       Q1  <= Q1 ;  L1  <= L1 ;       U1  <= U1 ;
      R0  <= R0  ;       Q0  <= Q0 ;  L0  <= L0 ;       U0  <= U0 ;
      end
  end


always@(posedge clk or negedge n_rst)
  begin
    if ( n_rst == 1'b0 )
      data_out_valid <= 1'b0;
    else if ( clken == 1'b1 && phase1 == 1'b1 )
      data_out_valid <= data_in_valid;
    else;
  end

assign data_out_start = stop;


always@(posedge clk or negedge n_rst )
  begin
    if ( n_rst == 1'b0 )
      syndrome_zero <= 1'b0;
    else if (   syndrome_in == 1'b1 && syndrome15 == 8'h0 && syndrome14 == 8'h0 && syndrome13 == 8'h0 && syndrome12 == 8'h0
              && syndrome11 == 8'h0 && syndrome10 == 8'h0 && syndrome9  == 8'h0 && syndrome8  == 8'h0 && syndrome7  == 8'h0
              && syndrome6  == 8'h0 && syndrome5  == 8'h0 && syndrome4  == 8'h0 && syndrome3  == 8'h0 && syndrome2  == 8'h0
              && syndrome1  == 8'h0 && syndrome0  == 8'h0 && clken == 1'b1 && phase1 == 1'b1 )
      syndrome_zero <= 1'b1; 
    else if ( syndrome_in == 1'b1 && ( syndrome15 != 8'h0 || syndrome14 != 8'h0 || syndrome13 != 8'h0 || syndrome12 != 8'h0
              || syndrome11 != 8'h0 || syndrome10 != 8'h0 || syndrome9  != 8'h0 || syndrome8  != 8'h0 || syndrome7  != 8'h0
              || syndrome6  != 8'h0 || syndrome5  != 8'h0 || syndrome4  != 8'h0 || syndrome3  != 8'h0 || syndrome2  != 8'h0
              || syndrome1  != 8'h0 || syndrome0  != 8'h0 ) && clken == 1'b1 && phase1 == 1'b1 )
      syndrome_zero <= 1'b0;
    else if ( clken == 1'b1 && phase1 == 1'b1 )
      syndrome_zero <= syndrome_zero;
    else;
  end

assign omega16 = ( stop == 1'b1 ) ? R16 : 8'h0 ;
assign omega15 = ( stop == 1'b1 ) ? R15 : 8'h0 ;
assign omega14 = ( stop == 1'b1 ) ? R14 : 8'h0 ;
assign omega13 = ( stop == 1'b1 ) ? R13 : 8'h0 ;
assign omega12 = ( stop == 1'b1 ) ? R12 : 8'h0 ;
assign omega11 = ( stop == 1'b1 ) ? R11 : 8'h0 ;
assign omega10 = ( stop == 1'b1 ) ? R10 : 8'h0 ;
assign omega9  = ( stop == 1'b1 ) ? R9  : 8'h0 ;
assign omega8  = ( stop == 1'b1 ) ? R8  : 8'h0 ;
assign omega7  = ( stop == 1'b1 ) ? R7  : 8'h0 ;
assign omega6  = ( stop == 1'b1 ) ? R6  : 8'h0 ;
assign omega5  = ( stop == 1'b1 ) ? R5  : 8'h0 ;
assign omega4  = ( stop == 1'b1 ) ? R4  : 8'h0 ;
assign omega3  = ( stop == 1'b1 ) ? R3  : 8'h0 ;
assign omega2  = ( stop == 1'b1 ) ? R2  : 8'h0 ;
assign omega1  = ( stop == 1'b1 ) ? R1  : 8'h0 ;
assign omega0  = ( stop == 1'b1 ) ? R0  : 8'h0 ;

assign delta16 = ( stop == 1'b1 ) ? L16 : 8'h0 ;
assign delta15 = ( stop == 1'b1 ) ? L15 : 8'h0 ;
assign delta14 = ( stop == 1'b1 ) ? L14 : 8'h0 ;
assign delta13 = ( stop == 1'b1 ) ? L13 : 8'h0 ;
assign delta12 = ( stop == 1'b1 ) ? L12 : 8'h0 ;
assign delta11 = ( stop == 1'b1 ) ? L11 : 8'h0 ;
assign delta10 = ( stop == 1'b1 ) ? L10 : 8'h0 ;
assign delta9  = ( stop == 1'b1 ) ? L9  : 8'h0 ;
assign delta8  = ( stop == 1'b1 ) ? L8  : 8'h0 ;
assign delta7  = ( stop == 1'b1 ) ? L7  : 8'h0 ;
assign delta6  = ( stop == 1'b1 ) ? L6  : 8'h0 ;
assign delta5  = ( stop == 1'b1 ) ? L5  : 8'h0 ;
assign delta4  = ( stop == 1'b1 ) ? L4  : 8'h0 ;
assign delta3  = ( stop == 1'b1 ) ? L3  : 8'h0 ;
assign delta2  = ( stop == 1'b1 ) ? L2  : 8'h0 ;
assign delta1  = ( stop == 1'b1 ) ? L1  : 8'h0 ;
assign delta0  = ( stop == 1'b1 ) ? L0  : 8'h0 ;
              
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -