邵文建,李 超
(船舶重工集團公司 723所,揚州 225001)
許多新的雷達體制和雷達技術的出現,對雷達信號處理的運算速度和實時性提出了很高的要求,同時對接口總線的傳輸速度提出了更高的要求。因此,設計一種高速傳輸的接口總線對信號處理有著重要的現實意義。
虛擬機器環境(VME)總線具有高速異步傳輸、支持多種尋址方式、多種數據寬度、能夠獨立支持至少32位地址和32位數據總線、支持集中式和分布式中斷的優點,最高傳輸速度可達 500 Mb/s。VME總線是目前應用最為廣泛、獲得各方支持最多的并行標準總線。由于VME具有總線眾多的功能、強大的兼容性、并行性和高可靠性,因此在圖像處理、軍事通信、雷達信號處理等眾多領域有廣泛應用。本文采用Altera公司高密度的Stratix系列現場可編程門陣列(FPGA)來實現VME總線接口,對VME總線接口設計問題進行了深入研究。
VME總線是由Motorola等幾大公司在VERSA總線和歐式卡基礎上提出的。VME的數據傳輸機制是異步的,有多個總線周期,地址寬度是16、24 、32、40 或 64 位,數據線路的寬度是 8、16、24 、32、64位,系統可以動態地選擇地址和數據線的寬度。此外還有 UnalignedData傳輸能力、誤差糾正能力和自我診斷能力,用戶可以定義I/O端口。
VME總線的功能構架如圖1所示。各個功能模塊雖然各有分工,但是要想集體配合,還需要總線的支持。主設備用于啟動數據傳輸總線周期,以便和從設備之間傳遞數據。從設備用于檢測主設備啟動的數據傳輸總線周期,當數據傳輸總線周期指定由它參與時,就和主設備傳遞數據。
VME總線主要由數據傳輸總線、仲裁總線、優先級中斷總線和公用總線組成。數據傳輸總線是一個高速異步平行數據傳輸總線,能傳輸數據和地址信號;仲裁總線是為確保在特定的時間內只有一個模塊占用數據傳輸總線而設定的,工作在其上的請求模塊和仲裁模塊將負責協調各模塊發出的指令;優先權中斷總線是處理各模塊中斷請求的總線,各種中斷請求在VME中被分成了7個等級,根據等級高低,依次對信號線進行中斷工作;公用總線負責系統的一些基本工作,包括對時鐘的控制、初始化、錯誤檢測等任務。

圖1 VME總線系統的功能結構圖
數據傳輸總線分為3類:尋址信號線、數據信號線和控制信號線。
(1)地址信號線:A[31..1]、AM[5..0]、DS1、DS0、LWORD。AM0~AM5規定所用地址線的數目。地址線寬度選擇真值表如表1所示。DS1、DS0數據選通信號由主設備驅動,用來選擇數據傳輸的字節地址單元。

表1 地址線寬度選擇真值表
(2)數據信號線:D[31..0]。由于VME總線的數據線寬度為32位,所以每4個字節單元組合可以在一個數據傳輸周期內被完全訪問。主設備通過地址信號線A[31..2]指示哪4個字節單元組合被尋址,DS1、DS0、A1、LWORD 將指示該4個字節單元組合中的哪些字節被訪問。
(3)控制信號線:AS、DS1、DS0、BERR、DTACK、WRITE。AS地址選通信號由主設備驅動,通知從設備地址穩定,可以啟用。DTACK為從設備應答信號,在寫周期從設備驅動DTACK為低表示它已經成功接收了寫入的數據;在讀周期從設備驅動DTACK為低表示它已經將數據放上了數據線。BRRR總線錯誤信號用于防止總線操作超時和死鎖。WRITE讀寫信號由主設備驅動,指示數據傳輸方向。
優先級中斷總線用于請求和響應中斷的信號。監視中斷請求線(IRQl~IRQ7),其中IRQ7優先權最高,IACK中斷響應信號線。中斷響應采用菊花鏈方式,IACKIN、IACKOUT為中斷響應菊花鏈信號。中斷響應信號IACK與第一槽的中斷響應菊花鏈輸入IACKIN連接在一起。當中斷控制器拉低IACK信號時,將引起中斷響應菊花鏈信號從第一槽逐級往下傳遞。沒有發生中斷請求槽的中斷請求器將中斷響應信號往下傳遞(菊花鏈驅動器驅動IACKOUT輸出為低)。發生中斷請求槽的中斷請求器在收到中斷響應信號后,將其捕獲并停止往下傳遞(菊花鏈驅動器驅動IACKOUT的輸出為高)。
本設計采用Altera公司Stratix系列的FPGA器件EP1S10F672I7來實現VME總線接口電路的設計。該芯片具有10 570個邏輯單元,920 448位的隨機存儲器(RAM)存儲空間和高性能I/O引腳。可見該FPGA的資源完全能夠滿足設計要求。FPGA中的VME總線接口邏輯主要有兩大功能模塊組成:一個是VME主機對寄存器讀寫訪問模塊,該模塊的程序主要是寄存器讀寫信號和總線響應信號的設計;另一個是中斷的請求響應模塊,該模塊主要完成中斷信號的發送,并中斷控制器在收到中斷請求后,通過中斷響應周期進行中斷響應。VME總線接口邏輯框圖如圖2所示。

圖2 VM E總線接口邏輯框圖
VME從設備的寄存器單次讀寫通過地址譯碼、數據鎖存來完成。要完成32位數據的寫操作,首先設IACK為1指示非中斷響應周期,WRITE信號設為0時指示寫狀態。等待上一從設備釋放數據總線(即 DTACK、BERR信號線都為 1)時,主設備就可以將數據放到數據線上了,同時驅動DS0=0,DS1=0。從設備鎖存數據,寫入指定單元,并給出DTACK=0信號,指示數據已經寫入成功。主設備檢測到DTACK信號為0時,就釋放數據線、地址線的控制權。程序采用VHDL語言狀態機實現,整個過程分為6種狀態:
狀態1:驅動數據總線、地址總線,WRITE=0,IACK=1,LWORD=0,AM=0A。
狀態2:驅動AS=0,使得數據總線上的數據有效。
狀態3:驅動DS0=0,DS1=0。
狀態4:等待回應信號DTACK,如果從設備應答,即DTACK=0,轉入狀態5,否則等待。
狀態5:空等待1個周期。
狀態6:驅動AS=1,DS0=1,DS1=1。
寫寄存器仿真結果如圖3所示。讀取寄存器的值與寫類似,只是根據讀周期時序關系,各狀態不再詳細介紹。

圖3 寫寄存器仿真結果
中斷請求模塊發出中斷請求后,中斷控制器通過總線請求器獲得數據傳輸總線使用權,拉低中斷響應信號IACK,啟動中斷響應周期。中斷功能使用VME中斷IRQ3,中斷時采用向量0×35進行應答。支持一個VME中斷源對應多個局部中斷源,局部中斷源通過板內寄存器進行進一步判別。在中斷響應周期中,監控輸入信號IACKIN和A1~A3,等待VME主機中斷管理模塊發來的中斷響應。當檢測到IACKIN為低,說明中斷控制器在進行中斷響應。此時檢測A1~A3上的值是否和中斷發生器的中斷請求級別一致,如果不一致可能中斷發生器沒有產生中斷,或者當前響應的中斷級別與中斷發生器的中斷請求級別不一致,那么就將驅動IACKOUT輸出菊花鏈為低,如果一致就通知VME主機中斷管理讀取模塊取走中斷狀態識別碼,主機進入相應的中斷服務程序(即完成了從模塊VME總線中斷的發送和響應過程)。根據VME總線中斷響應時序關系,由程序采用狀態機實現,分為 7個狀態。
如果中斷請求信號IRQ3有效,進入狀態1。
狀態1:驅動A[3∶1]=3(使中斷請求級別與響應一致),IACK=0。
狀態2:驅動AS=0,使得數據總線上的數據有效。
狀態3:驅動DS0=0,DS1=0。
狀態4:等待回應信號DTACK,如果從設備應答,即DTACK=0,轉入狀態 5,否則等待。
狀態5:DTACK=0,表明從設備已將中斷向量放在數據總線上。
狀態6:空等待1個周期。
狀態7:驅動DS0=1,DS1=1,AS=1。
中斷請求模塊產生中斷請求信號,請求級別為0x3,與中斷響應級別一致,中斷狀態/識別字0x35在中斷響應菊花鏈輸入信號IACKIN有效后輸出。中斷響應菊花鏈信號沒有繼續往下傳遞,IACKOUT信號保持為高。仿真結果如圖4所示。

圖4 中斷響應級別與請求級別一致情況的仿真結果
本文利用Altera公司的Stratix系列FPGA實現了一種VME總線接口電路,實際經驗表明該設計可以實現高速的數據傳輸。這種設計具有兼容性強、并行性好、可靠性高和能高速傳輸的優點,為信號處理系統的設計提供了一種更好的方案選擇。
[1]項碧波.使用FPGA實現VME總線接口.聲學與電子工程[J],2000(3):40-44.
[2]劉顯慶,劉仁普.微機總線規范——VESA PCI EISA VM E[M].北京:機械工業出版社,1995.
[3]崔葛瑾.基于FPGA的數字電路系統設計[M].西安:西安電子科技大學,2008.
[4]周平.利用PLD設計 VM E總線接口[J].計算機自動測量與控制,1996(2):47-49.