# Pulse-shaping FIR filter

I understand that pulse-shaping is performed to limit the bandwidth of the transmitted signal, but I would like to know how pulse-shaping can be implemented using an FIR filter.

You literally use the desired sampled pulse shape as impulse response, i.e. as taps, of the FIR.

• So I literally can use for example a raised cosine pulse (or any other pulse), sample it and take the samples as coefficients of the FIR filter? Is this how it is implemented in the industry? Because I was reading the data sheet of a an arbitrary waveform generator and noticed a pulse shaping FIR Filter being using in the ASIC. Commented Oct 21, 2021 at 8:31
• Q1: yes Q2: yes Q3: that is not in any conflict to this Commented Oct 21, 2021 at 8:56
• note that there's really no other way of doing pulse shaping: pulse shaping is convolution with the impulse response, and convolution with an impulse response is simply a FIR filter, no matter how exactly you implement it. Commented Oct 21, 2021 at 9:28
• @Marcos Müller I am actually confused about this now. To create an FIR filter I convolute the input with the filter coefficients. The coefficients are the pulse samples (raised cosine pulse), so what is the input? I thought the input data is transfered as a square wave, but to limit the bandwidth, a nyquist pulse or an approximation as raised cosine is used to eliminate ISI. Now I am confused between the input and the coefficients of the filter. Commented Oct 21, 2021 at 10:39
• No, not square waves! In continuous time, you'd model things as impulses (hence the name, pulse shaper), in discrete-time (and that's where we operate) it's just a sequence of symbols. Commented Oct 21, 2021 at 10:42

The important thing to remember is that when you're in transmit, you don't have to actually do the operations that are demanded by theory, you just have to emit a signal that is exactly the same as if you did*.

You want to emit a signal that is, sample-for-sample, the same as if you took your starting data, generated a train of impulses from it, then filtered that resulting train of impulses.

So to build a really simple transmitter that just does textbook NRZ, at baseband, with a rectangular "pulse shaping filter", you you could just feed a trains of '1's and '0's through a shift register to a digital output, subtract half VCC, and voila! you have a baseband, NRZ signal that operates between +VCC/2 and -VCC/2. At no point did you generate either a Dirac impulse or a Kronecker delta and run it through a FIR filter.

I can't think of a good way to give a general case for this, but say you have a pulse shape that's 3 pulse durations long, and you're sending a baseband NRZ signal but with pulse shaping. Then at time $$t$$, the output of your transmitter should just be sum of the effect of the three previous bits.

So let $$T$$ be a bit time, let $$x_n$$ be the value of the "impulse" for the $$n^{th}$$ bit, let your pulse shape be $$p(\tau)$$, where $$p(\tau) = 0\ \forall\ {0 < \tau < 3T}$$, and let $$t_p$$ be an "inter-pulse" time in the range $$t_p \in [0, T)$$. Then at time $$t = nT + t_p$$, your output needs to be $$x_n p(\tau) + x_{n-1}p(\tau + T) + x_{n-2} p(\tau + 2T).$$

You make this happen any way you can. I'm not sure what the most popular way to do this in industry would be, but I'd probably oversample the bit time by enough to keep my analog filtering simple (probably something between 4x and 16x). Up to around 1990, the prevalent way to do this would have been to use a return-to-zero pulse running through an analog filter; today digital electronics are far cheaper than analog electronics except at very high speeds, so it would almost certainly be oversampled such that any analog filtering would be no more than second-order.

* This is true of processing received signals, as well, but the constraint of starting with an actual messy noisy corrupted physical signal means that you're much more closely bound to following the theoretical treatment.