Digital Signal Processing Reference
In-Depth Information
// See Section 11.2 , Chapter 11
/* Segment
12-bit PCM
4-bit quantization interval */
/* 0
s0000000ABCD
s000ABCD
*/
/* 1
s0000001ABCD
s001ABCD
*/
/* 2
s000001ABCDX
s010ABCD
*/
/* 3
s00001ABCDXX
s011ABCD
*/
/* 4
s0001ABCDXXX
s100ABCD
*/
/* 5
s001ABCDXXXX
s101ABCD
*/
/* 6
s01ABCDXXXXX
s110ABCD
*/
/* 7
s1ABCDXXXXXX
s111ABCD
*/
//
/* Segment Recovered 12-bit PCM */
/* 0 s0000000ABCD */
/* 1 s0000001ABCD */
/* 2 s000001ABCD1 */
/* 3 s00001ABCD10 */
/* 4 s0001ABCD100 */
/* 5 s001ABCD1000 */
/* 6 s01ABCDq0000 */
/* 7 s1ABCD100000 */
/* Note that audio input/output data are in 2's complement form */
/* For encoder, convert the 2's complement form to the sign-magnitude form before
quantization */
/* For decoder, convert the sign-magnitude form to the 2's complement output before DAC */
interrupt void c_int11()
{
int lc; /*left channel input */
int rc; /*right channel input */
int lcnew; /*left channel output */
int rcnew; /*right channel output */
int tmp,ulawcode, dec;
//Left channel and right channel inputs
AIC23_data.combo
¼
input_sample();
lc
¼
(int) (AIC23_data.channel[LEFT]);
(int) (AIC23_data.channel[RIGHT]);
// Insert DSP algorithm below
/* Encoder :*/
tmp
rc
¼
lc;
if (tmp <0 )
{ tmp ¼ -tmp; // Get magnitude bits to work with
}
tmp ¼ (tmp>>4); // Linear scale down to 12 bits to use the u-255 law table
if( (tmp&0x07f0) ¼¼ 0x0) // Segment 0
{ ulawcode ¼ (tmp&0x000f); }
if( (tmp&0x07f0) ¼¼ 0x0010) // Segment 1
{ ulawcode ¼ (tmp&0x00f);
ulawcode ¼ ulawcode j 0x10; }
if( (tmp&0x07E0) ¼¼ 0x0020) // Segment 2
¼
Search WWH ::




Custom Search