基于ARM+FPGA的運動控制器設計與實現
1 引言
工業CT 機運動控制系統往往需要對多個軸的運動進行精確、實時控制,在以往的系統中多采用工控機+多塊板卡的結構進行運動控制器的設計。隨著工業CT 機整體功能日趨復雜,整體系統對運動控制系統的體積、成本、功耗等方面的要求越來越苛刻。另一方面,運動控制系統控制的軸數越來越多、控制精度要求越來越高、控制對象的實時性要求越來越強。
現有的工控機+多塊板卡組成的控制系統逐漸呈現出運動控制方面的劣勢。ARM+FPGA 的硬件方案,將工控機從現有的運動控制系統中解放出來,取而代之的是體積小、功耗低、功能強的ARM 處理器。強大的嵌入式Linux 操作系統保證ARM 處理器的功能可以發揮到最佳。
2 硬件系統關鍵技術設計與實現
本系統采用ARM+FPGA的結構進行運動控制系統的設計,與目前應用中常見的IPC(IndustrialPersonal Computer)+板卡的運動控制系統相比具有以下優點[1,2]:
(1) 采用FPGA 完成運動控制細節任務,實現硬件軟化的設計思想。即具有軟件可編程、可重構的特性,又有硬件高性能、高可靠、高一致性的優點。
(2) 采用嵌入式應用方案與現有IPC+板卡結構相比無論從體積、成本、還是性能方面相比都具有較大的優越性。
(3) FPGA 具有高速并行的執行能力,系統的實時性能得到較大的提高。
(4) 將ARM 中操作底層硬件的驅動程序進行打包,方便應用程序調用,可以較快完成用戶的二次開發。
2.1 硬件系統總體設計
工業CT 運動控制系統結構如圖1 所示。該系統以Atmel 公司一款ARM9 核處理器AT91RM9200和Altera 公司的Cyclone 系列芯片EP1C6Q240C8 為核心。ARM9 作為主控芯片負責整個系統的控制,通過AHB[3]總線協調與FPGA 之間的數據交換,并將接收到的數據通過網絡發送到工業控制計算機進行圖像的處理與重建。FPGA 則負責接收數據采集系統的串行數據,并把其轉化成并行數據存入FPGA 的RAM 中,同時對ARM 發出中斷請求響應,通知ARM9 讀取。AT91RM9200、SDRAM、FLASH 以及電源等基本外圍電路構成嵌入式Linux 運行的最小系統,而FPGA 最小系統則由EPlC6Q240C8、時鐘電路、配置接口等組成。然后兩者通過高速AHB 總線進行連接,實現數據的快速傳輸。
圖1 工業CT 運動控制系統結構圖
2.2 ARM 與FPGA 接口設計
在系統中ARM 作為通用處理器,用來實現系統任務的觸發、系統命令的發送和任務的調度等功能。
FPGA 作為ARM 的外設,用來對ARM 經地址數據總線傳送過來的命令進行解析,并最終按照ARM 命令的要求,完成脈沖發送和脈沖計數的功能及具體的運動控制細節任務。
兩塊FPGA通過各自的地址/數據總線與ARM的地址/數據總線連接起來,雙方可以進行雙向的數據交換。
ARM 與FPGA 通過地址選通信號線連接起來,兩塊FPGA 各自作為ARM 的外設芯片,運行在獨立的地址空間,地址選通信號結合地址總線實現ARM對 FPGA 內部寄存器的尋址。
3 軟件系統關鍵技術設計與實現
系統軟件總體采用分層思想進行設計。整個系統軟件主要由宿主機操作系統、宿主機開發軟件、目標板操作系統、目標板底層硬件驅動程序、目標板應用程序、HDL 硬件描述語言組成。宿主機操作系統選擇REDHAT-LINUX9.0 版本;宿主機開發軟件主要由一些交叉編譯環境、匯編和鏈接工具組成;目標板操作系統選用ARM-LINUX 操作系統;目標板應用程序使用C 代碼進行編寫;HDL 語言用于對FPGA 的功能進行描述。
軟件系統分層示意圖如圖2 所示。在宿主機中,交叉編譯將要在目標板平臺上運行的應用程序代碼和底層硬件驅動程序代碼展開,然后通過宿主機與目標板之間的硬件接口傳遞到目標板中,目標板通過底層硬件驅動程序控制FPGA 模塊中配置的各功能寄存器,從而完成具體的控制任務。本文重點介紹FPGA內部功能模塊的設計及驅動程序接口設計。
圖2 軟件系統分層示意圖
pid控制器相關文章:pid控制器原理
評論