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

📄 chien_search.v

📁 rs的译码器
💻 V
📖 第 1 页 / 共 2 页
字号:
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 + -