From e1c0731c425e2197c311244f54070f50eabf9998 Mon Sep 17 00:00:00 2001 From: xross Date: Wed, 28 Mar 2018 16:44:21 +0100 Subject: [PATCH] Further doc updates --- lib_xua/doc/pdf/index.pdf | Bin 533162 -> 532217 bytes lib_xua/doc/rst/sw_audio.rst | 50 +++++++++++++---------------------- 2 files changed, 18 insertions(+), 32 deletions(-) diff --git a/lib_xua/doc/pdf/index.pdf b/lib_xua/doc/pdf/index.pdf index cc3068e959909fbe2d1d9124acbcfe77c451f59f..e789639514923396ae969a11965c1d4a87b4ffbd 100644 GIT binary patch delta 32080 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
Sq@du00s=h)i7YB zYH^|Jsw@^!=MRg`Vo?o1fI-MiiB50>Ko+QNu%Vb-E3`2Z`~?<@3@dh=#o?&hJ8+sn zMTtQ?170~(t}7ICQN%(CpNKD{$SSxKAUV{<6!wvc5U^rpShj@d8Av4<7>1OQVSz-5 zs4F4BR2&O{iG@4~6`_c$+K7lnT?E+>sHZwoCRQMp~Mi@MbMdQwfMIr7N)XQiT!BXE6#nDe({tDyoElXQtu}158LY zy#ODNoTf02?Nd^uVhKTIK6TzhT@h7W*?h1NRR}~QMI{;pM3Jw^ErrT$CQ}&Cr+9u!vtap)!%~tvZ+cHU~tZaicl;>msOP!io|H& zNf`z{B4sHDe67}!q@De+d{8GN6ojU!2*m=bVuFQ(r6NZHP&BRLDvwq{w1=Y{NdW%C zpAUc&UX(@zU~QDyV>XPOidF%Kx;5g^rbjtoN})Y4#j)eC!PcM<2!Egix=bktgG7}XU^TB*S+@!` zz`)y3sw+Y4C(b-6H4J7fRggH~6i^)yc=Mg3LbQ;h5(R>qd@3=p;|A_2MUMiIPoWUJ zQ!wNyk`6E-+N)J08epJERbfX?$TmqOVD&>?H6F>rusB#Mq zMp9QmC`UvS2>vTjtr8!Af-2T9z*L-efT?&D2u5`i0H$d7ONdQ8gjJRMaxSRMaw;ClSJ%{8Y9I<;Fp~U_xc$u#@62fh7%7N4YN81`wrHhCy9e zdsSetJOK>xzn%Rc)GA{P4z7w2f`O#U1raqY4GpVA$`DL(IVQ#*j_0ZP%J63?h{KeM zJ%(8VArwka_#9YuRAJP3Bj6+c(uEQ}K1TxlQmG8gR)IkPSrtZANYDa^wMsb<5LFnd zmZAS`?1v+`)L9SI;9#3;(vA;e_$nQNzp$g&5yXF}OdP6KW(|0~Dm{Ud z(yA~XI;cXa3+9k2jOyq@y8;O{n1O&)lM7%fK_M<59wt#~7&h}%Vc;iGiGffu*^zep z4{SJ!ZH71lMg+yIhQD0`F$EQb@Hd{QFbMooryXoYD+m37|A0_H4eTQr)wuweP-P*4 zU2GNA3NY&G33bI(XA!}~5*4b&5LTe}L=3yEsxYeZ0dBR$lG=q(OdQZxmJhJ5+382rxLZ#M)%Ndl8pf!oDZ*2M`q53NZ9UCju$fg#o3& zV9%5~bnw?iAU@PuPHz8!B*5wERv>8;LL(}U1e61pRJj}|E;#0=41>Kd2(eRPaGZup zv;5w<-(R^;K~+p)%-T zmCEqoJQW6&RT_blOH?j^a49U&r2Pjcdb0tY(jvkxMvVm=ctT3GFnv{7OTuA z9#0}tvGE}Y1YRYzcfbV-t6|(#;zbZ1idK3NXF|B|J&IwRgupfLC>MTL= zM5>Yki(CTRofHa%Apg{{6M_Pv_5?g!s_y53KBC$Nz^g{quB|Z-@w%l}Au>U|I zQ5Pa8$fvsH028WgU!ka_3KwA2Rv}P8{Hdt+VFLd1VYQ=5Fu>qo3AM+d7bsc}mc%ww zs!fg{YNj&Z*>K`OMLu9Prk>G(urK&i)P^CruL@JKjG-=ZjJ>^gsBh(G>2H8nCNb!JLTtTqxN PAzz!(wQJvye%k*J#T|BJ delta 33046 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 diff --git a/lib_xua/doc/rst/sw_audio.rst b/lib_xua/doc/rst/sw_audio.rst index e5582214..3258e0ff 100755 --- a/lib_xua/doc/rst/sw_audio.rst +++ b/lib_xua/doc/rst/sw_audio.rst @@ -91,51 +91,42 @@ external audio hardware and the xCORE device. Port Configuration (xCORE Master) +++++++++++++++++++++++++++++++++ -The default software configuration is xCORE is I2S master. That is, the XMOS device -provides the BCLK and LRCLK signals to the audio hardware +The default software configuration is xCORE is I2S master. That is, the XMOS device provides the BCLK and LRCLK signals to the external audio hardware -XS1 ports and XMOS clocks provide many valuable features for -implementing I2S. This section describes how these are configured +xCORE ports and XMOS clocks provide many valuable features for implementing I2S. This section describes how these are configured and used to drive the I2S interface. .. only:: latex .. figure:: images/port_config.pdf - Ports and Clocks (CODEC slave) + Ports and Clocks (xCORE master) .. only:: html .. figure:: images/port_config.png - Ports and Clocks (CODEC slave) + Ports and Clocks (xCORE master) -The code to configure the ports and clocks is in the -``ConfigAudioPorts()`` function. Developers should not need to modify -this. +The code to configure the ports and clocks is in the ``ConfigAudioPorts()`` function. Developers should not need to modify this. -The XMOS device inputs MCLK and divides -it down to generate BCLK and LRCLK. +The xCORE inputs MCLK and divides it down to generate BCLK and LRCLK. +To achieve this MCLK is input into the device using the 1-bit port ``p_mclk``. This is attached to the clock block ``clk_audio_mclk``, which is in +turn used to clock the BCLK port, ``p_bclk``. BCLK is used to clock the LRCLK (``p_lrclk``) and data signals SDIN (``p_sdin``) and SDOUT (``p_sdout``). -To achieve this MCLK is input -into the device using the 1-bit port ``p_mclk``. This is attached to the clock block ``clk_audio_mclk``, which is in -turn used to clock the BCLK port, ``p_bclk``. BCLK is used to clock the LRCLK (``p_lrclk``) and data signals SDIN (``p_sdin``) and SDOUT (``p_sdout``). Again, a clock block is used (``clk_audio_bclk``) which has ``p_bclk`` as its input and is used to clock the ports ``p_lrclk``, ``p_sdin`` and ``p_sdout``. -The preceding diagram shows the connectivity of ports and clock -blocks. +Again, a clock block is used (``clk_audio_bclk``) which has ``p_bclk`` as its input and is used to clock the ports ``p_lrclk``, ``p_sdin`` and ``p_sdout``. +The preceding diagram shows the connectivity of ports and clock blocks. - -``p_sdin`` and ``p_sdout`` are configured as -buffered ports with a transfer width of 32, so all 32 bits are -input in one input statement. This allows the software to input, -process and output 32-bit words, whilst the ports serialize and +``p_sdin`` and ``p_sdout`` are configured as buffered ports with a transfer width of 32, so all 32 bits are +input in one input statement. This allows the software to input, process and output 32-bit words, whilst the ports serialize and deserialize to the single I/O pin connected to each port. xCORE-200 series devices have the ability to divide an extenal clock in a clock-block. + However, XS1 based devices do not have this functionality. In order achieve the reqired master-clock to bit-clock/LR-clock divicd on XS1 devices, buffered ports with a transfer width of 32 are also -used for ``p_bclk`` and ``p_lrclk``. The bit -clock is generated by performing outputs of a particular pattern to ``p_bclk`` to toggle +used for ``p_bclk`` and ``p_lrclk``. The bit clock is generated by performing outputs of a particular pattern to ``p_bclk`` to toggle the output at the desired rate. The pattern depends on the divide between the master-clock and bit-clock. The following table shows the required pattern for different values of this divide: @@ -155,12 +146,8 @@ The following table shows the required pattern for different values of this divi - ``0xF0F0F0F0`` - 8 - - -In any case, the bit clock outputs 32 clock cycles per sample. In the -special case where the divide is 1 (i.e. the bit clock frequency equals -the master clock frequency), the ``p_bclk`` port is set to a special -mode where it simply outputs its clock input (i.e. ``p_mclk``). +In any case, the bit clock outputs 32 clock cycles per sample. In the special case where the divide is 1 (i.e. the bit clock frequency equals +the master clock frequency), the ``p_bclk`` port is set to a special mode where it simply outputs its clock input (i.e. ``p_mclk``). See ``configure_port_clock_output()`` in ``xs1.h`` for details. ``p_lrclk`` is clocked by ``p_bclk``. In I2S mode the port outputs the pattern ``0x7fffffff`` @@ -176,15 +163,14 @@ Changing Audio Sample Frequency When the host changes sample frequency, a new frequency is sent to the audio driver core by Endpoint 0 (via the buffering cores and mixer). -First, a change of sample frequency is reported by -sending the new frequency over an XC channel. The audio core +First, a change of sample frequency is reported by sending the new frequency over an XC channel. The audio core detects this by checking for the presence of a control token on the channel channel Upon receiving the change of sample frequency request, the audio core stops the I2S/TDM interface and calls the CODEC/port configuration functions. -Once this is complete, the I2S/TDM interface is restarted at the new frequency. +Once this is complete, the I2S/TDM interface (i.e. the main look in AudioHub) is restarted at the new frequency.