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