《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > FPGA與ARM的無人機陀螺儀數(shù)據(jù)接口設(shè)計
FPGA與ARM的無人機陀螺儀數(shù)據(jù)接口設(shè)計
來源:電子技術(shù)應(yīng)用2014年第1期
應(yīng) 進,潘浩曼,代冀陽,陸 歡
(南昌航空大學 信息工程學院,江西 南昌330063)
摘要: 在無人機系統(tǒng)與地面站通信過程中,機載陀螺儀姿態(tài)數(shù)據(jù)的高速產(chǎn)生與外部相對低速的無線數(shù)據(jù)模塊傳輸?shù)拿苋找嫱怀?,嚴重制約著無人機的發(fā)展。針對這一問題,采用FPGA FIFO作為高速數(shù)據(jù)緩沖,提出一種基于FPGA內(nèi)建FIFO的無人機陀螺儀前級通信接口。通過高速異步FIFO緩沖,將無人機陀螺儀姿態(tài)數(shù)據(jù)經(jīng)由FPGA準確無誤地發(fā)送給地面站,顯著提高數(shù)據(jù)傳輸質(zhì)量,實現(xiàn)了高速芯片與低速設(shè)備之間的通信。整個設(shè)計在實際應(yīng)用中效果良好,數(shù)據(jù)穩(wěn)定可靠,滿足了低誤碼率與高穩(wěn)定性的要求,以及無人機與地面站高速通信的需求,有著廣闊的市場應(yīng)用前景。
關(guān)鍵詞: FPGA FIFO ARM無人機 陀螺儀
中圖分類號: TP29
文獻標識碼: A
文章編號: 0258-7998(2014)01-0009-04
Design of data interface between FPGA and ARM gyroscope
Ying Jin,Pan Haoman,Dai Jiyang,Lu Huan
School of Information Engineering,Nanchang Hangkong University, Nanchang 330063,China
Abstract: During the process of communication between UAV and ground station, confliction between high speed on board gyroscope and low speed external wireless data transmission module is increasingly serious. It is badly restricting the development of UVA. Inorder to solve this problem, this paper uses high-speed FIFO as data buffer, building up an interface of the UVA gyroscope which is based on the FPGA FIFO. Gyroscope data is transferred accurately to ground station via high-speed FIFO which is built in FPGA. By this way,we highly improve the quality of data transmission, and achieve the communication between high-speed chips and low-speed equipments. The design works perfectly in pratical application, and the data is stable and reliable with low error rate and high stabe rate. The whole plan meets the communication demand between UAV and ground station.
Key words : FIFO;FPGA;ARM UAV;gyroscope

    無人機系統(tǒng)對于地面站發(fā)送的控制信號以及飛行器傳回的姿態(tài)數(shù)據(jù)有著極高的實時性、可靠性與穩(wěn)定性要求,這對無人機通信系統(tǒng)設(shè)計提出了新的挑戰(zhàn)。對于采用ARM作為微處理器的無人機系統(tǒng)來說,系統(tǒng)往往需要協(xié)調(diào)基于ARM處理器的高速陀螺儀模塊與相對低速的外部無線數(shù)據(jù)傳輸模塊間的工作。在通信高穩(wěn)定性與低誤碼率的要求下,處理器不得不花時間運行空操作來等待外部相對低速的傳輸模塊完成一幀數(shù)據(jù)的收/發(fā)。由于等待所浪費的處理器運算周期無形中降低了整個飛控系統(tǒng)的實時性,進而帶來許多潛在的不穩(wěn)定因素。
    本設(shè)計結(jié)合無人機系統(tǒng)發(fā)展需求,采用FPGA FIFO[1]作為高速數(shù)據(jù)緩沖,提出一種基于FPGA內(nèi)建FIFO的無人機陀螺儀前級通信接口。通過高速異步FIFO緩沖,將無人機陀螺儀姿態(tài)數(shù)據(jù)經(jīng)由FPGA準確無誤地發(fā)送給地面站,保證了傳輸質(zhì)量,架起了高速芯片與低速設(shè)備之間溝通的橋梁。
1 FPGA內(nèi)建FIFO的基本工作原理
    FIFO即先進先出隊列,采用環(huán)形存儲電路結(jié)構(gòu),是一種傳統(tǒng)的按序執(zhí)行方法。先進入的指令先完成并引退,隨后才執(zhí)行第二條指令,是一種先進先出的數(shù)據(jù)緩存器。根據(jù)FIFO的讀寫時鐘頻率是否相同,可將FIFO分為同步FIFO與異步FIFO[2]。FIFO的應(yīng)用可以很好地協(xié)調(diào)不同時鐘、不同數(shù)據(jù)寬度數(shù)據(jù)的通信,滿足高/低速時鐘頻率要求。與普通存儲器相比,F(xiàn)IFO沒有外部讀寫地址線,使用方便。
    本文設(shè)計采用FPGA異步FIFO連接基于ARM處理器的高速無人機陀螺儀模塊與相對低速的無線數(shù)據(jù)傳輸外設(shè)。從硬件的觀點來看,F(xiàn)IFO實質(zhì)上就是一塊數(shù)據(jù)內(nèi)存。異步FIFO采用2個時鐘信號控制其讀寫操作,分別為寫時鐘(wrclk)和讀時鐘(rdclk)。一個用來寫數(shù)據(jù),即將數(shù)據(jù)存入FIFO;另一個用來讀數(shù)據(jù),即將數(shù)據(jù)從FIFO中取出。與FIFO操作相關(guān)的有兩個指針:寫指針指向要寫的內(nèi)存部分;讀指針指向要讀的內(nèi)存部分。FIFO控制器通過外部的讀寫信號控制這兩個指針移動,并由此產(chǎn)生FIFO空信號或滿信號。讀寫時鐘相互獨立設(shè)計,有效地保證了FIFO兩端數(shù)據(jù)的異步通信,其模塊框圖[3]如圖1所示。其中,異步FIFO模塊共有9個端口,分別為數(shù)據(jù)輸入(datda[15..0])、寫請求(wrreq)、寫時鐘(wrclk)、緩沖器滿信號(wrful)、讀請求(rdreq)、讀時鐘(rdclk)、數(shù)據(jù)讀出(q[15..0])、緩沖器空信號(rdempty)、緩沖器清空信號(aclr)。

2 基于ARM的無人機陀螺儀接口結(jié)構(gòu)
    由于機載燃油和電能儲備的制約,無人機載設(shè)備要求小巧輕便,能效比高,因此對芯片的選型及電路結(jié)構(gòu)提出了較高的要求。綜合穩(wěn)定性、數(shù)據(jù)精度、工作溫度、封裝體積以及能耗等各方面因素,對無人機陀螺儀傳感器經(jīng)行嚴格篩選,確定了如圖2所示的陀螺儀方案。

    無人機陀螺儀的主控芯片選用ARM 32 bit CortexTM M3內(nèi)核的STM32F103T8處理器。其內(nèi)建64 KB的閃存存儲器和20 KB的運行內(nèi)存,以及7通道的DMA、7個定時器、2個UART端口等。通過板載的8 MHz晶體和STM32內(nèi)部的PLL,控制器可以運行在72 MHz的主頻上,為姿態(tài)解算[4]提供強大的硬件支持。
    三軸加速度與三軸角速度傳感器采用Invensense公司的MPU-6050單芯片方案,此芯片為全球首例整合性6軸運動處理組件,相比其他多芯片實現(xiàn)方案,免除了整合陀螺儀與加速度器軸間差的問題,大大減少了封裝空間。
    三軸磁力計采用Honeywell公司的HMC5883L芯片,此芯片內(nèi)部采用先進的高分辨率HMC188X系列磁阻傳感器與行業(yè)領(lǐng)先的各向異性磁阻技術(shù)(AMR),具有軸向高靈敏度和線性高精度的特點,測量范圍從毫高斯到8高斯(gauss),穩(wěn)定可靠。
    氣壓傳感器采用博世公司的BMP180芯片,該芯片性能卓越,絕對精度可以達到0.03 hpa,并且功耗極低,只有3 ?滋A。傳感器采用強大的7 pin陶瓷無引線芯片承載(LCC)超薄封裝,安裝使用方便。各傳感器與ARM處理器采用I2C總線連接,示意圖如圖3所示。

3 FPGA FIFO與陀螺儀的連接
    結(jié)合無人機ARM陀螺儀的特點,為了適應(yīng)過程的復雜性,實現(xiàn)操作的簡便性,設(shè)計選用Altera公司的CycloneII系列芯片EP2C8Q208C8N,在QuartuesII平臺上進行Verilog代碼設(shè)計,使用Altera公司提供的FIFO IP核[5]。此方案穩(wěn)定高效,易于開發(fā)。
3.1 陀螺儀與FIFO及FPGA的連接
    處理器采集各傳感器信號,在ARM內(nèi)部進行姿態(tài)解算,進而得到俯仰角、橫滾角、航向角、氣壓、高度和溫度信息。為了及時將解算得到的數(shù)據(jù)發(fā)送回地面站,處理器控制寫請求信號wrreq和寫時鐘wrclk將這些數(shù)據(jù)高速寫入FIFO,然后回到飛行控制程序,進行下一周期的姿態(tài)解算。FIFO在數(shù)據(jù)寫滿后,寫滿標志位wrfull會置高電平,ARM處理器通過檢測寫滿標志位的狀態(tài)來判斷是否繼續(xù)寫入數(shù)據(jù)。
    與此同時,在FPGA中通過檢測所讀取FIFO是否為空標志位rdempty來判斷是否繼續(xù)讀取數(shù)據(jù)。讀空標志位為低電平代表FIFO中有數(shù)據(jù),可以讀取,則配合讀請求信號rdreq和讀時鐘rdclk及時讀取數(shù)據(jù),直到將數(shù)據(jù)全部讀出,標志位變?yōu)楦唠娖?,此時FIFO中已經(jīng)沒有數(shù)據(jù)。基于ARM的陀螺儀與FIFO及FPGA的連接如圖4所示。

3.2 FIFO的配置與讀寫操作
    針對上述ARM陀螺儀接口特點,對FIFO進行配置如下。
    FIFO Width    :            16        bit
    FIFO Depth    :            2 048    words
Synchronize reading and writing clock    :    YES
Asynchronous clear                    :    YES
    設(shè)計采用位寬為16 bit、深度為2 048且?guī)в型角辶愣薣6]的異步FIFO結(jié)構(gòu),其寫時序與讀時序分別如圖5、圖6所示。

    狀態(tài)機跳轉(zhuǎn)部分控制代碼如下:
    always@(posedge SYSCLK or negedge RST )
    begin
    if(!RST)
        state <= idle;
    else
        case(state)
            idle:
                begin
                    data[15:0]    <= 16&prime;d0;
                    wrreq        <= 1&prime;b1;
                    rdreq        <= 1&prime;b0;
                    aclr            <= 1&prime;b0;
                    state            <= write;
                end
            read:
              if(rdempty != 1&prime;b1 && rdreq ==1&prime;b1)
                  read_start <= 1&prime;b1;
              else
                  begin
                      read_start <= 1&prime;b0;
                      wrreq     <= 1&prime;b1;
                      state        <= idle;
                  end
              write:
                  if(wrfull!= 1&prime;b1 && wrreq == 1&prime;b1)
                      write_start     <= 1&prime;b1;
                  else
                      begin
                          write_start <= 1&prime;b0;
                          rdreq     <= 1&prime;b1;
                          state        <= read;    
                      end
              default:    state        <= idle;
          endcase
  end
4 系統(tǒng)仿真效果
    綜合運用QuartuesII[9]與ModelSim SE[10]先進仿真工具,結(jié)合FPGA內(nèi)建FIFO與基于ARM的無人機陀螺儀接口設(shè)計方法,仿真結(jié)果如圖8、圖9所示。

 

 

    從圖8中仿真結(jié)果得知,在寫入時鐘頻率為100 MHz、寫滿標志位為低電平時,待寫入數(shù)據(jù)data在每個寫入時鐘上升沿來臨后被準確寫入FIFO的存儲區(qū);隨后在讀出時鐘頻率為5 MHz且讀空標志位為低電平的情況下,待讀出數(shù)據(jù)q在每個讀時鐘上升沿來臨后被正確讀出,系統(tǒng)讀寫數(shù)據(jù)穩(wěn)定準確,符合設(shè)計需求。
    圖9為通過此通信接口讀取得到的無人機飛行姿態(tài)數(shù)據(jù),包括俯仰角、偏航角、滾轉(zhuǎn)角,以圖表形式予以顯示。數(shù)據(jù)精度與實驗結(jié)果理想,驗證了FPGA與ARM無人機陀螺儀數(shù)據(jù)接口設(shè)計方案穩(wěn)定可靠。
  本文提出了基于FPGA內(nèi)建FIFO與ARM的無人機陀螺儀數(shù)據(jù)接口設(shè)計方法,解決了無人機ARM處理器與相對低速無線發(fā)送模塊直接數(shù)據(jù)傳輸時傳輸速度不匹配的難題,實現(xiàn)了ARM處理器將無人機姿態(tài)數(shù)據(jù)高速寫入FIFO后就可以立即返回、無需等待的功能,節(jié)約了處理器資源,使得無人機系統(tǒng)的可靠性與穩(wěn)定性得到大幅提升。仿真驗證表明,讀寫數(shù)據(jù)準確無誤,顯著提高了數(shù)據(jù)傳輸速度與數(shù)據(jù)質(zhì)量,證明了本方案的可行性與正確性。面對高速數(shù)據(jù)傳輸?shù)男枨?,該系統(tǒng)還可廣泛應(yīng)用于其他需要高無線數(shù)據(jù)傳輸?shù)念I(lǐng)域,有較高的理論意義和應(yīng)用價值。
參考文獻
[1] 秦鴻剛,劉京科,吳迪.基于FPGA的雙口RAM實現(xiàn)及應(yīng)用[J].電子工程設(shè)計,2010,2(2):72-74.
[2] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學出版社,2008.
[3] BAKER R J,LI H W,BOYEE D E.CMOS電路設(shè)計布局與仿真[M].陳中建,譯.北京:機械工業(yè)出版社,2006.
[4] PAVLLOV A.CMOS SRAM circuit design and parame tric  test in Nano-Scaled technologies[M].New York:Springer,2008.
[5] 單立超,謝雪松.基于FPGA的一種可變幀數(shù)字分接技術(shù)[J].電子技術(shù)應(yīng)用,2013,32(2):27-30.
[6] 何濤.基于軟硬件協(xié)同技術(shù)的FPGA測試平臺設(shè)計及測試實現(xiàn)[D].成都:電子科技大學,2009.
[7] 徐國強,張萌.基于FPGA的高性能視頻信號采集系統(tǒng)設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2012,31(6):72-75.
[8] BRIAN D,ANDREW S,CHAN K.RAM with configurable  depth and width[P].US:6578 104.1 8.22,June 2003.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。