聶明星,蔣新華,李光煬,陳興武,朱娜思
1.中南大學信息科學與工程學院,長沙 410083
2.福建工程學院控制與信息技術(shù)研究所,福州 350108
基于ARM-FPGA的NURBS插補嵌入式平臺研究
聶明星1,2,蔣新華1,2,李光煬2,陳興武2,朱娜思1
1.中南大學信息科學與工程學院,長沙 410083
2.福建工程學院控制與信息技術(shù)研究所,福州 350108
針對非均勻有理B樣條(Non-Uniform Rational B-Spline,NURBS)曲線高速高精加工過程中計算負載高的問題,提出基于ARM-FPGA嵌入式技術(shù)的NURBS曲線插補硬件平臺,對硬件平臺結(jié)構(gòu)進行了設計,利用讀寫下降沿同步信號解決ARM與FPGA跨時鐘域總線傳輸問題,自主開發(fā)了ARM-FPGA嵌入式硬件平臺。該平臺結(jié)構(gòu)具有小型化、智能化特點,在硬件平臺上經(jīng)實際測試表明,ARM與FPGA之間數(shù)據(jù)傳輸穩(wěn)定可靠,能有效降低單一處理器的計算負載。
非均勻有理B樣條(NURBS);插補器;嵌入式微處理器-現(xiàn)場可編程邏輯陣列(ARM-FPGA);計算負載
NURBS曲線以通用的數(shù)學表達式將解析圖形和自由形狀統(tǒng)一起來,并且被ISO組織確定為自由型零件和產(chǎn)品的唯一表達形式,事實上已經(jīng)成為工業(yè)CAD幾何造型的標準。NURBS曲線直接插補較傳統(tǒng)大量微小直線段逼近非圓曲線插補具有數(shù)據(jù)存儲量小、信息完整、速度平滑等許多明顯的優(yōu)點,容易實現(xiàn)高速高精度,已得到越來越多數(shù)控系統(tǒng)的支持。
但是,與NURBS曲線造型技術(shù)相比,NURBS曲線插補技術(shù)相對比較滯后。傳統(tǒng)的均勻參數(shù)插補方法速度波動較大,勻速插補方法誤差難以控制[1];自動調(diào)節(jié)進給速度插補方法能滿足最大輪廓誤差要求,但是速度的變化可能超過機床的加減速能力[2]。為提高插補精度,最大加速度和加加速度限制算法被引入到NURBS插補中,文獻[3]中利用分段三角函數(shù)加減速方法使加加速度柔性變化,避免產(chǎn)生加加速度階躍;文獻[4]在前瞻模塊中對加速度和加加速度超限點進行預處理,再采用S曲線加減速方法對速度進行平滑控制。這些方法雖然在理論上能夠大幅提高NURBS曲線插補的精度,但是也引入了較高的計算負載。
隨著高速高精數(shù)控技術(shù)的發(fā)展,對NURBS插補器提出了更高的要求。文獻[5]中指出高速高精插補周期應在1 ms內(nèi),插補時間越短,插補點距越小,零件的加工精度也就越高。由于NURBS曲線采用B樣條基函數(shù)分段構(gòu)造的形式,NURBS曲線點的計算復雜。同時采用泰勒1階或2階級數(shù)展開近似法來求取曲線參數(shù)時,NURBS一階或二階導[6]計算量也非常大。再加上NURBS非線性變化的曲率對速度的持續(xù)影響,使得插補過程中進給速度和加速度的變化可能是非線性的,需進行加減速控制和最大加加速度限制。因此,傳統(tǒng)基于單一處理器的NURBS插補解決方案,面臨較高計算負載和實時性的問題。
為此,本文針對NURBS曲線插補器的運行環(huán)境,提出一種基于ARM-FPGA架構(gòu)的NURBS插補器嵌入式平臺,在此硬件平臺上,第一級粗插補在高性能ARM嵌入式處理器端執(zhí)行,以Xenomai作為實時操作系統(tǒng),提供人機界面(HMI)、CNC解釋器、前瞻模塊、通信握手模塊及其他管理模塊的運行環(huán)境,完成實時性要求不高的插補預處理等工作;第二級插補在FPGA端完成,執(zhí)行加減速控制、插補點生成等實時性較強的任務,實現(xiàn)精插補。
基于單一處理器的NURBS插補器面臨較高計算負載問題,不能很好滿足高速高精加工對實時性的要求。基于ARM-FPGA架構(gòu)的NURBS插補器平臺,在ARM端處理實時性要求不高的數(shù)據(jù)預處理功能,實現(xiàn)NURBS曲線粗插補;在FPGA芯片端處理加減速控制、實時插補等實時性較強功能,實現(xiàn)精插補。
如圖1所示,系統(tǒng)平臺由ARM微處理器為核心的管理端和基于FPGA的運動控制端兩部分構(gòu)成。管理端以ARM微處理器為核心,以Xenomai為實時操作系統(tǒng),提供人機界面(HMI)、CNC解釋器、前瞻模塊、通信握手模塊及其他管理模塊的運行環(huán)境。執(zhí)行端由高性能FPGA和擴展電路構(gòu)成,主要完成第二級精插補、伺服控制等任務。
圖1 基于ARM-FPGA的NURBS曲線插補器硬件結(jié)構(gòu)
人機界面提供系統(tǒng)與人的交互接口,方便操作人員使用系統(tǒng);CNC解釋器讀入NC文件執(zhí)行詞法分析、語法分析和語義分析,對M、S、T及G功能字進行處理,并把NC代碼中NURBS曲線加工信息存入緩沖區(qū);前瞻模塊完成第一級粗插補,根據(jù)插補速率、曲線曲率及輪廓誤差的關系對NURBS曲線進行分段預處理;通信握手模塊負責ARM與FPGA間的指令與粗插補數(shù)據(jù)的傳輸協(xié)調(diào);管理端將第一級插補數(shù)據(jù)存入FIFO緩沖隊列,包括NURBS曲線次數(shù)、控制點權(quán)因子、控制頂點、分段曲線起始點、加速減速起點等信息,并通過握手模塊同步FPGA端數(shù)據(jù)的存取操作。FPGA端完成基于De Boor-Cox的快速遞推算法,加減速控制,實時插補點數(shù)據(jù)生成等功能,執(zhí)行第二級精插補。
2.1 硬件方案設計
本文采用ARM嵌入式微處理器和現(xiàn)場可編程邏輯陣列FPGA,利用ARM微處理器的高速運算能力及FPGA強大的邏輯處理能力,以Xenomai作為實時操作系統(tǒng),構(gòu)建一個實時性強、穩(wěn)定性高的硬件平臺。
硬件方案如圖2所示,系統(tǒng)采用主從式結(jié)構(gòu)[7],ARM作為主CPU主要完成人機界面交互、LCD顯示管理、鍵盤管理、內(nèi)存管理、粗插補、I/O輸入輸出等。FPGA主要完成NURBS曲線加減速控制、插補點實時生成等工作。
圖2 兩級插補器硬件結(jié)構(gòu)
ARM將粗插補數(shù)據(jù)通過總線與FPGA進行交互,采用16數(shù)據(jù)位并行總線連接,提高數(shù)據(jù)傳輸效率。FPGA采用中斷方式進行插補數(shù)據(jù)的預取,將插補處理后的位置數(shù)據(jù)送至脈沖密化單元產(chǎn)生驅(qū)動脈沖,并將輔助信息送往輸出接口,由伺服系統(tǒng)驅(qū)動相應電機完成進給控制。編碼器輸入構(gòu)成位置閉環(huán)控制,零點、限位等I/O輸入通過硬件中斷交由ARM處理。
2.2 ARM芯片與FPGA器件的接口設計
為了能實現(xiàn)ARM和FPGA之間的快速可靠的數(shù)據(jù)傳輸,借助ARM的EABI擴展外部總線的時序來實現(xiàn)對FPGA的讀寫。ARM采用16位數(shù)據(jù)線、1位讀控制線、1位寫控制線、1位片選線、1位命令線及1位等待信號線來實現(xiàn)與FPGA之間的接口通訊。接口如圖3所示,nGCS為片選信號,當FPGA被選中,數(shù)據(jù)使能SDEN信號有效,使能數(shù)據(jù)Buffer。nWait為總線等待信號,用來延時總線操作。nWE為寫信號。INT為FPGA中斷輸出管腳,通過中斷管腳,ARM可以在中斷程序中讀取FPGA中相應功能寄存器。nOE信號控制Buffer的輸出方向,當nOE為高電平,數(shù)據(jù)由ARM輸出到FPGA,即進行寫操作;當nOE為低電平,數(shù)據(jù)由FPGA輸出到ARM方向,進行讀操作。ARM和FPGA之間的接口采用地址和數(shù)據(jù)線復用方式,通過命令信號cmd的高低來判斷總線上是數(shù)據(jù)還是地址。
圖3 ARM9與FPGA通訊接口
3.1 跨時鐘域同步
ARM粗插補處理后的數(shù)據(jù)通過總線與FPGA進行交互,它們之間數(shù)據(jù)傳輸?shù)恼_性和穩(wěn)定性是嵌入式平臺設計的重點。由于ARM與FPGA有各自的時鐘,數(shù)據(jù)的傳輸需要跨時鐘域進行。
如圖4所示為典型的異步FIFO緩存同步法,采用環(huán)形存儲結(jié)構(gòu)的先進先出存儲器。使用一個雙端口存儲器存放數(shù)據(jù),數(shù)據(jù)發(fā)送方在一端寫入數(shù)據(jù),接收方在另一端讀出數(shù)據(jù),能夠協(xié)調(diào)好兩個時鐘域的工作,滿足高時鐘頻率的要求。訪問FIFO時不需要地址線,只需要數(shù)據(jù)線和讀寫控制信號線,且數(shù)據(jù)地址由內(nèi)部讀寫指針自動加1完成,因此利用FIFO實現(xiàn)數(shù)據(jù)的緩存具有接口簡單、讀寫方便的優(yōu)點。但是,在含有觸發(fā)器的電路中往往會出現(xiàn)亞穩(wěn)態(tài)問題,將導致異步FIFO的讀寫地址發(fā)生錯誤,產(chǎn)生誤讀或者誤寫。
圖4 異步FIFO結(jié)構(gòu)圖
為此,本文設計一種更為簡單可靠的同步方法,如圖5所示為ARM9 S3C2440讀寫時序圖,HCLK為ARM的總線時鐘,頻率為100 MHz,即時鐘周期為5 ns。當讀信號nOE有效后的一個時鐘周期,讀數(shù)據(jù)D[31:0](R)在數(shù)據(jù)總線上準備好,并維持到操作時間Tacc結(jié)束;在寫信號nWE的下降沿,寫數(shù)據(jù)準備好,并維持到操作時間Tacc結(jié)束。由此可知,只要以讀寫信號的下降沿作為同步信號,配合Tacc延時4個周期,即可實現(xiàn)數(shù)據(jù)的穩(wěn)定讀寫。以寫數(shù)據(jù)為例,將nWE信號下降沿作為同步信號開始,經(jīng)過4個周期的延時,實現(xiàn)數(shù)據(jù)的提取,在第5個時鐘周期,實現(xiàn)數(shù)據(jù)的分配,將數(shù)據(jù)送往相應的寄存器中。此時,要求ARM的寫操作Tacc的最小時間間隔為5個周期,即25 ns。
圖5 S3C2440 BANK3讀寫時序圖
具體實現(xiàn)方法為:當片選信號和寫信號有效時,將寫信號進行5個周期的延時,第3個延時的同步信號從總線上獲取數(shù)據(jù),第2個和第4個延時信號作為寫數(shù)據(jù)的緩沖同步,第4個和第5個延時作為將數(shù)據(jù)送到相對應的寄存器的同步信號。同時,采用命令信號來區(qū)分寫的數(shù)據(jù)是地址還是數(shù)據(jù)。
3.2 接口驗證
采用Quartus II仿真環(huán)境對接口進行驗證,輸入信號按時序要求配置如下:cmd_reg的地址為0x20,status_ reg的地址為0x21,cmd為“1”時表示寫地址,為“0”時表示寫數(shù)據(jù)。
圖6 接口仿真示意圖
從圖6中可知,當寫信號有效時,數(shù)據(jù)0x20被寫入了地址為0x21的status_reg中,數(shù)據(jù)0x30被寫入了地址為0x20的cmd_reg中;當讀信號有效時,總線上給出0x21地址,總線上返回了0x20的數(shù)據(jù);當給出0x21的地址時,總線返回了0x30的數(shù)據(jù),仿真結(jié)果驗證了接口模塊功能的正確性。
4.1 平臺實現(xiàn)
本設計采用模塊化設計,將ARM控制器和FPGA設計成核心板模塊,其他的輸入輸出和通信接口,鍵盤掃描、LCD、SD、USB等模塊整合為一塊底板。
為加快開發(fā)進度,ARM核心板采用成熟的TQ2440核心板。為滿足數(shù)控系統(tǒng)功能性要求和日后擴展需要,對平臺接口作了如下規(guī)劃。底板共8個DB25接口,包括伺服軸接口4個、擴展軸接口2個、手搖接口1個、擴展I/O接口2個,操作面板接口采用DB62接插頭。底板右下角為電源模塊,上下邊沿為普通I/O。
FPGA核心板采用2層板,布局如圖7所示;底板作為主要接口,其大小受到了接口規(guī)模限制,大小為250 mm× 150 mm,考慮承重在板子四周和中間做了加固定位孔,同時將PCB的板材厚度規(guī)定為2 mm,底板布局如圖8所示。
圖7 FPGA核心板PCB
圖8 底板PCB
將layout后的板子交付PCB板生產(chǎn)商制作,圖9為制作完成并進行焊接后的最終成品圖。
4.2 ARM與FPGA數(shù)據(jù)傳輸測試
將FPGA的工程編譯成pof后綴的配置文件,通過usb-blaster下載到FPGA中,完成FPGA相應配置。ARM與FPGA數(shù)據(jù)傳輸測試,需結(jié)合ARM時序編寫linux驅(qū)動程序。
圖9 嵌入式平臺成品
為了使Linux驅(qū)動對FPGA進行讀寫操作時,在EABI總線上產(chǎn)生圖6的時序,需要對ARM的寄存器進行設置。應配置BWSCON寄存器控制總線上的數(shù)據(jù)寬度,以及BANKCON3寄存器控制總線上各信號的時序及延時。同時,在設置BANKCON3的時候,Tacc應該大于5個時鐘周期,以保證操作正確性。
在讀寫FPGA時需對FPGA進行地址譯碼,F(xiàn)PGA的基地址為nGCS3,F(xiàn)PGA中的命令線cmd接到ARM的A4地址線。當cmd為“1”時總線上的數(shù)據(jù)為寄存器地址偏移,當cmd為“0”時總線上的數(shù)據(jù)為寄存器數(shù)據(jù)。因此,寫FPGA地址時的地址是0x18000010,寫數(shù)據(jù)時的地址為0x18000000。讀寫測試程序是先往FPGA地址寫數(shù)據(jù),然后再讀出數(shù)據(jù),如果讀出的數(shù)據(jù)跟寫的數(shù)據(jù)一致,則能驗證數(shù)據(jù)傳輸?shù)恼_性。
部分代碼如下:
將驅(qū)動程序編譯后多次運行結(jié)果顯示,讀出的數(shù)據(jù)與寫入的數(shù)據(jù)一致,驗證了ARM與FPGA之間數(shù)據(jù)傳輸?shù)恼_性。
本文針對NURBS插補計算量大,實時性不高的問題,提出基于ARM和FPGA來構(gòu)建嵌入式硬件平臺,由ARM處理人機交互、CNC解釋器、NURBS曲線插補預處理等工作,完成一級粗插補;由FPGA端執(zhí)行加減速控制、插補點實時生成等工作,完成第二級精插補。該平臺具有小型化、智能化特點,能有效降低單一處理器計算負載,從而滿足大數(shù)據(jù)量實時處理要求,提高NURBS插補的實時性。
[1]蓋榮麗,王允森,孫一蘭.樣條曲線插補方法綜述[J].小型微型計算機系統(tǒng),2012(12):2744-2748.
[2]梁宏斌,王永章,李霞.自動調(diào)節(jié)進給速度的NURBS插補算法的研究與實現(xiàn)[J].計算機集成制造系統(tǒng),2006,12(3):428-433.
[3]李思益,羅為.NURBS曲線高速高精度插補及加減速控制方法研究[J].計算機集成制造系統(tǒng),2008,14(6):1142-1147.
[4]孫玉娥,林滸.基于前瞻算法的高效非均勻有理B樣條曲線插補器[J].計算機集成制造系統(tǒng),2009,15(10):2029-2033.
[5]黃翔,曾榮,岳伏軍,等.NURBS插補技術(shù)在高速加工中的應用研究[J].南京航空航天大學學報,2002,34(1):82-85.
[6]劉宇,戴麗,劉杰,等.泰勒展開NURBS曲線插補算法[J].東北大學學報:自然科學版,2009,30(1):117-120.
[7]田家林,陳利學,寇向輝.基于ARM與FPGA的嵌入式數(shù)控系統(tǒng)設計[J].機床與液壓,2007,35(2):93-94.
NIE Mingxing1,2,JIANG Xinhua1,2,LI Guangyang2,CHEN Xingwu2,ZHU Nasi1
1.School of Information Science and Engineering,Central South University,Changsha 410083,China
2.Institute of Control and Information Technology,Fujian University of Technology,Fuzhou 350108,China
This paper proposes an NURBS curve interpolation hardware platform based on ARM-FPGA embedded technology to achieve the purpose of high-speed and high-accuracy motion control.The hardware structure is designed.Then, the cross clock domain problem between ARM and FPGA is solved by using R/W falling edge as synchronization signal. The ARM-FPGA embedded hardware platform is developed independently.The practical test shows that data transfer between ARM and FPGA is reliable,and the proposed architecture would effectively reduce the computational load of NURBS curve interpolation in one single processor.
Non-Uniform Rational B-Spline(NURBS);interpolator;Advanced Reduced instruction set computer Machines-Field Programmable Gate Array(ARM-FPGA);computational load
A
TP391
10.3778/j.issn.1002-8331.1309-0362
NIE Mingxing,JIANG Xinhua,LI Guangyang,et al.Embedded platform of NURBS interpolation based on ARM-FPGA. Computer Engineering and Applications,2014,50(6):261-264.
福建省省屬高校專項項目(No.JK2013030);福建省教育廳中青年教師教育科研重點項目(No.JA13210)。
聶明星(1982—),男,博士研究生,講師,主要研究領域為計算機數(shù)控技術(shù);蔣新華(1956—),男,教授,博士生導師,主要研究領域為智能控制技術(shù);李光煬(1983—),男,工程師,主要研究領域為嵌入式技術(shù)。E-mail:nie_mingxing@163.com
2013-09-24
2013-11-22
1002-8331(2014)06-0261-04