- 相關(guān)推薦
帶硬件地址識別的UART IP 的設計和實(shí)現
摘要:在通信和控制系統中,常使用異步串行通信控制器(UART)實(shí)現系統輔助信息的傳輸。為實(shí)現多點(diǎn)通信,通常用軟件識別發(fā)往本站點(diǎn)或其它站點(diǎn)的數據,這會(huì )加大CPU的開(kāi)銷(xiāo)。介紹了一種基于FPGA的UART IP,由硬件實(shí)現多點(diǎn)通信時(shí)的數據過(guò)濾功能,降低了CPU的負擔,提高了系統性能。在通信和控制系統中,常使用異步串行通信實(shí)現多塊單板之間的輔助通信,各個(gè)單板通過(guò)總線(xiàn)方式連接。為了實(shí)現點(diǎn)對點(diǎn)通信,需要由軟件定義一套較復雜的通信協(xié)議,過(guò)濾往來(lái)的數據,消耗了CPU較多的時(shí)間。89C51單片機有一種九位通信方式,采用一位地址位來(lái)實(shí)現通信對象的選擇,只對發(fā)往本地址的地址發(fā)生中斷進(jìn)而接收數據。通用的UART芯片如16C550和89C51等構成總線(xiàn)式的通信系統時(shí),需要由CPU通過(guò)軟件處理接收到的地址和產(chǎn)生九位的數據。本文介紹的UART采用Verilog HDL硬件描述語(yǔ)言設計,可以用FPGA實(shí)現,可應用于SoC設計中。其主要特性如下:
·全硬件地址識別,過(guò)濾數據不需要CPU的介入;支持一個(gè)特殊地址,可用于監聽(tīng)和廣播。
·支持查詢(xún)和中斷兩種工作方式,中斷可編程。
·接收和發(fā)送通路分別有128Byte FIFO,每個(gè)接收字節附帶狀態(tài)信息。
·設計采用Verilog HDL語(yǔ)言,全同步接口,可移植性好。
·支持自環(huán)測試功能。
·波特率可以編程,支持八位或者九位兩種數據格式。
設計的UART的九位串行數據格式如圖1所示。在空閑狀態(tài),數據線(xiàn)處于高電平狀態(tài)?偩(xiàn)由高到低跳變,寬度為一個(gè)波特率時(shí)間的負脈沖為開(kāi)始位,然后是8bit的數據位。數據位后面是lbit的地址信息位。如果此位是1,表示發(fā)送的字節是地址信息;如果此位是0,傳輸的是正常數據信息。地址指示位后是串行數據的停止位。
1 UART設計
UART采用模塊化、層次化的設計思想,全部設計都采用Verilog HDL實(shí)現,其組成框圖如圖2所示。整個(gè)UART IP由串行數據發(fā)送模塊、串行數據接收模塊、接收地址識別模塊、接收和發(fā)送HIFO、總線(xiàn)接口邏輯、寄存器和控制邏輯構成。串行發(fā)送模塊和接收完成并/串及串/并的轉換,接收地址的識別由接收地址識別模塊完成。發(fā)送和接收HIFO用于緩存發(fā)送和接收的數據?偩(xiàn)接口邏輯用于連接UART IP內部總線(xiàn)和HOST接口。寄存器和控制邏輯實(shí)現UART IP內部所有數據的收發(fā)、控制和狀態(tài)寄存器、內部中斷的控制及波特率信號的產(chǎn)生。以下詳細說(shuō)明主要部分的設計原理。
1.1 串行數據發(fā)送模塊
串行數據發(fā)送模塊將數據或地址碼由并行轉換為串行,并從串行總線(xiàn)輸出。設計采用有限狀態(tài)機實(shí)現,分為空閑、取數、發(fā)送三個(gè)狀態(tài)。其狀態(tài)遷移如圖3所示。各個(gè)狀態(tài)說(shuō)明如下:
空閑狀態(tài):狀態(tài)機不斷檢測發(fā)送使能位、UART使能位和發(fā)送FIFO空/滿(mǎn)標志位,如果使能位為高、UART使能打開(kāi)且FIFO空標志位為低,串行發(fā)送進(jìn)入取數狀態(tài)。
取數狀態(tài):在此狀態(tài),分兩個(gè)周期從發(fā)送FIFO中取出待發(fā)送的數據或者地址,然后進(jìn)入發(fā)送狀態(tài)。
發(fā)送狀態(tài):在此狀態(tài),狀態(tài)機按照九位串行數據的格式依次發(fā)送開(kāi)始位、數據位、地址指示位。待停止位發(fā)送完畢后,返回空閑狀態(tài)。一個(gè)字節的數據發(fā)送完畢后,進(jìn)行下一個(gè)字節數據的發(fā)送流程。
1.2 串行數據接收模塊
串行數據接收模塊用于檢測串行數據的開(kāi)始位,將串行總線(xiàn)上的串行數據轉換成并行數據并輸出。接收邏輯也采用有限狀態(tài)機實(shí)現,分為空閑狀態(tài)、尋找開(kāi)始位、接收數據和保存數據四個(gè)狀態(tài)。其狀態(tài)遷移圖如圖4所示。各個(gè)狀態(tài)說(shuō)明如下:
空閑狀態(tài):在此狀態(tài),不斷檢測接收使能、UART使能和串行輸入信號的狀態(tài)。如果串行輸入信號出現由高到低的電平變化且UART使能和接收使能都為高,則將采樣計數器復位,并進(jìn)入尋找開(kāi)始位狀態(tài)。
尋找開(kāi)始位:在此狀態(tài),狀態(tài)機等待半個(gè)波特率的時(shí)間,然后重新檢測串行輸入的電平。如果為低,則判斷收到的開(kāi)始位有效,進(jìn)入接收數據狀態(tài);否則認為數據總線(xiàn)上出現干擾,開(kāi)始位無(wú)效,重新返回空閑狀態(tài)。
接收數據:在此狀態(tài),依次接收串行數據線(xiàn)上的數據位、地址指示位和停止位,結束后進(jìn)入保存數據狀態(tài)。
保存數據:此狀態(tài)將收到的串行數據以并行方式從接口的并行總線(xiàn)輸出,然后返回空閑狀態(tài),準備進(jìn)行下一個(gè)字節數據的搜索和接收。
為提高對串行輸入上突發(fā)干擾的抵抗能力,對于接收數據,在脈沖的中間位置連續采樣三次,較多的電平作為接收的有效數據。所有接收數據的采樣頻率為接收波特率的16倍。
1.3 硬件地址識別模塊
硬件地址識別模塊用于從接收到的數據中判斷出地址和數據,在地址識別功能打開(kāi)時(shí),選擇數據通過(guò)或者丟棄;而該功能關(guān)閉時(shí),所有數據都會(huì )通過(guò)。地址識別模塊是一個(gè)有兩個(gè)狀態(tài)的有限狀態(tài)機,分為地址和數據兩個(gè)狀態(tài)。其狀態(tài)遷移圖如圖5所示。狀態(tài)說(shuō)明如下:
地址狀態(tài):在此狀態(tài)時(shí),判斷接收到的數據以及地址識別使能位。如果地址識別功能沒(méi)有打開(kāi),對于接收的任何地址,都進(jìn)入數據狀態(tài)。如果地址識別功能打開(kāi),則將收到的地址和本地地址比較,如果相等,則保存此地址,進(jìn)入數據狀態(tài);否則繼續在此狀態(tài)接收數據和地址,將收到的數據忽略。
數據狀態(tài):將接收到的數據輸出,
【帶硬件地址識別的UART IP 的設計和實(shí)現】相關(guān)文章:
IP協(xié)議設計實(shí)現—重裝模塊(一)03-07
計算機硬件測試系統設計與實(shí)現12-11
SoC設計中IP復用和驗證策略03-07
利用ASP獲取客戶(hù)端真實(shí)IP地址03-18
淺談學(xué)校校園網(wǎng)絡(luò )IP地址的管理及IP、MAC、端口的綁定畢業(yè)論文11-17
TM1300 PCI-XIO口的UART和USB接口設計03-19
旅游云講解系統的設計和實(shí)現12-04