文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)01-0009-04
無(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′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的無(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.