DigiChip v1.0

Written by Loris Bindoni
English Translation by Giovanni Gatto





DigiChip is a program which allows users to create and test electronic circuits based on TTL logic. Users can create their own circuit on a 63-pits-width breadboard by choosing one or more chips and connecting them with wires.
Circuits can then be tested by using the input/output tools integrated in the testing environment, which includes a clock pulse generator, a power supply, a switch, and some input and output channels.
Digichip is intended to be used by digital electronic courses in high schools and by people who want to test their circuits without having to deal with common problems of real breadboards, such as economic costs and the risk of damage to electronic components.
Digichip is also useful as a training bench where unexperienced people can improve their prototypes designing abilities.
    Digichip offers a clear and simple interface which can be described in three parts:
  1. A menu bar that allows the user to access the main operations on a circuit (creation, components adding and removing, testing, etc...).
  2. A speedbar with shortcut buttons for the same functions.
  3. The workbench which includes the breadboard and the testing tool for the simulation of circuits.


A new circuit can be started from scratch by selecting New from the File menu, or by clicking the button in the speedbar.
If you start a new circuit when one not saved is already present on the breadboard the program will prompt you asking if you want to discard the changes. Answering yes will let you starting the new circuit without saving the old one, while answering no will close the prompt window without deleting the old circuit, allowing you to continue your previous work or to save it on file.
Once you create or load a circuit you can start the construction or modification process.
The best way to start is to insert on the breadboard all the chips you need first and then to connect them by adding wires.
Any mistake in inserting components can be undo at any time by removing the unwanted component from the board.


You can load a circuit from any drive on your system.
To do this just choose Open from the File menu, or click the button in the speedbar.
If you load an existing circuit when one not saved is already present on the breadboard the program will prompt you asking if you want to discard the changes. Answering no will close the prompt window without deleting the old circuit, allowing you to continue your previous work or to save it on file.
Answering yes will display an open file dialog window which shows all files Digichip can load (those with the ".dgc" extension). You can load a file with a different extension anyway, but it must be a circuit file generated by Digichip.
After you select or enter a filename, click Open to load and display the circuit on the breadboard.


To add a chip just choose one from the chips listed in the Chip menu, or click the button in the speedbar and then choose a chip from the selection list that will be displayed:

Once you pick a chip move the mouse on the breadboard and you will see the pointer looking like a piece of chip:

In the new cursor the small square near the number 1 indicate the position of pin #1. To insert the chip place the mouse cursor over the middle line of the breadboard (the horizontal line in the cursor must be overlapped to the central line) and move it while the little square is over the pit where you want the pin #1 to be inserted. Now press the mouse left button and the chip will be placed on the board.
If you try to insert the chip in a wrong position you will be warned by a message box.
As for a real breadboard, chips can only be placed in the middle of the board (i.e. with the pin #1 in the 'f' row) and cannot be overlapped, so there must be at least a free pit between the pins of two chips.

Unlike in real breadboard you CANNOT rotate a chip 180°, (i.e. with the pin #1 in the 'e' row) and, like for connection electric wires, an output static check is performed.

There are instead no limitations for the number of chips you can put on the breadboard except for the space needed.


To add a wire just choose Add from the Wire Menu, or click the button in the speedbar.
Connections in Digichip are always directional and the shape of the wire is based on the flex point displacement.
Once you did this and move the mouse on the breadboard the cursor will look like a thin arrow coming out from a little square:

To start inserting the wire you must place the little square on the pit that will be the start point and click the mouse left button.
Now you will see the pointer as a line passing through a little square:

You must now place the little square over the pit that will be the flex point and click the mouse left button again. The pointer will now look like an arrow entering a little square:

Now you must place the little square over the pit that will be the end point. Another left click and you will have the wire inserted and the mouse pointer back to normal look.
If you try to pick an incorrect position for the start, flex or end point an error message will be displayed.
For electric wire every free pit on the board and on the input/output tools is a valid position as a start point and as an end point (except for output static check limitations). For the flex point you can pick position in the workspace even if there are no pits.


To remove a component (i.e. a chip or a wire) from the circuit just choose Remove from the menu or click the button in the speedbar.
Moving the mouse on the breadboard you will see the cursor as a little square inside a target:

Place the little square on a chip pin or on the start or end point of a wire and click the mouse left button to delete the desired component from the circuit.
If you don't pick a component properly an error message will be displayed.


In Digichip 1.0 the behaviour of electric wire is different from real behaviour.
While in real circuits a signal can walk through a wire in one way as well as in the other, Digichip wires are directed and you must choose a start point (that act like an input) and an end point (that act like an output).
Even if this may seem a limitation this connection method is implemented because in a digital electronic circuit there's always the need of connecting an output of a component with an input of another one, and the direction toward which the signal propagate through components is always known. Chip pins and measurement tool terminals can always be defined as input or output, so this reflect the principle of pins specific definition and doesn't limit the program functionality.
Wire are represented on the board with the start point as a little square and the end point as a little circle to visually mark the direction.


The flex point for a wire, which must be defined by the user, determines the shape that the electric wire will get.
The position of the flex point is of main importance when inserting a new wire. Even if the circuit will work the same wherever you choose to place a flex point, building a circuit with a clear disposition makes it much easier to analyse and update.
The flex point determines the shape of a wire with the following rules:
Let Ps(xs,ys) be the start point coordinates, Pf(xf,yf) the flex point coordinates and Pe(xe,ye) the end point coordinates.
Then the wire will follow this path:

(xs,ys)-(xf,ys)-(xf,yf)-(xe,yf)-(xe,ye)


It is possible to define the color of the wires you place on the circuit.
Just select one of the color from the Wire menu. If you choose Other color the custom color selection dialog window will be displayed. You can select or edit a new color here.
Predefined color will not show any dialog window.
You should see a check mark in the menu before the name of the color you selected. This mean that the color have been selected and the next wires you will insert will get that color.
Remeber that choosing properly the wires color can greatly help in analysing the circuit.
For instance it is a good idea to assign the same color to all the positive wires (Vcc) and another one to all the ground wires (GND).


In a digital circuit the existence of only two logic values (0 to 1) corresponding to the voltage value lead to undetermined situation if two or more different electric signals are connected to the same point.
For instance, if two signal, one having a '1' value and the other having a '0' value are applied to the same chip input how will be the input read, 0 or 1?
Since these situations are often caused by mistake, we choosed not to allow them because this won't limit the creation functionality for the user.
Digichip actually perform an output static check during the circuit creation:
Every time a chip or a wire is inserted in the circuit the program checks if different output signals converge to the same point. More simply it checks if every component output don't connect to the same point where another output is already connected.
Trying to insert a component violating this rule will make the program display a warning.


You can save your circuits to any writable unit of your system.
To save the circuit you are currently working on just select Save from the File menu or click the button in the speedbar.
If the file has no previous name the program behave the same as if you choose Save As.
If the file hasn't been modified since it was opened or created then trying to save has no effect.
Otherwise it will save the circuit as it appears on the screen.


The "Save As" operation can be done on any writable unit of your system.
To save the circuit you are currently working on just select Save As from the File menu.
A "Save As" dialog window will prompt you for the name of file you the circuit to be saved to. After you choose the name and click the save button the program will save the current circuit with the selected name.
NOTE: It is recommended to choose a name with .dgc extension to make it easier to find the file for opening.


Some of the tools you can use for the simulation are placed under the breadboard.
Every one of them has one or more connection termianals, i.e. pits that act the same as the ones on the breadboard and can be linked to the circuit through connection wires.
The tools consist of:
Power supply (POWER): It's a TTL circuit power supply. The two terminal are marked as Vcc (+5V) and Gnd (0V). The power supply has a red led in its bottom, which will light during the simulation.
Clock: A clock pulse generator (with rectangle-shaped wave) for TTL circuits. It has just one terminal (you can think of it as the second terminal in common with the power supply ground output) which provides a rectangle-shaped wave with a 50% duty-cycle and an adjustable frequency. Pressing the + or - button will increase or decrease the clock frequency by 1 Hz. (the current frequency is displayed). The minimum value for the frequency is 1, the maximum is 50. The clock frequency can be modified during the simulation too.
NOTE: The actual maximum clock frequency may depend on the circuit complexity and on the hardware of your computer.
Digital inputs: 8 digital inputs can be used in your circuit. Any of these inputs, whose level you can modify by pressing the button below and see in the corresponding led, is connected to the terminal above and its value is shown in the led (on=Vcc, off=Gnd).
You can modify the input values during the simulation too.
Switch: A two-input one-output switch that can be used in the circuit. It has 3 connection terminals: 2 inputs and 1 output. The middle one is the output. The button with the 'switch' label allow to select which one of the two input will be carried to the output. If the led above the button is lit to left, the left input channel is carried out to the middle terminal. If it is lit on the right side then the right input is selected.
NOTE: You cannot modify the switch position during the simulation.
Digital oututs: 8 digital outputs can be used in your circuit. Any of theese outputs consist of a terminal and a led below it. During the simulation each output level is shown in the corresponding led (on=Vcc, off=Gnd).


To open the online help you need Microsoft Explorer installed and an open connection to the internet.
Then you just have to select Online Help from the ? menu.
The program will open the official DigiChip Online help page.
If you want to use another browser then you can open the following URL:
http://www.geocities.com/lbindoni/digichip.html

To see the information about the program authors open the about window by selecting About DigiChip from the ? menu.


To exit the program just select Exit from the File menu or click the close button in the main window.
If the current circuit has unsaved modification the program will ask you if you want to save it or not.
If you choose yes the save operation will be performed, otherwise the program will close immediately.


To start the circuit simulation just select Start from the Simulation menu or press the button in the speedbar.
The program will now start the simulation. The power supply led will light and the circuit will start working. During the simulation you can modify the clock frequency as well as the digital inputs levels. You cannot modify the switch position when the simulation is running.
You can check the right behaviour of the circuit by analyzing the output signals trough the 8 output channels or through any visualization component in the circuit.


To stop the simulation just select Stop from the Simulation menu or by clicking the button in the speedbar.
The simulation will stop. The power supply led will be turned off and the circuit will stop working.
The simulation will stop even if you insert/remove a component or open another circuit during the simulation.
The simulation will be stopped also in case of error due to rules violation.


The breadboard has the following internal structure:


The main limitation in circuit simulation in Digichip is that you can't fully test unstable circuits (also referred as digital oscillators).
For example if you connect the output of a 'not' gate to its input the circuit can't reach a stable state within a reasonable time limit (never, in this case).
Furthermore Digichip 1.0 has a limitation for the complexity of the circuit you want to simulate. Actually the limit (which has been defined to limitate the memory usage of the program) is high enough not to represent a real limitation, but you should keep it in mind.
In both cases the simulation will stop after a little while with an "Unstable or too complex circuit!" warning.


Digichip 1.0 files (*.dgc) are text file so that you can manually edit them to create or modify circuits.
A digichip file is made up of 3 parts: the header, the chips part, the wires part.

The header consists of the following lines:

.
1
(nver)
(year)

Where (nver) is the version number and (year) is the release year (1 and 1999 for Digichip 1.0).

The chips part consists of zero or more chip blocks which must be made of the following lines:

.
(nchip)
(xpin1)
(ypin1)

Where (nchip) is the number of the chip type without the leading '7' (for instance "408" for the 7408 chip), (xpin1) is the x coordinate of the chip first pin in the grid and (ypin1) is the x coordinate of the chip first pin in the grid.

The wires part consist of zero or more wire blocks which must be made of the following lines:

.
(color)
(xstart)
(ystart)
(xflex)
(yflex)
(xend)
(yend)

Where (color) is the color of the wire and must be a decimal integer representing a 3 byte (24 bit) value for the RGB color (i.e. the most significant byte is the 'red' amount, the central byte is the 'green' amount and the rightmost is the amount of 'blue' in your color), which must be between 0 and 2^24=16777216, and (xstart), (ystart),... ,(yend) means respectively the number of the position in the grid for the x and y coordinates of the start point, the flex point and the end point of the wire.

Both the chips and the wire part must be ended by the following line:

-