--------------------------------------------- Title: Digital Audio Workstation Readme File Author: Andrew Rosselet, Lee Tarnow Date: April 2010 --------------------------------------------- ------- Purpose ------- The Digital Audio Workstation demonstrates how to use the AC97 audio codec and xps_tft display module in a single EDK project using the XUPV2P board. The MPMC module is used to control memory mapped to the PLB in order to store pixel data and audio samples in memory. It can be used as a starter template for future groups that wish to integrate audio, video, and memory. The AC97 codec only supports the deprecated OPB bus on the XUPV2P board so bridges are used to enable communication between the PLB and OPB. This allows the AC97 to record audio samples in memory. The memory allocated for storing audio data has been broken up into tracks which can be used to sequence and mix different recordings. The xps_tft reads information out of memory locations mapped on the PLB. This module drives a DAC and displays pixel information on the XSGA. A pair of buffers allow a full frame to be constructed in memory which is then output to the display. --------- How To Use ---------- Compile the project and configure the XUPV2P normally. The project should work "out of the box." The audio component can be controlled with PuTTY or similar, while the visualizer output can be seen on a monitor connected to the XUPV2P from the XSGA video port. Audio playback outputs samples to the XSGA TFT. The display should display a "Hello World" as soon as code is running on the microBlaze and the menu has printed. The visualizer is implemented in software on the same microBlaze which is running the AC97 codec. For this to work, the ac97 driver has been modified to "callback" a function pointer to update the display instead of busy-waiting for the AC97 to clear its FIFO during playback from memory. This callback function must not block for too long or audio will start to sound noisy and distorted. To mix two signals into a third signal using the project, perform the following steps after the menu comes up on your terminal/terminal emuilator (e.g. PuTTY): 1. Select 2. Change Tracks. Change to first track number. 2. Select 1. Enable Real-time audio. 3. Select 3. Set track start address. Set start address of first track. 4. Select 4. Set track stop address. Set stop address of first track. 5a. Select 5. Record. Record first track. b. Select 1. Disable Real-time audio. c. Select 6. Play. Play to verify. 6. Select 2. Change Tracks. Change to second track number. 7. Select 1. Enable Real-time audio. 8. Select 3. Set track start address. Set start address of second track. 9. Select 4. Set track stop address. Set stop address of second track. 10a. Select 5. Record. Record second track. b. Select 1. Disable Real-time audio. c. Select 6. Play. Play to verify. 11. Select 2. Change Tracks. Change to target track number. 12. Select 4. Set track stop address. Set stop address of target track. 13. Select 3. Set track start address. Set start address of target track 14. Select 7. Mix. Mix first track and second track into target track. 15. Select 6. Play. Play target track to verify. Note: Error handling is sparse. Be careful with your inputs! ----------- Design Tree ----------- ./__xps Option files for bitinit, libgen, simgen and platgen ./blkdiagram Block diagram generated by XPS ./code/main.c The main software control program ./code/header.h Header file for AC97 controller including sine table, constant definitions, and codec interface ./code/VGA.h Header file for graphics controller which includes constant definitions and XSGA library routines ./data/system.ucf System Constraints file; external pins’ assignment ./drivers Includes the drivers for AC97 and graphics controllers ./etc Option files for bitgen and downloading ./microblaze_0 The processor ./pcores Includes hard IP cores AC97 and graphics controllers ./system.xmp XPS project file ./system.mhs System Hardware Specification file ./system.mss System Software Specification File ./README Documentation