Request for DSP documentation


14 posts
by mikedad » Fri Aug 24, 2012 12:09 am
According to the hardware entry in the wiki http://elinux.org/RPi_Hardware (under the components section) there is a DSP on the BCM2835 SOC. It would be fantastic if Broadcom would make available the docs for this DSP. As a professional DSP programmer, I would love to see what its capabilities are, and I would guess that there are a bunch of interesting projects that could come from the community. My son and I have been having a lot of fun with our PI, and have a few audio projects in mind that would benefit greatly from a DSP.

If there is enough interest from the community, is there a chance that Broadcom would make these docs publicly available?
Posts: 6
Joined: Fri Aug 10, 2012 2:50 pm
by liz » Fri Aug 24, 2012 9:28 am
We're working on it. That's all I can say at the moment. :)
User avatar
Foundation
Foundation
Posts: 3892
Joined: Thu Jul 28, 2011 7:22 pm
by andyroyal » Fri Aug 24, 2012 9:46 am
Interesting... I hadn't noticed that the chip has a DSP in it until you pointed it out. Now I'm getting flashbacks to college, noise reduction projects, z-domain filtering, etc. etc...

I wonder if something like ALSA could take advantage of that?
Posts: 32
Joined: Fri Jul 20, 2012 7:41 pm
Location: Berkshire, UK
by jamesh » Fri Aug 24, 2012 2:23 pm
The GPU actually has quite a few cores in it for various things - Vector/scaler core for general compute, various 'Quad' processors for 3D work (nasty things to program), plus many HW blocks for differing functions (Camera ISP, video Encode/decode etc). At the moment, no docs for the GPU are publicly available.
Moderator
Moderator
Posts: 10522
Joined: Sat Jul 30, 2011 7:41 pm
by dom » Fri Aug 24, 2012 2:35 pm
andyroyal wrote:I wonder if something like ALSA could take advantage of that?


It does a little. The ALSA driver advertises it can handle all sample rates. HDMI may only handle 48kHz. The GPU will handle the resampling.
Moderator
Moderator
Posts: 3858
Joined: Wed Aug 17, 2011 7:41 pm
Location: Cambridge
by andyroyal » Fri Aug 24, 2012 3:01 pm
jamesh wrote:Vector/scaler core for general compute
Is that typo, where you should have said "scalar", or does the core contain processing units specifically designed to do scaling?

I used to be in the old video encode/decode/output processing game meself y'know. I'd guess there's some kind of embedded microcontroller in there to control the cores, and if we were able to program that up... :D

I'm now a filesystem bloke - I mentioned the DSP core on the Raspberry Pi to a few colleagues over lunch and immediately they had a few ideas about what you could do with it. For example SHA-256 brings a CPU to its knees but a DSP could do a great job there.

I'm liking the Raspberry Pi ever more by the minute.
Posts: 32
Joined: Fri Jul 20, 2012 7:41 pm
Location: Berkshire, UK
by jackokring » Fri Aug 24, 2012 3:48 pm
andyroyal wrote:
jamesh wrote:Vector/scaler core for general compute
Is that typo, where you should have said "scalar", or does the core contain processing units specifically designed to do scaling?
[/quote]

A scalar is a singular quantity, i.e. a tensor with dimension (or rank) 0.

GPU could do DSP, but I've yet to find out how to render to an off screen frame buffer. And have the result returned as an array of any dimension.

Cheers Jacko
Pi=B256R0USB CL4SD8GB Raspbian Stock. https://sites.google.com/site/rubikcompression/strictly-long
User avatar
Posts: 745
Joined: Tue Jul 31, 2012 8:27 am
Location: London, UK
by Neil » Tue Aug 28, 2012 2:51 pm
andyroyal wrote:
jamesh wrote:Vector/scaler core for general compute
Is that typo, where you should have said "scalar", or does the core contain processing units specifically designed to do scaling?

Both :)

There are two powerful RISC processors and one vector processor. As well as all the other stuff James mentioned. We differentiate between the two with "scalar" being the normal processors, and "vector" being the vector processor. And "James" for James.

Neil
Posts: 88
Joined: Thu Sep 29, 2011 7:10 am
by jackokring » Thu Sep 06, 2012 10:13 pm
I'm working on an idea for OpenDSP, such that the particular architecture of the DSP used does not have to be known. Working as like a VM for DSP, with possible JIT target compilers.

https://github.com/jackokring/jarvar/wiki/DSP
Pi=B256R0USB CL4SD8GB Raspbian Stock. https://sites.google.com/site/rubikcompression/strictly-long
User avatar
Posts: 745
Joined: Tue Jul 31, 2012 8:27 am
Location: London, UK
by jackokring » Thu Sep 13, 2012 9:50 pm
Here's a software simulation of a DSP thread, which maintains relative synchronization between DSP units. You can use this freely to build large DSP simulations, and try out some parallel DSP. Just in Java at present, as I'm busy looking at the FX docs and such.

https://github.com/jackokring/jarvar/blob/master/jarvar-base/src/uk/co/peopleandroid/jarvar/internals/SoftDSP.java
Pi=B256R0USB CL4SD8GB Raspbian Stock. https://sites.google.com/site/rubikcompression/strictly-long
User avatar
Posts: 745
Joined: Tue Jul 31, 2012 8:27 am
Location: London, UK
by rvega » Thu Oct 18, 2012 2:18 pm
+1 I'd love to use the RasPi for audio effects, with a usb audio input.
Cheers!
Posts: 1
Joined: Thu Oct 18, 2012 2:13 pm
by startreksteve » Thu Oct 18, 2012 3:23 pm
Does this mean we could make a DAB or DRM radio out of the Pi?
Posts: 43
Joined: Tue Mar 13, 2012 10:23 am
by pali » Sat Oct 26, 2013 1:49 pm
liz wrote:We're working on it. That's all I can say at the moment. :)


Some news about DSP documentation?
Posts: 5
Joined: Sat Sep 21, 2013 12:26 pm
by usul27 » Fri Nov 08, 2013 12:42 pm
According to ARM, the DSP unit is a 16-bit unit. But I don't have any other information about it.
However, I had a look on the Vector floating point unit. It looks quite interesting. It works with single and double precision. All single precision and even many double precision calculations need a single clock cycle. This could also be an option to use for signal processing. Anybody did this already?
Posts: 11
Joined: Mon Nov 26, 2012 9:54 am