69 0 143KB
AN32 S i3 21 X , S i 3 2 3 0 , A N D S i3 2 3 3 F R E Q U E N C Y S H I FT K E Y I N G ( F S K ) M O D U L A T I O N
Introduction The ProSLIC tone-generator Oscillator 1 may be used to create frequency shift keying (FSK) frequency modulation for caller ID. The ProSLIC has two independently programmable voice-band oscillators (see ProSLIC specification for details). While both oscillators are necessary for the generation of call progress and signaling tones such as busy tone, dial tone, or DTMF, only Oscillator 1 is necessary for phase continuous FSK. Oscillator 1 will preserve phase continuity during frequency shifts; Oscillator 2 will not. Oscillator 1 has some special built-in features to greatly simplify the FSK switching between two frequencies.
Rev. 0.2 2/07
The screen-capture below shows a paired trace and two singular scope traces during FSK between 2200 and 1200 Hz. The paired trace is the mirror of the Tip and Ring ac voltages. The first singular trace is the difference between these voltages. The second singular trace is the interrupt bit of the ProSLIC chip. This interrupt, generated by the Oscillator 1 timers, signals the software that the bit data has been loaded, and that the registers are free to update new data. The traces below represent a 1, 0, 1, 0, 1 pattern.
Copyright © 2007 by Silicon Laboratories
AN32
AN32 The FSK mode is selected in the Oscillator Control register (direct Register 32). This enables the oscillator timers to be used as the indicator for FSK bit duration. Oscillator 1 is automatically loaded with the last register setting upon the expiration of Oscillator 1’s active timer. Oscillator 1’s inactive timer is only used for the expiration of the first bit. Otherwise, Oscillator 1’s inactive timer is disabled automatically by the FSK mode bit. The interrupts caused by Oscillator 1 timers informs the user of a window of time to update the FSK register (direct Register 52) for the next FSK bit.
Generation of FSK signals consists of four steps: 1. Initialize the registers for transmission. 2. Enable Oscillator 1 in FSK mode, and engage the timers for Oscillator 1 with their interrupts. 3. Write subsequent data bit to direct Register 52, one bit every interrupt. 4. Disable the timers and Oscillator 1. The FSK indirect registers are listed in Table 1 and Table 2.
Table 1. FSK Indirect Registers (Si3210, Si3211, Si3230) Indirect Register Number
Purpose
Example Value
99
Amplitude Parameter for Space(0)
0x01B4
100
Frequency Parameter for Space(0)
0x6B60
101
Amplitude Parameter for Mark(1)
0x00E9
102
Frequency Parameter for Mark(1)
0x79C0
103
Transition Parameter from 0 to 1
0x1110
104
Transition Parameter from 1 to 0
0x3C00
Table 2. FSK Indirect Registers (Si3215, Si3216, Si3233) Indirect Register Number
Purpose
Example Value
99
Amplitude Parameter for Space(0)
0x02A8
100
Frequency Parameter for Space(0)
0x5320
101
Amplitude Parameter for Mark(1)
0x0162
102
Frequency Parameter for Mark(1)
0x7210
103
Transition Parameter from 0 to 1
0x10B0
104
Transition Parameter from 1 to 0
0x3D60
Table 3. FSK Direct Registers
2
Direct Register Number
Purpose
Example Value
32
OSC1 Control Register
0x56
36
Low Byte Active Timer
0x13 for 1200 baud
37
High Byte Active Timer
0x00
52
FSK Data
1/0 Data Value
108.6
Enhancement Register
1
Rev. 0.2
AN32 1. Initialize the Registers
3. Send the Caller ID Frame
To take advantage of the advanced FSK mechanism (direct Register 108—Enhancement Enable register), bit 6 should be set to 1. Set the Oscillator 1 Active Timer—Low Byte register (direct Register 36), to the duration of a bit in 1/24000 of a second minus one. This would be decimal 19 for 1200 baud. Decimal 19 represents twenty increments. Each increment is 1/24000 of a second, so 20/24000 is 1/1200. The Oscillator 1 Active Timer—High Byte register (direct Register 37) is 0 because the most significant bits of the active timer are 0.
A frame of caller ID most likely consists of a group of bytes (octets) with start and stop bits. If the start bit is a 0 (Space), this must be written to direct Register 52. This causes an active timer interrupt. Next, load the first bit into direct Register 52. Wait for an interrupt, then write the next bit. Wait for the active timer interrupt and so on. Once the end of the byte has been reached, write a stop bit. Continue to write bytes till the end of the frame. A group of Marks between a group of alternating 1s and 0s will probably have to be included depending on the caller ID specification. Starting the frame with “U” 0x55 and not sending characters for as many bits as the spacing specification requires will achieve this.
The FSK Data register (direct Register 52) should be written to a logical 1 twice. (This sets up the double buffer.) The next registers to initialize are the amplitude, coefficient, and phase registers on Oscillator 1 for both their Mark (logical 1) and Space (logical 0) values. For the North American values of 1200 Hz (Mark) and 2200 Hz (Space) at .20 VRMS or –13.5 dBm at 900 Ω, the register values are shown in Table 1 and Table 2.
2. Enable the Oscillator To enable the interrupt for the Oscillator 1 active timer, the LSB is enabled on direct Register 21. The Oscillator 1 Control register (direct Register 32) is programmed to hex 56 (0x56). This bit engages the active timer and relative bit for Oscillator 1. The REL (reload) bit is the FSK mode bit.
4. Disable the Oscillator Disable the oscillator by writing a 0x50 to direct Register 37. This will leave the line quiet.
5. Helpful Hints There are two things to remember when coding the FSK modulation. One, most caller ID boxes will not work without ringing. Two, a valid checksum and byte count will need to be generated for the caller ID frame to be registered as valid. Silicon Labs has example source code that will demonstrate caller ID using a fast PC on the Si3210-EVB.
Rev. 0.2
3
AN32 CONTACT INFORMATION Silicon Laboratories Inc. 400 West Cesar Chavez Austin, TX 78701 Tel: 1+(512) 416-8500 Fax: 1+(512) 416-9669 Toll Free: 1+(877) 444-3032 Email: [email protected] Internet: www.silabs.com
The information in this document is believed to be accurate in all respects at the time of publication but is subject to change without notice. Silicon Laboratories assumes no responsibility for errors and omissions, and disclaims responsibility for any consequences resulting from the use of information included herein. Additionally, Silicon Laboratories assumes no responsibility for the functioning of undescribed features or parameters. Silicon Laboratories reserves the right to make changes without further notice. Silicon Laboratories makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does Silicon Laboratories assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. Silicon Laboratories products are not designed, intended, or authorized for use in applications intended to support or sustain life, or for any other application in which the failure of the Silicon Laboratories product could create a situation where personal injury or death may occur. Should Buyer purchase or use Silicon Laboratories products for any such unintended or unauthorized application, Buyer shall indemnify and hold Silicon Laboratories harmless against all claims and damages. Silicon Laboratories, Silicon Labs, and ProSLIC are trademarks of Silicon Laboratories Inc. Other products or brandnames mentioned herein are trademarks or registered trademarks of their respective holders.
4
Rev. 0.2