葉 勇,沈三民,郭 錚,崔 婧,蘇虎平,張雪蓮
(中北大學(xué)a.儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室;b.中北大學(xué)電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室,山西太原 030051)
基于PCI總線的高速串口通信卡的設(shè)計(jì)
葉 勇,沈三民,郭 錚,崔 婧,蘇虎平,張雪蓮
(中北大學(xué)a.儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室;b.中北大學(xué)電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室,山西太原 030051)
介紹了一種基于PCI總線的高速串口通信卡的設(shè)計(jì),采用PLX公司的PCI9054作為PCI總線橋接芯片,F(xiàn)PGA作為本地總線的控制器和系統(tǒng)主控單元,選用LVPECL電平單模雙纖光收發(fā)一體模塊OCM3723為串口傳輸介質(zhì)。最后介紹了利用visual C+++DDK進(jìn)行設(shè)備驅(qū)動(dòng)開發(fā)。該設(shè)計(jì)的高速串口通信卡,其通信速率可達(dá)80 Mbit/s,傳輸距離超過10 km。具有設(shè)計(jì)簡(jiǎn)單、速率快、可靠性高、傳輸距離遠(yuǎn)等特點(diǎn),已經(jīng)成功運(yùn)用于某航天遙測(cè)系統(tǒng)。
PCI總線;高速串口通信;PCI9054
PCI總線標(biāo)準(zhǔn)是一種將系統(tǒng)外部設(shè)備連接起來的總線標(biāo)準(zhǔn),它是PC機(jī)中最重要的總線。其他設(shè)備例如:USB總線、ISA總線等總線都掛接在PCI總線之上。如果時(shí)鐘采用33 MHz,它的傳輸速率可達(dá)132 Mbyte/s(PCI總線為32位),對(duì)于64位PCI總線,其吞吐率能達(dá)到264 Mbyte/s峰值[1];64位66 MHz PCI總線,數(shù)據(jù)吞吐率理論值為528 Mbyte/s。一般在PC機(jī)中,顯卡、網(wǎng)卡都被設(shè)計(jì)成PCI總線設(shè)備,插于PCI插槽,有利于方便更換已壞設(shè)備。
本文設(shè)計(jì)的基于PCI總線的高速串口通信卡,采用PLX公司的PCI9054作為PCI總線與本地總線的橋接芯片,控制方便,實(shí)現(xiàn)簡(jiǎn)單。從硬件電路的設(shè)計(jì),到軟件的編寫,再到驅(qū)動(dòng)程序的撰寫,本文將一一予以探討。
基于PCI總線的高速串口通信卡的設(shè)計(jì)總體結(jié)構(gòu)如圖1所示,整個(gè)通信卡可分為三部分:信號(hào)采集單元、中心控制邏輯單元和PCI橋接電路。此卡插于PCI擴(kuò)展槽中,與PC機(jī)進(jìn)行通信。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
信號(hào)收發(fā)單元包括光模塊與LVDS高速接口電路。LVDS高速接口可以確保數(shù)據(jù)傳輸?shù)目焖傩?,光模塊解決遙測(cè)系統(tǒng)的傳輸距離。本設(shè)計(jì)采用1對(duì)10位總線型低壓差分信號(hào)應(yīng)用芯片組DS92LV1023(串行器)與DS92LV1224(解碼器)。其中DS92LV1023可以將10位并行CMOS或TTL數(shù)據(jù)轉(zhuǎn)換為具有內(nèi)嵌時(shí)鐘的高速串行差分?jǐn)?shù)據(jù)輸出;DS92LV1224則將輸入的差分?jǐn)?shù)據(jù)轉(zhuǎn)換成并行10位數(shù)據(jù)輸出,同時(shí)內(nèi)部鎖相環(huán)可從串行數(shù)據(jù)中重建并行時(shí)鐘。因LVDS芯片組的差分電壓擺幅為0.7 V,不能直接與1.5~2.3 V電壓差輸入的光模塊OCM3723直接相連,所以配合使用電纜驅(qū)動(dòng)器CLC006與電纜均衡器CLC014。可將電壓擺幅提高到2 V,這樣能使信號(hào)良好地搭載在光模塊,使傳輸距離得到極大改善[2]。
PCI接口電路使用PLX公司的PCI9054,也是目前主流的PCI總線接口芯片之一,其邏輯控制簡(jiǎn)單,無需復(fù)雜的固件編寫,且PLX公司提供官方的驅(qū)動(dòng)程序作為參考,可以大大縮短開發(fā)周期。此卡通過PCI總線與上位機(jī)通信,可以實(shí)時(shí)進(jìn)行監(jiān)測(cè)和高速的數(shù)據(jù)存取。
中心控制邏輯單元采用一片Xilinx公司的XC3S400作為邏輯控制器,其主要作用是作為本地總線的邏輯控制單元與PCI總線通信、數(shù)據(jù)緩存及信號(hào)采集模塊的控制器,也是高速串口通信卡的主控芯片。FIFO存儲(chǔ)器作為數(shù)據(jù)緩存器,本設(shè)計(jì)采用XC3S400的內(nèi)置塊RAM配置而成。系統(tǒng)采用40 MHz晶振,經(jīng)FPGA內(nèi)部的時(shí)鐘管理模塊倍頻得到80 MHz時(shí)鐘,使得傳輸數(shù)率可達(dá)80 Mbit/s。
進(jìn)行串口通信時(shí),數(shù)據(jù)流在信號(hào)線上傳輸必然產(chǎn)生信號(hào)的畸變,波特率與傳輸距離成為一對(duì)矛盾體。為此,本文提出LVDS+光模塊的設(shè)計(jì),在一定程度上解決了傳輸速率與傳輸距離的瓶頸現(xiàn)象,可將高速通信距離提高到10 km以上。
LVDS是一種小振幅差分信號(hào)技術(shù),使用低壓(約350 mV)差分信號(hào)傳輸數(shù)據(jù)。允許單個(gè)信道傳輸速率達(dá)到數(shù)百兆比特每秒,其特有的低振幅及恒流源模式驅(qū)動(dòng)只產(chǎn)生極低的噪聲,消耗非常小的功率。其LVDS應(yīng)用芯片組與電纜驅(qū)動(dòng)器、電纜均衡器的連線圖如圖2所示。這里R5與R10為匹配電阻,大小為100 Ω。
而光模塊的使用,利用其良好的光電轉(zhuǎn)換作用,可以使傳輸距離提高到10 km以上。本設(shè)計(jì)選用LVPECL電平單模雙纖光收發(fā)一體模塊OCM3723,其特點(diǎn)為:1)SC/FC插拔式光接口;2)單+3.3 V/+5 V供電;3)接口電平兼容標(biāo)準(zhǔn)LVPECL電平;4)標(biāo)準(zhǔn)1×9管腳封裝,引腳配置與Multi-source協(xié)議兼容;5)發(fā)射器件可選用工作波長(zhǎng)為1 310 nm的FP激光器或1 550 nm DFB激光器;6)接收采用平面結(jié)構(gòu)InGaAsP PIN探測(cè)器。
圖2 LVDS應(yīng)用芯片組與電纜驅(qū)動(dòng)器、電纜均衡器連線圖
PCI9054的操作方式有M,C,J這3種模式,本設(shè)計(jì)采用時(shí)序控制相對(duì)簡(jiǎn)單的C模式。
PCI9054的工作方式有3種:主模式、從模式及DMA模式。本設(shè)計(jì)采用從模式的多周期傳輸方式。其中,主模式是由本地處理器作為主設(shè)備,發(fā)起PCI存儲(chǔ)器或I/O對(duì)訪問,PCI9054作為本地總線的目標(biāo)設(shè)備;從模式是由PCI主設(shè)備發(fā)起整個(gè)數(shù)據(jù)傳輸,PCI總線可以對(duì)配置寄存器及本地總線內(nèi)存進(jìn)行訪問,PCI9054作為PCI總線的目標(biāo)設(shè)備;DMA模式是一種快速的數(shù)據(jù)傳輸機(jī)制[1],由PCI9054的DMA控制器控制在不需要CPU的干預(yù)下,對(duì)本地總線的存儲(chǔ)器或I/O與PCI總線的存儲(chǔ)器或I/O之間的數(shù)據(jù)交換。考慮數(shù)據(jù)流不是非常大,使用從模式下的突發(fā)傳輸發(fā)式即可。
PCI9054的配置信息通過上電后從E2PROM中讀取。這里選用Microchip Technology公司的93LC56。93LC56的接線圖如圖3所示。為了便于調(diào)試用,在EEDI/DO引腳上設(shè)計(jì)有上下拉電阻,需要配合PCI9054調(diào)試時(shí),焊接下拉電阻,正常工作時(shí)接上拉電阻。
圖3 93LC56的接線圖
中心控制邏輯單元控制著信號(hào)收發(fā)時(shí)序、搭建內(nèi)部FIFO以及作為本地總線邏輯單元與PCI總線通信。這里選用XI-LINX公司的XC3S400,其具有4×105門的門電路,896個(gè)CLB和360 kbit的塊RAM。符合其設(shè)計(jì)要求。
1)內(nèi)部FIFO的搭建
通過FIFO進(jìn)行數(shù)據(jù)緩沖來解決數(shù)據(jù)匹配問題。因選用資源豐富的XC3S400,內(nèi)部塊RAM可達(dá)360 kbit,可以在內(nèi)部搭建FIFO以減少設(shè)計(jì)成本。
如圖4所示,采用8塊雙端口的塊RAM RAMB_16_S4_S4搭建為4 k×32位FIFO。塊RAM的A端口作為寫端口,B端口作為寫端口。它們的使能端都與VCC相連,不同的是,寫使能一個(gè)接VCC,一個(gè)接地。需要注意的是,對(duì)塊RAM讀寫操作時(shí),不能同時(shí)進(jìn)行,否則輸出將是不定值,造成輸出失敗。
圖4 塊RAM搭建FIFO結(jié)構(gòu)圖
2)本地總線邏輯單元
在FPGA中實(shí)現(xiàn)PCI9054的讀寫,即對(duì)本地總線總裁。包括本地總線請(qǐng)求信號(hào)LHOLD和本地總線應(yīng)答信號(hào)LHOLDA的處理。在很多的設(shè)計(jì)中,都是將PCI9054的LHOLD和LHOLDA兩個(gè)引腳直接相連接,或在FPGA/CPLD內(nèi)部用連續(xù)賦值直接將LHOLD的值賦予LHOLDA,利用器件的引腳傳輸延遲配合總線仲裁電路來進(jìn)行時(shí)序控制。因?yàn)楫?dāng)尖峰脈沖耦合進(jìn)FPGA內(nèi)部時(shí)會(huì)造成邏輯電路的誤觸發(fā)[4],所以采用這些方式將會(huì)導(dǎo)致計(jì)算機(jī)出現(xiàn)讀數(shù)錯(cuò)誤、死機(jī)等現(xiàn)象。PCI本地總線通信仿真圖如圖5所示,PCI9054進(jìn)行量7個(gè)長(zhǎng)字的突發(fā)傳輸模式。
圖5PCI本地總線通信仿真圖(截圖)
PCI板卡插入PCI擴(kuò)展槽,如果要正常工作,需要在Windows下撰寫驅(qū)動(dòng)程序。驅(qū)動(dòng)程序主要有以下幾個(gè)步驟:打開設(shè)備;設(shè)備初始化[5];設(shè)備讀寫;關(guān)閉設(shè)備。Windows系統(tǒng)下的驅(qū)動(dòng)用的最多是DDK,driverstudio,windriver這機(jī)種工具。其中,DDK的效率最高,但編寫起來難度太大,多數(shù)技術(shù)人員使用driverstudio,windriver這兩種工具編寫出來的程序也稱為WDM(Windows Device Module)程序。本課題采用DriverStudio工具。
DriverStudio中的DriverWorks軟件為WDM驅(qū)動(dòng)程序提供了完整的框架,本設(shè)計(jì)利用其DriverWizard生成驅(qū)動(dòng)程序框架,然后添加各功能函數(shù)。這里利用類KMemoryR-ange實(shí)現(xiàn)對(duì)BU-61585內(nèi)部存儲(chǔ)器的讀寫訪問,類KIoR-ange實(shí)現(xiàn)對(duì)其寄存器的訪問。下面是驅(qū)動(dòng)程序中類實(shí)例KMemoryRange0的初始化及其對(duì)BU-61585內(nèi)部存儲(chǔ)器的寫操作功能函數(shù)。
PCI總線滿足現(xiàn)代設(shè)備傳輸數(shù)率越來越高的要求,PCI9054為PCI總線接口技術(shù)提供了較為簡(jiǎn)單的開發(fā)過程,其高速的傳輸數(shù)率將會(huì)被廣泛應(yīng)用。本文設(shè)計(jì)的高速串口通信板,已成功應(yīng)用于圖像數(shù)據(jù)的傳輸。當(dāng)數(shù)據(jù)總線擴(kuò)展到64位,數(shù)據(jù)傳輸模式采用DMA方式,對(duì)于數(shù)率的提高仍有較大的裕度。
:
[1]趙錫凱.PCI總線擴(kuò)展技術(shù)研究[J].計(jì)算機(jī)工程與科學(xué),1997(2):12-15.
[2]袁偉濤,張斌珍,劉文怡.箭載遙測(cè)變換器測(cè)試臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù)與儀器儀表,2008(2):87-90.
[3]榮思遠(yuǎn),景新幸,陳用昌.基于PCI總線的視頻采集卡研究[J].電視技術(shù),2006,30(11):32-35.
[4]蔡祁鵬,王宏遠(yuǎn).HDTV信號(hào)源中PCIDMA的WDM程序開發(fā)[J].電視技術(shù),2001,25(4):17-20.
[5]何瑾,張燁君,于彤彥.基于PCI總線的數(shù)據(jù)采集卡的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2006(17):109-110.
Design of High-speed Serial Communication Based on PCI Bus
YE Yong,SHEN Sanmin,GUO Zheng,CUI Jing,SU Huping,ZHANG Xuelian
(a.Key Laboratory of Instrumentation Science&Dynamic Measurement,Ministry of Education;b.National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China)
A kind of high-speed data transmission system based on PCI bus is presented,which exploits a PCI bridge chip PCI9054 which produced by PLX company,F(xiàn)PGA as local bus controller and system control unit,data transmission with the external system through duplex fiber single mode PECL transceiver OCM3723.At last,the use of visual C++&DDK for equipment driver development is introduced.Design of high-speed data transmission system,its communication rate of up to 80 Mbit/s,the transmission distance more than 10 km.It is simple in design,speed,high reliability,long distance transmission and other characteristics,is been successfully used in a space telemetry system.
PCI Bus;high-speed serial communication;PCI9054
TP274
A
【本文獻(xiàn)信息】葉勇,沈三民,郭錚,等.基于PCI總線的高速串口通信卡的設(shè)計(jì)[J].電視技術(shù),2013,37(3).
國家自然科學(xué)基金重點(diǎn)項(xiàng)目(60871041)
葉 勇(1988— ),碩士生,主研電路系統(tǒng)和微系統(tǒng)集成。
責(zé)任編輯:時(shí) 雯
2012-06-07