尋址方式與指令系統(tǒng)_第1頁
尋址方式與指令系統(tǒng)_第2頁
尋址方式與指令系統(tǒng)_第3頁
尋址方式與指令系統(tǒng)_第4頁
尋址方式與指令系統(tǒng)_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、尋址方式與指令系統(tǒng) DSP控制器原理及其應用 尋址方式與指令系統(tǒng) 尋址方式 立即尋址直接尋址間接尋址后兩種為存儲器尋址方式,即指令的操作數(shù)是在數(shù)據(jù)存儲器中 立即尋址操作數(shù)直接出現(xiàn)在指令代碼中 如:123、0ABCDH、#00110B1.短立即數(shù)尋址 (單字指令 ) 指令指令代碼中用一個8-bit、9-bit或13-bit的常數(shù)作為操作數(shù)例如,采用短立即尋址的RPT指令 8Bit RPT #63H ;63H=99 將緊跟其后的指令重復執(zhí)行100次指令代碼如下: 2長立即數(shù)尋址 (雙指令字 )例如,ADD指令 ADD #000AH,2 ;將立即數(shù)000AH左移2位后與累加器內容相加結果存累加器中

2、指令代碼如下:直接尋址方式64K分為512頁128字,由DP確定頁碼,對同一頁操作數(shù)(DP同),可減少指令的代碼字數(shù)。指令中給出7位的頁內偏移地址dma7-bit dma作為偏移地址與數(shù)據(jù)頁指針(DP)相結合共同形成16-bit的數(shù)據(jù)存儲器實際地址: 9位DP內容 7位頁內偏移地址dmadma與9-bit的DP相結合形成數(shù)據(jù)存儲器地址。以DP為基準的直接尋址DP9-bit9-bit的DP指向數(shù)據(jù)存儲空間的512個數(shù)據(jù)頁中的一頁012510511; 比如,直接尋址訪問7009H單元,7009H =0111 0000 0000 1001B LDP #0E0H ;DP指向E0H數(shù)據(jù)頁,地址為7000

3、H707FH ADD 9H,5 ;ADD指令代碼及地址形成過程:如果執(zhí)行前:(7009H)0001H(ACC)執(zhí)行后: (7009) 0001H (ACC)21H ?例如,XY.bssx,1 ;定義1個字的變量X.bssy,1.textLDP#x ;將變量X的高9位地址送DPLACCx ;將X內容送ACCADDy直接尋址方式 在使用直接尋址方式時,對DP要特別注意以下幾點:DSP復位時并沒有初始化DP內容,用LDP指令確定當前數(shù)據(jù)頁。如果程序需要訪問不同的數(shù)據(jù)頁,則每當訪問新的數(shù)據(jù)頁前,必須先修改DP值,以確保訪問正確的數(shù)據(jù)頁。程序中如果只訪問同一個數(shù)據(jù)頁,只需要在程序前段裝載DP一次即可。編

4、程舉例:直接尋址編程:設xi在同一頁ldp #x0ltx0mpy#a0pac ;a0.x0accltx1mpy#a1apac ;acc+ a1.x1 accltx2mpy#a2apac ltx3mpy#a3apac sacly0 .間接尋址方式 8個輔助寄存器(AR0-AR7)和輔助寄存器算術運算單元(ARAU)提供了功能強大而靈活的間接尋址操作方式。在間接尋址中,64K數(shù)據(jù)空間任意單元都可通過一個輔助寄存器AR中的16-bit地址進行訪問AR0-AR7作為間接尋址寄存器,ARP指出當前ARARAU根據(jù)指令的要求可以對輔助寄存器的內容進行運算、結果送(DRAB)或 (DWAB)、修改ARP C

5、2xx提供 4 種間接尋址方式:* 不增量不減量。*+或*- AR加1或減1。*0+或*0- AR增加或減去一個指定的量(或稱為變址量),AR0存該量。*BR0+或*BR0- 使用逆向進位增加或減去一個指定的量, AR0存該量。(用于FFT)共7個間址符號:* *+ *- *0+ *0- *BR0+ *BR0-每種間接尋址都是由ARP所指的當前輔助寄存器給出指令操作數(shù)地址;不同的是指令執(zhí)行完后當前輔助寄存器改變方式不同,就像C語言的p+ +p,此處先尋址后改變AR內容間接尋址舉例:例1:MAR *,AR2 ;選擇AR2作為當前輔助寄存器,即ARP=2例2: LAR AR2,#2000H ;將2

6、000HAR2 ADD *+,8;當前輔助寄存器內容所指存儲單元(即2000H)的值左移8位后加到ACC,并將當前輔助寄存器內容加1(即AR22001H)例3:ADD,*BR0+,AR5;當前輔助寄存器的內容加到ACC,并將當前輔助寄存器內容與AR0的內容按反向進位加,且指定該指令結束后AR5為當前輔助寄存器。 例3: ADD,*BR0+,AR5 ;反向進位加過程:假設執(zhí)行前:ARP2,(AR2)2000H,(AR0)04H(2000H)(ACC)1 ,(AR5)2010H,(2010H)=7 執(zhí)行后:ARP5,(AR2)2004H,(AR0)18H (ACC)?例4: ADD,*BR0+,A

7、R5 ;執(zhí)行后(ACC)?例5: ADD * ;執(zhí)行后(ACC)?理解位反轉尋址或位倒序尋址FFT運算時輸出/輸入序列中必有其一要混序即位倒序000100010110001101011111采樣數(shù)據(jù)順序000001010011100101110111000001010011100101110111地址比如,對上述8點(N)的FFT,輸入數(shù)據(jù)混序存放在8010H(地址必須是點數(shù)N的倍數(shù))開始的數(shù)據(jù)單元ARP2,(AR2)8010H,(AR0) 4(N/2)IN *BR0+,Port 得到第一個操作數(shù)存放在8010H第二個數(shù)地址為8014H第三個數(shù)地址為8012H 另外還有:累加器尋址 ;操作數(shù)在

8、累加器中堆棧尋址等 ;PUSH和POP指令 C2的指令集 C2的指令集和C2的指令集兼容;為C2寫的代碼可以在C2上重新編譯和運行。而C5的指令集則是C2的超集,因此為C2寫的代碼可以在C5上運行。C2的指令按功能可分為以下6種類型:累加器,算術與邏輯指令輔助寄存器和數(shù)據(jù)頁指針指令暫時寄存器(TREG)、乘積寄存器(PREG)和乘法指令轉移指令控制指令I/O和存儲器操作指令指令集兼容MARSARSBRKADRKCMPRLARLDPAuxiliary Register andData Page PointerBranchCALLCCINTRNMIRETRETCTRAPBBACCBANZBCNDC

9、ALAAccumulatorMemory ReferenceABSADDADDCADDSADDTANDLACC LACLLACTNEGNORMORROLRORSACHSFLSFRSUBSUBBSUBCSUBSSUBTXORZALRSACLCMPL I/O and DataMemory OperationsBLDDBLPDDMOVINOUTSPLKTBLRTBLWControl InstructionsBITBITTCLRCIDLERPTLSTNOPPOPPOPDPSHDPUSHSETCSSTMultiply, T, PMPYAMPYSMPYUPACSPACSPHSPLSPMSQRASQRSAP

10、ACLPHLTLTALTDLTPMACMACDMPYLTSC2的指令學習方法SPRU160C(TMS320F/C24x DSP Controllers Reference Guide)瀏覽指令集 以ADDC介紹9項的意義CCS Help以上對每條指令都有9項說明(見*.pdf 文件)有疑問的指令通過實驗去驗證典型指令介紹數(shù)據(jù)塊移動BLDD、BLPD 在DSP,數(shù)據(jù)與數(shù)據(jù)存儲器、數(shù)據(jù)與程序存儲器之間可以方便的進行數(shù)據(jù)傳輸,結合單指令循環(huán)可實現(xiàn)數(shù)據(jù)塊移動。 BLPD ;P D BLDD ; D D宏指令 /子程序宏匯編屬于高級匯編語言技術,可以簡化和縮短源程序但并沒有節(jié)省程序空間 1.宏定義格式為

11、: 宏名字 .macro (形式參數(shù)) (宏定義體,即一段匯編程序) .endm宏指令定義舉例KICK_DOG .macro ;Watchdog reset macroLDP#00E0h ;DP-7000h-707FhSPLK#05555h, WDKEY ;WDCNTR is enabled to be reset by next AAhSPLK#0AAAAh, WDKEY ;WDCNTR is resetLDP#0h ;DP-0000h-007Fh .endm2.宏調用定義之后的宏名,可以象任何匯編指令一樣在程序中使用CALLmS_DELAY;Generate a 50ms delayKIC

12、K_DOG ;Reset WD if not disabledPHANTOM KICK_DOG ;Resets WD counter BPHANTOM3.宏展開編譯程序在目標文件中,將調用宏的地方插入宏體的整個指令代碼C2的偽指令 偽指令非常多,參考教材。在稍后章節(jié)只介紹常用的偽指令指令效率的提高1、 匯編指令中有一些指令功能差不多,但編寫出的程序效率不同,應靈活使用。2、編程熟練程度不同,程序效率不同 指令系統(tǒng)主要通過編程掌握 編程不僅僅是實現(xiàn)需要的功能; 程序是否最優(yōu)化、最精簡:影響代碼、速度等。規(guī)范化編程開始的說明部分:簡要說明功能,向文章標題一樣文件名、作者、最后修改日期詳細說明功能、

13、實現(xiàn)環(huán)境(軟硬件)對資源的影響、如何觀察結果說明(包括主要變量說明)即入口出口說明程序注釋部分:準確無誤、50以上 DSP編程基礎知識源程序在任何文本編輯工具下都可以編寫源程序,一般情況下對應的開發(fā)軟件都包含編輯器。TI DSP匯編語言書寫規(guī)范語法: label: 指令 操作數(shù) ;注釋#數(shù)據(jù)前綴表示立即數(shù)數(shù)據(jù)后綴B或b表示二進制常數(shù);后綴Q或q表示八進制常數(shù);后綴H或h表示十六進制常數(shù) 匯編程序擴展名為asmTI DSP匯編語言書寫規(guī)范標號與變量必須從編輯窗口的第1列寫,指令(包括偽指令)決不能從第1列開始,包括宏指令。例如某匯編源程序使用 .global 定義全局標號 使用符號$表示當前PC

14、值 例如 B $支持宏指令DSP編程要特別說明的幾點COFF(Common Object File Format)段定義偽指令命令文件COFF(Common Object File Format)公共目標文件格式DSP編譯器產生的目標文件為COFF文件結構提倡編程(C或匯編)時采用代碼段 (Section或塊)和數(shù)據(jù)段的概念,有利于模塊化編程編程時不必考慮硬件 ,程序員也不需要指定或修改程序代碼或變量目標地址為程序編寫和程序移植提供了極大的方便 常用的段定義偽指令.text 默認的初始化程序段,通常包含有可執(zhí)行程序代碼,存放于程序存儲器區(qū)域.data 默認的初始化數(shù)據(jù)段(程序或數(shù)據(jù)區(qū)).bss

15、 默認的未初始化數(shù)據(jù)段,通常是為未初始化的變量預留空間(于數(shù)據(jù)區(qū))。格式為: .bss 變量符號,保留的字數(shù) .sect定義初始化后命名的段,常用于定義中斷向量表。 .sect “段名” 基于COFF格式的匯編語言編程見test.mak之ASM文件*.asm匯編(dspa.exe)與鏈接(dsplnk.exe)編輯匯編鏈接如果程序未用任何段定義指令,匯編器自動將所有程序代碼與數(shù)據(jù)匯編到.text段,并產生*.obj文件COFF文件鏈接器根據(jù)命令文件*.cmd確定各段存放地址。生成*.OUT文件,*.OUT不是純二進制代碼文件,而是包含代碼、符號表、代碼定位信息的復合文件。生成的MAP文件可以獲

16、得變量、子程序等符號的具體地址。注意:MAP文件只列出全局變量的地址。在DSP的開發(fā)軟件CCS環(huán)境下可以完成編輯、匯編、鏈接和調試調試程序的方法基本功:編輯匯編鏈接下載執(zhí)行程序何處?寄存器內容變化?變量何處?內容?硬件問題?鏈接器對test.mak各段在C2XX中的缺省分配模式,什么是缺省分配模式?鏈接器不用命令文件,將使用缺省分配。從程序存儲區(qū)域1000H開始,先分配.text段存儲空間,占空間大小由程序目標代碼多少確定;如果有多個段,按程序中順序依次存放。緊跟其后為.data段分配空間,從片內的存儲器模塊B1(地址為0300H03FFH)開始對.bss段分配存儲區(qū)域.超過256字,則存入4

17、00H開始的片內非用戶訪問單元.在CCS下,觀察test.mak程序及數(shù)據(jù)分配情況 鏈接器對test.mak各段在C2XX中的缺省分配模式.text從程序取1000H開始存放,多個.text由在ASM中出現(xiàn)的先后依次存放.data內容緊接.text其后存放.bss從片內B1 DARAM的300H開始存放命令文件(*.cmd)缺省分配模式常常并不符合實際系統(tǒng)的情況和要求。比如,希望將程序從TMS320F240程序存儲器0040H開始存放;數(shù)據(jù)或變量放在B2、B0等等,這時候,就要建立一個命令文件。在命令文件中,用MEMORY命令詳細定義DSP器件內部及擴展存儲器存儲器起始地址和長度,SECTIO

18、NS命令告訴鏈接器如何組合輸入段以及在存儲器何處存放 無論是否用命令文件,都可通過CCS或MAP文件查看各段地址。3、命令文件的編寫 命令文件的功能是說明目標文件如何連接到目標板,即裝入存儲器(或重定位)的方法。命令文件包括:1)、連接文件說明: a.obj /* First input filename */b.obj /* Second input filename */-o prog.out /* Option to specify output file */-m prog.map /* Option to specify map file */2)、 存儲分配說明3)、 段的分配與說明PAGE 0一般存程序;PAGE1存數(shù)據(jù)命令文件舉例對于同一DSP芯片命令文件一般可以不修改思 考 默認模式和加以上命令文件對:程序中的間接尋址是否有影響?對程序中的直接尋址是否有影響?思 考 (續(xù)).bss 300H 或在60HLDP #X; LAR AR2,X; X為變量時語句結果不影響LDP 0; LAR AR2,#60H; 如果直接送數(shù)值有無命令文件則會出錯因此,程序中盡量不用具體數(shù)值表示地址或數(shù)量頭文件*.hDSP的結構比較復雜,寄存器數(shù)量較多,映射地址難記IMR .set 0004h ;Interrupt Mask RegisterGREG

溫馨提示

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

評論

0/150

提交評論