白 煊1, 羅運虎1, 鄭永龍, 周勇軍
(1.南京航空航天大學 自動化學院,江蘇 南京 210016;2.中國人民解放軍第5720工廠 安徽省航空設備測控與逆向工程實驗室,安徽 蕪湖 241007)
VME總線概念最早源自于VERSA總線,被命名為VERSAbus-E,之后改名為VME總線。VME總線作為一種歐洲通用模塊背板總線,具有高性能、支持多處理器計算機系統(tǒng)的特點。經過數(shù)十年的發(fā)展,堅固耐用的VME總線已擁有一大批成品制造商,被廣泛應用于軍事、醫(yī)療、交通運輸以及工業(yè)控制系統(tǒng)中。
由于VME總線已被應用在新型飛機上,故它將會被越來越多的人關注。許多學者都對其展開了相關研究。文獻[1]和文獻[2]基于ARM或PowerPC等處理器,實現(xiàn)VME總線控制器功能;文獻[3]闡述了VME接口協(xié)議芯片SCV64的應用概況。文獻[4]采用FPGA設計了DFT1總線數(shù)據采集方案。文獻[5]則利用FPGA實現(xiàn)VME總線控制器功能。文獻[6]和文獻[7]通過FPGA解析了VME總線信號數(shù)據。
目前飛機檢修過程中,分解的VME模塊無法完成單個數(shù)據通信檢測,因此本文在對VME總線通信規(guī)范深入了解的基礎上,基于“SCV64+FPGA”架構,開發(fā)了VME總線從模塊,可與待檢測VME模塊構成數(shù)據通路,從而為航電部件檢修奠定基礎。
所研制的VME總線通信模塊可以在VME主控板發(fā)起傳輸后,接收VME主控板發(fā)出的數(shù)據,并通過LED指示燈顯示當前操作讀寫的數(shù)據內容,其架構如圖1所示。
圖1 模塊硬件結構框圖
① 供電電壓電路設計。所選FPGA為EP3C16Q240C8,其供電電壓主要包括VCCINT、VCCIO和VCCA。其中VCCINT為內核電壓1.2 V;VCCIO為I/O電壓3.3 V;VCCA為PLL的模擬供電電壓2.5 V。
② 復位電路設計。復位電路由MAX706SESA芯片構成。MAX706SESA是一款微處理器監(jiān)控芯片,可監(jiān)控3~5 V電平。比起早期的多個元件電路,其可靠性和精度都大大提高,常常作為上電、下電時復位電平輸出。
③ 配置電路設計。由于Cyclone系列FPGA是SRAM結構,斷電后FPGA的配置信息就會丟失,需要重新使用JTAG接口下載配置信息,或者使用配置器件在重新上電時對FPGA進行自動配置。所采用的FPGA配置芯片為EPCS16。
早期VME總線橋接控制器多采用VIC068A或VIC64。VIC系列的接口器件兼容性差,且只提供8位地址和數(shù)據通道,使用很不方便。SCV64是Tundra公司生產的VME總線接口。其功能靈活,可以為各種VME數(shù)據環(huán)境制定接口。
SCV64利用VME接口在總線間實現(xiàn)解耦傳輸和耦合傳輸。解耦傳輸:VME主模塊向SCV64數(shù)據傳輸結束后即釋放VME總線,之后由SCV64完成數(shù)據向本地總線傳輸;耦合傳輸:VME主模塊向SCV64數(shù)據傳輸結束后不釋放VME總線,在SCV64完成數(shù)據向本地總線傳輸后VME總線才被釋放。
SCV64的VME總線接口需要通過8位轉換器對VME總線的地址、數(shù)據、地址修正信號以及數(shù)據選通信號進行緩沖。8位轉換器的方向由SCV64的VADDROUT、VDATAOUT、VSTRBOUT信號控制。VADDROUT控制地址線A31~A00、LWORD;VDATAOUT控制數(shù)據線VDATA31~VDATA0;VSTRBOUT控制VAS、VDS1、VDS0、VER、VAM5~VAM0。本設計采用SN74LVC4245ADBR作為信號緩沖。
SCV64本地接口提供了總線請求仲裁,若不需要此仲裁過程可以繞過本地總線仲裁。在PWRRST信號的上升沿期間保持KBGACK為低,可以繞過SCV64本地總線仲裁。
可以通過上電時序使SCV64本地接口僅為從器件使用,該選項使SCV64能夠自動初始化所有需要訪問VME總線的內部寄存器。
上電復位信號PWRRST上升沿時,需要保持KDS為高電平,SCV64采樣KFC0和KFC2信號,若KFC0為低電平、KFC2為高電平,則SCV64進入從器件模式。此時SCV64會讀取本地總線數(shù)據端口的輸入值,利用此值配置VMEBAR寄存器。
VMEBAR寄存器中存儲了SCV64作為VME從模塊的基地址與從窗口的范圍大小。VME從窗口映射可通過24位(A24)或32位(A32)地址線訪問,不能通過16位地址訪問。A32窗口基地址可以被設置為128 MB(地址線0~26位)內的任意值,窗口范圍在4~128 KB之,A24窗口可以被設置為小于16 MB的512 KB倍數(shù)大小。在本地總線上SCV64驅動低位地址線匹配VME從地址空間。而高于可配置從空間大小的地址線KADDR31~KADDR27將不被驅動,其余未使用的地址線被驅動為低電平。當VME主設備發(fā)起的傳輸?shù)刂穼儆谠搹拇翱诜秶鷷r,則判定對該從模塊進行傳輸。SCV64將VME從窗口地址映射至本地總線,本地總線起始地址0x0對應VME從模塊基地址,本地總線終止地址為從窗口的范圍大小。
為配置SCV64為從模式并繞開本地仲裁,本設計通過4.7 kΩ電阻上拉信號KFC1、KFC2、KDS、KAS、KBERR至5 V;通過4.7 kΩ電阻下拉KFC0、KBGACK至地;短接本地總線申請信號KBRQ與授權KBGR;通過10 kΩ電阻上拉BG3IN*信號至5 V。
通過NLSX4373DR2G與SN74LVC4245ADBR將SCV64的5 V電平信號轉換為3.3 V與FPGA連接。
圖2為軟件整體工作狀態(tài)機。S0為上電初始化狀態(tài),S1為MODE寄存器配置狀態(tài),S2為等待數(shù)據傳輸狀態(tài),S3為從模塊數(shù)據傳輸狀態(tài)。
圖2 從板程序狀態(tài)機
VME系統(tǒng)主器件通過基地址以及以基地址起始的從空間范圍來區(qū)別操作各個系統(tǒng)中的模塊,圖2中S0狀態(tài)為上電初始化狀態(tài),在此狀態(tài)上電復位信號PWRRST由有效變?yōu)闊o效出現(xiàn)上升沿,此刻FPGA將在SCV64的本地端口數(shù)據信號線(KDATA)上輸出寄存器VMEBAR值,并自動配置MODE寄存器中的從窗口使能位。本設計中配置VME從空間地址寬度為32位,大小為1 MB,基地址為0x08000000。將VME空間全部映射至從模塊32位LED數(shù)據,對該VME地址空間讀寫全部反映至32位LED數(shù)據。
VME讀取從設備SCV64中數(shù)據必須為耦合傳輸;VME向從設備SCV64寫數(shù)據可以為耦合傳輸也可為解耦傳輸。SCV64的MODE寄存器中的RXATOM位和TXATOM位默認讀寫FIFO的模式皆為解耦傳輸,需要通過圖2中S1狀態(tài)利用本地接口訪問SCV64的MODE寄存器進行修改。MODE寄存器地址為:32′h0000003C。這里不改變該寄存器其他位默認值,所以寫入寄存器值為:32′h00001C01。
圖3為MODE寄存器配置流程,首先FPGA驅動KWR信號為低電平表示寫入數(shù)據,驅動KADDR、KDATA為地址和數(shù)據;其次SCV64SEL片選信號輸出低電平,表示訪問SCV64內部寄存器;之后KAS地址有效信號輸出低電平,KDS數(shù)據有效信號輸出低電平;最后等待KDSACK信號低電平有效,表示寄存器寫入成功。圖4為MODE寄存器配置仿真。
修改完成后若SCV64讀取VME總線傳輸?shù)刂吩谧约旱膹拇翱诜秶鷥?,則從模塊開啟傳輸過程。存儲片選信號RAMSEL低電平有效,F(xiàn)PGA程序進入圖2中S3狀態(tài)。圖5為從模塊傳輸邏輯流程。通過SCV64本地接口信號KSIZE讀取數(shù)據寬度、KWR信號讀取數(shù)據傳輸方向。當KAS信號低電平有效時,可讀取KADDR信號在VME總線映射至本地總線的地址。當KDS*低電平有效時,若為寫入數(shù)據可通過KDATA讀取數(shù)據,若為讀取數(shù)據可通過KDATA發(fā)送數(shù)據。在數(shù)據傳輸完成后,本地總線通過低電平有效KDSACK信號終止傳輸。圖6、圖7分別為從模塊讀、寫傳輸仿真,讀傳輸中,KDATAr默認值為32位高電平(仿真顯示256進制數(shù):255 255 255 255),讀出數(shù)據位32位低電平;寫傳輸中,KDATAw默認值為32位低電平(仿真顯示256進制數(shù):0 0 0 0),讀出數(shù)據位32位高電平。
圖4 MODE寄存器配置仿真
運用MVME3100作為VME總線主控模塊,運行VxWorks操作系統(tǒng),通過開發(fā)主機對MVME3100進行控制??赏ㄟ^主機利用VxWorks開發(fā)工具Tornado的shell控制MVME3100發(fā)起傳輸。在39E系列VME測試開發(fā)平臺機箱內進行測試。圖8為VME總線從模塊正面,圖9為VME總線從模塊背面。圖10為模塊測試框架。
① MVME3100單板計算機。本實驗運用MVME3100作為VME總線主控模塊,發(fā)起針對VME總線從模塊的數(shù)據傳輸。MVME3100單板計算機采用了MCP8540處理器,不僅僅提供了更快的VME總線傳輸速率,內存子系統(tǒng)、本地總線和I/O子系統(tǒng)的平衡性也更好。
圖5 從模塊傳輸邏輯流程
圖6 從模塊讀傳輸仿真
圖7 從模塊寫傳輸仿真
② 軟件條件。本實驗利用Tornado開發(fā)環(huán)境中的shell工具對MVME3100進行命令操作。Tornado是WRS公司推出的一套實時操作系統(tǒng)開發(fā)環(huán)境,界面風格類似Microsoft Visual C,但是較之后者提供了更豐富的調試、仿真環(huán)境和工具。其中的shell工具允許下載應用程序模塊,調用VxWorks及應用程序模塊的子程序。shell雖然運行在開發(fā)主機上,但它允許對目標機發(fā)起任務,讀出或寫入目標設備。
圖8 VME從模塊正面
圖10 模塊測試框架
① 通過網口與串口連接開發(fā)主機與MVME3100。在開發(fā)主機中運行FPT通信協(xié)議,啟動MVME3100。
② 在開發(fā)主機中打開Tornado啟動目標機MVME3100,即可通過shell對MVME3100進行操作。
③ 調用函數(shù)“sysTempeWinShow”得到MVME3100中PCI地址窗口與VME地址窗口間的映射關系。
地址空間Outbound window0為系統(tǒng)為操作mailbox寄存器預留的空間,不可通過其訪問VME地址空間。所以通過地址空間Outbound window1讀寫VME地址空間數(shù)據。
空間Outbound window1:
PCI起始地址:00000000_80000000;PCI終止地址:00000000_800fffff
VME起始地址:00000000_08000000;VME終止地址:00000000_080fffff
④ 輸入命令“d+PCI地址”(d 0x80040000)讀取棧地址空間Outbound window1中數(shù)據。
⑤ 輸入命令“m+PCI地址”(m 0x80040000)改寫Outbound window1中數(shù)據,即向對應VME空間地址發(fā)送數(shù)據。
通過MVME3100向從模塊LED發(fā)送數(shù)據0xffff0000。圖11為Tornado下shell命令讀取并寫入內存空間地址0x80040000,原數(shù)據為0xffffffff。再通過讀取內存空間地址0x80040004讀取LED數(shù)據。圖12為LED顯示寫入從模塊數(shù)據。從圖中不難看出從模塊數(shù)據讀寫的有效性。
圖11 MVME3100發(fā)起讀寫數(shù)據0xffff0000
① 為保證信號穩(wěn)定,SCV64需要通過8位轉換器對VME總線的地址、數(shù)據、地址修正信號以及數(shù)據選通信號進行緩沖。
② 為防止SCV64在VME總線系統(tǒng)中被配置為主控模式,BG3IN*信號不與總線相連,而應通過10 kΩ電阻上拉至VDD;
③ 為保證SCV64正常工作,在上電復位PWRRST上升沿期間,要KDS保持高電平,因此KDS管腳需要通過4.7 kΩ電阻上拉至VDD。
④ 為保證菊花鏈通暢,需要短接總線信號BG3IN*與BG3OUT*。
① 為保證軟件運行過程中,SCV64保持硬件配置,上電復位PWRRST僅在上電復位時有效一次,之后的任何系統(tǒng)復位都不應造成PWRRST有效,PWRRST復位信號復位SCV64中全部硬件配置。
② 在不同操作中,F(xiàn)PGA與SCV64間的信號傳輸方向不同。為使傳輸正確,應注意SN74LVC4245ADBR的方向控制信號的切換。
③ 訪問SCV64內部寄存器時,需選通SCV64SEL片選信號。
④ 由于SCV64硬件模式在軟件運行中沒有更改,程序上電初始化和寄存器配置狀態(tài),僅在系統(tǒng)整體復位時運行。
為滿足后續(xù)新機VME總線模塊電路板深修的需要,針對目前VME總線的研究現(xiàn)狀,基于SCV64這款VME接口協(xié)議芯片,研制一塊具有接收VME總線信號讀寫操作的從模塊。所研制的VME總線從模塊為后續(xù)豐富VME總線數(shù)據功能系統(tǒng)的搭建和完善打下了堅實基礎。