NMR Pulse Programs

The pulse program is the instruction set for the pulse programmer (obviously!). The appearance of the instructions will depend on the spectrometer manufacturer and each will have it's own particular and unique capabilities. However, there are some basic things that the pulse program must be capable of doing ... it must be able to tell the spectrometer to issue a rf pulse on a particular channel, it must be able to tell the spectrometer to wait or delay for a specified period of time etc. The examples below are written in Brukerese pulse programming language but hopefully, if you are a Varian or Joel user you can glean some information from them.

The first program is a simple pulse-acquire program:

1 ze
2 30m
   p1 ph1
   go=2 ph31
   30m mc #0 to 2 F0(zd)

ph1=0 2 2 0 1 3 3 1
ph31=0 2 2 0 1 3 3 1

The first instruction, 'ze', instructs the pulse programmer to zero the data buffer's memory to prepare it for data acquisition and to set the scan counter to zero. Virtually every pulse program will begin with this instruction. The '1' in front of the 'ze' is a label (which isn't used in this program). A label can be used as a jump point for an instruction.

The second instruction, '30m', is a delay instruction ... 30 milliseconds to be precise. I'm not quite sure why this is here .. it could probably be eliminated without any noticeable effect on the outcome of the experiment.

The next instruction, 'd1', is the interpulse relaxation delay time. This is the time allowed for relaxation of the spin system back to equilibrium. Actually, the total relaxation time is the sum of 'AQ', the acquisition time and 'd1', but 'd1' is generally referred to as the relaxation time.

Following this is the instruction to issue a pulse on the transmitter, 'p1 ph1', using phase program 'ph1'. Pulses are usually issued with a set of phases associated with them in order to pick out the wanted signals from the acquired signals. You can see the explicit form of the phase program at the bottom of the program.

The next instruction tells the system to acquire the data using the receiver phase program 'ph31'. 'go=2' instructs the pulse programmer to loop back to the label '2' (at the '30m' instruction in this case) 'ns' times. 'ns' is the number of scans that will be done.