Perfect Code Experiments, 2012-03-05 to 2012-03-09

The purpose of this set of experiments is to transmit a series of different code sequences involving amplitude and phase modulations for evaluation of 'perfect code' measurement performance. Sequences interleaved with well know codes (e.g. barker, uncoded, etc) will also be used to provide comparative data. Due to MISA (steerable antenna) upgrades only the Zenith antenna was used for these experiments.

Data Collection Plan

Primary data collection will be conducted on 2012-03-09 according to the following plan :

  1. Load the timing generator with new timing patterns and test (FDL in Ion Lab).

  2. Activate transmitter (CEF in Ion Lab / TCA)

  3. Collect high resolution amplitude linearization sequence (FDL in Ion Lab).

  4. Compute linearization model and resequence amplitude modulated IQ waveform data. Load on to AWG unit (FDL in Ion Lab).

  5. Test data for perfect code sequence.

  6. Collect AWG based Millstone Hill alternating code (mhr_a_8910_480_30_cs2_f4402 mode) for 30 minutes with 1 MHz sampling rate. (FDL and LR in GSC)

  7. Translate all waveguide tap information to power measurement XML files.

  8. Translate all TX and RX data to HDF5.

Online Data

Data is contained in gzipped tar archives which contain documentation as well as HDF5 files for the TX and RX data channels. The HDF5 files are created with the gzip compression option active.

2012-03-09 : Alternating Code Data (13 GB)

  • These Zenith data were collected using the i_a480_s480 which is an interleaved single pulse and alternating code. The data were collected during a geomagnetic storm and peak density and altitude were very low. One hour of collection of TX and RX signals at 1 MHz using the MIDAS-M tuners and Echotek digital receivers.

Millstone Arbitrary Waveform Generator Capability

A National Instruments PXIe-5442 arbitrary waveform generator has been configured for a 30 MHz IF carrier output and combined with the existing Millstone UHF exciter unit for upconversion to a 440.2 MHz central carrier. The unit was clocked using the radar Zyfer GPS site standard and 10 MHz phase locked crystal. Triggering was using the "Zenith RX gate" line which is normally used for gated sampling experiments. This trigger was aligned to the start of the sweep (100 usec prior to the pulse) and of 10 usec duration. The latency through the AWG unit produces some time offset from what would normally be considered the tau=0 edge of the outgoing radar pulse. As such we really should do an appropriate range calibration for obtaining absolute altitudes.

The NI 5542 AWG settings for this set of experiments were as follows :

  • trigger = PFI0

  • edge = rising

  • mode = stepped

  • iq_rate = 10000000

  • carrier_enable = True

  • carrier_freq = 30000000.0

  • analog_filter_freq = 0.0

  • fir_filter_type = flat

  • fir_filter_param = 0.40

  • prefilter_i_gain = 0.7

  • prefilter_q_gain = 0.7

  • cic_filter_gain = 1.0

with the underlying chip rate being 10 MHz but subject to interpolation, upconversion, and filtering.

Transmitter Linearization

The response of the transmitter to several different amplitude levels for a 100 usec pulse length is shown in the following figure :

 

 

For each pulse from the first the amplitude should decrease by 3 dB based on the AWG input value. The response of the transmitter shows amplitude saturation relative to about one quarter of the AWG maximum output level. The response below this level is somewhat non-linear with a fairly large dynamic range (25 to 30 dB). The general characteristic of the response is consistent for different pulse lengths and power levels. The specific fall off rate with decreasing drive amplitude appears to be fairly pulse specific.

A very basic linearization model was constructed from a small number of data points and several pulse lengths. Blue points are data with the line showing a linear interpolation by the model. The 100 usec short pulse response is shown :

 

 

Application of this linearization model to predistortion of the AWG IQ data resulted in some improvement in linearity :

 

 

Variation is now closer to the correct levels but with some notable problems being evident near the corner as the transmitter comes out of saturation. A more complete model will now be constructed using much finer sampling of the response. This improved model will be used for the experiment.

AWG Phase Stability

The AWG unit was locked to the GPS 10 MHz reference oscillator and showed a high level of phase stability from pulse to pulse. Earlier deterministic phase glitches appear to be gone now that we are properly locked and triggered by the timing system. Pulse to pulse data shows up in the same location in IQ space relative to the digital receivers and their A/D clock.

Modulator Deck Test

We were successful in use of the modulator deck to support a 1 msec inter-pulse period with a 40 usec outgoing pulse. Total developed peak power was 1.5 MW.

Initial DoublyInfinitePerfectCode Test on 2012-03-06

A short initial test of a Doubly Infinite Perfect Code was attempted (mhr_p_3000_112_2_f4402).

A pre-existing timing pattern for a 3000 usec IPP and 140 usec RF gating interval was used with the AWG. The specific parameters of the code sent were as follows :

  • IPP : 3000 usec

  • pulse length : 112 usec

  • baud length : 2 usec

  • Approximate peak power : 1.97 MW

Note that the power meter has a hard time with these waveforms. There is also a calibration diode injected at the end of the sweep raster.

R code used to create this code is as follows:

        # Doubly infinite (-\infty,...,\infty) perfect codes
        # according to Lehtinen et al. (2009)
        #
        #
        # Lassi Roininen, SGO, March 2012
        #
        
        
        # Set of polynomial coefficients
        
        barker2 <- c(+1,-1)
        barker3 <- c(+1,+1,-1)
        barker4 <- c(+1,+1,-1,+1)
        barker5 <- c(+1,+1,+1,-1,+1)
        barker7 <- c(+1,+1,+1,-1,-1,+1,-1)
        barker11 <- c(+1,+1,+1,-1,-1,-1, +1,-1,-1,+1,-1)
        barker13 <- c(+1,+1,+1,+1,+1,-1,-1,+1,+1,-1,+1,-1,+1)
        
        # Let us make a perfect code out of some polynomial coefficients
        polycoeff <- barker5
        
        # Zero pad for Fourier transform
        Nfft <- 2^10
        polycoeff_padded <- c(polycoeff,rep(0,Nfft-length(polycoeff)))
        
        # Generate perfect code in Fourier domain
        perfect_code_fft <- fft(polycoeff_padded,inverse=FALSE)/Mod(fft(polycoeff_padded,inverse=FALSE))
        
        # Generate perfect in time domain
        perfect_code_doubly_infinite <- fft(perfect_code_fft,inverse=TRUE)/Nfft
        
        # Numerical truncation
        Truncation <- 30 
        perfect_code_truncated <- c(perfect_code_doubly_infinite[(Nfft-Truncation+length(polycoeff)):Nfft] ,perfect_code_doubly_infinite[1:Truncation])
        
        # Plot and see the codes
        
        graphics.off()
        quartz()
        par(mfrow=c(3,2))
        
        plot(Mod(perfect_code_fft),type='l',xlab='Frequency',ylab='Mod(FFT(code))')
        title("Fourier domain modulus")
        plot(Mod(perfect_code_doubly_infinite),type='s',xlab='Time index',ylab='Modulus of code')
        title("Modulus of periodic perfect code by FFTs")
        plot(Re(perfect_code_truncated),type='s',xlab='Time index',ylab='Real part of code')
        title("Code real part")
        plot(Im(perfect_code_truncated),type='s',xlab='Time index',ylab='Imag part of code')
        title("Code imaginary part")
        plot(Mod(perfect_code_truncated),type='s',xlab='Time index')
        title("Modulus of truncated code in time domain")
        plot(Mod(fft(perfect_code_truncated)))
        title("Modulus of truncated code in Fourier domain",xlab='Frequency')

Using the same Python objects which generate the pattern we use for transmission (as opposed to the R theoretical plots), theoretical amplitude, IQ, and power spectral plots with a perfect radar are shown below, assuming 1 MHz complex sampling of 2 usec baud coding (as created by plotDoublyInfinitePerfectCode.py in SVN at software_radar/control/timing/trunk/src/modules) :

 

 

Receiver sampling was done for 60 seconds (just to demonstrate) at 1 MHz IQ RF bandwidth (TX and RX ; non simultaneous). Example plots are shown :

 

 

The baud rate is very short for this one and the receivers don't have a large amount of oversampling. Although outer envelope amplitude modulation is achieved it looks like the inner modulation isn't too effective. Phase modulation appears good but there are a couple of orthogonal outliers which show up in the middle of the pulse.

It appears from later testing that we were probably cutting off the last 5 usec of the pulses associated with AWG output for these experiments. This is being corrected for the next series of tests.

  • No labels