【DSP入门】DSP2803x算法加速利器之CLA
摘要
上一期讲了如何跨过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的效能。
转载是一种动力 分享是一种美德。欢迎扫码关注本公众号:芯连心嵌入式设计交流
【DSP入门】DSP2803x算法加速利器之CLA相关推荐
- DSP芯片上算法加速技巧总结
#1 将多层或者双层循环改为单层循环. 让循环只形成一个pipeline,充分利用dsp的流水线, #2 使用const关键字限定目标. C6000编译器 ...
- OpenCV算法加速的一些学习总结
一.概述 算法加速在实际软件层面应用来说 大数据和复杂计算的过程中 算法优化,指降低算法计算复杂度,设计新算法快速求解,比如Hungarian匹配算法.或牺牲一些内存,预计算一些重复计算的过程,减少程 ...
- 献给初学者-DSP入门教程【转】
献给初学者-DSP入门教程 helloDSP论坛 前言:此资料也是来源于网络,并不是我们原创,但是希望这些资料能够给初学DSP的 朋友们一点帮助,也希望你们能够把这里当成是你们学习DSP技术的一个家园 ...
- 基于FPGA的深度学习算法加速
学习总结--基于FPGA的深度学习算法加速 1.深度学习算法加速的方法 2.为什么用FPGA来加速YOLOV2 3.FPGA简介 4.PYNQ框架与HLS加速理论 5.实验结果 1.深度学习算法加速的 ...
- OpenCV算法加速(4)官方源码v4.5.5的默认并行和优化加速的编译选项是什么?请重点关注函数cv::getBuildInformation()的返回值
举例opencv v4.5.5版本源码,Windows x64,VS2019,CMake https://github.com/opencv/opencv/tree/4.5.5 https://sou ...
- OpenCV算法加速(1)OpenMP/PPL/TTB基础知识
一.提高OpenCV的运算速度,有以下几种方法: 1.利用x86转为x64提速,可以提高1倍的速度 2.多线程的openmp或Intel TBB提速,将cpu的利用率从20%多提高到100% 3.利用 ...
- dsp指令ixh_第一章 DSP入门教程(非常经典).pdf
DSP 入门教程 1.TI DSP 的选型 主要考虑处理速度.功耗.程序存储器和数据存储器的容量.片内的资源,如定时器的数量. I/O 口数量.中断数量.DMA 通道数等.DSP 的主要供应商有 TI ...
- python利器的使用-图文详解python开发利器之ulipad的使用实践
Ulipad是一个国人limodou编写的专业Python编辑器,它基于wxpython开发的GUI(图形化界面).下面这篇文章主要介绍了python开发利器之ulipad的使用实践,文中介绍的非常详 ...
- python利器怎么编程-Python任务调度利器之APScheduler详解
任务调度应用场景 所谓的任务调度是指安排任务的执行计划,即何时执行,怎么执行等.在现实项目中经常出现它们的身影:特别是数据类项目,比如实时统计每5分钟网站的访问量,就需要每5分钟定时从日志数据分析访问 ...
- ML之FE:pandas库中数据分析利器之groupby分组函数、agg聚合函数、同时使用groupby与agg函数组合案例之详细攻略
ML之FE:pandas库中数据分析利器之groupby分组函数.agg聚合函数.同时使用groupby与agg函数组合案例之详细攻略 目录 pandas库中数据分析利器之groupby分组函数.ag ...
最新文章
- 2021全国大学生智能汽车竞赛中小学组国赛获奖名单
- 国际软件设计文档——概要设计说明书
- webpack打包后引用cdn的js_利用CDN加速react webpack打包后的文件详解
- 基于spring的观察者模式
- MindSpore手写数字识别初体验,深度学习也没那么神秘嘛
- LintCode,hihoCoder,LeetCode有什么区别?
- docker提交容器成一个新的镜像commit和push,以及docker常用命令
- mysql字段是否存在_mysql怎么查询字段是否存在?
- 5G浪潮推动 射频产业风起云涌
- pandas表字段为空用其余表替换
- mysql之我们终将踩过的坑(优化)
- python之pygame,详解坦克大战
- SD卡无法格式化的原因分析
- linux 安全删除文件_如何在Linux上安全删除文件
- Unity中模型的面数问题
- 数据分析与挖掘(一)误差与精度
- 2022.12.14 英语背诵
- XDOJ-歌德巴赫猜想-35
- 4年外包终上岸,我只能说这类公司能不去就不去
- matlab接入交易,金字塔与MATLAB通过数据库交易对接
热门文章
- 计算机房空调设计标准,《数据中心制冷与空调设计标准》的要点
- 操作 神通数据库_国产神通数据库教程
- 网络安全|墨者学院在线靶场|投票系统程序设计缺陷分析
- 给大家推荐一个前端非常好用的量图软件(只能量psd的哦)像素大厨 PxCook 像素大厨使用方法
- 在JFlash中添加未知类型的单片机
- arm开发板挂载win10和ubuntu haneWIN NFS Server
- pandas填充空数组_Pandas 数据处理:空值清理、联级、合并、缺省空值填充
- 2023王道C语言训练营(哈希查找,串--KMP)
- layer.js之回调销毁对话框
- post请求测试软件,简单的Http请求测试工具(支持get,post)