劉 青,馬天乙
(中國電子科技集團公司第20研究所通信事業部,陜西西安 710068)
高速數據傳輸技術是現代信息技術的前沿科技,同時也是整個數據鏈技術的瓶頸之一,為此技術人員不斷地尋找新的方法。CPCI(Compact PCI)總線[1]就是其中一個解決方案。
CPCI總線是當前流行的高速嵌入式計算機總線,目前大多數嵌入式計算機系統的接口最終都要經過CPCI總線與計算機內存進行交互。CPCI的總線規范保證了其具有良好的兼容性和可靠性。
本文設計的系統采用PLX公司生產的CPCI協議轉換芯片PCI9054[2],通過Verilog HDL語言在FPGA中產生相應的控制信號,完成對數據的快速讀寫,從而實現了與CPCI總線的高速數據通信。
系統主要由PCI9054和FPGA構成,系統結構圖以及信號連接如圖1所示。通過利用FPGA的可編程性,可實現更多的擴展功能,如與DSP,A/D等不同速率間接高速通信等。協議轉換芯片PCI9054的作用就是保證本地數據采集板卡和主CPU板卡之間的數據可以高速準確地傳輸[3]。

圖1 系統設計圖
PCI9054是由PLX公司生產的一種基于PCI V2.2總線規范的通用接口芯片[4]。它支持單字節方式和突發方式兩種傳輸方式。其總線端支持32位/33 MHz傳輸,本地端可以通過突發方式達到最大132 Mbit·s-1的傳輸速率,并且可以控制改變本地端的總線寬度。
PCI9054可以看做一座建立在CPCI總線和本地用戶局部總線之間的橋梁。因為PCI9054具有6個可編程FIFO存儲器進行數據緩存[5],從而保證兩者之間數據傳輸的正確性和實時性。并且PCI9054允許其中任意一端作為主控設備去控制總線,同時另外一端作為目標設備去響應總線。
PCI9054內部具有多個寄存器組[6],用以對其兩端的工作狀態和工作方式進行控制。PCI9054對其內部的所有寄存器組和FIFO都行了統一的地址映射,用戶可以從兩端通過編程訪問所有FIFO及寄存器組的每個字節,從而查看兩端的工作狀態和改變兩端的工作方式。
整個CPCI接口的設計思路為:FPGA通過橋接芯片PCI9054與CPCI總線連接,其內部使用異步雙口RAM來進行高速數據的緩沖,通過使用Verilog HDL語言編程來控制FPGA中的異步雙口RAM,以實現系統數據在嵌入式CUP板卡內存與CPCI板卡之間的高速傳輸。
PCI9054提供了3種物理總線接口[7]:CPCI總線接口、LOCAL總線接口和串行EPROM接口。其中CPCI總線接口協議在嵌入式操作系統中的驅動包已經帶有,而串行EEPROM的初始化是由PLX公司的PLXMON軟件在嵌入式操作系統中進行在線燒寫的,所以本系統設計的重點就是關于LOCAL總線接口的控制和傳輸,其接口電路示意圖如圖2所示。

圖2 接口電路連接示意圖
PCI9054與本地總線之間的接口稱之為LOCAL BUS,是CPCI總線系統設計中十分重要的一環。PCI9054 LOCAL BUS在系統設計中,其總線直接與Alter公司的EP2S90F780I4芯片的數據總線相連,同時通過運用Verilog HDL語言編程來實現對雙口RAM控制器的功能。
PCI9054 LOCAL BUS有3種工作模式[8],分別為M、J和C模式。M模式是專為Motorola公司開發和設計的,而另外兩種工作模式就應用的比較廣泛。其中J模式因為沒有Local Master,所以它的地址總線和數據線沒有分開,從而增加了開發難度。而在C模式下,PCI9054芯片通過片內的邏輯控制可以將CPCI的局部地址和數據總線分開,從而有效地降低了開發難度,并且能靈活地為本地工作時序提供各種工作方式,所以本系統設計方案選擇了LOCAL總線的C工作模式,工作頻率為40 MHz。
PCI9054支持主模式、從模式和DMA傳輸方式,根據本系統設計的需求,采用從模式傳輸方式[9],即允許CPCI總線上的主設備訪問局部總線上的配置寄存器或內存,支持多種模式傳輸。如圖3所示。

圖3 PCI9054內部傳輸示意圖
FPGA內部邏輯要設計本地端總線控制模塊,實現局部總線的狀態控制,同時產生片內的讀寫時序及地址信號以支持突發傳輸和單周期傳輸,因此使用Verilog HDL語言中的狀態機來完成上述功能。其狀態轉換,如圖4所示。

圖4 PCI9054狀態轉移示意圖
利用SingnalTap采集到的單周期時序傳輸圖,如圖5所示。

圖5 PCI9054 Local Bus單周期傳輸時序圖
以PCI9054為核心介紹了CPCI板卡與嵌入式CPU板卡之間高速數據通信系統接口的軟硬件設計。PCI9054因其靈活和方便的接口功能,使操作者只需關心LOCAL BUS接口電路的時序設計,并且利用其傳輸速率高的特性,可以幫助一些對實時性要求較高的系統解決其傳輸數據的問題。
[1] 李貴山,戚德虎.PCI局部總線開發指南[M].西安:西安電子科技大學出版社,1997.
[2] PLX Technology Inc.PCI 9054 Data Book[M].Version 2.1.USA:PLX Technology Inc,2000.
[3] 譚博釗,徐元軍,單濤,等.PCI總線接口技術及其在高速數據采集系統中的應用[J].電子技術應用,2006(10):99-101.
[4] 馬超,皮亦鳴.基于PCI9054的PCI接口數據通信系統[EB/OL].(2008-01-19)[2011-02-12]http://www.paper.edu.cn.
[5] SHANLEY T,ANDERSON D.PCI系統結構[M].4版.劉暉,冀然然,夏意軍,譯.北京:電子工業出版社,2000.
[6] 丁海鋒,張志強,趙前晟,等.基于FPGA的數據采集板設計與實現[J].電子科技,2010,23(3):30-34.
[7] 李國光,羅豐.一種64位高速PCI總線接口的設計與實現[J].電子科技,2011,24(2):57-60.
[8] 王紅彥,劉泳,姜曉潔.中頻數字接收機的工程實現[J].電子科技,2010,23(9):34-37.
[9] 曹明,陳文正.PCI總線協議的FPGA實現及驅動設計[J].計算機應用,2003(7):15-17.
[10]董鐵莊,吳晴.用PCI 9052設計PCI通訊適配卡的難點剖析[J].微計算機信息,2005(4):57-60.