Kanto: FPGA Audio Player and Visualizer Kavita Jain-Cocks Zhehao - - PowerPoint PPT Presentation
Kanto: FPGA Audio Player and Visualizer Kavita Jain-Cocks Zhehao - - PowerPoint PPT Presentation
Kanto: FPGA Audio Player and Visualizer Kavita Jain-Cocks Zhehao Mao Amrita Mazumdar Darien Nurse Jonathan Yu May 16, 2013 Project Overview Objective: Design and implement an audio player with frequency visualization. Hardware:
Project Overview
◮ Objective: Design and implement an audio player with
frequency visualization.
◮ Hardware: Handles audio output and frequency visualization ◮ Software: Handles user interaction and system initialization
High-Level Overview
NIOS II VGA Display Avalon Visualizer FFT SD Card Controller Audio Buffer Speaker Output PLL Conductor SD Card SD Buffer everywhere PS2 Keyboard
SD Controller
CMD0 CMD8 illegal? Error ACMD41 ready? CMD58 Ready CMD17 no yes yes no start? yes no
Audio Buffer
Audio RAM WM8731 Interface From SD Card To Audio Codec
FFT Equations
Xk =
N−1
- n=0
xne− 2πj
N nk
(1) Xk =
- Ek + e− 2πj
N kOk
if k < N/2 Ek−N/2 − e− 2πj
N (k−N/2)Ok−N/2
if k ≥ N/2. (2)
FFT Top-Level
DFT DFT Recomb Time Domain RAM MUX MUX Frequency Domain RAM Controller Recomb ROM-32 Recomb ROM-64 Recomb ROM-128 Recomb ROM-16 MUX DFT ROM
DFT Unit
- u
t p u t n +1 ROM x x + +
Sum
k +1 F S M c
- n
t r
- l
l e r i n p u t
Recombination Unit
ROM +1 Complex Add Complex Subtract N write addr low high Frequency Domain RAM = FSM k write done Complex Mult even
- dd
Complex Multiplier
ax bx ay by x x x x
ax * ay bx * by ay * bx
- +
ax * by
az bz
Visualizer
data 31:0 clk_50 clk_25 red green blue data_req_addr reset_data FSM Data Array of size 16 19:0 Draw to VGA
Conductor
initial cpuctrl trigger_sd wait_sd resume playing fft_end block_end sd_ready = 1 / fft_counter <= 11 nios_play = 1 / blockaddr++ nios_readblock = 1 / blockaddr <= nios_addr sd_ready = 1 / ~ nios_play = 0 / ~ ab_swapped = 1 / fft_counter++ blockaddr++ fft_done_last = 0 fft_done = 1 / ~ ~ / fft_counter <= 00 ~ / ~ ~ / ~ ~ / ~
Software — Track Selection
Track 1 Address Track 1 Title track_table[0] track_titles[0] track_table[1] track_titles[1] Track 1 Address Track 1 Title Audio End track_table[N]