This assignment is designed to give students insight into various aspects of Real-time embedded systems. Students are required to use the DSP/BIOS operating system and TMS320C6713 DSK board to solve, implement and test real-time programming problems.
2. Learning Objectives
This assignment will enable you to:
1) Understand a real-time system and its software design challenges.
2) Analyse the requirements and needs of a real-time system.
3) Design and optimise software to meet the real-time requirements.
4) Integrate the DSP/BIOS operating system and application programs into a design.
You are required to design and implement a DSP/BIOS application which runs on the C6713 DSK. The application should perform audio signal processing to meet the following specification.
3.1 I/O specification
The architecture your application must adhere to is shown in figure given below.
3.1.1. HWI design notes
The application should read and prepare 16 bit stereo audio samples to and from the AIC23 codec at a sampling frequency of 44.1 kHz. You must use HWI objects with the interrupts posted by the serial port in order to execute this task. Two separate interrupts (and ISRs) are needed to handle reading and writing of samples to the port. This is not the most efficient way to handle the I/O, nonetheless it is exactly how you are instructed to implement this.
3.1.2. Frame buffer management design notes
You must make use of DSP/BIOS communication & synchronisation modules. One of the most obvious choices would be use of SEM and QUE modules to implement a pointer exchange, the MBX and PIP modules can also give the required functionality. You must describe your solution in your report.
3.2 SWI audio processing specification
A SWI must be posted as each full frame of data is passed to the input buffer to instigate the processing. You must ensure that the SWI runs once for every time it is posted, otherwise the latency of audio output will increase over time.
3.2.1. Fourier transform
For the first processing stage you must prepare a function to find out the frequency spectrum of the current frame.
3.2.2. Beat Detector
In this stage of the assignment you are asked to prepare a function to pulsate the DSK LEDs in synchronisation to the rhythm of a music input signal. The principle assumes that percussive instruments will have highest energy content in a music signal.
3.2.3. Filtering and inverse FFT
For this task you must prepare a function to filter the data, the definition of this term with respect to signal processing is to selectively modify the shape of a signal's frequency spectrum. The operation can be performed efficiently in the frequency domain by attenuating to zero coefficients outside the band you wish to keep.
3.2.4. Output multiplexer
The final function allows user to select either the unprocessed or processed audio data for output. This function should check the status of one of the user DIP switches, according to switch value either the original input data or resultant from the IFFT function is copied into a frame used to pass output data to the transmit ISR.
Your task is as follows:
1. Implement the audio processing application in a DSP/BIOS project.
2. Experimentally measure the execution times for your HWI and SWI objects. In your report describe how the measurements were taken, give results and comment on the instantaneous and average CPU load.
3. You must also document the following aspects in your report:
a) Briefly describe configuration settings required outside of your code for your scheduling objects.
b) Outline your solution to management of the input/output frame buffers; give pseudocode where appropriate, concentrate on aspects of scheduling and synchronisation.
c) Describe work required to utilise the TI DSPLIB functions for the FFT & IFFT, particularly on the interfacing of your code/data structures with theirs’.
d) Give pseudocode for your implementation of the beat detection scheme, include description of your implementation of circular buffering.