Transverter and VFO Assignments and UHFA.CFG

If you are interested in keeping a simple method of indexing the VFO assignments, the ARRL bandplan can be used as suggested in the UHFA.CFG example. CTRL ALT  are the key modifiers used to select VFOs. CTRL ALT A selects the 50 MHz VFO, which is VFO 0 (zero) and is associated with Transverter 0 (zero). This works because the keyboard variables are assigned to work this way.

The DSP-10 is a TWO meter (144 MHz) transceiver, and the default configuration file assigns transverter 1 as "no external transverter."  This file also assigns VFOs  16. 17,18,19 and 20 to 144 MHz as the default. These VFOs correspond to the keyboard commands CTRL-ALT-B,  CTRL-ALT-1, CTRL-ALT-2, CTRL-ALT-3 ,CTRL-ALT-4 and CTRL-ALT-5. Six meters is assigned to VFO 0 (zero) , and to a fictitious Transverter 0 (zero) as the default, VFO 9 and Transverter 9 is assigned to 10 GHz transverter and VFO 15 and Transverter 15 are assigned as the Audio Processor. This last VFO and Transverter are a special case and should not be moved or modified.

The four default transverters (0, 1, 9 & 15) were selected as examples that cover many of the standard transverter situations of up converter (#0), no converter (#1), down converter (#9), as used in receive.  These transverters can be copied to other numbers and customized.

If you have a few different transverters you want use, then all that is needed is to assign a transverter and VFO for each of them.

If we want to set up transverter definitions for 1296, 2304. 10368 and 24192 then from the table below,we will choose CTRL-ALT-E, CTRL-ALT-F, CTRL-ALT-I and  CTRL-ALT-J, corresponding to 5,6,9 and 10. This will make the ARRL band plan VFO keys correspond to VFOs with the same numbers as the transverters. Note that this is not a requirement. Transverters can take any number from 0 to 20, and there can be multiple transverters for a single band. Likewise there can be any number of VFOs assigned to a single transverter.













These definitions assume a 144 MHz IF frequency and common transveter LO frequencies.

*** Transverter definitions (memch_tvtr) ***   

tvtr 0  |50 MHz|  0 -1 -94000000.0 1 | |  20.000 0 0 0.0 0
tvtr 1  |144 MHz|  0 -1 0.0 1  | |  0.000 0 0 0.0 0
tvtr 5  |1.2 GHz|  0 -1 11520 00000.0 1  | |  30.000 0 0 0.0 0
tvtr 6  |2.3 GHz|  0 -1 2160000000.0 1  | |  30.000 0 0 0.0 0
tvtr 9  |10 GHz I|  0 -1 10224000000.0 1  | |  28.000 0 0 0.0 0
tvtr 10  |24 GHz J|  0 -1 24048000000.0 1  | |  18.000 0 0 0.0 0
tvtr 15  |Audio In|  0 1 0.0 1  | |  0.000 0 0 0.0 0

The transverter gains have been assumed to be 20.0, 0.0, 30.0 dB, etc.

*** VFO definitions (memch_vfo) ***   

vfo 0 0 0 144125000.0 1 0 0.0 0 0 0 0     (50.125 MHz USB)
vfo 1 1 0 144200000.0 0 0 0.0 0 0 0 0     (144.2 Mhz CW)
vfo 5 5 0 144100000.0 1 0 0.0 0 0 0 0     (1296.1 MHz USB)
vfo 6 6 0 144100000.0 7 0 0.0 0 0 0 0     (2304.1 MHz LTI)
vfo 9 9 0 144100000.0 5 0 0.0 0 0 0 0     (10368.1 MHz PUA43
vfo 10 10 0 144100000.0 1 0 0.0 0 0 0 0  (24192.1 MHz CW)
vfo 15 15 0 0.0 1 0 0.0 0 0 0 0                  (Audio Processor USB)
vfo 16 1 0 144100000.0 0 0 0.0 0 0 0 0    (144.1 MHz CW)
vfo 17 1 0 144200000.0 1 0 0.0 0 0 0 0    (144.2 MHz USB)
vfo 18 1 0 144250000.0 1 0 0.0 0 0 0 0    (144,250 MHz USB)
vfo 19 1 0 146580000.0 3 0 0.0 0 0 0 0     (146.58 MHz FM)
vfo 20 1 -600 146940000.0 3 0 0.0 0 0 0 0  (146.94 FM -600 offset)

The format for the first six entries in a VFO line is
vfo number   tvtr   FM_offset   last_freq   last_mode
   number is the VFO number
   tvtr is the transverter number
   FM_offset is the transmit frequency offset for FM in kHz
   last_freq is the 2-meter frequency in Hz
   last_mode is 0=CW, 1=USB, 2=LSB, 3=FM, 4=LHL7, 5=PUA43, 6=EME2, 7=PUA43 and 8=LTI.

The entries after the last_mode are for FM only

Some background on tvtr, VFO and memories

Computers are not any smarter than the information that is available in  their program. In order to display the frequency and signal strength, we use the  tvtr definition to describe what  is connected to the DSP-10 antenna port.  This information  includes the frequency of the transverter conversion oscillator, whether it is high or low side injection and any conversion gain or loss between the antenna and the DSP-10 and a few other details.

VFO's specify (select) the frequency, mode, a transverter, and for FM, a transmit offset. Each VFO is based on a TRANSVERTER entry in UHFA.CFG. 

Memories are descriptive files we use to store information about a VFO that let us modify or replace the behavior of a VFO. The VFO then assumes the identity of the descriptive file, and we call it a memory


Mike Gain Equalizer

For SSB, the output power "Xmit Pwr" should be 95 or lower, to be fool proof.  This allows the PEP level to be about the same as CW, and a smidgeon less than FM. For any mode except USB and LSB, the power can be set all the way to 100. (In fact it can be for SSB as long as you NEVER clip---more on that later )  Warning 17 results from setting the power above 95 in SSB.

The software "Mike Gain" is set by transmitting in SSB and watching the Clipping display that replaces the S-Meter in SSB transmit.  A few dB of clipping are OK, and even 6 to 10 on occasion.  The maximum clipping possible is 12 dB and if you exceed that value, all 5 red bars come on. This is not allowable and indicates the "Mike Gain" is too high.

If the Mike Gain is below 77, the hardware audio gain is set too high, and clipping in the audio preamp or A/D converter.  This needs lowering of the preamp gain. I'm sorry if it is underneath the DSP box!

If the Mike Gain is over 94 or so, the DSP is adding some noise in an attempt to get enough mike signal. This is OK, but if the hardware mike gain can be increased, it would be best.

The ideal Mike Gain setting is around 86, and if it is in the range of the hardware mike gain setting, this would be a good level to use.  Set the hardware gain for a few dB of clipping.

If there is no clipping, the clipping display is blank.  The bars are 1 dB each, and 12 dB is two red bars. If no clipping ever occurs, you are not getting full PEP. This is OK, but lowering the Xmit Pwr is a preferred way to lower the output.

Don't forget the microphone equalizer, SCRL-F5.  My Radio Shack 1172D mike clearly needs dome treble boost.  For SSB, it seems like settings of 3, -3, 0,  1, 3, 5  dB (top to bottom) are the right idea. It is hard to listen to yourself and tell much, so this needs refinement.

All this applies to FM as well. The same Mike Gain setting will produce the same amount of clipping. The deviation for a clipped level is set at +/- 5kHz now. I plan to add an adjustment in the software for this.  The equalizer settings may be slightly different for FM. I liked 3, -3, 0, 2, 5, 7 dB.

For info, the block diagram for SSB, in order of processing, is:

  A/D Converter
  Mike Gain control
  Equalizer and 300 to 3000 Hz filter (all one)
 Xmit Pwr gain control
  Low-Pass filter 3 kHz
  SSB generator at 3 kHz
  Last-ditch clipper.
  D/A converter

The last-ditch clipper should never clip. It prevents 16 bit wrap-around that causes severe distortion, but it does flat-top the SSB signal and will cause some splatter within the  pass-band of the xtal filter . If the Xmit Pwr is 95 or less, this clipping will not happen. To watch for it, bring up the bar graphs with SCRL-F3. The D/A bar graph, in transmit, has an overload  indicator. This is to the right of the 15th bar and is bigger with white outline. Raise the XmitPower above 95 and you can see it when clipping (you may also see it when first going into xmit---this is OK). This overload indicator should ALWAYS stay off!

By the way all the bar graphs, including the S-Meter are an accurate 6 dB per bar, and catch the peak signal to occur since the last update of the graph. The update rate is about as fast as the eye can follow, I don't remember exactly what.


all (172 of them) the key commands are in the UHFA.CFG file.

 Here are the user hints:

1- As usual, run the UHFA.EXE program once to get the keyboard entries added to the CFG file. They are all at the bottom.

2- All variable names start with k_ and most of them can be figured out from the name. For instance, k_freq_m100 changes the frequency by minus 100 Hz, and k_freq_p1mhz changes it by plus 1 MHz.

3- To change any key, find the hex code for the key combination (see 6 below) and edit this into UHFA.CFG. These are entered as hexadecimal numbers, including the leading "0X"  as this can be easily changed back to bits to be sure of the combination (for debugging).  To enter a changed code, you can just edit in the new value, leaving the 0X to tell the program that the value is in hex.

4- As usual, the key definition will always come from UHFA.CFG, unless you run without this file. In that case, all the defaults will be restored.  If you ever would want to restore all defaults except the keyboard, just edit the a CFG file to leave only the k_  lines.  The configuration  is default for all values, except those read from the CFG file.

5- The variables kbd_alt1, 2 and 3 are not needed any more. They are left in the CFG file for now, so that you can see what the values were, but they do nothing.  If any of these were 1,  you can duplicate their effect as follows:

  a-  kbd_alt1  Reverse the values for keys k_freq_m10 and k_freq_m100
                       and for k_freq_p10 and k_freq_p100
  b-  kbd_alt2  Change k_window_t_c to 0X111157
                       Change k_window_t_l to 0X101177
                       Changek_disp_t_c to 0X111559
                       Change k_disp_t_l to 0X101579
  c-  kbd_alt3  Change k_rf_gain_m to 0X104100
                       Change k_rf_gain_p to 0X104200

6- To obtain any key code for  the CFG file, change startup_detail in the .CFG file to 1, start the UHFA.EXE program and just before the screen appears, you have a chance to enter any key, except "Enter" and read the code value from the screen.  This goes on until you hit "Enter" and then the regular UHFA program runs.


The data seen in the DSP-10 includes both signal and noise powers. This is about the same as S/N if S is much bigger than N. But not s for small S/N.  Attached is a curve to convert between the two.

The arithmetic:  Starting with x=S/N in dB, we change to power by z=10^(x/10) where the hat ^ is exponentiation, i.e., 10 to the x/10 power.  z is s/n where s and n are powers (not dB's). Next convert the s/n to (s+n)/n by adding 1.0, and then converting back to dB by y=10*log10(1+z), where log10( ) is the base 10 logarithm. The plot is y vs x.

For instance, if  x=-6 dB signal to noise ratio, z=10^(-0.6)=0.2551. Then (s+n)/n=1+z=1.2551, which can be expressed in dB as 10*log10(1.2551)=0.973 dB.

eme-2 notes

There is a Noise Blanker, based on the average height of the spectral line. Bad data prints an Asterisk, as above. Watch the entries Pave=xx
and P=zz in the dialog box. These are the long term average of the spectral line, and the last average of this line. This is adjustable from the
configuration file. The 'code_nb_ratio' value defaults to 1.1, meaning that data is thrown out if P is greater than 1.1 times Pave. Values like 10 turn the feature off. A value of 1.0 throws out half the data.
Random frequencies are used in transmit.  This is set by eme_freq_range in the .cfg file (default 200.0 Hz total spread )

All T/R delays are settable in the .cfg file. Note that dly_emet2r is in addition to the 2 second pulse and dly_ant2amp and dly_amp2xmit.  All delays are in milliseconds.  Don't make the delays rediculous, or you won't get all your chores done in 5 seconds and will only get one transmission every 10 sec!

Doppler offsets include the transceiver LO freq, both at the bottom line and for setting the EME2 transmit freq.  The receive freq is nominally 900 Hz above the displayed freq (think of it as USB). It goes + or - based on the randomizer. The transmit freq can be + or - from this based on Doppler.  It all works out so that the EME return will (should?) always come out at the red line at 900 Hz.

The other 2 small red lines are for the limits of the data listed in the dialog box.  The box numbers are the long term average S+N/N.  For 900 Hz, this is also translated into an estimated signal level. Thisis found from the N in the second adjacent spectral bins (both of them). Assuming a noise temperature of eme_te in the .cfg file, the receiver noise is subtracted off (that is the N in the second adjacent) and we are left with an estimate of  S.  This gives us an S meter that runs at -180 dBm or so signal level.

In EME2 there is auto ID at 25wpm every 9 min.  It runs from the id in the .cfg file.  Enter something, or you get "DE ?"

There is now the ability to disable modes from the .CFG file.  Look in .cfg for instructions.

It also adds some little features, like there is a LHL7 info box (Alt A) for transmit, as well as receive. This is useful for figuring out which
character is being sent!

Also, in my tests with 2 dsp-10's I was having good success in using a 2 second symbol period for LHL7. You might play with it. Along those lines, my laptop does not make ticks loud enough to hear in clock setting (Alt K) but I have no trouble getting the time synced by listening to WWV and watching the seconds change in the clock set display (not the lower left corner).When the number seems to change at the same time as WWV ticks, it is plenty close.

LHL7 MODE: (not supported after UHFA.CFG V 3.80)

A quick summary of LHL7, particularly for the decoder:

There are two dialog boxes. After you get to LHL7 mode (Alt M) use Alt A to bring up the informational box on the right. This can be left open--maybe it should just be an automatic part of LHL7.  It shows the operating parameters and the measured S+N/N.

"time_tag" is the seconds after the top of the minute that was attached to the last measurement. It is not the current time, as it takes about 3 seconds to process the data, and if code_nx2 is greater than 1 the measurement length must be added in.

"bigi" is the strongest of the 7 tones for the last measurement period. They are numbered 0 for 600 Hz, 1 for750 Hz, ...

"mcbyte" is the sequence of tones that have been decoded. This is compared with the Morse code table. Any time it is found not possible to decode a character in the future, the code is reset.  A reset code is a single 1, as this is a prefix character to know where the number begins. For instance, all characters must start with a dot or a dash, and we will not accept a x3 at the beginning. This process continues as the mcbyte is built up.  If you watch it, the incorrect byte will show up and it will then dissapear and be followed by either "1", "10", or "11". Due to the changing of tones, over the months, and my desire to not redo the character table, the mcbyte numbers are not quite the same as the bigi values. For mcbyte, 0=dot, 1=dash, 2=x2, 3=x3, 4=x4, 5=x5 and the EOC does not show up in mcbyte.

"Bins per tone" refers to the 9.375 Hz spaced filter bins. 1 means that only the bin at the center frequency will be examined. 3 means that the center and one on either side of it will be examined.  This continues up to 9. If these are averaged, it is fully equivalent to having a wider FFT bin. There are guard bins on either side of the tone bins, since the windowing causes widening of the signal. Outside of the guard bins are four noise measurement bins that are averaged together to estimate the noise level. Thus the frequency bins for "3 bins per tone", for the 600 Hz tone would be:

Bin 60   562.5 Hz  Noise
Bin 61   571.9 Hz  Noise
Bin 62   581.2 Hz  Guard
Bin 63   590.6 Hz  Tone signal
Bin 64   600.0 Hz  Tone Signal
Bin 65   609.4 Hz  Tone Signal
Bin 66   618.7 Hz  Guard
Bin 67   628.1 Hz  Noise
Bin 68   637.5 Hz  Noise

Bins 69 to 75 are not used and the 750 Hz related bins start at 76.

Higer numbers of "Bins per tone" use more of the in-between bins until they are almost all used.

"Peak" and "Ave" refer to the way that the the Tone signal bins are treated. Either the average of all of them is compared with the noise, or the largest
power is. For wide band signals, like rain scatter, average would be best. For drifting signals, peak might be--I don't know.

To change any of the parameters: When in LHL-7 mode, hit Alt B.  This brings up a new item--a modal dialog box. There are two classes of items. The radio
button families and the data entry line. You select the active line with the up/down arrows. They go round-and-round in either direction. The active line is in white (as are the explanation lines). When you are on the line of a radio button that you want to change, hit the SPACE bar. It will change within a particular family.

The data entry is very simplistic. When you are on the data entry line (ie, when it is white), you can either BACKSPACE or enter data.

An ENTER will close the box, no matter where you are in it. The values last selected will be implemented. These will then show up elsewhere on the screen, like in the information box.

I think I forgot to implement cancel (ESC)--next time.

For Receive: First set your clock (Alt K) so that the seconds start at the top of the minute. Bring up the info box with Alt A. Set parameters with the
modal dialog box, Alt B. Sit back and wait. Use the waterfall as a tuning indicator, if there is enough signal. The results will be typed on the
bottom 1 or 2 lines of the text area. You can type transmit data at any time, and it will be on the top line.

Multiple 600 Hz EOC are printed as a hyphen. It is also easy for noise to produce this one (as is the case for E and T--Words like ANT and EAT and TEA have been seen from noise).

Timing: code_nx2 can be 1, 2, 5, 10 or 30, which when doubled gives symbol periods of 2, 4, 10, 20 or 60 seconds. This is set in the Alt B dialog box. Values of spec_ave are constrained to be those that fit in the symbol period, and are multiples of 18. For instance, if code_nx2 is 5, the time per symbol is 10 seconds. The only allowable spec_ave's are 18 and 90. You can see what the allowable ones are by changing spec_ave up and down (Alt F4 and Alt F3) as you change the value of code_nx2. (You must exit the dialog box in order to change spec_ave--that is because the dialog box is modal. Modal boxes are a lot easier to program than the non-modal ones, like the info boxes. That is why there is no interaction with the info boxes).

Speed: The LHL7 is the first mode where processor speed might be a problem. This will be solved if we go to a hardware trigger every second to the DSP. The problem is that a lot of time is spent asking the question, "what time is it?" in order to start the DSP close to the even 2 second mark. This is a problem during screen updates, and if the update is not finished in about a second, it is possible to loose a trigger.  It will pick up on the next 2 sec since there is no data to update the screen with, but half of the data is lost. Not good.

1/2 Line: Your choice: 29 characters big, or 118 characters small. Both of them will scroll when the lines are full.

Table of Contents

Valid HTML 4.01 Transitional