WAVEFORM

From ICE Enterprises
Jump to navigation Jump to search

creates signal waveforms of various shapes

<out>   Name of output file
<form>  Format of output file (SF, CF, SB, etc.)
<elem>  Number of elements in output file
<shape> Shape of waveform [DEF=SIN]
<amp>   Waveform amplitude
<freq>  Waveform (IF) frequency (Hz)
<phase> Waveform phase offset (fractions of a cycle)
<start> Abscissa start time
<delta> Abscissa delta

Keyword Only Parameters:
  [CHIRP]    - Chirp the frequency by this accumulated amount at each /TL=n
               boundary. [DEF=0.0]
  [MEAN]     - Adds this amplitude offset to all waveforms. [DEF=0.0]
  [SDEV]     - WhiteNoise standard deviation parameter. [DEF=<amp/log(10)>]
  [VARIANCE] - WhiteNoise variance parameter. [DEF=<sdev**2>]
  [SR]       - Overrides <delta> by specifying Sample Rate in Hz. (Since NeXtMidas 3.3.2)
  [DURATION] - Overrides <ELEM> by specifying the duration of the file in sec.
               Since number of elements must be an integer, this will round up
               to the nearest sample, as required.       (Since NeXtMidas 3.3.1)

  [RF]       - Overrides <FREQ> (which is IF) by giving RF of the signal in Hz.
               This must be used with [VRF] and [BW].    (Since NeXtMidas 3.3.1)
  [VRF]      - Center frequency of the simulated tuner in Hz. This is usually
               combined with [RF] and [BW], but can be used on its own as it
               causes the VRF= key to be set in <OUT>.   (Since NeXtMidas 3.3.1)
  [BW]       - Bandwidth of the simulated tuner in Hz. Although intended for use
               with [RF] and [VRF] this can be used on its own as it overrides
               <DELTA>.                                  (Since NeXtMidas 3.3.1)


This primitive generates the following shaped waveforms:
  Sine     - Sinusoid with MAX <amp> and MIN of -<amp>
  CoSine   - CoSinusoid with MAX <amp> and MIN of -<amp>
  Square   - Square waveform with MAX <amp> and MIN of -<amp>
  Triangle - Triangle waveform with MAX <amp> and Min of -<amp>
  SawTooth - Sawtooth or RIGHT triangle waveform with MAX <amp> and MIN of -<amp>
  Pulse    - Single sample pulse of <amp>
  Constant - Constant values given by <amp>
  Zero     - Same as CONSTANT with all zeros
  LRS      - Efficient noise generator using a linear recursive sequence
  White    - White noise algorithm with standard deviation of <sdev>. See note below.
  Ramp     - Ramp that increments by one with MAX <amp>-1 and MIN of -<amp>.

If you want to adjust the RAMP increment using <freq> and <delta>, use SAWTOOTH.

The most current list of waveforms may be listed as follows:
  nM> invoke list nxm.sys.prim.waveform.shapeList
  nM> results list

The /RT or /THROTTLE= switch can be applied to simulate a throttled data source.
In FULL mode, the primitive runs as fast as it can.  In REALTIME mode the data
is throttled to be produced at a rate of 1 element per <delta> second(s).
In the BLOCK mode, no data is produced.

Note that the data values for White noise will often be 3 to 4 times the stdDev.
Make sure the amplitude/stdDev is scaled correctly for the output data type to
avoid clipping (if necessary).  The command line <amp> is scaled by 1/log(10) to
set the default <sdev>.  If the user supplies both <amp> and <sdev>, the ratio
will be preserved when setting amplitude and shape with realtime widgets.

Note that, unlike X-Midas, the units of the command line <phase> are fractions
of a cycle, that is, 0.5 rather than 180.  The PHASE OFFSET widget is expressed
in terms of fractions of a cycle as well.

Examples:
  1. Simulate 10 seconds of a CW signal at 300.1 MHz as it would look in a
     receiver with a bandwidth of 1 MHz that is tuned to 300 MHz.

       nM> WAVEFORM myfile.tmp FORM=CF ELEM=16M SHAPE=SINE &
                               RF=300.1e6 VRF=300e6 BW=1e6 &
                               DURATION=10
     or

       nM> WAVEFORM myfile.tmp FORM=SF ELEM=16M SHAPE=SINE &
                               RF=300.1e6 VRF=300e6 BW=1e6 &
                               DURATION=10

Switches:
  /DP               - Use double precision buffers [DEF=single precision] or
                      [DEF=double precision] if <out> is type double]
  /EXACT            - use slower but exact SIN/COS algorithm
  /RT               - RealTime mode
  /SEED=<num>       - Set seed number [DEF=-1]
  /THROTTLE=<mode>  - Data Throttle Mode (RealTime,Full,Block). Overrides /RT.
  /TL=n             - Transfer Length elements [DEF=4096]