DSP

【DSP入门】DSP2803x算法加速利器之CLA

2019-07-13 09:42发布

摘要 上一期讲了如何跨过DSP2803x的首个学习门槛,快速入门这个系列芯片。这期给大家介绍一下这款芯片中算法加速利器CLA(Control Law Accelerator):独立可编程 且具备32bit浮点运算的协处理器。   什么是CLA DSP2803x芯片是TI推出的经济型芯片,适用于对成本比较敏感的产品,所以主频相对较低(60MHz),不仅比不上面向高端的DSP28335,甚至还比不上古老的DSP281x。不过TI为了平衡性价比,在DSP2803x中加入了可编程浮点处理器。这个处理器可以独立于主CPU进行浮点运算,然后与主CPU交换数据。此外它还可以直接访问ePWM+HRPWM, Comparator 以及 ADC Result寄存器。如此,我们在编程的时候,可以将浮点运算放入CLA中运行,加快控制算法的计算频率。   CLA原理框图 CLA框图如下所示。 CLA任务触发机制(总计支持8个任务): - 1. 可以通过主CPU用IACK指令触发 - 2. 也可以通过ADCINTx,EPWMx_INT或者CPU Timer 0进行触发. - 3. 举例:Task 1:ADCINT1 or EPWM1_INT   存储区与数据外设共享 - 1. 有两块数据RAM区作为数据共享区:一块CLA可读写,CPU只读;另外一块CLA只读,CPU可读写 - 2.  CLA的程序和数据区可以通过CPU映射到CLA自有的或者CPU中区域 - 3. CLA可以直接访问ePWM+HRPWM, Comparator 和 ADC Result registers - 4. 注意:除了1, 2, 3点描述的区域外,CLA访问其他区域的数据或者代码是无效的,回读的值为0.   主频: 最大频率为SYSCLKOUT的最大频率60Mhz.   编程语言 CLA支持的汇编指令相比完全版的TI DSP汇编指令要少了不少。最初CLA只支持用汇编编写,不过只要CGT版本大于6.4.x(具体版本号不太确定了,反正从CCS5开始就已经支持),CLA部分的代码也可以使用C语言进行编写。需要注意的是CLA部分的代码需要以.CLA结尾,这样编译器才能正常解析为汇编。   如何使用CLA
  1.  前期准备:可以遵照上一篇提到的方法和链接获取CLA的参考手册和工程源码。【DSP入门】一文带你跨过TI TMS320F2803x 首个学习门槛
  2. 打开TI的CLA范例工程,这边以CLA fir32为例: - 其中F28035_CLA_C.cmd为链接文件,里面重定义部分RAM和Flash区域,用于CLA的代码和共享数据存储; - fir32.cla:前面章节提到的task1-task8的执行代码 - fir32_shared_data.c/fir32_shared.h:定义了CLA和CPU共享的 - fir32_main.c:初始化代码和main loop - fir32_run.c/fir32_report.c:为了验证CLA的结果,在CPU中执行相同的浮点算法进行对比。
  3. 对照着芯片手册,查看各部分代码,理清程序脉络,开发自己的应用代码。
  4. 如果汇编基础较好,也可以直接用汇编编写CLA部分代码,这样就能够最大程度发挥CLA的效能。
转载是一种动力 分享是一种美德。欢迎扫码关注本公众号:芯连心嵌入式设计交流