全面剖析SOPC
SOPC及其技术
微电子技术的近期发展成果,为SOC的实现提供了多种途径。对于经过验证而又具有批量的系统芯片,可以做成专用集成电路ASIC而大量生产。而对于一些仅为小批量应用或处于开发阶段的SOC,若马上投入流片生产,需要投入较多的资金,承担较大的试制风险。最近发展起来的SOPC技术则提供了另一种有效的解决方案,即用大规模可编程器件的FPGA来实现SOC的功能。
可编程逻辑器件产生于20世纪70年代。其出现的最初目的是为了用较少的PLD品种替代种类繁多的各式中小规模逻辑电路。在30多年的发展过程中,PLD的结构、工艺、功耗、逻辑规模和工作速度等都得到了重大的进步。尤其是在20世纪90年代,出现了大规模集成度的FPGA,单片的集成度由原来的数千门,发展到数十万甚至数百万门。芯片的I/O口也由数十个发展至上千个端口。有的制造商还推出了含有硬核嵌入式系统的IP。因此,完全可能将一个电子系统集成到一片FPGA中,即SOPC,为SOC的实现提供了一种简单易行而又成本低廉的手段,极大地促进了SOC的发展。
SOPC技术是美国Altrea公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II。SOPC是基于FPGA解决方案的SOC,与ASIC的SOC解决方案相比,SOPC系统及其开发技术具有更多的特色,构成SOPC的方案也有如下多种途径。
基于FPGA嵌入IP硬核的SOPC系统
即在FPGA中预先植入嵌入式系统处理器。目前最为常用的嵌入式系统大多采用了含有ARM的32位知识产权处理器核的器件。尽管由这些器件构成的嵌入式系统有很强的功能,但为了使系统更为灵活完备,功能更为强大,对更多任务的完成具有更好的适应性,通常必须为此处理器配置许多接口器件才能构成一个完整的应用系统。如除配置常规的SRAM、DRAM、Flash外,还必须配置网络通信接口、串行通信接口、USB接口、VGA接口、PS/2接口或其他专用接口等。这样会增加整个系统的体积、功耗,而降低系统的可靠性。但是如果将ARM或其他知识产权核,以硬核方式植入FPGA中,利用FPGA中的可编程逻辑资源和IP软核,直接利用FPGA中的逻辑宏单元来构成该嵌入式系统处理器的接口功能模块,就能很好地解决这些问题。对此,Altera和Xilinx公司都相继推出了这方面的器件。例如,Altera的Excalibur系列FPGA中就植入了ARM922T嵌入式系统处理器;Xilinx的Virtex-II Pro系列中则植入了IBM PowerPC405处理器。这样就能使得FPGA灵活的硬件设计和硬件实现更与处理器的强大软件功能有机地相结合,高效地实现SOPC系统。
基于FPGA嵌入IP软核的SOPC系统
将IP硬核直接植入FPGA的解决方案存在如下几种不够完美之处:
- 由于此类硬核多来自第3方公司,FPGA厂商通常无法直接控制其知识产权费用,从而导致FPGA器件价格相对偏高。
- 由于硬核是预先植入的,设计者无法根据实际需要改变处理器的结构,如总线规模、接口方式,乃至指令形式,更不可能将FPGA逻辑资源构成的硬件模块以指令的形式形成内置嵌入式系统的硬件加速模块(如DSP模块),以适应更多的电路功能要求。
- 无法根据实际设计需求在同一FPGA中使用多个处理器核。
- 无法裁减处理器硬件资源以降低FPGA成本。
只能在特定的FPGA中使用硬核嵌入式系统,如只能使用Excalibur系列FPGA中的ARM核,Virtex-II Pro系列中的PowerPC核。
如果利用软核嵌入式系统处理器就能有效地克服解决上述不利因素。
目前最有代表性的软核嵌入式系统处理器分别是Altera的Nios和Nios II核,及Xilinx的MicroBlaze核。特别是前者,即Nios CPU系统,使上述5方面的问题得到很好地解决。
Altera的Nios核是用户可随意配置和构建的32位/16位总线(用户可选的)指令集和数据通道的嵌入式系统微处理器IP核,采用Avalon总线结构通信接口,带有增强的内存、调试和软件功能(C或汇编程序程序优化开发功能);含由First Silicon Solutions(FS2)开发的基于JTAG的片内设备(OCI)内核(这为开发者提供了强大的软硬件调试实时代码,OCI调试功能可根据FPGA JTAG端口上接收的指令,直接监视和控制片内处理器的工作情况)。此外,基于Quartus II平台的用户可编辑的Nios核含有许多可配置
- 单片DSP处理器功能系统的SOPC技术设计(01-12)
- 基于DSP和SOPC数字信号发生器的设计(01-05)
- 基于Linux的SoPC应用系统设计(04-23)
- 基于DSP的实时数据处理系统浅析(02-28)
- 基于LXI总线的1553B通讯模块设计与开发(11-24)
- 双MicroBlaze软核处理器的SOPC系统设计(01-27)