4
$\begingroup$

I want to take a real signal on my FPGA and create a complex one. I have FIR core implemted for a Hilbert Transform, and Xilinx's datasheet on it shows coefficients of: (-819,0,-1365,0,-4096,0,4096,0,1365,0,819) as an example.

I wanted to add more taps, so as practice I used the matlab fdesign function:

d=fdesign.hilbert(11,0.1);
hd=design(d,'firls');
coef=hd.Numerator

The coefficients seem reasonable (though I will need to multiply by 10000 to get integers). What I don't understand is the 0.1 transition width variable (I took the 0.1 from an example online), nor if I need to tune this filter for a frequency range, or if they are generic enough.

$\endgroup$
1
$\begingroup$

The resulting analytic signal after using a the Hilbert transform filter is ideally a signal without any negative frequencies, hence, attenuating -1 (using normalized frequency) to 0 while transmitting 0 to 1 (note that this is a complex output and therefore one do not have the standard symmetry around 0). This is obtained by phase-shifting positive frequencies pi/2 and negative frequencies -pi/2 while keeping the magnitude to be one and adding the output with the original signal.

Since it is not possible to obtain this change in phase-shift without a transition band one will need to specify how wide the transition band should be.. Hence, in your case the 0.1 would indicate that your designed filter will perform well from 0.05 to 0.95 with a transition band from -0.05 to 0.05 and similarly from 0.95 to 1.05.

Increasing the order with constant transition band will produce a higher attenuation/smaller approximation error in the passband, while decreasing the transition band with the same order will have the opposite effect.

Also, if you will implement it on an FPGA I would suggest multiplying the coefficients with a power of two, e.g. 8192 to get a better range for the output and use of the bits.

$\endgroup$
  • $\begingroup$ sorry Oscar, but i don't think your first paragraph is correct. although there are certainly transition issues in a Hilbert transformer, it ain't a brickwall filter. more like an All-pass filter that has to have odd-symmetry about DC. $\endgroup$ – robert bristow-johnson Feb 23 '14 at 3:39
  • $\begingroup$ Yeah, you're right. I'll edit. Thanks for pointing this out. $\endgroup$ – Oscar Feb 23 '14 at 20:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.