微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 定点DSP芯片TMS320F2812实现快速算法

定点DSP芯片TMS320F2812实现快速算法

时间:07-12 来源: 点击:

  
3 编程设计
  
编程是实现系统正常工作和快速运算必不可少的重要环节。在系统配置合理的条件下,用定点芯片实现快速运算的关键用整数取代浮点数进行计算处理。用C编译器时,为产生最优代码,应遵循以下原则:
  
(1)将除法转换为乘法,尽量使编译器产生MAC指令,以充分利用DSP的硬件乘法器资源进行快速运算,且应使MAC的操作数为局部变量以分配到寄存器中(或到一个累加器中)。
  
(2)尽可能使用静态直接插入函数,以节省函数调用的额外开销。
  
(3)对FOR循环的上限,使用常数或具有常数属性的变量可产生重复指令RPT。
  
3.1 ADC编程
  
TMS20F2812带有两个8选1多路切换器和双采样/保持器的12位ADC,模拟量输入范围为0~3V,最快转换速率为80ns,选用10kSPS采样率,并采用EVA的定时器(0.1ms)自动触发方式,可同时采样4个通道,并采用每次转换结束的中断方式来纪录采样结果(右移4位)。
  
转换结果=(212 -1)×(输入的模拟信号-ADCLO)/3
  
ADC转换时,首先初始化DSP系统,然后设置PIE中断矢量表,再初始化ADC模块,接着将ADC中断的入口地址装入中断矢量表并开中断,然后再启动0.1ms定时器,同时等待ADC中断,最后在ADC中断中读取ADC转换结果,并用软件启动下一次中断。
  
3.2 FIR滤波器编程
  
目标信号对某些低频干扰非常敏感,它将直接响应到定位结果和数据的有效性。为了在滤波后不影响时延数据的计算,可采用线性相位的FIR滤波器。滤波器系数h(i)用MATLAB的产生,并在变成整形然后固化到程序中,这样做(而不是单独计算滤波器系数)的目的是为了实现快速滤波而不会过多增加整个测量系统定位计算的时间。
  
3.3 定位算法的移植
  
由于定位算法采用自适应时延估计法,因此计算量非常庞大,对DSP芯片性能要求较高。TMS320F2812具有32位硬件乘法器和累加器,其RPT指令非常适合循环计算,处理能力可达150MIPS,因而具有较高的性能。但它是一款定点处理芯片,需要使用定点算法来解决处理量大的问题。因此,对初始数据、权矢量应采用16位整形变量(Q=12:由ADC转换精度决定),而循环计算中产生的中间结果则使用32位整形变量(Q=20:在结果不溢出的情况下尽量满足计算精度);至于对三角函数等的运算,可用查表法并利用图2中的表格来进行快速计算。
  
C编译器带有浮点运算库,因此可将浮点算法和定点算法的结果进行比较,对于4路各1024点数据处理,用浮点算法实现约需3.6秒,而用定点算法只需1.3秒。
  
另外,还可对算法进行优化。第一是将经常使用的中间变量配置到等待周期为0的内存中;第二是采用FLASH加速技术(使能FOPT寄存器的ENPIPE位实现预指机制的FLASH流水线模式),这样可以达到100~120MIPS的处理能力,大大高于其本身36ns的读取能力。需要注意的是,由于TMS320F2812的保护机制,对FLASH寄存器进行存取的这段程序必须搬移到L0、L1中执行。尽管这样,将这段对时间要求比较荷记得的算法移植到内存H0中,可以达到最高150MIPS的处理速度,并能使用函数memcpy()完成程序的搬移。
  
4 结束语
  
在计算量较大时,通常选用浮点DSP芯片。实际上,为了充分利用定点DSP芯片的片上资源,也能利用本文所介绍的方法选用定点芯片来达到较高的计算速度,这样可节省硬件设计费用和周期,并降低功耗。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top