UNDERGROUND PIPE LOCATING SYSTEM

Abstract: A system for locating and identifying underground pipes, utilizing a ground-probing radar. The ground-probing radar system includes an antenna module and a transmit/receive sub-system. The system also includes a digital signal processing sub-system for processing the received signal to extract data corresponding to detected differences in dielectric constant and a master controller. The system still further includes a positioning sub-system, a display sub-system, a user interface and a data storage mechanism, display data and said operating parameters.

Description: UNDERGROUND PIPE LOCATING SYSTEM BACKGROUND OF THE INVENTION The present invention relates to a system of locating and identifying underground pipes, such as those which carry gas, water and waste to/from homes and building so that, among other things, these pipes can be avoided by excavating equipment or the like. More particularly, the system of the present invention enables the detection of such objects utilyzing, in combination with other novel elements of this invention, ground-probing RADAR. This invention further relates to the RADAR detection of underground pipes, for example, and more particularly relates to a system which focuses a characteristic hyperbolic RADAR response received from an underground object, such as a pipe or other object, utilizing synthetic aperture type technologies, and further processes same to accurately determine said object's underground position. Accurate RADAR-based underground object detection has always been an elusive goal because of the variability of the ground as a conducting medium in three dimensions, i.e., inherent variations in ground layers, density, obstructions, dielectric constant, etc. Water content, in particular, acutely varies the ground's dielectric constant which correspondingly attenuates RADAR signals making consistent detection of targets underground difficult at best. Electromagnetic signals transmitted into the ground and reflected from an object buried therein tend to suffer high signal attenuation resulting in low signal-to-clutter and signal-to- noise ratio. Efforts to improve detection ability have found that while a single frequency of operation may be desirable in a particular type soil, the same frequency may be undesirable in another, frequently misinterpreting said objects as ground clutter by conventional underground radar systems. In an effort to overcome inadequacies of conventional underground RADAR detection, U.S. Patent No. 3,831, 173 discloses a ground radar system which utilizes a transient signal comprising a wide variety of radiated frequencies, Due to the use of the transient signal, effective reflections are received from a wide variety of underground objects such as pipes, utility lines, culverts, ledges, etc., to depths around 10 feet. The ' 173 system, however, while appropriate for detecting small conducting objects, is basically unable to accurately detect non¬ conducting objects with cross-sections of less than one or two feet. U.S. Patent No. 3,967,282 discloses a detector for detecting both metallic and non-metallic objects, based on differences in the dielectric constants of the object and its surrounding medium, in order to give a location of the object. The '282 invention, however, is burdened with difficulty in processing the received data such that accurate object detection and positioning is not achieved. U.S. Patent No. 4,706,031 discloses a method and apparatus for identifying a target object located in the ground, in the air or under water. The basis within the disclosure for detection and target identification resides in the apparatus use of the phase deviation between the transmitted and received (echo) radio-wave signals. A signal containing a mixture of various frequencies is transmitted and the return signal or signals are analyzed. A detected difference in phase deviation between the particular frequencies received is used to identify the material properties of the object from which the energy is reflected. The '031 apparatus, however, is still plagued with problems when it comes to detecting small non¬ conducting objects. U.S. Patent No. 4,951,055 discloses a ground probing RADAR which includes means for displaying echo images of a buried material. The displayed images are capable of providing a depth direction of the buried material and a movement direction of a moving vehicle carrying the RADAR. The RADAR includes first means for forming a hyperbolic echo image of the material, and causing a hyperbolic echo image to be displayed on the display means, second means for forming a false echo image and causing the false echo image to be displayed on the display means, third means for inputting data to the second means to cause a displayed position of the false echo image to be shifted so that a vertex position of the false echo image and expansion opening thereof coincide with those of the echo image of the buried material, and fourth means for calculating a propagation velocity of the electromagnetic waves in the ground on the data indicative of the vertex position and opening expansion of the false echo image when the two displayed echo images coincide with each other. A position of the buried material is detected on the basis of the propagation velocity value calculated by the fourth means. That is, when electromagnetic waves are emitted from a plurality of points on the ground surface above a buried material, an echo image formed on the basis of data of propagation times of reflected waves at their respective points describes a hyperbola as a result of expansion of the transmitted electromagnetic waves. An operation is carried out to overlap, on the echo image, a false echo image lying in the same coordinate system and consisting of a similar hyperbolic image. If the two echo images are overlapped, a vertex position and an expansion of the opening of the echo image can be determined from the data of the false echo image. Thus, the propagation velocity of electromagnetic waves are calculated from the data that represents the vertex position and the expansion of the opening. The position of the material under the ground is then calculated in relation to the data of propagation time in any position. OBJECTS AND SUMMARY OF THE INVENTION It is therefore an object of the present invention to provide a RADAR-based Ground Probing RADAR system which overcomes the shortcomings of the prior art. It is another object of the present invention to provide a ground-probing RADAR system which takes in significant amounts of measurement data during operation, the compilation of which provides for a significant increase in signal-to- noise levels relative prior art underground object-detection systems. It is another object of the present invention to provide a ground-probing RADAR system which displays a productivity that is significantly enhanced relative prior art systems. It is yet another object of the invention to provide a ground-probing RADAR system based on reception of data from only one pass over the underground to be mapped with enhanced detection performance relative prior art ground RADAR systems. It is yet another object of the invention to provide a ground-probing RADAR system with a digital signal processing sub-system which provides a unique method of processing returned RADAR signals with application to geophysical data collection and/or processing. With these objects in mind, a ground-probing RADAR system is disclosed which provides for detection of the presence of all types of underground objects, e.g., buried pipes and cables, at an underground depth of at least 1.5 meters, and an ability to accurately recognize and identify the location and shape of said objects in three dimensions. The mapping system is radar-based, that is, it transmits an electromagnetic pulse and records a response from buried objects. Objects are accurately detected by the system's unique way of "looking" for a change in dielectric constant within returned (reflected) RADAR signals, enabling accurate detection both metallic and non-metallic targets, such as plastic and concrete pipes, as well as differences in detective material in the ground with three-dimensional distance. A radar response (reflection) from a point object located underground, such as a pipe, embodies a hyperbola or hyperbolic mapping. The system herein detects such point objects by RADAR scanning over the object, receiving the signal reflected therefrom, and generating an image containing a hyperbolic representation of the object from the reflected signal. A dedicated digital signal processor sub-system within the system processes the raw data present in the received, reflected signal to generate a final image of the object to the user. The image is projected or displayed on a specialized display graphical form to indicate the object's position and estimated depth to a user. The dedicated digital signal processor sub-system accomplishes two primary tasks. The first is migrating or focusing the hyperbolic image from the received signal data to a single point for each radar scan. This "migrating" process is accomplished by the implementation of the digital signal processor sub-system of "clustering " ' and synthetic aperture radar (SAR) techniques. The second task takes the "migrated" data (i.e., that data consisting of the focused or clustered points) from multiple memory-stored scans and groups the same to extract linear features. The preferred embodiment of the invention may implement a simple SAR or a modified SAR technique (referred to interchangeably herein as super-SAR) which takes into account the relative dielectric constant of the soil (ground). Accordingly, the ground-probing RADAR system accurately computes the target depth. In a first preferred embodiment, a single-channel ground-probing radar system (referred to interchangeably hereinafter as "the Pipehawk system") is disclosed which operates in accordance with the precepts of this invention. The electronics which enable the unique processing and mapping ability of the present invention, e.g., the Pipehawk system, comprise the following structure. A microprocessor, central to the system's processing (preferably an Intel 80486 or like device) is electrically connected to a user interface (to be discussed in greater detail below). The microprocessor is electrically connected to a display system including display, softkeys and softkey controller to a location system including a wheel sensor, voltage monitoring means and a dedicated microprocessor or microcontroller; a memory storage device such as a hard disk for storing required data; and a digital signal (DSP) processor, preferably an AT&T DSP326, for performing the unique processing particular to this system. The DSP processor is electrically connected to the RADAR transmitter and receiver sub-system. The Pipehawk system is capable of accurately pinpointing underground objects, e.g., piping, whether plastic or metal, to provide an operator with an immediate display of its location. The Pipehawk RADAR transmitting/receiver sub-system includes a single channel RADAR antenna system comprising a dipole element and dipole element positioning apparatus which coordinates incoming data with data from positioning sensors located in the wheel or wheels. Examples of such element and positioning apparatus are described in commonly owned Great Britain Patent Specification Application Numbers 8629412 and 8629415, respectively, incorporated herein by reference. Operation is accomplished with a user walking the Pipehawk system over the underground to be mapped, at a moderate pace, while a radar scan with the single channel dipole element system is performed repetitively. With each radar scan, the cross-section of the ground corresponding to the center line of the system structure is searched. By carrying out a series of such scans and performing various digital signal processing (DSP) schemes and analysis techniques implemented in the digital signal processor, the Pipehawk system provides a picture of the underground environment. Special features inherent in the system's design allow for adjustments for the different soil compositions, further facilitating accurate detection. A second preferred embodiment of the ground-probing RADAR system of this invention includes structure and/or programmed instructions which enable the system to operate in super-sensitive applications. To complement such processing ability, the system (referred to as Pipehawk II) also includes a double channel RADAR antenna sub-system comprising two dipole elements and positioning apparatus. The Pipehawk II system, as well as the Pipehawk system, may embody various structure for various applications, in accordance with those skilled in the art of mechanically engineering and coordinate manufacture of such systems, and in accordance with the several exemplary structural descriptions which will follow. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a functional system block diagram representing one embodiment of the ground-probing RADAR system of this invention; Fig. 2 is a system flow diagram of the different levels of graphical display screens which are brought up on the system's display during system operation, in accordance with operator softkey input, in a preferred embodiment of the processing control of the embodiment of Fig. 1 ; Figs. 2 A, 2B, 2C and 2D are pictorial representations of several of the graphical icons utilized by the system of this invention, as associated with the graphical displays discussed herein with reference to Fig. 2; Fig. 3 is a diagram showing an underground pipe and several block diagrams depicting a particular type of RADAR processing performed by the embodiment of Fig. 1; Fig. 4A shows varying curvatures or hyperbolic representations with increasing depth and dielectric constant of objects detected by the system embodiment of Fig. 1; Figs. 4B and 4C are graphical representations which together show correlation by the system of Fig. 1 of stored hyperbolae and raw data, and the resulting outputs; Fig. 4D is a flow diagram of the processing which allows the embodiment of Fig. 1 to identify dielectric range and index; Fig. 5 is a graphical representation of a line in image space generated by the embodiment of Fig. 1; Fig 6 Is a graphical representation of a point in accumulator space generated by the embodiment of Fig. 1; Fig. 7 is a pictorial representation of data processing performed on raw RADAR data of up to 30 scans, Hough transformation to a 7-layer mapping and summation and Hough transform to generate an integrated map or processed output by the unique digital signal processing of this invention; Fig. 8 is a block diagram representing digital signal processing which may be implemented by the invention; Figs. 9A and 9B are pictorial representations of data processing which together convey how the synthetic aperture technique correlates a set of point- object generated hyperbolic data with raw data; Fig. 10 is a plot of depth buckets reflecting varying depth of the same target; Fig. 11 is a plot of target data reflecting variance of hyperbolic representation with the varying depth of the target; Fig. 12 is a plot of target data in which each of the three depth-varied hyperbolic responses, as shown in Fig. 11, of the varying target depth buckets of Fig. 10, when superimposed as a reference; Figs. 13, 14, 15 and 16 are sequential pictorial flow representations of one form of two dimensional processing of hyperbolic response data performed by this invention; Figs. 17, 18, 19 and 20 are sequential pictorial flow representations of multiple target detection processing performed by this invention; Fig. 21 is a sequential, pictorial flow representation of the resulting full scan of the stacking of each data layer generated in processing; Fig. 22 is a sequential, pictorial flow representation of processing results associated with target location for each ground level processed, and amplitude detection implemented in accordance with the processing steps defined herein; Fig. 23 is a plot of normalized amplitude against dielectric constant (ER) which exemplifies the system's ability to determine the correct dielectric constant in the ground being mapped by this invention; Figs. 24 and 25 are sequential, pictorial flow representations which together represent a preferred method of cluster processing as depicted by the blocks of Fig. xxx; Figs. 26, 27 and 28 are, respectively, a bottom plan view, a side view and a top plan view of a physical implementation of the first embodiment or Pipehawk system of this invention; Fig. 29 is a more detailed view of the embodiment depicted in Figs 26, 27 and 28; Fig. 30 is a general schematic diagram depicting the system level design of the embodiment shown in Figs. 26, 27 and 28; Figs. 31 A and 3 IB are schematic representations of delay coils for use within the antenna module of this invention; Figs 32 A, 32B and 32C are schematic representations which together define one embodiment of an antenna feed element which can be used herein; Figs. 33A, 33B and 33C are schematic representations of a connector assembly which can be used herein; Figs 34 A and 34B are schematic representations which together depict the element structure and layout for one embodiment of a two-element array as used herein; Figs. 35A, 35B, 35C, 35D and 35A are schematic representations of mounting and feed elements which can be used herein; Figs 36A, 36B, 37A, 37B, 37C, 38A, 38B, 38C and 38D are schematic representations of various hardware elements which may be used herein; Figs 40A, 40B, 40C, 40D, 40E and 40F are schematic representations of various hardware elements for use herein, in conjunction with Table A; Figs. 41A, 41B, 41C and 41D are schematic representations of various hardware elements for use herein; Fig. 42 is a flow block diagram representing the two-channel RADAR (Pipehawk II) system's internal bus architecture; Fig. 43 is a timing diagram of the multi-channel architecture of the architecture of Fig. 42; Fig. 44 is a pictorial representation of an antenna measurement path generated by the Pipehawk II; Fig. 45 is a copy of a photograph of a two channel experimental rig or platform of the Pipehawk II embodiment; Figs. 46A and 46B are pictorial representations of an antenna measurement path in a dense pipe and open pipe environment generated by Pipehawk II; Figs. 47A and 47B are pictorial representations which show front and side perspective views, respectively, of a hand held dual-channel RADAR system (Pipehawk II) of this invention; Figs 48A, 48B and 48C are detailed views of specific portions of the embodiment of Fig. 47; Fig. 49 is a flow diagram describing some of the DSP processing implemented by the present invention; Fig. 50 is an electrical schematic diagram of sampling circuitry for use with the present invention; Figs. 51A and 5 IB are electrical schematic diagrams, the hardware implementation of which represents a portion of the sampling circuitry for use with the Pipehawk II; Fig. 52 is a copy of a picture of a prototype of the Pipehawk invention which highlights the backplane; Fig. 53 is a copy of a picture of a prototype of the Pipehawk invention which highlights the data port and power connection; Fig. 54 is a copy of a picture of a prototype of the Pipehawk invention which highlights the housing; Fig. 55 is a copy of a picture of a prototype of the Pipehawk invention which highlights the system's heat dissipation ability; Fig. 56 is a copy of a picture of a prototype of the Pipehawk invention which highlights the system's display; Fig. 57 and 58 are copies of pictures of a prototype of the Pipehawk invention which highlights the complete housing; and Figs. 59A and 59B are schematic flow diagrams which together define one embodiment of the super-SAR processing implemented herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The ground-probing RADAR system of present invention may embody various physical forms and/or structures. Several embodiments of ground-probing RADAR systems, designed in accordance with the invention, will be discussed in the following description. It must be noted, however, that while the embodiments disclosed are preferred implementations of the inventive concepts comprising the invention, said embodiments are disclosed for exemplary purposes only and are not meant to limit the scope or spirit of the invention in any way. A system level block diagram of a first embodiment of the invention, hereinafter referred to interchangeably as the RADAR or Pipehawk system 10, is depicted in FIG. 1. Central to the Pipehawk system's unique processing is a master controller 12, preferably an Intel 80486 or like microprocessor device. The master controller 12 is electrically connected to a user interface 14 (to be discussed in greater detail below); a display system 16 including display 18 with softkeys 20 and a softkey controller 22; a positioning system 24 including a position controller 26, position sensor 28, and voltage monitoring means 30; data storage 32, preferably a hard disk, for storing required system data and parameters; and a digital signal processing (DSP) system 34, preferably an AT&T DSP326. The DSP system 34 is electrically connected to an antenna module 36 which includes RADAR signal generation 40, transmission 46 and reception apparatus 50. It is a unique Hough transform, implemented by the Pipehawk system's hardware which enables its RADAR, via its digital signal processing system, to "look" for shapes within a set of data points. The RADAR looks for any existing objects in a scan, by correlating linear features within the raw data and grouping said features together. Once the features are grouped together, a line is drawn through the points by the system's dedicated graphics, i.e., a white line drawn vertically downwards the screen. When such a line is found, it is possible that a pipe exists at the location. An advantage of Hough transform is that it is typically unaffected by point gaps. The Pipehawk system 10 operates on the basic principle that the velocity of a transmitted and received signal is a function of the dielectric constant of the soil in which it travels. That is: v = c/(ε r > 5 , where v is the signal velocity, c is the speed of light and ε r is the dielectric constant of the soil. If the dielectric constant of the soil is known, the velocity of the signal as well as the target depth can be determined. The master controller 12 implements system integration and operation in accordance with a set of instructions, either ROM-resident software or defined by hard-wired logic circuits. In its preferred form, the operation of the master controller is wholly maintained by the system-based software, hereinafter referred to interchangeably as the system software. One preferred embodiment of the set of instructions, i.e., the system software, is attached hereto as Appendix A. Through the system software, the master controller controls user input from the user interface 14 and data transfer to/from the display system 16, that is, the softkey controller which controls softkey-based (20) data display, as well as memory storage and/or transfer of processed data and user-defined system parameters. Control over all subsystems is provided thereby, including the position controller 26 to control any data and/or data flow from the RADAR system's 10 positioning system 24, e.g., a wheel sensor system, and the digital signal processing system 34, which includes not only a digital signal processor (DSP) 88 which controls processing, but system throughput of all DSP data. As mentioned above, the system software is preferably implemented on an Intel 80846 microprocessor. The code defining the system software operation may be written in any programming language known to those skilled in the art which is able to effectively carry out the functions described hereinbelow. The detailed description of the system operation is conveniently described with reference to the following system software explanation. Accordingly, a preferred system operation and system software operation will now be described with reference to Fig. 2. Fig. 2 shows the various graphic displays which can be brought up to the display screen upon sequencing-through the softkeys located at the bottom horizontal of the display 20. Just above the softkeys is located a horizontal portion of the screen which is dedicated to displaying icons associated with the softkey, and the processing initiated by a press of the softkey (see Appendix B). At system start-up (boot-up), the coded instructions of the system software generate and send main menu graphics display data to the display screen. The main menu graphics (i.e., software control) present a user with choices representative of the five different types of data processing available in this embodiment. By pressing the softkey proximate the graphic representation (or icon) of the particular processing type, the coded instructions change the processing type and the dedicated softkeys, and refresh the screen with new graphics representative of that level's available processing (the horizontal marked "MAIN MENU" of Figs. 2A, 2B, 2C and 2D). New icons are put up on the screen to represent the softkey applications. In other words, the same keys now, if pressed, initiate routines for particularized data review. By pressing the third softkey of the MAIN MENU display 100, represented by the "adjustable wrench" icon as shown in Fig. 2, the software control takes the user down through the coded instructions one level to the tools graphical display, identified as block 102 in Fig. 2. If the softkey which is directly in the middle at the main menu level is pressed, representing the "ruler" icon as shown in Fig. 2, the instructions would sequence through to present a survey display graphics, represented by block 116 of Fig. 2. Pressing the softkey key which is third from the right, proximate the "scan" icon, causes a graphics display 120 representing scan or data collection processing. The softkey which is second from the right, proximate a replay icon, will cause a "sites" graphical display associated with the system's data review processing to become active. By pressing the softkey located second from the left, proximate the "pipe wrench" icon, processing becomes enabled which is utilized to calibrate or adjust system operation. As mentioned, pressing the key proximate the Tools icon at the main menu level 100 of Fig. 2 offers the user a number of new choices, in a form of reprogrammed softkeys and their associated icons. A scale graphical display 104 presents the user with a level of softkey options directed to scaling all processed data on the screen for the users convenience. A physical characteristic graphical display 106 allows user access (via softkeys and their associated icons) to such characteristics as battery level, temperatures at different points within the system, sensor status, internal status and fan status. A waveform monitoring graphical display 108 represents that processing which will allow the user to monitor and/or control the shape of the raw or averaged signal waveform. An adjust sampling window graphical display 110 allows a user to choose (through softkeys and associated icons) the size of the system's sampling window to fine tune specific mapping situations. Also, a storage status graphical display allows a user access to memory storage information which could affect processing. As mentioned, pressing the key proximate the survey icon brings up the survey graphical display 116 of Fig. 2. The survey display presents the user with survey and information data options in the form of softkeys, as well access to a second survey menu display 118. Together, these displays enable the system 10 to operate as a surveyor's measurement wheel, measuring in metric or imperial units. As mentioned, pressing the softkey proximate the scan icon brings up a scan display 120 of Fig. 2. The scan display graphics and associated functioning allow the system to be used as a RADAR and to collect data. The scan display 120 requires user input, via the reprogrammed softkeys, regarding status of the site being (or to be) mapped. In particular, scan display 120 allows the user to access a data collection graphical display 124 either indirectly through an enter information graphical display 122, or directly from the scan graphical display. At the collect data graphical display 124, the user is again offered next level options in a form of softkeys whose function is represented by collecting, processing and mapping icons. Pressing each icon's associated softkey brings up collecting data graphical display 126, a map mode graphical display 128 and a process option graphical display 130, respectively. The process options graphical display 130 offers a user a choice of data processing, as well as the access to two more or lower level graphical displays. The first is another process options graphical display 134 and the second is a window start graphical display 132. From the window start graphical display 132 and associated icons, the user may again move to a new system level in a form of a new window finish graphical display 136. As mentioned, pressing the softkey proximate the "sites" icon puts up the sites graphical display 138 of Fig. 2. The graphical display menu asks the operator if he/she wishes to open a new file for a new site survey, or continue adding scan data to the last file. The "list of sites" graphical display allows the user to access stored site information, as well as another level of processing in the form of a display data graphical display 140. Display data graphical display 140 gives the user options about displaying its stored data, as well as the option to move a next level down to either a map mode graphical display 142 or a process options graphical display 144. The process options graphical display 144 offers a user the option of particularized processing as well as two other graphical displays, window start graphical display 146 and process options graphical display 148. Window start allows a user to drop to window finish or exit graphical display 150. As mentioned, by choosing the pipe wrench icon, the graphical display providing a basis for system calibration and associated processing comes up. It is in the confirm exit icon that a user is required to press a softkey to confirm his/her decision to discontinue processing such that system software control ( and therefore system control) is passed to an external controller. Several representations of softkey associated icons, as well as inference of the action which is taken by the system in response to such a keypress is shown in the key charters listed in numerical order in appendix B. It must be noted however, that the prior description represents only one possible scheme for implementing system software control available in accordance with this invention, and should not be used in an attempt to limit its scope. Fig. 3 is a general schematic block diagram which exemplifies the RADAR portion of the Pipehawk system 10, superimposed next to a representation of a section of a pipe buried in the ground. The invention, e.g., the Pipehawk system, operates by introducing a fast risetime electromagnetic pulse signal into the ground, and detecting and processing information contained in the signal returned therefrom. The presence of metal generates a major change in electrical properties, but system 10 is sensitive to other changes such as the presence of plastic, water or air. Scattering of the radiated pulse signal is produced by changes in the ground conditions returns; a small fraction of the radiated electromagnetic pulse signal is received at the antenna module. In Fig. 3, a pulse generator acting as a transmitter 80 feeds an electromagnetic pulse signal to antenna 82 to be radiated into ground 84. The signal portion returned, i.e., the reflected or scattered radiated signal energy, is received by antenna 82 and passed electrically into a sampling receiver 86. In the sampling receiver, the signal is "massaged" and digitized for processing, then passed into DSP 88 of digital signal processing system 34. The processed data generated therein is passed to display 20 of display system 14. While Fig. 3 shows only several basic elements of one embodiment of this invention, an actual Pipehawk system is fully integrated and autonomous. System operation is triggered from a signal generated in a wheel sensor to ensure that measurements are made in a regular and repeatable grid. All input or raw data is automatically stored in memory storage and processed by DSP 88. Digital signal processing system 34 uses a collection of scans implemented by the antenna module 36 to determine if a an object, e.g., buried pipe, is located in a site (as well as its depth). Fig. 8 broadly depicts an object (pipe) detection process of this invention, beginning with a first step, represented by block 200, in which raw data from the ground-reflected signal is collected within in a DSP 88 of DSP system 34, said raw data transferred in from antenna module 36. Block 202 represents a second step by which SAR processing and/or a migration operation is performed on the data within the DSP board. Block 204 represents a step of repeated SAR and or migration procedure performed on raw data. Block 206 represents a step of mapping the processed (migrated) data. Block 208 represents a result, i.e., layers, of repetitive scanning. Block 210 represents a step wherein the DSP board performs a Hough transform on the then-processed data. Finally, block 212 represents a delivery of the processed data in a recognizable form to the user, i.e., put up on display 20 within display system 16. The characteristic hyperbolic response produced by underground objects detected in the reflected signal received at antenna 82 by the Pipehawk system 10 changes with depth, as well as changes of the dielectric constant of the soil with depth. The curvature of the hyperbola-like database are known to decrease with depth, however, said data are also found to decrease, independently of depth, with decreasing dielectric constant. Concomitantly, the shape of the hyperbola changes with depth and with changing dielectric constant. For that matter, the curvature of the hyperbolic representation of the object increases with increasing dielectric constant, as clearly described by Fig. 4. It has been found, however, in testing performed on a prototype Pipehawk system, that any variation in dielectric constant with depth that occurs during measurement is very small and gradual. Accordingly, variations in dielectric constant can be assumed to be zero, or mathematically modeled to be incorporated into the processing to compensate for any changes in dielectric constant that occur. The unique processing which takes advantage of this knowledge to determine the correct dielectric constant is referred to as super-SAR. The digital signal processor system 34 is controlled to perform specific DSP tasks, such as the SAR and/or super-SAR processing described below, on raw data received from the antenna module 36. In particular, the DSP system 34 transforms the hyperbolic point-object data from its raw form to that which can be communicated via the display system 16, i.e., in accordance with the softkey processing. The DSP system 34 performs a number of digital signal processing and filtering techniques, including Hough transformations, which may be referred to herein as synthetic aperture RADAR (SAR) processing in one embodiment, and super-SAR processing in another embodiment. For example, a line in image space of Fig. 5 (hyperbolic data) may be transformed to a point in the parameter or accumulator space after processing (Fig. 6). As shown in the figures, p = xcos v + ycos v, where x, y represent a point on the line, and v varies form 0 to π. The system has a set of expected responses from a buried object for different depths ("buckets") for different dielectric constants which are memory stored. When a scan is taken, the raw data are processed using the expected responses to find the closest dielectric constant matching that of the soil. A first pass is required to process the raw data using a wide range of dielectric constants to determine a narrower range for use in a second pass. In the second pass, using the narrower range, the processing selects the best matching dielectric. Figs. 9A and 9B together simplistically represent of how the synthetic aperture RADAR (SAR) technique correlates a set of point-object generated hyperbolic data with raw data, the method of which was discussed with reference to Fig. 8. The SAR process essentially compares the hyperbolae. The correlation results is a measure of the similarity of the two hyperbolae. This essentially focuses the hyperbolae to a single point at which the target actually lies. Each correlation result is added by the signal processing for each focused point, resulting in a set of peaks with differing values. SAR techniques correlate all the stored hyperbolae with the raw data and adds the results, providing a diffused image of the object. Each correlation result is added for each focused point, resulting in a set of peaks for differing values. The set of points is used to show the data as a set of objects found by the scan (as shown in Fig. 4A. The method generates noise around the targets, however, and therefore provides a badly focused image. The noise is due to the inability to isolate and use the dielectric constant of the soil. The SUPER SAR technique implemented herein improves badly focused images (containing a lot of noise) typical with conventional SAR processing. Isolating and using the dielectric constant of the soil virtually eliminates noise such that target depth is accurately determined. While developing the "new" SAR technique, or SUPER SAR, it was found that any variation in dielectric constant with depth that occurs within a scan is small and gradual such that a single dielectric constant is used throughout the whole process. The SUPER SAR processing consists of the following steps, where ε n is the n ,h dielectric constant for the set of responses: The raw data from the received portion of the radiated signal are first correlated for the dielectric constant, ε^ for a first bucket (bucket 1); second, bucket 1 is extracted and the result is memory-stored; third, the process is repeated for εi for each of seven (7) buckets; and fourth, the migrated image, the result from the extraction of the seven buckets, is memory-stored. The above four steps are then repeated for a wide range of dielectric constants, ε>*. A range of dielectric constants in which the best correlation is achieved is then selected. The complete process is then repeated for a narrower range containing the previous best range. This is essentially a process of converging onto the closest matching dielectric constant within the set of stored dielectric constants. Next, the optimum dielectric constant, ε opt , from that range is selected. The data are then processed for optimal ε opt . (Fig. 4C represents the method). Once all of the super-SAR processing is completed, the scans are sectioned horizontally to produce a map of the detected targets. The scans are split into seven (7) layers, where each layer displays the points located on each span for each target, as shown in Fig. 7. Once all the scans are split into layers, Hough processing may be performed on each layer to identify any set of points in the layer. If such a feature exists, a line is drawn through the set of points, possibly identifying a pipe. In theory, an unmigrated image consists of 512 possible hyperbola. However, the processing implemented herein can accomplish all hyperbola detection using only twenty memory-stored templates. To do so, one of the processing system's unique processing templates is used to generate a layer or "depth bucket" in the final image , as shown in Figs. 10, 11 and 12. Fig. 10 shows the depth bucket, Fig. 11 shows the corresponding hyperbolas and Fig 12 shows the reference. The mean of the hyperbolas used in the template is the mean of the hyperbolas caused by objects in the depth bucket. As can be anticipated from the latter three figures (where dz is 25 points), hyperbola B will correlate well with hyperbolas C and A and can therefore be used to focus targets A, B and C Two dimensional correlation is depicted by the sequence of Figs. 13, 14, 15 and 16. Multiple target detection is depicted by the sequence shown in Figs. 17, 18, 19 and 20. By stacking each layer, an image of the full scan is generated (Fig. 21). If the time record at each acquisition point is 512 samples, then, in principle, the migrated image can comprise 512 layers. If a target has been detected in layer "n", the data can be used to determine the correct dielectric constant of the burying matrix. The process consists of focusing layer n using a range of different dielectric constants, such as that described above. For each resulting layer, the target is located and its amplitude is measured, as depicted in Fig. 22. A plot of normalized amplitude against dielectric constant (ER) reveals the correct dielectric constant (Fig 23). Figs. 24 and 25 represent a preferred method of cluster processing as depicted by the blocks of Fig. 9. A physical implementation of the first preferred embodiment of the ground- probing RADAR system 300 (or Pipehawk), is depicted in Figs. 26, 27, 28 and 29, which show, respectively, a bottom plan view, a side plan view and a top plan view of the invention. The structure of the Pipehawk system of Figs. 26-28 is shown to embody a ruggedly constructed cart 302, a main body 304 of which includes a one-piece rotational housing 306, preferably brightly colored for high visibility in a street environment. The rotational housing 306 houses the system's electronics, an LCD display 308 (preferably transflective) and a control panel 310. Wheels 312, a handle 314 for pushing the Piephawk system and an antenna module 316 are also mounted on the rotational housing. The Pipehawk system is also envisioned to be embodied in a motorized and remote-controlled cart, which can be programmed to cover a specified area without need for human interaction. The antenna module 316 is mounted to the housing 306 by a compliant hinge that allows, within limits, the variations in the inclination of the ground to be accommodated in both axes. This allows the system 300 to cope with various cambers and gradients encountered in the street environment. The housing 306 is mounted on wheels 312 fitted with tires, preferably pneumatic. Correctly inflated tires are counted on to limit magnitude of shock transmitted to the electronics housed within the housing as the system is pushed forward. The interval at which measurements are recorded by a wheel sensor is approximately 50 mm, but may be varied in accordance with varying application according to those skilled in the art. Preferably, the handle 314 is tubular, and is attached to the housing 306 to allow folding during transport. A number of positions are provided, preferably, by a series of castellations in the housing. A back face of the housing may comprise sheet metal. A bottom section of the housing houses a battery, accessible to the user. Above the battery compartment is a vent for exhaust of cooling air. Between the vent and display are two push-button switches for powering the system. Two connectors are provided proximate to the switches to allow power hook-up to charge the battery and download/transmit data. Extensive thermal management is built in to the embodiment of Figs. 26, 27, 28 and 29. A prototype of the system has been tested operating in a range from around 0°C to 40°C. Thermal control is achieved by providing two air circuits as shown in Fig. 29. Within the main electronics module, fans are provided that stir the internal air, but the module is completely sealed. Extensive thermal transfer fins are provided on both the internal and external face of the module in order to transfer heat to external air. An external air circuit is provided that draws in air from above the antennas, passes around the electronics module and back of the display before being exhausted through the back panel. While air flow is temperature controlled, there is no filtering performed on the external air. For optimum operation, the radar's antenna must be in contact with the ground (to minimize reflections). To that end, the antenna module is fitted with a sacrificial wear membrane to prevent the bottom face of its antenna from being worn. The antenna module includes a receiver and transmitter. The sacrificial membrane is replaceable. The transmitter is controlled to operate only when the system is actually being pushed along in the measurement mode (to be discussed in greater detail below). To obtain effective data, the antenna should be resting on the ground so the energy is coupled directly into the subsurface environment as maximum efficiency. The housing is designed such that almost all the power of the radiated pulse signal is coupled directly to the ground, with only a small amount escaping into the surrounding air. The transmitter generates a fast risetime electromagnetic pulse signal with a time constant (τ) of around one nanosecond (1 x 10 "9 second). The peak amplitude of the pulse signal is around 50 V, but less than the signals full energy is radiated. The pulse signal is scattered by changes in the electrical properties of the ground. The scattering produced by changes in ground conditions, returns a small fraction of energy back to the radar. Fig. 30 is a general schematic diagram of the radar part of the embodiment shown in Figs. 26, 27 and 28 with a pulse generator acting as a transmitter, feeding a signal to the antenna to be introduced into the ground. The reflected (returned) signal is received and passed to digital signal processing hardware for massaging into suitable position for display. Any embodiment of this invention may also be fitted with a data connector on any accessible panel, e.g., a back panel, which enables connections to be made either to an external computer, such as that controlling a cad/cam system for outputting accurate diagrams of the mapped underground, or to a printer directly. For example, the Pipehawk is fitted with three separate connectors. The first is a multi-way bayonet type connector, which meets military standards. From the main connector, two short cables extend in a branch, where on terminates with a keyboard connector for service activities and the other terminates with a standard D-type parallel connector for printing applications. In addition, an embodiment is envisioned which includes a separate transmitter and antenna section for transmitting processed display data to a receiver connected to a computer or like device, or a display and operator at a remote location. Fig. 30 is a schematic block diagram showing interconnection of the Pipehawk system 300 functional interconnection. Fig. 30 includes antenna module 340 electrically connected to electronics module 361. Electronics module 362 is also electrically connected to display module 370, rear panel module 390, battery module 398, reset panel 391, cooling fan module 400 and wheel sensor module 400. Figs. 31 A and 3 IB together show the structure of a delay coil (implementable as any of elements 344, 342, 342', 348) for use herein as part of the antenna module 340. The delay coils are used to implement a time delay for use in the transmit/receive pulse signal blanking cycles. Figs 32 A, 32B and 32C show one embodiment of an antenna feed element which can be used herein. Figs. 33A, 33B and 33C depict a connector assembly which can be used herein. Figs 34A and 34B together depict the element structure and layout for one embodiment of a two-element array as used herein. Figs. 35A, 35B, 35C 35D and 35A show mounting and feed elements which can be used herein. Figs 36A, 36B, 37A, 37B, 37C, 38A, 38B, 38C and 38D show various hardware elements which may be used. Figs 40A, 40B, 40C, 40D, 40E, and 40F, and, Figs. 41A, 41B, 41C and 41D show various hardware elements for use herein, in conjunction with Table A. While the Pipehawk system is a single channel ground probing RADAR system which is capable of detecting underground objects, the system must make numerous scans to assure large enough signal to noise ratios for accurate detection decisions. In order to increase productivity, a second preferred embodiment of this invention includes a two-channel RADAR system (referred to interchangeably as "the upgraded system") capable of operating four data channels. Accordingly, a two-channel RADAR system 500 will now be described in accordance with Figs. 42-48. Fig. 42 is a flow block diagram of the two-channel RADAR system's internal bus architecture. The two-channel system 500 solves the problem of the need for taking more measurements for increased performance in a complicated underground environment. Cross-channel information is generated thereby, which is difficult to interpret in isolation, but useful in resolving ambiguities that occur in co-channel information. Co-channel data provides an initial model, subsequently aided by cross-channel data. Accordingly, the two-channel system operates four channels, including two antenna modules, two transmitters and two receivers. Each transmitter is used in turn send out a transmit signal, and both receivers are used to receive the reflected transmit signal; four channels are relayed thereby: Tx 1 Rx 1, Tx 1 Rx 2, Tx 2 Rx 2 and Tx 2 Rx 1, which will be referred to interchangeably as RADAR channels 1, 2, 3 and 4, respectively. The thus-described four RADAR channels essentially comprise the same four system blocks, RADAR A/D 502, digital signal processor (DSP) 504, a microprocessor 506, and a tape unit 508. The RADAR A/Ds are electrically connected to the transmitters/receivers, not shown explicitly in Fig. 42. Each RADAR A/D 502 is also electrically connected in parallel to the DSPs 504 for parallel data transfer therebetween. The DSP data is also transferred in parallel between the microprocessors 506. Each DSP 504 is also connected to a serial time division multiplexed bus for communication with a fifth DSP 504. A fifth microprocessor 506 takes processed data and places it on display 510 for operator access. The measurement geometry that evolved for this work consists of two antennae mounted on a single shaft (not shown in Fig. 42) and rotated to sweep over the areas of interest. A platform, the structure of which may be provided by one skilled in the art to meet application needs, is caused to advance as the antennae rotate the search pattern of the ground, as shown in Fig. 44. Fig. 45 shows a prototype of the two-channel RADAR system 500, i.e., the upgraded system. Figs. 45A and 45B show search patterns for a search performed on the upgraded system mounted within a non-rotarized platform, which required that antennae be alternately rotated and moved forward. As can be seen in Figs. 45A and 45B, by changing the ratio of forward to rotational movement, the density of measurement points may be changed. The platform (or "rig") of Fig. 44 was arranged such that the antennae were set for a radius of 0.8 m and fifty measurement points corresponded to 180° of rotation. Two sets of scans were collected, one corresponding to the forward sweep of the rig and one to the rear sweep, thereby collecting full-circle data. The analysis of data generated when the two-channel RADAR system runs along an object is simple. Applications of the SAR processing technique (in the DSP) with automatic depth calibration leads to a position of an object determined, and further analysis generates an angle of rotation corresponding to the center of the object. From the angle and radius of rotating the offset of the object relative to the center line of the measurement platform can be determined. If this is represented by X f for the front scan and X r for the rear scan, then the average position of the object relative to the rig is determined from the average of the two, and the rate of change of position along the length from the difference. It is these two parameters, the average of the front X f and rear X r scans, and their difference which allows the unique processing function to be performed. The control method is based on a second order differential equation with two parameters differentially connected: position and rate of change of position. Accordingly, the processing allows for the data to be extrapolated such that a "k-space" analysis can be realized, thereby synthesizing many alternative measurement lines through the measurement space. As such, detection margins are increased to provide better spatial resolution in dense-pipe environments. By motorizing the structural rig which carries the system, with, for example, a stepper, the search pattern is placed under correlated software control. In a variation on the Pipehawk system embodiment, a hand-held version of the Pipehawk II system 520 is shown in Fig. 47A and 47B. The system 520 includes a handle grip 522 for user handling and communication and power connection ports 524. The system also includes a fold-away color display 526 and detachable antennae unit 528 which incorporates a motion sensor (not shown in Fig. 47B). The Pipehawk II system 520 is also shown therein to include in housing 523 a concealed operator interface 570 which is accessible with display raised, a standard sampling receiver 532, a standard pulse generator 534 and a standard baluns 536, all shown in Fig. 48A. Figs. 48B and 48C identify location of repackaged electronics, which utilize standard STS formal circuit boards. Fig. 49 is a flow diagram describing some of the DSP processing implemented by the present invention. Fig. 50 is an electrical schematic diagram of sampling circuitry for use herein, with Figs. 51A and 5 IB shows electrical schematic diagrams of the sampling circuitry. Fig. 52 is a copy of a picture of a prototype of the Pipehawk invention which highlights the backplane; Fig. 53 is a copy of a picture which highlights the data port and power connection; Fig. 54 is a copy of a picture which highlights the housing; Fig. 55 is a copy of a picture which highlights the system's heat dissipation ability; Fig. 56 is a copy of a picture which highlights the system's display; Figs. 57 and 58 are copies of pictures of a prototype of the Pipehawk invention which highlights the complete housing. Figs. 59A and 59B are schematic flow diagrams which together define one embodiment of the super-SAR processing implemented herein. The sampling receiver includes sampling and hold and amplifier circuitry for processing within a bandwidth range of 1.8 to 3 gigahertz. The circuitry highlights a GaAs sampling bridge, and fast slope recovery diodes, as disclosed in Figs. 50, 51A and 5 IB. What has been described herein is merely descriptive of the preferred embodiments of this invention. The description is not meant to, and should not be interpreted as, limiting the scope or spirit thereof. APPENDIX A SUPERSAR PROGRAM DESCRIPTION INTRODUCTION The complete SUPERSAR program impemented by DSP system 34 provides the DSP processing for DATA ACQUISITION, DECIMATION FILTERING and the SUPERSAR, processing to reconstruct images from radar data. The program is; split into the above sections, each one of which can be run independently using downloaded data files, or in cascade under PC control. The program when run from reset will first initialize a series of flags, control and data arrays which allow a verification of the SUPERSAR algorithm using impulse data. The initialization is as follows:- (1) MODE, NORM, & TYPE flags are all set to '0' (default SUPERSAR). (2) The INDATA input array (256 rows of 64 INTS) is cleared to '0' with the exeception of the first element which is set to '1' . (3) The 16 TEMPLATE arrays are filled with complex INT (1,0) . (4) The PROFILE array (256 floats) is set to l " .0 as is SCALE. (5) A default BUCKETS array is set up ( 16 Buckets of 16 rows each ) . After initialization the program sets PCFLAG to '0' and awaits the PC program setting tr.is flag to non-zero before proceeding. Completion of processing is always indicated oy the PC flag being cleared to '0' so that data arrays can be transfered and control flags set before further processing is enabled. The first CONTROL FLAG encountered is MODE which has the following options:- MODE = -ve .... Acquire data directly from the RADAR as 60 lines of 512 samples under control of the serial port buffer flag. This mode is exited once all samples are stored or at any time if the COUNT parameter is set to '0' by the PC. Sampled data is stored as INTs m the WORK buffer. (60 sets of 512 INTs) . MODE = -ve .... This option takes data stored m WORK as 60 sets of 512 INTs, applies a decimation filter to each data set and stores tne INT results as COLUMNS m INDATA. As INDATA consists of 64 by 256 INTs tne 1st and last two COLUMNS are set to 0. Decimation filter taps (15 floats, centre+-7) are stored m DΞCI . Note that previous data files in the old (60 x 512) can be loaded into WORK and processeα. Resulting INDATA arrays can be saved to file. MODE = '0' .... Data sets stored in INDATA ( 256 rows of 64 samples) are processed by tne SUPERSAR algorithm. Firstly samples from INDATA are converted to complex float ( Dn.0.0 ) and stored in WORK. A control flag, NORM determines data normalization . - NORM = +ve ... The mean of data across ROWs is calculated and this mean subtracted from each row. Each row is also multiplied by a factor from the PROFILE array. NORM = -ve ... A global mean is calculated for the entire array. This is subtracted from all elements, each row being multiplied by PROFILE as above. NORM = '0' ... No normalization is performed. After normalisation is complete a 2D FFT is performed on the complex data in WORK starting with 64 κ 256 point Column FFTs followed by 128 x 64 point Row FFTs. Only the 1st 128 rows are transformed to make use of the symmetry. Complex results are stored in TDATA and the TYPE flag checked • - TYPE « ->ve ... The TDATA array is multiplied by SCALE, converted to complex INT and stored in IMAGE. The program then returns to checking the PCFLAG. This allows TEMPLATES to be generated from INDATA files. TYPE = '0' The SUPERSAR algorithm proceeds as follows • - ( 1 ) . Tn e X S t l iPlfLH J L LαU. e S mul i.-ti. - cu j — •• — — r _, - ;, . of TDATA and the product is stored in the upper half cf WORK. The lower half of WORK is cleared to complex (0.0, 0.0) . (2) . Inplace 64 x 256 point Column IFFTs are performed including the scaling by 1/256 required. (3) . The 1st element of the BUCKET array is examined, if it is a +ve address then a 64 point IFFT is performed on the Row in WORK starting at that address. The Magnitude Square cf the results is calculated and stored in the 1st Row of the FIMAGE array. The two halfs of the array are swapped in the transfer. Tne 2nd element of BUCKETS is now examined. If +ve address then repeat (3) filling the next Row in FIMAGE. IF a ZERO is encountered in BUCKET then steps (1), (2) ά (3) are performed using the next TEMPLATE table. IF a -ve value is encountered in BUCKETS then this indicates that all Rows have been processed and step (4) is commenced. (4) . FIMAGE now consists of 256 rows of 64 MAG~2 data. This is filtered Column by Column to remove high frequency components introduced by the BUCKET boundaries. Filtered data is multiplied by SCALE, converted to INT and stored as Columns n IMAGE. The filter taps (15 centre+-7) are stored in COEF. (5) . The program returns to set PCFLAG = 0 and await furtner PC Commands and array transfers. The SUPERSAR algorithm is intended to be controlled by the PC using the various control FLAGS, and downloading data arrays as appropriate before enabling execution by setting PCFAG = non-zero. PCFLAG - non-zero if read indicates that the DSP is busy, this allows efficient handsnakmg between PC and DS? programs. Timed polling of this flag by the PC at say 0.1 second intervals is advised to avoid wasting DSP time with nest port accesses. Tne complete SUPERSAR snould take less than 1 second cr. the preferred DSP board running at 64 MHz. The PC referred to being is the master controller 12 fidefine COEF 0X000F40 15 Filter Coefs (centre +- " ) * / ndef e DECI OxOOOFBO 15 Decimate Coefs (centre +-7) Sdefms INDATA 0x080000 /* INPUT DATA 64*256 = 16K INTs */ Sdefine IMAGE 0x088000 / ♦ OUT IMAGE 64*256 = 16K INTs */ Sdefme TDATA OxOAOOOO /* FFTed DATA 64x128= 4K cplx fits */ Sdefme FIMAGE 0X0B0000 /* FLOAT IMAGE 64x256= BK floats */ Sdefine WORK OxOCOOOO /* WORK ARRAY 64x256= SK cplx fits */ #define PROFILE 0x090000 /* FLOAT COL PROFILE 256 floats 7 Sdef e AVERAGE 0x090800 /* FLOAT ROW AVERAGES 256 floats 7 ndefine BUCKETS 0x091000 /* SUPERSAR CONTROL up to 272 INT24 7 #define FFTIO OxFFFβOO / ♦ IN PLACE FFT 256 CMPLX floats 7 Sdefme TEMPLATE 0x880000 /* TEMPLATES 16 SK COMPLEX INTs • / /* (1) INITIALISE BOARD V /* Configures Wait states, sets up IVTP, ύ initializes constants .=0x000000 /* Reset vector RAM 2 */ START. rl = 0x0005 / • EXT A = 0 ws. EXT B = 2 ws • / pew = rl / ♦ set up ws.. No interrupts 7 r22e = IVTP /* Interrupt Vector Table Ptr * / /♦ set default = bypass norm. */ /* TYPE = Supersεr */ /* MODE = Supersar */ INDATA, PROFILE, BUCKETS & COΞF) ♦ / /* Start of TEMPLATES ♦ / /* r2 = 0x000001 INT(l.O) */ /* count. No. Tmplts=16 (-2) */ /* count. 64x128 cnplx ints(-2)*/ /* clear TEMPLATE to INT(1,0) */ /* write INT{1,0) to array */ /* on to next TEMPLATE */ /* count. 64x128 cnplx ints(-2)*/ rle = INDATA /* Start of INput DATA */ ♦ rl++ = r2e /* set 1st value = 1,0 */ r7 = 8189 / ♦ count = 8191 (-2) pair INTs */ r2e = 0x000000 /* r2 = 0x000000 INT(0,0) */ LPY2: if(r7-- >=0) goto LPY2 /* loop for next INT pair */ *rl+-> = r2e /* set pairs INTs = 0,0 */ rle = PROFILE /* start of PROFILE array */ r2e = ONE / ♦ location of float 1.0 */ do 0,255 /* repeat next INST 256 X */ ♦ rl++ = aO = *r2 /* fill PROFILE with 1.0 */ r3e = SCALE /* address of SCALE factor */ *r3 = aO = *r2 /* set default SCALE = 1.0 */ rle = BUCKETS /* start of BUCKETS array */ r2e = WORK / ♦ start of WORK array */ r3e = 0x000000 /* INT24 zero εs separator */ r7 = 14 /* count TEMPLATES = 16 (-2) */ TEMP: do 1,15 /* repeat next 2 INST 16 X */ *rl++ = r2e /* save ROW start address */ r2e = r2 - 512 /* on to next ROW 64x2x4 */ if(r7-- >=0) goto TEMP /* next TEMPLATE tables ROWs ♦ / *rl++ = r3e /* insert 0x000000 separator */ r3e = OxFFOOOO /* -ve INT24 Number */ • rl-- = r3e /* End of TEMPLATES (-ve) */ ♦ rl-- = r3e /* overwrite last 0 with -ve */ r3 = 0 goto POLL / ♦ branch to PCFLAG POLLING 7 'PCFLAG = r3 /* set PCFLAG=0 DSP ready 7 /* FLOATING POINT CONSTANTS 7 ZERO: float 0.0 /* constant ZERO = 0.0 7 ONE: float 1.0 / ♦ constant ONE = 1.0 7 INV64: float 0.015625000 /* constant INV64 = 1/64 7 INV256: float 0.003906250 / ♦ constant INV256 = 1/256 7 / * TEMPLATE, INDATA,PROFILE, PCFLAG,NORM S- TYPE all initialized 7 /* Interru t Vector Table follows . SIO used for data capture. 7 / ♦ External int 1 7 PIO buffer full 7 PIO buffer empty 7 I* SIO input buffer full •I / « SIO output buffer empty 'I I* External int 2 ' I (2) START OF MAIN CODE /* program starts here nop nop /* allow PCFLAG to be written */ rl = 'PCFLAG / ♦ read PCFLAG noD / • wait for CAU flags set */ if " ( eq ) goto POLL / ♦ if PCFLAG = 0 then wait */ nop /* else continue */ rl = *MODE /* fetch MODE flag */ nop /* wait for CAU flags set ♦ / if ( eq ) goto SPSAR /* goto SUPERSAR if MODE*- 0 • / noo if * ( gt ) goto DECIM / ♦ goto DECIMATE if +ve */ nop / ♦ else ACQUIRE DATA ♦ / */ ACQUIRE DATA FROM SERIAL PORT AND PLACE IN WORK ARRAY ♦ / ioc = 0x030880 / ♦ 16 bit MSB 1st, EXT ick.ild */ rl = 60 / ♦ No- of data sets to acquire */ r2 = 510 /* Samoles/data set (-2) */ ♦ COUNT = rl /* COUNT = DATA SETS */ r20e = WORK /* DATA pointer = WORK */ r7 = r2 /* set sample counter/line */ r3 = ibuf /* read ibuf to clear f flag */ WAIT: r4 = *COUNT / ♦ read current count • / nop /* wait for CAU flags set */ if ( le ) goto DONE /* COUNT--0. Finished sampling */ nop if ( ibe ) goto WAIT / ♦ WAIT if input buff empty nop ♦ r20++ = ibuf /* save data sample if(r7-- -.=0) goto WAIT /* back for next sample 7 nop r4 = r4 - 1 / ♦ Decrement count (next line) */ ♦ COUNT = r /* save COUNT */ r7 = r2 /* restore samples/line */ goto WAIT / ♦ next sample ♦ / nop DO rle = WORK / ♦ COUNT = 0, rl points WORK r3 = 0 / ♦ r3 = INT 0 rlS = 1024 /* step = 512 INTs do 0,59 /* repeat next INST 60 X ♦ rl++rl5 = r3 / ♦ 1st sample of LINES = 0 / ♦ set to INT(O.O) ie 2 Cols 7 /* 1st 2 Columns of INDATA 7 124 / ♦ Last 2 Columns of INDATA 7 / • repeat next 2 INST 256 X 7 /* clear 1st 2 Columns to 0 7 / • clear Last 2 Columns to 0 7 rl6e = 128 /* step down INDATA column */ r6e = WORK /* data source = WORK ♦ / r5e = INDATA + /* destination = INDATA(Col 3) */ r7 = 58 /* Number of columns = 60 (-2) */ LINE: rle = (FIMAC-Ξ ■ 28) /* Destination of Column ♦ / do 0,511 /* repeat next INST 512 X ♦ / T1++ = aO = float (*r6++) /* Copy & Float WORK to FIMAGE ♦ / r8 = 254 / ♦ data per COL = 256 (-2) ♦ / rle = FIMAGE / ♦ COL data to be filtered */ r2e = r5 / ♦ start of IMAGE COL */ DMT r3e = DECI /* start of DECI TAPS */ aO = L rl++ 'r3++ /* start DATA(O) * TAP(O) */ do 0,13 /* repeat next INST 14 X */ aO = aO + *rl++ * *r3++ /* next 14 taps DATA(n)*TAP(n ) */ * r2++rl6 = aO = int( aO ) /* convert to INT £• save I MAG 7? 7 if (rβ- >=0) goto DMTE /* filter next value 7 ne = rl - 52 /* back by 13 floats ( step 2 7 if (r7-- >=0) goto LIN* /* process next LINE from WORK ♦ / r5e = r5 + 2 /* r5 = start next IMAGE COL » / rl = 0 ooto POLL /* back to Dolling 'PCFLAG = rl /* DECIMATION DONE / (3) NORMALIZE DATA */ / Re. ds from INDATA, converts to CMPLX floats stores in TDATA */ / if NORM = 0 .. No NORMALIZATION is Derfor ed */ / if NORM = 1 .. ROW NORM Do = " (D - ROW MEAN) * PROFILE */ / if NORM =-1 .. GLOBAL NORM Do = (D - GLOBAL MEAN) * PROFILE */ / */ SPSAR: rle INDATA /* source data 64*256 INTS */ r2e WORK /* destination " CMPLXFLTS */ r3e ZERO /* point to float 0.0 */ r4e AVERAGE /* ROW averages stored here */ r5e INV64 /* location of float 1/64 •/ r7 254 /* ROW counter = 256 (-2) */ aO T3 /* set aO = 0.0 */ iVER: a3 ► r3 /* set a3 = SUM = 0.0 */ do 5,31 L L / ♦ repeat next 6 INST 32 X */ ♦ r2+f al float ( *rl■*••>- ) /* float input data > WORK ( R ) ♦ / T2++ aO aO /* write 0.0 > WORK (I) */ ♦ r2++ a2 float ( *rl++ ) /* float input data > WORK(R) */ ♦ r2++ aO aO /* write 0.0 > WORK (I) */ a3 a3 + al /* sum values (n) */ a3 a3 + a2 / ♦ sum values (n+l) *>•♦* » - •♦♦♦ '*/ if (r7-- -»0) goto AVER /* loop test & branch next ROW */ k r4++ a3 = a3 * *r5 /* divide by 64 save average / ♦ fetch NORM ( 0, l, or -1) */ /* wait for CAU flags set */ / ♦ if NORM=0 then bypass NORM. ♦ / /* ROW by ROW average else. * / / ♦ GLOBAL MEAN -*' / ♦ loacation of float 1/256 * / /* ROW averages array */ /* aO = 1st mean value * / /* repeat next INST 255 X */ /* sum up calculated means * / / ♦ save SUM at end of AVERAGE • / /* restore AVERAGE pointer */ a O = aO ' * rS /* CaiCUldLK new mean Λ ΛJU do 0 , 255 /* repeat next INST 256 X 7 T4 + + = aO aO /* overwrite AVERAGE array 7 jiNOR : rle = WORK /* source CMPLX WORK array 7 r2e = WORK /* destination 7 rl5 = 8 /* step = 2 floats (IMAG=0.0) 7 r3e = PROFILE /* start of PROFILE array 7 r4e = AVERAGE start of AVERAGE array '/ r7 = 254 /* loop count = 256 (-2) 7 al = *r3 /* al = PROFILE (n) 7 LPY3: aO = *r4++ * r3++ ROW (AVERAGE X PROFILE) */ do 0, 63 /* repeat INST 64 X */ *r2++r15 = a2 = -aO ♦ *rl++rl5 al /* PROFILE* (VAL-MEAN) ♦ / if (r7 - >-0) goto LPY3 / loop on to next row */ al = ♦ r3 / al = PROFILE (n+1) */ (4) PERFORM 2D FFT data in WORK, 256 COL FFTs then 128 ROW FFTs (symmetry!) */ is tranfered to FFTIO as part of FFT bit reverse ♦ / form Results returned from FFTIO after FFT to TDATA */ • */ r7 = 62 /+ loop count = 64 (-2) COLS */ r8 = 126 /* loop count = 128 (-2) ROWS */ REGA = r7 /* save loop count (COLs) */ REC-3 = rB /* save loop count (ROWs) */ rle = WORK /* start of WORK array */ SRC1 = rle /* save as origin for FFT */ TRANSFORM 64 COLUMNS - ♦ / COLI call ffta( rl4 ) /* call FFT routine */ nop int 256, 8 / ♦ 256 point CMPLX FFT */ int +1,508 /* FFT, step 64 CMPLX FLTs-4 */ SRC1; int24 0x000000 /* source array •» WORK */ int24 FFTIO /* FFT working array = FFTIO */ r2e = *SRC1 /* fetch source pointer ♦ / r = *REGA /* fetch count ♦ / r3e a r2 • 8 / ♦ on to next COLumn */ ► SRC1 = r3e /* write back source pointer */ r4e = FFTIO /* results from FFT */ rl5 = 508 /* step * 64 CMPLX FLTS */ do 1,255 /* repeat next 2 INST 256 X */ » r2++ = aO T4++ /* return Real component */ 'r2++rl5 = al •r4++ /* return I ag component ♦ / if(r7-- * >--0) goto COLI /* loop on to next COL 'REGA = r7 /* save count TRANSFORM 128 ROWS ♦ / r5e = TDATA /* Destination is TDATA */ rle = WORK /* start of WORK array */ ♦ SRC2 = rle /* set up SOURCE for F* _ ♦ / ROWi: ♦ REGC = r5e /* save in REGC before Fn */ call _ffta( rl4 ) /* call FFT routine */ nop int 64, 6 /* 64 point CMPLX FFT int +1. 4 /* FFT, step = 1 CMPLX FL " - * - • / SRC2: int24 0x000000 /* source array = WORK • / int24 FFTIO / ♦ FFT working array = FFTIO • / r2e 'SRC2 /* fetch source pointer r8 •REG3 /* fetch count /* write back source pointe. /* results from FFT 7 /* fetch destination ADDR 7 /* repeat next 2 INST 64 X 7 /* return Real component 7 /* return Imag component 7 7 /* loop on to next ROW /* save count / * 2D FFT COMPLETE - RESULT STAYS IN TDATA " ♦/ / * __INT ( SCALE χ TO ATA ) to IMAGE if TYPE not zero (GENERATE TEMPLATE ) * / . * / /* read TYPE ( 0 = supersar) ♦ / /* on to SUPERSAR if TY?E=0 */ /* else GENERATE TEMPLATE */ /* address of Scale factor */ / ♦ fetch float SCALE */ / ♦ source = TDATA /* destination = IMAGE V ♦ / /* count = 128 rows (-2) * / LPY4: /* repeat next 2 INST 64 X ♦ / /* SCALE real component ♦ / /* SCALE imag componen t */ /* INT save real ♦ / /* INT & save imag */ /* loop until all rows done ♦ / rl = 0 goto POLL / ♦ PCFLAG cleared.. JOB DONE ♦ / 'PCFLAG = rl /* back to await PC flag se t ♦ / / * TEMPLATE in IMAGE array ♦ / /* PERFORM SUPERSAR (5,6 & - ♦ / /* selected rows of IFFTπτHSSf. ? TEKPL ATΞS ( selected rows) */ /* MAG *" 2 of results [ ( T E MPLATE ) n x CMPLX CO J(TDATA)] ♦ / /* - - placed in FIMAGE {64 * 256) */ SAR: rle = TEMPLATE ■ ♦ / ♦ REGA = rle / * Start of TEMPLATE array ♦ / r2e = BUCKETS Save in REGA ♦ / ♦ REG3 = r2e /* Start of 3UCKETS array ♦ / r3e = FIMAGE /* Save in REGB ♦ / ♦ REGC = r3e / ♦ Index to FIMAGE destination • / /* Save in REGC * / / -- ( 5 ) multiply float ( TLOOP: rle = *REGA template ) by cmplx conj TDATA ♦ / r2e = TDATA / fetch current TEMPLATE index*/ r3e = WORK /* transformed data (R,I) */ r4e = WORK + / ♦ working array 0x10000 */ r5e = ZERO 2nd half working array ♦ / r7 = 126 / • pointer to float 0.0 */ LPY5: do 7,63 /* ROW count = 128 (-2) ♦ / aO = floa ( /* ♦ rl++ repeat next 8 INST 64 : */ /* al = floa ( *rl++ float Real (TEMPLATE) */ ♦ r4++ = a2 = / ♦ *r5 float Imag (TEMPLATE) • / *r4++ =- a2 /* a2 Lower work(R) = 0.0 */ / ♦ a2 aO Lower wor (I) = 0.0 T2* */ T(R) ♦ D(R) ♦ r3++ = a2 /* a2 al ■ T2-- */ / ♦ a3 al T ( R ) * D(R) * τ(I) *r2* D(I) 7 *r3++ = a3 /* a3 TU ) * D(R) aO ■ • r2+f /* TU) * D(R) - T(R) . uu) 7 7 if (r7-- >=0) goto LPY5 /* loop for next ROW 'REGA = rle /* save current TEMPLATE index ■- (6 Column) INVERSE TRANSFORM 64 COLUMNS > WORK r7 = 62 / ♦ COL count = 64 (-2) ♦REGD = r7 /* save COL count rle = WORK /* Start of WORK array ♦SRC3 = rle /* save εa origin for IFFT C0L2: call _ffta( rl4 ) /* call FFT routine nop int 256, 8 / ♦ 256 point CMPLX FFT 7 int -1,508 /* IFFT, step 64 CMPLX FLTS-4 7 SRC3; int24 0x000000 /* source array = WORK 7 int24 FFTIO /* FFT working array = FFTIO 7 r2e = •SRC3 /* fetch source pointer 7 r7 = ♦ REGD /* fetch count 7 r3e = r2 + 8 /♦ on to next COLumn 7 'SRC3 = r3e /* write back source pointer 7 r4e = FFTIO /* results from FFT '/ r5e = INV256 /♦ pointer to float 1/256 ♦ / a3 = » r5 /* a3 = 1/256 • / rl5 = 508 /* step 64 CMPLX FLTS-4 */ do 1,255 / ♦ repeat next 2 INST 256 X */ ► r2++ aO •r4++ a3 /* return Real component/256 */ *r2+-*rl5 al T4++ a3 /* return Imag componen /256 • / if (r7-- >=0) goto COL2 /* loop on to next COL */ ♦ REGD = r7 /* save count */ / - (6 & 7) IFFT on selected ROWS MAG 2 Unwrapped to FIMAGE ♦ / BKT: r2e = ♦ REG3 /* fetch pointer to BUCKETS ♦ / nop rle = ♦ r2++ / ♦ fetch ADDR from 3UCKΞTS ♦ / nop /* wait for CAU flags set ♦ / if ( eα ) goto TLOOP /* on to next TEMPLATE if = 0 */ ♦ REGB = r2e /* Save inc pointer to BUCKETS */ if ( mi ) goto FILT / ♦ To FILTERING image if -ve */ ♦ SRC4 = rle / ♦ Set up source for IFFT */ call _ffta( rl4 ) /* call IFFT routine nop int 64, 6 /* 64 point CMPLX FFT * / int -1, 4 / ♦ IFFT, step « 4 * / SRC4: int24 0x000000 /* source = ROW from WORK ♦ / int24 FFTIO / ♦ FFT working array = FFTIO ♦ / r2e = ♦ REGC ♦ / r4e = FFTIO ♦ / r5e = r4 + 256 ♦ / r6e = r4 */ do 1,31 * / aO = *r5++ * +r5 */ ♦ r2++ = aO •« aO ♦ ♦ r5++ * ♦ * / do 1,31 * / aO = ♦ r6++ * *r6 * / *r2++ = aO = aO + *r6++ * * * / goto BKT /* on to next row address * / *REGC = r2e /* save pointer to FIMAGE • / 256 ROW I FFTs under control of 3UCKETS . . MAG * 2 in FIMAGE -NOW FILTER FIMAGE & STORE AS CA L -tu I I .- r3e = ZERO /* address of float 0.0 ♦ / r2e = FFTIO / ♦ start of array in RAM 1 ♦ / do 0,6 / ♦ repeat next INST 7 X */ ♦ r2++ = aO = *r3 /* fill 1st 7 values with 0.0 ♦ / nop r2e = r2 + 1024 / ♦ skip over 256 floats */ do 0,6 /* repeat next INST 7 X */ *r2++ = aO = *r3 /* fill last 7 values with 0.0 */ rl5e = 256 step down FIMAGE column 7 rl6e = 128 / ♦ step down IMA.GE column 7 rle = SCALE / ♦ address of float(SCALE) 7 a3 = ♦ rl /* a3 = float ( SCALE ) 7 r6e -- FIMAGE / ♦ data source = FIMAGE 7 r5e = IMAGE / ♦ final destination = IMAGE 7 r7 = 62 / ♦ Number of columns = 64 (-2) 7 COL3: rle = (FFTIO + 28) /* Destination of Column 7 r2e = r6 /* start of FIMAGE COL 7 do 0,255 / ♦ repeat next INST 256 X 7 *rl*-> = aO = *r2++rl5 a3 / ♦ Copy scale COL to FFTIO 7 r8 = 254 / ♦ data per COL = 256 (-2) */ rle = FFTIO / ♦ COL data to be filtered ♦ / r6e - r6 + 4 /* r6 = start next FIMAGE COL */ r2e s r5 / ♦ start of IMAGE COL * / ROW3 : r3e - COEF /* start of Filter TAPS */ aO = *rl++ * *r3++ /* start DATA(O) * TAP(0) * / do 0,13 / ♦ repeat next INST 14 X * / aO = aO + *rl++ * *r3+-t- / ♦ next 14 taps DATA(n) *TA? (n) * / ♦ r2*>*>rl6 = aO = int ( aO ) /* convert to INT & save IMAGE */ if(r8-- >=0) goto ROW3 /* filter next value * / rle = rl - 56 / ♦ back by 14 floats * / if(r7-- >=0) goto COL3 /* process next Column r5e = r5 + 2 / ♦ r5 = start next IMAGE COL FILTERED IMAGE in IMAGE array .256 ROWS of 64 INTS BREAK: rl -• 0 / ♦ set rl = 0 goto POLL /* go s- wait for PCFLAG set ♦ PCFLAG = rl /* • Clear PCFLAG to 0 oit reversal as data is fetched from source */ r8 = rlO - 1 /* N - l do loop counter */ r4 = rl - r6 / ♦ r4 initially set to 0 */ do 3,r8 /* repeat next 4 INST N X */ ♦rl++ = aO = *r2++ /* copy Real data value ♦ / ♦rl-- = al = *r2++rl5 * a3 /* copy Imag data value (x -1.0) */ r4 = r4 # rl6 /* bit reverse increment */ rle = r4 + r6 /* add base address */ / * Begin FFT calculation */ rl6e = rl6 ♦ 2 /* 8N */ rl6e = rl6 ' - 8 /* 8N - 8 */ /* Stage 1 and 2 use N/4 radix-4 butterflies */ rle = *rl4 /* address of _fftIO */ rlO = rlO/2 /* N/2 */ rlO = rlO/2 /* N/4 */ r2e = rl + 8 / ♦ data item B */ r3e = rl + 16 /* data item C */ r4e = rl + 24 /* data item D */ er for new A (A') */ increment for next group of four */ loop counter for radix-4 */ / ♦ ReA + Re3 */ /* ReC + eD ♦ / /* ImA + Im3 */ /* I C + ImD */ 'r5++= aO = aO 1- al /* ReA' = ReA+Re3+ReC+ReD */ aO = *rl++ - *r2++ /* ReA - ReB */ ■r7++= al = -al + aO /* ReC = - (ReC+ReD) + (ReA+ReB) */ 'r5++rl5= a2 = a2 + a3 /* ImA' = ImA+Im3+ImC+ImD */ a2 = *r3++ - *r4++ /* ReC - ReD ♦ / •r7++rl5= a3 = -a3 + a2 / ♦ ImC = - (ImC+ImD) + (ImA+ImB) */ a3 = *rl++rl5 - *r2+->-rl5 / ♦ ImA - ImB ♦ / al = *r3++rl5 - *r4++rl5 /* ImC - ImD */ *r6++= aO = al + aO /* ReB' = (ImC-ImD) -v (ReA-ReB) */ ♦ r8++« al = -al aO /* ReD' -- - UmC-ImD) + (ReA-ReB) */ *r6++rl5 - a3 =- -a2 + a3 /* ImS' = - (ReC-ReD) + (ImA-ImB) */ *r8*>+rl5 » a2 = a2 + a3 /* ImD' = (ReC-ReD) + (ImA-ImB) */ / ♦ Stage 3 to M-l M - 5 */ points to 2 . 0 * / points to 1 . 0 ♦ / .f fta30 : rl0e = rlO/2 r9e = r9*2 rlSe = r9*2 rlSe = rlS -4 AO /* _fftIO */ /* initialize twiddle factors */ /* Ur = a2 */ /* Ui = a3 */ /* loop count */ do 3 < r5 /* Butterfly # l - / *rll ++ =aO=*rl + *r3 ++ / * RE1 + RΞ2 •/ *rl2++=a0=-a0 + *rl++ * *r6 / * REI - RΞ2 * / *rll++rl5=a0=*rl + *r3++rl5 /♦ IMI + IM 2 */ *rl2++rl5=a0= -aO + ♦ rl++rl5 * *r6 / * I MI - I M 2 */ ♦ rll++=a0=*rl + *r3++ / * REI + RΞ2 * / *rl2++=a0=-a0 + *rl++ * *r6 /♦ REI - RΞ2 */ ♦ rll+*rl7=a0=*rl + *r3++rl7 /» IMI + : M 2 ♦/ ♦ rl2++rl7=a0= -aO + » rl++rl7 * »r6 / * I MI - IM2 */ _ffta20:do 5, r5 /-. Butterfly S 2 - •/ aO = » rl++ + a2 ♦ *r3++ /* aO=_ff lθ(i) r+Ur*_fftlθ(k)r */ • rll ++ =aO=aO- *r3-- * a3 /* _fftlθ(i) r=aO=aO-Ui*_ff lθ(k)i ♦/ al = *rl-- + a3 • *r3++ /* al=_fftlθ(i) i+Ui*_ ftlθ(k)r */ ♦ rl2*+=a0=-a0+ *rlτ+ * *r6 /* _fftlO(k) r=-a0 + 2*_fftIO(i)r */ ♦ rll++rl5=al=al+ *r3++rl5 * a2 /* _fftlθ(i) i=a l =a l+ Ur*_ ftlθ(k) i */ * rl2++rl5=al=-al+ *rl÷+rl5 * *r6 /* _fftlO(k) i=-al+2*_fftlθ(i)i */ aO = *rl++ + a2 * *r3++ /* aO=_fftIO(i) r+Ur*_ff lθ(k)r */ ♦ rll + +=aO=aO- *r3-- * a3 /* _fftlO(i) r=aO=aO-Ui*_ ftlθ(k)i */ a l = *rl-- + a3 * *r3++ /* al=_fftlO(i) i+Ui*_ff lθ(k)r */ * rl2 ++ =a0=-a0+ *rl**+ * *r6 /* _fftlO(k)r=-a0+2*_fftlθ(i)r •/ ll+*rl7=ai=al+ *r3+-rl7 * a2 /* _ff lθ(i) i=a l =a l +Ur*_ ftlθ(k) i */ rl2++rl7=al=-al+ *rl-*- * -rl7 * *r6 /* _fftIO(k) i=-a l +2*_fftlθ(i)i */ aO = a2 * *r4++ / ♦ ComDute new twiddle */ a2 = aO - a3 * *r4 /* U = U * fftaW •/ aO = a2 * *r4-- a3 = aO + a3 * *r4 if ( rl8 -- >= 0) ocgoto _ffta20 r2e = r2 + 8 if ( r7- - >= 0) pcgoto _f f ta30 r4e = r4 + 8 / ♦ Stage M r9 = r9*2 rle = *rl4 /* _f ftIO * / a2 = *rl3++ a2 1 . 0 a3 = *rl3- - a3 0 . 0 rlle = rl r3e = rl + r9 rl2e = r3 rl8 = r8 - 1 do 10 , rl8 aO * rl -> + + a2 T3 < / * a0=_f f tIO ( i ) r+Ur* f f tIO (k) r • / Al goto rl4+4 /* Return to main program nop /* Constant table - _fftatwo*. float 2.0, 1.0, 0.0 /* Twiddle table 7 fftaW*. float 0.7071068, -0 .7071068 /* cos(pi/4) , -sin(pi/4) 7 float 0.9238795, -0 .3826834 /* cos (pi/8) , -sin(pi/8) 7 float 0.9807853, -0 .1950903 /•cos (pi/16) , -sin(pi/l6) 7 float 0.9951847, -0 .0980171 /*cos (pi/32) , -sin(pi/32) 7 float 0.9987955, -4 .9067674e-2 /* cos and -sm(pi/64) 7 float 0.9996988, -2 .4541228e-2 /* cos and -sin(pi/128) 7 float 0.9999247, -1 .2271538e-2 /* cos and -sin(pi/256) 7 float 0.9999812, -6 .1358846e-3 /* cos and -sin(pi/512) 7 ■END OF FFTA CODE- ■ 7 .=0x000F40 /* Filter Coef Taos 15 (centre+-7) */ float 0.0000000, 0.0000000, 0.0000000, " 0.0000000, 0.0000000 float 0.0000000, 0.0000000, 1.0000000, 0.0000000, 0.0000000 float 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000 .=0x000F80 /* Filter Deci Taps 15 (centre+-7) */ float -0.0053181, 0.0000000, 0.0262974, " 0.0000000, -0.0795587 float 0.0000000, 0.3086385, 0.4998811, 0.3086385, 0.0000000 float -0.0795587, 0.0000000, 0.0262974, 0.0000000, -0.0053181 / • I* MON 32C .. Simple non intrusive monitor for all preferred DSP I* based boards. The monitor program is a useful example of how to /- used the QW32CLIB.obj interface library. C QUANTAWAVΞ AUG 1995 I * ^include <stdio.h> Sinclude <conio.h> Sinclude <qw32clib.h> /* header file for interface library */ /* FUNCTION PROTOTYPES void main(void) ; /* main */ void menu(void) ; /* sets up menu on screen */ void loadpgm(void) ; /* download a program file */ void fillmem(void) ; /* fill memory with data pattern */ void du pmem(void) ; /* display area of memory */ void prntmetn( ulong adr, short typ) ; /* prints value (address, type) */ short gettypl short typ ) ; /* return type of data (type) */ ulong getaddr( ulong adr, short typ) ; /* return address (address, type) */ /* GLOBAL VARIABLES ushort BADDR = 0x290; /* default base address = 0x290 */ short EXIT = 1, err,key; /* menu control */ char rply [ 40 ] ; ulong filladr=0xl000, αumpadr=0xl000 / ♦ default addresses ♦ / short filltyp= 'L' dumptyp= 'L' /* default data types */ ulong peekadr=0xl000, pokeadr=0xl000 /* default addresses */ short peektyp= ' ' poketyp= 'L' /* default data types */ char filename! 40 ) /* default program file name */ short sval ulong lval float fval void main(void) { WarmSelectt BADDR ) ; /* select default address */ /* main loop */ /* flush keyboard buffer */ /* display menu ♦ / /* wait for keyboard entry */ /* read character */ /* switch on main menu */ break; /* exit from monitor \t BOARD ADDRESS (HEX) .... Ox") ; scanf ("Vx" , &BADDR) ,- err = WarmSelect( BADDR ) ; if(err==0) printf ("\n\t*** Invalid Address ***") ; EXIT = 1; break; case case i' printf ("\n\t INITIALIZE BOARD at OxVX", BADDR) ; err = SelectBoard( BADDR ) ; if(err==0) printf ("\n\t*** Invalid Address ** ♦ ") ; if(err==l) printf ("\n\t*** Failed to Init. » **") ; EXIT = 1; break; printf ("\n\t PROGRAM RUNNING from Reset") ; Reset () ; EXIT • - 1; break; printf ("\n\t DSP HALTED " ) • EXIT = 1; break; loadpgmO ; EXIT = 1; break; fillmemO ; EXIT = 1; break; Λ3 case 'd' dumpmemO , EXIT = l, break; case ' v ' case 'k' printf ("\n\t WRITE SINGLE VALUE TO DΞ? MEMORY"), poketyp =' gettyp( poketyp ), /• type of value */ pokeaor = σetaddr(pokeadr,poketyp) , /* mem aάcress •/ switc ( poketyp ) { case 'S' : printf ("\n\t DATA VALUE (--SHORT) = ), εcanf ("Hά" , isval) , Putlntl6( pokeacr.sval ), creak, case 'L' printf ("\n\t DATA VALUE ( HEX ) = "), scanf {"Mx" , ilval) , Put32Eιt( pokeadr,lval ), break, case 'F' : printf ("\n\t DATA VALUE (--FLOAT) = '), scanf ("*f", ifval) , PutFloat( pokeaor, fval ), creak, default ■ break; } /* end of local switch */ printf ("\n\t VALUE WRITTEN TO ADDRESS 0x*061X" rcKeadr) , EXIT = l, oreak; case '?' case '?' printf ("\n\t READ SINGLE VALUE FROM DΞ? MEMORY") , peektyp = cettypf peektyp ), * type cf - aiue ♦ / peekacr = geta cr(peekacr,peektyp) , • mem accrsss ♦ / printf ("\n\t VALUE " READ FROM ADDRESS C/Λ061X = peeka r prntmem( oeekaαr.Deektyp ), EXIT = l, " break, default . EXIT =-l, break, /♦ not a valid entry */ pπr.tf ("\n\t Exited from monitor back to DOS \n"), } void lcacDgm(voιd) { fflush " ( stdin ) ; printf ("\n\t CURRENT FROGRAM EXECUTION IS HALTED"), print ("\n\t FILENAME = Vs ? ... ".filename), gets( rply ) ,- ιf( rply[0] '= '\n') { sscanf ( rply, "%s", i ilename ), } err »= LoaάOa^ectFilel filename ), if ( err==l ) cnntf ("\n\t **** UNABLE 70 OrΞN FILE ••••"), ιf( err=.2 ) printf ("\n\t ♦ •**•• INVALID ADDRESS * "), if ( err==0 ) { -r r.tf ("\n\t FILE Vs SUCCESSFULLY DOWNLOADED TO BOARD" , filename ) printf ("\n\t USE (R)eset TO RUN DOWNLOADED PROGRAM ") . } print ("\n") , void fιllmem(void) { ulong adr.num.n,* long Istart, Istep; float f start, fstep; printf ("\n\t FILL AREA OF MEMORY WITH DATA "), filltyp = gettyp ( filltyp) ,* filladr = getaddr (f llladr, filltyp) , printf ("\n\t NUMBER OF LOCATIONS TO FILL = "), scanf ( "%ld" , tnum) ; switch ( filltyp ) { case 'S': printf ("\n\t START VALUE (--SHORT) = • , scan ("tld" , ilstart) , printf ("\n\t INCREMEN /DECREMENT = ") scanf ("fcld", ilstep) ,* forl n=01 , adr = f llladr, n < num, n*>+,adr - = 21) { Putlntlδ (adr. (short) Istart) : Istart += Istep, ) LL printf {"\n\t 0x%061X TO 0x*t061X FILLED",filladr, adr-21) ; break; case 'L'*. printf ("\n\t START VALUE (+-LONG ) = ") ; scanf ("*ld", ilstart) ; printf ("\n\t INCREMENT/DECREMENT = "); scanf ("%ld", ilstep) ,* for( n=01,adr=fillaάr,- n < nu ; n++,adr +=41) { Put32Bιt (adr, Istart) ; Istart += Istep,- ) printf("\n\t 0x%061X TO 0x*061X FILLED",filladr,adr-4l) , break; case ' ? ' : printf ("\n\t START VALUE (+-FLOAT) = ") ; " scanf ( " t", ifstart) ,- printf ("\n\t INCREMENT/DECREMENT -- ") ; scanf (" * :f", ifstep) ,* for( n=01,adr=filladr,- n < num; n++,adr +=4l) { PutFloa (adr, fstart) ; fstart += fsten; } printf ("\n\t 0x%061X TO 0xV061X FILLED", filladr, adr-4l) break; default : break; } / ♦ end of switch */ } /• end cf function ♦ / void '-mpme (void) { ulong adr, inc; short r,c,n,opt = 'R'; printf ("\n\t DISPLAY AN AREA OF MEMORY... "); dumptyp = gettyp(dumptyp) ; durπpaάr = getaddr(dumpadr,dumptyp) ,* ιf( cumptyp '= 'S') (me = 0x4l,τ.=4;} else {inc = 0x21;n=8;) wnilet opt != 'Ξ' ii cpt != 'e') { switch( opt ) { case 'N' : case 'n' *. break; case '?' : case 'p': adr = adr - 0x1001; sreak; default : adr = cumpadr; break; } /• end of switch */ for( r=0; r < 8; r++) { printf ("\n OxVOεiX " , adr) ,• " for( c=0; c < n; c++) { prntmem( adr,dumptyp ) , ■ adr += me, * } print ("\n (R)epeat (N)ext (P)revιous (Ξ) scape ...? "); fflusn( stdin ) ; cpt = getcneO; printf ("\n") ; ) / ♦ end of while loop ♦ / } /* end of function */ ulong getaddr(ulong adr,short typ ) { printf ("\n\t ADDRESS OF DATA ( HEX ) = %1X ?... " , adr) ; gets ( rply ) ; if( rply10] != '\n') sscanf( rply, "*lx",iadr ) ; if ( typ != 'S') adr i= OxOOFFFFFCl; else adr i= OxOOFFFFFEl; return( adr ) ,• } / ♦ end of function */ short gettyp( short typ ) { printf ("\n\t TYPE OF DATA ( S, L, F > = H ?...", typ) ; fflush! stdin ); key = getchO, switch( key ) { case 'S' case 's' typ = 'S' , break; case 'L' case 'I' typ - 'I' ; break Lb case 'f: typ = 'F' ; break; default *. break; /* original typ */ } /* end of switch ♦/ printf (" -ϊc",typ) ,- return( typ ) ; ) /* end of function */ void prntmem( ulong adr, short typ ) { switch( typ ) { case 'S': printf ("%+8d" ,GetIntl6 ( adr )); break; case 'L': printf (" 0x%081X" ,Get32Bit(adr) ) ; break; case 'F': printf ("*+16.6e" , (double) (GetFloat (adr) )) ,- break; default : break; } /* end of switch */ } /* end of function */ void menu (void) { printf ("\n\n\t====»=======-.=======«:================= χ==========") ,* printf ("\n\t CURRENT BOARDS ADDRESS = OxVX ",BADDR) printf ("\n\t (C)hange board (F)ill memory printf ("\n\t (I)nitialize board (DhumD memory printf ("\n\t (H)alt processor (P)eek location printf ("\n\t (L)oad program ρo(K)e location printf ("\n\t (R)eset & run (E)xit to DOS printf ("\n\t==========*===--==-====.=-=============-«=======«=====\π") ,- QW 3 2 CLI3.h header file for use with tne OW32CLI3 interface li b raries. The first function call for each DSP card must be .* - SelectBoard( board_address) SelectBoardO initialises a number of global variables which t he res t of tne functions must use, multiple ooards can be used b y calling SelectBoardO initially once for each board and then use Warm S elec t 0 to switch the active board. VI.0 AUG 1995 General purpose type definitions typedef unsigned char uchar; typedef unsigned short ushort, length, board_adr,- typedef short short_array[] ,* typedef unsigned long ulong, dsp_adr, ulong_array[] typedef uchar * f ile_name ; typedef float flt_array [] ; / « ushort SelectBoard t board_adr) ; 7 /* Select and initialise DSP card 7 /* Returns : 0 f or invalid address . 7 /* Current base address if input parameter 1 . 7 /* Base address for successful co Dletion . /' 7 ushort - armSelect t ooard_adr) ; 7 /* Re-select a board that has already 7 /* been selected, leaves intact. 7 /* Returns : 0 for invalid address. 7 /* Current base address if input parameter 1. 7 /* Base address for successful completion. 7 /* Control Register Functions. 7 All return value of control register. 7 ushort SetCtrlRegt ushort); / ♦ put value into control register ushort Reset( void); 7 /* reset the DSP board ushort Haiti void); 7 /* Halt DSP program execution ushort UnKaltf void) ,- 7 /* Restart DSP program execution from halt 7 Memory Read/Write Functions. Write functions re t urn -1 lor an error. */ float C-etFloat( ulong ) ■ ■ /* Get 32 bit float value from DS? short PutFloat ( */ osp_aαr, float) , * /* Put 32 bit floa t value to DS ? ulong t323ιt( */ short Put323ιt( long) ; /* Get a 32 bit cattern from memory ♦ / αsp_aαr, ulong) ,- / ♦ Put a 32 bit pa tt ern t o DSP short Putlnt24 ( • / dsp_aαr, long) ,- /* Write a 2 4 bi t long t o DSP long tlnt24 ( */ d sp_adr ) , • / •> Read a 24 bit l ong f rom DSP short Putlntl6( */ αsp_aαr , short) ; / ♦ Write a 16 bi t t t o DSP short Getlntl6 ( */ αsp_adr ) ; / ♦ Read a 16 bit t from DSP */ /* ♦ / / * W r it e/Rea d arrays of values to DSP memory. Re t urns - l for Address err */ short W rBlkFlt( dsp_adr, length, flt_array) ■ /* writes array of floats short RdBlkFlt{ dsp_adr, length, fit array) ; */ Reads array of floats short WrBlkI16( dεp_adr, length, short array) ; /* */ Writes array of shorts */ s h ort RdBlkIl6( dsp_adr, length, short " array) ; /< Reads array of shorts */ shor t W rBlk32( dsp_adr, length, ulonq_Irray) ; /< Writes array of ulongs s h ort RdBlk32 ( dεp_adr, length, ulonq_array) ,- /- Reads array of ulongs • / /' */ / * Load a COFF format file t o D SP Returns : 0 Successful transfer. */ /* 1 Unable to open file. */ s h ort LoadObjectFile(file_name) ; /* 2 invalid address */ Ll / /♦ QW32CLI3.C LSI compatible liorary for QW DP32C boards DESCRIPTION: This is the source code for the C versions of the Interface Library for the IBM PC. It can be used to write C programs which run on tne IBM PC, that communicate with DP32C cards. This code is functionally equivalent to Loughborough' s 321ibrar.c, with the following exceptions: i. No DMA functions have been provided, since the PCs DMA hardware is not very efficient, ii. The read and write a block cf 24 bit integers have not been provided since these are slower than tne equivalent 32 bit functions. USAGE-. 1) Include the header file < QW32CLI3.h > 2) You MUST call Select3oard() once for each DS? card before any other function calls use a oarticular card. */ / ♦ */ JJmcluce <stdio.h> fcincluce <conιo.n> ttinciuce <float.h> ttir.ciuce <dos.h> ttinciuce <σw32clib.h> / ♦ Contains function prototypes and typedefs. /* External (global) variables are defined below ♦ / unsigned short D32cport, ControlReg; unsigned short _?DR, _?DR2, _PAR, _?ARΞ, _PCR; /* an array cf structures used if COFF files are loaded */ struct sections { ulong εdre ; ulong len,- ulong disp,- }sectε[265] ' ♦ SelectBoardO Initialise DS? card fcr use with all ether library functions at the given base address, global register addresses are assigned appropriately. Can ≥lso be used to return the active board address Ωy calling with an mp * . parameter of l. Parameters : 3oard address (Integer multiple cf 16) . Returns : The base address is returned upon a successful initialisation. 0 for invalid address. The function attempts to check if the board selected is in the " PC and functioning correctly. It has two attempts, and if there is no response from the board the return value is 1. ♦ / ushort SelectBoardt ushort board_adr) { ulong save_one, save two, test_one, test two, addr; short trysT done; if( board_adr « ■ = l) return( D32cport) ; / » return BOARD address 7 if ( (board adr '-. 16) . ' - 0) return! 0) , /• invalid address 7 D 2coort «- board_adr; /* set board address PDR2 = D32cport ♦ 0 / ♦ DSP32C host PDR _PDR = D32cport ♦ 2 /* - •' PDR2 PAR = D32cocrt + 4 /» •• PAR reset tne DSP32C interf ace port is is conf igured to 8 bit mode , * / must be set to 16 bi t mode in order to use the l ibrary . * / done= 1 ; trys= 0 ; addr= 0; whil e (done == l ) { tryε++ / ♦ halt chip, select reg ap, auto inc & d a */ outp( PCR, 0x0000) /* halt chip, irrespective of mode ♦ / outp ( " PCR, 0x0001) /* cause RESET by taking bit 1 high */ outp( " PCR, 0x0002) /* configure PIO 16 bit operation ♦ / outp( (_PCR+1), 0x0002) outp( _PCR, 0x0000) ; /* halt chip, irrespective of mode */ outp( PCR, 0x0001); /* cause RESET by taking bit 1 high */ outp( _PCR, 0x0002); /* configure PIO 16 bit operation */ outp( T_PCR+1) , 0x0002) ,* save_one= Get323it (a άr) ,* /* save test bytes save_two= Get32Bit(addr+41) ; Put323it( addr, 0x12345678); / ♦ write test values Put323it( addr+41, 0x87654321) test_one= Get323it (addr) ,* / ♦ r.ead test values test~two= Get323it (addr+41) ; ιf( ( test_one!=0xl2345678) || ( test two!=0x87654321) ) { ιf(trys==2) return (1) ; } else { done= 0; ) Put323ιt( addr, save_one) ,* /* restore test bytes Put32Eιt ( addr+41, save_two) ; ControlReg= inpw ( _PCR ); /* update image of PCR return (D32cport) ,* /* return BOARD address /* end of SelectBoardO '* War SelectO Selects (makes active) a board without disturbing any code already running on the board. Parameters identical to SelectBoard. short warmSelec ( ushort board_adr) { ιf( retur ( D32cρort) /* return 30ARD address */ ιf(( ) ! =0) return) 0) ; /* Invalid address */ D 2coort = board_adr; /* set board address */ _?DR2 ■ D32cport + 0 /* DSP32C host PDR */ PDR = D32cport + 2 PDR2 */ _PAR = D32cporc + 4 PAR */ _PARE = D32cport + 6 PARE */ _PCR = D32cport + 8 PCR • / ControlReσ= inpw( _PCR ) ; /* update image of PCR */ return( D32cport) ,• /* return BOARD address * / /* end of WarmSelectO • / /' - * / / • ^ Memory Read/Write functions • / - • / /' Flag = PutFloat ( DSP address ) /* convert to DSP32C f ormat • / / * returns - 1 i f addr error • / short PutFloat ( ulong adr , float fit val) { union convert f float iβee ; ulong dsp ; ) alue ; ,adr i OXFF000003) 0) return! -1 ) ; /* check address jntrolReg = 0x0667 & inpw( _PCR) ; / ♦ read PCR & mask 7 ontrolReg |= 0x0118; , / « enable 32 bit DMA 7 outpw( _PARE, (unsigned) ( adr*>>16) ) ,- /* write MS address 7 outpwf _PAR, (unsigned) ( adr ) ) ,- /' write LS address 7 outpw( _PCR, ControlReg); /' write to PCR, enable DMA 7 value.ieee= flt_val; / * * fetch IEEE value » / if (value.dsp != 0) /< DSP 0 = IEEE 0 */ { exo = (value. sp & 0x7F8OOOO0ul) > > 23; /* extract EXP • / if " { (value.dsp & * OxδOOOOOOOul) != 0 ) /* -ve number */ { value. sp = ((ulong) (-( (long)value.dsp) ) ) 0x7FFFFFul; if( value,.dsp != 0 ) exp+=l; value.dsp = (value . dsp << 8) + exp + OxSOOOOOOOul ; } else { value . dsp = ( (value . dsp i 0x7FFFFFul ) << 8 ) + (exp+1 ) ) outpw ( _PDR2 , (ushort ) (value , dsp i OxFFFFl l ) ; /* LS data 15 . .0 7 outpw ( _?DR , (ushort ) (value dsp >> 16 ) ) ; /* MS data 31 . .16 7 ControlReg &= 0x0667 ; / * disable DMA 7 outpw ( _PCR , ControlReg ) ; /* write to PCR 7 return ~0 ) ; /* return 0 successful 7 / * end of PutFloat O 7 /' Data = GetFloat ( DSP address) /* converts to IEEE format float GetFloat ( ulong adr) { union convert{ float ieee; ulong dsp; }value, ushort count; ulong exp, loword, hiword; ; adr i= OxOOFFFFFCl; /* Mask address 7 ControlReg » 0x0667 ά inp ( _?CR) ; / ♦ read PCR & mask 7 ControlReg |= 0x0118; / ♦ enable 32 bit DMA 7 outpw( _PCR, ControlReg); / * write to PCR, enable DMA 7 outpw( _PARΞ, (unsigned) ( adr>*>16) ) ; /* write MS address 7 outpw( _PAR, (unsigned) ( adr )); /' write LS address 7 ControlReg i= 0x07F7 ; / ■ disable DMA 7 outpw( _PCR, ControlReg); ϊowcrd = (ushort) inp ( _PDR2) ; / * • read LS 16 bits 7 hiword = (ushort) inp ( _PDR ); / ♦ read MS 16 bits 7 value. sp = loword | (hiword << 16); / * value from board • / if( value.dsp !>= 0 ) / ■ > DSP 0 = IEEE 0 • / { exp = (value.dsp i OxOOOOOOFFul) -1; if ( (value.dsp i OxSOOOOOOOul) !> 0 ) { value. sp=( (ulong) (- ((long) (value.dsp>>8) )) ) i 0x7FFFFFul, if( value. sp ■■ 0 ) exp +*»1; value. sp = value.dsp + (exp<<23) + OxSOOOOOOOul; ) else { value.dsp = ((value.dsp >> 8) i 0x7FFFFFul) ♦ (exp<<23) ; } return) value.ieee) /• end of GetFloat 0 • / / / * Data « Get32Bit( DS? address) ulong Get323it( ulong adr) { ulong loword. hiword.- j.ntrolReg = 0x0667 & inpw( _PCR) ,- /* read PCR i mask */ -ontrolReg |= 0x0118; /* enable 32 bit DMA ♦ / outp ( _PCR, ControlReg); /* write to PCR, enable DMA */ cutpw( _PARE, (unsigned)'! adr->-»16) /* write MS address ♦ / outpw( _PAR, (unsigned) ( adr )); /* write LS address */ ControlReg &= 0x07F7; /* disable DMA ♦ / cutpw( _PCR, ControlReg); /* write to PCR */ loword = (ushort) inpw( _PDR2) ; /* read LS 16 bits */ hiword = (ushort) mpw( _PDR ) ; /* read MS 16 bits */ return! loword | (hiword << 16)); /* return value */ /* end of Get32Bit() */ / /* Flag = Put32Bit( DSP address, Data) /* Returns -1 if invalid short ?ut32Eit( ulong adr, ulong val_32bit) if ((adr & 0XFF000O03) != 0) return! -1 ) ; /* check address 7 ControlReg = 0x0667 i inpw( _PCR) ; /*■ read PCR & mask 7 ControlReg |= 0x0118; /< enable 32 bit DMA 7 outpw( _PARE, (unsigned) ! adr>>16)); / * write MS address 7 outpw( _PAR, (unsigned) ( adr )) ; / * write LS address 7 outpw( _PCR, ControlReg) ; / • write to PCR, enable DMA 7 outpw ( _PDR2, (ushort) (val_32bit i OxFFFFl)) ; /* LS data 15...0 7 outpw( _PDR , (ushort) (val_32bit >> 16 )); /* MS data 31..16 7 ControlReg &= 0x0667; /* disable DMA 7 outpw( _PCR, ControlReg) /* write to PCR 7 return (0) ; /* return 0 successful 7 /* end of Put32Bit() 7 / /* Flag = Putlnt24 ( DSP address. Data) /* Returns -1 if invalid short ?utlnt24 ( ulong adr, long val_24bit) { if! (adr i OxFF000003) != 0) return! ) ,- /* check address 7 ControlReg = 0x0667 i inpw( _?CR) ,- / read PCR i mask 7 ControlReg |= 0x0118; / enable 32 bit DMA 7 val 24bit &= OxOOFFFFFFl; / ensure 24 bit value 7 outpw( PARE, (unsigned) ( adr-.>16) ) ; /* write MS address 7 outpw( " PAR, (unsigned) ( adr ) ) ,- / write LS address 7 outp ( " PCR, ControlReg) ; / write to PCR, enable DMA 7 outpw( " PDR2,, (ushort) (val 24bit i Ox ED); / LS data 15...0 7 outp ( " PDR ,, (ushort) (val 24blt >> 16 ) ) ; / MS data 31...16 7 ControlReg i= 0x0667; /* disable DMA 7 outp ( _PCR, ControlReg) /* write to PCR 7 return (0) ; /* return 0 successful '/ /* end of Putlnt240 • / / /* Data •- Getlnt24{ DSP address ) long Getlnt24( ulong adr) { ulong loword, hiword; adr * adr OxOOFFFFFCl; ensure address valid */ ControlReg = 0x0667 & in; read PCR i mask */ ControlReg |= 0x0118; enable 32 bit DMA outpw ( _PCR, ControlReg) write to PCR, enable DMA '/ outpw ( _PARE, (unsigned) write MS address outpw! _PAR, (unsigned) write LS address ControlReg & * 0x07F7; disable DMA outpw ( _PCR, ControlReg) write to PCR loword = (ushort) inp ( read LS 16 bits hiword = (ushort) inpw( read MS 16 bits if ((hiword i 0x00000080) test siqn bit ,curn( loword 1 (hiword << 16)) /* return value /• end of Getlnt240 Flag = Putlntl6 ( DSP address, Data) /* returns -1 if invalid short ?utlntl6( ulong adr, short val_16bit) { if ((adr £. OκFFOOOOOl) != 0) return( -1 /* check address 7 ControlReg = 0x0667 & inpw ( _PCR) ; /* read PCR i mask 7 ControlReg |= 0x0018; /* enable 16 bit DMA 7 outpw! _PARE, (unsigned) ( adr>->16)) /* write MS address 7 outpw( _PAR, (unsigned) ( adr )) ; /* write LS address 7 outpw( _PCR, ControlReg); /* write to PCR, enable DMA 7 outpw! _PDR, (val_16bit i OxFFFF )) /* LS data 15...0 7 ControlReg i= 0x0667; /* disable DMA • / outp ( _PCR, ControlReg); /* write to PCR • / return (0) ,* /* return 0 successful • / /* end of Putlntl6 () */ • / Data = Getlntl6( DSP address) • / short Getlntl6( ulong adr) { adr = adr & OκOOFFFFFEl; /* ensure address valid 7 ControlReg ■ 0x0667 & inpw! _PCR) ; /* read PCR & mask 7 ControlReg | * 0x0018; /* enable 16 bit DMA 7 outpw! _PCR, ControlReg); /* write to PCR, enable DMA 7 outpw( _PARE, (unsigned) ! adr*->16) ) /* write MS address 7 outpw! _PAR, (unsigned) ! adr )); /* write LS address 7 ControlReg &« Ox07F7; /* disable DMA 7 outpw! _PCR, ControlReg); /* write to PCR 7 return( inpw ( _PDR) ) ,* /* return value 7 /* end of Getlntl6() 7 • / Flag = WrBlkFlt! DS? address, length, *flt_arry) ■1 = invalid •/ short WrBlkFlt ( ulong adr, ushort arry size, float flt_arry[l) { union conver { float ieee,* ulong dsp; )value; ushort count; ulong exo; if! (adr i OxFF000003) != 0) return! -1 ) /* check address 7 ControlReg = 0x0667 i inpw( _PCR) ; /• read PCR i mask 7 ControlReg |= 0x0118; /* enable 32 bit DMA 7 outpw( _PARE, (unsigned) ! adr*»>16)) ; /* write MS address 7 outpw! _PAR, (unsigned) ( adr )); /* write LS address 7 for( count»0; coun < arry_size; count++) /* set up transfer loop 7 outpw! _PCR, ControlReg); / « write to PCR, enable DMA 7 { value.ieee= flt_arry[ count); /* fetch IEEE value 7 if (value.ieee != 0) /* DSP 0 = IEEE 0 7 { exo -- (value.dsp & 0x7F800000ul) >> 23; /' extract EXP • / if * ( (value. sp i 0x80000000ul) != 0 ) /' -ve number */ { value.dsp = ( (ulong) (-( (long)value.dsp) ) ) i 0x FFFFFul; if ( value,dsp !« 0 ) exp+*»l; value.dsp = (value.dsp << 8) + exp + OxSOOOOOOOul else { value. sp ((value.dsp i 0x7FFFFFul) << 8) (expi l) ) ) outpw ( _PDR2, (ushort) (value.dsp OxFFFFl) ) ; LS data 15. ,0 outpw ( ~PDR , (ushort) (value.dsp > 16 )) ; MS data 31. .16 /• end of transfer loop cρw ( _?CR , ControlReg ) ; / ♦ write to PCR ♦ / return ( 0 ) ,* /♦ return 0 successful ♦ / /• end of WrBlkFlt 0 ♦ / / ♦ /♦ Flag = RάBlkFlt! DSP address, length, *flt_arry) /* -1 invalid short RdBlkFlt! ulong adr, ushort arry_sιze, float flt_arry[]) ( union ccnvert{ float ieee; ulong dsp,- }value,- ushort count; ulong exp, loword, hiword; , if ((adr i 0xFFOO0OO3) != 0) return! -1 ); / ♦ check address ControlReg = 0x0667 i inpw( _?CR) ,- / ♦ read PCR i mask ControlReg |= 0x0118,- /* enable 32 bit DMA outpw( _PCR, ControlReg); / ♦ write to PCR, enable DMA outpw! _PARΞ, (unsigned) ( adr>>16)); / ♦ write MS address outpw! _PAR, (unsigned) ( adr ) ) ,* /* write LS address for( count=0,- count< arry_size; count++) / ♦ set up transfer loop { loword = (ushort) inp ( _?DR2) ; / ♦ read LS 16 bits hiword = (ushort) mpw( _?DR ); / ♦ read MS 16 bits value.cεp = loword | (hiword << 16) ,- / • value from board if ( value.dsp != 0 ) / ♦ DS p o = IEEE O { exp = (value.dsp & OxOOOOOOFFul) -1, if ( (value.dsp i OxSOOOOOOOul) '= 0 j { value. sp= ( (ulong) (-( (long) (value.dsp>>8) )) ) i 0x7FFFFFul; if! value.dsp == 0 ) exp +=1; value.dsp = value.dsp + (exp<<23) + OxδOOOOOOOul; } else { value.dsp = ( (value.dεr* >> 8) i 0x7FFFFFul) + (exo<«23) ) flt_arry[count] = value.ieee; ControlReg i= 0x0667- /* disable DMA outpw( _?CR, ControlReg); / • write to PCR return (0) ,* /* end cf RdBlkFlt O /* Flag = rΞlkllό { DS? a άress, length, snort_array) / ♦ -1= -r.vεl d short WrSlkllS! ulong adr, ushort arry_size, short int_εrry[]) { ushcrt count; ~ ~ if((adr & OxFFOOOOOl) != 0) return! -1 ) ; /* check address */ Co.-.trolReg = 0x0667 i inpw( _?CR) ,- /' read PCR i mask */ ControlReg |= 0x0018; / ■ enable 16 bit DMA */ outpw( _PARE, (unsigned) ( adr->>16) ) ; /' write MS address */ outpw( _PAR, (unsigned) ( adr )); / • write LS address ♦ / outpw! ~PCR, ControlReg); / ■ write to PCR, enable DMA * / for( count>=0; count<arry_ειze,* count++) /* set up transfer loop • / { outpw ( _PDR, int_arr 1 count) ) /* write " S data 15...0 • / ControlReg i= 0x0667 ; disable DMA */ outpw ( _PCR , ControlReg) ; write to PCR 7 return (0) ; return 0 successful 7 } end of WrBlkI16() 7 / / / * Flag = Rd31kI16( DSP address, number, •ιnt_arry[]) /• -1= invalid */ short RdaikI16( ulong a r, ushort arry_si2e. short ιπt_arry[]) { ushcrt count ,- if ((adr & OxFFOOOOOl) » = 0) controlReg | = 0x0018; / » enable 16 bit DMA */ outpw ! _PCR , ControlReg) ,- /* write to PCR, enable DMA */ outpw ( _PARE , (unsigned) ( adr>>l6) ) ; /* write MS address ♦ / outpw ) _FAR , (unsigned) 1 ! adr ) ) ■ ,* / ♦ write LS address ♦ / f or ! count =0 count<arry_sιze; count ++) / ♦ set vi-p transfer loop ♦ / { int_arry[count] = inpw ( _?DR) ; / ♦ read LS data 15...0 ♦ / ControlReg i= 0x0667; / ♦ disable DMA ♦ / outpw! _PCR, ControlReg) ; /• write to PCR ♦ / return! 0 ) ; / ♦ return 0 successful ♦ / /* end of RdBlkI16() •/ /* - -- - /* Flag = Wr31k32 ( DSP address, length, ♦ ulong_arry (] ) /- invalid short wrBlk32( ulong adr, ushort arry_size, • llong mt_arry[] ) { ushort count,- if ((adr i OxFF000003) != 0) return ( -1 ) ,- / ♦ check address ControlReg = 0x0667 & inpw ( _?CR) ,- / ' read PCR i mask 7 ControlReg |= 0x0118; / ' enable 32 bit DMA 7 cutpw( _PARΞ, (unsigned) ( adr>>16)) ; / write MS accress 7 outpw( _PAR, (unsigned) ! adr )) ,- / write LS address 7 oucpw( _PCR, ControlReg) ; / write to PCR, enable DMA 7 fcr( count=0; count<arry_sιze,- count++ /* set o transfer looo 7 { outpw( _PDR2, (short) mt_arry[count) i OxFFFF) ; " /* 15...0 7 outpw( _PDR , (short) (int_arry [coun > > 16) ) ; / ♦ 31. - - I1S 7 ControlReg i= 0x0667; disable DMA outp ( _PCR, ControlReg) write to PCR return (0) ,* return 0 successful end of WrBlk32() /*--- /* .-lag = Rc51k32 ( DS? address, length, •ulong_arry [] ) /* -1= invalid sno: ?.d31k22( ulong εcr, ushort εrry_size, ulong mt_arry!]) ushort count; ~ ulong lcword, hiword; if ((adr i OxFF000003) '= 0) return! -l ) ,- / ♦ check address ControlReg = 0x0667 i inpw! _?CR) ,* ControlReg |= 0x0118; outp ( _?CR, ControlReg) ; e DMA outp ( _FARΞ, (unsigned) ( adr-*>i6) ) outpw! _?AR, (unsigned) ) adr ) ) ,* fcr( count*-0; cour.t< arry_size,- cou: { loword = (ushort) pw( _?DR2) ; hiword = (ushort) inpw ( ~ ?O?. ) ,- int_εrry [ count] = loword | (hiwor array ) ControlReg i= 0x07F7; /* disable DMA outpw! _PCR, ControlReg) /* write to PCR return( 0 ) ,* /* return value /* end of RάBlk320 /* /* Control Register functions . Returns value of PCR Reg f or board . /* PCR = SetCtrlReg ( New value for PCR) ushort SetCtrlReg ( ushort val_PCR ) { ControlReg * val_PCR i 0x37 f ; / • Update memory PCR image outpw ( _?CR , ControlReg) ; /* Wri te to I /O PCR return ( " ControlReg ) ,* ) / • end of SetCtrlReg ' ■ 5A - --- */ PCR = Reset!) Reset the active DSP32C board. */ /* Takes bit 0 of PCR low (to halt processor), then takes it high, this */ /* causes the 0 -> l transition which initiates a DSP32C reset. The */ /* interface is set back into it's 16 bit mode. */ ushort Reset ( void) { ControlReg= 0x0666 & inpw ( _?CR ) /* set bit 0 low •/ outpw( _PCR, ControlReg " ) ; ControlReg | = 0x0001; /* set bit 0 high ♦ / outpw( _PCR, ControlReg) ; ou o( _PCR, Oxlb) ; /* restore 16 bit host port operation */ outp( (_PCR+1) , 0x02); ControlReg= inpw( _PCR return! ControlReg) ; /* end of Reset 0 */ /* - */ /* PCR = Halt!) Halt code running on the active DSP32C board. */ /* The DSP is halted by taking bit 0 of PCR low. */ ushort Halt (void) { ControlRec= 0x0666 ά inpw ( _?CR ); / ♦ set bit 0 low ♦ / outpw( _?CR, ControlReg " ) ; return( ControlReg) ; } /* end of Halt 0 */ - • / PCR = UnHaltO Resume program execution af ter a Halt command . * / The PC is restored from a value held in R14, an indirect jump is set to the reset vector (location 0) via R14, and a restart initiated by taking bit 0 of control register high, causing the 0 -> l transition. ♦ / ushort UnHalt ( void) { ulong vector, next ; /* save current reset vector */ vector= Get32Bit( 01) ; next= Get32Bit( 41) ; /* restore PC to reset vector */ Put323it( 01, OxAOOEOOOOl) Put32Bit( 41, 0x000000001) /* NOP to cover latency */ ControlReg = Reset!) ; /* initiate reset */ /* restore reset vector • / Put32Bit( 01, vector) ; Put323it ( 41, next) ; /* update PCR image • / return! ControlReg) ,- /* end of UnKalt 0 */ / /* LoadObjectFile () Load a COFF file into the active DSP32C memory from PC. Parama eters : Pointer to file name string. Returns : 0 = File loaded OK 1 = Unable to open file 2 = Invalid address Opens f ile , reads the section headers , then the program is transf ered tc DSP32C memory a word at a time . 7 short LoadObj ectFile ( uchar * file_name) { short num_sects=0 , null_data , load_cnt , cur_sect=0 ; ulong load_addreεs , loop ; ulong high_byte=0 , l ow_byte=0 , byte cnt=0 ; FILE • f ile Dtr; ( ( f il e_ptr= f open ! f il e_name , " rb " ) ) = = NULL) return ( 1 ) ; ,ιull_data = getw ( f ile ptr) ,- byte_cnt= 2 ; ' /♦ get number of sections * / num_sects=getw ( f il e_ptr) ,- byte_cnt + = 2 ; load_cnt = num_εect s ; for ! loop=0 ; loop< = 7 ; l oop+ + ) null_data= getw ( file_ptr) ; byte_cnt+=l6 ; /* loop through each section header */ while{ " load_cnt!=0) { /* skip to address info in header */ for( loop=0; loop<=3; loop++) null_data= getw( filejptr) ; byte_cnt+= 8; ~ low_byte= (ushort) get ( file_ptr) ; /* get low half of address info */ high_byte= (ushort) getw( file_ptr) ; /* get high half of address info */ byte_cr.t--= 4 ,- εects( cur_sect] . adre= ( (high_byte<<16) I low_byte) ,- / ♦ save address ♦ / /* move onto size of data chunk info */ for( loop=0; loop<2; loop++) null_data= getw( file Dtr) ,- byte_cnt+= 4; lσw_byte= (ushort) getw( file_ptr) ; /* get low half of sect size info */ high_byte= (ushort) getw( file_ptr) ,- /* get high half of sect size info */ byte_cnt+= 4; sects [ cur_sect) .len= ( (high_byte<<16) | low_byte) ; /* save sect size */ low_byte= (ushort) getw ( file_ptr) ; /* get low half of offset to data ♦ / high_byte= (ushort) getw( file_ptr) ; /* get high half of offset to data */ byte_cnt+= 4; sects [cur_εect] .disp= ( ( high_byte<<16) | low_byte) ; /* save offset */ /* move onto start of next section header ♦ / for! loop=0; loop<«7; loop++) null_data>- getw( file_ptr) ; byte_cnt+= 16; load_cr.t-- ; cur_sect++; } /* loop for next header */ / ♦ At this point all the headers have been examined and the useful data stored in the array of structures. Downloading of the section data follows cur_sect=0,- while! num_sects!=0) { / ♦ for each section ♦ / if( sectsf cur_εect] .disp== byte_cnt) load_address= sects I cur_sect) .adre; if ( !load_address £• 0xFF000003) != • 0) return(2) ,- /* configure PIO to 16 bit mode */ /* set DMA to 16 bits, autoinc, and disable */ ControlReg= inpw( _PCR ) ; ControlReg * ( ControlReg| 0x0310 ) i 0x377; outp ( _PCR , ControlReg); / • write destination address to address register */ /« • turn on the DMA */ ControlReg * inpw( _PCR ) ; ControlRegI = 0x0008; outpw( _PCR, ControlReg); loop= sects! cur_sect] .len,* while( 1OOD! * 0) { low_byte= (ushort) getw ( file_ptr) high_byte= (ushort) getw! file_ptr) byte_cnt+= 4 ; /* write destination address to data register outpw ( _PDR2, (unsigned) ( low_byte & OxFFFF) ) ; outpwf _PDR , (unsigned) ( high_byte £- OxFFFF) ) ; load_address+ * 4; if( load address> OxFFFFFF) { /* reached end of DSP memory */ fclose( file ptr) return! 2) ; } lθOD-= 4, /* end of words in section */ cur_sect++; num sects-- ; ) " /* all sections loaded */ fclose! file_ Dtr) return( 0) ,- /* end of LoadObjectFile() */ /* *****•**■» + + + + + *- + + ****• *** + * + + %* • ******* + *** #•**** * * * + **** ** + * *• * ***»♦» / /♦ LIBTEST.C a simple program to teεt the QW32CL13.03J interface lib. ♦ / /♦ Requires the DSP assembled file "libtest.o" to be present ♦ / ^include <εtdio.h> ^include <conio.h> ^include <gw32clib.h> / ♦ header for library functions */ ^define SARRAY 0x0001001 Sdefine LARRAY 0x0002001 ^define FARRAY 0x0003001 Sdefine DATA 0x0004001 ulong ADDR, longs [100] , Ival /* dsp address ushort shorts [100] , sval float floats (100] , fval main(void) { int i, ,k,err,num; Select5oard( 0x290 ) ,- /* selects base address of board */ ResetO; /' resets the DS? */ Halt!); /* Halts the DSP. */ err=LoadObjectFile ("libteεt .o") ; /* download libtest.o code */ printf ("\n PGM LOAD STATUS = *d " ,err) ,- ResetO; /* start program ...down to IDLE */ RdBlkl16 (SARRAY, 8, shorts); printf ("\n READ BACK SHORTS FROM BOARD USING RdBlkI16() \n"); for! num=0; num<8; num++) { sval = shorts [num] ; printf (" VX " ,sval) ; } ADDR=SARRAY; printf ("\n READ BACK SHORTS FROM BOARD USING Getlntl6{) \n" ) ; for(num=0; num < 8; num++) { sval=GetIntl6(ADDR) ,- printf (" VX ",sval) ; ADDR * ADDR+2l ; } Rd31k32 (LARRAY, 8, longs); printf ("\n READ BACK LONGS FROM BOARD USING Rd31k32() \n"); for( num=0; num<8; num++) { lval = longs [num] ; printf (" %1X ",lval ) ( - } ADDR = LARRAY ; printf ("\n READ BACK LONGS FROM 30ARD USING Get323it() \n") ; for(num=0; num < B; num++) { lval=Get323it (ADDR) ; printf ("V1X ",lval) ; ADDR=ADDR+4l ,- } RdBlkFlt (FARRAY, 8, floats); printf ("\n READ BACK FLOATS FROM BOARD USING RdBlkFlt 0 \n") ; for( num=0; num<6; num++) { fval = floats [num] ,- printfl" %f ",fval ) ; } ADDR * FARRAY; printf("\n READ BACK FLOATS FROM BOARD USING GetFloat!) \n") ; for (nuπ*=0; num < 8; num++) { fval=GetFloat (ADDR) ; printf ("%f ",fval); ADDR * ADDR+4l ; } ADDR=DATA; printf ("\n Putlntlδ & Getlntl6 teεt \n") ; Putlntl6 (ADDR, 1234 ) ; printf ( "WRITE = 1234, READ = '%ά ", Getlntlδ ( ADDR ) ) ADDR=DATA; printf ( B \n Putlnt24 & Getlnt24 teεt \n") ; Putlnt2 (ADDR, -51234) ; printf ("WRITE = -51234, READ = %ld " , Getlnt24 (ADDR) ) ; ADDR=DATA; 0'\n Put32Bit & Get32Bit teεt \n") ,- ,32Bit (ADDR, 0x23456789) ; ' printf ("WRITE = 23456789, READ = VIX " , Get323it (ADDR) } ; ADD = DATA; printf ("\n PutFloat & GetFloat test \n"); PutFloat (ADDR, -24.S67); printf ("WRITE = -24.567, READ = i 't ", GetFloat (ADDR) ) ,- } d3as:warning:libtest.s line 4: could be changing external memory wait states ring DA instruction write to memory. Symbol Table .file libtest.s .bankO (section 1) size 0x320 IDLE section 1 defined value 0x3c PGM LOAD STATUS = 0 READ BACK SHORTS FROM BOARD USING RdBlkI16() 0 101 202 303 404 505 606 707 READ BACK SHORTS FROM BOARD USING Getlntl6() 0 101 202 303 404 505 606 707 READ BACK LONGS FROM BOARD USING RdBlk32() 0 10002 20004 30006 40008 5000A 6000C 7000E READ BACK LONGS FROM BOARD USING Get32Bit() 0 10002 20004 30006 40008 5000A 6000C 7000E READ BACK FLOATS FROM BOARD USING RdBlkFlt 0 -1.234560 -25.000000 -0.001567 -256.000000 0.000000 25.000000 0.00156 56.000000 READ BACK FLOATS FROM BOARD USING GetFloat 0 -1.234S60 -25.000000 -0.001567 -256.000000 0.000000 25.000000 0.001567 6.000000 Putlntie & Getlntl6 test WRITE = 1234, READ * 1234 Putlnt24 & Getlnt24 test WRITE = -51234, READ = -51234 Put32Bιt & Get32Bit test WRITE = 23456789, READ = 23456789 PutFloat & GetFloat test WRITE = -24.567, READ = -24.566999 C:\DP32LI3 >

Claims: WHAT IS CLAIMED IS 1. A ground-probing RADAR system, comprising: (a) an antenna module including at least one dipole element; (b) a transmit/receive sub-system electrically coupled to said antenna module, said sub-system including structure for generating a RADAR signal and transferring the signal to said antenna module for radiation into the ground, and receiving a portion of the RADAR signal reflected therefrom; (c) a digital signal processing sub-system electronically connected to said transmit/receive sub-system comprising structure for processing said received portion of said reflected RADAR signal to extract raw data corresponding to detected differences in dielectric constant the ground as a function spatial variance in three dimensions, and generating display data therefrom; (d) a master controller electrically connected to said digital signal processor sub-system for controlling operation of said RADAR system, including system data flow control; (e) a positioning sub-system electrically connected to said master controller for maintaining the exact ground location of said RADAR system and generating location data therefrom; (f) a display sub-system electrically connected to said master controller for displaying said display data; (g) a user interface comprising structure enabling a user to communicate with said master controller thereby affecting system processing operating parameters; and (h) a data storage mechanism electrically connected to said master controller for storing raw data, display data and said operating parameters, wherein said master controller controls the digital signal processor sub¬ system to input and process raw data, in accordance with location data and display data such that underground composition may be identified and mapped to convey an accurate description to the user via said display system. 2. The RADAR system of claim 1, wherein said antenna module, said transmit/receive sub-system and said digital signal processing sub-system operate as a single-channel system. 3. The RADAR system of claim 1, wherein said digital signal processing sub¬ system structure extracts hyperbolic object data from said raw data. 4. The RADAR system of claim 3, wherein said digital signal processing sub¬ system structure performs cluster processing on said raw data to generate said hyperbolic object data. 5. The RADAR system of claim 4, wherein said digital signal processing sub¬ system structure performs a Hough transform on said object data to extract linear features of detected objects therefrom. 6. The RADAR system of claim 3, wherein said digital signal processing sub¬ system structure includes an AT&T DSP 326 processor. 7. The RADAR system of claim 1 , wherein said master controller includes an Intel 80486 microprocessor. 8. The RADAR system of claim 1, wherein said display system includes a transflective display. 9. The RADAR system of claim 1, wherein said data storage mechanism includes a hard disc and hard disc controller. 10. The RADAR system of claim 1, wherein said user interface includes a set of softkeys, a softkey controller and a medium for storing a set of instructions for defining operation of said softkey controller. 11. The RADAR system of claim 1, further comprising a communications port for communicating said display data to electronic means. 12. The RADAR system of claim 11, wherein said port is connected to a CAD/CAM system. 13. The RADAR system of claim 1, wherein said transmit/receive sub-system includes a sampling head utilizing pulse-signal shaping. 14. The RADAR system of claim 1, further including mechanical means connected to said antenna module for rotating said at least one dipole element to define a scanning profile. 15. The RADAR system of claim 1, further comprising a ruggedly constructed cart including a main body housing. 16. The RADAR system of claim 15, wherein said main body housing includes a one piece rotational housing with a control panel. 17. The RADAR system of claim 15, wherein said cart includes a set of wheels and a handle for pushing said cart. 18. The RADAR system of claim 17, wherein said wheels communicate position data to said positioning sub-system. 19. The RADAR system of claim 15, wherein said antenna module is mounted on said housing with a compliant hinge. 20. The RADAR system of claim 19, wherein said antenna module includes a sacrificial wear membrane. 21. The RADAR system of claim 15, wherein said housing acts as a platform for said display sub-system. 22. The RADAR system of claim 15, wherein said housing includes system cooling means. 23. The RADAR system of claim 22, wherein said system cooling means includes at least one cooling for having at least one vent for exhausting air. 24. The RADAR system of claim 1, wherein said transmit receive sub-system generates a fast riseti e electromagnetic pulse signal. 25. The RADAR system of claim 24, wherein said signal has a peak amplitude of around fifty (50) volts and a time constant of around one nanosecond (10-9 sec). 26. The RADAR system of claim 15, wherein said housing includes an electronics module, rear panel module, battery module, reset panel, cooling fan module and wheel sensor module. 27. The RADAR system of claim 1, wherein said antenna module includes at least one delay coil. 28. The RADAR system of claim 1, wherein said antenna module includes at least two dipole elements. 29. The RADAR system of claim 28, wherein said transmit/receive sub-system and said digital signal processing sub-system operate in conjunction with said antenna module and said microcontroller for two-channel operation. 30. The RADAR system of claim 29, wherein said digital signal processing sub-system structure utilizes a synthetic aperture RADAR processing which isolates and uses the dielectric constant of the medium of operation and focuses hyperbolic object data to a single port based thereon. 31. The RADAR system of claim 30, wherein said structure identifies said dielectric constant by first generating and storing first migrated image from raw data from a first scan for a first predetermined dielectric constant, reprocessing the raw data used to generate the first migrated image for a wide range of dielectric constants and storing the corresponding migrated images, then identifying a range of dielectric constants which generated closest correlation of migrated data, and repeating the process for a narrower range containing the best previous range in a converging process. 32. The RADAR system of claim 28, wherein said two-channel system operates four data channels to allow co-channel data processing. 33. The RADAR system of claim 32, further comprising two antenna modules and wherein said transmit receive sub-system includes two transmitters and two receivers. 34. The RADAR system of Claim 33, wherein said two antenna modules are mounted on a single rotating shaft for rotation of areas of interest. 35. The RADAR system of claim 1, wherein a hand-held mechanical structure is included to house the system. 36. The RADAR system of claim 32, wherein said system includes mechanical structure to house and support said system in a form of a moving vehicle. 37. The Radar system of claim 28, wherein said antenna module includes a resistively loaded antenna element, comprising an elongate strip of sheet material, which sheet has, over its area, a uniform electrical resistance, the width of said strip being varied along its length in order to provide a desired resistive loading of the antenna element. 38. The RADAR system of claim 38, wherein said sheet material of said antenna element comprises a synthetic plastics substrate having deposited thereon a coating of electrically resistive material. 39. The RADAR system of claim 38, wherein the surface electrical resistance of said coating of said antenna element is from 10-20 ohms per square. 40. The RADAR system of claims 37-39, wherein said elongate strip of said antenna element is at least partly of triangular form and has an electrically conductive contact area provided across the wider end of the strip. 41. The RADAR system of claim 4, wherein said strip of said antenna element comprises a section of rectangular configuration located between said contact area and the wider end of the triangular part of the strip. 42. The RADAR system of claims 40 or 41, wherein said contact area of said antenna element is of V-shaped configuration. 43. The RADAR system of claim 37, wherein said antenna array comprises at least one pair of elements as claimed in any one of claims 37-42, connected to form a dipole. 44. The RADAR system of claim 43, comprising two pairs of said elements arranged as a crossed dipole. 45. The RADAR system of claims 43-44, wherein each of said elements is folded upon itself. 46. The RADAR system of claim 45, wherein each of said elements comprises an element as claimed in any one of claims 40-42 and has an upper portion terrninating in said contact areas and housed in one limb of a support of cruciform section the center portion of which support accommodates electrical conductors coupled to the contact areas of elements extending within respective limbs of said support, and further has a lower portion extending below the corresponding limb and being resiliently deformable to conform to a surface in contact therewith. 47. A RADAR antenna system comprises an array of antenna elements disposed over an endless surface, said endless surface being mounted for movement over another surface by circulation whereby each antenna element is brought in its turn into close proximity with said other surface. 48. The RADAR system of claim 28, wherein said antenna module includes elements which are disposed on a circumferential surface of a body of generally circular cross-section, said body being mounted for rotation to enable it to be rolled over a surface. 49. The RADAR system of claim 48, wherein said antenna elements of said array are coupled to an input and/or output via a commutating means associated with the rotary mounting of said body, whereby only antenna elements or elements having a predetermined orientation relatively to said mounting are coupled to said input and/or output. 50. The RADAR system of claims 48, 49, wherein said body is provided with a replaceable ablative layer. 51. The RADAR system of claims 48-50, wherein said body comprises a hollow drum having a peripheral surface of dielectric material which is transparent to, or presents a relatively low loss to, a radar signal, and said antenna elements are disposed on the internal surface of said drum. 52. The RADAR system of claim 51, wherein said drum contains electronic apparatus coupled to said antenna elements, and wherein said drum incorporates anechoic cavities between the antennae and said apparatus to provide for absorption of radiation transmitted or reflected in a direction from the periphery of the drum towards said apparatus. 53. The Radar system of claim 13, wherein said sampling head includes a GaAs sampling bridge and fast step recovery diodes such that sampling may be accomplished in a range of from about 1.8 to 3 Ghz.

Inventors: CHIGNELL RICHARD JOHN, CHIGNELL, RICHARD, JOHN
Applicants: CHIGNELL RICHARD JOHN, CHIGNELL, RICHARD, JOHN
Application year: 1997
Main classification: G01S13
IPC codes: G01S13, G01V3