




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
用CPLD實現串行通信時的波特率自動偵測楊李莎1朱華福2(1.長安大學研究生部,陜西西安710064;2.云南昆船設備有限公司昆明650236)摘要:本文介紹了一種利用CPLD實現波特率自動偵測的方法,文章最后給出其仿真結果關鍵詞:串行通信波特率自動偵測復雜可編程邏輯器件Abstract:Inthispaper,itintroducesawaytoautomaticallydetectbaudratebyusingCPLD,andintheendindicatesit'semulationresults.Keywords:serialcommunicationbaudrateautodetectedCPLD1、 引言串行數據通信是應用極為廣泛的技術,通過數據傳輸控制或監測中心可以對遠端設備進行控制和監測設備的工作狀態串行外設都會用到RS-232C異步串行接口?傳統上采用專用的集成電路即UART實現,如TI、EXAR、EPIC的550、452等系列,但是我們一般不需要使用完整的UART的功能,而且對于多串口的設備或需要加密通訊的場合使用UART也不是最合適的。如今的許多的電器都有串口,主要用于軟件的升級或者用于自診斷。通常單機設備的串行通信波特率設置都是采用硬件撥碼的方式進行的,對于一些撥碼開關特別多的設備來說難于記憶,因此能否尋求一種波特率自適應的方法來解決這個問題呢?回答是肯定的,本文就介紹一種用復雜可編程邏輯器件來實現波特率自動偵測的方法。系統只設計了數據接收模塊,利用VHDL語言對其進行編程,最后給岀其仿真結果。2、系統設計2.1系統介紹圖1所示為數據接收模塊結構框圖,數據接收模塊由波特率發生基準時鐘、開始位下降沿檢測、接收控制、串并轉換器、鎖存器、緩沖器等部分組成。為了能準確地偵測岀接收數據的波特率,數據接收模塊中采用了波特率發生基準時鐘,首先用基準時鐘對RXD端的數據進行接收采樣,然后按波特率自動偵測原理進行波特率自動偵測,最后產生一個與發送端發送的數據相同的波特率,利用波特率進行通信。波特率發生基準時鐘3開始位下降沿檢測串并轉換器緩沖盤鎖存盤波特率自動偵測波特率發生基準時鐘3開始位下降沿檢測串并轉換器緩沖盤鎖存盤波特率自動偵測數據輸岀1【作者簡介】楊李莎(1981—)女,長安大學研究生部04級交通信息工程及控制專業碩士研究生,主要從事高速公路和城市道路的交通控制及管理研究。
圖1數據接收模塊結構框圖圖1數據接收模塊結構框圖為了能對位進行正確的操作,以基準波特率16倍的速率采樣RXD端的電平,這就把接收一位的時間分成16份,當檢測到開始位的下降沿時,就開始進行數據采樣。采樣的數據為一個位的第6、7、8三個狀態,然后三個里面取兩個以上相同的值作為采樣結果,這樣可以避免干擾。2)串行數據接收控制當開始位的采樣結果不是0的時候就判定為接收出錯,把串行接收控制器的位計數器復位。在波特率未偵測之前,當接收完波特率自動偵測原理需要的位數后就進行數據的輸出,并把串行數據接收控制器的位計數器復位,等待正式數據的傳輸開始。當波特率確定之后,按照設計的數據傳輸格式(開始位、8位數據、停止位、無校驗位)當接收完10位數據后就進行數據的輸出,并把串行數據接收控制器的位計數器復位,等待下一數據的到來。2.2波特率自動偵測原理眾所周知,微機鍵盤中的回車鍵(CR)常用于命令的執行,許多程序中的命令都是以回車鍵來結束的,因此在波特率自動偵測中也采用回車鍵。因為回車鍵在ASCII碼中的值為0X0D(十六進制),用二進制來表示即為00001101B,在異步傳輸過程中,數據的傳輸是以高電平來代表‘1'用低電平來代表‘0',在10位數據(1個起始位、8位數據、1個停止位)的格式下傳輸回車鍵的傳輸格式如下:1開始位100000停止位LSB MSB所以規定在數據發送前,先發送回車字符,數據在傳輸過程中,低位在前、高位在后,再加上開始位和停止位其二進制表達式為0101100001(開始位加數據加停止位,其中數據低位在前、高位在后),根據數據傳輸格式可看出,只要能測出開始位和數據位的最低位之間的時間間隔,即可知道數據傳輸的波特率(由波特率的定義知每位數據傳輸的時間為波特率的倒數,又每位數據的傳輸時間即為兩位數據傳輸的時間間隔)。因此我們采用一種以“幀”(此處的“幀”為在數據傳輸過程中,每發送一個字符加上開始位和停止位)為單位來進行波特率自偵測的方法,同樣是以回車字符為先導。我們假設設備的通信速率在9600bps?115200bps之間,系統時鐘頻率為44MHz。根據設備通信的波特率都有一定的規律性,所以我們在9600bps?115200bps之間列出所有常用的波特率:9600bps、14400bps、19200bps、28800bps、38400bps、57600bps、76800bps、115200bps。在這些波特率當中把9600bps、19200bps、38400bps、76800bps歸為第一組;把14400bps、28800bps、57600bps、115200bps歸為第二組,在第一組中使用一個波特率基準發生時鐘把它稱之為基準時鐘1,在第二組中也使用一個波特率發生基準時鐘把它稱之為基準時鐘2。兩組基準時鐘同時對系統接收端的數據進行接收,當任一組接收完10位數據之后,取中間的8位數據(除數據位0和數據位9)然后再根據這8位數據確定發送數據的波特率,其具體過程如下。取第一組中的基準時鐘的波特率為76800bps,第二組中的基準時鐘的波特率為115200bps。以第一組為例,假設發送數據的波特率為76800bps,則接收的數據為回車字符(0X0D)。若發送數據的波特率為38400bps,則因基準時鐘的周期為發送數據的波特率時鐘周期的1/2,所以基準時鐘每兩個時鐘周期接收一個數據,故所接收的數據用二進制表示為00110011110000000011B(低位在前,高位在后),取前10位(0011001111),除去第一位和最后一位所得數據為01100111B(0XE6),其它波特率以此類推。下面所示為發送數據的波特率與接收到的數據的關系圖。第一組:波特率以76800bps速率接收數據字節分頻系數7680001011000010X0D3338400001100111100000000110XE66519200000011110000111111110X781309600000000001111111100000X80260第二組:波特率以115200bps速率接收數據字節分頻系數11520001011000010X0D2257600001100111100000000110XE64328800000011110000111111110X788714400000000001111111100000X80174從上面的關系圖可看出,第一組中的波特率為9600bps的2n倍(其中n=1、2、4、8);第二組中的波特率為14400bps的2n倍(其中n=1、2、4、8)。雖然第一組和第二組中接收的字節當n相同時是一樣的,但是若發送數據的波特率在第一組所列的波特率中,則按第一組來鎖定波特率,這時第二組接收的字節就不是關系圖中所列的字節。同理,第二組也是一樣。其算法如圖2所示。在算法中設置標志位FLAG,程序初始化時就設置FLAG為‘1'(默認設置),當接收完10位數之后,取出取中間的8位數據(除數據位0和數據位9)用第一組所列波特率來判斷,若不滿足置FLAG為f啟用第二組所列波特率來判斷。這樣便能偵測出第一組和第二組中所列的所有波特率。
開始以基準時鐘1接收數據的前10位以基準時鐘2接收數據的前10位取中間8位數據除數據位0和數據位9Y開始以基準時鐘1接收數據的前10位以基準時鐘2接收數據的前10位取中間8位數據除數據位0和數據位9YVYY-<Y等于0XE6?等于等于OXOD?等于0X78?取中間8位數據除數據位0和數據位9圖2算法流程圖無法偵測等于0XE6?等于0X78?二二等于0X0D?N匸二二-等于0X80?3、功能編譯、設計仿真與硬件下載本系統采用Altera公司生產的FLEX10K系列的CPLD芯片,應用該公司的MAX+PLUSII軟件完成設計后,需對各種源文件從底層到頂層逐個編譯,再進行邏輯仿真。選擇器件后,打開檢查項目中所有設計文件,通過檢測發現在編程器件中可能存在的不可靠性不好的邏輯器件引腳分配。Altera公司推薦的編譯器可自動為項目進行引腳分配,也可人工調整引腳。在編譯器窗口選擇Start按鈕,將對所有設計的項目進行處理,出現錯誤將給出具體錯誤提示。為了保證設計的正確性,在編譯通過后,還需要進行邏輯仿真。仿真通過后再運用MAX+PLUSII的編程器對所選可編程邏輯器件下載編程,便完成了數據接收模塊的ASIC芯片設計和硬件固化。最后給出數據接收仿真波形圖,如圖3所示:
接收下一個字符“0xF8”,從接收的結果可以看出,數據接收正確。參考文獻:1、 周立功等:單片機與CPLD綜合應用技術,北京航空航天大學出版,2003年9月2、 諸振勇等:FPGA設計及應用,西安電子科技大學,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論