0
\$\begingroup\$

Scenario

I have a motherboard and a daughterboard that couple through two headers.

The motherboard has a 16x16 array of ultrasound speakers each with their own drivers, that works. I drive them using 32 74HC595D shift registers. That works too.

The daughterboard houses various power electronics, control electronics and the FPGA carrier, featuring an Altera Cyclone IV. The signals to the motherboard include 32 serial data signals to each shift register from 32 individual GPIO pins, and RCK and SCK both being carried by a single GPIO to all shift registers.

The Problem

I want a clock frequency on SCK of 40MHz (I know the shift registers are happy with this), but at the moment I am limited to 20MHz on my new PCB, as the high peaks at 40MHz are below the 'High level input voltage' of the shift registers (Page 8). This is no doubt because of my retrospectively poor design choice for routing both RCK and SCK. I think this is the case in particular as when the daughter board isn't mated with the motherboard (which houses the long clock tracks) the 'square' wave has higher amplitudes.

I would like to hear opinions and advice from the stack exchange wizards on how to alleviate said issues.

The image below shows 40MHz on SCK without coupling, so it's just the FPGA's GPIO carrying 40MHz to a 2.54mm header pin. Even without coupling the amplitude is half what it should be (3V3). It's worth noting that on the daughterboard, the signal for SCK from the FPGA to the header pin does go through a test point with a via straight through the middle of the track, of which the width is 0.75 - 1mm, I wouldn't have thought the via in the track would be such an issue.

I have yet to measure the frequency with the FPGA carrier board disconnected so none of my design is touching the signal. I plan on doing this very soon.

SCK without coupling

The following image shows the 40MHz SCK signal (probed on the daughter board) when the two PCBs are coupled together. Note the daughter board has long (not daisy chained) tracks for the SCK signal.

SCK with coupling The signal here is pathetic.

Worth showing my retrospectively silly choice in laying out the track. Note this is only the top layer; it's a six layer board and the other layers carry very short tracks to the 32 pads, and are internal hence un-modifiable so I won't include screenshots of them. The driving signal from the header comes from the two Headers pins in the middle of the board. V1 Top layer

SCK on the daughter board is routed like so: pre daughterboard

Possible Issue
The long track on the top layer highlighted above is most likely the cause especially when you take into account the fact that the motherboard is 20x20cm. I can't see it being anything else. It's worth noting that i have a less sever issue on RCK ( 5MHz), as the High voltages are greater than 3V. Images below for reference. Note i plan on implementing whatever final fix i go with to RCK too so it's less of a sine wave and more of a square wave. Note, the routing of RCK is almost identical to SCK's. rck without coupling rck with coupling

My Ideas I have two ideas that I wanted to suggest and hear feedback on before implementing, and of course would be open to hearing other suggestions - keeping in mind I plan on re-spinning the board anyway (I had one PCB fabricated to test and adjust before buying more). I do not intend to spend much more time re-designing this board, this taken into account my ideas are:

  1. Leave all the tracks unmodified, and set two or more FPGA GPIO's to mirror the SCK signal (so i'm not having a single FPGA pin driving these long tracks) and hope that provides enough drive from the PLL to call it a day after I add some mod wire between those new FPGA pins and th eexisting SCK pin. To Clarify, I would have for example 2 GPIO pins --> SCK on the motherboard.
  2. Make some modifications to the tracks on both PCBs like so to allow two different GPIOs to drive 16 shift registers each, and removing that giant vertical trace from the motherboard. (forgive the childlike writing): mod 1 mod 2

Conclusion This is for an academic research product so I am not entirely concerned about EMI, but I try to do things properly, so I would think the second solution would emit less EM interference and probably the better choice, particularly to remove the large loop(s).

I know this is a long question and appreciate any feedback and suggestions, be realistic though as this is nearing completion and a suggestion for a large re-design will not be implemented.

Thank you, and let me know if I've missed any information out.

\$\endgroup\$
  • \$\begingroup\$ Distribution of a 40-MHz clock to 32 destinations on a wide PCB is a challenge. It can't be simply done as a multidrop trace network. You need to use clock buffer ICs. \$\endgroup\$ – Ale..chenski Mar 8 at 22:17
  • \$\begingroup\$ @Ale..chenski Thanks for the suggestion, a friend of mind made the same one. Do you have any 'go to' ICs you have in mind that could get me started? \$\endgroup\$ – Orbitronics Mar 9 at 11:29
  • \$\begingroup\$ Try the obvious "clock buffer", "clock driver", "clock distribution". \$\endgroup\$ – Ale..chenski Mar 10 at 1:23
0
\$\begingroup\$

If you want to go beyond 20Mhz, you'll need to consider the parasitic inductance of the traces, and the parasitic capacitance between planes. Another problem is after about 40 to 50MHz the traces turn into transmission lines, at that point the impedance of the driver needs to be matched to the trace and anything else along the current pathway or there will be reflections and attenuation.

First concept: A pcb trace actually looks like the picture below, once this is understood, it means you can use circuit theory to help design a circuit that can run faster than 20Mhz. Even vias and 0.1" headers have inductance

Get a PCB
Source: https://www.ecnmag.com/article/2017/06/plague-parasites

If there is multiple output drivers, then a good thing to to would be to parallel your circuits, inductance drops when inductors are paralleled.

Use a PCB trace calculator and calculate the inductance of each trace and the capacitance between planes.

enter image description here Source: https://www.ecnmag.com/article/2017/06/plague-parasites

\$\endgroup\$
  • \$\begingroup\$ Thanks for your response, can i ask you to elaborate on 'If there is multiple output drivers, then a good thing to to would be to parallel your circuits, inductance drops when inductors are paralleled.' ? \$\endgroup\$ – Orbitronics Mar 9 at 13:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.