home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d9xx
/
d999
/
dbb.lha
/
DBB
/
DBB.doc
next >
Wrap
Text File
|
1994-04-05
|
27KB
|
814 lines
Digital Breadboard
Version 1.1.9
Copyright 1992-1993
Danny L. Griffin
Abstract
Digital Breadboard is a full GUI sequential-solving digital
logic circuit simulator that will allow you to design, build,
and test digital logic circuits in software.
Preface
Introduction
Ever since the Amiga's introduction, there has been a
steadily increasing number of scientific applications
available, but one application that many people have been
asking for that is not currently available (that I know of) is
a digital logic circuit simulator. So, rather than just talk
about it, I decided to write one.
What it is
Digital Breadboard is a full GUI sequential-solving digital
logic circuit simulator that will allow you to design, build,
and test digital logic circuits in software. In this release,
there are some limitations put on the type of circuits that you
can build, the primary one being the size of the circuit. No
more than forty elements are allowed in this version.
Still, this release does incorporate many useful tools,
allowing Digital Breadboard some small measure of power. Among
these are support for:
- multiple input AND, OR, NAND, and NOR gates
- XOR and NOT gates
- D, JK, and SR flip flops
- multiple user-definable clocks
- switched and pulsed inputs
- event counters
- outputs
- independant four-channel trace scope
- preferences printing
Circuits can, of course, be saved, recalled, and edited at
any time.
Getting Started
Requirements
Digital Breadboard requires:
- AmigaOS 2.04 (V37 or higher)
- reqtools.library (V37 or higher)
...that's it!
Installation
NOTE: we will use the symbol [DBBdir] throughout this manual
to represent the directory in which the executable program `DBB'
resides. Digital Breadboard will produce a fully qualified
path for this location whether it was started from the Workbench
or CLI, even if it is not the current directory (DBB may be
`path'ed, for example), e.g. [DBBdir]Circuits might represent
DF0:Circuits as well as DH4:Breadboard/Circuits. The user does
not have to do any `assign's.
If you don't already have reqtools.library in your libs:,
move it there. There are no other requirements of Digital
Breadboard. You may wish to install the hpcalc font in your
fonts: directory:
copy fonts fonts: all
However, this is not necessary. Since hpcalc is not a full
font, some people may not want to install it in fonts:. DBB
will first look in [DBBdir]fonts for the hpcalc font, then
in fonts: If Digital Breadboard doesn't find the font it will
still run, but the Timer window will use Topaz 8 and it will
look goofy. This font will also be used for the 7-segment display
element in the next rev. This is the order in which Digital
Breadboard looks for files:
Fonts - [DBBdir]fonts, fonts:
DBB.prefs - [DBBdir]
DBB.guide - [DBBdir]
Design files - [DBBdir]Circuits, [DBBdir]
All icons are saved with a fully qualified Tool path.
Start
Digital Breadboard can be started from the CLI by typing DBB
or by double-clicking on the icon. Digital Breadboard will
attempt to open up an overscan interlaced hires screen (682 x
440 or greater) while taking into account the user preferences,
and two windows will initially appear: the design window and
the tools (Elements) window. However, some people don't use an
overscan display, and so for both of you Digital Breadboard
will limit the horizontal screen size to match the user
preferences rather than have the screen autoscroll left every
time the mouse is moved to the right edge. The Elements window
will overlap the design window. This, however, will be fixed
when a resizeable window is implemented to support the larger
virtual work area in the next revision. PAL screens are
supported.
Digital Breadboard accepts a single command-line argument--
the name of a design file. If given, Digital Breadboard will
load the file upon startup. All other arguments will be
ignored.
To begin placing objects, simply click on the desired element
with the mouse, move your pointer to where you wish to place
the element, and click the left mouse button to drop it. Then,
click on another element and do the same.
When you're ready to connect the elements, choose the menu
option EDIT/CONNECT. The design window's titlebar will change
to read:
Connect - Select output element
Using the mouse, click on the output element to start with.
When selected, a highlight box will appear around the element.
You do not have to click on a specific output. If an element
has more than one output, as in a D flip flop, a requester
will appear asking you which one you wish to use. Simply select
the appropriate response (see Section 4.1). If you change your
mind, press ESC and the requester will go away and you can
select a different output element.
After you've selected an output, you need to select an input.
The window's titlebar will again prompt you.
Connect - Select input element
Again, you do not need to click on a specific input, just the
element. An element with multiple inputs will respond with a
requester asking you which input you wish to use. Select the
appropriate response, or press ESC to cancel.
When you have completed wiring your design, you may save it
to disk with PROJECT/SAVE or begin simulation with CONTROL/RUN.
You may at any time return to any of the editing screens (Add,
Connect, Cut, Delete, etc.)
To quit Digital Breadboard, select the menu option
PROJECT/QUIT or press RAmiga-Q. If your work isn't saved, you
will be asked if you wish to save your work before exiting.
These are the basics of operation, but there are many more
features that are described in the following pages. Try loading
one of the sample project files.
Menus
Project
New
Start a new design. This will replace the current design, and
if you try to overwrite a modified design, a security
requester will pop up giving you a chance to save the current
file before proceeding.
Open
Open an existing Digital Breadboard design file. A
filerequester will appear in which you select the new design
file to load. This file will replace the current one, and if
you try to overwrite a modified design, a security requester
will pop up giving you a chance to save the current file before
proceeding.
Save
Save the current circuit under the current name. If there is
no current filename, a filerequester will appear.
Save As
Save the current circuit under a new name. A filerequester
will appear.
Print
Print the circuit using the preferences printer. Digital
Breadboard will attempt to determine the maximum resolution of
your printer, as selected in Preferences, and print the design
circuit currently displayed. Due to the ability of the user to
select his own screen colors, and to keep as much control in
the hands of the user as possible, Digital Breadboard provides
control of the printer from within the program. This will not
modify the user PrinterGfx Preferences settings. It is
normally a good idea to print with `Black & White' shading, a
reasonable threshold, and the correct Image settings. For the
default WB2.x colors (grey, black, white, and blue), a
Positive image with a threshold of 7 is fine. See Section 3.4,
the Settings menu.
About
Display some useful (?) information.
Quit
Quit
Edit
Delete Device
Remove digital logic elements from the circuit. The window
titlebar will prompt you with:
Delete - Select element to remove
Click on the element to remove from the circuit, and it,
along with any associated connections, will be removed. Press
ESC to cancel.
Cut Connection
Cut a connection between two elements. Use the mouse to click
on the first (output) element, then the second (input)
element. Again, Digital Breadboard responds with positive
feedback by highlighting the first element with a box. The
connection between the two elements will be removed. Press ESC
to cancel.
Move Device
Move an element. Select an element to move to a new location
by clicking on the element, and then clicking on a new (empty)
location. All associated connections will be rerouted as well.
Press ESC to cancel.
Redraw Screen
Redraw screen. Sometimes, after adding elements to a
previously routed design, the wiring as displayed on the screen
may need to be redrawn. This is because Digital Breadboard
attempts to route the connections as directly as possible,
without causing `conflicts' (wires colinearly overlapping by
small amounts). Selecting this will refresh the screen and
reroute the design, thereby eliminating any drawing problems.
Note that this is purely asthetic---all connections are
unaffected by the screen display. Any time that the screen is
redrawn, whether due to circuit changes or by user command, all
probes are disconnected.
Add Legend
Edit and place a legend in the design window. A requester
will pop up giving you a chance to attach a legend window to
your design. You may enter a title (circuit name), your name,
the date, and revision of the design. If present, it will also
be printed if you elect to print your circuit. If there is an
existing legend, the information will appear in the gadgets in
the requester. Close the window, then place the window frame
that follows your mouse on the screen. Press ESC to cancel.
Remove Legend
Remove the legend from the window. All information is still
associated with the file. This is usually done if you are
editing an existing design or if you don't want the legend to
be printed.
Control
Add
Add digital logic elements to the circuit. Select a logic
element with the mouse and place it on the screen, as described
above.
Connect
Connect elements together. Select the first (output) element
(a highlight box will surround the selected element for a more
positive feedback as described above), and then the second
(input) element. A connection will be drawn between them,
according to the current routing method. See Section 3.4, the
Settings menu.
Run/Stop
Begin solving logic. Digital Breadboard will begin circuit
simulation at the current selected speed. To exit RUN mode,
select CONTROL/STOP or press ESC. See Section 4.2, the Tool
Window: Up Arrow, Down Arrow, T, t.
Settings
Smooth
Elements will follow the mouse pointer smoothly.
Snap
Elements will snap to allowable placement positions
(default).
Direct Path
Connects adjacent elements by directly routing inputs
(default). This produces a more visually pleasing, and easier
to follow, display. In certain element placements, an output
of one element may overlap (colinearly) the input of another
element by a small amount. If this condition exists, Digital
Breadboard will detect it and will automatically route the
input via a longer path to avoid this confusion. However, if
elements are added after this initial routing is done, it is
possible to still have an output overlap an input. All that is
needed to do if this should occur is to refresh the screen
(EDIT/SCREEN REDRAW) and the problem will be taken care of. It
might be a good idea to do this as a matter of course before
printing a design if it is particularly complicated and you are
not sure if this has occured. It is not necessary to ever
refresh the screen before saving a design, and all designs
loaded from disk will be routed correctly.
Long Path
Connects adjacent elements by routing below the inputs. Will
never cause wire routing conflicts, but is not particularly
pleasing to the eye. Why is this even offered as an option? I
dunno. See Direct Path above.
Save With Icon
If selected, all files will be saved with a Project icon, with
a fully qualified Tool path. Select SAVE SETTINGS to save.
Palette
Allows user to define Digital Breadboard's color palette.
Select SAVE SETTINGS to save.
Printer Prefs
Allows user direct control over Digital Breadboard's printer
output without the user having to modify his user preferences.
Control of Image, Aspect, Shade, Threshold, Smoothing, and
Centering behave just as in the PrinterGfx Preferences
settings.
Save Settings
Saves current color Palette and Printer Prefs to
[DBBdir]dbb.prefs. If dbb.prefs is found upon startup, its
settings will be used, else DBB will use default settings.
Tool Window
[insert elements.iff here]
Elements
AND, OR, NAND, NOR, NOT, XOR
Two- or three-input gates (except XOR and NOT). Keyboard
equivalents: A, O, N, R, ! or 1, X.
D
Positive edge-triggered flip flop. The upper left input is D,
the lower left input is the CLK, the upper right output is Q,
and the lower right output is NOT Q. Keyboard equivalent: D.
JK
Negative edge-triggered JK flip flop. The upper left input is
J, the middle left input is the CLK, the lower left input is
K, the upper right output is Q, and the lower right output is
NOT Q. Keyboard equivalent: J.
SR
Negative edge-triggered SR flip flop. The upper left input is
S, the middle left input is the CLK, the lower left input is
R, the upper right output is Q, and the lower right output is
NOT Q. Keyboard equivalent: S.
CLK
Independant, user-adjustable clock. The initial Delay, Width,
and Period are adjustable. The default values are 20, 10, and
100 respectively. The attributes may be changed after
placement by selecting the Info button. Keyboard equivalent:
K. See Info button.
IN
Switched (default) or pulsed input. The input is activated in
RUN mode by clicking on it with the left mouse button. The
pulsed input has a user-adjustable pulse width. Keyboard
equivalent: I. See Info button.
OUT
Output status indicator. The output element `lights up' when
TRUE, 1, or high. The color is user-adjustable. Keyboard
equivalent: U. See Info button.
+5
Vcc, +5 volts, high. You can use this element to specifically
tie inputs high. Active only in CONNECT mode. Note: all
unconnected inputs are considered LOW. This is considered the
input element when cutting connections. Keyboard equivalent: 5.
GRD
Ground, 0 volts, low. You can use this element to
specifically tie inputs low. Active only in CONNECT mode. Note:
all unconnected inputs are considered LOW. This is considered
the input element when cutting connections. Keyboard
equivalents: G or 0.
Buttons
Info
This is a multi-purpose button who's actions are modified
depending on what element is next selected in the design
window. To use, click on the Info button, then click on an
element that you have placed in your circuit. Keyboard
equivalent: F. Valid elements are:
IN
A requester will pop up allowing you to select a switched
(default) or pulsed input. Switched inputs are toggled on/off
by clicking the mouse on them while in RUN mode. A pulsed
input will stay high for the duration of the pulse width. The
default is 20 clock cycles. An input's parameters may be
changed at any time, even while Digital Breadboard is in RUN
mode solving logic.
OUT
At this time the only user-selectable output element options
are the color. Click on the desired color button. An output's
parameters may be changed at any time, even while Digital
Breadboard is in RUN mode solving logic.
CLK
A requester will pop up allowing you to specify the clock's
pulse Width (on-time), Period, and initial Delay. A sample
waveform accompanies and responds to the settings. Click the
requester's close gadget when done. A clock's parameters may be
changed at any time, even while Digital Breadboard is in RUN
mode solving logic.
2, 3, 4, 8
These buttons determine the number of inputs for AND, OR,
NAND, and NOR gates. The default is 2. To change this, simply
select another button, then select the element to place. Note:
Digital Breadboard v1.1.x only supports 2- and 3-input gates.
Keyboard equivalents: 2, 3, 4, 8.
Count
This button brings up an event counter that you may connect
to any output point (or the input of an OUT element) in the
circuit using alpha characters. You may monitor to four points
simultaneously. The counter value increments on FALSE to TRUE
transitions. If used in a circuit, the counts continue to
accumulate whether or not the counter is displayed. To attach
a counter, click on one of the gadgets, then click on the
element to monitor. You may move the counter at any time you
wish; the count will be reset to zero. This is of very limited
utility and will probably be eliminated in the next version for
something more useful. (Real counters will appear as elements
in the next version of DBB). Keyboard equivalent: C.
Scope
A four-channel trace scope. Connect each channel
independantly to any output point of the circuit using numeric
labels. Each channel may be turned on or off independantly.
The scope window may be dragged to any convenient spot on
the display. The scope `probes' may only be connected in the
ADD mode. Click the button of the channel to connect to the
circuit, then click on the element you wish to monitor the
output of. A number corresponding to the scope's channel will
appear above the output it is connected to. You may move these
`probes' at any time by repeating this process. There is also
a button on the scope panel marked Crsr. This toggles a
(scope) screen cursor on and off. Click the Scope button again
to close the scope window. Keyboard equivalent: P.
Down arrow
Slow down the solving of logic. Every time you click on the
down arrow, the solving of the logic will get slower. This is
useful for small circuits or fast Amigas. Keyboard equivalent:
down arrow.
Up arrow
Speed up the solving of logic. Every time you click on the up
arrow, the speed at which logic is solved will increase. The
initial speed is maximum. Keyboard equivalent: up arrow.
T
Toggle the system's clock (Time) display. When this button is
selected, a window will pop up and you will see time furiously
passing away. To speed up or slow down time (the speed at which
the logic is solved), use the up or down arrow buttons.
Keyboard equivalent: T.
t
Toggle the element status indicators (throb). Each element
has an indicator(s) which will appear adjacent to an output
when that function or output is TRUE, e.g. all inputs must be
TRUE for an AND gate and at least one input must be FALSE for
a NAND gate's output to be TRUE. A status indicator will
appear next to a flip flop's TRUE output. The CLK element's
status indicator will throb once for each clock pulse. Keyboard
equivalent: t.
Comments on Good Design
It is generally not a good idea to design circuits with
static or dynamic hazards or critical races in them. And in
fact, Digital Breadboard will not check for these, nor will it
solve logic in a time-dependant fashion. Let's take a look at
the following example:
[insert bad.iff here]
Static hazard
As you can see, output Y will momentarily go to a 0 when
input A goes from a 1 to a 0 if both input B and output Y are
initially 1. This output ''glitch'' is called a static hazard
and can be avoided with the addition of a consensus term.
Fig. 3 shows an improved version. This addition of an AND
gate will remove the hazard and will produce a stable result.
[insert good.iff here]
Hazard-free
The use of Karnaugh maps (K-maps) greatly aid in the design
of digital logic. The first figure below is a K-map of the
first circuit. The second shows the addition of the consensus
term added to avoid the critical race. For more information
about hazards, races, or other design-related topics, consult a
text on digital logic design.
[insert Karnaugh maps here]
Digital Design Fundamentals, Breeding, Prentice Hall, is one
example detailing these and other design considerations.
Future Improvements
Planned enhancements (Spring 1994) include:
v1.2 - larger workspace
- improved user-interface
- resizable window
- more elements
- user-definable elements
- text support for labels, comments, etc.
- design by truth table
- basic structured drawing tools (with selectable line types)
- propagation delays
- 8 channel scope, trace store and print ability
- sticky probes
- Workbench option
- save as IFF
- selectable screen modes and 2024 support
- European, IEEE logic symbol support
- AREXX port
Future:
- better printer output including CompuGraphic font support
Bugs
All known bugs, enforcer hits, and mungwall errors have been
eliminated. If you encounter an error, please report it, along
with a small sample circuit in which the error is reproduceable
if possible.
Comments, suggestions, and other feedback
I have heard of the availablility of circuit simulators for
other computers, and apparently the Amiga once upon a time had
a commercial simulator available for it, but I've yet to see
any of these. Consequently, there are probably many things I
could have done better, or at least differently. I'm certainly
open to suggestions.
Please send all bug reports, comments, and other feedback to
Dan Griffin at:
griffin@egr.msu.edu
or via snail mail to:
Dan Griffin
2049 Tamarack Dr.
Okemos, MI 48864
Distribution
There have been reports of people uploading only the executable
to various sites, particularly in Europe. DON'T DO THIS! Please
keep all of the files in this distribution together. See the README
file for a complete list.
The latest version of Digital Breadboard is available:
all aminet ftp sites (ftp.wustl.edu)
/pub/aminet/util/misc
dbbxxx.lha (where xxx is the version number)
Fireline BBS
+1-517-374-8900
File Area: Misc Files
Directly from the author
Please send $3 to cover postage, $5 if you also want a laser-printed
TeX manual (please specify plain or 3-hole paper)
Complaints
All complaints will be forwarded to BLAZEMONGER INCORPORATED'S
``Customer Service'' Department.
Disclaimer and Copyright
Digital Breadboard is freeware. The question of this software's
suitability for any particular purpose is left as an exercise for
the reader. Source code is not available for version 1.1.x. So there.
Appendix
mdpic
mdpic is a combinational logic design utility that will produce
a minimal covering equation in SOP (sum of products) form.
It is particularly handy in circuits with 6 or more inputs where
solving problems by hand becomes tedious. It is not a GUI
program and must be run in a shell. To run mdpic, simply type
'mdpic' in a shell. You will be asked to enter the number of
variables, the minterms for the equation, and then the don't-cares.
Following this, a minimal covering equation, i.e. the essential
prime implicants, will be supplied in Sum of Products (SOP) form.
For example, suppose you wanted to know the equation for the
minterms 1, 2, 4, 7, 9, 10, 15, and 27 of a five variable design.
Following is a sample session to solve this problem.
Combinational Logic Design
How many variables? 5
Enter the minterms (whitespace delimiters, period to end):
1 2 4 7 9 10 15 27 .
Enter the don't-cares (whitespace delimiters, period to end):
.
Answer:
a' c' d' e + a' c' d e' + a' b' c d' e' + a' c d e + a b c' d e
The function is realized by the above equation, where a', b', etc.
indicate negated inputs.
Options
-v
The verbose option will cause all of the prime implicants to
be printed. This information can be used when designing static
hazard-free circuits. The extra terms produced in this step can
be used as consensus terms to eliminate static hazards. Although
it will often (usually) be the case that this is a minimal
design, there is no *guarantee* that the equation will not
contain redundant terms. For example:
SUM m (2 3 4 6 7 11 12 13 14 15)
produces a prime implicant "bc" (6 7 14 15) that becomes
redundant. It just so happens in this case that the essential
prime implicants also produce a static hazard-free design, even
though there are other prime implicants.
Footnote: minterms are the input conditions for which you wish
the function to be true. For example, if you have a six input
circuit for which you wish an output to be true when:
a) all the inputs are false,
b) inputs d, e, and f are true,
c) inputs a, b, c, and e are true,
the corresponding minterms would be 0, 7, and 58. Just add up
the binary weight of the inputs.
a b c d e f | out
------------+----
0 0 0 0 0 0 | 1
0 0 0 0 0 1 | 0
0 0 0 0 1 0 | 0
0 0 0 0 1 1 | 0
... |
0 0 0 1 1 1 | 1
... |
1 1 1 0 1 0 | 1
mdpic's capabilities will be expanded in the future to produce
guaranteed minimal static hazard-free equations.
rtk
rtk solves 4 variable Karnaugh maps (K-maps) interactively.
When started by typing rtk in a shell or by double-clicking its
icon, the rtk window pops up. The user then clicks on any of
the 16 buttons corresponding to a minterm in a 4-variable K-map.
Minterms are indicated by a 1, and don't-cares by a -. rtk will
update the equation realized by the terms in the upper part of the
window. rtk produces a minimal covering SOP equation. rtk requires
the supplied XEN 9 point font.
Truth tables
[insert truth tables here]
Keyboard equivalents
Element window
A,a AND gate
C,c Counter (event counter)
D,d D flip flop
F,f Info
I,i INput element
J,j JK flip flop
K,k CLK
N,n NAND gate
O,o OR gate
P,p Scope
R,r NOR gate
S,s SR flip flop
T Timer window
t throb toggle
U,u OUTput element
X,x XOR element
ESC quit RUN, CONNECT, DELETE, CUT, MOVE, probe connect modes
!,1 NOT gate
2 2 input gates
3 3 input gates
4 4 input gates
8 8 input gates
0,G GROUND, tied low, 0 volts
5 Vcc, tied hi, +5 volts
uparrow speed up logic solving
downarrow slow down logic solving
Amiga keys (menus)
RAmiga-N New
RAmiga-O Open
RAmiga-S Save
RAmiga-W Save As
RAmiga-P Print
RAmiga-? About
RAmiga-Q Quit
RAmiga-D Delete Device
RAmiga-X Cut Connection
RAmiga-M Move Device
RAmiga-L Redraw Screen
RAmiga-A Add
RAmiga-C Connect
RAmiga-R Run
RAmiga-T Stop
RAmiga-Y Smooth
RAmiga-Z Snap
Other keys
Help activate AmigaGuideĀ® online database