版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
dsp原理與應(yīng)用
第10章c55x典型應(yīng)用系統(tǒng)設(shè)計(jì)劉忠國(guó):liuzhg@電話微信:jnliuzg
山東大學(xué)生物醫(yī)學(xué)工程1參考資料:山大課程中心《dsp原理與應(yīng)用》網(wǎng)站:/g2s/template/view.aspx?action=view&coursetype=0&courseid=763網(wǎng)站:tms320c55xdspcpureferenceguide(spru371f,2004年版)tms320vc5509afixed-pointdigitalsignalprocessor-datamanual(sprs205k,2008年版)tms320vc5503/5507/5509dspexternalmemoryinterface(emif)referenceguide(spru670)tms320vc5507/5509dspanalog-to-digitalconverter(adc)referenceguide(spru586b)2第10章c55x典型應(yīng)用系統(tǒng)設(shè)計(jì)10.1典型dsp板的硬件設(shè)計(jì)10.2cpld電路模塊設(shè)計(jì)10.3dsp板測(cè)試程序10.4綜合設(shè)計(jì)實(shí)例1:自適應(yīng)系統(tǒng)辨識(shí)10.5綜合設(shè)計(jì)實(shí)例2:數(shù)字式有源抗噪聲耳罩310.1典型dsp板的硬件設(shè)計(jì)10.1.1概述10.1.2基本電路模塊10.1.3flash電路模塊10.1.4sdram電路模塊10.1.5數(shù)模轉(zhuǎn)換電路10.1.6sd卡接口電路10.1.7usb接口電路10.1.8自啟動(dòng)電路模塊410.1典型dsp板的硬件設(shè)計(jì)10.1.1概述
基于tms320vc5509a的通用數(shù)字信號(hào)處理板:包括vc5509a芯片、復(fù)位電路、時(shí)鐘電路、jtag接口電路以及電源電路等基本電路模塊。通過emif外擴(kuò)了flash、sdram等存儲(chǔ)器模塊。通過mcbsp0,mcbsp1和i2c外擴(kuò)2片tlv320aic23b,使該系統(tǒng)具有4路模擬輸入和4路模擬輸出。
5參考:實(shí)驗(yàn)箱電路原理圖6參考:實(shí)驗(yàn)箱電路原理圖1.電源電路10.1.2基本電路模塊參考:圖9-8tps767d301雙路電源vref=1.1834v7(推薦r2=30.1kΩ,可調(diào)電壓1.5~5.5v)vref=1.1834v(25度典型內(nèi)部參考電壓值)r175kr2210k8第10章(376頁正確)圖10-2電源電路,供參考
圖9-8tps767d301產(chǎn)生雙路電源(推薦r2=30.1kΩ,可調(diào)電壓1.5~5.5v)(3)雙電源修改可調(diào)電壓(1.5v–5.5v)固定電壓3.3v1.6vr1,r2所選擇的阻值通常使分壓器電流大約為40μa芯片tps73hd301,管腳及電路與tps767d301相同,vref=1.182v(推薦r2=169kΩ,可調(diào)輸出電壓1.2~9.75v)。上圖
產(chǎn)生1.604vtps73hd301tps767d3012.復(fù)位電路3.時(shí)鐘電路y=a單施密特反相器芯片sn74ahc1g149參考:圖9-10手動(dòng)復(fù)位電路由vc=1.5v,vcc=3.3v,得:606ms,確保完全復(fù)位送cpld產(chǎn)生復(fù)位10.1.3flash電路模塊10s29al008d:8mbit(1mx8bit,512kx16bit)cmosflash1為字模式參考圖9-16c5509apge與s29al008d連接示意圖a[13:1]cpld實(shí)現(xiàn)的flash高位地址擴(kuò)展寄存器ce1flash10.1.4sdram電路模塊11參考圖9-19c55x與64m位(4m×16)sdram的連接圖a0與a14在emif中異或輸出,a0不用(a0=0),則該引腳就是a14ldqm,udqm這些信號(hào)線是為了實(shí)現(xiàn)字節(jié)訪問和半字訪問,ldqm控制低八位,udqm控制高八位,這樣當(dāng)要按字節(jié)寫的時(shí)候,就把高八位屏蔽掉。
字節(jié)使能位be0n,be1nauto-precharge占用ce0,ce1兩個(gè)ce空間ce1空間與flash復(fù)用相同芯片hy57v641620sdram占用兩個(gè)空間:ce0和ce1,flash與sdram復(fù)用ce1空間。當(dāng)ce1_1寄存器中的mtype為001b時(shí),表示ce1空間為16位異步存儲(chǔ)器;當(dāng)mtype為011b時(shí),表示ce1空間為16位sdram。blockblockblockc5509有srom外部擴(kuò)展存儲(chǔ)空間(ce3)當(dāng)mpnmc=1時(shí)有效12c5509a沒有srom,參考表2-24c5509a存儲(chǔ)器映射10.1.5數(shù)模轉(zhuǎn)換電路
13mode=0選擇2線模式cs=0:地址0011010cs=1:地址0011011x1~x4為線性電壓輸入端;y1~y4為線性電壓輸出端參考圖9-29mcbsp和aic23b的數(shù)據(jù)接口接線圖(兩aic23b為主模式)表9-21
數(shù)字音頻接口格式(地址:0000111)寄存器的位ms=1圖9-29c55x的mcbsp和aic23b的數(shù)據(jù)接口接線圖
(aic23b為從模式)142.c55x的mcbsp與aic23b的數(shù)據(jù)接口數(shù)字音頻接口模式為dsp模式dac字時(shí)鐘信號(hào)adc字時(shí)鐘信號(hào)inmastermode,thetlv320aic23bsuppliesthebclk,lrcout,andlrcin.inslavemode,bclk,lrcout,andlrcinaresuppliedtothetlv320aic23b10.1.6sd卡接口電路
1510.1.7usb接口電路
16dsp芯片的usb相關(guān)引腳10.1.8自啟動(dòng)電路模塊
17表10-1gpio引腳與系統(tǒng)上電引導(dǎo)方式表gpio0gpio1gpio2gpio3說明0100來自于mcbsp0的串行eeprom引導(dǎo)方式(24bit地址)0010usb接口引導(dǎo)方式0101ehpi(多元引導(dǎo))方式0011ehpi(非多元引導(dǎo))方式1000來自于外部16bit異步內(nèi)存的引導(dǎo)方式1100來自于mcbsp0的串行eeprom引導(dǎo)方式(16bit地址)1110并行emif引導(dǎo)方式(16bit異步內(nèi)存)1011來自mcbsp0同步串行引導(dǎo)方式(16bit數(shù)據(jù))1111來自mcbsp0同步串行引導(dǎo)方式(8bit數(shù)據(jù))系統(tǒng)復(fù)位時(shí),程序會(huì)自動(dòng)跳轉(zhuǎn)到0xff8000處運(yùn)行,在這里固化著出廠時(shí)的引導(dǎo)程序。這段程序中系統(tǒng)會(huì)讀取gpio0~3的狀態(tài),然后確定引導(dǎo)方式:10.1.8自啟動(dòng)電路模塊
18gp0gp1gp2gp312348765sw2swdip-4r1810kr2010kr2210kr2310k3.3vr631kr641kr661kr671k實(shí)驗(yàn)箱開發(fā)板及gpio撥碼開關(guān)第10章c55x典型應(yīng)用系統(tǒng)設(shè)計(jì)10.1典型dsp板的硬件設(shè)計(jì)10.2cpld電路模塊設(shè)計(jì)10.3dsp板測(cè)試程序10.4綜合設(shè)計(jì)實(shí)例1:自適應(yīng)系統(tǒng)辨識(shí)10.5綜合設(shè)計(jì)實(shí)例2:數(shù)字式有源抗噪聲耳罩1910.2cpld電路模塊設(shè)計(jì)10.2.1概述10.2.2復(fù)位邏輯10.2.3控制寄存器的地址生成10.2.4用戶寄存器10.2.5flash高位地址寄存器10.2.6控制寄存器數(shù)據(jù)的輸出2010.2cpld電路模塊設(shè)計(jì)10.2.1概述利用小規(guī)模邏輯器件譯碼的方式己不能滿足dsp系統(tǒng)的要求。同時(shí)dsp系統(tǒng)中經(jīng)常需要外部專門的快速邏輯控制電路的配合,這可由cpld來實(shí)現(xiàn)。cpld是complexprogrammablelogicdevice的簡(jiǎn)稱,其時(shí)序嚴(yán)格、速度較快、可編程性好,非常適合于實(shí)現(xiàn)譯碼和邏輯控制專門電路。xilinx(賽靈思)公司的cpld芯片xc95144xl,用于:dsp復(fù)位邏輯控制;外部存儲(chǔ)器flash高位地址擴(kuò)展;系統(tǒng)外擴(kuò)等。本章cpld代碼使用硬件描述語言vhdl語言編寫。21實(shí)驗(yàn)箱用cpld型號(hào):xc9536xl10.2cpld電路模塊設(shè)計(jì)10.2.1概述流行的硬件描述語言有vhdl
(veryhighspeedintegratedcircuithardwaredescriptionlanguage,vhsic硬件描述語言)
和veriloghdl。都是在20世紀(jì)80年代中期開發(fā)出來的。前者由美國(guó)國(guó)防部開發(fā)出來供軍方使用,后者由gatewaydesignautomation公司(該公司于1989年被cadence公司收購(gòu))開發(fā)。兩種hdl均為ieee標(biāo)準(zhǔn)。
硬件描述語言以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可表示邏輯電路圖、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。22xc95144xl輸入輸出引腳的定義23100-pintqfp(81useri/opins)144-pintqfp(117useri/opins)144-csp(117useri/opins)dsp_ce2n輸入輸出輸入dsp_ce1ndsp_arendsp_aoendsp_awen10.2.2復(fù)位邏輯1.輸入信號(hào):電源芯片復(fù)位信號(hào)pwr_rstn;按鍵復(fù)位信號(hào)btn_rst;外部復(fù)位信號(hào)x_rstn;2.輸出信號(hào):vc5509a芯片系統(tǒng)復(fù)位信號(hào)dsp_rstn;flash芯片復(fù)位信號(hào)flash_rstn;復(fù)位指示燈信號(hào)dsp_rstn_led。243.代碼:systemresetn<='0‘whenpwr_rstn='0'orx_rstn='0'orbtn_rst='1'
else'1';
dsp_rstn<='0' whensystemresetn='0'
else'1';dst_rst_led<='0‘whensystemresetn='0'
else'1';
flash_rstn<='0‘whensystemresetn='0'
else'1';4.功能:當(dāng)pwr_rstn(低電平有效)、x_rstn(低電平有效)、btn_rst(高電平有效)有一個(gè)有效時(shí),即產(chǎn)生有效的復(fù)位信號(hào)dsp_rstn(低電平有效)、flash_rstn(低電平有效)、dsp_rstn_led(低電平有效)。25輸入信號(hào)第2章:表2-24tms320vc5509apge存貯器映射26塊大小(字節(jié))首字節(jié)地址存儲(chǔ)器資源首字地址192000000存儲(chǔ)器映射寄存器(mmr)(保留)00000032k-1920000c0daram/hpi訪問000060
32k008000daram004000192k010000saram008000
040000外部擴(kuò)展存儲(chǔ)空間(ce0)002000
400000外部擴(kuò)展存儲(chǔ)空間(ce1)200000
800000外部擴(kuò)展存儲(chǔ)空間(ce2)400000
c00000外部擴(kuò)展存儲(chǔ)空間(ce3)60000032kff0000rom,當(dāng)mpnmc=0時(shí)有效外部擴(kuò)展存儲(chǔ)空間(ce3),當(dāng)mpnmc=1時(shí)有效
16kff8000rom,當(dāng)mpnmc=0時(shí)有效外部擴(kuò)展存儲(chǔ)空間(ce3),當(dāng)mpnmc=1時(shí)有效
16kffc000ffffff外部擴(kuò)展存儲(chǔ)空間(ce3),當(dāng)mpnmc=1時(shí)有效。
(c5509a)4m?256k4m4m4m?64k或直接接32k/16k字(節(jié))異步ram,也可間接擴(kuò)展可接同步動(dòng)態(tài)ramsdram注:mpnmc為狀態(tài)寄存器st3_55的第6位10.2.3控制寄存器的地址生成用戶寄存器和flash高位地址寄存器fha與vc5509a通過emif接口聯(lián)系,其地址分別為0x400601、0x400602。地址生成代碼(由xc95144產(chǎn)生):regcen<='0' whendsp_ce2n='0'anddsp_addrh(13downto10)="0011" else'1';generate_addr:process(dsp_addrl)begincasedsp_addrl(4downto1)iswhen"0001"=>chipenables<="00000001“;--userreg0x400601when"0010"=>chipenables<="00000010“;--flashreg0x400602whenothers=>chipenables<="00000000“;endcase;
endprocess; user_regcs<='1'whenchipenables(0)='1'andregcen='0'else'0'; --flash_regcs<=1'whenchipenables(1)='1'andregcen='0‘else'0'; --27符號(hào)后面是注釋ce2首字地址0x400000
a13a11a10a9a8a1字地址a1是最低有效位…00011000000001實(shí)驗(yàn)箱ledr發(fā)光管寄存器和撥碼開關(guān)寄存器地址為0x400001,0x400002應(yīng)為fha_regcs10.2.4用戶寄存器用戶寄存器用于控制led燈和讀撥碼開關(guān)狀態(tài),長(zhǎng)度為8位。高4位對(duì)應(yīng)引腳user_sw4~user_sw1,用于讀撥碼開關(guān)狀態(tài);低4位對(duì)應(yīng)引腳
user_led4~user_led1,用于控制led燈。代碼:
process(systemresetn,user_regcs,dsp_dq,dsp_awen)beginifsystemresetn='0'thenuser_reg(3downto0)<="1010";elsifdsp_awen‘eventanddsp_awen=’1‘then--__↑ˉ
ˉ上升沿if(user_regcs='1')then
user_reg(3downto0)<=dsp_dq(3downto0);endif;endif;endprocess;user_reg(7downto4)<=user_sw(4downto1);--readswstateuser_led(4downto1)<=not
user_reg(3downto0);--outputledstate28符號(hào)后面是注釋取反寫信號(hào)/we的上升沿76543210sw4sw3sw2sw1led4led3led2led1flash_cen<=dsp_ce1n;flash_wen<=dsp_awen;flash_oen<=dsp_aoen;process(systemresetn,fha_regcs,dsp_dq,dsp_awen)beginifsystemresetn='0'thenfha_reg(5downto0)<="000000"; --elsifdsp_awen'eventanddsp_awen='1'then--
__↑ˉˉif(fha_regcs='1')then --
fha_reg(5downto0)<=dsp_dq(5downto0);endif;endif;endprocess;flash_addr(18downto13)<=fha_reg(5downto0); 10.2.5flash高位地址寄存器該模塊用于生成flash的高位地址信號(hào)a18~a13。
代碼:29寫信號(hào)/we的上升沿10.2.6控制寄存器數(shù)據(jù)的輸出下列代碼可將對(duì)應(yīng)控制寄存器中的內(nèi)容送出供dsp讀取:--muxthereaddatafromalltheregistersandoutputforreadsprocess(dsp_addrl,user_reg,flash_reg) begin case dsp_addrl(4downto1)is when"0001"=> muxd<=user_reg; when"0010"=> muxd<="00"&flash_reg; whenothers => muxd<="zzzzzzzz"; endcase;endprocess;dsp_dq<=muxdwhen (regcen='0') and (dsp_aren='0') and (dsp_aoen='0') else "zzzzzzzz"; 30高阻狀態(tài)multiplex多路復(fù)用第10章c55x典型應(yīng)用系統(tǒng)設(shè)計(jì)10.1典型dsp板的硬件設(shè)計(jì)10.2cpld電路模塊設(shè)計(jì)10.3dsp板測(cè)試程序10.4綜合設(shè)計(jì)實(shí)例1:自適應(yīng)系統(tǒng)辨識(shí)10.5綜合設(shè)計(jì)實(shí)例2:數(shù)字式有源抗噪聲耳罩3110.3dsp板測(cè)試程序10.3.1led燈和撥碼開關(guān)測(cè)試程序10.3.2gpio測(cè)試程序10.3.3sdram測(cè)試程序10.3.4flash測(cè)試程序10.3.5aic23b測(cè)試程序3210.3dsp板測(cè)試程序10.3.1led燈和撥碼開關(guān)測(cè)試程序?qū)τ趌ed燈和撥碼開關(guān)的操作是通過對(duì)cpld上的用戶寄存器user_reg進(jìn)行讀寫來完成的。用戶寄存器地址為0x400601,各位的定義:76543210sw4sw3sw2sw1led4led3led2led1測(cè)試程序功能:讓led燈依次點(diǎn)亮(1:亮;0:滅),然后再依次熄滅。然后讓led燈閃爍3次,最后循環(huán)讀取sw1~sw4的值送led1~led4顯示。33r-xr-xr-xr-xr/w-0r/w-0r/w-0r/w-0
for(i=0;i<8;i++)//將led燈依次點(diǎn)亮,再依次熄滅{//因數(shù)組已定義ledcode[8]={0,1,3,7,15,7,3,1,0}
leddisp(ledcode[i]);
delay_ms(300);//延時(shí)300ms函數(shù)}for(i=0;i<0x03;i++)//讓led燈閃爍3次{leddisp(0x00);//該函數(shù)將0送user_reg中使燈全滅
delay_ms(300);leddisp(0x0f);//將0f送user_reg中使燈全亮
delay_ms(300);}while(1) //循環(huán)讀取撥碼開關(guān)的鍵值,送led顯示{readvalue=swithread();//swithread讀取撥碼開關(guān)的值
leddisp(readvalue);//送led燈顯示}34(1:亮;0:滅)76543210sw4sw3sw2sw1led4led3led2led110.3.2gpio測(cè)試程序gpio0~gpio3與撥碼開關(guān)相連,在系統(tǒng)復(fù)位時(shí)用于選擇系統(tǒng)引導(dǎo)方式,當(dāng)系統(tǒng)引導(dǎo)完畢后即可作為普通gpio來使用。gpio4、xf、gpio6、gpio7連接了led燈,輸出為0時(shí)點(diǎn)亮led燈,輸出為1時(shí)關(guān)閉led燈。測(cè)試程序功能:先讓gpio4、xf、gpio6、gpio7閃爍3次,然后循環(huán)檢測(cè)gpio0~gpio3的值,依次送gpio4、xf、gpio6和gpio7顯示。35注意:c5509a的pge封裝無gpio5引腳(bga封裝有)以下程序所用到的函數(shù)部分可在csl安裝目錄的庫文件中查找:\c55xxcsl\lib\csl55xx.src,類似前面用到的:d:\ti\ccsv5\tools\compiler\c5500_4.4.1\lib\rtssrc.zip(解壓)gpio_rset(iodir,0xf0);//使gpio0-3為輸入,gpio4-7為輸出for(i=0;i<0x03;i++) {gpio_rset(iodata,0x0f); //使gpio4-7都輸出0,使3燈亮
chip_fset(st1_55,xf,0); //xf燈也點(diǎn)亮
delay_ms(300);gpio_rset(iodata,0xff); //3燈全滅
chip_fset(st1_55,xf,1); //xf燈也熄滅
delay_ms(300);}while(1){readvalue=gpio_rget(iodata)&0x0f;//讀取gpio0-3的值
gpio_rset(iodata,readvalue<<4);//給gpio4(6,7)賦值
chip_fset(st1_55,xf,(readvalue&0x02)>>1);//將gpio1的值與gpio5(c5509apge無)對(duì)應(yīng),賦給xf}36//gpio_rset設(shè)置iodir值為0xf0//設(shè)置iodata值為0x0f//chip_fset設(shè)置st1_55的xf=0無gpio5引腳無gpio5引腳有關(guān)函數(shù)或宏定義在片上支持庫安裝文件夾c55xxcsl的csl55xx.src中#definegpio_rset(reg,val)_preg_set(gpio_addr(##reg),val)#define_preg_set(pregaddr,val)preg16(pregaddr)=(uint16)val#definepreg16(addr)(*(volatileioportuint16*)(addr))#definechip_fset(reg,field,val)_chip_##reg##_fset(##field,val)在csl55xx.src中依次可追究出對(duì)st1_55的xf位清0gpio_rget(iodata)的追源:#definegpio_rget(reg)_preg_get(gpio_addr(##reg))#define_preg_get(pregaddr)preg16(pregaddr)#definepreg16(addr)(*(volatileioportuint16*)(addr))gpio數(shù)據(jù)寄存器iodata(地址:0x3401)位字段數(shù)值說明15~8rsvd保留7~0ioxdir01iox方向控制位iox配置為輸入iox配置為輸出gpio方向寄存器iodir(地址:0x3400)位字段數(shù)值說明15~8rsvd保留7~0ioxd01iox邏輯狀態(tài)位iox引腳上的信號(hào)為低電平iox引腳上的信號(hào)為高電平8.3.2gpio寄存器37引腳gpio5只在bga封裝上有此引腳。10.3.3sdram測(cè)試程序
sdram占用兩個(gè)空間:ce0和ce1,flash與sdram復(fù)用ce1空間。當(dāng)ce1_1寄存器中的mtype為001b時(shí),表示ce1空間為16位異步存儲(chǔ)器;當(dāng)mtype為011b時(shí),表示ce1空間為16位sdram。測(cè)試程序功能:首先配置好emif,然后向sdram中寫入1000個(gè)數(shù)據(jù),接著將寫入的數(shù)據(jù)讀出,驗(yàn)證讀出的數(shù)據(jù)是否正確,并對(duì)錯(cuò)誤的數(shù)據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù)。38d15d14~12d11~8d7~2d1~0reservedmtypereadsetupreadtrobereadholdc55xemifcenspacecontrolregister1emif_config(&emiffig);//初始化sdrampsrc=(uint16*)0x200000;//指向?qū)⒁x寫的地址for(ii=0;ii<1000;ii++)//向?qū)?yīng)地址中寫入數(shù)據(jù){ *psrc++=ii;}psrc=(uint16*)0x200000;//重新指向?qū)⒁x寫的地址for(ii=0;ii<1000;ii++)//向從對(duì)應(yīng)地址中核對(duì)寫入的數(shù)據(jù){ if((*psrc)!=(ii-1)) error++;
*
psrc++;}if(error==0)
printf("sdramtestcompleted!noerror!");while(1);39//*psrc=ii;//psrc++;emif_config函數(shù)的定義:voidemif_config(emif_config*config){intoldgie;oldgie=irq_globaldisable();#if((chip_5509)||(chip_5509a))if((config->egcr&_emif_egcr_memfreq_mask)>=0x200u)chip_fset(xbsr,emifx2,1);#endif
emif_rset(egcr,config->egcr);emif_rset(ce01,config->ce01);emif_rset(ce02,config->ce02);emif_rset(ce03,config->ce03);emif_rset(ce11,config->ce11);emif_rset(ce12,config->ce12);emif_rset(ce13,config->ce13);emif_rset(ce21,config->ce21);emif_rset(ce22,config->ce22);emif_rset(ce23,config->ce23);emif_rset(ce31,config->ce31);emif_rset(ce32,config->ce32);emif_rset(ce33,config->ce33);emif_rset(sdc1,config->sdc1);emif_rset(sdper,config->sdper);emif_rset(init,config->init);emif_rset(sdc2,config->sdc2);40/*禁止全局中斷使intm=1,返回中斷全局屏蔽位intm的原狀態(tài)值*//*oldgie=intm置位1之前原狀態(tài)值*/typedefstruct{uint16egcr;
uint16emirst;uint16ce01;uint16ce02;uint16ce03;uint16ce11;uint16ce12;uint16ce13;uint16ce21;uint16ce22;uint16ce23;uint16ce31;uint16ce32;uint16ce33;uint16sdc1;uint16sdper;uint16init;uint16sdc2;}emif_config;emifx2:是5509的externalbusselectionregister(ebsr)的d11位,對(duì)5509a
是srstat(sdram的自動(dòng)刷新位.參看c5509(a)的用戶手冊(cè))memfreq:是egcr的8-10位,即大于等于001b(頻率小于等于cpu時(shí)鐘的1/2分頻),即clkmem頻率不是cpu時(shí)鐘(000b),而是cpu時(shí)鐘的各分頻(1/2,1/4,1/8,1/16分頻)xbsr就是ebsrxbsr就是ebsrmaximumsdramoperatingfrequencysupportedis72mhz.emifx2mode.emifsdramdivide-by-twomodeat144mhz.usethisfeaturewhensdramclkmem=1/2cpuclock.emifx2=0:foranyotheremifmodeemifx2=1:onlyusedforemifsdramdivide-by-twomodeat144mhzcpuoperation.emif_config函數(shù)的定義(續(xù)):#if(chip_5509a){uint16clkmem=config->egcr&_emif_egcr_memfreq_mask;uint16mmask=_emif_ce01_mtype_mask;uint16msdram=((config->ce01&mmask)!=0)||((config->ce11&mmask)!=0)||((config->ce21&mmask)!=0)||((config->ce31&mmask)!=0);if(clkmem&&msdram){_emif_ipmr=0x0000u;}}#endifirq_globalrestore(oldgie);}41memfreq:是egcr的8-10位,即大于等于001b(頻率小于等于cpu時(shí)鐘的1/2分頻),即clkmem頻率不是cpu時(shí)鐘(000b),而是cpu時(shí)鐘的各分頻(1/2,1/4,1/8,1/16分頻)即ce01的mtype值_emif_ipmr:internalpowermanagementregister#define_emif_ipmr_addr(0x0814u)#define_emif_ipmrpreg16(_emif_ipmr_addr)#define_ipmr _emif_ipmronthetms320vc5509adevices,thereisansdramcontrolregister3containingadiv1bit.ifmemfreq=000b(divide-by-1clockmode),thisregistermustcontain0007h(div1=1).forothervaluesofmemfreq,thisregistermustcontain0003h(div1=0).最低兩位要求總是11b。onthetms320vc5509devices,theexternalbusselectionregister(ebsr)containsanemifx2bit(seethedatamanual).ifthecpuisprogrammedtooperateat144mhzandmemfreq=001b(divide-by-two),theemifx2bitmustbe1intheexternalbusselectionregister(ebsr)ofthedsp.forothermemfreqvalues,theemifx2bitmustbe0.thisisrequiredforpropertimingofsdramaccesses.應(yīng)是5509a的sdramcontrolregister3(sdc3)/*恢復(fù)全局中斷屏蔽位intm的原狀態(tài)值*/意思是若用sdram且其頻率不是cpu時(shí)鐘,memfreq不等于=000bsdram的emif設(shè)置例子:/*thisisanexampleforemifofc5509
---------------------
*/
#include<csl.h>
#include<csl_pll.h>
#include<csl_emif.h>
#include<csl_chip.h>
/*uint16x;*/
/*uint32y;*/
cslboolb;
unsignedintdatacount=0;
intdatabuffer[1000]={0};
int*souraddr,*deminaddr;
/*鎖相環(huán)的設(shè)置*/
pll_config
myconfig
={
0,
//iai:theplllocksusingthesameprocessthatwasunderway
//beforetheidlemodewasentered
1,
//iob:ifthepllindicatesabreakinthephaselock,
//itswitchestoitsbypassmodeandrestartsthepllphase-lockingsequence
24,
//pllmultiplyvalue;multiply24times
1
//divideby2plldividevalue;itcanbeeitherplldividevalue
//(whenpllisenabled),orbypass-modedividevalue
//(pllinbypassmode,ifpllmultiplyvalueissetto1)
cpufrequency=144mhz
};
42/*sdram的emif設(shè)置例子:forc5509
*
*sdram的emif設(shè)置*/
emif_configemiffig={
0x221,
//egcr:
thememfreq=001,theclockforthememoryis1/2tocpufrequence
//thewpe=0,forbidenthewritingpostingwhenwedebugtheemif
//
thememcen=1,thememoryclockisreflectedontheclkmempin
//
thenohold=1,holdrequestsarenotrecognizedbytheemif
0xffff,
//emi_rst:anywritetothisregisterresetstheemifstatemachine
0x3fff,
//ce0_1:
ce0spacecontrolregister1
//
mtype=011,synchronousdram(sdram),16-bitdatabuswidth
0xffff,
//ce0_2:
ce0spacecontrolregister2
0x00ff,
//ce0_3:
ce0spacecontrolregister3;timeout=0xff;
0x7fff,
//ce1_1:
ce1spacecontrolregister1
0xffff,
//ce1_2:
ce1spacecontrolregister2
0x00ff,
//ce1_3:
ce1spacecontrolregister3
0x7fff,
//ce2_1:
ce2spacecontrolregister1
0xffff,
//ce2_2:
ce2spacecontrolregister2
0x00ff,
//ce2_3:
ce2spacecontrolregister3
0x7fff,
//ce3_1:
ce3spacecontrolregister1
0xffff,
//ce3_2:
ce3spacecontrolregister2
0x00ff,
//ce3_3:
ce3spacecontrolregister3
0x2911,
//sdc1:sdramcontrolregister1,trc=8;sdsize=0;sdwid=0;rfen=1;trcd=2;trp=2
0x0410,
//sdper:sdramperiodregister,
7ns*4096
0x07ff,
//sdinit:sdraminitializationregister,anywritetothisregisterto//
inittheallcespaces,
doitafterhardwareresetorpowerupthec55xdevice
0x0131
//sdc2:sdramcontrolregister2;sdacc=0;tmrd=01;tras=0101;tactv2actv=0001;
};
main()
{
/*初始化csl庫*/
csl_init();
/*emif為全emif接口*/
chip_rset(xbsr,0x0a01);
/*設(shè)置系統(tǒng)的運(yùn)行速度為144mhz*/
pll_config(&myconfig);
/*初始化dsp的外部sdram*/
emif_config(&emiffig)
4344/*sdram的emif設(shè)置例子:forc5509
*
*sdram的emif設(shè)置*/
main()
{
/*初始化csl庫*/
csl_init();
/*emif為全emif接口*/
chip_rset(xbsr,0x0a01);
/*設(shè)置系統(tǒng)的運(yùn)行速度為144mhz*/
pll_config(&myconfig);
/*初始化dsp的外部sdram*/
emif_config(&emiffig)
10.3.4flash測(cè)試程序測(cè)試程序功能:首先配置好emif,然后擦除整片flash。接著進(jìn)行寫操作,先在0x4202000開始的地址寫入1000個(gè)數(shù)據(jù),然后在0x4204000開始的地址寫入1000個(gè)數(shù)據(jù)。最后讀取兩塊數(shù)據(jù),驗(yàn)證數(shù)據(jù)是否正確,并對(duì)錯(cuò)誤的個(gè)數(shù)進(jìn)行計(jì)數(shù)。emif_config(&emiffig);//配置emifsuccess=flash_erase_all();//需要大約14s才能擦除完畢if(success==1)printf("flasherasesuccessfully!!\n");flash_write_init();//向flash中寫入數(shù)據(jù),有換頁操作for(ii=0;ii<1000;ii++) {flash_write(0x202000+ii,ii);}45for(ii=0;ii<1000;ii++) {flash_write(0x204000+ii,ii+1);//寫入的數(shù)據(jù)與上面略有不同}flash_write_end();for(ii=0;ii<1000;ii++)//讀取寫入flash中的數(shù)據(jù),并驗(yàn)證{if(flash_read(0x202000+ii)!=(ii
-1))error++;}for(ii=0;ii<1000;ii++) {if(flash_read(0x204000+ii)!=ii+1)error++;}if(error==0)printf("flashtestcompleted!noerror!");while(1);4610.3.5aic23b測(cè)試程序板上共有2片aic23b??刂平涌诓糠质褂胕2c總線,兩個(gè)芯片的地址分別為0x1a和0x1b;數(shù)字接口部分使用了兩個(gè)mcbsp接口:mcbsp和mcbsp1。測(cè)試程序功能:首先對(duì)aic23b進(jìn)行初始化,配置啟動(dòng)mcbsp0和mcbsp1,然后進(jìn)入一個(gè)循環(huán)。在循環(huán)中,等待數(shù)據(jù)接收,待接收完畢后將其存入一個(gè)數(shù)組,再將接收到的數(shù)據(jù)發(fā)送出去。
47aic23_init();//aic23b初始化,hmcbsp0=mcbsp_open(mcbsp_port0,mcbsp_open_reset);//打開mcbsp0hmcbsp1=mcbsp_open(mcbsp_port1,mcbsp_open_reset);//打開mcbsp1mcbsp_config(hmcbsp0,&mcbspconfig);//配置mcbsp0mcbsp_config(hmcbsp1,&mcbspconfig);//配置mcbsp1mcbsp_start(hmcbsp0,mcbsp_rcv_start|mcbsp_xmit_start,0x3000);//開啟mcbsp0發(fā)送和接收mcbsp_start(hmcbsp1,
mcbsp_rcv_start|mcbsp_xmit_start,0x3000);//開啟mcbsp1發(fā)送和接收48//aic23_init()定義見實(shí)驗(yàn)lab0701,lab0702的aic23.c程序用結(jié)構(gòu)體mcbspconfigaic23_init();//aic23b初始化,voidaic23_init(){i2c_init();//resettheaic23andturnonallpoweraic23_write(aic23_reset_reg,0);aic23_write(aic23_power_down_ctl,0);aic23_write(aic23_analog_audio_ctl,anapctl_dac|anapctl_insel);//使用麥克風(fēng)音源aic23_write(aic23_digital_audio_ctl,0);
//turnonvolumeforlineinputsaic23_write(aic23_lt_line_ctl,0x000);aic23_write(aic23_rt_line_ctl,0x000);//configuretheaic23formastermode,44.1khzstereo,16bitsamples//use12mhzusbclockaic23_write(aic23_digital_if_format,digif_fmt_ms|digif_fmt_iwl_16|digif_fmt_for_dsp);aic23_write(aic23_sample_rate_ctl,src_sr_44|src_bosr|src_mo);//turnonheadphonevolumeanddigitalinterfaceaic23_write(aic23_lt_hp_ctl,0x07f);//0x79forspeakersaic23_write(aic23_rt_hp_ctl,0x07f);aic23_write(aic23_dig_if_activate,digifact_act);//setmcbsp0tobetransmitslavemcbsp0_initslave();}49//實(shí)驗(yàn)lab0701的aic23_init()定義mcbsp_config(hmcbsp0,&mcbspconfig);//配置mcbsp0mcbsp_config
mcbspconfig={mcbsp_spcr1_rmk(mcbsp_spcr1_dlb_off,/*dlb=0,禁止自閉環(huán)方式*/mcbsp_spcr1_rjust_rzf,/*rjust=0*/mcbsp_spcr1_clkstp_disable,/*clkstp=0*/mcbsp_spcr1_dxena_off,/*dxena=1*/mcbsp_spcr1_abis_disable,/*abis=0*/mcbsp_spcr1_rintm_rrdy,/*rintm=0*/0,/*rsyncer=0*/mcbsp_spcr1_rrst_disable/*rrst=0*/),mcbsp_spcr2_rmk(mcbsp_spcr2_free_no,/*free=0*/mcbsp_spcr2_soft_no,/*soft=0*/mcbsp_spcr2_frst_reset,/*frst=0*/mcbsp_spcr2_grst_reset,/*grst=0*/mcbsp_spcr2_xintm_xrdy,/*xintm=0*/0,/*xsyncer=n/a*/mcbsp_spcr2_xrst_disable/*xrst=0*/),/*雙數(shù)據(jù)相,接受數(shù)據(jù)長(zhǎng)度為32位,每相2個(gè)數(shù)據(jù)*/mcbsp_rcr1_rmk(mcbsp_rcr1_rfrlen1_of(0),/*rfrlen1=1*/mcbsp_rcr1_rwdlen1_32bit/*rwdlen1=5*/),mcbsp_rcr2_rmk(mcbsp_rcr2_rphase_single,/*rphase=0*/mcbsp_rcr2_rfrlen2_of(0),/*rfrlen2=0*/mcbsp_rcr2_rwdlen2_8bit,/*rwdlen2=0*/mcbsp_rcr2_rcompand_msb,/*rcompand=0*/mcbsp_rcr2_rfig_yes,/*rfig=0*/mcbsp_rcr2_rdatdly_1bit/*rdatdly=0*/),mcbsp_xcr1_rmk(mcbsp_xcr1_xfrlen1_of(0),/*xfrlen1=1*/mcbsp_xcr1_xwdlen1_32bit/*xwdlen1=5*/
),mcbsp_xcr2_rmk(mcbsp_xcr2_xphase_single,/*xphase=0*/mcbsp_xcr2_xfrlen2_of(0),/*xfrlen2=0*/mcbsp_xcr2_xwdlen2_8bit,/*xwdlen2=0*/mcbsp_xcr2_xcompand_msb,/*xcompand=0*/mcbsp_xcr2_xfig_yes,/*xfig=0*/mcbsp_xcr2_xdatdly_0bit/*xdatdly=1*/),mcbsp_srgr1_default,mcbsp_srgr2_default,mcbsp_mcr1_default,mcbsp_mcr2_default,mcbsp_pcr_rmk(mcbsp_pcr_idleen_reset,/*idleen=0*/mcbsp_pcr_xioen_sp,/*xioen=0*/mcbsp_pcr_rioen_sp,/*rioen=0*/mcbsp_pcr_fsxm_external,/*fsxm=0*/mcbsp_pcr_fsrm_external,/*fsrm=0*/0,/*dxstat=n/a*/mcbsp_pcr_clkxm_input,/*clkxm=0*/mcbsp_pcr_clkrm_input,/*clkrm=0*/mcbsp_pcr_sclkme_no,/*sclkme=0*/mcbsp_pcr_fsxp_activehigh,/*fsxp=0*/mcbsp_pcr_fsrp_activelow,/*fsrp=0*/mcbsp_pcr_clkxp_falling,/*clkxp=1*/mcbsp_pcr_clkrp_rising /*clkrp=0*/),mcbsp_rcera_default,mcbsp_rcerb_default,mcbsp_rcerc_default,mcbsp_rcerd_default,mcbsp_rcere_default,mcbsp_rcerf_default,mcbsp_rcerg_default,mcbsp_rcerh_default,mcbsp_xcera_default,mcbsp_xcerb_default,mcbsp_xcerc_default,mcbsp_xcerd_default,mcbsp_xcere_default,mcbsp_xcerf_default,mcbsp_xcerg_default,mcbsp_xcerh_default};50while(1){for(i=0;i<length;i++){while(!mcbsp_rrdy(hmcbsp0)){};//判斷是否有數(shù)據(jù)收到,若無則等待
aic23data=mcbsp_read32(hmcbsp0);//接收數(shù)據(jù)
aic0r[i]=(unsignedint)aic23data&0xffff;//aic23b0右聲道數(shù)據(jù)
aic0l[i]=(unsignedint)(aic23data>>16)&0xffff;//aic23b1左聲道數(shù)據(jù)
while(!mcbsp_xrdy(hmcbsp0)){};//判斷是否準(zhǔn)備好發(fā)送,若無則等待
mcbsp_write32(hmcbsp0,aic23data);//發(fā)送數(shù)據(jù)
while(!mcbsp_rrdy(hmcbsp1)){};//判斷是否有數(shù)據(jù)收到,若無則等待
aic23data=mcbsp_read32(hmcbsp1);//接收數(shù)據(jù)
aic1r[i]=(unsignedint)aic23data&0xffff;//aic23b1右聲道數(shù)據(jù)
aic1l[i]=(unsignedint)(aic23data>>16)&0xffff;//aic23b1左聲道數(shù)據(jù)
while(!mcbsp_xrdy(hmcbsp1)){};//判斷是否準(zhǔn)備好發(fā)送,若沒有則等待
mcbsp_write32(hmcbsp1,aic23data);//發(fā)送數(shù)據(jù)
}}51第10章c55x典型應(yīng)用系統(tǒng)設(shè)計(jì)10.1典型dsp板的硬件設(shè)計(jì)10.2cpld電路模塊設(shè)計(jì)10.3dsp板測(cè)試程序10.4綜合設(shè)計(jì)實(shí)例1:自適應(yīng)系統(tǒng)辨識(shí)10.5綜合設(shè)計(jì)實(shí)例2:數(shù)字式有源抗噪聲耳罩5210.4綜合設(shè)計(jì)實(shí)例1:自適應(yīng)系統(tǒng)辨識(shí)10.4.1基于lms算法的自適應(yīng)濾波器5310.4.2自適應(yīng)系統(tǒng)辨識(shí)算法
算法收斂后,n為辨識(shí)長(zhǎng)度
:5410.4.3辨識(shí)系統(tǒng)硬件設(shè)計(jì)
5510.4.4辨識(shí)系統(tǒng)軟件設(shè)計(jì)
1.主程序
56#include"5509.h"http://5509片上資源聲明#include"util.h"#include"math.h"intn_iden,n_iden;//聲明辨識(shí)計(jì)數(shù)器和辨識(shí)時(shí)間長(zhǎng)度intl;//聲明濾波器階數(shù)inttimer_flag;//聲明定時(shí)器狀態(tài)標(biāo)志位floatfs,ts;//聲明采樣頻率與采樣時(shí)間floatmu;//聲明收斂因子float*w;//聲明自適應(yīng)濾波器系數(shù)指針float*x;//聲明自適應(yīng)濾波器參考輸入向量指針floatdesizedsignal;//聲明期望信號(hào)floaterrorsignal;//聲明誤差信號(hào)intwhitenoise;//聲明白噪聲信號(hào)57voidpll_init();//聲明鎖相環(huán)配置函數(shù)voidwait(uns
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防四會(huì)一落實(shí)培訓(xùn)課件
- 六下《欣賞與設(shè)計(jì)》教學(xué)設(shè)計(jì)
- 出版物管理基本制度
- 公司經(jīng)營(yíng)分析會(huì)議制度
- 公司技術(shù)質(zhì)量、科技成果管理及獎(jiǎng)罰制度
- 公司內(nèi)部考核及培訓(xùn)制度
- 2025-2030地基項(xiàng)目可行性研究報(bào)告
- 從檢驗(yàn)制度作用、制度檢驗(yàn)方法的角度闡述制度
- 生日快樂模板
- 2025-2030細(xì)胞治療產(chǎn)品質(zhì)量控制與再生醫(yī)學(xué)臨床應(yīng)用規(guī)范報(bào)告
- 密閉空間環(huán)氧樹脂防腐施工方案
- 工會(huì)委員會(huì)候選人推選實(shí)施方案
- 藥品生產(chǎn)成本核算流程
- 商業(yè)保理擔(dān)保合同范本
- 《文創(chuàng)產(chǎn)品設(shè)計(jì)》 課件 宗誠(chéng) 第1-3章 根于文化-關(guān)于文創(chuàng)產(chǎn)品- 奇思妙想-文化元素與創(chuàng)業(yè)思維
- 重大版小學(xué)英語六年級(jí)上冊(cè)期末試卷(含答案含聽力原文無聽力音頻)
- 《藥品包裝用卡紙折疊紙盒》(T-CNPPA 2005-2018)
- 2025年碲化鎘薄膜太陽能電池市場(chǎng)規(guī)模分析
- 內(nèi)蒙古呼和浩特市重點(diǎn)名校2025屆物理高三上期末統(tǒng)考試題含解析
- 籃球館硅PU施工合同
- GB/T 16288-2024塑料制品的標(biāo)志
評(píng)論
0/150
提交評(píng)論