ADAT Lightpipe with Serial Port and external Logic
Heiio community,
I want to send 8 audio channels via ADAT from a sigma DSP to PC.
After reading this discussion https://ez.analog.com/dsp/sharc-processors/f/q-a/61533/sport-and-adat I came up with an idea how it might be achieved, but I am a little stuck in the middle.
A TDM8 stream and an ADAT Frame both hold 256 bits. My idea is to use bit manipulation to create a 256 dataword and use some external logic to the NRZI signal. My schematic locks like this.
In sigma studio I first prepare the 24 bit audio samples by bit shifting, masking and adding 1 every fifth bit.
Channel_Preparation.dspproj
The resulting datawords are 30 bits wide. This seems to work as expected. I tested this algorithm with DC inputs and the readback block.
Unfortunately the ADAT frame consits of a 16 bit Header and 8 30bit datawords, as can be seen here: https://ackspace.nl/wiki/ADAT_project
Therefore I need a lot of bit manipulations to get the bits to the correct positions.
ADAT_1466.dspproj
Here seems to be a problem. It seems to be a problem if the MSB in the 32 bit word is a 1. All the readbacks show the expected result except "channel 6" The readback shows 7F FF FF FF instead of 84 21 08 42
Interestingly the readback block has no problem to show this number when it is coming directly from the DC Source, but it shows the wrong result when the number is calculated by a bitshift, as you can see in the screenshot.
Do you have any idea how to get around this issue?
Best regards
Alex
adat optical
Audio Signal Processors
Number formats
software
sigma studio 4.7
External logic
SigmaDSP Audio Processors
adat
ADAT Lightpipe
adau1466
Show More
Hello Alex,
I have just responded to your other post; this post was in moderation and just got approved. So, I can see some details here now. we can continue discussing here.
I will have a look at your project and application and get back to you.
Regards,
Harish
Hello Alex,
Thanks for the info. I had responded to your other post to show how I had done some bit manipulation in this older post:
(+) How to increase Delay time? - Q&A - SigmaDSP Processors & SigmaStudio Dev. Tool - EngineerZone
But, I do not think you will be able to get an ADAT output without using an FPGA.
I will give this some thought....
Dave T
Hi Dave and Harish,
thank you both for your answer. In the meantime I found a solution, albeit it is rather expensive on instructions.
Instead of shifting the desired Bits to the MSB I shift them towards the LSB and use a Look-up table to set the MSB. THis works fine so far.
I have to take some time to understand Daves program, but it is a neat idea.
Regarding ADAT I am quite positve, that it will work. The task of the DSP program is only to set up the bitstream. An ADAT frame hast 256 bits. The same length as a TDM8 frame. The NRZI needs to be created by external logic. Actually I got it working with the above mentioned schematic, however the lock was unstable. I suspect, that I have to optimize the timings a little bit. I had only HC logic at hand and the propagation delays are significant. Since this is a personal project, I do not have all the tools at hand I have at work...
However a logic analyzer is on the way
I will keep you posted.
Best regards
Alex
So I got it to work now. After double checking the the schematic I realized, that I had to connect set and reset to VCC.Furthermore I had to add a logic gate to the BCK line to match the propagation delay.
Now it works with a generator. I think I have to do some more testing and the programm certainly needs a bit of optimising, but I have a stable lock now.
I attached the programm for your reference.
Best regards
Alex
ADAT_1466_LUT.dspproj
Hello Alex,
Great work! This is tricky. I will have a look at your program when I get some time. Things have been a bit busy for me at the moment.
Dave T
Please log in to reply.


