基于FPGA的智能小車設(shè)計
NiosⅡIDE包含一個強大的、在GNU調(diào)試器基礎(chǔ)之上的軟件調(diào)試器——GDB。完成軟件代碼的編寫后,可以對代碼進行仿真和調(diào)試。Nios-ⅡIDE提供了一個方便的閃存編程方法。任何連接到FPGA的兼容通用閃存接口(CFI)的閃存器件都可以通過NiosⅡIDE閃存編程器來燒結(jié)。針對本設(shè)計及應(yīng)用,編寫了系統(tǒng)控制程序和LCD顯示程序。流程圖如圖3所示。本文引用地址:http://butianyuan.cn/article/162206.htm
3 系統(tǒng)調(diào)試
小車系統(tǒng)需要測試能否準確接收控制臺發(fā)送的指令并控制小車運動或停止,以及向前、后、左、右轉(zhuǎn)向。還要測試主控機能否準確接收小車采集到的溫度以及濕度信息,能否正確顯示。經(jīng)過多次測試,發(fā)現(xiàn)由于系統(tǒng)程序是采用收發(fā)循環(huán)轉(zhuǎn)換的模式,為了讓兩個系統(tǒng)能夠收到對方發(fā)的信息,對小車的遙控與自動部分進行簡單的分化。自動情況下,控制臺為主要接收端,小車為主要發(fā)送端,一般情況下小車發(fā)送數(shù)據(jù)到控制臺,需要自動到遙控的轉(zhuǎn)換時,通過在延時時間內(nèi)進行中斷來實行從自動到遙控的轉(zhuǎn)換;在遙控狀態(tài)下,控制臺為主要發(fā)射端,小車為接收端,一般情況下控制臺發(fā)送小車行進指令到小車,需要采集數(shù)據(jù)時,通過溫度、濕度采集按鍵來對小車進行收發(fā)轉(zhuǎn)換,同時小車發(fā)出采集數(shù)據(jù)指令,之后再次轉(zhuǎn)為接收模式。這樣做之后使小車與控制臺的軟件部分清晰明了,小車的行進以及采集顯示數(shù)據(jù)能夠?qū)崟r的進行。
濕度測量系統(tǒng)需要測試是否能夠精準輸出頻率值。采用芯片LM555手冊上推薦的電路,由于元件的誤差,使輸出的頻率并不精確,經(jīng)過與標準的濕度儀進行比對,通過參數(shù)調(diào)整,用直線做近似,最后得到的頻率值誤差在幾赫茲(頻率范圍是6 008~7 314Hz),經(jīng)過預(yù)算得到很準確的濕度值。開始求濕度值時用的是解一元三次方程的方法,由于計算量大,對小車的行進會有很大影響,后來在小車端只是把小車采集到的頻率值通過紅外天線傳輸?shù)街骺囟?,并將原先的小車自動避障由NiosⅡCPU控制改為由Verilog編寫的硬件模塊控制,最后在控制臺做濕度值的計算。這樣的更改既減少了小車NiosⅡCPU的工作量,同時由于小車的自動避障改為由獨立的Verilog模塊控制,運行起來很流暢。
對于無線收發(fā)系統(tǒng),要測試其可靠性以及發(fā)送或接收的信息的準確性。測試方法是單獨設(shè)計了一個軟核下載到SoPC中,并編寫一段程序用于測試是否正確寫入配置控制字,是否能夠進行ShockBurst模式的接收或發(fā)送。問題是對天線各模式時序的把握,一開始寫的程序總是不能正確寫入配置字,反復調(diào)試,并用數(shù)字示波器觀察寫入配置字的瞬間過程以及各延時的時間,最后測試成功,并把發(fā)送或接收的狀態(tài)用LED顯示出來,每發(fā)送或接收到一個數(shù)據(jù)包就讓LED閃一下。
4 結(jié)語
本設(shè)計以FPGA嵌入NiosⅡ軟核處理器為核心,輔以必要的外圍電路,構(gòu)成了高度集成化的片上系統(tǒng)。另外,SoPC系統(tǒng)的柔性配置,使得可以基于此系統(tǒng)擴展片外存儲器和多路輸出。設(shè)計的小車具有較強的避障能力,且能通過接收端對其進行方便的控制,溫度和濕度采集均達了較高的精度,并且能實現(xiàn)動態(tài)顯示,無線收發(fā)模塊的有效范圍最遠可達300 m,可應(yīng)用于較為惡劣的環(huán)境,可代替人進行溫度和濕度的實地檢測。
評論