ARM7與FPGA在工業控制的結合
發布時間:2008/8/20 0:00:00 訪問次數:492
各部分功能簡介
圖1為此系統的結構連接框圖。如圖所示,arm芯片與fpga芯片之間通過數據總線、地址總線及讀寫控制線相連,而與終端pc則通過串口通信;fpga與目標設備通過命令控制總線和故障檢測總線相連。
圖1 系統結構框圖
1 故障檢測和命令控制部分
故障檢測:檢測通道的故障(正常)信號以高(低)電平方式指示,其一旦有故障產生就會保持高電平不變直到故障排除。針對這種特征,在arm控制器端采用定時中斷循環查詢方式來判斷故障通道的狀態。定時中斷程序通過對arm 地址總線在fpga中進行譯碼而順序鎖定被檢測通道的電平值,然后再經數據總線傳回arm進行判斷,最后將判斷結果送至遠程終端。采用主機查詢方式而不采用故障中斷方式出于兩個原因:一方面是通常控制芯片外部中斷源有限(多數為4個外部中斷源),對于多目標中斷信號檢測顯然是困難的;另一方面,由于檢測通道或設備受到短時干擾而產生電平隨機反轉,造成故障中斷觸發,而中斷觸發后又無法在通道電平恢復正常時撤銷故障信號,故而形成虛假報警。
命令控制:arm芯片先判斷主控端發來的控制命令,然后通過地址總線和數據總線將命令狀態發送至經fpga地址譯碼鎖定的控制通道上。
2 arm芯片與遠程檢測控制終端通信
由于只存在命令和故障狀態信號的收發,所以利用arm的串口實現與遠程pc的通信,通信標準選為rs232標準。不過,在arm芯片上要先將ttl電平通過max232芯片轉換為rs232電平標準,對于距離超過15m的全雙工通信,在發送接收兩端還要各加一對rs232轉rs422電平的轉換模塊,以增加通信距離。
3 fpga內部功能模塊說明
fpga內部檢測及控制電路結構關系如圖2所示。
圖2 fpga內部邏輯結構
arm芯片的addr2~0位地址線和片選使能信號一同進入譯碼器decode1進行地址譯碼后產生8路輸出(fpga內部可設置一個最大輸出為256路的譯碼模塊,所以在實際應用中可擴展為更多通道),低4路用于命令發送通道,高4路用于故障檢測通道,讀寫使能信號控制數據總線。
arm芯片接收到發送信號編碼命令時,立即在串口接收中斷服務子程序中并送相應地址(通道編號)和數據(命令狀態)到fpga中。譯碼器有效輸出作為相應通道d觸發器的鎖存時鐘,而數據狀態則被觸發器鎖定后作為所選通道的輸出完成相應控制。
arm芯片在定時中斷產生進入服務程序后對所有檢測通道輪流查詢,查詢到有通道故障時,故障信號結合選中通路信號經與非運算送往數據端口被讀取。
fpga程序設計注意問題
1延時的配置
通過地址總線和數據總線進行命令傳輸和故障檢測時,fpga是作為arm芯片的普通外設來使用的。而arm芯片對外設訪問的速度要遠低于片內存儲器,所以要在arm中設置訪問的正確等待周期。arm中提供的延時周期為0~7個,通過調試即可找到外設合適的等待周期,此系統的等待周期根據實際測試設置為5個,具體的配置方法見arm程序說明。
2 讀寫使能信號的連接
從圖2中可以看出,寫使能信號nwe及讀使能信號nrd應作為數據線(data0~5)的三態控制信號連接,即使在arm芯片無其他外設時也不能缺省。因為arm的上電加載程序時間要長于同一系統上fpga的程序配置時間,而fpga的檢測及控制通道與arm芯片的數據總線相連,fpga加載完成后數據總線會存有相應通道的邏輯電平值(不為三態),這就會導致arm芯片在對片內flash芯片燒寫程序或上電加載程序時與fpga沖突(數據被邏輯鎖定),造成無法正確定位操作對象而使讀寫失敗。
arm配置及應用程序說明
1 處理器的資源分配
存儲器
at91fr40162內嵌一個256kb的sram,1024k個16位字組成的flash存儲器。sram通過內部32位數據總線與arm核相連,單周期訪問,flash存儲器則通過外部總線訪問。
系統外圍
ebi:外部總線控制接口,ebi可尋址64mb的空間,通過8個片選線(ncs0~ncs3獨立)和24位地址線訪問外設,地址線高4位與片選線(ncs4~7)復用,數據總線可配置成8/16位兩種模式與外設接口。
pio:并口控制器,pio控制32根i/o線,多數為復用引腳,可通過編程選擇為通用或專
各部分功能簡介
圖1為此系統的結構連接框圖。如圖所示,arm芯片與fpga芯片之間通過數據總線、地址總線及讀寫控制線相連,而與終端pc則通過串口通信;fpga與目標設備通過命令控制總線和故障檢測總線相連。
圖1 系統結構框圖
1 故障檢測和命令控制部分
故障檢測:檢測通道的故障(正常)信號以高(低)電平方式指示,其一旦有故障產生就會保持高電平不變直到故障排除。針對這種特征,在arm控制器端采用定時中斷循環查詢方式來判斷故障通道的狀態。定時中斷程序通過對arm 地址總線在fpga中進行譯碼而順序鎖定被檢測通道的電平值,然后再經數據總線傳回arm進行判斷,最后將判斷結果送至遠程終端。采用主機查詢方式而不采用故障中斷方式出于兩個原因:一方面是通常控制芯片外部中斷源有限(多數為4個外部中斷源),對于多目標中斷信號檢測顯然是困難的;另一方面,由于檢測通道或設備受到短時干擾而產生電平隨機反轉,造成故障中斷觸發,而中斷觸發后又無法在通道電平恢復正常時撤銷故障信號,故而形成虛假報警。
命令控制:arm芯片先判斷主控端發來的控制命令,然后通過地址總線和數據總線將命令狀態發送至經fpga地址譯碼鎖定的控制通道上。
2 arm芯片與遠程檢測控制終端通信
由于只存在命令和故障狀態信號的收發,所以利用arm的串口實現與遠程pc的通信,通信標準選為rs232標準。不過,在arm芯片上要先將ttl電平通過max232芯片轉換為rs232電平標準,對于距離超過15m的全雙工通信,在發送接收兩端還要各加一對rs232轉rs422電平的轉換模塊,以增加通信距離。
3 fpga內部功能模塊說明
fpga內部檢測及控制電路結構關系如圖2所示。
圖2 fpga內部邏輯結構
arm芯片的addr2~0位地址線和片選使能信號一同進入譯碼器decode1進行地址譯碼后產生8路輸出(fpga內部可設置一個最大輸出為256路的譯碼模塊,所以在實際應用中可擴展為更多通道),低4路用于命令發送通道,高4路用于故障檢測通道,讀寫使能信號控制數據總線。
arm芯片接收到發送信號編碼命令時,立即在串口接收中斷服務子程序中并送相應地址(通道編號)和數據(命令狀態)到fpga中。譯碼器有效輸出作為相應通道d觸發器的鎖存時鐘,而數據狀態則被觸發器鎖定后作為所選通道的輸出完成相應控制。
arm芯片在定時中斷產生進入服務程序后對所有檢測通道輪流查詢,查詢到有通道故障時,故障信號結合選中通路信號經與非運算送往數據端口被讀取。
fpga程序設計注意問題
1延時的配置
通過地址總線和數據總線進行命令傳輸和故障檢測時,fpga是作為arm芯片的普通外設來使用的。而arm芯片對外設訪問的速度要遠低于片內存儲器,所以要在arm中設置訪問的正確等待周期。arm中提供的延時周期為0~7個,通過調試即可找到外設合適的等待周期,此系統的等待周期根據實際測試設置為5個,具體的配置方法見arm程序說明。
2 讀寫使能信號的連接
從圖2中可以看出,寫使能信號nwe及讀使能信號nrd應作為數據線(data0~5)的三態控制信號連接,即使在arm芯片無其他外設時也不能缺省。因為arm的上電加載程序時間要長于同一系統上fpga的程序配置時間,而fpga的檢測及控制通道與arm芯片的數據總線相連,fpga加載完成后數據總線會存有相應通道的邏輯電平值(不為三態),這就會導致arm芯片在對片內flash芯片燒寫程序或上電加載程序時與fpga沖突(數據被邏輯鎖定),造成無法正確定位操作對象而使讀寫失敗。
arm配置及應用程序說明
1 處理器的資源分配
存儲器
at91fr40162內嵌一個256kb的sram,1024k個16位字組成的flash存儲器。sram通過內部32位數據總線與arm核相連,單周期訪問,flash存儲器則通過外部總線訪問。
系統外圍
ebi:外部總線控制接口,ebi可尋址64mb的空間,通過8個片選線(ncs0~ncs3獨立)和24位地址線訪問外設,地址線高4位與片選線(ncs4~7)復用,數據總線可配置成8/16位兩種模式與外設接口。
pio:并口控制器,pio控制32根i/o線,多數為復用引腳,可通過編程選擇為通用或專
上一篇:可編程控制器技術縱深解析