Hello,

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.

Tom

Hello Tom,

To start with your easiest question: the

Stimulus-Probetool helps when designing with the standard filters and their cascade / additive combinations. Find more about this here:http://ez.analog.com/message/120089#120089

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 blockappears 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,

Bob