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