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.

TAS3108 - 2x AD1862/channel - sum 21 bit?

Other Parts Discussed in Thread: TAS3108

Hello,
I want to 21-bit converter build.
2x 20 bit AD1862/channel (TAS3108: 4xRJ20 bit output, MONO MODE)
I have TAS3108 framework. (Purepath Studio GDE, Purepath IDE)
but it is difficult to understand the DSP programming

I need one part of the program.
.....

  • OK, just 21 bit.  

    Volume -1dB, no overflow! Only one DAC receives

    But this code is so good?

    --------------------------------------------------------------------------------
    -- Name: %%prop(InstanceId) - OnemX-cserelt
    -- Properties: AD1862 - 21 bit
    -- * InstanceId: %%prop(InstanceId)
    --------------------------------------------------------------------------------
    -- Note this code uses a global constant - ONE = 1.0F

    -- Port definitions mapping the component ports to variables
    .port %%prop(InstanceId).Ch1_In %%prop(InstanceId)_Adat_be
    .port %%prop(InstanceId).Ch1_Out %%prop(InstanceId)_Adat_ki

    -- Data
    .data %%prop(InstanceId)_Adat_be
    .data %%prop(InstanceId)_Adat_ki
    .data %%prop(InstanceId)_TotoW_LSB =0x00001000
    .data %%prop(InstanceId)_ZERO =0x00000000
    .data %%prop(InstanceId)_Xplusz1

    -- Component code
    NOP | CLRACC | LD(%%prop(InstanceId)_Adat_be,B) | NOP | NOP
    THRU(B) | NOP | LD(%%prop(InstanceId)_TotoW_LSB,L) | NOP | NOP
    THRU(L) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,LR,NONE,B) | NOP | NOP | NOP
    NOP | NOP | NOP | NOP | ST(B,DATA,%%prop(InstanceId)_Xplusz1)
    NOP | NOP | NOP | NOP | NOP
    NOP | CLRACC | LD(%%prop(InstanceId)_Adat_be,B) | NOP | NOP 
    SHR(4) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP 
    SHR(4) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHR(4) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHR(4) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHR(4) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHR(4) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHR(3) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHL(20) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHL(20) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHL(4) | NOP | NOP | NOP | NOP 
    NOP | ADD(BR,ZERO,NONE,B) | NOP | NOP | NOP
    SHL(3) | NOP | NOP | NOP | NOP 
    NOP | NOP | LD(%%prop(InstanceId)_ZERO,L) | NOP | NOP 
    THRU(L) | NOP | NOP | NOP | NOP 
    NOP | COMP(BR, LR) | NOP | NOP | NOP 
    NOP | NOP | NOP | NOP | NOP 
    NOP | NOP | LNC(%%prop(InstanceId)_Adat_be,MD) | NOP | NOP
    NOP | NOP | LDC(%%prop(InstanceId)_Xplusz1,MD) | NOP | NOP
    NOP | NOP | NOP | NOP | ST(MD,DATA,%%prop(InstanceId)_Adat_ki)
    NOP | NOP | NOP | NOP | NOP
    --
    -- End %%prop(InstanceId)
    --

  • Volume -1dB, no overflow! Only one DAC receives

    But this code is so good?

    V2 version:
    --------------------------------------------------------------------------------
    -- Name: %%prop(InstanceId) - OnemX-cserelt
    -- Properties: AD1862 - 21 bit
    -- * InstanceId: %%prop(InstanceId)
    --------------------------------------------------------------------------------
    -- Note this code uses a global constant - ONE = 1.0F

    -- Port definitions mapping the component ports to variables
    .port %%prop(InstanceId).Ch1_In %%prop(InstanceId)_Adat_be
    .port %%prop(InstanceId).Ch1_Out %%prop(InstanceId)_Adat_ki

    -- Data
    .data %%prop(InstanceId)_Adat_be
    .data %%prop(InstanceId)_Adat_ki
    .data %%prop(InstanceId)_TotoW_LSB =0x00001000
    .data %%prop(InstanceId)_ZERO =0x00000000
    .data %%prop(InstanceId)_Xplusz1

    -- Component code
    NOP | CLRACC | LD(%%prop(InstanceId)_Adat_be,B) | NOP | NOP
    THRU(B) | NOP | LD(%%prop(InstanceId)_TotoW_LSB,L) | NOP | NOP
    THRU(L) | NOP | NOP | NOP | NOP
    NOP | ADD(BR,LR,NONE,B) | NOP | NOP | NOP
    NOP | NOP | NOP | NOP | ST(B,DATA,%%prop(InstanceId)_Xplusz1)
    NOP | NOP | NOP | NOP | NOP
    NOP | NOP | LD(%%prop(InstanceId)_Adat_be,B) | NOP | NOP
    SHL(20) | NOP | NOP | NOP | NOP
    NOP | NOP | LD(%%prop(InstanceId)_ZERO,L) | NOP | NOP
    THRU(L) | NOP | NOP | NOP | NOP
    NOP | COMP(BR, LR) | NOP | NOP | NOP
    NOP | NOP | NOP | NOP | NOP
    NOP | NOP | LNC(%%prop(InstanceId)_Adat_be,MD) | NOP | NOP
    NOP | NOP | LDC(%%prop(InstanceId)_Xplusz1,MD) | NOP | NOP
    NOP | NOP | NOP | NOP | ST(MD,DATA,%%prop(InstanceId)_Adat_ki)
    NOP | NOP | NOP | NOP | NOP
    --
    -- End %%prop(InstanceId)
    --