DSPRelated.com
Forums

Acoustic Modems in Matlab

Started by Mannai_Murali 4 weeks ago8 replieslatest reply 4 weeks ago143 views

I want to try Acoutic Modems in Matlab and working with actual speaker and mike for transmission.I have designed 8 psk modem and another OFDM version QPSK Modem.Is anyone interested in jointly working with me.We will develop all blcoks Frequency Offset,Symbol timing,coding and Equalization etc.If possible venture into MIMO also.I do this because everything I can do in Matlab with out the need of special hardware and DSP software/FPGA Engineer.I will also do practical hardware trials and try to publish some papers.These techniques can be used in under water communication.If any one interested to joinly work who knows Matlab well may contact me.This is just for fun and research and has no commercial interest.

Mannai_Murali@hotmail.com

[ - ]
Reply by weetabixharryApril 4, 2024
I tried something similar in MATLAB and then Python. Both versions worked well over a cable, but fell to pieces over the air.


I was transmitting between independent devices, so I did implement proper (adaptive) frequency and timing recovery to get it working over the cable. But I guess it failed over the air because the speaker/mic were quite non-linear.

I'm not sure - I didn't have much patience to debug it because it made such an awful sound! Do you have any plan for overcoming that issue?

If your project is open-source, then I would be interested to take a look.

[ - ]
Reply by ReinoTApril 4, 2024

Hi weetabixhjarry,

If you tried your over the air modem in a room, then the obvious reason for the failure is that sound propagation in rooms is multipath. A single carrier slow speed or multicarrier modems can manage that medium.


[ - ]
Reply by weetabixharryApril 4, 2024

Hi ReinoT,

I had an adaptive equalizer, which was intended to take care of multipath. (To test it, I modelled some simple multipath with an FIR filter in my transmitter, which the equalizer removed via cable connection).

But, like I said, I gave up pretty quickly on debugging due to the horrible sound.

I really should dig up the old code and try again. Perhaps I could put a couple of laptops in my car and remote-desktop in over WiFi. My neighbors might think I'm strange, but it would save my ears.

[ - ]
Reply by ReinoTApril 5, 2024

Hi,

As I don't know the details of your modem modulation and speed, I can only give general level comments. How you have tried to teach your adaptive equalizer? Have you made any multipath measurements to estimate how may taps and their gain you need? I think that you need to perform progation measurements using short pulses, perhaps shorter than the inverse of the baud rate of your modem. 

As you said there are also transduser (speaker and microphone) amplitude and phase unlinearities that alone may prevent your adaptive equalizer to find a solution. There room resonpse is usually even more problematic and changes very fast, when transmitter or receiver moves. You may get a feeling about that by using a high tone at the upper end of your modem spektrum and just moving your head, the wavelength at 3000 Hz is 10 cm.

By the way the sound level need not to be horrible strong in an otherwise quiet room as the needed signal to noise ratio needed is propably less than 20 dB.

[ - ]
Reply by Mannai_MuraliApril 5, 2024

At present I tried 8 psk and symbol rate 24 symbols/sec.At high symbol rate the frequency offset detection failed even in simulation which was feed forward based.I am trying to use a joint estimation of DFE Equalizer taps,Carrier Frequency Offset and Symbol timing.Since I use fractionally spaced DFE Phase Offset is irrelevent.The sampling clock offset is also not required whcih can be tacked by sending a known preamble periodically and finding the sampling time slip and adjusting.The PLL method had stability issues.According to one paper the joint optimisation of Equalizer taps,Carrier Phase and timing has this stability problems.The performence can be sacrifised to take care of stability which I will try now.


If I operate at the centre (say around 2khz arrier) the speaker and mike will be linear.There frequency response can be absorbed into channel which the DFE should take care.

I have written Matlab code.I have choosen this because I can get rich signal processing experience(fading,multi path etc) with out spending money for hiring FPGA/DSP Engineers.I am retired and doing this for fun with out any commercial interests.

I want to extend this to MIMO and publish papers.


[ - ]
Reply by weetabixharryApril 6, 2024

In response to Mannai_Murali:

It seems a shame to limit the center frequency to 2 kHz because that leaves so little room for signal bandwidth. Do you have any experience with how bad the non-linearity is as frequency increases? I have some experience with digital predistortion (DPD) - I worked for a while as a developer in a team putting DPD into ASICs for 5G base stations. But I would really like to just avoid non-linearity if possible, as it's a huge pain.

24 symbols/sec seems very slow indeed. My continuous-wave implementation would probably take many minutes/hours to converge with such a slow baud rate. I didn't understand why your simulation would fail at higher baud rates, so I must be missing something.

Since you already mentioned OFDM and MIMO, did you consider just implementing WiFi? 802.11a/g covers the OFDM part and 802.11n adds on the MIMO part (with very little change to the other 802.11g parts). I have implemented both in FPGAs, including the MIMO demodulation part of 802.11n. So that was really the ultimate goal of my project - to implement WiFi acoustically.

[ - ]
Reply by Mannai_MuraliApril 6, 2024

I selected 2000 Hz as the carrier frequency because if I choose higher carrier the Speaker and Mike frequency response will be poor.When I simulated at higher 2400 baud and introduce severe multi path and high ISI the feedforward Frequency Offset performs bad.But with low multi path and low ISI there is no problem with 2400 baud.

In fact intstead of audio with speaker and mike I could transmit at 2400 baud using RF and a walkie talkie because of low multi path.

I am trying to improve at high ISI at 2400 baud by having both feed forward and feed back (PLL based) Carrier Phase tracking.

I will also speed up convergence of DFE by Estimating the Channel Impulse Response freezing it and connecting the DFE to the Estimated Channel and sending symbols to Estimated Channel and computing Offline.

This way the number of Symbols needed to transmit for the DFE to converge can be reduced.



[ - ]
Reply by weetabixharryApril 6, 2024

In response to ReinoT:

Just to be clear, this isn't my forum question, so I don't want to hijack the discussion too much. But since you asked (and already provided helpful advice), I will add some details.

I didn't really have a fixed modulation scheme or baud rate in mind. If I remember correctly, I tested vanilla PSK and QAM over the cable. Over the air, I only tried BPSK. It wasn't anything clever or exotic like shaped-BPSK. It was just filtered with a root-raised-cosine filter in transmit and receive.

I can't remember exactly what baud rates I tried, but I'm sure I reduced it all the way down below 1 kBd when higher rates didn't work. I also tried a range of different carrier frequencies to no avail.

The equalizer was a very simple blind gradient-descent type (Constant Modulus Algorithm) implemented in the time domain. I know I could have gone down the pulsed/packet route and used a preamble (or similar) to train my equalizer... but for whatever reason I decided to start with continuous wave. My plan was to someday switch over to a Wifi (802.11g, so packet-based OFDM) pipeline. I wrote an unoptimized 802.11g modulator in MATLAB, but never went any further.

I had been thinking to investigate the non-linearity first. But you're probably right that I should start by looking at the multipath. I will bear your comments in mind when I restart the project.