1 引 言
1987年,VME總線被批準為國際標準IEEE1014-1987。VME總線系統采用主控/目標結構、異步非復用傳輸模式,支持16位、24位、32位尋址及8位、16位、24位、32位數據傳輸,最大總線速度是40 MB/s。1996年的新標準VME64(ANSI/VI-TA1-1994)將總線數據寬度提升到64位,最大數據傳輸速度為80 MB/s。
而由FORCE COMPUTERS制定的VME64x總線規范將總線速度提高到了320 MB/s。歷史上,VME總線由于其眾多的功能、強大的兼容性、并行性和高可靠性一直是實時嵌入式系統的首選機型,主要應用于圖像處理、軍事通信、雷達信號處理等眾多領域。本文基于雷達實時信號處理的需要,用FPGA實現了多DSP信號處理模板局部總線和基于標準VME總線的計算機進行通信的接口設計。
2 VME總線的功能特點
VME總線系統的功能結構可以分為4類:數據傳輸總線(DTB)、DTB仲裁總線、優先中斷總線和實用總線。每一類都包括一條總線以及與之相關的功能模塊,他們共同完成某一確定的功能。
2.1 數據傳輸總線
DTB信號線可以分為3類:尋址線、數據線、控制線。為了適應處理器尋址的靈活性,并對地址空問進行保護,VME總線提供6條地址修改線,選擇不同的地址修改碼即可實現16,24,32位的尋址變化,并對地址空間賦予特定的保護權限。控制線和地址線的不同組合可以靈活地控制數據的傳送寬度和方式,如8,16,24,32位。
依靠這些控制信號的互鎖邏輯,VME總線進行異部傳輸,而不需要時鐘的同步,從而可以可靠地實現不同設備之間的數據傳輸。當主從模塊交換數據時,地址線由主模塊驅動進行尋址,根據利用的地址線數目的不同,地址可以是短地址、標準地址和擴展地址,所用地址線的數目由地址修改線AM0~AM5規定。數據線D00~D31用來傳輸l~4個字節的數據。主模塊用數據選通線DS0~DS1,字長線LWORD和地址線A01配合制定不同的數據傳輸周期類型。其數據長度選擇的真值表和地址總線真值表如表1和表2所示。這里暫不涉及64位據和地址總線。
2.2 DTB仲裁總線
在VME總線系統中,當同時有多個模塊要求使用DTB時,仲裁子系統就檢測這些請求,并在某一時刻僅允許一塊模板使用DTB。
仲裁總線由6條總線信號線和4組菊花鏈信號線組成:總線請求線BR0~BR3;總線忙線BBSY;總線清除線BCLR;總線允許輸入線BG0IN~BG3IN;總線允許輸出線BG0OUT~BG3OUT。菊花鏈信號線由每塊板的總線允許輸入線(BgxIN)和總線允許輸出線(BgxOUT)組成。從n號插槽出來的菊花鏈信號線,如BGxOUT與下一板(n+1)號插槽的(BgxIN)相連。槽1的BgxIN一般由槽1的總線仲裁模塊來驅動。
在VME總線仲裁系統中共有O~3四種優先級,第3優先級最高,第0優先級最低,也就是說DTB仲裁總線中總線請求,總線允許輸入和總線允許輸出各有4條。每個請求模塊只驅動一條請求線,并接受同一級別的總線允許鏈路仲裁,即BRx,BGxIN,BGxOUT中x相同時才能構成一級仲裁鏈路。至于仲裁驅動模塊對4條仲裁鏈路的處理,則可以采用3種不同的方式:優先法、循環法和單級法。
優先級仲裁是按照4條總線請求的優先級別從最高的BR3到最低的BR0這一固定的優先順序分配總線的。循環仲裁是按照循環優先的原則來分配總線的,在總線請求線BR(n)上某一請求模塊已獲準使用總線時,則下一次仲裁的最高優先級就是BR(n-1);單級僅接受BR3上的請求,并依靠BR3上的總線允許菊花鏈來裁判。
2.3 優先中斷總線
通常僅有一個處理器處理中斷,監視中斷請求線(IRQl~IRQ7),IRQ7優先權最高,在響應中斷時,一個地址周期產生,這個地址指示請求已被響應,中斷響應線(IACK)被仲裁器改變以daisy-chain(菊花鏈)的方式向下傳送,用IACKIN和IACKOUT信號,一個數據周期指出請求設備,并提取請求設備的狀態和IV(中斷矢量)。
2.4 實用總線
實用總線功能提供系統周期定時,上電初始化和故障檢測功能,主要有SYSCLK(系統時鐘線),ACFAIL(交流故障線),SYSRESET(系統復位線),SYSFAIL(系統故障線);系統時鐘線是獨立的頻率為16 MHz的時鐘信號,由位于1號槽的系統時鐘驅動模塊產生,可以作為整個系統的時間基準。另外3條信號線由l號槽的電源監控模塊產生。
3 系統接口設計方案
通常,設計多DSP局部總線與標準總線接口可以采用專業公司提供的接口控制芯片。例如,利用Cypress公司的VIC64橋接電路可以設計功能全面,具有完全的主模塊/從模塊功能的標準VME總線接口。但是如果用戶開發的基于VME總線的應用模塊僅作為從設備.那么就只需要具備從從模塊的總線接口,這樣就可以使用FPGA自行設計橋接電路,本設計結合系統需要,采用雙口RAM實現數據交換,FPGA實現接口邏輯轉換。接口設計方案如圖1所示。
圖1中DSP為Analog Devices公司TS101,4片TS101共享總線組成緊耦合系統。雙口RAM為Cypress公司的高速、大容量、低功耗芯片CY7C025AV,他的容量為32 kB,數據寬度為16 b,最高訪問速度達到80 MHz。FPGA為ALTERA公司的EPF10K30A。
雙口RAM的左端口與多DSP局部總線相連,局部總線的MS0連接雙口RAM的CEL(左端口使能),雙口RAM在多DSP局部總線的地址空間映射為0X8000000~0X8007FFF。雙口RAM的讀寫時序與普通存儲器相同,可以直接與局部總線相連,DSP可以通過慢速總線傳輸協議訪問雙口RAM的地址空間。雙口RAM的OEL(左端口輸出使能)和RWL(左端口讀寫使能)分別接局部總線的RD和W/R,左端口數據線(D0L~D15L)和地址線(A0L~A14L)也分別與局部總線的數據和地址線相連。
雙口RAM右端口和標準VME總線通信,由FPGA負責譯碼標準VME總線控制信號線產生接口控制邏輯,雙口RAM的右端口數據線(D0R~D15R)和地址線(A0R~A14R)通過總線驅動器74F16245驅動后和標準VME:總線的數據和地址線相連。74F16245的使能和傳輸方向信號由FPGA譯碼產生。
標準VME總線的控制信號線與FPGA連接,由于FPGA的I/O管腳可以兼容各種電平,所以VME的控制信號線可以直接與FPGA相連。
4 FPGA接口程序的設計
FPGA中的VME總線接口程序主要由2大模塊組成,一個模塊是VME主機對雙口RAM訪問的普通I/O模塊,該模塊主要實現標準VME總線訪問時序到雙口RAM訪問時序的邏輯轉換,VME總線地址譯碼和訪問模式譯碼,以及VME總線到雙口RAM的數據地址線驅動的邏輯控制。另一個模塊多DSP模板向VME主機發送中斷的中斷請求模塊,該模塊主要完成中斷信號的發送,主機發來的中斷認可的處理和向主機發送中斷狀態和識別碼。
4.1 普通I/O模塊的設計
普通I/O模塊的程序設計采用VHDL語言狀態機實現,整個過程分為5種狀態:idle(空閑狀態),selection(選中狀態),write(寫數據狀態),read(讀數據狀態)和answer(應答狀態)。
idle狀態表示本模塊沒有被VME主機訪問;selection狀態表示地址和模式譯碼已經選中本模塊,主機要訪問雙口RAM的地址空間;write狀態VME主機正在向雙口RAM寫入數據;read狀態表示VME主機正在從雙口RAM中讀出數據;answer表示本模塊響應訪問周期向VME主機發送數據傳輸應答。描述整個過程的狀態轉移圖如圖2所示。

I/O模塊標準傳輸的過程描述為:idle狀態時,地址監測劃模塊應處于VME總線地址譯碼和訪問模式監測狀態,本模塊的訪問模式為A24-D16標準數據訪問模式。當VME主機輸出的地址和訪問模式與本模塊一致時,即輸入地址VA20~VA23為程序所設的地址,AM碼等于3A(H),LWORD為高,VA1為低和AS為低,地址監測模塊輸出“從模塊選中信號”,啟動了從模塊訪問,這時模塊進人selection狀態。
進入selection狀態后,程序監視DS0,1(數據選通信號)和WRITE(讀寫信號)。當DS0,DS1都為低,WRITE為高時,模塊進入read狀態;當DS0,DS1都為低,WRITE為低時,模塊進入write狀態。
當模塊處于read狀態時,FPGA置雙口RAM的CER為低使能雙口RAM,OER為低使能數據輸出,RWR為高關閉寫使能,使雙口RAM為數據輸出狀態。FPGA還要打開總線驅動使能,設置總線驅動方向,使VME地址總線為輸入,數據總線為輸出。
當模塊處于write狀態時,FPGA置雙口RAM的CER為低使能雙口RAM,RWR為低使能寫信號,OER為高關閉輸出數據使能,使雙口RAM為數據輸入狀態。FPGA還要打開總線驅動使能,設置總線驅動方向,使VME地址數據線都為輸入。
為了設置“讀應答使能”和“寫應答使能”,模塊在進入read(讀數據狀態)或write(寫數據狀態)后,都使能一個計數器計數。當計數器的計數值為某值時(此計數值可以用來調整讀寫周期的大小,本例中使用32 MHz時鐘時,計數值為1即可),分別置“讀應答使能”和“寫應答使能”有效,模塊進入answer(應答狀態)狀態。
在模塊進入an-swer后,程序置DTACK為低,向主機發送數據傳送應答。這樣,當主機向雙口RAM寫數據時,通知主機可以釋放總線;當主機從雙口RAM讀數據時,通知主機數據已經穩定可以鎖存數據。主機收到DTACK后釋放DS0,DS1為高,AS為高;模塊檢測到DS0,DS1為高,AS為高后,將DTACK置高,關閉雙口RAM使能和VME總線驅動,模塊進入idle(空閑狀態),一個標準的VME總線傳輸周期結束。
整個過程的仿真時序波形如圖3所示:圖中,“000”表示idle狀態,“001”表示selection狀態,“101”表示read狀態,“011”表示write狀態,“111”表示answer狀態。

4.2 中斷請求模塊的設計
本模塊設計采用VHDL語言編寫程序,使用進程對中斷產生模塊的功能進行描述,即用進程中if-elsif-else語句來描述這個時序過程。
中斷模塊負責產生標準VME總線中斷,處理VME主機中斷管理模塊發來的中斷響應。程序設計了一個8位的內部寄存器VINT,用來控制中斷信號的產生,寄存器位VINT1~7對應IRQ1~7,控制VME總線中斷信號的產生和撤銷,VINT0作為發中斷使能位.當VINT0等于1時,程序檢查VINT1~7,置相應的中斷請求信號線IRQ1~7為低,便向監控該信號的VME主機中斷管理模塊發出了中斷請求。
中斷請求模塊發出中斷請求后,監控輸入信號IACK-IN和A1~3,等待VME主機中斷管理模塊發來的中斷響應。當檢測到IACKIN為低,即開始中斷號對照,檢測A1~3上的值是否和本模塊發出的中斷號一致,如果不一致就將驅動IACKOUT輸出菊花鏈為低,如果一致將該中斷的狀態/識別碼放到VD0~7上,當數據穩定后,驅動DTACK為低,通知VME主機中斷管理模塊取走中斷狀態識別碼,主機進入相應的中斷服務程序.即完成了從模塊VME總線中斷的發送和響應過程。
5 結 語
用VHDL語言實現了多DSP局部總線到標準VME總線普通I/O模塊和中斷請求模塊的設計,雙口RAM的存儲空間映射到工控機的存儲空間的地址為0XC0410000~0XC0413FFFC。使用32 MHz時鐘時.通信速率町達16 MB/s,能夠滿足雷達信號處理板到終端通信的要求。