This directory contains a sample program that can perform CPMG NMR experiments using the RadioProcessor.

The included pictures are of a CPMG experiment conducted on household cooking oil using a 10.8MHz permanent magnet.




Fig 1.

This shows what the signal looks like when capturing data continuously during a CPMG experiment. The large spikes seen between the echoes are the 180 degree pulses being applied.


Fig 2.

It is also possible to capture only a small number of points around the tops of the echoes. This figure shows the same experiment as above, however instead of capturing data continuously throughout the experiment, only 32 points at the peak of each echo is captured. This allows more echoes to be captured by not storing unwanted data. The number of points captured per peak can be reduced to as little as 1 point.

Figure 3 below shows the pulse sequence used by the RadioProcessor to perform this experiment. Each vertical line is a new instruction, and the names of the delays used are shown with arrows. The CPMG program included in this directory will accept command line parameters which can be used to specify the values used for each of the pulse program parameters.

CPMG Timing Sequence
Fig 3

Shown in this figure is what the RF excitation pulse will look like, as well as what the acquired baseband data will look like. The tx_enable and scan_trigger signals are both internal signals used to control the timing of the experiment. Note that when the CPMG program is configured to acquire data in a continuous scan, the scan_trigger signal is only enabled after the 90 degree pulse and not after the 180 degree pulses.

          The CPMG executable takes the following arguments as inputs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CPMG SF
SW
P2_time
ringdown_time
P2_phase
P1_phase
tau
echo_points
echo_loops
num_scans
fnam
bypass_fir
adc_freq
wait_time

MHz
kHz
us
us
degrees
degrees
us
#
#
#

0 or 1
MHz
s

SF - Spectrometer frequency, in MHz
SW - Desired baseband spectral width, in kHz
P2_time - Pulse length of 90 degree pulse, in us
ringdown_timeRing down time after 90 degree pulse, in us
P2_phase - Phase of 90 degree pulse
P1_phase - Phase of 180 degree pulses
tau - 2*tau is the time between 180 degree pulses
echo_points - Number of points to capture at the top of each echo. Set to 0 to do a continuous scan (like Fig. 1)
echo_loops - Number of echoes to produce
num_scans - Number of times to repeat the scan (and average the data)
fname -  Filename to store data to
bypass_fir - A 1 bypasses the signal around the FIR filter, or 0 to use it. See manual for details on this
adc_freq - Clock frequency of the board, in MHz
wait_time - Time to allow sample to relax after each scan (in seconds)

There are a few parameters in Figure 3 not specified on the command line. These are calculated as:

P1_time: 2*P2_time
top_time: this is calculated based on echo_points and the SW used
P2_after1: 2*tau - top_time/2
P2_after2: 2*tau + top_time/2

A recommended approach to performing CPMG experiments is to initially set echo_points to 0 so that data is acquired continuously. This is the easiest way to ensure the timing parameters have been specified correctly. Once this has been accomplished, the user can experiment with capturing only the tops of the echoes. Note: For this experiment, the spectrometer frequency must be precisely on resonance, and the P2_time must be the exact 90 degree pulse width.