基于SOPC的異步串行通信IP核設(shè)計(jì)
3. 3 UART協(xié)議邏輯模塊設(shè)計(jì)
本文設(shè)計(jì)的UART協(xié)議邏輯模塊主要包括波特率產(chǎn)生模塊,發(fā)送模塊,接收模塊,寄存器組等幾個(gè)部分,其結(jié)構(gòu)如圖4所示。寄存器組說(shuō)明如表2,其他幾個(gè)模塊的設(shè)計(jì)如圖4所示。
3. 3.1波特率模塊
波特率模塊根據(jù)PLB總線(xiàn)提供的時(shí)鐘產(chǎn)生需要的發(fā)送時(shí)鐘和接收時(shí)鐘。由于UABT在發(fā)送數(shù)據(jù)時(shí)只需要按照發(fā)送波特率將數(shù)據(jù)串行地發(fā)出就可以了,因此發(fā)送時(shí)鐘就等于發(fā)送波特率。而當(dāng)UART在接收數(shù)據(jù)時(shí),需要對(duì)串行數(shù)據(jù)進(jìn)行采樣以判斷接收數(shù)據(jù)。由于接收方和發(fā)送方的時(shí)鐘不可能完全同步,所以需要對(duì)每一位接收數(shù)據(jù)持續(xù)電平的時(shí)間進(jìn)行分段。分段越多,接收出現(xiàn)誤判的概率就越低,但系統(tǒng)開(kāi)銷(xiāo)也越大。在實(shí)際的設(shè)計(jì)中通常采用發(fā)送時(shí)鐘的16倍作為接收時(shí)鐘。波特率模塊的分頻功能由兩個(gè)16位計(jì)數(shù)器實(shí)現(xiàn),它將PLB總線(xiàn)時(shí)鐘按配置寄存器的設(shè)定進(jìn)行分頻,產(chǎn)生發(fā)送時(shí)鐘和接收時(shí)鐘。
3.3.2發(fā)送模塊
發(fā)送模塊主要包括發(fā)送FIFO和發(fā)送單元兩部分,如圖5(a)所示。發(fā)送FIFO數(shù)據(jù)位寬度為8bit,深度為16字節(jié)。發(fā)送FIFO緩存MicroBlaze處理器需要發(fā)送的數(shù)據(jù)。當(dāng)FIFO空間滿(mǎn)時(shí),發(fā)送模塊將狀態(tài)寄存器中“發(fā)送FIFO滿(mǎn)”標(biāo)志位置1,MicroBlaze處理器通過(guò)查詢(xún)?cè)撐灰耘袛郩ART IP核是否可以接收下一個(gè)發(fā)送數(shù)據(jù)。
發(fā)送單元的設(shè)計(jì)用有限狀態(tài)機(jī)的方法實(shí)現(xiàn),其狀態(tài)轉(zhuǎn)換圖如圖5(b)所示。系統(tǒng)在復(fù)位后,發(fā)送單元處于空閑狀態(tài)。當(dāng)FIFO有發(fā)送數(shù)據(jù)時(shí)(Empty管腳為低),發(fā)送單元發(fā)出讀FIFO操作,并進(jìn)入數(shù)據(jù)準(zhǔn)備狀態(tài)。當(dāng)數(shù)據(jù)從FIFO中讀出,發(fā)送單元首先發(fā)送起始位,進(jìn)入發(fā)送狀態(tài)。在發(fā)送狀態(tài)下,發(fā)送單元依次串行發(fā)送8比特?cái)?shù)據(jù),并計(jì)算當(dāng)前的奇偶校驗(yàn)碼。在數(shù)據(jù)發(fā)送結(jié)束后,若配置寄存器中奇偶校驗(yàn)位為1,則發(fā)送奇偶校驗(yàn)位。最后發(fā)送單元發(fā)送停止位,回到空閑狀態(tài),完成次數(shù)據(jù)發(fā)送。
3.3.3接收模塊
接收模塊由接收FIFO和接收單元兩部分組成,如圖6(a)所示。接收FIFO數(shù)據(jù)位寬度為8bit,深度16字節(jié),它負(fù)責(zé)緩存接收單元收到的數(shù)據(jù),并在收到數(shù)據(jù)后將狀態(tài)寄存器中“接收數(shù)據(jù)有效”標(biāo)志位置1.MicroBlaze處理器通過(guò)查詢(xún)?cè)撐粊?lái)判斷是否有數(shù)據(jù)到達(dá)。
接收單元的設(shè)計(jì)同樣采用了有限狀態(tài)機(jī)的方法,其狀態(tài)轉(zhuǎn)換圖如圖6(b)所示。系統(tǒng)在復(fù)位后接收單元處于就緒狀態(tài)。當(dāng)接收單元在接收管腳連續(xù)檢測(cè)到8個(gè)低電平時(shí)認(rèn)為起始位有效,進(jìn)入接收狀態(tài)。在接收狀態(tài)下,接收單元每16個(gè)接收時(shí)鐘采集一次接收數(shù)據(jù)。8個(gè)接收數(shù)據(jù)都采集完成后,接收單元根據(jù)配置寄存器中“奇偶校驗(yàn)位”是否為1決定是否進(jìn)行奇偶校驗(yàn)。若奇偶校驗(yàn)通過(guò),接收單元將接收到的數(shù)據(jù)寫(xiě)入接收FIFO.若奇偶校驗(yàn)未通過(guò)接收FIFO滿(mǎn),接收單元丟棄收到的數(shù)據(jù),并在狀態(tài)寄存器中置“奇偶校驗(yàn)出錯(cuò)”位或“接收FIFO滿(mǎn)”位為1.
評(píng)論