• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FPGA和SC16C554實現(xiàn)多串口通信的方法

    基于FPGA和SC16C554實現(xiàn)多串口通信的方法

    作者: 時間:2009-09-01 來源:網(wǎng)絡 收藏

      0 引言

      隨著電子技術(shù)的飛躍發(fā)展,通用數(shù)字信號處理器(DSP)的性能價格比不斷提高,數(shù)據(jù)處理能力不斷加強,其應用領(lǐng)域日益增多,在數(shù)據(jù)實時采集及高速數(shù)字信號處理中應用尤其廣泛。當DSP獨立構(gòu)成一個處理單元時,往往需要和外設進行數(shù)據(jù)交換,其通信能力至關(guān)重要。在研制機載合成孔徑雷達系統(tǒng)時,信號處理機作為系統(tǒng)的核心要與飛控系統(tǒng)、穩(wěn)定平臺、雷達信號源以及導航系統(tǒng)等部分進行數(shù)據(jù)交換;如何實現(xiàn)其與其它部分之間有效的通信成為系統(tǒng)設計的關(guān)鍵。串口通信因為其簡單,可靠仍然是廣泛采用的方法之一。

      1 串口擴展方案選擇

      常用的實現(xiàn)方案有兩種:一種是軟件實現(xiàn),采用軟件編程模擬串口,該方法成本低,但編程復雜、開發(fā)周期長、可靠性低。另一種是硬件實現(xiàn),使用多串口單片機或?qū)S么跀U展芯片,該方法雖然成本較高,但是開發(fā)比較簡單,可靠性高。

      目前比較通用的實現(xiàn)方案是采用通用異步通信芯片實現(xiàn)串口擴展,采用/CPLD實現(xiàn)DSP與異步串口擴展芯片之間的邏輯控制,完全基于DSP接收和發(fā)送數(shù)據(jù)。該方案的缺點是:當數(shù)據(jù)量較大、多串口同時工作時占用DSP的時間較長,影響DSP的工作效率,且會造成數(shù)據(jù)丟失。因此本文提出了一種新的實現(xiàn)方法--基于和通用異步通信芯片實現(xiàn)設計。在不進行硬件改動的基礎上,通過在內(nèi)建立一個緩存機制,實現(xiàn)接收串口芯片的數(shù)據(jù),達到一定量時向DSP發(fā)送中斷讀取數(shù)據(jù)。該設計能極大減少對DSP的占用時間,提高了DSP的工作效率;同時提高了對串口芯片中斷請求的響應速度,解決了數(shù)據(jù)丟失的問題。

      2 硬件電路設計

      本設計采用通用異步通信芯片來實現(xiàn)串口擴展。主要特點有:

      1.有A、B、C、D四個通道獨立收發(fā)數(shù)據(jù);

      2.最高傳輸速率可達5Mbit/s,具有可編程波特率發(fā)生器,便于靈活選擇數(shù)據(jù)收發(fā)頻率;

      3.具有16字節(jié)的收發(fā)FIFO,且有1、4、8、14字節(jié)四個可選擇的中斷觸發(fā)深度;

      4.可通過編程設置傳輸數(shù)據(jù)的格式(數(shù)據(jù)長度,校驗位,停止位);

      5.具有可獨立控制的發(fā)送、接收、線路狀態(tài)和MODEM狀態(tài)中斷;

      6.充分分級的中斷系統(tǒng)控制,全面的線路狀態(tài)報告功能。

      基于FPGA和實現(xiàn)的基本原理圖如圖1所示:

      3 軟件設計及實現(xiàn)

      系統(tǒng)實際工作所需波特率分別為9600、38400、115200、153600 。分析計算可得不同波特率發(fā)送數(shù)據(jù)時,連續(xù)兩個數(shù)據(jù)之間的時間間隔如表1所示:

      由表1可知單個通道連續(xù)兩個中斷產(chǎn)生的最小時間間隔為65μs;因此在65μs的時間內(nèi)如果可以實現(xiàn)對四個通道分別進行一次讀數(shù)據(jù)操作,即使是四個通道同時來數(shù)據(jù)也不會發(fā)生數(shù)據(jù)丟失的現(xiàn)象。

      3.1 數(shù)據(jù)的存儲設計

      即在FPGA內(nèi)部建立一個緩存機制。設計采用在FPGA內(nèi)部做一個雙端口RAM(DPRAM),用來存儲串口數(shù)據(jù),DSP通過訪問DPRAM得到接收的串口數(shù)據(jù)。

      DPRAM指一個存儲模塊卻包含兩個獨立的端口,這兩個端口共用同一塊地址空間,兩個端口都可以向這塊空間里寫數(shù)據(jù)或從中讀取數(shù)據(jù)。DPRAM的讀寫數(shù)據(jù)的模式包括只讀、只寫、讀寫三種模式,其中讀寫模式又包括先寫后讀、先讀后寫、只寫不讀三種模式,我們采用先讀后寫的模式。

      我們將DPRAM的地址空間分為四部分,分別用來存放四個通道的數(shù)據(jù)。當FPGA收到數(shù)據(jù)時,我們可以根據(jù)置通道標志寄存器CS[2:0]的值來判斷該數(shù)據(jù)來自哪個通道,將其存入對應的地址空間,并將該通道對應地址線加一。當該通道存儲數(shù)據(jù)量達到編程設置的觸發(fā)深度時,就將DSP中斷寄存器dspint置低,向DSP發(fā)送中斷;同時向DPRAM內(nèi)一事先定義好的公共存儲空間寫入通道標志字。當DSP收到中斷后,首先訪問該公共存儲區(qū)讀取通道標志字,判斷該中斷是由哪個通道產(chǎn)生的;然后調(diào)用相應的接收函數(shù)從DPRAM內(nèi)讀取該通道的數(shù)據(jù)存入指定的地址空間等待處理。

    合成孔徑雷達相關(guān)文章:合成孔徑雷達原理

    上一頁 1 2 下一頁

    關(guān)鍵詞: FPGA SC16C554 多串口通信

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 平山县| 民乐县| 仲巴县| 秭归县| 和林格尔县| 禹州市| 饶河县| 会昌县| 德令哈市| 阜新| 大庆市| 常宁市| 灵山县| 资阳市| 南川市| 沾化县| 霍城县| 城口县| 临桂县| 惠东县| 抚宁县| 湖北省| 青阳县| 庆云县| 沽源县| 孝感市| 濮阳县| 成武县| 临洮县| 扎囊县| 马山县| 绥宁县| 遂溪县| 安化县| 新绛县| 邛崃市| 永和县| 丽水市| 政和县| 黄浦区| 潮州市|