一种基于以太网加载FPGA和DSP的实现方法
扫描二维码
随时随地手机看文章
摘 要: 介绍了脱离仿真器直接使用外部计算机通过网口进行程序代码加载的基本原理, 讨论分析了网络接口、FPGA接口和HPI接口的访问控制等关键技术。详述了在包含CPU、FPGA和DSP的复杂系统设计方案中基于以太网加载FPGA和DSP的实现。该技术在系统工程化的应用中具有很好的前景。
关键词: CPU;以太网;FPGA;DSP;HPI;引导加载
随着嵌入式技术的发展,嵌入式系统逐渐演变为由微处理器、大规模集成电路、软件技术和各种具体的行业应用技术相结合的结果。嵌入式设备已经在航空航天、通信、电子等行业得到广泛应用。在以微处理器为核心的嵌入式应用系统中,对其中的FPGA和DSP的传统加载都是通过硬件仿真器来完成的。这在产品的初研阶段非常适用,然而在实际工程应用中各种产品组装成一个庞杂的系统时(如需对系统进行软件更新和维护时),传统的加载方式就显得极其不方便,程序代码的引导加载就需要一种更加灵活、高效的方法来实现,而基于以太网加载FPGA和DSP的实现方法能很好地解决这个难题。
本文介绍了基于以太网加载FPGA和DSP的基本原理, 并通过该技术在某嵌入式主控设计中的应用详述了在包含CPU、FPGA和DSP的复杂系统设计方案中基于以太网加载FPGA和DSP的实现, 讨论分析了网络接口、FPGA接口和HPI接口的访问控制等关键技术。
1 基于以太网加载FPGA和DSP的基本原理
基于以太网加载FPGA和DSP的实现过程为: 首先,外部计算机通过网络接口将代码传送给微处理器,并存储到微处理器的Flash存储器模块;然后,由微处理器分别通过FPGA的从串加载模式和DSP的主机引导加载(HPI接口)实现对FPGA和DSP程序代码的引导加载。
基于TCP/IP协议的以太网是目前使用最广泛的网络。网络协议通常分不同层次进行开发,每一层负责不同的通信功能。嵌入式设备通常根据微处理器的结构特点和系统需要实现的功能,将TCP/IP协议嵌入到微处理器中,从而实现嵌入式系统的网络接口功能[1-2]。
1.1 FPGA加载
FPGA常见的配置文件的加载模式有5种:主串加载模式、从串加载模式、主并加载模式、从并加载模式及JTAG加载模式。其中,JTAG加载模式在开发调试阶段使用。其余4种加载模式可分为串行加载方式和并行加载方式,而串行加载方式和并行加载方式都有主、从两种模式。由于主模式的加载同步时钟(CCLK)由FPGA提供,从模式的加载同步时钟(CCLK)由外部时钟源或者外部控制信号提供,为了方便微处理器控制加载过程,一般选择使用从串模式。
1.2 DSP加载
DSP常见的三种引导加载方式为仿真器引导加载、ROM引导加载、主机引导加载。
(1)仿真器引导主要用于调试阶段,是一种特殊的主机引导加载方式。
(2)ROM引导加载:在DSP外部复位信号被释放后,芯片处于内部复位保持状态, DSP芯片自动地通过EDMA/QDMA将外部ROM中的1 KB程序搬入地址0处。内部复位完成后,DSP开始从地址0处执行指令。
(3)主机引导加载:DSP上电复位后, I/O部分将处于激活状态,可以进行正常的通信,但DSP的内核仍处于复位状态,一直等待主机向HPI控制寄存器中的DSPINT位置1。这样,主机就可以通过HPI接口访问DSP的整个存储空间,对它们进行初始化。完成相关设置后,向DSPINT位写入1, DSP内核结束复位状态,执行地址0处的指令。
2 嵌入式数字处理系统设计与实现
2.1 硬件设计
嵌入式数字处理系统采用微处理器PowerPC作为主控CPU,主要执行网络控制等各种控制任务,其程序代码相对固定,存储在Flash中。如图1所示,选用Xilinx公司的XC3S1000和XC4VSX35这两种FPGA分别做逻辑和变频[3-4],选用两片TI公司的DSP TMS320C6416芯片完成数据处理与算法实现,这些FPGA和DSP的程序代码需实时更新[5]。
(1)网络接口设计
以太网PHY采用Marvell公司PHY协议层千兆网卡88E1111[6]。88E1111是高性能千兆以太网收发芯片,可以完成所有PHY(物理层)功能,支持全双工或半双工的10/100/1 000 Mb/s三速以太网,支持8 bit数据总线。CPU和以太网PHY、FPGA及DSP的接口基本电路如图2所示。CPU的网络接口引脚和以太网PHY的网络接口相连接,通过硬件配置模式HWCFG MODE[3:0]来确定88E1111的操作模式,从而确定需要连接的引脚,如图2所示,该设计选择了RGMII模式,以太网PHY通过网络隔离滤波器HX5008与外部以太网接口相连。
(2)FPGA接口设计
在从串模式下进行FPGA程序加载仅需要使用CCLK、PROG_B、INIT_B、DONE、DIN这5个信号引脚,微处理器使用通用IO管脚来配置FPGA。此外还需要设置M[2:0]信号以选择配置模式,根据芯片XC3S1000和XC4VSX35的模式设置其从串模式的配置均为M[2:0]=111。
(3)HPI 接口设计
引导配置引脚BEA[19∶18]决定了TMS320C6416的引导加载模式,将DSP的EMIFB接口引脚BEA[19∶18]通过上下拉电阻配置成BEA[19∶18]=01,即选择DSP为HPI加载方式。HPI接口电路如图2所示,主控CPU的数据总线、地址总线及控制I/O连接到FPGA上,DSP的HPI接口数据总线和控制线也连接到FPGA上,通过FPGA的接口逻辑设计将CPU和DSP连接起来。
2.2 软件设计
2.2.1 网络接口程序设计
(1)网络通信协议设计
网络通信协议设计主要是实现TCP/IP 协议。根据嵌入式系统结构特点和系统设计实现的功能需求,在TCP/IP 协议的基础上实现系统所需功能。
(2)网络接口的访问控制
驱动程序设计包括以太网PHY芯片的初始化、数据包的发送和接收。Freescale的MPC8377自带了三速以太网控制器ETSEC,作为以太网接口与外部的PHY芯片相连接[7]。本设计中主控CPU与PHY之间是RGMII模式接口。88E1111可以实现多种数据速率和访问控制模式,通过HWCFG MODE[3:0]确定其操作模式,设定DIS_FC为0,可以自适应地选择FIBER、COPPER接口。
Linux网络驱动程序的实现主要是在Linux内核中提供的网络设备接口及以上层次的代码基础上,移植或编写特定网络硬件的驱动程序工作,也就是完成设备驱动功能层,主要包括数据的接收、发送等控制。
2.2.2 FPGA接口程序设计
FPGA从串模式的配置过程将配置比特流载入到FPGA,有4个主要阶段: (1)清除配置内存;(2)初始化;(3)载入配置数据;(4)设备启动。其配置时序流程图如图3所示。