Homebuilt Hardware


mini-DSP Module

Posted in Synth DIY by admin on the March 28th, 2007

On hold until I finish a few other things.

This project will provide a general purpose DSP development board which can be built into a generic programmable DSP module or a pre-programmed module. The design uses a Silicon Labs 8051 USB controller and a Wavefront Semiconductor AL3101/2 DSP. The following features are provided:

  • 48KHz, 24bit DSP engine (AL3101/2)
  • 2 audio I/O ports (AL1101, AL1201)
  • 50MIPs 8051 USB enabled support processor (C8051F340)
  • USB Firmware bootloader for the 8051 and AL3101/2
  • 8 multiplexed, 10bit 0-5V analog inputs (200ksps max total)
  • 4 multiplexed 16bit analog inputs (200ksps max total, programmable range 0-5V, 0-10V, +-5V, +-10V)
  • 2 external interrupt inputs
  • 4 digital outputs (0-5V)
  • x general purpose digital inputs
  • x LED indicators
  • Expansion header (most pins brought out for addon boards) ?maybe?

The AL3101 DSP chip is a small 50MIPs DSP which has 1024 instructions and 1024 24bit words of data memory. The 8051 processor can read or write any DSP data from the AL3101 at a maximum rate of 48KHz (1 word per audio sample). This provides an adequate interface for control signals. Although this module is programmable, it is intended for audio processing only. No analog CV signals can be output.

Hardware

the hardware design is not yet complete.

Firmware

The 8051 flash memory provides 64KB of program space. Since most designs will use only a small fraction of that space, the first 16KB are reserved for: the USB bootloader, the AL3101/2 code, and the AL3101/2 initial data. The bootloader allows the user to upload the AL3101/2 code and data (6KB) or the main 8051 program (~48KB).

The bootloader is useful for loading pre-written 8051 programs or development of AL3101/2 code. If any serious 8051 development is done then a JTAG debugger would be needed.

The current development platform consists of the bkasm assembler for the AL3101/2 and SDCC for the 8051 firmware. These are both open source tools.

Current Status:

A basic USB bootloader has been implemented and tested. This firmware currently uses about 6KB of the 8051 program space. This bootloader currently only allows a transfer of the 8051 code space.

Todo:

  • AL3101 code and data download routines
  • 8051 drivers for the ADC, analog CV multiplexer, and reference voltage multiplexer
  • AL3101 read/write data word routine
  • Basic 8051 application template to allow transfer of analog CV inputs to the AL3101
  • Possibly a USB-MIDI driver for the 8051

Firmware Loader

The host firmware loader is compiled in microsoft visual c++ express and uses wxWidgets for the GUI. The USB bootloader uses the HID device class. The firmware loader uses a free dll called easyhid.dll for HID communication.

mini-dsp Firwmare Loader

Current Status:

Download of 8051 code space is tested and working.

Todo:

  • Download of AL3101 code/data