What would you do with an XDK or XMP-64?

XCore Project reviews, ideas, videos and proposals.
User avatar
lilltroll
XCore Expert
Posts: 956
Joined: Fri Dec 11, 2009 3:53 am
Location: Sweden, Eskilstuna

Post by lilltroll »

Well, you connect the XDK to a XMP-64 and to a XAI board,
Then you do some multidimensional/multi-channel realtime adaptive filtering for Audio!

I'm still only working with the XDK+XAI for the moment regarding this :oops:

There is so many applications in this area, and I believe that XMOS is very well suitable for that with it's 64 bit MAC and low-latency. Adaptive filtering is "hidden" in so many fields.

The array microphone that Jason showed is one application that is "easy" to understand and hear a Demo of.

The next step would be to have a SDRAM chip connected to each chip in a XMP-64, and I/O to connect several CODECs to the cluster. I guess there is a solution to use the BGA in a way that you can balance the need of memory-bandwith and XLINK bandwith.
In some applications each acoustic node, needs to be correlated to all the other nodes, thus the G setup would be superior over the L setup, since the hypercube keeps a short distance/latency between all nodes.

Why all this :?:
In many application we can accept a small delay, for an example the array-microphone - as long as the audio is synced with the picture, the effect will be astonishing. The introduction of a delay gives that the calculations can be done with FFT including adaptive filtering in the frequency domain. That is even "stronger" compared to the time domain since you can weight/update each frequency-bin individually.

The largest benefit is that you can reduce the need of MIPS with the help of RAM.
From O(n^3) to somewhere between O(n*log(n)) to O(n^2*log(n)) dependent of the acceptable delay. (For O(n*log(n)) the timedelay and needed memory -> oo :roll: ), but suppose n> 1024 , using n*k*1024^2 MIPS or k*1024^3 is a real difference, where n is the penalty of the extra overhead related to FFT, but hopefully not greater than 4 ?? (Just a guess from me)


Probably not the most confused programmer anymore on the XCORE forum.
User avatar
jason
XCore Expert
Posts: 577
Joined: Tue Sep 08, 2009 5:15 pm
Contact:

Post by jason »

I would absolutely love to see someone do that microphone demo with XMOS. Would be so amazing. I wonder if you could combine it with the highly directional loudspeaker idea I saw a while back - thus enabling you to talk to anyone in a busy stadium (and hear their reply)! :-)

This wasn't the original video I saw but similar idea (the one I saw was used in a shopping centre to talk to individuals) but this is pretty similar:

dL18JdduuhA

And here is the original microphone idea if anyone hasnt seen it yet:

http://xcore.com/forum/viewtopic.php?f=21&t=780
User avatar
bsmithyman
Experienced Member
Posts: 126
Joined: Fri Feb 12, 2010 10:31 pm
Contact:

Post by bsmithyman »

I suspect this is an application of ultrasound transmitters tuned to interfere and form audible sounds; lilltroll is by far the expert here though. I think, due to the directionality of the transducers, this actually requires the transmitter to be physically steered (although you absolutely could do beam forming with loudspeakers, as mentioned above). Seems like a lot of fun, actually.
User avatar
lilltroll
XCore Expert
Posts: 956
Joined: Fri Dec 11, 2009 3:53 am
Location: Sweden, Eskilstuna

Post by lilltroll »

You can buy 25 ultrasonic transmitters fmechanical resonace@ ~45 kHz

Make an 5x5 array if you would like the same directivity in the X-Y direction, or a line array for other patterns.
It's not any strange interference that happens with superposition. It could be just one big plate, but it's tricky to have a large plate with a 45 kHz resonance.
Therefore you have to distribute the transceivers. Some companies are making very thin materials in exotic expensive materials, so at least a line-array can be made from one piece.

We had an 5x5 array at the university, and I made an 2x2 array myself. 4 transducers do not emmit so much acoustic power, so the sound wasn't more than a whisper. (It's a nonlinear effect dominated with a squared function, so it's not a change from 25/4 in acoustical power it's around 625/16 going from 4 to 25 transmitters)

The CPU load is to make a non-linear pre-compensation in such a way that the final sound below 10 kHz get as low distortion as possible. That's just some nice math - but some solutions are still protected by patents.
Probably not the most confused programmer anymore on the XCORE forum.
androider
Member++
Posts: 24
Joined: Sat Sep 18, 2010 4:05 am
Contact:

Post by androider »

Just some musings ....

I think the fact that I can't disclose what I'm working due to patent protection requirements is a good sign. This means to me that the XMP64 and the XCORE chips are viable for new product development.

Now, if a VC wanted to talk and sign NDA, yada yada, perhaps I could reveal a bit more :D

On a non-proprietary note .... has anyone tried integrating the XMP64 with a FPGA development toolkit?
User avatar
lilltroll
XCore Expert
Posts: 956
Joined: Fri Dec 11, 2009 3:53 am
Location: Sweden, Eskilstuna

Post by lilltroll »

The thing with patent is that you can reveal all the information after you have filed your papers.

Some large companies will not talk to a small inventor if he hasn't made his findings patent pending first - because if you have, you have a date and a explanation of what you claim is your IP.

After at most 18 months everyone can read the patent free on the web, and even build there own device for evaluation without paying any license cost.
Probably not the most confused programmer anymore on the XCORE forum.
User avatar
antivigilante
New User
Posts: 2
Joined: Tue Jul 27, 2010 9:52 pm
Contact:

Post by antivigilante »

I'd like to develop a computer that no longer spends aeons moving addresses around. It's pathetic. Instead it would be great if each of these cores behaved like memory addresses with cpus inside them.

The main thing would be that memory read/write signals would start different routines stored in the cores. Perhaps even value triggered routines. The whole conditional logic portion of a program would become emergent rather than explicitly defined with all the insane jumping over jumps.

For games, instead of collision detection, small bits of data could travel on hypercube trajectories in parallel and if they meet there's a routine launched, otherwise they continue on their way.

Being a physics geek, I'd even create games with nonstandard physical laws in which you could construct evolving worlds as answers to puzzles.
User avatar
octal
XCore Addict
Posts: 228
Joined: Thu Jan 27, 2011 3:30 pm
Location: Argenteuil - France
Contact:

Post by octal »

jason wrote:I am interested to find out, if given the chance, what people here would make with one of XMOS's XDK's or XMP-64's! Go wild! Share your thoughts with us.

For those of you who do not know what these kits are, check out these links:

XDK

XMP-64
With an XMP-64, I think I would try to implement an SQL requests precompiler for database server.
To give a simple explanation, imagine a MySQL database server that need to handle hundreds of requests.
By adding an XMP-64 based device between the external network and the MySQL db server, one can imagine that each node of the XMP64 could check and precompile the SQL statement to a binary (PCode) format that MySQL can execute nn times faster.
This solution is (of course) not useful for db servers that handle stored procedures, as these last are already precompiled on most actual DB servers (including MySQL5 with some dbengines).
User avatar
Vaati
Active Member
Posts: 39
Joined: Sat Dec 25, 2010 7:09 pm
Contact:

Post by Vaati »

With an XDK, I'd make a cartridge-style device that helps users develop for other microcontrollers and languages, so the XDK would sort of simply allow other chips to interface to its LCD, buttons, sound, ethernet connectivity, SD, etc. To put it simply, it'd be like a Nintendo Gameboy with dev cartridges. ;)

With the XMP-64, I would make a development computer, capable of flashing most all microcontrollers and memory devices (a full list can be found in my box of chips that I don't have programmers for) and runs some form of linux.

I also think that the XMP-64 should have a flash memory version instead of OTP so users can actually develop for it instead of permanently program a $1500 development kit.
User avatar
octal
XCore Addict
Posts: 228
Joined: Thu Jan 27, 2011 3:30 pm
Location: Argenteuil - France
Contact:

Post by octal »

Vaati wrote: With the XMP-64, I would make a development computer, capable of flashing most all microcontrollers and memory devices (a full list can be found in my box of chips that I don't have programmers for) and runs some form of linux.
For flashing components, you'll need to be able to generate various volatge levels, somekind of programmable DAC on most of pins will be needed. I think this can be better done using an ASIC or maybe some PSoC.

As for Linux ("run some form of Linux") the main pb is that Linux is memory hungry. Even by implementing a kernel compress/decompression to be able to launch the OS, I don't think that a serious kernel can run in less than 2 or 3 MBytes. I think that XMOS chips are mainly done for OS-Less systems, or running some RTOS kernels.
Post Reply