Kindly let us know whether SPDIF output can be directly routed to DSP without using ASRC or Is it possible to bypass the ASRC with using register setting in 1452.
Our requirement is that input data from SPDIF out has be bit matched for DSP processing with original input used for pumping.
Sorry for the delay. I thought someone had contacted you directly to give you the information. It is good to have this on the forum so here is how to do it.
The audio data from the SPDIF…
I do not understand what "pumping" is for the context you used the term? However, I do not need to know to answer your question.
The part is capable of directly feeding the SPDIF data to the core but we removed the functionality in SigmaStudio shortly after we released the part. The reason why is that it is not a stable way to run the part. The Start Pulse has to be set to the SPDIF input to prevent lost samples and repeated samples. The problem with that is when the SPDIF looses lock the part stops dead in its tracks without a start pulse. There is nothing you can do in the DSP code to capture that and switch over to another clock source because the core is not running the program. The outputs all stop as well and even if you use an ASRC on the output serial data the source of the data will stop and you will get DC out of the ASRC.
There are very few applications where this behavior is tolerable so we removed the cell that allows you to grab the data directly.
So is the source of other data in your system synchronous to the SPDIF data? In that case you could set the start pulse to this other clock source and grab the data from the SPDIF. This would have to be done in custom code or a custom DLL to give you access to that data. Contact me directly using my Analog email address.
Thanks for feedback.
>>So is the source of other data in your system synchronous to the SPDIF data?
Currently, we are using SPDIF source alone to the system, no other additional sources are used. Kindly let me know, the procedure for creating custom code to access SPDIF data directly.
Sorry, We don't have your email address for contact directly. Kindly share to communicate further via email
>>what "pumping" is for the context you used the term?
"Pumping" , We mean that an input data to DSP from Optical SPDIF device.
I will send you an email once I get more info. I did talk to the designer and he insisted that it does not stop the clocks when the SPDIF receiver PLL loses lock. It just goes back to its natural rate around 48kHz. I need to investigate further and then update my previous post that now looks like was in error. In the next few days I should be able to get to this.
Thanks for reply. Kindly let us know your feedback further if you have.
Thanks & Regards,
Please let us know your feedback for above query.
Through custom DLL, Is it possible to route the SPDIF output to SigmaDSP without ASRC?
Please let us know your feedback for this query.
The audio data from the SPDIF receiver shows up at two memory locations that the core can access. There is a Register Read block that will read a register every sample period but the issue is that it is limited by the SigmaStudio compiler to only access the valid register space which does not include the address of the SPDIF receiver's audio data.
There is a way to work around this and it has to be done at run-time and not compile time.
Here is what needs to be done:
Drag in the Register Read Block into the project. It is found in the Basic DSP->DSP Functions
Then grow the cell to have two addresses. It will look like this:
I am showing this going directly to an output but you can process this signal just like any other signal in the DSP.
Note that the default addresses are 0xF000. Leave it as the default, we will change it during runtime.
To change the addresses to the correct addresses for the SPDIF data you will use a Parameter Update block which is found in the same place you found the Register Read block .
Drag it into the project and grow it to two channels.
Drag in two DC cells to hold the addresses of the SPDIF Audio Data.
It will look like this:
The two addresses are 0xFC70 and 0xFC71 for the left and right channel data.
Next you have to setup the Parameter Update to update the address fields of the Register Read block.
But first the update cell needs to know what the blocks are in the project so you have to compile the project to populate the fields. Then click on the Select button.
Since the parameter Update has two inputs, there will be two selections in the Control Index pull down block.
So for Parameter 1 you point it to the Register Read Address 0.
For parameter 2 you point to the Register Read Address 1.
Sorry, for the abrupt end to this post. I cannot insert a picture in this location for some reason. It always inserts the picture at the top of the post!! So I will continue this on the next post.
Continuation of the previous post. (Note, I even tried to edit the last post and it still would not cooperate!
It still placed it at the top!!
OK, to continue,
Fill in the fields to look like the picture above. Then click on Link Compile Download and at runtime the addresses in the DC cells will be placed into the register read cells.
Thank you for feedback. We will check the above method.