Phased Array Driver

The task of the ultrasound driver is to generate the signals necessary to image and deliver therapy with the array. It must be able to provide each element on the array with a unique driving signal such that the synthesized driving pattern can be realized. In addition, the driver must be able to update the excitation pattern quickly enough to allow the system to respond to changing tissue conditions.

Before talking about the driver implementation, I need to explain the type of amplifier used to drive the array. The most common amplifier we use on the DMUA is a class D switching amplifier. This amplifier takes in a digital signal and drives the output either to saturation or to ground based on the logical value of the input. This amplifier significantly reduces the driving side complexity since each channel can be driven by a single digital IO line.

I worked on two different revisions of an ultrasound driver during my time as a graduate student, both of these systems are described below.

Spartan 3E Based Driver

The first revision relied on a Spartan 3E 500K FPGA to generate 64 separate digital signals to drive the array. The Spartan 3E 500K FPGA was chosen because it is one of the most powerful FPGAs that does not come in a BGA package. Since this design was a prototype, it was very important that I be able to solder the chosen FPGA by hand. This particular FPGA was available in a 208 pin, quad flat package which has side mounted leads spaced 500 microns apart. While this is not a trivial solder job, it is doable with a microscope and fine tipped soldering iron. You can see a picture of the evaluation board I designed below.

Array Driver

The blue oval along the top of the board is the digital IO to the amplifiers. This board mated with a legacy ribbon cable interface which could plug into the connectors shown. The FPGA is shown in the purple box along with the supporting hardware to the left and right (e.g. the PROM, a 50 MHz Crystal, the JTAG programmer, etc…). A USB 2.0 communications module is contained within the black black box along the bottom of the board. This board used a module provided by Bitwise Systems. The module provides a very convenient high speed (by USB 2.0 standards) data link. The company also provides a very easy to use C++ API that allowed for easy integration into the overall software architecture. Along the left hand side of the board, in red, you can see some miscellaneous IO ports. These ports were used for trigger in/out, clock in/out, and silence signals to allow for synchronization with the data collection unit and an external diagnostic ultrasound system.

This design relied on an architecture that stored the waveform to drive each channel as a 1D, 1 bit vector. This vector would be cycled out of the FPGA one bit at a time at a clocking frequency significantly higher than the array excitation frequency. The resulting signal was a pulse width modulated square wave that could be delayed or advanced in time. The figure below shows how various phases and amplitudes can be synthesized. In this case the clocking frequency is 200 MHz and the array excitation frequency is 1 MHz.

If each channel is stored in this manner, an entire array driving pattern can be stored as a K x N array, where the length K is dependent on the driving frequency and the array excitation frequency, while N is the number of array elements.

The overall FPGA system organization is shown below. Each driving pattern is stored in a 440 row BRAM buffer. The storage was double buffered to allow the driving patterns to be updated without causing glitches in the output. A separate Synthetic Aperture signal generation unit was developed to allow the system to quickly switch to imaging mode without the need to overwrite any driving patterns stored in memory.

This driving system was used in the following journal paper, Realtime Control of Multiple-focus Phased Array Heating Patterns Based on Noninvasive Ultrasound Thermography

Virtex-5 Based Driver

The second revision of the driver relied on a much more powerful FPGA, the Virtex-5 SX50T, on an evaluation board from AVNET. The evaluation board, shown below, contained two GigaBit Ethernet (GbE) PHY that could be used with the Ethernet MAC contained in the Virtex-5 to create a high speed data link with the computer. The board also contained a large number of high-speed IO pins that could be interfaced with custom hardware and logic. This board also served as the basis for the high-speed data collection system.

The GbE ports are shown in blue, the high-speed IO is shown in black, and the FPGA is shown in red.

To connect the digital IO signals to the amplifier, a simple PCB board was developed that would mate to the FPGA high-speed IO on one side and provide a standardized connection to the amplifier on the other side. A switch was made from the ribbon cable used in the previous driver, to a micro-coaxial cable interconnection. This cable provided increased signal integrity along with a polarized connection that prevented any false hookups. The complete driver with one micro-coaxial cable (32 channels) connected, is shown below.

The increased resources available on Virtex-5 allowed for a new system architecture to be developed. Instead of representing each driving signal as a 1D, 1 bit vector, this driver parametrized the wave and used a finite state machine (FSM) to dynamically generate the wave. Each driving signal could be represented by 4 parameters, the delay until the start, the duty cycle, the wave period, and the duration.

The FSM consumed more resources than the previous bitmap based driver, but the incremental storage requirement for each additional driving pattern was far less than the bitmap based approach. This decrease in waveform storage requirements enabled the creation of an onboard microsequencer. The microsequencer could store up to 512 independent driving patterns and because it was located on the FPGA, could control the presentation of the driving patterns to the array with microsecond resolution. The high level system diagram is shown below.

To help effectively utilize the microsequencer, a C++ waveform development GUI was created to allow for creation of complicated, amplitude modulated driving patterns. The screen shot below shows a ramp up to a 10 Hz sinusoidal modulation, followed by a ramp back down. This sort of excitation can be used for things such as Harmonic Motion Imaging of tissues.

Not only can the driver store and recall driving patterns, the driver can also receive new patterns from the CPU while playing and update the driving pattern on the fly. The high bandwidth of the GbE allows for well over 10,000 driving pattern updates per second. This sort of high update rate opens the door for near constant monitoring ensuring the safe and reliable delivery of a HIFU shot.

Validation and Calibration

Ideally, the transfer function between each driving channel and the acoustic medium (i.e. the signal path consisting of the amplifier, transmit/receive switch, matching network, and array element) would be identical between elements, introducing the same phase delay and scaling for each element. In reality, these transfer functions are not identical and can have significant differences in their phase and amplitude response. If these differences are not accounted for, they will introduce errors into the electronic steering of the array leading to improper operation.

There are a number of different methods for measuring these differences, one of the more interesting and useful methods uses acoustic holography to reconstruct the pressures at the array surface from an observation plane in the array focal zone. The benefit of this approach is that the phase and amplitude of all elements can be tested simultaneously while they are operating in normal conditions.

To perform this test, the array is excited with a uniform zero phase, unit amplitude driving pattern on all elements. This is equivalent to driving the array while steered to the geometric focus. A hydrophone is used to measure the phase and the amplitude of the resulting field in the plane created by the lateral and elevation axes at an axial depth corresponding to the geometric focus of the array. As an example, the measured phase and magnitude in this plane from a damaged driver is shown below. The array which generated this field contained 64 elements arranged in 2 rows of 32 elements each.

Measured Pressure Magnitude Acoustic Holography

In a homogeneous medium, with a properly functioning driver and array, the phase and magnitude response should symmetric in both the lateral and elevation axes. The lack of symmetry indicates something is not right, but by itself, does not indicate what is wrong. To identify the errors, this field measured in this plane must be back projected to the array surface. There are a number of different techniques available to do this. One of the most well known is the angular spectrum approach which can propagate fields from plane to plane. This approach won’t work here since the array is not a planar array, but rather a concave surface.

Instead, the free-space Green’s function of the homogenous Helmholtz equation is used to back project the data onto the array surface. The calculated phase and magnitude at the array surface is shown below (the reconstruction surface has been extended slightly beyond the borders of the active array to allow the edges of the elements to be identified). This view is from the geometric focus looking back towards the array.

Reconstructed Phased Array Magnitude Acoustic Holography
The magnitude difference between the top row and bottom row of elements is most likely due to a slight tilt in the hydrophone during the data collection.
Reconstructed Phased Array Magnitude Acoustic HolographyThe reconstruction makes it clear that many elements are not emitting any signal at all. These elements either need to be fixed or the synthesis process needs to account for their absence.

In this case, the lack of signal resulted from problems with the amplifiers. These sorts of errors could be revealed with other methods (i.e. measure the terminal voltage at the array, or pulsing elements one at a time while listening on a hydrophone at the geometric focus). Where this approach really demonstrates its power is when there are problems internal to the array.

The graphic below shows a photograph of an array’s surface next to the reconstructed pressure magnitude at the array’s surface. This array also had 2 rows of 32 elements each but with a large space between each row to allow for the insertion of a diagnostic probe. During the manufacturing of this array, there was some water damage to a few elements in the upper row which required a small hole be drilled in the front of the array. This hole was covered with some epoxy and is visible in the photograph as the lighter region on the dark active surface. The back projection makes clear that some of the damaged elements emit no signal, while some emit a signal but with the active area drastically reduced compared to the non-damaged elements. This sort of information is very difficult to deduce through alternative methods.

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>