VME總線接口芯片SCV64原理及應(yīng)用
關(guān)鍵詞:VME總線;總線接口;SCV64
1 引言
VME總線即Versa Module Eurocard Bus,自1981年由Motorola公司同Signetics/Philips、Mostek以及Thompson CSF等公司推出之后,幾乎在所有的工業(yè)領(lǐng)域中都得到了廣泛的應(yīng)用。它具有良好的物理特性、嚴(yán)格的技術(shù)規(guī)范和與32位微處理器方便靈活的接口,用戶可根據(jù)VME總線標(biāo)準(zhǔn)按需求自行開發(fā)應(yīng)用系統(tǒng)。實際應(yīng)用中,系統(tǒng)往往不僅需要以從者(Slave)接受來自VME總線的訪問,還需要以主控者(Master)訪問VME總線。因此,設(shè)計時就必須考慮到系統(tǒng)與VME總線的接口問題。為了縮短設(shè)計周期,設(shè)計者一般都選用專業(yè)公司的現(xiàn)成ASIC。早期開發(fā)的VME總線系統(tǒng)多采用Cypress公司的VIC068A或VIC64作為橋接控制器件。但是,VlCx系列接口器件的局部總線是為Motorola公司的68K系列處理器設(shè)計的,對于與68K處理器總線不兼容的其他類型處理器(如x86系列、PowerPC系列等)來說,使用VICx系列器件,需要的外部轉(zhuǎn)換邏輯較為復(fù)雜。而且,VICx系列器件自身只提供8位地址和數(shù)據(jù)通道,要構(gòu)成8位以上的總線接口,則需要鎖存器件或Cypress公司其他接口電路的配合。比如要構(gòu)成32位VME總線接口,就需要一片VIC64和3片CY7C964相配合組成總線接口。這樣,邏輯設(shè)計復(fù)雜,對PCB板空間資源占用也較大。所以,VME總線的開發(fā)者不推薦在未來的系統(tǒng)設(shè)計中以VICx系列器件作為接口解決方案目。Tundra公司的SCV64是一種通用的單芯片總線橋控制器,片上具有高速的VME64數(shù)據(jù)通道、VME總線控制器、中斷控制器、DMA控制器等功能模塊,支持MC68K系列、x86系列以及TMS320CxO系列等多種處理器。相比VICx系列,該器件集成度高,外部一般僅需地址譯碼邏輯即可,因此,可以方便地用于開發(fā)VME總線接口電路。
2 SCV64功能原理及其特性
SCV64是單片VME總線至本地處理器的互連器件,集成了VME總線系統(tǒng)控制器、中斷控制器、DMA控制器等功能,具有眾多功能模式供用戶選擇。用戶可以根據(jù)自己的需求來“定制”不同應(yīng)用環(huán)境下的VME總線接口。其功能框圖如圖1所示。
由圖l可知,SCV64的功能塊可分為本地總線接口、數(shù)據(jù)通路以及VME總線接口三部分。其設(shè)計的最大獨特性是數(shù)據(jù)通路采用后置寫FIFO結(jié)構(gòu)。由于使用了接收FIFO以及發(fā)送FIFO在本地總線和VME總線之間傳輸數(shù)據(jù),即用非耦合(Decouple)方式傳輸,可彌補兩個總線性能的差異,從而使得每個總線以各自最佳速率運行,互不牽制。
VME總線系統(tǒng)必須有且只能有一個總線系統(tǒng)控制器,必須位于背板的第1槽。SCV64具有插槽1自動識別的能力,可自動使能總線系統(tǒng)控制器功能,完成VME總線仲裁、菊花鏈驅(qū)動等功能。由于系統(tǒng)加電后,除第l槽外(第l槽的BG3IN*信號不會與任何信號連接),其余插槽的BG3IN*信號均被前邊插槽所傳遞下來的BG30UT*菊花鏈信號置高,因此,在復(fù)位信號釋放后的500 ns內(nèi),若SCV64檢測到BG3IN*為低,即說明本板所處插槽為第1槽,須啟用總線系統(tǒng)控制器功能;若檢測到BG3IN+為高,則此功能被禁止。SCV64的這種設(shè)計,可擺脫原來易出錯的人工硬跳線方法。
與VICx系列器件相比,SCV64另外一個優(yōu)勢是其內(nèi)部有一個本地總線仲裁器(可選)和VME總線地址譯碼器,這樣就省去了外部邏輯的設(shè)計,方便了用戶。另外,它還提供一種總線隔離(Bus lsola-tion-BI)工作模式,通過若干信號進行配置。進入BI模式后,SCV64會將本地系統(tǒng)與VME總線隔離,退出BI模式則又重新恢復(fù)連接。BI模式可用于熱備份系統(tǒng)、系統(tǒng)診斷或例行維護,也可在本地板失效后將其隔離而不致影響其他插槽的設(shè)備。
3 SCV64的數(shù)據(jù)傳輸
3.1 主周期傳輸
SCV64的耦合模式傳輸過程與VICx系列器件基本相同。在非耦合模式下,當(dāng)本地處理器需要發(fā)起一次VME總線的主傳輸周期時,先發(fā)出有效地址和數(shù)據(jù)等信息,地址譯碼邏輯據(jù)此驅(qū)動SCV64的VMEOUT和KAS信號,通知SCV64,CPU欲訪問VME總線。檢測到KDS有效后,SCV64將本地總線上的數(shù)據(jù)鎖存到發(fā)送FIF0(TXFIFO),記錄此周期相關(guān)信息并使其進入TXFIFO的內(nèi)部隊列,隨后驅(qū)動KDSACKx信號,通知本地處理器結(jié)束本地周期,釋放本地總線。此過程時序如圖2所示。
回復(fù)本地處理器后,SCV64根據(jù)相應(yīng)寄存器的配置驅(qū)動某級BRi*信號請求VME總線。經(jīng)系統(tǒng)控制器仲裁,若收到了同級BGilN*菊花鏈信號,SCV64就將其截止,不再往下傳遞,同時驅(qū)動BB-SY*信號,占用VME總線,依據(jù)VME總線時序規(guī)范將TXFIFO隊列中的內(nèi)容發(fā)出。
TXFIFO的深度為15級,字長72位。其中的每條72位記錄(72-bit entry)由控制、地址、數(shù)據(jù)三部分組成。這三部分的信息分別讀自SCV64的TX-FIFO控制寄存器TXCTL(8位有效位)、地址寄存器TXADDR(32位)和數(shù)據(jù)寄存器TXDATA(32位)。若TXFIFO已滿,則不會再接受寫周期,直到某條記錄發(fā)往VME總線后讓出了可用空間。
3.2 從周期傳輸
SCV64的VMEBAR寄存器中存儲的是其VME從地址映射范圍信息。其內(nèi)部地址譯碼器“監(jiān)聽”高5位VME地址VADDR[3l-27],若落入映射范圍,則SCV64接受此次從傳輸。在非耦合模式下,SCV64將地址、數(shù)據(jù)以及控制信息鎖存入71位字長的接收FIFO-RXFIFO,之后驅(qū)動DTACK*,回復(fù)VME總線主設(shè)備,通知其傳輸結(jié)束。
隨后,SCV64請求本地總線,取得本地總線所有權(quán)后,通過單周期或突發(fā)(burst)模式將RXFIFO中的一條記錄發(fā)往其指向的本地地址。SCV64自帶的本地總線仲裁器具有本地總線仲裁能力,但是此仲裁器的仲裁機制較為固定,用戶可通過在復(fù)位信號釋放時拉低KBGACK信號來“回避”此功能,用戶可自行設(shè)計外部仲裁邏輯。SCV64生成本地周期的時序如圖3所示。
3.3 SCV64寄存器訪問
在系統(tǒng)初始化、讀取狀態(tài)信息或者寫控制位時,需要訪問SCV64的內(nèi)部寄存器。SCV64具有45個32位寄存器(通過本地低8位地址編碼),既可通過本地總線訪問,也可通過VME總線訪問。
本地CPU對SCV64寄存器的訪問過程與其需要訪問VME總線時對SCV64的操作基本類似,只不過本地地址譯碼邏輯驅(qū)動的是SCV64的片選信號SCV64SEI,而不是VME總線請求信號VMEOUT。當(dāng)SCV64寄存器被來自VME總線的訪問時,SCV64將其自身映射為本地設(shè)備,請求本地總線,生成一次本地周期。此時,需要本地地址譯碼邏輯驅(qū)動SCV64EI信號,將該本地周期指向SCV64寄存器。有關(guān)SCV64寄存器訪問的詳細(xì)內(nèi)容,可參照其用戶使用手冊。
4 SCV64的中斷處理
根據(jù)VINT寄存器的設(shè)置,SCV64的VME總線中斷請求器(VME Bus Interrupter)可生成7級VME總線中斷(IRQl*-IRQ7*)的任一級。檢測到對應(yīng)本級中斷的IACK周期時,SCV64將在數(shù)據(jù)線VDA-TA07-VDATA00上提供8位的中斷向量,同時驅(qū)動DTACK*信號回復(fù)系統(tǒng)控制器。
本地總線中斷請求器(Local Bus Interrupter)通過KIPL2-KIPL0信號向CPU生成中斷,編碼7級本地CPU中斷。中斷源撤銷中斷的同時SCV64將此組信號置為無效(111)。處理過程中若發(fā)生更高級別的中斷,KIPL2-KIPL0立即改變?yōu)樾轮袛嗉墑e的編碼。
中斷處理器模塊將中斷源分為3組:第七級中斷(L7IMEM、L7INMI、L7LACF)、一般本地中斷、VME總線中斷。其中第七級中斷默認(rèn)為最高級別的CPU中斷,其次是系統(tǒng)錯誤中斷(如SYSFAIL+)和一般本地中斷(LIRQ5-0),而VME總線中斷(IRQ7*-IRQ1*)優(yōu)先級最低。中斷源的中斷請求通過中斷處理器轉(zhuǎn)發(fā)給CPU,CPU響應(yīng)中斷后,要向SCV64發(fā)出中斷確認(rèn)周期。此周期可通過外部譯碼邏輯譯碼,也可通過SCV64內(nèi)部譯碼。這兩種情況都會驅(qū)動SCV64的KIACK信號,SCV64就對中斷源發(fā)出一個IACK周期,同時驅(qū)動KAVEC,通知CPU中斷確認(rèn)結(jié)束。
5 PowerPC與VME總線橋接實現(xiàn)
PowerPC系列微處理器是業(yè)界公認(rèn)的高性能、低功耗32位RISC處理器,可以進行高性能計算和圖像處理,被美國國家航空和宇宙航行局(NASA)列為航天設(shè)備的標(biāo)準(zhǔn)處理器,而航天電子設(shè)備應(yīng)用最廣泛的總線就是VME總線。國內(nèi)該方面的研究緊隨其后,已經(jīng)有了PowerPC 603e的國產(chǎn)化產(chǎn)品,但是對其與VME總線的接口問題研究還不多。事實上,以603e為例,要將其通過SCV64接入VME系統(tǒng),主要涉及兩個問題:一是電平轉(zhuǎn)換的問題,CPU為3.3 V而接口器件為5 V;二是本地接口控制信號功能轉(zhuǎn)換的問題,CPU總線是60x總線,而SCV64的本地接口采用680x0協(xié)議,因此需要外部邏輯實現(xiàn)功能轉(zhuǎn)換。
第一個問題可通過固定電平變換模塊來解決。第二個問題則歸結(jié)為SCV64控制功能的實現(xiàn),主要包括復(fù)位功能的實現(xiàn)、系統(tǒng)初始化、映射譯碼功能、主從傳輸?shù)膶崿F(xiàn)、中斷功能實現(xiàn)、寄存器訪問、仲裁功能、塊(DMA)傳輸實現(xiàn)等,可借助FPGA或PLD器件來完成。
選用Altera公司的EPM9560ARI208-10型CPLD實現(xiàn)接口轉(zhuǎn)換和控制邏輯,如圖4所示。復(fù)位控制模塊接收來自電源監(jiān)測電路(MAX706)的上電復(fù)位或SCV64發(fā)出的復(fù)位信號,控制SCV64以及其他轉(zhuǎn)換邏輯的復(fù)位,并完成PowerPC的工作模式選擇;本地仲裁模塊用于解決CPU與SCV64之間的本地總線競爭;地址譯碼模塊主要是根據(jù)CPU的有效地址,發(fā)送適當(dāng)?shù)钠骷蛲庠O(shè)的選通信號;總線周期控制邏輯完成同步總線協(xié)議與異步協(xié)議的時序間匹配,向CPU(主周期)或SCV64(從周期)以及其他控制邏輯發(fā)出相應(yīng)的總線周期終止信號(或插入等待周期),以開始下一周期或者做出相應(yīng)的操作處理錯誤;PowerPC僅有一個外部中斷輸入信號INT接受外部中斷,因此需要中斷控制邏輯來接受和轉(zhuǎn)發(fā)中斷矢量,對中斷信號進行適配。
上述設(shè)計的核心部分為仲裁模塊和周期控制模塊,這兩個模塊可用狀態(tài)機實現(xiàn),仲裁模塊的狀態(tài)機示意圖如圖5所示,依據(jù)狀態(tài)圖,可以很容易地寫出VHDL代碼。
SCV64接往VME總線的信號中有三組需要通過外部緩沖器件驅(qū)動后才能接入VME總線,分別由VADDROUT、VDATAOUT和VSTRBOUT信號控制緩沖器件的方向:A31-A00和VLWORD分別為地址和字長信號;VDATA31-VDATA00為32位數(shù)據(jù)信號;VAS,VDS1,VDS0,VWR以及VAM5-VAM0分別為VME總線地址、數(shù)據(jù)選通信號、讀/寫信號和地址修改碼。其他VME接口信號均可直接接入總線背板。
6 結(jié)束語
SCV64提供了全面的VME總線至本地總線接口,采用CPLD或FPGA器件實現(xiàn)少量外部邏輯就可實現(xiàn)其與非MC68K系列CPU的連接,但需要對SCV64的工作過程比較了解。本文介紹了SCV64的數(shù)據(jù)傳輸和中斷處理過程,并給出了外部邏輯的設(shè)計思想,用戶據(jù)此可自行開發(fā)VME總線應(yīng)用系統(tǒng)。
評論