sensicomm LLC logo
Get FPGA-Based Oscilloscope at Fast, secure and Free Open Source software downloads

MHZ100Q - Open Source FPGA-based 100MHz A/D

All-in-one PCB, containing USB interface, FPGA, A/D's, amps, and filters.

MHZ100Q is a low cost FPGA-based high speed data acquisition system. Version 2 is a standalone board containing 2, 100MHz 8-bit A/D channels, preamp, 7th order elliptical antialiasing filters, and a Xilinx FPGA. A USB interface is implemented in the FPGA firmware. Power comes from the USB bus. Schematics, VHDL and Verilog source code, and signal capture and display software are available and being posted.

The original version was a 4-channel periperal board for use with commercial FPGA boards, using the same analog design. It is still available, but is not under active development.
Block diagram of one analog-to-digital converter channel.

The project components are:
PCB Double-sided Printed Circuit Board layout for 4-channel, 100MHz per channel, A/D conversion. Includes 8 bit A/D converter, 7th order elliptical antialiasing filters, and buffer amplifier for each channel. CAD files are in the open source Kicad format.
VHDL Code to control the A/D:
Generate 100MHz clock from onboard 50MHz crystal using the Xilinx Digital Clock Multiplier (DCM) blocks;
Capture data at full 100MHz rate, and optionally desample to lower rates using Cascaded Integrator Comb (CIC) filters.
Store 2K samples per channel into the FPGA's on-chip memory.
Transfer samples to a host PC via USB.
Code is in VHDL using the freely downloadable version of the Xilinx ISE WebPACK software.
USB Firmware for the Cypress CY7C68013A USB interface. Written in C using the open source SDCC compiler.
OCT_MEXC-code for a MEX-file, to access the USB interface from Octave (or Matlab, eventually).
OCTSample Octave scripts to capture and display data.

Project Background

In 2003 I started Sensicomm LLC, a consulting business specializing in Digital Signal Processing algorithms, hardware, and software. Before that, I did similar work for ITT, Lucent Technologies, and other companies. Check the links on the sidebar for more details. In 2008 I built this high speed A/D converter for some Signal Processing work using Xilinx FPGA's. In between consulting projects I've been expanding the features and functionality. The hardware and software components are now in a usable state and can be used as an oscilloscope front end or for other signal analysis functions like spectrum analysis or demodulation. So, I decided to make it available as an open source project, hoping that other folks will find it useful as well.

Sourceforge Project Description

Oscilloscope components, including 100MHz quad A/D, VHDL code for Xilinx FPGA, and driver for Octave or Matlab.

This project was created 01Apr2009 and approved 06Apr2009. Files are stored using Subversion, and are accessible via the project summary page . You can also browse the Subversion repository at or get download instructions at .

Goals are:

Most of the 40 other oscilloscope projects on SF focus on graphical display and device control. This project focuses on the front end: data acquisition analog components, FPGA code, and host PC interface. As such it complements existing projects and could serve as a front end to many of them.


Stepped triangular waveform sampled at 6.67 MHz.

For this test, the A/D feeds samples to a NEXYS 2 FPGA board, and a small Octave program uploads the data via the USB port and displays it. The test signal is an 8-level stepped waveform being generated by the VGA port of the NEXYS 2. The first plot is captured at a 6.67MHz sampling rate, and shows the overall waveform, including the step changes in the VGA output signal.
Same stepped triangular waveform, sampled at full 100 MHz rate.

The next plot uses the full 100MHz sampling rate, and clearly shows both the steps and ringing of the filters.

Project Requirements

A complete working system requires:

Project Plan

The A/D board, VHDL code, USB-host transfer software, and Octave driver (MEX file) already exist in an alpha state (ie, data can be captured and graphically displayed, but the one feature you really need probably doesn't exist yet ☺.) Plan is to host the components on SF (about a month to set up and clean up code), then begin adding features and bug fixes to improve usability.

My plans for getting the project set up are:
Start project2009-04-06
Basic web page2009-04-13
Post PCB design2009-04-14
Post VHDL Code2009-04-15
Post USB firmware2009-04-15
Post Octave MEX-file source2009-04-15
How-to-build instructions
Better project description
Clean up PCB design
Add VHDL features (multi-channel, triggering, variable desampling)
Clean up USB interface


Here's a photo of A/D board and a block diagram.
Top view of the 100 MHz quad analog-to-digital converter PCB. Block diagram of the 100 MHz quad analog-to-digital converter PCB.

These are the functions to be implemented in VHDL inside the FPGA.

Block diagram showing the functions implemented in the FPGA

Xilinx, Matlab, Digilent and any other company names and/or trademarks are only used to designate specific products used while developing this project. Unless otherwise stated, I have no connection with any of them.
Photo of the project mascot: a chipmunk standing on a statue Valid HTML 4.01 Transitional
Valid CSS!
Hosted by
Get FPGA-Based Oscilloscope at Fast, secure and Free Open Source software downloads

$Date: 2011/11/08 21:59:30 $