圖2 VIC068A控制信號與外部鎖存/緩沖器的典型連接
3.2從模塊標(biāo)準(zhǔn)傳輸操作
與從模塊操作和配置有關(guān)的VIC068A寄存器有:SS0CR0(bit0-5)、SS0CR1、SS1CR0、SS1CR1、LBTR、AMSR。信號SLSEL1和SLSEL0是由片外的VMEbus地址譯碼電路輸出的,當(dāng)VIC068A檢測到在1個(gè)SLSELi為低的有效電平時(shí),而且AS有效(另一個(gè)主模塊發(fā)出),當(dāng)前周期的Dsi有效,DTACK或BERR撤走,VIC068A就檢查A32/A24/A16和傳輸類型,如果SSiCR0被配置了,并且允許進(jìn)行AMcodes指明的從模塊訪問,則開始從模塊訪問,立刻驅(qū)動(dòng)LBR=0申請局部總線。若VIC068A的配置寄存器不允許特定的訪問(由AMcodes指示),則忽略VMEbus的請求,不會(huì)產(chǎn)生LBR。
VIC068A發(fā)出LBR后,等待局部總線確認(rèn),在收到LBG后,就等待3T+tpd的時(shí)間,然后使能局部總線驅(qū)動(dòng),再等待T+tpd就發(fā)出PAS。應(yīng)該保證局部資源在3T+tpd的時(shí)間內(nèi)釋放總線,否則應(yīng)由邏輯電路來增加延時(shí)。當(dāng)VIC068A開始驅(qū)動(dòng)局部總線時(shí),同時(shí)也驅(qū)動(dòng)FC2/1來提供當(dāng)前局部總線周期的類型信息。FC2,FC1=00為從模塊傳輸;01為局部DMA塊傳輸;10為標(biāo)準(zhǔn)從模塊訪問。VIC068A在發(fā)出LAEN后,此時(shí)打開地址選通PAS,緊接著數(shù)據(jù)選通DS,一段延時(shí)后,LBR取消,如果收到LBG取消和DSACK有效(變低又變高)后,即完成該次從模塊訪問的讀或?qū)懙木植靠偩周期。
4 VIC068A的塊傳輸操作
VIC068A的主塊傳輸有兩種方式:MOVEM塊傳輸和局部DMA塊傳輸。MOVEM方式即局部處理器發(fā)動(dòng)數(shù)據(jù)傳輸,占有局部總線控制權(quán);在DMA方式下,VIC068A為局部總線控制者,并且使用DMA訪問局部資源的數(shù)據(jù)。VMEbus的技術(shù)規(guī)范不允許在既不放棄總線又不切換AS的情況下,進(jìn)行超過256字節(jié)的塊傳輸,即每進(jìn)行256字節(jié)的塊傳輸后必須重新使AS有效,或者重新仲裁總線。VIC068A借助適當(dāng)?shù)耐獠窟壿,可以?shí)現(xiàn)長度大于256字節(jié)的塊傳輸;也可以在每256字節(jié)的界限后放棄總線,1個(gè)可編程的時(shí)間過后重新仲裁總線,每兩個(gè)子塊傳輸間隔的時(shí)間稱為interleaveperiod(交叉周期),每個(gè)子塊的長度為burstlength(突發(fā)長度)。VIC068A還支持雙通道特性:即在每個(gè)交叉周期內(nèi)可以執(zhí)行單周期的VMEbus總線周期(包括slavecycles),不過需要借助適當(dāng)?shù)耐獠窟壿,?shí)現(xiàn)兩通道的地址通道。與主塊傳輸相關(guān)的寄存器有(只支持到D32和D16):BTCR、BTDR、RCR、BTLRs、DMASR、DMASICR。
4.1使用局部DMA的塊傳輸
首先對VIC068A的寄存器初始化:在BTLRs中設(shè)傳輸塊的長度,在BTDR中禁止或使能自動(dòng)地址跨界和雙通道特性;在LBTR中設(shè)置局部總線定時(shí)(與PAS,DS定時(shí)有關(guān));在BTCR中設(shè)置DMA使能,傳輸方向及交叉周期。此后的MWB有效被視為虛寫周期,即開始塊傳輸功能。
局部處理器對VMEbus的虛寫周期里,LA[31..0]上是塊傳輸?shù)哪康牡刂,LD[31..0]上是數(shù)據(jù)塊的源地址(板內(nèi)地址),之后是VIC068A與局部總線間的DMA傳送。虛寫周期里,VIC068A將LA[7..0]鎖存到片內(nèi)地址計(jì)數(shù)器,并使能LADO將LA[+:8]鎖存到VMEbus地址線上。同時(shí)VIC068A也將LD[7..0]鎖存到片內(nèi)局部地址計(jì)數(shù)器,驅(qū)動(dòng)BLT,使LD[31..8]作為局部地址,這需要額外電路(見圖3)。然后驅(qū)動(dòng)DSACKi來結(jié)束局部總線周期,請求VMEbus,發(fā)出BRi=0后,收到BGiIN=0,再發(fā)出LBR申請局部總線。當(dāng)獲得了局部總線控制權(quán)后,VIC068A驅(qū)動(dòng)局部DMA地址到地址總線上。局部DMA地址來自LD[31..8],外部電路可以利用BLT、LBG、PAS、LAEN和FCi來產(chǎn)生邏輯去驅(qū)動(dòng)高位局部地址線,圖3給出了一個(gè)參考電路。然后VIC068A通過驅(qū)動(dòng)局部地址,以及局部數(shù)據(jù)選通來訪問局部總線的數(shù)據(jù),局部資源回復(fù)DSACKi來確認(rèn)數(shù)據(jù)已經(jīng)被讀取或?qū)懏。局部地址遞增時(shí),數(shù)據(jù)仍保持在總線上。與此同時(shí)VIC068A也驅(qū)動(dòng)AS和切換DS來訪問VMEbus。
圖3 最簡單的BLT控制電路
局部總線的256字節(jié)地址越界處理:在BTDR設(shè)置使能,BLT和FCi用來控制外部電路,在將要跨界的局部周期里,BLT將會(huì)來回切換一下,外部計(jì)數(shù)器應(yīng)當(dāng)在BLT的下降沿增加1。用來實(shí)現(xiàn)地址鎖存和跨越的外部電路也能用在實(shí)現(xiàn)雙通道特性時(shí),在一個(gè)突發(fā)周期后鎖存地址。需要注意的是,在局部處理器的程序中,BLT使能位(BTCR[6])應(yīng)當(dāng)盡可能快地在塊傳輸開始后,將其清除標(biāo)志,沒必要在塊傳輸結(jié)束后才清除。因?yàn)锽TC[6]置位后,任何有效的MWB都會(huì)啟動(dòng)塊傳輸,所以在VMEbus死鎖時(shí)的局部處理器的重試動(dòng)作會(huì)誤觸發(fā)新的塊傳輸,有必要在DMA傳輸時(shí)禁止重試邏輯。
4.2OVEM塊傳輸
首先初始化RCR設(shè)置突發(fā)長度,初始化BTCR設(shè)置塊傳輸及使能位,就啟動(dòng)了傳輸周期。之后的任何MWB配合PAS的有效電平都會(huì)啟動(dòng)MOVENtransfer。當(dāng)BTCR[5]清除后,或BERR為低,或者出現(xiàn)沒有MWB的局部總線周期,都被視為MOVEM塊傳輸終止。在這期間,地址都會(huì)直接送到VMEbus上,沒有鎖存,與正常的單字傳送類似。VIC068A作為從模塊進(jìn)行塊傳輸訪問,可以在SSiCR0設(shè)置:
。1)不支持塊傳輸。
。2)支持塊傳輸,但在從模塊資源一邊,模仿單字節(jié)傳輸,即每次傳輸時(shí)都切換PAS和DSACKi。
。3)以DMA類型的方式支持塊傳輸,PAS和DSACKi在整個(gè)傳輸過程都維持有效不變。
VIC068A包含1個(gè)與主塊傳輸?shù)牡刂酚?jì)數(shù)器分開的地址計(jì)數(shù)器。這個(gè)計(jì)數(shù)器在塊傳輸開始的時(shí)候,被VMEbus地址初始化并驅(qū)動(dòng)局部總線,然后隨著每次局部確認(rèn)后地址遞增1。根據(jù)VME規(guī)范,從塊傳輸不需支持256地址越界,因?yàn)樵诿看蜛S的下降沿都可以重新鎖存地址。
5 VIC068A的中斷處理能力
VIC068A提供了全面的VMEbus中斷和局部中斷產(chǎn)生和管理的能力,此外,還有狀態(tài)和錯(cuò)誤中斷發(fā)生的能力。中斷模塊(interrupter)負(fù)責(zé)產(chǎn)生VMEbus中斷信號IRQ[7..0],寄存器VIRSR的設(shè)置來控制這些中斷的產(chǎn)生和撤銷,VIVBR17設(shè)定每1個(gè)中斷的status/id碼。局部處理器寫相應(yīng)寄存器來通知中斷模塊產(chǎn)生相應(yīng)級別的中斷。當(dāng)掌管該中斷的中斷管理模塊(handler)啟動(dòng)中斷認(rèn)可周期時(shí),中斷模塊還負(fù)責(zé)將此中斷的status/id碼放在D[7..0]上。
中斷管理模塊的功能有:
。1)處理VMEbus中斷;
。2)處理來自局部資源的中斷;
。3)處理內(nèi)部的錯(cuò)誤/狀態(tài)中斷,其中包括:
——寫過程錯(cuò)誤,總線超時(shí)或傳輸失敗時(shí)有BERR錯(cuò)誤或LBERR錯(cuò)誤時(shí)產(chǎn)生;
——SYSFAIL/ACFAIL的錯(cuò)誤;
——仲裁錯(cuò)誤;
——DMA完成中斷。
中斷管理模塊在VME中斷請求線組IRQi內(nèi)發(fā)現(xiàn)1個(gè)有效請求(低),就根據(jù)它的IPL級別驅(qū)動(dòng)IPL2..0。每個(gè)中斷均在VICRi屏蔽和使能,設(shè)置IPL級別。根據(jù)IPL2..0,如果局部處理器認(rèn)可了1個(gè)局部中斷,就驅(qū)動(dòng)FCIACK信號。VIC068A發(fā)現(xiàn)FCIACK有效,抽取LA[2..0]上的被認(rèn)可的局部中斷的IPL值,如果匹配,就啟動(dòng)1個(gè)VMEbus中斷認(rèn)可周期,從中斷模塊獲取該中斷的status/id放到LD[7..0]上(也可設(shè)置不需要取status/id的中斷周期)。局部處理器獲取該值,進(jìn)入中斷服務(wù)程序,這樣就完成了1次中斷處理過程。對于局部中斷請求和內(nèi)部狀態(tài)/錯(cuò)誤中斷的處理過程,除了VME中斷認(rèn)可周期外,基本差不多。如果有多個(gè)中斷請求同時(shí)發(fā)生,則根據(jù)固定的優(yōu)先順序進(jìn)行中斷處理。
6結(jié)束語
VIC068A是個(gè)全面的總線界面控制器,采用有144引腳和160引腳TQFP,145引腳PGA等封裝形式。Cypress還提供了成本相對低的VMEbus從接口控制器CY7C960/CY7C961,如果設(shè)計(jì)者只想能夠接受VMEbus的訪問,那么CY7C960/CY7C961也是個(gè)選擇。由于VME的電氣規(guī)范要求的信號線電流較大,還需要外圍的邏輯電路和驅(qū)動(dòng)電路配合工作(比如總線收發(fā)器,塊傳輸還需外部邏輯,地址鎖存和計(jì)數(shù)器),才能實(shí)現(xiàn)完整的控制器電路。Cypress專門提供的CY7C964就是與VIC068A/VIC64配合完成這樣的功能,它是可以靈活配置的總線界面邏輯電路,包括了8位收發(fā)器,鎖存器,計(jì)數(shù)器等,可以取代圖2中鎖存、緩沖器和外部邏輯PLD。但是也需要3片CY7C964和相應(yīng)開發(fā)工具才能完成,用戶可以對這兩種方案比較選擇。





