请问STC8H的硬件乘法器相关资料在哪里?
看到STC8H系列里有硬件乘法器,在手册里搜索不到相关资料。请版主提供相关资料学习。谢谢。已经找到,只怪我粗心。 建议 楼主 不要使用 STC8H系列里的硬件乘法器, 速度奇慢. MDU16 彻底 废了
以经典的 int 乘法为例, 硬件乘法(直接使用官方MDU16库) 和 软件乘法 相 PK,速度差 3倍 .
请看 清楚, 是慢 3倍, 不是 增速 快 3倍. LAOXU 发表于 2023-11-14 10:26
建议 楼主 不要使用 STC8H系列里的硬件乘法器, 速度奇慢. MDU16 彻底 废了
以经典的 int 乘法为例, 硬件 ...
我不知道你的结论是怎么得出来的。
STC8H实验箱例程包有MDU16的使用例子:46-MDU16使用硬件函数库计算
屏蔽掉无关的打印信息,通过P10 IO口的低电平信号就能测出计算时间:
使用MDU16硬件库时测量P10的低电平时间是16us左右:
不使用MDU16硬件库时测量P10的低电平时间是24us左右:
附件是测试代码,有兴趣的朋友可以自己试试。
理论上, 主频高一倍, 整体速度就翻一倍,但实际上并不是这样
STC32F12K54 的主频用高了, 就产生一个问题, 速度提升有限, 频率越高, 速度升幅越小, 超过极限就彻底完蛋(死机),其原因就是多级流水线解码错误, 重复取码再解码浪费时间,
主频高到一定程度, 解码永远解不成功, 造成死机.
官网上有个很出名的 STC32F12K54 测试程序, 号称运算速度比原速度快 17倍, 你可看到, 不同频率下, 速度比值不同(理论上, 这个比值恒定, 与频率无关),
我下载了标准测试程序, 用 STC32F12K54 仿真测试(采用默认频率 11.0592), 运算速度比值比官网上更理想, 比值更大, 硬件运算速度更快.主频低 解码几乎无误率
编写了一个最简单的测试程序, 以 不用 MDU16库 和加入 MDU16库, 分别运行, 读取 T0 计数值作对比
不用 MDU16库,T0 计数值 , 为 25
加入 MDU16库,T0 计数值 , 为 68
下面为测试程序
单从功能上 讲 , MDU16 的 功能 要比 MDU32 强大,
几乎包含了 单精度浮点运算的一切功能,我很喜欢.
通过进一步仔细分析原因, 主要是 STC8H 系列 MDU16 的 参数 输入/输出,
没有放在 DATA 区域, 而放在了 XRAM 区域,必须通过 DPTR 指针 才能读写 ,
从而 整体 拖慢了 速度 , 影响 了 性能.
说实话, STC8H 系列 其他 模块 功能 尚可,仅 MDU16 性能 表现差到极致, 不使用就是了,
并不影响 STC8H 系列 的 其他 性能.
利用MDU16做一个乘除函数,u16 mul_div16(u16 a,u16 b,u16 c);// a*b/c
计算:输入电压 = (u32)1190*ADC12/ADC15
减少数据传输,大幅提升计算速度。 LAOXU 发表于 2023-11-15 07:01
理论上, 主频高一倍, 整体速度就翻一倍,但实际上并不是这样
STC32F12K54 的主频用高了, 就产生一个问题, ...
芯片的主频上不去是因为当前Flash的工艺限制,Flash的读取速度上限就40M左右,CPU运行频率过高时从Flash里面读取指令就得加延时,否则读取指令就会出错。所以高速芯片都需要加cache,将指令搬到SRAM里面再执行。而外设运行速度就不受这个限制。
至于MDU16的运行效率到底怎么样,烧录到芯片里面直接运行才是最准确的。
页:
[1]
2