"Synth Core A" is a development board I designed to create my own audio synthesizers. It is composed of a 32bit microcontroller with DSP features, a CPLD , and other standard elements usually found on synthesizers like MIDI, potentiometers, LCD, stereo DAC, USB ... The initial idea when I started the project, was to design a board with most part of the hardware and drivers I would need to create my custom medium range audio synthesizers. Having the board and the most important drivers ready will allow me focusing on the pure audio and interface design tasks every time I develop a new system.
 
As you can see in the pictures, Synth Core A is implemented on a double sided 20x20cm pcb wich contains the following elements:
  - Atmel 32-bit MCU ( nearly 100 DMIPS ) with DSP features, 512KB program flash and 64KB internal SRAM
  - Audio DAC ( included in the microcontroller )
  - 8MB external SDRAM ( IS42S16400D SDRAM )
  - CPLD for bridinging purposes and tiny logic circuits( MachXO LCMX0640C )
  - VLSI Audio Codec with MP3, WMA and MIDI support ( VLSI VS1033 )
  - Digitally controlled analog audio mixer ( LM4832 )
  - FTDI to serial USB port ( FT232RL FTDI )
  - Full USB port
  - MIDI interface ( with MIDI IN, MIDI OUT, AND MIDI THRU )
  - Two SD cards slots
  - LCD interface
  - 8 ADCs to control potentiometers
  - 40 bits I/O bus to interface other audio processors
 
     
Advanced synth-designers may notice that the board has no any exceptional electronic component, but them all together form a very usefull tool. In fact, the chosen microcontroller ( the core of the system ) is not such a powerfull microprocessor like other well known DSPs like Analog Device's Sharc or Freescale's MSC8144 but is enough ( nearly 100 DMPIS ) to build a medium range audio synthesizer at very low developing cost ( I wont have to spend large quantities of money to get a good complier or programer to work with it ). So, despite it is not a pure signal processing device, it may be enough to create some audio functions, or to interface diferent kind of specialized audio processors. "Synth Core A" could be also defined as control board designed to manage other more specialized audio devices ( DCOs, programable audio ICs, hardware codecs ... ), something like a generic development board focused to synths applications.
ADC connectors
The brain of the system
Codec and audio preamplifier
Internal and "external" SD Cards
Some connectors
Connectors detail view
This is a more detailed description of board's hardware components:
 
32-bit MCU with DSP features
The "brain" of "Synth Core A" is an Atmel UC3A 512 microcontroller with 512KBs of program memory and 64KBs of internal SRAM. This is a 32 bit device which features DSP instructions and achieves up to 91 DMIPS at 66 MHz. It is a very complete device, with a good performance, flexible architecture, and a wide sort of peripherals ( Audio DAC, UARTs, SPIs, USB, and a lot of IO pins... ). But, apart of the above mentioned characteristics, one of the things that made me decide for it, is the GREAT FREE developing enviroment that Atmel provides for the AVR32 family. It seems that Atmel has extended to it's 32 bit family the same philosophy that applied to it's succesfull 8 bits AVR-ATmega family: good features at reasonable cost, complete documentation, programming simplicity (via USB with a bootloader ), and a free complete developing enviroment. The microprocessor can also run diferent multitask operative systems like the FreeRTOS ( a portable, open source, royalty free, mini Real Time Kernel ).
 
8MB External SDRAM
Synth Core A comes with an external ISSI 8MB SDRAM. Despite 64KB may seem to be enough to develop embbedded applications, they are not enough if you want to seriously work on audio applications. So I thought that was necessary to have a big enough external memory to allow working with samples or instruments data.
 
CPLD ( MachXO Lattice LCMXO640 )

The system also mounts a MachXO Lattice LCMXO640 PLD. Lattice refers to it as intermedium step between CPLDs and FPGAs designed for applications traditionally implemented using big CPLDs or low-density FPGAs. I added it to the board to get bridging functionalites, and have a complete peripheral parallel interface bus, which could be used to work with other audio ICs, like DCOs ( digitally controlled oscillators) , function generators, filters, or other specific ICs. This CPLD converts 16 of the MCU's I/O lines to a 40 lines interface bus. Despite it has been added for bridging purposes and the LCMXO640 is not a real FPGA it could also be used to implement some simple audio functionalities.

At first stages of design, I doubted about choosing a Xilinx high end CPLD or this Lattice PLD. Xilinx and Lattice have very interesting devices, and despite Xilinx developing enviroment is easier to use and install than Lattices's, both of them are free and allow programming their devices easily with a simple and inexpensive parallel port adapter. A year before facing to this dilema a distributor gave me a MachXO developing board, so I already had all the software, tools and documentation needed to work with Lattice's device, and this was what finally made me decide for Lattice's MachXO.

 
VLSI Audio Codec ( VLSI VS1033 )
Despite the Atmel 32-bit is powerfull enough to play mp3 or other audio formats I thought that having an auxiliar audio codec would be very helpfull. It will allow the system playing MP3 or WMA files while the microprocessor is busy executing other tasks.
 
Digitally controlled analog audio preamplifier with bass and trebel control ( LM4832 )
The LM4832 provides volume and tone (bass and treble) controls as well as a high quality audio power amplifier to the board's output. The amplifier is capable of producing 250 mW (typ) into 8 or 90 mW (typ) into 32 with less than 1.0% THD. I decided to add this device to adapt the output impedance, and allow controlling the gain and the bass and treble levels digitally (I2C) from the microcontroller. Unfortunately this device was recently marked as obsolete and despite It can be found in some on-line stores, It won't be produced any more. So I should replaced it by any other similiar IC.
 
FTDI to serial USB port ( FT232RL FTDI )
The FT232RL is a very popular USB to serial converter, which allows to implement a simple USB port with one of the microcontroller's USARTs. It allows to work with USB in a very simpley way, because in the processor side the USB is seen as a simple USART, and in the PC side as a simple COM port. Despite it doesn't implements all USB's operation modes, it is enough for most applications where comounication between PC and the synth is needed.
 
Full USB port
The UC32A processor also has an Universal Serial Bus (USB) interface which complies with the Universal Serial Bus (USB) 2.0 specification, supporting several USB Classes at the same time. The On-The-GO (OTG) Host interface allows devices, like a USB Flash disk or a USB printer, to be directly connected to the processor.
 
MIDI interface
All the extra components needed to implement a MIDI port have been added to one the microcontroller's USARTs, and this allows the board to interact with other MIDI devices like MIDI controllers, MIDI synthesizers, MIDI sequencers ... All MIDI connectors are suported: MIDI IN, MIDI OUT, AND MIDI THRU.
 
Two SD cards
It was also necessary to have any kind of non-volatile memory to store data, like instrument presets, music files, samples... , so I decided to add two SD card slots to the board. One of the slots is internal and not accessible for the user. The other one can be mounted on the PCB, like the internal one, or on any of the sides of the synth's cabinet using a panel SDSlot ( on the board there's a male pin strip connector which allows installing the SDSlot outside the PCB ). So one the SDs is internal and the other can be used as an internal or external memory card.
 
LCD interface
Nearly all music devices have a display to allow user configuring or controlling instrument's parameters, and obviously the board had to have one. So it has a 26 line connector expressly added to allow connecting different kind of alphanumerical or graphical displays.
 
7 ADC to control potentiometers
The board has 7 connectors to allow me use up to 7 potentiometers to implement the typical rotary knobs or lineal sliders found on all synths. The number of knobs or lineal sliders can be increased using some switching techniques, but 7 is enough for most applications.
 
About the connectors
As you can see in the pictures, the board only uses male pin strip conectors, and this is because I designed it to be mounted inside synthesizer's cabinet, and using these pin strips makes easier bringing these connectors to the cabinet sides: I'll only have to build a cable with a female pin strip in one side and the desired panel connector in the other.
 
             
. . . Label, Program & Audiovisuals Tolaemon 2010 . . .