<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > 基于FPGA的UARTl6550的設計

基于FPGA的UARTl6550的設計

——
作者:王建偉 王厚軍 時(shí)間:2007-07-10 來(lái)源:現代電子技術(shù) 收藏
1 引 言

  UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)器)是用于控制CPU與串行設備通信的芯片,將由CPU傳送過(guò)來(lái)的并行數據轉換為輸出的串行數據流。將系統外部來(lái)的串行數據轉換為字節,供系統內部使用并行數據的器件使用。他可以在輸出的串行數據流中加人奇偶校驗位和啟停標記,并對從外部接收的數據流進(jìn)行奇偶校驗以及刪除啟停標記。常見(jiàn)UART主要有INS8250,PC16450和PCI6550,其中16550發(fā)送和接收都帶有16 B的FIFO,為協(xié)調發(fā)送、接收端的速率匹配提供了更大的緩沖余地,同時(shí)也可以提高CPU的使用效率,從而提高系統的整體性能。

  2 UART16550的基本結構

  如圖1所示,UART16550的基本結構由CPU接口模塊、波特率發(fā)生器、FIFO控制器、發(fā)送/接收FIFO和發(fā)送/接收模塊共7個(gè)部分組成。

基本結構

  CPU通過(guò)UART的CPU接口模塊配置整個(gè)UART,波特率發(fā)生器在CPU寫(xiě)入初始值后產(chǎn)生需要的波特率,控制發(fā)送和接收模塊在設定的波特率下工作。CPU通過(guò)接口模塊向發(fā)送FIFO內寫(xiě)入需

要發(fā)送的8位數據,同時(shí)發(fā)送模塊開(kāi)始讀取FIFO中的數據,并加入起始位、奇偶校驗位和停止位后以串行發(fā)送的方式傳輸給串行接收設備。接收模塊時(shí)刻監視串行輸入端口,發(fā)現有數據發(fā)送來(lái)的時(shí)候馬上啟動(dòng)接收模塊開(kāi)始接收數據并有效的判斷出奇偶校驗位來(lái)檢測數據的正確性,最后把剩下的8位數據放入接收FIFO,并通知CPU有數據進(jìn)來(lái)進(jìn)行接收。異步串行通信協(xié)議的數據傳輸格式如圖2所示。

  UART16550的發(fā)送數據位可以選擇為5~8位,同時(shí)可以選擇奇校驗、偶校驗或者不設置校驗位,停止位可以約定為1,1.5或2位。

  3 UART16550的設計實(shí)現

  3.1 CPU接口模塊

  CPU接口模塊完成了CPU指令的解讀與寄存器配置以及UART狀態(tài)讀取等功能。通過(guò)3位的地址線(xiàn)和8位的數據線(xiàn),CPU可以對波特率發(fā)生器的波特率進(jìn)行預先的設定,以使串口兩端的設備在同一波特率下完成接收和發(fā)送的工作。同時(shí)CPU接口接收來(lái)自CPU的需要發(fā)送的5∽8位數據,送人發(fā)送模塊,或者把接收模塊接收到的數據通過(guò)接口送給CPU進(jìn)行數據處理。在此接口模塊里,設置了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)線(xiàn)控制寄存器、LSR(Line Status Register)線(xiàn)狀態(tài)寄存器、SCR(Scratchpad Register)暫存寄存器和FCR(FIFO Control Register)。在使用UART16550前,CPU必須要對控制寄存器進(jìn)行配置,包括波特率、數據位數、奇偶校驗、停止位位數及FIFO的控制等。這也是16550區別于一般UART的具有可編程的特點(diǎn)。

  3.2波特率發(fā)生器

  波特率是單位時(shí)間內傳送的二進(jìn)制數據的位數,以位/秒(b/s)表示,也稱(chēng)為數據位率。

  收/發(fā)時(shí)鐘頻率與波特率之間關(guān)系:

  收/發(fā)時(shí)鐘頻率=N

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>