This is the second part of a tutorial targeted at modeling logic gates in MS Excel 2003.
The first part introduced the basic logic gates,, symbols and associated logic equations. This model includes no delay or loading for the gates.
The following type of gates will are described: inverter, AND, NAND, OR, NOR, XOR (exclusive or) and XNOR.
The tutorial has several parts and the last part builds up to a more complex and accurate model including effects such as: power supply voltage, output impedance and input capacitance (from which low pass fillter effects will be derived within the model). This is not an introduction to digital electronics.
The reader should get somewhat familiar with the topic before attempting to build the models described here.
Introduction to Digital Electronics – Ideal Logic Gates – Part#2
by George Lungu
– This tutorial is the second part of the series introducing the most common logic gates and
their implementation in Excel, first as ideal static models and later using more realistic
animated models which include propagation delay, loading, strength, power supply voltage.
– In the first part we talked about the most common logic gates (INV, AND, NAND, OR, NOR,
XOR, XNOR), their logic equations, their truth tables and we went forward to implementing a
first iteration of a model in Excel 2003.
– This section will finalize the previously started worksheet using purely worksheet formulas for
the gate models. In the last part of this section user defined (custom) function will be created
for each of the seven gates. The functions will be tested in a copy of the first worksheet.
Create a stacked signal group
– In the previous section, we created a stacked group of x-axes. Let’s now create a stack of the nine
signals (two inputs and seven outputs) signals that we could represent on the same chart without
overlap. These nine signals are offset copies of the original nine signals and they will finally be charted.
– Cell Q35: “=B35” then copy Q35 right to cell Y35
– Create a series of stacking offsets: Q36: “=0”,
R36: “=offset”, S36: “=2*offset”, T36: “=3*offset”,
U36: “=4*offset” ……….. Y36: “=8*offset”
– Cell Q37: “=B37-Q$36” then copy Q37 to the
right, up to cell Y37
– Copy range [Q37:Y37] down to row 837
Creating the simplified inverter model:
– Cell D37: “=IF(B37< 0.5,1,0)” then copy (auto fill) cell D37 down to row 837
Creating the simplified AND gate model:
– Cell E37: “=IF(AND(B37>0.5,C37>0.5),1,0)” then copy (Auto Fill) cell E37 down to row 837
Creating the simplified NAND gate model:
– Cell F37: “=IF(AND(B37>0.5,C37>0.5),0,1)” then copy (Auto Fill) cell F37 down to row 837
Creating the simplified OR gate model:
– Cell G37: “=IF(AND(B37<0.5,C37<0.5),0,1)” then copy (Auto Fill) cell G37 down to row 837
Creating the simplified NOR gate model:
– Cell H37: “=IF(AND(B37<0.5,C37<0.5),1,0)” then copy (Auto Fill) cell H37 down to row 837
Creating the simplified XOR gate model:
– Cell I37: “=IF(OR(AND(B37=1,C37=0),AND(B37=0,C37=1)),1,0)” then copy (Auto Fill) cell I37
down to row 837
Creating the simplified XNOR gate model:
– Cell J37: “=IF(OR(AND(B37=1,C37=0),AND(B37=0,C37=1)),0,1)” then copy (Auto Fill) cell J37
down to row 837
Preparing the chart, plotting the stacked x-axes:
– Select range [N39:O64] => Insert => Chart => XY
(Scatter) => select the one with discontinuous lines => finish
– Delete all grid lines and format the vertical axis range to
be between -17 to +2
Series1
– Right click the horizontal axis => Scale => Value (Y) Axis
Crosses at => type -17
– Right click the vertical axis => Scale => Major unit = 100,
Minor unit = 100, Font = 1
0 10 20 30 40 50 60 70 80 90
– Right click chart => Chart Options => Titles = Value (X) time [ns]
Axis = time [ns] => Value (Y) Axis = Voltage
Plotting all the input signals on the same chart:
A
– Right click the chart => Chart Options => Gridlines =>
B
select Value X Axis => Major Gridlines
-Right click the chart => Source Data => Add => Name =>
type A => click in the box “X Values” and then select the
range [A37:A837] in the worksheet => click in the box “Y
Values” then select the range [Q37:Q837] in the worksheet
-Right click the chart => Source Data => Add => Name =>
type B => click in the box “X Values” and then select range
[A37:A837] in the worksheet => click in the box “Y
Values” and then select the range [R37:R837] in the 0 10 20 30 40 50 60 70 80 90
time [ns]
worksheet
Add the first two output traces to the chart: Series1
A
-Right click the chart => Source Data => Add => Name => B
INV
type INV => click in the box “X Values” and then select the
AND
range [A37:A837] in the worksheet => click in the box “Y
Values” then select the range [S37:S837] in the worksheet
– Right click the chart => Source Data => Add => Name =>
type INV => click in the box “X Values” and then select the
range [A37:A837] in the worksheet => click in the box “Y 0 10 20 30 40 50 60 70 80 90
time [ns]
Values” then select the range [T37:T837] in the worksheet
Finish by adding all the output traces to the chart and refining the formatting:
– Using the procedure outlined
A
previously finish by adding all
the output traces to the chart. B
You can format the size and
INV
color of the legend, the
AND
background color of the chart
NAND
and the gridline format.
– Get rid of the “Series1” title OR
from the legend by clicking and
NOR
highlighting it then hitting the
XOR
“Delete” key on the keyboard.
XNOR
– You can also adjust other
aspects of the chart to your 0 10 20 30 40 50 60 70 80 90
time [ns]
preference.
A chart variation: changing the time step size and the period of input signal “B”:
– For the snapshot below I used a time step of 0.15ns and a period of signal B of 30ns (cell C37:
“=0.5*(1+SIGN(SIN((2*PI()*A37/30))))” then auto fill down column C to row 837.
A
B
INV
AND
NAND
OR
NOR
XOR
XNOR
0 20 40 60 80 100 120 140
time [ns]
A small waveform animation:
Public N As Boolean
Dim p As Double
– Let’s create a small animation by making variable period input signals.
-Replace formula in cell B37 with Sub period_b_variation()
N = Not N
“=0.5*(1+SIGN(SIN((2*PI()*A37/$A$8))))” and the formula in cell C37
Do Until N = False
with: “=0.5*(1+SIGN(SIN((2*PI()*A37/$A$11))))” after which copy the
p = p + 0.1
range B37:C37 down to row 837. DoEvents
[A8] = 10 * (4 + 2 * Sin(p / 10))
– Write the macro to the right and assign it to a button:
DoEvents
[A11] = 10 * (2.2 + 2 * Sin(p / 7))
DoEvents
Loop
End Sub
– As you can see from the
snapshot to the left I assigned a
labeled range (A7:A11) for the
two period values but this is not
absolutely necessary since the
macro will constantly fill cells
A8 and A11 during operation.
– The animation can be started,
paused and restarted from the
same red button labeled
“Animation On/Off”.
to be continued…