欧美视频综合-欧美视频中文字幕-欧美视频在线观在线看-欧美视频在线观看网站-直接观看黄网站免费视频-正在播放久久

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
基于FPGA/CPLD設計與實現UART
基于FPGA/CPLD設計與實現UART
 更新時間:2009-8-6 15:59:47  點擊數:0
【字體: 字體顏色



 

摘 要:UART是廣泛使用的串行數據通訊電路。本設計包含UART發送器、接收器和波特率發生器。設計應用EDA技術,基于FPGA/CPLD器件設計與實現UART。
關鍵詞:FPGA/CPLD;UART;VHDL

---UART(即Universal Asynchronous Receiver Transmitter 通用異步收發器)是廣泛使用的串行數據傳輸協議。UART允許在串行鏈路上進行全雙工的通信。
---串行外設用到RS232-C異步串行接口,一般采用專用的集成電路即UART實現。如8250、8251、NS16450等芯片都是常見的UART器件,這類芯片已經相當復雜,有的含有許多輔助的模塊(如FIFO),有時我們不需要使用完整的UART的功能和這些輔助功能。或者設計上用到了FPGA/CPLD器件,那么我們就可以將所需要的UART功能集成到FPGA內部。使用VHDL將UART的核心功能集成,從而使整個設計更加緊湊、穩定且可靠。本文應用EDA技術,基于FPGA/CPLD器件設計與實現UART。

一 UART簡介
1 UART結構
---UART主要有由數據總線接口、控制邏輯、波特率發生器、發送部分和接收部分等組成。
---功能包括微處理器接口,發送緩沖器(tbr)、發送移位寄存器(tsr)、幀產生、奇偶校驗、并轉串、數據接收緩沖器(rbr)、接收移位寄存器(rsr)、幀產生、奇偶校驗、串轉并。
---圖1是UART的典型應用。
2 UART的幀格式
---UART的幀格式如圖2所示。


---包括線路空閑狀態(idle,高電平)、起始位(start bit,低電平)、5~8位數據位(data bits)、校驗位(parity bit,可選)和停止位(stop bit,位數可為1、1.5、2位)。
---這種格式是由起始位和停止位來實現字符的同步。
---UART內部一般有配置寄存器,可以配置數據位數(5~8位)、是否有校驗位和校驗的類型、停止位的位數(1,1.5,2)等設置。

二 UART的設計與實現
1 UART發送器
---發送器每隔16個CLK16時鐘周期輸出1位,次序遵循1位起始位、8位數據位(假定數據位為8位)、1位校驗位(可選)、1位停止位。
---CPU何時可以往發送緩沖器tbr寫入數據,也就是說CPU要寫數據到tbr時必須判斷當前是否可寫,如果不判這個條件,發送的數據會出錯。
---數據的發送是由微處理器控制,微處理器給出wen信號,發送器根據此信號將并行數據din[7..0]鎖存進發送緩沖器tbr[7..0],并通過發送移位寄存器tsr[7..0]發送串行數據至串行數據輸出端dout。在數據發送過程中用輸出信號tre作為標志信號,當一幀數據發送完畢時,tre信號為1,通知CPU在下個時鐘裝入新數據。
---發送器端口信號如圖3所示。

---引入發送字符長度和發送次序計數器length_no,實現的部分VHDL程序如下。
---if std_logic_vector(length_no) = “0001” then
---tsr <= tbr ; --發送緩沖器tbr數據進入發送移位寄存器tsr
---tre <= "0" ; --發送移位寄存器空標志置“0”
---elsif std_logic_vector(length_no) = “0010” then
---dout <= "0" ; --發送起始位信號“0”
---elsif std_logic_vector(length_no) >= “0011” and std_logic_vector(length_no) <= “1010” then
---tsr <= "0" & tsr(7 downto 1); --從低位到高位進行移位輸出至串行輸出端dout
---dout <= tsr(0) ;
---parity <= parity xor tsr(0) ; --奇偶校驗
---elsif std_logic_vector(length_no) = “1011” then
---dout <= parity ; 校驗位輸出
---elsif std_logic_vector(length_no) = “1100” then
---dout <= "1" ; --停止位輸出
---tre <= "1" ; --發送完畢標志置“1”
---end if ;
---發送器仿真波形如圖4所示。

2 UART接收器
---串行數據幀和接收時鐘是異步的,發送來的數據由邏輯1變為邏輯0可以視為一個數據幀的開始。接收器先要捕捉起始位,確定rxd輸入由1到0,邏輯0要8個CLK16時鐘周期,才是正常的起始位,然后在每隔16個CLK16時鐘周期采樣接收數據,移位輸入接收移位寄存器rsr,最后輸出數據dout。還要輸出一個數據接收標志信號標志數據接收完。
---接收器的端口信號如圖5所示。
---實現的部分VHDL程序如下。
---elsif clk1x"event and clk1x = "1" then
---if std_logic_vector(length_no) >= “0001” and std_logic_vector(length_no) <= “1001” then
-----數據幀數據由接收串行數據端移位入接收移位寄存器
---rsr(0) <= rxda ;
---rsr(7 downto 1) <= rsr(6 downto 0) ;
---parity <= parity xor rsr(7) ;
---elsif std_logic_vector(length_no) = “1010” then
---rbr <= rsr ; --接收移位寄存器數據進入接收緩沖器
---......
---end if ;
---接收器仿真波形如圖6所示。

3 波特率發生器
---UART的接收和發送是按照相同的波特率進行收發的。波特率發生器產生的時鐘頻率不是波特率時鐘頻率,而是波特率時鐘頻率的16倍,目的是為在接收時進行精確地采樣,以提出異步的串行數據。
---根據給定的晶振時鐘和要求的波特率算出波特率分頻數。
---波特率發生器仿真波形如圖7所示。

三 小結
---通過波特率發生器、發送器和接收器模塊的設計與仿真,能較容易地實現通用異步收發器總模塊,對于收發的數據幀和發生的波特率時鐘頻率能較靈活地改變,而且硬件實現不需要很多資源,尤其能較靈活地嵌入到FPGA/CPLD的開發中。在EDA技術平臺上進行設計、仿真與實現具有較好的優越性。

  • 上一篇: 基于FPGA的PCI總線接口設計
  • 下一篇: EPM7128在TMS320LF2407A系統中電平轉換的應用
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1