Octacore Single Board Computer
The primary goal of this project was to design and construct an audio spectrum analyzer. This was achieved by designing a Parallax Propeller based single board computer (SBC) featuring an eight core microcontroller to do the computations necessary to calculate the frequency spectrum of the input audio signal. The resulting data is plotted in real time on a monitor display allowing the user to determine which frequencies are present in the audio and their respective strength. For this project a PCB was designed, manufactured and assembled.
Technical specifications for the Propeller Single Board Computers:
- Microprocessor: Parallax Propeller P8X32A
- Clocked at 80MHz (5MHz input clock multiplied by 16)
- Eight 32-bit cores (20 MIPS per core, 160 MIPS total)
- 32KB RAM
- External memory: 32KB EEPROM for program storage
- I/O Ports:
- VGA DB-15
- 2 PS/2 ports
- RJ45 Ethernet jack
- 4 pin header for in-system programming (ISP)
- Ethernet controller: Microchip ENC28J60
- Expansion port: 10 pin header
- Power supply
- 5V (LM2940) and 3.3V(LM2937) regulators present
- Misc: On-board delta-sigma analog to digital converters (ADC)
The Parallax Propeller was chosen for its speed and ease of programming. The PS/2 ports on the board allow a keyboard and mouse to be connected to the board providing user input. The VGA DB-15 port allows for a color VGA monitor to be connected. The Microchip ENC28J60 Ethernet controller provides the hardware needed to perform networking tasks such as running a small web server or communication. The 10 pin header can be used to connect extra peripherals to the board.
The PCB was designed using KiCAD. Specifications used for the PCB:
- 8 mil trace width & spacing
- 2 layers (traces on both sides of the board)
- Board dimensions: 5 inches (width) x 3.5 inches (height)
The spectrum analyzer for the single board computer was written in a combination of SPIN (Parallax Propeller’s proprietary language) and Propeller Assembly. Low level parts of the code that were time critical needed to be written in Assembly. The spectrum analyzer program computes the discrete Hartley transform of the input audio signal. The split 2 radix decimation in time (DIT) was used to compute the Discrete Fast Hartley (DHT) transform of the audio signal. The input audio is fed into the spectrum analyzer through the serial port. In order to accomplish this, the audio has to first be down sampled in order to match the serial port’s baud rate (which I chose to be 140000 baud). For my testing, the audio was down sampled to 14000Hz, thus giving a reproductive frequency range between 0Hz to 7KHz (Nyquist theorem) which is large enough to cover what most humans can hear. (The human ear can hear sound between 20Hz to 20KHz, however the ear is more sensitive to lower frequencies). Once the Hartley transform was calculated, the power spectrum is plotted out on a monitor display in graphics 2D bar format.
Designing and building this project was a fun and challenging endeavor. Although I was able to achieve the goal of building a working spectrum analyzer, there were some problems I had to work around to get the board to work. The spectrum analyzer was originally supposed to take in the audio signal through the delta-sigma ADCs built onto the board. The ADCs turned out to not be useful since a series AC coupling capacitor was forgotten to be placed in the design. This would not make the board suitable for accepting AC signals, in this case an audio signal. Still, even manually attaching an AC coupling capacitor, noise was exhibited on the board. The noise occurring on the board is probably a result from not placing the components closer together. The components for the ADCs probably should have been in surface mount (SMT) form and with their traces routed closer together to prevent signal noise. These problems were bypassed by digitizing the signal and sending it through the serial port. By feeding in the audio signal this way, a working spectrum analyzer was achieved.