《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于Wishbone總線的UART IP核設計
基于Wishbone總線的UART IP核設計
王振華,何明華 福州大學
摘要: 介紹了一種基于Wishbone總線的UART IP核的設計方法。該設計采用了自頂向下的模塊化劃分和有限狀態(tài)機相結合的方法,由于其應用了標準的Wishbone總線接口,從而使微機系統(tǒng)與串行設備之間的通信更加靈活方便。驗證結果表明,這種新的架構設計是有效的。
Abstract:
Key words :

    隨著集成電路與嵌入式技術的發(fā)展與廣泛應用,許多嵌入式系統(tǒng)都需要進行串行通信,因此在片上嵌入式系統(tǒng)芯片中集成uART(通用異步接發(fā)裝置)的IP核已成為一種趨勢。
    在基于IP核復用技術的集成電路設計中,片上總線的選取是最為關鍵的問題。目前,許多廠商已經(jīng)開發(fā)了適用于各自片上總線標準的UART IP核,例如基于AMBA總線的UART IP核、基于CoreConnect總線的UART IP核等。如果用戶要使用這些商業(yè)化的UART核,則需要得到授權。因此從成本、性能、開放性的角度來看,采用開源、易于實現(xiàn)的Wishbone總線標準設計出的UART IP核將會擁有廣泛的市場。

1 UART IP核的設計原理
1.1 UART工作原理
    通用非同步收發(fā)裝置(UART)是計算機進行串行通信的重要組成部分。它將微機系統(tǒng)內部傳送過來的并行數(shù)據(jù)轉換為串行輸出數(shù)據(jù)流,以電平的形式傳輸出去;將微機系統(tǒng)外部傳送來的串行數(shù)據(jù)轉換為字節(jié),供微機系統(tǒng)內部使用并行數(shù)據(jù)的器件使用;在輸出的串行數(shù)據(jù)流中加入奇偶校驗位,并對從外部接收的數(shù)據(jù)流進行奇偶校驗;在輸出數(shù)據(jù)流中加入啟停標記,并從接收數(shù)據(jù)流中刪除狀態(tài)標記。
    對于UART而言,總線上的所有信號都是至關重要的。這些信號包括所需的控制信息和數(shù)據(jù)。因此總線接口的設計決定著UART的設計細節(jié)。本設計采用Wishbone總線作為UART核與微機系統(tǒng)進行通信的主機接口。UART核的接口信號如圖1所示。

a.jpg


1.2 Wishbone總線接口
    在集成電路設計領域,Wishbone總線結構是一種靈活、開源的設計方法。其目的是促進設計的再利用,簡化系統(tǒng)級芯片的集成問題。通過在IP核之間創(chuàng)建一個總線接口,從而將各個IP核能方便地進行連接。這就提高了設計的可復用性和系統(tǒng)的可靠性,加快了產(chǎn)品推向市場的速度。在此之前,IP核之間都是使用非標準的總線規(guī)范進行連接的,這就難以實現(xiàn)復用。因此采用標準化的E總線結構設計IP核,已成為IC設計行業(yè)的主流。
    在設計中,Wishbone總線為微機系統(tǒng)和UART控制器提供了操作接口。Wishbone總線接口的主要功能是協(xié)調處理器和UART核之間的信號,使處理器能正確地使用UART核進行數(shù)據(jù)通信。



2 UART IP核的設計實現(xiàn)
    UART IP核的研發(fā)是遵照RS232協(xié)議和Wishbone總線標準進行的,集成了UART的基本功能。
    UART IP核的主要技術特征包括:
    (1)支持標準RSR232接口標準和Wishbone總線規(guī)范。
    (2)全雙工獨立收發(fā)功能。
    (3)接收通道進行奇偶校驗,溢出,產(chǎn)生可選中斷。
    (4)內置支持接收和發(fā)送的16 Byte FIFO。
    (5)發(fā)送“空”產(chǎn)生可選中斷,接收“滿”產(chǎn)生可選中斷。
    UART IP核體系結構如圖2所示。

b.jpg


    UART IP核內部主要包括數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊以及Wishbone總線接口模塊。各模塊的設計如下。
2.1 Wishbone總線接口模塊設計
    Wishbone總線接口模塊將UART IP核與微機系統(tǒng)相連。該模塊提供Wishbone Master和Wishbone Slave接口。
    Wishbone總線接口模塊的主要功能如下:
    (1)提供UART IP核與其他設備的接口,如存儲器或者主機的接口。
    (2)包含緩沖描述符(儲存于內部RAM)。
    (3)包含信號在主機時鐘、發(fā)送時鐘和接收時鐘之間的同步邏輯。
    (4)發(fā)送功能。讀取發(fā)送緩沖描述符,讀取數(shù)據(jù)到發(fā)送FIFO并開始發(fā)送,其后將發(fā)送狀態(tài)寫到發(fā)送緩沖描述符。
    (5)接收功能。讀取接收緩沖描述符,將獲得的字節(jié)寫入接收FIFO,其后通過Wishbone Muter接口與微機系統(tǒng)進行通信。最后,將接收狀態(tài)寫到接收緩沖描述符。
    當處理器需要串行發(fā)送數(shù)據(jù)時,先將數(shù)據(jù)以包的形式存儲于主存儲器中,然后將存儲的所有包的起始地址、目的地址、長度以及發(fā)送控制信息寫入發(fā)送描述符中。
    Wishbone接口模塊讀取到一個非空的發(fā)送描述符后即發(fā)送數(shù)據(jù),發(fā)送的數(shù)據(jù)要通過Wishbone接口邏輯訪問位于總線上的主存儲器,讀取到的數(shù)據(jù)首先放到發(fā)送FIFO中,其后再通過發(fā)送控制和同步邏輯與數(shù)據(jù)發(fā)送模塊進行握手,將數(shù)據(jù)從TX_O端口串行發(fā)送出去。
    當接收數(shù)據(jù)時,數(shù)據(jù)由RX_I端口串行地移入接收FIFO中,每收滿8位數(shù)據(jù)就移入接收保持寄存器,然后通過Wishbone總線并行傳輸給處理器核。
2.2 數(shù)據(jù)接收模塊設計
    由于外部信號是通過異步串行的形式傳輸,因此當接收端口檢測到一個由高到低的數(shù)據(jù)就被視為一個幀的起始位。為了避免接收信號的噪聲而產(chǎn)生的不正確的數(shù)據(jù),檢測到的起始位時鐘至少要低于50%的波特率時鐘。接收模塊一旦接收到有效的起始位,就將通過RS232標準的波特率對數(shù)據(jù)位和校驗位進行采樣。
    設計采用接收狀態(tài)機控制整個模塊的接收過程。接收狀態(tài)機可分為5個狀態(tài),即IDLE、RX_START、RX_DATA、CHECK、RX_STOP,它們之間的狀態(tài)轉移,如圖3所示。

c.jpg


    IDLE狀態(tài):當產(chǎn)生復位信號或運行至停止狀態(tài)之后,接收狀態(tài)機將復位到這種狀態(tài)。處于IDLE狀態(tài)時,它等待外部傳來的信號從高向低轉變,此時視為產(chǎn)生了一個有效的起始位。一旦有效起始位被檢測到,有限狀態(tài)機就會切換到下個狀態(tài)。
    RX_DATA狀態(tài):當狀態(tài)機跳轉到此狀態(tài)時,采樣每得到一位數(shù)據(jù),就把接收到數(shù)據(jù)放到準備好的接收移位寄存器中。在設計中需要一個接收計數(shù)器來進行計數(shù)。當計數(shù)器提示數(shù)據(jù)接收已完成,則狀態(tài)機會轉入下個狀態(tài)。
    CHECK狀態(tài):當處于CHECK狀態(tài)時,通過對實際接收到的數(shù)據(jù)進行判斷得出實際數(shù)據(jù)的奇偶性,然后再與發(fā)送過來的數(shù)據(jù)的奇偶校驗位進行奇偶校驗。
    如果符合,那么表示接收數(shù)據(jù)有效,可以傳入處理器;如不符,則不傳,直接丟棄數(shù)據(jù)。
    RX_STOP狀態(tài):無論停止位長度設定為1位或者是2位,有限狀態(tài)機總是等待1位樣本的采樣時間,然后抽樣停止位。只要一個邏輯采樣停止位被檢測到,數(shù)據(jù)接收模塊就不會去檢查是否停止位的配置出現(xiàn)錯誤。此時,有限狀態(tài)機將返回IDLE狀態(tài)。
2.3 數(shù)據(jù)發(fā)送模塊設計
    發(fā)送模塊將從處理器接收到的數(shù)據(jù),加上起始位,奇偶檢驗位和停止位組成規(guī)定的格式后串行輸出。首先,利用緩存器FIFO存放需要發(fā)送的數(shù)據(jù),這樣處理器可以一次往FIFO中寫入多個字節(jié)的數(shù)據(jù)。發(fā)送數(shù)據(jù)時依次從FIFO中每次取出1Byte進行串行輸出。
    設計采用發(fā)送狀態(tài)機來控制整個模塊的發(fā)送過程。發(fā)送狀態(tài)機由以下5個狀態(tài)組成:IDLE、TX_START、TX_DATA、CHECK、TX_STOP,它們的轉移關系如圖4所示。

d.jpg


    IDLE狀態(tài):在沒有接收到將要發(fā)送的數(shù)據(jù)時,發(fā)送模塊一直處于該狀態(tài),此刻一直保持發(fā)送模塊的數(shù)據(jù)位為高,當?shù)玫街鳈C發(fā)出的工作信號時,發(fā)生狀態(tài)跳轉,進入下個狀態(tài)。
    TX_START狀態(tài):發(fā)送模塊會先發(fā)送一個數(shù)據(jù)“0”,作為起始位。起始位傳送完畢后,轉入下個狀態(tài)。
    TX_DATA狀態(tài):發(fā)送完起始位后,接著發(fā)送由主機傳來的有效數(shù)據(jù)。首先把數(shù)據(jù)存入模塊內的移位寄存器中,利用移位寄存器實現(xiàn)并行輸入到串行輸出的轉換。同時計數(shù)器開始計數(shù),在發(fā)送完8位數(shù)據(jù)后,計數(shù)器清零,F(xiàn)SM隨即跳入下個狀態(tài)。
    CHECK狀態(tài):當狀態(tài)機處于這個狀態(tài),最后1位數(shù)據(jù)仍然在傳輸。傳輸完成時,狀態(tài)機將判斷校驗位。如果校驗位無誤,則進入下個狀態(tài)。
    TX_STOP狀態(tài):在此狀態(tài)下,根據(jù)發(fā)送模塊的采樣結果,將設置相關中斷和狀態(tài)位。發(fā)送完畢后,狀態(tài)機返回IDLE狀態(tài)。

3 UART IP核的驗證方法
    對UART IP核的驗證主要是在Modelsim軟件構建的虛擬平臺中進行的,通過編寫Testbench(測試代碼)作為激勵信號,將得到的值與期望值進行比較,從而判斷功能是否正確。驗證系統(tǒng)框圖,如圖5所示。

e.jpg


    本次驗證施加的測試激勵包括兩個部分,一部分是模擬發(fā)送數(shù)據(jù)的過程,如總線對于模塊內部寄存器的讀信號,UART串口輸出信號和設備的硬件接口信號等,驗證模塊的正常功能是否實現(xiàn);另一部分是模擬接收數(shù)據(jù)的過程,如外部設備對UART發(fā)送的數(shù)據(jù)接收過程,以及UART  將數(shù)據(jù)轉換發(fā)送給微機系統(tǒng)。仿真波形圖,如圖6所示。

f.jpg


    仿真波形圖模擬的是UART在全雙工的模式下同時接收一個完整的數(shù)據(jù)(51,16進制)和發(fā)送一個完整的數(shù)據(jù)(11,16進制)的過程。以接收過程為例:UART首先輸出發(fā)送UART_INT中斷信號,通知處理器準備接收數(shù)據(jù),處理器響應中斷。UART通過采樣脈沖(Baud)將信號寫入RX_UDR接收寄存器中,同時接收計數(shù)器計數(shù),計數(shù)到8時自動清零,中斷信號自動清除,隨后將接收到的8位數(shù)據(jù)通過總線模塊傳入處理器中。發(fā)送過程為接收的逆過程。

4 結束語
    IP核重用技術以及接口標準化問題是IC設計領域中的研究熱點,其應用領域正在不斷拓展。本文介紹的基于Wishbone總線的UART IP核的設計方法,通過驗證表明了各項功能達到預期要求,為IP核接口的標準化設計提供了依據(jù)。此外,該IP核代碼全部采用模塊化的Verilog-HDL語言編寫,便于以后不斷完善,具有較強的實際效益。

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
主站蜘蛛池模板: 无码精品久久久天天影视| 欧美黑人巨大videos精品| 国产在线精品美女观看| 4hu四虎最新免费地址| 理论片手机在线观看免费视频| 国产一区二区精品久久| 91福利在线观看视频| 日本久久中文字幕| 亚洲av无码日韩av无码网站冲| 精品国产一区二区麻豆| 国产丰满乱子伦无码专区| 88aa四虎影成人精品| 天天天天做夜夜夜做| 一本色道久久99一综合| 新97人人模人人爽人人喊| 久久亚洲精品中文字幕| 欧美精品久久久久久久影视| 国产一区第一页| 韩国公和熄三级在线观看| 国产欧美一区二区三区在线看 | 野花社区视频www| 国产色综合久久无码有码| 中文无遮挡h肉视频在线观看 | 大学生初次破苞免费视频| xvdeviosbbc黑人| 日韩av激情在线观看| 五月婷婷中文字幕| 杨幂被c原视频在线观看| 亚洲午夜国产精品| 欧美性生交xxxxx丝袜| 亚洲日韩一页精品发布| 美女黄色一级毛片| 国产亚洲精品精品国产亚洲综合| 黄页免费视频播放在线播放| 国产欧美日韩在线观看一区二区| 男女一边桶一边摸一边脱视频免费 | 日本理论片2828理论片| 亚洲欧洲无卡二区视頻| 精品人妻少妇一区二区| 又爽又黄又无遮挡的视频在线观看 | 18女人腿打开无遮挡软|