多DSP局部總線與VME總線的接口設計
VME(Versa Module Eurocard)總線是一種計算機總線結構,1981年由其生產商Motorola,Mostesk和Signe-tios三家公司組成的集團合作定義。1987年,VME總線被批準為國際標準IEEE1014-1987。VME總線系統(tǒng)采用主控/目標結構、異步非復用傳輸模式,支持16位、24位、32位尋址及8位、16位、24位、32位數據傳輸,最大總線速度是40 MB/s。1996年的新標準VME64(ANSI/VI-TA1-1994)將總線數據寬度提升到64位,最大數據傳輸速度為80 MB/s。而由FORCE COMPUTERS制定的VME64x總線規(guī)范將總線速度提高到了320 MB/s。歷史上,VME總線由于其眾多的功能、強大的兼容性、并行性和高可靠性一直是實時嵌入式系統(tǒng)的首選機型,主要應用于圖像處理、軍事通信、雷達信號處理等眾多領域。本文基于雷達實時信號處理的需要,用FPGA實現(xiàn)了多DSP信號處理模板局部總線和基于標準VME總線的計算機進行通信的接口設計。
2 VME總線的功能特點
VME總線系統(tǒng)的功能結構可以分為4類:數據傳輸總線(DTB)、DTB仲裁總線、優(yōu)先中斷總線和實用總線。每一類都包括一條總線以及與之相關的功能模塊,他們共同完成某一確定的功能。
2.1 數據傳輸總線
DTB信號線可以分為3類:尋址線、數據線、控制線。為了適應處理器尋址的靈活性,并對地址空問進行保護,VME總線提供6條地址修改線,選擇不同的地址修改碼即可實現(xiàn)16,24,32位的尋址變化,并對地址空間賦予特定的保護權限。控制線和地址線的不同組合可以靈活地控制數據的傳送寬度和方式,如8,16,24,32位。依靠這些控制信號的互鎖邏輯,VME總線進行異部傳輸,而不需要時鐘的同步,從而可以可靠地實現(xiàn)不同設備之間的數據傳輸。當主從模塊交換數據時,地址線由主模塊驅動進行尋址,根據利用的地址線數目的不同,地址可以是短地址、標準地址和擴展地址,所用地址線的數目由地址修改線AM0~AM5規(guī)定。數據線D00~D31用來傳輸l~4個字節(jié)的數據。主模塊用數據選通線DS0~DS1,字長線LWORD和地址線A01配合制定不同的數據傳輸周期類型。其數據長度選擇的真值表和地址總線真值表如表1和表2所示。這里暫不涉及64位據和地址總線。
2.2 DTB仲裁總線
在VME總線系統(tǒng)中,當同時有多個模塊要求使用DTB時,仲裁子系統(tǒng)就檢測這些請求,并在某一時刻僅允許一塊模板使用DTB。
仲裁總線由6條總線信號線和4組菊花鏈信號線組成:總線請求線BR0~BR3;總線忙線BBSY;總線清除線BCLR;總線允許輸入線BG0IN~BG3IN;總線允許輸出線BG0OUT~BG3OUT。菊花鏈信號線由每塊板的總線允許輸入線(BgxIN)和總線允許輸出線(BgxOUT)組成。從n號插槽出來的菊花鏈信號線,如BGxOUT與下一板(n+1)號插槽的(BgxIN)相連。槽1的BgxIN一般由槽1的總線仲裁模塊來驅動。
在VME總線仲裁系統(tǒng)中共有O~3四種優(yōu)先級,第3優(yōu)先級最高,第0優(yōu)先級最低,也就是說DTB仲裁總線中總線請求,總線允許輸入和總線允許輸出各有4條。每個請求模塊只驅動一條請求線,并接受同一級別的總線允許鏈路仲裁,即BRx,BGxIN,BGxOUT中x相同時才能構成一級仲裁鏈路。至于仲裁驅動模塊對4條仲裁鏈路的處理,則可以采用3種不同的方式:優(yōu)先法、循環(huán)法和單級法。優(yōu)先級仲裁是按照4條總線請求的優(yōu)先級別從最高的BR3到最低的BR0這一固定的優(yōu)先順序分配總線的。循環(huán)仲裁是按照循環(huán)優(yōu)先的原則來分配總線的,在總線請求線BR(n)上某一請求模塊已獲準使用總線時,則下一次仲裁的最高優(yōu)先級就是BR(n-1);單級僅接受BR3上的請求,并依靠BR3上的總線允許菊花鏈來裁判。
2.3 優(yōu)先中斷總線
通常僅有一個處理器處理中斷,監(jiān)視中斷請求線(IRQl~IRQ7),IRQ7優(yōu)先權最高,在響應中斷時,一個地址周期產生,這個地址指示請求已被響應,中斷響應線(IACK)被仲裁器改變以daisy-chain(菊花鏈)的方式向下傳送,用IACKIN和IACKOUT信號,一個數據周期指出請求設備,并提取請求設備的狀態(tài)和IV(中斷矢量)。
2.4 實用總線
實用總線功能提供系統(tǒng)周期定時,上電初始化和故障檢測功能,主要有SYSCLK(系統(tǒng)時鐘線),ACFAIL(交流故障線),SYSRESET(系統(tǒng)復位線),SYSFAIL(系統(tǒng)故障線);系統(tǒng)時鐘線是獨立的頻率為16 MHz的時鐘信號,由位于1號槽的系統(tǒng)時鐘驅動模塊產生,可以作為整個系統(tǒng)的時間基準。另外3條信號線由l號槽的電源監(jiān)控模塊產生。
3 系統(tǒng)接口設計方案
通常,設計多DSP局部總線與標準總線接口可以采用專業(yè)公司提供的接口控制芯片。例如,利用Cypress公司的VIC64橋接電路可以設計功能全面,具有完全的主模塊/從模塊功能的標準VME總線接口。但是如果用戶開發(fā)的基于VME總線的應用模塊僅作為從設備.那么就只需要具備從從模塊的總線接口,這樣就可以使用FPGA自行設計橋接電路,本設計結合系統(tǒng)需要,采用雙口RAM實現(xiàn)數據交換,F(xiàn)PGA實現(xiàn)接口邏輯轉換。接口設計方案如圖1所示。
圖1中DSP為Analog Devices公司TS101,4片TS101共享總線組成緊耦合系統(tǒng)。雙口RAM為Cypress公司的高速、大容量、低功耗芯片CY7C025AV,他的容量為32 kB,數據寬度為16 b,最高訪問速度達到80 MHz。FPGA為ALTERA公司的EPF10K30A。
雙口RAM的左端口與多DSP局部總線相連,局部總線的MS0連接雙口RAM的CEL(左端口使能),雙口RAM在多DSP局部總線的地址空間映射為0X8000000~0X8007FFF。雙口RAM的讀寫時序與普通存儲器相同,可以直接與局部總線相連,DSP可以通過慢速總線傳輸協(xié)議訪問雙口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模塊,該模塊主要實現(xiàn)標準VME總線訪問時序到雙口RAM訪問時序的邏輯轉換,VME總線地址譯碼和訪問模式譯碼,以及VME總線到雙口RAM的數據地址線驅動的邏輯控制。另一個模塊多DSP模板向VME主機發(fā)送中斷的中斷請求模塊,該模塊主要完成中斷信號的發(fā)送,主機發(fā)來的中斷認可的處理和向主機發(fā)送中斷狀態(tài)和識別碼。
4.1 普通I/O模塊的設計
普通I/O模塊的程序設計采用VHDL語言狀態(tài)機實現(xiàn),整個過程分為5種狀態(tài):idle(空閑狀態(tài)),selection(選中狀態(tài)),write(寫數據狀態(tài)),read(讀數據狀態(tài))和answer(應答狀態(tài))。
idle狀態(tài)表示本模塊沒有被VME主機訪問;selection狀態(tài)表示地址和模式譯碼已經選中本模塊,主機要訪問雙口RAM的地址空間;write狀態(tài)VME主機正在向雙口RAM寫入數據;read狀態(tài)表示VME主機正在從雙口RAM中讀出數據;answer表示本模塊響應訪問周期向VME主機發(fā)送數據傳輸應答。描述整個過程的狀態(tài)轉移圖如圖2所示。
I/O模塊標準傳輸的過程描述為:idle狀態(tài)時,地址監(jiān)測劃模塊應處于VME總線地址譯碼和訪問模式監(jiān)測狀態(tài),本模塊的訪問模式為A24-D16標準數據訪問模式。當VME主機輸出的地址和訪問模式與本模塊一致時,即輸入地址VA20~VA23為程序所設的地址,AM碼等于3A(H),LWORD為高,VA1為低和AS為低,地址監(jiān)測模塊輸出“從模塊選中信號”,啟動了從模塊訪問,這時模塊進人selection狀態(tài)。
進入selection狀態(tài)后,程序監(jiān)視DS0,1(數據選通信號)和WRITE(讀寫信號)。當DS0,DS1都為低,WRITE為高時,模塊進入read狀態(tài);當DS0,DS1都為低,WRITE為低時,模塊進入write狀態(tài)。
當模塊處于read狀態(tài)時,F(xiàn)PGA置雙口RAM的CER為低使能雙口RAM,OER為低使能數據輸出,RWR為高關閉寫使能,使雙口RAM為數據輸出狀態(tài)。FPGA還要打開總線驅動使能,設置總線驅動方向,使VME地址總線為輸入,數據總線為輸出。
當模塊處于write狀態(tài)時,F(xiàn)PGA置雙口RAM的CER為低使能雙口RAM,RWR為低使能寫信號,OER為高關閉輸出數據使能,使雙口RAM為數據輸入狀態(tài)。FPGA還要打開總線驅動使能,設置總線驅動方向,使VME地址數據線都為輸入。
為了設置“讀應答使能”和“寫應答使能”,模塊在進入read(讀數據狀態(tài))或write(寫數據狀態(tài))后,都使能一個計數器計數。當計數器的計數值為某值時(此計數值可以用來調整讀寫周期的大小,本例中使用32 MHz時鐘時,計數值為1即可),分別置“讀應答使能”和“寫應答使能”有效,模塊進入answer(應答狀態(tài))狀態(tài)。在模塊進入an-swer后,程序置DTACK為低,向主機發(fā)送數據傳送應答。這樣,當主機向雙口RAM寫數據時,通知主機可以釋放總線;當主機從雙口RAM讀數據時,通知主機數據已經穩(wěn)定可以鎖存數據。主機收到DTACK后釋放DS0,DS1為高,AS為高;模塊檢測到DS0,DS1為高,AS為高后,將DTACK置高,關閉雙口RAM使能和VME總線驅動,模塊進入idle(空閑狀態(tài)),一個標準的VME總線傳輸周期結束。
整個過程的仿真時序波形如圖3所示:圖中,“000”表示idle狀態(tài),“001”表示selection狀態(tài),“101”表示read狀態(tài),“011”表示write狀態(tài),“111”表示answer狀態(tài)。
4.2 中斷請求模塊的設計
本模塊設計采用VHDL語言編寫程序,使用進程對中斷產生模塊的功能進行描述,即用進程中if-elsif-else語句來描述這個時序過程。
中斷模塊負責產生標準VME總線中斷,處理VME主機中斷管理模塊發(fā)來的中斷響應。程序設計了一個8位的內部寄存器VINT,用來控制中斷信號的產生,寄存器位VINT1~7對應IRQ1~7,控制VME總線中斷信號的產生和撤銷,VINT0作為發(fā)中斷使能位.當VINT0等于1時,程序檢查VINT1~7,置相應的中斷請求信號線IRQ1~7為低,便向監(jiān)控該信號的VME主機中斷管理模塊發(fā)出了中斷請求。
中斷請求模塊發(fā)出中斷請求后,監(jiān)控輸入信號IACK-IN和A1~3,等待VME主機中斷管理模塊發(fā)來的中斷響應。當檢測到IACKIN為低,即開始中斷號對照,檢測A1~3上的值是否和本模塊發(fā)出的中斷號一致,如果不一致就將驅動IACKOUT輸出菊花鏈為低,如果一致將該中斷的狀態(tài)/識別碼放到VD0~7上,當數據穩(wěn)定后,驅動DTACK為低,通知VME主機中斷管理模塊取走中斷狀態(tài)識別碼,主機進入相應的中斷服務程序.即完成了從模塊VME總線中斷的發(fā)送和響應過程。
5 結 語
用VHDL語言實現(xiàn)了多DSP局部總線到標準VME總線普通I/O模塊和中斷請求模塊的設計,雙口RAM的存儲空間映射到工控機的存儲空間的地址為0XC0410000~0XC0413FFFC。使用32 MHz時鐘時.通信速率町達16 MB/s,能夠滿足雷達信號處理板到終端通信的要求。
評論