文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.002
中文引用格式: 梁建紅,羅亮,劉知貴,等. 基于異構(gòu)多核運(yùn)動控制器的高速接口設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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 引言
在嵌入式運(yùn)動控制系統(tǒng)中,無論是ARM[1]、DSP[2]還是FPGA[3]都擁有著不可替代的地位。ARM處理器與運(yùn)動控制芯片結(jié)合,實(shí)現(xiàn)了高精度四軸運(yùn)動控制器[1]。文獻(xiàn)[2]采用DSP+FPGA構(gòu)建完成六軸焊錫機(jī)器人控制,DSP主要完成運(yùn)動控制算法,F(xiàn)PGA完成精插補(bǔ)以及IO擴(kuò)展。文獻(xiàn)[3]利用ARM較強(qiáng)人機(jī)接口能力、DSP的計(jì)算能力以及FPGA的接口擴(kuò)展靈活性,完成CNC系統(tǒng)的優(yōu)異控制。
隨著制造領(lǐng)域?qū)η度胧竭\(yùn)動控制系統(tǒng)應(yīng)用范圍的擴(kuò)大,要求控制系統(tǒng)能在復(fù)雜環(huán)境下完成多種不同的任務(wù)[4],多核協(xié)同處理必將成為嵌入式控制系統(tǒng)的發(fā)展方向。多核協(xié)同處理的數(shù)據(jù)交互效率都必將影響到整個控制系統(tǒng)的性能,文獻(xiàn)[2]在FPGA中開辟雙端FIFO接口實(shí)現(xiàn)DSP與FPGA之間進(jìn)行數(shù)據(jù)交互,雙端FIFO大小之間關(guān)系到數(shù)據(jù)交互的效率;文獻(xiàn)[3]中ARM與DSP之間采用一片大容量FPGA作為橋梁,并對ARM和DSP進(jìn)行分別編址,軟件設(shè)計(jì)要求提高,增加硬件成本和PCB板布線難度,通信穩(wěn)定性也不可保障;文獻(xiàn)[5]中對于DSP與ARM之間通過外擴(kuò)接口通信,且控制器與外界通信采用通信速率較低的RS232方式,影響控制系統(tǒng)的控制效率[5]。
隨著微電子技術(shù)的快速發(fā)展,單硅片內(nèi)可嵌多個處理器核,比如TI公司推出多核處理器OMAPL138。采用OMAPL138完成了數(shù)字接收機(jī)高速接口設(shè)計(jì)[6],在RAM與DSP之間采用支持雙操作系統(tǒng)通信的SysLink組件,調(diào)用該組件的APP函數(shù)完成雙核通信,簡化雙核通信復(fù)雜性。DSP引入操作系統(tǒng),削弱運(yùn)算能力。本文采用OMAPL138+FPGA為核心處理器,ARM9運(yùn)行Linux系統(tǒng),完成系統(tǒng)多任務(wù)切換和管理;DSP不運(yùn)行操作系統(tǒng),保證DSP計(jì)算實(shí)時性,雙核通信由共享內(nèi)存空間;FPGA主要產(chǎn)生脈沖信號以及IO口擴(kuò)展。文中詳細(xì)闡述PC與ARM、ARM與DSP以及DSP與FPGA之間通信接口設(shè)計(jì)和固件設(shè)計(jì)。
1 系統(tǒng)設(shè)計(jì)方案
本系統(tǒng)采用OMAPL138+FPAG作為嵌入式運(yùn)動控制器核心,OMAPL138是一款異構(gòu)多核處理器,內(nèi)部集成ARM9和DSP C6748內(nèi)核[7]。ARM9可以植入嵌入式系統(tǒng)Linux,完成任務(wù)調(diào)度,增強(qiáng)控制器多任務(wù)的協(xié)同處理能力;DSP C6748具有硬件乘法器,采用128 bit位寬的超強(qiáng)指令集(VLIW)讀寫指令,可完成復(fù)雜算法;FPGA具有豐富IO資源和并行處理能力,方便脈沖信號產(chǎn)生,實(shí)現(xiàn)多電機(jī)同步控制。
控制器與外界通信主要有兩個接口:以太網(wǎng)和串行通信口(UART),以太網(wǎng)主要用于遠(yuǎn)距離傳輸,UART主要用于Linux系統(tǒng)移植時提示信息和系統(tǒng)運(yùn)行狀態(tài)信息的輸出。ARM與DSP之間通過共享內(nèi)存空間完成數(shù)據(jù)交互,穩(wěn)定性高,通信所用時間可以忽略不計(jì)[8]。DSP與FPGA之間通過uPP高速并行接口,當(dāng)OMAPL138時鐘頻率為456 MHz時,uPP接口時鐘頻率可以達(dá)到114 MHz,控制器高速接口框圖如圖1所示。
圖1可以看出,控制器與外界通信使用的PHY芯片有LAN8710A和CP2102,LAN8710A主要用于網(wǎng)絡(luò)通信中MAC與網(wǎng)絡(luò)層之間互聯(lián),CP2102主要實(shí)現(xiàn)USB2.0與串行通信口(COM)之間通信協(xié)議轉(zhuǎn)換,ARM9與DSP之間通過OMAPL138內(nèi)部交互中心資源(SCR)總線完成數(shù)據(jù)交互。
1.1 PC與ARM通信——網(wǎng)絡(luò)通信
PC與控制器接口通過網(wǎng)絡(luò)實(shí)現(xiàn),由網(wǎng)絡(luò)接口RJ45完成數(shù)據(jù)交互。嵌入式系統(tǒng)中,常用的TCP/IP網(wǎng)絡(luò)協(xié)議為4層,簡化原OSI的7網(wǎng)絡(luò)協(xié)議層,4層協(xié)議分別為應(yīng)用層、網(wǎng)絡(luò)層、傳輸層以及物理層。系統(tǒng)中由OMAPL138集成EMAC模塊實(shí)現(xiàn)數(shù)據(jù)鏈路層,物理層使用Microchip公司的專用PHY芯片LAN7810A實(shí)現(xiàn)。LAN8710A具有高性能、小封裝、低功耗等特性,廣泛應(yīng)用于商業(yè)、工業(yè)類電子產(chǎn)品以及消費(fèi)類電子產(chǎn)品中。符合IEEE802.3標(biāo)準(zhǔn),支持自協(xié)商機(jī)制,可自行裁定通信速率和傳輸模式。
LAN8710A與OMAPL138集成外部接口MII互聯(lián),硬件連接圖如圖2所示。LAN8710A外接時鐘25 MHz,通過內(nèi)部PLL倍頻到100 MHz,提供發(fā)送和接收數(shù)據(jù)時鐘MII RXCLK和MII TXCLK,JRJ-138EHNL是內(nèi)嵌LED指示燈和網(wǎng)絡(luò)變壓器的RJ45接口,在PCB設(shè)計(jì)需要考慮:10/100 MB/s網(wǎng)絡(luò)傳輸4根線為2組差分信號,PCB走線需要按照差分規(guī)則,阻抗匹配為100 ?贅;MII RXD[3..0]和MII TXD[3..0]兩組線需并行走線。
1.2 ARM與DSP的通信設(shè)計(jì)——共享內(nèi)存
本設(shè)計(jì)采用異構(gòu)多核處理器——OMAPL138作為核心處理器,OMAPL138內(nèi)部集成ARM9和DSP C6748兩個內(nèi)核。OMAPL138硬件支持內(nèi)存空間共享,本系統(tǒng)內(nèi)存共享主要包括128 KB內(nèi)部存儲區(qū)(128 KB Inter Memory)、256 KB DSP L2數(shù)據(jù)存儲區(qū)以及256MB外擴(kuò)DDR2的Nand Flash;數(shù)據(jù)交互過程中消息通知通過中斷方式完成,中斷源如圖3所示。圖中左右兩端分別代表DSP和ARM處理器,DSP INTC代表DSP端中斷控制器,ARM INTC代表ARM中斷控制器,配置各自INTC可使能或者屏蔽中斷源。SYSCFG_CHIPINT[4]直接指向DSP內(nèi)核,觸發(fā)不可屏蔽中斷(NMI),中斷優(yōu)先級最高;SYSCFG_CHIPINT[0..1]只能觸發(fā)ARM核產(chǎn)生中斷;SYSCFG_CHIPINT[2..3]為雙向箭頭,該寄存器既可以觸發(fā)ARM中斷也可以觸發(fā)DSP中斷,本設(shè)計(jì)SYSCFG_CHIPINT[2]觸發(fā)DSP中斷,SYSCFG_CHIPINT[2]觸發(fā)ARM中斷。軟件框架采用DSP端不運(yùn)行操作系統(tǒng),ARM端運(yùn)行Linux操作系統(tǒng),DSP不運(yùn)行操作系統(tǒng),保證復(fù)雜算法運(yùn)行實(shí)時性,ARM運(yùn)行Linux系統(tǒng),方便多任務(wù)管理。
通信流程設(shè)計(jì)采用基于互斥鎖的循環(huán)鏈表,互斥鎖目的保護(hù)數(shù)據(jù),當(dāng)ARM或者DSP在向共享內(nèi)存空間寫數(shù)據(jù)時,另一核不能對該塊數(shù)據(jù)進(jìn)行讀寫操作。循環(huán)鏈表增加交互數(shù)據(jù)緩沖大小,數(shù)據(jù)塊相互獨(dú)立,互不影響。ARM有數(shù)據(jù)向DSP發(fā)送時,數(shù)據(jù)就放在MessageQueue中,并通過置位SYSCFG_CHIPINT[2]觸發(fā)DSP產(chǎn)生中斷,告知DSP處理器ARM有數(shù)據(jù)向DSP發(fā)送,同樣DSP也可以向ARM發(fā)送數(shù)據(jù)。MessageQueue首塊數(shù)據(jù)和末塊數(shù)據(jù)引入互斥鎖,整個流程如圖4所示。
1.3 DSP與FPGA接口設(shè)計(jì)——uPP
OMAPL138主要有兩個高速并行接口uPP和EMIF[9],兩外設(shè)都可以被ARM或者DSP核分別訪問,EMIF主要是用于存儲IC連接,如果與FPGA連接時,F(xiàn)PGA主要作為協(xié)處理使用[10];uPP是一種專用數(shù)據(jù)線和最小的控制信號的雙通道高速并行接口,雙通道都支持8~16 bit寬傳輸,數(shù)據(jù)通信時鐘頻率可達(dá)內(nèi)核運(yùn)行頻率的1/2,在內(nèi)核運(yùn)行時鐘為456 MHz時,數(shù)據(jù)通信IO操作頻率可達(dá)114 MHz。那么uPP理論最大通信速率為1 824 Mb/s;若兩個通道并行傳輸,則傳輸速率為3 648 Mb/s。如此高速傳輸速率是SPI傳輸速率的20多倍,能滿足許多DSP與FPGA傳輸速率的實(shí)時性要求,文獻(xiàn)[11]采用USB3.0進(jìn)行數(shù)據(jù)傳輸,傳輸速率最高也才達(dá)到260 Mb/s。DSP端uPP接口支持直接內(nèi)存存儲(DMA),減少CPU占有率。每通道使用Enable、Start和Wait進(jìn)行接口控制,uPP功能IO描述如表1所示。
uPP支持傳輸和接收兩種模式,傳輸單位為字,意味每傳輸2個字節(jié),控制信號Enable、Start和Wait作用都可以發(fā)送變化。本設(shè)計(jì)中將uPP工作在雙邊沿工作模式,在Clock的上升沿和下降沿都可以發(fā)送和接收數(shù)據(jù),有效提高通信速率。DSP端uPP為傳輸模式時,時鐘信號需DSP端提供,方便通信同步,通信時序圖如圖5(a)所示,uPP首先發(fā)送Start和Enable信號,數(shù)據(jù)就開始發(fā)送,如果接收到FPGA端Wait信號有效,DSP端就會等待FPGA端將Wait信號置低才會繼續(xù)發(fā)送數(shù)據(jù);DSP端uPP為接收模式時,F(xiàn)PGA為uPP提供時鐘信號,在Start開始觸發(fā)信號和Enable同時為電平時,DSP端才開始接收信號,當(dāng)Enable信號為低時,F(xiàn)PGA會暫停發(fā)送uPP數(shù)據(jù),時序如圖5(b)所示。
2 接口測試
2.1 ARM與PC通信
ARM與PC通信,其核心是兩個不同操作系統(tǒng)之間的網(wǎng)絡(luò)通信。ARM移植Linux操作系統(tǒng),通過在PC端使用TCP調(diào)試助手,Linux運(yùn)行bwm-ng網(wǎng)絡(luò)調(diào)試助手,通過兩邊數(shù)據(jù)發(fā)送與接收,可以測試通信速率和通信正確性。通過測試PC上傳速率最高達(dá)75 MB/s,PC下行速率最高達(dá)20 MB/s,比文獻(xiàn)[6]所實(shí)現(xiàn)的網(wǎng)絡(luò)通信速率要高,原因是文獻(xiàn)[6]中OMPAL138內(nèi)部兩處理器核運(yùn)行主頻為300 MHz,本設(shè)計(jì)運(yùn)行主頻456 MHz。
2.2 ARM與DSP通信測試
2.2.1 通信速率測試
ARM與DSP之間通信主要通過共享內(nèi)存方式完成,測試通信速率,主要通過使用DSP內(nèi)置64位(TSCH、TSCL)計(jì)時器作為通信時間標(biāo)準(zhǔn)。設(shè)計(jì)中將unsigned char類型4 096長度數(shù)組先初始化為0×55,相當(dāng)于4 K數(shù)據(jù)包。每次計(jì)數(shù)器開始計(jì)數(shù)前都清零,接著讀取一次計(jì)時器值(TSCH0,TSCL0),完成測試后再重新讀取計(jì)時器(TSCH1,TSCL1)的值,通過下式計(jì)算所需時間(單位:s):
每次讀寫數(shù)據(jù)都是4 kb,那么通信ARM與DSP通信速率(單位:kb/s)就可以通過下式計(jì)算:
無論是測試ARM向共享內(nèi)存中寫數(shù)據(jù)速率、讀速率,還是DSP向共享內(nèi)存中寫數(shù)據(jù)速率、讀數(shù)據(jù)速率,以及ARM向DSP發(fā)送數(shù)據(jù)速率、DSP向ARM發(fā)送數(shù)據(jù)速率,都可以通過式(1)、式(2)進(jìn)行計(jì)算。通過互斥鎖引入,增加通信緩沖區(qū)大小,方便信息有效交換。測試中選用OMAPL138內(nèi)部三個不同區(qū)域作為共享區(qū)域,128 KB內(nèi)部存儲區(qū)、256 KB DSP L2存儲區(qū)以及外擴(kuò)256 MB DDR2存儲區(qū),對兩個存儲區(qū)進(jìn)行讀寫操作,計(jì)算通信速率,通過CCS仿真查看變量結(jié)果如圖6所示,其速度單位為Mb/s。
圖6結(jié)果可以看出,離DSP內(nèi)核越近,數(shù)據(jù)的讀寫速率就越快,DSP L2存儲區(qū)讀寫速率最快,共享內(nèi)存和DDR2外部存儲器的讀寫數(shù)據(jù)速率要慢許多,但是最慢通信速率已經(jīng)達(dá)到190 Mb/s,對于ARM與DSP之間通信,已可以滿足大部分案例的讀寫速率。
2.2.2 通信穩(wěn)定性測試
采用芯片級封裝異構(gòu)多核處理OMAPL138,ARM與DSP通信通過共享內(nèi)存空間方式完成,穩(wěn)定性好。在分離ARM與DSP核之間與共享內(nèi)存ARM與DSP之間通信,分別計(jì)數(shù)接收數(shù)據(jù)正確次數(shù),得到表2的對比結(jié)果。
表2可以看出,ARM與DSP分離在進(jìn)行2 500次發(fā)送和接收實(shí)驗(yàn)中,正確次數(shù)比例與共享內(nèi)存空間次數(shù)相近,在4 500次實(shí)驗(yàn)中,可以明顯看出共享內(nèi)存通信成功次數(shù)明顯比分離元件要高很多。分離ARM與DSP通信,采用數(shù)據(jù)總線和地址總線并行PCB布線,在時鐘節(jié)拍下完成指定地址空間數(shù)據(jù)通信。在高速通信下,一方面時鐘線和數(shù)據(jù)線存在電平變形,高低電平造成接收方誤判;另一方面數(shù)據(jù)線直接存在電磁干擾,這也是造成錯誤接收的原因。共享內(nèi)存空間不存在分離ARM和DSP的問題,共享內(nèi)存數(shù)據(jù)錯誤主要來自雙核通信同步性問題,ARM與DSP向共享數(shù)據(jù)空間讀寫時刻發(fā)生沖突。通過軟件設(shè)計(jì)上,采用互斥鎖循環(huán)鏈表可以完全解決誤碼接收問題。
2.3 DSP與FPGA通信測試
本設(shè)計(jì)中DSP與FPGA通信,采用16位位寬雙邊沿發(fā)送、接收數(shù)據(jù)的uPP接口。DSP數(shù)據(jù)手冊配置寄存器,主要包括uPP時鐘、IO端口復(fù)用、通信模式等。FPGA需要根據(jù)圖5時序圖,完成時序代碼編寫,通過Behavioral仿真,可以得到FPGA端uPP發(fā)送以及uPP接收仿真波形,如圖7所示。
在圖8中,無論是uPP發(fā)送還是接收,都是雙邊沿有效。在圖8(a)中,只要當(dāng)DSP端發(fā)送Wait信號為高電平時,程序就會發(fā)送無用數(shù)據(jù)-1,并且會等待Wait信號為低才會發(fā)送下一個有效數(shù)據(jù)。按照2.2.1的方式可以測試出DSP端通過uPP發(fā)送給FPGA,F(xiàn)PGA通過相同返回所有發(fā)出數(shù)據(jù),計(jì)算uPP通信速率為356 MB/s,該數(shù)據(jù)與理論uPP通信速率慢,主要是DSP端代碼優(yōu)化的問題,但如此高速的數(shù)據(jù)交換速率已經(jīng)足以滿足許多應(yīng)用場合。
3 結(jié)論
本文設(shè)計(jì)以異構(gòu)多核處理器OMAPL138+FPGA為核心,OMAPL138內(nèi)部集成ARM9和DSP C6748核,ARM9處理器運(yùn)行Liunx系統(tǒng),DSP為保證算法實(shí)時性,不運(yùn)行操作系統(tǒng)。ARM9與DSP之間數(shù)據(jù)交換通過共享內(nèi)存空間,軟件設(shè)計(jì)采用采用基于互斥鎖的循環(huán)鏈表,實(shí)驗(yàn)表明硅片集成雙核通信速率較高、穩(wěn)定性較好;DSP與FPGA之間通信,通過并行接口uPP,實(shí)驗(yàn)對FPGA端通信時序進(jìn)行仿真,測試通信DSP端到FPGA,通過FPGA回傳到DSP的速率為356 MB/s;控制器與PC通信,通過網(wǎng)絡(luò)接口完成,上傳和速率都較高。本文對于異構(gòu)多核嵌入式控制器高速通信接口提供比較完善的解決方案,具有較強(qiáng)的參考價值。
參考文獻(xiàn)
[1] 徐海林,惠晶.基于ARM和PCL6045BL的四軸運(yùn)動控制器設(shè)計(jì)[J].江南大學(xué)學(xué)報(bào)(自然科學(xué)版),2014,13(2):132-136.
[2] 馬永超,羅亮,劉知貴.六軸焊錫機(jī)器人運(yùn)動控制器的設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2015(10):168-171.
[3] 董海濤,莊淑君,陳冰,等.基于ARM+DSP+FPGA的可重構(gòu)CNC系統(tǒng)[J].華中科技大學(xué)學(xué)報(bào):自然科學(xué)版,2012,40(8):82-87.
[4] 曹建福,汪霖.模塊化工業(yè)機(jī)器人嵌入式控制系統(tǒng)的研究[J].控制工程,2013(2):289-294.
[5] 何國軍,陳維榮,劉小強(qiáng),等.基于DSP與FPGA的運(yùn)動控制器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2009,35(7):35-37.
[6] 李朝海,羅超,黃東輝.基于OMAP-L138的數(shù)字接收機(jī)高速傳輸系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(7):6-8,12.
[7] Texas-Instruments. OMAPL138 C6-Integra DSP + ARM processor[M].2009.
[8] 陸小虎,于東,胡毅,等.基于異構(gòu)多核處理器的嵌入式數(shù)控系統(tǒng)研究[J].中國機(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設(shè)計(jì)并實(shí)現(xiàn)多DSP嵌入式系統(tǒng)[J].電子技術(shù)應(yīng)用,2008,34(6):39-42.
[11] 徐永,齊心,陶智勇.基于USB3.0的GPP軟件無線電系統(tǒng)的硬件平臺設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013,39(2):103-106.
作者信息:
梁建紅,羅 亮,劉知貴,萬博雨
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽621000)