工業(ye) 控製中往往需要完成多通道故障檢測及多通道命令控製(這種多任務設置非常普遍),單獨的CPU芯片由於(yu) 其外部控製接口數量有限而難以直接完成多路檢控任務,故利用ARM芯片與(yu) FPGA相結合來擴展檢控通道是一個(ge) 非常好的選擇。這裏介紹用Atmel公司ARM7處理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)結合使用完成多通道檢控任務的一種實現方法。
各部分功能簡介
圖1為(wei) 此係統的結構連接框圖。如圖所示,ARM芯片與(yu) FPGA芯片之間通過數據總線、地址總線及讀寫(xie) 控製線相連,而與(yu) 終端PC則通過串口通信;FPGA與(yu) 目標設備通過命令控製總線和故障檢測總線相連。

圖1 係統結構框圖
1 故障檢測和命令控製部分
故障檢測:檢測通道的故障(正常)信號以高(低)電平方式指示,其一旦有故障產(chan) 生就會(hui) 保持高電平不變直到故障排除。針對這種特征,在ARM控製器端采用定時中斷循環查詢方式來判斷故障通道的狀態。定時中斷程序通過對ARM 地址總線在FPGA中進行譯碼而順序鎖定被檢測通道的電平值,然後再經數據總線傳(chuan) 回ARM進行判斷,最後將判斷結果送至遠程終端。采用主機查詢方式而不采用故障中斷方式出於(yu) 兩(liang) 個(ge) 原因:一方麵是通常控製芯片外部中斷源有限(多數為(wei) 4個(ge) 外部中斷源),對於(yu) 多目標中斷信號檢測顯然是困難的;另一方麵,由於(yu) 檢測通道或設備受到短時幹擾而產(chan) 生電平隨機反轉,造成故障中斷觸發,而中斷觸發後又無法在通道電平恢複正常時撤銷故障信號,故而形成虛假報警。
命令控製:ARM芯片先判斷主控端發來的控製命令,然後通過地址總線和數據總線將命令狀態發送至經FPGA地址譯碼鎖定的控製通道上。
2 ARM芯片與(yu) 遠程檢測控製終端通信
由於(yu) 隻存在命令和故障狀態信號的收發,所以利用ARM的串口實現與(yu) 遠程PC的通信,通信標準選為(wei) RS232標準。不過,在ARM芯片上要先將TTL電平通過MAX232芯片轉換為(wei) RS232電平標準,對於(yu) 距離超過15m的全雙工通信,在發送接收兩(liang) 端還要各加一對RS232轉RS422電平的轉換模塊,以增加通信距離。
3 FPGA內(nei) 部功能模塊說明
FPGA內(nei) 部檢測及控製電路結構關(guan) 係如圖2所示。

圖2 FPGA內(nei) 部邏輯結構
ARM芯片的ADDR2~0位地址線和片選使能信號一同進入譯碼器decode1進行地址譯碼後產(chan) 生8路輸出(FPGA內(nei) 部可設置一個(ge) 最大輸出為(wei) 256路的譯碼模塊,所以在實際應用中可擴展為(wei) 更多通道),低4路用於(yu) 命令發送通道,高4路用於(yu) 故障檢測通道,讀寫(xie) 使能信號控製數據總線。
ARM芯片接收到發送信號編碼命令時,立即在串口接收中斷服務子程序中並送相應地址(通道編號)和數據(命令狀態)到FPGA中。譯碼器有效輸出作為(wei) 相應通道D觸發器的鎖存時鍾,而數據狀態則被觸發器鎖定後作為(wei) 所選通道的輸出完成相應控製。
ARM芯片在定時中斷產(chan) 生進入服務程序後對所有檢測通道輪流查詢,查詢到有通道故障時,故障信號結合選中通路信號經與(yu) 非運算送往數據端口被讀取。
FPGA程序設計注意問題
1延時的配置
通過地址總線和數據總線進行命令傳(chuan) 輸和故障檢測時,FPGA是作為(wei) ARM芯片的普通外設來使用的。而ARM芯片對外設訪問的速度要遠低於(yu) 片內(nei) 存儲(chu) 器,所以要在ARM中設置訪問的正確等待周期。ARM中提供的延時周期為(wei) 0~7個(ge) ,通過調試即可找到外設合適的等待周期,此係統的等待周期根據實際測試設置為(wei) 5個(ge) ,具體(ti) 的配置方法見ARM程序說明。
2 讀寫(xie) 使能信號的連接
從(cong) 圖2中可以看出,寫(xie) 使能信號NWE及讀使能信號NRD應作為(wei) 數據線(DATA0~5)的三態控製信號連接,即使在ARM芯片無其他外設時也不能缺省。因為(wei) ARM的上電加載程序時間要長於(yu) 同一係統上FPGA的程序配置時間,而FPGA的檢測及控製通道與(yu) ARM芯片的數據總線相連,FPGA加載完成後數據總線會(hui) 存有相應通道的邏輯電平值(不為(wei) 三態),這就會(hui) 導致ARM芯片在對片內(nei) Flash芯片燒寫(xie) 程序或上電加載程序時與(yu) FPGA衝(chong) 突(數據被邏輯鎖定),造成無法正確定位操作對象而使讀寫(xie) 失敗。
ARM配置及應用程序說明
1 處理器的資源分配
● 存儲(chu) 器
AT91FR40162內(nei) 嵌一個(ge) 256KB的SRAM,1024K個(ge) 16位字組成的Flash存儲(chu) 器。SRAM通過內(nei) 部32位數據總線與(yu) ARM核相連,單周期訪問,Flash存儲(chu) 器則通過外部總線訪問。
● 係統外圍
EBI:外部總線控製接口,EBI可尋址64MB的空間,通過8個(ge) 片選線(NCS0~NCS3獨立)和24位地址線訪問外設,地址線高4位與(yu) 片選線(NCS4~7)複用,數據總線可配置成8/16位兩(liang) 種模式與(yu) 外設接口。
PIO:並口控製器,PIO控製32根I/O線,多數為(wei) 複用引腳,可通過編程選擇為(wei) 通用或專(zhuan) 用。
AIC:先進中斷控製器,實現片內(nei) 外圍中斷及4個(ge) 外部中斷源中斷的管理,其外部中斷引腳與(yu) 通用I/O複用。
● 用戶外圍
USART0~1:串口收發控製器,支持8個(ge) 數據位的發送,可以進行異步/同步傳(chuan) 輸選擇,其片外引腳與(yu) 通用I/O複用。
TC:定時/計數器,可以產(chan) 生定時中斷和計數功能,其片外引腳與(yu) 通用I/O複用。
2 存儲(chu) 器地址重映射後的空間分配
在CPU上電後,都會(hui) 從(cong) 地址0開始第一條指令代碼的執行,而上電複位後0地址必須映射到NCS0片選所接的器件上,這裏必須將NCS0連接到片內(nei) Flash上以加載初始化程序和應用程序。由於(yu) 中斷和異常的入口地址是0~20H固定不變,它們(men) 的產(chan) 生都是跳轉到0~20H之間相應的地址取程序執行,為(wei) 了加快中斷響應,必須將0~20H地址映射到片內(nei) RAM區,所以在初始化的重映射命令執行(EB1_RCR的RCB位置1)後,內(nei) 部RAM就映射到地址0,所有的中斷入口響應和堆棧操作都被映射到在RAM區進行。

由於(yu) 重映射主要是用於(yu) Flash和片內(nei) RAM的地址空間交換,所以片內(nei) 外圍接口(EBI、USART、TC)對應的存儲(chu) 器編程地址範圍在映射前後不發生改變,而訪問外設地址為(wei) 重映射後所分配。重映射後地址分配如表1所示。
3 應用接口的存儲(chu) 器配置
EBI存儲(chu) 器:在8個(ge) EBI片選存儲(chu) 器(EBI_CSR0~EBI_CSR7)中設置外設訪問參數。其中,32位存儲(chu) 器中包括數據總線寬度8(16)設置,等待狀態數目1~7個(ge) 周期設置,等待使能(不是使能)設置,片選使能(不使能)設置。這裏將FPGA作為(wei) 外設,使能NCS3(也可根據實際選擇其他空閑片選線),選擇總線寬度16,使能等待周期並設周期為(wei) 5(根據調試選擇)。因默認NCS0為(wei) 加載Flash片選線,而Flash為(wei) 16位信號、7個(ge) 等待周期,故需在EBI_CSR0中選擇16位總線寬度、7個(ge) 等待周期並使能NCS0。
AIC存儲(chu) 器:AIC存儲(chu) 器管理所有內(nei) 外部中斷,對此存儲(chu) 器的正確初始化賦值才會(hui) 打開相應中斷。設定AIC工作參數:應用串口通信模式為(wei) 異步模式,串口發送的數據位字符長度為(wei) 8位,通信的波特率9600B/s,串口中斷優(you) 先級為(wei) 6(中斷優(you) 先級由低到高0~7),接收發送通道使能。#p#分頁標題#e#
TC存儲(chu) 器:定時中斷存儲(chu) 器需要設定定時長度為(wei) 1s(每1s產(chan) 生中斷進行故障查詢),定時通道使能及軟件觸發模式,定時中斷優(you) 先級設為(wei) 1。
4 應用程序說明
① 主程序
#define AT91C_BASE_EBI ((AT91PS_EBI) 0xFFE00000) //EBI基地址定義(yi)
int main()
{AT91F_EBI_OpenChipSelect (
AT91C_BASE_EBI, //地址指針
0x3, //片NCS3使能
0x30000000+0x3f39); //片選存儲(chu) 器初始化
Usart_init();//初始化串口
timer_init();//初始化定時器
while(1){} //循環等待
}
ARM處理器在完成各寄存器初始化後進入應用主程序,在主程序中首先調用EBI接口使能函數來設置參數:在程序中設置存儲(chu) 器基地址值(0xFFE00000),片選設置0x3(NCS3使能),NCS3的存儲(chu) 器初始化;調用USART控製器函數初始化串口:打開串口,串口收發通道初始化,設定串口通信速率;調用定時中斷函數:打開定時中斷,設置定時中斷時間,設定觸發方式為(wei) 軟件觸發;最後進入等待循環。
② 串口命令接收中斷服務程序
#define USART0_INTERRUPT_LEVEL 6//設置中斷優(you) 先級為(wei) 6
#define AT91C_US_USMODE_NORMAL AT91C_US_CHMODE_NORMAL//*設置通信模式(NORMAL定義(yi) 為(wei) 異步模式)*//
AT91PS_USART COM0=AT91C_BASE_US0;//設置COM0為(wei) 收發口
char message[4];
// 控製端串口中斷通信程序 //
//*----------------------------------------------------------------------------*//
void Usart0_c_irq_handler(AT91PS_USART USART_pt)//串口中斷處理函數
{ volatile unsigned int *conp;unsigned int status;
int time;
volatile unsigned int i;
status = USART_pt->US_CSR & USART_pt->US_IMR;//給狀態寄存器賦初值
if ( status & AT91C_US_RXRDY)//接收通道寄存器判斷是否有數據
{
AT91F_US_DisableIt(USART_pt,AT91C_US_RXRDY);//關(guan) 閉接收通道準備好中斷
AT91F_US_EnableIt(USART_pt,AT91C_US_ENDRX);//打開接收結束中斷
AT91F_US_ReceiveFrame(USART_pt,(char*)(message),4);//調用接收數據數接收數據
}
if ( status & AT91C_US_ENDRX){
AT91F_US_DisableIt(USART_pt,AT91C_US_ENDRX); // 關(guan) 閉接收器傳(chuan) 送結束中斷
{ if((message[0]^0xff)==message[1])//判斷接收代碼
{switch (message[0])
{case 0x31 : {conp=(volatile unsigned int*)(0x1+0x30000000);//OPE1使能
*conp=0x2;}; break;//0x31代碼送往OPE1端口
case 0x30 : {conp=(volatile unsigned int*)(0x2+0x30000000);//OPE2使能
*conp=0x1;}; break; // 0x30代碼送往OPE2端口
case 0x11 : {conp=(volatile unsigned int*)(0x3+0x30000000);//OPE3使能
*conp=0x2;};break;// 0x11代碼則往OPE3端口
case 0x10 : {conp=(volatile unsigned int*)(0x4+0x30000000);//OPE4使能
*conp=0x1;};break; //0x10代碼送往OPE4端口
default:break;}
}
}
以上程序為(wei) 串口中斷服務程序,各函數語句說明參見注釋。中斷級別設置為(wei) 6(高於(yu) 定時中斷),這樣使命令發送優(you) 先於(yu) 故障查詢(控製命令隨機出現而故障查詢總是循環進行);接收緩衝(chong) 區message[4]數組類型必須設為(wei) 動態分配,靜態數據分配會(hui) 使處理器開辟數據緩衝(chong) 區到Flash芯片中,從(cong) 而引發在一個(ge) 中斷處理程序中由於(yu) 存取時間過長而導致串口收發超時的錯誤。因為(wei) 篇幅有限,其他程序不再一一敘述。
在ARM應用程序的編寫(xie) 中,應該盡量少的在主函數內(nei) 使用循環操作,主函數主要完成各接口控製器應用初始化,因為(wei) 主函數不間斷循環操作不但會(hui) 增加功耗,而且長時間頻繁切換於(yu) 中斷服務和主循環之間會(hui) 造成程序運行的不穩定,所以能用定時中斷完成的循環操作盡量用中斷完成。
結語
ARM芯片控製功能結合FPGA靈活的多硬件接口模擬特性在工程上體(ti) 現出的其獨特的優(you) 勢,已發展為(wei) 一種流行的硬件架構模式,隨著芯片功能的不斷強大,這種優(you) 勢將使其用途更廣,對任務處理變得更加靈活高效。
轉載請注明出處。







相關文章
熱門資訊
精彩導讀



















關注我們

