文獻標識碼: A
文章編號: 0258-7998(2014)06-0039-03
隨著數字信號處理技術的發展,數據傳輸速率越來越高,數據量越來越大。在傳統的測試設備設計中,大多是通過USB總線與上位機進行通信。這種通信方式傳輸速率不高,連接也不穩固。采用64 bit、66 MHz的PCI總線,傳輸速率可達到528 MB/s,且基于CPCI總線的通信設備數據傳輸速率比USB總線更快、更穩定,板卡的四周都被牢牢地固定住,機械結構也很穩固[1]。
1 接口卡功能介紹
接口卡整體結構如圖1所示。接口卡主要包括CPCI總線接口、高速數據接口和全雙工RS422接口。其中,CPCI接口實現接口卡與上位機之間的通信,高速數據接口接收記錄器下傳的高速數據,并由FPGA控制通過CPCI總線將數據傳輸給上位機進行實時顯示與存盤;RS422接口將上位機下發的控制命令轉發給記錄器,并接收記錄器反饋回來的狀態信息,試驗人員根據狀態反饋來監測記錄器是否工作正常。
2 CPCI總線接口設計
CPCI完全兼容PCI協議,本設計通過PCI9054總線控制芯片和FPGA來實現PCI協議,代替傳統的FIFO芯片和串/并轉換芯片,完成對模擬電路的控制功能,節約了板卡面積,減少PCB走線,有效防止了傳輸線之間的串擾[2]。
2.1 PCI9054工作模式選擇
PCI9054總線控制芯片有3種工作模式,分別為M模式、C模式、J模式。其中,M模式應用于MotorolaMPC850/860PowerQUICC和PowerPC80x/82x;C模式即非多路復用的32位地址和數據總線,應用于DSP、FPGA等;J模式即多路復用的32位地址和數據總線,應用于Intel1960、IBMPowerPC401、IDTRC32364、DSP以及IOP480等[3]。
C模式類似于單片機的工作方式,它的地址線和數據線分開使用,可以很方便地控制本地時序。在使用C模式時,只需要嚴格控制好本地端和CPCI 端的各種時序,就可以很好地使用PCI9054芯片。因此,在本設計中使PCI9054工作在C模式。通過設置MODE0(156引腳)和MODE1(157引腳)的值來實現其工作模式的配置,將PCI9054的156腳和157腳接地后,使其工作于C模式。
2.2 CPCI接口FPGA的邏輯控制
2.2.1 CPCI總線訪問本地總線時序介紹
PCI9054的訪問方式選擇DMA方式。PCI9054作為主控設備,通過其內部的DMA控制器來實現局部總線上的數據與CPCI總線上的數據之間的傳輸。DMA訪問方式下,CPCI總線向本地總線傳輸數據時,本地時序如圖2所示。
當上位機向接口卡下發控制命令時,上位機通過配置DMA控制器的命令/狀態寄存器來啟動DMA訪問。此時,DMA控制器通過發出LHOLD信號來向本地總線申請總線的主控權,本地FPGA收到LHOLD請求信號后,反饋一個信號LHOLDA來響應請求,DMA控制器收到此響應信號之后,便獲得主控本地總線的權利。當DMA控制器獲得主控權之后,ADS#信號變低,意味著地址總線LA上的地址為有效地址。BLAST#變低,單周期訪問開啟,只有收到本地總線反饋的READY#信號有效(低)時,才能真正開啟訪問。LW/R#為高代表寫操作,為低代表讀操作,如圖2所示,當上位機下發命令時為寫操作,LW/R#為高。當所有時序滿足之后,FPGA從地址LA上獲得數據信號LD。
當接口卡向上位機傳輸數據時,本地總線時序與圖2所示時序相似,只是LW/R#為低,進行讀操作。DMA控制器從地址LA將數據讀入其內部的緩存FIFO中,在不占用CPU資源的情況下,將數據存儲下來。如果ADS#處于高狀態,則代表開啟一次突發訪問,FPGA無條件向CPCI總線上傳數據。
2.2.2 FPGA控制本地時序
用VHDL語言編程來實現本地時序地控制。按照上一節介紹的時序控制接口卡與CPCI總線之間進行通信。FPGA內部調用一個FIFO,記錄器上傳的LVDS數據緩存于此FIFO中,當FIFO內數據達到2 KB時,其FIFO可編程半滿信號有效。當處于單周期讀訪問時,一旦FIFO可編程半滿則啟動一次DMA訪問。當處于單周期寫訪問時,FPGA從命令地址讀取上位機下發的命令數據。VHDL程序的流程圖如圖3所示。
3 高速數據接口設計
3.1 高速數據傳輸方式選擇
數據傳輸有并行和串行兩種方式。在傳輸速率要求不高、傳輸距離較短的電路中,并行傳輸方式是首選。但是,隨著數據傳輸速率以及時鐘頻率的提高,很容易發生數據和時鐘不同步的現象,造成數據接收錯誤的結果,較高的傳輸速率還會使信號線之間產生干擾。差分信號以其功耗低、串擾小和輻射低等特點,在各種高速總線中得到了應用。因此,這里采取LVDS串行通信技術。這種技術通過一對差分PCB走線或平衡電纜來傳輸幅度非常低的信號(約350 mV),傳輸速率可以達到100 Mb/s,甚至超過1 Gb/s,且其信號連線較少,帶寬較高,抗干擾能力較強[4],可以保證本設計中高速數據傳輸的正確性。
3.2 LVDS接口設計
由于趨膚效應和介質損耗[5],高速信號在傳輸過程中會發生衰減。因此,當傳輸距離較長時,往往要使用電纜驅動器和均衡器來保證高速數據傳輸的準確性。電纜驅動器將信號以最大功率耦合到電纜上,可以延長高速數據的傳輸距離;電纜均衡器可以對傳輸的信號進行高頻補償。
本設計中,LVDS串行器/解串器分別選用TI公司的SN65LV1203和SN65LV1224,這組芯片的數據傳輸速率最大可以達到660 Mb/s;信號驅動器/電纜均衡器分別選用NS公司的CLC001和CLC014,這組芯片的數據傳輸速率最大可以達到662 Mb/s。LVDS接口電路結構如圖4所示,記錄器的FPGA控制LVDS串行器將10 bit并行數據轉換成串行數據,再通過電纜驅動器將信號耦合到電纜上。接口卡的電纜均衡器對接收到的信號進行高頻補償之后傳送給解串器,解串器根據參考時鐘將串行數據轉換成10 bit的并行數據,由FPGA進行后續的處理。
為串行器提供一個頻率為18.432 MHz的時鐘,在時鐘上升沿時,串行器SN65LV1203將I/O口上的10 bit并行數據存入鎖存寄存器中,再轉換成串行數據傳輸給驅動器CLC001。串行器在發送數據時,會自動附加起始位和停止位,其中,起始位為“1”,停止位為“0”,起始位和停止位是串行數據流內嵌的同步標志。驅動器的外圍電路按照NS公司的CLC001芯片的典型應用電路進行配置。為了降低信號反射,在發送端要放置阻抗匹配電阻,在電纜均衡器的外圍電路配置中,接收端也要放置終端匹配電阻。
與串行器時鐘頻率保持一致,給解串器也提供一個相同頻率的時鐘REFCLK,且RCLK_R/F置高,即在時鐘的上升沿時刻,解串器將LVDS輸入端的串行信號轉換成10 bit并行信號,由FPGA控制通過CPCI總線上傳給上位機。
3.3 FPGA控制LVDS接收
為了解決LVDS數據接收時鐘與CPCI接口數據傳輸時鐘不同步的問題,FPGA調用一個異步時鐘控制的FIFO來進行數據緩存,當FIFO內數據達到一次DMA傳輸的數據量時,其可編程FIFO半滿信號有效。為了防止FIFO內數據溢出,FIFO深度要大于一次DMA傳輸的數據量。
4 全雙工RS422接口設計
4.1 全雙工RS422硬件電路設計
為了提高接口卡的抗干擾能力,需要采取隔離措施,以達到接口卡與記錄器之間電氣隔離、記錄器不受接口卡影響的目的。光電隔離是一種應用較為廣泛的隔離方法,常用于實現電氣隔離[6]。本設計要求RS422數據傳輸的波特率為115.2 kb/s,選用HCPL-063L光耦進行隔離,它是一種高速兼容LVTTL 3.3 V電平的光耦合器,輸出上升沿時間為45 ns,下降沿時間為20 ns,可以滿足波特率要求。由于HCPL-063L內部輸出端的三極管的集電極開路,所以在設計電路時需要外接上拉電阻。
光耦隔離需要注意的是,輸入/輸出的供電電源要進行隔離,否則就失去了隔離的意義。本設計采用DC-DC芯片RO3.33.3S隔離前后的3.3 V電源。RS422接口芯片選用應用比較廣泛的MAX3490,在接口處都有上拉、下拉電阻,即使接口短路也不會損壞電路。
4.2 RS422接口FPGA邏輯控制
本設計中RS422接口遵循UART協議,先發低位,再發高位,其中包括1 bit起始位、8 bit數據位和1 bit停止位,總共10 bit,無奇偶校驗位。接口卡的系統時鐘為36.864 MHz,傳輸1 bit二進制位需要經歷36 864 000/115 200=320個時鐘周期,傳輸1 B的數據則需要經歷320×10=3 200個時鐘周期。
在接收數據時,存在毛刺和干擾,為避免引起接收數據出現錯誤,以每位傳輸的中間態時鐘作為接收的時間,如起始位接收時鐘為第160個時鐘,第1位數據位為第480個時鐘,第2位數據位為第800個時鐘,以此類推,如圖5所示。
發送數據與接收數據的方法類似,是以每位傳輸的起始態時鐘作為發送的時間,起始位發送時鐘為第0個時鐘,第1位數據位為第320個時鐘,第2位數據位為第640個時鐘,以此類推。
5 設計驗證
給記錄器提供一個頻率為3 Hz、幅值為0.5 V~4.5 V的正弦模擬信號供其采集,接口卡接收記錄器下傳的數字量信號,并通過CPCI總線將數據上傳給上位機。用上位機畫圖軟件依據接收到的數據文件繪制波形,得到如圖6所示圖形。
如圖6所示,根據接口卡接收的數據繪制出的波形為光滑連續的正弦波,與信號源波形一致。根據圖中2點的橫坐標可以看出,2.5個正弦周期的長度間隔大約為0.836 s,可以計算出正弦波頻率為3 Hz,與信號源頻率一致。記錄器的ADC為16 bit,最大可測電壓值為5 V,即每個分層值約代表0.076 mV,圖中分層值的最小值約為6 724,最大值約為57 147,可以計算出上圖正弦波的幅值約為0.5 V~4.5 V,與信號源幅值一致。
上述驗證結果表明,接口卡能夠正確接收記錄器下發的高速數據并通過CPCI總線將數據上傳給上位機進行處理,具有很高的可靠性。
參考文獻
[1] 張華,胡修林,馬若飛.超高速數據采集系統設計與優化策略研究[J].電子技術應用,2010,36(12):86-90.
[2] 孫國良.基于FPGA的cPCI接口數據采集系統設計[D].北京:北京郵電大學,2009.
[3] 王旭.PCI9054局部總線三種工作模式的具體應用[J].電子與封裝,2005,12(5):27-28.
[4] 儲成群.基于LVDS接口的高速數據記錄器的設計[D].太原:中北大學,2011.
[5] 孟青.多通道數據采集記錄器的設計與研究[D].太原:中北大學,2013.
[6] 謝子青.光電隔離抗干擾技術及應用[J].現代電子技術,2003(13):33-34.