
唯一的重要的区别在于DSP支持单时钟周期的"乘-加"运算。这几乎是所有厂家的DSP芯片的一个共有特征。几乎所有的DSP处理器的指令集中都会有一条MAC指令,这条指令可以把两个 *** 作数从RAM中取出相乘,然后加到一个累加器中,所有这些 *** 作都在一个时钟周期内完成。拥有这样一条指令的处理器就具备了DSP功能。
具有这条指令就称之为数字信号处理器的原因在于,所有的数字信号处理算法中最为常见的算术 *** 作就是"乘-加"。这是因为数字信号处理中大量使用了内积,或称"点积"的运算。无论是FIR滤波,FFT,信号相关,数字混频,下变频。所有这些数字信号处理的运算经常是将输入信号与一个系数表或者与一个本地参考信号相乘然后积分(累加),这就表现为将两个向量(或称序列)进行点积,在编程上就变成将输入的采样放在一个循环buffer里,本地的系数表或参考信号也放在一个buffer里,然后使用两个指针指向这两个buffer。这样就可以在一个loop里面使用一个MAC指令将二者进行点积运算。这样的点积运算对与处理器来说是最快的,因为仅需一个始终周期就可以完成一次乘加。
了解DSP的这一特点后,当我们设计一个嵌入式系统时,首先要考虑处理器所实现的算法中是否有点积运算,即是否要经常进行两个数组的乘加,(记住数字滤波,相关等都表现为两个数组的点积)如果有的话,每秒要做多少次,这样就能够决定是否采用DSP,采用多高性能的DSP了。
//原理: a异或b异或b 等于 a//b就是密码
# include <windows.h>
int __stdcall wWinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPWSTR lpCmdLine, __in int nShowCmd )
{
int numInput[4] = {1, 2, 3, 4} //输入数据
int key[4] = {6, 2, 9, 8} //密码
int enp[4], disenp[4] //加密与解密后的数据
for(int i = 0i <4++i)
{
enp[i] = numInput[i] ^ key[i]
disenp[i] = enp[i] ^ key[i]
}
wchar_t strDsp[56]
wsprintf(strDsp, L"原数据%d:%d:%d:%d", numInput[0], numInput[1], numInput[2], numInput[3])
::MessageBox(::GetForegroundWindow(), strDsp, strDsp, 0)
wsprintf(strDsp, L"加密后%d:%d:%d:%d", enp[0], enp[1], enp[2], enp[3])
::MessageBox(::GetForegroundWindow(), strDsp, strDsp, 0)
wsprintf(strDsp, L"解密后%d:%d:%d:%d", disenp[0], disenp[1], disenp[2], disenp[3])
::MessageBox(::GetForegroundWindow(), strDsp, strDsp, 0)
return 0
}
这芯片自己读是读不出来的,因为都是加密的。你如果不知道怎么密码没办法的,你可以问问北京致芯,半日就可以做出来。当然了,也是收费的。不过能解密你的问题才是最主要的不是吗,代价肯定要付的。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)