dsp第5章 DSP系統(tǒng)的硬件設(shè)計_第1頁
dsp第5章 DSP系統(tǒng)的硬件設(shè)計_第2頁
dsp第5章 DSP系統(tǒng)的硬件設(shè)計_第3頁
dsp第5章 DSP系統(tǒng)的硬件設(shè)計_第4頁
dsp第5章 DSP系統(tǒng)的硬件設(shè)計_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第5章DSP系統(tǒng)的硬件設(shè)計電源設(shè)計、JTAG仿真接口設(shè)計、混合邏輯電路設(shè)計、系統(tǒng)存儲器擴(kuò)展設(shè)計及其他外圍接口電路的設(shè)計。5.1DSP系統(tǒng)基本硬件電路的設(shè)計5.1.1電源電路由TMS320C54x系列DSP構(gòu)成的系統(tǒng)一般包括3種電源:5V、3.3V和1.8V(或2.5V)。例如,由C5402DSP構(gòu)成的C5402DSK板就包括三種電源:5V、3.3V和1.8V。其中5V電源為DSK板的輸入電壓,3.3V和1.8V電源分別為DSP的I/O電源和內(nèi)核電源。DSP采用多電源而且內(nèi)核和I/O分別供電的方式,目的是為了降低芯片的功耗,提高電源的利用率。I/O電壓采用3.3V供電,使得DSP可以直接與外部3.3V的邏輯器件相接口,不需要增加附加的邏輯電平變換電路,從而簡化硬件電路的設(shè)計。通常使用穩(wěn)壓器從5V電源生成3.3V和1.8V電源。如,TPS73HD318低壓差穩(wěn)壓器就是5402DSP系統(tǒng)中常用的電源芯片,它的輸入電壓是5V,輸出電壓一路是3.3V,一路是1.8V。每路電源的最大輸出電流是1A。芯片還提供了兩個寬度為200ms的低電平復(fù)位脈沖,允許內(nèi)核和I/O分別復(fù)位。電路如P112圖5-1電源的種類1、AC/DC和DC/DC電源2、線性穩(wěn)壓器和開關(guān)穩(wěn)壓器3、降壓穩(wěn)壓器、升壓穩(wěn)壓器、升壓-降壓穩(wěn)壓器、反向穩(wěn)壓器和隔離式穩(wěn)壓器。

電源電路的好壞決定著應(yīng)用系統(tǒng)是否抗干擾,是系統(tǒng)的保障。5.1.2時鐘電路晶振電路:內(nèi)部振蕩器和外部振蕩器。

在DSP系統(tǒng)中,需要時鐘信號的器件一般有DSP、EMIF(外部存儲器接口電路,僅C55x和C6000系列DSP有)、UART和USB串行通信器件、音頻編譯碼器件、視頻解碼和編碼器件等。

當(dāng)DSP系統(tǒng)中需要多個時鐘信號時,推薦使用可編程的時鐘電路芯片。

可編程時鐘芯片有1個或多個PLL鎖相環(huán),能夠提供多個可配置的時鐘輸出CLKA、CLKB和CLKC。配置系數(shù)存儲在EEPROM中,輸出時鐘可從PLL或從選擇的分頻器產(chǎn)生。時鐘信號電平一般為5V或3.3V。例如CY2071A和CY22381在實際應(yīng)用中選擇原則:◆系統(tǒng)中要求多個不同頻率的時鐘信號時,首選可編程時鐘芯片;◆單一時鐘信號時,選擇晶體時鐘電路;◆多個同頻時鐘信號時,選擇晶振;◆盡量使用DSP片內(nèi)的PLL,降低片外時鐘頻率,提高系統(tǒng)的穩(wěn)定性;◆C5510、C5409A、C5416、C5420、C5421和C5441等DSP片內(nèi)無振蕩電路,不能用品體時鐘電路;◆VC5401、VC5402、VC5409和F281x等DSP時鐘信號的電平為1.8V,建議采用晶體時鐘電路。5.1.3復(fù)位電路有3種復(fù)位方式:上電復(fù)位、手動復(fù)位和軟件復(fù)位。軟件復(fù)位可通過軟件指令來實現(xiàn),上電復(fù)位和手動復(fù)位可使用復(fù)位電路實現(xiàn)。在實際的DSP應(yīng)用系統(tǒng)中,系統(tǒng)的可靠性是一個非常重要的問題。由于DSP系統(tǒng)的時鐘頻率很高,使得系統(tǒng)很容易對外產(chǎn)生干擾或被干擾,導(dǎo)致程序運(yùn)行跑飛。除了在系統(tǒng)軟件上采取一定的保護(hù)措施之外,在硬件上常用的方法是使用具有看門狗(Watchdog)監(jiān)視功能的微處理器監(jiān)控電路??撮T狗在微機(jī)系統(tǒng)中,由于CPU的工作常常會受到來自的各種干擾,造成程序的跑飛,而陷入死循環(huán),程序的正常運(yùn)行被打斷,由CPU控制的系統(tǒng)無法繼續(xù)工作,會造成整個系統(tǒng)的陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對微機(jī)系統(tǒng)運(yùn)行狀態(tài)進(jìn)行實時監(jiān)測的考慮,便產(chǎn)生了一種專門用于監(jiān)測單片機(jī)程序運(yùn)行狀態(tài)的芯片,俗稱"看門狗"(watchdog)其工作原理是:看門狗芯片和CPU的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在整個程序的其他控制語句中間的,一旦CPU由于干擾造成程序跑飛后而陷入某一程序段進(jìn)入死循環(huán)狀態(tài)時,寫看門狗引腳的程序便不能被執(zhí)行,這個時候,看門狗電路就會由于得不到CPU送來的信號,就給CPU一個復(fù)位信號,讓程序從程序存儲器的起始位置開始執(zhí)行,這樣便實現(xiàn)了微機(jī)系統(tǒng)的自動復(fù)位。分硬件看門狗和軟件看門狗兩種。

硬件看門狗是利用了一個定時器,來監(jiān)控主程序的運(yùn)行,也就是說在主程序的運(yùn)行過程中,我們要在定時時間到之前對定時器進(jìn)行復(fù)位如果出現(xiàn)死循環(huán),或者說PC指針不能回來。那么定時時間到后就會使CPU復(fù)位。常用的WDT芯片如MAX813,5045,IMP813等,價格4~10元不等.

軟件看門狗技術(shù)的原理和這差不多,只不過是用軟件的方法實現(xiàn),用定時器來對主程序的運(yùn)行進(jìn)行監(jiān)控。5.1.4JTAG仿真接口

JTAG接口是用仿真器調(diào)試DSP系統(tǒng)時所連接的調(diào)試接口,仿真器通過JTAG接口實現(xiàn)與DSP之間的數(shù)據(jù)交換。

需要注意的是,設(shè)計JTAG接口時EMUO和EMU1引腳需要連接4.7kΩ上拉電阻,如圖5-7所示。

各個引腳的功能見p4325.1.53.3V和5V混合邏輯電路設(shè)計

3.3V與5V的邏輯電平轉(zhuǎn)換芯片??梢赃x擇74LVTH16245。

74LVTH16245是從74LS245發(fā)展而來。單電源3.3V,16位雙向總線緩沖器。還有74LVC4245。5.2DSP系統(tǒng)的存儲器接口設(shè)計

存儲器擴(kuò)展時應(yīng)主要考慮以下幾個方面的問題:存儲器的電源、存儲器的I/O接口電平、數(shù)據(jù)總線的接口、地址總線的接口及控制總線的接口。5.2.1程序存儲器的擴(kuò)展程序存儲器一般都采用Flash存儲器,俗稱閃存。它的體積小,功耗低,電可擦寫,數(shù)據(jù)保存時間長。實際中常用的Flash存儲器型號有:SST39VF系列flash、AT29LV1024、28F400B3等。下面以SST39VF系列flash為例說明flash存儲器的使用方法。

SST39VF系列flash包括SST39VF200A/SST39VF400A/SST39VF800A,是CMOS多用途Flash存儲器,它們的容量分別為128Kx16位/256Kx16位/512Kx16位,電源電壓為3.3V單電源??梢宰x操作、字編程操作、扇區(qū)/塊擦除操作、片擦除操作等,寫操作(編程或擦寫)時使用2.7~3.6V單電源,典型寫編程時間為14μs,可反復(fù)擦寫100000次,數(shù)據(jù)可保持100年,數(shù)據(jù)訪問時間為70~90ns。很適合作為DSP的程序存儲器使用。5.2.2靜態(tài)數(shù)據(jù)存儲器的擴(kuò)展

54xx系列DSP都有片上RAM存儲器,例如C5402有16K字的片上RAM。使用內(nèi)部RAM可以全速運(yùn)行程序,不需要插入任何等待周期,此時DSP的運(yùn)行速度最快。所以在一般的應(yīng)用設(shè)計中,應(yīng)盡可能地選用內(nèi)部RAM足夠大的DSP芯片,盡量避免擴(kuò)充外部RAM存儲器。如果在某些應(yīng)用中需要用到大容量的RAM存儲器而內(nèi)部RAM不能滿足要求時,只能通過擴(kuò)展外部RAM的方式滿足設(shè)計要求。常見的外部RAM分為靜態(tài)存儲器SRAM和動態(tài)存儲器DRAM。常規(guī)的靜態(tài)RAM存儲器,例如62256、62512等,由于其工作電源一般為5V,接口為CMOS電平,數(shù)據(jù)總線的接口為8位,訪問速度也不能適應(yīng)DSP的運(yùn)行速度,所以不推薦使用。54xx系列DSP擴(kuò)展外部RAM存儲器時同樣要考慮幾個方面的問題:存儲器的電源、存儲器的I/O接口電平、DSP與存儲器之間的數(shù)據(jù)總線的接口、地址總線的接口及控制總線的接口。

CY7C1021BV33是一種高速的RAM存儲器芯片。它的容量為64Kx16位,有16條地址總線和16條數(shù)據(jù)總線??刂凭€有片選信號-CE、讀使能信號-OE、寫使能信號-WR、高字節(jié)選擇信號-BHE、低字節(jié)選擇信號-BLE。其電源電壓為3.3V,能夠直接與C54xxDSP相接口。2011年6月21日星期二5.2.3DSP與慢速器件的接口設(shè)計為了適應(yīng)較慢的外部存儲器和輸入/輸出設(shè)備,DSP配備了軟件可編程的等待狀態(tài)發(fā)生器,可以將外部總線周期擴(kuò)展至數(shù)個機(jī)器周期。這種擴(kuò)展通常也是有限的,如C54xx系列的C5402DSP最多只能擴(kuò)展到14個機(jī)器周期。這就對外部接口設(shè)備的定時時序提出了一定的要求。所以外部擴(kuò)展存儲器的存取時間(速度)是一個很重要的指標(biāo)。

C54xx所有內(nèi)部存儲器的讀/寫操作都是單周期指令。如果對于外部存儲器的讀/寫操作也在單周期內(nèi)完成,要求外部存儲器的存取時間小于60%的機(jī)器周期。如當(dāng)C5402的工作頻率為100MHz時,它的機(jī)器周期為10ns,此時要求外部存儲器的存取時間小于6ns。如果C54xx與慢速的器件相接口,就需要通過軟件或硬件的方法插入等待周期。對于C5402,插入的等待狀態(tài)與外部器件的存取時間的對應(yīng)關(guān)系如表5-8所示(p123)。有關(guān)軟硬件等待狀態(tài)的問題可以概括如下:①如果所有的外部器件均不需要插入等待狀態(tài),或只需要插入1個軟件等待狀態(tài),READY引腳固定接高電平。②當(dāng)需要插入2~14個等待狀態(tài)時,將-MSC引腳與READY引腳相連。③當(dāng)需要插入14個以上的等待狀態(tài),即在14個軟件等待狀態(tài)的基礎(chǔ)上再插入等待狀態(tài)時,硬件等待狀態(tài)電路是由-MSC和READY信號及外部電路來構(gòu)成的。5.3DSP系統(tǒng)模數(shù)接口電路的設(shè)計在以DSP為核心的數(shù)字信號處理系統(tǒng)中,模數(shù)(A/D)、數(shù)模(D/A)轉(zhuǎn)換是系統(tǒng)重要的組成部分。因為往往需要進(jìn)行信號分析、處理的對象是模擬量,例如語音信號、各種傳感器輸出的模擬信號。這些信號經(jīng)過放大、濾波及A/D轉(zhuǎn)換后,從模擬信號轉(zhuǎn)換為數(shù)字信號,由DSP芯片對這些數(shù)字信號按照某種算法進(jìn)行處理,例如FIR濾波器算法。處理后的數(shù)字信號再送往D/A轉(zhuǎn)換器進(jìn)行數(shù)模轉(zhuǎn)換,變?yōu)槟M信號,再經(jīng)過平滑濾波之后便可得到處理后的模擬輸出信號。實際應(yīng)用中有多種A/D或D/A轉(zhuǎn)換器可供選擇。基于不同的應(yīng)用,可以選用不同性能指標(biāo)的芯片。對于一般的A/D和D/A轉(zhuǎn)換器,一般有下列的指標(biāo)需要考慮?!舴直媛省R驗镈SP是16位的處理器,所以轉(zhuǎn)換器的分辨率要大于8位,例如12位或16位。選用高分辨率的轉(zhuǎn)換器有利于提高信號處理的精度?!艮D(zhuǎn)換速率。DSP的運(yùn)算速度很快,能夠?qū)π盘栠M(jìn)行實時處理。轉(zhuǎn)換器的轉(zhuǎn)換速率要能夠滿足信號實時處理的要求,要滿足奈奎斯特取樣定理?!艚涌?。轉(zhuǎn)換器有并行接口和串行接口之分。

TI公司提供了一系列與其DSP處理器相配套的A/D、D/A轉(zhuǎn)換器及CODEC集成電路,CODEC上面包含A/D、D/A電路,完成音頻信號的編譯碼功能。常用的音頻CODEC接口電路有TLC320AD50C、TLV320AIC23、PCM3002、TLV320AIC10等。下面以TLC320AD50C為例說明C5402DSP與CODEC接口電路的設(shè)計。5.3.1TLC320AD50C概述它是TI公司生產(chǎn)的SIGMA—DELTA型的16位A/D、D/A轉(zhuǎn)換電路,它的采樣速率最高可達(dá)22.05kb/s,內(nèi)含抗混疊濾波器和重構(gòu)濾波器,屬于模擬接口芯片(AIC),它有一個能與多種DSP芯片相連的同步串行通信接口,其采樣速率可通過DSP編程來設(shè)置。在DAC之前有一個插值濾波器以保證輸出信號平滑,在ADC之后有一個抽取濾波器以提高輸入信號的信噪比。AD50C片內(nèi)還包括一個定時器(調(diào)整采樣率和幀同步延時)和控制器(可編程的增益放大器,鎖相環(huán)PLL,通信協(xié)議等)。AD50有28腳的塑料SOP封裝(帶DW后綴)和48腳的塑料扁平QFP封裝(帶PT后綴),體積較小,適用于便攜設(shè)備。AD50C的工作溫度范圍是0℃~70℃,單一5V電源供電或5V模擬電源和3.3V數(shù)字電源供電,最大功耗為120mW。5.3.2AD50的內(nèi)部結(jié)構(gòu)及引腳

5.3.3AD50模擬輸入與輸出電路設(shè)計

5.3.4AD50與DSP的接口電路設(shè)計為了增強(qiáng)AD50的噪聲抑制能力,一定要增加電源去耦電容,圖5-24給出了電源去耦電路的示意圖。

去耦電容采用獨(dú)石電容104。

布線時要對地線做特別處理,這里的地線指的是數(shù)字地和模擬地,要做單點(diǎn)連接。5.3.5AD50內(nèi)部的寄存器

AD50內(nèi)部有7個數(shù)據(jù)和控制寄存器,用于編程控制AD50的工作狀態(tài)。寄存器0: 空操作寄存器。寄存器1: 軟件復(fù)位; 軟件掉電; 為DAC選擇16位或15位工作方式; 硬件或軟件二次串行通信請求方式的選擇。寄存器2: 使能ALTDATA輸入端; 為ADC選擇16/15位工作方式。寄存器3: 選擇-FS與-FSD之間延遲SCLK的個數(shù); 告訴主機(jī)連接了幾個從機(jī)。寄存器4: 為輸入和輸出放大器選擇放大器增益; 選擇N來設(shè)置采樣頻率,fs=MCLK/(128xN)或MCLK/(512xN);

在MCLK輸入端使能外部時鐘輸入并旁路內(nèi)部的PLL。寄存器5,6:保留。5.3.6AD50的幀同步定時幀同步信號-FS指示器件已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)。由DOUT發(fā)送的數(shù)據(jù)和由DIN接收的數(shù)據(jù)在幀同步信號-FS的下降沿開始。1.主機(jī)模式下的幀同步信號-FS2.從機(jī)模式下的幀同步信號-FS3.主機(jī)模式下的幀同步延遲信號-FSD4.從機(jī)模式下的幀同步延遲信號-FSD5.3.7AD50與DSP的串行通信

DOUT、DIN、SCLK、FS和FC都是串行通信信號。ADC的數(shù)字輸出結(jié)果從DOUT輸出,DAC的數(shù)字輸入數(shù)據(jù)從DIN輸入。串行通信的同步時鐘和幀同步信號來自SCLK。包含ADC和DAC數(shù)據(jù)傳輸間隔的幀同步脈沖來自FS。一次通信用來傳輸ADC和DAC的信號數(shù)據(jù)。二次串行通信用來讀出或?qū)懭階D50的控制和配置字。一次通信和二次串行通信的用途是允許轉(zhuǎn)換數(shù)據(jù)和控制數(shù)據(jù)通過同一個串口進(jìn)行傳輸。一次通信往往用于轉(zhuǎn)換數(shù)據(jù),二次串行通信用于設(shè)置或讀出寄存器的值;一次通信在每一個轉(zhuǎn)換周期都會發(fā)生,二次串行通信只有當(dāng)申請時才會發(fā)生。二次串行通信可以通過硬件或軟件來請求。1.一次串行通信一次串行通信用來發(fā)送和接收ADC和DAC的信號數(shù)據(jù)。DAC的字長取決于控制寄存器1的D0比特的狀態(tài)。上電或復(fù)位之后器件的默認(rèn)狀態(tài)是15比特模式。當(dāng)DAC的字長是15比特時,第一次16比特串行通信字的最后一個比特是用于請求二次串行通信。在16比特模式,所有一次通信的16比特都作為DAC的數(shù)據(jù)并且必須使用硬件引腳FC請求二次串行通信。圖5-31給出了在一次通信中SCLK、-FS、DOUT和DIN的定時關(guān)系。定時操作的時序為:◆-FS變?yōu)榈碗娖??!?6比特的字從ADC(DOUT)輸出,從DAC(DIN)輸入?!鬎S變?yōu)楦?,表示本次傳輸結(jié)束。2.二次串行通信二次串行通信用來讀/寫對器件的選項和電路配置進(jìn)行編程的16比特字。對寄存器的編程總是發(fā)生在二次串行通信期間。對四個寄存器進(jìn)行編程需要四次一次通信和二次串行通信的周期。如果某個寄存器要求為默認(rèn)值,則在二次串行通信時寄存器的尋址可以省略。NOOP命令尋址空操作寄存器0,且在此次二次串行通信期間沒有寄存器被編程。如果要求對所有設(shè)備(主設(shè)備和從設(shè)備)都進(jìn)行二次串行通信,則必須從主設(shè)備開始對所有的設(shè)備都請求二次串行通信。這將導(dǎo)致所有設(shè)備的二次幀同步。NOOP命令可以用于不需要二次串行通信操作的設(shè)備。在二次串行通信期間,寄存器可以寫也可以讀。當(dāng)寫寄存器時,DIN引腳包含要寫的值。當(dāng)讀寄存器時,數(shù)據(jù)從DOUT引腳移出。有兩種方法初始化二次串行通信,F(xiàn)C引腳插入高電平,或者當(dāng)處于15比特模式時,將16比特串行通信字的LSB位置l。

3.硬件二次串行通信請求當(dāng)FC有效時請求二次串行通信。FC引腳在一次通信的FS的上升沿鎖存。所以FC應(yīng)在一次幀同步信號FS的上升沿之前拉高。4.軟件二次串行通信請求當(dāng)設(shè)備處于15比特模式時一次傳輸中的DAC數(shù)據(jù)的最低位LSB能夠請求二次串行通信。對于所有的串行通信,首先傳送的是最高有效位。對一個16比特的ADC字和一個16比特的DAC字,D15是最高有效位,DO是最低有效位。對于一次通信中的15比特DAC數(shù)據(jù)字,D15是最高有效位,Dl是最低有效位。DO比特用于二次串行通信請求控制。所有位的數(shù)據(jù)都是2的補(bǔ)碼格式。如果數(shù)據(jù)格式設(shè)置為16比特字的模式,所有的16比特是ADC或DAC的數(shù)據(jù),并且二次串行通信只能通過硬件FC請求。5.DIN和DOUT引腳的數(shù)據(jù)格式

AD50C有兩種串行通信格式:一次串行通信和二次串行通信。一次串行通信格式的16位都用來傳輸數(shù)據(jù)。ADC的數(shù)據(jù)長度由寄存器2的D4位決定。啟動和復(fù)位后默認(rèn)值為15+1位模式,最后一位用于請求二次串行通信(DO:0表示無操作,1表示請求二次串行通信)。當(dāng)然,二次串行通信也可以由硬件的FC引腳產(chǎn)生。圖5-36為一次通信的數(shù)據(jù)格式。二次串行通信用來初始化和設(shè)置AD50C的內(nèi)部寄存器的值。二次串行通信時DSP可通過向DIN寫入寄存器的值,也可以從DOUT讀出寄存器的值。5.3.8AD50的編程

AD50在使用之前首先要進(jìn)行復(fù)位,有兩種方式可以復(fù)位AD50的內(nèi)部計數(shù)器和寄存器。在RESET引腳上加一個負(fù)的復(fù)位脈沖,或往可編程的軟件復(fù)位比特(控制寄存器1的D7位)寫1。無論哪種方式都可以復(fù)位控制寄存器和清除所有的電路。復(fù)位信號應(yīng)該至少持續(xù)6個主時鐘(MCLK)的周期。復(fù)位之后,所有寄存器的默認(rèn)值都是0。硬件或軟件復(fù)位之后,AD50需要一定的時間來穩(wěn)定內(nèi)部的鎖相環(huán)PLL。在這期間不要往AD50中寫控制字或D/A數(shù)據(jù)。應(yīng)該按下列順序進(jìn)行復(fù)位:◆進(jìn)行復(fù)位(復(fù)位脈沖的寬度至少持續(xù)6個MCLK的周期);◆退出復(fù)位狀態(tài);◆等待主設(shè)備產(chǎn)生的SCLK時鐘,這大概需要100μs的時間;◆等待18個幀同步脈沖出現(xiàn);◆往AD50中寫控制和配置數(shù)據(jù);◆采集A/D轉(zhuǎn)換的數(shù)據(jù)。當(dāng)多個AD50與單個DSP串行接口以主/從結(jié)構(gòu)相連時,在設(shè)備初始化期間,控制寄存器應(yīng)以下列順序編程:控制寄存器1,控制寄存器2,控制寄存器4,控制寄存器3。通過寫控制寄存器1、控制寄存器2、控制寄存器4的一次總的初始化將所有的AD50進(jìn)行相同的配置。一旦控制寄存器3被編程(設(shè)置-FS和-FSD之間的SCLK的數(shù)目),每一個設(shè)備將在指定的時隙進(jìn)行通信。所有的寄存器編程發(fā)生在二次串行通信期間,數(shù)據(jù)從DIN引腳輸入,在幀同步信號有效期間在SCLK的下降沿數(shù)據(jù)有效并被鎖存。如果某個特定的寄存器要求編程為默認(rèn)值,則在二次串行通信時不需要被尋址和編程??詹僮髅睿―S12~DS8全部清零)尋址空操作寄存器,并且在通信期間沒有寄存器被編程。另外,在二次串行通信時通過設(shè)置讀比特(DS13)為1,可以從DOUT引腳讀回每個寄存器的值。當(dāng)寄存器處于讀方式時,不能往寄存器中寫數(shù)據(jù)。寫寄存器時D13必須清零。例如,如果要從DOUT引腳讀出控制寄存器1的內(nèi)容,則必須通過DIN引腳完成下列過程?!粼谝淮瓮ㄐ艜r間間隔內(nèi),通過設(shè)置DO=1(軟件請求)或者FC=高電平(硬件請求)請求二次串行通信?!粼诙未型ㄐ诺臅r間內(nèi),通過DIN引腳以下面的格式發(fā)送數(shù)據(jù)?!羧缓髲腄OUT引腳將讀到下面的數(shù)據(jù),DOUT的最后8個比特就是寄存器1的數(shù)據(jù)。如果需要對控制寄存器1進(jìn)行編程,則必須通過DIN引腳完成下面的過程:◆在一次通信時間間隔內(nèi),通過設(shè)置DO=1(軟件請求)或者FC=高電平(硬件請求)請求二次串行通信?!粼诙未型ㄐ诺臅r間內(nèi),通過DIN引腳以下面的格式發(fā)送數(shù)據(jù)。◆然后DOUT引腳將產(chǎn)生下面的數(shù)據(jù)。5.4DSP系統(tǒng)異步通信

接口電路的設(shè)計串行接口是DSP與外部通信常用的通信接口。串行通信主要包括同步方式的串口通信和異步方式的串口通信。在54xxDSP上都包括1個或2個MCBSP多通道緩沖同步串行口,使用它可以與其他DSP或CODEC器件進(jìn)行通信。但在DSP與微機(jī)進(jìn)行通信時常使用異步通信串行口,它的接口簡單,傳輸距離長,應(yīng)用廣泛。在54xxDSP的片上外設(shè)中并不包括異步通信接口電路,需要用戶進(jìn)行外部擴(kuò)展。常用的串口擴(kuò)展芯片有TI的TL16C550C(單串口)、TL16C552(雙串口)、TL16C554(四串口),其他公司類似的芯片如ST16C550、ST16C552、ST16C554等。

TL16C554是TI公司生產(chǎn)的4通道異步收發(fā)器集成芯片,它的每個通道能從外圍設(shè)備或MODEM接收數(shù)據(jù),實現(xiàn)串一并轉(zhuǎn)換;同時它也可從CPU端接收數(shù)據(jù),實現(xiàn)并一串轉(zhuǎn)換。在FIFO模式下,傳輸和接收前將數(shù)據(jù)緩沖為16字節(jié)數(shù)據(jù)包,減少了CPU的中斷數(shù)量。內(nèi)部包含4片改進(jìn)的16C550異步傳輸器件,使得串行I/O更加可靠,每個信道可實現(xiàn)串行和并行兩種連接方式的轉(zhuǎn)換,每個信道的狀態(tài)可以通過CPU讀取,可以獲取操作情況或任何錯誤狀態(tài)。

TL16C554的主要特點(diǎn)如下:①由4個帶有邏輯控制的TL16C550異步通信單元組成;②最高可達(dá)1Mbps的波特率,具有可編程的波特率發(fā)生器,便于靈活選擇數(shù)據(jù)收發(fā)速率;③具有16字節(jié)的收發(fā)FIFO緩沖器;④具有可獨(dú)立控制的發(fā)送、接收、線路狀態(tài)和MODEM狀態(tài)中斷;⑤具有全雙工的接收發(fā)送線路,可獨(dú)立進(jìn)行接收和發(fā)送控制;⑥完整的線路狀態(tài)報告功能;⑦多優(yōu)先級的中斷系統(tǒng)控制;⑧三態(tài)TTL電平輸出;⑨允許5V或3.3V工作電源。

TL16C554有68引腳PLCC和80引腳TQFP兩種封裝形式,各個引腳的功能為:A0~A2為片內(nèi)寄存器的選擇信號端;D0~D7為雙向8位數(shù)據(jù)線;-IOR為讀選通端(低電平有效);-IOW為寫選通端(低電平有效);INTA~I(xiàn)NTD為中斷A、B、C、D(高電平有效);-CSA~-CSD為片選A、B、C、D(低電平有效);XTAL1、XTAL2為外部時鐘端,可接晶體或外部時鐘信號;RXA~RXD為串行輸入A、B、C、D端;TXA~TXD為串行輸出A、B、C、D端;-RXRDY為接收準(zhǔn)備好信號端(低電平有效);-TXRDY為發(fā)送準(zhǔn)備好信號端(低電平有效)。

DSP的數(shù)據(jù)線D7~DO分別與16C554的D7~DO相連,地址線A2~A0分別與16C554的A2~A0相連,地址線A15~A14連同控制線R/-W、-MSTRB、-IS連接到邏輯電路進(jìn)行邏輯譯碼,生成16C554的讀信號-IOR、寫信號-IOW、4個通道A~D的片選端-CSA~-CSD。16C554的中斷輸出連接到DSP的外部中斷輸入端INTO。邏輯譯碼電路輸入/輸出的邏輯關(guān)系如下所示:

-INTO=NOT(INTA+INTB+INTC+INTD)-IOR=NOT(R/-W)+-MSTRB-IOW=R/-W+-MSTRB-CSA=-IS+A15+A14%A口的片選地址為I/O空間的OOOOH%-CSB=-IS+A15+NOT(A14)%B口的片選地址為I/O空間的4000H%-CSC=-IS+NOT(A15)+A14%C口的片選地址為I/O空間的8000H%-CSD=-IS+NOT(A15)+NOT(A14)%D口的片選地址為I/O空間的AOOOH%

TL16C554的工作電源為3.3V,所以需要選擇工作電源為3.3V的RS-232接口電平轉(zhuǎn)換芯片。例如,可使用Maxim公司的MAX3224/MAX3227/MAX3244/MAX3245系列RS-232收發(fā)器。

MAX3224/MAX3227/MAX3244/MAX3245是3.3V供電的EIA/TIA-232和V28/V24接口集成電路,能夠自動掉電/喚醒,具備很高的數(shù)據(jù)傳輸能力。當(dāng)RS-232電纜未連接或所連接設(shè)備的發(fā)送器無效并且UART驅(qū)動的發(fā)送器輸入電平超過30s無效時,這些器件自動進(jìn)入低功耗掉電模式。當(dāng)在任意發(fā)送器或接收器的輸入端檢測到有效的電平變化時,便會又一次打開電源。MAX3224、MAX3225的引腳圖和典型應(yīng)用電路分別如圖5-42(a)、(b)所示,

MAX3224和MAX3225都包括2個發(fā)送器和2個接收器,它們之間唯一的區(qū)別是數(shù)據(jù)傳輸速率不同,MAX3224是250Kbps,MAX3225是lMbps。具體應(yīng)用時可根據(jù)實際情況進(jìn)行選擇。(a)管腳圖(b)典型應(yīng)用電路擴(kuò)展異步串行口的另外一種方法是使用DSP的輸入/輸出引腳進(jìn)行模擬。TI的C54xxDSP芯片上均提供XF和BIO兩條I/O引腳,可以使用這兩根接口線來模擬一個低通信速率的異步串行口。用XF作為發(fā)送數(shù)據(jù)線,而用BIO作為接收數(shù)據(jù)線,同時需要內(nèi)部的定時器和一個中斷引腳。異步通信的數(shù)據(jù)格式完全用軟件來實現(xiàn)。圖5-43是此種異步通信接口的示意圖。5.5HPI接口電路的設(shè)計

HPI接口即主機(jī)接口(HostPortInterface,HPI),是54xx系列DSP重要的片上外設(shè),主要用于DSP與其他CPU進(jìn)行互連通信,根據(jù)其數(shù)據(jù)線的寬度分為HPI-8和HPI-16兩種接口類型。在C5402DSP上集成了增強(qiáng)型的HPI-8,它可以訪問片內(nèi)所有的RAM,主機(jī)通過對HPI控制寄存器的訪問可實現(xiàn)對片內(nèi)存儲器的訪問、HPI狀態(tài)的查詢及主從設(shè)備的通信,由于HPI-8的數(shù)據(jù)線寬度只有8位,所以一個字的讀/寫需要兩次操作來完成。5.5.1HPI與主機(jī)的接口

HPI主要用于與其他的主處理器進(jìn)行數(shù)據(jù)交換。主機(jī)可以是DSP芯片、PC或其他的嵌入式處理器。HPI接口的數(shù)據(jù)總線(HD0~HD7)負(fù)責(zé)與主機(jī)交換信息,HCNTL0和HCNTL1兩根控制線表示主機(jī)要訪問哪個HPI-8寄存器,它們和HBIL一起通常與主機(jī)設(shè)備的地址線相連。圖5-44是一種典型的連接方式。圖5-44典型的主機(jī)與HPI連接方式

HPI的寄存器包括HPI控制寄存器HPIC、HPI地址寄存器HPIA和HPI數(shù)據(jù)寄存器HPID,主機(jī)通過HCNTL0/HCNTL1決定要訪問的寄存器,如表5-16所示。表5-16HPI的寄存器訪問5.5.2HPI-8與PC的接口

C54xx的HPI接口可以很方便地實現(xiàn)與PC并行口的連接,它們之間的連接電路如圖5-45所示。圖5-45HPI與PC并行接口的連接

HPI通過它的數(shù)據(jù)總線HD0~HD7連接到PC的并口,此時PC的并口工作在雙向模式下??刂坪蜖顟B(tài)引腳都工作在I/O狀態(tài)。這些輸入/輸出引腳提供了與HPI通信的握手和控制狀態(tài)。并行接口引腳與HPI之間的連接如表5-17所示。表5-17PC并行接口與HPI的信號線主機(jī)通過一個讀/寫控制引腳HRW、一個數(shù)據(jù)選通信號HDS1來訪問數(shù)據(jù),HDS2與VDD相連。在選通信號HDS1的上升沿輸入數(shù)據(jù)。主機(jī)(PC)并行口的數(shù)據(jù)線和地址線是分開的。HAS連接到VDD。在HDS1的下降沿選通控制信號HBIL、HCNTL0、HCNTL1和HRW到HPI。為了保證HPI一直工作,將HCS接地。由于并行口的輸出引腳不是很多,所以SELECTIN和AUTOFD信號連同外部的硬件一起產(chǎn)生了4個信號:HCNTL0、HCNTL1、RS和HBIL。這4個信號是TMS320C54x的輸入,RS通過AUTOFD產(chǎn)生的時鐘沿進(jìn)行復(fù)位。在HDS1的上升沿,數(shù)據(jù)被選通并進(jìn)入HPI的數(shù)據(jù)/地址寄存器中。HBIL輸入用于確定接收的字節(jié)是低字節(jié)還是高字節(jié)。HBIL在HDS1的上升沿變化,時間上落后-HDS1一個時間點(diǎn),這個延遲是觸發(fā)器的傳輸時延,它保證了在每個字節(jié)的傳輸過程中得到HBIL正確的樣值。為了確保加電時HBIL被初始化為高電平,在觸發(fā)器的置位端連接了一個電容和電阻。如果HBIL連接到主機(jī)進(jìn)行軟件初始化,則不需要這個電阻和電容,程序可以監(jiān)視HBIL的輸入以保證數(shù)據(jù)和地址轉(zhuǎn)換的有效性。圖5-46給出了控制信號、HPI的數(shù)據(jù)選通輸出和選通輸入信號HAD的時序圖,HAD、HD讀和HD寫分別是讀寫數(shù)據(jù)的信號。顯示了通過HPI總線進(jìn)行的數(shù)據(jù)傳輸。5.5.3HPl與51單片機(jī)的接口某些信號處理系統(tǒng)通常由兩部分組成:一部分為DSP子系統(tǒng),這是整個系統(tǒng)的核心,主要完成采樣、數(shù)字信號處理及輸出等功能;另一部分為單片機(jī)子系統(tǒng),進(jìn)行人機(jī)交互界面的控制,如鍵盤和顯示。兩個子系統(tǒng)之間需要進(jìn)行必要的數(shù)據(jù)交換。下面介紹DSP和51單片機(jī)之間通過HPI接口進(jìn)行連接的設(shè)計方法。這里以C5402DSP上增強(qiáng)型的HPI-8為例來說明接口電路的設(shè)計。

HPI8總共有18條信號線。其中數(shù)據(jù)線8條(HD0~HD7),其余10條都是控制線,如表5-18所示。表5-18HPI接口信號及功能

HAS在數(shù)據(jù)線和地址線復(fù)用的MCU中,與ALE信號連接,在下降沿鎖存HBIL、HCNTL0/1、HR/-W,這些信號通常與地址線連接。如果MCU的數(shù)據(jù)線和地址線沒有復(fù)用,則應(yīng)該接高電平。

-HDS1、-HDS2是數(shù)據(jù)傳輸?shù)臅r序控制信號。信號時序見圖5-47,在下降沿對HBIL、HCNTL0/1、HR/-W進(jìn)行鎖存。即下降沿傳輸開始一上升沿傳輸結(jié)束。圖5-47HPI數(shù)據(jù)傳輸時序

HCNTL0/1用于選擇HPI內(nèi)部寄存器,如表5-16所示。

54xxDSP的外部I/O引腳使用了3.3V的邏輯電平,而大部分51單片機(jī)使用了SV邏輯電平。前者輸出高電平的最小值為2.4V;后者輸入高電平的最小值為2.OV。所以前者的輸出可以直接接到后者的輸入。但是前者允許輸入的高電平最大值為3.6V,而后者輸出的高電平一般都在4.5V以上。所以前者的輸入和后者的輸出不能直接連接,需要電平轉(zhuǎn)換,如選用TI74LVC16245A芯片來進(jìn)行電平轉(zhuǎn)換(圖5-48)。如果引腳數(shù)量少,可以直接用三極管和電阻來轉(zhuǎn)換。圖5-48中G為使能端,低電平有效;DIR為方向控制端,高電平時A→B,低電平時B→A。另外要注意,74LVC16245A的工作電壓引腳VCC應(yīng)該接3.3V。整個硬件連接如圖5-48所示。

HPI的數(shù)據(jù)傳輸分為兩部分:外部傳輸和內(nèi)部傳輸。外部傳輸是指主機(jī)和HPI寄存器之間的傳輸,由主機(jī)發(fā)出指令完成。內(nèi)部傳輸是指HPI寄存器和DSP內(nèi)部RAM之間的傳輸,由DSP內(nèi)部的DMA控制器自動完成。主機(jī)在進(jìn)行外部傳輸時,要先檢查內(nèi)部傳輸是否完成,這是通過檢測HRDY信號實現(xiàn)的。外部傳輸操作的一般步驟如下?!魴z查HRDY信號的電平:為高,表示可以進(jìn)行傳輸;為低,表示DSP正在進(jìn)行內(nèi)部傳輸,此時不能進(jìn)行外部傳輸?!糁鳈C(jī)發(fā)出指令,設(shè)置HCNTL0、HCNTL1、HBIL、HR/-W信號的狀態(tài),以確定讀或?qū)懙募拇嫫骷白止?jié)的選擇。◆主機(jī)發(fā)出時序控制信號,按照HPI數(shù)據(jù)傳輸時序進(jìn)行操作,從而完成一次外部傳輸。圖5-48DSP與51單片機(jī)的硬件接口編程時還要注意以下問題。①由于DSP的數(shù)據(jù)是16位,而單片機(jī)的數(shù)據(jù)是8位,所以單片機(jī)要分兩次將數(shù)據(jù)傳給DSP,即將16位的數(shù)據(jù)分成兩個字節(jié)傳輸。這時,可以通過控制HPI口的HBIL信號來指定此次傳輸?shù)氖堑?個字節(jié)還是第2個字節(jié)。另外,還要通過HPI的控制寄存器(HPIC)中的BOB位來指定第1個字節(jié)作為高8位還是低8位,所以主機(jī)在訪問HPI時,應(yīng)首先對HPIC進(jìn)行初始化,并注意對BOB位的設(shè)置。②主機(jī)對地址寄存器(HPIA)的寫操作會初始化一次內(nèi)部傳輸。當(dāng)主機(jī)通過兩次對HPIA的寫操作后,HPIA就得到了主機(jī)要訪問的地址。這時內(nèi)部的DMA控制器就會根據(jù)這個地址將相應(yīng)單元的內(nèi)容讀到HPI內(nèi)部的數(shù)據(jù)鎖存器中,再對HPID進(jìn)行兩次讀操作就可以將數(shù)據(jù)讀出。如果將HPIA設(shè)置成自動遞增模式,就會在數(shù)據(jù)傳輸?shù)耐瑫r完成HPIA加1,于是又啟動了一次內(nèi)部傳輸,這樣有利于數(shù)據(jù)的連續(xù)傳輸。③注意設(shè)置HPIC中的XHPIA位。XHPIA=1時,表示對DSP的7位擴(kuò)展地址進(jìn)行操作;XHPIA=O時,表示對DSP的低16位地址進(jìn)行操作。由于DSP復(fù)位后,XHIPA的狀態(tài)是不確定的,所以必須首先對XHPIA進(jìn)行設(shè)置。④主機(jī)和DSP可以互相中斷。主機(jī)通過向HPIC中的DSPINT位寫入1來中斷DSP。讀該位總是為0,而且DSP對該位的寫操作是無效的。而DSP要中斷主機(jī)時,向HPIC中的HJNT位寫入1,這時HPI的接口引腳被置低,從而使主機(jī)產(chǎn)生中斷。讀出該位總是為1,主機(jī)可以對該位寫1來清除中斷,這時HINT引腳就恢復(fù)高電平。

下面給出兩段C51程序?qū)嵗?,包括單片機(jī)初始化HPI程序及單片機(jī)讀取DSP片內(nèi)RAM的程序。

sbit

PlO=P1^O;//HRDY信號,單片機(jī)輸入信號

sbit

Pll=P1^l;//74LVC164245方向控制端,單片機(jī)輸出信號

/*初始化HPI*/

init_HPl(void){ /*設(shè)置HPIC,XHPIA=1*/P11=1;XBYTE[0x0000]=0x18;XBYTE[0x0004]=0x18; //完成初始化

XBYTE[0x0002]=0x00;XBYTE[0x0006]=0x00;} //設(shè)置擴(kuò)展地址為0/*從HPI讀取數(shù)據(jù),入口參數(shù)為RAM地址,返回值為讀取的數(shù)據(jù)*/unsignedint

read_HPI(unsigned

int

ram_address){unsignedint

readdata; //16位讀取數(shù)據(jù)

P11=1; /*設(shè)置HPIC,XHPIA=0*/XBYTE[0x0000]=0x08;XBYTE[0x0004]=0x08;XBYTE[0x0002]=ram_address>>8; //寫地址高8位

XBYTE[0x0006]=ram_address&Ox00ff; //寫地址低8位

while(!P10); //等待DSP內(nèi)部傳輸完成

P11=0; /*讀取傳輸數(shù)據(jù)*/

readdata=XBYTE[OxOOOB]<>8; //讀取高8位數(shù)據(jù)

readdata|=XBYTE[OxOOOF]; //讀取低8位數(shù)據(jù)

retum(readdata);}5.6DSP系統(tǒng)的自舉設(shè)計

5.6.1自舉的概念自舉的英文原文是BootLoader,是指DSP芯片從上電復(fù)位到從外部設(shè)備獲得運(yùn)行程序進(jìn)入工作狀態(tài)的過程。這樣用戶就可以將代碼放在外部慢速的設(shè)備當(dāng)中,上電后利用DSP內(nèi)部ROM中固化的自舉程序?qū)⑼獠看a裝載到內(nèi)部的高速存儲器中運(yùn)行,這種方法省去了對片內(nèi)ROM作掩膜的昂貴手段,而且利于用戶對代碼的更新和維護(hù)。TI公司的C54xx系列DSP提供了靈活的自舉方法,如并行口、串行口、HPI等。自舉方式可以以字節(jié)或字為單位進(jìn)行代碼傳輸。自舉的控制信號有中斷信號、BIO和XF,DSP根據(jù)它們來確定自舉的具體方式。在5402DSP的片內(nèi)ROM內(nèi)固化了一些代碼,包括自舉程序、A律和“律表、正弦表、生產(chǎn)商的測試代碼和中斷矢量表等,長度為4K字,位于程序空間的OFOOOh~OFFFFh地址空間范圍內(nèi)。當(dāng)MP/MC-O,即DSP工作于微計算機(jī)模式時,片內(nèi)的ROM映像在程序空間,允許訪問,ROM內(nèi)的自舉程序才能夠開始運(yùn)行,從而將外部設(shè)備中的代碼搬移到指定的位置。在自舉前,自舉程序會設(shè)置CPU的狀態(tài)寄存器。所有的中斷都會被禁止(INTM=1),片內(nèi)的雙尋址RAM將被同時映像到程序空間和數(shù)據(jù)空間(OVLY=1),所有的空間將被初始化為7個等待周期。自舉不會改變塊切換控制寄存器BSCR的初始化狀態(tài)。為了適應(yīng)不同的系統(tǒng)需求,C54xxDSP提供了多種不同的自舉方式,下面是由自舉程序完成的各種啟動方式的列表和功能概述?!鬑PI自舉模式:代碼由主機(jī)通過HPI接口裝入內(nèi)部的片上存儲器,當(dāng)主機(jī)在片內(nèi)的007Fh位置寫入起始地址后,DSP才開始獨(dú)立運(yùn)行?!舨⑿锌谧耘e模式:DSP通過外部并行接口總線從數(shù)據(jù)空間讀取自舉表。自舉表中包括代碼和相應(yīng)的信息,整個數(shù)據(jù)傳輸完畢后,DSP按提供的起始地址開始運(yùn)行?!魳?biāo)準(zhǔn)串行口自舉模式(支持8位或16位串行口):DSP從工作于標(biāo)準(zhǔn)模式的多通道緩沖串行口接收讀取自舉表,并且根據(jù)自舉表中指定的信息讀取代碼。McBSP0支持以字為單位的傳輸,McBSP1支持以字節(jié)為單位的傳輸。◆8位串行EEPROM自舉模式:將串行EEPROM與McBSP1相連接,McBSP1工作于SPI模式,DSP從EEPROM中讀取自舉表,并按自舉表中提供的信息接收代碼。◆I/O自舉模式(支持8位或16位I/O):DSP通過外部并行接口總線從I/O口Oh處讀取自舉表,并通過XF和BIO實現(xiàn)外部設(shè)備的握手協(xié)議,從而按照外部設(shè)備的速率來傳輸數(shù)據(jù)。自舉程序還提供了下列附加的功能,在并行和I/O自舉模式中,DSP根據(jù)從自舉表中讀到的值可以重新配置軟件等待狀態(tài)寄存器和塊切換控制寄存器,并且可以多段自舉,允許裝載不連續(xù)地址范圍內(nèi)的多個段代碼。當(dāng)自舉開始之后,它進(jìn)行一系列的檢測操作來決定使用哪種自舉模式。它首先檢查HPI,如果不是則繼續(xù)檢查下一種自舉模式,直至檢測到一個有效的自舉模式。如果沒有檢測到有效的自舉模式,則返回到標(biāo)準(zhǔn)串行口處重復(fù)上述操作。圖5-49說明了自舉模式檢測的流程。

DSP按以下順序檢測每個自舉模式,直到檢測到有效的一個:①HPI自舉模式,首先檢測INT2信號;②串行EEPROM自舉模式(8位),檢測INT3信號;③并行模式;④8位標(biāo)準(zhǔn)串行口模式McBSP1;⑤16位標(biāo)準(zhǔn)串行口模式McBSPO;⑥I/O自舉模式;⑦HPI自舉模式,第二次檢測起始地址。第一次自舉模式檢測的是HPI模式。與其他某些C54x的HPI自舉模式不同,C5402的HPI自舉模式允許主機(jī)在DSP復(fù)位之后往片內(nèi)RAM裝載代碼,同時允許在裝載的過程中指定程序運(yùn)行的起始地址。在復(fù)位后,DSP將片上RAM007Fh單元清0,然后查詢該位置的內(nèi)容有無變化。在查詢期間,主機(jī)就可以往片內(nèi)RAM裝載代碼。在裝載完成后,主機(jī)必須再次訪問HPI,將代碼的起始地址寫到007Fh單元。當(dāng)DSP檢測到007Fh單元的內(nèi)容發(fā)生變化之后,立即跳轉(zhuǎn)到該地址開始運(yùn)行。由于這種查詢機(jī)制,起始地址必須是非零的數(shù)值。

C5402HPI自舉模式的另一個特點(diǎn)是不需要設(shè)置外部中斷2(-INT2)。如果-INT2無效,自舉程序不斷地輪流檢測各個自舉源,包括上述HPI自舉的查詢,直到檢測到有效的自舉源為止。-INT2標(biāo)志有效時強(qiáng)制自舉程序進(jìn)行HPI自舉,此時,DSP等待主機(jī)裝載代碼,并輪詢007Fh處的內(nèi)容。當(dāng)-INT2無效時,DSP將檢測SPI方式的EEPROM自舉。串行EEPROM自舉模式通過-INT3進(jìn)行檢測。當(dāng)檢測到-INT3有效時,自舉程序認(rèn)為自舉表位于與McBSPl相連的8位串行EEPROM中。自舉程序從EEPROM的0地址讀取一個數(shù),如果這個數(shù)是自舉表開始的關(guān)鍵字,自舉程序?qū)腅EPROM繼續(xù)裝載自舉表的其他數(shù)據(jù)。如果檢測不到-INT3或讀取的不是有效的自舉表數(shù)據(jù),DSP將繼續(xù)檢測下一個自舉源。接著檢測的是并行自舉模式。從數(shù)據(jù)空間的4000h~FFFFh的地址范圍內(nèi)讀取自舉表。自舉程序先從I/O空間FFFFh處讀取自舉表的起始地址,然后從該位置讀取數(shù)據(jù)。自舉表的開始應(yīng)該是一個關(guān)鍵字,它表明了是采用8位還是16位方式。08AAh表示是8位方式,lOAAh表示是16位方式。如果在I/O空間的FFFFh處沒有發(fā)現(xiàn)有效的關(guān)鍵字,自舉程序?qū)⒃跀?shù)據(jù)空間的FFFFh處讀取自舉表的起始地址,然后從起始地址處讀取有效的關(guān)鍵字。當(dāng)關(guān)鍵字有效時,自舉程序接著讀取其余的數(shù)據(jù),再裝載執(zhí)行程序代碼。否則,自舉程序?qū)⒗^續(xù)檢測串行模式。在檢測串行或I/O自舉模式之前,自舉程序?qū)F引腳置低,表示已準(zhǔn)備好接收數(shù)據(jù)。這樣,串行主機(jī)設(shè)備就可以通過McBSPO或McBSPl發(fā)送自舉表信息。當(dāng)接收到一個字之后,McBSP會產(chǎn)生串行口中斷,自舉程序使用中斷標(biāo)志確定哪一個串行口用于自舉裝載。如果C5402讀取的是一個有效的關(guān)鍵字,自舉將固定在此串行口而忽略其他的自舉源。如果沒有一個McBSP接收到數(shù)據(jù),自舉程序會繼續(xù)檢測I/O自舉模式。在I/O自舉模式中,主設(shè)備通過將BIO輸入信號置低來請求發(fā)送數(shù)據(jù),自舉程序檢測到該請求之后,從I/O空間的OOOOh讀取數(shù)據(jù)。當(dāng)該數(shù)據(jù)是一個有效的自舉表數(shù)據(jù)時,自舉程序通過握手協(xié)議讀取剩余的數(shù)據(jù)。如果沒有找到有效的自舉模式,自舉程序?qū)臉?biāo)準(zhǔn)串行口方式開始重新進(jìn)行檢測。注意并不是所有的自舉模式都被重復(fù)檢測。圖5-50的流程圖說明了自舉程序用來確定是8位還是16位數(shù)據(jù)方式傳送數(shù)據(jù),并開始執(zhí)行程序的基本過程。當(dāng)使用串行8位自舉模式時,字節(jié)傳送時必須高字節(jié)在前。而在并行8位模式下,低8位字節(jié)必須首先出現(xiàn)在總線上。注意用于8位和16位的字節(jié)順序根據(jù)所選擇的自舉模式不同而不同。圖5-50I/O自舉模式下數(shù)據(jù)寬度選擇和數(shù)據(jù)傳送過程表5-19與表5-20是自舉表常見的結(jié)構(gòu)。該結(jié)構(gòu)除了HPI自舉外其他的自舉方式都適用。最前面的R-l個字存放寄存器初始值和程序運(yùn)行的起始地址。隨后的一個字說明了塊的大小,緊接著的兩個字說明了該塊的23位的裝載地址。當(dāng)自舉程序數(shù)到塊的大小為0時,它便跳轉(zhuǎn)到起始地址并開始運(yùn)行程序。表5-1916位方式的自舉數(shù)據(jù)結(jié)構(gòu)表5-208位方式的自舉數(shù)據(jù)結(jié)構(gòu)5.6.2HPI自舉模式

HPI自舉模式是DSP復(fù)位后要檢測的第一種模式。復(fù)位后,自舉程序?qū)?shù)據(jù)空間007Fh單元清零,并把它作為一種主機(jī)通過HPI接口裝載應(yīng)用程序代碼結(jié)束的標(biāo)志,然后將主機(jī)中斷輸出信號HINT置低,向主機(jī)表示DSP已經(jīng)準(zhǔn)備好接收數(shù)據(jù)。自舉程序接著檢查中斷標(biāo)志寄存器(IFR)中的-INT2標(biāo)志,如果-INT2為1(有效),則初始化為HPI自舉模式。如果檢測到外部用戶中斷-INT2,-INT2標(biāo)志一定為1。有兩種方法可以實現(xiàn)INT2中斷。一是把HINT的輸出引腳連接到-INT2的輸入引腳;二是在DSP取得中斷向量之后的30個CPU時鐘周期內(nèi),在-INT2的輸入引腳產(chǎn)生一個有效的外部中、斷,此時HINT不與-INT2相連。如果-INT2標(biāo)志沒有設(shè)置,表明HINT沒有連接到-INT2引腳或-INT2沒有在30個CPU時鐘周期內(nèi)接入。自舉程序?qū)z測所有的自舉模式,包括HPI模式。如果檢測到了-INT2標(biāo)志,自舉程序?qū)⒐潭ㄔ贖PI自舉模式上。

C5402的自舉模式同其他54xHPI的自舉有所不同,在DSP復(fù)位后,主機(jī)必須把代碼下載到片內(nèi)RAM。當(dāng)主機(jī)裝載片內(nèi)RAM時,C5402檢查片上RAM007Fh單元的內(nèi)容有無變化。主機(jī)停止裝載自舉代碼后,它還必須往007Fh單元的位置寫入裝載代碼的起始地址。地址007Fh處包含著入口地址的低16位PC(A15~AO),注意裝載地址PC必須是一個非零值。當(dāng)主機(jī)寫完007Fh后,C5402檢測到地址發(fā)生變化,就跳轉(zhuǎn)到此地址執(zhí)行裝載的代碼。當(dāng)HINT置低之后,一直保持為低電平,它通知主機(jī)C5402已經(jīng)完成復(fù)位,可以開始裝載代碼了。主機(jī)控制器然后通過寫HPI控制寄存器HPIC來清除HINT標(biāo)志。HPI自舉只包括源程序數(shù)據(jù)和代碼,不包括任何其他信息,例如段的大小和寄存器的值。裝載完畢后,自舉程序會跳轉(zhuǎn)到指定的起始地址并開始執(zhí)行程序。HPI的自舉模式流程見圖5-51。圖5-51HPI自舉模式流程5.6.3串行EEPROM自舉模式當(dāng)HPI自舉模式?jīng)]有檢測到時,自舉程序?qū)z測串行EEPROM自舉模式。注意某些版本的C5402不完全支持這種模式。串行EEPROM自舉模式可以通過-INT3外部中斷進(jìn)行選擇。自舉程序檢測中斷標(biāo)志寄存器IFR中的-INT3標(biāo)志,如果此標(biāo)志為1,就初始化為串行EEPROM自舉模式。如果在C5402復(fù)位之后的30個CPU周期內(nèi)在-INT3引腳出現(xiàn)由高到低的跳變,就會選擇串行EEPROM自舉模式。如果系統(tǒng)無法產(chǎn)生中斷信號,McBSPl的發(fā)送引腳BDX1可以作為替代信號。在復(fù)位之后的前幾個周期,BDX1引腳自動從高電平變?yōu)榈碗娖剑钥梢园阉鼜耐獠窟B接到-INT3的輸入引腳,從而選擇串行EEPROM自舉模式。這種選擇自舉模式的方法很簡便,不需要任何其他的外部信號和器件??傊?,當(dāng)符合下面的條件之一時,-INT3標(biāo)志將被正確置位。BDXl引腳連接到-INT3輸入,或者DSP取得復(fù)位向量后的30個時鐘周期內(nèi)在-INT3輸入引腳產(chǎn)生有效的中斷。串行EEPROM自舉模式中DSP與EEPROM按SPI方式連接,這種模式將McBSP1設(shè)置為時鐘停止模式。McBSP用于順序讀取串行EEPROM。EEPROM必須有一個4線的SPI從類型的接口,其地址為16位。McBSP與EEPROM之間的接口如圖5-52所示。圖5-52McBSP與EEPROM之間的接口

McBSP的時鐘速率設(shè)置為CLKOUT/250,對于100MHz的器件來說是400kHz,這樣低的比特率可以保證與大多數(shù)基于SPI的EEPROM兼容。McBSP作為SPI主設(shè)備使用,配置為CLKSTP=3,CLKXP=o和CLKXM=1。每次訪問.McBSP都發(fā)送一個32位的數(shù)據(jù)包,包括8位的讀指令03h,16位的讀地址和一個保持字節(jié)。EEPROM會忽略最后8位保持字節(jié),利用該時隙從SO引腳送出被訪問的數(shù)據(jù)。自舉程序首先從EEPROM的地址0讀數(shù),并檢查是否是有效的自舉表信息,如果有效則繼續(xù)讀取剩余部分。串行EEPROM自舉模式使用與標(biāo)準(zhǔn)8位串行口相同的自舉表格式。因為串行EEPROM只有16位地址,所以自舉表最大為64KB,或32K16比特字。這就限制了能直接裝載的代碼的大小。串行EEPROM裝載結(jié)束后,XF信號置低,可將其與EEPROM的HOLD相連,在自舉結(jié)束后使EEPROM失效。如果在前兩次的讀操作中未發(fā)現(xiàn)有效關(guān)鍵字,則自舉程序繼續(xù)檢查下一個自舉模式。5.6.4并行自舉模式并行自舉模式通過并行接口總線從數(shù)據(jù)空間讀取自舉表信息,并把代碼傳送到程序空間。自舉程序支持并行的8位或16位自舉模式。在這種模式下,可以重新設(shè)置SWWSR和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論