An Implementation of Spread Spectrum using an MCU with the... One of the most effective approaches to controlling EMI is... Frequency spreading is done by modulating the frequency so that...
Transcription
An Implementation of Spread Spectrum using an MCU with the... One of the most effective approaches to controlling EMI is... Frequency spreading is done by modulating the frequency so that...
An Implementation of Spread Spectrum using an MCU with the Si5341/Si5345 timing devices One of the most effective approaches to controlling EMI is to use spread spectrum clock generation. Frequency spreading is done by modulating the frequency so that the peak energy is lowered and distributed to other frequencies and their harmonics. Instead of a constant frequency the clock is modulated across a smaller frequency that creates a frequency spectrum with sideband harmonics. By intentionally spreading the narrowband clock across a broader band the peak spectral energy of both the fundamental and harmonic frequencies can be reduced. The modulation frequency typically chosen is 30-33 kHz, with 0.5% down-spread. This comes from the PCIe specification and is the typical modulation profile which is broad enough to spread the energy around the carrier yet narrow enough to avoid creating timing and tracking issues. Some of the Silicon Labs timing products have this programmable capability built in, such as the Si5350/51. For products that do not have this capability it is possible to use an MCU with the device if it has an external increment decrement pin feature for adjusting the output frequency. GPIO pins on the MCU can be used to control incrementing and decrementing the output frequency at a specific calculated time interval. An example of this is shown using the Silicon Labs C8051F850MCU with the Si5341 or Si5345 device. These devices have external frequency increment and decrement pins that are exposed on the pin out that can be toggled to accomplish this task. Although other devices also may have the FINC and FDEC external pins the register map is different and the example below will have different register settings. The same principles apply and this methodology can be followed for other devices, but be aware that the register map may be different. P0.0 FINC Si534x MCU P0.1 FDEC Figure 1: Block Diagram Configuring the Si5341/45 with an MCU to implement Spread Spectrum There are various calculations to consider to configure the system to have a modulation frequency of 30-33 kHz with 0.5% down-spread. The first thing to consider is the clocking speed of the MCU to know how fast instructions can be set that will toggle the MCU GPIO pins. The C8051F850 MCU system clock speed is set to 24.5MHz, which is 40.816 nS (4.1E-08) per SYSCLK cycle. The accuracy of the MCU system clock is also important to consider. The accuracy of this MCU over voltage and temperature is 4.08%, which should be good enough. There is a limit on the speed at which the FINC and FDEC pins can be toggled. The frequency to toggle the FINC/FDEC pin of the Si5340 cannot be much higher than 1 MHz. Therefore the MCU must toggle the FINC or FDEC pin at a rate that causes the transitions to be somewhere below 1 MHz. The second consideration is the minimum number of MCU clock ticks required to perform a uniform high to low transition that can loop indefinitely. The calculations in Table 1 were used to find the edge transition timing. Table 1: MCU FINC/FDEC Transition Timing Optimization SYSCLK ticks per edge Time SYSCLK tick (24.5MHz) Accumulated Time Per Edge Frequency Time Per Cycle (2xEdge) (1/TimePerCycle) 5 4.1E-08 2.0408E-07 4.1E-07 2450000.00 6 4.1E-08 2.449E-07 4.9E-07 2041666.67 7 4.1E-08 2.8571E-07 5.7E-07 1750000.00 8 4.1E-08 3.2653E-07 6.5E-07 1531250.00 9 4.1E-08 3.6735E-07 7.3E-07 1361111.11 10 4.1E-08 4.0816E-07 8.2E-07 1225000.00 11 4.1E-08 4.4898E-07 9E-07 1113636.36 12 4.1E-08 4.898E-07 9.8E-07 1020833.33 13 4.1E-08 5.3061E-07 1.061E-06 942307.69 Figure 2: 5 SYSCLK ticks per Edge The maximum possible frequency that the MCU can loop with an even repeatable cycle is 5 SYSCLK ticks per edge (2.45 MHz). This is due to the limitation of the while loop that is controlling the pin toggle. The while loop instruction takes 5 SYSCLK ticks. P0.0 Set 2 cycles Delay 3 cycles P0.0 Clear 2 cycles Delay 3 cycles P0.1 Set 2 cycles Delay 3 cycles P0.1 Clear 2 cycles While Loop 5 cycles Figure 3: 13 SYSCLK ticks per Edge To achieve a toggle frequency slightly under 1 MHz, 13 SYSCLK ticks per edge are used. This means 11 delay cycles are necessary per edge, since a SET and CLEAR instruction are both 2 cycles. From Table 2 the time to decrement by 15 cycles and then increment by 15 cycles (total of 30 cycles) will take 31.8 us, which is a frequency of 31.4 kHz. 30 * 1.061E-6 = 31.836 E-6 1/31.836E-6 = 31.41kHz, which is right in the middle of the PCIe 3.0 Specification (30-33 kHz) A total of 30 steps are required, 15 Cycles of FDEC and 15 cycles of FINC Table 2: Calculations to determine the Optimal PCIe Frequency and Number of Steps required MCU Half Cycles Time Per Clock Time Per Half Cycle Time Per Cycle MCU Frequency Optimal PCIe Fq #Total Steps 5 4.08163E-08 2.04082E-07 4.08163E-07 2450000.00 31.41k 78 6 4.08163E-08 2.44898E-07 4.89796E-07 2041666.67 30.934k 66 7 4.08163E-08 2.85714E-07 5.71429E-07 1750000.00 31.25k 56 8 4.08163E-08 3.26531E-07 6.53061E-07 1531250.00 31.90k 48 9 4.08163E-08 3.67347E-07 7.34694E-07 1361111.11 30.93k 44 10 4.08163E-08 4.08163E-07 8.16327E-07 1225000.00 30.625k 40 11 4.08163E-08 4.4898E-07 8.97959E-07 1113636.36 30.934k 36 12 4.08163E-08 4.89796E-07 9.79592E-07 1020833.33 31.901k 32 13 4.08163E-08 5.30612E-07 1.06122E-06 942307.69 31.41k 30 14 4.08163E-08 5.71429E-07 1.14286E-06 875000.00 31.250k 28 Figure 4: Pin toggling showing FDEC (P0.0) and FINC (P0.1) From the calculations above in Error! Reference source not found., using 13 cycles per transition, the frequency controlling FINC and FDEC is set to under 1 MHz. With 15 steps down and 15 up the modulation frequency is 31.4 kHz. ClockBuilder Pro is a software tool to configure the Si534x/8x device settings to create frequency plans and to configure the clock inputs and outputs. In ClockBuilder Pro a profile can be set up with 100 MHz for the output frequency. Reviewing the design report text file N0_NUM at register 0x0302 is set to 0x02200000000 and N0_DEN is set to 0x80000000. The following calculations show how these registers are set: 13600*DEN = 100 NUM *2 100MHz is the output frequency. The 13600 as the VCO Frequency in MHz. The Denominator is set to 1 and the numerator can be calculated. The resulting value for the numerator and denominator is then left shifted. NUM = 13600/200= 68 0x44, left shifted by 31 bits = 0x02200000000 (1.46029E11) DEN = 1, left shifted by 31 bits = 0x80000000 (2147483648) Note: 1.46029E11/2147483648=68.0000000000000000 The down-spread for the modulation can be set to be 0.45%, which is slightly below 0.5% per the PCIe specification. Taking 0.45% of 100 MHz is equal to 450,000 Hz. So 450,000 Hz represents the total frequency that must be divided by 15 to get to the bottom of the down-spread. Dividing 450,000 Hz by 15 steps is equal to 30,000 Hz per step. Going back to the original form, but putting in the numerator multiplied by the output frequency (1.46029E11 * 100 = NUM * 100). The numerator is left shifted as from above (0x02200000000) and then it is multiplied by 100 MHz, as seen below on the right hand side of the equation. 13600* DEN =1.46029E13 2 Next the NUM*100 is divided by 100 with the additional 30 kHz (which is one additional step) 1.46029E13 = 145985092536.239 100.03 This resulting value is equal to the numerator step change. This value is then subtracted from the numerator value as shown below, and this is assigned as the step size used in N0_FSW field. 1.46029E11 – 145985092536 = 43,795,528 (Step Size= N0_FSW) This final calculation shows the 0.45% drop. The frequency should range from 100MHz down to 99.55MHz. 1.46029E13/ (1.46029E11+ (43,795,528*15)) = 99.55MHz In order to set up the part to enable the FINC/FDEC pins and to set the appropriate step size per command, the following register settings must be inserted into the frequency plan. This was calculated above. The other register settings are required to use the FINC/FDEC from pin control of the MCU GPIO. The settings are shown below in Figure 5. 43,795,528 Figure 5: Register Settings to Implement FINC/FDEC with Pin Control The frequency modulation is shown below in Figure 6 from an MCU toggling the FINC and FDEC pins, showing the 0.45% down-spread from 100 MHz. Figure 6: Screen Capture of the Output Frequency being stepped down and up using the MCU