i try a code for a 8bit binary division it work good but the

i try a code for a 8-bit binary division it work good but the problem there is a reminder so how to get rid of the reminder to make it exact division?

module division(A,B,Res);

//the size of input and output ports of the division module is generic.
parameter WIDTH = 8;
//input and output ports.
input [WIDTH-1:0] A;
input [WIDTH-1:0] B;
output [WIDTH-1:0] Res;
//internal variables
reg [WIDTH-1:0] Res = 0;
reg [WIDTH-1:0] a1,b1;
reg [WIDTH:0] p1;   
integer i;

always@ (A or B)
begin
//initialize the variables.
a1 = A;
b1 = B;
p1= 0;
for(i=0;i < WIDTH;i=i+1) begin //start the for loop
p1 = {p1[WIDTH-2:0],a1[WIDTH-1]};
a1[WIDTH-1:1] = a1[WIDTH-2:0];
p1 = p1-b1;
if(p1[WIDTH-1] == 1) begin
a1[0] = 0;
p1 = p1 + b1; end
else
a1[0] = 1;
end
Res = a1;   
end

endmodule

Solution

Program to handle the remainder of the binary division.

The standard way to do division is by implementing binary long-division.

This involves subtraction.

Some of the important steps to follow Q = N/D:

Loop for as many output bits (including fractional) as you require, then apply a final shift to undo what you did in Step 1.

Or

// Below is the sample c program to handle the remainder of the binary division

int remainder, divisor;

int division(int tempdividend, int tempdivisor) {

    int quotient = 1;

    if (tempdivisor == tempdividend) {

        remainder = 0;

        return 1;

    } else if (tempdividend < tempdivisor) {

        remainder = tempdividend;

        return 0;

Based on the above program we can declare the remainder variable.

//input and output ports.

input [WIDTH-1:0] A;
input [WIDTH-1:0] B;
output [WIDTH-1:0] Res;
//internal variables
reg [WIDTH-1:0] Res = 0;
reg [WIDTH-1:0] a1,b1;
reg [WIDTH:0] p1;   
integer i; always@ (A or B)
begin

// Initialize the variables

       a1 = A;
b1 = B;
p1= 0;

// We can declare another variable to hold the remainder


for(i=0;i < WIDTH;i=i+1) begin //start the for loop
p1 = {p1[WIDTH-2:0],a1[WIDTH-1]};
a1[WIDTH-1:1] = a1[WIDTH-2:0];
p1 = p1-b1;
if(p1[WIDTH-1] == 1) begin
a1[0] = 0;
p1 = p1 + b1; end
else
a1[0] = 1;
end
Res = a1;   
end

end module

i try a code for a 8-bit binary division it work good but the problem there is a reminder so how to get rid of the reminder to make it exact division? module di
i try a code for a 8-bit binary division it work good but the problem there is a reminder so how to get rid of the reminder to make it exact division? module di

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site