1.对于频繁使用的计算单元,可以做一个function,减少代码量,增加代码可读性。
function [9:0] s_value_function;input [9:0] q_sequence_value;
input [3:0] m_polar_len_n;
input [10:0] m_polar_len_N;
reg [4:0] var_tmp3_value;reg [2:0] m_polar_len_sub5 = m_polar_len_n -5; //0,1,2,3,4,5
reg [5:0] var_tmp0 = 1 << m_polar_len_sub5; //1,2,4,8,16,32reg [4:0] var_tmp1 = q_sequence_value % var_tmp0; // m/(N/32) (0-31)
reg [9:0] var_tmp2 = q_sequence_value - var_tmp1; // m - m/(N/32) (0-992=32*31)
reg [4:0] var_tmp3 = var_tmp2 >> m_polar_len_sub5; // j = (m - m/(N/32)) >> (1,2,4,8,16,32) (0-31)
reg [4:0] var_tmp4 = var_tmp3_value; // Q(j) (0-31)
reg [9:0] var_add0 = var_tmp4 << m_polar_len_sub5; // Q(j)*(N/32)
reg [4:0] var_add1 = var_tmp1;// mod(m,N/32)s_value_function = var_add0 + var_add1;// sum (0-1023)begincase (var_tmp3)5'd0: var_tmp3_value = 5'd0;5'd1: var_tmp3_value = 5'd1;5'd2: var_tmp3_value = 5'd2;5'd3: var_tmp3_value = 5'd4;5'd4: var_tmp3_value = 5'd3;5'd5: var_tmp3_value = 5'd5;5'd6: var_tmp3_value = 5'd6;5'd7: var_tmp3_value = 5'd7;5'd8: var_tmp3_value = 5'd8;5'd9: var_tmp3_value = 5'd10;5'd10: var_tmp3_value = 5'd12;5'd11: var_tmp3_value = 5'd14;5'd12: var_tmp3_value = 5'd16;5'd13: var_tmp3_value = 5'd18;5'd14: var_tmp3_value = 5'd20;5'd15: var_tmp3_value = 5'd22;5'd16: var_tmp3_value = 5'd8;5'd17: var_tmp3_value = 5'd11;5'd18: var_tmp3_value = 5'd13;5'd19: var_tmp3_value = 5'd15;5'd20: var_tmp3_value = 5'd17;5'd21: var_tmp3_value = 5'd19;5'd22: var_tmp3_value = 5'd21;5'd23: var_tmp3_value = 5'd23;5'd24: var_tmp3_value = 5'd24;5'd25: var_tmp3_value = 5'd25;5'd26: var_tmp3_value = 5'd26;5'd27: var_tmp3_value = 5'd28;5'd28: var_tmp3_value = 5'd27;5'd29: var_tmp3_value = 5'd29;5'd30: var_tmp3_value = 5'd30;5'd31: var_tmp3_value = 5'd31;default: var_tmp3_value = 5'd0;endcase
end
endfunction