文献标识码:A
DOI:10.16157/j.issn.0258-7998.2017.03.002
中文引用格式:梁建红,罗亮,刘知贵,等. 基于异构多核运动控制器的高速接口设计[J].电子技术应用,2017,43(3):12-15,20.
英文引用格式:Liang Jianhong,Luo Liang,Liu Zhigui,et al. Design of high-speed interface of motion controller based on the heterogeneous multi-core[J].Application of Electronic Technique,2017,43(3):12-15,20.
0 引言
在嵌入式运动控制系统中,无论是ARM[1]、DSP[2]还是FPGA[3]都拥有着不可替代的地位。ARM处理器与运动控制芯片结合,实现了高精度四轴运动控制器[1]。文献[2]采用DSP+FPGA构建完成六轴焊锡机器人控制,DSP主要完成运动控制算法,FPGA完成精插补以及IO扩展。文献[3]利用ARM较强人机接口能力、DSP的计算能力以及FPGA的接口扩展灵活性,完成CNC系统的优异控制。
随着制造领域对嵌入式运动控制系统应用范围的扩大,要求控制系统能在复杂环境下完成多种不同的任务[4],多核协同处理必将成为嵌入式控制系统的发展方向。多核协同处理的数据交互效率都必将影响到整个控制系统的性能,文献[2]在FPGA中开辟双端FIFO接口实现DSP与FPGA之间进行数据交互,双端FIFO大小之间关系到数据交互的效率;文献[3]中ARM与DSP之间采用一片大容量FPGA作为桥梁,并对ARM和DSP进行分别编址,软件设计要求提高,增加硬件成本和PCB板布线难度,通信稳定性也不可保障;文献[5]中对于DSP与ARM之间通过外扩接口通信,且控制器与外界通信采用通信速率较低的RS232方式,影响控制系统的控制效率[5]。
随着微电子技术的快速发展,单硅片内可嵌多个处理器核,比如TI公司推出多核处理器OMAPL138。采用OMAPL138完成了数字接收机高速接口设计[6],在RAM与DSP之间采用支持双操作系统通信的SysLink组件,调用该组件的APP函数完成双核通信,简化双核通信复杂性。DSP引入操作系统,削弱运算能力。本文采用OMAPL138+FPGA为核心处理器,ARM9运行Linux系统,完成系统多任务切换和管理;DSP不运行操作系统,保证DSP计算实时性,双核通信由共享内存空间;FPGA主要产生脉冲信号以及IO口扩展。文中详细阐述PC与ARM、ARM与DSP以及DSP与FPGA之间通信接口设计和固件设计。
1 系统设计方案
本系统采用OMAPL138+FPAG作为嵌入式运动控制器核心,OMAPL138是一款异构多核处理器,内部集成ARM9和DSP C6748内核[7]。ARM9可以植入嵌入式系统Linux,完成任务调度,增强控制器多任务的协同处理能力;DSP C6748具有硬件乘法器,采用128 bit位宽的超强指令集(VLIW)读写指令,可完成复杂算法;FPGA具有丰富IO资源和并行处理能力,方便脉冲信号产生,实现多电机同步控制。
控制器与外界通信主要有两个接口:以太网和串行通信口(UART),以太网主要用于远距离传输,UART主要用于Linux系统移植时提示信息和系统运行状态信息的输出。ARM与DSP之间通过共享内存空间完成数据交互,稳定性高,通信所用时间可以忽略不计[8]。DSP与FPGA之间通过uPP高速并行接口,当OMAPL138时钟频率为456 MHz时,uPP接口时钟频率可以达到114 MHz,控制器高速接口框图如图1所示。
图1可以看出,控制器与外界通信使用的PHY芯片有LAN8710A和CP2102,LAN8710A主要用于网络通信中MAC与网络层之间互联,CP2102主要实现USB2.0与串行通信口(COM)之间通信协议转换,ARM9与DSP之间通过OMAPL138内部交互中心资源(SCR)总线完成数据交互。
1.1 PC与ARM通信——网络通信
PC与控制器接口通过网络实现,由网络接口RJ45完成数据交互。嵌入式系统中,常用的TCP/IP网络协议为4层,简化原OSI的7网络协议层,4层协议分别为应用层、网络层、传输层以及物理层。系统中由OMAPL138集成EMAC模块实现数据链路层,物理层使用Microchip公司的专用PHY芯片LAN7810A实现。LAN8710A具有高性能、小封装、低功耗等特性,广泛应用于商业、工业类电子产品以及消费类电子产品中。符合IEEE802.3标准,支持自协商机制,可自行裁定通信速率和传输模式。
LAN8710A与OMAPL138集成外部接口MII互联,硬件连接图如图2所示。LAN8710A外接时钟25 MHz,通过内部PLL倍频到100 MHz,提供发送和接收数据时钟MII RXCLK和MII TXCLK,JRJ-138EHNL是内嵌LED指示灯和网络变压器的RJ45接口,在PCB设计需要考虑:10/100 MB/s网络传输4根线为2组差分信号,PCB走线需要按照差分规则,阻抗匹配为100 ?赘;MII RXD[3..0]和MII TXD[3..0]两组线需并行走线。
1.2 ARM与DSP的通信设计——共享内存
本设计采用异构多核处理器——OMAPL138作为核心处理器,OMAPL138内部集成ARM9和DSP C6748两个内核。OMAPL138硬件支持内存空间共享,本系统内存共享主要包括128 KB内部存储区(128 KB Inter Memory)、256 KB DSP L2数据存储区以及256MB外扩DDR2的Nand Flash;数据交互过程中消息通知通过中断方式完成,中断源如图3所示。图中左右两端分别代表DSP和ARM处理器,DSP INTC代表DSP端中断控制器,ARM INTC代表ARM中断控制器,配置各自INTC可使能或者屏蔽中断源。SYSCFG_CHIPINT[4]直接指向DSP内核,触发不可屏蔽中断(NMI),中断优先级最高;SYSCFG_CHIPINT[0..1]只能触发ARM核产生中断;SYSCFG_CHIPINT[2..3]为双向箭头,该寄存器既可以触发ARM中断也可以触发DSP中断,本设计SYSCFG_CHIPINT[2]触发DSP中断,SYSCFG_CHIPINT[2]触发ARM中断。软件框架采用DSP端不运行操作系统,ARM端运行Linux操作系统,DSP不运行操作系统,保证复杂算法运行实时性,ARM运行Linux系统,方便多任务管理。
通信流程设计采用基于互斥锁的循环链表,互斥锁目的保护数据,当ARM或者DSP在向共享内存空间写数据时,另一核不能对该块数据进行读写操作。循环链表增加交互数据缓冲大小,数据块相互独立,互不影响。ARM有数据向DSP发送时,数据就放在MessageQueue中,并通过置位SYSCFG_CHIPINT[2]触发DSP产生中断,告知DSP处理器ARM有数据向DSP发送,同样DSP也可以向ARM发送数据。MessageQueue首块数据和末块数据引入互斥锁,整个流程如图4所示。
1.3 DSP与FPGA接口设计——uPP
OMAPL138主要有两个高速并行接口uPP和EMIF[9],两外设都可以被ARM或者DSP核分别访问,EMIF主要是用于存储IC连接,如果与FPGA连接时,FPGA主要作为协处理使用[10];uPP是一种专用数据线和最小的控制信号的双通道高速并行接口,双通道都支持8~16 bit宽传输,数据通信时钟频率可达内核运行频率的1/2,在内核运行时钟为456 MHz时,数据通信IO操作频率可达114 MHz。那么uPP理论最大通信速率为1 824 Mb/s;若两个通道并行传输,则传输速率为3 648 Mb/s。如此高速传输速率是SPI传输速率的20多倍,能满足许多DSP与FPGA传输速率的实时性要求,文献[11]采用USB3.0进行数据传输,传输速率最高也才达到260 Mb/s。DSP端uPP接口支持直接内存存储(DMA),减少CPU占有率。每通道使用Enable、Start和Wait进行接口控制,uPP功能IO描述如表1所示。
uPP支持传输和接收两种模式,传输单位为字,意味每传输2个字节,控制信号Enable、Start和Wait作用都可以发送变化。本设计中将uPP工作在双边沿工作模式,在Clock的上升沿和下降沿都可以发送和接收数据,有效提高通信速率。DSP端uPP为传输模式时,时钟信号需DSP端提供,方便通信同步,通信时序图如图5(a)所示,uPP首先发送Start和Enable信号,数据就开始发送,如果接收到FPGA端Wait信号有效,DSP端就会等待FPGA端将Wait信号置低才会继续发送数据;DSP端uPP为接收模式时,FPGA为uPP提供时钟信号,在Start开始触发信号和Enable同时为电平时,DSP端才开始接收信号,当Enable信号为低时,FPGA会暂停发送uPP数据,时序如图5(b)所示。
2 接口测试
2.1 ARM与PC通信
ARM与PC通信,其核心是两个不同操作系统之间的网络通信。ARM移植Linux操作系统,通过在PC端使用TCP调试助手,Linux运行bwm-ng网络调试助手,通过两边数据发送与接收,可以测试通信速率和通信正确性。通过测试PC上传速率最高达75 MB/s,PC下行速率最高达20 MB/s,比文献[6]所实现的网络通信速率要高,原因是文献[6]中OMPAL138内部两处理器核运行主频为300 MHz,本设计运行主频456 MHz。
2.2 ARM与DSP通信测试
2.2.1 通信速率测试
ARM与DSP之间通信主要通过共享内存方式完成,测试通信速率,主要通过使用DSP内置64位(TSCH、TSCL)计时器作为通信时间标准。设计中将unsigned char类型4 096长度数组先初始化为0×55,相当于4 K数据包。每次计数器开始计数前都清零,接着读取一次计时器值(TSCH0,TSCL0),完成测试后再重新读取计时器(TSCH1,TSCL1)的值,通过下式计算所需时间(单位:s):
每次读写数据都是4 kb,那么通信ARM与DSP通信速率(单位:kb/s)就可以通过下式计算:
无论是测试ARM向共享内存中写数据速率、读速率,还是DSP向共享内存中写数据速率、读数据速率,以及ARM向DSP发送数据速率、DSP向ARM发送数据速率,都可以通过式(1)、式(2)进行计算。通过互斥锁引入,增加通信缓冲区大小,方便信息有效交换。测试中选用OMAPL138内部三个不同区域作为共享区域,128 KB内部存储区、256 KB DSP L2存储区以及外扩256 MB DDR2存储区,对两个存储区进行读写操作,计算通信速率,通过CCS仿真查看变量结果如图6所示,其速度单位为Mb/s。
图6结果可以看出,离DSP内核越近,数据的读写速率就越快,DSP L2存储区读写速率最快,共享内存和DDR2外部存储器的读写数据速率要慢许多,但是最慢通信速率已经达到190 Mb/s,对于ARM与DSP之间通信,已可以满足大部分案例的读写速率。
2.2.2 通信稳定性测试
采用芯片级封装异构多核处理OMAPL138,ARM与DSP通信通过共享内存空间方式完成,稳定性好。在分离ARM与DSP核之间与共享内存ARM与DSP之间通信,分别计数接收数据正确次数,得到表2的对比结果。
表2可以看出,ARM与DSP分离在进行2 500次发送和接收实验中,正确次数比例与共享内存空间次数相近,在4 500次实验中,可以明显看出共享内存通信成功次数明显比分离元件要高很多。分离ARM与DSP通信,采用数据总线和地址总线并行PCB布线,在时钟节拍下完成指定地址空间数据通信。在高速通信下,一方面时钟线和数据线存在电平变形,高低电平造成接收方误判;另一方面数据线直接存在电磁干扰,这也是造成错误接收的原因。共享内存空间不存在分离ARM和DSP的问题,共享内存数据错误主要来自双核通信同步性问题,ARM与DSP向共享数据空间读写时刻发生冲突。通过软件设计上,采用互斥锁循环链表可以完全解决误码接收问题。
2.3 DSP与FPGA通信测试
本设计中DSP与FPGA通信,采用16位位宽双边沿发送、接收数据的uPP接口。DSP数据手册配置寄存器,主要包括uPP时钟、IO端口复用、通信模式等。FPGA需要根据图5时序图,完成时序代码编写,通过Behavioral仿真,可以得到FPGA端uPP发送以及uPP接收仿真波形,如图7所示。
在图8中,无论是uPP发送还是接收,都是双边沿有效。在图8(a)中,只要当DSP端发送Wait信号为高电平时,程序就会发送无用数据-1,并且会等待Wait信号为低才会发送下一个有效数据。按照2.2.1的方式可以测试出DSP端通过uPP发送给FPGA,FPGA通过相同返回所有发出数据,计算uPP通信速率为356 MB/s,该数据与理论uPP通信速率慢,主要是DSP端代码优化的问题,但如此高速的数据交换速率已经足以满足许多应用场合。
3 结论
本文设计以异构多核处理器OMAPL138+FPGA为核心,OMAPL138内部集成ARM9和DSP C6748核,ARM9处理器运行Liunx系统,DSP为保证算法实时性,不运行操作系统。ARM9与DSP之间数据交换通过共享内存空间,软件设计采用采用基于互斥锁的循环链表,实验表明硅片集成双核通信速率较高、稳定性较好;DSP与FPGA之间通信,通过并行接口uPP,实验对FPGA端通信时序进行仿真,测试通信DSP端到FPGA,通过FPGA回传到DSP的速率为356 MB/s;控制器与PC通信,通过网络接口完成,上传和速率都较高。本文对于异构多核嵌入式控制器高速通信接口提供比较完善的解决方案,具有较强的参考价值。
参考文献
[1] 徐海林,惠晶.基于ARM和PCL6045BL的四轴运动控制器设计[J].江南大学学报(自然科学版),2014,13(2):132-136.
[2] 马永超,罗亮,刘知贵.六轴焊锡机器人运动控制器的设计[J].机械设计与制造,2015(10):168-171.
[3] 董海涛,庄淑君,陈冰,等.基于ARM+DSP+FPGA的可重构CNC系统[J].华中科技大学学报:自然科学版,2012,40(8):82-87.
[4] 曹建福,汪霖.模块化工业机器人嵌入式控制系统的研究[J].控制工程,2013(2):289-294.
[5] 何国军,陈维荣,刘小强,等.基于DSP与FPGA的运动控制器设计[J].电子技术应用,2009,35(7):35-37.
[6] 李朝海,罗超,黄东辉.基于OMAP-L138的数字接收机高速传输系统设计[J].电子技术应用,2014,40(7):6-8,12.
[7] Texas-Instruments. OMAPL138 C6-Integra DSP + ARM processor[M].2009.
[8] 陆小虎,于东,胡毅,等.基于异构多核处理器的嵌入式数控系统研究[J].中国机械工程,2013(19):2623-2628.
[9] Texas-Instruments.OMAPL138 C6000 DSP + ARM low-power Silicon errata(Revs2.1.2.0,1.1&1.0) (Rev.H)[M].2011.
[10] 周委,陈思平,赵文龙,等.基于DSP EMIF口及FPGA设计并实现多DSP嵌入式系统[J].电子技术应用,2008,34(6):39-42.
[11] 徐永,齐心,陶智勇.基于USB3.0的GPP软件无线电系统的硬件平台设计[J].电子技术应用,2013,39(2):103-106.
作者信息:
梁建红,罗 亮,刘知贵,万博雨
(西南科技大学 信息工程学院,四川 绵阳621000)