home *** CD-ROM | disk | FTP | other *** search
- TITL 'TMS32011 SAMPLE RATE CODE'
- IDT 'SAMPLE'
- OPTION XREF,TUNLST
- ********------------------------------------------********
- ***** This code includes the sample rate routines *****
- ***** which run at 9600 Hz. This includes only *****
- ***** the 1200bps operations. *****
- ***** *****
- ***** Module Built by Peter Ehlig 12/02/85 *****
- ***** Revision 1.0 *****
- ***** *****
- ***** COPYRIGHT TEXAS INSTRUMENTS, 07/25/86 *****
- ***** *****
- ********------------------------------------------********
- DEF RUN12,RUN12A,WAIT,WAIT1,TMS011,ANALOG
- REF MASTER,SETUPO,SETUPA,HBMK
- REF NXTTON,DT1
- PAGE
- COPY TASKMAS.EQU
- *
- RUN12 EQU $
- LAC ONE,7 CHECK A-/O BIT IN STATUS REG.
- AND RECST
- BNZ RUNO12
- *
- RUN12A EQU $
- CALL SETUPA
- LACK HBMK SET VALUE FOR ANSWER TONE FREQUENCY
- SACL TALF2 FOR DIALER
- LAC ONE,14 SET MASK ROUNDING TO >8000
- SACL H8000
- ZAC CLEAR FRACTION
- SACL FRACT2
- WAIT1 EQU $
- LAC ONE,2 IS ANSWER TONE XMIT BIT SET
- AND RECST IN THE STATUS REGISTER
- BZ WAIT IF NOT REGULAR XMIT SEQUENCE
- LAC ONE,4 IF YES, IS CARRIER DETECT SET
- AND RECST
- BNZ WAIT2 IF YES RESET XMIT SQLCH BIT, GENERATE
- LARP 1 *ANSWER TONE THROUGH DIALER
- LARK 1,TALF2 *--
- CALL NXTTON *--
- LAC TONE2,13 *
- SACH XMTOUT *
- CALL ANALOG *
- CALL TMS011 OUTPUT AND INPUT
- B ANSBSF RUN ANS MODE RECEIVER. SKIP XMITTER
- *
- WAIT2 LACK DT1 REDO SETUPA SINCE TALF1=XDELTA
- TBLR XDELTA
- LACK >FB RESET XMIT SQLCH BIT (BIT2) OF RECST
- AND RECST
- SACL RECST AND SAVE IT
- B WAIT
- *
- RUNO12 CALL SETUPO SET SYSTEM UP FOR 1200BPS OPERATION
- *
- ********------------------------------------------********
- ***** TRANSMITER SECTION STARTS HERE. *****
- ********------------------------------------------********
- WAIT CALL ANALOG * WAIT FOR 9600HZ SAMPLE PULSE
- *
- GO NOP
- CALL TMS011 SEND AND RECEIVE FROM 32011
- ********------------------------------------------********
- ***** TRANSMITER SECTION STARTS HERE. *****
- ********------------------------------------------********
- XMITER EQU $
- *
- ********------------------------------------------********
- ***** SINE(COSINE) WAVE GENERATION *****
- ********------------------------------------------********
- SWAVE EQU $
- LAC XALPHA,8 * DELTA IS THE INCREMENT.
- SACH TEMP * ISOLATE INTEGER PORTION.
- LAC TEMP
- ADD OFSET0 * ADD INDEX TO SINE TABLE.
- TBLR SINA * SINE VALUE, (Q15).
- LACK >20 * OFFSET TO COSINE VALUE (Q15).
- ADD TEMP
- AND MASK2
- ADD OFSET0 * ADD INDEX TO COSINE TABLE.
- TBLR COSA * COSINE VALUE, (Q15).
- LAC XALPHA * COMPUTE ADDRESS OF NEXT
- ADD XDELTA * POINT FOR TABLE.
- AND MASK1 * KEEP MOD128, MASK=>7FFF.
- SACL XALPHA * SAVE NEXT ADDRESS
- *
- ********------------------------------------------********
- ***** TRANSMITTER 48 TAP RAISED COSINE FILTER. *****
- ***** INPUTS UPDATED AT 600HZ RATE. *****
- ***** OUTPUT UPDATED AT 9600HZ RATE. *****
- ********------------------------------------------********
- RACS EQU $
- LAC XPTR
- TBLR CX0 * RETRIEVE COEFFICIENTS
- ADD ONE
- TBLR CX1
- ADD ONE
- TBLR CX2
- ADD ONE
- SACL XPTR
- *
- ZAC
- LT XIBUF2 * COMPUTE FILTER TAPS ICHAN.
- MPY CX2
- LTA XIBUF1
- MPY CX1
- LTA XIBUF0
- MPY CX0
- APAC
- SACH XIOUT,1
- *
- ZAC
- LT XQBUF2 * COMPUTE FILTER TAPS QCHAN.
- MPY CX2
- LTA XQBUF1
- MPY CX1
- LTA XQBUF0
- MPY CX0
- APAC
- SACH XQOUT,1
- *
- XMIT ZAC
- LT XIOUT * ICHAN*COSwt + QCHAN*SINwt
- MPY COSA
- LTA XQOUT
- MPY SINA
- APAC
- SACH XMTOUT,1
- LAC ONE,7
- AND RECST
- BNZ ANSBSF
- *
- PAGE
- ********------------------------------------------********
- ***** RECEIVER I CHANNEL BANDPASS FILTER. *****
- ***** SAMPLING RATE IS 9600HZ. ORIGINATE *****
- ********------------------------------------------********
- ORGBSF LAC DL2
- SACL ISUM
- DMOV DL1
- LAC RBUF0,15
- SACH RBUF0
- ZAC
- LT RBUF36
- MPYK +58
- DMOV RBUF35
- LTD RBUF34
- MPYK -58
- DMOV RBUF33
- LTD RBUF32
- MPYK +28
- DMOV RBUF31
- LTD RBUF30
- MPYK +37
- DMOV RBUF29
- LTD RBUF28
- MPYK -137
- DMOV RBUF27
- LTD RBUF26
- MPYK +262
- DMOV RBUF25
- LTD RBUF24
- MPYK -393
- DMOV RBUF23
- LTD RBUF22
- MPYK +509
- DMOV RBUF21
- LTD RBUF20
- MPYK -588
- DMOV RBUF19
- LTD RBUF18
- MPYK +617
- DMOV RBUF17
- LTD RBUF16
- MPYK -588
- DMOV RBUF15
- LTD RBUF14
- MPYK +509
- DMOV RBUF13
- LTD RBUF12
- MPYK -393
- DMOV RBUF11
- LTD RBUF10
- MPYK +262
- DMOV RBUF9
- LTD RBUF8
- MPYK -137
- DMOV RBUF7
- LTD RBUF6
- MPYK +37
- DMOV RBUF5
- LTD RBUF4
- MPYK +28
- DMOV RBUF3
- LTD RBUF2
- MPYK -58
- DMOV RBUF1
- LTD RBUF0
- MPYK +58
- APAC
- SACH DL1,4 * OUTPUT OF I CHAN.
- *
- * RX GROUP DELAY EQUALIZER
- *
- LARK 0,TEMP
- LARP 0
- LDPK 1
- SACH *,4 BIQUAD #1
- LAC *,14 GET INPUT
- LT *
- MPY B10
- ZALH R1Z1
- APAC
- SACH DL1,1
- MPY B11 B1 MULTIPLY
- ZALH R1Z2 GET Z-2
- LTA DL1
- MPY A11 A1 MULTIPLY
- LTA DL1
- SACH R1Z1 UPDATE Z-1
- MPY A12 A2 MULTIPLY
- ZAC
- LTA *
- MPY B12 B2 MULTIPLY
- APAC
- SACH R1Z2 UPDATE Z-2
- *
- ZALH DL1 BIQUAD #2
- SACH *
- LT *
- MPY B20 B0 MULTIPLY
- ZALH R2Z1
- APAC
- SACH DL1,1
- MPY B21 B1 MULTIPLY
- ZALH R2Z2 GET Z-2
- LTA DL1
- MPY A21 A1 MULTIPLY
- LTA DL1
- SACH R2Z1 UPDATE Z-1
- MPY A22 A2 MULTIPLY
- ZAC
- LTA *
- MPY B22 B2 MULTIPLY
- APAC
- SACH R2Z2 UPDATE Z-2
- LDPK 0
- *
- *--- HILBERT TRANSFORMER
- ZALH DL1
- SACH HD1
- ZAC
- LT HD4
- MPYK 2083
- DMOV HD3
- LTD HD2
- MPYK -2083
- DMOV HD1
- APAC
- SACH QSUM,4
- B AGCAL
- *
- PAGE
- ********------------------------------------------********
- ***** RECEIVER I CHANNEL BANDPASS FILTER. *****
- ***** SAMPLING RATE IS 9600HZ. ANSWER MODE *****
- ********------------------------------------------********
- ANSBSF LT RBUF0 GET INPUT & SCALE
- MPYK >2A0
- PAC
- SACH RBUF0,4 SAVE IN Z-1 OF FIR
- *
- LAC DL3 UPDATE DELAY BUFFER
- SACL ISUM FOR FILTER OUTPUT
- DMOV DL2
- DMOV DL1
- *
- * 33 TAP FIR BANDPASS FILTER
- *
- ZAC INIT. ACC
- LT RBUF32 LOAD T REGISTER
- MPYK 50 MULTIPLY
- LTD RBUF31 LOAD T, ADD AND DELAY
- MPYK 320 MULTIPLY
- LTD RBUF30 LOAD T, ADD AND DELAY
- MPYK 679 MULTIPLY
- LTD RBUF29 LOAD T, ADD AND DELAY
- MPYK 917 MULTIPLY
- LTD RBUF28 LOAD T, ADD AND DELAY
- MPYK 742 MULTIPLY
- LTD RBUF27 LOAD T, ADD AND DELAY
- MPYK 172 MULTIPLY
- LTD RBUF26 LOAD T, ADD AND DELAY
- MPYK -391 MULTIPLY
- LTD RBUF25 LOAD T, ADD AND DELAY
- MPYK -487 MULTIPLY
- LTD RBUF24 LOAD T, ADD AND DELAY
- MPYK -122 MULTIPLY
- LTD RBUF23 LOAD T, ADD AND DELAY
- MPYK 101 MULTIPLY
- LTD RBUF22 LOAD T, ADD AND DELAY
- MPYK -465 MULTIPLY
- LTD RBUF21 LOAD T, ADD AND DELAY
- MPYK -1719 MULTIPLY
- LTD RBUF20 LOAD T, ADD AND DELAY
- MPYK -2625 MULTIPLY
- LTD RBUF19 LOAD T, ADD AND DELAY
- MPYK -2011 MULTIPLY
- LTD RBUF18 LOAD T, ADD AND DELAY
- MPYK 253 MULTIPLY
- LTD RBUF17 LOAD T, ADD AND DELAY
- MPYK 2869 MULTIPLY
- LTD RBUF16 LOAD T, ADD AND DELAY
- MPYK 4023 MULTIPLY
- LTD RBUF15 LOAD T, ADD AND DELAY
- MPYK 2869 MULTIPLY
- LTD RBUF14 LOAD T, ADD AND DELAY
- MPYK 253 MULTIPLY
- LTD RBUF13 LOAD T, ADD AND DELAY
- MPYK -2011 MULTIPLY
- LTD RBUF12 LOAD T, ADD AND DELAY
- MPYK -2625 MULTIPLY
- LTD RBUF11 LOAD T, ADD AND DELAY
- MPYK -1719 MULTIPLY
- LTD RBUF10 LOAD T, ADD AND DELAY
- MPYK -465 MULTIPLY
- LTD RBUF9 LOAD T, ADD AND DELAY
- MPYK 101 MULTIPLY
- LTD RBUF8 LOAD T, ADD AND DELAY
- MPYK -122 MULTIPLY
- LTD RBUF7 LOAD T, ADD AND DELAY
- MPYK -487 MULTIPLY
- LTD RBUF6 LOAD T, ADD AND DELAY
- MPYK -391 MULTIPLY
- LTD RBUF5 LOAD T, ADD AND DELAY
- MPYK 172 MULTIPLY
- LTD RBUF4 LOAD T, ADD AND DELAY
- MPYK 742 MULTIPLY
- LTD RBUF3 LOAD T, ADD AND DELAY
- MPYK 917 MULTIPLY
- LTD RBUF2 LOAD T, ADD AND DELAY
- MPYK 679 MULTIPLY
- LTD RBUF1 LOAD T, ADD AND DELAY
- MPYK 320 MULTIPLY
- LTD RBUF0 LOAD T, ADD AND DELAY
- MPYK 50 MULTIPLY
- APAC FORM RESULT
- SACH DL1,4 SCALE AND SAVE OUTPUT
- *
- * RX GROUP DELAY EQUALIZER
- *
- LARK 0,TEMP
- LARP 0
- LDPK 1
- SACH *,4 BIQUAD #1
- LT *
- MPY B10 B0 MULTIPLY
- ZALH R1Z1
- APAC
- SACH DL1,1
- MPY B11 B1 MULTIPLY
- ZALH R1Z2 GET Z-2
- LTA DL1
- MPY A11 A1 MULTIPLY
- LTA DL1
- SACH R1Z1 UPDATE Z-1
- MPY A12 A2 MULTIPLY
- ZAC
- LTA *
- MPY B12 B2 MULTIPLY
- APAC
- SACH R1Z2 UPDATE Z-2
- *
- ZALH DL1
- SACH * BIQUAD #2
- LT *
- MPY B20
- ZALH R2Z1
- APAC
- SACH DL1,1
- MPY B21 B1 MULTIPLY
- ZALH R2Z2 GET Z-2
- LTA DL1
- MPY A21 A1 MULTIPLY
- LTA DL1
- SACH R2Z1 UPDATE Z-1
- MPY A22 A2 MULTIPLY
- ZAC
- LTA *
- MPY B22 B2 MULTIPLY
- APAC
- SACH R2Z2 UPDATE Z-2
- *
- LAC DL1,5 SCALE UP OUTPUT
- SACL DL1
- LDPK 0
- *
- * HILBERT TRANSFORM FOR 90 DEG PHASE SHIFT
- *
- ZALH DL1 GET INPUT
- SACH HD1 SAVE IN Z-1
- ZAC INIT. ACC
- LT HD7
- MPYK +794
- LTD HD6
- MPYK -1619
- LTD HD5
- MPYK +2222
- LTD HD4 LOAD T, ADD AND DELAY
- MPYK 0 MULTIPLY
- LTD HD3 LOAD T, ADD AND DELAY
- MPYK -2222
- LTD HD2 LOAD T, ADD AND DELAY
- MPYK +1619 MULTIPLY
- LTD HD1
- MPYK -794
- APAC FORM RESULT
- SACH QSUM,4 SCALE AND SAVE OUTPUT
- LAC QSUM,2
- SACL QSUM
- *
- PAGE
- **********************************************************************
- * DETECT MAXIMUM SIGNAL STRENGTH OF RECI PER BAUD
- AGCAL EQU $
- LAC ISUM
- ABS
- SACL TEMP
- LAC QSUM
- ABS
- SUB TEMP
- BLEZ AGCAL1
- ADD TEMP
- SACL TEMP
- *
- AGCAL1 LAC TEMP * AGC VALUE CALCULATED USING ISUM
- SUB BSMAX COMPARE TO PREVIOUS MAX VALUE
- BLZ OVRMAX IF LESS THAN THEN JUMP OVER UPDATE
- ADD BSMAX RESTORE VALUE AND
- SACL BSMAX STORE AS NEW MAX
- * MULTIPLY IN AGC FACTOR TO FILTERED SIGNAL
- OVRMAX LT AGC MULTIPLY THE AGC FACTOR
- MPYI MPY ISUM BY THE FILTERED DATA ELEMENT
- PAC MOVE THE PRODUCT TO THE ACC
- SACH TEMP,4 SAVE TOP HALF OF ACC
- AND PLUS1 MASK OFF UNUSABLE BITS
- SACL ISUM SAVE BOTTOM HALF OF ACC
- ZALH TEMP RELOAD HIGH ACC VALUE
- ADD ISUM,4 SHIFT LOW HALF INTO POSITION
- SACH ISUM,4 STORE Q15 GAINED FILTERED DATA
- MPYQ LT AGC MULTIPLY THE AGC FACTOR
- MPY QSUM BY THE FILTERED DATA ELEMENT
- PAC MOVE THE PRODUCT TO THE ACC
- SACH TEMP,4 SAVE TOP HALF OF ACC
- AND PLUS1 MASK OFF UNUSABLE BITS
- SACL QSUM SAVE BOTTOM HALF OF ACC
- ZALH TEMP RELOAD HIGH ACC VALUE
- ADD QSUM,4 SHIFT LOW HALF INTO POSITION
- SACH QSUM,4 STORE Q15 GAINED FILTERED DATA
- *
- B MASTER EXECUTE NEXT TIME SLICE TASK
- *
- PAGE
- ***************************************************************
- ***************************************************************
- * This is the interface code for access of the CODEC thru *
- * the serial port of the TMS32011. The routine monitors *
- * the FR interrupt flag and when active it returns *
- ***************************************************************
- ANALOG IN TEMP,PA0 GET THE CURRENT SERIAL PORT STATUS
- LACK 8 LOOK AT THE FR INTERRUPT FLAG
- AND TEMP IN BIT 3 OF STATUS WORD
- BZ ANALOG IF ZERO LOOK AGAIN
- LACK >F RESET THE INTERRUPT FLAGS
- OR TEMP IN THE SERIAL PORT STATUS
- SACL TEMP SAVE IT FOR OUTPUT
- OUT TEMP,PA0 SEND TO SERIAL PORT
- RET RETURN TO CALLING SEQUENCE
- ***************************************************************
- * This is the interface code for access of the CODEC thru *
- * the serial port of the TMS32011. The routine writes then *
- * reads from the TMS32011 device. *
- ***************************************************************
- TMS011 EQU $
- LAC XMTOUT GET DATA TO BE TRANSMITTED
- BGEZ POSOUT IS IT POSITIVE
- ABS GET MAGNETUDE
- ADD ONE,15 ADD ON SIGN BIT
- POSOUT ADD ONE,5 ADD BIAS
- ADD ONE OF >21
- OVRIT1 SACL XMTHLD SAVE FOR XMIT AND DEBUG
- OUT XMTHLD,PA1 OUTPUT TO CODEC
- IN RECHLD,PA1 INPUT FROM CODEC
- LAC RECHLD GET INPUT DATA
- BGEZ POSIN IS IT POSITIVE
- AND MASK1 GET THE MAGNETUDE OF THE VALUE
- SACL TEMP HOLD THE VALUE
- ZAC CLEAR THE ACCUMULATOR
- SUB TEMP NEGATE THE INPUT VALUE
- ADD ONE,5 ADD BIAS
- ADD ONE OF >21
- B OVRIT2 SKIP POSITIVE BIAS
- POSIN SUB ONE,5 SUBTRACT BIAS
- SUB ONE OF >21
- OVRIT2 SACL RBUF0 SAVE INPUT VALUE
- NOP FOR DEBUG
- NOP FOR DEBUG
- RET RETURN TO CALLING SEQUENCE
- *
- END