This post was originally written in late July - during the design phase of myStorm. Unfortunately this and other posts were accidently deleted, but have now been partially recovered.
From now this blog will continue on my Wordpress site
From now this blog will continue on my Wordpress site
In this part I look a little closer at the target hardware and look at the way in which we are now able to achieve a $30 selling price.
ARM Section
The ARM microcontroller performs several basic functions at different times in the development cycle.
1. As a non-volatile Flash memory device for holding the FPGA bitfile
2. As a FPGA programmer communicating the bitfile to the FPGA via an SPI interface.
3. As a general purpose I/O slave processor - by way of serial or fast 8-bit parallel interface
4. As a system controller for applications where the Raspberry Pi Zero is not present on board.
The microcontroller needs a flash memory of at least 256K bytes.
I have had experience of the STM32 range of microcontrollers - so these were the obvious choice - but with a tight budget, not stretching to a $4 mcu, we were obliged to follow an alternative strategy.
Some months ago, through my association with the STM32Duino group, I got to hear about some low cost ARM M3 parts from a vendor in China, apparently binary and pin compatible with the STM32 parts . At first, these appeared to be rip-offs of the STM32F103 series, produced by Chinese vendor Giga Devices. However, further investigation revealed that they were actually a new design, which employed a neat idea to produce a low cost, volume range of ARM Cortex M3 microcontrollers for the Chinese market. And because Giga Device is a Flash Memory manufacturer, their M3 Cortex parts have up to 3Mbytes of flash "on-chip".
Of primary interest, however, was their low cost - a 256Kbyte ARM M3 Cortex by Giga Device sells for about $1.00, saving us $3 on not having to buy a device from STM.
The Raspbery Pi Zero.
When the Raspberry Pi Zero was released in November 2015, it was heralded with a blaze of publicity as a $5 fully functioning Linux computer. Just add keyboard and display with the O/S stored on a microSD card.
With its small size of just 64 x 35 x 5mm, and unbeatable value, it appears to be the ideal solution for a low cost development system.
20 5V tolerant GPIO lines and 6 12-bit ADC channels (3V3 input) are brought to "Arduino" stye pin headers - so that external shields may be fitted.
ARM Section
The ARM microcontroller performs several basic functions at different times in the development cycle.
1. As a non-volatile Flash memory device for holding the FPGA bitfile
2. As a FPGA programmer communicating the bitfile to the FPGA via an SPI interface.
3. As a general purpose I/O slave processor - by way of serial or fast 8-bit parallel interface
4. As a system controller for applications where the Raspberry Pi Zero is not present on board.
The microcontroller needs a flash memory of at least 256K bytes.
I have had experience of the STM32 range of microcontrollers - so these were the obvious choice - but with a tight budget, not stretching to a $4 mcu, we were obliged to follow an alternative strategy.
Some months ago, through my association with the STM32Duino group, I got to hear about some low cost ARM M3 parts from a vendor in China, apparently binary and pin compatible with the STM32 parts . At first, these appeared to be rip-offs of the STM32F103 series, produced by Chinese vendor Giga Devices. However, further investigation revealed that they were actually a new design, which employed a neat idea to produce a low cost, volume range of ARM Cortex M3 microcontrollers for the Chinese market. And because Giga Device is a Flash Memory manufacturer, their M3 Cortex parts have up to 3Mbytes of flash "on-chip".
Of primary interest, however, was their low cost - a 256Kbyte ARM M3 Cortex by Giga Device sells for about $1.00, saving us $3 on not having to buy a device from STM.
The Raspbery Pi Zero.
When the Raspberry Pi Zero was released in November 2015, it was heralded with a blaze of publicity as a $5 fully functioning Linux computer. Just add keyboard and display with the O/S stored on a microSD card.
With its small size of just 64 x 35 x 5mm, and unbeatable value, it appears to be the ideal solution for a low cost development system.
20 5V tolerant GPIO lines and 6 12-bit ADC channels (3V3 input) are brought to "Arduino" stye pin headers - so that external shields may be fitted.
Wide assortment of GPIO brought to Arduino shield connectors
6 Analogue Input Lines AN0 - AN5
UART (with bootloader facility) TX, RX
Up to 18 digital lines - including I2C and SPI
Up to 3 differential input 16 bit ADC channels (If STM32F373 fitted)
USB 2.0 connection for programming, data and power
8 bit bidirectional bus interface to FPGA and Pi - Zero with handshaking lines
SPI bus for programming FPGA from bit file
FPGA Section
3 single PMOD connectors
5 double PMOD connectors
5 double PMOD connectors
8 bit bidirectional bus to Pi-Zero and ARM
LVDS to "Olimex" style 2 x 16 connector
2 x 8 header for direct connection to 32 x 32 RGB matrix display.
100MHz clock oscillator
64K x 16 fast SRAM - can be upgraded to 512K x 16.
Pi Section
Standard 2 x 40 GPIO header for Raspberry Pi GPIO
EEPROM for PIHAT identity
Other
Efficient dual voltage switching regulator
4 USER switches
5 USER LEDs
RESET switch
BOOT switch
All I/O on 0.1" grid - wherever possible
Applications.
1. As a stand alone versatile application controller
2. As an advanced Analogue and Digital I/O board for the Raspberry Pi and Pi Zero
3. As a teaching platform for learning 32 bit ARM and FPGA programming.
4. As a platform for developing Open Core cpus on the FPGA
5. For high speed digital instrumentation - such as DSO or logic analyser
Cost Reduction
Keeping the cost down was a primary concern, yet we wanted to make a board that was genuinely useful.
To achieve this, Alan came up with a unique strategy:
1. Low cost FPGA with open source tool chain
2. Low cost ARM - to act as "system integrator" and glue.
3. On board Pi Zero - to host the open source FPGA tools - user supplies this at $5.00
Having settled on the ICE40HX4K - as the largest ICE40 available in an LQFP package - and thus more easily routed on a 2 layer board than a BGA part, we set about identifying the other key components.
Having seen James Bowman's J1a Forth Processor - a soft core running in an ICE40HX1K part, I wanted to add a fast (10nS) 16 bit wide SRAM - which in a TSSOP-44 package allows parts between 64K and 512K words. With this combination comes the ability to create a number of soft core processors, of which the 16 bit simple processor described in the "Nand to Tetris" course would seem a very suitable candidate.
Other applications include digital instrumentation that require large arrays of fast memory - such as digital oscilloscopes and logic analysers.
The lynchpin in this design is the use of a low cost ARM device, not only to provide USB communications, storage (in flash) of the FPGA bitfile, plus provide a series of ADCs and 5V tolerant GPIO pins and peripherals to augment the FPGA architecture.
Costing
We believe that if an FPGA board sells for around $30 then it will attract a fair bit of attention.
This was going to be tricky - so we set ourselves a BOM on a very tight budget of arount $10 based around the principal components - costed in 100 and 1000 off quantities:
100 off 1000 off
FPGA $5.56 $5.37
ARM $1.20 $1.00
SRAM $1.69 $1.22
PCB $0.88 $0.49
Connectors $0.50 $0.40
Remainder $0.50 $0.40
Sub Total $10.33 $8.88
LOP $2.58 $2.22
Total $12.91 $11.10
Pi Zero $5.00 $5.00
So in 1000 of quantity, the BOM and manufacturing (LOP = Labour, Operations Profit) comes to a total of around $11, which allows a selling price of about $30.
The customer provides their own Raspberry Pi or Pi Zero, from as little as $5.00.