# Best way to inverse Hilbert on FPGA?

I have a real signal that is being sampled via ADC and passed to a Xilinx V6 FPGA. I then do a Hilbert transform on it using the FIR compiler core and get the complex signal (I and Q) to tweak the signal some. Now I am struggling with how to do the inverse Hilbert to get back to a real signal again.

I understand in theory that H(H(u)) = -u. But the FIR compiler simply does not allow for a complex input and a real output. Is there a trick to get around this?

• The complex signal is actually not the Hilbert transform. The imaginary part is. The complex signal is called the analytic signal. Since you keep the original signal as the real part and have the imaginary Hilbert transform component in addition, you can simply drop the imaginary part and get back what you had before. Unless there is something you're not mentioning. Jul 7 '14 at 14:25
• Could you describe your processing in more detail? Jul 7 '14 at 14:35
• Good point @Jazzmaniac, I guess the imaginary is just the real delayed by 90 degrees, right? I guess the what I could add is that I am multiplying the analytic signal by another complex value (which will change) to compensate for a downconverted and delay, then I want to take the new signal and output it like normal. That was one of the reasons I didn't think I could drop the imaginary, since it would be important to the whole signal. Jul 7 '14 at 14:54
• As long as your final complex signal is analytic, you can safely drop the imaginary part. LTI systems preserve analyticity, as well as multiplications with other analytic signals. So you should give even more details about how you multiply the signal, and I will tell you if it's analytic. Jul 7 '14 at 15:41
• @Jazzmaniac I am computiong the complex adjustment value off chip and passing it into the FPGA. I then take my incoming original signal, perform the Hilbert Transform, and then I pass the I and Q to a complex multiplier core as well as the inputting complex adjust value. This then gives me a complex output. It sounds like it is still analytic, so in that case (based on the previous responses), I should be safe to just pass my real value to my ADC, right? Thanks. Jul 7 '14 at 15:51

Just take the real part of the complex signal.

• That makes sense (and I did happen to run into that site after posting), but what I think I am still missing something fundemental. So if I take my complex signal (a +bj) and multiply it by 1+j (which gives a-b), take only the real, and look at what happens to a tone I put into my system, I see the tone come out at roughly the power level I would expect. Yet, if I take just the real (a), I get a 3dB hit on the power level. Is my test over-simplifying something and fooling me? Jul 7 '14 at 14:46
• @toozie21: You're right that there's a 3dB drop in power if you take the real part, simply because you throw away the imaginary part. In order to retain the same power level you need to take $\sqrt{2}Re\{\cdot\}$. Jul 7 '14 at 14:53
• @MattL., I can compensate for the power drop, so I am not worried about that, I was just convincing myself that the 3dB drop meant I was doing something wrong. Jul 7 '14 at 14:59
• @toozie21: nothing wrong, naturally the power drops by throwing away half of your signal. Jul 7 '14 at 15:00
• @MattL. I knew it was halved (3dB was a little //too// convenient), I was just having trouble with the fact that if my analytic signal is a+bj, and a is the original signal (in theory), when I multiply by 1+0j, and keep only the real, I am left with a again, so I didn't see how I was losing half my power. Jul 7 '14 at 15:18