無人機(jī)系統(tǒng)對(duì)于地面站發(fā)送的控制信號(hào)以及飛行器傳回的姿態(tài)數(shù)據(jù)有著極高的實(shí)時(shí)性、可靠性與穩(wěn)定性要求,這對(duì)無人機(jī)通信系統(tǒng)設(shè)計(jì)提出了新的挑戰(zhàn)。對(duì)于采用ARM作為微處理器的無人機(jī)系統(tǒng)來說,系統(tǒng)往往需要協(xié)調(diào)基于ARM處理器的高速陀螺儀模塊與相對(duì)低速的外部無線數(shù)據(jù)傳輸模塊間的工作。在通信高穩(wěn)定性與低誤碼率的要求下,處理器不得不花時(shí)間運(yùn)行空操作來等待外部相對(duì)低速的傳輸模塊完成一幀數(shù)據(jù)的收/發(fā)。由于等待所浪費(fèi)的處理器運(yùn)算周期無形中降低了整個(gè)飛控系統(tǒng)的實(shí)時(shí)性,進(jìn)而帶來許多潛在的不穩(wěn)定因素。
本設(shè)計(jì)結(jié)合無人機(jī)系統(tǒng)發(fā)展需求,采用FPGA FIFO[1]作為高速數(shù)據(jù)緩沖,提出一種基于FPGA內(nèi)建FIFO的無人機(jī)陀螺儀前級(jí)通信接口。通過高速異步FIFO緩沖,將無人機(jī)陀螺儀姿態(tài)數(shù)據(jù)經(jīng)由FPGA準(zhǔn)確無誤地發(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沒有外部讀寫地址線,使用方便。
本文設(shè)計(jì)采用FPGA異步FIFO連接基于ARM處理器的高速無人機(jī)陀螺儀模塊與相對(duì)低速的無線數(shù)據(jù)傳輸外設(shè)。從硬件的觀點(diǎn)來看,F(xiàn)IFO實(shí)質(zhì)上就是一塊數(shù)據(jù)內(nèi)存。異步FIFO采用2個(gè)時(shí)鐘信號(hào)控制其讀寫操作,分別為寫時(shí)鐘(wrclk)和讀時(shí)鐘(rdclk)。一個(gè)用來寫數(shù)據(jù),即將數(shù)據(jù)存入FIFO;另一個(gè)用來讀數(shù)據(jù),即將數(shù)據(jù)從FIFO中取出。
與FIFO操作相關(guān)的有兩個(gè)指針:寫指針指向要寫的內(nèi)存部分;讀指針指向要讀的內(nèi)存部分。FIFO控制器通過外部的讀寫信號(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的無人機(jī)陀螺儀接口結(jié)構(gòu)
由于機(jī)載燃油和電能儲(chǔ)備的制約,無人機(jī)載設(shè)備要求小巧輕便,能效比高,因此對(duì)芯片的選型及電路結(jié)構(gòu)提出了較高的要求。綜合穩(wěn)定性、數(shù)據(jù)精度、工作溫度、封裝體積以及能耗等各方面因素,對(duì)無人機(jī)陀螺儀傳感器經(jīng)行嚴(yán)格篩選,確定了如圖2所示的陀螺儀方案。
無人機(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端口等。通過板載的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)方案,免除了整合陀螺儀與加速度器軸間差的問題,大大減少了封裝空間。
三軸磁力計(jì)采用Honeywell公司的HMC5883L芯片,此芯片內(nèi)部采用先進(jìn)的高分辨率HMC188X系列磁阻傳感器與行業(yè)領(lǐng)先的各向異性磁阻技術(shù)(AMR),具有軸向高靈敏度和線性高精度的特點(diǎn),測量范圍從毫高斯到8高斯(gauss),穩(wěn)定可靠。
氣壓傳感器采用博世公司的BMP180芯片,該芯片性能卓越,絕對(duì)精度可以達(dá)到0.03 hpa,并且功耗極低,只有3 ?滋A。傳感器采用強(qiáng)大的7 pin陶瓷無引線芯片承載(LCC)超薄封裝,安裝使用方便。各傳感器與ARM處理器采用I2C總線連接,示意圖如圖3所示。
3 FPGA FIFO與陀螺儀的連接
結(jié)合無人機(jī)ARM陀螺儀的特點(diǎn),為了適應(yīng)過程的復(fù)雜性,實(shí)現(xià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處理器通過檢測寫滿標(biāo)志位的狀態(tài)來判斷是否繼續(xù)寫入數(shù)據(jù)。
與此同時(shí),在FPGA中通過檢測所讀取FIFO是否為空標(biāo)志位rdempty來判斷是否繼續(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)沒有數(shù)據(jù)?;贏RM的陀螺儀與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ī)в型角辶愣耍?]的異步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′d0;
wrreq 《= 1′b1;
rdreq 《= 1′b0;
aclr 《= 1′b0;
state 《= write;
end
read:
if(rdempty != 1′b1 && rdreq ==1′b1)
read_start 《= 1′b1;
else
begin
read_start 《= 1′b0;
wrreq 《= 1′b1;
state 《= idle;
end
write:
if(wrfull!= 1′b1 && wrreq == 1′b1)
write_start 《= 1′b1;
else
begin
write_start 《= 1′b0;
rdreq 《= 1′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的無人機(jī)陀螺儀接口設(shè)計(jì)方法,仿真結(jié)果如圖8、圖9所示。
從圖8中仿真結(jié)果得知,在寫入時(shí)鐘頻率為100 MHz、寫滿標(biāo)志位為低電平時(shí),待寫入數(shù)據(jù)data在每個(gè)寫入時(shí)鐘上升沿來臨后被準(zhǔn)確寫入FIFO的存儲(chǔ)區(qū);隨后在讀出時(shí)鐘頻率為5 MHz且讀空標(biāo)志位為低電平的情況下,待讀出數(shù)據(jù)q在每個(gè)讀時(shí)鐘上升沿來臨后被正確讀出,系統(tǒng)讀寫數(shù)據(jù)穩(wěn)定準(zhǔn)確,符合設(shè)計(jì)需求。
圖9為通過此通信接口讀取得到的無人機(jī)飛行姿態(tài)數(shù)據(jù),包括俯仰角、偏航角、滾轉(zhuǎn)角,以圖表形式予以顯示。數(shù)據(jù)精度與實(shí)驗(yàn)結(jié)果理想,驗(yàn)證了FPGA與ARM無人機(jī)陀螺儀數(shù)據(jù)接口設(shè)計(jì)方案穩(wěn)定可靠。
本文提出了基于FPGA內(nèi)建FIFO與ARM的無人機(jī)陀螺儀數(shù)據(jù)接口設(shè)計(jì)方法,解決了無人機(jī)ARM處理器與相對(duì)低速無線發(fā)送模塊直接數(shù)據(jù)傳輸時(shí)傳輸速度不匹配的難題,實(shí)現(xiàn)了ARM處理器將無人機(jī)姿態(tài)數(shù)據(jù)高速寫入FIFO后就可以立即返回、無需等待的功能,節(jié)約了處理器資源,使得無人機(jī)系統(tǒng)的可靠性與穩(wěn)定性得到大幅提升。仿真驗(yàn)證表明,讀寫數(shù)據(jù)準(zhǔn)確無誤,顯著提高了數(shù)據(jù)傳輸速度與數(shù)據(jù)質(zhì)量,證明了本方案的可行性與正確性。面對(duì)高速數(shù)據(jù)傳輸?shù)男枨螅撓到y(tǒng)還可廣泛應(yīng)用于其他需要高無線數(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] 單立超,謝雪松?;贔PGA的一種可變幀數(shù)字分接技術(shù)[J]。電子技術(shù)應(yīng)用,2013,32(2):27-30.
[6] 何濤?;谲浻布f(xié)同技術(shù)的FPGA測試平臺(tái)設(shè)計(jì)及測試實(shí)現(xiàn)[D]。成都:電子科技大學(xué),2009.
[7] 徐國強(qiáng),張萌?;贔PGA的高性能視頻信號(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.
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1625文章
21639瀏覽量
601358 -
ARM
+關(guān)注
關(guān)注
134文章
9030瀏覽量
366565 -
fifo
+關(guān)注
關(guān)注
3文章
387瀏覽量
43504
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論