基于Wishbone總線的UART IP核設(shè)計
設(shè)計采用接收狀態(tài)機控制整個模塊的接收過程。接收狀態(tài)機可分為5個狀態(tài),即IDLE、RX_START、RX_DATA、CHECK、RX_STOP,它們之間的狀態(tài)轉(zhuǎn)移,如圖3所示。本文引用地址:http://butianyuan.cn/article/156564.htm
IDLE狀態(tài):當(dāng)產(chǎn)生復(fù)位信號或運行至停止?fàn)顟B(tài)之后,接收狀態(tài)機將復(fù)位到這種狀態(tài)。處于IDLE狀態(tài)時,它等待外部傳來的信號從高向低轉(zhuǎn)變,此時視為產(chǎn)生了一個有效的起始位。一旦有效起始位被檢測到,有限狀態(tài)機就會切換到下個狀態(tài)。
RX_DATA狀態(tài):當(dāng)狀態(tài)機跳轉(zhuǎn)到此狀態(tài)時,采樣每得到一位數(shù)據(jù),就把接收到數(shù)據(jù)放到準(zhǔn)備好的接收移位寄存器中。在設(shè)計中需要一個接收計數(shù)器來進(jìn)行計數(shù)。當(dāng)計數(shù)器提示數(shù)據(jù)接收已完成,則狀態(tài)機會轉(zhuǎn)入下個狀態(tài)。
CHECK狀態(tài):當(dāng)處于CHECK狀態(tài)時,通過對實際接收到的數(shù)據(jù)進(jìn)行判斷得出實際數(shù)據(jù)的奇偶性,然后再與發(fā)送過來的數(shù)據(jù)的奇偶校驗位進(jìn)行奇偶校驗。
如果符合,那么表示接收數(shù)據(jù)有效,可以傳入處理器;如不符,則不傳,直接丟棄數(shù)據(jù)。
RX_STOP狀態(tài):無論停止位長度設(shè)定為1位或者是2位,有限狀態(tài)機總是等待1位樣本的采樣時間,然后抽樣停止位。只要一個邏輯采樣停止位被檢測到,數(shù)據(jù)接收模塊就不會去檢查是否停止位的配置出現(xiàn)錯誤。此時,有限狀態(tài)機將返回IDLE狀態(tài)。
2.3 數(shù)據(jù)發(fā)送模塊設(shè)計
發(fā)送模塊將從處理器接收到的數(shù)據(jù),加上起始位,奇偶檢驗位和停止位組成規(guī)定的格式后串行輸出。首先,利用緩存器FIFO存放需要發(fā)送的數(shù)據(jù),這樣處理器可以一次往FIFO中寫入多個字節(jié)的數(shù)據(jù)。發(fā)送數(shù)據(jù)時依次從FIFO中每次取出1Byte進(jìn)行串行輸出。
設(shè)計采用發(fā)送狀態(tài)機來控制整個模塊的發(fā)送過程。發(fā)送狀態(tài)機由以下5個狀態(tài)組成:IDLE、TX_START、TX_DATA、CHECK、TX_STOP,它們的轉(zhuǎn)移關(guān)系如圖4所示。
IDLE狀態(tài):在沒有接收到將要發(fā)送的數(shù)據(jù)時,發(fā)送模塊一直處于該狀態(tài),此刻一直保持發(fā)送模塊的數(shù)據(jù)位為高,當(dāng)?shù)玫街鳈C發(fā)出的工作信號時,發(fā)生狀態(tài)跳轉(zhuǎn),進(jìn)入下個狀態(tài)。
TX_START狀態(tài):發(fā)送模塊會先發(fā)送一個數(shù)據(jù)“0”,作為起始位。起始位傳送完畢后,轉(zhuǎn)入下個狀態(tài)。
TX_DATA狀態(tài):發(fā)送完起始位后,接著發(fā)送由主機傳來的有效數(shù)據(jù)。首先把數(shù)據(jù)存入模塊內(nèi)的移位寄存器中,利用移位寄存器實現(xiàn)并行輸入到串行輸出的轉(zhuǎn)換。同時計數(shù)器開始計數(shù),在發(fā)送完8位數(shù)據(jù)后,計數(shù)器清零,F(xiàn)SM隨即跳入下個狀態(tài)。
評論