vlsi record 6th sem nit trichy

67
NATIONAL INSTITUTE OF TECHNOLOGY TIRUCHIRAPALLI- 620015 LABORATORY RECORD Certified Bonafide Record of work done by …………………………………………………………………………………………………………. Class ………………………………... ......... Roll No …….....…………………………….... University Examination ……………………………………………………………...Registration No ...............……………………. Year ……...............……………….. Staff Incharge Head of the department Internal Examiner External Examiner

Upload: sumantabose

Post on 21-Apr-2015

181 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: VLSI Record 6th Sem NIT Trichy

NATIONAL INSTITUTE OF TECHNOLOGY

TIRUCHIRAPALLI- 620015

LABORATORY RECORD

Certified Bonafide Record of work done by

………………………………………………………………………………………………………….

Class ………………………………............ Roll No …….....……………………………....

University Examination ……………………………………………………………...…

Registration No ...............……………………. Year ……...............………………..

Staff Incharge Head of the department

Internal Examiner External Examiner

Page 2: VLSI Record 6th Sem NIT Trichy

INDEX

Expt. No. Date Experiment

Page No. Marks

1 12-01-

2012 Half Adder, Full Adder, Half Subtractor, Full Subtractor 3

2 18-01-

2012 Multiplexer and Demultiplexer 27

3 02-02-

2012 Working with RAM 38

4 09-02-

2012 Comparators, Parity Generator and ALU 41

5 21-02-

2012 Counters and shift registers 55

6 06-03-

2012 Carry Look Ahead Adder, Braun-Array Multiplier, FIR Filter 60

Page 3: VLSI Record 6th Sem NIT Trichy

EXPERIMENT 1

Half Adder, Full Adder, Half Subtractor, Full Subtractor

Aim:

To design and implement

a.Half adder b.Half subtractor

c.Full adder d.Full subtractor

Tool Required: Altera Quartus II

Code:

Half adder (functional)

Code:

module half_adders (s,c,a,b);

output s,c;

input a,b;

xor(s,a,b);

and(c,a,b);

endmodule

Compilation Report:

Page 4: VLSI Record 6th Sem NIT Trichy

Simulation Report:

RTL Viewer:

Half adder

Structural:

module half(s,c,a,b);

output s,c;

input a,b;

wire s,c,a,b;

Page 5: VLSI Record 6th Sem NIT Trichy

assign s=a^b;

assign c=a&b;

endmodule

Compilation Report:

Simulation Report:

Page 6: VLSI Record 6th Sem NIT Trichy

RTL Viewer::

Half adder(data flow)

Code:

module ha1(s,c,x,y);

input x,y;

output s,c;

assign {c,s}=x+y;

endmodule

Compilation Report:

Page 7: VLSI Record 6th Sem NIT Trichy

Simulation Report:

RTL Viewer:

Full adder

Code:

module fulladd (sum,cout,in1,in2,cin);

output sum,cout;

input in1,in2,cin;

wire sum,cout,in1,in2,cin;

wire i1,i2,i3;

Page 8: VLSI Record 6th Sem NIT Trichy

half ha1(i1,i2,in1,in2);

half ha2(sum,i3,i1,cin);

assign cout=i2||i3;

endmodule

Compilation Report:

Simulation Report:

Page 9: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Full subtractor

Code:

module full_sub(d,bo,a,b,b1);

output d,bo;

input a,b,b1;

assign d=a^b^b1;

assign bo=((~a)&(b|b1))|(b&b1);

endmodule

Page 10: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation Report:

Page 11: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Half subractor(funtional)

Code:

module half_subs (d,b0, a, b);

output d, b0;

input a,b;

wire abar;

not(abar,a);

xor (d, a, b);

and(b0,abar,b);

endmodule

Page 12: VLSI Record 6th Sem NIT Trichy

Compilaion Report:

Simulation Report:

Page 13: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Half adder(behavioural)

module ha1(s,c,x,y);

input x,y;

output reg s,c;

always

begin

{c,s}=x+y;

end

endmodule

Page 14: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation Report:

Page 15: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Full subtractor(behavioural)

Code:

module hs2(d,b,x,y);

input x,y;

output reg d,b;

always @(x or y)

begin

{b,d}=x-y;

end

endmodule

Page 16: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation Report:

Page 17: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Half subtractor(data flow)

Code:

module hs1(d,b,x,y);

input x,y;

output d,b;

assign {b,d}=x-y;

endmodule

Page 18: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation Report:

Page 19: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Full adder(behavioural)

Code:

module fa3(s,c,x,y,z);

input x,y,z;

output reg s,c;

always

begin

{c,s}=x+y+z;

end

endmodule

Page 20: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation Report:

Page 21: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Full subractor (behavioural)

Code:

module f3(d,b,x,y,z);

input x,y,z;

output reg d,b;

always

begin

{b,d}=x-y-z;

end

endmodule

Page 22: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation Report:

Page 23: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Full subtractor(using half subtractor)

Code:

module fs1(d,b,x,y,z);

input x,y,z;

output d,b;

wire do,bo,b1;

hs1 h1(do,bo,x,y);

hs1 h2(d,b1,do,z);

or o1(b,bo,b1);

endmodule

Page 24: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation Report:

Page 25: VLSI Record 6th Sem NIT Trichy

RTL Viewer:

Result:

Half adder, full adder, half subtractor, full subtractor was implemented using Verilog HDL.

Page 26: VLSI Record 6th Sem NIT Trichy
Page 27: VLSI Record 6th Sem NIT Trichy

Experiment 2

Multiplexer and De-multiplexer

Aim:

To design and implement the following:

1. 4:1 mux

2. 16:1 mux

3. 1:4 demux

4. 1:16 demux

Tools Required:

Quartus II 9.2

1. 4:1 mux

Code:

module mux41(s,i,y);

output y;

input [1:0]s;

input [3:0]i;

reg y;

always @(s or i)

case(s)

2'b00:y=i[0];

2'b01:y=i[1];

2'b10:y=i[2];

2'b11:y=i[3];

default: y=0;

endcase

endmodule

Page 28: VLSI Record 6th Sem NIT Trichy

Compilation Report:

Simulation:

RTL View:

2. 16:1 mux

Code:

Page 29: VLSI Record 6th Sem NIT Trichy

module mux16(s,i,y);

output y;

input s,i;

wire [0:3]j;

wire [0:3]s;

wire [0:15]i;

mux41(s[2:3],i[0:3],j[0]);

mux41(s[2:3],i[4:7],j[1]);

mux41(s[2:3],i[8:11],j[2]);

mux41(s[2:3],i[12:15],j[3]);

mux41(s[0:1],j[0:3],y);

endmodule

Compilation Report:

Page 30: VLSI Record 6th Sem NIT Trichy

Simulation:

RTL View:

Page 31: VLSI Record 6th Sem NIT Trichy

3. 1:4 demux

Code:

module demux1x4(s0,s1,i,o0,o1,o2,o3);

output o0,o1,o2,o3;

input s0,s1,i;

wire o0, o1, o2, o3;

wire sn0,sn1;

not (sn0,s0);

not(sn1, s1);

and (o0, i, sn1, sn0);

and (o1, i, sn1, s0);

and (o2, i, s1, sn0);

and (o3, i, s1, s0);

endmodule

Compilation Report:

Page 32: VLSI Record 6th Sem NIT Trichy

Simulation:

RTL View:

Page 33: VLSI Record 6th Sem NIT Trichy

4. 1:16 demux

Code:

module demux1_1x16(s,i,o);

output o;

input s,i;

wire [0:15]o;

wire [0:3]s;

wire [0:3]j;

demux1x4(s[2],s[3],i,j[0],j[1],j[2],j[3]);

demux1x4(s[0],s[1], j[0], o[0], o[1], o[2], o[3]);

demux1x4(s[0],s[1], j[1], o[4], o[5], o[6], o[7]);

demux1x4(s[0],s[1], j[2], o[8], o[9], o[10], o[11]);

demux1x4(s[0],s[1], j[3], o[12], o[13], o[14], o[15]);

endmodule

Compilation Report:

Page 34: VLSI Record 6th Sem NIT Trichy

Simulation:

RTL View:

Page 35: VLSI Record 6th Sem NIT Trichy

Problem Statement:

5:1 Mux using 2:1 Mux

module mux51(y,s,i);

input [4:0]i;

input [2:0]s;

output y;

wire [2:0]t;

mux21 m1(t[0],s[0],i[1],i[0]);

mux21 m2(t[1],s[0],i[3],i[2]);

mux21 m3(t[2],s[1],t[0],t[1]);

mux21 m4(y,s[2],i[4],t[2]);

endmodule

module mux21(y,i0,i1,s);

input s,i0,i1;

output y;

wire a,b,c;

not (a,s);

and (c,a,i0);

and (b,s,i1);

or (y,b,c);

endmodule

Compilation Report:

Page 36: VLSI Record 6th Sem NIT Trichy

Simulation :

RTL View:

result :

The Verilog HDL code was written, simulated and verified for the following:

1. 4:1 mux

2. 16:1 mux

3. 1:4 demux

4. 1:16 demux

A 5:1 MUX was realized using four 2:1 MUX in Verilog HDL and verified.

Page 37: VLSI Record 6th Sem NIT Trichy
Page 38: VLSI Record 6th Sem NIT Trichy

Experiment No 3

WORKING WITH RAM

AIM:

To generate a 3-port RAM using the Megacore utility available in ALtera Quartus II and to build an

accumulator using the RAM which stores the sum of two locations in the RAM in a third location

TOOLS REQUIRED:

Altera Quartus II

CODE :

module fa ( a,b,c_out,s);

input [7:0]a;

input [7:0]b;

output [7:0]s;

output c_out;

assign {c_out,s}=a+b;

endmodule

SCHEMATIC REPRESENTATION:

Page 39: VLSI Record 6th Sem NIT Trichy

COMPILATION REPORT:

SIMULATION REPORT:

Result: A 3-port RAM using MEGA Core utility is generated on Altera Quartus II and an accumulator

using RAM storing sum of 2 no. in 3rd location is built and verified using waveform.

Page 40: VLSI Record 6th Sem NIT Trichy
Page 41: VLSI Record 6th Sem NIT Trichy

Experiment 4

Comparators, Parity Generator and ALU

Aim:

To design and implement the following:

5. Comparator

6. ALU

7. Parity Generator

Tools Required:

Xilinx ISE Software

5. Comparator

Code:

module comparator(a, b, out);

input [3:0] a;

input [3:0] b;

output reg [2:0] out;

always @(*)

begin

if (a>b)

out=3'b100;

else if (a<b)

out=3'b001;

else

out=3'b010;

end

endmodule

Synthesis Report:

---- Source Parameters

Input File Name : "comparator.prj"

Input Format : mixed

Ignore Synthesis Constraint File : NO

---- Target Parameters

Page 42: VLSI Record 6th Sem NIT Trichy

Output File Name : "comparator"

Output Format : NGC

Target Device : Automotive 9500XL

---- Source Options

Top Module Name : comparator

Automatic FSM Extraction : YES

FSM Encoding Algorithm : Auto

Safe Implementation : No

Mux Extraction : YES

Resource Sharing : YES

---- Target Options

Add IO Buffers : YES

MACRO Preserve : YES

XOR Preserve : YES

Equivalent register Removal : YES

---- General Options

Optimization Goal : Speed

Optimization Effort : 1

Library Search Order : comparator.lso

Keep Hierarchy : YES

RTL Output : Yes

Hierarchy Separator : /

Bus Delimiter : <>

Case Specifier : maintain

Verilog 2001 : YES

---- Other Options

Clock Enable : YES

wysiwyg : NO

=====================================================================

====

* HDL Compilation *

=====================================================================

====

WARNING:HDLCompilers:176 - Include directory \Documents and

Settings\owner\Desktop\xilinx1\acpcs\ does not exist

Page 43: VLSI Record 6th Sem NIT Trichy

Compiling verilog file "C:/Documents and

Settings/owner/Desktop/xilinx1/acpcs/comparator.v" in library work

Module <comparator> compiled

No errors in compilation

Analysis of file <"comparator.prj"> succeeded.

=====================================================================

====

* Design Hierarchy Analysis *

=====================================================================

====

Analyzing hierarchy for module <comparator> in library <work>.

=====================================================================

====

* HDL Synthesis *

=====================================================================

====

Performing bidirectional port resolution...

Synthesizing Unit <comparator>.

Related source file is "C:/Documents and

Settings/owner/Desktop/xilinx1/acpcs/comparator.v".

Found 4-bit comparator greater for signal <out$cmp_gt0000> created at line 27.

Found 4-bit comparator less for signal <out$cmp_lt0000> created at line 29.

Summary:

inferred 2 Comparator(s).

Unit <comparator> synthesized.

=====================================================================

====

HDL Synthesis Report

Macro Statistics

# Comparators : 2

4-bit comparator greater : 1

4-bit comparator less : 1

=====================================================================

====

* Advanced HDL Synthesis *

Page 44: VLSI Record 6th Sem NIT Trichy

Advanced HDL Synthesis Report

Found no macro

=====================================================================

====

* Low Level Synthesis *

=====================================================================

====

Optimizing unit <comparator> ...

=====================================================================

====

* Partition Report *

=====================================================================

====

Partition Implementation Status

=====================================================================

* Final Report *

=====================================================================

====

Final Results

RTL Top Level Output File Name : comparator.ngr

Top Level Output File Name : comparator

Output Format : NGC

Optimization Goal : Speed

Keep Hierarchy : YES

Target Technology : Automotive 9500XL

Macro Preserve : YES

XOR Preserve : YES

Clock Enable : YES

wysiwyg : NO

Page 45: VLSI Record 6th Sem NIT Trichy

RTL View:

Simulation Report:

6. ALU

Code:

module alu(a, b, select, alu_out);

input [3:0] a;

input [3:0] b;

input [2:0] select;

output reg [7:0] alu_out;

always @(select[0] or select[1 ] or select[2])

case ({select[0], select[1 ], select[2]})

3'b000:alu_out=a+b;

3'b001:alu_out=a-b;

3'b010:alu_out=a*b;

3'b011:alu_out=a&b; //bit wise and

3'b100:alu_out=a|b; //bit wise or

3'b101:alu_out=a^b; //xor

3'b110:alu_out=a<<1; //left shift

Page 46: VLSI Record 6th Sem NIT Trichy

3'b111:alu_out=b>>1; //right shift

endcase

endmodule

Synthesis Report:

---- Source Parameters

Input File Name : "alu.prj"

Input Format : mixed

Ignore Synthesis Constraint File : NO

---- Target Parameters

Output File Name : "alu"

Output Format : NGC

Target Device : Automotive 9500XL

---- Source Options

Top Module Name : alu

Automatic FSM Extraction : YES

FSM Encoding Algorithm : Auto

Safe Implementation : No

Mux Extraction : YES

Resource Sharing : YES

---- Target Options

Add IO Buffers : YES

MACRO Preserve : YES

XOR Preserve : YES

Equivalent register Removal : YES

---- General Options

Optimization Goal : Speed

Optimization Effort : 1

Library Search Order : alu.lso

Keep Hierarchy : YES

RTL Output : Yes

Hierarchy Separator : /

Bus Delimiter : <>

Case Specifier : maintain

Verilog 2001 : YES

Page 47: VLSI Record 6th Sem NIT Trichy

---- Other Options

Clock Enable : YES

wysiwyg : NO

RTL View:

Simulation Report:

7. Parity Generator

Code:

module parity_gen(a, par);

input [7:0] a;

output reg par;

//odd parity

Page 48: VLSI Record 6th Sem NIT Trichy

always @(*)

par=(~(^a));

endmodule

Synthesis Report:

---- Source Parameters

Input File Name : "parity_gen.prj"

Input Format : mixed

Ignore Synthesis Constraint File : NO

---- Target Parameters

Output File Name : "parity_gen"

Output Format : NGC

Target Device : Automotive 9500XL

---- Source Options

Top Module Name : parity_gen

Automatic FSM Extraction : YES

FSM Encoding Algorithm : Auto

Safe Implementation : No

Mux Extraction : YES

Resource Sharing : YES

---- Target Options

Add IO Buffers : YES

MACRO Preserve : YES

XOR Preserve : YES

Equivalent register Removal : YES

---- General Options

Optimization Goal : Speed

Optimization Effort : 1

Library Search Order : parity_gen.lso

Keep Hierarchy : YES

RTL Output : Yes

Hierarchy Separator : /

Bus Delimiter : <>

Case Specifier : maintain

Verilog 2001 : YES

Page 49: VLSI Record 6th Sem NIT Trichy

---- Other Options

Clock Enable : YES

wysiwyg : NO

=====================================================================

====

=====================================================================

====

* HDL Compilation *

=====================================================================

====

WARNING:HDLCompilers:176 - Include directory \Documents and

Settings\owner\Desktop\xilinx1\acpcs\ does not exist

Compiling verilog file "C:/Documents and

Settings/owner/Desktop/xilinx1/acpcs/parity_gen.v" in library work

Module <parity_gen> compiled

No errors in compilation

Analysis of file <"parity_gen.prj"> succeeded.

* Design Hierarchy Analysis *

=====================================================================

====

Analyzing hierarchy for module <parity_gen> in library <work>.

* HDL Analysis *

=====================================================================

====

Analyzing top module <parity_gen>.

Module <parity_gen> is correct for synthesis.

* HDL Synthesis *

=====================================================================

====

Performing bidirectional port resolution...

Synthesizing Unit <parity_gen>.

Related source file is "C:/Documents and

Settings/owner/Desktop/xilinx1/acpcs/parity_gen.v".

Found 1-bit xor8 for signal <par$xor0000> created at line 26.

Unit <parity_gen> synthesized.

Page 50: VLSI Record 6th Sem NIT Trichy

=====================================================================

====

HDL Synthesis Report

Macro Statistics

# Xors : 1

1-bit xor8 : 1

* Advanced HDL Synthesis *

=====================================================================

====

=====================================================================

====

Advanced HDL Synthesis Report

Macro Statistics

# Xors : 1

1-bit xor8 : 1

* Low Level Synthesis *

=====================================================================

====

Optimizing unit <parity_gen> ...

=====================================================================

====

* Partition Report *

=====================================================================

====

Partition Implementation Status

-------------------------------

No Partitions were found in this design.

-------------------------------

Page 51: VLSI Record 6th Sem NIT Trichy

=====================================================================

====

* Final Report *

=====================================================================

====

Final Results

RTL Top Level Output File Name : parity_gen.ngr

Top Level Output File Name : parity_gen

Output Format : NGC

Optimization Goal : Speed

Keep Hierarchy : YES

Target Technology : Automotive 9500XL

Macro Preserve : YES

XOR Preserve : YES

Clock Enable : YES

wysiwyg : NO

RTL View:

Simulation Report:

Page 52: VLSI Record 6th Sem NIT Trichy

8. Extra Problem Statement

module extra(s1, s2, b, o, m, a);

input [3:0] s1;

input [3:0] s2;

input [7:0] b;

output reg [15:0] o;

output [2:0] m;

input [7:0] a;

comparator c(s1,s2,m);

alu a1(a,b,m,o);

endmodule

Synthesis Report:

---- Source Parameters

Input File Name : "extra.prj"

Input Format : mixed

Ignore Synthesis Constraint File : NO

---- Target Parameters

Output File Name : "extra"

Output Format : NGC

Target Device : Automotive 9500XL

---- Source Options

Top Module Name : extra

Automatic FSM Extraction : YES

FSM Encoding Algorithm : Auto

Safe Implementation : No

Mux Extraction : YES

Resource Sharing : YES

---- Target Options

Add IO Buffers : YES

MACRO Preserve : YES

XOR Preserve : YES

Page 53: VLSI Record 6th Sem NIT Trichy

Equivalent register Removal : YES

---- General Options

Optimization Goal : Speed

Optimization Effort : 1

Library Search Order : extra.lso

Keep Hierarchy : YES

RTL Output : Yes

Hierarchy Separator : /

Bus Delimiter : <>

Case Specifier : maintain

Verilog 2001 : YES

---- Other Options

Clock Enable : YES

wysiwyg : NO

Simulation Report:

Result:

1. Verilog HDL Code was written and simulated for the following:

a) Comparator b) Parity Generator c) ALU in Xilinx ISE.

2. Verilog Code was written and simulated for the given problem

and verified in Xilinx ISE.

Page 54: VLSI Record 6th Sem NIT Trichy
Page 55: VLSI Record 6th Sem NIT Trichy

Experiment 5

Counters and shift registers

Aim:

To simulate and synthesize Verilog HDL programming using Xilinx for the following:

1. Decade counter

2. Ripple counter

3. SISO

4. PIPO

Tools Required:

Xilinx-ISE

1. Decade counter

Code:

module decadecounter(clk,Q);

input clk;

output reg [3:0] Q=0;

always @(posedge clk)

begin

Q=Q+1;

if(Q==10)Q=0;

end

endmodule

Simulation Report:

Page 56: VLSI Record 6th Sem NIT Trichy

2. Ripple counter:

Code:

module rc(clk,o,up);

input clk,up;

output reg [3:0] o=0;

always @(posedge clk)

begin

if(up==1)

begin

o=o+1;

end

else

begin

o=o-1;

end

end

endmodule

Simulation report:

3. SISO

Page 57: VLSI Record 6th Sem NIT Trichy

Code:

module siso(i,clk,o);

input clk,i;

output reg o;

reg[3:0] p;

always@(posedge clk)

begin

o=p[3];

p[3]=p[2];

p[2]=p[1];

p[1]=p[0];

end

endmodule

Simulation report:

4.PIPO:

Code:

module pipo(i,clk,o);

input i,clk;

output reg o;

always@(posedge clk)

o=i;

endmodule

Page 58: VLSI Record 6th Sem NIT Trichy

Simulation report:

Result:

The following were designed and implemented :

1. Decade counter

2. Ripple counter

3. SISO

4. PIPO

Page 59: VLSI Record 6th Sem NIT Trichy
Page 60: VLSI Record 6th Sem NIT Trichy

EXPERIMENT NO. 6

Carry Look Ahead Adder, Braun-Array Multiplier, FIR Filter

AIM: To simulate and synthesize Verilog HDL program for the following

1. CARRY LOOK AHEAD ADDER 2. BRAUN- ARRAY MULTIPLIER 3. FIR FILTER

TOOLS REQUIRED: Xilinx- ISE 9.2

CODE:

CARRY LOOK AHEAD ADDER

module carry_ahead (a,b, ci, s,co);

input [3:0] a;

input [3:0] b;

input ci;

output [3:0] s;

output co;

wire [9:0] x;

wire [3:0] p;

wire [3:0]g;

wire [2:0] y;

hf ha1( a[0], b[0], p[0], g[0]);

hf ha2( a[1], b[1], p[1], g[1]);

hf ha3( a[2], b[2], p[2], g[2]);

hf ha4( a[3], b[3], p[3], g[3]);

xor ( s[0], ci, p[0]);

and (x[0], ci, p[0]);

or( y[0], x[0], g[0]);

Page 61: VLSI Record 6th Sem NIT Trichy

xor( s[1], y[0], p[1]);

and (x[1], p[1], p[0],ci);

and ( x[2], p[1], g[0]);

or ( y[1], x[1], x[2], g[1]);

xor( s[2], y[1], p[2]);

and (x[3], p[0], p[1], p[2], ci);

and ( x[4], p[1], p[2], g[0]);

and (x[5], p[2], g[1]);

or (y[2], x[3], x[4], x[5], g[2]);

xor (s[3], y[2], p[3]);

and (x[6], p[0], p[1],p[2], p[3], ci);

and ( x[7], p[1], p[2], p[3], g[0]);

and (x[8], p[2], p[3], g[1]);

and (x[9], p[3], g[2]);

or (co, x[6], x[7], x[8], x[9], g[3]);

endmodule

module hf( a, b, s, c);

input a,b;

output c, s;

xor( s, a,b);

and (c, a,b);

endmodule

Page 62: VLSI Record 6th Sem NIT Trichy

SIMULATION

BRAUN ARRAY MULTIPLIER

CODE:

module braun_mul( a, b, p);

input [3:0] a;

input [3:0] b;

output [7:0] p;

wire [10:0] c;

wire [14:0] d;

wire s, s1, s2, s3, s4, s5;

and( p[0], a[0], b[0]);

Page 63: VLSI Record 6th Sem NIT Trichy

and ( d[0], a[1], b[0]);

and (d[1], a[0], b[1]);

and( d[2], a[2], b[0]);

and (d[3],a[1], b[1]);

and (d[4],a[0], b[2]);

and (d[5],a[3], b[0]);

and (d[6],a[2], b[1]);

and (d[7],a[1], b[2]);

and (d[8],a[0], b[3]);

and (d[9],a[3], b[1]);

and (d[10],a[2], b[2]);

and (d[11],a[1], b[3]);

and (d[12],a[3], b[2]);

and (d[13],a[2], b[3]);

and (d[14],a[3], b[3]);

fa f1( p[1], c[0], d[0], d[1], 0);

fa f2( s, c[1], d[2], d[3], 0);

fa f3(p[2], c[2], s, d[4], c[0]);

fa f4( s1, c[3], d[5], d[6], 0);

fa f5( s2, c[4], s1, d[7], c[7]);

fa f6 (p[3], c[5], s2, d[8], c[2]);

fa f7( s3, c[6], d[9], d[10], c[3]);

fa f8( s4, c[7], s3, d[11], c[4]);

fa f9( p[4], c[8], s4, 0, c[5]);

fa f10(s5, c[9], d[12], d[13], c[6]);

fa f11 (p[5], c[10], s5, c[8], c[7]);

fa f12 (p[6], p[7], d[14], c[7], c[10]);

Page 64: VLSI Record 6th Sem NIT Trichy

endmodule

module fa(sum, co, a,b ,ci);

input a, b, ci;

output sum, co;

wire c1, c2, c3;

xor( sum, a,b, ci);

and (c1, a,b);

and (c2, ci, b);

and (c3, a, ci);

or(co, c1, c2, c3);

endmodule

SIMULATION

Page 65: VLSI Record 6th Sem NIT Trichy

FIR FILTER

CODE:

module filter(x, a, b, c, y, clk);

input [3:0]x;

input [3:0]a;

input [3:0]b;

input [3:0]c;

input clk;

output reg [8:0] y;

reg [3:0] xn=0;

reg [3:0] xn_1=0;

wire [7:0] p1;

wire [7:0] p2;

wire [7:0] p3;

wire [7:0] s1;

wire [7:0] s2;wire [8:0] out;

wire [8:0] oo;

braun_mul b1 ( x, a, p1);

braun_mul b2 (xn, b, p2);

braun_mul b3( xn_1, c, p3);

assign out= p1+p2;

assign oo= p3+out;

always@ ( posedge clk)

begin

xn_1<= xn;

xn<= x;

y<= oo;

Page 66: VLSI Record 6th Sem NIT Trichy

end

endmodule

SIMULATION

RESULT:

The following were synthesized and simulated using Verilog HDL

CARRY LOOK AHEAD ADDER

BRAUN- ARRAY MULTIPLIER

FIR FILTER

Page 67: VLSI Record 6th Sem NIT Trichy