帶硬件地址識(shí)別的UART IP 的設(shè)計(jì)和實(shí)現(xiàn) 文章作者:繆眾林 丁克忠
發(fā)布時(shí)間:2007/8/23 0:00:00 訪問(wèn)次數(shù):1226
摘要:在通信和控制系統(tǒng)中,常使用異步串行通信控制器(UART)實(shí)現(xiàn)系統(tǒng)輔助信息的傳輸。為實(shí)現(xiàn)多點(diǎn)通信,通常用軟件識(shí)別發(fā)往本站點(diǎn)或其它站點(diǎn)的數(shù)據(jù),這會(huì)加大CPU的開銷。介紹了一種基于FPGA的UART IP,由硬件實(shí)現(xiàn)多點(diǎn)通信時(shí)的數(shù)據(jù)過(guò)濾功能,降低了CPU的負(fù)擔(dān),提高了系統(tǒng)性能。
關(guān)鍵詞:UART 多點(diǎn)通信 FPGA 知識(shí)產(chǎn)權(quán)
在通信和控制系統(tǒng)中,常使用異步串行通信實(shí)現(xiàn)多塊單板之間的輔助通信,各個(gè)單板通過(guò)總線方式連接。為了實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,需要由軟件定義一套較復(fù)雜的通信協(xié)議,過(guò)濾往來(lái)的數(shù)據(jù),消耗了CPU較多的時(shí)間。89C51單片機(jī)有一種九位通信方式,采用一位地址位來(lái)實(shí)現(xiàn)通信對(duì)象的選擇,只對(duì)發(fā)往本地址的地址發(fā)生中斷進(jìn)而接收數(shù)據(jù)。通用的UART芯片如16C550和89C51等構(gòu)成總線式的通信系統(tǒng)時(shí),需要由CPU通過(guò)軟件處理接收到的地址和產(chǎn)生九位的數(shù)據(jù)。本文介紹的UART采用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì),可以用FPGA實(shí)現(xiàn),可應(yīng)用于SoC設(shè)計(jì)中。其主要特性如下:
·全硬件地址識(shí)別,過(guò)濾數(shù)據(jù)不需要CPU的介入;支持一個(gè)特殊地址,可用于監(jiān)聽和廣播。
·支持查詢和中斷兩種工作方式,中斷可編程。
·接收和發(fā)送通路分別有128Byte FIFO,每個(gè)接收字節(jié)附帶狀態(tài)信息。
·設(shè)計(jì)采用Verilog HDL語(yǔ)言,全同步接口,可移植性好。
·支持自環(huán)測(cè)試功能。
·波特率可以編程,支持八位或者九位兩種數(shù)據(jù)格式。
設(shè)計(jì)的UART的九位串行數(shù)據(jù)格式如圖1所示。在空閑狀態(tài),數(shù)據(jù)線處于高電平狀態(tài)?偩由高到低跳變,寬度為一個(gè)波特率時(shí)間的負(fù)脈沖為開始位,然后是8bit的數(shù)據(jù)位。數(shù)據(jù)位后面是lbit的地址信息位。如果此位是1,表示發(fā)送的字節(jié)是地址信息;如果此位是0,傳輸?shù)氖钦?shù)據(jù)信息。地址指示位后是串行數(shù)據(jù)的停止位。
1 UART設(shè)計(jì)
UART采用模塊化、層次化的設(shè)計(jì)思想,全部設(shè)計(jì)都采用Verilog HDL實(shí)現(xiàn),其組成框圖如圖2所示。整個(gè)UART IP由串行數(shù)據(jù)發(fā)送模塊、串行數(shù)據(jù)接收模塊、接收地址識(shí)別模塊、接收和發(fā)送HIFO、總線接口邏輯、寄存器和控制邏輯構(gòu)成。串行發(fā)送模塊和接收完成并/串及串/并的轉(zhuǎn)換,接收地址的識(shí)別由接收地址識(shí)別模塊完成。發(fā)送和接收HIFO用于緩存發(fā)送和接收的數(shù)據(jù)?偩接口邏輯用于連接UART IP內(nèi)部總線和HOST接口。寄存器和控制邏輯實(shí)現(xiàn)UART IP內(nèi)部所有數(shù)據(jù)的收發(fā)、控制和狀態(tài)寄存器、內(nèi)部中斷的控制及波特率信號(hào)的產(chǎn)生。以下詳細(xì)說(shuō)明主要部分的設(shè)計(jì)原理。
1.1 串行數(shù)據(jù)發(fā)送模塊
串行數(shù)據(jù)發(fā)送模塊將數(shù)據(jù)或地址碼由并行轉(zhuǎn)換為串行,并從串行總線輸出。設(shè)計(jì)采用有限狀態(tài)機(jī)實(shí)現(xiàn),分為空閑、取數(shù)、發(fā)送三個(gè)狀態(tài)。其狀態(tài)遷移如圖3所示。各個(gè)狀態(tài)說(shuō)明如下:
空閑狀態(tài):狀態(tài)機(jī)不斷檢測(cè)發(fā)送使能位、UART使能位和發(fā)送FIFO空/滿標(biāo)志位,如果使能位為高、UART使能打開且FIFO空標(biāo)志位為低,串行發(fā)送進(jìn)入取數(shù)狀態(tài)。
取數(shù)狀態(tài):在此狀態(tài),分兩個(gè)周期從發(fā)送FIFO中取出待發(fā)送的數(shù)據(jù)或者地址,然后進(jìn)入發(fā)送狀態(tài)。
發(fā)送狀態(tài):在此狀態(tài),狀態(tài)機(jī)按照九位串行數(shù)據(jù)的格式依次發(fā)送開始位、數(shù)據(jù)位、地址指示位。待停止位發(fā)送完畢后,返回空閑狀態(tài)。一個(gè)字節(jié)的數(shù)據(jù)發(fā)送完畢后,進(jìn)行下一個(gè)字節(jié)數(shù)據(jù)的發(fā)送流程。
1.2 串行數(shù)據(jù)接收模塊
串行數(shù)據(jù)接收模塊用于檢測(cè)串行數(shù)據(jù)的開始位,將串行總線上的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)并輸出。接收邏輯也采用有限狀態(tài)機(jī)實(shí)現(xiàn),分為空閑狀態(tài)、尋找開始位、接收數(shù)據(jù)和保存數(shù)據(jù)四個(gè)狀態(tài)。其狀態(tài)遷移圖如圖4所示。各個(gè)狀態(tài)說(shuō)明如下:
空閑狀態(tài):在此狀態(tài),不斷檢測(cè)接收使能、UART使能和串行輸入信號(hào)的狀態(tài)。如果串行輸入信號(hào)出現(xiàn)由高到低的電平變化且UART使能和接收使能都為高,則將采樣計(jì)數(shù)器復(fù)位,并進(jìn)入尋找開始位狀態(tài)。
尋找開始位:在此狀態(tài),狀態(tài)機(jī)等待半個(gè)波特率的時(shí)間,然后重新檢測(cè)串行輸入的電平。如果為低,則判斷收到的開始位有效,進(jìn)入接收數(shù)據(jù)狀態(tài);否則認(rèn)為數(shù)據(jù)總線上出現(xiàn)干擾,開始位無(wú)效,重新返回空閑狀態(tài)。
接收數(shù)據(jù):在此狀態(tài),依次接收
摘要:在通信和控制系統(tǒng)中,常使用異步串行通信控制器(UART)實(shí)現(xiàn)系統(tǒng)輔助信息的傳輸。為實(shí)現(xiàn)多點(diǎn)通信,通常用軟件識(shí)別發(fā)往本站點(diǎn)或其它站點(diǎn)的數(shù)據(jù),這會(huì)加大CPU的開銷。介紹了一種基于FPGA的UART IP,由硬件實(shí)現(xiàn)多點(diǎn)通信時(shí)的數(shù)據(jù)過(guò)濾功能,降低了CPU的負(fù)擔(dān),提高了系統(tǒng)性能。
關(guān)鍵詞:UART 多點(diǎn)通信 FPGA 知識(shí)產(chǎn)權(quán)
在通信和控制系統(tǒng)中,常使用異步串行通信實(shí)現(xiàn)多塊單板之間的輔助通信,各個(gè)單板通過(guò)總線方式連接。為了實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,需要由軟件定義一套較復(fù)雜的通信協(xié)議,過(guò)濾往來(lái)的數(shù)據(jù),消耗了CPU較多的時(shí)間。89C51單片機(jī)有一種九位通信方式,采用一位地址位來(lái)實(shí)現(xiàn)通信對(duì)象的選擇,只對(duì)發(fā)往本地址的地址發(fā)生中斷進(jìn)而接收數(shù)據(jù)。通用的UART芯片如16C550和89C51等構(gòu)成總線式的通信系統(tǒng)時(shí),需要由CPU通過(guò)軟件處理接收到的地址和產(chǎn)生九位的數(shù)據(jù)。本文介紹的UART采用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì),可以用FPGA實(shí)現(xiàn),可應(yīng)用于SoC設(shè)計(jì)中。其主要特性如下:
·全硬件地址識(shí)別,過(guò)濾數(shù)據(jù)不需要CPU的介入;支持一個(gè)特殊地址,可用于監(jiān)聽和廣播。
·支持查詢和中斷兩種工作方式,中斷可編程。
·接收和發(fā)送通路分別有128Byte FIFO,每個(gè)接收字節(jié)附帶狀態(tài)信息。
·設(shè)計(jì)采用Verilog HDL語(yǔ)言,全同步接口,可移植性好。
·支持自環(huán)測(cè)試功能。
·波特率可以編程,支持八位或者九位兩種數(shù)據(jù)格式。
設(shè)計(jì)的UART的九位串行數(shù)據(jù)格式如圖1所示。在空閑狀態(tài),數(shù)據(jù)線處于高電平狀態(tài)?偩由高到低跳變,寬度為一個(gè)波特率時(shí)間的負(fù)脈沖為開始位,然后是8bit的數(shù)據(jù)位。數(shù)據(jù)位后面是lbit的地址信息位。如果此位是1,表示發(fā)送的字節(jié)是地址信息;如果此位是0,傳輸?shù)氖钦?shù)據(jù)信息。地址指示位后是串行數(shù)據(jù)的停止位。
1 UART設(shè)計(jì)
UART采用模塊化、層次化的設(shè)計(jì)思想,全部設(shè)計(jì)都采用Verilog HDL實(shí)現(xiàn),其組成框圖如圖2所示。整個(gè)UART IP由串行數(shù)據(jù)發(fā)送模塊、串行數(shù)據(jù)接收模塊、接收地址識(shí)別模塊、接收和發(fā)送HIFO、總線接口邏輯、寄存器和控制邏輯構(gòu)成。串行發(fā)送模塊和接收完成并/串及串/并的轉(zhuǎn)換,接收地址的識(shí)別由接收地址識(shí)別模塊完成。發(fā)送和接收HIFO用于緩存發(fā)送和接收的數(shù)據(jù)?偩接口邏輯用于連接UART IP內(nèi)部總線和HOST接口。寄存器和控制邏輯實(shí)現(xiàn)UART IP內(nèi)部所有數(shù)據(jù)的收發(fā)、控制和狀態(tài)寄存器、內(nèi)部中斷的控制及波特率信號(hào)的產(chǎn)生。以下詳細(xì)說(shuō)明主要部分的設(shè)計(jì)原理。
1.1 串行數(shù)據(jù)發(fā)送模塊
串行數(shù)據(jù)發(fā)送模塊將數(shù)據(jù)或地址碼由并行轉(zhuǎn)換為串行,并從串行總線輸出。設(shè)計(jì)采用有限狀態(tài)機(jī)實(shí)現(xiàn),分為空閑、取數(shù)、發(fā)送三個(gè)狀態(tài)。其狀態(tài)遷移如圖3所示。各個(gè)狀態(tài)說(shuō)明如下:
空閑狀態(tài):狀態(tài)機(jī)不斷檢測(cè)發(fā)送使能位、UART使能位和發(fā)送FIFO空/滿標(biāo)志位,如果使能位為高、UART使能打開且FIFO空標(biāo)志位為低,串行發(fā)送進(jìn)入取數(shù)狀態(tài)。
取數(shù)狀態(tài):在此狀態(tài),分兩個(gè)周期從發(fā)送FIFO中取出待發(fā)送的數(shù)據(jù)或者地址,然后進(jìn)入發(fā)送狀態(tài)。
發(fā)送狀態(tài):在此狀態(tài),狀態(tài)機(jī)按照九位串行數(shù)據(jù)的格式依次發(fā)送開始位、數(shù)據(jù)位、地址指示位。待停止位發(fā)送完畢后,返回空閑狀態(tài)。一個(gè)字節(jié)的數(shù)據(jù)發(fā)送完畢后,進(jìn)行下一個(gè)字節(jié)數(shù)據(jù)的發(fā)送流程。
1.2 串行數(shù)據(jù)接收模塊
串行數(shù)據(jù)接收模塊用于檢測(cè)串行數(shù)據(jù)的開始位,將串行總線上的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)并輸出。接收邏輯也采用有限狀態(tài)機(jī)實(shí)現(xiàn),分為空閑狀態(tài)、尋找開始位、接收數(shù)據(jù)和保存數(shù)據(jù)四個(gè)狀態(tài)。其狀態(tài)遷移圖如圖4所示。各個(gè)狀態(tài)說(shuō)明如下:
空閑狀態(tài):在此狀態(tài),不斷檢測(cè)接收使能、UART使能和串行輸入信號(hào)的狀態(tài)。如果串行輸入信號(hào)出現(xiàn)由高到低的電平變化且UART使能和接收使能都為高,則將采樣計(jì)數(shù)器復(fù)位,并進(jìn)入尋找開始位狀態(tài)。
尋找開始位:在此狀態(tài),狀態(tài)機(jī)等待半個(gè)波特率的時(shí)間,然后重新檢測(cè)串行輸入的電平。如果為低,則判斷收到的開始位有效,進(jìn)入接收數(shù)據(jù)狀態(tài);否則認(rèn)為數(shù)據(jù)總線上出現(xiàn)干擾,開始位無(wú)效,重新返回空閑狀態(tài)。
接收數(shù)據(jù):在此狀態(tài),依次接收
熱門點(diǎn)擊
- MMIC和RFIC的CAD 王紹東,高學(xué)邦,
- 幀存儲(chǔ)器AL440B及其在視頻回放系統(tǒng)中的應(yīng)
- D/A轉(zhuǎn)換器輸出波形的尖峰消除方案
- LabVIEW與MATLAB混合編程
- 帶硬件地址識(shí)別的UART IP 的設(shè)計(jì)和實(shí)現(xiàn)
- 單片機(jī)89C52并行I/O口實(shí)現(xiàn)多個(gè)LED顯
- SMT焊接常見缺陷及解決辦法
- EDA海外發(fā)展前景(上)
- 數(shù)字動(dòng)態(tài)偏置IC提供完整的功率放大器偏置解決
- 采用微流體背部冷卻技術(shù)實(shí)現(xiàn)芯片散熱(圖)
推薦技術(shù)資料
- 按鈕與燈的互動(dòng)實(shí)例
- 現(xiàn)在趕快去看看這個(gè)目錄卞有什么。FGA15N120AN... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究