亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ti c54xx dsp 十天速成講義 六 七八.txt

?? DSP十天速成講義
?? TXT
字號:
TI C54xx DSP 十天速成講義 <六> <七><八>TI C54xx DSP 十天速成講義 <六>  

實驗六 DMA實驗
實驗目的:學習DMA的原理的使用方法
實驗內容:用DMA方法接收McBSP接口語音芯片的數據



DMA是直接存儲器存取,是一種傳送不占用CPU處理時間的大批量數據傳送的有效方式。我們用以下實例來說明它的應用:



如果我們要做一個音頻處理系統,需要連續用McBSP接口的語音芯片采集若干個樣本進行處理,比如頻譜分析、音頻壓縮等。本例假設要每采集256個樣本進行一次處理。上例用的是查詢方式,占用了所有CPU資源。可以用中斷方式,結合前面的實驗不難做到,請同學們自行完成。在這個實驗中我們將介紹一個更有效的DMA傳送方式。我們比較一下用中斷方式和DMA方式的效率有何不同:
一、中斷方式:每當中緩沖串口接收一個16bit樣本的數據,觸發一次串口接收中斷,將數據轉移到一個256 
word的數據接收緩沖區并計數。當計數達到256個,即緩沖區滿時,將256個數據轉移到數據處理存儲區,并通知主程序進行處理。



二、DMA方式:我們使用一個通道自動接收McBSP傳來的數據并存入接收緩沖區,當緩沖區滿時觸發DMA中斷,將256個數據傳送到數據處理存儲區,傳送完畢觸發通知主程序進行處理。



由上比較可見,每接收一批樣本,用中斷方式將觸發256次中斷,也就是主程被打斷256次去接收數據。而用DMA方式,只在全部256個樣本全部接收完畢時發生一次中斷,這時主程序應該已經處理完上一批的數據。
進一步考慮,當數據處理完畢后還需要將數據送走,這時又可以采用另一個DMA通道完成這個任務,將CPU釋放出來等待進行下一批樣本的處理。



事實上DMA傳送并非比用CPU直接處理快,例如在內部存貯器之間傳送時,用CPU需要2cycle/word,而用DMA要4cycle/word。DMA的優勢在是把CPU解放出來做其它的事。
以下是兩個DMA通道與CPU協調工作的情況(陰影部分表示空閑)。
DMA0①①①
CPU②③ ②③ ②
DMA1 ④ ④ 
          



①從McBSP接收數據
②DMA中斷,將數據從接收緩沖區轉移到數據處理存儲區
③對對數據進行處理
④將處理完的數據送走
估計一下各步的時間,設采樣頻率是8kHz,CPU時鐘頻率100MHz。因此一個處理周期為1/8kHz*256=32ms。
②傳送256個點至少需要256word*2cycle/word=512cycle=5.12us。
假設處理完后數據量不變,④需要256word*4cycle/word=1024 cycle=10.24us。
③所需要的時鐘周期取決于算法的復雜度了。



計算好各步所需要的時鐘周期,就可以根據情況靈活選擇如何使用DMA,例如如果CPU有足夠的空閑時間送走數據就不必要④;如果CPU仍然不足,就需要再增加個一個DMA來做②的任務。如果數據的輸出也是從McBSP輸出,還要用一個DMA通道進行McBSP的發送。
總之要合適地使用DMA通道,使用不當也會使程序變得更加復雜,例如多個DMA通道優先級的問題等等。



C54x系列有6個DMA通道,但不同型號C54x系列DSP 
DMA通道的使用不全相同,如C5402只能將DMA通道用于內部數據存貯器之間傳送、McBSP和HPI接口,而C5410可用于內部、外部數據、程序存貯器之間傳送。詳細介紹請參閱SPRU302 
TMS320C54x DSP Reference Set, Volume 5: Enhanced 
Peripherals和各DSP的數據手冊。 









TI C54xx DSP 十天速成講義 <七>  

實驗7.1 FIR
;=============================================================
; fir4.asm
;用用循環緩沖區和雙操作數尋址方法實現FIR濾波器
;先用matlab,選擇80點漢明窗設計一個截止頻率為0.2π的低通濾波器
; 本例與前不同的是系數直接引用程序存儲器的系數表
;N=5 y(n)=h0*x(n)+h1*x(n-1)+h2*x(n-2)+h3*x(n-3)+h4*x(n-4)
;=============================================================
.title "fir4.asm"
.mmregs 
.def start
;分配數據存儲區
.bss y,1 ;y
xn .usect "xn",80 ;xn
h .usect "h",80 ;h
PA0 .set 0000H ;數據輸出端口
PA1 .set 0001H ;數據輸入端口
;參數表
.data
table: .word -7,-18,-24,-22,-9,11,33,48 
;已在Matlab中轉成十六進制的小數
.word 46,20,-24,-73,-104,-97,-43,49
.word 146,204,187,81,-91,-268,-371,-337
.word -144,162,476,661,603,261,-297,-894
.word -1283,-1222,-562,697,2373,4142,5618,6456
.word 6456,5618,4142,2373,697,-562,-1222,-1283
.word -894,-297,261,603,661,476,162,-144
.word -337,-371,-268,-91,81,187,204,146
.word 49,-43,-97,-104,-73,-24,20,46
.word 48,33,11,-9,-22,-24,-18,-7



start: SSBX FRCT ;小數乘法
;把參數表復制到數據存儲區
STM #h,AR1 
RPT #79
MVPD #table,*AR1+
;把x(n)-x(n-79)賦始值0
STM #xn,AR1
RPT #79
ST #0,*AR1+



STM #xn+79,AR3 ;x(n-79)---AR3
STM #h+79,AR4 ;h(n-79)---AR4
STM #80,BK ;循環緩沖區大小80 
STM #-1,AR0 ;指針調整值-1
LD #xn,DP ;DP指向xn所在頁
PORTR PA1,@xn ;輸入數據
LD #y,DP ;DP指向y所在頁
FIR: RPTZ A,#79 ;進行一次FIR運算
MAC *AR3+0%,*AR4+0%,A;A=(AR3)*(AR4)+A, 
AR3=AR3+AR0,AR4=AR4+AR0 
STH A,@y ;保存計算結果
PORTW @y,PA0 ;輸出結果
BD FIR ;讀入下一個數據并進行下一次計算
PORTR PA1,*AR3+0% ;新數據覆蓋了最舊的數據
.end 






實驗7.2 IIR
.mmregs
.global codestart 
K_DATA_SIZE .set 256 ;輸入數據個數
K_BUFFER_SIZE .set 8 ;緩沖大小,需是2的整數次冪,并大于a、b的個數
K_STACK_SIZE .set 256 ;堆棧大小
K_A .set 3 ;a向量個數
K_B .set 4 ;b向量的個數
K_CIR .set 4 ;>=a、b的長度,也可以設為K_BUFFER_SIZE-1 



STACK .usect "stack",K_STACK_SIZE
SYSTEM_STACK .set K_STACK_SIZE+STACK



.data
DATA_DP: 
.align K_BUFFER_SIZE
bufferdatax: .space K_BUFFER_SIZE*16 ;size in bits
bufferdatay: .space K_BUFFER_SIZE*16 ;size in bits 
inputdata: .word 0
filterdata: .word 0 



.text
.asg AR2, ORIGIN
.asg AR3, INPUT
.asg AR4, FILTER
.asg AR5, OUTPUT




codestart:
SSBX FRCT
SSBX INTM
LD #DATA_DP,DP
STM #SYSTEM_STACK, SP
CALL filter_start
NOP
NOP
NOP



LOOP:
B LOOP



.def b0,b1,b2,b3,a1,a2,a3;
.def filter_start
b0 .set 1456H ;b1=0.1589 *2^15
b1 .set 3D07H ;b2=0.4768
b2 .set 3D07H ;b3=0.4768
b3 .set 1456H ;b4=0.1589
a1 .set -103AH ;a1=-0.1268
a2 .set 430FH ;a2=0.5239
a3 .set -1016H ;a3=-0.1257



;=================================================================
;濾波子程序:filter_start
;================================================================= 
.text
filter_start: 
STM #K_CIR,BK ;設置環形buffer的大小
STM #1,AR0 ;和步長
STM #inputdata,ORIGIN ;AR2
STM #bufferdatax,INPUT ;AR3
STM #bufferdatay,FILTER ;AR4
STM #filterdata,OUTPUT ;AR5
;初始化 
RPT #K_B-1-1 ;
ST #0,*INPUT+0% ;x(-1)、x(-2)、x(-3)設為0
RPT #K_A-1
ST 0,*FILTER+% ;y(-1)、y(-2)、y(-3)設為0
STM #bufferdatay,FILTER



STM #K_DATA_SIZE-1,BRC ;塊循環次數,頭三個值已經直接通過了
RPTB filter_end-1 ;塊循環結束位置
;可以把塊循環改成中斷調用,有新數據就中斷一次。 
nop ;數據從件導入點,加nop保證數據在使用前導入
nop
MVDD *ORIGIN,*INPUT ;新數據
MAR *+INPUT(-K_B+1)%
MPY *INPUT+0%,#b3,B ;B=x(n-3)*b3, i=i+1
LD B,A
MPY *INPUT+0%,#b2,B ;B=x(n-2)*b2, i=i+1
ADD B,A
MPY *INPUT+0%,#b1,B ;B=x(n-1)*b1, i=i+1 



ADD B,A
MPY *INPUT+0%,#b0,B ;B=x(n)*b0, i=i+1 



ADD B,A
MPY *FILTER+0%,#a3,B ;B=y(n-3)*a3, j=j+1 j=n-3為y的指針 



ADD B,A
MPY *FILTER+0%,#a2,B ;B=y(n-2)*a2, j=j+1 



ADD B,A
MPY *FILTER+0%,#a1,B ;B=y(n-1)*a1, j=j+1 



ADD B,A 
STH A,*FILTER ;傳送y(n)至y區, ;16位小數相乘得到的是32位小數
STH A,*OUTPUT ;傳送y(n)至結果區 ;取前16位就行了
MAR *+FILTER(-K_A+1)%
nop
nop ;數據文件導出點,加nop保證數據在導出前已更新
filter_end: NOP ;循環結束
RET
.end 






TI C54xx DSP 十天速成講義 <八>  
實驗八 程序加載
C5000 DSP沒有內部提供掉電保存程序的ROM/EPROM/Flash,上電時需要從外部加載應用程序。C5000 
DSP提供了多種程序加載方式,滿足不同應用的需要:串行加載、并行加載、HPI加載等,實際應用最多的是并行加載,本實驗主要介紹8位并行存貯器加載。
加載過程:DSP上電時,如果MP/MC引腳為低電平,則跳轉到內部ROM的FF80中斷向量表的Reset中斷,該處有一個跳轉指令轉到稱為Bootloader的加載程序執行,該程序的功能是按照一定順序查找可用的加載方式,如果找到,則開始加載應用程序,加載完畢轉向應用程序執行。
實現并行存貯器加載的關鍵是建立一個加載表(boot 
table),該表包括:一個或多個程序代碼段、部分需要初始化的寄存器值、程序入口等信息。CCS附帶有一個應用程序(C5000系列是hex500.exx)可以把.out程序轉成.hex格式的加載表,然后可以燒錄到非易失性存貯器中,如OTP/EPPOM/EEPROM/Flash中。
具體步驟:
1.修改項目的編譯選頂,使其生成可以轉化成加載表的.out文件格式
2.為hex500.exe建立一個配置文件
3.用hex500.exe把*.out轉化成加載表*.hex
4.在.hex未尾加上加載表起始地址
5.燒錄到非易失性存貯器中
6.安到目標板上進行加載實驗



各步驟詳述如下:
1.修改項目的編譯選頂,使其生成可以轉化成加載表的.out文件格式
在Project/Build Option…/Complier 里面加一個選項:-v548,或在Basic/Process 
verson一欄中填寫:548,然后點確定。
注意:如果不加這個選項,用hex500程序轉化出來的hex文件無法加載。
2.為hex500.exe建立一個配置文件
這個配置文件包含了hex500程序執行所需要的選頂,下面是一個樣板配置文件hex.cmd:
sample.out /* 待轉化的程序文件*/
-map hex.map /* 生成一個map文件便于查看轉化結果*/
-o hex.hex /* 輸出文件名*/
-i /* 輸出文件為Intel Hex 文件格式 */
-memwidth 8 /* 目標系統的存貯器為8位*/
-romwidth 8 /* 存貯器芯片的位寬為8位*/
-boot /* 生成加載表*/
-bootorg 0000h /* 加載表在存貯芯片中的起始位置*/
-e 80h /* 程序入口,即加載完畢后跳轉執行程序位置 */



初學者容易弄錯的是memwidth、romwidth和bootorg這三個選項。不同存貯器配置下設置不同,并且要注意的是上文注釋的(包括TI資料中的解釋)是程序脫機燒寫的設置,而在系統燒錄(EEPROM、Flash、NVSRAM可以支持)與脫機燒寫又會有所不同。
脫機燒寫指的是將存貯芯片放置在編程器里燒寫,優點是直接可以利用hex500轉化出來的hex文件,缺點是普通編程器無法燒寫貼片封裝的芯片。
在系統燒寫相對靈活,但對不同系統,不同芯片需要編寫專用的燒錄程序,并且需要將hex文件進一步進行格式轉換成燒錄程序可以識別的程序。
不同情況設置方法如下表:
存貯器配置方案脫機燒寫在系統燒寫
8位存貯器-memwidth 8
-romwidth 8
16位存貯器-memwidth 16
-romwidth 16
兩片8位貯器并行組成16位存貯器-memwidth 16
-romwidth 8-memwidth 16
-romwidth 16
bootorg芯片中的起始地址系統中的起始地址



3.用hex500.exe把*.out轉化成加載表*.hex
在dos窗口下執行:hex500 hex.cmd
如果hex500.exe與hex.cmd以及待轉化的程序文件不在同一目錄下,需加上路徑或設置path環境變量。



4.在FFFFH加上加載表起始地址
當開始并行加載時,Bootloader程序會在外部程序空間的FFFFH(如果是8位系統,同時也會查FFFEH)尋找加載表的地址,如果熟悉hex文件格式可以直接在hex文件末尾加一條紀錄,也可以燒錄器軟件中加。



應用實例:
本實驗箱是用于程序加載的是8位EPROM或EEPROM,可以用脫機方式,如用EEPROM也可以用在系統方式。Hex500程序的配置文件如前hex.cmd文件,只需要把第一行的sample.out換成實際的程序名稱。EPROM/EEPROM在程序空間的地址為8000H,并且由于是8位系統,則要在FFFEH和FFFFH的值分別設為80H、00H。可以在生成的.hex文件倒數第二行加上:
:027FFE00800001
也可以在燒錄器軟件中修改FFFEH-FFFFH處的值,然后就可以燒寫了。
燒寫好后,將芯片安置在IC座中,確認MP/MC跳線置為低電平,INT3、INT2的跳線置于懸空后,打開電源,就可以看到程序運行的狀況。 


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男同性恋视频网站| 成人免费视频视频| 日韩欧美一卡二卡| 国产在线观看一区二区| 久久久精品人体av艺术| 成人黄色片在线观看| 亚洲美女屁股眼交3| 欧洲精品一区二区三区在线观看| 亚洲午夜视频在线观看| 日韩视频中午一区| 国产乱一区二区| 18涩涩午夜精品.www| 欧美三级电影一区| 国产在线乱码一区二区三区| 日本一区二区成人| 欧洲精品视频在线观看| 日韩va欧美va亚洲va久久| 日本一区二区三区高清不卡| 91免费观看国产| 麻豆高清免费国产一区| 国产精品三级电影| 91麻豆精品国产91久久久久久久久| 久久99久久99| 亚洲精品写真福利| 久久久久久一二三区| 91免费在线看| 韩国女主播一区二区三区| 一区二区三区影院| 久久色中文字幕| 欧洲中文字幕精品| 粉嫩一区二区三区在线看| 亚洲成av人片| 日韩美女视频一区| 日韩三级在线观看| 欧美亚洲丝袜传媒另类| 国产成人综合在线观看| 亚洲国产精品视频| 亚洲欧洲另类国产综合| 久久一区二区视频| 欧美美女网站色| av午夜精品一区二区三区| 免费成人你懂的| 亚洲欧美日韩国产中文在线| 久久久久久麻豆| 51精品久久久久久久蜜臀| 色综合色综合色综合色综合色综合 | 国产精品久久久久久久蜜臀 | 91在线视频官网| 久久精品二区亚洲w码| 亚洲精品国产精品乱码不99| 久久色在线观看| 日韩精品一区二区三区在线观看| 97久久超碰国产精品| 国产一二精品视频| 麻豆专区一区二区三区四区五区| 亚洲一线二线三线久久久| 国产精品久久三| 久久精品日产第一区二区三区高清版| 制服.丝袜.亚洲.中文.综合| 欧美中文一区二区三区| 色婷婷香蕉在线一区二区| jlzzjlzz国产精品久久| 国产高清视频一区| 国产成人亚洲精品青草天美| 久久精品国产亚洲一区二区三区| 亚洲高清在线视频| 亚洲成人免费影院| 亚洲成人免费视频| 首页综合国产亚洲丝袜| 日韩高清欧美激情| 日本va欧美va瓶| 国产精华液一区二区三区| 欧美a级理论片| 麻豆专区一区二区三区四区五区| 奇米四色…亚洲| 九九精品视频在线看| 国产一区二区精品在线观看| 国产夫妻精品视频| 成人免费视频播放| 色丁香久综合在线久综合在线观看| 91视频91自| 欧美区在线观看| 日韩一区二区在线观看视频 | 欧美日韩激情在线| 欧美福利视频导航| 91精品午夜视频| 欧美成人aa大片| 精品99一区二区| 久久久久国产免费免费| 国产精品国产三级国产aⅴ中文 | 日韩精品一区二区三区四区 | 99久久国产综合精品女不卡| 一本色道**综合亚洲精品蜜桃冫| 91香蕉视频mp4| 欧美影院午夜播放| 日韩欧美亚洲一区二区| 欧美精品一区二区三区高清aⅴ| 久久亚洲综合色一区二区三区| 久久久久国色av免费看影院| 《视频一区视频二区| 午夜视频一区二区三区| 麻豆免费看一区二区三区| 国产馆精品极品| 日本久久一区二区三区| 日韩毛片视频在线看| 午夜久久久久久| 国产精一区二区三区| 色综合久久久久综合| 日韩亚洲国产中文字幕欧美| 国产视频一区不卡| 一个色在线综合| 国产精品18久久久久久久久| 一本色道久久综合狠狠躁的推荐| 日韩午夜三级在线| 亚洲欧美日韩精品久久久久| 日韩精品国产欧美| 99久久精品国产麻豆演员表| 在线不卡的av| 中文字幕一区二区日韩精品绯色| 日产国产欧美视频一区精品| 丁香六月综合激情| 91精品国产综合久久国产大片| 中文在线资源观看网站视频免费不卡| 一区二区在线观看免费视频播放| 蜜乳av一区二区| 色综合咪咪久久| 国产亚洲精品bt天堂精选| 亚洲国产视频一区| 成人国产亚洲欧美成人综合网| 欧美一二三区精品| 亚洲最大的成人av| 丁香天五香天堂综合| 日韩一区二区三区三四区视频在线观看| 国产精品日日摸夜夜摸av| 蜜桃视频在线一区| 欧美亚洲国产bt| 国产精品久久久久毛片软件| 精品一区二区影视| 正在播放亚洲一区| 午夜久久久影院| 色婷婷av一区| 亚洲日本va午夜在线影院| 国产一区美女在线| 日韩一区二区影院| 视频一区二区欧美| 欧美色爱综合网| 一区二区三区免费网站| 成人丝袜高跟foot| 国产视频一区在线观看 | 亚洲伊人伊色伊影伊综合网| 成年人午夜久久久| 欧美国产日本视频| 成人激情小说乱人伦| 久久久99精品免费观看| 裸体在线国模精品偷拍| 欧美一区日本一区韩国一区| 亚洲成av人片在www色猫咪| 欧美在线播放高清精品| 一区二区三区在线影院| 99re成人精品视频| 中文字幕亚洲区| 91原创在线视频| 亚洲日穴在线视频| 91福利在线观看| 亚洲成a人在线观看| 717成人午夜免费福利电影| 热久久国产精品| 欧美一级日韩免费不卡| 精品一区二区在线免费观看| 久久久久久久av麻豆果冻| 国产精品系列在线观看| 欧美国产视频在线| 91麻豆精品一区二区三区| 亚洲五码中文字幕| 91精品国产91久久久久久最新毛片 | 中文字幕亚洲综合久久菠萝蜜| 99麻豆久久久国产精品免费优播| 中文字幕色av一区二区三区| 92精品国产成人观看免费| 亚洲综合免费观看高清完整版| 欧美日韩一区在线观看| 久久精品国产色蜜蜜麻豆| 久久精品在线观看| 97精品电影院| 三级精品在线观看| 久久天天做天天爱综合色| 成人av网站免费| 国产福利精品一区二区| 亚洲色图在线视频| 欧美另类z0zxhd电影| 激情偷乱视频一区二区三区| 国产色产综合产在线视频| 一本久久a久久免费精品不卡| 又紧又大又爽精品一区二区| 欧美一区二区三区在线视频| 国产不卡视频在线观看| 亚洲精品大片www| 亚洲精品一区二区三区福利| 成人av在线播放网址| 日韩国产高清在线|