摘 要: 針對通用異步接收和發送器" title="發送器">發送器UART對隨機脈沖干擾特別敏感的弱點,引入數字相關器" title="相關器">相關器,以實現信號的最佳接收及提高UART的抗干擾性能;結合現場可編程邏輯門陣列FPGA的結構特點針對同步模塊和數字相關器等關鍵部件進行邏輯設計" title="邏輯設計">邏輯設計優化,使UART性能大為提高。
關鍵詞: UART 最佳接收 數字相關器 FPGA
在嵌入式系統設計中常使用通用異步接收和發送器UART(Universal Asynchronous Receiver/Transmitter)實現系統控制信息或低速數據信息的傳輸,而UART所采用的奇偶校驗方式不具備前向糾錯能力,檢錯能力也有限,所以在設計UART時要盡可能提高其抗干擾能力,以加強系統的可靠性。
1 基于最佳接收的UART
目前UART中的接收器多采用如圖1所示的設計。
同步模塊的作用是檢測異步串口的同步位(Sync位)并提取抽樣判決需要的采樣信號,使抽樣判決模塊盡量在輸入信號" title="輸入信號">輸入信號RXD的碼元中部對信號采樣(如圖2)。因為信號在碼元邊沿跳變時會有振鈴或過沖等抖動,所以碼元的邊沿部分不適合采樣。要想獲得較佳的抽樣判決效果,最好在靠近碼元中部的位置對接收到的信號進行抽樣判決。
這種在碼元中部進行抽樣判決的接收方法可以有效去除振鈴、過沖等信號的邊沿抖動帶來的影響,但無法解決隨機脈沖干擾帶來的問題。如圖3所示,隨機脈沖干擾可能在任何時刻出現。即使同步模塊工作正常,使得抽樣判決總處在碼元中部的最佳采樣時刻,也有可能由于隨機脈沖干擾造成判決錯誤。
為了盡可能地減弱隨機干擾及其他干擾給信號接收帶來的影響,引入最佳接收機結構來設計UART的接收器,以實現信號的最佳接收。等概率二進制確知信號(異步串口通信的信號即屬于此情況)的最佳接收機結構如圖4所示。
圖4中的乘法器和積分器實質上構成了一個相關器,因此上述結構又稱為相關器形式的最佳接收機。其中相關器的輸出u(t)由下式定義:
其中:T為采樣周期,N表示一個碼元的時間包含N個采樣周期。
U1(kT)和U2(kT)由上式計算可得,然后送到比較器在最佳判決時刻(t=kNT)進行比較,若U1(kT)≥U2(kT),則判決為邏輯1,否則判決為邏輯0。
UART接收器接收的信號是未經調制的二進制基帶信號,碼元波形不是高電平" title="高電平">高電平就是低電平,兩種碼元的波形截然不同。因此,如果輸入信號Y(nT)與S1(kT)相關運算的結果較大,則Y(nT)與S2(kT)相關運算的結果就很小;反之亦然。所以可以將上述最佳接收機結構中S2(kT)這一路相關器省略,只保留一路相關器。最后的比較器改成判決器,判決準則是:如果相關器在最佳判決時刻(t=kNT)的輸出大于某個閾值,則判決為邏輯1;否則判決為邏輯0。經過簡化改進基于最佳接收機結構的UART接收器的框圖如圖5所示。
?
下面以一個簡單示例證明基于最佳接收的UART接收器可以有效地去除隨機干擾給信號接收帶來的影響。如圖6所示,在這個碼元周期內,如果采用一次抽樣判決,則即使處于一次抽樣判決的最佳采樣時刻,也會由于隨機脈沖干擾而產生誤判;如果引入數字相關器在最佳判決時刻進行判決,則盡管由于信號邊沿的抖動和隨機脈沖的干擾,信號的波形遭到了破壞,但信號在碼元周期內相關運算的結果為7,大于閾值5,接收器依然能正確地判定接收到的信號為邏輯1。這將有效抑制隨機干擾給信號接收帶來的影響。
2 基于FPGA的UART設計優化
數字相關器的引入,極大地提高了UART接收器的抗干擾性能,但也帶來了兩個問題:
(1)在數字相關器輸出相關運算的結果后,判決器需要在最佳判決時刻進行判決,因為此時與信號的相關輸出最大。同步模塊得到的判決信號與這個最佳判決時刻的偏移越大,UART接收器的性能就越差。也就是說,數字相關器對同步模塊的判決信號有很高的精確度要求。
(2)數字相關器是一個運算量相當大的復雜邏輯器件。
以上兩個問題使得UART接收器的邏輯結構非常龐大,并將耗用很大的邏輯資源。而在大多數嵌入式系統應用中,UART通常只是控制信息的一個接口,如果設計出來的UART的IP本身就占用了大量的邏輯資源,則使用者肯定不能接受,且這樣的UART的IP核也毫無價值。所以,要使得這種高性能的UART能在實際工程中應用,就必須優化UART的邏輯設計,減少耗用的資源。下面將以現場可編程邏輯門陣列FPGA(Field Programmable Gate Array)為設計平臺,根據UART接收器中同步模塊和數字相關器的結構特點以及FPGA的結構特點,對邏輯設計進行優化。
2.1 同步模塊的設計優化
UART的同步模塊主要檢測Sync位并得到判決信號。理想情況下,如果在一個碼元內有N次采樣,則當N次采樣的結果都為0時,表明檢測到一個Sync位,而且此時就是數字相關器的最佳判決時刻(如圖7)。可是由于信號的邊沿抖動或是隨機脈沖干擾,N次采樣的結果通常無法達到同時為0的理想情況,如果以N作為檢測同步的門限,則可能檢測不到Sync位,造成漏同步。
為了保證接收器能抵御一定程度的干擾而進行正確的同步,檢測同步的門限不能取N。假定同步檢測的門限定為(N-3),則會出現這樣的問題:如果接收到的信號波形良好,而又采用(N-3)作為檢測同步門限,則同步模塊得到的判決信號實際上偏離了數字相關器的最佳判決時刻,使判決器誤判的可能性增加。較好的解決辦法是增大單個碼元周期內的采樣次數N,使同步檢測門限(N-3)與判決器判決門限N/2有較大距離,從而使后端的判決器有更好的抗干擾性能。根據實際測試的經驗,取N為16,以13作為同步檢測門限,以8作為判決門限。這樣既能有效防止因干擾而造成的漏同步,又能保證后端的數據判決有較好的抗干擾性能。
由上所述,同步模塊實際上是對接收到的16個采樣值進行譯碼,當有13個0時表示檢測到同步,并將此時得到的判決信號提供給后端的判決器進行數據判決。在物理上這就是一個16輸入的組合電路。由于FPGA有豐富的時序邏輯資源而缺乏組合邏輯資源,因此該電路模塊若是在FPGA上實現要耗用大量的邏輯資源,所以需要對該模塊的邏輯設計進行優化。
邏輯優化的原則是充分利用FPGA邏輯資源豐富的特點,以相同功能的時序電路替代這個龐大的組合電路。如圖8所示,輸入信號RXD經過D觸發器采樣并經過一個反相器后做為使能信號送給下一級的模13計數器(即對D觸發器采樣得到的低電平計數),這樣就可以用時序統計邏輯來替代原來的組合統計邏輯。對FPGA,這樣的時序電路只需要耗用少數幾個D觸發器,可以極大地節省資源。然而時序統計邏輯可能會由于對隨機脈沖干擾帶來的反常低電平的采樣積累而產生誤同步,所以需要同時對輸入信號RXD經過D觸發器的采樣得到的高電平進行計數。若得到連續多個不同長度(圖7中長度為8)的高電平,則說明正在接收的不是Sync位,即使采樣得到了低電平,也是干擾信號,這時就要對模13計數器復位,以防止干擾(低電平的干擾)的累積產生誤同步。
2.2 數字相關器的設計優化
數字相關器的數學表達式為:
這時乘法器實際上是不需要的,數字相關器的輸出是最近的N(N=16)個輸入采樣(即輸入信號RXD的采樣)的疊加。輸入信號RXD的采樣是1比特量化,其值為邏輯1(高電平),或邏輯0(低電平)。所以對輸入采樣的疊加可以用計數器實現:邏輯1使計數器計數加1,邏輯0則保持計數器的值不變。這樣,復雜的數字相關器就可以用一個計數器實現。
圖9為經過邏輯優化的數字相關器和判決器的電路。RXD經過D觸發器(一個碼元周期采樣N=16次)送入數字相關器。該數字相關器在邏輯設計上被優化為一個計數器,對D觸發器輸出的邏輯1進行統計計數。當同步模塊送來判決信號時,判決器根據當時數字相關器的計數結果進行硬判決:計數結果≥8(N/2)即為邏輯1,否則為邏輯0(邏輯上把計數結果的Count[3]和Count[4]作邏輯或運算為抽樣判決結果輸出)。判決信號同時還要對數字相關器(即計數器)復位,因為這同時是新碼元接收周期的開始,使數字相關器重新進行計數疊加。
?
3 基于FPGA的UART設計實現
UART根據功能劃分為波特率控制器、發送器和接收器三個模塊。圖10是UART的整體設計框圖。Out8_RxData[7..0]和Out_RxDateValid是接收器收到數據后輸出的數據及其使能信號。而In8_TxData[7..0]和In_TxDataEna是發送器要發送的數據及輸入使能信號。校驗參數設置包括是否需要校驗、奇偶校驗等。
3.1 波特率控制器的設計
波特率控制器根據波特率控制參數的設置,為接收器和發送器提供工作使能信號,這種工作使能信號的頻率決定了UART工作的波特率。從邏輯設計的角度看,波特率控制器實質上是一個可變模計數器,波特率控制參數調整計數器的模,從而為接收器和發送器提供各種符合通信波特率要求的工作使能信號。
3.2 發送器的設計
發送器在接收到并行發送數據后,將數據進行并串變換,按照波特率控制器提供的工作使能信號的速率,將數據及奇偶校驗位(是否發送校驗位根據參數設置)逐位發送。發送器在邏輯設計上是一個有限狀態機,圖11是發送器狀態跳轉圖。
3.3 接收器的設計
接收器的邏輯框圖見圖5,其中同步模塊、數字相關器和判決器已詳細介紹。下面介紹數據接收模塊。數據接收模塊負責將判決器的判決輸出逐位接收,然后將接收到的串行位串轉換成8位的字節,根據校驗的參數進行設置。如果無需校驗,則直接輸出收到的字節;如果需要校驗,則根據設置進行奇偶校驗。如果校驗顯示接收有錯誤,則直接丟棄接收結果;如果校驗無誤,將收到的字節輸出。數據接收模塊在邏輯上也是由一個有限狀態機實現,圖12是數據接收模塊的狀態跳轉圖。
4 綜合與測試
UART設計完成后,采用Altera公司的開發軟件QuartusII綜合實現,器件選用Cyclone系列的FPGA——EP1C12Q240C8。整個UART占用了120個FPGA的邏輯單元(LE,Logic Element)。可以說所耗邏輯資源非常小,而且使用方便,適合工程使用。
為了測試這個UART的IP的工作穩定度,采用串口助手以各種速率不間斷發送數據流給UART進行接收測試并回發,在每次長達15分鐘的不間斷接收并回發數據的測試過程中,UART的通信錯誤是0。在性能上,比以前設計的UART(基于單次采樣而不是基于最佳接收)大為提高,而消耗的邏輯資源基本一致。目前這個基于最佳接收的UART的IP已經在本研究所的FPGA產品中推廣,獲得一致好評。
參考文獻
1 繆眾林,丁克忠.帶硬件地址識別的UART IP的設計和實現.電子技術應用,2004;30(6)
2 李群芳,黃 建.單片微型計算機與接口技術.北京:電子工業出版社,2001
3 樊昌信.通信原理(第5版).北京:國防工業出版社,2001
4 Bernard Sklar.Digital Commun-ications Fundamentals and Applications(Second Edition).Beijing:Publishing House of Electronics Industry,2002
5 Cyclone_device_handbook.Altera Corp,2003,10