chilidawg
Well-known member
- Joined
- Nov 27, 2013
- Messages
- 184
Nevermind, I got it working! 8)
The correct way is as described in the PDF file ADAT 96K Optical Addendum which you can get from Wavefront.
I finally get to the point in my FPGA ADAT receiver development where I want to add SMUX capability.
Let say, I have these 8 logic vectors which contain the 24 bit channel data.
signal audio0 : std_logic_vector(23 downto 0);
signal audio1 : std_logic_vector(23 downto 0);
signal audio2 : std_logic_vector(23 downto 0);
signal audio3 : std_logic_vector(23 downto 0);
signal audio4 : std_logic_vector(23 downto 0);
signal audio5 : std_logic_vector(23 downto 0);
signal audio6 : std_logic_vector(23 downto 0);
signal audio7 : std_logic_vector(23 downto 0);
From what I can understand about S/MUX, I will get 4 channel, which are:
audio0 + audio1 = channel0
audio2 + audio3 = channel1
audio4 + audio5 = channel2
audio6 + audio7 = channel3
And I will also have to generate the 88.2/96 KHz rate for I2S master clock (MCLK), I2S bit (serial) clock (BCLK/SCLK), and I2S word clock (LRCLK/WCLK) that I transmit together with the new channel data.
So, my question in regards to combining the bits; is it by arranging them in an odd-even interleaving manner?
Something like:
signal channel0 : std_logic_vector(46 downto 0);
channel0 <= audio0(23) & audio1(23)..., and continue down to 0.
Can someone here please help me clarify? Thanks.
The correct way is as described in the PDF file ADAT 96K Optical Addendum which you can get from Wavefront.
Let say, I have these 8 logic vectors which contain the 24 bit channel data.
signal audio0 : std_logic_vector(23 downto 0);
signal audio1 : std_logic_vector(23 downto 0);
signal audio2 : std_logic_vector(23 downto 0);
signal audio3 : std_logic_vector(23 downto 0);
signal audio4 : std_logic_vector(23 downto 0);
signal audio5 : std_logic_vector(23 downto 0);
signal audio6 : std_logic_vector(23 downto 0);
signal audio7 : std_logic_vector(23 downto 0);
From what I can understand about S/MUX, I will get 4 channel, which are:
audio0 + audio1 = channel0
audio2 + audio3 = channel1
audio4 + audio5 = channel2
audio6 + audio7 = channel3
And I will also have to generate the 88.2/96 KHz rate for I2S master clock (MCLK), I2S bit (serial) clock (BCLK/SCLK), and I2S word clock (LRCLK/WCLK) that I transmit together with the new channel data.
So, my question in regards to combining the bits; is it by arranging them in an odd-even interleaving manner?
Something like:
signal channel0 : std_logic_vector(46 downto 0);
channel0 <= audio0(23) & audio1(23)..., and continue down to 0.
Can someone here please help me clarify? Thanks.