Arbitrary Waveform Generator with a USB and PCI interface.
I have used FPGAs at work in the past , but wanted to get a little more experience using them and learn how to interface with the PCI and USB busses. I decided to create an arbitrary waveform generator as it is a relatively simple device and very useful for testing other circuits. An arbitrary waveform generator is a very flexible function generator. Memory is loaded with a series of values, and the hardware runs through the memory converting each value to a voltage at the output. This is the same as repeatedly playing a sound file on a PC, only potentially much faster. This card has a memory buffer that will hold 512K samples, and will run at a sample rate between .01Hz and 16MHz. Sample rates up to 50MHz are possible if the resolution or memory depth are reduced. The output voltage range is +/- 2 volts into a 50 ohm matched load.
Here's the output for a couple of signals: An ordinary sine wave, and the letter A.


Tools Hardware Verilog Software Results
A copy of all the files in .zip format