Unformatted text preview:

ECE 532 Digital Hardware Karaoke Machine Group Report Jen Pollock 991 855 738 Frances Lau 991 654 900 May 2005 Table of Contents 1 Overview 3 2 Outcome 4 3 Description of Blocks 5 a Existing Components 5 b Modified Components 7 c Custom Components 8 4 Design Tree 10 Appendix A README Instructions on how to add the volume buttons 11 Verilog core to your XPS project 2 1 Overview The goal of this project was to create a karaoke machine using the MP3 player from the modules The project needed to play an MP3 file mixed with the input from the microphone at the same time as displaying lyrics synchronized to the music on the serial port As well it needed to respond to playback and volume controls implemented through buttons and switches A system block diagram is shown in Figure 1 Figure 1 System block diagram In addition to the MP3 player which was heavily modified to perform the other tasks needed several other IP blocks were used The ZBT memory controller contained in the MP3 Player was unchanged The GPIO UARTlite Interrupt Controller and Timer Counter supplied by Xilinx were added and used without modifications The AC97 controller provided with the MP3 player was modified slightly A custom hardware block was created based on the push button example from Xilinx to interface with the volume buttons 3 2 Outcome The final project satisfies most of the original objectives and has almost all the fundamental features of a Karaoke Machine It plays music mixes microphone input with the music displays synchronized lyrics and has volume and playback controls The only feature that was not implemented was the reading of the music and lyrics file from compact flash Although we started investigation for this milestone four weeks before schedule due to poor documentation we decided that it was not wise to spend an excessive amount of time on this extra feature and we decided to concentrate on the core functions of this Karaoke Machine instead We originally intended to have one push button that functioned as volume up and one push button that functioned as volume down similar to traditional volume control buttons However after reviewing the documentation for the push buttons we discovered that the push buttons were controlled by the CPLD Push button status was only transmitted to the FPGA when the ENTER push button was pressed so it was not possible to have volume up and volume down buttons Therefore we decided to implement a workaround by requiring that the user enter the volume level in a binary format As shown in Figure 2 below the user must choose one of the two yellow buttons PB1 and PB2 on the left to indicate whether the volume of the song or the microphone is to be changed Then the user needs to enter the volume level in a binary format using PB8 to PB10 buttons To send this selection to the FPGA the user needs to press the Enter button Figure 2 Push buttons for volume control PB0 PB1 PB2 Reload Mic Song PB3 PB4 PB5 PB6 PB7 PB8 PB9 PB10 PB11 Enter Unused Volume Level binary format We also decided to use the user switches SW0 and SW1 to control playback pause and restart instead of using the push buttons This was done because we originally thought that there would not be enough push buttons to control both the volume and the playback There were six unused push buttons in the final project so in the future the project could be modified to use push buttons for both playback and volume control if desired This project could be improved by implementing the feature to read the music and lyrics file from the compact flash This would enable larger music files to be played and would shorten the time needed to download the music and lyrics file into the system Also video mode could be used for the push buttons so that the user would be restricted to only be able to select either PB1 microphone or PB2 song not both This would prevent invalid input More push buttons could be used to indicate the volume level so that all five volume control bits in the AC97 could be changed 4 3 Description of Blocks The components of this project can be divided into existing unmodified modified and custom components a Existing components These components were used without modifications Microblaze processor o Version 2 00 a o From the MP3 Player project unmodified AC97 Controller o Version 1 00 a o From the MP3 Player project unmodified OPB GPIO o 3 instances of this block were created Instance 1 to connect to the User Switches and User LEDs Instance 2 to connect to the port in the custom Volume Buttons hardware block that output the microphone volume Instance 3 to connect to the port in the custom Volume Buttons hardware block that output the song volume A separate instance was needed for connecting to the User Switches and User LEDs because a different C GPIO WIDTH was needed Separate instances were needed to connect to the microphone volume and song volume ports to eliminate the error multiple drivers found for connector o Instance 1 Version v3 01 a Parameters C GPIO WIDTH 4 Ports GPIO IO External Net name opb gpio 0 GPIO IO Range set to 0 3 in the External Ports Connections list In the system ucf file the following code was added to connect this port to the switches and LEDs User LED1 Net opb gpio 0 GPIO IO 0 LOC B27 User INPUT1 Net opb gpio 0 GPIO IO 1 LOC F14 User LED0 Net opb gpio 0 GPIO IO 2 LOC B22 User INPUT0 can use this now b c not used for reset anymore 5 Net opb gpio 0 GPIO IO 3 LOC D10 In the C program the following code was added to refer to the switches and LEDs Note that the system is big endian define define define define LED1 SWITCH1 LED0 SWITCH0 0x8 0x4 0x2 0x1 o Instance 2 Version v3 01 a Parameters C GPIO WIDTH 3 C ALL INPUTS 1 C IS BIDIR 0 Ports GPIO in Internal Net name opb gpio 1 GPIO in This port is connected to the volume buttons mic volume port o Instance 3 Version v3 01 a Parameters C GPIO WIDTH 3 C ALL INPUTS 1 C IS BIDIR 0 Ports GPIO in Internal Net name opb gpio 2 GPIO in This port is connected to the volume buttons song volume port Interrupt controller o Version 1 00 c o Ports Intr Internal Net name timer to intc This port is connected to the Interrupt port of the OPB Timer Irq Internal Net name intc to myblaze OPB Timer o Version 1 00 b o Ports Interrupt Internal Net name timer to intc This port is connected to the Intr port of the OPB INTC OPB UARTlite o Version 1 00 b o Parameters C Use Parity 0 C Odd Parity 0 6 C Clk Freq 100000000 C Baudrate 9600 C Data Bits 8 Note that the clock


View Full Document

Toronto ECE 532 - Karaoke Machine - Group Report

Documents in this Course
Load more
Download Karaoke Machine - Group Report
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Karaoke Machine - Group Report and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Karaoke Machine - Group Report and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?