📄 chien_search.v
字号:
mux2_1 MUX_omega2 ( .a (omega_cof2 ) , .b (p2 ) , .sel(load_cof ) , .c(D2) );
const_mul_w2 M_omega2 ( .a (q2 ) , .b (p2 ) , .sel(1'b0 ) ); //w^2
D_reg8_decoder D_omega2 ( .clk (clk ) , .n_rst (n_rst ) , .D (D2 ) , .q(q2) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega3 ( .a (omega_cof3 ) , .b (p3 ) , .sel(load_cof ) , .c(D3) );
const_mul_w3 M_omega3 ( .a (q3 ) , .b (p3 ) , .sel(1'b0 ) ); //w^3
D_reg8_decoder D_omega3 ( .clk (clk ) , .n_rst (n_rst ) , .D (D3 ) , .q(q3) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega4 ( .a (omega_cof4 ) , .b (p4 ) , .sel(load_cof ) , .c(D4) );
const_mul_w4 M_omega4 ( .a (q4 ) , .b (p4 ) , .sel(1'b0 ) ); //w^4
D_reg8_decoder D_omega4 ( .clk (clk ) , .n_rst (n_rst ) , .D (D4 ) , .q(q4) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega5 ( .a (omega_cof5 ) , .b (p5 ) , .sel(load_cof ) , .c(D5) );
const_mul_w5 M_omega5 ( .a (q5 ) , .b (p5 ) , .sel(1'b0 ) ); //w^5
D_reg8_decoder D_omega5 ( .clk (clk ) , .n_rst (n_rst ) , .D (D5 ) , .q(q5) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega6 ( .a (omega_cof6 ) , .b (p6 ) , .sel(load_cof ) , .c(D6) );
const_mul_w6 M_omega6 ( .a (q6 ) , .b (p6 ) , .sel(1'b0 ) ); //w^6
D_reg8_decoder D_omega6 ( .clk (clk ) , .n_rst (n_rst ) , .D (D6 ) , .q(q6) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega7 ( .a (omega_cof7 ) , .b (p7 ) , .sel(load_cof ) , .c(D7) );
const_mul_w7 M_omega7 ( .a (q7 ) , .b (p7 ) , .sel(1'b0 ) ); //w^7
D_reg8_decoder D_omega7 ( .clk (clk ) , .n_rst (n_rst ) , .D (D7 ) , .q(q7) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega8 ( .a (omega_cof8 ) , .b (p8 ) , .sel(load_cof ) , .c(D8) );
const_mul_w8 M_omega8 ( .a (q8 ) , .b (p8 ) , .sel(1'b0 ) ); //w^8
D_reg8_decoder D_omega8 ( .clk (clk ) , .n_rst (n_rst ) , .D (D8 ) , .q(q8) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega9 ( .a (omega_cof9 ) , .b (p9 ) , .sel(load_cof ) , .c(D9) );
const_mul_w9 M_omega9 ( .a (q9 ) , .b (p9 ) , .sel(1'b0 ) ); //w^9
D_reg8_decoder D_omega9 ( .clk (clk ) , .n_rst (n_rst ) , .D (D9 ) , .q(q9) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega10 ( .a (omega_cof10 ) , .b (p10 ) , .sel(load_cof ) , .c(D10));
const_mul_w10 M_omega10 ( .a (q10 ) , .b (p10 ) , .sel(1'b0 ) ); //w^10
D_reg8_decoder D_omega10 ( .clk (clk ) , .n_rst (n_rst ) , .D (D10 ) , .q(q10) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega11 ( .a (omega_cof11 ) , .b (p11 ) , .sel(load_cof ) , .c(D11));
const_mul_w11 M_omega11 ( .a (q11 ) , .b (p11 ) , .sel(1'b0 ) ); //w^11
D_reg8_decoder D_omega11 ( .clk (clk ) , .n_rst (n_rst ) , .D (D11 ) , .q(q11) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega12 ( .a (omega_cof12 ) , .b (p12 ) , .sel(load_cof ) , .c(D12));
const_mul_w12 M_omega12 ( .a (q12 ) , .b (p12 ) , .sel(1'b0 ) ); //w^12
D_reg8_decoder D_omega12 ( .clk (clk ) , .n_rst (n_rst ) , .D (D12 ) , .q(q12) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega13 ( .a (omega_cof13 ) , .b (p13 ) , .sel(load_cof ) , .c(D13));
const_mul_w13 M_omega13 ( .a (q13 ) , .b (p13 ) , .sel(1'b0 ) ); //w^13
D_reg8_decoder D_omega13 ( .clk (clk ) , .n_rst (n_rst ) , .D (D13 ) , .q(q13) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega14 ( .a (omega_cof14 ) , .b (p14 ) , .sel(load_cof ) , .c(D14));
const_mul_w14 M_omega14 ( .a (q14 ) , .b (p14 ) , .sel(1'b0 ) ); //w^14
D_reg8_decoder D_omega14 ( .clk (clk ) , .n_rst (n_rst ) , .D (D14 ) , .q(q14) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega15 ( .a (omega_cof15 ) , .b (p15 ) , .sel(load_cof ) , .c(D15));
const_mul_w15 M_omega15 ( .a (q15 ) , .b (p15 ) , .sel(1'b0 ) ); //w^15
D_reg8_decoder D_omega15 ( .clk (clk ) , .n_rst (n_rst ) , .D (D15 ) , .q(q15) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
mux2_1 MUX_omega16 ( .a (omega_cof16 ) , .b (p16 ) , .sel(load_cof ) , .c(D16));
const_mul_w16 M_omega16 ( .a (q16 ) , .b (p16 ) , .sel(1'b0 ) ); //w^16
D_reg8_decoder D_omega16 ( .clk (clk ) , .n_rst (n_rst ) , .D (D16 ) , .q(q16) ,
.clken(clken ) , .phase1(1'b1 ) ) ;
//The final output is delayed one cycle to eliminate the gliches
assign omega_temp = q0 ^ q1 ^ q2 ^ q3 ^ q4 ^ q5 ^ q6 ^ q7 ^ q8 ^ q9 ^ q10 ^ q11 ^ q12 ^ q13 ^ q14 ^ q15 ^ q16 ;
reg [7:0] omega ;
always@(posedge clk or negedge n_rst)
begin
if ( n_rst == 1'b0 )
omega <= 7'h0;
else if ( clken == 1'b1 )
omega <= omega_temp;
else;
end
//The following part compute the σ(α^i) and directive of σ(α^i)
wire [7:0] pp0,pp1,pp2,pp3,pp4,pp5,pp6,pp7,pp8,pp9,pp10,pp11,pp12,pp13,pp14,pp15,pp16,pp_s;
wire [7:0] DD0,DD1,DD2,DD3,DD4,DD5,DD6,DD7,DD8,DD9,DD10,DD11,DD12,DD13,DD14,DD15,DD16,DD_s;
wire [7:0] qq0,qq1,qq2,qq3,qq4,qq5,qq6,qq7,qq8,qq9,qq10,qq11,qq12,qq13,qq14,qq15,qq16,qq_s;
wire [7:0] qq_odd;
wire [7:0] qq_even;
wire [7:0] qq_directive;
wire [7:0] qq_all;
mux2_1 MUX_Delta0 ( .a (delta_cof0 ) , .b (pp0 ) , .sel(load_cof ) , .c(DD0 ) );
const_mul_w0 M_Delta0 ( .a (qq0 ) , .b (pp0 ) , .sel(1'b0 ) ); //w^0
D_reg8_decoder D_Delta0 ( .clk (clk ) , .n_rst (n_rst) , .D (DD0 ) , .q(qq0 ) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta2 ( .a (delta_cof2 ) , .b (pp2 ) , .sel(load_cof ) , .c(DD2) );
const_mul_w2 M_Delta2 ( .a (qq2 ) , .b (pp2 ) , .sel(1'b0 ) ); //w^2
D_reg8_decoder D_Delta2 ( .clk (clk ) , .n_rst (n_rst) , .D (DD2 ) , .q(qq2) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta4 ( .a (delta_cof4 ) , .b (pp4 ) , .sel(load_cof ) , .c(DD4) );
const_mul_w4 M_Delta4 ( .a (qq4 ) , .b (pp4 ) , .sel(1'b0 ) ); //w^4
D_reg8_decoder D_Delta4 ( .clk (clk ) , .n_rst (n_rst) , .D (DD4 ) , .q(qq4) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta6 ( .a (delta_cof6 ) , .b (pp6 ) , .sel(load_cof ) , .c(DD6) );
const_mul_w6 M_Delta6 ( .a (qq6 ) , .b (pp6 ) , .sel(1'b0 ) ); //w^6
D_reg8_decoder D_Delta6 ( .clk (clk ) , .n_rst (n_rst) , .D (DD6 ) , .q(qq6) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta8 ( .a (delta_cof8 ) , .b (pp8 ) , .sel(load_cof ) , .c(DD8) );
const_mul_w8 M_Delta8 ( .a (qq8 ) , .b (pp8 ) , .sel(1'b0 ) ); //w^8
D_reg8_decoder D_Delta8 ( .clk (clk ) , .n_rst (n_rst) , .D (DD8 ) , .q(qq8) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta10 ( .a (delta_cof10 ) , .b (pp10 ) , .sel(load_cof ) , .c(DD10) );
const_mul_w10 M_Delta10 ( .a (qq10 ) , .b (pp10 ) , .sel(1'b0 ) ); //w^10
D_reg8_decoder D_Delta10 ( .clk (clk ) , .n_rst (n_rst) , .D (DD10 ) , .q(qq10),
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta12 ( .a (delta_cof12 ) , .b (pp12 ) , .sel(load_cof ) , .c(DD12) );
const_mul_w12 M_Delta12 ( .a (qq12 ) , .b (pp12 ) , .sel(1'b0 ) ); //w^12
D_reg8_decoder D_Delta12 ( .clk (clk ) , .n_rst (n_rst) , .D (DD12 ) , .q(qq12),
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta14 ( .a (delta_cof14 ) , .b (pp14 ) , .sel(load_cof ) , .c(DD14) );
const_mul_w14 M_Delta14 ( .a (qq14 ) , .b (pp14 ) , .sel(1'b0 ) ); //w^14
D_reg8_decoder D_Delta14 ( .clk (clk ) , .n_rst (n_rst) , .D (DD14 ) , .q(qq14),
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta16 ( .a (delta_cof16 ) , .b (pp16 ) , .sel(load_cof ) , .c(DD16) );
const_mul_w16 M_Delta16 ( .a (qq16 ) , .b (pp16 ) , .sel(1'b0 ) ); //w^16
D_reg8_decoder D_Delta16 ( .clk (clk ) , .n_rst (n_rst) , .D (DD16 ) , .q(qq16),
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta1 ( .a (delta_cof1 ) , .b (pp1 ) , .sel(load_cof ) , .c(DD1) );
const_mul_w0 M_Delta1 ( .a (qq1 ) , .b (pp1 ) , .sel(1'b0 ) ); //w^0
D_reg8_decoder D_Delta1 ( .clk (clk ) , .n_rst (n_rst) , .D (DD1 ) , .q(qq1) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta3 ( .a (delta_cof3 ) , .b (pp3 ) , .sel(load_cof ) , .c(DD3) );
const_mul_w2 M_Delta3 ( .a (qq3 ) , .b (pp3 ) , .sel(1'b0 ) ); //w^2
D_reg8_decoder D_Delta3 ( .clk (clk ) , .n_rst (n_rst) , .D (DD3 ) , .q(qq3) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta5 ( .a (delta_cof5 ) , .b (pp5 ) , .sel(load_cof ) , .c(DD5) );
const_mul_w4 M_Delta5 ( .a (qq5 ) , .b (pp5 ) , .sel(1'b0 ) ); //w^4
D_reg8_decoder D_Delta5 ( .clk (clk ) , .n_rst (n_rst) , .D (DD5 ) , .q(qq5) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta7 ( .a (delta_cof7 ) , .b (pp7 ) , .sel(load_cof ) , .c(DD7) );
const_mul_w6 M_Delta7 ( .a (qq7 ) , .b (pp7 ) , .sel(1'b0 ) ); //w^6
D_reg8_decoder D_Delta7 ( .clk (clk ) , .n_rst (n_rst) , .D (DD7 ) , .q(qq7) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta9 ( .a (delta_cof9 ) , .b (pp9 ) , .sel(load_cof ) , .c(DD9) );
const_mul_w8 M_Delta9 ( .a (qq9 ) , .b (pp9 ) , .sel(1'b0 ) ); //w^8
D_reg8_decoder D_Delta9 ( .clk (clk ) , .n_rst (n_rst) , .D (DD9 ) , .q(qq9) ,
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta11 ( .a (delta_cof11 ) , .b (pp11 ) , .sel(load_cof ) , .c(DD11) );
const_mul_w10 M_Delta11 ( .a (qq11 ) , .b (pp11 ) , .sel(1'b0 ) ); //w^10
D_reg8_decoder D_Delta11 ( .clk (clk ) , .n_rst (n_rst) , .D (DD11 ) , .q(qq11),
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta13 ( .a (delta_cof13 ) , .b (pp13 ) , .sel(load_cof ) , .c(DD13) );
const_mul_w12 M_Delta13 ( .a (qq13 ) , .b (pp13 ) , .sel(1'b0 ) ); //w^12
D_reg8_decoder D_Delta13 ( .clk (clk ) , .n_rst (n_rst) , .D (DD13 ) , .q(qq13),
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta15 ( .a (delta_cof15 ) , .b (pp15 ) , .sel(load_cof ) , .c(DD15) );
const_mul_w14 M_Delta15 ( .a (qq15 ) , .b (pp15 ) , .sel(1'b0 ) ); //w^14
D_reg8_decoder D_Delta15 ( .clk (clk ) , .n_rst (n_rst) , .D (DD15 ) , .q(qq15),
.clken(clken ) , .phase1(1'b1 ) );
mux2_1 MUX_Delta_s ( .a (8'b0000_0001 ) , .b (pp_s ) , .sel(load_cof ) , .c(DD_s) );
const_mul_w1 M_Delta_s ( .a (qq_s ) , .b (pp_s ) , .sel(1'b0 ) ); //w^1
D_reg8_decoder D_Delta_s ( .clk (clk ) , .n_rst (n_rst) , .D (DD_s ) , .q(qq_s),
.clken(clken ) , .phase1(1'b1 ) );
assign qq_directive = qq1 ^ qq3 ^ qq5 ^ qq7 ^ qq9 ^ qq11 ^ qq13 ^ qq15 ;
assign qq_even = qq0 ^ qq2 ^ qq4 ^ qq6 ^ qq8 ^ qq10 ^ qq12 ^ qq14 ^ qq16 ;
parallel_PB_mul_8 M_odd ( .a(qq_directive) , .b(qq_s) , .sel(1'b0) , .c(qq_odd) );
assign qq_all = qq_odd ^ qq_even ;
reg [7:0] delta_odd;
always@(posedge clk or negedge n_rst)
begin
if ( n_rst == 1'b0 )
delta_odd <= 8'h0;
else if ( clken == 1'b1 )
delta_odd <= qq_odd;
else;
end
reg [7:0] delta;
always@(posedge clk or negedge n_rst)
begin
if ( n_rst == 1'b0 )
delta <= 8'h0;
else if ( clken == 1'b1 )
delta <= qq_all;
else;
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -