Linrad support: Interfacing WSE units.
(Aug 07 2005)

The simple serial interface of WSE units

In order to avoid a clock with could produce spurious signals, the WSE units are designed to use a level controlled serial interface. The clock is one of the serial interface wires and it is at rest during normal operation. Figure 1 shows the schematic diagram. DATA, CLOCK and STATUS are connected in parallel for all units but select is a separate line for each unit.

The discussion below might be confused by the different meanings of status In the digital world the meaning of status can be, for example:

  • 1. A label on a wire routed between several d-sub pins.
  • 2. The contents, 0 or 1 in a digital bit.
  • 3. The voltage on a pin.
  • 4. The number stored in a digital word.
  • 5. The number formed by the voltages of several pins.
  • 6. The name of part (the status port) of the standard "printer interface" of a PC computer.


In the following discussion, in fact, "status" takes on each of the above meanings. To try to reduce the reader's confusion, "STATUS" [all caps] will be used when referring to the "Status Line" [pin 3] of the WSE units. For other uses, the word will be in small letters, and the text will try to make the context clear.



Fig. 1.The schematic diagram for one control unit.


The way of operation of the WSE interface is like this:

  • 1. Set SELECT high. This will clock whatever data that resides in the first 74HC174 into the second one. (The data may have been stored in advance, in which case the frequency will jump directly to the desired frequency. You would then go directly to step 10, but there would be no verification that cables are connected.)
  • 2. Set CLOCK low.
  • 3. Set DATA high or low as desired.
  • 4. Wait for a while.
  • 5. Set CLOCK high. The rising edge of the clock will shift the data in the first 74HC174 one position upwards and store the status of the DATA line so it will appear on Q1. STATUS will go low if Q1 is made high. The idea is that only one WSE unit should have its select line high and therefore only the 74HC03 ot this particular unit can pull the STATUS line. The NAND gate needs both inputs high in order to go low. STATUS can be monitored by the computer and since the control word that will be stored in the second 74HC174 always should have one bit high there will always be a chance to verify that the unit works and lowers STATUS when it should.
  • 6. Wait for a while, then go to 2 if more bits should be stored.
  • 7. Set select low.
  • 8. Wait for a while.
  • 9. Set select high to clock the new data into the second 74HC174.
  • 10. Wait for a while.
  • 11. Set select low.


Linrad has one option in the main menu: "Z=Hardware interface test". This test is located in the source code file hwaredriver.c together with the other hardware related routines. If you want to control more hardware from inside Linrad or if you want to use the parallel port pins differently, add your own files users_hwaredriver.c and/or users_hwaredef.h look at users.c for information about what the hwaredriver.c routines do. Make users_hwaredef from users.h with pin definitions of your choice if you want to use the default hardware control routines of Linrad but with other pin configurations. (users.h and the users_hwaredef.h option is new from Linrad01-19) You may for example control more than 8 units by adding a decoder on the parallel port pins. This way you can control up to 255 units.

After adding users_hwaredriver.c or users_hwaredef.h you must run configure to have your own files replacing the contents of the default files.

The default version of "Z=Hardware interface test" will generate a screen like the one in fig. 2.



Fig. 2.The default hardware interface test.


To check your system, press the keys "0" to "7" to set up the address of the unit you want to check. This way you should arrange for SELECT of one and only one WSE unit to go high. In fig. 2 bit 4 corresponding to pin 6 is set. At the right of address status line you can read RX10700 because hwaredef.h has defined RX10700 to be 16 (default)

The status of the input ports is in the bottom of fig. 2. The column for pin 10 is red. This is because hwaredef.h has defined this to be the status pin, the one connected to the STATUS line (default). By pressing "C" you can toggle the clock pin between H and L. When it goes from L to H the data of the STATUS line should appear on the screen for the input pin used. Note that pin 11 is inverted while the other pins are not, a peculiarity of the PC parallel port. The STATUS line needs a pull up resistor to keep the line high when none of the open colletors in the 74HC03s wants to pull the line low. The pull up resistor is usually present internally in the PC, but sometimes only pin 10 has a pull up resistor. (That is why Linrad uses pin 10 for default) The clock transition H to L has no effect but L to H will produce the result of fig. 2 for the pin in use if the DATA line is H.

If you want to investigate what goes on on the serial interface lines, do not use a voltmeter on the d-sub. There is +15V and -15V on the pins and the unit will fail if these voltages reach the serial interface lines. You may also damage the PC parallel port. If you want to monitor what happens, open the box and measure the voltages on the ICs.

Default pin connections

The 9-pin d-sub connector should be connected like this for the RX10700, RX70 and RX144 units:

pin 1 = SELECT
pin 2 = DATA
pin 3 = STATUS
pin 4 = -15V DC, 0.65A
pin 5 = +15V DC, 0.65A
pin 6 = Clock
pin 7 (Not connected)
pin 8 (Not connected)
pin 9 = DC ground


The RXHFA unit contains two control units like figure 1 so it needs two select lines like this:

pin 1 = SELECT freq
pin 2 = DATA
pin 3 = STATUS
pin 4 = -15V DC, 0.65A
pin 5 = +15V DC, 0.65A
pin 6 = Clock
pin 7 = SELECT gain
pin 8 (Not connected)
pin 9 = DC ground


The DATA, STATUS and CLOCK pins are connected in parallel with the same pins on all the WSE units and any other hardware that you might want to control via this simple interface from Linrad. The SELECT pin may be connected to one of the 8 data bits of the parallel port in case 8 units or less are used, otherwise the 256 different values obtainable from the 8 bits may be decoded by some suitable hardware.

In case you want to use the default drive routines that are contained in hwaredriver.c of the Linrad source code, connect the parallel port like this:

SELECT (RX10700) = pin 6
SELECT (RX70) = pin 7
SELECT (RX144) = pin 5
SELECT (freq,RXHFA)= pin 3
SELECT (gain,RXHFA)= pin 2
DATA = pin 17
STATUS = pin 10
(or as specified in users_hwaredef.h)
CLOCK = pin 1
DC ground = pin 23