📄 mea.v
字号:
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 + -