《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Verilog HDL的UART模塊設計與仿真
基于Verilog HDL的UART模塊設計與仿真
摘要: 文章標題:基于Verilog HDL的UART模塊設計與仿真。中國IT實驗室嵌入式開發頻道提供最全面的嵌入式開發培訓及行業的信息、技術以及相關資料的下載.
關鍵詞: FPGA Verilog HDL UART ModelSim
Abstract:
Key words :

  隨著微機應用和計算機網絡的發展,計算機與外界之間的信息交換變得越來越重要,為了保證串行通信的正常進行,提高串行通信的效率和CPU的利用率,在微機系統中采用專用的大規模集成電路來完成這些工作,這就是串行通信接口。通用異步接收發送器UART(Universal asynchronousreceiver/transmitter)主要用于控制設備之間的串行通信。廣泛應用于調制解調器Modem、手持工業設備、條形碼閱讀器、測試設備、消費產品與計算機PC、微處理器以及小型通信網絡之間的通信等。在SOC設計中,異步串行通信接口已成為不可缺少的一部分,它的性能優劣將直接影響相應電子系統的性能和指標。

  1 UART原理

  串行通信是指外部設備和計算機間使用一根數據線(另外需要地線,可能還需要控制線)進行數據傳輸的方式。數據在一根數據線上一位一位傳輸,每一位數據都占據一個固定的時間長度。與并行通信方式相比,串行通信方式的傳輸速度較慢,但這種通信方式使用的數據線少,在遠距離通信中可以節約通信成本,因此得到了廣泛的應用。

  基本的UART只需要發送和接收兩條數據線就可以完成數據的全雙工通信,其基本功能是在發送端將控制器通過總線傳過來的并行數據,以設定的格式,設定的頻率串行地傳輸出去,并同時在接收端將串行接收到的數據,轉換成相應的并行數據發送出去。UART的基本幀格式如圖1所示。其中,起始位總是邏輯O狀態,停止位總是邏輯l狀態,其持續時間可選為1位、1.5位或2位,其數據位可為5、6、7、8位,校驗位可根據需要選擇奇校驗位,偶校驗位或無校驗位。

UART的基本幀格式

  2 UART的設計

  現今復雜的數字系統的設計往往采用自頂向下的設計方案,利用層次化結構化的方法,將一個設計方案劃分為若干模塊,在不同層次的模塊都可以進行仿真,可以很方便地查看某一層次的代碼以改正仿真時發現錯誤。在本設計中UART主要由波特率發生器、接收模塊、發送模塊3部分組成,并具有l位停止位和無校驗位。波特率發生器實現波特率的變換,利用外部時鐘信號產生一個所需波特率16倍的波特率時鐘,用來控制UART的接收與發送。接收模塊是用于接收串行信號,并將其轉化為并行數據;而發送模塊則將準備輸出的并行數據按照UART的幀格式轉化為串行數據輸出。圖2為UART結構圖。

UART結構圖

  2.1 波特率發生器

  波特率表示的是每秒鐘傳送的二進制數據的位數,即單位時間內傳送的信息量。在串行異步傳送中,常用到的波特率為1 200、2 400、4 800、9 600、19 200等。波特率發生器實際上是一個分頻器,主要是產生和。RS-232通信所采用的波特率同步的時鐘。由于串行數據幀與接收數據時鐘是異步的,所以存 UART的接收端在什么時刻將數據移入寄存器,怎樣選擇可靠的采樣點是非常關鍵的。一般采用高速時鐘對串行數據采樣是非常有效的方法。在實際設計中,一般最大選擇16倍于波特率的時鐘頻率。實現波特率時鐘的基本思路就是設計一個計數器,該計數器工作在速度很高的系統時鐘下,通過總線寫入不同的數值到波特率發生器保持寄存器中,然后用計數器的方式生成所需要的各種波特率就能得到所需的波特率時鐘,仿真如圖3所示。

仿真如圖

  2.2 接收模塊

  接收模塊是整個UART的設計的重點,其主要功能是檢測數據的起始位,并對接收的數據進行串并轉換,并將接收好的數據儲存等待微機處理。由于串行數據幀與接收數據時鐘是異步的,接收功能實現的關鍵是接收器與每個接收字符同步。要保證異步通信的雙方準確無誤地交換信息,必須有效控制采集通信線路上的電平信號的時機。由異步串行通信的特點可知,接收同步是通過低電平起始位實現的。而為了保證采樣的正確性,采樣在數據位的中間進行,并且接收單元采樣數據的頻率與發送單元發送數據的頻率相同,是波特率時鐘周期的16倍,這樣可以有效地降低由于時鐘不匹配而導致的誤采樣。接收模塊的設計主要由狀態機實現其核心功能,采用獨熱編碼方式,雖然獨熱編碼多用了兩個觸發器,但所用組合電路可節省一些,使電路的速度和可靠性有顯著提高。控制接收器的起始/停止位檢測,接收數據的計數,移位寄存的功能。狀態機分為5個狀態,分別為:IDEL,CENTER,WAIT,SAMPLE,STOP。狀態轉換圖如圖4所示。

狀態轉換圖

  1)IDLE狀態 系統被復位后,接收狀態機進入IDLE狀態,等待起始位到來,輸入數據在空閑時保持為1,當輸入由“l”跳變為“0”時,狀態機跳轉到CENTER狀態。

  2)CENTER狀態 啟動起始位檢測電路,為排除噪聲干擾,狀態機等待8個脈沖,如果數據線上仍為低電平,則狀態機跳轉到WAIT狀態,并啟動采樣電路。如果是噪聲干擾,則轉入IDLE態。

  3)WAIT狀態 狀態機WAIT狀態,判斷數據接收是否完畢,若未完成采樣,則轉入SAMPLE狀態進行數據位的采樣檢測,同時啟動位計數器,用來控制數據接收的位數。無論停止位是幾位,狀態機只對停止位作一次采樣。接收完畢,轉入STOP狀態。

 

  4)SAMPLE狀態 在此狀態對串口輸入數據進行采樣,每次采樣均位于數據位的中心。并每接收完一位數據,狀態機轉入WAIT狀態。

  5)STOP狀態 接收停止位,完成一個數據幀的接收,并將rec_ready置為1,表明收據接收完畢,待微機讀取。其仿真結果如圖5所示。

仿真結果

  2.3 發送模塊

  發送模塊的設計相對簡單,其功能是將要發送的并行數據轉換成串行數據,并且在輸出的串行數據流中加入起始位和停止位。發送器首先將要發送的8位數據寄存,并在最低位后添加起始位‘0’,在最高位前添加停止位‘l’,組成10位要發送的數據,然后根據UART內核模塊的計數值將相應的數據送入移位寄存器輸入端。UART內核模塊輸出的計數值是從0依次計到9,即先將要發送數據的最低位送入移位寄存器。仿真結果如圖6所示。

仿真結果

  2.4 UART各個模塊的整合

  在各模塊功能實現的基礎上,把它們有機地整合在一起,使波特率發生器能夠按照UART通訊的要求正常工作,接收模塊和發送模塊能夠根據各自的復位信號使整合模塊具有發送或接收功能。仿真結果如圖7所示。

仿真結果

  3 結束語

  本文介紹了基于Verilog HDL設計的UART模塊,采樣點選擇可靠,其可以準確判斷接收數據的起始,接收器與接收數據實現同步,串行數據能被準確接收,并通過在ModelSim下的仿真,可下載至可編程邏輯器件中實現UART功能。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 免费看黄a级毛片| 日本不卡一二三| 免费无毒片在线观看| 99精品热线在线观看免费视频| 欧洲美熟女乱又伦av影片| 国产chinasex对白videos麻豆 | 国产精品你懂得| 好男人在线社区www影视下载 | a级毛片视频免费观看| 日韩一级在线视频| 亚洲精品成人a在线观看| 蜜芽亚洲av无码精品色午夜 | 国产精品户外野外| 一级一级特黄女人精品毛片视频| 欧美va天堂在线影院| 亚洲福利视频网址| 腿张大点我就可以吃扇贝了| 国产精品亲子乱子伦xxxx裸| 一区二区三区美女视频| 把胡萝卜立着自己坐上去| 久久天堂AV综合合色蜜桃网| 波多野结衣中文字幕一区二区三区 | 欧美综合人人做人人爱| 四虎影视在线永久免费看黄| h国产在线观看| 国产精品高清一区二区三区不卡| 中文字幕免费在线视频| 最近中文字幕国语免费完整| 亚洲国产成人va在线观看网址| 真正国产乱子伦高清对白| 国产国产精品人在线视| 91精品欧美一区二区三区| 扒开双腿猛进湿润18p| 久久久久波多野结衣高潮| 日韩女同互慰专区| 亚洲国产综合人成综合网站00| 精品国产三级a∨在线| 国产午夜毛片一区二区三区| 日本免费人成在线网站| 天天天天天天操| 中文字幕亚洲欧美日韩不卡|