HACKER Q&A
📣 non-entity

Has anyone here ever built their own PCI device?


I thought it'd be a kinda cool project to do so, even if it's just something super simple like an echo device, but from my understanding many microcontrollers aren't fast enough to support a PCI bus and the general advice I've found is to use an FPGA (unfortunately, which I have zero understanding of at the time). FPGA dev boards seem to be relatively expensive, except cheaper chinese ones which seem to run a little over $100.

Has anyone done this before. Did you write about it? What sort of hardware did you use?


  👤 _benj Accepted Answer ✓
I haven't had experience with PCI but yes with FPGA, even though at a hobby level.

Learning digital design was extremely rewarding for me and I absolutely recommend it.

The main reason for FPGA is that you use A LOT of parallel communication so even though the clock speed of the FPGA might be 200MHz, multiply that for 16, 32 or more lines and you get GBit speeds.

You can get affordable FPGA boards for learning with Lattice iCE40 family. When you jump into Altera or Xilinx things change a little, but you can still get a VERY decent development board from Terasic for a little over $100.

For learning I personally recommend the book "Digital Design and Computer Architecture" by Harris & Harris

Even if you don't become a full FPGA pro, knowing your computer down to a logic gate level brings huge advantages to how you see it, interact with it and write software for it!


👤 tjkrusinski
I don't have direct experience, but I work in video production and have researched building an SDI capture device that would use an FPGA on a PCI card.

There's a lot here: - VHDL for the FPGA - DSP algorithm - A driver for the OS you are building for - Scopes and measurement devices for the hardware bits

If you tried to do it yourself you'd spend more money and have a bad time. I'd recommend getting an FPGA dev board and start there.


👤 Cerium
I have some tangential experience, I was a software engineer on a project that had an FPGA based PCIe card. You can do some cool stuff, but development can be very frustrating. PCIe enumeration happens early in startup. Until things are basically working, you have to have a computer that you are ok restarting every few minutes. A test cycle is like: flash image, restart computer, try to determine why it failed.

👤 siberianbear
I did it once at a startup I was working for. I used a Xilinx FPGA and did my own PCB design. I designed my own PCI state machine in VHDL.

Surely, if you look around enough you can find some kind of a development board at a reasonable cost.


👤 toomuchtodo
Check out the custom hardware EFF had commissioned for cracking DES.

https://en.wikipedia.org/wiki/EFF_DES_cracker


👤 alltakendamned
No personal experience, but maybe you can find some inspiration here: https://github.com/ufrisk

👤 ecesena
Check out Fomu? https://tomu.im

It’s cheaper and tiny, not sure if powerful enough for what you’re looking at.