摘 要:設計了一種基于低壓差分信號(LVDS)協議的可編程高速信號模擬源。該信號模擬源采用Xilinx公司的Spartan-3E系列現場可編程門陣列(FPGA)作為核心處理芯片,整個邏輯設計集成在一片FPGA內,包括數據生成、信號采集、緩存、并串轉換以及LVDS協議數據傳輸與通用異步收發器控制字(UART)傳輸的全雙工通信等功能。本設計電路結構簡單、采集與發送數據速率高、傳輸接口通用性強且收發具有靈活的可編程性。
關鍵詞:信號模擬源;LVDS;UART;可編程邏輯器件
中圖分類號:TN919.3 文獻標識碼:A 文章編號:1673-5048(2014)05-0050-05
0 引 言
隨著通信技術的發展,高速數字系統設計中所采用的高性能微處理器的運行速度越來越快,芯片與芯片之間、外部設備與板卡之間的傳輸速率也越來越高。低壓差分信號(LowVoltageDifferentialSignaling,LVDS)傳輸技術,是一種基于ANSI/TIA/EIA-644LVDS接口標準,滿足高性能數據傳輸應用的新型傳輸技術。隨著用戶對系統抗干擾能力、通用性、結構簡化等要求,使得LVDS傳輸技術的優勢越來越明顯。LVDS擁有350mV低壓差分信號以及快速過渡時間。由于電壓信號幅度較低,且采用恒流源供電,因此產生的噪聲極低,且不論頻率高低,消耗的功率幾乎不變,最高傳輸速率可達3.125Gbps[1-2]。
本文設計并實現了一個基于LVDS傳輸協議的可編程高速信號模擬源,該模擬源采用現場可編程門陣列(FieldProgrammableGateArray,FPGA)作為核心處理單元,進行數據生成、邏輯控制和先入先出(FirstInputFirstOutput,FIFO)寄存器資源分配。用戶可通過RS-232串口進行參數靈
活配置,控制FPGA狀態機的跳轉,實現各種功能。
1 硬件總體設計
設計框圖如圖1所示。邏輯運算采用FPGA進行設計,因為FPGA具有重構性高、設計靈活、邏輯運算速度快、邏輯資源密度高等優點。設計的所有控制邏輯全部采用硬件電路實現,邏輯運算集成在一片FPGA中,減少外部電路的復雜度,同時也有利于降低功耗,提高電路工作效率[3]。
其硬件設備組成如圖2所示。主控FPGA芯片外部電路包括電源模塊、片外存儲模塊和時鐘模塊。電源模塊主要將外部提供的5V線性電源轉換為FPGA以及各芯片所需的3.3V驅動電壓、2.5 V輔助電壓、1.2V內核電壓,電源模塊輸出電流為1.5mA。本設計所用FPGA是基于SRAM查找表技術,掉電后其所有信息都將會丟失。因此,FPGA所需的配置數據應存儲在片外的非易失性存儲介質,如Flash中。待系統上電后,自動把配置數據從片外存儲器加載到FPGA,這個過程即為FPGA的加載配置過程。本設計片外Flash采用的是與SpartanXC3S1200E相匹配的XCF04S芯片。系統時鐘由外置30MHz晶振提供,經過DCM分頻后,由FPGA分配到各個邏輯模塊中,保證各個邏輯運算的時隙誤差最小化。BNC接口將待測設備通過LVDS控制協議串口傳輸進來的信號在示波器上實時、直觀地顯示。
通信接口技術是目前的一個重要發展方向,是基于軟件與硬件的綜合設計技術。UART串口與 LVDS協議接口控制相對簡單,不需要多余的驅動即可實現數據的有效傳輸。
系統工作流程如圖3所示。系統上電工作時,頂層狀態機進入初始狀態,使能UART接收模塊,準備接收PC發送過來的命令字。收到命令字后,FPGA使能UART發送模塊,將命令字返回,并對命令字進行解讀,進行狀態機的跳轉。
可編程接口設計和LVDS協議控制設計是本設計的主要部分。可編程接口設計完成PC對FPGA的控制以及結果的采集處理;LVDS協議控制設計完成FPGA與待測設備之間數據的采集、處理、傳輸等功能。
FPGA接入的時鐘由30MHz晶振產生。低于6 MHz的時鐘,無法通過DCM分頻獲得,一般通過計數分頻的方式,由計數器跳轉控制時鐘的翻轉。高于6MHz的時鐘通過DCM分頻所得。
2 高速信號模擬源軟件設計 2.1 可編程接口設計
PC經通用異步收發器(UniversalAsynchronous ReceiveTransmitter,UART)對LVDS協議串口進行邏輯控制。
UART為串行通信方式。只需要2根信號傳輸線(TXD、RXD)就可以完成一組數據的全雙工通信。信號傳輸也只有2種狀態,邏輯高電平(1)和邏輯低電平(0)[4]。
由于串行數據幀與接收時鐘是異步的,接收器采樣頻率是位時鐘頻率的整數倍。倍數越高,接收數據各位的分辨率越高。接收方應該在數據位跳變穩定的情況下采樣,即盡可能地靠近位周期的中心處對每位采樣。要求收發雙方的時鐘誤差容限在±5%[5-7]。
根據RS-232傳輸協議,本設計的數據位為8 bit,無奇偶校驗位,加上起始位與停止位需10個時鐘周期。波特率設定為9600。當FPGA檢測到起始位的下降沿后,狀態機跳轉到UART接收模塊,對字符接收。計數器同時從0計數,累加到1562時,對RXD線上信號進行第一次采樣,此后每隔30000000/9600=3125次就采一次樣,一直到字符傳輸完畢。計數器頻率為30MHz。移位寄存器將傳輸的UART串行信號轉換成8位并行信號,送入數據寄存器,便于FPGA對字符進行解析。完成一幀數據的接收。
UART傳輸信號主要對FPGA頂層狀態機進行控制,控制FPGA時鐘的選擇、對外傳輸速率的改變、數據的發送接收、并串轉換等功能。LVDS協議串口共有51腳,去除電源和地,考慮收發,可以同時傳輸四路數據、時鐘并行的信號。所以,UART字符的定義為:D0、D1,選擇數據與時鐘傳輸通道;D4、D5,選擇需要傳輸的速率;D2傳輸啟動信號,控制外部待測設備的開關;D3在自檢診斷時使用,為高時,LVDS協議控制串口組成閉環,FPGA對閉環數據進行比對,得出診斷結果;D6、D7對待測設備返回的狀態信號進行采集、存儲,并向PC端傳輸(如圖4所示)。
根據串行通信協議格式,UART發送端口包括TXD控制器、數據寄存器、移位寄存器。數據寄存器寄存待發送的數據,包括狀態信號、自檢診斷結果數據、“反饋校驗”的命令字符。
UART接收模塊接收到字符后,將字符原樣返回,做“反饋校驗”使用。FPGA對UART傳輸過來的命令字讀取后傳輸給PC端進行判斷,將反饋校驗字符與發送字符逐位比較,若不同,PC提示板卡運行錯誤。“反饋校驗”值為正確的時候,對命令字逐位進行解析,每位的定義由UART接收模塊給出。不同的字符會產生不同的邏輯運算。除了“反饋校驗”通過UART發送端輸出,還有兩路數據通過此輸出,一路是自檢診斷信號,由字符定義可知,當D3為高邏輯電平時,短接診斷通道打開,通過UART發送端口將結果傳輸給PC,1字節;一路是狀態信號,狀態信號是待測設備返回給FPGA的數據信號,當D7為高邏輯電平時,狀態機跳轉到狀態輸出模塊,通過UART發送端口,將FIFO中緩存的狀態信號傳輸給PC,直觀地觀察狀態變化,狀態信號共128字節。
UART發送時,開始位首先發送出去,同時發送數據由數據寄存器裝載到移位寄存器中,將數據以9600Hz逐位發送出去,并按照線性控制寄存器的要求加上停止位(如圖5所示)。其時鐘、幀結構配置和工作過程與接收模塊類似,因此,發送模塊也可以通過相似的狀態機實現。
2.2 LVDS協議控制實現
LVDS協議控制工作流程如圖6所示。LVDS為差分信號,一對線傳輸一個信號,一條線傳輸正信號,另一條線傳輸相反的電平信號,在接收端相減,這對于抑制共模噪聲十分有利。差分信號線極性相反,它們耦合得越緊密,相互抵消的磁力線就越多,泄露到外界的電磁能量也就越少。
本設計LVDS協議控制接口的功能分為提供待測設備電源和地、提供待測設備啟動/停止信號、向待測設備傳輸數據和時鐘信號、上傳待測設備的狀態信號以及為短接診斷提供數據通行環路。
2.2.1 LVDS收發模塊
FPGA與待測設備之間的通信通過LVDS協議控制端口實現。FPGA可同時控制4路待測設備,每一路包含啟動/停止信號、數據和時鐘信號、待測設備返回的狀態信號。FPGA對命令字解析后,會確定以多少速率,啟動哪一路待測設備。
時鐘信號共有四路,分別對應相關的數據傳輸速率,10MHz,15MHz,20MHz,30MHz。四路速率均由外部30MHz晶振經過DCM分頻所得。當UART傳輸不同的命令字時,會激發狀態機的變化,為保證在命令字傳輸過程中,LVDS串口傳輸正常運作,四路傳輸互不干擾,可對時鐘的觸發信號進行鎖存。因為D0、D1決定信號傳輸通道,D2控制待測設備的啟動/停止,D4、D5決定信號傳輸速率,可以將這5bit控制字符聯合起來,進行特定通道,特定速率的傳輸操作,用一個狀態機對5bit信號進行鎖存,這樣可以分別對四路通道進行不同的控制而不會互相干擾。
待測設備所需的啟動/停止信號以及返回的狀態信號不需要差分輸入輸出(如圖7所示),FPGA與待測設備可直接通過LVDS串口進行通信。但出于對FPGA的保護考慮,FPGA與LVDS串口之間通過芯片SN74LVTN245隔離,防止LVDS串口所接的外部設備出現故障時,對FPGA造成損傷。SN74LVTN245輸入輸出電壓保持為3.3V,通過DIR腳的高電平(發送)還是低電平(接收),可以控制信號的傳輸方向。
LVDS協議串口接收待測設備傳輸的狀態信號(如圖8所示),每一路狀態信號有兩個輸出方向,一路直接接BNC,連接到示波器上,可以直觀顯示狀態的變化;一路通過SN74LVTN245轉換后傳輸給FPGA進行緩存,在有需要的時候通過RS-232傳輸給PC。
傳輸數據采用上升沿采樣,以16進制0xFAF320為幀同步頭,用來在讀取數據的時候提供數據開始位;接著同步頭的是由UART接收過來的字符,用來在單獨對待測設備進行讀取時可以直觀核對是不是該命令字的輸出結果,便于校驗;后面是四字節的幀計數字節,此四字節主要用來查看在傳輸過程中是否有丟幀現象存在;最后是120個字節的數據位,用于查看在幀數據傳輸中有沒有丟字節出現。一幀為128字節,1024bit數據。圖10為LVDS數據和時鐘信號傳輸圖形。
LVDS協議控制發送端數據和時鐘信號為差分信號,傳輸介質為兩對差分信號線。時鐘信號與傳輸速率同步改變。
2.2.2 LVDS協議自檢模塊
待測設備接收數據后,通過USB將存儲的數據導入PC。依據FPGA生成數據的規律,在偵測到3字節的同步頭后,將后面第5~8字節的幀計數字節以及9~128字節分別剝離開來。幀計數字
節從0開始累加,每傳輸一幀數據自加1,一直到16進制的0xFFFFFF后又從0開始循環。PC將幀計數字節與具有相同變化的數組進行比較,每缺少一幀計數1,算出丟幀率=丟幀數/總幀數。最后的120字節同為累加數值以16進制表示,數據00~77,依次遞增。同樣將其與具有相同變化的數組比較,每丟一個字節或錯發一個字節,這一幀發送錯誤。最后與前面的幀計數字節的丟幀數一起除以總幀數可得出誤碼率。誤碼率可直觀顯示數據傳輸的性能好壞。
對待測數據通過LVDS控制協議串口接收到的數據進行分析時,有時候會發現誤碼率計算與預想的不一致,卻又無法確定是待測設備工作出現錯誤,還是FPGA測試設備工作出現錯誤。針對這一情況設計了LVDS自檢模塊。
LVDS協議自檢流程如圖11所示。在自檢時,將LVDS控制協議輸出串口與輸入串口短接,FPGA向LVDS協議串口發送的數據直接經短接頭返回,FPGA采集返回的數據,并與0xFAF320逐位比對。四路通道合用一個字節,高四位為0,低四位分別對應4~1通道的診斷結果。數值正確,則輸出串口工作正常信號值1;不正確,則不正確通道顯示0。
自檢信號與FPGA向LVDS串口發送數據模式相反。此時LVDS主動向FPGA發送差分的數據以及時鐘信號。差分信號轉TTL/CMOS可以通過與DS90LV047功能相反的芯片———DS90LV048,如圖12所示。
3 結 論
本文提出并實現了一種基于LVDS協議的可編程高速信號模擬源實現方案,該系統結構簡潔、成本低、可靠性高。樣機的實測結果表明,該系統能夠很好地實現UART串口高速全雙工通信以及LVDS的信號收發工作,適合于各類LVDS協議的數據收發設備性能測試與驗證。
參考文獻:
[1]楊翠虹,文豐,姚宗.基于LVDS的高速數據傳輸系統設計[J].通信技術,2010,43(9):59-61.
[2]侯利民,蘇淑靖.基于低壓差分信號(LVDS)總線的數字信號源設計與實現[J].科學技術與工程,2013,13(32):9714-9718.
[3]王敬美,楊春玲.基于FPGA和UART的數據采集器設計[J].電子器件,2009,32(2):386-390.
[4]楊揚,葉梵,李力.基于FPGA的UART設計與實現[J].電子測量技術,2011,34(7):80-82.
[5]李宏毅,王大明,顧雪琳,等.簡化UART功能的FPGA實現[J].現代電子技術,2004(4):64-66.
[6]牛濤,吳斌,焦鳳川.基于FPGA的UART電路的設計[J].電子測量技術,2006,29(3):73-75.
[7]王永成,黨源源,徐抒巖.基于CPLD實現DSP的UART設計研究[J].電子器件,2008,31(3):1067-1072.