Jump to content


Photo

DAB radio reception


  • Please log in to reply
350 replies to this topic

Re: DAB radio reception #341 waterpas

  • Senior Member
  • 26 posts

0
Neutral

Posted 29 January 2018 - 16:23

Thanks a lot!!



Re: DAB radio reception #342 Matrix10

  • Senior Member
  • 285 posts

+22
Neutral

Posted 29 January 2018 - 18:21

Thanks a lot!!

 

If you look a little bit better, this antenna has several resonant points inside the DAB frequency range, which naturally gives a better result than a simple vertical telescopic antenna.

Of course you can go with more dipoles
and have greater frequency bandwidth on which you can use antenna.


Re: DAB radio reception #343 Matrix10

  • Senior Member
  • 285 posts

+22
Neutral

Posted 30 January 2018 - 15:43

I have a question if someone knows ???
 
Does any of the existing images have a good driver for DVB-T / T2 and RTL SDR/ R820T2 RTL2832U
 

Re: DAB radio reception #344 Tech

  • Forum Moderator
    PLi® Core member
  • 9,622 posts

+217
Excellent

Posted 30 January 2018 - 18:50

It is not available (yet) for OpenPLi, so you need to install the needed packages by hand.


Aan de rand van de afgrond is een stap voorwaarts niet altijd vooruitgang....

Re: DAB radio reception #345 Matrix10

  • Senior Member
  • 285 posts

+22
Neutral

Posted 30 January 2018 - 19:38

It is not available (yet) for OpenPLi, so you need to install the needed packages by hand.

 

Which packages?
I do not have them.


Re: DAB radio reception #346 jpuigs

  • Senior Member
  • 712 posts

+11
Neutral

Posted 30 January 2018 - 23:49

Today dab-cmdline-sdgradio packages have been updated, and PCM doesn't work at all (DAB).

 

I have downgraded dab-cmdline-sdgradio-pcm from 1.2+git198+beaa71d-r0 to 1.2+git186+5b3f8e6-r0 (the last one attached several pages before this one) and it works again


DM 800 HD - DM 500 HD - DM 7020 HD - ET7500 - ET9000 - ET10000 - SF 4008 - Mvision HD 700 L (e2) - Triple Dragon - .......


Re: DAB radio reception #347 athoik

  • PLi® Core member
  • 7,127 posts

+241
Excellent

Posted 31 January 2018 - 21:48

Most probably that commit causes the issues: https://github.com/J...2ebca704e1f14e5

If somebody has time to step on it and fix it would be nice, or at least provide some debug on dab-cmdline author in order to fix the bug.
Wavefield T90: 0.8W - 5E - 7E - 13E - 16E - 19E - 23E - 26E - 28E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: DAB radio reception #348 jpuigs

  • Senior Member
  • 712 posts

+11
Neutral

Posted 3 February 2018 - 00:13

dab-cmdline-sdgradio-pcm - 1.2+git199+edb7514-r0 seems to gix it.


DM 800 HD - DM 500 HD - DM 7020 HD - ET7500 - ET9000 - ET10000 - SF 4008 - Mvision HD 700 L (e2) - Triple Dragon - .......


Re: DAB radio reception #349 athoik

  • PLi® Core member
  • 7,127 posts

+241
Excellent

Posted 24 February 2018 - 10:22

Hi,

Here is a benchmark of viterbi algorithm (available from spiral.net http://www.spiral.ne.../viterbi.html).

The MIPS doesn't have enough power, that's why it doesn't work (yet?).

During the test I stopped enigma2 (init 4) in order to ensure that program was using full power of receiver.

The Os / O2 / O4 is the optimization flag used to compile viterbi test program. Next to program also there is the unstripped size and stripped size.

osninoplus: MIPS BCM73625

vusolo4k: ARM BCM7376
 
root@osninoplus:~# ./viterbi.mips.Os (30K / 20K)
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 31.58 sec
decoder speed: 648.43 kbits/s


root@osninoplus:~# ./viterbi.mips.O2 (30K / 20K)
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 28.06 sec
decoder speed: 729.891 kbits/s

root@osninoplus:~# ./viterbi.mips.O4 (32K / 22K)
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 28.09 sec
decoder speed: 729.085 kbits/s

=====================================================


root@vusolo4k:~# ./viterbi.arm.Os (28K / 19K)
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 9.57 sec
decoder speed: 2140.02 kbits/s


root@vusolo4k:~# ./viterbi.arm.O2 (28K / 19K)
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 7.54 sec
decoder speed: 2716.18 kbits/s


root@vusolo4k:~# ./viterbi.arm.O4 (32K / 23K)
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 7.53 sec
decoder speed: 2719.79 kbits/s
The O2 produce nice results, without increasing the size a lot.

(We compile by default all images using Os flag, in order to reduce binary size, but today's boxes have plenty of flash. Maybe we need to switch back to default O2.)


The ARM binary is more than 3x faster than MIPS!


The x64 binary on Intel® Xeon® CPU E3-1245 V2 @ 3.40GHz and on Intel® Core™ i7-4980HQ CPU @ 2.80GHz is almost 3x faster than ARM, and of course there also an SSE version.

Execution time for 10000 2054-bit frames: 2.32 sec
decoder speed: 8827.59 kbits/s
Execution time for 10000 2054-bit frames: 2.46 sec
decoder speed: 8311.69 kbits/s

The SSE 4-way version is much faster...

Execution time for 10000 2054-bit frames: 0.70 sec
decoder speed: 29257.1 kbits/s

The SSE 16-way version is screaming...

Execution time for 10000 2054-bit frames: 0.28 sec
decoder speed: 73142.9 kbits/s

Somebody to create a SIMD version for NEON please?

Attached Files


Wavefield T90: 0.8W - 5E - 7E - 13E - 16E - 19E - 23E - 26E - 28E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: DAB radio reception #350 Erik Slagter

  • PLi® Core member
  • 42,472 posts

+454
Excellent

Posted 24 February 2018 - 10:58

Maybe it could split to be make use of the second thread of the processor.


* Wavefrontier T90 with 28E/23E/19E/13E/9E/4.8E/0.8W/5W via SCR switches 2 x 2 x 6 user bands
* Ziggo digital cable TV (FTA)

I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.

Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: DAB radio reception #351 athoik

  • PLi® Core member
  • 7,127 posts

+241
Excellent

Posted 24 February 2018 - 13:01

Maybe it could split to be make use of the second thread of the processor.


I think dab-cmdline already uses several threads to spread the load. Not sure if multi-threading is used when performing viterbi decoding.

Anyway I was able to use the 4 way SSE with NEON instructions thanks to SSE2NEON (https://github.com/j...ster/SSE2NEON.h)

I compiled using default "OE" values and using cortex-a7 mcpu, cortex-a7 produces slightly better results.
 
root@vusolo4k:~# ./viterbi.arm.neon
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 6.14 sec
decoder speed: 3335.5 kbits/s


root@vusolo4k:~# ./viterbi.arm.cortex-a7.neon-vfpv4
Code specifications:
         rate = 1/4
         K = 7 (thus 64 states)
         frame size = 2048 (thus padded frame size = 2054)
         polynomials = { 109, 79, 83, 109 }

Computing error rates over 10000 frames, ebn0 = 3.00 dB, gain = 32
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Verification: Error rates of a generic decoder
BER 3063/20480000 (   0.00015) FER 761/10000 (    0.0761)

Execution time for 10000 2054-bit frames: 5.94 sec
decoder speed: 3447.81 kbits/s
I am sure that NEON instructions can produce better results, once used right.

As I said before (I think I mention it) there is a NEON (and SSE)viterbi decoder available here:

https://github.com/t...src/conv_neon.h
https://github.com/t.../src/conv_dec.c

Most probably we need something like the following.. (But I have no idea how to integrate it to dab-cmdline).
 
int conv_decode_p4(const int8_t *in, uint8_t *out)
{
	const struct lte_conv_code code = {
		.n = 4,
		.k = 7,
		.len = 2048,
		.gen = { 109, 73, 83, 109 },
		.term = CONV_TERM_TAIL_BITING,
	};
	int rc;

	struct vdecoder *vdec = alloc_vdec(&code);
	if (!vdec)
		return -EFAULT;

	reset_decoder(vdec, code.term);

	/* Propagate through the trellis with interval normalization */
	_conv_decode(vdec, in, code.len);

	if (code.term == CONV_TERM_TAIL_BITING)
		_conv_decode(vdec, in, code.len);

	rc = traceback(vdec, out, code.term, code.len);

	free_vdec(vdec);
	return rc;
}

Edited by athoik, 24 February 2018 - 13:02.

Wavefield T90: 0.8W - 5E - 7E - 13E - 16E - 19E - 23E - 26E - 28E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users