基於AT91SAM9G10(AT91SAM9261)與FPGA的高精度數據採集系統

                                                                                                          圖 <一>   數據採集系統正面圖 


                                                                                                        圖  <二>數據採集系統背面圖


         本數據採集系統是基於ARM9和FPGA通信實現的採集系統。系統由12bit高精度的AD574作爲數據採樣輸入。採樣觸發電平可以遠程設置。數據通過AD採樣,然後存儲到與FPGA相連接的SDRAM中。在採樣完成後,將SDRAM裏面的數據保存到通fpga接口的128M的nandflash中去。同事保存的數據可以通過USB控制芯片FT232將nandflash裏面的數據讀取出來。在fpga EP2C20中,內建一個64K 16bit寬的FIFO,通過控制器將SDRAM裏面的數據,壓進FIFO。FIFO的外部接口通ARM9 AT91SAM9G10接口。通過EBI接口中的SMC控制器,控制對FPGA中的SRAM進行大量數據的讀寫。本系統要求一次性能讀出8M的數據。系統設計保證能讀取32M數據。讀取到ARM中的數據會保存在SDRAM中。同時會將數據通過USB WIFI傳輸到遠端的PC機上去。

         其中本系統的重點應該是,FPGA和ARM9通信過程中的驅動設計。硬件設計過程中考慮的是 NWR 、NRD、 NCS0、AD2~AD9、D0~D15。在驅動設計過程中,肯能會遇到總線掛起的問題。遇到這類型的問題,首先考慮的是上電順序問題。如果特別是完成了FPGA中代碼設計後,講FPGA代碼下載到ram中,需要是上電下載。這個過程可能導致的,總線掛起。我首先想到的解決問題就是上單順序的問題。我割掉了板子上面的核心板的供電。結果問題還是沒有解決。最後發現兩個問題,第一是總線總的數據總線設計問題。對於數據總線應該是可控的模式,在寫有效的過程才能輸出電平。平時應該爲三態。解決完這個問題後,後面還是存在。最後發現NCS0 必須應用。用於保證總線時序正確。

        大量數據的讀取,本系統設計由於是數據採集系統。所以存在大量數據讀寫的問題。本來考慮的是連續讀寫的,結果發現地址偏移和系統偏移都麻煩。最後決定設計過程中改爲FIFO做數據緩衝。本思路應用起來相當方便,類似在系統中建立了一個數據管道。sdram能存儲多達的數據,這邊就能讀出多達的數據。使用非常方便。

        將大量數據寫到ARM9的linux系統的動態內存中,linux內核使用的是linux-2.6.30,然後u-boot使用的是 u-boot1.3.4文件系統使用的是yaffs2。將驅動和應用寫進去,通過動態內存分配的方式,分配8M大小的空間,將數據讀寫出來。最後通過USBwifi傳送出去。本系統用於多點遠程數高精度數據採集。AD可以換成16bit。

發佈了41 篇原創文章 · 獲贊 46 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章