部分引用,部分原创。
ASIC原本就是专门为某一项功能开发的专用集成芯片,比如交换机大量使用,比如通信公司的波分复用WDM的光网络OTN平台中,大量使用了ASIC,传输速率达到了400G。
FPGA基本就是高端的CPLD,两者非常接近。这种器件是用逻辑门来表述性能的。本身他就是一堆的逻辑门,通过硬件描述语言,比如verilogHDL把它转成电路连接,从最基本的逻辑门层面上连接成电路(参见数字电路书上那些全加器触发器什么的)。应该说,虽然看起来像一块CPU,其实是完全硬件实现的。后来因为写代码麻烦,对控制部分比较薄弱,本来跟其他CPU配合使用,即麻烦的算法CPU提交给FPGA,FPGA算完把结果再返回给CPU。可是这样外围电路就变得麻烦。于是提出了SOC设计方法,就是直接在FPGA里写一个CPU出来,既然FPGA万能,做个CPU自然毫无压力。这其中还有软核和硬核的区别,不过除了性能,使用方法大同小异。所谓IP核,就是把各种专用集成电路用硬件描述语言描述,然后烧到FPGA里形成专门的电路,这样就不必另外搭芯片了,所有的电路在一片FPGA里面形成。
DSP实际应该称为DSPs,即用于DSP处理的专用芯片。DSP是一类特殊的CPU,主要特点是能在一个时钟周期完成一次乘加,因此适合信号处理用。 3G中的Node B大量使用了DSP进行信号处理。 好像的TI的比较流行。跟普通计算机的区别一方面是他是哈佛结构的,也就是数据和程序空间分开。(普通计算机是冯诺依曼结构)另一方面他有流水线结构,不过现在其他也有了,见贤思齐。再一方面他有专用的硬件算法电路,用以完成DSP运算,比如最基本的乘法累加。上过DSP的就知道,蝶形算法FFT什么的,拆成最基本单元就是乘法累加,把这部分加速了,整体性能就有非常大的提高。DSP对于流媒体的处理能力远远的优于通用CPU。所以你看现在手机CPU,至少语音部分都是用DSP的。后来DSP概念也复杂化,各家都把一个控制核心整合到DSP里面,比如现在的智能手机芯片。可以看一下高通或者TI的片,基本是一个ARM核控制整体运算,一个DSP处理语音编解码,一个GPU负责图像运算,一个基带和天线处理模块负责通信,再加一些七七八八的东东比如GPS模块什么的。
单片机就是一个百搭的通用CPU,提供各种接口来对整体进行控制,相当一个总调度,当然,简单的功能一片CPU独立工作也就完成了。原来的51系列就是一堆IO口,后来慢慢的把常用的PWM,AD之类的功能加入了单片机。主要包括用了无数年仍然牛逼各大学必教的51系列,还有AVR,PIC,ARM,HOTEK……其实ARM9以后,已经说不清ARM算哪类了,目前的架构来看,更接近DSP。