Go Back   Home > Forums > Source & Line > Digital Line Level

Digital Line Level DACs, Digital Crossovers, Equalizers, etc.

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 7th December 2011, 09:58 PM   #81
rsdio is offline rsdio  United States
diyAudio Member
 
Join Date: Feb 2008
Location: Seattle
Quote:
Originally Posted by steph_tsf View Post
I own a Microchip ICD3 debugger.
Can I program and debug all three chips individually, from a single debug connector ?
Is there something like the ARM "SWD multidrop" debug protocol, in the Microchip world ?
I do not believe so. Other debugging standards like JTAG involve a daisy-chained serial loop, such that multiple chips can be debugged with one connection. However, my understanding is that the Microchip debugger connects directly to a pair of serial lines on a single chip, with no provision for extending the lines to more than one chip.

You can also ask this question on the Microchip forum.
  Reply With Quote
Old 8th December 2011, 07:11 AM   #82
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Seems that a chip like PIC32MX534F064H (5.06 eur from Mouser, 64-pin) also benefits from the SPI upgrade supporting I2S. There are three SPI. They could interface a WM8580A Codec for implementing a stereo 3-way crossover with SPDIF-in, Analog-in, and volume control. As all three SPI are taken by the audio lanes, one extra SPI needs to be implemented using bit-banging for controlling the volumes.

Seems that the PIC32MX534F064L (5.67 eur from Mouser, 100-pin) has four upgraded SPI. This way the fourth SPI can be used for controling the volumes, so no bit-banging anymore for controlling the volumes.

I'm tempted by a MikroElektronika MINI-32 board (25.00 usd), featuring a PIC32MX534F064H inside. Designing a MINI-32 "shield" hosting a WM8580A Codec (5.91 eur from Mouser) would lead to a stereo 3-way crossover with SPDIF-in, Analog-in, and volume control. Don't know if the built-in USB can be used as audio input.

Quite interesting is the MikroElektronika AUDIO CODEC PROTO. This is a tiny board hosting a WM8731 Codec. During months, MikroE remained evasive about how to connect it on a PIC32 SPI. Now with the PIC32 SPI upgrade supporting SPI, it should be a piece of cake. I guess MikroE is now working on sample code for their MINI-32 board when hooking their AUDIO CODEC PROTO.
Attached Images
File Type: jpg PIC32MX534F064H - SPI now supports I2S.jpg (169.9 KB, 391 views)
File Type: jpg PIC32MX534F064H - three SPI supporting I2S.jpg (222.1 KB, 389 views)
File Type: jpg MikroElektronika MINI-32 - three I2S.jpg (204.0 KB, 388 views)
File Type: jpg WM8580A - three I2S.jpg (133.7 KB, 332 views)
File Type: jpg MikroElektronika AUDIO CODEC PROTO.jpg (148.5 KB, 331 views)
  Reply With Quote
Old 8th December 2011, 07:54 AM   #83
rsdio is offline rsdio  United States
diyAudio Member
 
Join Date: Feb 2008
Location: Seattle
Quote:
Originally Posted by steph_tsf View Post
PIC32MX534F064H There are three SPI.

PIC32MX534F064L (5.67 eur from Mouser, 100-pin) has four upgraded SPI.

I'm tempted by a MikroElektronika MINI-32 board (25.00 usd), featuring a PIC32MX534F064H inside. Don't know if the built-in USB can be used as audio input.
The PIC32MX534F064H should be able to handle USB Audio Class 1 at Full Speed, but you probably have to write your own firmware.

The 64-pin 'H parts have 3 I2S SPI, the 100-pin 'L parts have 4 I2S SPI.
  Reply With Quote
Old 8th December 2011, 08:03 AM   #84
Sin Bin
 
Join Date: Sep 2007
Location: Hangzhou - Marco Polo's 'most beautiful city'. 700yrs is a long time though...
Blog Entries: 84
Send a message via MSN to abraxalito Send a message via Yahoo to abraxalito Send a message via Skype™ to abraxalito
PIC32 would get more interesting for me if there were any other silicon vendors adopting MIPS cores. Anyone know of any? - in the uC market I mean, not stuff like Alchemy Semi.
  Reply With Quote
Old 8th December 2011, 10:19 AM   #85
diyAudio Member
 
s3tup's Avatar
 
Join Date: Dec 2004
Location: Israel
Quote:
Originally Posted by steph_tsf View Post
Wonderful ! Would be nice to have a crossover signal flow like the one I've attached. Is it feasible ?
I have no "linked frequency point" filters - it's a bit more complicated and isnt useful in the real world (imho) - acoustical slopes/response/phase rules the resulting system response, and the filters should flex the acoustical output to specific slopes/Q/freq points...

I don't have multiple-out filters, as everything is based on single pieces of transfer functions which have single input-single output...

Otherwise, it's up to you how would you like to chain the transfer function blocks - "tree", "paralel".

I haven't yet implemented the mixing/substracting of signals - where several outputs are connected to single input... I'll implement it.
You can't make loops of filters...


I'm pretty far from hardware export of filters - i can do biquad coefficients, but signal routing and coefficiencts insertion into DSP source code is out of my reach right now.
Could you please share your DSP sourcecode for the ARM you have?
Probably i'll generate a source for fuctions of DSP blocks in text:

PHP Code:
float DSP_LP2_x1234(float inSignalint pos)
{
float a0=0.000001;
float a1=0.000001;
float a2=0.000001;
float b0=0.000001;
float b1=0.000001;
float b2=0.000001;

return (
inSignal[pos]*a0 inSignal[pos-1]*a1 inSignal[pos-2]*a2)/(inSignal[pos]*b0 inSignal[pos-1]*b1 inSignal[pos-2]*b2);

with a chaining in the main():

PHP Code:
void main()
{

float in_0=0;
float in_1=0;

float out_00=in_0;
float out_01=in_1;
float out_10=in_0;
float out_11=in_1;
float out_20=in_0;
float out_21=in_1;

while (
1==1)
{
out_00=DSP_LP2_x1534(out_00,x);
out_00=DSP_HP2_x1434(out_00,x);
out_00=DSP_Notch_x1334(out_00,x);
out_00=DSP_Whatever_x1232(out_00,x);

out_01=DSP_LP2_x1534(out_01,x);
out_01=DSP_HP2_x1434(out_01,x);
out_01=DSP_Notch_x1334(out_01,x);
out_01=DSP_Whatever_x1232(out_01,x);

out_10=DSP_HP2_x1555(out_10,x);
out_10=DSP_HP2_x1555(out_10,x);

out_11=DSP_HP2_x1555(out_11,x);
out_11=DSP_HP2_x1555(out_11,x);

x++;
}

The sourcecode itself is quite mechanical, and could be generated based on text templates:

PHP Code:
float $function$ (float inSignalint pos)
{
float a0=$a0$;
float a1=$a1$;
float a2=$a2$;
float b0=$b0$;
float b1=$b1$;
float b2=$b2$;

return (
inSignal[pos]*a0 inSignal[pos-1]*a1 inSignal[pos-2]*a2)/(inSignal[pos]*b0 inSignal[pos-1]*b1 inSignal[pos-2]*b2);
}

  Reply With Quote
Old 8th December 2011, 12:39 PM   #86
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
At this stage, I think that the idea of an open-source DSP Xover would benefit from a fully documented application implementing a stereo 3-way crossover having a fixed structure like the one shown above, only using IIRs, substractors and delays.

There would be a front-end written in Visual Basic, using USB and a Windows PC for modifying values like IIR coefficients and delays.
For calculating the IIR coefficients, we already have IIR_Lab, a design help for digital audio filters. It may suffice in the early days. IIR_Lab : a design help for digital audio filters

No doubt there can be more elaborate front-ends running on Windows, providing graphics, relying on Visual Basic or anything else. At the moment, I guess that most developers will want to keep their front-ends proprietary, and I fully respect such approach.

As shown above, if the PIC32 redesigned SPI can synchronize three SPI in audio (aka I2S) mode, a proof of concept can be designed right now using one MikroE MINI-32 and one MikroE AUDIO CODEC PROTO (Codec in Master Mode). The oscilloscope can easy tell if all three SPI outputs remain in sync. If all three SPI outputs remain in sync, it will be time for designing a "shield" for the MikroE MINI-32, hosting a WM8580 Audio Codec.

As soon as there is an Embedded Artists LPC43xx LPCXpresso board, more computing power will be possible.
  Reply With Quote
Old 9th December 2011, 03:45 AM   #87
chaparK is offline chaparK  Luxembourg
diyAudio Member
 
Join Date: Apr 2010
Location: Luxembourg
Interesting topic, thanks for sharing your ideas. I looked at the STM32F4 and i must say i'm impressed.

Quote:
Originally Posted by s3tup View Post
[...] I'm pretty far from hardware export of filters - i can do biquad coefficients, but signal routing and coefficiencts insertion into DSP source code is out of my reach right now.
Could you please share your DSP sourcecode for the ARM you have?
Probably i'll generate a source for fuctions of DSP blocks in text:

PHP Code:
float DSP_LP2_x1234(float inSignalint pos)
{
float a0=0.000001;
float a1=0.000001;
float a2=0.000001;
float b0=0.000001;
float b1=0.000001;
float b2=0.000001;
 
return (
inSignal[pos]*a0 inSignal[pos-1]*a1 inSignal[pos-2]*a2)/(inSignal[pos]*b0 inSignal[pos-1]*b1 inSignal[pos-2]*b2);

s3tup, if your code is implementing a biquad, then it's not OK. You need a buffer for the output signal, and forget about dividing terms. Division is nearly heresy in DSP
  Reply With Quote
Old 9th December 2011, 12:49 PM   #88
diyAudio Member
 
s3tup's Avatar
 
Join Date: Dec 2004
Location: Israel
chaparK,
That sourcecode is just example... Actual code will have all the in/out buffers, and proper biquad implementations...

As i think of it, it's enough to write a piece of efficient code in ASM, and then integrate it to the code-generator routine... in the other hand, these compilers tend to optimize the code pretty good...
  Reply With Quote
Old 17th December 2011, 05:49 AM   #89
diyAudio Member
 
dudaindc's Avatar
 
Join Date: Sep 2005
Location: Metro Washington DC
Quote:
Originally Posted by steph_tsf View Post
Wonderful ! Would be nice to have a crossover signal flow like the one I've attached. Is it feasible ?
Nice GUI... is the your code too?
__________________
Rubycon || Nichicon
  Reply With Quote
Old 17th December 2011, 08:24 PM   #90
diyAudio Member
 
steph_tsf's Avatar
 
Join Date: Mar 2008
Quote:
Originally Posted by dudaindc View Post
Nice GUI... is the your code too?
Xover is a visual basic application used as front-end, designed for sending parameters to any DSP, provided it is running open source code. As I would like to generate some revenue from it, I don't intend distributing Xover as is, but instead, I intend transforming it into a web based application, asking 0.99 $ each time the DSP gets flashed. No money asked when you change parameters. Money only asked when you want the changes to become permanent. At the moment I have no idea what kind of web-based framework I may use.
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Volume / Source selector - open source project ? AuroraB Analog Line Level 22 22nd September 2012 02:21 PM
Violet DSP Evolution - an Open Baffle Project cuibono Multi-Way 211 18th May 2010 02:26 AM
Open call for suggestions on Open Source DIY Audio Design gfergy Everything Else 1 15th April 2007 07:33 AM
Open Source, Open Architecture! zenmasterbrian Digital Source 185 23rd February 2007 10:35 PM


New To Site? Need Help?

All times are GMT. The time now is 04:17 PM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright 1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2