Lab 07 - EE 421L
Authored
by Matthew Parker
parke179@unlv.nevada.edu
October 26th, 2014
Lab
description: The goal of this lab is to create all the components needed to make an 8-bit full adder.
The library for this Lab07 can be downloaded from the zip file located in this directory
http://cmosedu.com/jbaker/courses/ee421L/f14/students/parke179/Lab07/other/
Direct download link
Part I: Using busses to make multi-bit gates
Tutorial
5 covers how to make a ring oscillator using busses. Figure 1 shows the
schematic of a ring oscillator and figure 2 shows the simulation
results.
Figure 1: Ring Oscillator
Figure 2: Ring oscillator simulation
Making an 8-bit inverter uses busses in a similar way, except they are in parallel instead of in series like a ring oscillator.
The
simulation of the 8-bot inverter will use capacitors to show that the
output has a rise time when attached to a capacitive load.
There are two types of delay, Tplh for propagation low to high, and Tphl for high to low.
Tplh = 0.7Rp(Cout + Cload)
Tphl = 0.7Rn(Cout + Cload)
Where:
Rn = R'n L/W = 15k/10 = 1.5k
Rp = R'p L/W = 45k/10 = 4.5k
Cout = C'ox (WnLn + WpLp) = 2.5fF(10+10) = 50f
For large values of Cload (100pF or more), the value of Cout is insignificant and the delay equals:
Tplh = 0.7(1.5k)Cload = 105ns for 100pF
Tphl = 0.7(4.5k)Cload = 315ns for 100pF
At 1pF (output Ai<4>),
Tplh = 0.7(1.5k)(1.05p) = 1.1025ns
Tphl = 0.7(4.5k)(1.05p) = 3.3075ns
At 100fF (output Ai<3>),
Tplh = 0.7(1.5k)(150f) = 0.1575ns
Tphl = 0.7(4.5k)(150f) = 0.4725ns
At 500fF,
Tplh = 0.7(1.5k)(550f) = 0.5775ns
Tphl = 0.7(4.5k)(550f) = 1.7325ns
After
simulating the 8-bit inverters, I repeated the simple steps to make an
8-bit version of a NAND, AND, NOR, OR, and XOR gate.
The AND/OR gates are simply a NAND/NOR gate with an inverter at the end.
All
of the inputs will be tied together, so the simulation will only show a
single output for each 8-bit gate, since they are all identical.
Part II: Making an 8-bit 2-to-1 MUX/DEMUX
Figure 10 shows the schematic of a 2-to-1 multiplexer.
The circuit can be used as a MUX or DEMUX. Figure 12 shows the configuration for MUX mode.
A and B are inputs, while Z is the output.
Figure 12: 2-to-1 MUX
After verifying it works as a 1-bit circuit, I used the same process as earlier to make it an 8-bit MUX.
Figure 14 shows the 8-bit 2-to-1 MUX with A and B as inputs and Z as output.
Figure 14: 8-bit 2-to-1 MUX
Only a single output is shown since they are all identical when the inputs are equal.
Another use of the MUX is as a DEMUX.
Figure 16 shows the DEMUX configuration where Z is the input and A and B are the outputs.
Figure 16: 8-bit 1-to-2 DEMUX
Figure 17 shows the output in DEMUX mode. Z is the input while A and B are outputs.
Figure 17: DEMUX simulation
Part III: Making an 8-bit Full Adder
The final component of an ALU is the full adder. A single full adder is cascaded to make an 8-bit full adder.
Figure 20 shows the left-most full adder in the layout of the entire 8-bit full adder.
The Cin<0> of the first FA is the only Cin that does not come from a previous FA.
The metal-2 recangles uses for A, B, Cin<1:7>, and Cout are copies along with the FA in an array of 8 collumns.
Figure 20: 8-bit FA left
The only other special FA is the last FA, which has the final output pin Cout<7>.
Figure 21: 8-bit FA right
Figure 22: 9-bit FA layout
An LVS is ran and succeeds.
To test the 8-bit FA, the inputs A<7:0> and B<7:0> vary slightly and Cin<0> is a simple pulse.
Figure 25: 8-bit FA sim
Figure 25 shows the simulation of the 8-bit FA.
Inputs A<0> to A<6> are all the same pulse voltage, and A<7> is a pulse with double the period of the others.
B<0> is a pulse function with the same period as A<7>, and B<7:1> are all a constant 0 volts.
There are glitches in the FA's output whenever A<6:0> transition, but they last less than a nano second.
Table 1 summarizes some of the results from the simulation in figure 25.
Table 1: Results of 8-bit FA sim
|
0-25ns
|
25-50ns
|
50-75ns
|
...
|
250-275ns
|
275-300ns
|
Input A
|
11111111
|
10000000
|
01111111
|
...
|
01111111
|
00000000
|
Input B
|
00000001
|
00000001
|
00000000
|
...
|
00000000
|
00000000
|
Input Cin
|
1
|
1
|
1
|
...
|
0
|
0
|
|
|
|
|
|
|
|
Output S
|
00000001
|
10000010
|
10000000
|
...
|
01111111
|
00000000
|
Output Cout
|
1
|
0
|
0
|
...
|
0
|
0
|
Creating backups
I
use dropbox to backup all screenshots, project files, and html files. I
do so by using the dropbox folder as my active work area to save to,
and then dropbox automatically uploads changes to the files.
The library for this Lab07 can be downloaded from the zip file located in this directory
http://cmosedu.com/jbaker/courses/ee421L/f14/students/parke179/Lab07/other/
Direct download link