This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TAS3251: TAS3251 Clock Setup for DSP Processing

Part Number: TAS3251

Hello,

We are running 96 kHz audio through the TAS3251 using the internal DSP (a small number of filters: low-pass, peaking, and all-pass).

As per the datasheet (96KhZ, R=128), the recommended clocking for 96 kHz operation (see attached table) specifies a DSP clock of 49.152 MHz. However, with the DSP clock set to 49.152 MHz the audio sounds incoherent. 

When we instead run the DSP clock at 98.304 MHz, the audio and DSP processing behave as expected. The DAC, OSR, and NCP clocks are derived from these clocks. With the clocks configured as prescribed, we observe audible aliasing artefacts.

Manipulating the clock configuration (changing divisors or base frequencies) changes the character of the artefacts, but does not eliminate them.

The only way we have found to fully remove the aliasing is to reset all clocks, which unfortunately reintroduces pops and clicks.

We are therefore looking for guidance on:
- The correct clocking strategy for 96 kHz audio with internal DSP enabled
- Whether the DSP clock is expected to run at 49.152 MHz or 98.304 MHz for this use case
- How to avoid aliasing while still maintaining pop-/click-free operation

Screenshot from 2026-01-05 13-53-38.png

  • Hi Ragasudha,

    If your ratios and coefficients are the same as shown in the table the DSP CLK should operate at 49.152Mhz. 
    Did you configure the device via your own I2C script or did you use the PPC3 GUI to generate the script?

    Either way can you share the script? 

    Regards,

    Sebastian 

  • Hi Sebastian,

    We are generating DSP coefficients for the DP processing from the PPC3 Software. I am attaching the script we are using to program the registers based off of what we have generated from the PPC3.

    For the actual clock setup we are manually programming with these values via the corresponding registers.

    /* PLLCLK = (MCLK * R * J.D) / P
    *
    * Target frequencies:
    * PLLCLK: 98.304MHz
    * DSPCLK: 98.304MHz (datasheet: 49.152MHz)
    * DACCLK: 6.144MHz = PLLCLK / 16
    * OSRCLK: 1.536MHz = DACCLK / 4
    * NCPCLK: 1.536MHz = DACCLK / 4
    *
    * R = 1; J.D = 16.0; P = MCLK / 6.144MHz
    */


    This configuration works correctly with the internal DSP processing enabled. However, when we change the DSP clock to 49.152 MHz, the processing no longer works as expected.

    When using the auto clock configuration, we do not observe this issue. However, we do not have visibility into how the clocks are being configured in auto mode, which makes it difficult to understand the discrepancy.

  • ti,init-data = [
    //	00 00	// page 0
    //	7f 00	// book 0
    //	02 11	// standby mode, powerdown
    //	01 10	// reset modules
    //	00 00
    //	00 00
    //	00 00
    //	00 00
    //	03 11	// mute
    //	2a 00	// path to mute
    //	25 18	// ignore MCLK, MCLK halt
    //	0d 10	// DSP clock: PLL reference is SCLK
    //	02 00	// normal op
    
    //	00 00	// page 0
    //	7f 00	// book 0
    //	02 80	// DSP reset
    
    //	00 00	// page 0
    //	7f 00	// book 0
    
    //	22 04	// FSSP (input rate)
    
    //	00 00	// page 0
    //	7f 00	// book 0
    //	02 00	// normal op
    
    	/* write co-efficients */
    	00 00	// page 0
    	7f 8c
    	00 1e
    	1c 00
    	1d 00
    	1e 00
    	1f 00
    	28 00
    	29 00
    	2a 00
    	2b 00
    	34 00
    	35 00
    	36 00
    	37 00
    	40 00
    	41 00
    	42 00
    	43 00
    	00 1f
    	24 00
    	25 20
    	26 c4
    	27 9c
    	30 7f
    	31 ff
    	32 ff
    	33 ff
    	00 00
    	7f 8c
    	00 13
    	30 7f
    	31 ff
    	32 ff
    	33 ff
    	34 00
    	35 00
    	36 00
    	37 00
    	38 00
    	39 00
    	3a 00
    	3b 00
    	3c 00
    	3d 00
    	3e 00
    	3f 00
    	40 00
    	41 00
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 13
    	58 63
    	59 f3
    	5a 42
    	5b 42
    	5c 9c
    	5d 0c
    	5e bd
    	5f be
    	60 63
    	61 f3
    	62 42
    	63 42
    	64 62
    	65 37
    	66 c5
    	67 4f
    	68 b4
    	69 a2
    	6a 81
    	6b 92
    	00 00
    	7f 8c
    	00 14
    	08 7e
    	09 57
    	0a 3c
    	0b 88
    	0c 81
    	0d a8
    	0e c3
    	0f 78
    	10 7e
    	11 57
    	12 3c
    	13 88
    	14 7e
    	15 55
    	16 d9
    	17 d6
    	18 83
    	19 4e
    	1a c1
    	1b 8d
    	00 00
    	7f 8c
    	00 14
    	1c 01
    	1d bb
    	1e 7c
    	1f f4
    	20 01
    	21 bb
    	22 7c
    	23 f4
    	24 01
    	25 bb
    	26 7c
    	27 f4
    	28 62
    	29 37
    	2a c5
    	2b 4f
    	2c b4
    	2d a2
    	2e 81
    	2f 92
    	00 00
    	7f 8c
    	00 16
    	1c 7f
    	1d ff
    	1e ff
    	1f ff
    	20 00
    	21 00
    	22 00
    	23 00
    	24 00
    	25 00
    	26 00
    	27 00
    	28 00
    	29 00
    	2a 00
    	2b 00
    	2c 00
    	2d 00
    	2e 00
    	2f 00
    	00 00
    	7f 8c
    	00 16
    	30 7f
    	31 ff
    	32 ff
    	33 ff
    	34 00
    	35 00
    	36 00
    	37 00
    	38 00
    	39 00
    	3a 00
    	3b 00
    	3c 00
    	3d 00
    	3e 00
    	3f 00
    	40 00
    	41 00
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 16
    	44 7f
    	45 ff
    	46 ff
    	47 ff
    	48 00
    	49 00
    	4a 00
    	4b 00
    	4c 00
    	4d 00
    	4e 00
    	4f 00
    	50 00
    	51 00
    	52 00
    	53 00
    	54 00
    	55 00
    	56 00
    	57 00
    	00 00
    	7f 8c
    	00 16
    	58 7f
    	59 ff
    	5a ff
    	5b ff
    	5c 00
    	5d 00
    	5e 00
    	5f 00
    	60 00
    	61 00
    	62 00
    	63 00
    	64 00
    	65 00
    	66 00
    	67 00
    	68 00
    	69 00
    	6a 00
    	6b 00
    	00 00
    	7f 8c
    	00 16
    	6c 7f
    	6d ff
    	6e ff
    	6f ff
    	70 00
    	71 00
    	72 00
    	73 00
    	74 00
    	75 00
    	76 00
    	77 00
    	78 00
    	79 00
    	7a 00
    	7b 00
    	7c 00
    	7d 00
    	7e 00
    	7f 00
    	00 00
    	7f 8c
    	00 17
    	08 7f
    	09 ff
    	0a ff
    	0b ff
    	0c 00
    	0d 00
    	0e 00
    	0f 00
    	10 00
    	11 00
    	12 00
    	13 00
    	14 00
    	15 00
    	16 00
    	17 00
    	18 00
    	19 00
    	1a 00
    	1b 00
    	00 00
    	7f 8c
    	00 17
    	1c 7f
    	1d ff
    	1e ff
    	1f ff
    	20 00
    	21 00
    	22 00
    	23 00
    	24 00
    	25 00
    	26 00
    	27 00
    	28 00
    	29 00
    	2a 00
    	2b 00
    	2c 00
    	2d 00
    	2e 00
    	2f 00
    	00 00
    	7f 8c
    	00 17
    	30 7f
    	31 ff
    	32 ff
    	33 ff
    	34 00
    	35 00
    	36 00
    	37 00
    	38 00
    	39 00
    	3a 00
    	3b 00
    	3c 00
    	3d 00
    	3e 00
    	3f 00
    	40 00
    	41 00
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 17
    	44 7f
    	45 ff
    	46 ff
    	47 ff
    	48 00
    	49 00
    	4a 00
    	4b 00
    	4c 00
    	4d 00
    	4e 00
    	4f 00
    	50 00
    	51 00
    	52 00
    	53 00
    	54 00
    	55 00
    	56 00
    	57 00
    	00 00
    	7f 8c
    	00 17
    	58 7f
    	59 ff
    	5a ff
    	5b ff
    	5c 00
    	5d 00
    	5e 00
    	5f 00
    	60 00
    	61 00
    	62 00
    	63 00
    	64 00
    	65 00
    	66 00
    	67 00
    	68 00
    	69 00
    	6a 00
    	6b 00
    	00 00
    	7f 8c
    	00 17
    	6c 7f
    	6d ff
    	6e ff
    	6f ff
    	70 00
    	71 00
    	72 00
    	73 00
    	74 00
    	75 00
    	76 00
    	77 00
    	78 00
    	79 00
    	7a 00
    	7b 00
    	7c 00
    	7d 00
    	7e 00
    	7f 00
    	00 00
    	7f 8c
    	00 18
    	08 08
    	09 00
    	0a 00
    	0b 00
    	0c 00
    	0d 00
    	0e 00
    	0f 00
    	10 00
    	11 00
    	12 00
    	13 00
    	14 00
    	15 00
    	16 00
    	17 00
    	18 00
    	19 00
    	1a 00
    	1b 00
    	00 00
    	7f 8c
    	00 18
    	58 00
    	59 03
    	5a a6
    	5b d9
    	5c 00
    	5d 03
    	5e a6
    	5f d9
    	60 00
    	61 03
    	62 a6
    	63 d9
    	64 7e
    	65 15
    	66 1f
    	67 12
    	68 83
    	69 c7
    	6a 26
    	6b 78
    	00 00
    	7f 8c
    	00 18
    	6c 00
    	6d 03
    	6e a6
    	6f d9
    	70 00
    	71 03
    	72 a6
    	73 d9
    	74 00
    	75 03
    	76 a6
    	77 d9
    	78 7e
    	79 15
    	7a 1f
    	7b 12
    	7c 83
    	7d c7
    	7e 26
    	7f 78
    	00 00
    	7f 8c
    	00 19
    	08 7f
    	09 4b
    	0a 87
    	0b 53
    	0c 81
    	0d ba
    	0e 43
    	0f f2
    	10 7d
    	11 7b
    	12 c2
    	13 2a
    	14 7e
    	15 45
    	16 bc
    	17 0e
    	18 83
    	19 38
    	1a b6
    	1b 82
    	00 00
    	7f 8c
    	00 19
    	1c 7e
    	1d 3d
    	1e 17
    	1f 8a
    	20 80
    	21 fd
    	22 8e
    	23 1f
    	24 7f
    	25 ff
    	26 ff
    	27 ff
    	28 7f
    	29 02
    	2a 71
    	2b e1
    	2c 81
    	2d c2
    	2e e8
    	2f 76
    	00 00
    	7f 8c
    	00 19
    	30 7f
    	31 ff
    	32 ff
    	33 ff
    	34 00
    	35 00
    	36 00
    	37 00
    	38 00
    	39 00
    	3a 00
    	3b 00
    	3c 00
    	3d 00
    	3e 00
    	3f 00
    	40 00
    	41 00
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 19
    	44 7f
    	45 ff
    	46 ff
    	47 ff
    	48 00
    	49 00
    	4a 00
    	4b 00
    	4c 00
    	4d 00
    	4e 00
    	4f 00
    	50 00
    	51 00
    	52 00
    	53 00
    	54 00
    	55 00
    	56 00
    	57 00
    	00 00
    	7f 8c
    	00 19
    	58 7f
    	59 ff
    	5a ff
    	5b ff
    	5c 00
    	5d 00
    	5e 00
    	5f 00
    	60 00
    	61 00
    	62 00
    	63 00
    	64 00
    	65 00
    	66 00
    	67 00
    	68 00
    	69 00
    	6a 00
    	6b 00
    	00 00
    	7f 8c
    	00 19
    	6c 7f
    	6d ff
    	6e ff
    	6f ff
    	70 00
    	71 00
    	72 00
    	73 00
    	74 00
    	75 00
    	76 00
    	77 00
    	78 00
    	79 00
    	7a 00
    	7b 00
    	7c 00
    	7d 00
    	7e 00
    	7f 00
    	00 00
    	7f 8c
    	00 1a
    	08 7f
    	09 ff
    	0a ff
    	0b ff
    	0c 00
    	0d 00
    	0e 00
    	0f 00
    	10 00
    	11 00
    	12 00
    	13 00
    	14 00
    	15 00
    	16 00
    	17 00
    	18 00
    	19 00
    	1a 00
    	1b 00
    	00 00
    	7f 8c
    	00 1a
    	1c 7f
    	1d ff
    	1e ff
    	1f ff
    	20 00
    	21 00
    	22 00
    	23 00
    	24 00
    	25 00
    	26 00
    	27 00
    	28 00
    	29 00
    	2a 00
    	2b 00
    	2c 00
    	2d 00
    	2e 00
    	2f 00
    	00 00
    	7f 8c
    	00 1a
    	30 7f
    	31 ff
    	32 ff
    	33 ff
    	34 00
    	35 00
    	36 00
    	37 00
    	38 00
    	39 00
    	3a 00
    	3b 00
    	3c 00
    	3d 00
    	3e 00
    	3f 00
    	40 00
    	41 00
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 1a
    	44 08
    	45 00
    	46 00
    	47 00
    	48 00
    	49 00
    	4a 00
    	4b 00
    	4c 00
    	4d 00
    	4e 00
    	4f 00
    	50 00
    	51 00
    	52 00
    	53 00
    	54 00
    	55 00
    	56 00
    	57 00
    	00 00
    	7f 8c
    	00 1a
    	58 00
    	59 71
    	5a 94
    	5b 9a
    	00 00
    	7f 8c
    	00 1a
    	6c 00
    	6d 03
    	6e 69
    	6f c5
    	70 00
    	71 01
    	72 5d
    	73 85
    	74 00
    	75 01
    	76 b4
    	77 e5
    	78 00
    	79 00
    	7a 00
    	7b 00
    	7c 00
    	7d 00
    	7e 00
    	7f 00
    	00 00
    	7f 8c
    	00 1b
    	08 00
    	09 00
    	0a 00
    	0b 00
    	0c f9
    	0d da
    	0e bc
    	0f 21
    	10 fc
    	11 58
    	12 8b
    	13 89
    	14 00
    	15 00
    	16 00
    	17 00
    	18 00
    	19 00
    	1a 00
    	1b 00
    	00 00
    	7f 8c
    	00 1b
    	1c 00
    	1d 03
    	1e 69
    	1f c5
    	20 00
    	21 01
    	22 5d
    	23 85
    	24 00
    	25 01
    	26 b4
    	27 e5
    	28 00
    	29 00
    	2a 00
    	2b 00
    	2c 00
    	2d 00
    	2e 00
    	2f 00
    	30 00
    	31 00
    	32 00
    	33 00
    	34 f9
    	35 da
    	36 bc
    	37 21
    	38 fc
    	39 58
    	3a 8b
    	3b 89
    	3c 00
    	3d 00
    	3e 00
    	3f 00
    	40 00
    	41 00
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 1b
    	44 00
    	45 03
    	46 69
    	47 c5
    	48 00
    	49 01
    	4a 5d
    	4b 85
    	4c 00
    	4d 01
    	4e b4
    	4f e5
    	50 00
    	51 00
    	52 00
    	53 00
    	54 00
    	55 00
    	56 00
    	57 00
    	58 00
    	59 00
    	5a 00
    	5b 00
    	5c f9
    	5d da
    	5e bc
    	5f 21
    	60 fc
    	61 58
    	62 8b
    	63 89
    	64 00
    	65 00
    	66 00
    	67 00
    	68 00
    	69 00
    	6a 00
    	6b 00
    	00 00
    	7f 8c
    	00 1d
    	2c 00
    	2d 80
    	2e 00
    	2f 00
    	00 00
    	7f 8c
    	00 1d
    	34 40
    	35 00
    	36 00
    	37 00
    	00 00
    	7f 8c
    	00 1d
    	38 40
    	39 00
    	3a 00
    	3b 00
    	00 00
    	7f 8c
    	00 1d
    	40 00
    	41 80
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 1d
    	44 00
    	45 00
    	46 00
    	47 00
    	00 00
    	7f 8c
    	00 1d
    	48 00
    	49 00
    	4a 00
    	4b 00
    	00 00
    	7f 8c
    	00 1d
    	5c 00
    	5d 80
    	5e 00
    	5f 00
    	00 00
    	7f 8c
    	00 1d
    	60 00
    	61 00
    	62 00
    	63 00
    	00 00
    	7f 8c
    	00 1d
    	64 00
    	65 00
    	66 00
    	67 00
    	00 00
    	7f 8c
    	00 1d
    	68 00
    	69 80
    	6a 00
    	6b 00
    	00 00
    	7f 8c
    	00 1e
    	14 00
    	15 80
    	16 00
    	17 00
    	00 00
    	7f 8c
    	00 1e
    	18 00
    	19 00
    	1a 00
    	1b 00
    	00 00
    	7f 8c
    	00 1e
    	1c 00
    	1d 00
    	1e 00
    	1f 00
    	00 00
    	7f 8c
    	00 1e
    	20 00
    	21 00
    	22 00
    	23 00
    	00 00
    	7f 8c
    	00 1e
    	24 00
    	25 80
    	26 00
    	27 00
    	00 00
    	7f 8c
    	00 1e
    	28 00
    	29 00
    	2a 00
    	2b 00
    	00 00
    	7f 8c
    	00 1e
    	2c 00
    	2d 80
    	2e 00
    	2f 00
    	00 00
    	7f 8c
    	00 1e
    	30 00
    	31 00
    	32 00
    	33 00
    	00 00
    	7f 8c
    	00 1e
    	34 00
    	35 00
    	36 00
    	37 00
    	00 00
    	7f 8c
    	00 1e
    	38 00
    	39 00
    	3a 00
    	3b 00
    	00 00
    	7f 8c
    	00 1e
    	3c 00
    	3d 80
    	3e 00
    	3f 00
    	00 00
    	7f 8c
    	00 1e
    	40 00
    	41 00
    	42 00
    	43 00
    	00 00
    	7f 8c
    	00 1e
    	44 00
    	45 80
    	46 00
    	47 00
    	00 00
    	7f 8c
    	00 1e
    	48 00
    	49 80
    	4a 00
    	4b 00
    	00 00
    	7f 8c
    	00 1f
    	14 00
    	15 ce
    	16 c0
    	17 8a
    	00 00
    	7f 8c
    	00 1f
    	18 05
    	19 1f
    	1a 97
    	1b 37
    	00 00
    	7f 8c
    	00 1f
    	1c 00
    	1d 01
    	1e b4
    	1f e8
    	00 00
    	7f 8c
    	00 1f
    	20 40
    	21 00
    	22 00
    	23 00
    	00 00
    	7f 8c
    	00 1f
    	28 7a
    	29 e0
    	2a 68
    	2b c9
    	00 00
    	7f 8c
    	00 1f
    	2c 00
    	2d 00
    	2e 2b
    	2f b1
    
    	00 00
    	7f 8c
    	00 23
    	14 00
    	15 00
    	16 00
    	17 01
    
    //	00 00	// page 0
    //	7f 00	// book 0
    //	00 00	// page 0
    //	07 00	// SDOUT -> DSP output
    //	08 20	// SDOUT output
    //	55 07	// serial audio interface data
    //	00 00	// page 0
    //	7f 00	// book 0
    //	00 00	// page 0
    //	3d 30	// volume left
    //	3e 30	// volume right
    	00 00	// page 0
    	7f 00	// book 0
    	00 01	// page 1
    	02 02	// ??
    
    	00 00	// page 0
    	7f 00	// book 0
    //	03 00	// unmute
    //	2a 11	// channel map
    ];

  • Hi Ragasudha,

    I noticed the PLL divider P factor value should be set to 2 but in the script this value is set to 1. 

    Could you provide the script in .cfg file or the PPC3 file? You can export a .cfg file through PPC3 using the end system integration.

    I can then make adjustments and test this on the TAS3251EVM. 

    Regards,

    Sebastian

  • Hi Sebastian, so we are not using the PPC3 generated config directly in our system. It is only being used to configure the DSP coefficients for audio processing-  and any other clock configuration is done by us manually.

    We are not using the default SCLK, but setting up our MCLK manually to: 24.576MHz (R = 256, P=4) and basing any further clock configuration off of this at 96kHz.

    /* PLLCLK = (MCLK * R * J.D) / P
    *
    * Target frequencies:
    * PLLCLK: 98.304MHz
    * DSPCLK: 98.304MHz (datasheet: 49.152MHz)
    * DACCLK: 6.144MHz = PLLCLK / 16
    * OSRCLK: 1.536MHz = DACCLK / 4
    * NCPCLK: 1.536MHz = DACCLK / 4
    *
    * R = 1; J.D = 16.0; P = MCLK / 6.144MHz
    */



    This is being done by direct register sets in the code:

    /* set PLL */
    snd_soc_component_update_bits(component, TAS3251_14_PLL_P, 0x0f, p - 1);
    snd_soc_component_update_bits(component, TAS3251_15_PLL_J, 0x3f, 16);
    snd_soc_component_update_bits(component, TAS3251_16_PLL_D(0), 0x3f, 0);
    snd_soc_component_update_bits(component, TAS3251_16_PLL_D(1), 0xff, 0);
    snd_soc_component_update_bits(component, TAS3251_18_PLL_R, 0x0f, 0);
    
    /* set dividers */
    snd_soc_component_update_bits(component, TAS3251_1B_DSP_DIV, 0x7f, 0);
    snd_soc_component_update_bits(component, TAS3251_1C_DAC_DIV, 0x7f, 15);
    snd_soc_component_update_bits(component, TAS3251_1D_NCP_DIV, 0x7f, 3);
    snd_soc_component_update_bits(component, TAS3251_1E_OSR_DIV, 0x7f, 3);
    
    /* DSP clock source: PLL; PLL clock source: MCLK */
    snd_soc_component_update_bits(component, TAS3251_0D_PLL_CLOCK, 0x17, 0x01);
    
    /* DAC clock source: PLL; OSR clock source: DAC */
    snd_soc_component_update_bits(component, TAS3251_0E_DAC_OSR_CLOCK, 0x77, 0x10);
    
    /* NCP clock source: DAC */
    snd_soc_component_update_bits(component, TAS3251_0F_NCP_CLOCK, 0x07, 0x00);
    
    /* disable clock autoset, ignore SCLK and FS detection */
    snd_soc_component_update_bits(component, TAS3251_25_CLOCK_DETECT, 0xff, 0x62);


    Is this something you would be able to emulate on your end?

  • Hi Ragasudha,

    We are not familiar with how your soc code works so we can't provide much support there.

    Taking a quick glance at the code it looks like you're setting the PLL D multiplication factor to 0? 

    I tried testing this with the 96KhZ, R=128 settings you mentioned on our EVM and did not run into the same issue. 

    Regards,

    Sebastian