DSP的發展趨勢及前景展望_第1頁
DSP的發展趨勢及前景展望_第2頁
DSP的發展趨勢及前景展望_第3頁
DSP的發展趨勢及前景展望_第4頁
DSP的發展趨勢及前景展望_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1DSP匯編語言程序的編寫(1)       匯編語言源程序以.asm為其擴展名。(2)       匯編語言源程序的每一行都可以由4個部分組成,句法如下: 標號 : 助記符 操作數 ;注釋其中可用空格或TAB鍵隔開標號供本程序的其他部分或其他程序調用。標號是任選項,標號后面可以加也可以不加冒號“:”。標號必須從第一列寫起,標號最多可達到32個字符(AZ ,az ,09 ,_ ,以及$),但第1個字符不能以數字開頭。引用標號時,標號的大小寫必須一致。標號的值就是SP

2、C(段程序計數器)的值。如果不用標號,則第一個字符必須為空格、分號或星號(*)。助記符助記符指令、匯編指令、宏指令和宏調用。作為助記符指令,一般用大寫;匯編命令和宏指令,以英文句號“.”開始,且為小寫。匯編命令可以形成常數和變量,當用它控制匯編和連接過程時,可以不占用存儲空間。指令和匯編命令都不能寫在第1列。操作數指令中的操作數或匯編命令中定義的內容。操作數之間必須用逗號“,”分開。有的指令操作無操作數,如NOP、RESET。注釋注釋從分號“;”開始,可以放在指令或匯編命令的后面,也可以放在單獨的一行或數行。注釋是任選項。如果注釋從第1列開始,也可以用“*”表示注釋。(3) 

3、0;     常用的匯編命令如表所示。匯編命令作用舉例.title緊隨其后的是匯編語言程序正文.title “example.asm”.end結束匯編命令放在匯編語言程序的最后.text緊隨其后的是匯編語言程序正文經匯編后,緊隨.text后的是可執行程序代碼.data緊隨其后的是已初始化數據有兩種數據形式:.int和.用來設置一個或多個16位無符號整型量常數.word.word 用來設置一個或多個16位符號整型量常數table: .word 1,2,3,4.word 6,8,4,2表示在程序存儲器標號為table開始的8個單元中存

4、放初始化數據1,2,3,4,6,8,4,2.bss.bss為未初始化變量保留存儲空間.bss x,4 表示在數據存儲器中空出4個存儲單元存放變量x1,x2,x3和x4.sect建立包含代碼和數據的自定義段.sect “vectors”定義向量表,緊隨其后的是復位向量和中斷向量,名為vectors.usect為未初始化變量保留存儲空間的自定義段STACK .usect “STACK”,10h 在數據存儲器中留出16個單元作為堆棧區,名為STACK (4)       匯編語言程序中的數據形式如表所示形式舉例二進制1110001

5、b或1111001B八進制226q或572Q十進制1234或1234或1234(缺省型)十六進制0A40h或0A40H或0xA40浮點數1.654e23(僅C語言程序中能用,匯編程序中不能用)字符D字符串“this is a string” 2             程序21 程序一編程目的:了解DSP的輸入和輸出方法程序功能:求乘積之和y=a1*x1+a2*x2+a3*x3+a4*x4.title"mpy_add.asm".mmregs;將存

6、儲映像寄存器導入列表STACK.usect"STACK",10h;給堆棧段分配空間.bssa,4;將9個字空間分配給各個變量.bssx,4.bssy,1PA0.set0;將端口PA0全部置0.defstart;定義標號start.data;定義數據代碼段table:.word4,4,4,4.word4,4,4,4.text ;定義文本代碼段start:STM#0,SWWSR;將等待寄存器設為0,表示不等待STM#STACK+10h,SP ;設堆棧指針STM#a,AR1 ;將AR1指向變量a的地址RPT #7;從程序存儲空間轉移71個值到數據儲存空間MVPDtable,*AR

7、1+CALLSUM;調用SUM子程序end:Bend ;循環等待SUM:STM#a,AR3;將AR3指向變量a的地址STM#x,AR4;將AR4指向變量x的地址RPTZA,#3;將A清0,并重復執行下一條指令31次MAC*AR3+,*AR4+,ASTL A,y;將寄存器A中的低16位存入y地址空間PORTWy,PA0;將y地址中的值輸出到輸出口RET;子程序返回.end;程序結束 等待位的設置:C54x片內有一部件軟件可編程等待狀態發生器,控制著外部總線的工作。軟件可編程等待狀態發生器可將外部總線周期延長多達7個周期,這樣一來,C54x就能很方便的與外部慢速器件相接口。如果外部器件要

8、求插入7個以上的等待周期,則可以利用硬件READY先來接口。當所有的外部尋址都配置在0等待狀態時,加到等待狀態發生器的時鐘被關斷;來自內部時鐘的這些通道被切斷后,可以降低處理器的功耗。軟件可編程等待狀態發生器的工作由16位的軟件等待狀態寄存器(SWWSR)的控制,它是存儲器映象寄存器,在數據空間的地址為0028h。將程序空間和數據空間都分成兩個32K 字塊,I/O空間由一個64K字塊組成。這5個字塊空間在SWWSR中都相應的有一個3位字段,用來定義各個空間插入等待狀態的數目: 151412119865320保留/XPA(僅C548,C549)I/O空間(64K)數據空間 (高32K)

9、數據空間 (低32位)程序空間 (高32位)程序空間 (低32位)RR/WR/WR/WR/WR/W上述SWWSR的各個3位字段規定的插入等待狀態的最小數為0(不插入等待周期),最大數為7(111b)。22程序二編程目的:熟悉DSP匯編程序設計技巧,完善輸出功能程序功能:實現一8位LED燈由左到右循環閃爍  .title"bubble.asm" .mmregs;將存儲映像寄存器導入列表STACK.usect"STACK",5h;給堆棧段分配空間.bssy,1 .defstart .dataPA0.set 0.textstart:STM#7000,

10、SWWSR;設等待位 STM #2,AR3;將輔助寄存器AR3設為2 (乘2,實現左移)STM#6,AR1;將輔助寄存器AR1設為6 (左移7次)STM#3,AR2;將輔助寄存器AR2設為3 (循環執行4次) LDAR3,T;將T(乘法寄存器)設為2loop1: LD#1,A ;A寄存器值為1STLA,y;y1PORTWy,PA0;輸出y地址內的值到輸出口 STM#10000,AR4;將輔助寄存器AR4設為10000loop3:RPT#10000;重復執行下一指令100001次NOP;等待 BANZloop3,*AR4-;循環AR4值100001次loop2:MPYy,A;將y×T,

11、其值存入A寄存器STLA,y;將A的值存入y地址中PORTWy,PA0;輸出y地址值到輸出口STM#10000,AR5;將輔助寄存器AR5設為10000loop4:RPT#10000;實現第8個燈跳轉到第1個燈時的時間延遲NOPBANZloop4,*AR5-BANZloop2,*AR1-BANZloop1,*AR2-end:Bend.end數據尋址方式:C54x共有7種數據尋址方式,如表所示:尋址方式用途舉例指令含義立即尋址主要用于初始化LD 10,A將立即數10傳送至累加器A絕對尋址利用16位地址尋址存儲單元STL A,*(y)將累加器A的低16位存放到變量y所在的存儲單元中累加器尋址把累加

12、器的內容作為地址READYA x按累加器A作為地址讀程序存儲器,并存入變量x所在的數據存儲器單元直接尋址利用數據頁指針和堆棧指針尋址LD x,A(DP+x的低7位地址)>A間接尋址利用輔助寄存器作為地址指針LD *AR1,A(AR1) >A存儲器映象寄存器尋址快速尋址存儲器映象寄存器LDM ST1,B(ST1)>B堆棧尋址壓入/彈出數據存儲器和MMR(存儲器映象寄存器)PSHM AG(SP)1>SP,(AG)>TOS C54x尋址存儲器有兩種基本的數據形式:16位數和32位數。大多數指令能夠尋址16位數,但是,只有雙精度和長字指令才能尋址32位數。在32

13、位尋址時,先處理高有效字,然后處理低有效字。如果尋址的第1個字處在偶地址,那么第2 個字就處在下一個(較高的)地址;如果第1個字處在奇地址,那么第2個字就處在前一個(較低的)地址。 循環操作:BANZ在程序設計時,經常需要重復執行某一段程序。利用BANZ(當輔助寄存器部位0時轉移)指令執行循環技術和操作是十分方便的。如果要重復執行n次,則重復指令中應規定計數值為n1次。 重復操作:C54x有3條重復操作指令:RPT(重復下條指令)、RPTZ(累加器清0并重復下條指令)以及RPTB(塊重復指令)。重復指令RPT或 RPTZ允許重復執行緊隨其后的那一條指令。如果要重復執行n次,

14、則重復指令中應規定計數值為n1次。 23 程序三編程目的:實現DSP分時輸入與輸出功能程序功能:先從一個I/O口讀入一數據并將其存入某地址,再從該地址將數據輸出到另一個I/O口  .title "dspio.asm" .mmregsPA0.set0 PA1.set1STACK.usect"STACK",10h .bssy,1 .textstart:PORTRPA1,y ;從I/O口讀入數據并儲存到y所在的地址 LDy,A ;將y中的數據寫入累加器A中(便于觀察y中數值的變化情況) PORTWy,PA0 ;將y所在地址中的數據輸出到I/

15、O口end:Bend.end  2.4 程序四編程目的:實現DSP循環輸入與輸出功能程序功能:令DSP反復執行從輸入裝置讀取數據,并將數據存入某一地址,再從該地址將數據輸出到輸出設備  .title "dspio2.asm" .mmregsPA0.set0 PA1.set1STACK.usect"STACK",10h .bssy,1 .textstart:STM#4000,AR1;AR1作循環計數器LOOP1:PORTRPA1,y ;循環讀寫LDy,APORTWy,PA0 BANZLOOP1,*AR1end:Bend.end 

16、;2.5 程序五編程目的:應用DSP實現對壓水堆大破口事故(LOCA)進行事故后果判斷編程背景:當始發事件大LOCA發生時,需要下列功能響應以消除或緩解事故:(1)       停堆(RS),中止核裂變過程;(2)       安全殼噴淋系統動作,以降低安全殼壓力(COI);(3)       向堆芯注入應急冷卻水(ECI),以冷卻堆芯;(4)      

17、安全殼再循環冷卻(COR),由循環噴淋水導出安全殼內熱量,控制安全殼的溫度核壓力;(5)       堆芯再循環冷卻(ECR),進行堆芯再循環冷卻階段。 功能事件樹圖如下圖所示 破口 PB堆次臨界RS安全殼降壓COI堆芯應急冷卻ECI完全殼降壓COR堆芯再循環冷卻ECR序列號堆芯是否熔化 程序功能:反復從輸入口讀取數據(不同位分別代表執行不同的功能響應),經DSP處理后將判斷結果輸出到輸出口,通過指示燈(不同的燈代表不同事故結果)顯示出來  .title "LOCA.asm" .mmr

18、egsPA0.set0 PA1.set1STACK.usect"STACK",10h .bssy,1 .bssx,1 .defstart .datatable:.word0,128,0,128,0,32,0,32,0,128,0 ;事故分析列表 .word128,0,32,0,32,0,0,0,0,0 .word4,0,4,0,0,0,0,0,4,0 .word4,0,0,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word0,0,2,0,2,0,0,0,0,0 .word2,0,2,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word16,0,16,0,0,0,0,0,16,0 .word16,0,0,0,0,0,1,0,1,0 .word0,0,0,0,1,0,1,0,0,0 .wo

溫馨提示

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

評論

0/150

提交評論