用CPLD實(shí)現(xiàn)串行通信時(shí)的波特率自動(dòng)偵測(cè)_第1頁
用CPLD實(shí)現(xiàn)串行通信時(shí)的波特率自動(dòng)偵測(cè)_第2頁
用CPLD實(shí)現(xiàn)串行通信時(shí)的波特率自動(dòng)偵測(cè)_第3頁
用CPLD實(shí)現(xiàn)串行通信時(shí)的波特率自動(dòng)偵測(cè)_第4頁
用CPLD實(shí)現(xiàn)串行通信時(shí)的波特率自動(dòng)偵測(cè)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

用CPLD實(shí)現(xiàn)串行通信時(shí)的波特率自動(dòng)偵測(cè)楊李莎1朱華福2(1.長安大學(xué)研究生部,陜西西安710064;2.云南昆船設(shè)備有限公司昆明650236)摘要:本文介紹了一種利用CPLD實(shí)現(xiàn)波特率自動(dòng)偵測(cè)的方法,文章最后給出其仿真結(jié)果關(guān)鍵詞:串行通信波特率自動(dòng)偵測(cè)復(fù)雜可編程邏輯器件Abstract:Inthispaper,itintroducesawaytoautomaticallydetectbaudratebyusingCPLD,andintheendindicatesit'semulationresults.Keywords:serialcommunicationbaudrateautodetectedCPLD1、 引言串行數(shù)據(jù)通信是應(yīng)用極為廣泛的技術(shù),通過數(shù)據(jù)傳輸控制或監(jiān)測(cè)中心可以對(duì)遠(yuǎn)端設(shè)備進(jìn)行控制和監(jiān)測(cè)設(shè)備的工作狀態(tài)串行外設(shè)都會(huì)用到RS-232C異步串行接口?傳統(tǒng)上采用專用的集成電路即UART實(shí)現(xiàn),如TI、EXAR、EPIC的550、452等系列,但是我們一般不需要使用完整的UART的功能,而且對(duì)于多串口的設(shè)備或需要加密通訊的場(chǎng)合使用UART也不是最合適的。如今的許多的電器都有串口,主要用于軟件的升級(jí)或者用于自診斷。通常單機(jī)設(shè)備的串行通信波特率設(shè)置都是采用硬件撥碼的方式進(jìn)行的,對(duì)于一些撥碼開關(guān)特別多的設(shè)備來說難于記憶,因此能否尋求一種波特率自適應(yīng)的方法來解決這個(gè)問題呢?回答是肯定的,本文就介紹一種用復(fù)雜可編程邏輯器件來實(shí)現(xiàn)波特率自動(dòng)偵測(cè)的方法。系統(tǒng)只設(shè)計(jì)了數(shù)據(jù)接收模塊,利用VHDL語言對(duì)其進(jìn)行編程,最后給岀其仿真結(jié)果。2、系統(tǒng)設(shè)計(jì)2.1系統(tǒng)介紹圖1所示為數(shù)據(jù)接收模塊結(jié)構(gòu)框圖,數(shù)據(jù)接收模塊由波特率發(fā)生基準(zhǔn)時(shí)鐘、開始位下降沿檢測(cè)、接收控制、串并轉(zhuǎn)換器、鎖存器、緩沖器等部分組成。為了能準(zhǔn)確地偵測(cè)岀接收數(shù)據(jù)的波特率,數(shù)據(jù)接收模塊中采用了波特率發(fā)生基準(zhǔn)時(shí)鐘,首先用基準(zhǔn)時(shí)鐘對(duì)RXD端的數(shù)據(jù)進(jìn)行接收采樣,然后按波特率自動(dòng)偵測(cè)原理進(jìn)行波特率自動(dòng)偵測(cè),最后產(chǎn)生一個(gè)與發(fā)送端發(fā)送的數(shù)據(jù)相同的波特率,利用波特率進(jìn)行通信。波特率發(fā)生基準(zhǔn)時(shí)鐘3開始位下降沿檢測(cè)串并轉(zhuǎn)換器緩沖盤鎖存盤波特率自動(dòng)偵測(cè)波特率發(fā)生基準(zhǔn)時(shí)鐘3開始位下降沿檢測(cè)串并轉(zhuǎn)換器緩沖盤鎖存盤波特率自動(dòng)偵測(cè)數(shù)據(jù)輸岀1【作者簡(jiǎn)介】楊李莎(1981—)女,長安大學(xué)研究生部04級(jí)交通信息工程及控制專業(yè)碩士研究生,主要從事高速公路和城市道路的交通控制及管理研究。

圖1數(shù)據(jù)接收模塊結(jié)構(gòu)框圖圖1數(shù)據(jù)接收模塊結(jié)構(gòu)框圖為了能對(duì)位進(jìn)行正確的操作,以基準(zhǔn)波特率16倍的速率采樣RXD端的電平,這就把接收一位的時(shí)間分成16份,當(dāng)檢測(cè)到開始位的下降沿時(shí),就開始進(jìn)行數(shù)據(jù)采樣。采樣的數(shù)據(jù)為一個(gè)位的第6、7、8三個(gè)狀態(tài),然后三個(gè)里面取兩個(gè)以上相同的值作為采樣結(jié)果,這樣可以避免干擾。2)串行數(shù)據(jù)接收控制當(dāng)開始位的采樣結(jié)果不是0的時(shí)候就判定為接收出錯(cuò),把串行接收控制器的位計(jì)數(shù)器復(fù)位。在波特率未偵測(cè)之前,當(dāng)接收完波特率自動(dòng)偵測(cè)原理需要的位數(shù)后就進(jìn)行數(shù)據(jù)的輸出,并把串行數(shù)據(jù)接收控制器的位計(jì)數(shù)器復(fù)位,等待正式數(shù)據(jù)的傳輸開始。當(dāng)波特率確定之后,按照設(shè)計(jì)的數(shù)據(jù)傳輸格式(開始位、8位數(shù)據(jù)、停止位、無校驗(yàn)位)當(dāng)接收完10位數(shù)據(jù)后就進(jìn)行數(shù)據(jù)的輸出,并把串行數(shù)據(jù)接收控制器的位計(jì)數(shù)器復(fù)位,等待下一數(shù)據(jù)的到來。2.2波特率自動(dòng)偵測(cè)原理眾所周知,微機(jī)鍵盤中的回車鍵(CR)常用于命令的執(zhí)行,許多程序中的命令都是以回車鍵來結(jié)束的,因此在波特率自動(dòng)偵測(cè)中也采用回車鍵。因?yàn)榛剀囨I在ASCII碼中的值為0X0D(十六進(jìn)制),用二進(jìn)制來表示即為00001101B,在異步傳輸過程中,數(shù)據(jù)的傳輸是以高電平來代表‘1'用低電平來代表‘0',在10位數(shù)據(jù)(1個(gè)起始位、8位數(shù)據(jù)、1個(gè)停止位)的格式下傳輸回車鍵的傳輸格式如下:1開始位100000停止位LSB MSB所以規(guī)定在數(shù)據(jù)發(fā)送前,先發(fā)送回車字符,數(shù)據(jù)在傳輸過程中,低位在前、高位在后,再加上開始位和停止位其二進(jìn)制表達(dá)式為0101100001(開始位加數(shù)據(jù)加停止位,其中數(shù)據(jù)低位在前、高位在后),根據(jù)數(shù)據(jù)傳輸格式可看出,只要能測(cè)出開始位和數(shù)據(jù)位的最低位之間的時(shí)間間隔,即可知道數(shù)據(jù)傳輸?shù)牟ㄌ芈剩ㄓ刹ㄌ芈实亩x知每位數(shù)據(jù)傳輸?shù)臅r(shí)間為波特率的倒數(shù),又每位數(shù)據(jù)的傳輸時(shí)間即為兩位數(shù)據(jù)傳輸?shù)臅r(shí)間間隔)。因此我們采用一種以“幀”(此處的“幀”為在數(shù)據(jù)傳輸過程中,每發(fā)送一個(gè)字符加上開始位和停止位)為單位來進(jìn)行波特率自偵測(cè)的方法,同樣是以回車字符為先導(dǎo)。我們假設(shè)設(shè)備的通信速率在9600bps?115200bps之間,系統(tǒng)時(shí)鐘頻率為44MHz。根據(jù)設(shè)備通信的波特率都有一定的規(guī)律性,所以我們?cè)?600bps?115200bps之間列出所有常用的波特率:9600bps、14400bps、19200bps、28800bps、38400bps、57600bps、76800bps、115200bps。在這些波特率當(dāng)中把9600bps、19200bps、38400bps、76800bps歸為第一組;把14400bps、28800bps、57600bps、115200bps歸為第二組,在第一組中使用一個(gè)波特率基準(zhǔn)發(fā)生時(shí)鐘把它稱之為基準(zhǔn)時(shí)鐘1,在第二組中也使用一個(gè)波特率發(fā)生基準(zhǔn)時(shí)鐘把它稱之為基準(zhǔn)時(shí)鐘2。兩組基準(zhǔn)時(shí)鐘同時(shí)對(duì)系統(tǒng)接收端的數(shù)據(jù)進(jìn)行接收,當(dāng)任一組接收完10位數(shù)據(jù)之后,取中間的8位數(shù)據(jù)(除數(shù)據(jù)位0和數(shù)據(jù)位9)然后再根據(jù)這8位數(shù)據(jù)確定發(fā)送數(shù)據(jù)的波特率,其具體過程如下。取第一組中的基準(zhǔn)時(shí)鐘的波特率為76800bps,第二組中的基準(zhǔn)時(shí)鐘的波特率為115200bps。以第一組為例,假設(shè)發(fā)送數(shù)據(jù)的波特率為76800bps,則接收的數(shù)據(jù)為回車字符(0X0D)。若發(fā)送數(shù)據(jù)的波特率為38400bps,則因基準(zhǔn)時(shí)鐘的周期為發(fā)送數(shù)據(jù)的波特率時(shí)鐘周期的1/2,所以基準(zhǔn)時(shí)鐘每兩個(gè)時(shí)鐘周期接收一個(gè)數(shù)據(jù),故所接收的數(shù)據(jù)用二進(jìn)制表示為00110011110000000011B(低位在前,高位在后),取前10位(0011001111),除去第一位和最后一位所得數(shù)據(jù)為01100111B(0XE6),其它波特率以此類推。下面所示為發(fā)送數(shù)據(jù)的波特率與接收到的數(shù)據(jù)的關(guān)系圖。第一組:波特率以76800bps速率接收數(shù)據(jù)字節(jié)分頻系數(shù)7680001011000010X0D3338400001100111100000000110XE66519200000011110000111111110X781309600000000001111111100000X80260第二組:波特率以115200bps速率接收數(shù)據(jù)字節(jié)分頻系數(shù)11520001011000010X0D2257600001100111100000000110XE64328800000011110000111111110X788714400000000001111111100000X80174從上面的關(guān)系圖可看出,第一組中的波特率為9600bps的2n倍(其中n=1、2、4、8);第二組中的波特率為14400bps的2n倍(其中n=1、2、4、8)。雖然第一組和第二組中接收的字節(jié)當(dāng)n相同時(shí)是一樣的,但是若發(fā)送數(shù)據(jù)的波特率在第一組所列的波特率中,則按第一組來鎖定波特率,這時(shí)第二組接收的字節(jié)就不是關(guān)系圖中所列的字節(jié)。同理,第二組也是一樣。其算法如圖2所示。在算法中設(shè)置標(biāo)志位FLAG,程序初始化時(shí)就設(shè)置FLAG為‘1'(默認(rèn)設(shè)置),當(dāng)接收完10位數(shù)之后,取出取中間的8位數(shù)據(jù)(除數(shù)據(jù)位0和數(shù)據(jù)位9)用第一組所列波特率來判斷,若不滿足置FLAG為f啟用第二組所列波特率來判斷。這樣便能偵測(cè)出第一組和第二組中所列的所有波特率。

開始以基準(zhǔn)時(shí)鐘1接收數(shù)據(jù)的前10位以基準(zhǔn)時(shí)鐘2接收數(shù)據(jù)的前10位取中間8位數(shù)據(jù)除數(shù)據(jù)位0和數(shù)據(jù)位9Y開始以基準(zhǔn)時(shí)鐘1接收數(shù)據(jù)的前10位以基準(zhǔn)時(shí)鐘2接收數(shù)據(jù)的前10位取中間8位數(shù)據(jù)除數(shù)據(jù)位0和數(shù)據(jù)位9YVYY-<Y等于0XE6?等于等于OXOD?等于0X78?取中間8位數(shù)據(jù)除數(shù)據(jù)位0和數(shù)據(jù)位9圖2算法流程圖無法偵測(cè)等于0XE6?等于0X78?二二等于0X0D?N匸二二-等于0X80?3、功能編譯、設(shè)計(jì)仿真與硬件下載本系統(tǒng)采用Altera公司生產(chǎn)的FLEX10K系列的CPLD芯片,應(yīng)用該公司的MAX+PLUSII軟件完成設(shè)計(jì)后,需對(duì)各種源文件從底層到頂層逐個(gè)編譯,再進(jìn)行邏輯仿真。選擇器件后,打開檢查項(xiàng)目中所有設(shè)計(jì)文件,通過檢測(cè)發(fā)現(xiàn)在編程器件中可能存在的不可靠性不好的邏輯器件引腳分配。Altera公司推薦的編譯器可自動(dòng)為項(xiàng)目進(jìn)行引腳分配,也可人工調(diào)整引腳。在編譯器窗口選擇Start按鈕,將對(duì)所有設(shè)計(jì)的項(xiàng)目進(jìn)行處理,出現(xiàn)錯(cuò)誤將給出具體錯(cuò)誤提示。為了保證設(shè)計(jì)的正確性,在編譯通過后,還需要進(jìn)行邏輯仿真。仿真通過后再運(yùn)用MAX+PLUSII的編程器對(duì)所選可編程邏輯器件下載編程,便完成了數(shù)據(jù)接收模塊的ASIC芯片設(shè)計(jì)和硬件固化。最后給出數(shù)據(jù)接收仿真波形圖,如圖3所示:

接收下一個(gè)字符“0xF8”,從接收的結(jié)果可以看出,數(shù)據(jù)接收正確。參考文獻(xiàn):1、 周立功等:?jiǎn)纹瑱C(jī)與CPLD綜合應(yīng)用技術(shù),北京航空航天大學(xué)出版,2003年9月2、 諸振勇等:FPGA設(shè)計(jì)及應(yīng)用,西安電子科技大學(xué),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論