Abstract:
An imaging system ( 1 ) comprises a transmitter ( 3, 6 ), a receiver ( 3, 4, 6 ), an antenna array ( 2 ); and a controller ( 4, 5, 10, 11 ) for directing the transmitter, the receiver, and the antenna array to scan a volume containing an object. The controller has multiple distributed processors ( 15 ) to calculate antenna control pattern data during rim-time. The processor ( 4, 5 ) assesses misalignment of antennae using a receiver placed in the imaging volume, and monitors level of energy received by the receiver and compares it with a reference energy level. Also, the controller performs on-the-fly modification of antenna control pattern data according to real time conditions such as mechanical misalignment of the transmitter, the receiver, or of one or more antennas. The controller may generate three-dimensional offset vectors to provide a profile of the offset across the scan volume, and the position of an antenna may be moved to compensate for the mechanical misalignment.

Description:
FIELD 
       [0001]    This application relates to imaging systems, for example, for security scanning. It can apply to imaging systems which operate over a wide range of wavelengths. 
       BACKGROUND 
       [0002]    In response to security threats in transportation and public spaces, inspection of people for weapons and other types of contraband is becoming common at security checkpoints at, for example, airports, train stations, sporting events, concerts, federal buildings, and other public and private facilities. Systems using non-ionizing radiation, such as terahertz and millimetre wave, for imaging of concealed weapons, contraband or other items of interest are known. Such systems are described in, for example, U.S. Pat. Nos. 6,972,714, 6,965,340, 7,112,775, 7,224,314, 7,283,085, 7,333,055, 7,327,304, 7,280,068, 7,298,318, and 7,525,500 and U.S. Patent Appl. Pub. Nos. 2005-0270220, 2006-0109160, 2006-0214836, 2008-0161685, 2008-0094301, 2008-0094296. 
         [0003]    In particular, U.S. Pat. No. 6,965,304 discloses a security inspection system having an array of antenna elements each being programmable with a phase delay to direct a beam of microwave radiation towards a target. The antenna elements may be binary phase-shifted with a non-ideal switching device, or continuous phase-shifted with a variable capacitor. U.S. Pat. No. 7,283,085 describes separate scanning and receiver arrays. U.S. Pat. No. 7,298,318 describes a system in which antenna elements are capable of being programmed with an additional transmission coefficient to receive reflected microwave radiation. US2006/0214838 describes a system in which phase shifts may be altered in order to optimize a parameter. Patterns (115) are stored in a computer readable medium (110). 
         [0004]    In some such imaging systems there is electronic control of an array of antennas to focus radiation such as millimetre wave energy on a desired spot and to collect the resultant reflection from this focus point. The focus point can be stepped across a three-dimensional volume in order to provide an image of what is contained in the volume. 
         [0005]    In order to step the focus point across the scan volume control information (known as the “pattern”) needs to be provided to each of the antennas in the array for each point in the volume. In order to provide good resolution and a good quality image two requirements are a large number of antennas and a small step size. These two requirements in turn create a requirement for a large amount of pattern data. 
         [0006]    The three-dimensional step size (i.e. distance between focus points) may for example be 4 mm×4 mm×10 mm. An example scan volume of 1.1 m×2m×1 m yields 13.75 million focus points for which pattern data must be stored. Using a coarse control mechanism where 1 bit of information is required to be stored for each antenna for each focus point yields a total pattern size of 67 GBytes for a system containing 42336 antennas (1 GByte=1024×1024×1024×8 bits). 
         [0007]    In current systems this information is held in the system by including a large amount of distributed non-volatile memory. This non-volatile memory is “loaded” off-line outside the system and placed in the system before start-up or loaded in a setup mode at system start prior to use. The pattern data may for example be stored in Compact Flash memory from which the processor reads the data and writes it to SDRAM buffer memory, and in turn feeds the antenna array from this buffer memory. 
         [0008]    Using non-volatile memory in the system places limitations on system operation and calibration options due to the slow access times of this type of memory. The invention is directed towards providing a simpler imaging system architecture, and/or simpler system modification, and/or improved real time response to dynamic commands during operation of the system. 
       SUMMARY 
       [0009]    According to the invention, there is provided an imaging system comprising a radiation transmitter, a radiation receiver, and an antenna array; and a controller. The controller directs the transmitter, the receiver, and the antenna array to scan a volume containing an object. It calculates antenna control pattern data at start-up or during run-time. 
         [0010]    In one embodiment, the controller comprises a plurality of distributed antenna control circuits ( 10 ,  11 ), each adopted to calculate antenna control pattern data. 
         [0011]    In one embodiment, the controller comprises a digital receiver ( 4 ) adapted to receive commands from a host computer ( 5 ) and to route said commands to the antenna control circuits. 
         [0012]    In one embodiment, each said antenna control circuit comprises a processor for distributed calculation of the antenna control pattern data. 
         [0013]    In one embodiment, said processor comprises a field programmable gate array processor or an application-specific integrated circuit. 
         [0014]    In one embodiment, the controller is adapted to calculate the pattern data without need for non-volatile memory. 
         [0015]    In one embodiment, the controller is adapted to output the pattern data without need for a buffer memory such as SDRAM memory. 
         [0016]    In one embodiment, the processor is adapted to assess misalignment of antennae using a receiver placed in the imaging volume, and monitoring level of energy received by the receiver and comparing it with a reference energy level. 
         [0017]    In one embodiment, the processor is adapted to assess antenna misalignment using a test object placed in the imaging volume, and monitoring energy received by the system&#39;s receivers due to presence of the test object. 
         [0018]    In one embodiment, the controller is adapted to perform on-the-fly modification of antenna control pattern data according to real time conditions. In one embodiment, said conditions include mechanical misalignment of the transmitter, the receiver, or of one or more antennas. 
         [0019]    Preferably, the controller is adapted to insert, according to real time conditions, an offset value in each of three space dimensions when calculating distances. 
         [0020]    In one embodiment, the controller is adapted to insert said offset when determining position of a destination scan volume element. 
         [0021]    In one embodiment, the controller is adapted to insert said offset to indicate the relative position of an antenna with respect to the antenna array plane. 
         [0022]    In one embodiment, the controller is adapted to insert said offset to indicate the relative position of a transceiver horn with respect to the antenna array plane. 
         [0023]    In one embodiment, the controller is adapted to change the shape of the scan volume according to real time conditions, in order to compensate for mechanical misalignment. 
         [0024]    In one embodiment, the controller is adapted to generate a plurality of three-dimensional offset vectors to provide a profile of the offset across the scan volume. 
         [0025]    In another aspect, the invention provides a computer program product comprising a computer usable medium having a computer readable program code embodied therein, said computer readable program code adapted to be executed to perform operations of the controller of the imaging system of any embodiment set out above. 
     
    
     
       BRIEF DESCRIPTION OF FIGURES 
         [0026]    The following drawings are given by way of example only to illustrate the invention: 
           [0027]      FIG. 1  is a diagram illustrating the main hardware components of an imaging system for driving an antenna array; 
           [0028]      FIG. 2  is a more detailed block diagram illustrating an antenna tile circuit; 
           [0029]      FIG. 3  is an image illustrating an RF beam captured from an antenna panel for the purposes of mechanical alignment assessment; and 
           [0030]      FIG. 4  is a diagram illustrating operation of an antenna and calculation of a pattern for its phase shift. 
       
    
    
     DETAILED DESCRIPTION 
       [0031]    Overview 
         [0032]    The present application provides an apparatus and method for imaging a volume for purposes such as security, in which antennas are controlled by a simpler controller and with improved dynamic response and improved system calibration control. 
         [0033]    Unless explicitly stated otherwise, “and” can mean “or,” and “or” can mean “and.” For example, if a feature is described as having A, B, or C, the feature can have A, B, and C, or any combination of A, B, and C. Similarly, if a feature is described as having A, B, and C, the feature can have only one or two of A, B, or C. 
         [0034]    Unless explicitly stated otherwise, “a” and “an” can mean “one or more than one.” For example, if a device is described as having a feature X, the device may have one or more of feature X. 
         [0035]    Referring to  FIG. 1  an imaging system  1  comprises an antenna array 2, 24GHz transceivers  3 , and a digital receiver  4  including an ADC and circuits for filtering. The digital receiver communicates with a host PC  5  which is part of the system, the digital receiver receiving commands from the host PC and passing data to the host PC for display. 
         [0036]    The host PC  5  presents a GUI to the operator, initiates volume scans by issuing “scan requests”, performs system diagnostics and error reporting, and collects scan data and displays it for the operator. The digital receiver  4  receives the scan requests from the host PC  5  and presents them to the antenna array  2  in a synchronised manner. Also, it receives and processes scan data from the transceivers  3 , packetizes it, and passes it to the host PC  5  for processing and display. Each transceiver  3  transmits high-frequency energy from RF horns “at” the antenna array  2 , and it collects high-frequency energy from the antenna array  2  (reflected from the target), down-converts it to a lower frequency and passes it to the digital receiver  4  for packetization and processing. 
         [0037]    Referring to  FIG. 2 , the antenna array  2  comprises a multiple of “tile” boards  10  each having an antenna board  11  which is inserted in a socket in the digital board  10 . A master FPGA  15  is linked with RJ45 interfaces  16  for communication with the digital receiver  4 . There is also a DDR2 400MHz interface  17  to DDR2-SODIMM memory circuits  18 , and an IDE PI06 interface  19  to a CF Card socket  20  or NAND Flash. There is a 400-pin connector  25  to the antenna board. 
         [0038]    The antenna board  11  comprises twelve multiplexers  30  on an FET matrix  31  with 1008 elements, and communication with the digital tile board  10  is via a 400-pin connector  32 . 
         [0039]    Taking an example antenna array of 42 tile boards 10 each of which contains 1008 antennas yields a total of 42336 antennas in the array. To focus on a point a decision has to be made on how to phase-shift the high frequency energy at the antenna such that it contributes constructively to the scan. The system  1  has a binary control of the antenna where a single bit decides whether the antenna should phase shift by 180° or not. This means that for each scan point 42336 bits are provided and the pattern for each of the focus points is 42336 bits long. 
         [0040]    The scan volume is 1.1 m×2 m×1 m (X*Y*Z). The scan step is (4 mm×4 mm×10 mm). This yields a total number of scan points of 13.75 million. In order to store the patterns for each of these points ˜542 Gbits of data would be required or ˜67 GBytes for just one scan. In the invention, storage of this pattern data is avoided. 
         [0041]    Referring again to  FIG. 2  two types of memory are used on each tile (4 GBytes of each type). A non-volatile Compact Flash (CF) card  20  is loaded off-line. The contents of the Flash card are copied to DDR2 SDRAM (five minutes) at start-up for fast access during normal operation. 
         [0042]    The calculation of the pattern is performed by the master FPGA  15  and is performed in real time as the system is operating, or at start-up initialization. 
         [0043]    The antenna array shown in  FIG. 1  can be described as a set of panels  40  each containing a sub-array  41  of antennas and each reflecting energy from multiple of RF energy sources (horns)  6  onto the subject and back to the horns  6 . 
         [0044]    In order to achieve the highest possible returned power, best signal-to-noise ratio and hence the best image, the image is composed of a weighted average of the data from the panels in regions where two or more panels are scanning simultaneously (known as “overlap” regions). It is important that the antenna panels  40  are focussed on the same point when scanning in these overlap regions and that the RF beams are captured in phase for an optimal weighted combination of data from the panels  40  to occur. 
         [0045]    Mechanical misalignment—for example tilting one panel  60  or tilting the whole antenna array  2 —can mean that one panel  40  is closer to a particular voxel or to a transceiver horn  6  than was configured when calculating the patterns. Since the distance from the panel  40  to the voxel (and from the panel  40  to the horn  6 ) is a key component when calculating the pattern this can mean that when combining data the panels will be scanning different points in space. This can cause a blurring or smearing of the image in the overlap regions. 
         [0046]    Two methods can be used to determine the mechanical misalignment. 
         [0047]    The first method involves using a receiver—for example a quarter-wavelength monopole antenna—to capture the beam from each of the panels separately and to use the beam position as an indication of mechanical misalignment. To do this the following procedure is carried out:
       The receiver is placed at a predefined location in an overlap region.   The receiver captures the focussed beam from each of the panels  40  separately. A scan is carried out with one panel focussed on the receiver and the other panel(s) “de-focussed”. The beam from each panel is captured via the receiver, filtered, and the results are stored.   From the stored results the direction the beam is pointing can be determined by software processing of the data in the host PCT  5 . Slices in each dimension are taken and the beam examined to determine whether the beam is off-centre. Examples plots of a data slice in the Z-dimension are shown in  FIG. 3 . These slices show that the beam is not at the centre of the scan as desired.       
 
         [0051]    The second method involves using a calibration plate/test object either placed in the scan volume or integrated into the machine mechanics. To do this the following procedure is carried out:
       A scan is carried out with one panel focussed on the test object and the other panel(s) “de-focussed”. The image of the test object for each panel is captured and filtered and the results are stored.   Similar software processing as with the receiver can be used to determine whether the test object is off-centre.       
 
         [0054]    The output of the software data processing is an offset vector of the actual beam centre from the desired beam centre. This offset is provided for all panels. The offset of the beam centre as seen by the receiver or as detected via the test object is essentially an indication of the mechanical imperfections of the system. 
         [0055]    It should be noted that multiple receivers and/or multiple calibration plates/test objects can be used to determine a multiple of offset vectors for each panel. In this way a profile of the offsets across the scan volume can be established which in turn allows improved compensation for mechanical misalignment across the scan volume. 
         [0056]    In order for the information about misalignment to be useful it is necessary to be able to adjust the patterns quickly such that the user is not delayed in using the scanner. The following describes, with reference to  FIG. 4 , how the FPGA  15  calculates the pattern on-the-fly: 
         [0057]    Two of the most important requirements for the imager  1  are good resolution and a sharp image. In order to achieve these it is necessary to have a large number of antennas (to achieve a large aperture) and an appropriately small step size. This in turn creates a requirement for a large amount of pattern data i.e. a large amount of focus points each with a large amount of control information. 
         [0058]    The three-dimensional step size (i.e. distance between focus points) for the imaging scan is 4 mm×4 mm×10 mm. Given a scan volume of 1.1 m×2 m×1 m this means that there are 13.75 million focus points for which pattern data must be stored. Given that there are 42336 antennas in the system and 1 bit of information is required to be stored for each antenna (for the simplest phase quantisation) for each focus point this means that the total amount of pattern data to be stored is 67 GBytes (1 GByte=1024×1024×1024×8 bits) for this single scan. 
         [0059]    In the prior art the pattern data was held in the system by including a large amount of distributed non-volatile memory. This non-volatile memory was “loaded” off-line outside the system and placed in the system before start-up. Since non-volatile memory is slow, the data was copied on system start-up to faster volatile memory for use during normal operation. 
         [0060]    However due to the large amounts of data it would be impractical to update the slow non-volatile memory in the system after calibration (this would take a number of minutes or hours per calibration step). 
         [0061]    To allow for the mechanical misalignment data to be used in-system, distributed programmable logic devices in the system (already in place to allow communication across the antenna array) are used in the system  1  to dynamically calculate the pattern data. 
         [0062]    The transmission path of the RF signal is shown in  FIG. 4 : 
         [0063]    The basic design principle requires that the phase φ ci,cj , of the field reflected from the antenna identified by (ci,cj) in the array, is chosen so the total phase delay from the horn  6  to the voxel (focus point) is constant for all antennas. 
         [0064]    The phase φ ci,cj  must satisfy: 
         [0000]      mod( k .( ro 1 ci,cj   +ro 2 ci,cj )+φ ci,cj ,2π)=0 where,
       ro 1   ci,cj  is the distance between the horn and the antenna (ci, cj)   ro 2   ci,cj  is the distance between the voxel and the antenna (ci, cj)       
 
         [0067]    This calculation is performed for each antenna for each point in the scan volume. Instead of attempting to set the delay at each patch antenna to the exact phase shift required for focus, the required phase shift is quantized. The simplest quantization is a binary quantization where the phase shift applied is either 0° or 180°, however more quantization levels could be used providing a greater degree of accuracy in the phase shift across the array. The calculation above becomes much simpler (using binary quantization as an example) and is split into two simple choices: 
         [0000]      mod( k .( ro 1 ci,cj   +ro 2 ci,cj ),2π)&gt;π→bit=0
 
         [0000]      mod( k .( ro 1 ci,cj   +ro 2 ci,cj ),2π)≦π→bit=1
 
         [0068]    To break down the distance calculation into some more detail, this is a simple 3-D distance calculation: 
         [0000]    
       
         
           
             
               ro 
                
               
                   
               
                
               
                 1 
                 
                   ci 
                   , 
                   cj 
                 
               
             
             = 
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               X 
                               horn 
                             
                             - 
                             
                               X 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               horn 
                             
                             - 
                             
                               Y 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         ( 
                         
                           
                             Z 
                             horn 
                           
                           - 
                           
                             Z 
                             antenna 
                           
                         
                         ) 
                       
                       2 
                     
                   
                 
               
             
           
         
       
       
         
           
             
               ro 
                
               
                   
               
                
               
                 2 
                 
                   ci 
                   , 
                   cj 
                 
               
             
             = 
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               X 
                               voxel 
                             
                             - 
                             
                               X 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                       
                         
                           ( 
                           
                             
                               Y 
                               voxel 
                             
                             - 
                             
                               Y 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         ( 
                         
                           
                             Z 
                             voxel 
                           
                           - 
                           
                             Z 
                             antenna 
                           
                         
                         ) 
                       
                       2 
                     
                   
                 
               
             
           
         
       
     
         [0069]    Some options exist here when calculating the pattern for each focus point:
       1. The distributed programmable logic blocks are used to calculate the pattern data dynamically and to supply this directly to the antennas. This is the optimum approach as it removes the need for a large amount of volatile memory in the system.   2. The distributed programmable logic blocks could calculate the pattern data at each system start-up and after calibration, and load the pattern data into volatile memory for use in normal operation.       
 
         [0072]    In the first embodiment above the FPGA  15  calculates the pattern data dynamically and supplies this directly to the antennas. This is optimum, as it removes the need for a large amount of both non-volatile memory and volatile memory in the system. 
         [0073]    In the second embodiment, the FPGA  15  of each board  10  calculates the control information at each system start-up and loads this information into the volatile memory for use in normal operation. By utilising 42 distributed programmable logic blocks  10  to calculate the required patterns for groups of antennas the 67 GByte calculation required for the imaging scan can be divided into individual 1.76 GByte calculations per programmable logic block. Presuming a clock frequency of 160 MHz these calculations would take 87 seconds if carried out in series. By utilising more logic in the programmable device in parallel (four-fold parallelism) this can be carried out in 22 seconds. With some additional calibration scans to be calculated this brings the calculation time to approximately 30 seconds, which is acceptable. 
         [0074]    Pattern Adjustment 
         [0075]    The distributed programmable logic circuits  10  can also calculate patterns for adjustment of the mechanical misalignment. The output of the mechanical alignment procedure is a three-dimensional offset vector for all panels. 
         [0076]    The offset vector can be utilised in a number of different ways. In the first the distance calculations can be changed as below: 
         [0000]    
       
         
           
             
               ro 
                
               
                   
               
                
               
                 1 
                 
                   ci 
                   , 
                   cj 
                 
               
             
             = 
             
               
                 
                   
                     
                       
                         
                           
                             ( 
                             
                               
                                 X 
                                 horn 
                               
                               - 
                               
                                 X 
                                 antenna 
                               
                             
                             ) 
                           
                           2 
                         
                         + 
                         
                           
                             ( 
                             
                               
                                 Y 
                                 horn 
                               
                               - 
                               
                                 Y 
                                 antenna 
                               
                             
                             ) 
                           
                           2 
                         
                         + 
                       
                     
                   
                   
                     
                       
                         
                           ( 
                           
                             
                               Z 
                               horn 
                             
                             - 
                             
                               Z 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                     
                   
                 
               
                
               
                   
               
                
               
                 ( 
                 unchanged 
                 ) 
               
             
           
         
       
       
         
           
             
               ro 
                
               
                   
               
                
               
                 2 
                 
                   ci 
                   , 
                   cj 
                 
               
             
             = 
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               X 
                               voxel 
                             
                             + 
                             
                               X 
                               offset 
                             
                             - 
                             
                               X 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               voxel 
                             
                             + 
                             
                               Y 
                               offset 
                             
                             - 
                             
                               Y 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         ( 
                         
                           
                             Z 
                             voxel 
                           
                           + 
                           
                             Z 
                             offset 
                           
                           - 
                           
                             Z 
                             antenna 
                           
                         
                         ) 
                       
                       2 
                     
                   
                 
               
             
           
         
       
     
         [0077]    In this case the position of the destination voxel has been artificially adjusted to account for the mechanical offset. In this way the panel can be forced to scan the correct focus point, hence ensuring that when data is combined from all panels the optimum combination will occur. 
         [0078]    In a second method the calculations become: 
         [0000]    
       
         
           
             
               ro 
                
               
                   
               
                
               
                 1 
                 
                   ci 
                   , 
                   cj 
                 
               
             
             = 
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               X 
                               horn 
                             
                             + 
                             
                               X 
                               offset 
                             
                             - 
                             
                               X 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               horn 
                             
                             + 
                             
                               Y 
                               offset 
                             
                             - 
                             
                               Y 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         ( 
                         
                           
                             Z 
                             horn 
                           
                           + 
                           
                             Z 
                             offset 
                           
                           - 
                           
                             Z 
                             antenna 
                           
                         
                         ) 
                       
                       2 
                     
                   
                 
               
             
           
         
       
       
         
           
             
               ro 
                
               
                   
               
                
               
                 2 
                 
                   ci 
                   , 
                   cj 
                 
               
             
             = 
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               X 
                               voxel 
                             
                             + 
                             
                               X 
                               offset 
                             
                             - 
                             
                               X 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               Y 
                               voxel 
                             
                             + 
                             
                               Y 
                               offset 
                             
                             - 
                             
                               Y 
                               antenna 
                             
                           
                           ) 
                         
                         2 
                       
                       + 
                     
                   
                 
                 
                   
                     
                       
                         ( 
                         
                           
                             Z 
                             voxel 
                           
                           + 
                           
                             Z 
                             offset 
                           
                           - 
                           
                             Z 
                             antenna 
                           
                         
                         ) 
                       
                       2 
                     
                   
                 
               
             
           
         
       
     
         [0079]    In this case it is the position of the antenna that has been moved to account for the mechanical misalignment. The offset used can be different for each panel, for each tile, or for each antenna depending upon the nature of the mechanical misalignment. In this way each antenna can be forced to scan the correct focus point, hence ensuring that when data is combined from all panels that the optimum combination will occur. 
         [0080]    The position of the horns  6  can also be adjusted via the offset to compensate for horn misalignment. 
         [0081]    A simple register interface was supplied to allow the software to update the calibration offset vectors as required. 
         [0082]    Solutions for mechanical misalignment used in the past have involved mechanical adjustment via precision mechanical components. The advantages of the pattern adjustment approach of the invention are:
       Speed: Mechanical adjustments are timely and require tools. Using a purely mathematical/software approach means that the time taken is simply the time to detect the misalignment and recalculate the patterns (approximately 30 seconds).   Automation: An automated approach can be used which reduces the requirements for technician training.   Cost: Precision mechanical components are expensive and can be removed from the system.   Reliability: Using extra precision mechanical components means that there are extra components that can fail.   Scope for compensation: Mechanical components have a finite adjustment range and may not be able to compensate for all situations.   Precision: Greater accuracy and precision can be achieved with computational adjustment.       
 
         [0089]    The invention removes the need for a large amount of non-volatile memory. Instead of using the processing resources of the antenna board  10  to copy the pattern data from non-volatile to volatile memory, it is used instead to calculate the necessary pattern data, thus removing the need for non-volatile memory. 
         [0090]    Each distributed pattern calculation block  10  needs two sets of data in order to perform its task:
       Information about the scans, such as step size and scan volume. This information can be provided at start-up time by the host PC  5 .   The antennas for which it needs to calculate the pattern data. The pattern data is dependent on the position of the antennas. This information can be provided at start-up time by the host PC  5 .       
 
         [0093]    It will be appreciated that the invention avoids the need for a large amount of expensive and slow distributed non-volatile memory to supply the pattern data for the antenna array. This reduces system cost due to removal of the non-volatile memory from the system. Also, the start-up time of the machine has been reduced. Copying of control information from the non-volatile to volatile memory takes approximately five minutes, which is followed by some automatic machine calibration routines. Using the firmware to calculate the control patterns reduces this to approximately thirty seconds. Also, in the prior art a large number of different non-volatile memory cards were required for the system, each of which must be separately programmed and labelled before being placed in the system. Using the firmware pattern calculation removes the burden of maintenance and management and also removes a potential source of error in production. 
         [0094]    Because in one embodiment the FPGA performs the calculations on-the-fly the system as a whole has major advantages in addition to those outlined above. These arise because when a command is received from the host PC via the digital receiver  4  the FPGA does not need to access the non-volatile Flash memory to retrieve the patterns and then load them to the volatile SDRAM memory. For example, the FPGA can in another embodiment be programmed to perform compensation for tilting of the volume on-the-fly. 
         [0095]    The embodiments described above have been set forth herein for the purpose of illustration. This description, however, should not be deemed to be a limitation on the scope of the invention. Various modifications, adaptations, and alternatives may occur to one skilled in the art without departing from the claimed inventive concept. The spirit and scope of the invention are indicated by the following claims.