So, I’ve done the driver board. This is bigger than I thought it would be, at first I thought it’d just be the LVDS receiver, MOSFET driver, and a few capacitors/resistors, and the connectors. Ideally I wanted something that could be slipped over the pins of the MOSFETs, allowing the drain and source to be connected to other connections which could take the current.
I had just laid everything out on a 5×3.5cm board, two-layer (so dirt cheap). Nice and tidy. For the receiver I ended up using the DS90C402: it was already in Kicad. All looked good, until I saw this in the datasheet (highlighting mine):
In short, if the cable gets unplugged, the receiver will effectively drive both MOSFETs hard on 100%. Kaboom!
So, I had to introduce an inverter into the circuit. A bit more propagation delay, and another component, it’s the biggest part on the board (they don’t make SOIC-8 inverters). I’ve chosen a 74AHC family part like I did for the driver board so it should have the speed needed.
I’m not sure if this is needed for LVDS, but I’ve added a number of pull-up and pull-down resistors as well as the 100R terminations. These are underneath.
Likewise, I realised I had omitted doing the same on the controller. There were some for I²C, but I’ve re-located these to the bottom. So I’ve made some room for them. Better to do it now than find out I need them later.
Like the driver board, I’ve documented resistors used for pull-up, pull-down and termination. I’m not exactly sure which ones are needed or what values they should be, but fixing a silk-screen isn’t a big issue.
The LVDS outputs have resistors too, you can see those near the relevant sockets. I suspect the answer is they are needed at the receiver, not the driver.