After having build a couple of add-ons for my ALTERA DE0 board, I wanted to see if it is also possible to design my own PCB including a FPGA. In particular the three different supply voltages for the FPGA I found a bit scarey for a two layer PCB.
But after some research I decided it is worth a try.
The idea was to have a FPGA connected to a FTDI USB2.0 controller as used in other projects like FTDI FT232H USB 2.0 FPGA extension, have two fast 80 MHz ADCs in the design and some GPIO pins.
The choice fall on the EP3C5E144C8N FPGA from ALTERA. This FPGA is a Cyclone III with an EQFP-144 package. So it can be hand soldered. The FPGA provides 2 PLLs, 94 I/O pins and has a price of around 12 EURO.
As ADC I used the 80 MSPS version of the AD9057 from Analog Devices, which is a 8 bit ADC, already explained on one of my previous projects ADC readout and USB2.0 data transfer with an FPGA.
One of the main challenge of this project was the huge amount of vias needed on the PCB. Specially the vias below the FPGA to connect all the capacitors for power cleaning were challenging. The 1mm vias I used in all my previous projects where no longer small enough and I went for 0.5mm holes instead. This requires more precision on the drill in order not to break it!
The PCB was also tinned in order to protect the copper from oxidation from fat and acids on the hands during soldering.
Soldering by hand takes some time.
A detailed description of the tinning and the vias can be found on the page:
PCB tinning including VIA soldering
The schematic of the design looks the following:
The board design top (left) and bottom (right):
The function of the ADCs was validated with the reading in the samples from the ADC and passing them via the FPGA to to USB2.0 controller. GNURadio was then used to plot the spectrum. Up to around 75 MSPS could be used with still getting nice curves, with higher sample rates the curves become distorted.
The finished design looks the following:
The FPGA board provides 2xADC, 1 PushButton, 4 LED, USB2.0 controller, 18 GPIO bins, JTAG port and a configuration FLASH to hold the configuration.
|FPGA_CLK / 50 MHZ||PIN_91||FTDI USB Controller|
|USB_CLK / ACBUS5||PIN_25|
(*)The PushButton in this design is connected to a 74LVC1G07DBV buffer. This buffer is an open drain buffer and needs therefore an additional pullup at the output port (not in the schematic drawing). The easiest is to replace it with a normal buffer which exists in the same package.
The design files can be downloaded from GitHub
It can be checked out with:
git clone https://github.com/digibird1/FPGA_BOARD