ik1xpv hamradio software & hardware

BBRF103-2 RC3 is here!

Radek Haša is a shortwave and airband listener living in Czech republic.
He decided to redesign the PCB layout and assembled a prototype of the BBRF103-2.
Thanks for allowing his project to be published.

undefined

While designing the PCB in Eagle 8.x format, he noticed and fixed some bugs in my layout.

- Referring to transformers T1,T2,T3. The Coilcraft WBC4-6TL type is better than the WBC4-1TL. The insertion loss is 0.65 dB instead of 1 dB. (WBC datasheet)
Note that terminals 4 and 6 of the primary winding are interchanged in the electric scheme and the SMD footprint used in the PCB. This does not affect performance and will be corrected in the future PCB version to match the original SMD footprint.

- The Q1,Q2,Q3,Q4 SMD footprint is corrected in RC3 PCB.

- C44 and C55 silkscreen locations are swapped in the BBRF103-2 original PCB. Footprint is corrected in RC3 PCB layout.

Prototype was tested on desktop PC equipped with Intel Pentium G4600 CPU and B150 chipset USB 3.0 hub controller. Hereafter some pictures of prototype under testing.

 

undefined

undefined

undefined 

He made some test of temperature of the ADC and R820T2 in VHF mode.
“There are no heatsinks on ADC and R820T2. The temperature of the ADC reached 73 ° C while the R820T2 reached 60 ° C at 100MHz. Room temperature was 27 ° C.“

WARNING: notice that this description is a BETA test version without any warranty and is intended for non-commercial purposes.

Radek’s PCB design files can be downloaded here: http://www.steila.com/radek/BBRF103_2_RC3.zip
The archive contains:
BBRF103-RC3.sch
BBRF103-RC3.brd
BBRF103.ods
license.txt


Finally please notice that ExtIOsddc.dll ver 0.96 software does not yet control the antenna power via dll panel window and to enable VHF (R820T2) mode you must undefine _NO_TUNER_ in config.h and recompile.

 

 

email: ik1xpv AT gmail DOT com

Just another BBRF103 version

A new board to experiment with undersampling technique.

“..If we use the sampling frequency less than twice the maximum frequency component in the signal, then it is called undersampling. Undersampling is also known as band pass sampling, harmonic sampling or super-Nyquist sampling. Nyquist-Shannon Sampling theorem, which is the modified version of the Nyquist sampling theorem, says that the sampling frequency needs to be twice the signal bandwidth and not twice the maximum frequency component, in order to be able to reconstruct the original signal perfectly from the sampled version. If B is the signal bandwidth, then Fs > 2B is required where Fs is sampling frequency. The signal bandwidth can be from DC to B or from f1 to f2 where B = f2 – f1. The aliasing effect due to the undersampling technique can be used for our advantage. When a signal is sampled at a rate less than twice its maximum frequency, the aliased signal appears at Fs – Fin, where Fs is the sampling frequency and Fin in the input signal frequency. “ from Why Use Oversampling when Undersampling Can do the Job? - Texas Instruments.

In an example case looking at FM band we sample the input 98 MHz with Fs = 56MHz and the aliased component will appear at 14 MHz ( 56*2 – 98).
As we know in advance that the signal is aliased, we can recover the actual frequency by using the N*Fs – Fin relationship. The undersampling technique allows the ADC to behave like a mixer or a down converter in the receive chain. For a band-limited signal of 98 MHz with a 20-MHz signal bandwidth, the sampling rate (Fs) of 56 Msps, the aliased component referred to 2*Fs will appear between 4MHz to 24 MHz (20 ±10 MHz.
An analog band pass filter is required at ADC input to avoid interference from other Nyquist band.

undefined

Undersampling Case of 98MHz Signal with 20MHz Bandwidth.

 

I designed a new breadboard with some modification. The PCB is named BBRF103 ver 0.5.

undefined

BBRF103 ver 0.5 - block diagram.

The J1 input uses a band stop filter for the FM Band 88-108 MHz.
This input is planned for experimental use within 120-500 MHz frequency range. Some specific band pass filter and LNA will be externally added for 50MHz, 144MHz or 432MHz band.

undefined

The FM Band Stop Filter - LTspice simulation.

The J2 input has a band pass filter for the FM band to analyze the full 88-108 MHz band spectrum at once. This filter is quite simpler as the FM signals are very strong versus possible interference.

undefined

FM band filter response.

Finally J3 is the HF input. The filter components values are changed from first version of BBRF103.

 undefined

HF low pass filter.

The connector J4 is an optional input for an external reference signal. A capacitor must be mounted to enable this signal.

J5 and J6 are two programmable clock output from the Si5351 generator. May be used to synchronize external tuner oscillator.

RF switch type
I like to test a bi-stable subminiature DIP relay type HFD2/005-M-L2-D to switch RF instead of active switches. 
The relay is a 5Volt dual coil latched one.  I shielded it using adhesive copper tape that will be soldered to the PCB ground plane.

 undefined

Relays used. The left one with a copper tape shield added.

The board scheme and PCB layout is at link http://www.steila.com/test/BBRF103_5.pdf

undefined
I preview to receive the PCB within September and then to start testing.

 

email: ik1xpv AT gmail DOT com

 

 

 

BBRF103 - Band L reception

BBRF103_2 PCB adds a switchable LNA power supply through the antenna cable

I tested it with an Outernet L-band ceramic patch antenna.  This antenna requires  power and can be connected to BBRF103_2 PCB. The antenna onboard filter helps to reduce problems from interfering signals and restricts reception to 1525 - 1559 MHz.

The antenna is a 12 by 12 cm square PCB.  I placed it into a plastic radome ( an empty IKEA FIXA series DIY kit ).

 

undefined

A picture of the installed radome.

 

Some screenshots of the band L:

undefined

Reception of Inmarsat C  with  WinSTD-C program.

 

undefined

Ten MHz down there are many other satellite signals.  The gap in the spectrogram shows the BBRF103 noise when the antenna power is switched off;  two spurious signals are visible on the right.

BBRF103_2 PCB notes

ADC:  I mounted the BBRF103_2 prototype with a LTC2208 ADC instead of LTC2217. I wanted to check compatibility and I had not any other LTC2217 sample. The LTC2208 is a little noiser than LTC2217 by some 2 dB.  The LTC2208 draws  some mA more current.

Antenna power: The  scheme uses 2N3906,2N3904 : Q2,Q3,Q4,Q5. The pcb footprint is wrong. Mount them upside down on the pc board.

I mounted R42,R43,R44 = 10 Ohm,  it increases the output current. 

R820T2:  I added some bypass capacitors to the VCT line on the top layer. 

Temperature: I made some measure of the temperature of R820T2 and LTC2208 with a small copper radiator.

 undefined

The temperature of the ADC with a small copper radiator reaches 67 ° C while the R820T2 with the radiator reaches 45 ° C.

Preview: I will use MAX4995 50mA to 600mA Programmable Current-Limit Switch to control the LNA current in a new pcb's revision and some heat radiators will be added to ADC and RT820T2...

 

 email: ik1xpv AT gmail DOT com

R820T2 update - BBRF103_2 PCB

A bug crashed the USB3.0 stream at random time while the R820T2 tuner was active. ( Troubleshooting BBR103 )

It was caused by a spurious coupling via the 3V3 power supply. 

I thought of a problem in the firmware of FX3 while the cause was hardware.
I decoupled the R820T2 3V3 power supply using a separate LDO from the 5V USB bus to
solve the problem in the prototype.

The R820T can be used to receive frequency band in the range 30MHz -1800MHz.
The tuner uses a clock generated by Si5351A at 32.000MHz, the REGDIV bit of reg 4 is set to 1 to divide it by two internally to the nominal 16MHz.
The IF output is selected at 5MHz ( I used up to 7.5MHz) and it’s sampled by the ADC at 64Msps and then decimated down to 8Msps or less. The R820T data sheet states that the standard IF filters are implemented for 6/7/8 MHz channel bandwidths.

The LNA, the mixer and the VGA gains can be set manually although their precise values are absent from the datasheet.
They can also be set automatically via automatic gain control (AGC) in order to optimize the signal to noise ratio (SNR).

A revision of PCB  BBRF103_2 has been designed: ( www.steila.com/test/BBRF103_2B.pdf )

- A separate LDO voltage regulator for R820T2 has been added

- 1000 uF capacitors with a mosfet delayed switch has been added to 5VBUS and 3V3 R820T2.

- Antenna power supply with software switch added to HF and VHF input

- SMD pad dimensions have been increased a little bit to simplify manual assembly.

- Board profile modified to house SMA connectors. 

- BAV99 smd layout corrected.

- A header P7 with some GPIOs added.

- Possibility of external frequency reference input to Si5351a  ( P8 ).

- Aux clock ouput  (P9).

 

I just received the manufactured pcb and possibly I will test it in the next month.

undefined

 

BBRF103 and ExtIO.dll ver. 0.96 get 32 MHz span

 undefined

End of September 2017 I was googling “SDR and FX3” when I found a nice SDR project named Booya SDR (http://booyasdr.sourceforge.net/BooyaSDRDoc.pdf , http://booyasdr.sourceforge.net/).

It uses the same USB3 Cypress Explorer Kit Board while the ADC is a LTC2206.
Reginald Eisenblatt, gave a presentation on the BooyaSDR ( January 23, 2017, at Linaspace see http://www.amrad.org/ ).
Some video at https://www.youtube.com/watch?v=uF6y0ETTJFA , notice the Waterfall with multiple rows!

The BooyaSDR application is very clever. It uses gcc compiler with pthreads and fftw library. The FX3 firmware is loaded at run time using the Cypress download protocol.

I decided to use the same software environment and compiler to test a version of ExtIO_sddc.dll for BBRF103 with pthreads lib.

To install CodeBlocks 12.11 IDE , https://sourceforge.net/projects/codeblocks/files/Binaries/12.11/Windows/  download codeblocks-12.11mingw-setup.exe  -> Default installer WITH compiler (MinGW).

ExtIO_sddc.dll ver 0.96 project links to the following libraries:
pthreads :
https://sourceforge.net/projects/pthreads4w/files/pthreads-w32-2-9-1-release.zip/download
copy Pre-built.2 directory contens into /lib/pthreads/.
Fftw:http://www.fftw.org/
ftp://ftp.fftw.org/pub/fftw/fftw-3.3.5-dll32.zip

CyAPI_gcc:
a gcc compiled version of CyAPI.cpp.
library source can be downloaded at http://www.cypress.com/file/289981/download
(see License) .

The directories structure I used is:

ExtIO_sddc \                            readme.txt ,
ExtIO_sddc \BBRF103_SE         FX3 firmware,
ExtIO_sddc \source\                 sources, ExtIO_sddc.cbp,
ExtIO_sddc \Lib\fftw                 fftw library,
ExtIO_sddc \Lib\pthreads          pthreads library ,
ExtIO_sddc \Lib\CyAPI_gcc       CyAPI gcc library ,
ExtIO_sddc \bin\debug             debug ExtIO_sddc.dll, HDSDR ,
ExtIO_sddc \bin\release            release ExtIO_sddc.dll, HDSDR.

The bin\release and \bin\debug  directories contain:

HDSDR.exe
ExtIO_sddc.dll                         release or debug
BBRF103_SE.img                     BBRF103 firmware image
libfftw3f-3.dll
pthreadGC2.dll

Sources repository :  

https://github.com/ik1xpv/ExtIO_sddc-Ver0.96

An archive file of project with compiled binaries can be download at

http://www.steila.com/test/ExtIO_sddc_v096.zip

MD5    6efcd88bdc14107389cae5d6f7efe3dc

SHA-1 88ef3f3ba6276da694f6e92ebb71d987046de100

Hardware:

The BBR103 has been updated to version 0.2 with the following patch.
- RAND patch: a wire has been added to control the RAND pin of ADC using GPIO20 of FX3.
This option allows the control and test of RAND feature of ADC (see pg 14, 24 of http://cds.linear.com/docs/en/datasheet/2217f.pdf).
The wire connects RAND (U3-pin 63, R7,R9) to GPIO20 ( BGA K7 = PIN25 J6 FX3 SS kit).

Firmware:

The Firmware source can be found into the archive file of project under \Firmware directory

Status:

The 0.96 version is still a preliminary release with some bugs. It operates in HF mode only.

Problems remain in use of R820T2 tuner, and a  post on this argument will follow.

The digital signal processing frontend uses a the Halfcomplex-format DFT (http://www.fftw.org/fftw3_doc/The-Halfcomplex_002dformat-DFT.html).

The FFT output is sent to HDSDR with a selectable rate of 32 Msps or a decimated one at 16, 8, 4, 2 Msps.

undefined

Filtering and tuning is made using overlap and add with frame of 1024 as 768 +256 samples. The filter time responses are 257 sample long.

When 32Msps is used the local oscillator of HDSDR is fixed to 16 MHz at centre of spectrum and the fine tuning of HDSDR allows reception from 500 kHz to 31500 kHz, while with lower sample rates the local oscillator can be tuned with 125 kHz step while the fine tuning is made by HDSDR.

At this development stage ExtIO_sddc.dll has a GUI dialog with 4 tabs :

  • Status - reports ADC rate and I&Q rate.
  • BBRF103 -  buttons : 

LW-MW this is used to modify the FFT output filtering to receive the low frequency band.
HF - standard HF setup .
VHF - enables R820T2 ( it is disabled, to enable undefine _NO_TUNER_ in config.h and recompile)
DITH - enables the ADC dither.
RAND - enables the ADC randomize.

TRACE - enabled in debug mode  to trace some signals to log files.

  • Test

RF ADC stream: it requires BB103, ADC input ,default,
RF virtual tone: it requires BB103, virtual tone,
RF virtual sweep: it requires BB103, virtual sweep,
IF virtual tone: NO hardware required, virtual tone ,
IF virtual sweep: NO hardware required, virtual sweep,

  • About

 Hereafter a video recorded with  a random wire antenna 5mt long on the balcony (in the city).

Troubleshooting BBR103

"Troubleshooting or dépanneuring is a form of problem solving, often applied to repair failed products or processes on a machine or a system. It is a logical, systematic search for the source of a problem in order to solve it, and make the product or process operational again. Troubleshooting is needed to identify the symptoms. Determining the most likely cause is a process of elimination—eliminating potential causes of a problem. Finally, troubleshooting requires confirmation that the solution restores the product or process to its working state."   (from:https://en.wikipedia.org/wiki/Wikipedia:Troubleshooting).

BBR103 prototype is alive, nevertheless some bugs limit the performance. Hereafter the syntoms and some investigation to hopefully solve them.

I focused on the HF operation using HDSDR with IF bandwidth of 16 MHz as shown in the following picture.

undefined

The BBR103 in the picture is connected to a 5 meter wire on my balcony in the city.  The ADC performance seems good as espected.

Nevertheless I notice the following problems during its use: 

001)  (SOLVED)  The signals had a periodic distortion (-50 dB down)   at 10ms time distance. I noticed it using a 10MHz reference generator.

        The bug was periodic with the period of the FRAMEN lenght buffer. Digging in the rfddc code I got the bug. It was mirroring the wrong past frame. 

undefined

 

002)   There are some distortion on the signal that are at random time like the following I got in a IQ waveform recorded with HDSDR.

undefined

 The distortion looks like a 90° phase shift. I imagine that the cause is in the dll. The randomness of the  behaviour keeps the search difficult.

 

003) The USB communication fails at random time (up to some tens minutes). I got the following debug message:

...
Xfer request rejected. NTSTATUS = c000000e
AbortXferLoop()
...

The USB device disconnects.  It requires reset to start again. 

My knowledge about USB is very low and I have to learn everything. I found some hits:

https://community.cypress.com/thread/27549

I run the attached https://community.cypress.com/servlet/JiveServlet/download/122270-26243/FX3GPIFnoise.zip

I used the following procedure:

1) Load the SDRx3B.img in BBRF103. 

2) Run HDSDR and then close it ( to initialize the BBRF103 hardware).

3) Run the FX3USBread console application from FX3GPIFnoise.zip.

I use a script file. In this example it has a 3 minutes run.


d:\DEV\FX3GPIFnoise>time /T
03:15 PM
d:\DEV\FX3GPIFnoise>FX3USBread
FX3USBread version 1.0
Press ESC for stop
Count:22982361088 Speed:120.571MB/s Max:122.792MB/s
DeviceIoControl failed (GetOverlappedResult error code=995)
Operazione di I/O terminata a causa dell'uscita dal thread oppure della richiesta di un'applicazione.
d:\DEV\FX3GPIFnoise>time /T
03:19 PM
d:\DEV\FX3GPIFnoise>PAUSE
Premere un tasto per continuare . . .

It crashes at random time as it happens with HDSDR+ ExtIO_sddc.

 

I made the same test using Cypress stream application.

Power on of BBR103 with HDSDR + ExtIO_sddc.dll to program ADC clocks.

Run stream.exe  I got the same problem after some time ( 5 minutes in the example )

undefined

The bug seems to be in the FX3 device firmware because it happens with 3 different application. 

..continue..

Thanks in advance for advice at ik1xpv~gmail.com.

 

 

 

 

Home ← Older posts