[design log] Neat 2x170W I2S in, I2C controlled, integrated DSP amp (TAS3251)

Member
Joined 2015
Paid Member
By the way Christophe, which versions of PPC3 and TAS3251 module do you have ? I have PPC3 v3.1.1 build 247 and TAS3251 v3.0.1. It seems that PPC3 v3.1.5 build 745 should be available when they will have solved theit IT issue.JMF

My versions are :
PPC3 v3.15 Build 7.45
TAS3251 plugin v3.0.1


But that seems worse than yours as it doesn't produce any sound. For instance, I have generated a file with the following parameters:
Input : AIB @48k
Process Flow : Standard Processing 2.0 48k then everything default : all modules Off except input mixer, Output crossbar, Volume 0dB gang and Dac gain 0dB 2V.
File creation menu : type :.h, Dump Mode : current state, Burst :1

File is attached, it produce nothing, some crucials registers are set to zero.
Am I doing something wrong ?, do you use snapshot rather than current state to dump the .h file ?
 

Attachments

  • 48k_tst1.zip
    1.9 KB · Views: 73
Thanks AIM for your feedback. So you seem to have the latest version.


Here is what I get (and is working) for Mode 2.0, Standard Processing 48k, all modules Off except input mixer (Basic), Output crossbar (Basic), Dac gain 0dB Analog DAC Gain 2V.
File creation menu : type :.h, Dump Mode : current state, Burst :1 to output window, then copy paste in file.


I just regenerated it, but don't have time to retest here before posting.


Finally, it could be some opportunity to start learning python to program a small code to compare config files:
- read one or two config structures,
- reformat them according to the register table book/page/register/role/flow/is default/is same or different.


This would help a lot understand and diagnose the PPC3 generated .h


JMF
 

Attachments

  • TAS3251_2_0 Std default.zip
    2.7 KB · Views: 77
Member
Joined 2015
Paid Member
Hi,
I compared both with Notepad++ and yours looks much better : It contains default values in many register that are set to zero in mine, not only in the DSP area but also in general config area.


As a result it produce sound....


I use same parameters as you except I do not copy/paste the .h file from the windows to a file but directly generate a file.
 
Member
Joined 2015
Paid Member
I’ve opened a case on TI e2e about weird behaviour of PPC3 V3.1.5 vs V3.1.1.


I also done some real life testing of NeaAMP one my speaker home made last year: two ways with min impedance: 6R, sensitivity: 86dB/2.82V/m.
My PSU bought on AliExpress is a Meanwell NES200-27, 27V.


I’ve played, loud, with windows and gate closed!, some well recorded song : jazz such as Avishay Cohen, classic : Saint Saens Symphony 3, Part 3 with the organ…, Peter Gabriel in your Eyes, some recent daft punk too. To summarize NeatAmp is silent while idle, very powerful, sound very clear event when clipping, it was a very positive experience.


For usual listening 27V is ok , for a party indoor it may be short, at least with my 86dB/2.82V/m (evaluated) speakers.


In addition I haven’t been able to push it to the limits because my software automatically decrease amp volume in two conditions: overheat (level 1) or PSU drop. As clipping and overheat are signalled on same pin (CLIP_OTW) I have to review my overheat threshold in order to avoid false triggering due to clipping.
Without surprise, sustained mid voices (such as peter Gabriel) or sudden strong bass (such as cello or organ) triggered the volume reduction due to sustained clipping. So I would say go for not less than 30V.
 
Thanks for sharing AIM65.


On my side I'm working on a small code to reformat the .h to something similar to your tables. The intention is to easily assess and compare what is produced by PPC3.


I still can't update PPC3. They published on e2e a "said working" mode 1.1 file. I have to test it and then compare with mine to spot the differences.


I played this WE with your DSP_map_V1. Very informative about how the different registers are shared or not between the flows.


Did you get more info from e2e about this incorrect generation of .h ? Or did you found a workaround ?


JMF
 
Member
Joined 2015
Paid Member
Thanks for sharing AIM65.

I played this WE with your DSP_map_V1. Very informative about how the different registers are shared or not between the flows.

JMF


As I’m stuck with PPC3 I still haven’t explore the way the signal flows across the various processing blocks.


For now I haven’t seen any selector which can act as multiplexer in order to change the signal path. For example some flows have equalizer with 12 stages other 15. How the path is changed?, are the 3 stages repurposed ?, how?

I digged in another direction: coefficient format. Process flow document and TI e2e staff tell me that BQ coeff are 1.31 / 2.30 / 1.31 / 2.30 / 1.31 Q format.

  • Using TIBQ I produced 32bits coeff for 1kHz 2nd order Low Pass Butterworth filter @48kHz sample rate, got the results in Hex. Note that TIBQ coeff definition is the same as in TAS3251 Datasheet.
  • Using PPC3, I setup the same filter and get the results in fractional decimal, normalized to 1, I also get the .h file with the corresponding value in Hex.
  • I took the decimal value, then I converted them to Q1.31 format and compared them with the .h file: the results are very close. My conclusion is that the TAS 3251 biquad coefficients are all in 1.31 format at least for the equalizer and except for the 12 and 15 biquads of the 12 and 15 stages process flows respectively.
  • One test is missing to confirm this conclusion: make a real life measurement.
  • TIBQ is a great tool, it’s very simple, straightforward and provide a bode plot of the resulting filter.
Does someone has some insight about coeff format in TAS3251 ?



If you use the XL file, I fixed some issues in it and added some sheet allowing to load coeff in Hex or fractional then generate the core of the .h file.


Chris
 

Attachments

  • DSP_map V2.zip
    230.1 KB · Views: 68
It would be so cool to develop an algorithm that allows you to change the signal path. Then you can choose exactly which blocks you want or dont want to use. Dont know if the chip allows for that though.

Are you sure its 1.31? For the 5825M its 5.27
You can use the I2C signal logger in PPC to see what bytes are sent and if they are the same as your calculation results.
 
Hello AIM65, thanks for the files sent. This will allow me to continue experiments. I used that opportunity to (finally) experiment Python.


I hope to be able soon (slow learning guy) to generate a table csv table with Book-Page-Register-Value (0xXXXXXXXX) starting from the .h generated by PPC3. It will help to compare 2 tables to see the differences and give sense to those.


JMF
 
About the TAS3251, my understanging is the there is only one flow (from the datasheet), but limited computation power. Default values corresponds to "transparent" block. You can configure as many blocks as you want, but I imagine that if there are too many, the computation power is exceeded.


Based on this single flow and the DSP limitations, TI has defined several profiles to cope with major use cases, and that fits in DSP abilities.
 
I still struggle with the Mode 1.1, which is the one I need for my active speakers. It uses the Flow 5 of the datasheet. Crossover uses the "Sub" branch. But the headers generated by PPC3 are not working for the woofer part. I see no obvious cause, and discussion continue on e2e with TI staff.

Mode 2.1 generates a PPC3 error, as it seems one file for that mode is missing in PPC3. Mode 2.2 exhibit same behaviour as Mode 1.1 (somehow logical).

If somebody has experience with the "sub" features of TI DSP, help would be welcomed.

I succeeded as a turnaround to use Mode 2.0 and different biquads for L / R, but in my understanding this does not allows to have the delays between the 2 channels.

JMF
 
Hi,


AIM65 found the trick for the mode 1.1, and now it is working. Small tweak of the PPC3 is needed to have it work. All credits to him on that aspect !


I will do some experiments with the LX-Mini this WE :) DSP is programmed and I just need some work on connections.



JMF
 
So, now the LX-minis are working with the amp. And sounds quite good :)


I had some (small) issues transfering the DSP parameters from miniDSP (reference config) to the TI dsp:
- they have slighly different definition for Peak EQ Q factor,
- PPC3 introduces some limitations in filters programming: Q shall be below 10 for peakEQ, Shelves filters don't have a Q parameter,
- parameters have to be scaled down to have all coefficients below 1, as developped in an application note.


So to stick with LX-mini designer filter, the route was using biquad values as calculated by miniDSP rules, scale them down using TI app note and an spreadsheet, fill PPC3 with those.


This scaling introduces a not well documented by TI "factor" on the gains that has to be compensated at overall channel level (again calculated with spreadsheet). Once all this sorted out, works fine and straight forward :)


Now, it is time to build the other channel, set everything in box, and enjoy.


I just found early heatsink calculations for TPA3251 TPA3251d2

  • worst case: 0.85°C/W
  • for Irms (sinus power) with Imax = 14A: 2.1°C/W
  • normal use, with an estimated program factor of 0.5: 9.5°C/W
This explains why my really small steel stuff does not gets so hot when playing music at normal listening level.


JMF
 
Hi,


So the boards are working well. Software base is available. DSP is operational.



This is a perfect set-up for active speakers. All integrated I2S input => DSP => DAC => Amp.



Onboard uC possible to program using Stm32 IDE or Arduino. Can beused to control the board, load DSP configuration, drive Volume, screen... Onboard Eeprom for multiple configuration storage... Fully Open platform.



For those interested, I have partially populated boards:
- 2 boards for sure,
- 2 boards normally booked for Capt Grogg (but I only have news from time to time ; let's give two more weeks)


Price: 30$ per partially board + Shipping


The cost of "remaining components" to add is about 60€ for one board with ordering to Digikey (without shipping costs, remaining small SMDs, pinhead headers). The cost derives mainly from, by importance rank:
- output coils (26€),
- TAS3251 (12€),
- Heatsink (6.3€),
- Speakers and power supply connectors (5.3€)


If interested, let me know.


JMF
 
If I want to add a VU meter for L/R channel, can the VM meter be connect in parallel with the speaker out, or add to the TAS3251 DAC output?
I don't have any idea about VU meter.
Is there a VU meter driver IC available on the market?

thanks.
 

Attachments

  • vc.jpg
    vc.jpg
    302 KB · Views: 368