基于FPGA的UARTl6550的設(shè)計(jì)
發(fā)布時(shí)間:2008/5/27 0:00:00 訪問次數(shù):506
    
     電子科技大學(xué)自動(dòng)化工程學(xué)院 王建偉,王厚軍,王 毅
    
    l 引 言
    
    uart(universal asynchronous receiver/transmitter,通用異步收發(fā)器)是用于控制cpu與串行設(shè)備通信的芯片,將由cpu傳送過來的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流。將系統(tǒng)外部來的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié),供系統(tǒng)內(nèi)部使用并行數(shù)據(jù)的器件使用。他可以在輸出的串行數(shù)據(jù)流中加人奇偶校驗(yàn)位和啟停標(biāo)記,并對從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗(yàn)以及刪除啟停標(biāo)記。常見uart主要有ins8250,pc16450和pci6550,其中16550發(fā)送和接收都帶有16 b的fifo,為協(xié)調(diào)發(fā)送、接收端的速率匹配提供了更大的緩沖余地,同時(shí)也可以提高cpu的使用效率,從而提高系統(tǒng)的整體性能。
    
    2 uart16550的基本結(jié)構(gòu)
    
    如圖1所示,uart16550的基本結(jié)構(gòu)由cpu接口模塊、波特率發(fā)生器、fifo控制器、發(fā)送/接收fifo和發(fā)送/接收模塊共7個(gè)部分組成。
    
    
    cpu通過uart的cpu接口模塊配置整個(gè)uart,波特率發(fā)生器在cpu寫入初始值后產(chǎn)生需要的波特率,控制發(fā)送和接收模塊在設(shè)定的波特率下工作。cpu通過接口模塊向發(fā)送fifo內(nèi)寫入需要發(fā)送的8位數(shù)據(jù),同時(shí)發(fā)送模塊開始讀取fifo中的數(shù)據(jù),并加入起始位、奇偶校驗(yàn)位和停止位后以串行發(fā)送的方式傳輸給串行接收設(shè)備。接收模塊時(shí)刻監(jiān)視串行輸入端口,發(fā)現(xiàn)有數(shù)據(jù)發(fā)送來的時(shí)候馬上啟動(dòng)接收模塊開始接收數(shù)據(jù)并有效的判斷出奇偶校驗(yàn)位來檢測數(shù)據(jù)的正確性,最后把剩下的8位數(shù)據(jù)放入接收fifo,并通知cpu有數(shù)據(jù)進(jìn)來進(jìn)行接收。異步串行通信協(xié)議的數(shù)據(jù)傳輸格式如圖2所示。
    
    uart16550的發(fā)送數(shù)據(jù)位可以選擇為5~8位,同時(shí)可以選擇奇校驗(yàn)、偶校驗(yàn)或者不設(shè)置校驗(yàn)位,停止位可以約定為1,1.5或2位。
    
    3 uart16550的設(shè)計(jì)實(shí)現(xiàn)
    
    3.1 cpu接口模塊
    
    cpu接口模塊完成了cpu指令的解讀與寄存器配置以及uart狀態(tài)讀取等功能。通過3位的地址線和8位的數(shù)據(jù)線,cpu可以對波特率發(fā)生器的波特率進(jìn)行預(yù)先的設(shè)定,以使串口兩端的設(shè)備在同一波特率下完成接收和發(fā)送的工作。同時(shí)cpu接口接收來自cpu的需要發(fā)送的5∽8位數(shù)據(jù),送人發(fā)送模塊,或者把接收模塊接收到的數(shù)據(jù)通過接口送給cpu進(jìn)行數(shù)據(jù)處理。在此接口模塊里,設(shè)置了8個(gè)控制和狀態(tài)寄存器,包括rbr(receiver buffer register)接收緩沖寄存器、thr(transmit hold register)發(fā)送保持寄存器、ier(interrupt enable register)中斷使能寄存器、iir(interrupt id register)中斷寄存器、lcr(line control register)線控制寄存器、lsr(line status register)線狀態(tài)寄存器、scr(scratchpad register)暫存寄存器和fcr(fifo control register)。在使用uart16550前,cpu必須要對控制寄存器進(jìn)行配置,包括波特率、數(shù)據(jù)位數(shù)、奇偶校驗(yàn)、停止位位數(shù)及fifo的控制等。這也是16550區(qū)別于一般uart的具有可編程的特點(diǎn)。
    
    3.2波特率發(fā)生器
    
    波特率是單位時(shí)間內(nèi)傳送的二進(jìn)制數(shù)據(jù)的位數(shù),以位/秒(b/s)表示,也稱為數(shù)據(jù)位率。
    
    收/發(fā)時(shí)鐘頻率與波特率之間關(guān)系:
    
    收/發(fā)時(shí)鐘頻率=n×波特率
    
    n可以取8,16,32和64等,為了兼顧速度和穩(wěn)定性一般取為16。n在硬件設(shè)計(jì)時(shí)已經(jīng)設(shè)定好,軟件不能改變。波特率發(fā)生器由兩個(gè)8位的數(shù)據(jù)寄存器組合成16位的分頻寄存器,可以實(shí)現(xiàn)系統(tǒng)頻率的1~2(16)分頻,達(dá)到預(yù)定的波特率設(shè)置。
    
    3.3 fifo控制器和發(fā)送/接收fifo
    
    帶有緩存是16550以及更高端uart的突出的特點(diǎn)。16550帶有8位寬、16字節(jié)深的異步fifo。fifo控制器從cpu接口讀入信息,配置發(fā)送/接收fifo,并且在需要的時(shí)候使能fifo,并且把fifo的實(shí)時(shí)狀態(tài)通過cpu接口送給cpu以方便cpu讀取數(shù)據(jù)。在發(fā)送fifo空和接收fifo滿的時(shí)候,fifo控制器立即產(chǎn)生中斷請求,通知cpu進(jìn)行下一步的操作。另外,當(dāng)配置dma模式時(shí),cpu可以進(jìn)行大數(shù)據(jù)量的發(fā)送和讀取
    
     電子科技大學(xué)自動(dòng)化工程學(xué)院 王建偉,王厚軍,王 毅
    
    l 引 言
    
    uart(universal asynchronous receiver/transmitter,通用異步收發(fā)器)是用于控制cpu與串行設(shè)備通信的芯片,將由cpu傳送過來的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流。將系統(tǒng)外部來的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié),供系統(tǒng)內(nèi)部使用并行數(shù)據(jù)的器件使用。他可以在輸出的串行數(shù)據(jù)流中加人奇偶校驗(yàn)位和啟停標(biāo)記,并對從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗(yàn)以及刪除啟停標(biāo)記。常見uart主要有ins8250,pc16450和pci6550,其中16550發(fā)送和接收都帶有16 b的fifo,為協(xié)調(diào)發(fā)送、接收端的速率匹配提供了更大的緩沖余地,同時(shí)也可以提高cpu的使用效率,從而提高系統(tǒng)的整體性能。
    
    2 uart16550的基本結(jié)構(gòu)
    
    如圖1所示,uart16550的基本結(jié)構(gòu)由cpu接口模塊、波特率發(fā)生器、fifo控制器、發(fā)送/接收fifo和發(fā)送/接收模塊共7個(gè)部分組成。
    
    
    cpu通過uart的cpu接口模塊配置整個(gè)uart,波特率發(fā)生器在cpu寫入初始值后產(chǎn)生需要的波特率,控制發(fā)送和接收模塊在設(shè)定的波特率下工作。cpu通過接口模塊向發(fā)送fifo內(nèi)寫入需要發(fā)送的8位數(shù)據(jù),同時(shí)發(fā)送模塊開始讀取fifo中的數(shù)據(jù),并加入起始位、奇偶校驗(yàn)位和停止位后以串行發(fā)送的方式傳輸給串行接收設(shè)備。接收模塊時(shí)刻監(jiān)視串行輸入端口,發(fā)現(xiàn)有數(shù)據(jù)發(fā)送來的時(shí)候馬上啟動(dòng)接收模塊開始接收數(shù)據(jù)并有效的判斷出奇偶校驗(yàn)位來檢測數(shù)據(jù)的正確性,最后把剩下的8位數(shù)據(jù)放入接收fifo,并通知cpu有數(shù)據(jù)進(jìn)來進(jìn)行接收。異步串行通信協(xié)議的數(shù)據(jù)傳輸格式如圖2所示。
    
    uart16550的發(fā)送數(shù)據(jù)位可以選擇為5~8位,同時(shí)可以選擇奇校驗(yàn)、偶校驗(yàn)或者不設(shè)置校驗(yàn)位,停止位可以約定為1,1.5或2位。
    
    3 uart16550的設(shè)計(jì)實(shí)現(xiàn)
    
    3.1 cpu接口模塊
    
    cpu接口模塊完成了cpu指令的解讀與寄存器配置以及uart狀態(tài)讀取等功能。通過3位的地址線和8位的數(shù)據(jù)線,cpu可以對波特率發(fā)生器的波特率進(jìn)行預(yù)先的設(shè)定,以使串口兩端的設(shè)備在同一波特率下完成接收和發(fā)送的工作。同時(shí)cpu接口接收來自cpu的需要發(fā)送的5∽8位數(shù)據(jù),送人發(fā)送模塊,或者把接收模塊接收到的數(shù)據(jù)通過接口送給cpu進(jìn)行數(shù)據(jù)處理。在此接口模塊里,設(shè)置了8個(gè)控制和狀態(tài)寄存器,包括rbr(receiver buffer register)接收緩沖寄存器、thr(transmit hold register)發(fā)送保持寄存器、ier(interrupt enable register)中斷使能寄存器、iir(interrupt id register)中斷寄存器、lcr(line control register)線控制寄存器、lsr(line status register)線狀態(tài)寄存器、scr(scratchpad register)暫存寄存器和fcr(fifo control register)。在使用uart16550前,cpu必須要對控制寄存器進(jìn)行配置,包括波特率、數(shù)據(jù)位數(shù)、奇偶校驗(yàn)、停止位位數(shù)及fifo的控制等。這也是16550區(qū)別于一般uart的具有可編程的特點(diǎn)。
    
    3.2波特率發(fā)生器
    
    波特率是單位時(shí)間內(nèi)傳送的二進(jìn)制數(shù)據(jù)的位數(shù),以位/秒(b/s)表示,也稱為數(shù)據(jù)位率。
    
    收/發(fā)時(shí)鐘頻率與波特率之間關(guān)系:
    
    收/發(fā)時(shí)鐘頻率=n×波特率
    
    n可以取8,16,32和64等,為了兼顧速度和穩(wěn)定性一般取為16。n在硬件設(shè)計(jì)時(shí)已經(jīng)設(shè)定好,軟件不能改變。波特率發(fā)生器由兩個(gè)8位的數(shù)據(jù)寄存器組合成16位的分頻寄存器,可以實(shí)現(xiàn)系統(tǒng)頻率的1~2(16)分頻,達(dá)到預(yù)定的波特率設(shè)置。
    
    3.3 fifo控制器和發(fā)送/接收fifo
    
    帶有緩存是16550以及更高端uart的突出的特點(diǎn)。16550帶有8位寬、16字節(jié)深的異步fifo。fifo控制器從cpu接口讀入信息,配置發(fā)送/接收fifo,并且在需要的時(shí)候使能fifo,并且把fifo的實(shí)時(shí)狀態(tài)通過cpu接口送給cpu以方便cpu讀取數(shù)據(jù)。在發(fā)送fifo空和接收fifo滿的時(shí)候,fifo控制器立即產(chǎn)生中斷請求,通知cpu進(jìn)行下一步的操作。另外,當(dāng)配置dma模式時(shí),cpu可以進(jìn)行大數(shù)據(jù)量的發(fā)送和讀取
熱門點(diǎn)擊
- OrCAD/PSpice9直流掃描分析的應(yīng)用
- OrCAD/PSpice9直流掃描分析的應(yīng)用
- protel99se和DXP的使用感想
- CCS噪聲模型:用于串?dāng)_噪聲分析的高精確度建
- ORCAD/PSPICE
- 硬件描述語言HDL的現(xiàn)狀與發(fā)展
- 利用Liberty CCS建模技術(shù)實(shí)現(xiàn)更高精
- OPC工具挺進(jìn)DFM
- SystemWeaver 實(shí)現(xiàn)復(fù)雜SOC的片
- 基于FPGA的多路模擬量、數(shù)字量采集與處理系
推薦技術(shù)資料
- 泰克新發(fā)布的DSA830
- 泰克新發(fā)布的DSA8300在一臺儀器中同時(shí)實(shí)現(xiàn)時(shí)域和頻域分析,DS... [詳細(xì)]
- 電源管理 IC (PMIC)&
- I2C 接口和 PmBUS 以及 OTP/M
- MOSFET 和柵極驅(qū)動(dòng)器單
- 數(shù)字恒定導(dǎo)通時(shí)間控制模式(CO
- Power Management Buck/
- 反激變換器傳導(dǎo)和輻射電磁干擾分析和抑制技術(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)用研究