Ok, so I've had a bit of a rethink about this and I think I'd lost my way a bit, hopefully now back on track .. I'll walk through my thought process quickly which will hopefully explain my intermediate madness.
- So I was following the FPGA idea, had a few variations of RISC-V core built, and was starting to design a Lattice ECP5 based board. For the cost of the ECP5 you actually didn't get a lot of performance out of the RISC-V core and you had to also include ethernet MAC and various other things which eat into your LUT budget.
- So then I started to look at perhaps pairing a smaller FPGA with a more capable ARM core (SAMD5 type). SAMD5's come in SOP modules including SDRAM which meant not having to lay out DDR (which I was enjoying though!) and also they have an external bus which would give high speed comms to the FPGA ... sort of a poor man's Zynq. I had a board mostly designed, although having never done this before, it probably would have needed a few iterations.
- Then I started thinking ... actually with that power I could have several end-points controlled by the main board, and have three of four GPIB devices connected. So I started thinking about the best form of linkage between the devices and end-points, thought about high speed serial, then ...
- What am I doing? I've kind of gone full circle ... I could actually just connect a load of simple devices over USB (or Ethernet) to a pi (or similar), so I don't need to build all the smarts into the end device, the Pi can handle anything clever ... and there's no way I could build something as capable (and get it to work) for anywhere close to the cost.
So ... my approach is now this:
1. Go back to a simple USB end device, without a lot of clever capabilities - Can just do serial emulation or USBTMC (switch on the side) and with my new method of attaching the connector which allows the entire device to be pretty small but still easy to build. I've got a first cut arriving in a few days, and already have a second more optimised board mostly designed (3d image attached) ... the unpopulated FRAM slot is just me experimenting with EEPROM vs FRAM. The former is much lower cost and can be JLCPCB assembled as a basic part, so will probably be the path I take.
I have added an I2C external connector to this, the intention is to use this for an optional high accuracy temperature sensor ... I'm intending to embed these into the various meters I'm using so I can get an internal temperature alongside the actual measurement.
2. Produce a PoE version of the above ... won't be quite as small, but I've found a much smaller transformer and have reworked my PoE converted a few times now, so should be manageable. (Haven't started this yet, but I have all the building blocks from previous versions.)
3. Use a Raspberry Pi Compute Module 4 as the base of a hub device that can be used as a more capable collector for up to 7 USB devices. I've added an M.2 PCIe slot so you can add fast storage to use this as the central recording and reporting hub, and make use of the various graphing tools etc.
This is PoE based as well, although I still need to see how this performs from a power perspective .. I can run my latest PoE build at 5V 2.1A without anything getting too hot, but over that I think the magnetics don't cope. This will limit available power for the USB ports, but this is meant for USB Yaugi's not anything too heavy. (3d image attached, although this isn't finished yet.)
So the actual GPIB modules then become generic again, I've done most of the work for these, and they could be used with or without the hub, and are back to being very low cost.
The hub is optional ... you could use a normal Pi (with less connectivity), or a Pi with a hub etc. Or anything else for that matter.
I feel like this is the best approach ... and a hell of a lot less complicated than my ARM+FPGA madness. The biggest issue for now is that a few of the parts aren't available ... luckily I think I've got enough spares for the USB and PoE modules so they should be fine. Unfortunately you don't seem to be able to get a CM4 module so I'll do as much testing as I can with a Pi4 (should be able to test the USB hub and PoE, but won't be able to test the PCIe capability) but then I can get back to getting the software in the right place.
Hopefully that all makes sense ... interested in anyone's thoughts?
Quick Question -- I've included two different USB connectors on the module, a USB-C and a Micro-B (and it's not switched, so breaks all sorts of requirements, but the distances are tiny, and it's relatively low speed, so not expecting issues) ... I did this because I want to make more use of USBC, but I still have more of the older cables around, so the flexibility seemed useful. What does everyone else think?