?
在基于IP核復用技術的集成電路設計中,片上總線的選取是最為關鍵的問題。目前,許多廠商已經開發了適用于各自片上總線標準的UART IP核,例如基于AMBA總線的UART IP核、基于CoreConnect總線的UART IP核等。如果用戶要使用這些商業化的UART核,則需要得到授權。因此從成本、性能、開放性的角度來看,采用開源、易于實現的Wishbone總線標準設計出的UART IP核將會擁有廣泛的市場。
1 UART IP核的設計原理
1.1 UART工作原理
通用非同步收發裝置(UART)是計算機進行串行通信的重要組成部分。它將微機系統內部傳送過來的并行數據轉換為串行輸出數據流,以電平的形式傳輸出去;將微機系統外部傳送來的串行數據轉換為字節,供微機系統內部使用并行數據的器件使用;在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進行奇偶校驗;在輸出數據流中加入啟停標記,并從接收數據流中刪除狀態標記。
對于UART而言,總線上的所有信號都是至關重要的。這些信號包括所需的控制信息和數據。因此總線接口的設計決定著UART的設計細節。本設計采用Wishbone總線作為UART核與微機系統進行通信的主機接口。UART核的接口信號如圖1所示。

?
1.2 Wishbone總線接口
在集成電路設計領域,Wishbone總線結構是一種靈活、開源的設計方法。其目的是促進設計的再利用,簡化系統級芯片的集成問題。通過在IP核之間創建一個總線接口,從而將各個IP核能方便地進行連接。這就提高了設計的可復用性和系統的可靠性,加快了產品推向市場的速度。在此之前,IP核之間都是使用非標準的總線規范進行連接的,這就難以實現復用。因此采用標準化的E總線結構設計IP核,已成為IC設計行業的主流。
在設計中,Wishbone總線為微機系統和UART控制器提供了操作接口。Wishbone總線接口的主要功能是協調處理器和UART核之間的信號,使處理器能正確地使用UART核進行數據通信。
2 UART IP核的設計實現
UART IP核的研發是遵照RS232協議和Wishbone總線標準進行的,集成了UART的基本功能。
UART IP核的主要技術特征包括:
(1)支持標準RSR232接口標準和Wishbone總線規范。
(2)全雙工獨立收發功能。
(3)接收通道進行奇偶校驗,溢出,產生可選中斷。
(4)內置支持接收和發送的16 Byte FIFO。
(5)發送“空”產生可選中斷,接收“滿”產生可選中斷。
UART IP核體系結構如圖2所示。

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

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

?
IDLE狀態:在沒有接收到將要發送的數據時,發送模塊一直處于該狀態,此刻一直保持發送模塊的數據位為高,當得到主機發出的工作信號時,發生狀態跳轉,進入下個狀態。
TX_START狀態:發送模塊會先發送一個數據“0”,作為起始位。起始位傳送完畢后,轉入下個狀態。
TX_DATA狀態:發送完起始位后,接著發送由主機傳來的有效數據。首先把數據存入模塊內的移位寄存器中,利用移位寄存器實現并行輸入到串行輸出的轉換。同時計數器開始計數,在發送完8位數據后,計數器清零,FSM隨即跳入下個狀態。
CHECK狀態:當狀態機處于這個狀態,最后1位數據仍然在傳輸。傳輸完成時,狀態機將判斷校驗位。如果校驗位無誤,則進入下個狀態。
TX_STOP狀態:在此狀態下,根據發送模塊的采樣結果,將設置相關中斷和狀態位。發送完畢后,狀態機返回IDLE狀態。
3 UART IP核的驗證方法
對UART IP核的驗證主要是在Modelsim軟件構建的虛擬平臺中進行的,通過編寫Testbench(測試代碼)作為激勵信號,將得到的值與期望值進行比較,從而判斷功能是否正確。驗證系統框圖,如圖5所示。

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

?
仿真波形圖模擬的是UART在全雙工的模式下同時接收一個完整的數據(51,16進制)和發送一個完整的數據(11,16進制)的過程。以接收過程為例:UART首先輸出發送UART_INT中斷信號,通知處理器準備接收數據,處理器響應中斷。UART通過采樣脈沖(Baud)將信號寫入RX_UDR接收寄存器中,同時接收計數器計數,計數到8時自動清零,中斷信號自動清除,隨后將接收到的8位數據通過總線模塊傳入處理器中。發送過程為接收的逆過程。
4 結束語
IP核重用技術以及接口標準化問題是IC設計領域中的研究熱點,其應用領域正在不斷拓展。本文介紹的基于Wishbone總線的UART IP核的設計方法,通過驗證表明了各項功能達到預期要求,為IP核接口的標準化設計提供了依據。此外,該IP核代碼全部采用模塊化的Verilog-HDL語言編寫,便于以后不斷完善,具有較強的實際效益。
評論