Design Study

15
DESIGN STUDY: 1:64 INTERPOLATING PULSE SHAPING FIR Markus Nentwig December 26, 20115 comments Matlab Basics Multirate DSP This article is the documentation to a code snippet that originated from a discussion on comp.dsp . The task is to design a root-raised cosine filter with a rolloff of =0.15 that interpolates to 64x the symbol rate at the input. The code snippet shows a solution that is relatively straightforward to design and achieves reasonably good efficiency using only FIR filters. MOTIVATION: “SIMPLE SOLUTIONS?” The most straightforward approach uses an upsampler (insertion of zero samples) and a long FIR filter. The FIR filter performs a double role for pulse shaping and anti-aliasing. Figure: simple FIR implementation While unproblematic in Matlab, the solution is not acceptable for any real-life application: 63 out of 64 times, an expensive multiplication is performed with zero, which does not contribute to the output at all. 2500 multiply-and-accumulate (MAC) operations are required for each output sample. That's a lot. Now the location of zeros in the filter is known at any time. This can be exploited to reorganize the FIR filter into a more efficient polyphase structure:

description

ccccccc

Transcript of Design Study

DESIGN STUDY: 1:64 INTERPOLATING PULSE SHAPING FIRMarkus NentwigDecember 26, 20115 commentsMatlabBasicsMultirate DSPThis article is the documentation to acode snippetthat originated from adiscussion on comp.dsp.The task is to design a root-raised cosine filter with a rolloff of=0.15 that interpolates to 64x the symbol rate at the input.The code snippet shows a solution that is relatively straightforward to design and achieves reasonably good efficiency using only FIR filters.MOTIVATION: SIMPLE SOLUTIONS?The most straightforward approach uses an upsampler (insertion of zero samples) and a long FIR filter. The FIR filter performs a double role for pulse shaping and anti-aliasing.

Figure: simple FIR implementationWhile unproblematic in Matlab, the solution is not acceptable for any real-life application: 63 out of 64 times, an expensive multiplication is performed with zero, which does not contribute to the output at all. 2500 multiply-and-accumulate (MAC) operations are required for each output sample. That's a lot.Now the location of zeros in the filter is known at any time. This can be exploited to reorganize the FIR filter into a more efficient polyphase structure:

Figure: Polyphase FIR implementationThe computational effort in a polyphase filter reduces to 39 MACs / output sample. The solution is still quite inefficient for a narrow-band signal because the polyphase filter generates every single output sample from scratch, based solely on the input data, without utilizing any similarities or common terms between nearby output samples.Also, the high number of coefficients could be problematic (note that all given coefficient counts could be divided by two in a hardware implementation due to the symmetry of the impulse response)PROPOSED FILTER STRUCTUREThe implementation from thecode snippettakes the following approach:

Figure: proposed implementationIt requires only 4.69 MACs/output sample, or 12 % of the polyphase design. The number of coefficients reduces to 102.The following features can be recognized: Pulse shaping filtering and anti-alias filtering for rate conversion are separated. Pulse shaping filtering is performed at the lowest possible integer oversampling factor of two. Each rate conversion stage is designed to suppress aliases only in frequency bands where signal energy is known to be present.Since the wanted signal and its aliases become relatively narrow-band in later stages, most of the bandwidth turns into don't-care regions for filter design, allowing for an efficient implementation. The pulse shaping filter is modified to equalize the non-ideal frequency response of the sample rate conversion stages. All upsamplers (zero insertion) and the following FIR filter are expected to be implemented as polyphase structures.Further, the testbench ineval_RRC_resampler.mshows how to determine the frequency response of a multirate structure and its frequency-dependent in-channel error vector magnitude.ALIASINGTo understand both pulse shape filtering and sample rate conversion, it may be useful to recall that a digital signal represents a sequence of infinitely narrow pulses at the sample locations.The spectrum contains an infinite number of replicas, or aliases, at multiples of the sampling rate:

Figure:A sampled signal. Left: time domain. Right: spectrumInserting zeros between existing samples, as done by the upsamplerstages, initially changes nothing:

Figure:Sampled signal after insertion of zero samples (upsampling)While adding zeros does not actually alter the signal, the following filter stage gains the ability to change the zero values to non-zero ones:

Figure:upsampled and filtered signalThe following signal illustrates both the spectrum and its periodicity of a narrow-band signal before and after upsampling by a factor of four (insertion of three zero samples per original sample):

Figure:Periodicity at a signal at different sampling ratesThe spectrum remains unchanged, but the following filter stage gains the ability to manipulate aliases independently within the larger bandwidth corresponding to the higher sampling rate (lower arrow).DESIGN OF SAMPLE RATE CONVERSION STAGESThe final stage of the design will serve as an example for sample rate conversion. It consists of a 4x upsampler and the ip4 FIR filter:The passband is quite narrow in comparison to the output rate of 64. The ip4 filter is designed for flat gain only within the narrow passband, and stopband attenuation only within the three alias zones. Note that in the drawing, one alias zone appears split at both lowest and highest frequencies.

Figure:Filter design specification to selectively suppress narrow-band aliasesMost of the bandwidth is covered by don't care regions, where no signal energy is present at the filter input, and the filter response does not matter.DESIGN OF PULSE SHAPING FILTERThe general idea behind pulse shaping is to take one sample representing a symbol at a time, and generate a narrow-band pulse for transmission. For example, the picture below shows a raised-cosine filter with a=0.5 rolloff.

Figure:textbook pulse shaping filter frequency responseThe filter removes some signal energy within the bandwidth corresponding to the symbol rate (+/- 0.5 in the picture), but allows some excess bandwidth at higher frequencies. If both corners are symmetrical, the signal can be sampled without intersymbol interference. Usually, the symmetric response is split between transmitter and receiver (root-raised cosine filter), and the pulse shaping filter is not exactly symmetrical around the symbol rate.For an ideal (root)-raised cosine filter, the frequency response is zero for frequencies beyond (1+) times the symbol rate.The signal energy in the corner for f > 0.5 originates from the adjacent alias. Thus, the signal in the pulse shaping filter needs to be oversampled to allow independent manipulation of the alias.The design targets for a pulse shaping filter typically demand a limit on in-band distortion, which is caused by amplitude ripple in a symmetric FIR filter. Further, a spectral emission mask limits unwanted emissions at stopband frequencies. If the signal is intended for wireless transmission and a power amplifier is involved, the pulse shaping filter should be significantly overdesigned in the stopband (for example by 10+ dB) to leave more budget for distortion products from the power amplifier.The picture shows the design targets from theRRC_design.mscript (download:code snippet) and the resulting frequency response..

Figure:Design specification of root-raised-cosine pulse shaping filterLENGTH OF IMPULSE RESPONSESThe length of a filter's impulse response in seconds is directly related to the transition bandwidth between pass- and stopband, that is, the steepness:For the pulse shaping filter, the transition bandwidth is quite narrow, about two times 15 % of the sample rate, leading to a relatively long impulse response.In comparison, the final rate conversion stage is given a transition bandwidth of many times the symbol rate, and its impulse response is accordingly very short.The following picture shows the individual impulse responses of pulse shaping filter and resampler stages, on a time scale of symbol lengths. The final impulse response (blue) is for the complete design.It can be clearly seen that the impulse responses of rate conversion stages later in the chain get shorter, as the allowed transition bandwidth gets larger:

Figure:impulse responses on absolute time axis (in units of symbol durations)Even though the impulse responses of the final stages are short, they are far from negligible with regard to the computational effort, as they run at a much higher sample rate than the first stages.As a general rule, it is often a good design strategy is to implementall filtering at the lowest possible rate.ERROR SIMULATIONThe testbench eval_RRC_resampler.m from thecode snippetevaluates the impulse response of the design by performing the upsampling- and filtering operations on a unity pulse test signal. The test signal is longer than the cascaded impulse responses of all stages, thus no truncation error is introduced.The signal may be considered a regular stream of pulses that repeats after the (arbitrary) length of the test signal). Under that assumption, test signals are cyclic and bandlimited, which allows to represent themexactlyviaa finite set of Fourier coefficients. Thus, performing a simple FFT will convert freely between time- and frequency domain, without the need for windowing and without introducing error other than numerical inaccuracy.An ideal root-raised cosine filtered reference signal is acquired by performing RRC-filtering on the test pulse in the frequency domain. Again, under the assumption that the test pulse is one cycle of a periodic sequence, there is no approximation involved: The impulse response has infinite length, but it is allowed to extend into previous and following cycles. It wraps around.Now with the response of an ideal RRC-filter as reference signal, it is time-aligned with the filter output using the method describedhere(codehere). The difference is considered unwanted signal energy, and can be further divided into in-channel error (distortion to the wanted signal) and aliasing (unwanted emissions at out-of-channel frequencies).The time alignment minimizes the least-squares difference between the signals. In other words, no other time alignment would result in a a smaller overall error energy.The spectrum of the in-channel error is plotted. The integrated energy over all frequencies, relative to the wanted signal, gives the error vector magnitude (EVM) in dB. It could be converted to units of percent usingEVM_percent = 100*10^(EVM_dB/20).DESIGN OF THE FIRST SAMPLE RATE CONVERSION STAGEThe pictures show the design specification for the ip2 sample rate conversion FIR filter, and input/output signals:

Figure:Design specification forip1FIR filter(rundesign_ip1.m).Left+++line: better than -43 dBc in-channel error at any frequency.Right+++line: alias rejection target

Figure:input signal,output signalandin-channel error signalafter theip1filter.DESIGN OF THE SECOND SAMPLE RATE CONVERSION STAGE

Figure:Design specification of 2ndinterpolator.Output ofdesign_ip2.m

Figure:input signal,output signalandin-channel error signalafter theip2filter.DESIGN OF THE THIRD SAMPLE RATE CONVERSION STAGE

Figure: Design specification of third rate conversion stage. Run design_ip3.m

Figure:input signal,output signalandin-channel error signalafter theip3filter.

Figure: Impulse response ofip3filter.In a polyphase implementation, every second input sample is zero. Three multiplications are required for every output sample.DESIGN OF THE FOURTH SAMPLE RATE CONVERSION STAGE

Figure: Design specification of fourth rate conversion stage. Run design_ip4.m

Figure:input signal,output signalandin-channel error signalafter theip3filter.

Figure: Impulse response of the final sample rate conversion stage.Even though the final stage uses only two MAC operations per output sample in a polyphase implementation, it accounts for 42 % of the MAC operations of the whole design. It is a prime candidate for further optimization, for example for replacement with a CIC-type filter.EQUALIZATIONThe overall in-channel error is consistent with the design specifications of the individual stages. Nonetheless, at a few frequencies, the errors add up constructively.The in-band error can be improved by equalizing the frequency response of the sample rate conversion in the pulse shaping filter.This is implemented in the code snippet as option: Run eval_RRC_resampler with mode="evalIdeal".The frequency response of the sample rate conversion will be written intointerpolatorFrequencyResponse.mat. Rundesign_RRC_filterwithmode=equalized. It will design an equalizer with a pre-distorted frequency response intoRRC_equalized.datinstead of the conventionalRRC.datfile. Re-run eval_RRC_resampler with mode=evalEqualized to evaluate the design with the equalized RRC filter.Use of the equalized pulse shape filter improves the average in-channel error by 1.3 dB and the peak error by more than 3 dB at no additional cost. The downside is that the design process gets more complex.Lacking accurate requirements, the design has not been optimized extensively for use of equalization. By using equalization more aggressively, it may be feasible to chop away a couple of taps from the rate conversion filters.The picture below shows the error spectrum at the output of the equalized design:

Figure: frequency-dependent in-channel error for the equalized designThe design target for the in-channel error of the equalized RRC filter indesign_RRC_filter.mis -43 dB.Also the simulated peak error at the output of the design fromeval_RRC_resampler.mis -43.0 dB. This confirms that the equalized filter works as expected.SUMMARYThis article describes a design study on a root-raised cosine pulse shape/interpolate-by-64 filter using cascaded FIR stages with the following features: Filtering and rate conversion tasks are both specified and implemented separately. All filtering is implemented at the lowest possible rate. The total rate conversion is factored into multiple smaller steps. Lowpass filters suppress only known alias bands. An equalized FIR filter stage is used to reduce distortion on the wanted signalThe design process is somewhat lengthy but in the end quite straightforward, to the point where it could be automated (add a couple of iteration loops to the design scripts to iterate the required number of taps per stage).At least for the given example, the savings over a plain polyphase implementation are substantial. A further reduction in computational load is possible, if the sample rate conversion is partly replaced with a non-FIR type filter (i.e. CIC)