摘要
上一期讲了如何跨过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
-
前期准备:可以遵照上一篇提到的方法和链接获取CLA的参考手册和工程源码。【DSP入门】一文带你跨过TI TMS320F2803x 首个学习门槛
-
打开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中执行相同的浮点算法进行对比。
-
对照着芯片手册,查看各部分代码,理清程序脉络,开发自己的应用代码。
-
如果汇编基础较好,也可以直接用汇编编写CLA部分代码,这样就能够最大程度发挥CLA的效能。
转载是一种动力 分享是一种美德。欢迎扫码关注本公众号:芯连心嵌入式设计交流