Cyber Cortex AV
multicore softprocessor development platform
Hello everyone, and thanks for checking out my project: Cyber Cortex AV - a multicore Arduino-compatible platform with graphics and sound capability.
Cyber Cortex AV provides a new, unique, and exceptionally powerful electronic canvas for the maker, the electronics enthusiast, the circuit bender, the future (or current) engineer, or anyone else who can dream of a new ways to steer a stream of electrons into their own digital creations.
Cyber Cortex AV has already been designed, and the final series of prototypes have been built and verified. This Kickstarter project is to fund the next stage... the first manufacturing run.
Should this project be successfully funded, those who back this project at the $147 reward level (or more) will receive an Cyber Cortex AV from the initial production run.
Also be sure to catch all the updates on twitter: @FabulousSilicon
About Cyber Cortex AV
What makes Cyber Cortex-AV quite different from other development boards is that it doesn't use a traditional micro-controller. Instead, the 208-pin chip at the heart of Cyber Cortex is a Xilinx Spartan 3e 500K FPGA.
An FPGA's strength lies in the fact that it can mimic just about any other kind of digital chip (or chips) that you can think of, limited only by the size of the FPGA. Because of this kind of flexibility, it can be a VGA graphics controller, a digital music synthesizer, a micro-controller (like the one used in the Arduino), and much more. Cyber Cortex's Spartan FPGA can be reconfigured as often as you like with new and different "cores"... so it's almost like a silicon etch-a-sketch in a way.
In the past, FPGAs have not been very easy for beginners to use. The Cyber Cortex AV platform is set upon changing that with a simple, unified, GUI-based environment and a growing library of cores to base your own creations around.
In essence, Cyber Cortex AV allows you to harness the power of what an FPGA is capable of with the same skills level and programming environment as an Arduino. It's library of pre-built cores turns Cyber Cortex into almost whatever you need it to be... a programmable video game console, a digital music synthesizer, a powerful robotics platform controller, a logic analyzer, and more.
Even more exciting is that many of the Cyber Cortex cores are "multicore" capable, and the board also includes 512KB of synchronous SRAM allowing you to run as many as four independent Arduino sketches all at the same time.
Already built in are the most common ports to connect Cyber Cortex AV to the outside world, including VGA, audio, PS/2 mouse and keyboard, 2 joysticks, SPI, USB JTAG/Serial port, and a Xilinx JTAG port.
Cyber Cortex AV also has pin headers for 54 5-volt IO pins and 16 5-volt analog inputs arranged in an Arduino Mega128/256 form factor, making Cyber Cortex compatible with most Arduino shields.
The Cyber Cortex Core-Pack:
The cross-platform Cyber Cortex AV Core-Pack comprises of a simple GUI-based "loader" application along with a library of pre-synthesized cores, designed to get you up and running in minutes. The included cores are based on some of the best and most innovative open-source FPGA projects, and in most cases have been further enhanced to be programmable with simple Arduino sketches.
New versions of the Core-Pack will be made available as new cores are released or when existing cores are updated.
All of the cores included in the Core-Pack are also optimized to make the most of the Cyber Cortex AV hardware, and loading cores to Cyber Cortex is seamless and occurs transparently as a new program or Arduino sketch is loaded to the Cyber Cortex AV hardware.
The cores that will be included as part of Core Pack 1.0 are:
A dual processor Arduino sketch-compatible core with Gameduino-compatible graphics and sound
(Xtreme-G startup screen)
Cyber Xtreme-G turns Cyber Cortex AV into a powerful gaming platform with two 32MHz Arduino-sketch compatible cores (based on Ruslan Lepetenok's AVR8 project) and a graphics and sound engine based on James Bowman's awesome Gameduino (previously featured on Kickstarter).
128KB of program memory (+ 4KB DRAM) is available for for each of the two cores so you'll have plenty of room for larger and more sophisticated designs, and with the dual core architecture you'll be able to spread processor intensive tasks between both of the independently running cores.
Interprocessor communication between each of the cores is simple to program and based on standard serial protocols, so sending messages and data between the individual cores is as simple as programming a serial port.
A quad processor Arduino-sketch compatible core
(Please note that the parts shown are not included with Cyber Cortex AV. Some details with regard to sourcing robotics related parts will soon be available in the forums and blog postings at http://www.fabuloussilicon.com . )
Cyber Xtreme-R is designed to be the ideal core for robotics enthusiasts. With four AVR8 Arduino-sketch compatible cores, you can now develop independently running code to interact with sensors, motors, and other I/O devices without contention.
Xtreme-R is also perfect for graphical LCDs based applications. A larger LCD can simply be driven with it’s own soft processor, no longer slowing the rest of your design.
Note: Presently, this core has been stress-tested at 16MHz per core and verified to be stable. Another version of this core is running "in the lab" at 24MHz per core, but has not yet been stress tested. Backers should assume that this core will run at 16MHz until I've fully verified stability of the 24MHz version.
An 8 note polyphonic digital synthesizer and drum sample playback engine under the control of an Arduino-sketch/AVR compatible core.
The Cyber Song core is based around the amazing SK-Synth open-source synth engine by Stefan Kristiansson. SK-Synth is a high quality, 8 note (2 oscillators per note), digital synthesizer with resonant filters and LFOs, as well as drum sample playback.
Cyber Song takes the SK-Synth core to the next level by combining it with an AVR8 Arduino sketch-compatible core, making it easy to design your own stand-alone MIDI synth. Example code and libraries for CyberSong are included to help you get started, with support for patch full editing, MIDI, example GLCD user interface pages, and more.
(Video and sound clips will be added soon.)
Note: A KS0108 GLCD such as the one sold by Adafruit (pictured above) and a MIDI interface like one sold by SparkFun are not included, but recommended to take full advantage of the the example code and libraries written for the Cyber Song core.
Cyber 4:30 :
A single core soft-processor emulation of the MSP430 micro-controller
The Texas Instruments MSP430 has become one of the most popular 16-bit micro-controllers in recent years used in countless embedded products. The Cyber 430 soft-processor core is based on the open-source openMSP430 project by Oliver Girard, and provides a near cycle-accurate emulation of the MSP430.
The Cyber 430 core is especially ideal for students and hobbyists who'd like to broaden their horizons by learning to develop code with the Texas Instruments Code Composer Essentials IDE while gaining a better understanding of MSP430-series micro-controllers.
A 32 channel 100MHz Logic Analyzer
A 100MHz multichannel logic analyzer with storage capability might have previously cost over $4000 from HP or Tektronix. The Cyborg Autopsy core (based on the SUMP open-source logic analyzer project) along with Jan Willem's cross-platform OLS client allows you use your Cyber Cortex AV with your Mac or PC to perform high-level digital signal sampling and analysis. Furthermore, Jan's OLS client is also able to perform intelligent analysis and interpretation of common signal types like JTAG and SPI.
A collection of cores emulating vintage upright arcade games and retro gaming consoles
Cyber Arcade provides you with a set of cores that emulate the hardware of many of 8-bit arcade games and consoles from the past. Cores that are included and that have been verified include:
The ColecoVision Console
Please note: The ROM files for these games are *not* distributed with Core-Pack. To use these cores, you must provide a ROM image to make the core work. It is assumed that you:
A) are legally entitled and licensed to use any ROM images used in conjunction with these cores... or
B) you are developing your own code/ROM image for use with these cores (in most cases with 6502 or Z80 assembly language).... or
C) you are only interested in reverse-engineering the VHDL source code for these cores as a reference model for how hardware can be modeled in in an FPGA.
More cores are currently under development, and will be announced as they are ready to be released in future versions of the Cyber Cortex AV Core-Pack.
This is especially exciting, as MikroElektronika's compilers were used quite extensively during the development of Cyber Cortex AV (especially with regard to the multicore SPI bootloader and Cyber Song), and they've become my preferred development environment for writing microcontroller-targetted code in my own projects.
To help support the Cyber Cortex AV platform, MikroElektronika is contributing all three of these language compilers to this project at no cost to backers. All of the compilers are functionally identical to their professional line of compilers, except that they will only compile code for the Cyber Cortex platform.
Aside from that, these are fully functional, and with no code-size limitations. In addition, they are also compatible with the wide range of libraries already available for the mikro-series compilers.
Here are a few additional details regarding these compilers:
- They're very easy to use - The IDE is powerful, but simple and straightforward... and does cool things like highlighting the beginning and ends of your loops, and make code completion suggestions.
- Easy library porting - MikroElektronika's Library Manager Tool dramatically simplifies the process of porting your libraries between the three languages. If you create a cool library in MikroPascal, the Library Manager makes it easy to convert that library for use in MikroC and MikroBasic. Cyber Cortex users will also be also be share and exchange code and libraries with users of the pro versions of MikroBasic, MikroC, and MikroPascal.
- Common IDE - All three programming languages use the same IDE interface, so you only have to learn a single environment.
- Multicore Project Management - Creating a multicore project for the Cyber Xtreme cores is simple and straightforward using the IDE's Project Manager, as it enables you to easily group multiple programs and program files together into a single project.
- Compatibility with other MikroElektronika tools - The Cyber-series compilers are also fully compatible with other MikroElektronika tools such as Visual GLCD (used to help develop code examples for the Cyber Song core) and Visual TFT that dramatically simplify code development for LCD and color TFT based GUIs and touch screen interfaces.
- LibStock - MikroElektronika's newly announced LibStock website combines social networking and code-sharing, which Cyber Cortex AV backers are encouraged to be a part of.
The Cyber Cortex AV versions of these compilers should be available soon. In the meantime, you can try out the demo versions of all three of compilers:
(The demo versions below have a 4K maximum code size limitation.)
For PC users:
Cross-compatible solutions for Mac and Linux users:
It's my intention to be able to provide support on all platforms for Cyber Cortex AV and it's associated tools. With that in mind, I've taken the time to test a couple of viable solutions to ensure that the Mikro-series tools will be accessible to those using the Mac and Linux operating systems as well. Please note that MikroElektronika does not provide support for any platform other than Windows, but has given permission to allow me to create a "WINE wrapped" version of each of the compilers to support Mac users (using PlayOnMac), and provide instructions for Linux users who wish to do the same using PlayOnLinux.
I've been testing all three compilers in this manner using Snow Leopard 10.6.5 on the Mac and Ubuntu 10.04 on Linux side, and I'm happy to say that they work very well!
For the best user experience, anyone installing any the Mikro compilers with the PlayOnMac or PlayOnLinux solutions as I've described above should immediately change the screen layout option at the top of the screen from "1024x768" to "Legacy" after opening them up the first time, and then click the "Set Layout" button. (The "Legacy" layout resolves some graphics and font anomalies to do variances between WINE and Windows that you might encounter with the "1024x768" layout.)
Links to WINE-wrapped versions of the 4K demos for Mac users are below:
A link to instructions for Linux users to show how to install them through PlayForLinux will be provided soon!
Cyber Cortex AV Hardware Specifications:
- FPGA: Xilinx PQ208 Spartan 3e (500K)
- RAM: 512KB 133Mhz 16 bit Synchronous SRAM
- SPI FLASH: 1MB (8 megabit) Numonyx Flash EEPROM for FPGA configurations, sketches, and other user data
- Two 5V Atari-compatible joystick ports
- PS/2 Keyboard and Mouse ports
- Sixteen multiplexed 5V analog inputs (bit resolution is determined by the core being used)
- 54 5V Digital/PWM I/O pins (Arduino Mega128/256 form factor)
- Compatible with most shields designed for the Arduino Mega, Duemilanove or Diecimila. (Most Arduino shields.)
- 1 1/8" stereo digital audio jack
- 1 15 pin VGA connector
- 4 Programmable LEDs
- 4 Programmable Buttons
- 1 Reset button
- 1 FT2232 (Port A is dedicated to USB JTAG access to load cores, programs and sketches. Port B serves as a USB serial port or Computer->USB MIDI.)
- 1 Xilinx JTAG port (compatible with the Xilinx Platform USB Cable)
Developing your own cores for Cyber Cortex AV:
For those who are interested in learning how to create their own cores for Cyber Cortex AV, you will want to download the Xilinx’s ISE Webpack. This is free to download and use, and is the same tool used to develop all the cores in Core-Pack 1.0.
A few good resources to help you get started include:
Additionally, the cores included as part of Core-Pack 1.0 that have been derived from open-source code will likewise be made available in source-code form for you to be able to learn from and reverse engineer.
Important notes for project backers:
Please note that the lead time after completion of the Kickstarter funding cycle is about five weeks before the boards will be shipped from the manufacturer, and I will make sure to keep everyone updated during that time as to the status.
Cyber Cortex AV power supply requirements:
Cyber Cortex AV requires a 2.1mm tip-positive 1 amp 6 volt DC adapter when using the Xtreme-G or Xtreme-R cores, as these two cores consume more than the 500ma provided via USB. (Most other cores will work fine when the the board is powered over USB.) Do to the variety of international power standards, and to keep shipping costs to a minimum, the power supply is not included with the board, but should be commonly available at most consumer electronics stores.
Thanks again for checking out my Kickstarter project, and feel free to contact me directly or leave a message in the comments section with any questions you may have.
How is access to the I/O pins, analog pins, and SPI handled in order to avoid contention when running multiple simultaneous programs or sketches with the Xtreme-G and Xtreme-R cores?
All cores can read or write to all of the 54 digital I/O pins once they've been assigned a direction (input or output). Core #1 is the only core allowed to assign the pin direction for all pins. (Attempting to assign a pin direction from another core will simply be ignored.)
The 16 analog ins are divided into two banks of eight. The first eight are readable only by Core #1, and the second eight are only readable only by Core #2.
SPI is only available to Core #1.
The AVR8 was developed by Ruslan Lepetenok, and is a very well designed core that emulates most all of the functionality of an Atmel Mega103 micro-controller. I've worked pretty extensively with the AVR8, and can say that it's proven to be accurate, robust, reliable, and very code-compatible with the original chip that it's modeled after. There are however a couple notable differences worth mentioning:
1. The original Mega103 supports three timers... two 8 bit timers (Timer0 and Timer2) and one 16 bit timer (Timer1). The AVR8 core only supports Timer0 and Timer2 at this time. Moving forward, I'd like to also add in support for Timer1 at some point for full compatibility.
2. The AVR8 core is capable of running at much faster speeds. Support for this speed difference is automatically added to the Arduino IDE (as well as Mega103 compatibility) by the AlienCortex AV Core-Pack. You must set the clock speed manually however if using another compiler.
Not at all. AlienCortex AV was designed to be as simple to use as an Arduino, which is why significant effort has been put into developing a library of predefined, easy-to-program cores, and an easy way to load them with your programs and sketches to the board.
With that said however, I'd encourage anyone who's interested in learning about FPGA core development to download the Xilinx ISE Webpack and start experimenting. It's free, and it's really much easier than you might think.
Cyber Cortex AV actually grew out of a design I was working on for an FPGA based digital synthesizer that I started in the summer of 2010. Around Christmas of last year, I started to do some significant rework and made some improvements to the synth design, and started to realize that the "heart" of the synthesizer could also make a pretty nifty development board... so that's when the idea for Cyber Cortex AV was born.
With few exceptions, the answer is yes. Since Arduino shields (for the most part) operate at 5 volts, voltage level translators have been used to convert the 3.3V I/O of the FPGA to 5 volts for Arduino shield compatibility. The translators are bi-directional and auto-direction sensing on a pin-by-pin basis, so they pretty much just sit on the I.O bus and do their job.
Most shields will be running at TTL levels, so you shouldn't have a problem. You could into problems *if* you have a really high current draw (i.e. lots of LEDs), or you go try to send more than 5 volts or if you run a negative voltage across one of the I/O pins.
On a related note, the voltage level translators also have a side benefit in that they protect the ins and outs of the FPGA against HSD (Human Static Discharge) to about 50,000 volts.
One other difference worth mentioning is that SPI is brought out on a separate set of pins to the left of the analog ins, so you can use all the pins without having to give any up for SPI access. The one drawback is that this does require that you route three wires over to the right points for any shield that uses SPI. (I was a little torn on this one, so I may actually create a "standard layout" core as an alternative for those who'd rather not have the SPI lines broken out.)
All that to say, so long as you're not trying to run a string of Christmas tree lights, or anything else that draws too much current, then you should be ok.
Additional details with regard to current draw:
The maximum current draw allowed for an Arduino is around 40ma, and about 24ma for Spartan FPGA, which in either case is plenty for digital signaling. It's really when you start trying to use the I/O lines without a line-driver in cases where you should have one (i.e. multiple LEDs and such) that would potentially cause a problems, but that's the case with either an Arduino or Cyber Cortex.
Which OS's/Platforms do the tools for this support? Is there a command line toolsuite so I can use my own IDE's?
The Core-Pack has been designed with the Mono framework specifically for cross-platform compatibility with Windows, Mac and Linux, in order to ensure that updates for all platforms will to be maintained concurrently.
The MikroElektronika compilers are designed for Windows, but have also been proven to work with PlayOnMac and PlayOnLinux (a Wine derivative) for cross-platform use. (Note that there is currently a slight font display anomaly that obfuscates the names of the side-bar menus when running the compilers with PlayOnWindows and PlayOnMac. While this is just a cosmetic issue, I'm working to find a fix.)
With regard to a command-line tool-suite, you will be able to invoke programming and core loading to the FPGA by calling the Core-Pack executable and using command line switches to select the core and specifying the hex file(s) to load. This is specifically for the purpose of integrating it with other IDEs (including the Arduino IDE and the MikroElektronika compilers), and should be similar to any other programmer.
Support this project
- (30 days)