TMS320C6000系列DSP的软件优化技术(精)
第3章-1 TMS320C6000系列DSP指令系统
B3,B4,B2 B5,B6,B7 ;能检测, 无冲突
|| [B0] SUB.S2 L5: [!B1] ADD.L2
B8,B9,B7 B5,B6,B7 ;不能检测
|| [B0] SUB.S2
B8,B9,B7
TMS320C6000系列DSP指令集
7.常用指令描述
(1)ABS整型数饱和绝对值
语法:ABS (.unit)
指令后一个周期 3FF6 0010h(1073086480) 3FF6 0010h(1073086480)
TMS320C6000系列DSP指令集
(2)ADD(U)有符号/无符号整型饱和加 语法:ADD (.unit) src1, src2,dst 或 ADDU (.L1 or .L2) src1,src2, dst 或 ADD (.D1 or .D2) src2, src1, dst .unit = .L1, .L2, .S1, .S2 .L1,.L2和.S1, .S2操作数描述:src2加到src1,将结果放入
TMS320C6000系列DSP指令集
• 在代码中使用方括号对条件操作进行描述,方括号内为条 件寄存器名。
[B0] ADD .L1 A1, A2, A3
|| [!B0] ADD .L2 B1, B2, B3 互斥指令
TMS320C6000系列DSP指令集
6.资源限制
(1)使用相同功能单元指令的限制 下面的执行包是无效的: ADD .S1 A0, A1, A2 || SHR .S1 A3, 15, A4 ;.S1被两条指令同时使用 下面的执行包是有效的: ADD .L1 A0, A1, A2 || SHR .S1 A3, 15, A4 ;使用两个不同功能单元
0000 4B7h
DSP_C6000软件优化__线性汇编
zero sum .reg伪指令 伪指令: loop: ldh *p_m++, m .reg伪指令: •声明符号变量,变量由优化器 ldh *p_n++, n 选择与功能单元一致的寄存器 mpy m, n, prod •.reg在.(c)proc/ .endproc内有效 add prod, sum, sum •当变量为40/64bit时,变量使用 [count] sub count, 1, count 寄存器对格式:如ahi:alo [count] b loop .endproc
远见品质
.mdep伪指令
假如你需要指明2个或更多的存储体的相关性,你可以 使用.mdep伪指令。用存储体相关性标号来注释你的代 码,并且在线性汇编函数中加上.mdep伪指令。 当使用了.no_mdep或-mt后,才需要使用.mdep伪指令。
.mdep伪指令表明从LDW指令到STW指令中有存储体相关 性。这就意味着STW指令必须在LDW指令后执行。.mdep 伪指令不表明在STW指令到LDW指令中存在存储体相关性。 要处理后一种情况,还需要一个.mdep伪指令。
C64的 L1D的 存储体结构: 8×32bit
远见品质
流水线停顿
同一周期对同一bank的两次读取引起流水线阻塞的情况。 LDW .D1 *A4++,A5 ; load 1, A4 address is in bank 0 || LDW .D2 *B4++,B5 ; load 2, B4 address is in bank 0
线性汇编文件基本考虑事项
线性汇编文件使用“.sa”扩展名 仅对指定的代码段进行优化,指定代码段 外的代码被拷贝为输出“.asm”文件 线性汇编过程可以: 传递参数 返回结果 使用符号变量 不考虑流水线问题
TMS320C6000 DSP Software-Programmable Phase-Locked Loop (PLL) Controller RG
TMS320C6000DSPSoftware-Programmable Phase-Locked Loop(PLL)ControllerReference GuideLiterature Number:SPRU233CNovember20062SPRU233C–November2006Submit Documentation FeedbackPreface (5)1Overview (7)2Functional Description (9)2.1Multiplier and Dividers (9)2.2Reset Controller (9)3Configuration (11)3.1Initialization (11)3.2PLL Power Down (11)3.3PLL Power Wake Up (12)4Registers (12)4.1PLL Controller Peripheral Identification Register(PLLPID) (12)4.2PLL Control/Status Register(PLLCSR) (13)4.3PLL Multiplier Control Register(PLLM) (14)4.4PLL Controller Divider Registers(PLLDIV0-PLLDIV3) (14)4.5Oscillator Divider1Register(OSCDIV1) (15)SPRU233C–November2006Table of Contents3 Submit Documentation FeedbackList of Figures1PLL Controller Block Diagram (8)2Reset Controller Lengthening the Internal Reset Signal (10)3PLL Controller Peripheral Identification Register(PLLPID) (12)4PLL Control/Status Register(PLLCSR) (13)5PLL Multiplier Control Register(PLLM) (14)6PLL Controller Divider Register(PLLDIV n) (14)7Oscillator Divider1Register(OSCDIV1) (15)List of Tables1PLL Controller Registers (12)2PLL Controller Peripheral Identification Register(PLLPID)Field Descriptions (12)3PLL Control/Status Register(PLLCSR)Field Descriptions (13)4PLL Multiplier Control Register(PLLM)Field Descriptions (14)5PLL Controller Divider Register(PLLDIV n)Field Descriptions (14)6Oscillator Divider1Register(OSCDIV1)Field Descriptions (15)4List of Figures SPRU233C–November2006Submit Documentation FeedbackPrefaceSPRU233C–November2006About This ManualThis document describes the operation of the software-programmable phase-locked loop(PLL)controller in the digital signal processors(DSPs)of some of the TMS320C6000™DSP family.Refer to thedevice-specific data manual to determine if the PLL controller is used on a particular device.Notational ConventionsThis document uses the following conventions.•Hexadecimal numbers are shown with the suffix h.For example,the following number is40 hexadecimal(decimal64):40h.•Registers in this document are shown in figures and described in tables.–Each register figure shows a rectangle divided into fields that represent the fields of the register.Each field is labeled with its bit name,its beginning and ending bit numbers above,and itsread/write properties below.A legend explains the notation used for the properties.–Reserved bits in a register figure designate a bit that is used for future device expansion.Related Documentation From Texas InstrumentsThe following documents describe the C6000™devices and related support tools.Copies of thesedocuments are available on the Internet at .Tip:Enter the literature number in the search box provided at .The current documentation that describes the C6000devices,related peripherals,and other technicalcollateral,is available in the C6000DSP product folder at:/c6000.—TMS320C67x/C67x+DSP CPU and Instruction Set Reference Guide.Describes the CPUpipeline,instruction set,and interrupts for the TMS320C67x and TMS320C67x+digital signal processors(DSPs)of the TMS320C6000DSP platform.The C67x/C67x+DSP generationcomprises floating-point devices in the C6000DSP platform.The C67x+DSP is an enhancement ofthe C67x DSP with added functionality and an expanded instruction set.—TMS320C6000DSP Peripherals Overview Reference Guide.Provides an overview anddescribes the peripherals available on the TMS320C6000family of digital signal processors (DSPs).—TMS320C6000Technical Brief.Provides an introduction to the TMS320C62x anddigital signal processors(DSPs)of the TMS320C6000DSP family.Describes the CPU architecture,peripherals,development tools and third-party support for the C62x and C67xDSPs.—TMS320C6000Programmer's Guide.Reference for programming the TMS320C6000signal processors(DSPs).Before you use this manual,you should install your code generation and debugging tools.Includes a brief description of the C6000DSP architecture andcode development flow,includes C code examples and discusses optimization methods for the Ccode,describes the structure of assembly code and includes examples and discusses optimizationsfor the assembly code,and describes programming considerations for the C64x DSP.SPRU233C–November2006Preface5 Submit Documentation Feedback Related Documentation From Texas Instruments—TMS320C6000Code Composer Studio Tutorial.This tutorial introduces you to some ofkey features of Code Composer Studio.Code Composer Studio extends the capabilities of the Code Composer Integrated Development Environment(IDE)to include full awareness of the DSPtarget by the host and real-time analysis tools.This tutorial assumes that you have Code ComposerStudio,which includes the TMS320C6000code generation tools along with the APIs and plug-insfor both DSP/BIOS and RTDX.This manual also assumes that you have installed a target board inyour PC containing the DSP device.—TMS320C6x Peripheral Support Library Programmer's Reference.Describes thedigital signal processor(DSP)peripheral support library of functions and macros.The C6000DSP peripheral support library is a collection of macros and functions for programmingthe C6000DSP registers and peripherals using the C programming language.This documentserves as a reference for the C programmer in creating code for the C6000DSP.—TMS320C6000Chip Support Library API Reference Guide.Describes the TMS320C6000support library(CSL)that is a set of application programming interfaces(APIs)used to configure and control all on-chip peripherals.CSL is intended to make it easier for developers byeliminating much of the tedious work usually needed to get algorithms up and running in a realsystem.TrademarksTMS320C6000,C6000are trademarks of Texas Instruments.6Read This First SPRU233C–November2006Submit Documentation FeedbackReference GuideSPRU233C–November2006This document describes the operation of the software-programmable phase-lockedloop(PLL)controller in the digital signal processors(DSPs)of some of theTMS320C6000™DSP family.Refer to the device-specific data manual to determine ifthe PLL controller is used on a particular device.1OverviewThe PLL controller(Figure1)features software-configurable PLL multiplier controller,dividers(OSCDIV1, D0,D1,D2,and controller.The PLL controller accepts an input clock,as determined by the logic state on the CLKMODE0pin,from the CLKIN pin or from the on-chip oscillator output signal OSCIN.The PLL controller offers flexibility and convenience by way of software-configurable multiplier anddividers to modify the input signal internally.The resulting clock outputs are passed to the DSP core,peripherals,and other modules inside the C6000™DSP.•The input reference clocks to the PLL controller:–CLKIN:input signal from external oscillator(3.3V),CLKMODE0=1–OSCIN:output signal from on-chip oscillator(1.2V),CLKMODE0=0•The resulting output clocks from the PLL controller:–AUXCLK:internal clock output signal directly from CLKIN or OSCIN.–CLKOUT3:output of divider OSCDIV1.–SYSCLK1:internal clock output of divider D1.–SYSCLK2:internal clock output of divider D2.–SYSCLK3:internal clock output of divider D3.Refer to your device-specific data manual on how these inputs and outputs of the PLL controller are used.Some devices may not support all of the above clocks.See the device-specific data manual for the clocks supported.SPRU233C–November2006Phase-Locked Loop(PLL)Controller7 Submit Documentation FeedbackCLKINOSCIN CLKMODE0AUXCLKSYSCLK1SYSCLK2SYSCLK3CLKOUT3OverviewFigure 1.PLL Controller Block DiagramA See the device-specific data manual for more detail about the PLL.Phase-Locked Loop (PLL)Controller 8SPRU233C–November 2006Submit Documentation Feedback2Functional Description 2.1Multiplier and Dividers2.2Reset Controller Functional DescriptionThe following sections describe the multiplier,dividers,and reset controller in the PLL controller.The PLL controller is capable of programming the PLL through the PLL multiplier control register(PLLM) from a×1to×32multiplier rate(see the device-specific data manual for the PLL multiplier rates supported on your device).The clock dividers(OSCDIV1,D0,D1,D2,and D3)are programmable from÷1to÷32 divider ratio and may be disabled.When a clock divider is disabled,no clock is output from that clockdivider.A divider only outputs a clock when it is enabled in the corresponding OSCDIV1or PLLDIV nregisters.The input reference clock(either CLKIN or OSCIN)is directly output as the auxiliary clock(AUXCLK)for use by some peripherals.For example,the multichannel audio serial port(McASP)uses AUXCLK togenerate audio clocks.In addition to AUXCLK,the input reference clock is directly input to the oscillator divider(OSCDIV1).If OSCDIV1is enabled,OD1EN=1,the input reference clock is divided down by the value in the oscillator divider ratio bits(RATIO)in OSCDIV1.The output from OSCDIV1is the output clock CLKOUT3.The divider D0and the PLL may also be bypassed.The PLL enable bit(PLLEN)in the PLL control/status register(PLLCSR)determines the PLL controller mode.When PLLEN=1,PLL mode,D0and PLL are used;when PLLEN=0,bypass mode,D0and PLL are bypassed and the input reference clock is directly input to dividers D1,D2,and D3.When in PLL mode(PLLEN=1),the input reference clock is supplied to divider D0.If D0is enabled,D0EN=1,the input reference clock is divided down by the value in the PLL divider ratio bits(RATIO)in PLLDIV0.The output from divider D0is input to the PLL.The PLL multiplies the clock by the value in the PLL multiplier bits(PLLM)in the PLL multiplier control register(PLLM).The output from the PLL(PLLOUT)is input to dividers D1,D2,and D3.When enabled(D n EN=1),the dividers D1,D2,and D3divide down by the value in RATIO in PLLDIV n the output clock of the PLL.The output clocks of dividers D1,D2,and D3have50%duty cycle and are SYSCLK1,SYSCLK2,and SYSCLK3,respectively.At power up,the device RESET signal may not be asserted long enough to wait for the on-chip or off-chip oscillator to stabilize.This means the input reference clock(either CLKIN or OSCIN)may be a bad clock when a device RESET signal is deasserted high.After RESET is deasserted,the reset controllerlengthens the asynchronous internal reset signal to ensure that the input clock source is stable.The reset controller resides within the PLL controller and the main function is to internally lengthen the reset signal from the RESET input pin until the input clock source is stable(after512CLKIN cycles or4096OSCIN cycles).This is to ensure that the rest of the device will see the internal reset deasserted only after the input clock is stabilized.Figure2shows the lengthening of the internal reset signal.The PLL controller multiplier and dividers are bypassed when the internal reset signal is low.Thefrequency of all clock outputs of the PLL controller(AUXCLK,SYSCLK1,SYSCLK2,SYSCLK3,andCLKOUT3)are fixed to the input reference clock(CLKIN or OSCIN)divided by8.After512CLKIN cycles or4096OSCIN cycles,the reset controller brings the device out of reset and sets the oscillator inputstable bit(STABLE)in the PLL control/status register(PLLCSR).The dividers are used after this point and are set to their default divide ratio.Values are latched into the registers at the rising edge of RESET.SPRU233C–November2006Phase-Locked Loop(PLL)Controller9 Submit Documentation FeedbackInput clock not yet 1.2 V CV DD RESET pinAsynchronousinternal resetCrystalInput referenceclocks clock (A)Functional DescriptionFigure 2.Reset Controller Lengthening the Internal Reset SignalAN =512×CLKIN cycles when CLKMODE =1(input reference clock is CLKIN);N =4096×OSCIN cycles when CLKMODE =0(input reference clock is OSCIN)B Output clocks include AUXCLK,SYSCLK1,SYSCLK2,SYSCLK3,and CLKOUT3at the PLL controller boundary.Refer to the device-specific data manual for clock behavior at the device pins.Phase-Locked Loop (PLL)Controller 10SPRU233C–November 2006Submit Documentation Feedback3Configuration3.1Initialization3.1.1Initialization to PLL Mode(PLLEN=1) 3.1.2Initialization to Bypass Mode(PLLEN=0) 3.2PLL Power Down ConfigurationThe following sections provide procedures for initialization,power down,and wake up of the PLLcontroller.The PLL and PLL controller are to be initialized by software after reset.The PLL controller registers should be modified only by the CPU or via emulation.The HPI should not be used to directly access the PLLcontroller registers.The initialization of the PLL controller should be performed as soon as possible at the beginning of the program,before initializing any peripherals.Upon device reset,one of the following two software initialization procedures must be done to properly set up the PLL and PLL controller.If the system intends to use divider D0and PLL,perform the following:1.In PLLCSR,write PLLEN=0(bypass mode).2.Wait4cycles of the slowest of PLLOUT,CLKIN(if CLKMODE=1),and OSCIN(if CLKMODE=0).3.In PLLCSR,write PLLRST=1(PLL is reset).4.Program PLLDIV0,PLLM,and OSCDIV1.5.Program PLLDIV1-3.Note that there must be wait states between accesses to PLLDIV1-3.Each waitstate is8cycles of the slowest of the old and new SYSCLK1-3clock rates.Some devices may alsorequire you to program the PLLDIV1-3registers in a particular order,to ensure no violation of systemclock ratios.See PLL Controller section of the device-specific data manual for other restrictions.6.Wait for PLL to properly reset.See device-specific data manual for PLL reset time.7.In PLLCSR,write PLLRST=0to bring PLL out of reset.8.Wait for PLL to lock.See device-specific data manual for PLL lock time.9.In PLLCSR,write PLLEN=1to enable PLL mode.Steps1,2,and3are required when PLLEN and PLLRST bits are not already0and1,respectively.These steps are not required when the device is coming out of reset(they are performed by hardware).If the system intends to bypass divider D0and PLL,perform the following:1.In PLLCSR,write PLLEN=0(bypass mode).2.Wait4cycles of the slowest of PLLOUT,CLKIN(if CLKMODE=1),and OSCIN(if CLKMODE=0).3.In PLLCSR,write PLLRST=1(PLL is reset).4.Program OSCDIV1.5.Program PLLDIV1-3.Note that there must be wait states between accesses to PLLDIV1-3.Each waitstate is8cycles of the slowest of the old and new SYSCLK1-3clock rates.See PLL Controller section of the device-specific data manual for other restrictions.Steps1,2,and3are required when PLLEN and PLLRST bits are not already0and1,respectively.These steps are not required when the device is coming out of reset(they are performed by hardware).The PLL may be powered down,in which case the PLL controller is in bypass mode and the DSP runs from a divided down version of the input reference clock.The DSP is still able to respond to eventsbecause it is still being clocked by the bypass clock(directly from CLKIN or OSCIN),although at a lower frequency.Perform the following procedure to power down the PLL:1.In PLLCSR,write PLLEN=0(bypass mode).2.Wait4cycles of the slowest of PLLOUT,CLKIN(if CLKMODE=1),and OSCIN(if CLKMODE=0).3.In PLLCSR,write PLLPWRDN=1to power down the PLL.SPRU233C–November2006Phase-Locked Loop(PLL)Controller11 Submit Documentation Feedback3.3PLL Power Wake Up4Registers4.1PLL Controller Peripheral Identification Register(PLLPID)RegistersPerform the following procedure to wake up the PLL from its power-down mode:1.In PLLCSR,write PLLEN =0(bypass mode).2.Wait 4cycles of the slowest of PLLOUT,CLKIN (if CLKMODE =1),and OSCIN (if CLKMODE =0).3.In PLLCSR,write PLLPWRDN =0to wake up the PLL.4.Follow the reset sequence described in Section 3.1.The PLLcontroller registers configure the operation of the PLL controller.The PLL controller registers are listed in Table 1.See the device-specific data manual for the memory address of these registers.Table 1.PLL Controller RegistersAcronym Register DescriptionSection PLLPID PLL controller peripheral identification register Section 4.1PLLCSR PLL control/status register Section 4.2PLLMPLL multiplier control register Section 4.3PLLDIV0-PLLDIV3PLL controller divider registers Section 4.4The PLL controller peripheral identification register (PLLPID)contains identification code for the PLL controller.PLLPID is shown in Figure 3and described in Table 2.Figure 3.PLL Controller Peripheral Identification Register (PLLPID)R-0R-01hR-08hR-xLEGEND:R =Read only;-n =value after reset;-x =value is indeterminate after resetTable 2.PLL Controller Peripheral Identification Register (PLLPID)Field DescriptionsBit Field Value Description 31-24Reserved 0Reserved23-16TYPEIdentifies type of peripheral 01hPLL controller15-8CLASSIdentifies class of peripheral 08hSerial port7-0REVx Identifies revision of peripheral.See the device-specific data manual for the default value of this field.Phase-Locked Loop (PLL)Controller12SPRU233C–November 2006Submit Documentation FeedbackRegisters 4.2PLL Control/Status Register(PLLCSR)The PLL control/status register(PLLCSR)is shown in Figure4and described in Table3.Figure4.PLL Control/Status Register(PLLCSR)R-0R-0R-1R/W-0R/W-1R/W-0R/W-0R/W-0 LEGEND:R/W=Read/Write;R=Read only;-n=value after resetTable3.PLL Control/Status Register(PLLCSR)Field Descriptions Bit Field Value Description31-7Reserved0Reserved.The reserved bit location is always read as0.A value written to this field has no effect.6STABLE Oscillator input stable bit.Indicates if the OSCIN/CLKIN input has stabilized.The STABLE bit is setto1after the reset controller counts4096OSCIN or512CLKIN input clock cycles after the RESETsignal is asserted high.It is assumed that the OSCIN/CLKIN input is stabilized after this number ofcycles.0OSCIN/CLKIN input is not yet stable.Oscillator counter is not finished counting.1Oscillator counter is done counting and OSCIN/CLKIN input is assumed to be stable.5-4Reserved0Reserved.The reserved bit location is always read as0.Always write a0to this location.3PLLRST PLL reset bit.0PLL reset is released.1PLL reset is asserted.2Reserved0Reserved.The reserved bit location is always read as0.Always write a0to this location.1PLLPWRDN PLL power-down mode select bit.0PLL is operational.1PLL is placed in power-down state.0PLLEN PLL enable bit.0Bypass mode.Divider D0and PLL are bypassed.SYSCLK1/SYSCLK2/SYSCLK3are divided downdirectly from input reference clock.1PLL mode.PLL output path is enabled.Divider D0and PLL are not bypassed.SYSCLK1/SYSCLK2/SYSCLK3are divided down from PLL output.SPRU233C–November2006Phase-Locked Loop(PLL)Controller13 Submit Documentation Feedback4.3PLL Multiplier Control Register(PLLM)4.4PLL Controller Divider Registers(PLLDIV0-PLLDIV3)RegistersThe PLL multiplier control register (PLLM)is shown in Figure 5and described in Table 4.The PLLMdefines the input reference clock frequency multiplier with the PLL ratio bits (RATIO)in the PLL controller divider 0register (PLLDIV0).Figure 5.PLL Multiplier Control Register (PLLM)R-0R-0R/W-xLEGEND:R/W =Read/Write;R =Read only;-n =value after reset;-x =value is indeterminate after resetTable 4.PLL Multiplier Control Register (PLLM)Field DescriptionsBit Field Value Description31-5Reserved 0Reserved.The reserved bit location is always read as 0.A value written to this field has no effect.4-0PLLM0-1FhPLL multiplier bits.Defines the frequency multiplier of the input reference clock in conjunction with the PLL divider ratio bits (RATIO)in PLLDIV0.See the device-specific data manual for the PLL multiplier rates supported on your device.The PLL controller divider register (PLLDIV0-PLLDIV3)is shown in Figure 6and described in Table 5.Figure 6.PLL Controller Divider Register (PLLDIV n )R-0R/W-1R-0R/W-xLEGEND:R/W =Read/Write;R =Read only;-n =value after reset;-x =value is indeterminate after resetTable 5.PLL Controller Divider Register (PLLDIV n )Field DescriptionsBit Field Value Description31-16Reserved 0Reserved.The reserved bit location is always read as 0.A value written to this field has no effect.15D n ENDivider D n enable bit.0Divider n is disabled.No clock output.1Divider n is enabled.14-5Reserved 0Reserved.The reserved bit location is always read as 0.A value written to this field has no effect.4-0RATIO0-1Fh Divider ratio bits.0÷1.Divide frequency by 1.1h ÷2.Divide frequency by 2.2h-1Fh ÷3to ÷32.Divide frequency by 3to divide frequency by 32.Phase-Locked Loop (PLL)Controller14SPRU233C–November 2006Submit Documentation Feedback4.5Oscillator Divider 1Register(OSCDIV1)RegistersThe oscillator divider 1register (OSCDIV1)is shown in Figure 7and described in Table 6.Figure 7.Oscillator Divider 1Register (OSCDIV1)R-0R/W-1R-0R/W-xLEGEND:R/W =Read/Write;R =Read only;-n =value after reset;-x =value is indeterminate after resetTable 6.Oscillator Divider 1Register (OSCDIV1)Field DescriptionsBit Field Value Description31-16Reserved 0Reserved.The reserved bit location is always read as 0.A value written to this field has no effect.15OD1ENOscillator divider 1enable bit.0Oscillator divider 1is disabled.No clock output.1Oscillator divider 1is enabled.14-5Reserved 0Reserved.The reserved bit location is always read as 0.A value written to this field has no effect.4-0RATIO0-1Fh Oscillator divider 1ratio bits.Defines the frequency divider ratio for output clock CLKOUT3.0÷1.Divide frequency by 1.1h ÷2.Divide frequency by 2.2h-1Fh ÷3to ÷32.Divide frequency by 3to divide frequency by 32.SPRU233C–November 2006Phase-Locked Loop (PLL)Controller 15Submit Documentation FeedbackIMPORTANT NOTICETexas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue any product or service without notice. Customers should obtain the latest relevant information before placing orders and should verify that such information is current and complete. All products are sold subject to TI’s terms and conditions of sale supplied at the time of order acknowledgment.TI warrants performance of its hardware products to the specifications applicable at the time of sale in accordance with TI’s standard warranty. T esting and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except where mandated by government requirements, testing of all parameters of each product is not necessarily performed.TI assumes no liability for applications assistance or customer product design. Customers are responsible for their products and applications using TI components. T o minimize the risks associated with customer products and applications, customers should provide adequate design and operating safeguards.TI does not warrant or represent that any license, either express or implied, is granted under any TI patent right, copyright, mask work right, or other TI intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information published by TI regarding third-party products or services does not constitute a license from TI to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the third party, or a license from TI under the patents or other intellectual property of TI.Reproduction of information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied by all associated warranties, conditions, limitations, and notices. Reproduction of this information with alteration is an unfair and deceptive business practice. TI is not responsible or liable for such altered documentation.Resale of TI products or services with statements different from or beyond the parameters stated by TI for that product or service voids all express and any implied warranties for the associated TI product or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements. Following are URLs where you can obtain information on other Texas Instruments products and application solutions:Products ApplicationsAmplifiers Audio /audioData Converters Automotive /automotiveDSP Broadband /broadbandInterface Digital Control /digitalcontrolLogic Military /militaryPower Mgmt Optical Networking /opticalnetwork Microcontrollers Security /securityLow Power Wireless /lpw Telephony /telephonyVideo & Imaging /videoWireless /wirelessMailing Address:Texas InstrumentsPost Office Box 655303 Dallas, Texas 75265Copyright 2006, Texas Instruments Incorporated。
一种基于TMS320C6000系列芯片的多DSP程序动态加载方案
Electronic Component&Device Applications一种基于TMS320C6000系列芯片的多DSP程序动态加载方案吴海燕,张晓玲(电子科技大学电子工程学院,四川成都610054)摘要:提出了在PC机远程控制下,利用一片FLASH存储器实现多DSP系统对多份用户代码进行加载并有选择地重新载入用户程序的方法,同时在分析了DSP自举加载步骤的基础上,给出了系统的硬件电路框图,并结合TI公司的DSP芯片TMS320C6416,介绍了它的装载流程和通过PC机远程控制动态加载DSP的具体过程。
关键词:多DSP;动态加载;Bootloader图1系统硬件结构Vol.10No.12Dec.2008第10卷第12期2008年12月 2008.12Electronic Component&Device ApplicationsVol.10No.12Dec.2008第10卷第12期2008年12月2008.12τ其中,x 是小于1的常数。
当输入脉冲数很多且有多部雷达同时存在时,相邻脉冲的间隔可以认为是随机事件,也就是说,脉冲前沿可以认为是随机Poisson 点。
此时可将有限的观察时间T 分为n 个脉冲子间隔,这样,在时间间隔τ=t 2-t 1内有K 个随机Poisson 点出现的概率为:p k (τ)=(λτ)ke-λτ式中,λ=n /T ,它表示在单位时间内的脉冲子间隔数,此时相邻两脉冲间隔为τ的概率近似为:p 0(τ)=e-λτ上式即为第一级差值直方图的大致形式。
由于直方图实际上是一个随机事件的概率分布函数的近似值,所以,较高级差值直方图一般呈指数分布形式。
构成第C 级差值脉冲组的数量为(E -C ),即观察时间内一共有(E -C )个时间发生。
Poisson 流的参数λ=1/kN 。
这样,即可概括出SDIF算法的最佳检测门限函数为:T threshold (τ)=x (E -C )e -τ/kN其中,E 为脉冲总数,C 为差值直方图的级数,k 为小于1的正常数,N 是脉冲总数。
TMS320C6000系列DSP的软件优化技术
程 分 为 3个 阶 段 :
化技 巧 , 如使 用 不 同 的编 译 器 选 项 使 能 软 件 流 水 , 环 展 循 开 , 存 取代 替半 字 存 取 等 , 化 C语 言 代 码 。如 果 还 不 字 优 能满足要求 , 进入第 3 段 。 则 阶 第 3 段 , C语 言 代 码 中 耗 时 最 长 的 部 分 抽 取 出 阶 将 来 , 线 性 汇 编 语 言 重 写 , 汇 编 优 化 器 进 行 优 化 。使 用 用 用 poi 确 定 这 段 代 码 是 否 需 要 进 一 步 优 化 。 rfe l
*A4 + ,A2 +
* A 8+ + , A3
4
sm1 =ai * b i: u + ] r - l] -
求 , 进入下一阶段 。 则
2 优 化 过 程
首 先 , C 语 言 编 写 程 序 , 通 过 编 译 验 证 其 正 确 用 并
性 。然 后 , 用 内 联 函 数 和 合 适 的 优 化 选 项 进 行 优 化 , 使 并
第 2阶 段 , 用 C X 提 供 的 优 化 方 式 和 其 他 各 种 优 利 6
当优化 器被 激 活 时 , 完 成 图 2所 示 的 过 程 。C C 将 / ++ 语 言 源 代 码 首 先 通 过 一 个 完 成 预 处 理 的解 析 器 ( asr , P re) 生 成 一 个 中 间 文 件 ( i 作 为 优 化 器 ( t zr 的 输 入 。 .f ) Opi e) mi 优 化 器 生 成 一 个 优 化 文 件 ( o t, 个 文 件 作 为 完 成 进 一 .p) 这 步 优 化 的 代 码 生 成 器 ( oeg nrtr 的 输 入 , 终 生 成 C d e eao) 最 汇 编 文件 ( am) . s 。当 选 择 编 译 选 项口 时 , 2和-3将 尽 一 o o
TMS320C6000 DSP自动引导的方法和编程实现
TMS320C6000 DSP 自动引导的方法和编程实现 摘要TI高速信号处理器TMS320C5X和TMS320C6 X需要从外部的存储器ROM或FLASH中引导应用程序 中的重点和难点之一,关系到系统的可靠性和处理速度。
以TMS320C6000DSP为例,介绍了应用程序的三种引导 方式;以实际工程为背景详细叙述了从ROM中引导程序的实现方法,并 钟对其中重要的命令文件和用户引导程序,给出了相应的示例文件和程序。
关键词 3206000 引导1TMS320C6000DSP硬件结构概述 TMS320C6000是TI公司生产的TMS320系列产品中新 一代高性能的DSP芯片,适用于高速数字信号处理。
TMS320C6000主要由三个部分组成CPU内核、外设和存 储器。
CPU中8个功能单元可以并行工作,这些功能单元被分成类似的两 组,每组由4个基本功能单元组成。
CPU有两组寄存器,每组寄存器由16个32位寄存器组成。
由于在运行期间不做硬件数据相关性检查,所以程序运行时可以同时 执行8条指令,极大地提高了芯片处理速度,这使得该系列的芯片在电子 测量、测控、图像、雷达、声纳和软件无线电等领域得到了广泛的应用。
范文先生网收集整理2加电后DSP的运行过程系统加电后,RES 这是开发ET信号为低,芯片复位。
在RESET信号上升沿处,锁存BOOTMODE [40]信号,借 以决定芯片的存储器映射方式、地址0处的存储器类型以及复位后芯片的 自举模式,复位结束后,芯片从存储器的0地址开始执行指令。
TMS320C6000器件可以设置成三种自举方式,其加载过程 分别叙述如下1不加载。
CPU直接从存储器的0地址处开始执行指令。
如果系统中使用的是SDRAM,那么CPU会先挂起,直到SDR AM的初始化完成。
TMS320C621X/C671X不具有这类方式。
2ROM加载。
位于外部空间的ROM中的程序首先通过DMA/EDMA搬入地 址0处。
第1章 TMS320C6000系列DSP概述
1.1 DSP产生、特点及其应用 1.2 TMS320C6000系列 DSP主要特点及其应用
1.1 DSP产生、特点及其应用
1.1.1 DSP的产生 DSP主要是以AMD2900,NEC7720以及TMS32010系列为代表,美国
德州仪器(TI)公司为DSP引入了许多的通用计算机微处理器特点,并为
1.1.3 DSP的应用
DSP芯片主要应用于以下方面: (1)信号处理——如数字滤波、自适应滤波、快速傅立叶变换、相关运算、 谱分析、卷积、模式匹配、加窗、波形产生等。 (2)通信——如调制解调器、自适应均衡、数据加密、数据压缩、回波抵消、 多路复用、传真、扩频通信、纠错编码、可视电话等。 (3)语音——如语音编码、语音合成、语音识别、语音邮件、语音存储等。 (4)图像/图形——如二维/三维图像处理、图形压缩/传输、图像增强、机器 人视觉技术等。 (5)军事——如保密通信、雷达处理、声纳处理、导航、导弹精确制导等。 (6)仪器仪表——如谱分析、锁相环、函数发生、地震处理等。 (7)自动控制——如引擎控制、声控、自动驾驶、机器人控制等。 (8)医疗——如助听器、超声设备、病人监护等。 (10)家用电器——如玩具/游戏、数字电话与数字电视、数码相机等。
1.2 TMS320C6000系列 DSP主要特点及其应用
下面列出几个具体应用场合: 共享调制解调器 无线本地环基站 远程访问服务器 数字用户回线系统 电缆调制器 多通道电话系统 面像和指纹识别的家庭安全系统 具有GPS导航的巡航控制系统 细微的医学诊断
波束形成基站
虚拟真实的3D图像 语音识别 音频 雷达系统 气象建模系统 有限元分析
1.2 TMS320C6000系列 DSP主要特点及其应用
TMS320C6000系列DSP程序固化方式分析
TMS320C6000系列DSP程序固化方式分析TMS320C6000系列DSP程序固化方式分析引言本章内容主要针对TMS320C6000系列芯片,其他类型芯片可能会有差别,但总体思路应该都有指导作用。
随着近年来数字信号处理器(DSP)技术的迅猛发展,其中,TI公司推出的TMS320C6000系列DSP器件更是在许多需要进行大量数字信号处理运算并兼顾高实时性要求的场合得以应用。
TMS320C6000系列DSP的系统设计过程中,DSP器件的程序加载是较难解决的问题之一。
C6000系列DSP的加载方式包括不加载、主机加载和EMIF加载3种。
不加载[No boot]:方式仅限于存储器0地址不是必须映射到RAM空间的器件,否则在RAM空间初始化之前CPU会读取无效的代码而导致错误;主机加载[Host boot]:要求必须有一外部主机控制DSP的初始化,这将增加系统的成本和复杂度,在很多实际场合是难以实现的;EMIF加载[EMIF boot]:DSP与外部ROM/Flash接口较为自由,但片上Bootloader工具自动搬移的代码量有限(1 KB/64 KB)。
本文讨论的就是在EMIF加载方式下的程序各种不同的固化方式。
包括在线烧写,使用CCS提供的FlashBurn工具,使用专有烧写工具[编程器],一、DSP加载方式的选择DSP使用哪种加载方式进行启动,是通过硬件配置的方式选择,当DSP的RESET引脚无效后,DSP读入外围的配置引脚信息,确定加载启动的具体方式。
具体的配置管脚设定可以参考< >literature number: SPRS200二、EMIF加载方式启动过程当RESET变成高电平的时候,在CE1空间开始的1K字节的ROM 代码通过EDMA 被复制到地址为0 的地方(用DSP EMIF最慢的时序),在此期间DSP核一直处于“停止”状态。
数据被存储成系统所用的字节序格式。
在这种情况下,EMIF自动的把要搬移的8位宽数据拼接为32位指令字。
TMS320C6000系列DSP板级设计分析
TMS320C6000系列DSP板级设计分析The Analysis and Design of the TMS320C6000 DSP Printed Circuit Board武汉理工大学信息工程学院刘岚熊承煜摘要:德州仪器公司的TMS320C6000(以下简称TI C6000)系列DSP是目前国际上性能最高的DSP芯片。
本文从该系列芯片的封装设计开始,分析讨论了整个PCB的制作过程中需要注意的一系列问题,内容主要包括C6000系列DSP的BGA封装焊盘定义选择的分析、多层板布线分析和SMT焊装时关于元件贴片、回流焊接技术的分析。
本文对广大的TI C6000系列DSP系统开发人员具有一定的借鉴意义。
引言近年来,以高速数字信号处理器(DSP)为基础的实时数字信号处理技术飞速发展,并获得了广泛的应用。
TMS320C6000系列DSP是德州仪器公司(TI)推出的定点、浮点系列DSP,其中定点产品峰值处理能力达到4800MIPS,浮点产品峰值处理能力达到1350MFLOPS,是目前国际上性能最高的DSP之一,其卓越的性能使得它在传统的DSP领域、雷达、无线电基站等高端领域,以及宽带媒体、身份识别等新兴领域都有很好的应用前景。
随着DSP性能和功能的不断增强,应用系统的设计越来越复杂,要将DSP的性能充分释放出来,合理的板级设计是DSP系统开发人员面临的一个关键性的问题。
BGA封装的设计分析C6000系列DSP采用的是一种高密度BGA(Ball Grid Array)封装,采用这种封装的好处包括可以获得更好的高频电气性能、比引脚封装具有更长的使用周期、尺寸更小以及制造成本更低等。
BGA封装给芯片制造商以及芯片本身的性能都带来了好处,但是对于板级开发人员来说,却造成了很多不便之处,布线、焊装、检测与调试都比以前更加困难。
在设计密脚距(Fine-Pitch)的BGA封装时,不同技术的应用会带来不同的生产质量,PCB上焊盘的合理设计能提高生产的可靠性。
TI C6000系列DSP
第二章基于TI C6000系列DSP的C /C++程序优化技术2.1 TMS320C6000 处理器介绍TM S320C6000 是 TM S320 系列产品中的新一代高性能DSP 芯片,共分为两大系列。
其中定点系列为TM S320C62xx和TM S320C64xx;浮点系列为TM S320C67xx 。
由于 TM S320C6000 的开发主要面向数据密集型算法 ,它有着丰富的内部资源和强大的运算能力 ,所以被广泛地应用于数字通信和图像处理等领域。
C6000 系列 CPU 中的 8 个功能单元可以并行操作 ,并且其中两个功能单元为硬件乘法运算单元 ,大大地提高了乘法速度。
DSP 采用具有独立程序总线和数据总线的哈佛总线结构 ,仅片内程序总线宽度就可达到256 位 ,即每周期可并行执行 8 条 32 位指令;片内两套数据总线的宽度分别为 32 位; 此外 ,DSP 还有一套32 位DMA 专用总线用于传输。
灵活的总线结构使得数据瓶颈对系统性能的限制大大缓解。
C6000 的通用寄存器组能支持 32 位和 40 位定点数据操作 , 另外C67xx 和 C64xx 还分别支持 64 位双精度数据和 64 位双字定点数据操作。
除了多功能单元外 ,流水技术是提高 DSP 程序执行效率的另一主要手段。
由于TM S320C6000 的特殊结构 ,功能单元同时执行的各种操作可由VL IW 长指令分配模块来同步执行 ,使 8 条并行指令同时通过流水线的每个节拍 ,极大地提高了机器的吞吐量。
2.2 C6000 软件开发流程图 2-1为 C6000的软件开发流程图。
图中阴影部分是开发 C代码的常规流程 ,其他部分用于辅助和加速开发过程。
图2-1软件开发流程C/ C + +源文件首先经过C/ C + +编译器转换为 C6000汇编源代码。
编译器、优化器(optimizer)和交叠工具是 C/ C + +编译器的组成部分。
基于TMS320C6000系列DSP的C代码优化方法研究
基于TM S 320C 6000系列D SP 的C 代码优化方法研究阳明晔,张志勇(国防科技大学电子科学与工程学院A TR 国家重点实验室,长沙410073) 摘 要:随着D SP 任务系统的复杂度增大,如何使D SP 任务系统充分利用资源成为了软件开发的关键环节之一,而程序优化是解决这一问题的有效途径。
优化的过程大致分为三个阶段。
首先,利用C 编译器对程序整体优化;其次,对重要循环体进行结构调整;最后,我们再针对一些特殊问题,采用线性汇编直接改写。
本文基于TM S 320C 6000系列D SP ,着重于具体应用,对这三个阶段进行详细论述。
关键词:D SP ;C 编译器;优化;汇编优化器中图分类号:T P 332 文献标识码:B 文章编号:1002-2279(2004)02-0059-03The O p ti m iza tion of C P rog ram s B a sed on the T MS 3206000P la tfo r m of DS PYAN G M ing -ye ,ZHAN G Zh i -yong(A T R N a tiona l K ey L abora tory ,Institu te of E lectron ic S cience and E ng ineering ,N a tiona l U n iversity of D ef ense T echnology ,ChangS ha 410073,Ch ina ) Abstract :W ith the increasing com p lex ity of D SP task system ,it becom es a key p hase that how to u se the resou rce sufficien tly by a D SP task system .A nd op ti m izati on of D SP p rogram s is an efficien tly w ay to so lve the p rob lem .T he cou rse of op ti m izati on comm on ly includes th ree stages :firstly ,op ti m izing the w ho le p rogram w ith the C Com p iler ;secondly ,adju sting the i m po r 2tan t loop structu re ;finally ,rew riting the code w ith L iner A ssem b ly directly .T he p ap er w ill dis 2cu ss the th ree stages fo r sp ecific app licati on in detail.Key words :D SP ;C Com p iler ;O p ti m ize ;A ssem b ly O p ti m izer1 引 言TM S 320C 6000是TM S 320系列产品中的新一代高性能D SP 芯片,共分为两大系列。
TMS320C6000系列DSP的软件优化
TMS320C6000系列DSP的软件优化1 DSP 系统的软件优化流程DSP 系统的软件优化流程如图1 所示。
整个工作流程分为3 个阶段:第1 阶段,直接根据需要用高级C 语言实现DSP 功能,测试代码的正确性。
然后,移植到C6X 平台,利用C6X 开发环境Profile 测试程序的运行时间。
若不满足要求,则进入下一阶段。
第2 阶段,利用C6X 提供的优化方式和其他各种优化技巧,如使用不同的编译器选项使能软件流水,循环展开,字存取代替半字存取等,优化C 语言代码。
如果还不能满足要求,则进入第3 阶段。
第3 阶段,将C 语言代码中耗时最长的部分抽取出来,用线性汇编语言重写,用汇编优化器进行优化。
使用profile 确定这段代码是否需要进一步优化。
2 优化过程首先,用C 语言编写程序,并通过编译验证其正确性。
然后,使用内联函数和合适的优化选项进行优化,并通过CCS 中的profiler 确定是否有函数需要被进一步优化,使用线性汇编语言重写需要被优化的函数。
最后,使用汇编优化编程技巧和汇编优化器优化汇编代码。
2.1 编译器当优化器被激活时,将完成图2 所示的过程。
C/C++语言源代码首先通过一个完成预处理的解析器(Parser),生成一个中间文件(.if)作为优化器(Optimizer) 的输入。
优化器生成一个优化文件(.opt),这个文件作为完成进一步优化的代码生成器(Code generator)的输入,最终生成汇编文件(.asm)。
当选择编译选项时,-o2 和-o3 将尽可能地优化软件。
2.2 编译器内联函数。
TMS320C6000DSP自动引导的方法和编程实现
TMS320C6000DSP自动引导的方法和编程实现TMS320C6000 DSP自动引导的方法和编程实现摘要:TI高速信号处理器TMS320C5X和TMS320C6X需要从外部的存储器(ROM或FLASH)中引导应用程序?这是开发中的重点和难点之一,关系到系统的可靠性和处理速度。
以TMS320C6000DSP为例,介绍了应用程序的三种引导方式;以实际工程为背景详细叙述了从ROM中引导程序的实现方法,并钟对其中重要的命令文件和用户引导程序,给出了相应的示例文件和程序。
关键词:TMS320C6000 DSP CMD 引导1TMS320C6000DSP硬件结构概述TMS320C6000是TI公司生产的TMS320系列产品中新一代高性能的DSP芯片,适用于高速数字信号处理。
TMS320C6000主要由三个部分组成:CPU内核、外设和存储器。
CPU中8个功能单元可以并行工作,这些功能单元被分成类似的两组,每组由4个基本功能单元组成。
CPU有两组寄存器,每组寄存器由16个32位寄存器组成。
由于在运行期间不做硬件数据相关性检查,所以程序运行时可以同时执行8条指令,极大地提高了芯片处理速度,这使得该系列的芯片在电子测量、测控、图像、雷达、声纳和软件无线电等领域得到了广泛的应用。
(范文先生网收集整理)2加电后DSP的运行过程系统加电后,RESET信号为低,芯片复位。
在RESET信号上升沿处,锁存BOOTMODE[4:0]信号,借以决定芯片的存储器映射方式、地址0处的存储器类型以及复位后芯片的自举模式,复位结束后,芯片从存储器的0地址开始执行指令。
TMS320C6000器件可以设置成三种自举方式,其加载过程分别叙述如下:(1)不加载。
CPU直接从存储器的0地址处开始执行指令。
如果系统中使用的是SDRAM,那么CPU会先挂起,直到SDRAM的初始化完成。
TMS320C621X/C671X不具有这类方式。
(2)ROM加载。
TMS320C6000 DSP 代码优化实用方法3
DSP指令流水线的实现
CPU等待的周期即为延迟间隙,一条LOAD指令有4个延迟间隙;一 条单精度浮点运算有3个延迟间隙,一条跳转指令有5个延迟间隙;在 循环里面,延迟间隙会显著降低效率。TI从软硬件两方面解决延迟间 隙问题:软件流水的作用在于合理安排指令的执行顺序,从而填充延 迟间隙并充分利用流水功能;硬件上通过采用SPLOOP buffer。 • 1)硬件上通过采用SPLOOP buffer • Software Pipelined Buffer:专用于实现软件流水的硬件模块
TMS320C6000系列DSP程序开发
4.2 320C6000系列的语言关键字
7.语句 320C6000的编译器可以将320C6000汇编指令或者伪指令直接嵌入编译器输出的 汇编语言文件。该功能是对语言的扩展,即语句。语句提供了语言所不能提供的对 硬件的访问。语句类似于调用一个名为的函数,该语句以一个字符串常数为参数, 具体语法格式: (“ ”); 编译器将参数直接复制到编译器的输出文件,汇编正文必须包含在双引号内。 所有通常的字符串都保持它们原来的定义。例如,可插入一个包含引号的伪指令: (“: \”\“”);
4.3 伪指令
此例使用 (,""),产生段,并把函数指定到段。 汇编源文件:
””
;*********************************************************************
**
;* :
*
;*
*
;*
:
*
;*
: A43
*
;*
:0 +4 +0 =4
*
;*********************************************************************
4.2 320C6000系列的语言关键字
2.关键字 当对一个对象使用关键字时,编译器将比较对象名和320C6000的标准控制寄存
器列表,如果名字匹配,编译器将参照控制寄存器产生相应的代码。如果不匹配, 编译器将产生一个错误。控制寄存器列表见表4-2。
寄存器
描述
寻址模式寄存器 控制状态寄存器 (仅C6700)浮点加法器配置寄存器 (仅C6700)浮点辅助配置寄存器 (仅C6700)浮点乘法器配置寄存器 (仅C6400)域多项式产生函数寄存器 中断清除寄存器
DSP TMS320C6000基础学习(3_)CCSv5软件开发环境搭建
DSP CCS工程文件构成==================================================1. 源文件(*.c *.asm)2. 头文件(*.h *.inc)3. cmd文件分为2种。
一种是用来分配RAM空间的,用来将程序下载到RAM内调试,因为开发过程中大部分时间在调试程序,因此多用这类cmd;另一种是分配Flash空间的,当程序调试完毕后,需要将其烧写到Flash中固化。
4. 库文件(*.lib *.dll)库文件包含了寄存器的地址和对应标示符的定义,还包括了标准C/C++运行支持库函数。
*.lib为静态库文件,在编译时调用,调用时直接加载到内存;*.dll为动态库文件,在运行时调用。
==================================================创建DSP TMS320C6713工程====================================================================== 准备工作 ====================1. 从h ttp://www. / lsds/ti/dsp/c60 0_dsp/c67x/toolsw.pag e下载C6XCSL及其文档C6XCSL为DSP C6000系列的芯片支持库(TMS320C6000 Chip Support Library)安装C6XCSL,点击.exe文件(其实就是解压),选择路径,本文为设为C6XCSL_ROOT=E:\MyDesigner\dsp\C6XCSL2. 下载并安装破解CCS 5.3,安装路径不要有中文字符==================== 新建工程 ====================1. File -> New Project -> CCS Project工程路径不要有中文字符。
基于TMS320C6000系列DSP的维特比译码程序优化设计
基于TMS320C6000系列DSP的维特比译码程序优化设计基于TMS320C6000系列DSP的维特比译码程序优化设计基于TMS320C6000系列DSP的维特比译码程序优化设计关键字:数字信号处理器维特比译码器软件无线电卷积码因为其编码器简单、编码增益高以及具有很强的纠正随机错误的能力,在通信系统中得到了广泛的应用。
基于最大似然准则的维特比算法(VA)是在加性高斯白噪声(AWGN)信道下性能最佳的卷积码译码算法,也是常用的一种算法[1~2]。
一般来说,实现软判决维特比译码可以有三种方案供选择:专用集成电路(ASIC)芯片、可编程逻辑阵列(FPGA)芯片以及数字信号处理器(DSP)芯片。
参考文献[3]对这三种方案的优劣做了详细的比较。
使用DSP芯片实现译码是最为灵活的一种方案,但速度也是最慢的,因为整个译码过程都是由软件来实现的。
在近年来兴起的软件无线电技术中,要求采用可编程能力强的的器件(DSP、CPU等)代替专用的数字电路。
对信道编解码而言,这样做的优点在于只需要在程序上加以少量改动,就可以适应不同的编码速率以及各种通信系统所要求的不同的编解码方法。
然而速度的瓶颈限制了DSP译码在实时系统中的应用,因此提高DSP的译码速度对于软件无线电有着重要的意义。
本文的目的就是通过对译码程序结构优化,来提高DSP芯片执行VA算法的速度。
1 维特比译码器首先,需要定义两个将在本文中用到的术语[2]:输入帧——每次输入译码器的比特;输出帧——对应一个输入帧,译码器输出的比特。
图1所示是卷积码译码器(VA算法)的一种典型结构。
以(2,1,7)卷积码为例(输入帧含2比特,输出帧为1比特),来说明译码器的三个主要部分。
1.1 支路度量计算单元(BMG)计算当前输入帧对应的128条支路的路径度量值,并将其存入支路度量存储单元(BMM)。
1.2 加比选单元(ACS)将支路度量值与相连的前面的路径度量值相加得到延伸后的新路径的度量值;比较连接在同一个状态上的两条新路径的度量值;选择其中度量值较小的那条路径(幸存路径),并将它的度量值存储到新路径度量存储器(SM)中,幸存路径值(对应编码状态的输入比特)存储到路径存储器(PM)中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TMS320C6000系列DSP的软件优化技术
摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。
仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。
关键词:Butte
摘要详细介绍DSP软件优化流程;结合具体实例阐述在C语言中使用内联函数、指夸并行、字装载半字型数据、软件流水等几种代码优化技术,并对各种技术优化后的代码执行效率进行总结分析,对实际系统的开发具有重要意义。
关键词DSP软件优化软件流水 TMS320C6000
1 DSP系统的软件优化流程
DSP系统的软件优化流程如图l所示。
整个工作流程分为3个阶段:
第l阶段,直接根据需要用高级C语言实现DSP功能,测试代码的正确性。
然后,移植到C6X平台,利用C6X开发环境Profile测试程序的运行时间。
若不满足要求,则进入下一阶段。
第2阶段,利用C6X提供的优化方式和其他各种优化技巧,如使用不同的编译器选项使能软件流水,循环展开,字存取代替半字存取等,优化C语言代码。
如果还不能满足要求,则进入第3阶段。
第3阶段,将C语言代码中耗时最长的部分抽取出来,用线性汇编语言重写,用汇编优化器进行优化。
使用profile确定这段代码是否需要进一步优化。
2 优化过程
首先,用C语言编写程序,并通过编译验证其正确性。
然后,使用内联函数和合适的优化选项进行优化,并通过CCS中的profiler确定是否有函数需要被进一步优化,使用线性汇编语言重写需要被优化的函数。
最后,使用汇编优化编程技巧和汇编优化器优化汇编代码。
2.1 编译器
当优化器被激活时,将完成图2所示的过程。
C/C++语言源代码首先通过一个完成预处理的解析器(Parser),生成一个中间文件(.if)作为优化器(Optimizer)的输入。
优化器生成一个优化文件(.opt),这个文件作为完成进一
步优化的代码生成器(Code generator)的输入,最终生成汇编文件(.asm)。
当选择编译选项时,-o2和-o3将尽可能地优化软件。
2.2 编译器内联函数
TMS320C6X提供了很多内联函数,它们直接映射为内嵌C6X汇编指令的特殊函数,这样可迅速优化C语言代码。
C编译器以内联函数的形式支持所有C 语言代码不易表达的指令。
内联函数用下划线“_”开头,如例2,使用时如同调用普通函数一样。
下面结合实例,研究一下完成200点点积经过上述各种优化技术优化后的代码效率。
完成200点的点积运算C语言代码程序dotp.c如下:
3 线性汇编代码的优化
优化线性汇编代码,首先是尽可能地使指令并行,使得同一时间内多个功能单元同时被使用,然后是调整代码顺序,缩减等待时延(NOPS),如例5。
接下来使用字访问short型数据.如例6,最后使用软件流水技术。
当进行实际操作时,并不是要按顺序地完成上面的每一步。
只要达到要求,就可以结束。
3.1 C语言代码转换到线性汇编代码
定点点积中,C语言代码内部循环使用线性汇编指令,如例3所示。
3.2 线性汇编的资源分配
①装载指令(LDW)必须使用.D单元。
②乘法指令(MPY和MPYH)必须使用.M单元。
③加法指令(ADD)使用.L单元,
④减法指令(SUB)使用.S单元。
⑤跳转指令(B)使用.S单元。
由此得到例4的汇编代码。
例4
下面的例子是没有并行执行的汇编代码:
完成200次循环迭代,经过profile clock分析循环部分,需要
16×200=3200 cycles。
3.3 使用并行指令完成点积代码
使用并行指令完成点积代码如例5所示。
使用并行指令,循环体内需要8个时钟周期。
这段循环代码的执行周期为8×200=l600 cycles。
3.4 使用字存取原short型数据
为进一步提高效率,使用字存取原short型数据,如例6所示。
这段代码在循环体内仍然是8个时钟周期,迭代100次为8×100=800 cycles。
4 软件流水技术
软件流水技术是用在循环语句中调用指令的方法,即安排循环中的多个迭代运算并行执行。
在编译C语言代码时,可以选择编译器的-o2或-o3选项,编译器将根据程序尽可能地安排软件流水。
图3所示为运用软件流水的循环结构,它包括A、B、C、D、E五次迭代,同一周期最多执行五次迭代的不同指令(阴影部分)。
图3中阴影部分称为“循环内核”,核中不同的指令并行执行。
核前执行的过程称为“流水线填充”,核后执行的过程称为。
流水线排空”。
在DSP算法中存在大量的循环操作,因此充分运用软件流水线方式,能极大地提高程序的运行速度。
当手绘软件流水时,首先要画出相关图,如图4所示,然后建立软件流水迭代间隔编排表,最后根据编排表写出程序。
在画相关图时应遵循:
①画出节点和路径;
②写出完成各指令需要的CPU周期;
③为各节点指派功能单元;
④分开路径,以使最多的功能单元被使用。
根据相关图写出模迭代间隔安排表,如表1所列。
由此迭代间隔表写出对应代码:
5 总结
各种优化技术所需时钟数如表2所列。
表中括号内数字为循环内核时钟周期,括号前数字为流水线填充时钟周期,括号后数字为流水线排空CPU时钟周期。
由此得出遵循以上的软件优化流程和代码优化技术,可以极大地提高代码效率,这对实际应用具有重大意义。
热门词条
thn15-4810dirda6cy7c1019bn-15vcdrqdecdn2ea8d4564442g5-a10bdw4。