Conventional MRI consoles are high-cost and difficult to customize, typically using a proprietary language for creating pulse sequences. Recently, FPGAs have become the tool of choice in designing custom MRI consoles for their flexibility and speed. In this work, we describe a low-cost, open source, FPGA-based console using an off-the-shelf board that provides flexibility in pulse-sequence programming, robust timing, and excellent signal stability. Our goal is to facilitate the development of custom acquisition methods and provide a useful console for MR education and low-cost systems. We demonstrate its function by acquiring a 2D spin-echo image on an MIT/Martinos Tabletop scanner.
The STEMLab/Red Pitaya comes with a Xilinx Zynq 7010 SoC, two 125 Msps 14-bit resolution ADCs and two 125 Msps 14-bit resolution DACs and 16 DIO pins connected to the programmable logic and currently sells for $329 USD. This hardware configuration suits it ideally for NMR/MRI applications, allowing direct digitization of the MR signals from DC-40MHz Larmor frequency and higher frequency operation if an external mixing stage is added. In order to provide gradient waveforms, we connected 3 AD5780 (Analog Devices, Norwood, MA) 18-bit resolution DACs externally.
The FPGA has been programmed to include a 48-bit frequency resolution programmable numerically controlled oscillator (NCO), digital IQ modulation and demodulation as well as down-conversion of the receiver signal to 2.5Msps baseband. The transmit signal is up-converted from a freely programmable sample rate independent of the down-conversion rate. The gradient DACs are controlled by a custom SPI core providing simultaneous updates of the gradient outputs at a rate of up to 200 kHz, with a SPI clock of 33 MHz.
The general architecture of this spectrometer is that of an asymmetric multiprocessing system (AMP). The ZYNQ 7010 in addition to the FPGA includes a Dual-Core ARM9 CPU running at a clock speed of 866 MHz and using an embedded Linux OS. The pulse sequences are executed in hard real-time by a micro-sequencer core on the FPGA with a time granularity of 7 ns (143 MHz). The micro-sequencer is 3-stage pipelined VLIW RISC CPU with aperiodic command execution which controls all the events. It also features branches and jump operations to perform complex sequences in hard real-time independent of the ARM CPU. The transmit, receive and gradient system all utilize DMA and can, therefore, provide precise waveform timing independent of the ARM CPU's timing or the micro-sequencer’s state. The FPGA cores share all their memory with the ARM CPU, and the CPU prepares the pulse sequence for the micro-sequencer. It uses a NEON double precision FPU to calculate the RF pulses and gradient waveforms asynchronous to the sequence execution. This architecture allows RF pulses, gradient waveforms, or even the pulse sequence itself to be updated just a few microseconds before execution. The ARM CPU also has access to the received data in real time and is capable of making modifications to the pulse sequence based on the image data. While the spectrometer with its Linux OS is capable of operating on its own, for example with web-based control, our typical application connects the spectrometer to an application on a PC or mobile device, which handles high-level console control/UI and image display (Figure 2). We are currently developing a python-based framework for PCs that is geared towards educational purposes.