JWA Systems

Development and consulting

Company Products Technology Contact
[DigiTrac icon] border=0

A logic analyzer using the PC's parallel port.


A logic analyzer is useful in electronic development and debugging, especially where fast logic circuits are involved with lots of signals whose relations have to be verified or examined.
A logic analizer is a like a recorder for digital signals. During a certain (small) period of time, the state of a few digital lines can be recorded to a file. An event can be specified to signal the start of the recording, i.e. line 1 toggeling from 0 to 1.
This recording can be viewed afterwards, allowing for zooming and scrolling in the time domain.
In this page a homebuilt logic analizer is presented.


This logic analyzer can:
Run on Win95 and Win98 and ME using non-interrupted burst acquisition.
Run on Win2000 NT XP with interrupted acquisition, using the allowio driver.
Support ECP parallel ports.
Record up to 8 channels.
Use any parallel port.
Sampling at up to 1 million samples per second, depending on your hardware.
Record 32768 samples.
Save and load recordings to/from disk
Use an "Advanced Trigger" sceme. It waits for a channel to remain stable for a given time (Delay), and then it starts sampling after the first change of that channel.

User interface.

The following graph shows a screenshot of the userinterface.

[DigiTrace userinterface preview]

Navigational controls.

The scroll bar. This bar sets the first sample displayed.  It allows you to scroll through your data.
"Zoom IN". This halves the number of samples displayed.
"Zoom OUT". This doubles the number of samples displayed.

Display start time.

The leftmost label marked "Start" displays the offset time relative to the trigger point of the first sample displayed. The label marked "Length" shows the time represented by a screenful of data. Times are in microseconds.

Realtime input state

Next to the labels "1" to "8", a small rectangle is drawn. If it's white, the corresponding line is high. If it is low then the color will be black. The state is refreshed at 10Hz

Sample parameters.

Check under "Settings" menu. Six input boxes are drawn, "Trigger Channel", "Divisor", "Pre Trigger Delay" "Samplesize" and "Input Port".

"Channel" is the channel on which the sampler triggers (0-7).
"Divisor" changes the samplerate. Timing is referenced to the maximum attainable samplerate with your hardware, usually around 1 us. In that case a divisor of 10 means a samplerate of approx. 100KHz. (1 us = 1Mhz, divided by 10 yields 10 us = 100KHz) A calibration is performed at startup to determine this period, and all times shown are referenced to it.

After pressing start, "Delay" is the time the sample function waits for the signal to remain unchanged before triggering.

"Input Port" is the address of your printer port.

Granularity tells you how much time a sample represents.


Some marker functionality has been added. Left button clicks set Mark1, right button clicks set Mark2. The "Stats" button creates a file "stats.txt" with for each channel the number of signal changes between the markers.

Download and setup.

Here's the old version. It contains the following: Extract it to a directory of choice. Find out at which address the parallel printer port is located. Usually it's 0x378.

The new version comes as a setupper and contains some more files: Run the setupper it will guide you through the process.

An upgrade is available: Digitrace_0_0_0_9.zip
It features:
It's built using Borland Codebuilder 6.0, and it might require additional libraries. Please report any problems

If you like this program, please consider donating a small fee. It's easy with the following link:


To find out your parallel port address, try a little program called "Port Finder". If it doesn't show a parallel port, then I've got 3 suggestions for you.

First, the printer port is claimed by another application. Quit all tasks, flush any pending print tasks.

Secondly, there's a maintenance pack for win_95_ called "prnt5upd.exe". Locate it with ftp-search. This will install a new virtual lpt driver if yours is older.

Thirdly, it could be that your parallel port is located at an other address. Try to correct this, by means of jumpers, or by means of the bios setup (look for integrated peripherals or the like). You can also supply an alternative location using the textbox "Input Port".

If digitrace shows no response to signals applied to the printer port, try to set the port type to SPP using your BIOS setup. Also disable any software that uses the parallel port, such as scanner drivers etc.


16022004: Added: Granularity (us / sample) display in settings panel

16022004: Added: Delta (time difference) between markers.

08062005: If you have problems getting it to run with WinXP, as many seem to have, please try entering the following key to your registry: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters] "DisableWarmPoll"=dword:00000001

You can revert to the original setting by entering: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters] "DisableWarmPoll"=dword:00000000

Added real time line state indicators
Use a different scheme to set the IO permissions under WinXP_NT, so no allowio install is needed anymore
Markers should display the correct time now.


Well, of course you need a parallel port, and a not-so-special-anymore type of port. A PS/2 or EPP or ECP port should do.

In order to use this logic analyzer, you've got to build a cable that attaches to your printer port. See a pinning diagram of the centronics printer (LPT) port. It's inputs are pin 2 .. pin 9, while pin 25 is ground. The pin numbers are usually visible on the connector. Here's a picture of the cable I built:

Beware, this cable is "passive" and offers no protection to the input circuitry in your PC. Here is a scheme of the passive cable:

Better use this one:

Check the voltage on pin 20 of the 74HC245 when in use. It should be above 3V.

Hardware extension under development

Specs: 100Mhz sample rate, 32 channels, integrated stimulus engine. Please contact me if you're interested.

Thank you for reading and experimenting. Contact me if you have questions or would like to see more features. Good luck.

[Next Page][Goto Index]
[Contact Form]

Do you like it ?

This article was written by Arian van Dorsten jwasys@xs4all.nl

The most recent version can be found on: http://www.xs4all.nl/~jwasys