Note: When downloading files, click the circled icon at the top of the new page to retrieve the file.
Logic Analyzer 2
Click on images above for larger versions.
Devices: XC9572XL PIC18F2620
Schematic: L2A.pdf (Version 0.9 3-31-2014)
PC Side Code: LogicAnalyzer2.zip (Version 0.04 3-26-2014)
This project uses a couple XC9572XL 5V tolerant CPLDs, some static RAM, a PIC microcontroller and some glue logic to form a 24 channel 32K deep 30ns per sample logic analyzer. The sampling rate can be varied from 30ns to 250us and can also be controlled by an external clock with selectable delays and dividers. The machine also has 3 primitive 0 to 5 volt meters and has a 5V TTL compatible programmable clock generator which can go from 100 Hz to 2.5 MHz.
A trigger condition can be specified using each of the 24 inputs to determine when to start taking samples. The number of channels (8,16 or 24) and number of samples (4K, 8K, 16K or 32K) can be controlled through the GUI. The less samples and channels used the faster the update rate. There is also a window mode where only the samples being displayed are uploaded from the machine. This improves the update rate at the expense of not being able to see data before or after the time displayed in the current display window.
The PIC microcontroller communicates with the host via an FTDI USB to serial TTL cable. The PIC controls the two CPLDs using SPI hardware in the PIC plus SPI logic programmed into the CPLDs. This serial interface runs at 10 MHz when the CPLDs are clocked with the 30ns clock cycle (33.33MHz). The PIC writes the trigger patterns into the CPLDs and controls the sampling process. Once the samples are captured, the PIC uses the CPLDs to read data from the RAM and send the results back over the SPI interface and then up to the host over the FTDI cable.
The project was developed using Verilog to describe the CPLDs as well as Verilog to simulate the design with the address generators and RAM to verify the schematic before building and also to verify the design would work. All the files used to simulate the project are included in the LA2SimPack.zip file above. There is also a link to free tools to run the simulations and view the results.
The schematic was captured using CadSoft's free Eagle tool. I wrote a little program to convert the pinlist and parts exported from the tool into a Verilog language netlist. I also created models for the various TTL parts that I used to allow me to create a full board simulation of the system before getting out my soldering iron. Underneath the board is point-to-point wiring using nice thin wire-wrap wire. Creating a good simulation environment for a project takes a good amount of time up front but it pays off in the end.
Device: Coolrunner 2 CPLD
This project uses a surplus LCD that I got in the late1970s to display a 4 digit counter. The development board comes with just one push button and one LED but provides a large area to add your own toys (the other LED indicates power).