Teensy Convolution SDR (Software Defined Radio)

Regarding the radio-signal reception of WHF - can it be done so that when this demodulator is turned on, the Sample Rate will set 192k by default? We have to search 192k in the menu for a long time....

And need to disable the LPF filters when we turn on this demodulator WHF - for bypass.
I understand that there are not enough controller ports, but you can use, for example, pin3, on which a logical level will appear when the WHF is turned on ....
But this level should disappear at pin29 above a frequency of 30 MHz.
Or disable all logic levels at the outputs of the control of LPF above 30 MHz and simple logic on the 5-OR chip, after this frequency, will turn on baypass for WHF.

And there is an error in the Teensy Convolutio SDR pinout list.
26pin - LP Filter Band 1 (<320 kHz)
27pin - LP Filter Band 2 (320.....930 KHz)
31pin - LP filter Band 3 (930...1975 KHz)
30pin - LP Filter Band 4 (1975....5375 KHz)
29pin - LP Filter Band 5 (5375 KHz...37000 KHz)

Hi Valery,

1.) sample rate: yes, that is already implemented in the newest version of the software!

2.) yes, that is also possible, but you would have to alter the function setfreq according to your specific hardware

3.) Filter pinouts: no, there is no error, it works with my hardware. BUT, you would have to modify the software for your specific hardware/filter layouts [which is not coplicated, just go into "setfreq" and alter the frequencies according to your needs]

All the best 73s,

Frank DD4WH
 
Frank, thanks for your reply!
It is very interesting to me why your compiled file does not work after loading, whereas with the compiled file from Wolfgang DH1AKF everything is fine, the receiver works very well.
 

Attachments

  • P6030872.jpg
    P6030872.jpg
    123.9 KB · Views: 278
Frank, i tried RFSIM99 instead (I tried elsie but was not able to use it correctly) - and more important - the exact parts. You can see the parameters if you enter the inductor- partnumber in digikey. You can see the q-factor and resoance frequency, in the digikey result table.
The result is is a bit different:rfsim.jpg
Only -1.53 db, and the graph looks different. I read RFSim99 is very exact and gives reliable results.

Any thoughts? :) Have I done it correctly (I don't have experience with this stuff :) ??


The board will have the frontend only, including the filterbank.
I'm thinking about adding a MMIC amplifier beforethe filters.
 
Hi Frank DD4WH

I would like to make use of your AM_demod header.
Is it a simple matter of adding the .h .cpp files for compiling and adding the audioconnection code with a switched output path for the AM-demod block?

Hope you have time to reply, Rob
 
I would like to make use of your AM_demod header.
Is it a simple matter of adding the .h .cpp files for compiling and adding the audioconnection code with a switched output path for the AM-demod block?

you seem to confuse the "Teensy SDR" with the "Teensy Convolution SDR".

The former is using all 16-bit integer math and uses blocks as in the audio library. So your proposed way of using it should perfectly work!

The Convolution SDR uses 32-bit floating point processing outside of the audio lib and it does not make use of audio-lib-like processing blocks.

Hope that helps!

Regards,

Frank DD4WH
 
Have you, or has anyone you know of, made a transceiver version of this project?

There have been several people with that plan. But as far as I know, nobody has published code for that.

If you are interested in an SDR transceiver code, you might have a look at UHSDR (however, developed for the STM32F7). This implements a full featured ham radio transceiver.

https://github.com/df8oe/UHSDR/wiki

All the best,

Frank DD4WH
 
It will probably take us a while to account for the changes in Teensy 4.0.

At the moment I am not sure whether it will compile and/or work with the T4. I do not own a T4 yet, but the order is already on its way to my home :).

You would have to:

* rebuild your hardware, because the audio board has to use different pins
* think about I2C expanders, because probably the T4 does not have enough output pins to do all the external switching (bandpass filters etc.)
* install the newest Teensyduino and other libs
* reinstall the newer CMSIS DSP library --> I am not sure if anybody got this to work with the T4

So, as you can see, its a lot of work and a lot of fiddling around.

If you are willing to try and do that, go ahead! I would be happy to hear about progress in using the T4 with the Teensy Convolution SDR code!

All the best,

Frank DD4WH
 
Hi FrankB,

thanks a lot for your simulations of the input filter!

I am a little puzzled about that difference in comparison to my simulations with ELSIE . . .

Will have to think about that and try to simulate a little more.

However, I will be travelling the next four weeks, so not much time for that . . .

All the best,

Frank DD4WH
 
It is very interesting to me why your compiled file does not work after loading, whereas with the compiled file from Wolfgang DH1AKF everything is fine, the receiver works very well.

Hi Valeri,

well thats explainable:

* there are different options to use the oscillator chip Si5351: which clock output do you use? [CLK0, CLK1, CLK2] and which Xtal frequency did you install? [25MHz, 27MHz]

These six different options alone explain why a specifically compiled file works on your machine and the other does not.

That is exactly the reason why I would recommend to compile the ino. - file by yourself according to your needs! It is not so complicated as you might think [especially for a trained ham radio amateur ;-)]!

All the best,

Frank DD4WH
 
DD4WH

Got your 2019_03_17 Convolution code to compile on T4 by just eliminating this code:
Code:
#ifndef __IMXRT1062__     //mdrT4_20190820 had to define out this to compile for Teensy 4   
  for (int f = 0; f < numfreqs; f++) {
    if ( freq == samplefreqs[f] ) {
      while (I2S0_MCR & I2S_MCR_DUF) ;
      I2S0_MDR = I2S_MDR_FRACT((clkArr[f].mult - 1)) | I2S_MDR_DIVIDE((clkArr[f].div - 1));
      return;
    }
  }
#endif  //__IMXRT1062__

Thats all Frank Bösing stuff I think, sure he can fix it no problem:)
Of course you don't need a T4 to test compiling, but it downloaded and printed the same results to the console as the 3.6. I just have a bare board so have no idea whether it works or not but sure looks promising.

Got this compile info:
Code:
Sketch uses 288224 bytes (14%) of program storage space. Maximum is 2031616 bytes.
Global variables use 473312 bytes (45%) of dynamic memory, leaving 575264 bytes for local variables. Maximum is 1048576 bytes.

Ran again and got this:
Code:
Unable to access the SD card
Bad CRC, will set to defaults
decimation stage 1: no of taps: 28
decimation stage 2: no of taps: 46
fstop2: 0.30
fpass2: 0.20

Of course no SD card, but not sure why my defaults routine isn't working. It should have saved even bogus data. The fun begins!
 
Last edited:
I'm trying to reproduce the hardware design for this receiver by DO7JBH, Dante. Can someone tell me how to contact him, or if boards/board files are available somewhere on the net?

Joe
W3JDR
 
Thanks Frank

What I find there are jpegs and pdfs, not CAD files. Of course, a ready-made board I can purchase would give a jump start..

Please advise if I'm missing something.
 
Looking over this SDR, it looks very interesting! I read through all 9 pages, but I saw no schematic or wiring diagram for the Convoluton. Do I assume the audio board plugs in, just like the 3.2 does in other applications? Could someone point out the schematic or post one?
Cheers,
Jim
 
RESOLVED!

It is with great relief, and no small amount of chagrin, that I can report that the source of these errors was in the unmodified arm_math.h file. As it turns out, Notepad++ will only turn administrator mode on and not automatically save without clicking the button again, which I had failed to do. So all of this was traced back to a permissions issue; Jan's modifications were simply never saved. Whew!

In other news, I had to overcome two more errors before getting a clean complie. The first was the same error regarding sincosf that has been encountered by other users.

Code:
error: 'sincosf' was not declared in this scope

This was overcome by inserting the following code just after the buttons are defined:
Code:
{
void sincosf(float err, float *s, float *c);

}
It may be that this function is not in the default Arduino/Teensy installation, but that's a matter for another time.


The next error had to do with another missing file, this time play_sd_mp3.h. This was fixed by installing the Arduino-Teensy-Codec-lib by Frank Boesing, available here: https://github.com/FrankBoesing/Arduino-Teensy-Codec-lib

Thanks to everyone for your support and I will hopefully have some results from my project in the next week or so!

Cheers,
John VA7JBE

Hi

Unfortunately this fix didn't work for me, I am running Arduino 1.88 with Teensduino 1.47. I kept getting the "sincosf" error, and I had followed - I'm pretty sure !! - the instructions to the letter - I repeated the exercise 3 times but it didn't work for me.

What did work for me was to add, into Teensy_Convolution_SDR.ino just after (around line 124)

#include <play_sd_aac.h> // AAC decoder by Frank B

these new lines

#include <arm_math.h>
#define sincosf arm_sin_cos_f32 //G8JCF - 2019-09-16 sincosf is not defined anywhere that I can find hence this #define

which did the trick and I managed to get a succesful build - now I just need to get hold of a Teensy 3.6. I had Frank's previous Teensy SDR with Teensy3.2 working great with an ILI9341 display, but I always felt that the ILI9341 was a bit on the small side when compared to the G8JCFSDR, http://www.g8jcf.uk, running on a PC HD screen - fair enough considering the difference in screen resolution !!

Thank you Frank for your extensive contributions to the Art of Radio.

73

Peter - GM8JCF
 
Hi Peter,

now thats strange, did you use the latest version from my github? It has the following in line 191 which should work:

Code:
extern "C"
{
void sincosf(float err, float *s, float *c);
}

All the best,

Frank DD4WH
 
Hi Jim,

sorry, there is no wiring diagram, but there is plenty of information on the Internet for low-IF SDRs like this.

There is some more information in the pdf to the Teensy SDR (https://github.com/DD4WH/Teensy-SDR-Rx/blob/master/Teensy.SDR.Documentation.DD4WH.pdf), which uses essentially a very similar hardware.

Also, look at this https://github.com/do7jbh/SSR-2

Dante has made a nice PCB with all the hardware, although the RF frontend filtering would need steeper filter skirts/more filter stages to be efficient enough to attenuate all images by 60dB.

All the best,

Frank DD4WH
 
Hi Frank

Thanks for the very rapid reponse.

I thought I had downloaded the latest version from github, but line 191 doesn't have the text above. I'll re-download and try again.

Once again, thank you

Peter - GM8JCF
 
Hi Frank

Mea Culpa !!

I had downloaded the latest version from GitHubm but I had also downloaded a version about 1~2 years ago, and I must have unzipped that older download.

I just unzipped the newest download, and the lines are exactly as U say.

In addition by adding in the missing lines into the older version, and removing my lines, the older version builds without any problems as well.

So now to clean up, and install just the latest version.

Very many thanks

Peter - GM8JCf
 
Hi Frank

Latest version of Teensy Convolution unzipped and installed.

1) Using the Arduino IDE, T_C_SDR builds correctly

2) Using the Visual Micro extension for Visual Studio 2019, T_C_SDR, build fails.
If I move
/* this allows simultaneous calculation of sin and cos to save processor time for SAM demodulation */
extern "C" {
void sincosf(float err, float* s, float* c);
}


from line 191 to around line 223, ie just after
#include "font_Arial.h"
#endif

T_C_SDR builds correctly.

If I leave
/* this allows simultaneous calculation of sin and cos to save processor time for SAM demodulation */
extern "C" {
void sincosf(float err, float* s, float* c);
}


at line 191, but change line 190 to
#include <arm_math.h>
T_C_SDR also builds correctly.

I mention my experience with Visual Micro, because I couldn't imagine using just the Arduino IDE to develop/debug a sketch of any significant size, and Teensy_Convolution-SDR is a tour de force.

Can I ask what other people use for Arduino development ?

Hopefully my experience with VMicro will help someone else who may be scratching their head !!

Peter - GM8JCF
 
Back
Top