verilog:可综合的function

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,32

reg [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)

begin
    case (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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值