Texas Instruments TLV1562 manual Programming Strategies for the ’C54x, Explanations, Timer Output

Page 26
8.3Programming Strategies for the ’C54x, Explanations

Software Overview

8.3Programming Strategies for the ’C54x, Explanations

Before listing the program code, this chapter introduces some basic instructions (strategies) to provide the ’C54x user with some ideas for dealing with the DSP architecture.

8.3.1Optimizing CPU Resources for Maximum Data Rates

The ’C54x processor on the DSKplus starter kit runs at an internal clock frequency of 40 MHz. Since the pipeline architecture allows most instructions to be executed in one cycle, the DSP provides up to 40 MIPS. However, some instructions, especially branch instructions, are not single cycle instructions; therefore, they lower the available CPU power. Because of the high transfer rate of the TLV1562 ADC, the software code must be optimized to test the full ADC performance. Since correct signal timing between DSP and ADC requires some instructions per sample, the CPU power required between two samples is very small.

The optimum case is to read a new sample, store it into memory, execute a customized task as it could be data filtering (FFT, FIR, IIR), and send a digital result to one of the DACs. Unfortunately, this task is impossible at the ADC’s maximum throughput of 40 MIPS. Therefore, this software only stores the samples and optionally moves them out to the DACs. Enabling all options at the same time prevents the application from running at maximum throughput.

The following switches enable/disable these actions:

SAVE_INTO_MEMORY .set 00001h; set 1 to store the samples into memory SEND_OUT_SERIAL .set 00001h; set 1 to send last sample to the serial DAC SEND_OUT_PARALLEL .set 00001h; set 1 to send last sample out to the parallel DAC

8.3.2Address and Data Bus for I/O Tasks

8.3.2.1Writing

PORT(PA) = Smem

Writing something to the I/O bus uses the port instruction. PA sets the ADDRESS bus permanently to that value. Smem is a value from memory, transferred for one clock cycle to the DATA bus.

@send = #01234h ; set the content of memory address send to 1234h

port(0FFFFh) = @send ; set address bus to FFFFh and write 1234h for one cycle ; on the DATA bus

8.3.2.2Reading

Smem = PORT(PA)

Reading from the I/O bus. PA sets the ADDRESS bus. Smem is a memory cell, PA the address on the bus.

8.3.3Timer Output

@TCR

= #00010h

; deactivate timer

@PRD

= #00000h

;

@TCR

= #00C01h

; set timer output toggling frequency to ￿CLKOUT

 

 

; frequency ; and start toggling

20SLAA040

Image 26
Contents Application Report JulySLAA040 TParalInteMS3rflelADConvertertotheacing20C54xDSPtheTLV1562IMPORTANT NOTICE Contents 8.5.5 Figures List of FiguresList of Tables viSLAA040 2 The Board Interfacing the TLV1562 Parallel ADC to the TMS320C54x DSP1 Introduction 2.1 TMS320C54x Starter Kit2.3.1 Suggestions for the ’C54x to TLV1562 Interface 2.2 TLV1562EVM2.3 ADC TLV1562 Overview 2.3.1.1 The Universal InterfaceFigure 2. TLV1562 to ’C54x DSP Interface of the EVM Using RD or the CSTART Signal to Start Conversion2.3.2 Recyclic Architecture 2.4.1 TLC5618A - Serial DAC 2.3.3 Note on the Interface, Using an External ADC Clock Drive2.4 Onboard Components Figure 4. THS5651 to C542 DSP Interface 2.4.2 THS5651 - Parallel Output CommsDACFigure 3. TLC5618A to ’C542 DSP Interface 3.2 Input Data Bits 3 Operational Overview3.1 Reference Voltage Inputs Table 1. Signal Connections 3.3 Connections Between the DSP and the EVMTable 3. 2-Position Jumpers 3.3.1 Jumpers Used on the TLV1562EVMTable 2. 3-Position Jumpers 8SLAA0404 The Serial DAC/DSP System Table 4. DSP/DAC InterconnectionTable 5. DSP Serial Port Signals and Registers 5 The DSP Serial Port6 Other DSP/TLV1562 Signals 6.1 DSP Internal Serial Port Operation7.1 Writing to the ADC 7.2 Mono Interrupt Driven Mode Using RD7 Conversation Between the TLV1562 and the DSP Table 6. DSP Algorithm for Writing to the ADCtENDATAOUT = 41 ns Table 7. DSP Algorithm for Mono Interrupt Driven Mode Using RDtDCSL-sample+1ADCSYSCLK 14 SLAA040 7.3 Mono Interrupt Driven Mode Using CSTARTTable 8. DSP Algorithm for Mono Interrupt Driven Mode Using CSTART 7.4 Dual Interrupt Driven Mode Table 9. DSP Algorithm for Dual Interrupt Driven Mode16 SLAA040 7.5 Mono Continuous ModeTable 10. DSP Algorithm for Mono Continuous Mode 7.6 Dual Continuous Mode Table 11. DSP Algorithm for Dual Continuous Mode8.2 DSP Memory Map 8 Software Overview8.1 Software Development tools Figure 5. Memory Map 8.3.1 Optimizing CPU Resources for Maximum Data Rates 8.3.3 Timer Output8.3 Programming Strategies for the ’C54x, Explanations 8.3.2 Address and Data Bus for I/O Tasks8.3.6 Interfacing the Serial DAC 5618A to the DSP 8.3.5 Generating the Chip Select Signal and the CSTART Signal8.3.4 Data Page Pointer GOTO MARK 8.3.7 Interrupt Latency8.3.8 Branch Optimization goto/dgoto, call/dcall MARK DP = #1 ARP = #58.4.1 Software Principals of the Interface 8.3.9 Enabling Software Modules .if/.elseif/.endif8.4 Software Code Explanation Advantage 8.4.1.2 Timed Solution8.4.1.1 Software Polling DisadvantageAdvantages 8.4.1.3 Interrupt Driven Solution8.4.1.5 Setting the Right Switches DisadvantagesTable 13. Instruction in the Program Header Step Table 12. Switch SettingsTask Table 14. Instruction in the Program Header Step 8.5 Flow Charts and Comments for All Software Modes8.5.1 The Mono Interrupt Driven Mode Using RD to Start Conversion 8.4.1.6 Common Software for all ModesCode verification Program FilesOther Files common file of all modes constants definitionFigure 6. Software Flow of the Mono Interrupt Driven Solution Includes the complete software algorithm to control the monomode 8.5.2 Mono Interrupt Driven Mode Using CSTART to Start ConversionCalibration procedure of the DAC Common file of all modes constants definitionPoll INTO Pin Until h/0 Transition Occurs Initialize SPISAVE Pull Down CSTART8.5.2.1 Throughput Optimization† This only works for one TLV1562 not multiple because CS is not usedMaximum Performance at 1.2 MSPS with Internal Clock 8.5.3 Dual Interrupt Driven ModeFigure 8. Time Optimization monocst1 IMPORTANT NOTE The code has been optimized to maximize the data throughput. It was found that CSTART can be pulled low earlier than the data read instruction is performed by the DSP. This saves the 100-ns wait time in STEP 3 because the data read requires at least 100 ns. Therefore, CSTART gets pulled high directly after data read, and the interface becomes faster and gains throughput. This variation will be found in the code. The data acquisition is done in a small number of steps that explains everything inside the code Software Overview 8.5.4 Mono Continuous Mode Figure 10. Flow Chart Mono Continuous Mode 8.5.5 Dual Continuous Mode Figure 11. Flow Chart Dual Continuous Mode Code verification 8.6.1.1 Constants.asm 8.6 Source Code8.6.1 Common Software for all Modes except C-Callable set 000C0h Operate without calibrated inputs no offset 42 SLAA0408.6.1.2 Interrupt Vectors 4C internal timer interrupt 44 SLAA040File Linker.lnk COMMAND FILE 8.6.1.3 linker,cmd8.6.1.4 Auto.bat title ”COMMAND FILE FOR TLV1562.ASM”jump address to init. new channel Mainprogram Monomode.asmpointer address when using any of the following variables counter for one channelsent value to register CR0 of the ADC 48 SLAA040 if SENDOUTSERIALendif if INT0DRIVENPOLLINGDRV endif = bit*AR5,15-0 if AUTOPWDNENABLEendif if DIFFINPUTMODE elseif INT0DRIVENelseif NOINT0SIG 52 SLAA040 8.6.3 Calibration of the ADC CALIBRAT.ASM54 SLAA040 if SMECALIBRATION 56 SLAA040 endif 58 SLAA040 Software Overview 60 SLAA040 if INT0DRIVENPOLLINGDRV 62 SLAA040 = bit*AR5,15-0 endif if SAVEINTOMEMORY 64 SLAA040Interfacing the TLV1562 Parallel ADC to the TMS320C54x DSP Interrupt Routine handler - see 8.6.1.2 Interrupt Vectors 8.6.5 Dual Interrupt Driven ModeConstants definition - see 8.6.1.1 Constants.asm Mainprogram DUALIRQ1.asmSoftware Overview Interfacing the TLV1562 Parallel ADC to the TMS320C54x DSPSoftware Overview if SENDOUTSERIALInterfacing the TLV1562 Parallel ADC to the TMS320C54x DSP 70 SLAA040 endif 72 SLAA040 if SAVEINTOMEMORY 74 SLAA040 8.6.6 Mono Continuous ModeMainprogram MONOCON1.asm Software Overview 76 SLAA040 endif if EXTERNALCLOCK 78 SLAA040 endif 80 SLAA040 8.6.7 Dual Continuous ModeMainprogram DUALCON1.asm Software Overview 82 SLAA040 endif if DIFFINPUTMODE 84 SLAA040 Software Overview TLV1562Channel, Save Memory Start address, NUMBEROFSAMPLES 8.6.8 C-CallableMainprogram C1562.c 80h samples of channel 1 will be stored beginning on 2000hSoftware Overview 88 SLAA040 AR7+ = data@ADSAMPLE Vectors.asm 90 SLAA040int2 returnenable 48 external interrupt int2 nop 92 SLAA040 Auto.batLinker.cmd 9 Summary 10 References