试从C54X-DSP硬件结构方面总结:为什么说DSP是一种特别适用于数字信号处理算法的微处理器

试从C54X-DSP硬件结构方面总结:为什么说DSP是一种特别适用于数字信号处理算法的微处理器,第1张

1、DSP采用哈佛结构总线,程序存储器和数据存储器分开,取指和数据访问同时进行。通用CPU采用冯诺依曼型总线,程序和数据总线共享同一总线,取指和数据访问不能并发。

2、流水线 *** 作(pipeline),取指、译码、寻址、取数、运算、存储流水 *** 作,等效单周期完成指令,而通用CPU通常一条指令需要几个时钟周期才可以完成。当然,流水线 *** 作引入了一些新问题,比如需要在适当位置加NOP空 *** 作指令或者调整指令位置以确保流水 *** 作能顺利完成。

3、独立的硬件乘法器。卷积、数字滤波、FFT、相关、矩阵运算等算法中,大量重复乘法和累加。MAC指令(取数、乘法、累加)在单周期内完成(通过流水线等效实现),比用软件乘法快很多。

4、独立的DMA总线和控制器。通用CPU中的总线是共享的,DMA使用了总线则CPU就要等待,而DSP中的DMA使用独立的DMA总线通路,可以和CPU core并发 *** 作。独立的源、目的地址寄存器、长度寄存器,自动计算地址和循环。光DSP处理器运算速度快还不行,还与数据吞吐率有关。

5、中心算术逻辑单元CALU。DSP中有很多ALU,如DMA控制器、地址发生器中就含有可做乘加运算的ALU,这样他们就不用占用CALU了。DSP中的ALU非常简单,地址、乘法、移位都不管了,只管算术与逻辑运算。

6、移位:通用CPU每次移动1bit,DSP可在一个机器周期内左移/右移多个比特。可用来对数字定标,使之放大或缩小以保证精度和防止溢出,还可以用来做定点数和浮点数之间的转换。

7、溢出:通用CPU中,溢出发生后,设置溢出标志位,不带符号位时回绕,带符号位时反相,带来很大误差。此时,溢出已经发生,无法挽回。DSP把移位输出的最高位(MSB)存放在一个位检测状态寄存器中,检测到MSB=1时,就通知下一次会发生溢出,此时溢出还未发生,来得及采取措施防止。

8、数据地址发生器(DAG)。取数不光要占用数据总线,还要计算地址。通用CPU数据、地址的产生和数据的处理都由ALU来完成。DSP中,设置了专门的数据地址发生器(实际上就是专门的ALU),来产生所需要的数据地址,节省公共的ALU时间。CALU主要做运算而不是做这些辅助的工作。

9、外设(peripherals)

时钟发生器、定时器、软件可编程等待状态发生器、GPIO、同步串口与异步串口、JTAG。

10、CSSU比较、选择、存储单元。用于维特比译码,通信中常用算法,专门设计一个硬件单元用于此算法。

11、片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。片内RAM同片外存储器相比,有以下优点:(1)片内RAM的速度较快,可以保证DSP无等待运行;(2)对于C2000/C3x/C5000系列,部分片内存储器可以在一个指令周期内访问两次,使得指令可以更加高效;(3)片内RAM运行稳定,不受外部的干扰影响,也不会干扰外部。 4)DSP片内多总线,在访问片内RAM时,不会影响其它总线的访问,效率较高。

12、具有低开销或无开销循环及跳转的硬件支持。

13、快速的中断处理和硬件I/O支持。

#include<stdioh>

main()

{   int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

    int i,j,sum=0;

for(i=0;i<3;i++){

for(j=0;j<3;j++)

            printf("%4d",a[i][j]);

        printf("\n");

    for(i=0;i<3;i++)

        sum+=a[i][i];

printf("\nsum = %d",sum); 

}

如图所示,望采纳。。。。。。

以上就是关于试从C54X-DSP硬件结构方面总结:为什么说DSP是一种特别适用于数字信号处理算法的微处理器全部的内容,包括:试从C54X-DSP硬件结构方面总结:为什么说DSP是一种特别适用于数字信号处理算法的微处理器、编写一个程序,计算出给定矩阵中主对角线元素的和、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9735639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存