雙DSP系統(tǒng)串口擴(kuò)展
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在研制無線分組網(wǎng)絡(luò)路由控制器時(shí),采用了雙DSP結(jié)構(gòu)進(jìn)行數(shù)據(jù)處理,另外還需擴(kuò)展8個(gè)串口,很顯然這是DSP本身所無法解決的,故必須進(jìn)行串口擴(kuò)展。
常用串口擴(kuò)展方法:
從本質(zhì)上講,所有的串口擴(kuò)展接口電路都是以并行數(shù)據(jù)形式與CPU接口,而以串行數(shù)據(jù)形式與外部邏輯接口。它們的基本功能是從外部邏輯接收串行數(shù)據(jù),轉(zhuǎn)換成并行數(shù)據(jù)后傳送給CPU;或者從CPU并行輸出的數(shù)據(jù),轉(zhuǎn)變成串行數(shù)據(jù)后輸出給外部邏輯。串行通信接口電路至少包括一個(gè)接收器和一個(gè)發(fā)送器,而接收器和發(fā)送器都分別包括一個(gè)數(shù)據(jù)寄存器和一個(gè)移位寄存器,以便實(shí)現(xiàn)CPU輸出→并行→串行→發(fā)送或接收→串行→并行→CPU輸入操作。
串口擴(kuò)展的方法一般有三種,一是全部應(yīng)用硬件,由中小集成電路構(gòu)成串口,這種方法已很少使用;二是利用通用I/O口,由軟件來設(shè)定波特率;三是應(yīng)用串行接口器件(如UART、USRT、USART等)來擴(kuò)展串口,CPU只需通過這些接口器件所提供的接口來編程,就可以實(shí)現(xiàn)串行通信。
SCC85C30的性能特點(diǎn)
對(duì)一個(gè)需進(jìn)行實(shí)時(shí)多路并行數(shù)據(jù)處理的系統(tǒng)來說,選用一種高效可靠的串行通信接口器件是非常重要的。Zilog公司的串行通信控制器(SCC)85C30就是一種高性能的串行通信接口器件,其功能比其它USART(Universal Synchronous Asynchronous Receiver/Transmitter通用異步同步收發(fā)器)強(qiáng)大的多。85C30串行通信控制器(SCC)是一種雙通道、多規(guī)約數(shù)據(jù)通信外圍器件,該芯片為處理各種有效的串行通信規(guī)程提供多功能支持:可起到串-并、并-串的轉(zhuǎn)換器/控制器作用,它在程序控制下可滿足串行通信上廣泛多樣的用途;具有波特率發(fā)生器、數(shù)字鎖相環(huán)和晶體振蕩器,使外部邏輯得到簡化;能以多種方式產(chǎn)生和檢測(cè)CRC碼,并可通過多種方式編程來檢查數(shù)據(jù)的完整性,有同時(shí)在兩條通道上控制調(diào)制-解調(diào)的能力。在不需要這些控制的用途中,調(diào)制-解調(diào)控制器可作為通用I/O。
85C30的每路信道可存取14個(gè)寫寄存器和7個(gè)讀寄存器,用戶可進(jìn)行配置使其能處理全部非同步格式,而與數(shù)據(jù)長度、停止位的數(shù)目或奇偶要求無關(guān)。還能處理所有的同步格式,包括按字符、按字節(jié)的存取規(guī)程。85C30還具有下列功能:通過檢查奇偶位改變規(guī)程;插入或刪除字符,生成CRC,并加以檢查;生成斷點(diǎn)和異常中止碼,并加以檢測(cè);以及其它許多與規(guī)程有關(guān)的功能。
85C30內(nèi)部結(jié)構(gòu)能提供連接多路轉(zhuǎn)換總線和非多路轉(zhuǎn)換總線所必要的全部中斷和控制邏輯。此外還有接口邏輯,用于監(jiān)視調(diào)制解調(diào)器和外圍控制輸入輸出。其控制信號(hào)都是通用的,不僅用于調(diào)制解調(diào)控制,而且適用于控制多種外圍設(shè)備。數(shù)據(jù)操作和控制聯(lián)接都通過內(nèi)部的讀和寫寄存器進(jìn)行,這些寄存器經(jīng)編程之后,可使85C30執(zhí)行各種功能(硬件開銷?。丛诔绦蚺抨?duì)之前或之中對(duì)寄存器賦值,以決定85C30如何建立一個(gè)給定的通信規(guī)程。
85C30采用附加電路支持串行通信。設(shè)計(jì)人員可以選擇內(nèi)部波特率發(fā)生器,選擇頻率并對(duì)85C30中的幾個(gè)電路之一的輸出編程。可在程序控制下對(duì)幾種標(biāo)準(zhǔn)格式進(jìn)行編碼和譯碼。另外,還可為DPLL、波特率發(fā)生器接收器和發(fā)送器選擇各種定時(shí)部件。
雙DSP對(duì)多個(gè)SCC的控制設(shè)計(jì)
對(duì)一個(gè)進(jìn)行實(shí)時(shí)并行多通道數(shù)據(jù)處理的雙DSP系統(tǒng)來說,其擴(kuò)展的串口也必須滿足系統(tǒng)的實(shí)行性要求。串行接口器件性能的好壞以及雙DSP對(duì)多個(gè)串行通信控制器(SCC)控制的好壞直接影響到系統(tǒng)的整體性能。
雙DSP系統(tǒng)對(duì)多個(gè)SCC控制,采用4片Zilog公司的SCC(85C30)使雙DSP(TMS320F206)在原有2個(gè)異步串口和2個(gè)同步串口的基礎(chǔ)上又增加了8個(gè)串行口(可根據(jù)需要設(shè)定為異步口或設(shè)定為同步口)。
85C30是較為復(fù)雜的器件,要充分利用其功能,需對(duì)其進(jìn)行合理編程。在編程時(shí)需對(duì)其諸多寄存器進(jìn)行操作,這在單個(gè)DSP情況下也是較為復(fù)雜的。用雙DSP對(duì)其控制,以及雙DSP對(duì)多SCC的控制情況更為復(fù)雜,需解決以下的問題:
(1)對(duì)SCC訪問的優(yōu)先權(quán)問題;
(2)數(shù)據(jù)線、地址線、選通控制線的方向問題;
(3)雙DSP相互間握手、時(shí)序問題;
(4)兩套總線間干擾的消除問題及總線切換時(shí)的誤動(dòng)作問題;
為解決這些問題,需采取硬件設(shè)計(jì)和軟件設(shè)計(jì)相結(jié)合的辦法,使DSP對(duì)SCC的控制更可靠,效率更高。
在硬件的設(shè)計(jì)上:
(1)采用了兩套獨(dú)立的數(shù)據(jù)線和地址線,重點(diǎn)解決了讀/寫、片選等切換邏輯的設(shè)計(jì)問題;
(2)采用雙向三態(tài)總線驅(qū)動(dòng)器(如74LS245)實(shí)現(xiàn)數(shù)據(jù)、地址、控制總線的隔離;
(3)把DSP(TMS320F206)的IO0、IO1、IO2、IO3設(shè)置為對(duì)SCC的訪問控制線。實(shí)現(xiàn)DSP對(duì)SCC的分時(shí)復(fù)用。
在軟件設(shè)計(jì)上:
(1)對(duì)兩個(gè)DSP進(jìn)行了分工,設(shè)定DSP1負(fù)責(zé)接收數(shù)據(jù),DSP2負(fù)責(zé)發(fā)送數(shù)據(jù);
(2)設(shè)定DSP1從第1個(gè)SCC開始向后查詢,DSP2從第三個(gè)SCC向后查詢,最大限度地降低二者忙閑比,提高了系統(tǒng)的實(shí)時(shí)性。
(3)把IO0、IO1設(shè)定為發(fā)送端口,把IO2、IO3設(shè)定為接收端口。IO0-IO3值所表達(dá)含義如附表所示。
(4)對(duì)SCC分時(shí)選通。訪問某一SCC前先查詢IO2、IO3以確定另一DSP是否正在訪問它,若另一DSP不訪問該SCC,則訪問之首先把該SCC的編號(hào)通過IO0、IO1發(fā)送給另一DSP;若另一DSP正訪問它,則跳過該SCC,訪問下一SCC,同樣也把該SCC的編號(hào)通過IO0、IO1發(fā)送給另一DSP。