Booth Mul N Bit.docx

  • Uploaded by: sunandha reddy
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Booth Mul N Bit.docx as PDF for free.

More details

  • Words: 427
  • Pages: 5
BOOTH_ MULTIPLIER FOR 16_BIT: module multiplier(prod, busy, mc, mp, clk, start); output [15:0] prod; output busy; input [7:0] mc, mp; input clk, start; reg [7:0] A, Q, M; reg Q_1; reg [3:0] count; wire [7:0] sum, difference; always @(posedge clk) begin if (start) begin A <= 8'b0; M <= mc; Q <= mp; Q_1 <= 1'b0; count <= 4'b0; end else begin case ({Q[0], Q_1}) 2'b0_1 : {A, Q, Q_1} <= {sum[7], sum, Q}; 2'b1_0 : {A, Q, Q_1} <= {difference[7], difference, Q}; default: {A, Q, Q_1} <= {A[7], A, Q}; endcase count <= count + 1'b1; end end alu adder (sum, A, M, 1'b0);

alu subtracter (difference, A, ~M, 1'b1); assign prod = {A, Q}; assign busy = (count < 8); endmodule //The following is an alu. //It is an adder, but capable of subtraction: //Recall that subtraction means adding the two's complement-//a - b = a + (-b) = a + (inverted b + 1) //The 1 will be coming in as cin (carry-in) module alu(out, a, b, cin); output [7:0] out; input [7:0] a; input [7:0] b; input cin; assign out = a + b + cin; endmodule MULTIPLIER_TB FOR 16 BIT : module multiplier_tb; reg clk, start; reg [7:0] a, b; wire [15:0] ab; wire busy; multiplier multiplier1(ab, busy, a, b, clk, start); initial begin clk = 0; $display("first example: a = 3 b = 17"); a = 3; b = 17; start = 1; #50 start = 0; #80 $display("first example done"); $display("second example: a = 7 b = 7");

a = 7; b = 7; start = 1; #50 start = 0; #80 $display("second example done"); $finish; end always #5 clk = !clk; always @(posedge clk) $strobe("ab: %d busy: %d at time=%t", ab, busy, $stime); endmodule GRAPH:

N_BIT MULTIPLIER : module multiplier_n(X, Y, Z); parameter n=32; input [n-1:0] X, Y; output [2*n-1:0] Z; reg [2*n-1:0] Z; reg [1:0] temp; integer i; reg E1,t; reg [n-1:0] Y1; always @(X,Y) begin Z = 0;

E1 = 1'd0; Y1 = - Y; Z[n-1:0]=X; for (i = 0; i < n; i = i + 1) begin temp = {X[i], E1}; case (temp) 2'd2 : Z [2*n-1 : n] = Z [2*n-1 : n] + Y1; 2'd1 : Z [2*n-1 : n] = Z [2*n-1 : n] + Y; default : begin end endcase t=Z[0]; Z = Z >> 1; Z[2*n-1] = t; E1 = t; end end endmodule TEST BEANCH FO N_BIT MULTIPLIER: module multipliern_tb(); reg [31:0] X, Y; wire [63:0] Z; multiplier_n mn(X, Y, Z); initial begin Y=4565;X=1106; #10 $finish end endmodule

GRAPH:

Related Documents

Booth Mul N Bit.docx
November 2019 9
Booth
June 2020 6
Karuvil Mul
June 2020 4
William Booth
October 2019 19
Booth, E.pdf
June 2020 5
Diabetic Booth
April 2020 4

More Documents from ""

Fsm2.docx
November 2019 9
Module Fourbitadder.docx
November 2019 17
Module Decoder P.docx
November 2019 7
Memorryprogram.docx
November 2019 8
Jk1 Nad.docx
November 2019 8