SoC Design

Audio Mixer Project

Team Lead: Karl

Pioneering Team: Hardi + Gulcin + Keijo

Building Blocks of Audio Mixer

Audio IP (in)

Audio to AXI

Audio mixer

Audio IP (out)

Headphones

AXI to

audio

Audio Copy Driver

Linux

Line in

IRQ

 Copy audio from input to output

IRQ

AXI

AXI

Audio Copy

Audio IP (out)

AXI to

audio

Main Loop

UDP B_CAST

Ethernet

Main Loop

FIFO

Thread

Audio IP

Left + Right

Parallel

UDP Broadcast

FIFO

UDP Receiver Driver (1)

Audio IP (in)

Audio to AXI

Audio mixer

Audio IP (out)

Headphones

AXI to

audio

Audio Receive Driver

Linux

 Receive audio and send it to the output

AXI

Network Stream (UDP)

UDP Receiver Driver (2)

Audio IP (in)

Audio to AXI

Audio mixer

Audio IP (out)

Headphones

AXI to

audio

Audio Driver

Thread 1

Thread 2

Network Stream

Linux

Line in

AXI to

audio

AXI

AXI

AXI

IRQ

IRQ

Simple Audio Mixer

Headphones

AXI to

audio

Audio Driver

Thread 1

Thread 2

Network Stream

Linux

Line in

AXI

AXI

AXI

IRQ

IRQ

AXI to

audio

Audio mixer

Audio IP (out)

Volume control

Audio to AXI

Audio IP (in)

Filter 2

Volume control

Filter 1

Audio Mixer

Audio IP (in)

Audio to AXI

Audio mixer

AXI to

audio

Audio Driver

Thread 1

Thread 2

Network Stream

Linux

Line in

Audio to AXI

AXI to

audio

Audio Mixer

Audio IP (out)

Filter 1

Filter 2

Headphones

Audio to AXI

VolumeControl

AXI to

audio

Audio to AXI

Audio IP (in)

Thread 1

Thread 2

AXI

AXI

AXI

AXI

AXI

IRQ

IRQ

IRQ

Shared Volume Control

How we started?

4 Important questions

  • What was the initial project task?
  • Did we first model our task? 
  • What went wrong during the project?
  • How to mitigate these problems?

Did we first model our task?

Ehh.... No

What went wrong during the project?

  • ZedBoard processing resources were overflowed
  • Bad quality with delays

How to mitigate these problems?

  • Using DMA (Direct memory access)
  • Threads use resource locking

Conclusions

  • Use either DMA or resource locking approach
  • Model the whole system ( time )
  • Reduce sampling rate on sender part

Thank you!