¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Re: T41 Hilbert Filter Design

 

I saw the inconsistency in the coefficient array sizes and six of the init functions but then saw that the coefficient arrays seemed specially structured for this type of dual use.? I figured it was for calculation efficiency, but I couldn't find any discussion about it in the book.? However, your graphs are very telling!? Are those from Matlab?


Re: T41 Hilbert Filter Design

 

Here's the missing second plot -- much better!
?


Re: T41 Hilbert Filter Design

 

I'll investigate this too, thanks for all the great advice!

I'm testing each of the transmit DSP steps individually. I've found another issue -- the number of taps in the initialization of FIR_dec2_EX_I and FIR_dec2_EX_Q should be 48, not 24. See this line and the one after it:

With the values currently in the code we get the following responses from the FIR filters in the first two decimation filters:
image.png

If I change the number of taps in the initialization of FIR_dec2_EX_I and FIR_dec2_EX_Q to be 48 instead of 24, and increase the size of their buffers from 535 to 559, I get the following:



I'll keep working my way down the line and test each step -- will get to the Hilbert filter in a bit.
On Sunday, May 25th, 2025 at 3:07 PM, Terrance Robertson, KN6ZDE via groups.io <tmrob4@...> wrote:

A picture is worth a thousand words.
?
?
This uses half the bandwidth as in my earlier post!? And cleaner upper sideband as well.
?
Greg mentioned to me the other day that applying the Hilbert filter at a 12kHz sample rate gave better low frequency results.? I noted at that time that I didn't find the Hilbert coefficients changing with sample rate.? Thus, I had the idea to try the newer 12kHz sample rate code with the old 24kHz Hilbert coefficients.? It's just one test, but it looks pretty good.? Perhaps others can try as well to confirm.
?
Note that in the other post, when I used the older Hilbert coefficients, I also ran the filter at 24kHz.


Re: T41 Hilbert Filter Design

 

A picture is worth a thousand words.
?
?
This uses half the bandwidth as in my earlier post!? And cleaner upper sideband as well.
?
Greg mentioned to me the other day that applying the Hilbert filter at a 12kHz sample rate gave better low frequency results.? I noted at that time that I didn't find the Hilbert coefficients changing with sample rate.? Thus, I had the idea to try the newer 12kHz sample rate code with the old 24kHz Hilbert coefficients.? It's just one test, but it looks pretty good.? Perhaps others can try as well to confirm.
?
Note that in the other post, when I used the older Hilbert coefficients, I also ran the filter at 24kHz.


Re: T41 Hilbert Filter Design

 

Ok.? But the coefficient from in v50 labeled 90 and 0 don't follow that pattern.? And all of the +/- 45 degree coefficients I've seen are the same but reversed.? That's a limited set though so I'm not saying other structures aren't possible.? It's why I asked for the design file.?


Re: T41 Hilbert Filter Design

 

It appears they are +/-45.? The 90 deg case only has one set of coefficients for I (an odd number) plus a simple delay line for Q.? And every other coefficient is zero.


Re: T41 Hilbert Filter Design

 

I think it's on topic.? While the current v66-9 Hilbert coefficients are labeled +/-45 degrees, I speculate that they're actually +90 and 0 degrees.? The label doesn't really matter, but understanding the filter design will be helpful for the future.


Re: T41 Hilbert Filter Design

 

Hi - I hope this is not off-topic.? The basic question is why +/-45 deg phase shift?? I was raised with 90 deg plus delay (as is in the OA_F32 library).? What is the advantage of +/-45?? Bob


Re: T41 Hilbert Filter Design

 

I need smallest code to accommodate all of the features I've added.? And I can't use LTO because I need to prioritize heap.? LTO prioritizes stack.


Re: T41 Hilbert Filter Design

 

I know of one oddity when you compile with "smallest code".? If you have a Serial.printf statement with a float, weird things will happen.? Integers are OK.
There may be other oddities.
?
--
73 Greg KF5N


Re: T41 Hilbert Filter Design

 

On Sun, May 25, 2025 at 09:26 AM, Greg KF5N wrote:
Maybe that pushed the stack over the edge.
That's a possibility.? Stack is always tight but it's tighter when compiled with Faster with LTO than with Smallest Code and the latter is the one that crashes.? I assumed it crashed due to a memory access violation with an array out of bounds.? But that doesn't make sense unless DMAMEM is treated differently in this respect and that LTO put the array in DMAMEM for the Faster with LTO compile.


Re: T41 Hilbert Filter Design

 

Maybe that pushed the stack over the edge?? Maybe there is some stuff you can temporarily remove from the stack to see if that is the case.
?
--
73 Greg KF5N


Re: T41 Hilbert Filter Design

 

On Sun, May 25, 2025 at 09:12 AM, Greg KF5N wrote:
But, I have seen weird things happen when arrays are put in the heap (DMAMEM).
Exactly my thought.? So, I remove the DMAMEM keyword from the decimate state array in my version of the software and it crashed on PTT.


Re: T41 Hilbert Filter Design

 

On Sun, May 25, 2025 at 08:16 AM, Greg KF5N wrote:
But isn't the Hilbert transform a quite sharp bandpass filter?
Or perhaps the Hilbert filter needs refined.? Here is an image from the setup mentioned in my previous post with the current v66-9 Hilbert filter:
?
?
And here with the old Hilbert filter which is a tad narrower on the desired sideband and cleaner on the unwanted sideband:
?


Re: T41 Hilbert Filter Design

 

Eyeballing it, the noise hump is about 15 kHz wide.? So you should be able to open up the T41 filter all the way to 6kHz? and see more of the noise in the audio spectrum.
I've never seen that particular phenomena in the numerous iterations of code I've worked on.? But, I have seen weird things happen when arrays are put in the heap (DMAMEM).
?
--
73 Greg KF5N


Re: T41 Hilbert Filter Design

 

On Sun, May 25, 2025 at 06:53 AM, Oliver KI3P wrote:
I tested my radio with both settings and can't say that I can hear a difference
I wasn't able to hear a difference either, but if you put the lower sized decimation filter state variable in DMAMEM you'll sometimes see both sidebands raised as shown below.? Here my 4SQRP T41 is connected to the RF out on the v12 RF board through a tap on my dummy load.? I had a 1kHz signal into the v12 microphone input.
?
.


Re: T41 with Polar Modulation

 

I skimmed Hans' paper on the topic (what a great read!):
https://qrp-labs.com/images/qmx/fdim/G0UPL.pdf

It looks doable on the software side -- the T41 has plenty of processing power and the methods look tractable. I worry about two things on the hardware side:
1) Can we run the si5351 I2C at 1 MHz?
2) How hard will it be to change the voltage of the amplifier to perform amplitude modulation?

The design needed to support the self-calibration routines needs some thinking about too.



-------- Original Message --------
On 5/25/25 10:04 AM, John G0SDF via groups.io wrote:
After learning that Hans Summers was at Dayton Hamvention promoting his QMX which can now operate SSB using Polar Modulation, this got me thinking.
Has anyone considered a T41 using Polar Modulation?
How difficult would the software be to implement? I am sure I can sort the hardware side of things.
?
John, G0SDF


Re: T41 Hilbert Filter Design

 

But isn't the Hilbert transform a quite sharp bandpass filter?? Also you have a transmit equalizer, which can low-pass filter?
I'm surprised more filtering is necessary.? Noise injection from a mystery source?
?
A swept tone into the microphone input while observing on a spectrum analyzer will show you what you are getting.
T41EEE uses 12ksps Hilbert phase shifters and this makes equalizer lowpass above about 3kHz essentially useless.
?
--
73 Greg KF5N


Re: T41 Hilbert Filter Design

 

I've added a lowpass IIR filter to the transmit audio chain. You can see the code modifications here:

I've attached a recording of my transmitted audio (into a dummy load with a monitor attached). It sounds nicer that it did before. I used an SDR to demodulate the RF.

The filter I added has only a single stage and can be improved to get sharper cutoff. That'll be a project for the rewrite I'm currently doing, unless someone out there wants to take this on in the mean time.

On Sunday, May 25th, 2025 at 9:54 AM, Oliver KI3P via groups.io <oliver@...> wrote:

OK, I've pushed these changes to github. I tested my radio with both settings and can't say that I can hear a difference, but the changes are more correct.

John W2TX pointed out in an email that the bandwidth of the transmitted signal is too broad. I'm going to investigate that next -- trying to interleave my rewrite of the whole code base with these tweaks to the older version of the code.


On Sunday, May 25th, 2025 at 7:36 AM, Terrance Robertson, KN6ZDE via groups.io <tmrob4@...> wrote:
Yes, I've used 279 for the size of FIR_dec3_EX_I_state?and FIR_dec3_EX_Q_state.? Also, I set the size of FIR_int3_EX_I_state and FIR_int3_EX_Q_state to 151 in lines 1132 and 1133.



T41 with Polar Modulation

 

After learning that Hans Summers was at Dayton Hamvention promoting his QMX which can now operate SSB using Polar Modulation, this got me thinking.
Has anyone considered a T41 using Polar Modulation?
How difficult would the software be to implement? I am sure I can sort the hardware side of things.
?
John, G0SDF