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

📄 alpha_cal.v

📁 上传的是WIMAX系统中
💻 V
📖 第 1 页 / 共 2 页
字号:
reg [BRANCH_MATRIC_WIDTH-1:0] gamma15,gamma14,gamma13,gamma12,                              gamma11,gamma10,gamma9, gamma8,                              gamma7, gamma6, gamma5, gamma4,                              gamma3, gamma2, gamma1, gamma0;
always @ ( posedge clk_sys or negedge rst_b ) begin
    if( !rst_b ) begin
        { gamma15, gamma14, gamma13, gamma12,
            gamma11, gamma10, gamma9, gamma8,
                gamma7, gamma6, gamma5, gamma4,
                    gamma3, gamma2, gamma1, gamma0 }
                        <= 1'b0;
    end
    else if( clr_alpha ) begin
            { gamma15, gamma14, gamma13, gamma12,
                gamma11, gamma10, gamma9, gamma8,
                    gamma7, gamma6, gamma5, gamma4,
                        gamma3, gamma2, gamma1, gamma0 }
                            <= 1'b0;
        end
        else if( alpha_source_val_d2 ) begin
            { gamma15, gamma14, gamma13, gamma12,
                gamma11, gamma10, gamma9, gamma8,
                    gamma7, gamma6, gamma5, gamma4,
                        gamma3, gamma2, gamma1, gamma0 }
                            <=
            { gamma15_t2, gamma14_t2, gamma13_t2, gamma12_t2,
                gamma11_t2, gamma10_t2, gamma9_t2, gamma8_t2,
                    gamma7_t2, gamma6_t2, gamma5_t2, gamma4_t2,
                        gamma3_t2, gamma2_t2, gamma1_t2, gamma0_t2 };
        end
        else begin
            { gamma15, gamma14, gamma13, gamma12,
                gamma11, gamma10, gamma9, gamma8,
                    gamma7, gamma6, gamma5, gamma4,
                        gamma3, gamma2, gamma1, gamma0 }
                            <=
            { gamma15, gamma14, gamma13, gamma12,
                gamma11, gamma10, gamma9, gamma8,
                    gamma7, gamma6, gamma5, gamma4,
                        gamma3, gamma2, gamma1, gamma0 };
        end
end

///************************************************************************
///alpha calculator
///************************************************************************
wire [STATE_MATRIC_WIDTH-1:0] alpha00,alpha01,alpha02,alpha03,
                              alpha10,alpha11,alpha12,alpha13,
                              alpha20,alpha21,alpha22,alpha23,
                              alpha30,alpha31,alpha32,alpha33,
                              alpha40,alpha41,alpha42,alpha43,
                              alpha50,alpha51,alpha52,alpha53,
                              alpha60,alpha61,alpha62,alpha63,
                              alpha70,alpha71,alpha72,alpha73;

///alpha cal: natural overflow, modulo normaliztion
///gamma: sign extension
///cal alpha0
assign  alpha00 = alpha0 + {{3{gamma0[BRANCH_MATRIC_WIDTH-1]}},gamma0};
assign  alpha01 = alpha6 + {{3{gamma6[BRANCH_MATRIC_WIDTH-1]}},gamma6};
assign  alpha02 = alpha1 + {{3{gamma11[BRANCH_MATRIC_WIDTH-1]}},gamma11};
assign  alpha03 = alpha7 + {{3{gamma13[BRANCH_MATRIC_WIDTH-1]}},gamma13};
///cal alpha1
assign  alpha10 = alpha2 + {{3{gamma2[BRANCH_MATRIC_WIDTH-1]}},gamma2};
assign  alpha11 = alpha4 + {{3{gamma4[BRANCH_MATRIC_WIDTH-1]}},gamma4};
assign  alpha12 = alpha3 + {{3{gamma9[BRANCH_MATRIC_WIDTH-1]}},gamma9};
assign  alpha13 = alpha5 + {{3{gamma15[BRANCH_MATRIC_WIDTH-1]}},gamma15};
///cal alpha2
assign  alpha20 = alpha5 + {{3{gamma3[BRANCH_MATRIC_WIDTH-1]}},gamma3};
assign  alpha21 = alpha3 + {{3{gamma5[BRANCH_MATRIC_WIDTH-1]}},gamma5};
assign  alpha22 = alpha4 + {{3{gamma8[BRANCH_MATRIC_WIDTH-1]}},gamma8};
assign  alpha23 = alpha2 + {{3{gamma14[BRANCH_MATRIC_WIDTH-1]}},gamma14};
///cal alpha3
assign  alpha30 = alpha7 + {{3{gamma1[BRANCH_MATRIC_WIDTH-1]}},gamma1};
assign  alpha31 = alpha1 + {{3{gamma7[BRANCH_MATRIC_WIDTH-1]}},gamma7};
assign  alpha32 = alpha6 + {{3{gamma10[BRANCH_MATRIC_WIDTH-1]}},gamma10};
assign  alpha33 = alpha0 + {{3{gamma12[BRANCH_MATRIC_WIDTH-1]}},gamma12};
///cal alpha4
assign  alpha40 = alpha1 + {{3{gamma0[BRANCH_MATRIC_WIDTH-1]}},gamma0};
assign  alpha41 = alpha7 + {{3{gamma6[BRANCH_MATRIC_WIDTH-1]}},gamma6};
assign  alpha42 = alpha0 + {{3{gamma11[BRANCH_MATRIC_WIDTH-1]}},gamma11};
assign  alpha43 = alpha6 + {{3{gamma13[BRANCH_MATRIC_WIDTH-1]}},gamma13};
///cal alpha5
assign  alpha50 = alpha3 + {{3{gamma2[BRANCH_MATRIC_WIDTH-1]}},gamma2};
assign  alpha51 = alpha5 + {{3{gamma4[BRANCH_MATRIC_WIDTH-1]}},gamma4};
assign  alpha52 = alpha2 + {{3{gamma9[BRANCH_MATRIC_WIDTH-1]}},gamma9};
assign  alpha53 = alpha4 + {{3{gamma15[BRANCH_MATRIC_WIDTH-1]}},gamma15};
///cal alpha6
assign  alpha60 = alpha4 + {{3{gamma3[BRANCH_MATRIC_WIDTH-1]}},gamma3};
assign  alpha61 = alpha2 + {{3{gamma5[BRANCH_MATRIC_WIDTH-1]}},gamma5};
assign  alpha62 = alpha5 + {{3{gamma8[BRANCH_MATRIC_WIDTH-1]}},gamma8};
assign  alpha63 = alpha3 + {{3{gamma14[BRANCH_MATRIC_WIDTH-1]}},gamma14};
///cal alpha7
assign  alpha70 = alpha6 + {{3{gamma1[BRANCH_MATRIC_WIDTH-1]}},gamma1};
assign  alpha71 = alpha0 + {{3{gamma7[BRANCH_MATRIC_WIDTH-1]}},gamma7};
assign  alpha72 = alpha7 + {{3{gamma10[BRANCH_MATRIC_WIDTH-1]}},gamma10};
assign  alpha73 = alpha1 + {{3{gamma12[BRANCH_MATRIC_WIDTH-1]}},gamma12};

wire    [STATE_MATRIC_WIDTH-1:0]  alpha_t7,alpha_t6,alpha_t5,alpha_t4,
                                  alpha_t3,alpha_t2,alpha_t1,alpha_t0;

mod_max4 mod_max4_0
(
    ///input
    .a (alpha00 ),
    .b (alpha01 ),
    .c (alpha02 ),
    .d (alpha03 ),
    ///output
    .e (alpha_t0)
);

mod_max4 mod_max4_1
(
    ///input
    .a (alpha10 ),
    .b (alpha11 ),
    .c (alpha12 ),
    .d (alpha13 ),
    ///output
    .e (alpha_t1)
);

mod_max4 mod_max4_2
(
    ///input
    .a (alpha20 ),
    .b (alpha21 ),
    .c (alpha22 ),
    .d (alpha23 ),
    ///output
    .e (alpha_t2)
);

mod_max4 mod_max4_3
(
    ///input
    .a (alpha30 ),
    .b (alpha31 ),
    .c (alpha32 ),
    .d (alpha33 ),
    ///output
    .e (alpha_t3)
);

mod_max4 mod_max4_4
(
    ///input
    .a (alpha40 ),
    .b (alpha41 ),
    .c (alpha42 ),
    .d (alpha43 ),
    ///output
    .e (alpha_t4)
);

mod_max4 mod_max4_5
(
    ///input
    .a (alpha50 ),
    .b (alpha51 ),
    .c (alpha52 ),
    .d (alpha53 ),
    ///output
    .e (alpha_t5)
);

mod_max4 mod_max4_6
(
    ///input
    .a (alpha60 ),
    .b (alpha61 ),
    .c (alpha62 ),
    .d (alpha63 ),
    ///output
    .e (alpha_t6)
);

mod_max4 mod_max4_7
(
    ///input
    .a (alpha70 ),
    .b (alpha71 ),
    .c (alpha72 ),
    .d (alpha73 ),
    ///output
    .e (alpha_t7)
);

///alpha reg
always @ ( posedge clk_sys or negedge rst_b ) begin
    if( !rst_b ) begin
        { alpha7, alpha6, alpha5, alpha4,
            alpha3, alpha2, alpha1, alpha0 } <= 1'b0;
    end
    else begin
        if( clr_alpha )
            { alpha7, alpha6, alpha5, alpha4,
                alpha3, alpha2, alpha1, alpha0 } <= 1'b0;
        else if( alpha_source_val_d3 )
            { alpha7, alpha6, alpha5, alpha4,
                alpha3, alpha2, alpha1, alpha0 }
                <=
            { alpha_t7, alpha_t6, alpha_t5, alpha_t4,
                alpha_t3, alpha_t2, alpha_t1, alpha_t0 };
        else
            { alpha7, alpha6, alpha5, alpha4,
                alpha3, alpha2, alpha1, alpha0 }
                <=
            { alpha7, alpha6, alpha5, alpha4,
                alpha3, alpha2, alpha1, alpha0 };
    end
end


///*************************************************************************
///output
///*************************************************************************
 
///reg alpha_source_val_d1,alpha_source_val_d2;
always @ ( posedge clk_sys or negedge rst_b ) begin
    if( !rst_b )
        {alpha_source_val_d4,alpha_source_val_d3,alpha_source_val_d2,alpha_source_val_d1} <= 3'b0;
    else
        {alpha_source_val_d4,alpha_source_val_d3,alpha_source_val_d2,alpha_source_val_d1}
            <= {alpha_source_val_d3,alpha_source_val_d2,alpha_source_val_d1,alpha_source_val};
end
 
assign  alpha = {alpha7,alpha6,alpha5,alpha4,alpha3,alpha2,alpha1,alpha0};
assign  alpha_sink_val = alpha_source_val_d4;

endmodule ///alpha_cal

⌨️ 快捷键说明

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