ARM7與FPGA在工業(yè)控制的結合
工業(yè)控制中往往需要完成多通道故障檢測及多通道命令控制(這種多任務(wù)設置非常普遍),單獨的CPU芯片由于其外部控制接口數量有限而難以直接完成多路檢控任務(wù),故利用ARM芯片與FPGA相結合來(lái)擴展檢控通道是一個(gè)非常好的選擇。這里介紹用Atmel公司ARM7處理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)結合使用完成多通道檢控任務(wù)的一種實(shí)現方法。
本文引用地址:http://dyxdggzs.com/article/86735.htm各部分功能簡(jiǎn)介
圖1為此系統的結構連接框圖。如圖所示,ARM芯片與FPGA芯片之間通過(guò)數據總線(xiàn)、地址總線(xiàn)及讀寫(xiě)控制線(xiàn)相連,而與終端PC則通過(guò)串口通信;FPGA與目標設備通過(guò)命令控制總線(xiàn)和故障檢測總線(xiàn)相連。
圖1 系統結構框圖
1 故障檢測和命令控制部分
故障檢測:檢測通道的故障(正常)信號以高(低)電平方式指示,其一旦有故障產(chǎn)生就會(huì )保持高電平不變直到故障排除。針對這種特征,在A(yíng)RM控制器端采用定時(shí)中斷循環(huán)查詢(xún)方式來(lái)判斷故障通道的狀態(tài)。定時(shí)中斷程序通過(guò)對ARM 地址總線(xiàn)在FPGA中進(jìn)行譯碼而順序鎖定被檢測通道的電平值,然后再經(jīng)數據總線(xiàn)傳回ARM進(jìn)行判斷,最后將判斷結果送至遠程終端。采用主機查詢(xún)方式而不采用故障中斷方式出于兩個(gè)原因:一方面是通??刂菩酒獠恐袛嘣从邢蓿ǘ鄶禐?個(gè)外部中斷源),對于多目標中斷信號檢測顯然是困難的;另一方面,由于檢測通道或設備受到短時(shí)干擾而產(chǎn)生電平隨機反轉,造成故障中斷觸發(fā),而中斷觸發(fā)后又無(wú)法在通道電平恢復正常時(shí)撤銷(xiāo)故障信號,故而形成虛假報警。
命令控制:ARM芯片先判斷主控端發(fā)來(lái)的控制命令,然后通過(guò)地址總線(xiàn)和數據總線(xiàn)將命令狀態(tài)發(fā)送至經(jīng)FPGA地址譯碼鎖定的控制通道上。
2 ARM芯片與遠程檢測控制終端通信
由于只存在命令和故障狀態(tài)信號的收發(fā),所以利用ARM的串口實(shí)現與遠程PC的通信,通信標準選為RS232標準。不過(guò),在A(yíng)RM芯片上要先將TTL電平通過(guò)MAX232芯片轉換為RS232電平標準,對于距離超過(guò)15m的全雙工通信,在發(fā)送接收兩端還要各加一對RS232轉RS422電平的轉換模塊,以增加通信距離。
3 FPGA內部功能模塊說(shuō)明
FPGA內部檢測及控制電路結構關(guān)系如圖2所示。
圖2 FPGA內部邏輯結構
ARM芯片的ADDR2~0位地址線(xiàn)和片選使能信號一同進(jìn)入譯碼器decode1進(jìn)行地址譯碼后產(chǎn)生8路輸出(FPGA內部可設置一個(gè)最大輸出為256路的譯碼模塊,所以在實(shí)際應用中可擴展為更多通道),低4路用于命令發(fā)送通道,高4路用于故障檢測通道,讀寫(xiě)使能信號控制數據總線(xiàn)。
ARM芯片接收到發(fā)送信號編碼命令時(shí),立即在串口接收中斷服務(wù)子程序中并送相應地址(通道編號)和數據(命令狀態(tài))到FPGA中。譯碼器有效輸出作為相應通道D觸發(fā)器的鎖存時(shí)鐘,而數據狀態(tài)則被觸發(fā)器鎖定后作為所選通道的輸出完成相應控制。
ARM芯片在定時(shí)中斷產(chǎn)生進(jìn)入服務(wù)程序后對所有檢測通道輪流查詢(xún),查詢(xún)到有通道故障時(shí),故障信號結合選中通路信號經(jīng)與非運算送往數據端口被讀取。
FPGA程序設計注意問(wèn)題
1延時(shí)的配置
通過(guò)地址總線(xiàn)和數據總線(xiàn)進(jìn)行命令傳輸和故障檢測時(shí),FPGA是作為ARM芯片的普通外設來(lái)使用的。而ARM芯片對外設訪(fǎng)問(wèn)的速度要遠低于片內存儲器,所以要在A(yíng)RM中設置訪(fǎng)問(wèn)的正確等待周期。ARM中提供的延時(shí)周期為0~7個(gè),通過(guò)調試即可找到外設合適的等待周期,此系統的等待周期根據實(shí)際測試設置為5個(gè),具體的配置方法見(jiàn)ARM程序說(shuō)明。
2 讀寫(xiě)使能信號的連接
從圖2中可以看出,寫(xiě)使能信號NWE及讀使能信號NRD應作為數據線(xiàn)(DATA0~5)的三態(tài)控制信號連接,即使在A(yíng)RM芯片無(wú)其他外設時(shí)也不能缺省。因為ARM的上電加載程序時(shí)間要長(cháng)于同一系統上FPGA的程序配置時(shí)間,而FPGA的檢測及控制通道與ARM芯片的數據總線(xiàn)相連,FPGA加載完成后數據總線(xiàn)會(huì )存有相應通道的邏輯電平值(不為三態(tài)),這就會(huì )導致ARM芯片在對片內Flash芯片燒寫(xiě)程序或上電加載程序時(shí)與FPGA沖突(數據被邏輯鎖定),造成無(wú)法正確定位操作對象而使讀寫(xiě)失敗。
評論