【中科昊芯Core_DSC280025C开发板试用体验】+1.开箱之浮点计算对比
前言
大家好,非常感谢电子发烧友与中科昊芯提供的DSC280025C开发板,这是一款DSP的开发板,基于RISC-V指令架构。我大概对比了这款芯片,从外设布局、以及性能参数上来看,应该是和TI的TMS320F28335为同等级的竞品关系(仅仅是个人观点),所以在伺服控制领域,这款芯片应该有很好的发挥空间。
极简开箱
收到快递,开发板如下,包含一个DSP控制核心板 + 专用的仿真器 。

另外,我也在他的官网开始收集资料,说实话,我对单片机比较熟悉,大大小小,各种型号还是用了几十款,用单片机写的程序项目也有好几百个。但是本人对DSP的开发了解,还真不多。也就在今年初的时候,调试过一段时间的TMS320F28335。所以蹭着这个机会,也可以好好评估下中科昊芯的HXS320F28025C。
从官网上看,中科昊芯的DSP型号还是蛮多的,从最低48MHZ - 280MHZ的产品都有,而我们这次试用的是160MHZ。

开发软件也有自己专门的IDE软件。
不过,安装这个软件的时候,建议还是把杀毒软件,安全卫士之类的软件退出来,不然会报警,手速慢了,不一定能点击到允许。所以,我这边就装了2次。
软件安装完成之后,建议还是看看用户手册,这个是中文的,对我们还是比较友好。当然B站的视频也是去看看,反正我看了一遍,觉得比较笼统,还是看手册比较细致。

当然参考例程也是有的。

另外,也可以在立创商城上能看到中科昊芯的DSP芯片某些型号也有上架的,价格也并不算高。

所以经过前期的一系列准备后,我觉得可以小试牛刀,弄个简单的工程,写个小代码,试试开发环境及软件。
DSP****与单片机浮点性能到底谁更好?
我在做电机控制的时候,我大多以单片机为主控,STM32F407,GD32F470,雅特力的AT32F403,无一例外的都是Cortex-M4内核,带有浮点运算单元,主频很多都超过200MHz以上
但是行业前辈,大多数用的是TI的C2000系列,以TMS320F28335案例居多,主频150MHz。这款芯片也有30-40年的历史了,现在依然在伺服领域占着一席之地。
有某销售人员数说“就算某些型号的MCU主频高于DSP的主频,但是整体运算性是能远超单片机的”
今天我就来用试验验证一下,也算是给自己解惑一番
STM32F407单片机浮点运算性能
首先STM32F407单片机的主频时168MHZ,我编写程序分别进行1千万次浮点运算,分别是加减乘除,使用单片机的定时器,记录运行时间(注意,本次使用MDK软件,程序优化等级为Leven 0)。
计时方式:每次计数之前,都会对定时器的数据进行清零。我选用的TIM3(外设主频84MHZ),定时器计数范围从0-65535,同时记录定时器中断溢出次数。最后通过串口将记录的数据打印出来。
所以:定时器时间= ( 中断溢出次数*65536 + 定时器计数值) / 84MHZ

其中:Irq_Cnt 表示定时器中断溢出次数;TimCount 表示当前定时器的计数
在不启动单片机的硬件FPU,数据记录
[+]IRQ=5351,Count=62805,Ts=4175.547 mS
[-]IRQ=4893,Count=32253,Ts=3817.856 mS
[*]IRQ=4740,Count=44253,Ts=3698.630 mS
[/]IRQ=6803,Count=49675,Ts=5308.227 mS
在启动单片机的硬件FPU,数据记录
[+]IRQ=2830,Count=26791,Ts=2208.258 mS
[-]IRQ=2830,Count=26783,Ts=2208.258 mS
[*]IRQ=2830,Count=26811,Ts=2208.258 mS
[/]IRQ=3365,Count=11789,Ts=2625.481 mS
从上面数据可以看出,单片机的DFU还是很有用的。从加减乘法上,单片机耗时基本一致,除法则相对慢了一些。
中科昊芯DSC280025****浮点运算性能
DSP的方案使用的中科昊芯,主频160MHZ,我准备用相同的方式,分别1千万次相同的 浮点 加、减、乘、除,并用定时器记录中断次数和时间。

本来我也想通过串口,把计算耗时额时间数据打印出来,但是奈何能力有限,对IDE的不熟练,对DSP的也不熟练,虽然昊芯DSP的串口SCI外设我调试成功,但是DSP的printf函数映射起来好像和MCU不太一样。所以暂时先放弃,通过仿真获取时间。
程序在RAM中运行,耗时时间:

程序在FLASH中运行,耗时时间:

上述代码计时,我采用的CPUTIMER1定时器,时钟频率为系统时钟,定时器溢出时间我设置为0xFFFF,所以代码运行时间为
运行时间= ( 中断溢出次数*65536 + 定时器计数值) / 160MHZ
(2445*65536+56838)/160MHZ=1001.8mS
对比结论
通过对比发现,
1.DSP的RAM运行模式下,确实要比FLASH下运行快速,大概要快30%左右。另外一个是就算在FLASH模式下,好像也支持将代码先加载到RAM下,然后运行,可以提高程序运行速度。
2.带DFU的单片机浮点运算性能,与差DSP的浮点性能差确是差异比较大。当然可能与我设计的浮点运算的策略有关系,但是大致还是能说明问题。DSP浮点确实快!我查了下原因,可能主要还是DSP的哈佛架构和流水线机制。
所以,DSP还是有DSP的优势的,另外昊芯IDE的风格和TI的CCS上位差异不大,有的快捷键还是通用的。虽然我对DSP也不怎么熟悉,大家一起慢慢学习吧。