Lab 7 - ECE 421L 

Authored by Fred Hathaway,

hathawa6@unlv.nevada.edu

26 Oct 2013 

  

Lab 7: Using buses and arrays in the design of word inverters, muxes and high speed adders:

 

In this lab, I will be using buses and arrays to design word inverters, muxes and high speed adders.

 

I completed the prelab and followed tutorial 5.

After completing the prelab assignment (tutorial 5) I understood how to use the array command to create multiple instances of  a device.  Additionally I was able to create a bus of four inverters rather than create four separate inverters.

Below are the results of the prelab:

Below are four inverters:
 
inverters_4.JPG
 
Now instead of using four separate inverters, I created a bus by using arc bus tool circled in the clip below.
 
inverter_bus.JPG
To create the bus high light the device and press CTRL-I to change the Name to inv[3:0].  This will define the connections of the bus.  (IE: inv[3] input is b[3] and the output is bi[3].  Do the same for the bus arcs and lable them as seem below.
 
inverter_bus2.JPG
 Next, I created a ring oscillator schematic using 11 sepatate inverters.
 
ring_osc_schem.JPG
 
Below, is the same ring oscillator using inverter connected on a bus.
 
ring_osc_schem2.JPG

 Layout view:
 
inverter_layout.JPG
 
Simulation of the ring oscillator:
 
ring_osc_wave.JPG

Lab 7:
I will be building a circuit that will consist of four inverters.  We can use the schematic seen below.
 
inverters_4x1.JPG
 
Or we can make an equivalent schematic by intantiating the inverters using the array name inv[3:0] as seen below and connect them to buses and exporting names b[3:0] and bi[3:0].  This method provices a cleaner schematic especially when creating larger circuits.
 
inverters_4x.JPG
 
Now I am going to create an 8-bit word inverter.  I basically used the same building blocks above using the bus connections.  Additionally, I created an icon for use in future projects.
 
inverters_8x.JPG
 
I created an icon of the inverter.
 
inverter_8x_icon.JPG

Next is to design another schematic for simulation.  I connecting a wire to the buses by using the junction "J" connection.  This will allow me to connect the bus line together and call it Vin.  Note that the junction is used to change the bus size.  I added copactive loads on the output of three of the connections.  Notice that the wires can be connected directly to the bus lines.  This can only be done if the wire is named appropriately so that Electric knows what signal on the bus we are connecting to.
 
inverters_8x_cap_schem.JPG
 
Below are the simulation results:
Notice that the inverter can't drive the 1pF load very quickly.
 
inverters_8x_cap_wave.JPG
 
  
Next I created schematics and icons for the AND, NAND, OR and NOR gates.

AND_array_schem.JPG

AND array icon:
 
AND_array_icon.JPG
 
NAND gate array schematic:
 
NAND_array_schem.JPG
 
NAND gate array icon:
 
NAND_array_icon.JPG
 
OR gate array schematic:
 
OR_gate_array_schem.JPG
OR gate array icon:
 
OR_gate_array_icon.JPG
 
NOR gate array schematic:
 
NOR_gate_array_schem.JPG
 
NOR gate array icon:
 
NOR_gate_array_icon.JPG
 
Now I will put all of the above gate arrays together in one schematic and simulate them:
 
gate_array_schem.JPG

Below are the simulation results:
 
gate_array_wave.JPG
 
Next I created a 2-to-1 DEMUX.

The DEMUX schematic:
 
demux_schem1.JPG
  
The DEMUX icon:
 
demux_icon.JPG
 
The DEMUX LTSpice simuation schematic:
 
demux_schem.JPG
 
LTSpice simulation of the DEMUX:  Note that when the select V(s) is 0, the output V(z) will the value of V(b).  When V(s) is 1 V(z) output will be the value of V(a).  This can be verified with the LTSpice simulation seen below: 
 
demux_lts_wave.JPG
 
Additionally, we can use the DEMUX to function like a MUX.  The input is supplied to Z and the device will function as a MUX.  The results are seen in the simulation below:
 
MUX_lts_wave.JPG
 
The next step is to create a DEMUX array schematic with icon:
 
DEMUX_array_schem.JPG
 
DEMUX Icon:
 
DEMUX_array_icon.JPG
 
DEMUX_array_LTS.JPG
 
IRsim of DEMUX array:
 
DEMUX_array_IRS.JPG


The next step is to use buses to design an 8 bit full adder.  Below is a clip of the schematic.
full_adder_x8_schem.JPG
 
The icon view.
full_adder_x8_icon.JPG
 
full_adder_IRSIM.JPG
   
Next, I designed an 8-bit full adder.  The biggest problem with this part is routing the devices.  I found it easier to break it down into smaller parts.  Do the DRC, ERC and NCC checks as you go along if you decide to design the adder in sections.  
 
full_adder_8bit_schem.JPG 

 
The DRC, ERC and NCC checks are good:
ncc_drc_well.JPG
 
 8 Bit full adder IRSIM schematic:
full_adder_IRSIM.JPG

IRSIM simulation of 8 bit full adder:
The first clip shows 2 initially loaded into A then I loaded 82.
 
full_adder_x8_IRSIM1.JPG
 
The second clip shows B loaded with 4.

full_adder_x8_IRSIM2.JPG
 
The third clip shows the result of 2+4=6, then when A goes to 82.  A+B=82+4=86.  This shows that the adder works.
full_adder_x8_IRSIM3.JPG
 
Now the 8 bit schematic using the icons that I created.
full_adder_x8_schem.JPG
 
The 8 bit full adder icon:
full_adder_x8_icon.JPG
 
8-bit full adder layout:
full_adder_x8_layout.JPG
 
Closeup of 8 bit full adder layout:
full_adder_x8_layout2.JPG
 
LVS, NCC and DRC passed:
ncc_drc_well.JPG
 
The 3D view of the 8-bit full adder:
full_adder_x8_3d.JPG
 


I backed up my lab work by archiving directory, emailing and posting on the cmosedu website.

Copy of lab7_Hathaway.jelib file
 
Return to EE 421L Labs