vlsi system design - fuuasteed.yolasite.com system design.pdf · vlsi system design 1 vvvvlsi...

Post on 12-Apr-2018

246 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 1

VVVVLSI SYSTEM DESIGNLSI SYSTEM DESIGNLSI SYSTEM DESIGNLSI SYSTEM DESIGN

Prepared By:

Engr. Yousaf Hameed Lab Engineer

BASIC ELECTRICAL & DIGITAL SYSTEMS LAB

DEPARTMENT OF ELECTRICAL ENGINEERING

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 2

LAB 01 Schematic

“Introduction to DSCH and a simple Gate implementation in DSCH”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 3

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 4

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 5

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 6

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 7

LAB 02 Schematic

“CMOS Switch Level Modeling of Basic Gates (Nand, Nor, Xor,Xnor) and Complex Function

in DSCH.”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 8

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 9

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 10

LAB 03 Schematic

“Implementation of Full adder in DSCH at switch level”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 11

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 12

LAB 04 Layout

“Introduction to Microwind and analysis of MOSFETS”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 13

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 14

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 15

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 16

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 17

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 18

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 19

LAB 05 Layout

“MOSFET Inverter Characteristics and layout in Microwind (Layer Level Modeling)”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 20

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 21

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 22

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 23

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 24

LAB 06 Layout

“Layout of basic gates using 0.25 micron technology in Microwind (Layer level modeling)”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 25

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 26

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 27

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 28

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 29

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 30

LAB 07 Layout

“Layout of Complex gate using 0.25 micron technology in Microwind (Layer level

modeling)”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 31

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 32

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 33

LAB 08 Layout

“Design and implementation of full adder at layer level in Microwind.”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 34

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 35

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 36

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 37

LAB 09 Layout

“Design and implementation of Static RAM Cell layout using CMOS 0.12 micron

technology in Microwind.”

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 38

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 39

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 40

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 41

LAB 10

“Introduction to Modelsim (Verilog Coding) implementation of Half Adder & Full Adder at

gate level, data flow and behavior level”

A - GATE LEVEL DESIGN

At gate level, the circuit is described in terms of gates (e.g. and, nand). Hardware design at this level is intuitive for a

user with a basic knowledge of digital logic design because it is possible to see a one-to-one correspondence between

the logic circuit diagram and the Verilog description.

Lab Overview

In this lab you will:

• Learn modeling at gate level

• Half adder design

• Full adder design

• Multiplexer design

• Decoder design

Background:

The simplest form of adder is called a Half-Adder (HA). The HA performs bit-wise addition between two input bits.

Depending on the result of the operation, the HA either sets or clears its Sum and Carry bit. A HA can be expanded to

include the logic for carry–in, and the modified unit is called the Full Adder (FA).

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 42

The verilog code for the half adder is

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

input a,b;

output s,c;

xor(s,a,b);

and(c,a,b);

endmodule

The test bench of the half adder is

module testbench_HA();

reg a,b;

wire s,c;

HA HA_inst(a,b,s,c);

initial

begin

a=0; b=0;

#10 a=0; b=1;

#10 a=1; b=0;

#10 a=1; b=1;

end

endmodule

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 43

We can use the half adder to design a full adder as shown in figure 1.3. The full adder takes an extra bit as input for

carry in.

The verilog code of full adder is

module FA(a,b,cin,s,cout);

input a,b,cin;

output s,cout;

wire c0, s0, c1;

HA HA_inst0(a,b,s0,c0);

HA HA_inst1(cin,s0,s,c1);

or(cout, c1,c0);

endmodule

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 44

B - DATAFLOW LEVEL DESIGN

Dataflow modeling provides a powerful way to implement a design. Verilog allows a circuit to be designed in

terms of the data flow between registers and how a design processes data rather than instantiation of individual

gates.

Lab Overview

In this lab you will:

• Learn modeling at dataflow level

• Half adder design (dataflow)

• Full adder design (dataflow)

• 4-bit adder design

• 12-bit Carry Select Adder (CSA)

• Multiplexer design (dataflow)

• Decoder design (dataflow)

Background:

The simplest form of adder is called a Half-Adder (HA). The HA performs bit-wise addition between two input

bits. Depending on the result of the operation, the HA either sets or clears its Sum and Carry bit. A HA can be

expanded to include the logic for carry–in, and the modified unit is called the Full Adder (FA).

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 45

The verilog code for the half adder at dataflow level is

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

input a,b;

output s,c;

assign s = a^b;

assign c = a&b;

// assign {s,c} = a+b;

endmodule

The test bench of the half adder is

module testbench_HA();

reg a,b;

wire s,c;

HA HA_inst(a,b,s,c);

initial

begin

a=0; b=0;

#10 a=0; b=1;

#10 a=1; b=0;

#10 a=1; b=1;

end

endmodule

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 46

We can use the half adder to design a full adder as shown in figure 2.3. The full adder takes an extra bit as

input for carry in.

The verilog code of full adder at dataflow level is

module FA(a,b,cin,s,cout);

input a,b,cin;

output s,cout;

wire c0, s0, c1;

HA HA_inst0(a,b,s0,c0);

HA HA_inst1(cin,s0,s,c1);

assign cout = c1 | c0;

assign {s,cout} = a + b + cin;

endmodule

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 47

C. BEHAVIORAL LEVEL DESIGN

With the increasing complexity of digital design, it has become vitally important to make wise design decisions early

in a project. Designers need to be able to evaluate the trade-offs of various architectures and algorithms before they

decide on the optimum architecture and algorithm to implement in hardware. Thus, architectural evaluation takes

place at an algorithmic level where the designers do not necessarily think in terms of logic gates or data flow but in

terms of the algorithm they wish to implement in hardware. They are more concerned about the behavior of the

algorithm and its performance. Only after the high-level architecture and algorithm are finalized, do designers start

focusing on building the digital circuit to implement the algorithm.

Verilog provides designers the ability to describe design functionality in an algorithmic manner. In other words, the

designer describes the behavior of the circuit. Thus, behavioral modeling represents the circuit at a very high level of

abstraction.

Lab Overview

In this lab you will:

• Learn modeling at dataflow level

• Half adder design (dataflow)

• Full adder design (dataflow)

• 4-bit adder design

• 12-bit Carry Select Adder (CSA)

• Multiplexer design (dataflow)

• Decoder design (dataflow)

Background:

The simplest form of adder is called a Half-Adder (HA). The HA performs bit-wise addition between two input bits.

Depending on the result of the operation, the HA either sets or clears its Sum and Carry bit. A HA can be expanded to

include the logic for carry–in, and the modified unit is called the Full Adder (FA).

At behavioral level you don’t need to know the structural model but you are only concerned with the behavioral of a

circuit. Comments have been added in the code which give a feel for behavioral level coding.

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 48

The verilog code for the half adder at behavioral level is

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

input a,b;

output s,c;

reg s,c;

always @(a or b)

begin

s= a^b;

c = a&b;

//OR {s,c} = a+b;

end

endmodule

The test bench of the half adder is

module testbench_HA();

reg a,b;

wire s,c;

HA HA_inst(a,b,s,c);

initial

begin

a=0; b=0;

#10 a=0; b=1;

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 49

#10 a=1; b=0;

#10 a=1; b=1;

end

endmodule

You can use the half adder to design a full adder. The full adder takes an extra bit as input for carry in.

The Verilog code of full adder at behavioral level is

module FA(a,b,cin,s,cout);

input a,b,cin;

output s,cout;

wire c0, s0, c1;

HA HA_inst0(a,b,s0,c0);

HA HA_inst1(cin,s0,s,c1);

assign cout = c1 | c0;

// OR

// always @(a or b or cin)

//{s,cout} = a+b+cin;

endmodule

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 50

LAB 11

Implementation of 2 to 1 line MUX

The Verilog code of 2 to 1 line multiplexer at dataflow level is

module mux(i0,i1,selct,m,n,out);

input i0,i1,selct;

output m,n,out;

assign m=i0&selct;

assign n=i1&~selct;

assign out=m|n;

endmodule

The test bench of 2 to 1 line multiplexer is

module testbench_mux;

reg i0,i1,selct;

wire m,n;

mux ff(i0,i1,selct,m,n,out);

initial

begin

i0=1'b0;i1=1'b1;selct=1'b1; //inputs a=0 and b=1

#10 i0=1'b0;i1=1'b1;selct=1'b0;

#10

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 51

$finish;

end

endmodule

Lab Tasks:

1. Write a verilog code for 2 to 1 line multiplexer in behavioral level

2. Write a verilog code for 4 to 1 line multiplexer in behavioral level.

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 52

Lab 12

Implementation of 16 bit Ripple Carry Adder

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 53

DESIGN HIERARCY OF A 16-BIT RIPPLE-CARRY ADDER

module Add_rca_16 (sum, c_out, a, b, c_in);

output [15: 0] sum;

output c_out;

input [15: 0] a, b;

input c_in;

wire c_in4, c_in8, c_in12;

Add_rca_4 M4 (sum[3:0], c_in4, a[3:0], b[3:0], c_in);

Add_rca_4 M3 (sum[7:4], c_in8, a[7:4], b[7:4], c_in4);

Add_rca_4 M2 (sum[11:8], c_in12, a[11:8], b[11:8], c_in8);

Add_rca_4 M1 (sum[15:12], c_out, a[15:12], b[15:12], c_in12);

endmodule

module Add_rca_4 (sum, c_out, a, b, c_in);

output [3: 0] sum;

output c_out;

input [3: 0] a, b;

input c_in;

wire c_in2, c_in3, c_in4;

Add_full M4 (sum[0], c_in2,a[0], b[0], c_in);

Add_full M3 (sum[1], c_in3, a[1], b[1], c_in2);

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 54

Add_full M2 (sum[2], c_in4, a[2], b[2], c_in3);

Add_full M1 (sum[3], c_out, a[3], b[3], c_in4);

endmodule

module Add_full (sum, c_out, a, b, c_in);

output sum, c_out;

input a, b, c_in;

wire w1, w2, w3;

Add_half M2 (w1, w2, a, b);

Add_half M1 (sum, w3, w1, c_in);

or G1 (c_out, w2, w3);

endmodule

module Add_half (sum, c_out, a, b);

output sum, c_out;

input a, b;

wire c_out_bar;

xor M1 (sum, a, b);

and M2 (c_out, a, b);

endmodule

Test Bench

module test_Add_rca_16 ();

wire [15: 0] sum;

wire c_out;

reg [15: 0] a, b;

reg c_in;

Add_rca_16 M1 (sum, c_out, a, b, c_in);

initial

begin

#10 a = 16'h0000; b = 16'h0000; c_in = 0;

#10 a = 16'h000f; b = 16'h000c; c_in = 0;

#10 a = 16'h000f; b = 16'h000c; c_in = 1;

#10 a = 16'h0000; b = 16'h0000; c_in = 1;

#10 a = 16'h000f; b = 16'h0001; c_in = 0;

#10 a = 16'h000f; b = 16'h0001; c_in = 1;

$finish;

end

endmodule

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 55

LAB 13

SEQUENTIAL CIRCUITS – I (FLIP FLOPS)

Computers and other digital systems that have memory or that execute a sequence of operations under the direction of stored information are referred to as “sequential machines” and their circuitry is modeled by sequential logic. Sequential machines do not behave like combinational logic because the outputs of a sequential machine depend on the history of the applied inputs as well as on

their present value. The history of the inputs applied to a sequential machine is represented by the state of the machine and requires

hardware elements that store information; that is, it requires memory to store the state of the machine as an encoded binary word.

Lab Overview In this lab you will:

• Flip flop designs

• D_FF

• JK_FF

• T_FF

• Sequential machine design using flip flop

Background:

There are two main types of sequential circuits and their classification depends on the timing of their signals. 1. A synchronous sequential circuit is a system whose behavior can be defind from the knowledge of its signals at discrete

instant of time 2. The behavior of an asynchronous sequential circuit depends upon the input signals at any time and the order in which

the inputs change.

The storage elements used in clocked sequential circuit are called flip flops. A flip flop is a binary storage device capable of storing

one bit of information. The state of a flip flop can change only during a clock pulse transition. Latches are used to model asynchronous circuits. A latch also holds one bit value but the state of the latch can change with changes in inputs and does not

require synchronization with clock pulse. In this lab we will learn to model different flip flops using Verilog. D_FF, JK_FF and T_FF are the common flip flops used in

synchronous sequential circuits. Function table are used to describe different flip flops. D_FF is the simplest of the flip-flops because

its next state is equal to its present state

Table 1 D Flip-Flop D Q(t+1)

0 0

1 1

JK_FF has its next state equal to its present state when inputs J and K are both equal to 0. When K=1 and J=0, the clock resets the

flip-flop and Q(t+1) = 0. With J=1 and K=0, the flip-flops sets and Q(t+1) =1. When both J and k are equal to 1, the next state changes to the complement of the present state.

Table 2 JK Flip-Flop

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 56

J K Q(t+1)

0 0 Q(t)

0 1 0

1 0 1

1 1 Q’(t+1)

T_FF toggles when the T=1 otherwise the state of T_ff does not change.

Table 3 T Flip-Flop T Q(t+1)

0 Q(t)

1 Q’(t+1)

Lab Tasks: 1. Write verilog code for D flip flop and write a test bench to verify the design. 2. Write verilog code for JK flip flop and write a test bench to verify the design.

3. Write verilog code for T flip flop and write a test bench to verify the design.

Documentation

Submit the codes along with the wave diagrams for the D, JK, T flip flops.

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 57

LAB 14

SEQUENTIAL CIRCUITS – II

Unlike combinational logic, whose output is an immediate function of only its present inputs, sequential logic depends on the history of its inputs. This dependency is expressed by the concept of “state” The future behavior of a sequential machine is completely characterized by its input and its present state.

Lab Overview In this lab you will learn:

• State machines

• State diagrams

• State machine design in Verilog

Background:

Finite State Machines are used to model Sequential circuits since the states of the sequential circuits change depending upon the

inputs at the clock edge. A state diagram is used to describe the sequential behavior of the circuit showing the transition of states

according to the inputs. Here a traffic light controller example is presented to show the Verilog coding of Finite state machine.

Example: Traffic light controller

The following specifications must be considered:

1. The traffic signal for the main highway gets highest priority because cars are continuously present on the

main highway. Thus, the main highway signal remains green by default.

2. Occasionally, cars from the country road arrive at the traffic signal. The traffic signal for the country road

must turn green only long enough to let the cars on the country road go.

3. As soon as there are no cars on the country road, the country road traffic signal turns yellow and then red

and the traffic signal on the main highway turn green again.

4. There is a sensor to detect cars waiting on the country road. The sensor sends a signal X as input to the

controller. X = 1 if there are cars on the country road; otherwise, X= 0.

The state machine diagram and the state definitions for the traffic signal controller are shown in the following figure

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 58

Figure 5.2 State diagram

Table 5.1 State and output signals

The traffic signal controller module can be designed with behavioral Verilog constructs

module sig_control (hwy, cntry, X, clock, clear);

//I/O ports

output [1:0] hwy, cntry; //2-bit output for 3 states of signal

//GREEN, YELLOW, RED;

reg [1:0] hwy, cntry;

//declared output signals are registers

input X; //if TRUE, indicates that there is car on

//the country road, otherwise FALSE

input clock, clear;

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 59

parameter RED = 2'd0,

YELLOW = 2'd1,

GREEN = 2'd2;

//State definition HWY CNTRY parameter S0 = 3'd0, //GREEN RED

S1 = 3'd1, //YELLOW RED

S2 = 3'd2, //RED RED

S3 = 3'd3, //RED GREEN S4 = 3'd4; //RED YELLOW

//Internal state variables

reg [2:0] state;

reg [2:0] next_state;

//state changes only at positive edge of clock always @(posedge clock)

if (clear) state <= S0; //Controller starts in S0 state

else

state <= next_state; //State change //Compute values of main signal and country signal

always @(state) begin

hwy = GREEN; //Default Light Assignment for Highway light

cntry = RED; //Default Light Assignment for Country light case(state) S0: ; // No change, use default

S1: hwy = YELLOW;

S2: hwy = RED;

S3: begin

hwy = RED; cntry = GREEN;

end

S4: begin

hwy = RED; cntry = YELLOW;

end

endcase

end

//State machine using case statements always @(state or X)

Federal Urdu University of Arts, Science and Technology, Islamabad

VLSI System Design 60

begin case (state)

S0: if(X)

next_state = S1;

else

next_state = S0; S1: begin

next_state = S2;

end

S2: begin next_state = S3;

end S3: if(X)

next_state = S3;

else next_state = S4;

S4: begin next_state = S0;

end default: next_state = S0;

endcase

endmodule

Lab Tasks:

1. Write verilog code.

2. Write a test bench to verify the design

Documentation

Submit the code along with the wave diagrams for the sequence detector

top related