Common to the three chains
One sequence engine and one clock for the transmit, gradient and receive chains.
The question
The three chains are separate projects with separate hardware. They become one scanner only when one engine runs the pulse sequence and one clock times every event in all three. In a commercial system that engine is closed: sequence timing, waveform playback and data capture happen inside a box that exposes only what the vendor chose. We build the engine ourselves, so that each chain can be changed without asking anyone for permission.
The architecture
- Host computer. The pulse sequence is written and parsed on the host, in the Pulseq format. The user interface runs on the host as well, or remotely over the network.
- Spectrometer card. An FPGA card in the host’s PCIe slot. A real-time operating system on a soft processor runs the events of the sequence. The FPGA fabric keeps the global time, issues the triggers, and streams waveform and phase tables out of on-board memory.
- Fiber to every chain. The chains connect by optical fiber. The transmit and receive links run a framed, error-checked serial protocol (Aurora 8B/10B) at 3.125 Gb/s. The receive side arrives through a routing FPGA that gathers the samples of all channels.
What we work on
- Real-time sequencing. Parsing on the host, running on the card, every event timed against one global clock.
- The links. The fiber link to the transmit and receive FPGAs is up at both ends and ran a ten-minute soak test without a single error.
- One interface for three chains. The receiver, the transmitter and the gradient controller present the same kind of interface to the spectrometer, so one sequence engine drives all three.