RALCWI Vocoder
CMX608/CMX618/CMX638
Ignore it
If, in a half duplex channel, the transmitting end was considered to be the master, the receiver (and hence
the decoder) would have to cope with the slip. The Vocoder device employs an output buffer (effectively a
FIFO) to supply samples to the CODEC. If the buffer is empty when a sample is required, then the last
value is re-presented (duplicated). If the buffer is full at any time that a sample is placed in it, it will be
discarded (dropped). This behaviour inherently copes with slip.
Manage it
If, in a channel, one end assumes the role of master, as far as time is concerned, then the other end must
cope with both the decoder and the encoder slip. For controlling the encoder part, the device needs to be
synchronised in some way, allowing samples to be either duplicated or dropped to ensure Vocoder packet
production happens at the right time for the other end of the channel.
The rest of this section is concerned with the last item above - Managing Slip
The CMX618/CMX638 provides a sync pin (pin 25) which can be either an input or an output. As an
output, it can provide one of four different timing references:
The 8kHz sample clock
A short pulse every 20 ms
A short pulse every 40ms
A short pulse every 60ms
All of these timing references are derived from the CODEC's sample clock and can be used as a master
timing reference for a system.
Please note: The CMX608, and the CMX618/CMX638 in external CODEC mode, cannot produce these
sync pulses. However, the CODEC frame sync can be used as the 8kHz sample clock and using a
counter driven from this, the 20/40/60 etc. sync periods may be derived.
As an input, the device requires a pulse every 20ms or multiple thereof (40/60/80 ms). The frequency of
the pulse controls how often slip checking and compensation will be performed. Using a 20ms period
means that a timing adjustment could occur every 20ms. Using longer periods means that timing
adjustments would occur less frequently.
Each supplied pulse allows only a 1-sample adjustment to be made, which exceeds the amount of slip
expected by more than an order of magnitude. With synchronising pulses arriving every 20ms, that would
equate to the required adjustment for a slip rate of 6250ppm - i.e. a crystal or clock generator at each end
of the system that was accurate to 3125ppm!
When using the sync input to manage slip, both the encoder and decoder are affected. The number of
samples per sync pulse are counted. With mutual slip present, eventually one sample more or less than
required will have been counted. When this situation occurs, the device will either drop or duplicate a
sample to nudge the CODEC back into sync. This will happen in both the encoder and decoder parts of
the device. With an expected slip in the order of 100ppm, no more than 1 sample every 500ms will be
dropped or duplicated, which will have virtually no audible effect.
Example: Time slot based radio channel
A digital radio channel is split into 60ms time slots. Half the slot carries data in one direction, the other half
in the other direction. Call one end of the channel the master and the other end of the channel the slave.
Whilst this set up implies a full duplex channel, we shall just consider a half duplex channel in a push-to-
talk system. When voice is not being sent other data packets may be sent instead.
The master's notion of timing governs the system. Every 60ms, the master will send a 30ms burst of data
and then expect the slave to send a 30ms burst back. Assume that an FEC protected Vocoder packet that
represents 60ms of voice can be transmitted in a 30ms burst over air. Referring to the diagram in the 3-
frame example in the encoder section, after giving the instruction for the encoder to start, the data will not
2014 CML Microsystems Plc
58
D/608_18_38/11