資源描述:
《基于verilog_hdl的uart仿真》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、基于VerilogHDL的UART模塊設計與仿真 隨著微機應用和計算機網(wǎng)絡的發(fā)展,計算機與外界之間的信息交換變得越來越重要,為了保證串行通信的正常進行,提高串行通信的效率和CPU的利用率,在微機系統(tǒng)中采用專用的大規(guī)模集成電路來完成這些工作,這就是串行通信接口。通用異步接收發(fā)送器UART(Universalasynchronousreceiver/transmitter)主要用于控制設備之間的串行通信。廣泛應用于調制解調器Modem、手持工業(yè)設備、條形碼閱讀器、測試設備、消費產品與計算機PC、微處理器以及小型通信網(wǎng)絡之間的通信等。在SOC設計中,異步串行通信接口
2、已成為不可缺少的一部分,它的性能優(yōu)劣將直接影響相應電子系統(tǒng)的性能和指標?! ?UART原理 串行通信是指外部設備和計算機間使用一根數(shù)據(jù)線(另外需要地線,可能還需要控制線)進行數(shù)據(jù)傳輸?shù)姆绞?。?shù)據(jù)在一根數(shù)據(jù)線上一位一位傳輸,每一位數(shù)據(jù)都占據(jù)一個固定的時間長度。與并行通信方式相比,串行通信方式的傳輸速度較慢,但這種通信方式使用的數(shù)據(jù)線少,在遠距離通信中可以節(jié)約通信成本,因此得到了廣泛的應用?! 』镜腢ART只需要發(fā)送和接收兩條數(shù)據(jù)線就可以完成數(shù)據(jù)的全雙工通信,其基本功能是在發(fā)送端將控制器通過總線傳過來的并行數(shù)據(jù),以設定的格式,設定的頻率串行地傳輸出去,并同時在
3、接收端將串行接收到的數(shù)據(jù),轉換成相應的并行數(shù)據(jù)發(fā)送出去。UART的基本幀格式如圖1所示。其中,起始位總是邏輯O狀態(tài),停止位總是邏輯l狀態(tài),其持續(xù)時間可選為1位、1.5位或2位,其數(shù)據(jù)位可為5、6、7、8位,校驗位可根據(jù)需要選擇奇校驗位,偶校驗位或無校驗位?! ?UART的設計 現(xiàn)今復雜的數(shù)字系統(tǒng)的設計往往采用自頂向下的設計方案,利用層次化結構化的方法,將一個設計方案劃分為若干模塊,在不同層次的模塊都可以進行仿真,可以很方便地查看某一層次的代碼以改正仿真時發(fā)現(xiàn)錯誤。在本設計中UART主要由波特率發(fā)生器、接收模塊、發(fā)送模塊3部分組成,并具有l(wèi)位停止位和無校驗位。
4、波特率發(fā)生器實現(xiàn)波特率的變換,利用外部時鐘信號產生一個所需波特率16倍的波特率時鐘,用來控制UART的接收與發(fā)送。接收模塊是用于接收串行信號,并將其轉化為并行數(shù)據(jù);而發(fā)送模塊則將準備輸出的并行數(shù)據(jù)按照UART的幀格式轉化為串行數(shù)據(jù)輸出。圖2為UART結構圖?! ?.1波特率發(fā)生器 波特率表示的是每秒鐘傳送的二進制數(shù)據(jù)的位數(shù),即單位時間內傳送的信息量。在串行異步傳送中,常用到的波特率為1200、2400、4800、9600、19200等。波特率發(fā)生器實際上是一個分頻器,主要是產生和。RS-232通信所采用的波特率同步的時鐘。由于串行數(shù)據(jù)幀與接收數(shù)據(jù)時鐘是異步的
5、,所以存UART的接收端在什么時刻將數(shù)據(jù)移入寄存器,怎樣選擇可靠的采樣點是非常關鍵的。一般采用高速時鐘對串行數(shù)據(jù)采樣是非常有效的方法。在實際設計中,一般最大選擇16倍于波特率的時鐘頻率。實現(xiàn)波特率時鐘的基本思路就是設計一個計數(shù)器,該計數(shù)器工作在速度很高的系統(tǒng)時鐘下,通過總線寫入不同的數(shù)值到波特率發(fā)生器保持寄存器中,然后用計數(shù)器的方式生成所需要的各種波特率就能得到所需的波特率時鐘,仿真如圖3所示?! ?.2接收模塊 接收模塊是整個UART的設計的重點,其主要功能是檢測數(shù)據(jù)的起始位,并對接收的數(shù)據(jù)進行串并轉換,并將接收好的數(shù)據(jù)儲存等待微機處理。由于串行數(shù)據(jù)幀與接
6、收數(shù)據(jù)時鐘是異步的,接收功能實現(xiàn)的關鍵是接收器與每個接收字符同步。要保證異步通信的雙方準確無誤地交換信息,必須有效控制采集通信線路上的電平信號的時機。由異步串行通信的特點可知,接收同步是通過低電平起始位實現(xiàn)的。而為了保證采樣的正確性,采樣在數(shù)據(jù)位的中間進行,并且接收單元采樣數(shù)據(jù)的頻率與發(fā)送單元發(fā)送數(shù)據(jù)的頻率相同,是波特率時鐘周期的16倍,這樣可以有效地降低由于時鐘不匹配而導致的誤采樣。接收模塊的設計主要由狀態(tài)機實現(xiàn)其核心功能,采用獨熱編碼方式,雖然獨熱編碼多用了兩個觸發(fā)器,但所用組合電路可節(jié)省一些,使電路的速度和可靠性有顯著提高??刂平邮掌鞯钠鹗迹V刮粰z測,
7、接收數(shù)據(jù)的計數(shù),移位寄存的功能。狀態(tài)機分為5個狀態(tài),分別為:IDEL,CENTER,WAIT,SAMPLE,STOP。狀態(tài)轉換圖如圖4所示?! ?)IDLE狀態(tài)系統(tǒng)被復位后,接收狀態(tài)機進入IDLE狀態(tài),等待起始位到來,輸入數(shù)據(jù)在空閑時保持為1,當輸入由“l(fā)”跳變?yōu)椤?”時,狀態(tài)機跳轉到CENTER狀態(tài)?! ?)CENTER狀態(tài)啟動起始位檢測電路,為排除噪聲干擾,狀態(tài)機等待8個脈沖,如果數(shù)據(jù)線上仍為低電平,則狀態(tài)機跳轉到WAIT狀態(tài),并啟動采樣電路。如果是噪聲干擾,則轉入IDLE態(tài)。 3)WAIT狀態(tài)狀態(tài)機WAIT狀態(tài),判斷數(shù)據(jù)接收是否完畢,若未完成采樣,則轉
8、入SAMPLE狀態(tài)進行數(shù)據(jù)位的采樣檢測