邵文建,李 超
(船舶重工集團(tuán)公司 723所,揚(yáng)州 225001)
許多新的雷達(dá)體制和雷達(dá)技術(shù)的出現(xiàn),對雷達(dá)信號處理的運(yùn)算速度和實(shí)時(shí)性提出了很高的要求,同時(shí)對接口總線的傳輸速度提出了更高的要求。因此,設(shè)計(jì)一種高速傳輸?shù)慕涌诳偩€對信號處理有著重要的現(xiàn)實(shí)意義。
虛擬機(jī)器環(huán)境(VME)總線具有高速異步傳輸、支持多種尋址方式、多種數(shù)據(jù)寬度、能夠獨(dú)立支持至少32位地址和32位數(shù)據(jù)總線、支持集中式和分布式中斷的優(yōu)點(diǎn),最高傳輸速度可達(dá) 500 Mb/s。VME總線是目前應(yīng)用最為廣泛、獲得各方支持最多的并行標(biāo)準(zhǔn)總線。由于VME具有總線眾多的功能、強(qiáng)大的兼容性、并行性和高可靠性,因此在圖像處理、軍事通信、雷達(dá)信號處理等眾多領(lǐng)域有廣泛應(yīng)用。本文采用Altera公司高密度的Stratix系列現(xiàn)場可編程門陣列(FPGA)來實(shí)現(xiàn)VME總線接口,對VME總線接口設(shè)計(jì)問題進(jìn)行了深入研究。
VME總線是由Motorola等幾大公司在VERSA總線和歐式卡基礎(chǔ)上提出的。VME的數(shù)據(jù)傳輸機(jī)制是異步的,有多個(gè)總線周期,地址寬度是16、24 、32、40 或 64 位,數(shù)據(jù)線路的寬度是 8、16、24 、32、64位,系統(tǒng)可以動(dòng)態(tài)地選擇地址和數(shù)據(jù)線的寬度。此外還有 UnalignedData傳輸能力、誤差糾正能力和自我診斷能力,用戶可以定義I/O端口。
VME總線的功能構(gòu)架如圖1所示。各個(gè)功能模塊雖然各有分工,但是要想集體配合,還需要總線的支持。主設(shè)備用于啟動(dòng)數(shù)據(jù)傳輸總線周期,以便和從設(shè)備之間傳遞數(shù)據(jù)。從設(shè)備用于檢測主設(shè)備啟動(dòng)的數(shù)據(jù)傳輸總線周期,當(dāng)數(shù)據(jù)傳輸總線周期指定由它參與時(shí),就和主設(shè)備傳遞數(shù)據(jù)。
VME總線主要由數(shù)據(jù)傳輸總線、仲裁總線、優(yōu)先級中斷總線和公用總線組成。數(shù)據(jù)傳輸總線是一個(gè)高速異步平行數(shù)據(jù)傳輸總線,能傳輸數(shù)據(jù)和地址信號;仲裁總線是為確保在特定的時(shí)間內(nèi)只有一個(gè)模塊占用數(shù)據(jù)傳輸總線而設(shè)定的,工作在其上的請求模塊和仲裁模塊將負(fù)責(zé)協(xié)調(diào)各模塊發(fā)出的指令;優(yōu)先權(quán)中斷總線是處理各模塊中斷請求的總線,各種中斷請求在VME中被分成了7個(gè)等級,根據(jù)等級高低,依次對信號線進(jìn)行中斷工作;公用總線負(fù)責(zé)系統(tǒng)的一些基本工作,包括對時(shí)鐘的控制、初始化、錯(cuò)誤檢測等任務(wù)。
圖1 VME總線系統(tǒng)的功能結(jié)構(gòu)圖
數(shù)據(jù)傳輸總線分為3類:尋址信號線、數(shù)據(jù)信號線和控制信號線。
(1)地址信號線:A[31..1]、AM[5..0]、DS1、DS0、LWORD。AM0~AM5規(guī)定所用地址線的數(shù)目。地址線寬度選擇真值表如表1所示。DS1、DS0數(shù)據(jù)選通信號由主設(shè)備驅(qū)動(dòng),用來選擇數(shù)據(jù)傳輸?shù)淖止?jié)地址單元。
表1 地址線寬度選擇真值表
(2)數(shù)據(jù)信號線:D[31..0]。由于VME總線的數(shù)據(jù)線寬度為32位,所以每4個(gè)字節(jié)單元組合可以在一個(gè)數(shù)據(jù)傳輸周期內(nèi)被完全訪問。主設(shè)備通過地址信號線A[31..2]指示哪4個(gè)字節(jié)單元組合被尋址,DS1、DS0、A1、LWORD 將指示該4個(gè)字節(jié)單元組合中的哪些字節(jié)被訪問。
(3)控制信號線:AS、DS1、DS0、BERR、DTACK、WRITE。AS地址選通信號由主設(shè)備驅(qū)動(dòng),通知從設(shè)備地址穩(wěn)定,可以啟用。DTACK為從設(shè)備應(yīng)答信號,在寫周期從設(shè)備驅(qū)動(dòng)DTACK為低表示它已經(jīng)成功接收了寫入的數(shù)據(jù);在讀周期從設(shè)備驅(qū)動(dòng)DTACK為低表示它已經(jīng)將數(shù)據(jù)放上了數(shù)據(jù)線。BRRR總線錯(cuò)誤信號用于防止總線操作超時(shí)和死鎖。WRITE讀寫信號由主設(shè)備驅(qū)動(dòng),指示數(shù)據(jù)傳輸方向。
優(yōu)先級中斷總線用于請求和響應(yīng)中斷的信號。監(jiān)視中斷請求線(IRQl~I(xiàn)RQ7),其中IRQ7優(yōu)先權(quán)最高,IACK中斷響應(yīng)信號線。中斷響應(yīng)采用菊花鏈方式,IACKIN、IACKOUT為中斷響應(yīng)菊花鏈信號。中斷響應(yīng)信號IACK與第一槽的中斷響應(yīng)菊花鏈輸入IACKIN連接在一起。當(dāng)中斷控制器拉低IACK信號時(shí),將引起中斷響應(yīng)菊花鏈信號從第一槽逐級往下傳遞。沒有發(fā)生中斷請求槽的中斷請求器將中斷響應(yīng)信號往下傳遞(菊花鏈驅(qū)動(dòng)器驅(qū)動(dòng)IACKOUT輸出為低)。發(fā)生中斷請求槽的中斷請求器在收到中斷響應(yīng)信號后,將其捕獲并停止往下傳遞(菊花鏈驅(qū)動(dòng)器驅(qū)動(dòng)IACKOUT的輸出為高)。
本設(shè)計(jì)采用Altera公司Stratix系列的FPGA器件EP1S10F672I7來實(shí)現(xiàn)VME總線接口電路的設(shè)計(jì)。該芯片具有10 570個(gè)邏輯單元,920 448位的隨機(jī)存儲器(RAM)存儲空間和高性能I/O引腳??梢娫揊PGA的資源完全能夠滿足設(shè)計(jì)要求。FPGA中的VME總線接口邏輯主要有兩大功能模塊組成:一個(gè)是VME主機(jī)對寄存器讀寫訪問模塊,該模塊的程序主要是寄存器讀寫信號和總線響應(yīng)信號的設(shè)計(jì);另一個(gè)是中斷的請求響應(yīng)模塊,該模塊主要完成中斷信號的發(fā)送,并中斷控制器在收到中斷請求后,通過中斷響應(yīng)周期進(jìn)行中斷響應(yīng)。VME總線接口邏輯框圖如圖2所示。
圖2 VM E總線接口邏輯框圖
VME從設(shè)備的寄存器單次讀寫通過地址譯碼、數(shù)據(jù)鎖存來完成。要完成32位數(shù)據(jù)的寫操作,首先設(shè)IACK為1指示非中斷響應(yīng)周期,WRITE信號設(shè)為0時(shí)指示寫狀態(tài)。等待上一從設(shè)備釋放數(shù)據(jù)總線(即 DTACK、BERR信號線都為 1)時(shí),主設(shè)備就可以將數(shù)據(jù)放到數(shù)據(jù)線上了,同時(shí)驅(qū)動(dòng)DS0=0,DS1=0。從設(shè)備鎖存數(shù)據(jù),寫入指定單元,并給出DTACK=0信號,指示數(shù)據(jù)已經(jīng)寫入成功。主設(shè)備檢測到DTACK信號為0時(shí),就釋放數(shù)據(jù)線、地址線的控制權(quán)。程序采用VHDL語言狀態(tài)機(jī)實(shí)現(xiàn),整個(gè)過程分為6種狀態(tài):
狀態(tài)1:驅(qū)動(dòng)數(shù)據(jù)總線、地址總線,WRITE=0,IACK=1,LWORD=0,AM=0A。
狀態(tài)2:驅(qū)動(dòng)AS=0,使得數(shù)據(jù)總線上的數(shù)據(jù)有效。
狀態(tài)3:驅(qū)動(dòng)DS0=0,DS1=0。
狀態(tài)4:等待回應(yīng)信號DTACK,如果從設(shè)備應(yīng)答,即DTACK=0,轉(zhuǎn)入狀態(tài)5,否則等待。
狀態(tài)5:空等待1個(gè)周期。
狀態(tài)6:驅(qū)動(dòng)AS=1,DS0=1,DS1=1。
寫寄存器仿真結(jié)果如圖3所示。讀取寄存器的值與寫類似,只是根據(jù)讀周期時(shí)序關(guān)系,各狀態(tài)不再詳細(xì)介紹。
圖3 寫寄存器仿真結(jié)果
中斷請求模塊發(fā)出中斷請求后,中斷控制器通過總線請求器獲得數(shù)據(jù)傳輸總線使用權(quán),拉低中斷響應(yīng)信號IACK,啟動(dòng)中斷響應(yīng)周期。中斷功能使用VME中斷IRQ3,中斷時(shí)采用向量0×35進(jìn)行應(yīng)答。支持一個(gè)VME中斷源對應(yīng)多個(gè)局部中斷源,局部中斷源通過板內(nèi)寄存器進(jìn)行進(jìn)一步判別。在中斷響應(yīng)周期中,監(jiān)控輸入信號IACKIN和A1~A3,等待VME主機(jī)中斷管理模塊發(fā)來的中斷響應(yīng)。當(dāng)檢測到IACKIN為低,說明中斷控制器在進(jìn)行中斷響應(yīng)。此時(shí)檢測A1~A3上的值是否和中斷發(fā)生器的中斷請求級別一致,如果不一致可能中斷發(fā)生器沒有產(chǎn)生中斷,或者當(dāng)前響應(yīng)的中斷級別與中斷發(fā)生器的中斷請求級別不一致,那么就將驅(qū)動(dòng)IACKOUT輸出菊花鏈為低,如果一致就通知VME主機(jī)中斷管理讀取模塊取走中斷狀態(tài)識別碼,主機(jī)進(jìn)入相應(yīng)的中斷服務(wù)程序(即完成了從模塊VME總線中斷的發(fā)送和響應(yīng)過程)。根據(jù)VME總線中斷響應(yīng)時(shí)序關(guān)系,由程序采用狀態(tài)機(jī)實(shí)現(xiàn),分為 7個(gè)狀態(tài)。
如果中斷請求信號IRQ3有效,進(jìn)入狀態(tài)1。
狀態(tài)1:驅(qū)動(dòng)A[3∶1]=3(使中斷請求級別與響應(yīng)一致),IACK=0。
狀態(tài)2:驅(qū)動(dòng)AS=0,使得數(shù)據(jù)總線上的數(shù)據(jù)有效。
狀態(tài)3:驅(qū)動(dòng)DS0=0,DS1=0。
狀態(tài)4:等待回應(yīng)信號DTACK,如果從設(shè)備應(yīng)答,即DTACK=0,轉(zhuǎn)入狀態(tài) 5,否則等待。
狀態(tài)5:DTACK=0,表明從設(shè)備已將中斷向量放在數(shù)據(jù)總線上。
狀態(tài)6:空等待1個(gè)周期。
狀態(tài)7:驅(qū)動(dòng)DS0=1,DS1=1,AS=1。
中斷請求模塊產(chǎn)生中斷請求信號,請求級別為0x3,與中斷響應(yīng)級別一致,中斷狀態(tài)/識別字0x35在中斷響應(yīng)菊花鏈輸入信號IACKIN有效后輸出。中斷響應(yīng)菊花鏈信號沒有繼續(xù)往下傳遞,IACKOUT信號保持為高。仿真結(jié)果如圖4所示。
圖4 中斷響應(yīng)級別與請求級別一致情況的仿真結(jié)果
本文利用Altera公司的Stratix系列FPGA實(shí)現(xiàn)了一種VME總線接口電路,實(shí)際經(jīng)驗(yàn)表明該設(shè)計(jì)可以實(shí)現(xiàn)高速的數(shù)據(jù)傳輸。這種設(shè)計(jì)具有兼容性強(qiáng)、并行性好、可靠性高和能高速傳輸?shù)膬?yōu)點(diǎn),為信號處理系統(tǒng)的設(shè)計(jì)提供了一種更好的方案選擇。
[1]項(xiàng)碧波.使用FPGA實(shí)現(xiàn)VME總線接口.聲學(xué)與電子工程[J],2000(3):40-44.
[2]劉顯慶,劉仁普.微機(jī)總線規(guī)范——VESA PCI EISA VM E[M].北京:機(jī)械工業(yè)出版社,1995.
[3]崔葛瑾.基于FPGA的數(shù)字電路系統(tǒng)設(shè)計(jì)[M].西安:西安電子科技大學(xué),2008.
[4]周平.利用PLD設(shè)計(jì) VM E總線接口[J].計(jì)算機(jī)自動(dòng)測量與控制,1996(2):47-49.