6CHAPTER基于SOPC的嵌入式系统开发提要1.SOPC概述2.FPGA的嵌入式处理器3.SOPC开发工具及开发流程4.嵌入式系统应用实例可编程片上系统芯片SOPC(SystemOnaProgrammableChip)是Altera公司于2000年提出的一种灵活高效的SOC解决方案,SOPC利用可编程逻辑技术把整个电子系统集成在一个单片上,是一种特殊的嵌入式系统芯片。与可编程逻辑器件一样,SOPC的设计也仅需完成前端设计,故其设计投入比较少,设计方法灵活,SOPC的系统功能可裁减、易扩充,结合了SOC和CPLD、FPGA的优点。作为一种系统级芯片,SOPC具有低的设计成本和开发风险,从而获得广泛的应用。1SOPC概述传统数字系统设计:FPGA和处理器分离;FPGA(数字系统的接口、控制、逻辑控制和复杂数字信号处理或数据处理算法的协处理);电路规模较大、设计复杂,功耗较高、保密性也较差。FPGA工艺的发展使FPGA的容量愈来愈大,一款低端FPGA就可能具有比几年前最高端FPGA更大的容量和资源。容量的增加和性能的提升允许在FPGA内部实现硬核或软核处理器,从而实现更高的系统集成度。1SOPC概述SOPC具有如下特点:1.至少包含一个嵌入式处理器内核。2.具有一定容量的片内高速RAM。3.具有足够的片上可编程逻辑资源。4。具有处理器调试接口和编程接口。1SOPC概述各主流FPGA厂商都在FPGA产品中提供了嵌入式硬核或软核处理器的支持2FPGA的嵌入式处理器2FPGA的嵌入式处理器-软核Nios/Nios2Nios/Nios2由Altera公司推出,Nios出现于2000年,专门针对Altera的FPGA进行了优化,是一种可配置的16/32位RISC处理器,采用5级流水线,哈佛结构;MicroBlazeMicroBlaze是Xilinx公司推出的32位、哈佛结构的RISC处理器,专门针对Xilinx的FPGA进行了优化,主要应用于网络、电信、数据通信、嵌入式和消费市场的复杂系统。MicroBlaze使用32位指令集,3级流水,有32个32位的通用寄存器,可选的硬件乘法器,不支持用户自定义指令、协处理器、Cache、MMU,外部总线主要使用IBM的CoreConnect标准。2FPGA的嵌入式处理器Leon2\Leon3Leon2\Leon3由JiriGaisle个人开发,受到欧洲航天局工作的支持。Leon2使用VHDL描述,分为两个版本:标准版和容错(FaultTolerant)版。标准版是一种开源的软核,使用GNULGPL授权协议,可以免费地应用于研究、教学和商业目的。OpenRISC1200OpenRISC1200是OpenRISC系列RISC处理器内核的一员。OpenRISC是由OpenCores组织负责开发和维护的,免费、开源的RISC处理器内核家族。OpenRISC包括OpenRISC1000和OpenRISC2000两个体系。2FPGA的嵌入式处理器-软核是否需要在FPGA中嵌入处理器?FPGA适合用于逻辑控制、接口控制、规则数据处理,设计具有复杂算法和逻辑控制系统时,需要结合使用嵌入式处理器对系统集成度要求较高,将处理器嵌入FPGA能最大限度地提高系统集成度,降低系统设计复杂度,加快上市时间。对需求变化提供较大的灵活性,在FPGA中嵌入处理器较为合适。FPGA与芯片处理器的结合的优点是无须重做一块新PCB或采用新的处理器就能够对软、硬件进行调试,对变更进行测试。2FPGA的嵌入式处理器选择软核处理器还是硬核处理器?对处理器的性能要求不高(仅要求几个到一两百个DMIPS,采用不多的FPGA资源就可以,则采用嵌入软核处理器是合适的选择。需要数据、协议处理能力超过300DMIPS,且难以由多个处理器分担,则采用1,100MIPS的高性能PowerPC嵌入硬核处理器较合适。FPGA中嵌入的处理器应当与FPGA及其所面向的市场、应用需求相匹配。在中低性能FPGA中采用MicroBlaze、Nios/NiosII等软核处理器,在高性能平台FPGA中采用PowerPC高性能硬核处理器。例如采用Spartan3FPGA中的MicroBlaze软核处理器实现中低复杂度系统控制和低速协议处理,采用Vitex-5FXT平台FPGA中的PowerPC440实现大批量的数据处理和复杂的高速网络协议处理。2FPGA的嵌入式处理器选择通用处理器还是专用处理器?在性能均等的情况下,采用专用处理器还是通用的ARM、PowerPC处理器,主要取决于对工具包的支持情况和对可移植性的需求。为有效实现与FPGA逻辑的整合,专用处理器一般需要厂商自己提供的编译、仿真、调试工具。如果集成ARM、PowerPC等通用处理器则可以更多地采用GCC、GDB等通用开发工具。通用处理器也具有更广泛的开发社区支持,具有更丰富、更成熟的资源。从可移植性的角度,通用处理器也要优于专用软核处理器。以前采用ARM、PowerPC等外置通用处理器的系统设计可以轻松地移植到FPGA内部的嵌入处理器。当采用FPGA的系统设计达到一定量后需转化为ASIC时,通用嵌入处理器也更容易转化,因为大的晶元代工厂一般都有ARM7/9、PowerPC的工艺库。2FPGA的嵌入式处理器FPGA中的处理资源的快速增长促进了设计方法学的变化从新的系统设计观点角度重新考虑嵌入式系统中FPGA与嵌入式处理器的相互关系,可以更好地满足复杂系统对性能、电路设计、功耗、保密性方面的苛刻要求。将FPGA看作数字系统集成的平台,统一考虑接口、逻辑控制、协处理和系统控制,统一考虑硬件逻辑处理和软件逻辑,统一考虑FPGA中的硬件开发和软件开发,并根据系统需要做出合理的平衡。2FPGA的嵌入式处理器QUARTUSII+SOPCBuilder+NiosIIIDE3SOPC开发工具及开发流程EDK(XPS+SDK)+ISE-参考书《基于EDK的FPGA嵌入式系统开发》4嵌入式系统应用实例4.1基于Altera公司的Excalibur系列芯片的EPXA10开发板4.1.1Excalibur系列芯片内部结构ARM922T+Cache+MMUSDRAMControllerEBIUARTConfig-urationLogicMasterFPGAMaster(s)AHB1-2BridgeMasterSlaveFPGA-To-StripeBridgeDual-PortSRAM0Single-PortSRAM0SlaveMasterAHB1SlaveMasterStripe-To-FPGABridgeAHB2嵌入式处理器部分SDR/DDRSDRAMFlashUserModuleRequiringDirectAccessDual-PortSRAMsUser’sSlaveModuleintneFPGAFPGA部分AHBSlavePortPortAPortBAHBMasterPort4.1.2ARM-ARM922T工作频率最高可达200MHz;采用5级流水线,指令执行效率更高;提供1.1MIPS/MHz的哈佛总线结构;支持32位ARMv4T指令集和16位Thumb扩展指令集;支持32位AMBA总线接口,便于外部扩充;具有全性能的内存管理单元(MMU),支持WindowsCE、Linux、PalmOS等多种主流嵌入式操作系统;具有8K的指令缓存和8K数据缓存,能实现更高效的指令和数据处理;支持C语言和汇编语言编程。4.1.3FPGA查找表(LUT)逻辑,乘积项(Product-Term)逻辑,嵌入式增强型存储器,可以嵌入大量的MegaCore、AMPP函数和IP核,最高工作频率可达100MHz,非常适于片上可编程系统(SOPC)设计4.1.4先进的存储支持集成了2块SRAM和1或2块DPRAMSRAM的容量为2×16Kbytes;DPRAM的容量为1×16KbytesSDRAM控制器用于控制片外单倍速(SDR133MHz)/双倍速(DDR266MHz)SDRAM,支持容量高达512MbytesEBI接口最多可外接4个存储设备,如Flash存储器、SRAM等,总容量高达128Mbytes4.1.5其它嵌入式周边外设UARTPLLsTimer中断控制器WatchdogTimer4.1.6Excalibur系列芯片支持引导方式Flash引导配置:将设计下载到片外FlashMemory中,设计中必须包含对ARM的应用。启动时需要系统引导ARM启动,这个任务由下载到Flash中Bootloader文件来完成。然后ARM为主动,初始化各种寄存器、划分地址空间以及配置FPGA逻辑。最后将程序代码段拷贝到SRAM或SDRAM中,开始执行用户代码。E2PROM引导配置:将设计下载到片外E2PROM中,设计中可以只包含FPGA部分的应用。启动时FPGA为主动,初始化各种寄存器、划分地址空间以及配置FPGA逻辑,这时ARM处于复位状态。配置完成后,如果有对ARM的应用,则ARM解除复位,开始执行E2PROM中的用户代码。反之,ARM一直处于复位状态。直接配置芯片:将设计通过下载线直接对芯片进行引导配置,将用户代码下载到片内SRAM中,配置完成直接运行。以这种方式配置的芯片,掉电数据就会丢失。(开发调试阶段常用)4.1.7Excalibur系列芯片的通讯方式ARM作为AHB1总线的主控,直接访问AHB1总线的从属资源,包括SDRAM控制器、片上SRAM、中断控制器、定时器等。ARM作为AHB1总线的主控,通过AHB1-2桥访问AHB2总线上的从属资源,包括UART、EBI、SRAM、Stripe-To-FPGA桥等,同时通过Stripe-To-FPGA桥对FPGA进行访问和控制。FPGA通过AHB2的总线主控FPGA-To-Stripe桥访问AHB2总线上的从属资源,包括SRAM、SDRAM控制器、UART等。总线仲裁确保了每一时刻只有一个总线主控可以启动数据传输。总线译码器用来为数据传输提供目标设备的地址和片选信号。4.2基于Altera公司的Excalibur系列芯片实现的图像采集处理系统EPXA10/EPXA1(内嵌ARM核的FPGA芯片)程序存储模块1-Flash数据存储模块SDRAM串口并口CMOS图像传感器模块镜头计算机UART接口模块JTAG下载线显示器程序存储模块2-EEPOM时钟模块电源监控模块4.2基于Altera公司的Excalibur系列芯片实现的图像采集处理系统FPGA数据接收模块CMOS驱动模块CMOS图像传感器镜头ARM图像处理算法SDRAMUART串口计算机SDRAM控制器4.2基于Altera公司的Excalibur系列芯片实现的图像采集处理系统4.2基于Altera公司的Excalibur系列芯片实现的图像采集处理系统4.2基于FPGA+ARM实现的星敏感器4.2.1星敏感器的原理框图光学系统星空图像传感器信号处理星点提取导航星库星图识别姿态计算姿态星表/导航星观测星图/观测星4.2.2星敏感器的相关技术镜头设计图像传感器选择图像驱动图像处理(星图识别)-镜头设计焦距孔径-图像传感器选择CCD(电荷耦合器件)帧间转移型帧转移型全帧型CMOS图像传感器APS(有源象素传感器)TFCAPS-图像传感器选择(CCDvsCMOS结构)像敏单元列像敏单元行同步控制电路时序脉冲电路接口电路预处理电路A/D转换器Y地址列放大器多路模拟开关X地址ResetT1T2D1T3ReadColumnBus像敏区存储区水平移位寄存器输出栅信号通道放大器补偿放大器RSRDOS’OSODOGCRVA1CRVA2CRVA3CRVB1CRVB2CRVB3CRH1CRH2CRH3CMOS图像传感器-图像传感器选择(CCDvsCMOS芯片)STAR1000CMOS图像传感器大面阵CCD图像传感器-图像驱动(C