Hello guys 😉
This is my current project. Its a MiniDSP style active crossover heavily inspired by Cyperpits Octavia. Its still a work in progress and most of all a experimentation/test bed for me to learn how to design audio electronics.
It's based on a ADAU1466, similar to what is used in the fusion amps. The goal is to have a stereo analog input, SpDif in and out as toslink and RCA, 8 analog outputs and a trigger out to wake up amps as signal is detected.
For now I have only finished my "DSP core board" The DAC's and ADC are just cheap aliexpress modules for now. I almost finished my own DAC and SPDIF-out board based on the PCM5102A's. The ADC board is also conceptually done but still needs a lot of schematic and pcb work. This is what it looks like on the inside.
When I get my own DAC and ADC board the connections to the DSP board will be done via ribbon cables with every second line being GND to ensure good signal integrety.
I designed it this way with seperate PCB's as it allows me to focus on one thing at a time without making it unnecesarily tight and expensive to iterate. I can then try different DAC's or ADC's at a later time without having to pay for a new DSP chip and vice versa. It needs a fairly big box to allow all the connections on the back anyway.. Each pcb is 99x99 mm so they stay in the cheap range at JLCPCB. Its a 4 layer PCB with SIG on top, GND, POWER and SIG/GND on the bottom. Im currently using a Wondom ICP5 to program the DSP instead of the expensive USBi as I had it on hand. However, I hope to be able to make my own USB programmer based on the freeusbi and integrate it on the board eventually. But the software part of that scares me a bit as I have zero idea how it works with windows drivers and whatever..
It all started because I was playing around with a Wondom Jab5. I really loved Sigma Studio but I really did not like the wondom quality. The noise floor was unacceptable and eventually one of the amplifier chips on the board just died.. Having fallen in love with sigma studio I couldn't just go with a minidsp and my fusion amps also do not allow you to use sigma studio even though it is beeing used behind the scenes in both devices. I couldn't find any other product with less questionable quality than the wondom or the likes...
So I got the brilliant idea of making my own xD
As a Mechanical engineer I knew that I was waaay out of my comfort zone. However, thanks to opensource projects such as FreeDSP, analog devices excellent documentation and engineering support, and youtube channels such as Phil's lab it seems it may actually be possible for me to make something that works 😍
The DSP board is working and the overall unit performs surprisingly well. I belive the limiting factors currently is mostly the ADC and to some extend the power delivery for the ADC's which will be much improved in my own design. However, I have some wierd issues that I am currently trying to trouble shoot:
Please critizie all you want, I want to learn from this 😀
This is my current project. Its a MiniDSP style active crossover heavily inspired by Cyperpits Octavia. Its still a work in progress and most of all a experimentation/test bed for me to learn how to design audio electronics.
It's based on a ADAU1466, similar to what is used in the fusion amps. The goal is to have a stereo analog input, SpDif in and out as toslink and RCA, 8 analog outputs and a trigger out to wake up amps as signal is detected.
For now I have only finished my "DSP core board" The DAC's and ADC are just cheap aliexpress modules for now. I almost finished my own DAC and SPDIF-out board based on the PCM5102A's. The ADC board is also conceptually done but still needs a lot of schematic and pcb work. This is what it looks like on the inside.
When I get my own DAC and ADC board the connections to the DSP board will be done via ribbon cables with every second line being GND to ensure good signal integrety.
I designed it this way with seperate PCB's as it allows me to focus on one thing at a time without making it unnecesarily tight and expensive to iterate. I can then try different DAC's or ADC's at a later time without having to pay for a new DSP chip and vice versa. It needs a fairly big box to allow all the connections on the back anyway.. Each pcb is 99x99 mm so they stay in the cheap range at JLCPCB. Its a 4 layer PCB with SIG on top, GND, POWER and SIG/GND on the bottom. Im currently using a Wondom ICP5 to program the DSP instead of the expensive USBi as I had it on hand. However, I hope to be able to make my own USB programmer based on the freeusbi and integrate it on the board eventually. But the software part of that scares me a bit as I have zero idea how it works with windows drivers and whatever..
It all started because I was playing around with a Wondom Jab5. I really loved Sigma Studio but I really did not like the wondom quality. The noise floor was unacceptable and eventually one of the amplifier chips on the board just died.. Having fallen in love with sigma studio I couldn't just go with a minidsp and my fusion amps also do not allow you to use sigma studio even though it is beeing used behind the scenes in both devices. I couldn't find any other product with less questionable quality than the wondom or the likes...
So I got the brilliant idea of making my own xD
As a Mechanical engineer I knew that I was waaay out of my comfort zone. However, thanks to opensource projects such as FreeDSP, analog devices excellent documentation and engineering support, and youtube channels such as Phil's lab it seems it may actually be possible for me to make something that works 😍
The DSP board is working and the overall unit performs surprisingly well. I belive the limiting factors currently is mostly the ADC and to some extend the power delivery for the ADC's which will be much improved in my own design. However, I have some wierd issues that I am currently trying to trouble shoot:
- When the ICP5 is connected I get a lot of audible noise in the speakers both white noise, a whine and some kind of periodical ticking. It goes away when the programmer is disconnected again. This was also the case when using wondom dsp's with this programmer. Im not sure if it will be different with a USBi or if its something with my design. I was considdering to add some kind of isolation between the ICP5 and my DSP but was afraid to overcomplicate things in the first go.
Any ideas how to get rid of this? it is a bit annoying when experimenting in sigma studio.
- I get a bit of noise and a periodical clicking noise as soon as I connect my AC/DC adapter. Even though my DSP is turned off (I only break the positive line, the negative is connected directly to the DSP board) and no source is connected. This is the adapter i use: Ac-adapter-100-240v-to-12v-3a-dc
I also tried a 7v mean well one, while it gets significantly better its still there. Not sure if theese adapters are simply not suited for audio, or if my power interface is to simple. with limited knowledge on this matter i pretty much coppied the Octavia power input with some small changes (added a fuse and a diode to the reverse polarity circuit).
- I am having some wierd EEPROM issues. Most of the time it works as intended but sometimes it just refuses to write the program to the EEPROM. The wierd thing is I do not change any settings related to the EEPROM to stop it working or to get it working again. It seems pretty random. Its not related to on time. Can this be a SPI noise thing? related to the ICP5 (guess not because sigma stuido can talk to the DSP just fine)?. Faulty EEPROM?
Please critizie all you want, I want to learn from this 😀
This is a well-known issue, and no one knows the exact reason why the EEPROM stops working. I haven't seen any clear explanation online regarding this problem.I am having some wierd EEPROM issues. Most of the time it works as intended but sometimes it just refuses to write the program to the EEPROM. The wierd thing is I do not change any settings related to the EEPROM to stop it working or to get it working again. It seems pretty random. Its not related to on time. Can this be a SPI noise thing? related to the ICP5 (guess not because sigma stuido can talk to the DSP just fine)?. Faulty EEPROM?
I can share my own theory — during project debugging and flashing the ADAU, there is activity on the EEPROM programming port. Under certain circumstances, this signal may cause the EEPROM to execute an instruction that disrupts its normal operation. This would explain why the issue doesn’t occur when uploading a pre-debugged and finalized project to the ADAU — it only arises during the debugging process with project uploads. After such sessions, EEPROM-related problems begin to appear. Sometimes, performing a full erase of the EEPROM through the ADAU helps, but sometimes the EEPROM has to be replaced.
I've also noticed that some projects simply cannot be written to the EEPROM. One time, I added more than 16 signal level meters to a project. It would load and run fine on the ADAU, but the EEPROM refused to be programmed. I puzzled over it for a long time, and eventually, reducing the number of level meters to 8 allowed me to successfully program the EEPROM.
Also, quite often, the EEPROM doesn't actually erase when given the erase command — you have to double-check that it has been successfully wiped.
In general, there are a lot of quirks with EEPROMs in ADAU systems.
As for your idea to design your own DAC and ADC boards — it’s quite an ambitious project. The final result will heavily depend on the PCB layout. Not many circuit designers are able to integrate ADC, DAC, and DSP on the same board without running into serious noise issues.
If you want to achieve a decent result without spending too much time learning the intricacies of good PCB design, I would recommend using a PCB from a device that is already known to have low noise performance as a base or reference.
Oh yeah. About your PCB programmer. You just need to install the CY7C68013A chip on the PCB and flash the USBi identifier into the EEPROM. The wiring diagram and components can be taken from the PCB of the same name.

Last edited:
@uriy-ch Well that makes me sad to hear 🙁 Is that why Hypex, and minidsp do not use EEPROM's but rather use a mC to control the DSP? 😵This is a well-known issue, and no one knows the exact reason why the EEPROM stops working. I haven't seen any clear explanation online regarding this problem.
And I almost put it in a DIP8 socket... Y oh Y didn't I..but sometimes the EEPROM has to be replaced.
I am very well aware of this. I'm leaning very much against the FreeDSP Octavia here which is supposed to have good performance. And I have also been studing this particular subject (mixed signal type PCB's) extensively. Especially through altium academy and Phils courses and meeting with him. I am not saying that I am an expert. Certainly not. But I'm not completely ignorant to the traps ahead.. That said I do not expect my first version to be HiFi quality.. probably not version 5 either. 😛As for your idea to design your own DAC and ADC boards — it’s quite an ambitious project....
Its mostly just for fun. But thanks for the reality check 😉
Thanks for the tip regarding the USB programmer!! Much appreciated. 😍
It sound like this is something you have tried before?
With the USBi identifer to EEPROM you mean the EEPROM of the CY7C68013A chip right? Any good resources out there on this matter? I have briefely been looking at the FreeUSBi, but that was at the very begginning of this jurney. May make more sense to me if I look at it again now.
You mean just clone the AD USBi right? Thats well documented in their datasheet. Was just affraid of how to flash it so that it would work with windows and sigma studio as thats also something I have 0 clue hwo works at this moment..
I believe that when controlling the adau via mC there is simply no need for EEPROM for the adau.Is that why Hypex, and minidsp do not use EEPROM's but rather use a mC to control the DSP?
Yes, this is an option, if when debugging a project in Sigma Studio you simply remove the EEPROM from the socket, I think problems with flashing a finished and debugged project will not arise so often.And I almost put it in a DIP8 socket... Y oh Y didn't I..
Yes, I am talking about the EEPROM identifier for CY7C68013A.With the USBi identifer to EEPROM you mean the EEPROM of the CY7C68013A chip right?
Here are some explanations.
https://oscarmcnulty.com/2020/07/09/programming-adau1701.html
https://www.diyaudio.com/community/...rammer-using-cypress-cy7c68013a-board.269111/
There are several threads on the Engineer Zone forum at ADI about making sure the self-boot signal is tied to ground during programming for the ADAU145X/146X devices.
But I've seen another problem that interferes with programming the EEPROM. I have a fairly large design (120 cells) that simply won't program the EEPROM successfully with SigmaStudio 4.7. I tried copying all of the cells and pasting into a new empty project and got the same result--the EEPROM wouldn't program. But then I tried making a new project and gradually added more and more cells from that design into the new project and testing the programming as I went along. And then, after completely rebuilding that design, programming the EEPROM worked fine. When I checked the compilation through the DSP, there were no errors. The rebuilt design looks exactly the same as the original in the Compiler Output window, but the code is different in some places in the hex output. I don't know what causes this problem, but my guess is that there is some sequence that results in creating an incorrect checksum, because if the checksum is wrong, the EEPROM won't program. I was going to ask ADI about this problem on the Engineer Zone, but it appears to be a SigmaStudio 4.7 problem, and it looks like all development has been stopped in favor of SigmaStudio+.
You can get by without an EEPROM for the ADAU1701 because it is fairly straightforward to process the compiler files and load the program and parameters into the ADAU1701 from a microcontroller. However, the multiple memory spaces, multiple pages and separate master bus in the ADAU1466/7 makes booting from the EEPROM much easier. When it works, that is...
But I've seen another problem that interferes with programming the EEPROM. I have a fairly large design (120 cells) that simply won't program the EEPROM successfully with SigmaStudio 4.7. I tried copying all of the cells and pasting into a new empty project and got the same result--the EEPROM wouldn't program. But then I tried making a new project and gradually added more and more cells from that design into the new project and testing the programming as I went along. And then, after completely rebuilding that design, programming the EEPROM worked fine. When I checked the compilation through the DSP, there were no errors. The rebuilt design looks exactly the same as the original in the Compiler Output window, but the code is different in some places in the hex output. I don't know what causes this problem, but my guess is that there is some sequence that results in creating an incorrect checksum, because if the checksum is wrong, the EEPROM won't program. I was going to ask ADI about this problem on the Engineer Zone, but it appears to be a SigmaStudio 4.7 problem, and it looks like all development has been stopped in favor of SigmaStudio+.
You can get by without an EEPROM for the ADAU1701 because it is fairly straightforward to process the compiler files and load the program and parameters into the ADAU1701 from a microcontroller. However, the multiple memory spaces, multiple pages and separate master bus in the ADAU1466/7 makes booting from the EEPROM much easier. When it works, that is...
How about York? 🙂 It integrates with SigmaStudio and provides USB->I2S at the same time:However, I hope to be able to make my own USB programmer based on the freeusbi and integrate it on the board eventually. But the software part of that scares me a bit as I have zero idea how it works with windows drivers and whatever..
Post in thread 'USB UAC2+HID Multichannel input/output interface York'
https://www.diyaudio.com/community/...put-output-interface-york.413504/post-7720411
I already bought one of your Yorks, and I love the idea of being able to both program and play audio over USB (as long as it isn't as noisy as this programmer). And I plan to put it riiiiight about here:How about York? 🙂 It integ
But for future products that isn't really going to benefit from USB audio in as this PC speaker setup does I would rather be able to have a simple programmer integrated directly in my own DSP board and not be dependent on any one elses hardware or software.. Not beeing negative against your work, the york seems like a fine piece of hardware, and software!! way beyound what I can do with software for sure.. Looking forward to try it 😀
Yes exactly. You should be able to use it entirely without EEPROM this way, but it is too much software for me at this point at least. And Im not sure if I can then use Sigma Studio directly anymore? 😕I believe that when controlling the adau via mC there is simply no need for EEPROM for the adau.
I dont see it as a option to remove it while debugging, rather easy to replace in this prototype if i mess it up again..Yes, this is an option, if when debugging a project in Sigma Studio you simply remove the EEPROM from the socket, I think problems with flashing a finished and debugged project will not arise so often.
For the next version I think it would be a better solution to utilize the WP pin of the EEPROM. Right now I just have WP disabled at all times as I didn't see any reason I would ever not want that. But it seems the right solution would be to have WP enabled during debugging through SS to prevent any SPI chatter from corroupting the EEPROM. Then once Im ready to write the EEPROM I then have a small switch or something on the backpanel that puts Sellfboot to GND and disables WP on the EEPROM. This should be a foolproof method right?
Thanks for those links, much appreciated!! 😀Yes, I am talking about the EEPROM identifier for CY7C68013A.
Here are some explanations.
I'm not sure, I don't know the exact answer. But on my new boards I already provided a jumper for manual grounding of WP on the EEPROM. I had it before, I didn't use it, then I removed it, now I put it back.Then once Im ready to write the EEPROM I then have a small switch or something on the backpanel that puts Sellfboot to GND and disables WP on the EEPROM. This should be a foolproof method right?
I certainly also will do that moving forward. Surprised the Octavia doesn't have that. Have you had any issues after doing that?now I put it back.
Yeah I also saw that. It is also stated in the datasheet from the eval board that this is required. I did have it working fine without doing it though but a ADI engineer told me its a gamble, it ddepends on how big the program is and how long it takes tro write it. something about the DSP doing a reset at some pount in the write proces and this can mess it up as with the selfboot high it then also attempts to read from the EEPROM at the same time.. or something like that..There are several threads on the Engineer Zone forum at ADI about making sure the self-boot signal is tied to ground
Sucks with the big program 🙁SigmaStudio 4.7 problem, and it looks like all development has been stopped in favor of SigmaStudio+
I also started using SS+ to get familiar with it as they will stop support for SS eventually. I generally also like it better than SS. But SS+ is clearly still a unfinished product as it is still lacking some really nice features from SS.. They do seem pretty open for inputs though. As a new user of these programs the search funtion of the toolbox in SS+ is SOOOOO NICE... Not hjaving to search through every single category in the three for new function I haven't used before but know the name of..
Yeah.. For me nothing with a microcontroler, spi communication and register/memory and so on sounds simple.. not if I have to write the software that does it at least 😵ameters into the ADAU1701 from a microcontroller. Ho
The EEPROM solution is much more apealing to me.. What is your thought of this method:
For the next version I think it would be a better solution to utilize the WP pin of the EEPROM. Right now I just have WP disabled at all times as I didn't see any reason I would ever not want that. But it seems the right solution would be to have WP enabled during debugging through SS to prevent any SPI chatter from corroupting the EEPROM. Then once Im ready to write the EEPROM I then have a small switch or something on the backpanel that puts Sellfboot to GND and disables WP on the EEPROM. This should be a foolproof method right?
I removed the jumper because I found that with the jumper installed, i.e. when connecting WP to ground, I can erase the EEPROM, so I removed the jumper. Now I have returned it to new boards that have not yet arrived from the manufacturer. In fact, I do not actively use Sigma Studio, I already have debugged projects that do not cause problems with EEPROM. Therefore, I do not know the effectiveness of this solution.I certainly also will do that moving forward. Surprised the Octavia doesn't have that. Have you had any issues after doing that?
Do you mean cant? Or else Im confused..nd, I can erase the EEPROM, so I
I actively use sigma studiuo a lot.. But it is also still new to me so I experience a lot
Connect WP to ground and erase EEPROM via DSP. I managed to erase EEPROM. That's why I removed the jumper from the PCB.Do you mean cant? Or else Im confused..
Well.. then it probably wont work as a EEPROM portection.. Just checked the datasheet of my EEPROM. It also says it has a WPEN bit which overules the physical pin. And I have no idea what this pin is set to. if that bit is low then the physical pin doesn't do anything. At least on My EEPROM
Compared to what, I wonder? It looks rather low-ish performance from the schematics. For instance, every DAC and every ADC need an analog time reference (the clock), and an analog voltage reference (appears to be included in AVDD for PCM5102A, which already looks not so good). Both analog clock and analog reference voltage implementations look about as minimal as they could possibly be. So I would expect there to be substantial clock jitter and analog noise intermoduated with the analog output audio signals. Those types of distortions often tend not to be stationary nonlinear distortions, so they may tend not to show up very well in standard FFT spectral analysis-based tests....FreeDSP Octavia here which is supposed to have good performance...
Yes, the EEPROM solution is the most practical solution for the ADAU1466. You can easily change the parameters for the DSP cells from the slave interface, so real-time control of the programmed DSP from a microcontroller is straightforward. But getting the program into the DSP from that same interface requires some tricky software to format the compiler output and to write the program. It is far easier to let SignaStudio put the program into the EEPROM and let the chip self-boot from the master interface.The EEPROM solution is much more apealing to me..
I haven't witnessed corruption of the EEPROM from noise. My experience has been that programming the EEPROM either works fine (using the ADI USBi programmer) or it doesn't work at all. I've got two designs that look identical, but one can be programmed into the EEPROM and the other can't, so I am fairly well convinced that there some bugs in the SigmaStudio 4.7 compiler. Based on what I have read, the self-boot switch is required for reliable programming of large programs, but in my limited experience I haven't seen a need for a WP switch.What is your thought of this method:
_________________________________________
I would prefer to use the SigmaStudioPlus program, but the last time I tried it, I couldn't figure out how to cross-reference the names of the cells to the Parameter RAM address. In version 2.1, the names that I applied didn't show up in any of the compiler output files, and I didn't see any way to find the cell addresses from the labels I had used. For example, if my design used a cell labelled "Volume1", I need to be able to process one of the compiler output files to find the Parameter RAM address for "Volume1", so I know where to write the volume level from the microcontroller. But the compiler ignored all of my labels and instead assigned its own cryptic labels. So, I reverted back to the 4.7 SigmaStudio compiler, which retains the user-assigned labels as a comment in the xxxPARAM.h file. There have been two new revisions since version 2.1--I'll try SigmaStudioPlus again on my next project to see if this behavior has changed.
I wonder if there is a signature that I can look for in the i2c stream to toggle one of the mcu pins to control the adau selfboot. Will have a look.For the next version I think it would be a better solution to utilize the WP pin of the EEPROM. Right now I just have WP disabled at all times as I didn't see any reason I would ever not want that. But it seems the right solution would be to have WP enabled during debugging through SS to prevent any SPI chatter from corroupting the EEPROM. Then once Im ready to write the EEPROM I then have a small switch or something on the backpanel that puts Sellfboot to GND and disables WP on the EEPROM. This should be a foolproof method right?
Lol, I really believe I got it.
@DannerD3H since you have York and faced this issue, will you be able to try new software? Please update firmware and use new dll's, available on the website (york.eclipsevl.org)
I've tried multiple times erasing and flashing the EEPROM thru DSP, it was very unstable but worked every time after the update.
@DannerD3H since you have York and faced this issue, will you be able to try new software? Please update firmware and use new dll's, available on the website (york.eclipsevl.org)
I've tried multiple times erasing and flashing the EEPROM thru DSP, it was very unstable but worked every time after the update.
Last edited:
Well, I have never heard the Octavia so I cannot really say for sure what it sounds like. It just seemed that people who tried it was happy with it and I therefore thought it was a good well documented place for me to start my journey.Compared to what, I wonder? It l
I plan to switch to more sofiaticated DACs and adcs from akm or newer TI chips once I get the basics under control. Including making a stable analog supply and distribute clk sig als properly. But one have to start somewhere right 🙂
As I said this is all new territory for me. I do not expect my first implementation here to be real HiFi. If I can beat the wondom performance in a couple of iterations then I will be very happy. Then in 5 or 10 years I may be able to approach HiFi territory. I know audio electronics design is hard. And every mistake is mercilessly smacked In your dlface through the speakers..
It seems my first challenge is to make a stable system that doesn't eat it's own EEPROM... Then we can talk about the noise performance xD
But thanks for letting me know that I maybe shouldn't trust the Octavia too much. What is your opinion on something like these schematics?
https://kaamostech.com/wp-content/uploads/2023/07/ADC_AK5572_v23_sch.pdf
- Home
- Source & Line
- Digital Line Level
- DIY Active crossover (AKA DIY MiniDSP) based on ADAU1466