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

📄 multiplier_top.v

📁 8*8乘法器及其测试:采用booth编码的乘法器:1. ultipler_quick_add_4 即4位的并行全加器
💻 V
字号:
//------------------------------------------
// file: multiplier_top

// module name: multiplier_top.v

// author: hejun

// simulate software: modelsim

//-----------------------------------------


`timescale 	 1ns/1ns



module multiplier_top(
 x,
 y,
 z
 );
 
 
input [7:0] x;
input [7:0] y;
output [15:0] z; 


wire [15:0] z; 


wire [15:0] sumout_2;
wire [15:1] sumout_3;


wire [15:0] cout_2;
wire [15:1] cout_3;

wire [15:0] pp1;
wire [15:0] pp2;
wire [15:0] pp3;

multiplier_patial_product      multiplier_patial_product_1(   
        .x                            (x),
        .y                            (y),
        .pp1                          (pp1),
        .pp2                          (pp2),
        .pp3                          (pp3)
        );


multiplier_full_add            multiplier_full_add_2_0(
        .a                            (pp1[0]),
        .b                            (pp2[0]),
        .cin                          (1'b0),
        .s                            (sumout_2[0]),
        .cout                         (cout_2[0])
    );    
    

multiplier_full_add            multiplier_full_add_2_1(
        .a                            (pp1[1]),
        .b                            (pp2[1]),
        .cin                          (1'b0),
        .s                            (sumout_2[1]),
        .cout                         (cout_2[1])
    );     
  

multiplier_full_add            multiplier_full_add_2_2(
        .a                            (pp1[2]),
        .b                            (pp2[2]),
        .cin                          (1'b0),
        .s                            (sumout_2[2]),
        .cout                         (cout_2[2])
    );      
 

multiplier_full_add            multiplier_full_add_2_3(
        .a                            (pp1[3]),
        .b                            (pp2[3]),
        .cin                          (1'b0),
        .s                            (sumout_2[3]),
        .cout                         (cout_2[3])
    );    
  
  
multiplier_full_add            multiplier_full_add_2_4(
        .a                            (pp1[4]),
        .b                            (pp2[4]),
        .cin                          (1'b0),
        .s                            (sumout_2[4]),
        .cout                         (cout_2[4])
    );    


multiplier_full_add            multiplier_full_add_2_5(
        .a                            (pp1[5]),
        .b                            (pp2[5]),
        .cin                          (1'b0),
        .s                            (sumout_2[5]),
        .cout                         (cout_2[5])
    );    



multiplier_full_add            multiplier_full_add_2_6(
        .a                            (pp1[6]),
        .b                            (pp2[6]),
        .cin                          (1'b0),
        .s                            (sumout_2[6]),
        .cout                         (cout_2[6])
    );     
  

multiplier_full_add            multiplier_full_add_2_7(
        .a                            (pp1[7]),
        .b                            (pp2[7]),
        .cin                          (1'b0),
        .s                            (sumout_2[7]),
        .cout                         (cout_2[7])
    );      
 

multiplier_full_add            multiplier_full_add_2_8(
        .a                            (pp1[8]),
        .b                            (pp2[8]),
        .cin                          (1'b0),
        .s                            (sumout_2[8]),
        .cout                         (cout_2[8])
    );    
  
  
multiplier_full_add            multiplier_full_add_2_9(
        .a                            (pp1[9]),
        .b                            (pp2[9]),
        .cin                          (1'b0),
        .s                            (sumout_2[9]),
        .cout                         (cout_2[9])
    );    


multiplier_full_add            multiplier_full_add_2_10(
        .a                            (pp1[10]),
        .b                            (pp2[10]),
        .cin                          (1'b0),
        .s                            (sumout_2[10]),
        .cout                         (cout_2[10])
    );    



multiplier_full_add            multiplier_full_add_2_11(
        .a                            (pp1[11]),
        .b                            (pp2[11]),
        .cin                          (1'b0),
        .s                            (sumout_2[11]),
        .cout                         (cout_2[11])
    );     
  

multiplier_full_add            multiplier_full_add_2_12(
        .a                            (pp1[12]),
        .b                            (pp2[12]),
        .cin                          (1'b0),
        .s                            (sumout_2[12]),
        .cout                         (cout_2[12])
    );      
 

multiplier_full_add            multiplier_full_add_2_13(
        .a                            (pp1[13]),
        .b                            (pp2[13]),
        .cin                          (1'b0),
        .s                            (sumout_2[13]),
        .cout                         (cout_2[13])
    );    
  
  
multiplier_full_add            multiplier_full_add_2_14(
        .a                            (pp1[14]),
        .b                            (pp2[14]),
        .cin                          (1'b0),
        .s                            (sumout_2[14]),
        .cout                         (cout_2[14])
    );    


multiplier_full_add            multiplier_full_add_2_15(
        .a                            (pp1[15]),
        .b                            (pp2[15]),
        .cin                          (1'b0),
        .s                            (sumout_2[15]),
        .cout                         (cout_2[15])
    );    


multiplier_full_add            multiplier_full_add_3_1(
        .a                            (sumout_2[1]),
        .b                            (pp3[1]),
        .cin                          (cout_2[0]),
        .s                            (sumout_3[1]),
        .cout                         (cout_3[1])
    );      
 

multiplier_full_add            multiplier_full_add_3_2(
        .a                            (sumout_2[2]),
        .b                            (pp3[2]),
        .cin                          (cout_2[1]),
        .s                            (sumout_3[2]),
        .cout                         (cout_3[2])
    );      



multiplier_full_add            multiplier_full_add_3_3(
        .a                            (sumout_2[3]),
        .b                            (pp3[3]),
        .cin                          (cout_2[2]),
        .s                            (sumout_3[3]),
        .cout                         (cout_3[3])
    );    
  
  
multiplier_full_add            multiplier_full_add_3_4(
        .a                            (sumout_2[4]),
        .b                            (pp3[4]),
        .cin                          (cout_2[3]),
        .s                            (sumout_3[4]),
        .cout                         (cout_3[4])
    );    


multiplier_full_add            multiplier_full_add_3_5(
        .a                            (sumout_2[5]),
        .b                            (pp3[5]),
        .cin                          (cout_2[4]),
        .s                            (sumout_3[5]),
        .cout                         (cout_3[5])
    );    


multiplier_full_add            multiplier_full_add_3_6(
        .a                            (sumout_2[6]),
        .b                            (pp3[6]),
        .cin                          (cout_2[5]),
        .s                            (sumout_3[6]),
        .cout                         (cout_3[6])
    );      
 

multiplier_full_add            multiplier_full_add_3_7(
        .a                            (sumout_2[7]),
        .b                            (pp3[7]),
        .cin                          (cout_2[6]),
        .s                            (sumout_3[7]),
        .cout                         (cout_3[7])
    );      



multiplier_full_add            multiplier_full_add_3_8(
        .a                            (sumout_2[8]),
        .b                            (pp3[8]),
        .cin                          (cout_2[7]),
        .s                            (sumout_3[8]),
        .cout                         (cout_3[8])
    );    
  
  
multiplier_full_add            multiplier_full_add_3_9(
        .a                            (sumout_2[9]),
        .b                            (pp3[9]),
        .cin                          (cout_2[8]),
        .s                            (sumout_3[9]),
        .cout                         (cout_3[9])
    );    


multiplier_full_add            multiplier_full_add_3_10(
        .a                            (sumout_2[10]),
        .b                            (pp3[10]),
        .cin                          (cout_2[9]),
        .s                            (sumout_3[10]),
        .cout                         (cout_3[10])
    );    


multiplier_full_add            multiplier_full_add_3_11(
        .a                            (sumout_2[11]),
        .b                            (pp3[11]),
        .cin                          (cout_2[10]),
        .s                            (sumout_3[11]),
        .cout                         (cout_3[11])
    );      
 

multiplier_full_add            multiplier_full_add_3_12(
        .a                            (sumout_2[12]),
        .b                            (pp3[12]),
        .cin                          (cout_2[11]),
        .s                            (sumout_3[12]),
        .cout                         (cout_3[12])
    );      



multiplier_full_add            multiplier_full_add_3_13(
        .a                            (sumout_2[13]),
        .b                            (pp3[13]),
        .cin                          (cout_2[12]),
        .s                            (sumout_3[13]),
        .cout                         (cout_3[13])
    );    
  
  
multiplier_full_add            multiplier_full_add_3_14(
        .a                            (sumout_2[14]),
        .b                            (pp3[14]),
        .cin                          (cout_2[13]),
        .s                            (sumout_3[14]),
        .cout                         (cout_3[14])
    );    


multiplier_full_add            multiplier_full_add_3_15(
        .a                            (sumout_2[15]),
        .b                            (pp3[15]),
        .cin                          (cout_2[14]),
        .s                            (sumout_3[15]),
        .cout                         (cout_3[15])
    );    



assign z[0] = sumout_2[0];
assign z[1] = sumout_3[1];



multiplier_quick_add_4    multiplier_quick_add_4_1(
    .a                        (sumout_3[5:2]),
    .b                        (cout_3[4:1]),
    .cin                      (1'b0),
    .s                        (z[5:2]),
    .cout                     (cout1)
    );
    

multiplier_quick_add_5    multiplier_quick_add_5_1(
    .a                        (sumout_3[10:6]),
    .b                        (cout_3[9:5]),    
    .cin                      (cout1),
    .s                        (z[10:6]),
    .cout                     (cout2)
    );
    

multiplier_quick_add_5    multiplier_quick_add_5_2(
    .a                        (sumout_3[15:11]),
    .b                        (cout_3[14:10]),    
    .cin                      (cout2),
    .s                        (z[15:11]),
    .cout                     (cout3)
    );



   
endmodule                                        

⌨️ 快捷键说明

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