0% found this document useful (0 votes)
20 views

Lab 3 DP

Uploaded by

anujpasaya7
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Lab 3 DP

Uploaded by

anujpasaya7
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

EL-467 Digital Programming

Lab-3
Anuj Pasaya
202101509
Q1:

module fulladd(

input a,

input b,

input cin,

output sum,

output carry

);

assign sum = a^b^cin;

assign carry = (a&b)|(cin&b)|(a&cin);

endmodule

module FullAdder(

input [7:0]a,

input [7:0]b,

input cin,

output [7:0]sum,

output [4:0]flag, output cout

);

wire[6:0] c;
fulladd a1(a[0],b[0],cin,sum[0],c[0]);

fulladd a2(a[1],b[1],c[0],sum[1],c[1]);

fulladd a3(a[2],b[2],c[1],sum[2],c[2]);

fulladd a4(a[3],b[3],c[2],sum[3],c[3]);

fulladd a5(a[4],b[4],c[3],sum[4],c[4]);

fulladd a6(a[5],b[5],c[4],sum[5],c[5]);

fulladd a7(a[6],b[6],c[5],sum[6],c[6]);

fulladd a8(a[7],b[7],c[6],sum[7],cout);

assign flag[0]=(sum[0]|sum[1]|sum[2] | sum[3] | sum[4] | sum[5] | sum[6] | sum[7]| cout);

assign flag[1]=(sum[0]^sum[1]^sum[2] ^sum[3] ^ sum[4] ^ sum[5] ^ sum[6] ^ sum[7]);

assign flag[2]=c[3];

assign flag[3]=!sum[0];

assign flag[4]=cout;

endmodule
Q2:

module Decoder(

input [7:0]m,

output [8:0]p,

output e

);

assign p[8] = m[0] ^ m[1]^m[2] ^m[3] ^ m[4] ^ m[5] ^ m[6] ^ m[7];

assign p[7:0]=m[7:0];

assign e = p[0]^ p[1]^p[2] ^p[3] ^ p[4] ^ p[5] ^ p[6] ^ p[7]^p[8];

endmodule
Q3:

module Exercise1 (
input [7:0] a,
input [7:0] b,
output reg equal,
output reg less,
output reg greater
);

always @(*)
begin
equal = 0;
less = 0;
greater = 0;

if (a == b) begin
equal = 1;
end else if (a < b) begin
less = 1;
end else begin
greater = 1;
end
end

endmodule
Q4:

`timescale 1ns / 1ps

module multiplier_concat(

input [3:0] A,

input [3:0] B,

output reg [7:0] product

);

/*wire [7:0] P0, P1, P2, P3;

assign P0 = {4'b0000, (A & {4{B[0]}})}; // P0 = A * B[0]

assign P1 = {3'b000, (A & {4{B[1]}}), 1'b0}; // P1 = A * B[1] << 1

assign P2 = {2'b00, (A & {4{B[2]}}), 2'b00}; // P2 = A * B[2] << 2

assign P3 = {1'b0, (A & {4{B[3]}}), 3'b000}; // P3 = A * B[3] << 3

assign product = P0 + P1 + P2 + P3;*/

integer i;
always @(*) begin

product = 8'b0; // Initialize product to 0

for (i = 0; i < 4; i = i + 1) begin

if (B[i])

product = product + (A << i); // Shift A and add to product

end

end

endmodule

You might also like