Electronic – Minimum requirements to interact with PCI Express

fpgamicrocontrollerpcpcb-designpcie

I have a relatively simple project (from the user point of view) in mind. I want to develop a very simple PCI Express (x1) card that users can put into their system and toggle some GPIO's from a GUI program (e.g. to turn on/off some stuff). The project might sound stupid as there are better alternatives but I have decided to do this to force myself get good at stuff. So I want to do PCB design and programming (GUI and eventually a driver).

So my question is, what are the minimum requirements to have such a simple extension card?

Is it possible to do this with a STM32 controller? or Will it need FGPAs or dedicated chips/ASIC? I can imagine there is some sort of handshaking going on when a card plugs in into a PCIE slot or at boot time…

And where can I gather more information about this?

Best Answer

Look at any PCIe endpoint controller or IP (FPGA) for all the functionality you need without having to implement a driver.

For example the MCS9901CV-CC is a single lane multifunction PCI express to I/O controller. It supports two serial ports, one parallel port and six GPIO's.
This provides you with a simple parallel port interface, which is probably the simplest implementation you could get. You can also use the IEE-1284 prtocol to implement Byte, Nibble or extended I/O features.

There are lots of endpoint controllers with this sort of functionality, or IP if you want to implement in an FPGA (horrendously expensive for this simple functionality).

You DON'T need to start with PCIe bridge functionality as a standalone controller and it would be idiotic to put this functionality in place to get simple I/O functions such as you need.

I'd suggest you buy almost any simple PCIe single lane parallel port interface and begin your learning from whatever chip is onboard.