基于fpga的uart字節(jié)同步的實現(xiàn)方法及實現(xiàn)裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及UART字節(jié)同步的實現(xiàn)技術(shù)領(lǐng)域,尤其是涉及一種基于FPGA的UART字節(jié)同步的實現(xiàn)方法及實現(xiàn)裝置。
【背景技術(shù)】
[0002]UART (Universal Asynchronous Receiver / Transmitter,通用異步收發(fā)傳輸器)是一種串行通信方式,串行通信方式具有傳輸線少,成本低等優(yōu)點。串行通信分為兩種類型:同步通信方式和異步通信方式,UART的通信方式為異步通信方式,主要因為接受和發(fā)送端始終是可以獨立的,這樣有利于增加發(fā)送和接收的靈活性。在串口的異步通信中,數(shù)據(jù)以字節(jié)為單位的字節(jié)幀進行傳送。發(fā)送端和接收端必須按照相同的字節(jié)幀格式和波特率進行通信,其中字節(jié)幀格式規(guī)定了起始位、數(shù)據(jù)位、停止位等,UART通信是由起始位和停止位來實現(xiàn)字符的同步。
[0003]不過這種異步方式通常也會帶來一個問題,就是容易產(chǎn)生字節(jié)不同步,且這種現(xiàn)象一旦產(chǎn)生就不容易恢復(fù)。尤其是UART通信的兩端的電壓供電不是同步的時候。
[0004]如UART發(fā)送端連續(xù)發(fā)送一串字符,當在發(fā)送一個字節(jié)的過程中(UART發(fā)送端已向UART接收端發(fā)送了起始位信號,UART接收端未接收到),接通UART接收端電源,UART接收器件開始工作,如果這個字節(jié)的位串也滿足UART的字節(jié)起始條件,那么接收端就誤認為這是數(shù)據(jù)的起始信號,則從該位串起接受數(shù)據(jù),這種情況下UART接收端接收到的就是錯誤的數(shù)據(jù),且進一步導(dǎo)致后面接收到的數(shù)據(jù)也是錯誤的,難以恢復(fù)。
[0005]在FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)之間通過UART進行通信如果處理不當便會容易產(chǎn)生上述問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺陷,提供一種基于FPGA的UART字節(jié)同步的實現(xiàn)裝置及實現(xiàn)方法,通過在UART通信過程中加入同步機制,以避免UART通信易產(chǎn)生的字節(jié)不同步的問題。
[0007]為實現(xiàn)上述目的,本發(fā)明提出如下技術(shù)方案:一種基于FPGA的UART字節(jié)同步的實現(xiàn)方法,UART發(fā)送端發(fā)送具有起始標志的傳輸數(shù)據(jù)給UART接收端,在發(fā)送過程中,所述UART發(fā)送端發(fā)送一同步信號給UART接收端,UART接收端檢測到所述同步信號后,則進入到初始狀態(tài)去檢測傳輸數(shù)據(jù)的起始標志,在UART接收端根據(jù)所述初始狀態(tài)檢測到所述傳輸數(shù)據(jù)的起始標志后,開始接收所述傳輸數(shù)據(jù)。
[0008]優(yōu)選地,在UART接收端接入一同步檢測器,用于檢測UART發(fā)送端發(fā)出的同步信號并使得UART接收端進入到初始狀態(tài)。
[0009]優(yōu)選地,所述UART發(fā)送端每隔一定字節(jié)發(fā)送一同步信號給UART接收端。
[0010]所述起始標志為從高電平信號到低電平信號。
[0011]所述同步信號為至少一個字節(jié)的高電平信號,用于通知UART接收端進入初始狀態(tài),初始狀態(tài)與傳輸數(shù)據(jù)的起始標志相同。
[0012]本發(fā)明還提出另一種技術(shù)方案:一種基于FPGA的UART字節(jié)同步的實現(xiàn)裝置,包括UART發(fā)送器,通過數(shù)據(jù)線與UART發(fā)送器通信的UART接收器,以及一端接到所述數(shù)據(jù)線上,另一端與所述UART接收器通信的UART同步檢測器,所述UART發(fā)送器用于發(fā)送傳輸數(shù)據(jù)給UART接收器,并在發(fā)送過程中,發(fā)送出一個同步信號給UART同步檢測器,所述UART同步檢測器用于檢測UART發(fā)送器發(fā)送的同步信號并使得UART接收器進入初始狀態(tài),所述UART接收器用于接收所述傳輸數(shù)據(jù)。
[0013]優(yōu)選地,所述傳輸數(shù)據(jù)具有起始標志,所述起始標志為從高電平到低電平。
[0014]優(yōu)選地,所述UART發(fā)送器每隔一定字節(jié)發(fā)送出一個同步信號。
[0015]優(yōu)選地,所述同步信號為至少一個字節(jié)的高電平信號。
[0016]優(yōu)選地,所述UART接收器為狀態(tài)機。
[0017]本發(fā)明的有益效果是:本發(fā)明在UART通信過程中加入同步機制,即在UART發(fā)送端加入至少一個字節(jié)的高電平作為同步信號,同時在UART接收端相應(yīng)加入同步檢測器,從而實現(xiàn)了 UART通信的字節(jié)同步,可以及時調(diào)整UART接收端的狀態(tài),同時也可使UART接收端有機會從錯誤狀態(tài)中及時恢復(fù)過來,降低了 UART接收端接收錯誤數(shù)據(jù)的幾率,提高了 UART通信的數(shù)據(jù)傳輸準確性。
【附圖說明】
[0018]圖1是本發(fā)明基于FPGA的UART字節(jié)同步的實現(xiàn)方法的流程示意圖;
[0019]圖2是本發(fā)明基于FPGA的UART字節(jié)同步的實現(xiàn)裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0020]下面將結(jié)合本發(fā)明的附圖,對本發(fā)明實施例的技術(shù)方案進行清楚、完整的描述。
[0021]本發(fā)明基于UART協(xié)議,在UART發(fā)送端發(fā)送傳輸數(shù)據(jù)給UART接收端的過程中,力口入一同步信號,以實現(xiàn)UART通信中的字節(jié)同步,如圖1所示,本發(fā)明所揭示的一種基于FPGA的UART字節(jié)同步的實現(xiàn)方法,包括以下步驟:
[0022]SUUART發(fā)送端發(fā)送具有起始標志的傳輸數(shù)據(jù)給UART接收端,在發(fā)送傳輸數(shù)據(jù)的過程中,每隔一定字節(jié)發(fā)送一同步信號給UART接收端。
[0023]按照UART協(xié)議的工作原理可知,UART發(fā)送端是將傳輸數(shù)據(jù)的每個字符以串行方式一位接一位地進行傳輸?shù)模渲袀鬏敂?shù)據(jù)的每個字符包括起始位、數(shù)據(jù)位和停止位。具體地,UART發(fā)送端是先輸出一起始位,表示傳輸字符的開始,起始位用下降沿(即字符的起始標志)通知UART接收端開始傳輸;然后緊跟起始位之后由低到高輸出4?8個數(shù)據(jù)位,構(gòu)成一個字符,通常數(shù)據(jù)位采用ASCII碼;在數(shù)據(jù)位之后可選擇地設(shè)置奇偶校驗位,來檢驗數(shù)據(jù)傳送的正確性;最后是高電平的停止位,表示一個字符數(shù)據(jù)的傳輸結(jié)束,同時也提供給UART發(fā)送器一個校正錯誤的機會。
[0024]與現(xiàn)有技術(shù)不同的是,本發(fā)明在UART發(fā)送端向UART接收端傳輸數(shù)據(jù)的過程中,由UART發(fā)送端每隔一定字節(jié)加發(fā)一同步信號給UART接收端,以及時通知UART接收端進入到初始狀態(tài)