Improving Noise Immunity For Serial Interface
Improving Noise Immunity For Serial Interface
Lattice Semiconductor
5555 Northeast Moore Ct.
Hillsboro, Oregon 97124 USA
Telephone: (503) 268-8000
www.latticesemi.com
FPGAs and CPLDs are programmable devices which often implement serial interface
controller using HDL (Hardware Description Language) so that the user can define any
general purpose I/O (GPIO) as serial interface ports. The serial interface specification
for high speed data transfer (400 kHz and faster) recommends a 50 ns noise filter on
the inputs to prevent double-clocking and miss-communication. However,
programmable devices generally do not have built-in noise filters on their GPIO pins.
In a complex system there can be noise from a variety of sources such as: switching
noise from power supplies, other devices, or the environment itself. Any or all of these
may cause an intermittent error in serial communication. This paper discusses some
techniques to improve noise immunity for the serial interfaces implemented in devices
which do not have built-in noise filter for the serial interface.
The value of the series resistor(s) (RS1 and RS2) will effectively raise the logic low output
level on to the bus from the device being filtered. If the value of the series resistor(s) is
too large, then the voltage swing on the serial bus will be too small for reliable
communication. Thus, the value of the series resistor(s) has to balance between
enough filtering without reducing the low voltage margin. The tables below show
suggested values of components that balance these issues and consider the other
serial interface specifications for either a 3.3 V or 2.5 V system. The 3.3 V system has
about 100 mV better noise margin over the 2.5 V system, based on the values in the
tables.
Margin to VIL = VIL (max) – VOL (calculated) = 0.3 VDD – [VOL (max) + VRs (voltage drop
on both RS1 and RS2)]
Table 2: Component Values for: VDD =2.5 V VIL (max)=0.75 V VOL (max) =0.4 V
Decoupling Supply
There are instances where noise on supplies associated with serial interfaces may
cause error in communication. Reducing such noise can be accomplished with simple
LC filtering circuit. An inductor or Ferrite Bead of about 4-10 uH, with good current
carrying characteristics and low resistance should be placed in series with the voltage
source to choke off the high frequency noise. Ferrite Bead Inductors such as Murata
BLM31B601S, BLM11B601SPB, or equivalent offer good inductive supply isolation.
After the inductor multiple capacitors of different values are typically used. The smaller
valued capacitor is better at filtering out the highest frequency component of the noise
Digital Filter
In FPGA designs that implement a soft core serial interface, a pair of digital filters can
be added; one for the data and one for the clock. Figure 3 is a generic circuit of a
scalable single filter that can be realized in VHDL or Verilog. The size of the filter, or
number of taps, is based on the oscillator (OSC) frequency and the desired filter time.
The filter should have a minimum of three taps. Table 3 lists some recommended
frequencies and number of filter taps to provide effective filtering. Generally speaking,
both of the serial signals (data and clock) should have identically sized filters. The
exception would be if the data and clock have a known relationship that does not meet
the specification. Then one of the filters could be extended to properly align the signals
at the outputs.
Table 3: Digital Filter Taps and Filter Time Based on OSC Frequencies
Additionally, it is advised that the designer follows the serial interface specifications,
when implementing the above techniques.