Hi all,
Some times I thinking to start learning to develop with FPGA's but ones you go deeper into the field of these devices the more challenging it gets.
And its likely that flowcode is going to support FPGAs in a few years time.
Thats makes me wonder, because I have seen what FPGA's can do, and its really awesome, the main advantage of a FPGA is that it can do several task at the same time. So there must be a device that can also do several tasks at the same time, and it is quite possible to integrate this into flowcode because the device im talking about is inessential a microcontroller with multiple cores. Maybe the Matrix team can roll this addition out as a separate chip pack (int the future).
The device Im talking about is from a company called XMOS.
http://www.xmos.com/products/silicon
Maybe you can have look ad it and let me know what the possibilities are for this microcontroller.
It would be quite awesome for flowcode to have these sort of device available.
Regards Jordy
MultiCore Microcontrollers
Moderator: Benj
Forum rules
Only feature requests will be considered here. General questions should not be posted in this forum.
Only feature requests will be considered here. General questions should not be posted in this forum.
- Jordy101091
- Posts: 519
- Joined: Sat Jan 08, 2011 4:02 pm
- Location: The Netherlands
- Has thanked: 25 times
- Been thanked: 188 times
- Contact:
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: MultiCore Microcontrollers
Hi Jordy,
Not come across those devices before but I have looked into Propeller microcontrollers which look interesting.
The main issue with multi threaded systems is that you need to work them in one of these ways.
1) You use a low level operating system, e.g. something like linux or android or Windows if your desperate, to allow you to manage concurrent high level tasks in a round robin fashion where each task takes a percentage of the runtime. The OS handles all the threads at the expense of a highly complicated low level kernel which takes a big chunk of processing runtime and memory. This generally kills any "Real Time" functionality as you cannot guarantee when things will happen due to the nature of the OS time slicing.
2) You keep things simple and create a main program loop for each and every core. Any communications between cores needs to be handled using real time type structures such as mutexes and semaphores. If not very carefully worked out then the structures can actually cause more issues e.g. imagine a situation where task A cannot write data to task B without first receiving data from task C. Task C waits for task B to be complete and it ends up in a horrible mess where everything locks up waiting for another task to end.
There is actually a RTOS multi threaded type compiler that is shipped with BoostC which we have looked at using in the past and we have dabbled with real time OS's on AVR too. Both of which looked easy enough to implement in Flowcode but fairly horrendous to explain and stitch together well.
I can certainly add your request to the pot and when it comes to planning what to do next it will be one of the suggestions we will explore.
FPGA's are different in that they are parallel by nature and you can essentially host up to hundreds of processor cores inside a single FPGA if you want. Here the problem is turning code into circuitry using VHDL or Verilog coding. The easiest way to implement would be to use VHDL to create a basic microcontroller core and then load this with machine code like we do with a standard Microcontroller. Not sure what advantage this would have over using a Microcontroller directly other then being able to modify the inner workings of the silicone.
Not come across those devices before but I have looked into Propeller microcontrollers which look interesting.
The main issue with multi threaded systems is that you need to work them in one of these ways.
1) You use a low level operating system, e.g. something like linux or android or Windows if your desperate, to allow you to manage concurrent high level tasks in a round robin fashion where each task takes a percentage of the runtime. The OS handles all the threads at the expense of a highly complicated low level kernel which takes a big chunk of processing runtime and memory. This generally kills any "Real Time" functionality as you cannot guarantee when things will happen due to the nature of the OS time slicing.
2) You keep things simple and create a main program loop for each and every core. Any communications between cores needs to be handled using real time type structures such as mutexes and semaphores. If not very carefully worked out then the structures can actually cause more issues e.g. imagine a situation where task A cannot write data to task B without first receiving data from task C. Task C waits for task B to be complete and it ends up in a horrible mess where everything locks up waiting for another task to end.
There is actually a RTOS multi threaded type compiler that is shipped with BoostC which we have looked at using in the past and we have dabbled with real time OS's on AVR too. Both of which looked easy enough to implement in Flowcode but fairly horrendous to explain and stitch together well.
I can certainly add your request to the pot and when it comes to planning what to do next it will be one of the suggestions we will explore.
FPGA's are different in that they are parallel by nature and you can essentially host up to hundreds of processor cores inside a single FPGA if you want. Here the problem is turning code into circuitry using VHDL or Verilog coding. The easiest way to implement would be to use VHDL to create a basic microcontroller core and then load this with machine code like we do with a standard Microcontroller. Not sure what advantage this would have over using a Microcontroller directly other then being able to modify the inner workings of the silicone.
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
- Steve001
- Valued Contributor
- Posts: 1189
- Joined: Wed Dec 31, 2008 3:37 pm
- Has thanked: 460 times
- Been thanked: 523 times
- Contact:
Re: MultiCore Microcontrollers
Morning all,
AVR do one too a UC3 microcontroller , i saw them on a board when i was on a training course for some generator sync and loading share controllers and having a nosy on the boards
they did say they are a pig to program tho
Looking at the spec sheet looks an animal
http://www.atmel.com/products/microcont ... vruc3.aspx
Steve
AVR do one too a UC3 microcontroller , i saw them on a board when i was on a training course for some generator sync and loading share controllers and having a nosy on the boards
they did say they are a pig to program tho
Looking at the spec sheet looks an animal
http://www.atmel.com/products/microcont ... vruc3.aspx
Steve
Success always occurs in private and failure in full view.