Post Go back to editing

ADAU1446 Hilbert transform response



i'm using the Hilbert transform block on an ADAU1446 for envelope calculation.

It really has a phase difference of 90° between its outputs, but you cannot call

any of the two output a "zero degrees" output, because it shows a

non-constant group delay respect to input.

Maybe i could solve this using a fir filter implementation of HT, but it would need

too much memory resources.


So, my questions are:

-is it possible to make an all-pass filter to compensate one of the two outputs so it

gets phase-linear in respect to the HT transform block?

-to have an idea of the phase response of one of the two outputs of the HT block,

i used a stimulus/probe block, but it seems not to work (i get no amplitude or phase trace).

I could use an external vector analyzer....but could you provide some details on this

or have i to use hardware instrumentation?


Many thanks.


  •      Hello Tom,

         To start with your easiest question:  the Stimulus-Probe tool helps when designing with the standard filters and their cascade / additive combinations.  Find more about this here:

         As you noted, a FIR Hilbert has a constant group delay at its "real" or "cosine" output, which is essentially a straight compensating delay from its input.  Thus, you can count on having a reference to work with.  Its "imaginary" or "sine" output in addition, lags the cosine output by 90 degrees.  The resulting impulse responses are shown below (actually the cosine trace is the impulse response of the ADAU1701's DAC, used for this test):

         This FIR Hilbert uses a 400 tap filter and a 200 sample delay.  It's good for any waveform that fits within the FIR, that is 48000 / 400 = 60 Hz minimum.  Its group delay is a uniformly boring 4.16 mS (plus phase lag at the sine output).  I assume you would need three times the FIR and a 600 sample delay to get full response down to 20Hz, which as you said is quite a lot.  The new ADAU1452 could handle this easily, however. 

         Meanwhile, the Hilbert block appears to work with a IIR implementation -- it uses far fewer resources than FIR, and its impulse response is not L-R symmetrical (see below).  I measured its group delay simply by comparing its input and cosine output with a scope, looking for frequencies where the two traces coincided -- results also below:

      Hilbert Block Cosine Output:

    delay @ 1 Hz:          60mS

    1  cycle lag         36Hz (27.8mS)

    2 cycles lag       310Hz (6.45mS)

    3 cycles lag      2120Hz (1.42mS)

    4 cycles lag      7400Hz (0.54mS)

    5 cycles lag     13480Hz (0.37mS)

    6 cycles lag     19830Hz (0.30mS)

         To say this block has a non-constant group delay is quite the understatement!  I'm afraid that someone smarter than me will have to tackle the needed all-pass filter.  In many applications (such as a SSB modulator), the delay between input and both Hilbert outputs is not particularly important -- evidently not the case here.   Perhaps you should bite the bullet and go FIR.

         Best regards,


  • Many thanks Bob for your considerations.

    Unfortunately i cannot "bite the bullet", my DSP is almost full and i have no space to fit the FIR required for HT.

    I can take some benefit as my upper band is limited to 1.5KHz, so i should compensate from 20 to 1.6KHz only.

    Regarding the probe/stimulus, i don't understand why they are not working with the HT block...i'll use external instruments as you did.



  • This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

    Thank you,
    EZ Admin