新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于FPGA的UARTl6550的設計

        基于FPGA的UARTl6550的設計

        ——
        作者:王建偉 王厚軍 時間:2007-07-10 來源:現代電子技術 收藏
        1 引 言

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

          2 UART16550的基本結構

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

        基本結構

          CPU通過UART的CPU接口模塊配置整個UART,波特率發生器在CPU寫入初始值后產生需要的波特率,控制發送和接收模塊在設定的波特率下工作。CPU通過接口模塊向發送FIFO內寫入需

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

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

          3 UART16550的設計實現

          3.1 CPU接口模塊

          CPU接口模塊完成了CPU指令的解讀與寄存器配置以及UART狀態讀取等功能。通過3位的地址線和8位的數據線,CPU可以對波特率發生器的波特率進行預先的設定,以使串口兩端的設備在同一波特率下完成接收和發送的工作。同時CPU接口接收來自CPU的需要發送的5∽8位數據,送人發送模塊,或者把接收模塊接收到的數據通過接口送給CPU進行數據處理。在此接口模塊里,設置了8個控制和狀態寄存器,包括RBR(Receiver Buffer Register)接收緩沖寄存器、THR(Transmit Hold Register)發送保持寄存器、IER(Interrupt Enable Register)中斷使能寄存器、IIR(Interrupt ID Register)中斷寄存器、LCR(Line Control Register)線控制寄存器、LSR(Line Status Register)線狀態寄存器、SCR(Scratchpad Register)暫存寄存器和FCR(FIFO Control Register)。在使用UART16550前,CPU必須要對控制寄存器進行配置,包括波特率、數據位數、奇偶校驗、停止位位數及FIFO的控制等。這也是16550區別于一般UART的具有可編程的特點。

          3.2波特率發生器

          波特率是單位時間內傳送的二進制數據的位數,以位/秒(b/s)表示,也稱為數據位率。

          收/發時鐘頻率與波特率之間關系:

          收/發時鐘頻率=N

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 武川县| 博乐市| 海兴县| 怀化市| 石门县| 桑日县| 赣榆县| 会东县| 岚皋县| 隆子县| 轮台县| 伊宁市| 海口市| 绥宁县| 宝应县| 中西区| 治县。| 饶河县| 华阴市| 河南省| 突泉县| 稻城县| 黑河市| 图木舒克市| 抚松县| 安西县| 遂昌县| 玉林市| 清徐县| 新建县| 昆明市| 察哈| 沙河市| 远安县| 中山市| 宜君县| 开原市| 宁都县| 湖口县| 遂昌县| 义乌市|