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

📄 multiplier_top_bak.v

📁 8*8乘法器及其测试:采用booth编码的乘法器:1. ultipler_quick_add_4 即4位的并行全加器
💻 V
📖 第 1 页 / 共 3 页
字号:
//------------------------------------------
// 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 [9:0] p;
wire [15:0] z; 

wire [15:0] shiftout_1;
wire [15:0] shiftout_2;
wire [15:1] shiftout_3;
wire [15:6] shiftout_4;
 
wire [15:0] sumout_1;
wire [15:0] sumout_2;
wire [15:1] sumout_3;
wire [15:6] sumout_4;

wire [15:0] cout1_1;
wire [15:0] cout1_2;
wire [15:1] cout1_3;
wire [15:6] cout1_4;

wire [15:0] cout2_1;
wire [15:0] cout2_2;
wire [15:1] cout2_3;
wire [15:6] cout2_4;

wire [15:0] c_1;
wire [15:0] c_2;
wire [15:1] c_3;
wire [15:6] c_4;

parameter ZERO = 1'b0;
parameter ONE = 1'b1;
parameter Y1 = 4'b0001; 
parameter Y2 = 4'b0000;


assign p[0] = 0;
assign p[8:1] = y[7:0];
assign p[9] = 0;


multiplier_unit         multiplier_unit_1_0(
   .y                        (p[3:0]),
   .x                        (x[0]),
   .shiftin1                 (ONE & ~p[3] | ZERO & p[3]),
   .shiftin2                 (ONE & ~p[3] | ZERO & p[3]),
   .shiftout                 (shiftout_1[0]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[0]),
   .cin1                     (ZERO),
   .cin2                     (ZERO),
   .cin3                     (ZERO),
   .cout1                    (cout1_1[0]),
   .cout2                    (cout2_1[0]),
   .c                        (c_1[0])
   );
    
    
multiplier_unit         multiplier_unit_1_1(
   .y                        (p[3:0]),
   .x                        (x[1]),
   .shiftin1                 (shiftout_1[0]),
   .shiftin2                 (ONE & ~p[3] | ZERO & p[3]),
   .shiftout                 (shiftout_1[1]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[1]),
   .cin1                     (cout1_1[0]),
   .cin2                     (ZERO),
   .cin3                     (c_1[0]),
   .cout1                    (cout1_1[1]),
   .cout2                    (cout2_1[1]),
   .c                        (c_1[1])
   );                    
                        
                        
multiplier_unit         multiplier_unit_1_2(
   .y                        (p[3:0]),
   .x                        (x[2]),
   .shiftin1                 (shiftout_1[1]),
   .shiftin2                 (shiftout_1[0]),
   .shiftout                 (shiftout_1[2]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[2]),
   .cin1                     (cout1_1[1]),
   .cin2                     (cout2_1[0]),
   .cin3                     (c_1[1]),
   .cout1                    (cout1_1[2]),
   .cout2                    (cout2_1[2]),
   .c                        (c_1[2])
   );  
    
    
    
multiplier_unit         multiplier_unit_1_3(
   .y                        (p[3:0]),
   .x                        (x[3]),
   .shiftin1                 (shiftout_1[2]),
   .shiftin2                 (shiftout_1[1]),
   .shiftout                 (shiftout_1[3]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[3]),
   .cin1                     (cout1_1[2]),
   .cin2                     (cout2_1[1]),
   .cin3                     (c_1[2]),
   .cout1                    (cout1_1[3]),
   .cout2                    (cout2_1[3]),
   .c                        (c_1[3])
   );      
    
    
    
multiplier_unit         multiplier_unit_1_4(
   .y                        (p[3:0]),
   .x                        (x[4]),
   .shiftin1                 (shiftout_1[3]),
   .shiftin2                 (shiftout_1[2]),
   .shiftout                 (shiftout_1[4]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[4]),
   .cin1                     (cout1_1[3]),
   .cin2                     (cout2_1[2]),
   .cin3                     (c_1[3]),
   .cout1                    (cout1_1[4]),
   .cout2                    (cout2_1[4]),
   .c                        (c_1[4])
   );      


multiplier_unit         multiplier_unit_1_5(
   .y                        (p[3:0]),
   .x                        (x[5]),
   .shiftin1                 (shiftout_1[4]),
   .shiftin2                 (shiftout_1[3]),
   .shiftout                 (shiftout_1[5]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[5]),
   .cin1                     (cout1_1[4]),
   .cin2                     (cout2_1[3]),
   .cin3                     (c_1[4]),
   .cout1                    (cout1_1[5]),
   .cout2                    (cout2_1[5]),
   .c                        (c_1[5])
   );      


multiplier_unit         multiplier_unit_1_6(
   .y                        (p[3:0]),
   .x                        (x[6]),
   .shiftin1                 (shiftout_1[5]),
   .shiftin2                 (shiftout_1[4]),
   .shiftout                 (shiftout_1[6]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[6]),
   .cin1                     (cout1_1[5]),
   .cin2                     (cout2_1[4]),
   .cin3                     (c_1[5]),
   .cout1                    (cout1_1[6]),
   .cout2                    (cout2_1[6]),
   .c                        (c_1[6])
   );      


multiplier_unit         multiplier_unit_1_7(
   .y                        (p[3:0]),
   .x                        (x[7]),
   .shiftin1                 (shiftout_1[6]),
   .shiftin2                 (shiftout_1[5]),
   .shiftout                 (shiftout_1[7]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[7]),
   .cin1                     (cout1_1[6]),
   .cin2                     (cout2_1[5]),
   .cin3                     (c_1[6]),
   .cout1                    (cout1_1[7]),
   .cout2                    (cout2_1[7]),
   .c                        (c_1[7])
   );      


multiplier_unit         multiplier_unit_1_8(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[7]),
   .shiftin2                 (shiftout_1[6]),
   .shiftout                 (shiftout_1[8]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[8]),
   .cin1                     (cout1_1[7]),
   .cin2                     (cout2_1[6]),
   .cin3                     (c_1[7]),
   .cout1                    (cout1_1[8]),
   .cout2                    (cout2_1[8]),
   .c                        (c_1[8])
   );      


multiplier_unit         multiplier_unit_1_9(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[8]),
   .shiftin2                 (shiftout_1[7]),
   .shiftout                 (shiftout_1[9]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[9]),
   .cin1                     (cout1_1[8]),
   .cin2                     (cout2_1[7]),
   .cin3                     (c_1[8]),
   .cout1                    (cout1_1[9]),
   .cout2                    (cout2_1[9]),
   .c                        (c_1[9])
   );      


multiplier_unit         multiplier_unit_1_10(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[9]),
   .shiftin2                 (shiftout_1[8]),
   .shiftout                 (shiftout_1[10]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[10]),
   .cin1                     (cout1_1[9]),
   .cin2                     (cout2_1[8]),
   .cin3                     (c_1[9]),
   .cout1                    (cout1_1[10]),
   .cout2                    (cout2_1[10]),
   .c                        (c_1[10])
   );      


multiplier_unit         multiplier_unit_1_11(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[10]),
   .shiftin2                 (shiftout_1[9]),
   .shiftout                 (shiftout_1[11]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[11]),
   .cin1                     (cout1_1[10]),
   .cin2                     (cout2_1[9]),
   .cin3                     (c_1[10]),
   .cout1                    (cout1_1[11]),
   .cout2                    (cout2_1[11]),
   .c                        (c_1[11])
   );      


multiplier_unit         multiplier_unit_1_12(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[11]),
   .shiftin2                 (shiftout_1[10]),
   .shiftout                 (shiftout_1[12]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[12]),
   .cin1                     (cout1_1[11]),
   .cin2                     (cout2_1[10]),
   .cin3                     (c_1[11]),
   .cout1                    (cout1_1[12]),
   .cout2                    (cout2_1[12]),
   .c                        (c_1[12])
   );      


multiplier_unit         multiplier_unit_1_13(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[12]),
   .shiftin2                 (shiftout_1[11]),
   .shiftout                 (shiftout_1[13]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[13]),
   .cin1                     (cout1_1[12]),
   .cin2                     (cout2_1[11]),
   .cin3                     (c_1[12]),
   .cout1                    (cout1_1[13]),
   .cout2                    (cout2_1[13]),
   .c                        (c_1[13])
   );      


multiplier_unit         multiplier_unit_1_14(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[13]),
   .shiftin2                 (shiftout_1[12]),
   .shiftout                 (shiftout_1[14]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[14]),
   .cin1                     (cout1_1[13]),
   .cin2                     (cout2_1[12]),
   .cin3                     (c_1[13]),
   .cout1                    (cout1_1[14]),
   .cout2                    (cout2_1[14]),
   .c                        (c_1[14])
   );      


multiplier_unit         multiplier_unit_1_15(
   .y                        (p[3:0]),
   .x                        (ZERO),
   .shiftin1                 (shiftout_1[14]),
   .shiftin2                 (shiftout_1[13]),
   .shiftout                 (shiftout_1[15]),
   .sumin                    (ZERO),
   .sumout                   (sumout_1[15]),
   .cin1                     (cout1_1[14]),
   .cin2                     (cout2_1[13]),
   .cin3                     (c_1[14]),
   .cout1                    (cout1_1[15]),
   .cout2                    (cout2_1[15]),
   .c                        (c_1[15])
   );      


multiplier_unit         multiplier_unit_2_0(
   .y                        (Y1),
   .x                        (y[2]),
   .shiftin1                 (ONE & ~p[3] | ZERO & p[3]),
   .shiftin2                 (ONE & ~p[3] | ZERO & p[3]),
   .shiftout                 (shiftout_2[0]),
   .sumin                    (sumout_1[0]),
   .sumout                   (sumout_2[0]),
   .cin1                     (ZERO),
   .cin2                     (ZERO),
   .cin3                     (ZERO),
   .cout1                    (cout1_2[0]),
   .cout2                    (cout2_2[0]),
   .c                        (c_2[0])
   );      

⌨️ 快捷键说明

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