Frequency Programming
The Simoco FX5000 Base Station
For 2 Metres

By David Osborn - GD4HOZ

 

The Synthesiser

 

The FX5000 uses the GEC/Plessey NJ8820 synthesiser IC. This device has the means to interface to a PROM or EPROM to retrieve frequency data stored therein.

The frequency data takes the form of 8 consecutive bytes which, between them, supply the values for 3 variables known as 'R', 'A' and 'M'.

These values are written into internal registers to control the counters which do the work of frequency division.

The 'R' counter divides the external reference frequency down to a value which is usually half the channel spacing (e.g. 6.25KHz for a 12.5KHz channel). Notice, though, that the Reference counter is followed by a fixed, divide-by-two, counter. Because of this, our calculations will focus on dividing the reference oscillator by a value of 'R' which results in a frequency equal to the channel spacing.

The 'M' and 'A' counters perform the task of dividing the external VCO frequency. Since the division of the VCO frequency down to, say, 6.25KHz cannot always be achieved using an even number as a divisor, the 'A' register controls a switchable prescaler which, in the case of the receiver, alters the prescale factor from 80 to 81 by means of the Modulus Control output. More on this topic follows.

 

 
     
 

NJ8820 Data Format

 

Byte DS2 DS1 DS0 D3 D2 D1 D0
0 0 0 0 M1 M0    
1 0 0 1 M5 M4 M3 M2
2 0 1 0 M9 M8 M7 M6
3 0 1 1 A3 A2 A1 A0
4 1 0 0   A6 A5 A4
5 1 0 1 R3 R2 R1 R0
6 1 1 0 R7 R6 R5 R4
7 1 1 1   R10 R9 R8

 

The table shows how the bits making up the values of R, A and M are split up between the 8 data bytes required by the synthesiser when stored in an EPROM. Most notable is the fact that the bits making up the M value are left-shifted by two bits.

 

FX5000 notes to bear in mind

 

General Notes:

 

The EPROM data is split up into two types: Normal (customer data) and test data.

Each of these groups is further split into transmit and receive frequency data. This gives rise to four groups of frequency data, viz:

 

  1. Customer transmit frequency data
  2. Customer receive frequency data
  3. Test transmit frequency data
  4. Test receive frequency data.

Mysteriously, the existing EPROM in my FX5000 has no data in the locations that would be appropriate for channel zero. I didn't attempt to reason this out, and simply followed the pattern. Therefore, the first channel data values begin at 0x0008 for the transmitter, and 0x0408 for the receiver (8 bytes per channel, remember).

 

 

Transmitter

Receiver

 

  1. The TX Oscillator runs at Ftx+20MHz. This frequency is fed to the modulation loop, where it is shifted back down to the correct frequency.
  2. TX Normal Channels in EPROM address range 0000h to 03F8h
  3. TX Test Channels in EPROM address range 2000 to 23F8h
  4. Synthesiser prescaler divides by 64 or 65

 

  1. RX Local Oscillator is at Frx-21.4MHz
  2. RX Normal Channels in EPROM address range 0400h to 07F8h
  3. RX Test Channels in EPROM address range 2400h to 27F8h
  4. Synthesiser prescaler divides by 80 or 81
  5. The data bits between the EPROM and the Synthesiser are reversed on the PCB (must have been easier to lay-out the print that way!)

 

Worked Example

 

Transmitter Calculations

 

Receiver Calculations

 

Let the desired TX frequency be 145.6250MHz (GB3GD):

Calculate the value of 'R' - the divisor for the reference oscillator. We are looking for a result which is equal to the value of the channel spacing (12.5KHz in our case). The reference divider is followed by a fixed divide by 2, yielding the final desired result of half the channel spacing.

R = Fref / Channel Spacing
R = 1.25MHz / 12.5KHz
R = 100

Next we calculate an intermediate value 'N'. This is the value by which the input sample frequency must be divided in order to get a frequency equal to half the channel spacing.

N = (Ftx + 20) / 6.25KHz
[Ftx is the transmit frequency]

N=(145.625MHz + 20) / 6.25KHz
N=165.625MHz / 6.25KHz = 26500

Using 'N', Calculate 'M' and 'A':

M=N / TX Prescaler
[Recall that the TX Prescaler divides by 64]
[M=Integer Part of (26500 / 64), A=The remainder]

M=26500 / 64 = 414 with a remainder of 4

So: M = 414, and A = 4

We now have R, A and M. These are the three values required by the NJ8820.
To simplify matters, convert R, A and M into Hexadecimal:

R=0x064, A=0x04, M=0x19E

These values have to be arranged in accordance with the data format chart shown above. Note in particular that the lower two bits of the first byte are not used and that the data for 'M' has to be shifted to the left.

 

 

Let the desired RX frequency be 145.0250MHz (GB3GD):

Calculate 'R':

R=Fref / Channel Spacing
R=8.4MHz / 12.5KHz = 672

Calculate 'N':

N=(Frx-21.4) / Fr
N=(145.025MHz -21.4) / 6.25KHz
N=123.625MHz / 6.25KHz = 19780

Using 'N', Calculate 'M' and 'A':

M=N / RX Prescaler

M=19780 / 80 = 247 with a remainder of 20

So: M = 247 and A = 20

Expressed in Hexadecimal:

R=0x2A0, A=0x14, M=0x0F7

With the receiver values we have to be cautious because of the need to "flip" each four-bit nibble around. Let's do that, beginning with 'R':

R = 0x2A0

2 in binary = 0010, "Flipped", it becomes 0100
A in binary = 1010, "Flipped", it becomes 0101
0 is just 0 - easy, that one!
Result: 0x450

A = 0x14

1 = 0001, becomes 1000
4 = 0100, becomes 0010
Result: 0x82

M=0xF7

F = 1111, remains the same
7 = 0111, becomes 1110
Result: 0x0FE

These new values are the ones which are "plugged-in" to the table.

 
NJ8820 Data Format
 
  Sample Data
Byte DS2 DS1 DS0 D3 D2 D1 D0
0 0 0 0 M1 M0    
1 0 0 1 M5 M4 M3 M2
2 0 1 0 M9 M8 M7 M6
3 0 1 1 A3 A2 A1 A0
4 1 0 0   A6 A5 A4
5 1 0 1 R3 R2 R1 R0
6 1 1 0 R7 R6 R5 R4
7 1 1 1   R10 R9 R8
 
Byte DS2 DS1 DS0 D3 D2 D1 D0
0 0 0 0 1 0    
1 0 0 1 0 1 1 1
2 0 1 0 0 1 1 0
3 0 1 1 0 1 0 0
4 1 0 0   0 0 0
5 1 0 1 0 1 0 0
6 1 1 0 0 1 1 0
7 1 1 1   0 0 0
 
 
 

And that's how it's done. Easy isn't it?
Having expended all of that effort on one channel, and being daunted by the prospect of having to repeat the process for any others that may be needed, the next step was obvious.....

Make a spreadsheet do the work

I have concocted an Excel Workbook which does all of the hard work for you. Since it uses certain features which are not included "out of the box", you may need your Excel installation disk in order to add the appropriate plug-ins.

I would stress, however, that I make no claims to perfection. I have only used the data for 145.625MHz TX and 145.025MHz RX in my particular application. These values work perfectly and so I can see no reason why the others should not, but......