# 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. – Jazzmaniac Jul 7 '14 at 14:25
• Could you describe your processing in more detail? – Matt L. 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. – toozie21 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. – Jazzmaniac 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. – toozie21 Jul 7 '14 at 15:51

• @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\}$. – Matt L. Jul 7 '14 at 14:53