32位乘法器和除法器

本文详细介绍了32位乘法器和除法器的设计原理,使用移位运算来实现。乘法器通过判断两因数的每一位进行相应运算,而除法器则通过比较被除数与除数进行减法和移位操作。同时,文章提供了乘法器、除法器及包含拨码输入和数码管输出的顶层模块代码,并讨论了在约束文件修改中解决'IO Clock Placer failed'问题的方法。
摘要由CSDN通过智能技术生成

32位乘法器和除法器的设计与实现

乘法器原理

类比10进制乘法,利用移位运算。每次对两因数中的一个的第一位进行判断,一共判断32位共循环32次,若该位为1,则将积加上另一因数,若为0,则不用加。每次循环结束将用于判断的因数右移一位,用于和积相加的因数左移一位,循环完成后,积即为两因数的积。
在这里插入图片描述

除法器原理

类比十进制除法,利用移位运算。将被除数前32位拼接上32位的0,一共判断32位共循环32次,每次比较被除数前32位与除数相比,若大于除数,则将被除数前32位减去除数,并将整个64位的被除数加上1,若小于除数,则什么也不做,每次循环完成后将被除数左移一位。循环完成后,被除数前32位为余数,后32位为商。

在这里插入图片描述

乘法器代码

module mult32(
    input wire [31:0] a,
    input wire [31:0] b,
    output reg [63:0]p
    );
    reg [63:0] pv;
    reg [63:0] ap;
    integer i;

    always@(*)
        begin
            pv=64'b0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
            ap={32'b0000_0000_0000_0000_0000_0000_0000_0000,a};
            for(i=0;i<=31;i=i+1)
                begin
                    if(b[i]==1)
                        pv=pv+ap;
                        ap={ap[62:0],1'b0};
                end
            p=pv;
        end
endmodule

除法器代码

module div32(
    input[31:0] a,   
    input[31:0] b,  
    
    output reg [31:0] yshang,  
    output reg [31:0] yyushu  
    );  
    
    reg[31:0] tempa;  
    reg[31:0] tempb;  
    reg[63:0] temp_a;  
    reg[63:0] temp_b;  
    
    integer i;  
    
    always @(a or b)  
    begin  
        tempa <= a;  
        tempb <= b;  
    end  
    
    always @(tempa or tempb)  
    begin  
        temp_a = {32'h00000000,tempa};  
        temp_b = {tempb,32'h00000000};   
        for(i = 0;i < 32;i = i + 1)  
            begin  
                temp_a = {temp_a[62:0],1'b0};  
                if(temp_a[63:32] >= tempb)  
                    temp_a = temp_a - temp_b + 1'b1;  
                else  
                    temp_a = temp_a;  
            
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值