某遙測(cè)信號(hào)模擬源是用于產(chǎn)生模擬信號(hào)處理器、遙測(cè)組件測(cè)試和交付測(cè)試的前端輸入信號(hào)的專用設(shè)備,。該信號(hào)源生成各種類型的信號(hào),,輸入給待測(cè)產(chǎn)品,測(cè)試時(shí)比對(duì)遙測(cè)信號(hào)模擬源生成的信號(hào)和其經(jīng)過(guò)待測(cè)產(chǎn)品以后的信號(hào),,以判斷產(chǎn)品的功能是否正常,。設(shè)計(jì)中的板卡為該遙測(cè)信號(hào)模擬源的組成部分,主要用于測(cè)試產(chǎn)品的LVDS總線協(xié)議的功能是否正常,。由于待測(cè)信號(hào)的特殊應(yīng)用,,要求板卡能夠接收200 Mbit·s-1內(nèi)的高速串行數(shù)據(jù)并能發(fā)送10~50 Mbit·s-1的任意速率LVDs數(shù)據(jù)。因PCI總線速度高,、兼容性好,、可靠性高且成本低,使其在各種與主機(jī)通信的總線技術(shù)中優(yōu)勢(shì)明顯,。FPGA資源豐富,、速度快、開(kāi)發(fā)方便快捷,,因此在高速數(shù)據(jù)通信中應(yīng)用廣泛,。DDS頻率合成技術(shù)通過(guò)頻率控制字,、相位控制字及參考時(shí)鐘的控制來(lái)實(shí)現(xiàn)輸出信號(hào)的調(diào)頻調(diào)相,并且輸出信號(hào)具有頻率轉(zhuǎn)換快,、頻率分辨率高和相位噪聲低等優(yōu)點(diǎn),。綜合上述特點(diǎn),設(shè)計(jì)運(yùn)用PCI9054實(shí)現(xiàn)PCI總線接口,,F(xiàn)PGA實(shí)現(xiàn)數(shù)據(jù)接收發(fā)送控制及接口實(shí)現(xiàn),,DDS芯片AD9851產(chǎn)生任意LVDS數(shù)據(jù)發(fā)送時(shí)鐘,最后使用MFC實(shí)現(xiàn)板卡的交互界面并對(duì)板卡實(shí)現(xiàn)測(cè)試,。
1 硬件設(shè)計(jì)
數(shù)據(jù)接收系統(tǒng)是將目標(biāo)信號(hào)進(jìn)行采集,、處理并存儲(chǔ),形成計(jì)算機(jī)可以處理的數(shù)據(jù)格式,,即包含信號(hào)輸入單元,、信號(hào)處理單元和信號(hào)輸出單元。數(shù)據(jù)發(fā)送系統(tǒng)是將目標(biāo)數(shù)據(jù)傳送給下位機(jī),,下位機(jī)進(jìn)行數(shù)據(jù)格式處理,,然后按照數(shù)據(jù)協(xié)議形式通過(guò)信號(hào)輸出單元發(fā)送出去。除此之外整個(gè)系統(tǒng)還需要緩沖區(qū),、時(shí)鐘以及電源等相關(guān)模塊支持,。圖1所示為本板卡的硬件設(shè)計(jì)框圖。
1.1 PCI接口設(shè)計(jì)
PCI總線是由Intel等公司制定的具有嚴(yán)格規(guī)范的外部設(shè)備互聯(lián)總線,,是目前計(jì)算機(jī)中廣泛采用的局部總線,,它的信號(hào)線包括32根地址數(shù)據(jù)復(fù)用線、仲裁,、接口控制線,、總線命令字節(jié)允許復(fù)用線和系統(tǒng)復(fù)位等。PCI接口設(shè)計(jì)一般采用兩種方法:(1)利用CPLD/FPGA實(shí)現(xiàn),,這種方法可以針對(duì)自己的需要定制功能,,設(shè)計(jì)靈活性大。(2)用通用的接口芯片,,如AMCC公司的S5933,、PLX公司的PCI9054等。因PCI總線協(xié)議復(fù)雜,,自行設(shè)計(jì)接口費(fèi)時(shí)費(fèi)力,,而PCI接口芯片具有設(shè)計(jì)簡(jiǎn)單、功能強(qiáng)大,、可靠性好等特點(diǎn),,從而大大減少開(kāi)發(fā)工作量。綜上所述,,設(shè)計(jì)選用PCI90 54,,C從模式工作,本地總線端輸入時(shí)鐘50 MHz,,配置芯片為Mierochip Technology公司的93LC56串行EEPROM,。
1.2 LVDS接口設(shè)計(jì)
低壓差分信號(hào)(Low Voltage Differential Signaling,LVDS)采用極低的電壓擺幅高速差動(dòng)傳輸數(shù)據(jù),,可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)或一點(diǎn)對(duì)多點(diǎn)的連接,。文中采用Cyclone I系列EP1C6Q240FPGA,它支持高速LVDS接口,,利用其I/O的LVDS驅(qū)動(dòng)器把FPGA內(nèi)部邏輯信號(hào)轉(zhuǎn)換為低壓差分信號(hào)對(duì),,經(jīng)過(guò)傳輸線傳送到對(duì)方差分接收電路。在Cyclone I系列FPGA中,,使用LVDS接口只需在其配套的Quartus II軟件的MegaWizard中調(diào)用Alt lvds并進(jìn)行定制即可,。
LVDS接口電路的設(shè)計(jì)如圖2所示,F(xiàn)PGA發(fā)送端通過(guò)LVDS發(fā)送差分信號(hào),,在差分線上分別串接一個(gè)120 Ω電阻,,再在其間并接一個(gè)170 Ω電阻,削弱差分信號(hào)的幅值,,防止信號(hào)產(chǎn)生震蕩,;FPGA接收端在差分線間并接一個(gè)100 Ω的終端電阻,電流主要通過(guò)終端電阻形成回路,,從而在接收器的輸入端形成差分接收的信號(hào)電壓,;PCB布線時(shí)防止LVDS高速信號(hào)串?dāng)_和互擾,避免其他信號(hào)耦合到LVDS傳輸線上,,應(yīng)盡量將LVDS信號(hào)和其他信號(hào)分別布在兩個(gè)信號(hào)層上,。
1.3 其他接口設(shè)計(jì)
為滿足PCI總線的DMA傳輸特性,需要在硬件上加入緩沖區(qū),。輸入的LVDS速率越高,,需要的緩沖區(qū)容量越大,以保證不丟失數(shù)據(jù),。因此設(shè)計(jì)選用Micron公司提供的MT48LC2M32 SDRAM作為緩沖區(qū),,它是一款64 MB全同步SDRAM。另外,,輸出的LVDS信號(hào)要求10~50 MHz頻率范圍內(nèi)任意可調(diào),,因此選用AD公司采用CMOS技術(shù)生產(chǎn)的直接數(shù)字合成器AD9851,它的最高工作時(shí)鐘為180 MHz,,內(nèi)部除了完整的高速DDS外,,還集成了時(shí)鐘6倍頻器和一個(gè)高速比較器,并且它的接口控制簡(jiǎn)單,,可以用8位并行口或串行口直接輸入頻率,、相位等控制數(shù)據(jù),。設(shè)計(jì)中通過(guò)FPGA中PLL輸出30 MHz時(shí)鐘,倍頻器將參考時(shí)鐘倍頻至180 MHz,,控制接口采用并行口傳輸,。
除此之外,時(shí)鐘模塊采用有源晶振為系統(tǒng)提供50 MHz時(shí)鐘,,SDRAM時(shí)鐘由FPGA內(nèi)部PLL合成,。電源模塊采用外圍電路簡(jiǎn)單的LDO(Low Dropout Regulator)提供3.3V及1.5V電源電壓。
1.4 FPGA內(nèi)部結(jié)構(gòu)設(shè)計(jì)
FPGA內(nèi)部結(jié)構(gòu)的邏輯設(shè)計(jì)是本板卡設(shè)計(jì)的核心部分,,圖3所示為本系統(tǒng)FPGA內(nèi)部結(jié)構(gòu)框圖,。
LVDS信號(hào)接收器接收外部的LVDS數(shù)據(jù)幀,檢出幀頭,,并將幀數(shù)據(jù)傳送給雙口RAM進(jìn)行處理,,一個(gè)數(shù)據(jù)幀包含32 bit的幀頭和256×32 bit的幀數(shù)據(jù)。接收的雙口RAM實(shí)現(xiàn)數(shù)據(jù)的乒乓存儲(chǔ),,寫(xiě)數(shù)據(jù)的寬度為1 bit,,讀數(shù)據(jù)的寬度為32 bit,以此來(lái)實(shí)現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換,,同時(shí)實(shí)現(xiàn)數(shù)據(jù)時(shí)鐘域的轉(zhuǎn)換,。LVDS接收數(shù)據(jù)控制模塊用于產(chǎn)生雙口RAM和SDRAM控制器的地址總線、數(shù)據(jù)總線和控制總線,,實(shí)現(xiàn)各接收模塊聯(lián)合控制和數(shù)據(jù)轉(zhuǎn)移,,同時(shí)它還負(fù)責(zé)從SDRAM控制器讀取數(shù)據(jù)送至FPGA內(nèi)的FIFO緩沖區(qū),用于PCI總線交互,。
LVDS信號(hào)發(fā)送部分由LVDS發(fā)送數(shù)據(jù)控制,、雙口RAM、FIFO緩沖,、LVDS信號(hào)發(fā)送器和DDS控制器組成,。LVDS發(fā)送數(shù)據(jù)控制用于產(chǎn)生各模塊的地址、數(shù)據(jù)和控制總線,,實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)移和交互,。雙口RAM實(shí)現(xiàn)并串轉(zhuǎn)換和乒乓存儲(chǔ)。LVDS信號(hào)發(fā)送器為數(shù)據(jù)幀添加包頭,,并連同幀數(shù)據(jù)以AD98 51產(chǎn)生的發(fā)送頻率串行發(fā)送出去,。
另外,SDRAM控制器是FPGA內(nèi)用于外部SDRAM控制的模塊,,PCI本地總線控制器是FPGA內(nèi)用于控制PCI9054本地總線交互的模塊,,DDS控制器是FPGA內(nèi)用于外部AD9851控制的模塊。PLL是Ahera FPGA內(nèi)提供的模擬延遲鎖相環(huán)模塊,可以實(shí)現(xiàn)系統(tǒng)時(shí)鐘的倍頻,、分頻及延遲等時(shí)鐘控制操作,。通過(guò)該模塊可以實(shí)現(xiàn)系統(tǒng)內(nèi)不同時(shí)鐘域的時(shí)鐘分配。
2 軟件設(shè)計(jì)
系統(tǒng)設(shè)備的驅(qū)動(dòng)程序采用Windows下的WDM(Windows Driver Model)驅(qū)動(dòng)程序,。目前開(kāi)發(fā)WDM驅(qū)動(dòng)程序通常有3種工具,,即Windows DDK、DriverStudio和WinDriver,。由于DriverStudio包含完善的源代碼生成工具以及相應(yīng)的類庫(kù)和驅(qū)動(dòng)程序樣本,提供了在VC++下進(jìn)行驅(qū)動(dòng)程序開(kāi)發(fā)的支持,,因此設(shè)計(jì)中使用DdverStudio來(lái)開(kāi)發(fā)WDM驅(qū)動(dòng)程序,。
設(shè)計(jì)的上層應(yīng)用程序采用Microsoft Virtual Studio作為開(kāi)發(fā)平臺(tái),通過(guò)MFC設(shè)計(jì)了人機(jī)交互界面,,主要用于完成接收數(shù)據(jù)顯示存儲(chǔ),、發(fā)送數(shù)據(jù)載入、發(fā)送頻率控制字以及PCI控制命令等功能,。其程序面板如圖4所示,。
3 結(jié)果測(cè)試
在Ahium Designer 2009平臺(tái)上進(jìn)行板卡硬件原理圖和PCB圖設(shè)計(jì),F(xiàn)PGA芯片采用Altera公司的EP1C6Q240C6,,使用Quartus II 9.0開(kāi)發(fā)系統(tǒng)實(shí)現(xiàn)編程和仿真,,完成對(duì)電路設(shè)計(jì)的功能仿真和時(shí)序仿真。
在Quartus II中進(jìn)行引腳分配并編譯完工程后,,將設(shè)計(jì)文件下載到FPGA的配置芯片中,。在硬件上將LVDS的發(fā)送端和接收端連接以實(shí)現(xiàn)自發(fā)自收。在PC機(jī)的應(yīng)用程序中設(shè)置發(fā)送頻率為50 MHz,,然后點(diǎn)擊“發(fā)送頻率控制字”按鈕發(fā)送頻率控制字,,載入從0開(kāi)始的連續(xù)累加數(shù)字,點(diǎn)擊“開(kāi)始發(fā)送”按鈕發(fā)送數(shù)據(jù),,然后點(diǎn)擊“開(kāi)始接收”按鈕接收數(shù)據(jù),。從圖4所示的發(fā)送與接收數(shù)據(jù)顯示可以發(fā)現(xiàn),接收到的LVDS數(shù)據(jù)與發(fā)送的LVDS數(shù)據(jù)完全一致,,系統(tǒng)的發(fā)送功能與接收功能符合設(shè)計(jì)要求,。
4 結(jié)語(yǔ)
介紹了基于FPGA和PCI9054的LVDS數(shù)據(jù)通信卡的設(shè)計(jì),通過(guò)FPGA實(shí)現(xiàn)了LVDS數(shù)據(jù)的接收發(fā)送控制,、PCI9054實(shí)現(xiàn)了與上位機(jī)的數(shù)據(jù)交互,,實(shí)現(xiàn)了10~200 Mbit·s-1速率的LVDS數(shù)據(jù)接收以及10~50 Mbit·s-1任意速率的LVDS數(shù)據(jù)發(fā)送。此板卡的設(shè)計(jì),,可以有效地應(yīng)用于某遙測(cè)模擬信號(hào)源,,并對(duì)待測(cè)設(shè)備的LVDS總線協(xié)議進(jìn)行全面測(cè)試。