Audio playback

Using Zynq Programmable Logic and Xilinx tools to create custom board configurations

Re: Audio playback

Postby patc » Sat Mar 14, 2015 8:54 am

I honestly wish I had the know-how to build projects like this!

Honestly the hard parts have already been done by others: Zynq, Parallella, Netmf, DRC, FreeRtos,...

Wow! Speechless. You are taking smaller, cheaper, faster (better) to a whole new level

Funny, Andreas that's exactly how I feel about you and the Parallella.
Is this what is called "trading barbs" ;)

It would be really great if you could publish the project to GitHub or similar

No commitments here but that's what I intend to do when the project will be completed and fully operational. Meanwhile just posting snippets now and then (at sea that's how you try to catch the big fish :) )
patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby patc » Fri Apr 03, 2015 12:41 pm

Measurement first results (entirely done with the Parallella)

image #1
- measuring my home-theater speakers during testing (still work in progress so I'll move to the hifi system only after thorough testing)
- microphone is close to the speakers so there is limited room influence

image #2
- measurement of logsweep 2 millions samples 10-21000Hz sampling rate = 44100
- the first vertical line represents a sinewave of 10 periods 11025Hz to determine where the logsweep signal starts exactly (because 10Hz is way too low for the speakers to reproduce anything)

image #3
- the response after convolving the measurement with an inverse logsweep

Measurement sequence
- the Parallella generates the logsweep signal and simultaneously outputs it to spdif and extracts the spdif measurement data from the microphone
- data is saved to SD then analyzed: determine the logsweep start from the sinewave header, do the convolution and save the impulse response to SD
Attachments
img1.jpg
img1.jpg (119.02 KiB) Viewed 4937 times
img2.jpg
img2.jpg (207.16 KiB) Viewed 4937 times
img3.jpg
img3.jpg (145.29 KiB) Viewed 4937 times
patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby patc » Sun Apr 26, 2015 9:28 am

didn't win but here's part of the project description submitted to a Xilinx contest (some references here and there taken from the net).
Attachments
Audio Playback.jpg
Audio Playback.jpg (382.67 KiB) Viewed 4864 times
patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby patc » Sun Apr 26, 2015 11:33 am

A word about NETMF
Originally the .NET MicroFramework is meant for resource-constrained devices. However the Parallella with its Zynq, 1GB DRAM,... is everything but resource-constrained and for someone going along the Microsoft path, Windows Embedded Compact (WEC) is probably the logical choice so far for this development board.

But:
- NETMF is free, WEC is not
- NETMF is open-source, WEC is not

With my Parallella board I got the ability to switch back and forth between C# / C / C++ / VHDL, whichever is best to address different parts of a design:

1- NETMF running managed code on one Cortex-A9 core for the C sharp part
=> nice and easy

2- FreeRTOS running native code on the other Cortex-A9 core for the C/C++ part
=> performances and connectivity determinism

3- FPGA programmable logic for the VHDL/Verilog part
=> flexibility + very high performances of hardware programming
=> lower overall cost of the system at the end
patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby cmcconnell » Sun Apr 26, 2015 4:47 pm

Would Linux with Mono also have been a viable option for the C# part? (http://www.mono-project.com/)
Colin.
cmcconnell
 
Posts: 99
Joined: Thu May 22, 2014 6:58 pm

Re: Audio playback

Postby patc » Mon Apr 27, 2015 8:11 am

Would Linux with Mono also have been a viable option for the C# part? (http://www.mono-project.com/)

Sorry I'm not a Linux guy so I cannot comment on MONO. NETMF was the path of the least resistance to me and having FreeRTOS running on the second core was a solution to address NETMF's two weaknesses: speed and determinism. So this is an alternative which I found to be working pretty well in my app so far.
patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby patc » Sun May 03, 2015 10:46 am

patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby patc » Sun May 17, 2015 12:19 pm

headless version
A CD player SPDIF output is connected to the SPDIF input of the Parallella instead of getting audio data from the SD card. Then the workflow is the same: digital room correction convolution –> digital crossovers –> SPDIF output

I’m using Mike Field’s design for SPDIF Input:
http://hamsterworks.co.nz/mediawiki/index.php?title=SPDIF_Input&oldid=709

I’m not using a PLL to synchronize the Parallella SPDIF output clock to the CD player clock. Since the convolver works on 64K chunks of audio data, I buffer ahead 64K (=~ 1.5s latency @44100 sampling rate) from the CD player before starting the playback sequence. In that way whether a clock is faster or slower than the other one doesn’t really matter because 64K samples is plenty of room for clock drifting (as a matter of fact during a quick test I found about 1 sample drift per second between the 2 clocks). And anyway, if push comes to shove, I can always use the blanks between 2 songs on a CD to re-align the 2 clocks together....
Attachments
cdp.jpg
cdp.jpg (142.21 KiB) Viewed 4640 times
patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby patc » Mon Jun 08, 2015 7:54 am

project basically done, here's the complete PS+PL source code for headless version (the headless version is an order of magnitude simpler: only one Cortex core running, no LCD, no GUI, no NETMF, ...).

See "high-end audio playback.pdf" for instructions on how to build & operate

"DRCGuidev1.0.pdf" is a guide written by Jones Rush that describes the DRC setup when using a PC-based audio playback device instead of the Parallella one

- USE AT YOUR OWN RISKS -
Attachments
heap.zip
(857.93 KiB) Downloaded 157 times
drc_guide.zip
(822.37 KiB) Downloaded 164 times
patc
 
Posts: 83
Joined: Wed Aug 06, 2014 7:18 pm

Re: Audio playback

Postby 9600 » Mon Jun 08, 2015 8:55 am

Many thanks for sharing these, Pat!

I wondered if perhaps you might be able to upload the materials to GitHub or similar, as this would make them a bit easier to find, and also to examine the source code without having to download and unpack ZIP archives.

Cheers,

Andrew
Andrew Back (a.k.a. 9600 / carrierdetect)
User avatar
9600
 
Posts: 997
Joined: Mon Dec 17, 2012 3:25 am

PreviousNext

Return to FPGA Design

Who is online

Users browsing this forum: No registered users and 1 guest

cron