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