基于FPGA和SC16C554實(shí)現多串口通信的方法
0 引言
隨著(zhù)電子技術(shù)的飛躍發(fā)展,通用數字信號處理器(DSP)的性能價(jià)格比不斷提高,數據處理能力不斷加強,其應用領(lǐng)域日益增多,在數據實(shí)時(shí)采集及高速數字信號處理中應用尤其廣泛。當DSP獨立構成一個(gè)處理單元時(shí),往往需要和外設進(jìn)行數據交換,其通信能力至關(guān)重要。在研制機載合成孔徑雷達系統時(shí),信號處理機作為系統的核心要與飛控系統、穩定平臺、雷達信號源以及導航系統等部分進(jìn)行數據交換;如何實(shí)現其與其它部分之間有效的通信成為系統設計的關(guān)鍵。串口通信因為其簡(jiǎn)單,可靠仍然是廣泛采用的方法之一。
1 串口擴展方案選擇
多串口通信常用的實(shí)現方案有兩種:一種是軟件實(shí)現,采用軟件編程模擬串口,該方法成本低,但編程復雜、開(kāi)發(fā)周期長(cháng)、可靠性低。另一種是硬件實(shí)現,使用多串口單片機或專(zhuān)用串口擴展芯片,該方法雖然成本較高,但是開(kāi)發(fā)比較簡(jiǎn)單,可靠性高。
目前比較通用的實(shí)現方案是采用通用異步通信芯片實(shí)現串口擴展,采用FPGA/CPLD實(shí)現DSP與異步串口擴展芯片之間的邏輯控制,完全基于DSP接收和發(fā)送數據。該方案的缺點(diǎn)是:當數據量較大、多串口同時(shí)工作時(shí)占用DSP的時(shí)間較長(cháng),影響DSP的工作效率,且會(huì )造成數據丟失。因此本文提出了一種新的實(shí)現方法--基于FPGA和通用異步通信芯片實(shí)現多串口通信設計。在不進(jìn)行硬件改動(dòng)的基礎上,通過(guò)在FPGA內建立一個(gè)緩存機制,實(shí)現接收串口芯片的數據,達到一定量時(shí)向DSP發(fā)送中斷讀取數據。該設計能極大減少對DSP的占用時(shí)間,提高了DSP的工作效率;同時(shí)提高了對串口芯片中斷請求的響應速度,解決了數據丟失的問(wèn)題。
2 硬件電路設計
本設計采用通用異步通信芯片SC16C554來(lái)實(shí)現串口擴展。SC16C554主要特點(diǎn)有:
1.有A、B、C、D四個(gè)通道獨立收發(fā)數據;
2.最高傳輸速率可達5Mbit/s,具有可編程波特率發(fā)生器,便于靈活選擇數據收發(fā)頻率;
3.具有16字節的收發(fā)FIFO,且有1、4、8、14字節四個(gè)可選擇的中斷觸發(fā)深度;
4.可通過(guò)編程設置傳輸數據的格式(數據長(cháng)度,校驗位,停止位);
5.具有可獨立控制的發(fā)送、接收、線(xiàn)路狀態(tài)和MODEM狀態(tài)中斷;
6.充分分級的中斷系統控制,全面的線(xiàn)路狀態(tài)報告功能。
基于FPGA和SC16C554實(shí)現多串口通信的基本原理圖如圖1所示:
3 軟件設計及實(shí)現
系統實(shí)際工作所需波特率分別為9600、38400、115200、153600 。分析計算可得不同波特率發(fā)送數據時(shí),連續兩個(gè)數據之間的時(shí)間間隔如表1所示:
由表1可知單個(gè)通道連續兩個(gè)中斷產(chǎn)生的最小時(shí)間間隔為65μs;因此在65μs的時(shí)間內如果可以實(shí)現對四個(gè)通道分別進(jìn)行一次讀數據操作,即使是四個(gè)通道同時(shí)來(lái)數據也不會(huì )發(fā)生數據丟失的現象。
3.1 數據的存儲設計
即在FPGA內部建立一個(gè)緩存機制。設計采用在FPGA內部做一個(gè)雙端口RAM(DPRAM),用來(lái)存儲串口數據,DSP通過(guò)訪(fǎng)問(wèn)DPRAM得到接收的串口數據。
DPRAM指一個(gè)存儲模塊卻包含兩個(gè)獨立的端口,這兩個(gè)端口共用同一塊地址空間,兩個(gè)端口都可以向這塊空間里寫(xiě)數據或從中讀取數據。DPRAM的讀寫(xiě)數據的模式包括只讀、只寫(xiě)、讀寫(xiě)三種模式,其中讀寫(xiě)模式又包括先寫(xiě)后讀、先讀后寫(xiě)、只寫(xiě)不讀三種模式,我們采用先讀后寫(xiě)的模式。
我們將DPRAM的地址空間分為四部分,分別用來(lái)存放四個(gè)通道的數據。當FPGA收到數據時(shí),我們可以根據置通道標志寄存器CS[2:0]的值來(lái)判斷該數據來(lái)自哪個(gè)通道,將其存入對應的地址空間,并將該通道對應地址線(xiàn)加一。當該通道存儲數據量達到編程設置的觸發(fā)深度時(shí),就將DSP中斷寄存器dspint置低,向DSP發(fā)送中斷;同時(shí)向DPRAM內一事先定義好的公共存儲空間寫(xiě)入通道標志字。當DSP收到中斷后,首先訪(fǎng)問(wèn)該公共存儲區讀取通道標志字,判斷該中斷是由哪個(gè)通道產(chǎn)生的;然后調用相應的接收函數從DPRAM內讀取該通道的數據存入指定的地址空間等待處理。
合成孔徑雷達相關(guān)文章:合成孔徑雷達原理
評論