tms320c50 programs

35
8 point FFT using TMS320C50 processor AIM : To write a program to find FFT of an 8 point input sequence using TMS320C50 processor. PROGRAM: INPUT .set 8010H ;inputs are given in 8010 BIT_REV .set 8020H ;bitreversed input are found in 8020 INPLACE .set 8030H ;final outputs are in 8030 TWIDLE .set 8090H ;twidle factor values are in 8090 N .set 0H STG .set 1H STGC .set 3H GRP .set 4H GRPC .set 5H BFLY .set 6H BFLYC .set 7H DNS .set 8H DNSC .set 9H TXD .SET 70H STS .SET 71H DATA .SET 72H B3 .SET 0F000H B2 .SET 0F00H B1 .SET 00F0H B0 .SET 000FH .mmregs .text START: LDP #100H LACC N SPLK #8H,N CALL 0B000H ;call the subroutine

Upload: ganapathys

Post on 10-Dec-2015

15 views

Category:

Documents


3 download

DESCRIPTION

Programs

TRANSCRIPT

8 point FFT using TMS320C50 processorAIM :

To write a program to find FFT of an 8 point input sequence using TMS320C50 processor.

PROGRAM:

INPUT .set 8010H ;inputs are given in 8010BIT_REV .set 8020H ;bitreversed input are found in 8020INPLACE .set 8030H ;final outputs are in 8030TWIDLE .set 8090H ;twidle factor values are in 8090N .set 0HSTG .set 1HSTGC .set 3HGRP .set 4HGRPC .set 5HBFLY .set 6HBFLYC .set 7HDNS .set 8HDNSC .set 9HTXD .SET 70HSTS .SET 71HDATA .SET 72HB3 .SET 0F000HB2 .SET 0F00HB1 .SET 00F0HB0 .SET 000FH.mmregs.textSTART: LDP #100H

LACC N SPLK #8H,NCALL 0B000H ;call the subroutine for bitreversing the inputLAR AR0,#BIT_REV ;transfer the bitrevesed data in 8020 to 8030 LAR AR5,#INPLACE ;and include the imaginary partCALL 0B100H ;call the subroutine for this purposeSPLK #3H,STG ;for 8 point FFT 3 stages are foundSPLK #1H,BFLY ;for first stage butterfly=1SPLK #2H,DNS ;dual node spacing=2SPLK #2H,0FH

ZAP LT 0FH ;8 real values & 8 imaginary values for each stage MPY N

SPL 2H LT 2HMPY STG ;location 8002 hold the number of tableSPL 2H ;values or twidle factor values LAR AR1,#TWIDLE MAR *,AR1RPT 2HBLPD #TABLE,*+ ;transfer the twidle factor values from program ;memory to the data memory(8090)LAR AR1,#TWIDLELACC STGSUB #1H ;stage value is subtracted by 1 for counter SACL STGC ;purposeLACC 00SACL GRP ;let group=8LAR AR7,STGC ;stage loopSTGLOP LACC GRP ;group=group/2BSAR 1H SACL GRP SUB #1H ;group value is subtracted by 1 for counterSACL GRPC ;purposeLAR AR6,GRPC ;group loop LACC BFLYSUB #1HSACL BFLYCLACC DNS ;dual node spacing value is subtracted by 1 SUB #1H ;for counter purposeSACL DNSC ;this is the main butterfly loopLAR AR0,#INPLACE ;take the input values from 8030GRPLOP LAR AR2,BFLYC ;butterfly counterBFLYLOP CALL 0B200H ;call the subroutine for the complex ;multiplication of input values and twidle ;factor values MAR *,AR0 ;incrment the location 8030 for next complex RPT DNSC ;multiplication(for example in first stage LACC *+ ;location is incremented from 8030 to 8032) CALL 0B200H ;gain call the subroutine

MAR *,AR0RPT DNSCLACC *-CALL 0B300H ;call the subroutine for comlex addition ;and complex subtraction MAR *,AR0 RPT increase the butterfly for next stage MPY #2H

DNSC ;increment the 8030 location for next butterfly LACC *+ MAR *,AR2 BANZ BFLYLOP,*- ;decrement the butterfly & check MAR *,AR RPT DNSC LACC *+ ;increment the 8030 location for next MAR *,AR6 ;group BANZ GRPLOP,*- ;decrement the group & check LT BFLY ; SPL BFLY LT DNS ;increase the dual node spacing for MPY #2H ;next stage SPL DNS MAR *,AR7 BANZ STGLOP,*- ;decrement the stage & check REP: LAR AR1,#8010HLAR AR0,#7HREPXN:MAR *,AR1LACC *+SACL DATA ;store the samples in DATAMAR *,AR0 BANZ REPXN,*- ;repeat this for all the 360 output samplesLAR AR1,#8030HLAR AR0,#7HREPREAL:MAR *,AR1LACC *ADRK #2HSACL DATA ;store the samples in DATAMAR *,AR0BANZ REPREAL,*- ;repeat this for all the 360 output samplesLAR AR1,#8031HLAR AR0,#7H REPIMG:MAR *,AR1LACC *ADRK #2HSACL DATA ;store the samples in DATA MAR *,AR0 BANZ REPIMG,*- ;repeat this for all the 360 output samplesB REPHLT: B HLTHEXASC:

LACC TXD SUB #9H BCND GRT9,GT LACC TXD ADD #30HSACL TXDRETGRT9: LACC TXDADD #37HSACL TXDRETTXDATA:REPCHK: IN STS,9 LACC STS AND #04H BCND REPCHK,EQ OUT TXD,8 RET H B H

TABLE .word 00100H .word 00000H

.word 00100H.word 00000H.word 00100H.word 00000H.word 00100H.word 00000H.word 00100H.word 00000H .word 00100H .word 00000H .word 00100H.word 00000H .word 00100H

.word 00100H .word 00100H .word 00100H .word 00100H .word 00000H.word 00100H.word 00000H.word 00000H.word 0FF00H.word 00100H

.word 00000H

.word 00100H

.word 00000H

.word 00100H

.word 00000H .word 00000H.word 0FF00H.word 00100H.word 00000H.word 00100H.word 00000H.word 00100H.word 00000H.word 000B5H.word 0FF4BH.word 00100H.word 00000H.word 00000H.word 0FF00H.word 00100H.word 00000H .word 0FF4BH .word 0FF4BH

RESULT:Thus a program to find FFT of an 8 point input sequence using TMS320C50 processor is

successfully done.

INPUT:

8000-0008 8010-0700 8011-0B00 8012-0F00 8013-0B00 8014-0700 8015-0300 8016-0000 8017-0300

BITREVERSED OUTPUT:

8020-0700 8021-0700 8022-0F00 8023-0000 8024-0B00 8025-0300

8026-0B00 8027-0300

FFT OUPUT:

8030-3900 8031-0000 8032-0000 8033-E5B0 8034-FF00 8035-0000 8036-0000 8037-03B0 8038-0100 8039-0000 803A-0000 803B-FC50 803C-FF00 803D-0000 803E-0000 803F-1A50

CIRCULAR CONVOLUTION USING TMS320C50 PROCESSOR

AIM: To write a program to find cirucular convolution using TM320C50 processor.

PROGRAM:

.mmregs.textSTART:LDP #100H LACC 0H ;length of the input is given in 8000SUB #1HSACL 1H LAR AR0,1HLAR AR1,#8060H LAR AR2,#8100HCOPYX2:MAR *,AR1 LACC *+,0,AR2SACL *+,0,AR0BANZ COPYX2,*-LAR AR0,1HLAR AR2,#8010HLOOP3: LAR AR1,#8060H ;give the inputs x1[n] & h2[n] in AR1 & AR3LAR AR3,#8050HLAR AR4,1H ZAPLOOP:MAR *,AR3 ;multiply x1[n] & X2[n] and add the multiplication; LT *+,AR1 ;output MPY *+SPL 5HADD 5HMAR *,AR4BANZ LOOP,*-,AR2 outputs of correlation are stored in AR2SACL *+CALL ROTATELOOP2:MAR *,AR0BANZ LOOP3,*-REP:LAR AR1,#8050HLAR AR0,1H

REPXN:MAR *,AR1LACC *+ SACL 72H ;store the samples in DATAMAR *,AR0BANZ REPXN,*- ;repeat this for all the 360 output samplesLAR AR1,#8100HLAR AR0,1HREPHN:MAR *,AR1 LACC *+SACL 72H ;store the samples in DATA MAR *,AR0BANZ REPHN,*- ;repeat this for all the 360 output samplesLAR AR1,#8010LAR AR0,1HREPOUT:MAR *,ARLACC *+SACL 72H ;store the samples in DATAMAR *,AR0 BANZ REPOUT,*- ;repeat this for all the 360 output samplesHLT: B HLTROTATE:LDP #100H ;rotate the values of X2[n]LACC 1HSUB #1HSACL 2HLACC 0050HSACBLAR AR3,#805LAR AR5,#8070HLAR AR6,2HLOOP1:MAR *,AR3LACC *+,0,AR5SACL *+,0,AR6BANZ LOOP1,*-LACB MAR *,AR5 SACL *+LACC #8070HSAMM BMARLAR AR3,#8050HMAR *,AR3

RPT 0H BLDD BMAR,* RET

RESULT:

Thus the program to perform circular convolution using TMS320C50 processor is done successfully .

INPUT:

8000-0004

x1(n) =

8050 - 0000 8051 – 0001 8052 - 0002 8053 – 0001h2(n ) =

8060 - 0001 8061 – 0002 8062 – 0003 8063 - 0004

OUTPUT:

8010-000E 8011-0010 8012-000E 8013-0010

FIR LOW PASS FILTER USING TMS320C50 PROCESSOR

AIM:

To design FIR filter for the following specification:Approximation type: Window design - Blackmann WindowFilter type: Lowpass filterFilter Order: 52Cutoff frequency in KHz = 3.000000

PROGRAM:.mmregs.text ;Move the Filter coefficients from program memory to data

memorySTART:MAR*,AR0LAR AR0,#0200HRPT #33HBLKP CTABLE,*+SETC CNF ;Input data and perform convolutionISR: LDP #0AHLACC #0SACL 0IN 0,06HLAR AR7,#0 ;change value to modify sampling freq.MAR*,AR7BACK: BANZ BACK,*-IN 0,04HNOP

NOPNOPNOPMAR *,AR1LAR AR1,#0300HLACC 0AND #0FFFHXOR #800HSUB #800HSACL *LAR AR1,#333HMPY #0ZACZAPRPT #33HMACD 0FF00H,*-APACLAR AR1,#0300HMAR *,AR1RPT #01H

SFRSACH * ;give as sach *,1 incase ofoverflowLACC *ADD #800HSACL *OUT *,04HIN 0,16HNOPB ISRNOPNOPHLT: B HLTCTABLE: .word 0FE8BH .word 0FEE2H .word 0FF74H .word 02BH .word 0ECH .word 0196H .word 0208H .word 022BH .word 01EDH .word 0150H .word 061H .word 0FF40H .word 0FE18H .word 0FD19H .word 0FC77H .word 0FC5EH .word 0FCEEH .word 0FE35H .word 02BH .word 02B4H .word 059EH .word 08A9H .word 0B8FH .word 0E07H .word 0FD4H .word 010C7H .word 010C7H .word 0FD4H .word 0E07H .word 0B8FH .word 08A9H .word 059EH .word 02B4H

.word 02BH .word 0FE35H .word 0FCEEH .word 0FC5EH .word 0FC77H .word 0FD19H .word 0FE18H .word 0FF40H .word 061H .word 0150H .word 01EDH .word 022BH .word 0208H .word 0196H .word 0ECH .word 02BH .word 0FF74H .word 0FEE2H .word 0FE8BH

RESULT:

Thus a FIR low pass filter is designed with following specifications using TMS320C50 processor .

IIR LOW PASS FILTER USING TMS320C50 PROCESSOR

AIM:

To design a IIR low pass filter using TMS320C50. PROGRAM:

.MMREGS

.TEXTSTART:

LDP #100HLACC #0SACL 02HSACL 03HSACL 00H

LOOP:LACC #0SACL 00HIN 0,06HLAR AR7,#30HMAR *,AR7

BACK:BANZ BACK,*-IN 0,04HNOPNOPNOPNOPLACC 00HAND #0FFFHXOR #800HSUB #800HSACL 00HLT 00HMPY #315EHPACSACH 2H,1LT 03HMPY #4E9FHPACSACH 04H,1LACC 02HADD 04HSACL 03HADD #800HSACL 00HOUT 00H,04HIN 0,16H

B LOOPNOP

NOPHLT: B HLT

RESULT:

Thus a IIR low pass filter is designed using TMS320C50 processor.

LINEAR CONVOLUTION USING TMS320C50 PROCESSOR

AIM:

To perform linear convolution using TMS320C50.

PROGRAM:

.mmregs

.textSTART:LDP #02HLAR AR1,#8100H ; x(n) datas lar ar0,#08200H ;h(n) datasLAR AR3,#8300H ;y(n) startLAR AR4,#0007 ;N1+N2-1 ;to fold the h(n) values;lar ar0,#8203H ; data mem 8200 to program mem c100(tblw)lacc #0c100hmar *,ar0rpt #3tblw *- ;to move 8203- 8200 to c100- c103 padding of zerros for x(n) values lar ar6,#8104hmar *,ar6lacc #0hrpt #3hsacl *+convolution operation startsLOP: MAR *,AR1LACC *+SACL 050H ;starting of the scope of multiplicationLAR AR2,#0153H ; end of the array, to be multiplied with h(n) {150+N1-1}MAR *,AR2ZAPRPT #03H ;N1-1 times so that N1 timesMACD 0C100H,*-APAC ;to accmulate the final product sampleMAR *,AR3 SACL *+MAR *,AR4BANZ LOP,*-H: B H

RESULT: Thus the program to perform linear convolution using TMS320C50 is done.INPUT ( x(n) )

8100 - 1 8101 - 3

8102 - 1 8103 - 3

INPUT ( h(n) )

8200 - 0 8201 - 1 8202 - 2 8203 - 1

OUTPUT ( y(n) )

8300 - 1 8301 - 5 8302 - 8 8303 - 8 8304 - 7 8305 - 3 8306 - 0

SINE WAVEFORM GENERATION USING TMS320C50 PROCESSOR

AIM:

To write a program to generate sine wave using TMS320C50.

PROGRAM:TXD .SET 0HSTS .SET 1HDATA .SET 2HTEMP .SET 3HB3 .SET 0F000HB2 .SET 0F00HB1 .SET 00F0HB0 .SET 000FH.mmregs.textSTART: LDP #100H LACC #TABLE SACL TEMPREP1: LACC #TABLE SACL TEMP LAR AR0,#372REP: LACC TEMP TBLR DATA OUT DATA,04H LACC TEMP ADD #1H SACL TEMP MAR *,AR0 BANZ REP,*- B REP1

HLT: B HLTTABLE:

.word 0800H .word 0822H .word 0845H .word 0867H .word 088aH .word 08acH .word 08cfH .word 08f1H .word 0913H .word 0935H .word 0958H .word 097aH .word 099cH .word 09bdH

.word 09dfH .word 0a01H .word 0a22H .word 0a43H .word 0a64H .word 0a85H .word 0aa6H .word 0ac6H .word 0ae7H .word 0b07H .word 0b27H .word 0b46H .word 0b66H .word 0b85H .word 0ba4H .word 0bc3H .word 0be1H .word 0bffH .word 0c1dH .word 0c3aH .word 0c58H .word 0c74H .word 0c91H .word 0cadH .word 0cc9H .word 0ce5H .word 0d00H .word 0d1bH .word 0d35H .word 0d4fH .word 0d69H .word 0d82H .word 0d9bH .word 0db3H .word 0dcbH .word 0de3H .word 0dfaH .word 0e11H .word 0e27H .word 0e3dH .word 0e52H .word 0e67H .word 0e7cH .word 0e90H .word 0ea3H .word 0eb6H

.word 0ec9H .word 0edbH .word 0eedH .word 0efeH .word 0f0eH .word 0f1eH .word 0f2eH .word 0f3dH .word 0f4bH .word 0f59H .word 0f66H .word 0f73H .word 0f80H .word 0f8bH .word 0f97H .word 0fa1H .word 0fabH .word 0fb5H .word 0fbeH .word 0fc6H .word 0fceH .word 0fd5H .word 0fdcH .word 0fe2H .word 0fe8H .word 0fedH .word 0ff1H .word 0ff5H .word 0ff8H .word 0ffbH .word 0ffdH .word 0ffeH .word 0fffH .word 0fffH .word 0fffH .word 0ffeH .word 0ffdH .word 0ffbH .word 0ff8H .word 0ff5H .word 0ff1H .word 0fedH .word 0fe8H .word 0fe3H .word 0fddH .word 0fd6H

.word 0fcfH .word 0fc7H .word 0fbfH .word 0fb6H .word 0facH .word 0fa2H .word 0f98H .word 0f8cH .word 0f81H .word 0f74H .word 0f68H .word 0f5aH .word 0f4cH .word 0f3eH .word 0f2fH .word 0f20H .word 0f10H .word 0effH .word 0eeeH .word 0eddH .word 0ecbH .word 0eb8H .word 0ea5H .word 0e92H .word 0e7eH .word 0e69H .word 0e54H .word 0e3fH .word 0e29H .word 0e13H .word 0dfcH .word 0de5H .word 0dceH .word 0db6H .word 0d9dH .word 0d84H .word 0d6bH .word 0d51H .word 0d37H .word 0d1dH .word 0d02H .word 0ce7H .word 0cccH .word 0cb0H .word 0c94H .word 0c77H

.word 0c5aH .word 0c3dH .word 0c20H .word 0c02H .word 0be4H .word 0bc5H .word 0ba7H .word 0b88H .word 0b69H .word 0b49H .word 0b2aH .word 0b0aH .word 0aeaH .word 0ac9H .word 0aa9H .word 0a88H .word 0a67H .word 0a46H .word 0a25H .word 0a04H .word 09e2H .word 09c1H .word 099fH .word 097dH .word 095bH .word 0939H .word 0916H .word 08f4H .word 08d2H .word 08afH .word 088dH .word 086aH .word 0848H .word 0825H .word 0803H .word 07e0H .word 07beH .word 079bH .word 0779H .word 0756H .word 0734H .word 0711H .word 06efH .word 06cdH .word 06abH .word 0689H

.word 0667H .word 0645H .word 0623H .word 0602H .word 05e0H .word 05bfH .word 059eH .word 057dH .word 055cH .word 053cH .word 051bH .word 04fbH .word 04dbH .word 04bcH .word 049cH .word 047dH .word 045eH .word 043fH .word 0421H .word 0403H .word 03e5H .word 03c7H .word 03aaH .word 038dH .word 0371H .word 0354H .word 0339H .word 031dH .word 0302H .word 02e7H .word 02cdH .word 02b2H .word 0299H .word 027fH .word 0267H .word 024eH .word 0236H .word 021eH .word 0207H .word 01f0H .word 01daH .word 01c4H .word 01afH .word 019aH .word 0185H .word 0171H

.word 015dH .word 014aH .word 0138H .word 0126H .word 0114H .word 0103H .word 00f2H .word 00e2H .word 00d3H .word 00c4H .word 00b5H .word 00a7H .word 009aH .word 008dH .word 0081H .word 0075H .word 0069H .word 005fH .word 0055H .word 004bH .word 0042H .word 003aH .word 0032H .word 002aH .word 0024H .word 001dH .word 0018H .word 0013H .word 000eH .word 000aH .word 0007H .word 0005H .word 0002H .word 0001H .word 0000H .word 0000H .word 0000H .word 0001H .word 0002H .word 0004H .word 0006H .word 000aH .word 000dH .word 0011H .word 0016H .word 001cH

.word 0022H .word 0028H .word 0030H .word 0037H .word 0040H .word 0048H .word 0052H .word 005cH .word 0066H .word 0072H .word 007dH .word 0089H .word 0096H .word 00a3H .word 00b1H .word 00c0H .word 00ceH .word 00deH .word 00eeH .word 00feH .word 010fH .word 0121H .word 0133H .word 0145H .word 0158H .word 016bH .word 017fH .word 0194H .word 01a9H .word 01beH .word 01d4H .word 01eaH .word 0201H .word 0218H .word 022fH .word 0247H .word 0260H .word 0278H .word 0292H .word 02abH .word 02c5H .word 02dfH .word 02faH .word 0315H .word 0331H .word 034dH

.word 0369H .word 0385H .word 03a2H .word 03bfH .word 03ddH .word 03faH .word 0418H .word 0437H .word 0455H .word 0474H .word 0493H .word 04b3H .word 04d2H .word 04f2H .word 0512H .word 0532H .word 0553H .word 0574H .word 0594H .word 05b6H .word 05d7H .word 05f8H .word 061aH .word 063bH .word 065dH .word 067fH .word 06a1H .word 06c3H .word 06e5H .word 0708H .word 072aH .word 074cH .word 076fH .word 0791H .word 07b4H .word 07d6H

RESULT: Thus sine wave is generated using TMS320C50 processor.

SQUAREWAVEFORM GENERATION USING TMS320C50 PROCESSOR

AIM:

To write a program to generate a squarewave using TMS320C50.

PROGRAM:.textstart:LDP #140h LACC #0FFFH SACL 0HOUT 0,04HNOP LAR AR3,#0000DELAY1: MAR *,AR3 RPT #07FFFH NOP BANZ DELAY1,*-

LACC #0H SACL 0H

OUT 0,04H NOP LAR AR3,#0000DELAY2: MAR *,AR3 RPT #07FFFH NOP BANZ DELAY2,*- B start

RESULT:

Thus a square wave is generated using TMS320C50 processor.

TRIANGULAR WAVEFORM GENERATION USING TMS320C50 PROCESSOR

AIM:

To write a program to generate a triangular wave using TMS320C50 processor.

PROGRAM:

TXD .SET 0HSTS .SET 1HDATA .SET 2HTEMP .SET 3HB3 .SET 0F000HB2 .SET 0F00HB1 .SET 00F0HB0 .SET 000FH

.mmregs

.textSTART: LDP #100HREP: SPLK #0,DATA LAR AR0,#60REPH: OUT DATA,04H LACC DATA ADD #40H SACL DATA BANZ REPH,*-

LAR AR0,#60REPL: OUT DATA,04H LACC DATA SUB #40H SACL DATA MAR *,AR0 BANZ REPL,*- B REPHLT: B HLT

RESULT:

Thus a triangular wave is generated using TMS320C50 processor.