home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / bell212.arc / TSAM.ASM < prev    next >
Encoding:
Assembly Source File  |  1986-07-25  |  13.1 KB  |  514 lines

  1.        TITL 'TMS32011 SAMPLE RATE CODE'
  2.        IDT  'SAMPLE'
  3.        OPTION XREF,TUNLST
  4. ********------------------------------------------********
  5. *****    This code includes the sample rate routines  *****
  6. *****    which run at 9600 Hz.  This includes only    *****
  7. *****    the 1200bps operations.              *****
  8. *****                             *****
  9. *****    Module Built by Peter Ehlig  12/02/85         *****
  10. *****    Revision 1.0                     *****
  11. *****                             *****
  12. *****    COPYRIGHT TEXAS INSTRUMENTS,  07/25/86         *****
  13. *****                             *****
  14. ********------------------------------------------********
  15.        DEF  RUN12,RUN12A,WAIT,WAIT1,TMS011,ANALOG
  16.        REF  MASTER,SETUPO,SETUPA,HBMK
  17.        REF  NXTTON,DT1
  18.        PAGE
  19.        COPY TASKMAS.EQU
  20. *
  21. RUN12  EQU  $
  22.        LAC  ONE,7     CHECK A-/O BIT IN STATUS REG.
  23.        AND  RECST
  24.        BNZ  RUNO12
  25. *
  26. RUN12A EQU  $
  27.        CALL SETUPA
  28.        LACK HBMK       SET VALUE FOR ANSWER TONE FREQUENCY
  29.        SACL TALF2      FOR DIALER
  30.        LAC  ONE,14     SET MASK ROUNDING TO >8000
  31.        SACL H8000
  32.        ZAC           CLEAR FRACTION
  33.        SACL FRACT2
  34. WAIT1  EQU  $
  35.        LAC  ONE,2      IS ANSWER TONE XMIT BIT SET
  36.        AND  RECST      IN THE STATUS REGISTER
  37.        BZ   WAIT       IF NOT REGULAR XMIT SEQUENCE
  38.        LAC  ONE,4      IF YES, IS CARRIER DETECT SET
  39.        AND  RECST
  40.        BNZ  WAIT2      IF YES RESET XMIT SQLCH BIT, GENERATE
  41.        LARP 1           *ANSWER TONE THROUGH DIALER
  42.        LARK 1,TALF2    *--
  43.        CALL NXTTON     *--
  44.        LAC  TONE2,13   *
  45.        SACH XMTOUT     *
  46.        CALL ANALOG     *
  47.        CALL TMS011     OUTPUT AND INPUT
  48.        B    ANSBSF     RUN ANS MODE RECEIVER. SKIP XMITTER
  49. *
  50. WAIT2  LACK DT1        REDO SETUPA SINCE TALF1=XDELTA
  51.        TBLR XDELTA
  52.        LACK >FB        RESET XMIT SQLCH BIT (BIT2) OF RECST
  53.        AND  RECST
  54.        SACL RECST      AND SAVE IT
  55.        B    WAIT
  56. *
  57. RUNO12 CALL SETUPO       SET SYSTEM UP FOR 1200BPS OPERATION
  58. *
  59. ********------------------------------------------********
  60. *****    TRANSMITER SECTION STARTS HERE.          *****
  61. ********------------------------------------------********
  62. WAIT   CALL ANALOG    * WAIT FOR 9600HZ SAMPLE PULSE
  63. *
  64. GO     NOP
  65.        CALL TMS011    SEND AND RECEIVE FROM 32011
  66. ********------------------------------------------********
  67. *****    TRANSMITER SECTION STARTS HERE.          *****
  68. ********------------------------------------------********
  69. XMITER    EQU    $
  70. *
  71. ********------------------------------------------********
  72. *****       SINE(COSINE) WAVE GENERATION          *****
  73. ********------------------------------------------********
  74. SWAVE    EQU    $
  75.     LAC    XALPHA,8    * DELTA IS THE INCREMENT.
  76.     SACH    TEMP        * ISOLATE INTEGER PORTION.
  77.     LAC    TEMP
  78.     ADD    OFSET0        * ADD INDEX TO SINE TABLE.
  79.     TBLR    SINA        * SINE VALUE,  (Q15).
  80.     LACK    >20        * OFFSET TO COSINE VALUE (Q15).
  81.     ADD    TEMP
  82.     AND    MASK2
  83.     ADD    OFSET0        * ADD INDEX TO COSINE TABLE.
  84.     TBLR    COSA        * COSINE VALUE, (Q15).
  85.     LAC    XALPHA        * COMPUTE ADDRESS OF NEXT
  86.     ADD    XDELTA        * POINT FOR TABLE.
  87.     AND    MASK1        * KEEP MOD128, MASK=>7FFF.
  88.     SACL    XALPHA        * SAVE NEXT ADDRESS
  89. *
  90. ********------------------------------------------********
  91. *****  TRANSMITTER 48 TAP RAISED COSINE FILTER.      *****
  92. *****  INPUTS UPDATED AT 600HZ RATE.             *****
  93. *****  OUTPUT UPDATED AT 9600HZ RATE.             *****
  94. ********------------------------------------------********
  95. RACS    EQU    $
  96.     LAC    XPTR
  97.     TBLR    CX0        * RETRIEVE COEFFICIENTS
  98.     ADD    ONE
  99.     TBLR    CX1
  100.     ADD    ONE
  101.     TBLR    CX2
  102.     ADD    ONE
  103.     SACL    XPTR
  104. *
  105.     ZAC
  106.     LT    XIBUF2        * COMPUTE FILTER TAPS ICHAN.
  107.     MPY    CX2
  108.     LTA    XIBUF1
  109.     MPY    CX1
  110.     LTA    XIBUF0
  111.     MPY    CX0
  112.     APAC
  113.     SACH    XIOUT,1
  114. *
  115.     ZAC
  116.     LT    XQBUF2        * COMPUTE FILTER TAPS QCHAN.
  117.     MPY    CX2
  118.     LTA    XQBUF1
  119.     MPY    CX1
  120.     LTA    XQBUF0
  121.     MPY    CX0
  122.     APAC
  123.     SACH    XQOUT,1
  124. *
  125. XMIT    ZAC
  126.     LT    XIOUT        * ICHAN*COSwt + QCHAN*SINwt
  127.     MPY    COSA
  128.     LTA    XQOUT
  129.     MPY    SINA
  130.     APAC
  131.     SACH    XMTOUT,1
  132.     LAC    ONE,7
  133.     AND    RECST
  134.     BNZ    ANSBSF
  135. *
  136.        PAGE
  137. ********------------------------------------------********
  138. *****    RECEIVER I CHANNEL BANDPASS FILTER.         *****
  139. *****    SAMPLING RATE IS 9600HZ.  ORIGINATE         *****
  140. ********------------------------------------------********
  141. ORGBSF    LAC    DL2
  142.     SACL    ISUM
  143.     DMOV    DL1
  144.     LAC    RBUF0,15
  145.     SACH    RBUF0
  146.     ZAC
  147.     LT    RBUF36
  148.     MPYK    +58
  149.     DMOV    RBUF35
  150.     LTD    RBUF34
  151.     MPYK    -58
  152.     DMOV    RBUF33
  153.     LTD    RBUF32
  154.     MPYK    +28
  155.     DMOV    RBUF31
  156.     LTD    RBUF30
  157.     MPYK    +37
  158.     DMOV    RBUF29
  159.     LTD    RBUF28
  160.     MPYK    -137
  161.     DMOV    RBUF27
  162.     LTD    RBUF26
  163.     MPYK    +262
  164.     DMOV    RBUF25
  165.     LTD    RBUF24
  166.     MPYK    -393
  167.     DMOV    RBUF23
  168.     LTD    RBUF22
  169.     MPYK    +509
  170.     DMOV    RBUF21
  171.     LTD    RBUF20
  172.     MPYK    -588
  173.     DMOV    RBUF19
  174.     LTD    RBUF18
  175.     MPYK    +617
  176.     DMOV    RBUF17
  177.     LTD    RBUF16
  178.     MPYK    -588
  179.     DMOV    RBUF15
  180.     LTD    RBUF14
  181.     MPYK    +509
  182.     DMOV    RBUF13
  183.     LTD    RBUF12
  184.     MPYK    -393
  185.     DMOV    RBUF11
  186.     LTD    RBUF10
  187.     MPYK    +262
  188.     DMOV    RBUF9
  189.     LTD    RBUF8
  190.     MPYK    -137
  191.     DMOV    RBUF7
  192.     LTD    RBUF6
  193.     MPYK    +37
  194.     DMOV    RBUF5
  195.     LTD    RBUF4
  196.     MPYK    +28
  197.     DMOV    RBUF3
  198.     LTD    RBUF2
  199.     MPYK    -58
  200.     DMOV    RBUF1
  201.     LTD    RBUF0
  202.     MPYK    +58
  203.     APAC
  204.     SACH    DL1,4        * OUTPUT OF I CHAN.
  205. *
  206. * RX GROUP DELAY EQUALIZER
  207. *
  208.     LARK    0,TEMP
  209.     LARP    0
  210.     LDPK    1
  211.     SACH    *,4        BIQUAD #1
  212.     LAC    *,14        GET INPUT
  213.     LT    *
  214.     MPY    B10
  215.     ZALH    R1Z1
  216.     APAC
  217.     SACH    DL1,1
  218.     MPY    B11        B1 MULTIPLY
  219.     ZALH    R1Z2        GET Z-2
  220.     LTA    DL1
  221.     MPY    A11        A1 MULTIPLY
  222.     LTA    DL1
  223.     SACH    R1Z1        UPDATE Z-1
  224.     MPY    A12        A2 MULTIPLY
  225.     ZAC
  226.     LTA    *
  227.     MPY    B12        B2 MULTIPLY
  228.     APAC
  229.     SACH    R1Z2        UPDATE Z-2
  230. *
  231.     ZALH    DL1        BIQUAD #2
  232.     SACH    *
  233.     LT    *
  234.     MPY    B20        B0 MULTIPLY
  235.     ZALH    R2Z1
  236.     APAC
  237.     SACH    DL1,1
  238.     MPY    B21        B1 MULTIPLY
  239.     ZALH    R2Z2        GET Z-2
  240.     LTA    DL1
  241.     MPY    A21        A1 MULTIPLY
  242.     LTA    DL1
  243.     SACH    R2Z1        UPDATE Z-1
  244.     MPY    A22        A2 MULTIPLY
  245.     ZAC
  246.     LTA    *
  247.     MPY    B22        B2 MULTIPLY
  248.     APAC
  249.     SACH    R2Z2        UPDATE Z-2
  250.     LDPK    0
  251. *
  252. *--- HILBERT TRANSFORMER
  253.     ZALH    DL1
  254.     SACH    HD1
  255.     ZAC
  256.     LT    HD4
  257.     MPYK    2083
  258.     DMOV    HD3
  259.     LTD    HD2
  260.     MPYK    -2083
  261.     DMOV    HD1
  262.     APAC
  263.     SACH    QSUM,4
  264.     B    AGCAL
  265. *
  266.     PAGE
  267. ********------------------------------------------********
  268. *****    RECEIVER I CHANNEL BANDPASS FILTER.         *****
  269. *****    SAMPLING RATE IS 9600HZ. ANSWER MODE         *****
  270. ********------------------------------------------********
  271. ANSBSF    LT    RBUF0           GET INPUT & SCALE
  272.     MPYK    >2A0
  273.     PAC
  274.     SACH    RBUF0,4        SAVE IN Z-1 OF FIR
  275. *
  276.     LAC    DL3        UPDATE DELAY BUFFER
  277.     SACL    ISUM        FOR FILTER OUTPUT
  278.     DMOV    DL2
  279.     DMOV    DL1
  280. *
  281. * 33 TAP FIR BANDPASS FILTER
  282. *
  283.     ZAC               INIT. ACC
  284.     LT      RBUF32       LOAD T REGISTER
  285.     MPYK        50           MULTIPLY
  286.     LTD      RBUF31       LOAD T, ADD AND DELAY
  287.     MPYK       320           MULTIPLY
  288.     LTD      RBUF30       LOAD T, ADD AND DELAY
  289.     MPYK       679           MULTIPLY
  290.     LTD      RBUF29       LOAD T, ADD AND DELAY
  291.     MPYK       917           MULTIPLY
  292.     LTD      RBUF28       LOAD T, ADD AND DELAY
  293.     MPYK       742           MULTIPLY
  294.     LTD      RBUF27       LOAD T, ADD AND DELAY
  295.     MPYK       172           MULTIPLY
  296.     LTD      RBUF26       LOAD T, ADD AND DELAY
  297.     MPYK      -391           MULTIPLY
  298.     LTD      RBUF25       LOAD T, ADD AND DELAY
  299.     MPYK      -487           MULTIPLY
  300.     LTD      RBUF24       LOAD T, ADD AND DELAY
  301.     MPYK      -122           MULTIPLY
  302.     LTD      RBUF23       LOAD T, ADD AND DELAY
  303.     MPYK       101           MULTIPLY
  304.     LTD      RBUF22       LOAD T, ADD AND DELAY
  305.     MPYK      -465           MULTIPLY
  306.     LTD      RBUF21       LOAD T, ADD AND DELAY
  307.     MPYK     -1719           MULTIPLY
  308.     LTD      RBUF20       LOAD T, ADD AND DELAY
  309.     MPYK     -2625           MULTIPLY
  310.     LTD      RBUF19       LOAD T, ADD AND DELAY
  311.     MPYK     -2011           MULTIPLY
  312.     LTD      RBUF18       LOAD T, ADD AND DELAY
  313.     MPYK       253           MULTIPLY
  314.     LTD      RBUF17       LOAD T, ADD AND DELAY
  315.     MPYK      2869           MULTIPLY
  316.     LTD      RBUF16       LOAD T, ADD AND DELAY
  317.     MPYK      4023           MULTIPLY
  318.     LTD      RBUF15       LOAD T, ADD AND DELAY
  319.     MPYK      2869           MULTIPLY
  320.     LTD      RBUF14       LOAD T, ADD AND DELAY
  321.     MPYK       253           MULTIPLY
  322.     LTD      RBUF13       LOAD T, ADD AND DELAY
  323.     MPYK     -2011           MULTIPLY
  324.     LTD      RBUF12       LOAD T, ADD AND DELAY
  325.     MPYK     -2625           MULTIPLY
  326.     LTD      RBUF11       LOAD T, ADD AND DELAY
  327.     MPYK     -1719           MULTIPLY
  328.     LTD      RBUF10       LOAD T, ADD AND DELAY
  329.     MPYK      -465           MULTIPLY
  330.     LTD      RBUF9        LOAD T, ADD AND DELAY
  331.     MPYK       101           MULTIPLY
  332.     LTD      RBUF8        LOAD T, ADD AND DELAY
  333.     MPYK      -122           MULTIPLY
  334.     LTD      RBUF7        LOAD T, ADD AND DELAY
  335.     MPYK      -487           MULTIPLY
  336.     LTD      RBUF6        LOAD T, ADD AND DELAY
  337.     MPYK      -391           MULTIPLY
  338.     LTD      RBUF5        LOAD T, ADD AND DELAY
  339.     MPYK       172           MULTIPLY
  340.     LTD      RBUF4        LOAD T, ADD AND DELAY
  341.     MPYK       742           MULTIPLY
  342.     LTD      RBUF3        LOAD T, ADD AND DELAY
  343.     MPYK       917           MULTIPLY
  344.     LTD      RBUF2        LOAD T, ADD AND DELAY
  345.     MPYK       679           MULTIPLY
  346.     LTD      RBUF1        LOAD T, ADD AND DELAY
  347.     MPYK       320           MULTIPLY
  348.     LTD      RBUF0        LOAD T, ADD AND DELAY
  349.     MPYK        50           MULTIPLY
  350.     APAC               FORM RESULT
  351.     SACH      DL1,4        SCALE AND SAVE OUTPUT
  352. *
  353. * RX GROUP DELAY EQUALIZER
  354. *
  355.     LARK    0,TEMP
  356.     LARP    0
  357.     LDPK    1
  358.     SACH    *,4        BIQUAD #1
  359.     LT    *
  360.     MPY    B10        B0 MULTIPLY
  361.     ZALH    R1Z1
  362.     APAC
  363.     SACH    DL1,1
  364.     MPY    B11        B1 MULTIPLY
  365.     ZALH    R1Z2        GET Z-2
  366.     LTA    DL1
  367.     MPY    A11        A1 MULTIPLY
  368.     LTA    DL1
  369.     SACH    R1Z1        UPDATE Z-1
  370.     MPY    A12        A2 MULTIPLY
  371.     ZAC
  372.     LTA    *
  373.     MPY    B12        B2 MULTIPLY
  374.     APAC
  375.     SACH    R1Z2        UPDATE Z-2
  376. *
  377.     ZALH    DL1
  378.     SACH    *        BIQUAD #2
  379.     LT    *
  380.     MPY    B20
  381.     ZALH    R2Z1
  382.     APAC
  383.     SACH    DL1,1
  384.     MPY    B21        B1 MULTIPLY
  385.     ZALH    R2Z2        GET Z-2
  386.     LTA    DL1
  387.     MPY    A21        A1 MULTIPLY
  388.     LTA    DL1
  389.     SACH    R2Z1        UPDATE Z-1
  390.     MPY    A22        A2 MULTIPLY
  391.     ZAC
  392.     LTA    *
  393.     MPY    B22        B2 MULTIPLY
  394.     APAC
  395.     SACH    R2Z2        UPDATE Z-2
  396. *
  397.     LAC    DL1,5        SCALE UP OUTPUT
  398.     SACL    DL1
  399.     LDPK    0
  400. *
  401. * HILBERT TRANSFORM FOR 90 DEG PHASE SHIFT
  402. *
  403.     ZALH DL1           GET INPUT
  404.     SACH HD1           SAVE IN Z-1
  405.     ZAC               INIT. ACC
  406.     LT   HD7
  407.     MPYK +794
  408.     LTD  HD6
  409.     MPYK -1619
  410.     LTD  HD5
  411.     MPYK +2222
  412.     LTD  HD4           LOAD T, ADD AND DELAY
  413.     MPYK 0               MULTIPLY
  414.     LTD  HD3           LOAD T, ADD AND DELAY
  415.     MPYK -2222
  416.     LTD  HD2           LOAD T, ADD AND DELAY
  417.     MPYK +1619           MULTIPLY
  418.     LTD  HD1
  419.     MPYK -794
  420.     APAC               FORM RESULT
  421.     SACH QSUM,4           SCALE AND SAVE OUTPUT
  422.     LAC  QSUM,2
  423.     SACL QSUM
  424. *
  425.     PAGE
  426. **********************************************************************
  427. *    DETECT MAXIMUM SIGNAL STRENGTH OF RECI PER BAUD
  428. AGCAL    EQU    $
  429.     LAC    ISUM
  430.     ABS
  431.     SACL    TEMP
  432.     LAC    QSUM
  433.     ABS
  434.     SUB    TEMP
  435.     BLEZ    AGCAL1
  436.     ADD    TEMP
  437.     SACL    TEMP
  438. *
  439. AGCAL1    LAC    TEMP        * AGC VALUE CALCULATED USING ISUM
  440.     SUB    BSMAX          COMPARE TO PREVIOUS MAX VALUE
  441.     BLZ    OVRMAX          IF LESS THAN THEN JUMP OVER UPDATE
  442.     ADD    BSMAX          RESTORE VALUE AND
  443.     SACL    BSMAX          STORE AS NEW MAX
  444. *    MULTIPLY IN AGC FACTOR TO FILTERED SIGNAL
  445. OVRMAX    LT    AGC          MULTIPLY THE AGC FACTOR
  446. MPYI    MPY    ISUM          BY THE FILTERED DATA ELEMENT
  447.     PAC              MOVE THE PRODUCT TO THE ACC
  448.     SACH    TEMP,4          SAVE TOP HALF OF ACC
  449.     AND    PLUS1          MASK OFF UNUSABLE BITS
  450.     SACL    ISUM          SAVE BOTTOM HALF OF ACC
  451.     ZALH    TEMP          RELOAD HIGH ACC VALUE
  452.     ADD    ISUM,4         SHIFT LOW HALF INTO POSITION
  453.     SACH    ISUM,4         STORE Q15 GAINED FILTERED DATA
  454. MPYQ    LT    AGC          MULTIPLY THE AGC FACTOR
  455.     MPY    QSUM          BY THE FILTERED DATA ELEMENT
  456.     PAC              MOVE THE PRODUCT TO THE ACC
  457.     SACH    TEMP,4          SAVE TOP HALF OF ACC
  458.     AND    PLUS1          MASK OFF UNUSABLE BITS
  459.     SACL    QSUM          SAVE BOTTOM HALF OF ACC
  460.     ZALH    TEMP          RELOAD HIGH ACC VALUE
  461.     ADD    QSUM,4         SHIFT LOW HALF INTO POSITION
  462.     SACH    QSUM,4         STORE Q15 GAINED FILTERED DATA
  463. *
  464.        B    MASTER         EXECUTE NEXT TIME SLICE TASK
  465. *
  466.        PAGE
  467. ***************************************************************
  468. ***************************************************************
  469. *  This is the interface code for access of the CODEC thru    *
  470. *  the serial port of the TMS32011.  The routine monitors     *
  471. *  the FR interrupt flag and when active it returns          *
  472. ***************************************************************
  473. ANALOG IN   TEMP,PA0    GET THE CURRENT SERIAL PORT STATUS
  474.        LACK 8        LOOK AT THE FR INTERRUPT FLAG
  475.        AND  TEMP    IN BIT 3 OF STATUS WORD
  476.        BZ   ANALOG    IF ZERO LOOK AGAIN
  477.        LACK >F        RESET THE INTERRUPT FLAGS
  478.        OR   TEMP    IN THE SERIAL PORT STATUS
  479.        SACL TEMP    SAVE IT FOR OUTPUT
  480.        OUT  TEMP,PA0    SEND TO SERIAL PORT
  481.        RET        RETURN TO CALLING SEQUENCE
  482. ***************************************************************
  483. *  This is the interface code for access of the CODEC thru    *
  484. *  the serial port of the TMS32011.  The routine writes then  *
  485. *  reads from the TMS32011 device.                  *
  486. ***************************************************************
  487. TMS011 EQU  $
  488.        LAC  XMTOUT    GET DATA TO BE TRANSMITTED
  489.        BGEZ POSOUT    IS IT POSITIVE
  490.        ABS        GET MAGNETUDE
  491.        ADD  ONE,15    ADD ON SIGN BIT
  492. POSOUT ADD  ONE,5    ADD BIAS
  493.        ADD  ONE     OF >21
  494. OVRIT1 SACL XMTHLD    SAVE FOR XMIT AND DEBUG
  495.        OUT  XMTHLD,PA1    OUTPUT TO CODEC
  496.        IN   RECHLD,PA1    INPUT FROM CODEC
  497.        LAC  RECHLD    GET INPUT DATA
  498.        BGEZ POSIN    IS IT POSITIVE
  499.        AND  MASK1    GET THE MAGNETUDE OF THE VALUE
  500.        SACL TEMP    HOLD THE VALUE
  501.        ZAC        CLEAR THE ACCUMULATOR
  502.        SUB  TEMP    NEGATE THE INPUT VALUE
  503.        ADD  ONE,5    ADD BIAS
  504.        ADD  ONE     OF >21
  505.        B    OVRIT2    SKIP POSITIVE BIAS
  506. POSIN  SUB  ONE,5    SUBTRACT BIAS
  507.        SUB  ONE     OF >21
  508. OVRIT2 SACL RBUF0    SAVE INPUT VALUE
  509.        NOP        FOR DEBUG
  510.        NOP        FOR DEBUG
  511.        RET        RETURN TO CALLING SEQUENCE
  512. *
  513.        END
  514.