《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > FPGA與ARM的無(wú)人機(jī)陀螺儀數(shù)據(jù)接口設(shè)計(jì)
FPGA與ARM的無(wú)人機(jī)陀螺儀數(shù)據(jù)接口設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2014年第1期
應(yīng) 進(jìn),,潘浩曼,,代冀陽(yáng),陸 歡
(南昌航空大學(xué) 信息工程學(xué)院,,江西 南昌330063)
摘要: 在無(wú)人機(jī)系統(tǒng)與地面站通信過(guò)程中,,機(jī)載陀螺儀姿態(tài)數(shù)據(jù)的高速產(chǎn)生與外部相對(duì)低速的無(wú)線數(shù)據(jù)模塊傳輸?shù)拿苋找嫱怀?,?yán)重制約著無(wú)人機(jī)的發(fā)展。針對(duì)這一問(wèn)題,,采用FPGA FIFO作為高速數(shù)據(jù)緩沖,,提出一種基于FPGA內(nèi)建FIFO的無(wú)人機(jī)陀螺儀前級(jí)通信接口。通過(guò)高速異步FIFO緩沖,,將無(wú)人機(jī)陀螺儀姿態(tài)數(shù)據(jù)經(jīng)由FPGA準(zhǔn)確無(wú)誤地發(fā)送給地面站,,顯著提高數(shù)據(jù)傳輸質(zhì)量,實(shí)現(xiàn)了高速芯片與低速設(shè)備之間的通信,。整個(gè)設(shè)計(jì)在實(shí)際應(yīng)用中效果良好,,數(shù)據(jù)穩(wěn)定可靠,滿足了低誤碼率與高穩(wěn)定性的要求,,以及無(wú)人機(jī)與地面站高速通信的需求,,有著廣闊的市場(chǎng)應(yīng)用前景。
中圖分類號(hào): TP29
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

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

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

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

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

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

    狀態(tài)機(jī)跳轉(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)仿真效果
    綜合運(yùn)用QuartuesII[9]與ModelSim SE[10]先進(jìn)仿真工具,,結(jié)合FPGA內(nèi)建FIFO與基于ARM的無(wú)人機(jī)陀螺儀接口設(shè)計(jì)方法,仿真結(jié)果如圖8,、圖9所示,。

 

 

    從圖8中仿真結(jié)果得知,在寫入時(shí)鐘頻率為100 MHz,、寫滿標(biāo)志位為低電平時(shí),,待寫入數(shù)據(jù)data在每個(gè)寫入時(shí)鐘上升沿來(lái)臨后被準(zhǔn)確寫入FIFO的存儲(chǔ)區(qū);隨后在讀出時(shí)鐘頻率為5 MHz且讀空標(biāo)志位為低電平的情況下,,待讀出數(shù)據(jù)q在每個(gè)讀時(shí)鐘上升沿來(lái)臨后被正確讀出,,系統(tǒng)讀寫數(shù)據(jù)穩(wěn)定準(zhǔn)確,符合設(shè)計(jì)需求,。
    圖9為通過(guò)此通信接口讀取得到的無(wú)人機(jī)飛行姿態(tài)數(shù)據(jù),,包括俯仰角、偏航角,、滾轉(zhuǎn)角,,以圖表形式予以顯示。數(shù)據(jù)精度與實(shí)驗(yàn)結(jié)果理想,,驗(yàn)證了FPGA與ARM無(wú)人機(jī)陀螺儀數(shù)據(jù)接口設(shè)計(jì)方案穩(wěn)定可靠,。
  本文提出了基于FPGA內(nèi)建FIFO與ARM的無(wú)人機(jī)陀螺儀數(shù)據(jù)接口設(shè)計(jì)方法,解決了無(wú)人機(jī)ARM處理器與相對(duì)低速無(wú)線發(fā)送模塊直接數(shù)據(jù)傳輸時(shí)傳輸速度不匹配的難題,,實(shí)現(xiàn)了ARM處理器將無(wú)人機(jī)姿態(tài)數(shù)據(jù)高速寫入FIFO后就可以立即返回,、無(wú)需等待的功能,節(jié)約了處理器資源,,使得無(wú)人機(jī)系統(tǒng)的可靠性與穩(wěn)定性得到大幅提升,。仿真驗(yàn)證表明,讀寫數(shù)據(jù)準(zhǔn)確無(wú)誤,,顯著提高了數(shù)據(jù)傳輸速度與數(shù)據(jù)質(zhì)量,,證明了本方案的可行性與正確性。面對(duì)高速數(shù)據(jù)傳輸?shù)男枨?,該系統(tǒng)還可廣泛應(yīng)用于其他需要高無(wú)線數(shù)據(jù)傳輸?shù)念I(lǐng)域,,有較高的理論意義和應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 秦鴻剛,,劉京科,,吳迪.基于FPGA的雙口RAM實(shí)現(xiàn)及應(yīng)用[J].電子工程設(shè)計(jì),2010,,2(2):72-74.
[2] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,,2008.
[3] BAKER R J,LI H W,,BOYEE D E.CMOS電路設(shè)計(jì)布局與仿真[M].陳中建,,譯.北京:機(jī)械工業(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測(cè)試平臺(tái)設(shè)計(jì)及測(cè)試實(shí)現(xiàn)[D].成都:電子科技大學(xué),,2009.
[7] 徐國(guó)強(qiáng),,張萌.基于FPGA的高性能視頻信號(hào)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(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)載。