Skip to main content

verilog code for the Arithmatic Logical unit

Author : Kishore Papisetty

//verilog code for the arithmatic logocal unit //


module ALU(
    output [7:0]f,
input [3:0] a,
    input [3:0] b,
    input [1:0] s
 
    );


wire [3:0]q,r;
wire [7:0]p,z,l,k;
wire cout,br,cin,c;
assign cin=1'd0;
assign c=1'd0;
assign z=8'd0;

ripple A1(r,cout,a,b,cin);
subtractor A2(q,br,a,b,c);
binarymul A3(p,a,b);
assign k={3'd0,cout,r[3:0]};
assign l={4'd0,q[3:0]};

mux_21 A5(f,s,p,l,k,z);
endmodule

//TEST BENCH//

module ALU_TB;

// Inputs
reg [3:0] a;
reg [3:0] b;
reg [1:0] s;

// Outputs
wire [7:0] f;

// Instantiate the Unit Under Test (UUT)
ALU uut (
.f(f),
.a(a),
.b(b),
.s(s)
);

initial begin
// Initialize Inputs
a <=4'd0;
b <=4'd0;
s <=2'd0;

// Wait 100 ns for global reset to finish
#100;
#100
s<=2'b00;

a<=4'd5;
b<=4'd4;
  #100 s<=2'b01;

a<=4'd4;
b<=4'd4;
#100 s<=2'b10;

a<=4'd15;
b<=4'd4;
#100 s<=2'b11;

     
// Add stimulus here

end
   
endmodule





ALU RTL VIEW





WAVEFORM:








//verilog for the subtracor//:

module fullsubtractor(
    output diff,
    output br,
    input a,
    input b,
    input c
    );

assign diff = a^b^c;
assign br = (~a&b)|(~a&c)|(b&c);
endmodule

//verilog for the mux//:

module mux_21(
 output [7:0]op,
 input [1:0]s,
    input [7:0]p,
    input [7:0]q,
 input [7:0]r,
    input [7:0]z
 );
 assign op=s[1]?(s[0]?z:r):(s[0]?q:p);
endmodule


for adder and the multiplier you can found the codes in this blogger with the names ripple carry adder and 4 bit multiplier...




Comments

Popular posts from this blog

FSM 101 in Mealy state

Author : Kishore Papisetty fsm style : mealy fsm verilog code for the sequence detector 101 in mealy state   module fsm_101(clk,rst,x,z); input clk,rst,x; output z; reg [1:0]pstate,nstate; reg z;   always@(x,pstate) case(pstate) 2'd0: if(x==1'd1) begin nstate<=2'd1; z<=1'd0; end else begin nstate<=2'd0; z<=1'd0; end 2'd1: if(x==1'd0) begin nstate<=2'd2; z<=1'd0; end else begin nstate<=2'd1; z<=1'd0; end 2'd2: if(x==1'd1) begin nstate<=2'd1; z<=1'd1; end else begin nstate<=2'd0; z<=1'd0; end endcase   always@(posedge clk) begin if(rst==1'd0) pstate<=2'd0; else pstate<=nstate; end   endmodule //TEST BENCH// `timescale 1ns / 1ps module fsm_tb; reg clk; reg rst; reg x; wire z; fsm_101 uut ( ...

JNTUA MTECH VLSI 2nd SEMESTER QUESTION PAPERS

VHDL code for a 3-bit binary to thermometer converter

Author : Kishore Papisetty Platform : Xilinx code : VHDL //bit binary to thermometer converter// library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.numeric_std.all; entity bin2therm2bit is                 port (                                 binary_input : in std_logic_vector (1 downto 0);                                 therm_output : out std_logic_vector (6 downto 0)                 ); end bin2therm6bit; architecture Behavioral of bin2therm6bit is begin                 process (binary_input)                 begin                                 label1 : case binary_inpu...