肖鵬,屈盼讓,孫少華,李慶楠
(中航工業(yè)西安航空計算技術研究所,陜西西安,710119)
串行通信廣泛應用于數(shù)字通信和工業(yè)控制領域,傳統(tǒng)的專用串口通信芯片接口復雜,體積較大,隨著微電子技術的發(fā)展,F(xiàn)PGA在數(shù)字電路設計中被廣泛使用,完全可以將串口通信的功能集成在FPGA內,這樣不僅減少了外圍電路的體積,降低了設計的復雜性,同時可通過設計可以提高數(shù)據(jù)通信的可靠性。
如圖1所示,異步串行通信系統(tǒng)由傳感器/數(shù)據(jù)模塊、電平轉換模塊、FPGA和上位機組成。核心部分是FPGA。FPGA控制完成串行數(shù)據(jù)的采集和發(fā)送,上位機通過軟件讀取FPGA中FIFO的數(shù)據(jù)或向FIFO中發(fā)送數(shù)據(jù)。
在數(shù)據(jù)接收中對數(shù)據(jù)的接收是在監(jiān)測到起始位后按照要求的波特率采樣,在通信過程中受到干擾的話就會出現(xiàn)監(jiān)測到假數(shù)據(jù)起始位,造成數(shù)據(jù)錯誤和誤碼。為了提高接收數(shù)據(jù)的準確性,減少誤碼率,應采用數(shù)據(jù)傳輸波特率n(n≥1)倍的速率對數(shù)據(jù)進行采樣。
圖1 系統(tǒng)原理框圖
圖2 16倍波特率速率采樣示意圖
圖3 16倍波特率速率采樣時情況1
圖4 16倍波特率速率采樣時情況2
以16倍波特率速率采樣為例:采用數(shù)據(jù)傳輸速率的16倍進行采樣,采樣時鐘連續(xù)采樣到8個低電平信號時可以確定此時的低電平信號為正確的數(shù)據(jù)起始位,這樣可以排除干擾信號產(chǎn)生的錯誤起始位信號。在采集到第8個低電平之后,每隔16個采樣時鐘對數(shù)據(jù)采樣一次,并將采樣到的數(shù)據(jù)作為接收的數(shù)據(jù)發(fā)送給移位寄存器,最后通過移位存入到接收FIFO中。采樣過程如圖2所示。
采用n倍波特率速率采樣的方法的關鍵是采樣到次低電平信號確定起始位,此時可以保證該位為起始位數(shù)據(jù)波形的中點,這種采樣方法可以提高對串行數(shù)據(jù)波特率的容錯性。當采用n倍波特率速率采樣時保證數(shù)據(jù)采集的兩種極限情況,一種情況是數(shù)據(jù)采樣的最后一次采樣在實際數(shù)據(jù)最后一位有效的最開始時,如圖3所示。另一種情況是數(shù)據(jù)采樣的最后一次采樣在實際數(shù)據(jù)最后一位有效的最后時刻,如圖4所示。根據(jù)這兩種情況可計算出采用n倍波特率速率采樣的比特率容錯范圍。
假設標準波特率為,實際波特率為,則對于圖3情形有式(1)。
可得出實際波特率 BRmin=0.952Bs
對于圖4情形有式(2)。
可得出實際波特率 BRmax= 1 .048Bs。那么采用n倍波特率速率采樣串行數(shù)據(jù),F(xiàn)PGA設計實現(xiàn)的波特率的誤差在正負4.8%之內就可以準確的采樣到數(shù)據(jù),考慮到遠端傳輸可能出現(xiàn)誤差,將設計的波特率誤差控制在2.5%以內以保證數(shù)據(jù)的準確。
上述計算忽略了波特率速率倍數(shù)n的影響,實際應用中發(fā)現(xiàn)n的值越大,波特率的容錯范圍會更寬。
以UART RS422為例,使用VHDL語言編寫UART RS422收發(fā)控制邏輯。波特率發(fā)生器使用獨立的時鐘且波特率可配置。接收數(shù)據(jù)采樣使用FGPA系統(tǒng)主時鐘,則采樣速率相對波特率的倍數(shù)即位時鐘頻率相對波特率的倍數(shù)。硬件平臺資源:FPGA使用Xilinx Virtex-4,串行通信協(xié)議芯片使用MAX3490,系統(tǒng)主時鐘頻率20MHz,異步UART收發(fā)波特率發(fā)生器使用時鐘頻率16MHz。
試驗中將PC機作為上位機,通過UART RS232與 FPGA通 信,RS232的 通信是FPGA開發(fā)板接口電路實現(xiàn)。UART RS422發(fā)送的數(shù)據(jù)通過外部回繞接收回來以觀察數(shù)據(jù)的正確。通過分析計算的能夠準確接收數(shù)據(jù)的實際波特率與對應理想波特率差的范圍如圖5中兩條實線包含的范圍。
實驗中通過配置分頻因子寄存器配置波特率,在不同的波特率下觀察接收的數(shù)據(jù)是否與發(fā)送的數(shù)據(jù)一致,實驗中選取常用的波特率及常用波特率附近的波特率進行試驗,配置的UART RS422波特率如表1所示。
圖5 波特率容錯范圍
表1 實驗使用波特率對應表(bps)
在上位機PC上通過串口調試助手發(fā)送配置寄存器地址和數(shù)據(jù)讀寫地址。實驗結果如圖6所示。
圖6 實驗結果數(shù)據(jù)
圖中圓點表明實驗中FPGA接收的數(shù)據(jù)正確,叉點表明實驗中數(shù)據(jù)不正確。從圖中可以看出,實際波特率與對應波特率差在兩條實線范圍內的實驗點FPGA接收到的數(shù)據(jù)均是真確的,而實際波特率與對應波特率差在兩條實線范圍外的實驗點FPGA接收的數(shù)據(jù)都不正確。
本文設計一種基于FPGA的異步串行通信模塊,并設計一種通用的異步串行通信數(shù)據(jù)接收模塊的數(shù)據(jù)采集方法以提高對異步串行傳輸波特率的容錯度。設計實驗進行波特率容錯的驗證。通過對實驗的結果可以得出,實際波特率與對應理想波特率的差在±4.8%的范圍內的,F(xiàn)PGA采集到的數(shù)據(jù)均是正確的,實際波特率與對應理想波特率的差超出這個范圍的,F(xiàn)PGA采集到的數(shù)據(jù)都不正確。以此驗證了設計的方法可以提高異步串行通信中對數(shù)據(jù)傳輸波特率的容錯性,當電路受到干擾使得晶振輸出的時鐘頻率發(fā)生微弱變化的時候能夠繼續(xù)保證串行數(shù)據(jù)的準確性,提高了異步串行通信的抗干擾能力。
參考文獻
[1]黨俊博,李哲,李雅俊.基于FPGA的串口通信電路設計與實現(xiàn)[J]電子科技,2016,29(07): 106~109.
[2]韓佩富,潘峰,趙新秋 基于VHDL的異步串行通信電路設計[J].微電子技術,2003,31(04): 29-33.