Lab 7 - EE 421L
Authored
by Henry Chan,
chanh6@unlv.nevada.edu
October 27, 2014
Using buses and arrays in the design of word inverters, muxes, and high-speed adders
Examining a 4-bit word inverter
The inverter uses 6u/0.6u NMOS and PMOS devices.
Using separate instances for each inverter is viable.
![images/4not_schematic.JPG](images/4not_schematic.JPG)
In
large circuits with large numbers of instances, using individual
instances similar to above becomes cluttered. A better method for more
compact and concise schematics is shown below:
![images/4not_schematic_concise.JPG](images/4not_schematic_concise.JPG)
A symbol was created using the concise schematic.
![images/4not_symbol.JPG](images/4not_symbol.JPG)
This symbol was then used in a simulation schematic to determine correct functionality.
![images/sim_4not_schematic.JPG](images/sim_4not_schematic.JPG)
Below are the results:
![images/sim_inv4_plot.JPG](images/sim_inv4_plot.JPG)
As
you can see, the greater the capacitive load, the greater the delay to
the output. out0 demonstrates the resulting signal with no load
attached. out3 hosts a 100fF load, out2 a 500f load, and out1 a 1pF
load. As the loads increase, the outputs generally become more delayed
and exhibit larger rise and fall times.
Now
that we have examined a concise method for creating multiple instances,
we will begin creating logic gates that utilize this method to form an
8-bit word full-addder. This will include an inverter, nand gates, nor
gates, and gates, and or gates.
8-bit Inverter
Schematic
![images/8not_schematic.JPG](images/8not_schematic.JPG)
Symbol
![images/8not_symbol.JPG](images/8not_symbol.JPG)
Simulation Schematic
![images/sim_8not_schematic.JPG](images/sim_8not_schematic.JPG)
Simulation Plot
Because
I am applying the same signal to all 8 inputs, the outputs are bound to
be the same, thus overlapping each other in the plot.
![images/sim_8not_plot.JPG](images/sim_8not_plot.JPG)
8-bit NAND Gate
In order to create an 8-bit NAND, I first create the 1-bit NAND gate:
1-bit NAND Gate Schematic
![images/nand2_schematic.JPG](images/nand2_schematic.JPG)
1-bit NAND Gate Symbol
![images/nand2_symbol.JPG](images/nand2_symbol.JPG)
Using this 1-bit NAND symbol, I create the 8-bit NAND Gate using the concise method.
8-bit NAND Gate Schematic
![images/8nand2_schematic.JPG](images/8nand2_schematic.JPG)
8-bit NAND Gate symbol
![images/8nand2_symbol.JPG](images/8nand2_symbol.JPG)
8-bit NAND Simulation Schematic
![images/sim_8nand2_schematic.JPG](images/sim_8nand2_schematic.JPG)
8-bit NAND Simulation Plot
Net3 represents B and Net4 represents A, the output folllows the following table:
![images/sim_8nand2_plot.JPG](images/sim_8nand2_plot.JPG)
8-bit NOR Gate
1-bit NOR Schematic
Similar to the 8-bit NAND, I have to create the 1-bit NOR in order to create the 8-bit NOR.
![images/nor2_schematic.JPG](images/nor2_schematic.JPG)
1-bit NOR Symbol
![images/nor2_symbol.JPG](images/nor2_symbol.JPG)
8-bit NOR Schematic
![images/8nor2_schematic.JPG](images/8nor2_schematic.JPG)
8-bit NOR Symbol
![images/8nor2_symbol.JPG](images/8nor2_symbol.JPG)
8-bit NOR Simulation Schematic
![images/sim_8nor2_schematic.JPG](images/sim_8nor2_schematic.JPG)
8-bit NOR Simulation Plot
The NOR output follows the following table:
![images/sim_8nor2_plot.JPG](images/sim_8nor2_plot.JPG)
8-Bit AND Gate
I created the AND gate by simply using the NAND symbol and an inverter.
1-bit AND Schematic
![images/and2_schematic.JPG](images/and2_schematic.JPG)
1-bit AND Symbol
![images/and2_symbol.JPG](images/and2_symbol.JPG)
8-bit AND Schematic
![images/8and2_schematic.JPG](images/8and2_schematic.JPG)
8-bit AND Symbol
![images/8and2_symbol.JPG](images/8and2_symbol.JPG)
8-bit AND Simulation Schematic
![images/sim_8and2_schematic.JPG](images/sim_8and2_schematic.JPG)
8-bit AND Simulation Plot
The output follows the following table:
![images/sim_8and2_plot.JPG](images/sim_8and2_plot.JPG)
8-bit OR Gate
1-bit OR Schematic
I used the NOR gate and an inverter to make the OR gate.
![images/or2_schematic.JPG](images/or2_schematic.JPG)
1-bit OR Symbol
![images/or2_symbol.JPG](images/or2_symbol.JPG)
8-bit OR Schematic
![images/8or2_schematic.JPG](images/8or2_schematic.JPG)
8-bit OR Symbol
![images/8or2_symbol.JPG](images/8or2_symbol.JPG)
8-bit OR Simulation Schematic
![images/sim_8or2_schematic.JPG](images/sim_8or2_schematic.JPG)
8-bit OR Simulation Plot
The output follows the following table:
![images/sim_8or2_plot.JPG](images/sim_8or2_plot.JPG)
2-1 MUX
1-bit 2-to-1 MUX schematic
![images/MUX_2_1_schematic.JPG](images/MUX_2_1_schematic.JPG)
1-bit 2-to-1 MUX Symbol
![images/MUX_2_1_symbol.JPG](images/MUX_2_1_symbol.JPG)
1-bit 2-to-1 MUX Simulation Schematic
![images/sim_mux_2_1_schematic.JPG](images/sim_mux_2_1_schematic.JPG)
1-bit 2-to-1 MUX Simulation Plot
![images/sim_mux_2_1_plot.JPG](images/sim_mux_2_1_plot.JPG)
8-bit 2-to-1 MUX
8-bit 2-to-1 MUX Schematic
![images/8MUX_2_1_schematic.JPG](images/8MUX_2_1_schematic.JPG)
8-bit 2-to-1 MUX Symbol
![images/8MUX_2_1_symbol.JPG](images/8MUX_2_1_symbol.JPG)
8-bit 2-to-1 Simulation Schematic
![images/sim_8mux_2_1_schematic.JPG](images/sim_8mux_2_1_schematic.JPG)
8-bit 2-to-1 Simulation Plot
When S is low, Z=B.
When S is high, Z=A.
![images/sim_8mux_2_1_plot.JPG](images/sim_8mux_2_1_plot.JPG)
1-bit FULL ADDER
Schematic
![images/full_adder_schematic.JPG](images/full_adder_schematic.JPG)
top:
![images/full_adder_schematic_top.JPG](images/full_adder_schematic_top.JPG)
bottom:
![images/full_adder_schematic_bot.JPG](images/full_adder_schematic_bot.JPG)
Symbol
![images/full_adder_symbol.JPG](images/full_adder_symbol.JPG)
Simulation Schematic
![images/sim_full_adder_schematic.JPG](images/sim_full_adder_schematic.JPG)
Simulation Plot
Cin | B | A | S | Cout |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
![images/sim_full_adder_plot.JPG](images/sim_full_adder_plot.JPG)
Layout
![images/fulladder_layout.JPG](images/fulladder_layout.JPG)
DRC and LVS
Everything checks out!
![images/fulladder_DRC_LVS.JPG](images/fulladder_DRC_LVS.JPG)
8-bit FULL ADDER
Schematic
![images/8fulladder_schematic.JPG](images/8fulladder_schematic.JPG)
Symbol
![images/8fulladder_symbol.JPG](images/8fulladder_symbol.JPG)
Simulation Schematic
![images/sim_8fulladder_schematic.JPG](images/sim_8fulladder_schematic.JPG)
Notice, A is 1111,1111 and B is 0000,0000. Cin will alternate from 0 to 1.
Simulation Plot
S=1111,1111 and Cout=0 when Cin is 0 because A(1111,1111)+B(0000,0000)+Cin(0)=S(1111,1111), Cout(0)
S=0000,0000 and Cout=1 when Cin is 1 because A(1111,1111)+B(0000,0000)+Cin(1)=S(0000,0000), Cout(1)
![images/sim_8fulladder_plot.JPG](images/sim_8fulladder_plot.JPG)
Layout
Using the 1-bit Full Adder Layout, I created multiple instances and connected them together.
![images/8fulladder_layout.JPG](images/8fulladder_layout.JPG)
Left
![images/8fulladder_layout_left.JPG](images/8fulladder_layout_left.JPG)
Right
![images/8fulladder_layout_right.JPG](images/8fulladder_layout_right.JPG)
DRC and LVS
Everything checks out!
![images/8fulladder_DRC_LVS.JPG](images/8fulladder_DRC_LVS.JPG)
This ends the lab, all materials can be found here: lab7.zip
Backups were made using a cloud storage method.
![images/backups1.JPG](images/backups1.JPG)
Return to EE 421 Labs