The FPGA inside a DMA card
The number on the box is a logic capacity. The letter after it is a transceiver. Neither one is a stealth rating.
By Lethal Hardware Desk
Open the listing photo and every DMA card in this market is a fairly ordinary object. An FPGA, a USB 3 bridge, a flash chip, a PCIe edge connector, and a few passives. The FPGA is almost always from one family. The part number printed on it is where most of the market's confusion about "which card is better" comes from. It is worth ten minutes to learn what that number is, because it turns a shopping choice into an engineering one.
Reading the part number
Take XC7A100T. XC is Xilinx's commercial prefix. The 7 is the 7-series generation. The A is Artix, the cheap, low-power member of that generation, as against Kintex or Virtex. The 100 marks relative logic density. It is not a count of anything directly. The T means the part carries GTP serial transceivers, which is how it can talk PCIe at all. So the T is not a size unit. "A 100T" is short for one part in a family, not a tier of quality.
| Part | Logic cells | Slices | DSP slices | 36 Kb block RAM |
|---|---|---|---|---|
| XC7A35T | 33,280 | 5,200 | 90 | 50 |
| XC7A50T | 52,160 | 8,150 | 120 | 75 |
| XC7A75T | 75,520 | 11,800 | 180 | 105 |
| XC7A100T | 101,440 | 15,850 | 240 | 135 |
| XC7A200T | 215,360 | 33,650 | 740 | 365 |
Figures from the AMD/Xilinx 7 Series FPGAs Data Sheet: Overview (DS180). The open pcileech-fpga designs target parts across this range.
What a bitstream is
An FPGA is not a processor running a program. It is a field of logic blocks, lookup tables and routing. A bitstream is the setting that decides what those blocks become and how they connect. Load one bitstream and the silicon is a PCIe endpoint. Load another and the same silicon is a logic analyser front end. The design is written in a hardware description language. Vendor tooling then synthesises, places and routes it, and the output is the bitstream.
These parts hold their setting in SRAM, and that has a consequence worth knowing. The setting is volatile. It is loaded again from an external flash chip at every power-up. That is why a card has a flash chip and its own flashing path. It is why a bad write can leave a board that powers but does not enumerate. And it is why "flashing firmware" on a DMA card is a different job from flashing a microcontroller.
Extra logic cells let a design be richer and hold more buffering, which can matter for steady read rates. What they do not do is change the USB path, and the USB path is where most real throughput is lost. Put a 100T behind a charge-only cable in a front-panel header. It will lose to a 35T on a short cable in a rear USB 3 port, every time. Prove the link before you buy silicon.
Why the same family shows up everywhere
Artix-7 is a cheap, general-purpose FPGA with PCIe and serial transceivers built in. That pairing is useful anywhere you have to move a lot of data between a bus and something custom. So it turns up in fields with nothing else in common. FreeSRP, an open-source software-defined radio platform, runs its gateware on an Artix-7 XC7A50T. The same family is standard in FPGA development boards and in PCIe prototyping cards. The Xilinx AC701 evaluation kit is an Artix-7 board, and the open pcileech-fpga designs support it.
This matters for one reason. An Artix-7 on a PCIe card is not exotic, and it was not built for this. It is a stock part with a large legal market. That is why the hardware is cheap, why supply exists at all, and why the real differences between boards are almost never the FPGA.
What to actually decide on
- 1Whether firmware is published for your exact board, not just your FPGA class. A board nobody builds images for is an ornament.
- 2The USB bridge and which socket is the data port. This costs more builds than logic capacity ever will.
- 3Fit and clearance in the machine it is going into, measured rather than guessed.
- 4Thermals, particularly on M.2 parts in a cramped slot with no airflow.
- 5Logic capacity, last, and only once the three items above are settled.
The guides behind this post
Recovering a card that will not enumerate
10 min readA card that stops enumerating after a flash is almost never dead silicon. At power-on the FPGA loads its bitstream from SPI flash. A bad image means configuration never completes, so no PCIe endpoint appears. But JTAG does not depend on what is in the flash, so the fix is almost always a reflash.
Open the guideFlashing firmware with the CH347 tool
11 min readPut the .bin in the CH347FPGATool folder. Run CH347FpgaDownloadTool.exe with the cable in the card's JTAG port. Select xc7a75t or xc7a100t to match your board. Set the file format to BIN before you program. On success, power-cycle the game PC, move the cable to the data port and run a connection test.
Open the guideRead next
Questions about this? Ask on Discord
All posts