02-16-2016 12:33 PM
I want to use PCI Express as the bus between mutiple modules (PCBs) in our hardware stackup.
We would design all the PCBs ourselves.
Overall throughput needs to be between 1Mbit and 20-30Mbit. 10Mbit nominal.
There would be multiple data collection cards (>=5) in a stack each collecting different kinds of data at different rates.
That data would be collected by a master card and formatted for output.
Full duplex is required for setting up all the data cards (high-throughput not required for setup), but when up and running the other cards just produce data. They could either push the data or the master could pull it.
It seems like PCI Express along with a PCI Express Switch may be a good solution for this. It looks like this would be a case where the master would pull the data from the other cards. If so that would appear to mean I need an FPGA (e.g. Artix) or some other PCI Express interface on each card.
I haven't designed with PCI Express before. Does this appear to be a good application for it or is there a better choice?
02-16-2016 01:51 PM
In my opinion PCIe would work just fine but if you don't need memory mapped access from the slave cards, you can use Aurora that includes an in-band native interface that could be used as control/status.
Give kudos if helpful. Accept as solution if it solves your problem.
02-16-2016 02:01 PM - edited 02-16-2016 02:04 PM
PCIe seems like way overkill for those data rates and for the use case you described. Aurora seems like way overkill as well. Using transceivers at data rates of 10-30 Mbps just doesn't make sense to me.
If you have enough backplane pins and FPGA pins to run a point-to-point serial link between the master and each slave then UARTs would work great. Just run very fast UARTs with LVDS as the physical layer. Should be very simple to implement and would be much lower power than using transceivers (if that's a factor). UARTs are not very sexy, but they get the job done.
02-24-2016 06:33 AM
My thought would be that I would need and FPGA on every card to interface the PCIe or Aurora.
For example. I could have a large Artix-7 on the main card along with a PCIe switch. Each of the other cards would have a smaller (only as large as needed) Artix-7 to interface to the PCIe.
It seems like the large Artix-7 on the main card could have the other smaller ones memory mapped. What would the interface on the smaller Artix-7's be? Would it be memory mapped back to the main card?