版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章DSP系統(tǒng)的硬件設(shè)計(jì)電源設(shè)計(jì)、JTAG仿真接口設(shè)計(jì)、混合邏輯電路設(shè)計(jì)、系統(tǒng)存儲(chǔ)器擴(kuò)展設(shè)計(jì)及其他外圍接口電路的設(shè)計(jì)。5.1DSP系統(tǒng)基本硬件電路的設(shè)計(jì)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è)計(jì)。通常使用穩(wěn)壓器從5V電源生成3.3V和1.8V電源。如,TPS73HD318低壓差穩(wěn)壓器就是5402DSP系統(tǒng)中常用的電源芯片,它的輸入電壓是5V,輸出電壓一路是3.3V,一路是1.8V。每路電源的最大輸出電流是1A。芯片還提供了兩個(gè)寬度為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時(shí)鐘電路晶振電路:內(nèi)部振蕩器和外部振蕩器。
在DSP系統(tǒng)中,需要時(shí)鐘信號(hào)的器件一般有DSP、EMIF(外部存儲(chǔ)器接口電路,僅C55x和C6000系列DSP有)、UART和USB串行通信器件、音頻編譯碼器件、視頻解碼和編碼器件等。
當(dāng)DSP系統(tǒng)中需要多個(gè)時(shí)鐘信號(hào)時(shí),推薦使用可編程的時(shí)鐘電路芯片。
可編程時(shí)鐘芯片有1個(gè)或多個(gè)PLL鎖相環(huán),能夠提供多個(gè)可配置的時(shí)鐘輸出CLKA、CLKB和CLKC。配置系數(shù)存儲(chǔ)在EEPROM中,輸出時(shí)鐘可從PLL或從選擇的分頻器產(chǎn)生。時(shí)鐘信號(hào)電平一般為5V或3.3V。例如CY2071A和CY22381在實(shí)際應(yīng)用中選擇原則:◆系統(tǒng)中要求多個(gè)不同頻率的時(shí)鐘信號(hào)時(shí),首選可編程時(shí)鐘芯片;◆單一時(shí)鐘信號(hào)時(shí),選擇晶體時(shí)鐘電路;◆多個(gè)同頻時(shí)鐘信號(hào)時(shí),選擇晶振;◆盡量使用DSP片內(nèi)的PLL,降低片外時(shí)鐘頻率,提高系統(tǒng)的穩(wěn)定性;◆C5510、C5409A、C5416、C5420、C5421和C5441等DSP片內(nèi)無振蕩電路,不能用品體時(shí)鐘電路;◆VC5401、VC5402、VC5409和F281x等DSP時(shí)鐘信號(hào)的電平為1.8V,建議采用晶體時(shí)鐘電路。5.1.3復(fù)位電路有3種復(fù)位方式:上電復(fù)位、手動(dòng)復(fù)位和軟件復(fù)位。軟件復(fù)位可通過軟件指令來實(shí)現(xiàn),上電復(fù)位和手動(dòng)復(fù)位可使用復(fù)位電路實(shí)現(xiàn)。在實(shí)際的DSP應(yīng)用系統(tǒng)中,系統(tǒng)的可靠性是一個(gè)非常重要的問題。由于DSP系統(tǒng)的時(shí)鐘頻率很高,使得系統(tǒng)很容易對(duì)外產(chǎn)生干擾或被干擾,導(dǎo)致程序運(yùn)行跑飛。除了在系統(tǒng)軟件上采取一定的保護(hù)措施之外,在硬件上常用的方法是使用具有看門狗(Watchdog)監(jiān)視功能的微處理器監(jiān)控電路??撮T狗在微機(jī)系統(tǒng)中,由于CPU的工作常常會(huì)受到來自的各種干擾,造成程序的跑飛,而陷入死循環(huán),程序的正常運(yùn)行被打斷,由CPU控制的系統(tǒng)無法繼續(xù)工作,會(huì)造成整個(gè)系統(tǒng)的陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對(duì)微機(jī)系統(tǒng)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)的考慮,便產(chǎn)生了一種專門用于監(jiān)測(cè)單片機(jī)程序運(yùn)行狀態(tài)的芯片,俗稱"看門狗"(watchdog)其工作原理是:看門狗芯片和CPU的一個(gè)I/O引腳相連,該I/O引腳通過程序控制它定時(shí)地往看門狗的這個(gè)引腳上送入高電平(或低電平),這一程序語句是分散地放在整個(gè)程序的其他控制語句中間的,一旦CPU由于干擾造成程序跑飛后而陷入某一程序段進(jìn)入死循環(huán)狀態(tài)時(shí),寫看門狗引腳的程序便不能被執(zhí)行,這個(gè)時(shí)候,看門狗電路就會(huì)由于得不到CPU送來的信號(hào),就給CPU一個(gè)復(fù)位信號(hào),讓程序從程序存儲(chǔ)器的起始位置開始執(zhí)行,這樣便實(shí)現(xiàn)了微機(jī)系統(tǒng)的自動(dòng)復(fù)位。分硬件看門狗和軟件看門狗兩種。
硬件看門狗是利用了一個(gè)定時(shí)器,來監(jiān)控主程序的運(yùn)行,也就是說在主程序的運(yùn)行過程中,我們要在定時(shí)時(shí)間到之前對(duì)定時(shí)器進(jìn)行復(fù)位如果出現(xiàn)死循環(huán),或者說PC指針不能回來。那么定時(shí)時(shí)間到后就會(huì)使CPU復(fù)位。常用的WDT芯片如MAX813,5045,IMP813等,價(jià)格4~10元不等.
軟件看門狗技術(shù)的原理和這差不多,只不過是用軟件的方法實(shí)現(xiàn),用定時(shí)器來對(duì)主程序的運(yùn)行進(jìn)行監(jiān)控。5.1.4JTAG仿真接口
JTAG接口是用仿真器調(diào)試DSP系統(tǒng)時(shí)所連接的調(diào)試接口,仿真器通過JTAG接口實(shí)現(xiàn)與DSP之間的數(shù)據(jù)交換。
需要注意的是,設(shè)計(jì)JTAG接口時(shí)EMUO和EMU1引腳需要連接4.7kΩ上拉電阻,如圖5-7所示。
各個(gè)引腳的功能見p4325.1.53.3V和5V混合邏輯電路設(shè)計(jì)
3.3V與5V的邏輯電平轉(zhuǎn)換芯片。可以選擇74LVTH16245。
74LVTH16245是從74LS245發(fā)展而來。單電源3.3V,16位雙向總線緩沖器。還有74LVC4245。5.2DSP系統(tǒng)的存儲(chǔ)器接口設(shè)計(jì)
存儲(chǔ)器擴(kuò)展時(shí)應(yīng)主要考慮以下幾個(gè)方面的問題:存儲(chǔ)器的電源、存儲(chǔ)器的I/O接口電平、數(shù)據(jù)總線的接口、地址總線的接口及控制總線的接口。5.2.1程序存儲(chǔ)器的擴(kuò)展程序存儲(chǔ)器一般都采用Flash存儲(chǔ)器,俗稱閃存。它的體積小,功耗低,電可擦寫,數(shù)據(jù)保存時(shí)間長。實(shí)際中常用的Flash存儲(chǔ)器型號(hào)有:SST39VF系列flash、AT29LV1024、28F400B3等。下面以SST39VF系列flash為例說明flash存儲(chǔ)器的使用方法。
SST39VF系列flash包括SST39VF200A/SST39VF400A/SST39VF800A,是CMOS多用途Flash存儲(chǔ)器,它們的容量分別為128Kx16位/256Kx16位/512Kx16位,電源電壓為3.3V單電源。可以讀操作、字編程操作、扇區(qū)/塊擦除操作、片擦除操作等,寫操作(編程或擦寫)時(shí)使用2.7~3.6V單電源,典型寫編程時(shí)間為14μs,可反復(fù)擦寫100000次,數(shù)據(jù)可保持100年,數(shù)據(jù)訪問時(shí)間為70~90ns。很適合作為DSP的程序存儲(chǔ)器使用。5.2.2靜態(tài)數(shù)據(jù)存儲(chǔ)器的擴(kuò)展
54xx系列DSP都有片上RAM存儲(chǔ)器,例如C5402有16K字的片上RAM。使用內(nèi)部RAM可以全速運(yùn)行程序,不需要插入任何等待周期,此時(shí)DSP的運(yùn)行速度最快。所以在一般的應(yīng)用設(shè)計(jì)中,應(yīng)盡可能地選用內(nèi)部RAM足夠大的DSP芯片,盡量避免擴(kuò)充外部RAM存儲(chǔ)器。如果在某些應(yīng)用中需要用到大容量的RAM存儲(chǔ)器而內(nèi)部RAM不能滿足要求時(shí),只能通過擴(kuò)展外部RAM的方式滿足設(shè)計(jì)要求。常見的外部RAM分為靜態(tài)存儲(chǔ)器SRAM和動(dòng)態(tài)存儲(chǔ)器DRAM。常規(guī)的靜態(tài)RAM存儲(chǔ)器,例如62256、62512等,由于其工作電源一般為5V,接口為CMOS電平,數(shù)據(jù)總線的接口為8位,訪問速度也不能適應(yīng)DSP的運(yùn)行速度,所以不推薦使用。54xx系列DSP擴(kuò)展外部RAM存儲(chǔ)器時(shí)同樣要考慮幾個(gè)方面的問題:存儲(chǔ)器的電源、存儲(chǔ)器的I/O接口電平、DSP與存儲(chǔ)器之間的數(shù)據(jù)總線的接口、地址總線的接口及控制總線的接口。
CY7C1021BV33是一種高速的RAM存儲(chǔ)器芯片。它的容量為64Kx16位,有16條地址總線和16條數(shù)據(jù)總線??刂凭€有片選信號(hào)-CE、讀使能信號(hào)-OE、寫使能信號(hào)-WR、高字節(jié)選擇信號(hào)-BHE、低字節(jié)選擇信號(hào)-BLE。其電源電壓為3.3V,能夠直接與C54xxDSP相接口。2011年6月21日星期二5.2.3DSP與慢速器件的接口設(shè)計(jì)為了適應(yīng)較慢的外部存儲(chǔ)器和輸入/輸出設(shè)備,DSP配備了軟件可編程的等待狀態(tài)發(fā)生器,可以將外部總線周期擴(kuò)展至數(shù)個(gè)機(jī)器周期。這種擴(kuò)展通常也是有限的,如C54xx系列的C5402DSP最多只能擴(kuò)展到14個(gè)機(jī)器周期。這就對(duì)外部接口設(shè)備的定時(shí)時(shí)序提出了一定的要求。所以外部擴(kuò)展存儲(chǔ)器的存取時(shí)間(速度)是一個(gè)很重要的指標(biāo)。
C54xx所有內(nèi)部存儲(chǔ)器的讀/寫操作都是單周期指令。如果對(duì)于外部存儲(chǔ)器的讀/寫操作也在單周期內(nèi)完成,要求外部存儲(chǔ)器的存取時(shí)間小于60%的機(jī)器周期。如當(dāng)C5402的工作頻率為100MHz時(shí),它的機(jī)器周期為10ns,此時(shí)要求外部存儲(chǔ)器的存取時(shí)間小于6ns。如果C54xx與慢速的器件相接口,就需要通過軟件或硬件的方法插入等待周期。對(duì)于C5402,插入的等待狀態(tài)與外部器件的存取時(shí)間的對(duì)應(yīng)關(guān)系如表5-8所示(p123)。有關(guān)軟硬件等待狀態(tài)的問題可以概括如下:①如果所有的外部器件均不需要插入等待狀態(tài),或只需要插入1個(gè)軟件等待狀態(tài),READY引腳固定接高電平。②當(dāng)需要插入2~14個(gè)等待狀態(tài)時(shí),將-MSC引腳與READY引腳相連。③當(dāng)需要插入14個(gè)以上的等待狀態(tài),即在14個(gè)軟件等待狀態(tài)的基礎(chǔ)上再插入等待狀態(tài)時(shí),硬件等待狀態(tài)電路是由-MSC和READY信號(hào)及外部電路來構(gòu)成的。5.3DSP系統(tǒng)模數(shù)接口電路的設(shè)計(jì)在以DSP為核心的數(shù)字信號(hào)處理系統(tǒng)中,模數(shù)(A/D)、數(shù)模(D/A)轉(zhuǎn)換是系統(tǒng)重要的組成部分。因?yàn)橥枰M(jìn)行信號(hào)分析、處理的對(duì)象是模擬量,例如語音信號(hào)、各種傳感器輸出的模擬信號(hào)。這些信號(hào)經(jīng)過放大、濾波及A/D轉(zhuǎn)換后,從模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),由DSP芯片對(duì)這些數(shù)字信號(hào)按照某種算法進(jìn)行處理,例如FIR濾波器算法。處理后的數(shù)字信號(hào)再送往D/A轉(zhuǎn)換器進(jìn)行數(shù)模轉(zhuǎn)換,變?yōu)槟M信號(hào),再經(jīng)過平滑濾波之后便可得到處理后的模擬輸出信號(hào)。實(shí)際應(yīng)用中有多種A/D或D/A轉(zhuǎn)換器可供選擇?;诓煌膽?yīng)用,可以選用不同性能指標(biāo)的芯片。對(duì)于一般的A/D和D/A轉(zhuǎn)換器,一般有下列的指標(biāo)需要考慮?!舴直媛?。因?yàn)镈SP是16位的處理器,所以轉(zhuǎn)換器的分辨率要大于8位,例如12位或16位。選用高分辨率的轉(zhuǎn)換器有利于提高信號(hào)處理的精度?!艮D(zhuǎn)換速率。DSP的運(yùn)算速度很快,能夠?qū)π盘?hào)進(jìn)行實(shí)時(shí)處理。轉(zhuǎn)換器的轉(zhuǎn)換速率要能夠滿足信號(hào)實(shí)時(shí)處理的要求,要滿足奈奎斯特取樣定理?!艚涌凇^D(zhuǎn)換器有并行接口和串行接口之分。
TI公司提供了一系列與其DSP處理器相配套的A/D、D/A轉(zhuǎn)換器及CODEC集成電路,CODEC上面包含A/D、D/A電路,完成音頻信號(hào)的編譯碼功能。常用的音頻CODEC接口電路有TLC320AD50C、TLV320AIC23、PCM3002、TLV320AIC10等。下面以TLC320AD50C為例說明C5402DSP與CODEC接口電路的設(shè)計(jì)。5.3.1TLC320AD50C概述它是TI公司生產(chǎn)的SIGMA—DELTA型的16位A/D、D/A轉(zhuǎn)換電路,它的采樣速率最高可達(dá)22.05kb/s,內(nèi)含抗混疊濾波器和重構(gòu)濾波器,屬于模擬接口芯片(AIC),它有一個(gè)能與多種DSP芯片相連的同步串行通信接口,其采樣速率可通過DSP編程來設(shè)置。在DAC之前有一個(gè)插值濾波器以保證輸出信號(hào)平滑,在ADC之后有一個(gè)抽取濾波器以提高輸入信號(hào)的信噪比。AD50C片內(nèi)還包括一個(gè)定時(shí)器(調(diào)整采樣率和幀同步延時(shí))和控制器(可編程的增益放大器,鎖相環(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è)計(jì)
5.3.4AD50與DSP的接口電路設(shè)計(jì)為了增強(qiáng)AD50的噪聲抑制能力,一定要增加電源去耦電容,圖5-24給出了電源去耦電路的示意圖。
去耦電容采用獨(dú)石電容104。
布線時(shí)要對(duì)地線做特別處理,這里的地線指的是數(shù)字地和模擬地,要做單點(diǎn)連接。5.3.5AD50內(nèi)部的寄存器
AD50內(nèi)部有7個(gè)數(shù)據(jù)和控制寄存器,用于編程控制AD50的工作狀態(tài)。寄存器0: 空操作寄存器。寄存器1: 軟件復(fù)位; 軟件掉電; 為DAC選擇16位或15位工作方式; 硬件或軟件二次串行通信請(qǐng)求方式的選擇。寄存器2: 使能ALTDATA輸入端; 為ADC選擇16/15位工作方式。寄存器3: 選擇-FS與-FSD之間延遲SCLK的個(gè)數(shù); 告訴主機(jī)連接了幾個(gè)從機(jī)。寄存器4: 為輸入和輸出放大器選擇放大器增益; 選擇N來設(shè)置采樣頻率,fs=MCLK/(128xN)或MCLK/(512xN);
在MCLK輸入端使能外部時(shí)鐘輸入并旁路內(nèi)部的PLL。寄存器5,6:保留。5.3.6AD50的幀同步定時(shí)幀同步信號(hào)-FS指示器件已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)。由DOUT發(fā)送的數(shù)據(jù)和由DIN接收的數(shù)據(jù)在幀同步信號(hào)-FS的下降沿開始。1.主機(jī)模式下的幀同步信號(hào)-FS2.從機(jī)模式下的幀同步信號(hào)-FS3.主機(jī)模式下的幀同步延遲信號(hào)-FSD4.從機(jī)模式下的幀同步延遲信號(hào)-FSD5.3.7AD50與DSP的串行通信
DOUT、DIN、SCLK、FS和FC都是串行通信信號(hào)。ADC的數(shù)字輸出結(jié)果從DOUT輸出,DAC的數(shù)字輸入數(shù)據(jù)從DIN輸入。串行通信的同步時(shí)鐘和幀同步信號(hào)來自SCLK。包含ADC和DAC數(shù)據(jù)傳輸間隔的幀同步脈沖來自FS。一次通信用來傳輸ADC和DAC的信號(hào)數(shù)據(jù)。二次串行通信用來讀出或?qū)懭階D50的控制和配置字。一次通信和二次串行通信的用途是允許轉(zhuǎn)換數(shù)據(jù)和控制數(shù)據(jù)通過同一個(gè)串口進(jìn)行傳輸。一次通信往往用于轉(zhuǎn)換數(shù)據(jù),二次串行通信用于設(shè)置或讀出寄存器的值;一次通信在每一個(gè)轉(zhuǎn)換周期都會(huì)發(fā)生,二次串行通信只有當(dāng)申請(qǐng)時(shí)才會(huì)發(fā)生。二次串行通信可以通過硬件或軟件來請(qǐng)求。1.一次串行通信一次串行通信用來發(fā)送和接收ADC和DAC的信號(hào)數(shù)據(jù)。DAC的字長取決于控制寄存器1的D0比特的狀態(tài)。上電或復(fù)位之后器件的默認(rèn)狀態(tài)是15比特模式。當(dāng)DAC的字長是15比特時(shí),第一次16比特串行通信字的最后一個(gè)比特是用于請(qǐng)求二次串行通信。在16比特模式,所有一次通信的16比特都作為DAC的數(shù)據(jù)并且必須使用硬件引腳FC請(qǐng)求二次串行通信。圖5-31給出了在一次通信中SCLK、-FS、DOUT和DIN的定時(shí)關(guān)系。定時(shí)操作的時(shí)序?yàn)椋骸?FS變?yōu)榈碗娖??!?6比特的字從ADC(DOUT)輸出,從DAC(DIN)輸入?!鬎S變?yōu)楦撸硎颈敬蝹鬏斀Y(jié)束。2.二次串行通信二次串行通信用來讀/寫對(duì)器件的選項(xiàng)和電路配置進(jìn)行編程的16比特字。對(duì)寄存器的編程總是發(fā)生在二次串行通信期間。對(duì)四個(gè)寄存器進(jìn)行編程需要四次一次通信和二次串行通信的周期。如果某個(gè)寄存器要求為默認(rèn)值,則在二次串行通信時(shí)寄存器的尋址可以省略。NOOP命令尋址空操作寄存器0,且在此次二次串行通信期間沒有寄存器被編程。如果要求對(duì)所有設(shè)備(主設(shè)備和從設(shè)備)都進(jìn)行二次串行通信,則必須從主設(shè)備開始對(duì)所有的設(shè)備都請(qǐng)求二次串行通信。這將導(dǎo)致所有設(shè)備的二次幀同步。NOOP命令可以用于不需要二次串行通信操作的設(shè)備。在二次串行通信期間,寄存器可以寫也可以讀。當(dāng)寫寄存器時(shí),DIN引腳包含要寫的值。當(dāng)讀寄存器時(shí),數(shù)據(jù)從DOUT引腳移出。有兩種方法初始化二次串行通信,F(xiàn)C引腳插入高電平,或者當(dāng)處于15比特模式時(shí),將16比特串行通信字的LSB位置l。
3.硬件二次串行通信請(qǐng)求當(dāng)FC有效時(shí)請(qǐng)求二次串行通信。FC引腳在一次通信的FS的上升沿鎖存。所以FC應(yīng)在一次幀同步信號(hào)FS的上升沿之前拉高。4.軟件二次串行通信請(qǐng)求當(dāng)設(shè)備處于15比特模式時(shí)一次傳輸中的DAC數(shù)據(jù)的最低位LSB能夠請(qǐng)求二次串行通信。對(duì)于所有的串行通信,首先傳送的是最高有效位。對(duì)一個(gè)16比特的ADC字和一個(gè)16比特的DAC字,D15是最高有效位,DO是最低有效位。對(duì)于一次通信中的15比特DAC數(shù)據(jù)字,D15是最高有效位,Dl是最低有效位。DO比特用于二次串行通信請(qǐng)求控制。所有位的數(shù)據(jù)都是2的補(bǔ)碼格式。如果數(shù)據(jù)格式設(shè)置為16比特字的模式,所有的16比特是ADC或DAC的數(shù)據(jù),并且二次串行通信只能通過硬件FC請(qǐng)求。5.DIN和DOUT引腳的數(shù)據(jù)格式
AD50C有兩種串行通信格式:一次串行通信和二次串行通信。一次串行通信格式的16位都用來傳輸數(shù)據(jù)。ADC的數(shù)據(jù)長度由寄存器2的D4位決定。啟動(dòng)和復(fù)位后默認(rèn)值為15+1位模式,最后一位用于請(qǐng)求二次串行通信(DO:0表示無操作,1表示請(qǐng)求二次串行通信)。當(dāng)然,二次串行通信也可以由硬件的FC引腳產(chǎn)生。圖5-36為一次通信的數(shù)據(jù)格式。二次串行通信用來初始化和設(shè)置AD50C的內(nèi)部寄存器的值。二次串行通信時(shí)DSP可通過向DIN寫入寄存器的值,也可以從DOUT讀出寄存器的值。5.3.8AD50的編程
AD50在使用之前首先要進(jìn)行復(fù)位,有兩種方式可以復(fù)位AD50的內(nèi)部計(jì)數(shù)器和寄存器。在RESET引腳上加一個(gè)負(fù)的復(fù)位脈沖,或往可編程的軟件復(fù)位比特(控制寄存器1的D7位)寫1。無論哪種方式都可以復(fù)位控制寄存器和清除所有的電路。復(fù)位信號(hào)應(yīng)該至少持續(xù)6個(gè)主時(shí)鐘(MCLK)的周期。復(fù)位之后,所有寄存器的默認(rèn)值都是0。硬件或軟件復(fù)位之后,AD50需要一定的時(shí)間來穩(wěn)定內(nèi)部的鎖相環(huán)PLL。在這期間不要往AD50中寫控制字或D/A數(shù)據(jù)。應(yīng)該按下列順序進(jìn)行復(fù)位:◆進(jìn)行復(fù)位(復(fù)位脈沖的寬度至少持續(xù)6個(gè)MCLK的周期);◆退出復(fù)位狀態(tài);◆等待主設(shè)備產(chǎn)生的SCLK時(shí)鐘,這大概需要100μs的時(shí)間;◆等待18個(gè)幀同步脈沖出現(xiàn);◆往AD50中寫控制和配置數(shù)據(jù);◆采集A/D轉(zhuǎn)換的數(shù)據(jù)。當(dāng)多個(gè)AD50與單個(gè)DSP串行接口以主/從結(jié)構(gòu)相連時(shí),在設(shè)備初始化期間,控制寄存器應(yīng)以下列順序編程:控制寄存器1,控制寄存器2,控制寄存器4,控制寄存器3。通過寫控制寄存器1、控制寄存器2、控制寄存器4的一次總的初始化將所有的AD50進(jìn)行相同的配置。一旦控制寄存器3被編程(設(shè)置-FS和-FSD之間的SCLK的數(shù)目),每一個(gè)設(shè)備將在指定的時(shí)隙進(jìn)行通信。所有的寄存器編程發(fā)生在二次串行通信期間,數(shù)據(jù)從DIN引腳輸入,在幀同步信號(hào)有效期間在SCLK的下降沿?cái)?shù)據(jù)有效并被鎖存。如果某個(gè)特定的寄存器要求編程為默認(rèn)值,則在二次串行通信時(shí)不需要被尋址和編程??詹僮髅睿―S12~DS8全部清零)尋址空操作寄存器,并且在通信期間沒有寄存器被編程。另外,在二次串行通信時(shí)通過設(shè)置讀比特(DS13)為1,可以從DOUT引腳讀回每個(gè)寄存器的值。當(dāng)寄存器處于讀方式時(shí),不能往寄存器中寫數(shù)據(jù)。寫寄存器時(shí)D13必須清零。例如,如果要從DOUT引腳讀出控制寄存器1的內(nèi)容,則必須通過DIN引腳完成下列過程?!粼谝淮瓮ㄐ艜r(shí)間間隔內(nèi),通過設(shè)置DO=1(軟件請(qǐng)求)或者FC=高電平(硬件請(qǐng)求)請(qǐng)求二次串行通信。◆在二次串行通信的時(shí)間內(nèi),通過DIN引腳以下面的格式發(fā)送數(shù)據(jù)?!羧缓髲腄OUT引腳將讀到下面的數(shù)據(jù),DOUT的最后8個(gè)比特就是寄存器1的數(shù)據(jù)。如果需要對(duì)控制寄存器1進(jìn)行編程,則必須通過DIN引腳完成下面的過程:◆在一次通信時(shí)間間隔內(nèi),通過設(shè)置DO=1(軟件請(qǐng)求)或者FC=高電平(硬件請(qǐng)求)請(qǐng)求二次串行通信。◆在二次串行通信的時(shí)間內(nèi),通過DIN引腳以下面的格式發(fā)送數(shù)據(jù)?!羧缓驞OUT引腳將產(chǎn)生下面的數(shù)據(jù)。5.4DSP系統(tǒng)異步通信
接口電路的設(shè)計(jì)串行接口是DSP與外部通信常用的通信接口。串行通信主要包括同步方式的串口通信和異步方式的串口通信。在54xxDSP上都包括1個(gè)或2個(gè)MCBSP多通道緩沖同步串行口,使用它可以與其他DSP或CODEC器件進(jìn)行通信。但在DSP與微機(jī)進(jìn)行通信時(shí)常使用異步通信串行口,它的接口簡單,傳輸距離長,應(yīng)用廣泛。在54xxDSP的片上外設(shè)中并不包括異步通信接口電路,需要用戶進(jìn)行外部擴(kuò)展。常用的串口擴(kuò)展芯片有TI的TL16C550C(單串口)、TL16C552(雙串口)、TL16C554(四串口),其他公司類似的芯片如ST16C550、ST16C552、ST16C554等。
TL16C554是TI公司生產(chǎn)的4通道異步收發(fā)器集成芯片,它的每個(gè)通道能從外圍設(shè)備或MODEM接收數(shù)據(jù),實(shí)現(xiàn)串一并轉(zhuǎn)換;同時(shí)它也可從CPU端接收數(shù)據(jù),實(shí)現(xiàn)并一串轉(zhuǎn)換。在FIFO模式下,傳輸和接收前將數(shù)據(jù)緩沖為16字節(jié)數(shù)據(jù)包,減少了CPU的中斷數(shù)量。內(nèi)部包含4片改進(jìn)的16C550異步傳輸器件,使得串行I/O更加可靠,每個(gè)信道可實(shí)現(xiàn)串行和并行兩種連接方式的轉(zhuǎn)換,每個(gè)信道的狀態(tài)可以通過CPU讀取,可以獲取操作情況或任何錯(cuò)誤狀態(tài)。
TL16C554的主要特點(diǎn)如下:①由4個(gè)帶有邏輯控制的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)報(bào)告功能;⑦多優(yōu)先級(jí)的中斷系統(tǒng)控制;⑧三態(tài)TTL電平輸出;⑨允許5V或3.3V工作電源。
TL16C554有68引腳PLCC和80引腳TQFP兩種封裝形式,各個(gè)引腳的功能為:A0~A2為片內(nèi)寄存器的選擇信號(hào)端;D0~D7為雙向8位數(shù)據(jù)線;-IOR為讀選通端(低電平有效);-IOW為寫選通端(低電平有效);INTA~I(xiàn)NTD為中斷A、B、C、D(高電平有效);-CSA~-CSD為片選A、B、C、D(低電平有效);XTAL1、XTAL2為外部時(shí)鐘端,可接晶體或外部時(shí)鐘信號(hào);RXA~RXD為串行輸入A、B、C、D端;TXA~TXD為串行輸出A、B、C、D端;-RXRDY為接收準(zhǔn)備好信號(hào)端(低電平有效);-TXRDY為發(fā)送準(zhǔn)備好信號(hào)端(低電平有效)。
DSP的數(shù)據(jù)線D7~DO分別與16C554的D7~DO相連,地址線A2~A0分別與16C554的A2~A0相連,地址線A15~A14連同控制線R/-W、-MSTRB、-IS連接到邏輯電路進(jìn)行邏輯譯碼,生成16C554的讀信號(hào)-IOR、寫信號(hào)-IOW、4個(gè)通道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接口集成電路,能夠自動(dòng)掉電/喚醒,具備很高的數(shù)據(jù)傳輸能力。當(dāng)RS-232電纜未連接或所連接設(shè)備的發(fā)送器無效并且UART驅(qū)動(dòng)的發(fā)送器輸入電平超過30s無效時(shí),這些器件自動(dòng)進(jìn)入低功耗掉電模式。當(dāng)在任意發(fā)送器或接收器的輸入端檢測(cè)到有效的電平變化時(shí),便會(huì)又一次打開電源。MAX3224、MAX3225的引腳圖和典型應(yīng)用電路分別如圖5-42(a)、(b)所示,
MAX3224和MAX3225都包括2個(gè)發(fā)送器和2個(gè)接收器,它們之間唯一的區(qū)別是數(shù)據(jù)傳輸速率不同,MAX3224是250Kbps,MAX3225是lMbps。具體應(yīng)用時(shí)可根據(jù)實(shí)際情況進(jìn)行選擇。(a)管腳圖(b)典型應(yīng)用電路擴(kuò)展異步串行口的另外一種方法是使用DSP的輸入/輸出引腳進(jìn)行模擬。TI的C54xxDSP芯片上均提供XF和BIO兩條I/O引腳,可以使用這兩根接口線來模擬一個(gè)低通信速率的異步串行口。用XF作為發(fā)送數(shù)據(jù)線,而用BIO作為接收數(shù)據(jù)線,同時(shí)需要內(nèi)部的定時(shí)器和一個(gè)中斷引腳。異步通信的數(shù)據(jù)格式完全用軟件來實(shí)現(xiàn)。圖5-43是此種異步通信接口的示意圖。5.5HPI接口電路的設(shè)計(jì)
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ī)通過對(duì)HPI控制寄存器的訪問可實(shí)現(xiàn)對(duì)片內(nèi)存儲(chǔ)器的訪問、HPI狀態(tài)的查詢及主從設(shè)備的通信,由于HPI-8的數(shù)據(jù)線寬度只有8位,所以一個(gè)字的讀/寫需要兩次操作來完成。5.5.1HPI與主機(jī)的接口
HPI主要用于與其他的主處理器進(jìn)行數(shù)據(jù)交換。主機(jī)可以是DSP芯片、PC或其他的嵌入式處理器。HPI接口的數(shù)據(jù)總線(HD0~HD7)負(fù)責(zé)與主機(jī)交換信息,HCNTL0和HCNTL1兩根控制線表示主機(jī)要訪問哪個(gè)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接口可以很方便地實(shí)現(xiàn)與PC并行口的連接,它們之間的連接電路如圖5-45所示。圖5-45HPI與PC并行接口的連接
HPI通過它的數(shù)據(jù)總線HD0~HD7連接到PC的并口,此時(shí)PC的并口工作在雙向模式下??刂坪蜖顟B(tài)引腳都工作在I/O狀態(tài)。這些輸入/輸出引腳提供了與HPI通信的握手和控制狀態(tài)。并行接口引腳與HPI之間的連接如表5-17所示。表5-17PC并行接口與HPI的信號(hào)線主機(jī)通過一個(gè)讀/寫控制引腳HRW、一個(gè)數(shù)據(jù)選通信號(hào)HDS1來訪問數(shù)據(jù),HDS2與VDD相連。在選通信號(hào)HDS1的上升沿輸入數(shù)據(jù)。主機(jī)(PC)并行口的數(shù)據(jù)線和地址線是分開的。HAS連接到VDD。在HDS1的下降沿選通控制信號(hào)HBIL、HCNTL0、HCNTL1和HRW到HPI。為了保證HPI一直工作,將HCS接地。由于并行口的輸出引腳不是很多,所以SELECTIN和AUTOFD信號(hào)連同外部的硬件一起產(chǎn)生了4個(gè)信號(hào):HCNTL0、HCNTL1、RS和HBIL。這4個(gè)信號(hào)是TMS320C54x的輸入,RS通過AUTOFD產(chǎn)生的時(shí)鐘沿進(jìn)行復(fù)位。在HDS1的上升沿,數(shù)據(jù)被選通并進(jìn)入HPI的數(shù)據(jù)/地址寄存器中。HBIL輸入用于確定接收的字節(jié)是低字節(jié)還是高字節(jié)。HBIL在HDS1的上升沿變化,時(shí)間上落后-HDS1一個(gè)時(shí)間點(diǎn),這個(gè)延遲是觸發(fā)器的傳輸時(shí)延,它保證了在每個(gè)字節(jié)的傳輸過程中得到HBIL正確的樣值。為了確保加電時(shí)HBIL被初始化為高電平,在觸發(fā)器的置位端連接了一個(gè)電容和電阻。如果HBIL連接到主機(jī)進(jìn)行軟件初始化,則不需要這個(gè)電阻和電容,程序可以監(jiān)視HBIL的輸入以保證數(shù)據(jù)和地址轉(zhuǎn)換的有效性。圖5-46給出了控制信號(hào)、HPI的數(shù)據(jù)選通輸出和選通輸入信號(hào)HAD的時(shí)序圖,HAD、HD讀和HD寫分別是讀寫數(shù)據(jù)的信號(hào)。顯示了通過HPI總線進(jìn)行的數(shù)據(jù)傳輸。5.5.3HPl與51單片機(jī)的接口某些信號(hào)處理系統(tǒng)通常由兩部分組成:一部分為DSP子系統(tǒng),這是整個(gè)系統(tǒng)的核心,主要完成采樣、數(shù)字信號(hào)處理及輸出等功能;另一部分為單片機(jī)子系統(tǒng),進(jìn)行人機(jī)交互界面的控制,如鍵盤和顯示。兩個(gè)子系統(tǒng)之間需要進(jìn)行必要的數(shù)據(jù)交換。下面介紹DSP和51單片機(jī)之間通過HPI接口進(jìn)行連接的設(shè)計(jì)方法。這里以C5402DSP上增強(qiáng)型的HPI-8為例來說明接口電路的設(shè)計(jì)。
HPI8總共有18條信號(hào)線。其中數(shù)據(jù)線8條(HD0~HD7),其余10條都是控制線,如表5-18所示。表5-18HPI接口信號(hào)及功能
HAS在數(shù)據(jù)線和地址線復(fù)用的MCU中,與ALE信號(hào)連接,在下降沿鎖存HBIL、HCNTL0/1、HR/-W,這些信號(hào)通常與地址線連接。如果MCU的數(shù)據(jù)線和地址線沒有復(fù)用,則應(yīng)該接高電平。
-HDS1、-HDS2是數(shù)據(jù)傳輸?shù)臅r(shí)序控制信號(hào)。信號(hào)時(shí)序見圖5-47,在下降沿對(duì)HBIL、HCNTL0/1、HR/-W進(jìn)行鎖存。即下降沿傳輸開始一上升沿傳輸結(jié)束。圖5-47HPI數(shù)據(jù)傳輸時(shí)序
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為方向控制端,高電平時(shí)A→B,低電平時(shí)B→A。另外要注意,74LVC16245A的工作電壓引腳VCC應(yīng)該接3.3V。整個(gè)硬件連接如圖5-48所示。
HPI的數(shù)據(jù)傳輸分為兩部分:外部傳輸和內(nèi)部傳輸。外部傳輸是指主機(jī)和HPI寄存器之間的傳輸,由主機(jī)發(fā)出指令完成。內(nèi)部傳輸是指HPI寄存器和DSP內(nèi)部RAM之間的傳輸,由DSP內(nèi)部的DMA控制器自動(dòng)完成。主機(jī)在進(jìn)行外部傳輸時(shí),要先檢查內(nèi)部傳輸是否完成,這是通過檢測(cè)HRDY信號(hào)實(shí)現(xiàn)的。外部傳輸操作的一般步驟如下?!魴z查HRDY信號(hào)的電平:為高,表示可以進(jìn)行傳輸;為低,表示DSP正在進(jìn)行內(nèi)部傳輸,此時(shí)不能進(jìn)行外部傳輸?!糁鳈C(jī)發(fā)出指令,設(shè)置HCNTL0、HCNTL1、HBIL、HR/-W信號(hào)的狀態(tài),以確定讀或?qū)懙募拇嫫骷白止?jié)的選擇?!糁鳈C(jī)發(fā)出時(shí)序控制信號(hào),按照HPI數(shù)據(jù)傳輸時(shí)序進(jìn)行操作,從而完成一次外部傳輸。圖5-48DSP與51單片機(jī)的硬件接口編程時(shí)還要注意以下問題。①由于DSP的數(shù)據(jù)是16位,而單片機(jī)的數(shù)據(jù)是8位,所以單片機(jī)要分兩次將數(shù)據(jù)傳給DSP,即將16位的數(shù)據(jù)分成兩個(gè)字節(jié)傳輸。這時(shí),可以通過控制HPI口的HBIL信號(hào)來指定此次傳輸?shù)氖堑?個(gè)字節(jié)還是第2個(gè)字節(jié)。另外,還要通過HPI的控制寄存器(HPIC)中的BOB位來指定第1個(gè)字節(jié)作為高8位還是低8位,所以主機(jī)在訪問HPI時(shí),應(yīng)首先對(duì)HPIC進(jìn)行初始化,并注意對(duì)BOB位的設(shè)置。②主機(jī)對(duì)地址寄存器(HPIA)的寫操作會(huì)初始化一次內(nèi)部傳輸。當(dāng)主機(jī)通過兩次對(duì)HPIA的寫操作后,HPIA就得到了主機(jī)要訪問的地址。這時(shí)內(nèi)部的DMA控制器就會(huì)根據(jù)這個(gè)地址將相應(yīng)單元的內(nèi)容讀到HPI內(nèi)部的數(shù)據(jù)鎖存器中,再對(duì)HPID進(jìn)行兩次讀操作就可以將數(shù)據(jù)讀出。如果將HPIA設(shè)置成自動(dòng)遞增模式,就會(huì)在數(shù)據(jù)傳輸?shù)耐瑫r(shí)完成HPIA加1,于是又啟動(dòng)了一次內(nèi)部傳輸,這樣有利于數(shù)據(jù)的連續(xù)傳輸。③注意設(shè)置HPIC中的XHPIA位。XHPIA=1時(shí),表示對(duì)DSP的7位擴(kuò)展地址進(jìn)行操作;XHPIA=O時(shí),表示對(duì)DSP的低16位地址進(jìn)行操作。由于DSP復(fù)位后,XHIPA的狀態(tài)是不確定的,所以必須首先對(duì)XHPIA進(jìn)行設(shè)置。④主機(jī)和DSP可以互相中斷。主機(jī)通過向HPIC中的DSPINT位寫入1來中斷DSP。讀該位總是為0,而且DSP對(duì)該位的寫操作是無效的。而DSP要中斷主機(jī)時(shí),向HPIC中的HJNT位寫入1,這時(shí)HPI的接口引腳被置低,從而使主機(jī)產(chǎn)生中斷。讀出該位總是為1,主機(jī)可以對(duì)該位寫1來清除中斷,這時(shí)HINT引腳就恢復(fù)高電平。
下面給出兩段C51程序?qū)嵗?,包括單片機(jī)初始化HPI程序及單片機(jī)讀取DSP片內(nèi)RAM的程序。
sbit
PlO=P1^O;//HRDY信號(hào),單片機(jī)輸入信號(hào)
sbit
Pll=P1^l;//74LVC164245方向控制端,單片機(jī)輸出信號(hào)
/*初始化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è)計(jì)
5.6.1自舉的概念自舉的英文原文是BootLoader,是指DSP芯片從上電復(fù)位到從外部設(shè)備獲得運(yùn)行程序進(jìn)入工作狀態(tài)的過程。這樣用戶就可以將代碼放在外部慢速的設(shè)備當(dāng)中,上電后利用DSP內(nèi)部ROM中固化的自舉程序?qū)⑼獠看a裝載到內(nèi)部的高速存儲(chǔ)器中運(yùn)行,這種方法省去了對(duì)片內(nèi)ROM作掩膜的昂貴手段,而且利于用戶對(duì)代碼的更新和維護(hù)。TI公司的C54xx系列DSP提供了靈活的自舉方法,如并行口、串行口、HPI等。自舉方式可以以字節(jié)或字為單位進(jìn)行代碼傳輸。自舉的控制信號(hào)有中斷信號(hào)、BIO和XF,DSP根據(jù)它們來確定自舉的具體方式。在5402DSP的片內(nèi)ROM內(nèi)固化了一些代碼,包括自舉程序、A律和“律表、正弦表、生產(chǎn)商的測(cè)試代碼和中斷矢量表等,長度為4K字,位于程序空間的OFOOOh~OFFFFh地址空間范圍內(nèi)。當(dāng)MP/MC-O,即DSP工作于微計(jì)算機(jī)模式時(shí),片內(nèi)的ROM映像在程序空間,允許訪問,ROM內(nèi)的自舉程序才能夠開始運(yùn)行,從而將外部設(shè)備中的代碼搬移到指定的位置。在自舉前,自舉程序會(huì)設(shè)置CPU的狀態(tài)寄存器。所有的中斷都會(huì)被禁止(INTM=1),片內(nèi)的雙尋址RAM將被同時(shí)映像到程序空間和數(shù)據(jù)空間(OVLY=1),所有的空間將被初始化為7個(gè)等待周期。自舉不會(huì)改變塊切換控制寄存器BSCR的初始化狀態(tài)。為了適應(yīng)不同的系統(tǒng)需求,C54xxDSP提供了多種不同的自舉方式,下面是由自舉程序完成的各種啟動(dòng)方式的列表和功能概述?!鬑PI自舉模式:代碼由主機(jī)通過HPI接口裝入內(nèi)部的片上存儲(chǔ)器,當(dāng)主機(jī)在片內(nèi)的007Fh位置寫入起始地址后,DSP才開始獨(dú)立運(yùn)行?!舨⑿锌谧耘e模式:DSP通過外部并行接口總線從數(shù)據(jù)空間讀取自舉表。自舉表中包括代碼和相應(yīng)的信息,整個(gè)數(shù)據(jù)傳輸完畢后,DSP按提供的起始地址開始運(yùn)行。◆標(biāo)準(zhǔn)串行口自舉模式(支持8位或16位串行口):DSP從工作于標(biāo)準(zhǔn)模式的多通道緩沖串行口接收讀取自舉表,并且根據(jù)自舉表中指定的信息讀取代碼。McBSP0支持以字為單位的傳輸,McBSP1支持以字節(jié)為單位的傳輸?!?位串行EEPROM自舉模式:將串行EEPROM與McBSP1相連接,McBSP1工作于SPI模式,DSP從EEPROM中讀取自舉表,并按自舉表中提供的信息接收代碼?!鬒/O自舉模式(支持8位或16位I/O):DSP通過外部并行接口總線從I/O口Oh處讀取自舉表,并通過XF和BIO實(shí)現(xiàn)外部設(shè)備的握手協(xié)議,從而按照外部設(shè)備的速率來傳輸數(shù)據(jù)。自舉程序還提供了下列附加的功能,在并行和I/O自舉模式中,DSP根據(jù)從自舉表中讀到的值可以重新配置軟件等待狀態(tài)寄存器和塊切換控制寄存器,并且可以多段自舉,允許裝載不連續(xù)地址范圍內(nèi)的多個(gè)段代碼。當(dāng)自舉開始之后,它進(jìn)行一系列的檢測(cè)操作來決定使用哪種自舉模式。它首先檢查HPI,如果不是則繼續(xù)檢查下一種自舉模式,直至檢測(cè)到一個(gè)有效的自舉模式。如果沒有檢測(cè)到有效的自舉模式,則返回到標(biāo)準(zhǔn)串行口處重復(fù)上述操作。圖5-49說明了自舉模式檢測(cè)的流程。
DSP按以下順序檢測(cè)每個(gè)自舉模式,直到檢測(cè)到有效的一個(gè):①HPI自舉模式,首先檢測(cè)INT2信號(hào);②串行EEPROM自舉模式(8位),檢測(cè)INT3信號(hào);③并行模式;④8位標(biāo)準(zhǔn)串行口模式McBSP1;⑤16位標(biāo)準(zhǔn)串行口模式McBSPO;⑥I/O自舉模式;⑦HPI自舉模式,第二次檢測(cè)起始地址。第一次自舉模式檢測(cè)的是HPI模式。與其他某些C54x的HPI自舉模式不同,C5402的HPI自舉模式允許主機(jī)在DSP復(fù)位之后往片內(nèi)RAM裝載代碼,同時(shí)允許在裝載的過程中指定程序運(yùn)行的起始地址。在復(fù)位后,DSP將片上RAM007Fh單元清0,然后查詢?cè)撐恢玫膬?nèi)容有無變化。在查詢期間,主機(jī)就可以往片內(nèi)RAM裝載代碼。在裝載完成后,主機(jī)必須再次訪問HPI,將代碼的起始地址寫到007Fh單元。當(dāng)DSP檢測(cè)到007Fh單元的內(nèi)容發(fā)生變化之后,立即跳轉(zhuǎn)到該地址開始運(yùn)行。由于這種查詢機(jī)制,起始地址必須是非零的數(shù)值。
C5402HPI自舉模式的另一個(gè)特點(diǎn)是不需要設(shè)置外部中斷2(-INT2)。如果-INT2無效,自舉程序不斷地輪流檢測(cè)各個(gè)自舉源,包括上述HPI自舉的查詢,直到檢測(cè)到有效的自舉源為止。-INT2標(biāo)志有效時(shí)強(qiáng)制自舉程序進(jìn)行HPI自舉,此時(shí),DSP等待主機(jī)裝載代碼,并輪詢007Fh處的內(nèi)容。當(dāng)-INT2無效時(shí),DSP將檢測(cè)SPI方式的EEPROM自舉。串行EEPROM自舉模式通過-INT3進(jìn)行檢測(cè)。當(dāng)檢測(cè)到-INT3有效時(shí),自舉程序認(rèn)為自舉表位于與McBSPl相連的8位串行EEPROM中。自舉程序從EEPROM的0地址讀取一個(gè)數(shù),如果這個(gè)數(shù)是自舉表開始的關(guān)鍵字,自舉程序?qū)腅EPROM繼續(xù)裝載自舉表的其他數(shù)據(jù)。如果檢測(cè)不到-INT3或讀取的不是有效的自舉表數(shù)據(jù),DSP將繼續(xù)檢測(cè)下一個(gè)自舉源。接著檢測(cè)的是并行自舉模式。從數(shù)據(jù)空間的4000h~FFFFh的地址范圍內(nèi)讀取自舉表。自舉程序先從I/O空間FFFFh處讀取自舉表的起始地址,然后從該位置讀取數(shù)據(jù)。自舉表的開始應(yīng)該是一個(gè)關(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í),自舉程序接著讀取其余的數(shù)據(jù),再裝載執(zhí)行程序代碼。否則,自舉程序?qū)⒗^續(xù)檢測(cè)串行模式。在檢測(cè)串行或I/O自舉模式之前,自舉程序?qū)F引腳置低,表示已準(zhǔn)備好接收數(shù)據(jù)。這樣,串行主機(jī)設(shè)備就可以通過McBSPO或McBSPl發(fā)送自舉表信息。當(dāng)接收到一個(gè)字之后,McBSP會(huì)產(chǎn)生串行口中斷,自舉程序使用中斷標(biāo)志確定哪一個(gè)串行口用于自舉裝載。如果C5402讀取的是一個(gè)有效的關(guān)鍵字,自舉將固定在此串行口而忽略其他的自舉源。如果沒有一個(gè)McBSP接收到數(shù)據(jù),自舉程序會(huì)繼續(xù)檢測(cè)I/O自舉模式。在I/O自舉模式中,主設(shè)備通過將BIO輸入信號(hào)置低來請(qǐng)求發(fā)送數(shù)據(jù),自舉程序檢測(cè)到該請(qǐng)求之后,從I/O空間的OOOOh讀取數(shù)據(jù)。當(dāng)該數(shù)據(jù)是一個(gè)有效的自舉表數(shù)據(jù)時(shí),自舉程序通過握手協(xié)議讀取剩余的數(shù)據(jù)。如果沒有找到有效的自舉模式,自舉程序?qū)臉?biāo)準(zhǔn)串行口方式開始重新進(jìn)行檢測(cè)。注意并不是所有的自舉模式都被重復(fù)檢測(cè)。圖5-50的流程圖說明了自舉程序用來確定是8位還是16位數(shù)據(jù)方式傳送數(shù)據(jù),并開始執(zhí)行程序的基本過程。當(dāng)使用串行8位自舉模式時(shí),字節(jié)傳送時(shí)必須高字節(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個(gè)字存放寄存器初始值和程序運(yùn)行的起始地址。隨后的一個(gè)字說明了塊的大小,緊接著的兩個(gè)字說明了該塊的23位的裝載地址。當(dāng)自舉程序數(shù)到塊的大小為0時(shí),它便跳轉(zhuǎn)到起始地址并開始運(yùn)行程序。表5-1916位方式的自舉數(shù)據(jù)結(jié)構(gòu)表5-208位方式的自舉數(shù)據(jù)結(jié)構(gòu)5.6.2HPI自舉模式
HPI自舉模式是DSP復(fù)位后要檢測(cè)的第一種模式。復(fù)位后,自舉程序?qū)?shù)據(jù)空間007Fh單元清零,并把它作為一種主機(jī)通過HPI接口裝載應(yīng)用程序代碼結(jié)束的標(biāo)志,然后將主機(jī)中斷輸出信號(hào)HINT置低,向主機(jī)表示DSP已經(jīng)準(zhǔn)備好接收數(shù)據(jù)。自舉程序接著檢查中斷標(biāo)志寄存器(IFR)中的-INT2標(biāo)志,如果-INT2為1(有效),則初始化為HPI自舉模式。如果檢測(cè)到外部用戶中斷-INT2,-INT2標(biāo)志一定為1。有兩種方法可以實(shí)現(xiàn)INT2中斷。一是把HINT的輸出引腳連接到-INT2的輸入引腳;二是在DSP取得中斷向量之后的30個(gè)CPU時(shí)鐘周期內(nèi),在-INT2的輸入引腳產(chǎn)生一個(gè)有效的外部中、斷,此時(shí)HINT不與-INT2相連。如果-INT2標(biāo)志沒有設(shè)置,表明HINT沒有連接到-INT2引腳或-INT2沒有在30個(gè)CPU時(shí)鐘周期內(nèi)接入。自舉程序?qū)z測(cè)所有的自舉模式,包括HPI模式。如果檢測(cè)到了-INT2標(biāo)志,自舉程序?qū)⒐潭ㄔ贖PI自舉模式上。
C5402的自舉模式同其他54xHPI的自舉有所不同,在DSP復(fù)位后,主機(jī)必須把代碼下載到片內(nèi)RAM。當(dāng)主機(jī)裝載片內(nèi)RAM時(shí),C5402檢查片上RAM007Fh單元的內(nèi)容有無變化。主機(jī)停止裝載自舉代碼后,它還必須往007Fh單元的位置寫入裝載代碼的起始地址。地址007Fh處包含著入口地址的低16位PC(A15~AO),注意裝載地址PC必須是一個(gè)非零值。當(dāng)主機(jī)寫完007Fh后,C5402檢測(cè)到地址發(fā)生變化,就跳轉(zhuǎn)到此地址執(zhí)行裝載的代碼。當(dāng)HINT置低之后,一直保持為低電平,它通知主機(jī)C5402已經(jīng)完成復(fù)位,可以開始裝載代碼了。主機(jī)控制器然后通過寫HPI控制寄存器HPIC來清除HINT標(biāo)志。HPI自舉只包括源程序數(shù)據(jù)和代碼,不包括任何其他信息,例如段的大小和寄存器的值。裝載完畢后,自舉程序會(huì)跳轉(zhuǎn)到指定的起始地址并開始執(zhí)行程序。HPI的自舉模式流程見圖5-51。圖5-51HPI自舉模式流程5.6.3串行EEPROM自舉模式當(dāng)HPI自舉模式?jīng)]有檢測(cè)到時(shí),自舉程序?qū)z測(cè)串行EEPROM自舉模式。注意某些版本的C5402不完全支持這種模式。串行EEPROM自舉模式可以通過-INT3外部中斷進(jìn)行選擇。自舉程序檢測(cè)中斷標(biāo)志寄存器IFR中的-INT3標(biāo)志,如果此標(biāo)志為1,就初始化為串行EEPROM自舉模式。如果在C5402復(fù)位之后的30個(gè)CPU周期內(nèi)在-INT3引腳出現(xiàn)由高到低的跳變,就會(huì)選擇串行EEPROM自舉模式。如果系統(tǒng)無法產(chǎn)生中斷信號(hào),McBSPl的發(fā)送引腳BDX1可以作為替代信號(hào)。在復(fù)位之后的前幾個(gè)周期,BDX1引腳自動(dòng)從高電平變?yōu)榈碗娖?,所以可以把它從外部連接到-INT3的輸入引腳,從而選擇串行EEPROM自舉模式。這種選擇自舉模式的方法很簡便,不需要任何其他的外部信號(hào)和器件??傊?,當(dāng)符合下面的條件之一時(shí),-INT3標(biāo)志將被正確置位。BDXl引腳連接到-INT3輸入,或者DSP取得復(fù)位向量后的30個(gè)時(shí)鐘周期內(nèi)在-INT3輸入引腳產(chǎn)生有效的中斷。串行EEPROM自舉模式中DSP與EEPROM按SPI方式連接,這種模式將McBSP1設(shè)置為時(shí)鐘停止模式。McBSP用于順序讀取串行EEPROM。EEPROM必須有一個(gè)4線的SPI從類型的接口,其地址為16位。McBSP與EEPROM之間的接口如圖5-52所示。圖5-52McBSP與EEPROM之間的接口
McBSP的時(shí)鐘速率設(shè)置為CLKOUT/250,對(duì)于100MHz的器件來說是400kHz,這樣低的比特率可以保證與大多數(shù)基于SPI的EEPROM兼容。McBSP作為SPI主設(shè)備使用,配置為CLKSTP=3,CLKXP=o和CLKXM=1。每次訪問.McBSP都發(fā)送一個(gè)32位的數(shù)據(jù)包,包括8位的讀指令03h,16位的讀地址和一個(gè)保持字節(jié)。EEPROM會(huì)忽略最后8位保持字節(jié),利用該時(shí)隙從SO引腳送出被訪問的數(shù)據(jù)。自舉程序首先從EEPROM的地址0讀數(shù),并檢查是否是有效的自舉表信息,如果有效則繼續(xù)讀取剩余部分。串行EEPROM自舉模式使用與標(biāo)準(zhǔn)8位串行口相同的自舉表格式。因?yàn)榇蠩EPROM只有16位地址,所以自舉表最大為64KB,或32K16比特字。這就限制了能直接裝載的代碼的大小。串行EEPROM裝載結(jié)束后,XF信號(hào)置低,可將其與EEPROM的HOLD相連,在自舉結(jié)束后使EEPROM失效。如果在前兩次的讀操作中未發(fā)現(xiàn)有效關(guān)鍵字,則自舉程序繼續(xù)檢查下一個(gè)自舉模式。5.6.4并行自舉模式并行自舉模式通過并行接口總線從數(shù)據(jù)空間讀取自舉表信息,并把代碼傳送到程序空間。自舉程序支持并行的8位或16位自舉模式。在這種模式下,可以重新設(shè)置SWWSR和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山西財(cái)貿(mào)職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024年安徽電氣工程職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2025屆昆明市高三語文1月三診一模測(cè)試卷附答案解析
- 圖說外灘公園的歷史沿革
- 南昌起義的歷史意義是什么
- 智能手機(jī)市場(chǎng)調(diào)查報(bào)告
- 韶關(guān)2024年廣東韶關(guān)樂昌市公安局第四次招聘警務(wù)輔助人員20人筆試歷年參考題庫附帶答案詳解
- 二零二五版KTV消防系統(tǒng)安全評(píng)估與應(yīng)急預(yù)案編制合同3篇
- 二零二五年度網(wǎng)絡(luò)游戲角色交易合同3篇
- 二零二五年餐飲業(yè)員工勞動(dòng)合同標(biāo)準(zhǔn)模板3篇
- 監(jiān)理單位組織結(jié)構(gòu)圖
- 十二經(jīng)脈循行原文背誦
- 身份證地區(qū)對(duì)應(yīng)碼表
- 高一家長會(huì)課件ppt
- 牙齦癌護(hù)理查房課件
- (完整版)鋁礬土進(jìn)口合同中英文
- 新生兒腦病亞低溫療法的護(hù)理研究
- 《庖丁解牛》獲獎(jiǎng)?wù)n件(省級(jí)公開課一等獎(jiǎng))-完美版PPT
- 2023年高考語文(新高考2卷)作文講評(píng)+備考建議+范文+素材
- 化工園區(qū)危險(xiǎn)品運(yùn)輸車輛停車場(chǎng)建設(shè)標(biāo)準(zhǔn)
- 碼頭裝卸作業(yè)風(fēng)險(xiǎn)辨識(shí)表
評(píng)論
0/150
提交評(píng)論