The design of the board implements a BF504 low cost (well for the performance) DSP onto the ubiquitous Arduino footprint. The BF504 had on board FLASH memory so the design is predominantly a LOT of power supplies and interface. The board can operate with either 5V or 3.3V I/O drive. As with nearly all projects the hardware is the minor part of the equation and the software is the critical part! A number of libraries are being implemented to provide SPI, UART, I2C, GPIO etc. This library is based to a large extent upon existing ones developed for the ARM/AVR32 so can leverage off a lot of the module classes developed there. The plan is to NOT to use ANY ADI libraries and be compiler agnostic as much as possible.
There is a High Quality 192KHz/24Bit Audio Codec from Wolfson. This is connected to the SPORT pins on the DSP and the Crystal selection has been chosen to provide Audio bitrates.
Quick Overview of the board:
- Analog Device BF504 Digital Signal Processor
- Power Supply that is compliant to 25V with dynamic core voltage control
- Wolfson high quality Audio Codec for 24Bit/192KHz audio out
- Microchip 5V Analog ADC on the usual Arduino Analog Pins
- FTDI USB <=> UART for high speed serial debug logging from the DSP
- Micro SD Card interface
- Digital Arduino pins 5V compliant and can drive out at either 3.3V or 5V; jumper selectable
- Software libraries that are clean Object Oriented implementations from bare metal for all common functionality of UART, SPI, I2C, GPIO etc.
- JTAG Debug Interface (well Analog Devices slightly deviant variety) that has been tested with GNICE & ADI ADZS-HPUSB-ICE
05/04/2015 at 08:53 •
As you can see from the photographs most of the board is populated. Will fit the Audio Codec when I am happy that all the rest of it is relatively stable. As you can see from the photographs my board design/layout skills are substantially better than my soldering skills!
Problems to date:
- the footprint for the 1.2V regulator for the flash on the bottom of the board is almost completely wrong; luckily as it is a 3 pin device it isn't too difficult to fix.
- as usual I am relatively optimistic about the small size of capacitors! Need to make a few of the power supply tantalum's a case size up!
- Wolfson have disappeared! Now just hope that Cirrus don't chop my codec!
The firmware is slowly coming to life. It is ALL C++ and I have tried to be consistent with the OO design but I have also tried to favor a more Embedded C++ so no exceptions/RTTI and fairly light on with templates and dynamic memory usage. So far all the development is with the rather crotchety Visual DSP from Analog Devices. Will probably move to CrossCore eventually and also support GCC.
The Code is currently providing UART comms through the FTDI <=> Serial chip, GPIO control of the LED's, SPI control of the ADC. The system commands provide control of the core voltage via a bit-based serial interface to a digital pot which tweeks the voltage up and down.
Next up is to get the SD Card interface going so I can drag my FileSystem classes in and then do some WAV/FLAC decoding out over the SPORT bus to the Audio Codec.
View project log
Enjoy this project?