This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Generalities on Digital FiltersGeneralities on Digital Filters FIR Filters with FIR Filters with MatlabMatlab Implementation of FIR FiltersImplementation of FIR Filters
Output for a Single Frequency InputOutput for a Single Frequency Input Single frequency input Single frequency input Single frequency output Single frequency output
IIR and FIR FiltersIIR and FIR Filters IIR = Infinite Impulse ResponseIIR = Infinite Impulse Response FIR = Finite Impulse ResponseFIR = Finite Impulse Response
FIR: output yFIR: output ynn is a linear combination of a is a linear combination of a finite number of input samples.finite number of input samples.
IIR: output yIIR: output ynn is a linear combination of a is a linear combination of a finite number of input and of output finite number of input and of output samples. Recursive form.samples. Recursive form.
A filter is causal if A filter is causal if hhnn=0 for n < 0=0 for n < 0 A filter is stable if the output is bounded A filter is stable if the output is bounded
for any bounded input.for any bounded input. Condition for stability is:Condition for stability is:
All the pAll the pooles of H(z) are inside the unit circleles of H(z) are inside the unit circle FIR are always stable.FIR are always stable.
Some Useful Matlab FunctionsSome Useful Matlab Functions Example for a FIR filter:Example for a FIR filter:
1 2 30 1 2 3
0 1 2 2
( )
[ ] [1 1 1 1].
N z b b z b z b z
b b b b b
Enter the filter coefficients vector b:Enter the filter coefficients vector b: b=[1 1 1 1]; a=1;b=[1 1 1 1]; a=1;
Calculate transfer function Hf, its Calculate transfer function Hf, its amplitude and phase on 256 samples, amplitude and phase on 256 samples, with fs=1:with fs=1: [Hf,f]=freqz(b,a,256,1);[Hf,f]=freqz(b,a,256,1); HfA=abs(Hf);HfA=abs(Hf); Hfphi=angle(Hf);Hfphi=angle(Hf);
Calculation of a FIR using MatlabCalculation of a FIR using Matlab
For given attenuation and frequency For given attenuation and frequency response characteristics, the transfer response characteristics, the transfer function can be calculated using function can be calculated using different methods: different methods: Mean square error, miniMax (Chebychev)Mean square error, miniMax (Chebychev) Empirical window method Empirical window method
Corresponding Matlab functionsCorresponding Matlab functions firlsfirls and and remezremez.. firfir and and fir1fir1..
Design a low pass filter:Design a low pass filter: Sampling frequency = 9600 HzSampling frequency = 9600 Hz Maximum attenuation (passband) = 0.1 dBMaximum attenuation (passband) = 0.1 dB Minimum attenuation (stopband) = 50 dBMinimum attenuation (stopband) = 50 dB Limit frequencies of passband and Limit frequencies of passband and
stopband = 1200 Hz and 2600 Hz.stopband = 1200 Hz and 2600 Hz.Attenuation in dB
FIR Filters with Constant Group Delay or FIR Filters with Constant Group Delay or Linear PhaseLinear Phase
For many applications, it is desirable to For many applications, it is desirable to use a filter with a constant group delay use a filter with a constant group delay (independant of the frequency).(independant of the frequency). The phase will be linear or affine.The phase will be linear or affine.
2 possible cases: 2 possible cases: symmetrical or asymmetrical FIRsymmetrical or asymmetrical FIR.. Constant group delay = TConstant group delay = TSS (N-1)/2 (N-1)/2 Symmetrical:Symmetrical: h(n)=h(N-1-n)h(n)=h(N-1-n) Asymmetrical;Asymmetrical; h(n)=-h(N-1-h(n)=-h(N-1-n)n)
Fixed Point Implementation of FIR FiltersFixed Point Implementation of FIR FiltersNumerical IssuesNumerical Issues
Fixed point implementation:Fixed point implementation: 16 bits for data and coefficients16 bits for data and coefficients Accumulators have size 40 bitsAccumulators have size 40 bits
Fixed point representation of dataFixed point representation of data Size B = 16 bits, Format Qk: k fractional bitsSize B = 16 bits, Format Qk: k fractional bits
Quantization of coefficientsQuantization of coefficients Maximum magnitude coefficient = hmaxMaximum magnitude coefficient = hmax Number of bits of the integer part of Number of bits of the integer part of
coefficients is Bi:coefficients is Bi: Bi = logBi = log22(hmax) (hmax) Coefficients in Qk’ with k = 16-BiCoefficients in Qk’ with k = 16-Bi
The coefficients Bre can be quantized The coefficients Bre can be quantized using 16-bit fixed point with 15 fractional using 16-bit fixed point with 15 fractional bits:bits: Bre=round(Bre*2^15);Bre=round(Bre*2^15);
To store the result in a text file for CCS:To store the result in a text file for CCS: fp=fopen('coef.asm','wt')fp=fopen('coef.asm','wt') for i=1:22for i=1:22 fprintf(fp,' .word %d \n',Ba(i))fprintf(fp,' .word %d \n',Ba(i)) endend fclose(fp)fclose(fp)
FIR Implementation, Numerical issues, FIR Implementation, Numerical issues, FRCT bitFRCT bit
Common case:Common case: Data and coefficients in Q15 formatData and coefficients in Q15 format Product h(i)x(n-i) in Q30 (2 sign bits)Product h(i)x(n-i) in Q30 (2 sign bits) By shifting products 1 bit left, the product By shifting products 1 bit left, the product
are in Q31 format with only 1 sign bit.are in Q31 format with only 1 sign bit. If the FRCT bit (Fraction) is set to 1, If the FRCT bit (Fraction) is set to 1,
products are automatically shifted 1 bit products are automatically shifted 1 bit left.left.
Implementation of a FIR with a Delay LineImplementation of a FIR with a Delay Line
Most common structure used in DSP.Most common structure used in DSP. The delay line can be implemented using a The delay line can be implemented using a
linear or a circular buffer.linear or a circular buffer. Basic operations:Basic operations:
Read a new data value x(n) every TRead a new data value x(n) every TSS
ACCU=0ACCU=0 for i=0 to N-1:for i=0 to N-1:
Multiply h(i) by x(n-i) and add it to Multiply h(i) by x(n-i) and add it to accumulatoraccumulator
Implementation of FIR Filters on C54xImplementation of FIR Filters on C54x
Implementation of General TransveImplementation of General Transversal FIR filtersrsal FIR filters Using linear buffersUsing linear buffers Using circular buffersUsing circular buffers
Implementation of Symmetrical FIImplementation of Symmetrical FIR filtersR filters
Operations using a Linear Buffer for a FIR Operations using a Linear Buffer for a FIR with N Coefficientswith N Coefficients
Length of the delay line = N samplesLength of the delay line = N samples Read a new sample x(n) and store it in the Read a new sample x(n) and store it in the
delay line in the first position.delay line in the first position. ACCU=0ACCU=0 for i=0 to N-1for i=0 to N-1
Read h(i) and x(n-i)Read h(i) and x(n-i) Multiply h(i) by x(n-i) and add it to ACCUMultiply h(i) by x(n-i) and add it to ACCU
Output y(n)Output y(n) N-1 Shifts in the delay line.N-1 Shifts in the delay line.
Instead of shifting N-1 samples at the Instead of shifting N-1 samples at the end, do the shift in the loop one by one. end, do the shift in the loop one by one.
Read a new sample xn and store it in the Read a new sample xn and store it in the delay line in the first position.delay line in the first position.
ACCU=0ACCU=0 for i=N-1 to 0for i=N-1 to 0
Read h(i) and x(n-i)Read h(i) and x(n-i) Multiply h(i) by x(n-i) and add it to ACCUMultiply h(i) by x(n-i) and add it to ACCU Shift x(n-i) in the delay line Shift x(n-i) in the delay line
If If MACDMACD used in a loop with used in a loop with RPTRPT the the program memory (pmad) address is program memory (pmad) address is automatically incremented.automatically incremented. MACD alone = 3 cycle timesMACD alone = 3 cycle times In a RPT loop 1 cycle timeIn a RPT loop 1 cycle time
Initialization of RegistersInitialization of Registers
STMSTM Stores #value to the MMR early Stores #value to the MMR earlyin the pipeline to avoid latencies.in the pipeline to avoid latencies. 2 words, 2cycles.2 words, 2cycles.
Initialization of FRCT bit (fractional Initialization of FRCT bit (fractional mode):mode): InstructionsInstructions SSBX SSBX (Set Status Bit) and (Set Status Bit) and
RSBXRSBX (Reset Status Bit). (Reset Status Bit). Initialization of ACCUInitialization of ACCU
Using Using RPTZRPTZ :RePeaT after initializing :RePeaT after initializing ACCU at 0ACCU at 0
Test with CCSTest with CCS Filter with N=32 coefficients all equal to 1/32Filter with N=32 coefficients all equal to 1/32 Create a file fircoef.asm, address of coefficients in Create a file fircoef.asm, address of coefficients in
Implementing a FIR Filter with MACDImplementing a FIR Filter with MACD
File firmacd.asm with the programFile firmacd.asm with the program 2 files to compile and link: 2 files to compile and link:
fircoef.asm and firmacd.asmfircoef.asm and firmacd.asm
Test by associating files on the ports Test by associating files on the ports DRR0 and DXR0DRR0 and DXR0 File infir.dat attached to DRR0File infir.dat attached to DRR0 File outfir.dat attached to DXR0File outfir.dat attached to DXR0
FIR with MACD, Test with CCSFIR with MACD, Test with CCS Create project, create command file, Create project, create command file,
compile and link.compile and link. To test the impulse response:To test the impulse response:
Create a file infir.dat with:Create a file infir.dat with: A value 0.5 (0x4000) then zeros (at least 40)A value 0.5 (0x4000) then zeros (at least 40)
Set 2 probe pointsSet 2 probe points 1 at reading of DRR: LDM DRR1 at reading of DRR: LDM DRR 1 at end of loop: B debut1 at end of loop: B debut
Attach files to probe pointsAttach files to probe points infir.dat at 1rst probe point (read value stored infir.dat at 1rst probe point (read value stored
at address 0x20 DRR)at address 0x20 DRR) outfir.dat at second probe point (data at outfir.dat at second probe point (data at
address 0x21 DXR is strored in the file)address 0x21 DXR is strored in the file)
Let program run until end of file Let program run until end of file infir.datinfir.dat
Load file outfir.dat at some address in Load file outfir.dat at some address in the DSP data memory (the DSP data memory (File-Data-LoadFile-Data-Load))
Plot the content of this memory area Plot the content of this memory area ((View-Graph-Time/FrequencyView-Graph-Time/Frequency).). Plot a time graph (Plot a time graph (Single TimeSingle Time)) Plot a frequency graph (Plot a frequency graph (FFT: Magnitude FFT: Magnitude
Implementation using a Circular BufferImplementation using a Circular Buffer
A circular buffer of length N is a block A circular buffer of length N is a block of contiguous memory words addressed of contiguous memory words addressed by a pointer using a modulo N by a pointer using a modulo N addressing mode. addressing mode. The 2 extreme words of the memory block The 2 extreme words of the memory block
are considered as contiguous.are considered as contiguous. Characteristics of a circular buffer:Characteristics of a circular buffer:
Instead of moving the N data in memory, Instead of moving the N data in memory, just modify the pointers.just modify the pointers.
When a new data x(n) arrives, the pointer When a new data x(n) arrives, the pointer is incremented and the new data is written is incremented and the new data is written in place of the oldest one.in place of the oldest one.
Operation of FIR with Circular BufferOperation of FIR with Circular Buffer Read a new input sample x(n)Read a new input sample x(n) Store it at address of pnt_dataStore it at address of pnt_data ACCU=0ACCU=0 for i=1 to N-1for i=1 to N-1
multiply data pointed by pnt_data by multiply data pointed by pnt_data by coefficient pointed by pnt_coef. Add coefficient pointed by pnt_coef. Add product to ACCUproduct to ACCU
decrement pointers pnt_data and pnt_coefdecrement pointers pnt_data and pnt_coef endend output y(n) from ACCUoutput y(n) from ACCU increment pnt_data of 1increment pnt_data of 1
Instruction MAC with 2 operands in Indirect Instruction MAC with 2 operands in Indirect Addressing ModeAddressing Mode
MAC: Multiply and AccumulateMAC: Multiply and Accumulate MAC Xmem, Ymem, src[, dest]MAC Xmem, Ymem, src[, dest]
dst=src+Xmem*Ymemdst=src+Xmem*Ymem T=XmemT=Xmem With Xmem, Ymem use only AR2 to AR5With Xmem, Ymem use only AR2 to AR5 Can be executed in 1 cycle time.Can be executed in 1 cycle time.
In dual operand mode Xmem, Ymem:In dual operand mode Xmem, Ymem: *ARi+0%*ARi+0% only valid mode only valid mode To perform a decrement, store a negative value To perform a decrement, store a negative value
in AR0.in AR0.
BKBK register: register: Stores the size N of the circular buffer.Stores the size N of the circular buffer. Must be initialized before use.Must be initialized before use. There may be several circular buffers at There may be several circular buffers at
different addresses at the same time but different addresses at the same time but with the same length.with the same length.
Limitations on Start Addresses of Circular Limitations on Start Addresses of Circular BuffersBuffers
If N is written on nb bits in binary, the If N is written on nb bits in binary, the start address must have its nb LSB at 0:start address must have its nb LSB at 0: Examples:Examples:
for N=32, 6 LSB of start address =0for N=32, 6 LSB of start address =0 for N=30, 5 LSB of start address =0for N=30, 5 LSB of start address =0
To access a circular buffer:To access a circular buffer: Initialize BK with N (nb bits)Initialize BK with N (nb bits) Choose 1 ARi as a pointerChoose 1 ARi as a pointer
The effective start address of the buffer is the The effective start address of the buffer is the value in ARi with its nb LSB at 0.value in ARi with its nb LSB at 0.
The end address = start addess +N-1.The end address = start addess +N-1.
Implementation of FIR Filter Implementation of FIR Filter with 2 Circular Bufferswith 2 Circular Buffers
Same filter as in the preceding example, Same filter as in the preceding example, coefficients in section .coef (in program coefficients in section .coef (in program memory) in file fircoef.asm.memory) in file fircoef.asm.
N=32N=32 2 buffers are allocated in data memory 2 buffers are allocated in data memory
for the coefficients and the data of the for the coefficients and the data of the filtersfilters Start addresses must be multiple of 64.Start addresses must be multiple of 64.
First step of program after initialization:First step of program after initialization: Transfer coefficients from program to data Transfer coefficients from program to data
memory from adr_coef to adr_debut_coef.memory from adr_coef to adr_debut_coef.
MVPD #pmad, SmemMVPD #pmad, Smem Copy values from program to data memoryCopy values from program to data memory In RPT mode pmad is automatically In RPT mode pmad is automatically
incremented.incremented.
Program Data MMR DataMVPD, MVDP
READA, WRITEAData Data MMR MMRMVKD, MVDK, MVDD MVMM
Command File for Circular Buffer Command File for Circular Buffer Addressing ConstraintAddressing Constraint
The addresses adr_debut_dat and The addresses adr_debut_dat and adr_debut_coef have to be aligned with adr_debut_coef have to be aligned with a multiple of 64 in the example.a multiple of 64 in the example. adr_debut_dat is the start address of adr_debut_dat is the start address of
unitialized section buf_data.unitialized section buf_data. adr_debut_coef is the start address of adr_debut_coef is the start address of
unitialized section buf_coef.unitialized section buf_coef. To align the 2 sections on a multiple of 64, To align the 2 sections on a multiple of 64,
in the command file add in the command file add align(64)align(64) after the after the name of the sections in the MEMORY name of the sections in the MEMORY directive, for example:directive, for example: buf_data align(64) > DATAbuf_data align(64) > DATApage 1page 1
Implementation of a Symmetrical FIR filterImplementation of a Symmetrical FIR filter
The symmetry of coefficients is used to decrease the The symmetry of coefficients is used to decrease the computational load:computational load: b(n)=b(N-1-n)b(n)=b(N-1-n) N time cycles for a general FIR filter with N N time cycles for a general FIR filter with N
coefficients is N (in good conditions). coefficients is N (in good conditions). N/2 time cycles for a symmetrical FIR filter.N/2 time cycles for a symmetrical FIR filter. Use of specific instruction Use of specific instruction FIRSFIRS..
x(n-i), x(n-N+1+i)x(n-i), x(n-N+1+i) Coefficients in program memory pmadCoefficients in program memory pmad operations of FIRS:operations of FIRS:
pmad pmad PARPAR while RC while RC 0 0
B = B + A(32:16) x Pmem addressed by PARB = B + A(32:16) x Pmem addressed by PAR A = (Xmem+Ymem)<<16A = (Xmem+Ymem)<<16 PAR=PAR+1PAR=PAR+1 RC=RC-1RC=RC-1
Using FIRS for a Symmetrical FIR FilterUsing FIRS for a Symmetrical FIR Filter FIRS is repeated N/2 timesFIRS is repeated N/2 times The first sum x(n)+x(n-N+1) is done The first sum x(n)+x(n-N+1) is done
before entering the loop.before entering the loop. N/2 iterations (AR2 and AR3 incremented N/2 iterations (AR2 and AR3 incremented
by 1):by 1): At the first iteration AR2 points on x(n-1) and At the first iteration AR2 points on x(n-1) and
AR3 on x(n-N+2)AR3 on x(n-N+2) After N/2 iterations: AR2 is decremented of 2 After N/2 iterations: AR2 is decremented of 2
and AR3 of 1.and AR3 of 1. The oldest sample x(n-N/2+1) of 1st buffer is The oldest sample x(n-N/2+1) of 1st buffer is
stored in 2nd buffer in place of x(n-N+1). stored in 2nd buffer in place of x(n-N+1). Then AR is incremented by 1.Then AR is incremented by 1.
New sample x(n+1) is stored in place of x(n).New sample x(n+1) is stored in place of x(n).
Symmetrical FIR Implementation with FIRS, Symmetrical FIR Implementation with FIRS, InitializationsInitializations.mmregs.global adr_debut_coef.global adr_debut_dat0.global adr_debut_dat1
N .set 32Nsur2 .set 16adr_debut_coef .set adr_coefadr_debut_dat .usect "buf_data0", Nadr_debut_dat1 .usect "buf_data1", N
.text* Initialization of BK, AR0,FRCT
STM #Nsur2, BKSTM #-2, AR0SSBX FRCT
* Initialization of AR2, AR3STM #(adr_debut_dat0),AR2STM #(adr_debut_dat1),AR3
The listing files for the prceent examples The listing files for the prceent examples can be found in directory tutorial:can be found in directory tutorial: Tutorial > Dsk5416 > Chapter 14 > Labs_firTutorial > Dsk5416 > Chapter 14 > Labs_fir
Implementation of FIR Filters using C55xImplementation of FIR Filters using C55x 2 MAC units accessed using 3 data buses 2 MAC units accessed using 3 data buses
D, B, C make it possible to:D, B, C make it possible to: Calculate 2 output samples y at a time using Calculate 2 output samples y at a time using
same set of coefficients and different data x.same set of coefficients and different data x. Calculate 2 output samples y at a time using Calculate 2 output samples y at a time using
same input data x but 2 set of coefficients.same input data x but 2 set of coefficients.
Calculate a block of M output samples:Calculate a block of M output samples: Avoids interrupts sample by sampleAvoids interrupts sample by sample Allows calculation of 2 samples at a timeAllows calculation of 2 samples at a time
1
00, 1 .
N
n m i n m ii
y b x m M
M+N-1 inputs necessary to calculate M output M+N-1 inputs necessary to calculate M output samples.samples. Because of N-1 initial conditions.Because of N-1 initial conditions.
CDP uses B bus CDP uses B bus onlyonly for dual-MAC. for dual-MAC.Because B bus is internal only, coefficients Because B bus is internal only, coefficients must also be internal.must also be internal.
Place data operands carefully to avoidPlace data operands carefully to avoidmemory conflicts (SA/DARAM).memory conflicts (SA/DARAM).
Circular Addressing Mode for CoefficientsCircular Addressing Mode for Coefficients
Initialize size of the circular buffer: BKInitialize size of the circular buffer: BK Set up Buffer Start Address: BSA and Set up Buffer Start Address: BSA and
XevenXeven Set up ARi or CDPSet up ARi or CDP No memory alignment constraintNo memory alignment constraint
Set or reset status bits:Set or reset status bits: BBSSEETT AARR55LLCC ;;AARR55 iinn cciirrccuullaarr mmooddee BBCCLLRR AARR33LLCC ;;AARR33 iinn lliinneeaarr mmooddee
Circular Buffer for CoefficientsCircular Buffer for Coefficients Table of coefficients b0 … b3: Table of coefficients b0 … b3:
Circular buffer addressed by CDP.Circular buffer addressed by CDP. Initialize XCDP: 7 MSBInitialize XCDP: 7 MSB Initialize CDP to 0: offset in the bufferInitialize CDP to 0: offset in the buffer Set up CPD in circular addressing modeSet up CPD in circular addressing mode
Outer Loop Using RPTB or RPTBlocalOuter Loop Using RPTB or RPTBlocal
Use Use RPTBRPTB Repeat Block instruction Repeat Block instruction We must specifiy:We must specifiy:
Start address of the block: next instructionStart address of the block: next instruction End address: label specifies last instructionEnd address: label specifies last instruction The number of repetitions counter: The number of repetitions counter:
BRC0BRC0: loop counter initialized with count-1: loop counter initialized with count-1 Min count = 2Min count = 2
RPTBlocalRPTBlocal: executes from the IBU: executes from the IBU 56 bytes maximum (if > 56 Bytes use RPTB)56 bytes maximum (if > 56 Bytes use RPTB) Reduces power consumptionReduces power consumption
Declare an unitialized section (.usect) of Declare an unitialized section (.usect) of appropriate length to reserve space.appropriate length to reserve space.
Initialize stack pointer to point to the Initialize stack pointer to point to the top of stack +1.top of stack +1.
Recommendation: place the stack in Recommendation: place the stack in internal memory and align on a 4-byte internal memory and align on a 4-byte boundary:boundary: ALIGN= specifies bytesALIGN= specifies bytes
When a call occurs PC[15:0] is pushed When a call occurs PC[15:0] is pushed on the stackon the stack
The upper 8 bits SP[23:16] are pushed The upper 8 bits SP[23:16] are pushed on the system stack accessed by SSP on the system stack accessed by SSP System Stack Pointer.System Stack Pointer.
CFCT is used to store the active loop CFCT is used to store the active loop context.context.
WSP and XSSP share the same upper 7 WSP and XSSP share the same upper 7 bits.bits.
Place SP and SSP with care to avoid Place SP and SSP with care to avoid dual-access delays.dual-access delays.
Long access assumes address points to MSWLong access assumes address points to MSW LSW read from LSW read from samesame address with LSB address with LSB toggledtoggled.. Ptr=100h, MSW=100h, LSW = 101hPtr=100h, MSW=100h, LSW = 101h Ptr=101h, MSW=101h, LSW = 100hPtr=101h, MSW=101h, LSW = 100h
To ensure proper alignment:To ensure proper alignment: Constants (int, long) are automatically aligned on Constants (int, long) are automatically aligned on
type boundariestype boundaries Variables: Variables:
16 bit: no problem16 bit: no problem 32 bits use: use the even-align flag:32 bits use: use the even-align flag:
start:start: AMOV #BOS+stklen,XSPAMOV #BOS+stklen,XSPc c ;set up Stack ;set up Stack ++ MOV #BOSS+stklen,SSP MOV #BOSS+stklen,SSP ;System Stack P;System Stack Ptrstrs
CALL copy CALL copy ;copy coeffs;copy coeffs
BSET FRCT ;turn onBSET FRCT ;turn on multmult. shift. shiftBSET M40 ;turn on 40 bit mathBSET M40 ;turn on 40 bit mathBSET SXMD ;turn on sign exteBSET SXMD ;turn on sign exten.n.
CALL firCALL fir ;perform fir;perform fir nopnophere:here: B here B here ;stop;stop
Comparison of C54x and C55xComparison of C54x and C55x
2 MAC in ‘C55x versus 1 for C54x2 MAC in ‘C55x versus 1 for C54x Well suited for block filtering and 2 taps Well suited for block filtering and 2 taps
per cycle time instead of 1 (for large N).per cycle time instead of 1 (for large N). Circular addressing modes:Circular addressing modes:
3 BK registers in C55X instead of 1 in 3 BK registers in C55X instead of 1 in ‘C54x: allows for several simultaneous ‘C54x: allows for several simultaneous circular buffers with different size.circular buffers with different size.
In C54x, circular addressing mode is In C54x, circular addressing mode is specified in indirect addressing type % in specified in indirect addressing type % in the instructions.the instructions.
In C55x, the mode in set in status register In C55x, the mode in set in status register ST2_55 for each register (linear or ST2_55 for each register (linear or circular). No memory alignment constraint.circular). No memory alignment constraint.
Comparison of C54x and C55xComparison of C54x and C55xSymmetrical and Anti-symmetricalSymmetrical and Anti-symmetrical
FIR FiltersFIR Filters In C54x, instruction FIRS:In C54x, instruction FIRS:
Allows 2 taps/cycle for a symmetrical FIRAllows 2 taps/cycle for a symmetrical FIR In C55x, instructions FIRSADD + In C55x, instructions FIRSADD +
FIRSSUB:FIRSSUB: Allow us to efficiently implement Allow us to efficiently implement
symmetrical and anti-symmetrical FIRs.symmetrical and anti-symmetrical FIRs. Despite the 2 MACs, as there is only 1 ALU, Despite the 2 MACs, as there is only 1 ALU,
again 2 taps/cycle for symmetrical or anti-again 2 taps/cycle for symmetrical or anti-symmetrical FIRs.symmetrical FIRs.
Follow On Activities on 5416 DSKFollow On Activities on 5416 DSK
Laboratory 3 for TMS320C5416 DSKLaboratory 3 for TMS320C5416 DSK To determine by practical experiment the best To determine by practical experiment the best
FIR window functions for audio.FIR window functions for audio.
Laboratory 4 for TMS320C5416 DSKLaboratory 4 for TMS320C5416 DSK To determine by experiment how many FIR To determine by experiment how many FIR
coefficients are required for acceptable audio coefficients are required for acceptable audio quality.quality.
Application 4 for TMS320C5416 DSKApplication 4 for TMS320C5416 DSK Electronic Crossover for multiple loudspeaker Electronic Crossover for multiple loudspeaker
system. Divides audio signal into treble and bass at system. Divides audio signal into treble and bass at 16 different selectable frequencies using FIR 16 different selectable frequencies using FIR filters.filters.
Follow on activities on 5510 DSKFollow on activities on 5510 DSK
Application “delays and echo” for Application “delays and echo” for TMS320C5510 DSK TMS320C5510 DSK Simulates delays in communications Simulates delays in communications
networks and reflection of sound heard in a networks and reflection of sound heard in a canyon. Introduces circular buffers and the canyon. Introduces circular buffers and the configuration used for a Finite Impulse configuration used for a Finite Impulse Response (FIR) filter.Response (FIR) filter.