DSP課件第三章-2_第1頁(yè)
DSP課件第三章-2_第2頁(yè)
DSP課件第三章-2_第3頁(yè)
DSP課件第三章-2_第4頁(yè)
DSP課件第三章-2_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) 在在DSPDSP軟件進(jìn)行調(diào)試之前,一般需要書寫軟件進(jìn)行調(diào)試之前,一般需要書寫3 3種格式的文件:種格式的文件:匯編語(yǔ)言文件、頭文件和命令文件匯編語(yǔ)言文件、頭文件和命令文件。在編寫這。在編寫這3 3類文件時(shí),類文件時(shí),通常要用到一些匯編偽指令。通常要用到一些匯編偽指令。 1 1常用的匯編偽指令常用的匯編偽指令(1).include(1).include。該指令是告訴匯編器在匯編時(shí)將其他文件包。該指令是告訴匯編器在匯編時(shí)將其他文件包含在內(nèi),即執(zhí)行到該指令時(shí),編譯器開(kāi)始從其他文件中讀含在內(nèi),即執(zhí)行到該指令時(shí),編譯器開(kāi)始從其他文件中讀源語(yǔ)句

2、,完成后再?gòu)漠?dāng)前文件讀源語(yǔ)句。源語(yǔ)句,完成后再?gòu)漠?dāng)前文件讀源語(yǔ)句。 (2).ref(2).ref。用于識(shí)別在當(dāng)前程序模塊中使用但在其他模塊中。用于識(shí)別在當(dāng)前程序模塊中使用但在其他模塊中定義的符號(hào)。定義的符號(hào)。 (3).set(3).set和和.equ.equ。把常量賦予給符號(hào),即定義常量。把常量賦予給符號(hào),即定義常量。 (4).sect(4).sect。定義一個(gè)初始化命名段,并把后續(xù)代碼或數(shù)據(jù)。定義一個(gè)初始化命名段,并把后續(xù)代碼或數(shù)據(jù)與該段相聯(lián)系。用與該段相聯(lián)系。用.sect.sect定義的段可包含代碼和數(shù)據(jù)。定義的段可包含代碼和數(shù)據(jù)。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)

3、構(gòu)(5).usect(5).usect。在未初始化命名段內(nèi)保留空間。在未初始化命名段內(nèi)保留空間。(6).def(6).def。用于定義在當(dāng)前程序模塊中定義的、在其他。用于定義在當(dāng)前程序模塊中定義的、在其他程序模塊中可以使用的符號(hào)。程序模塊中可以使用的符號(hào)。 (7).bss(7).bss。未初始化的變量在。未初始化的變量在.bss.bss段內(nèi)保留空間段內(nèi)保留空間, ,即聲明變量即聲明變量(8).data(8).data。定義初始化的數(shù)據(jù)命名段。定義初始化的數(shù)據(jù)命名段。 (9).word(9).word和和.。將一個(gè)或多個(gè)。將一個(gè)或多個(gè)1616位數(shù)值存儲(chǔ)在當(dāng)前段內(nèi)位數(shù)值存儲(chǔ)在當(dāng)前段內(nèi)

4、的連續(xù)字中。的連續(xù)字中。(10).text(10).text。定義段內(nèi)代碼部分,一般用于包含程序主代碼。定義段內(nèi)代碼部分,一般用于包含程序主代碼(11).end(11).end。終止匯編。終止匯編, ,它應(yīng)當(dāng)是書寫的程序的最后一條語(yǔ)句它應(yīng)當(dāng)是書寫的程序的最后一條語(yǔ)句(12).label(12).label。定義特定的符號(hào),它表示當(dāng)前段內(nèi)裝載時(shí)的地。定義特定的符號(hào),它表示當(dāng)前段內(nèi)裝載時(shí)的地址。當(dāng)段在一個(gè)地址處裝載但在另一個(gè)地址處運(yùn)行時(shí)該指令址。當(dāng)段在一個(gè)地址處裝載但在另一個(gè)地址處運(yùn)行時(shí)該指令特別有用。特別有用。 (13)MEMORY(13)MEMORY。程序和數(shù)據(jù)區(qū)的分配指令。程序和數(shù)據(jù)區(qū)的分配

5、指令。(14)SECTIONS(14)SECTIONS。指定的程序段和數(shù)據(jù)單元的分配。指定的程序段和數(shù)據(jù)單元的分配。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)2 2頭文件頭文件 頭文件是用來(lái)定義系統(tǒng)內(nèi)用到的一些寄存器的映射地址,頭文件是用來(lái)定義系統(tǒng)內(nèi)用到的一些寄存器的映射地址,以及用戶自定義的一些變量和寄存器。該文件的擴(kuò)展名為以及用戶自定義的一些變量和寄存器。該文件的擴(kuò)展名為.H.H,它只在程序編譯的過(guò)程中使用,不占用程序存儲(chǔ)單元。另外,它只在程序編譯的過(guò)程中使用,不占用程序存儲(chǔ)單元。另外,系統(tǒng)中沒(méi)有用到的寄存器,不必在頭文件中進(jìn)行定義。系統(tǒng)中沒(méi)有用到的寄存器,不必在頭文件中

6、進(jìn)行定義。 以下用一個(gè)簡(jiǎn)單的頭文件以下用一個(gè)簡(jiǎn)單的頭文件F2407REGS.HF2407REGS.H為例來(lái)說(shuō)明頭文為例來(lái)說(shuō)明頭文件的基本結(jié)構(gòu)。件的基本結(jié)構(gòu)。 IMR .set 0004hIMR .set 0004hIFR .set 0006hIFR .set 0006hPIVR .set 0701EhPIVR .set 0701EhMCRA .set 07090hMCRA .set 07090hMCRB .set 07092hMCRB .set 07092h第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)3.3.匯編語(yǔ)言文件匯編語(yǔ)言文件 匯編語(yǔ)言文件是完成用戶功能的應(yīng)用軟件,是系統(tǒng)

7、軟件匯編語(yǔ)言文件是完成用戶功能的應(yīng)用軟件,是系統(tǒng)軟件的主體部分,其擴(kuò)展名為的主體部分,其擴(kuò)展名為.ASM.ASM。此文件經(jīng)編譯器編譯后存儲(chǔ)。此文件經(jīng)編譯器編譯后存儲(chǔ)在程序存儲(chǔ)單元。在匯編語(yǔ)言文件的開(kāi)頭要將所定義的相關(guān)在程序存儲(chǔ)單元。在匯編語(yǔ)言文件的開(kāi)頭要將所定義的相關(guān)頭文件包含進(jìn)來(lái)頭文件包含進(jìn)來(lái)(.include F2407REGS.H)(.include F2407REGS.H)。下面通過(guò)一個(gè)例子來(lái)說(shuō)明匯編語(yǔ)言文件的基本結(jié)構(gòu)。下面通過(guò)一個(gè)例子來(lái)說(shuō)明匯編語(yǔ)言文件的基本結(jié)構(gòu)。 .include F2407REGS.H ;.include F2407REGS.H ;包含頭文件包含頭文件F2407R

8、EGS.HF2407REGS.H.def _c_int0 ;.def _c_int0 ;定義程序模塊的符號(hào)定義程序模塊的符號(hào)_c_int0_c_int0 .sect “.vectors” ; .sect “.vectors” ;定義主向量區(qū)定義主向量區(qū)RSVECT B _c_int0 ;RSVECT B _c_int0 ;復(fù)位向量復(fù)位向量INT1 B PHANTOM ;INT1 B PHANTOM ;中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)1 1INT2 B GISR2 ;INT2 B GISR2 ;中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)2 2第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) .sect “.pvecs

9、” ;.sect “.pvecs” ;定義偏移向量區(qū)定義偏移向量區(qū)PVECTORS B PHANTOMPVECTORS B PHANTOM B T1PINTISR ;T1PINT B T1PINTISR ;T1PINT中斷偏移向量地址中斷偏移向量地址 .text ; .text ;主程序主程序_c_int0:_c_int0: SETC INTM SETC INTM CLRC SXM CLRC SXM GISR2:GISR2: 保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng) 中斷處理中斷處理 恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) RET ;RET ;中斷返回中斷返回 .END ; .END ;程序結(jié)束程序結(jié)束第三章第三章 TMS320LF240

10、 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)4 4命令文件命令文件 命令文件又稱系統(tǒng)配置文件,用于實(shí)現(xiàn)對(duì)程序存儲(chǔ)空間和命令文件又稱系統(tǒng)配置文件,用于實(shí)現(xiàn)對(duì)程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間的分配,具體地講就是定義用戶的匯編程序放在數(shù)據(jù)存儲(chǔ)空間的分配,具體地講就是定義用戶的匯編程序放在程序存儲(chǔ)器中的位置,定義用戶程序中自定義的變量在所使用程序存儲(chǔ)器中的位置,定義用戶程序中自定義的變量在所使用的數(shù)據(jù)存儲(chǔ)器中的確定位置。命令文件的擴(kuò)展名為的數(shù)據(jù)存儲(chǔ)器中的確定位置。命令文件的擴(kuò)展名為.CMD.CMD。 在命名文件中使用在命名文件中使用MEMORYMEMORY和和SECTIONSSECTIONS兩個(gè)偽指令對(duì)程序兩個(gè)偽指令對(duì)程序和數(shù)

11、據(jù)存儲(chǔ)區(qū)間進(jìn)行分配。和數(shù)據(jù)存儲(chǔ)區(qū)間進(jìn)行分配。 (1)MEMORY(1)MEMORY。該偽指令對(duì)目標(biāo)系統(tǒng)中可以被使用的或?qū)⒁T搨沃噶顚?duì)目標(biāo)系統(tǒng)中可以被使用的或?qū)⒁皇褂玫某绦蚝蛿?shù)據(jù)區(qū)間進(jìn)行定義,包括定義其名稱、屬被使用的程序和數(shù)據(jù)區(qū)間進(jìn)行定義,包括定義其名稱、屬性、起始地址和地址長(zhǎng)度。具體格式如下:性、起始地址和地址長(zhǎng)度。具體格式如下: MEMORYMEMORY PAGE0: PAGE0: 名稱名稱MC1MC1屬性屬性 :起始地址,字節(jié)長(zhǎng)度:起始地址,字節(jié)長(zhǎng)度 名稱名稱MCnMCn屬性屬性 :起始地址,字節(jié)長(zhǎng)度:起始地址,字節(jié)長(zhǎng)度第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) P

12、AGE1:PAGE1: 名稱名稱MD1MD1屬性屬性 : 起始地址,起始地址, 字節(jié)長(zhǎng)度字節(jié)長(zhǎng)度 名稱名稱MDnMDn屬性屬性 : 起始地址,起始地址, 字節(jié)長(zhǎng)度字節(jié)長(zhǎng)度 其中,其中,PAGE0PAGE0規(guī)定為程序存儲(chǔ)區(qū)間;規(guī)定為程序存儲(chǔ)區(qū)間;PAGE1PAGE1規(guī)定為數(shù)據(jù)存儲(chǔ)區(qū)間規(guī)定為數(shù)據(jù)存儲(chǔ)區(qū)間屬性選項(xiàng)可以定義為:屬性選項(xiàng)可以定義為:RR所定義的存儲(chǔ)區(qū)間的內(nèi)容可以被讀出;所定義的存儲(chǔ)區(qū)間的內(nèi)容可以被讀出;WW所定義的存儲(chǔ)區(qū)間可以被寫人;所定義的存儲(chǔ)區(qū)間可以被寫人;XX所定義的存儲(chǔ)區(qū)間可以包含可執(zhí)行的代碼;所定義的存儲(chǔ)區(qū)間可以包含可執(zhí)行的代碼;II所定義的存儲(chǔ)區(qū)間可以被初始化。所定義的存儲(chǔ)區(qū)

13、間可以被初始化。 一般不定義屬性,在不定義屬性選項(xiàng)時(shí),表示具有以上一般不定義屬性,在不定義屬性選項(xiàng)時(shí),表示具有以上所有的屬性。所有的屬性。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)(2)SECTIONS(2)SECTIONS。該指令定義匯編語(yǔ)言文件中的程序代碼存放在。該指令定義匯編語(yǔ)言文件中的程序代碼存放在由由MEMORYMEMORY所指定的程序存儲(chǔ)器的哪個(gè)區(qū)間內(nèi),或者定義匯編所指定的程序存儲(chǔ)器的哪個(gè)區(qū)間內(nèi),或者定義匯編語(yǔ)言文件中所定義的變量、緩沖區(qū)及數(shù)據(jù)區(qū)存放在由語(yǔ)言文件中所定義的變量、緩沖區(qū)及數(shù)據(jù)區(qū)存放在由MEMORYMEMORY所定義的哪個(gè)特定的數(shù)據(jù)區(qū)間中。所定義的哪個(gè)

14、特定的數(shù)據(jù)區(qū)間中。 SECTIONS SECTIONS的具體格式如下:的具體格式如下: SECTIONSSECTIONS 名稱名稱SC1: SC1: 名稱名稱MC1 PAGE0MC1 PAGE0 名稱名稱SC2: SC2: 名稱名稱MC2 PAGE0MC2 PAGE0 名稱名稱SDn: SDn: 名稱名稱MDn PAGE1MDn PAGE1 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)(3) (3) 命令文件舉例命令文件舉例 MEMORY PAGE0: VECS: origin=0000h, length=40h PROG: origin=100h, length=8000h

15、PAGE1: B2: origin=60h, length=20h B0: origin=200h, length=100h B1: origin=300h, length=100h 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)SECTIONS .vectors: VECS PAGE0 .text: PROG PAGE0 .bass: B0 PAGE1 .buffer: B1 PAGE1 .data B2 PAGE1 其中其中,.vectors,.vectors和和.text.text分別為匯編語(yǔ)言文件中定義的程序分別為匯編語(yǔ)言文件中定義的程序段段;.bass;.bass、.b

16、uffer.buffer和和.data.data分別為匯編語(yǔ)言文件中定義的一些分別為匯編語(yǔ)言文件中定義的一些數(shù)據(jù)區(qū)和緩沖區(qū)。此命令文件是將程序段數(shù)據(jù)區(qū)和緩沖區(qū)。此命令文件是將程序段.vectors.vectors分配在程序分配在程序存儲(chǔ)器的存儲(chǔ)器的VECSVECS段段(0000h-0040h)(0000h-0040h)內(nèi)內(nèi); ;將主程序段將主程序段.text.text分配在程分配在程序存儲(chǔ)器的序存儲(chǔ)器的PROGPROG段段(0100h-8100h)(0100h-8100h)內(nèi)內(nèi); ;將數(shù)據(jù)區(qū)將數(shù)據(jù)區(qū).bass.bass分配在數(shù)分配在數(shù)據(jù)存儲(chǔ)器中的據(jù)存儲(chǔ)器中的B0(0200h-0300h)B0(

17、0200h-0300h)塊內(nèi)塊內(nèi); ;將數(shù)據(jù)緩沖區(qū)將數(shù)據(jù)緩沖區(qū).buffer.buffer分分配在數(shù)據(jù)存儲(chǔ)器中的配在數(shù)據(jù)存儲(chǔ)器中的B1(0300h-0400h)B1(0300h-0400h)塊內(nèi)塊內(nèi); ;將數(shù)據(jù)區(qū)將數(shù)據(jù)區(qū).data.data分分配在數(shù)據(jù)存儲(chǔ)器中的配在數(shù)據(jù)存儲(chǔ)器中的B2(0060h-0080h)B2(0060h-0080h)塊內(nèi)。塊內(nèi)。 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) TMS320LF240 xTMS320LF240 x系列系列DSPDSP芯片屬于定點(diǎn)芯片,所謂的定點(diǎn)是指芯片屬于定點(diǎn)芯片,所謂的定點(diǎn)是指參與操作數(shù)據(jù)的小數(shù)點(diǎn)的位置是確定的。參與操作數(shù)據(jù)

18、的小數(shù)點(diǎn)的位置是確定的。 在定點(diǎn)在定點(diǎn)DSPDSP芯片中,進(jìn)行數(shù)值運(yùn)算時(shí),其操作數(shù)一般采用整芯片中,進(jìn)行數(shù)值運(yùn)算時(shí),其操作數(shù)一般采用整型數(shù)來(lái)表示。整型數(shù)的最大取值范圍取決于型數(shù)來(lái)表示。整型數(shù)的最大取值范圍取決于DSPDSP芯片的字長(zhǎng),字芯片的字長(zhǎng),字長(zhǎng)越長(zhǎng),表示的數(shù)的范圍也就越大,精度也就越高。長(zhǎng)越長(zhǎng),表示的數(shù)的范圍也就越大,精度也就越高。 DSP DSP芯片的數(shù)是以芯片的數(shù)是以2 2的補(bǔ)碼形式表示的,每個(gè)的補(bǔ)碼形式表示的,每個(gè)1616位數(shù)的最高位數(shù)的最高位表示數(shù)的符號(hào)位表示數(shù)的符號(hào)(0(0表示數(shù)值為正,表示數(shù)值為正,1 1表示數(shù)值為負(fù)表示數(shù)值為負(fù)) ),其余的低,其余的低1515位表示數(shù)值的

19、大小。位表示數(shù)值的大小。 由于由于TMS320LF240 xTMS320LF240 x芯片只能處理整型數(shù)。然而參與數(shù)學(xué)運(yùn)芯片只能處理整型數(shù)。然而參與數(shù)學(xué)運(yùn)算的數(shù)不一定都是整型數(shù),還有小數(shù),這就涉及到如何用一個(gè)算的數(shù)不一定都是整型數(shù),還有小數(shù),這就涉及到如何用一個(gè)1616位的整型數(shù)來(lái)表示一個(gè)小數(shù)的問(wèn)題,這就是數(shù)據(jù)的定標(biāo)問(wèn)題。位的整型數(shù)來(lái)表示一個(gè)小數(shù)的問(wèn)題,這就是數(shù)據(jù)的定標(biāo)問(wèn)題。 3.4.1 3.4.1 數(shù)據(jù)的定標(biāo)方法數(shù)據(jù)的定標(biāo)方法 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) 在一個(gè)系統(tǒng)的開(kāi)發(fā)過(guò)程中,數(shù)據(jù)的定標(biāo)是一個(gè)首先要解在一個(gè)系統(tǒng)的開(kāi)發(fā)過(guò)程中,數(shù)據(jù)的定標(biāo)是一個(gè)首先要解決的問(wèn)題

20、。所謂的定標(biāo)就是由編程者根據(jù)數(shù)值的大小和精度決的問(wèn)題。所謂的定標(biāo)就是由編程者根據(jù)數(shù)值的大小和精度的需要,人為地確定小數(shù)點(diǎn)位于的需要,人為地確定小數(shù)點(diǎn)位于1616位數(shù)中的哪一位,因此要位數(shù)中的哪一位,因此要求編程者必須對(duì)整個(gè)程序中的各個(gè)數(shù)據(jù)量的范圍十分清楚。求編程者必須對(duì)整個(gè)程序中的各個(gè)數(shù)據(jù)量的范圍十分清楚。 數(shù)據(jù)的定標(biāo)一般采用數(shù)據(jù)的定標(biāo)一般采用Q Q表示法,表示法,Q Q值的大小表示小數(shù)點(diǎn)后值的大小表示小數(shù)點(diǎn)后的位數(shù),如的位數(shù),如Q15Q15表示小數(shù)點(diǎn)后有表示小數(shù)點(diǎn)后有1515位數(shù),位數(shù),Q0Q0表示小數(shù)點(diǎn)后沒(méi)有表示小數(shù)點(diǎn)后沒(méi)有數(shù)據(jù)。表數(shù)據(jù)。表3-103-10給出了給出了1616位數(shù)不同的十進(jìn)

21、制數(shù)據(jù)范圍以及對(duì)應(yīng)位數(shù)不同的十進(jìn)制數(shù)據(jù)范圍以及對(duì)應(yīng)的的Q Q值之間的關(guān)系。值之間的關(guān)系。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)Q表示表示十進(jìn)制數(shù)表示的范圍十進(jìn)制數(shù)表示的范圍Q表示表示十進(jìn)制數(shù)表示的范圍十進(jìn)制數(shù)表示的范圍Q151X0.9999695X0.9999695Q7256X255.9921875X255.9921875Q142X1.9999390X1.9999390Q6512X511.9804375X511.9804375Q134X3.9998779X3.9998779Q51024X1023.96875X1023.96875Q128X7.9997559X7.99975

22、59Q42048X2047.9375X2047.9375Q1116X15.9995117X15.9995117Q34096X4095.875X4095.875Q1032X31.9990234X31.9990234Q28192X8191.75X8191.75Q964X63.9980469X63.9980469Q116384X16383.5X16383.5Q8128X127.9960938X127.9960938Q032768X32767X32767 從表中不難看出,不同的從表中不難看出,不同的Q Q值表示不同的數(shù)據(jù)范圍,不同的值表示不同的數(shù)據(jù)范圍,不同的Q Q值表示的數(shù)據(jù)精度也不同。通常值表示的

23、數(shù)據(jù)精度也不同。通常Q Q值越大,表示的數(shù)據(jù)范圍就值越大,表示的數(shù)據(jù)范圍就越小,數(shù)據(jù)的精度也就越高;越小,數(shù)據(jù)的精度也就越高;Q Q值越小,表示的數(shù)據(jù)范圍就越大,值越小,表示的數(shù)據(jù)范圍就越大,數(shù)據(jù)的精度也就越低。因此,對(duì)定點(diǎn)數(shù)而言,數(shù)據(jù)范圍和精度數(shù)據(jù)的精度也就越低。因此,對(duì)定點(diǎn)數(shù)而言,數(shù)據(jù)范圍和精度是一對(duì)矛盾,在實(shí)際的定點(diǎn)算法中,為了使系統(tǒng)達(dá)到最佳的性是一對(duì)矛盾,在實(shí)際的定點(diǎn)算法中,為了使系統(tǒng)達(dá)到最佳的性能,必須充分考慮到這一點(diǎn)。能,必須充分考慮到這一點(diǎn)。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)3.4.2 3.4.2 定點(diǎn)算法定點(diǎn)算法 1 1定點(diǎn)乘法定點(diǎn)乘法 (1)(1)小

24、數(shù)乘小數(shù)。小數(shù)乘小數(shù)。 Q15Q15=Q30【例例3-178】 0.50.5=0.25 0.100000000000000 ;Q150.100000000000000 ;Q1500.010000000000000000000000000000 ;Q3000.010000000000000000000000000000 ;Q300.100000000000000 ;Q150.100000000000000 ;Q15 2 2個(gè)個(gè)Q15Q15的小數(shù)相乘后得到的小數(shù)相乘后得到1 1個(gè)個(gè)Q30Q30的小數(shù),即有的小數(shù),即有2 2個(gè)符號(hào)位。個(gè)符號(hào)位。一般情況下相乘后得到的滿精度數(shù)不必全部保留,而只需保留一

25、般情況下相乘后得到的滿精度數(shù)不必全部保留,而只需保留1616位單精度。由于相乘后得到的高位單精度。由于相乘后得到的高1616位不滿足位不滿足1515位的小數(shù)精度,位的小數(shù)精度,為了達(dá)到為了達(dá)到1515位精度,可將乘積左移位精度,可將乘積左移1 1位。位。 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)下面是上述乘法的匯編語(yǔ)言程序。下面是上述乘法的匯編語(yǔ)言程序。 LT OP1 ;OP1=4000h(0.5/Q15)LT OP1 ;OP1=4000h(0.5/Q15)MPY OP2 ;OP2=4000h(0.5/Q15)MPY OP2 ;OP2=4000h(0.5/Q15)PAC ;

26、PAC ;乘積存乘積存ACCACC中中SACH ANS,1 ;ACCSACH ANS,1 ;ACC左移左移1 1位后的高位后的高1616位存位存ANS ANS (2)(2)整數(shù)乘整數(shù)。整數(shù)乘整數(shù)。 Q0Q0Q0=Q0 Q0=Q0 【例例3-179】 18(5)=90 000000000001001018111111111111111111111111101001109011111111111110115第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)(3)(3)混合運(yùn)算?;旌线\(yùn)算。 在許多情況下,為了既保證數(shù)據(jù)的精度又滿足數(shù)據(jù)的變化在許多情況下,為了既保證數(shù)據(jù)的精度又滿足數(shù)據(jù)的變化

27、范圍,運(yùn)算就必須采用范圍,運(yùn)算就必須采用Q15Q15Q0Q0之間的表示法。之間的表示法。 【例例3-180】 1.50.75=1.125 01.10000000000000=1.5 ;Q1401.10000000000000=1.5 ;Q1400.11000000000000=0.75 ;Q1400.11000000000000=0.75 ;Q140001.0010000000000000000000000000=1.125;Q280001.0010000000000000000000000000=1.125;Q28 Q14 Q14的最大值不大于的最大值不大于2 2,因此,因此2 2個(gè)個(gè)Q14

28、Q14數(shù)相乘的乘積不大于數(shù)相乘的乘積不大于4 4。 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)上例對(duì)應(yīng)的匯編程序如下。上例對(duì)應(yīng)的匯編程序如下。 LT OP1 ;OP1=6000h(1.5/Q14)MPY OP2 ;OP2=3000h(0.75/Q14)PACSACH ANS,1 ;ANS=2400h(1.125/Q13)2 2定點(diǎn)加減法定點(diǎn)加減法 在定點(diǎn)乘法運(yùn)算時(shí),編程者只考慮調(diào)整運(yùn)算中的小數(shù)點(diǎn),在定點(diǎn)乘法運(yùn)算時(shí),編程者只考慮調(diào)整運(yùn)算中的小數(shù)點(diǎn),而不考慮溢出問(wèn)題。而加減法則是一個(gè)更加復(fù)雜的過(guò)程,首先,而不考慮溢出問(wèn)題。而加減法則是一個(gè)更加復(fù)雜的過(guò)程,首先,加減法運(yùn)算必須用相同

29、的加減法運(yùn)算必須用相同的Q Q值表示,其次,編程者必須要考慮值表示,其次,編程者必須要考慮到運(yùn)算的結(jié)果可能超過(guò)到運(yùn)算的結(jié)果可能超過(guò)1616位數(shù)的表示范圍,若出現(xiàn)這種情況,位數(shù)的表示范圍,若出現(xiàn)這種情況,則必須保留則必須保留3232位的結(jié)果以保證運(yùn)算的精度,否則,將出現(xiàn)運(yùn)算位的結(jié)果以保證運(yùn)算的精度,否則,將出現(xiàn)運(yùn)算結(jié)果的溢出,導(dǎo)致運(yùn)算精度的下降。防止運(yùn)算溢出的一個(gè)非常結(jié)果的溢出,導(dǎo)致運(yùn)算精度的下降。防止運(yùn)算溢出的一個(gè)非常有效的方法是每次運(yùn)算都保留有效的方法是每次運(yùn)算都保留3232位計(jì)算結(jié)果,如下例位計(jì)算結(jié)果,如下例 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) LACC OP1

30、;LACC OP1 ;將被加數(shù)將被加數(shù)OP1(Q15)OP1(Q15)送給送給ACCACCADD OP2 ;ADD OP2 ;加數(shù)加數(shù)OP2(Q15)OP2(Q15)與與ACCACC的內(nèi)容相加并將的內(nèi)容相加并將 ; ;結(jié)果存入結(jié)果存入ACCACC中中SACH ANSHI ;SACH ANSHI ;存結(jié)果的高存結(jié)果的高1616位于位于ANSHIANSHISACL ANSLO ;SACL ANSLO ;存結(jié)果的低存結(jié)果的低1616位于位于ANSLOANSLO 3 3定點(diǎn)除法定點(diǎn)除法 在在DSPDSP匯編語(yǔ)言中沒(méi)有相應(yīng)的除法指令,但除法運(yùn)算可匯編語(yǔ)言中沒(méi)有相應(yīng)的除法指令,但除法運(yùn)算可通過(guò)一系列的定點(diǎn)

31、減法和移位運(yùn)算來(lái)實(shí)現(xiàn)。下面通過(guò)一個(gè)例通過(guò)一系列的定點(diǎn)減法和移位運(yùn)算來(lái)實(shí)現(xiàn)。下面通過(guò)一個(gè)例子來(lái)說(shuō)明除法的實(shí)現(xiàn)過(guò)程子來(lái)說(shuō)明除法的實(shí)現(xiàn)過(guò)程 設(shè)累加器為設(shè)累加器為8 8位,被除數(shù)為位,被除數(shù)為1010,除數(shù)為,除數(shù)為3 3。除法的過(guò)程就。除法的過(guò)程就是被除數(shù)逐步移位并與除數(shù)比較的過(guò)程,并在每一步進(jìn)行減是被除數(shù)逐步移位并與除數(shù)比較的過(guò)程,并在每一步進(jìn)行減法運(yùn)算,如果能減則將位插入商中。法運(yùn)算,如果能減則將位插入商中。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)1)1)除數(shù)的最低有效位和被除數(shù)的最高有效位對(duì)齊,并相減。除數(shù)的最低有效位和被除數(shù)的最高有效位對(duì)齊,并相減。 0000101000

32、011000111100102)2)由于減的結(jié)果為負(fù)由于減的結(jié)果為負(fù), ,放棄減法結(jié)果放棄減法結(jié)果, ,將被除數(shù)左移一位再減將被除數(shù)左移一位再減000101000001100011111100第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)3)3)結(jié)果仍為負(fù),放棄減法結(jié)果,被除數(shù)再左移一位再減。結(jié)果仍為負(fù),放棄減法結(jié)果,被除數(shù)再左移一位再減。 0010100000011000000100004)4)結(jié)果為正結(jié)果為正, ,將減法結(jié)果左移一位后加將減法結(jié)果左移一位后加1,1,再作最后一次減。再作最后一次減。 0010000100011000000010015)5)結(jié)果為正,將結(jié)果左移一

33、位加結(jié)果為正,將結(jié)果左移一位加1 1得最后結(jié)果得最后結(jié)果00010011 。結(jié)。結(jié)果的高果的高4 4位表示余數(shù)位表示余數(shù)0001 ,低,低4 4位表示商位表示商0011 。 第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) 在在DSPDSP匯編語(yǔ)言中,可以使用減法指令匯編語(yǔ)言中,可以使用減法指令SUBCSUBC實(shí)現(xiàn)除法功能,實(shí)現(xiàn)除法功能,但要注意除數(shù)和被除數(shù)必須為正。下面為一個(gè)但要注意除數(shù)和被除數(shù)必須為正。下面為一個(gè)z=x/yz=x/y的除法匯的除法匯編程序。編程序。 LACC X ;LACC X ;被除數(shù)裝入被除數(shù)裝入ACCACCRPT #15 ;RPT #15 ;下條指令重復(fù)下

34、條指令重復(fù)1616次次SUBC ySUBC ySACL z ;SACL z ;商送給商送給z z,余數(shù)在,余數(shù)在ACCACC高高1616位位第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) 在數(shù)據(jù)的運(yùn)算中,除了基本的加減乘除之外,還有其他許在數(shù)據(jù)的運(yùn)算中,除了基本的加減乘除之外,還有其他許多非線性函數(shù)運(yùn)算。實(shí)現(xiàn)這些非線性函數(shù)運(yùn)算的常用方法有查多非線性函數(shù)運(yùn)算。實(shí)現(xiàn)這些非線性函數(shù)運(yùn)算的常用方法有查表法和調(diào)用編譯系統(tǒng)的庫(kù)函數(shù)法。盡管直接調(diào)用系統(tǒng)的庫(kù)函數(shù)表法和調(diào)用編譯系統(tǒng)的庫(kù)函數(shù)法。盡管直接調(diào)用系統(tǒng)的庫(kù)函數(shù)非常方便,但由于運(yùn)算量較大,難以在實(shí)際的系統(tǒng)中得到應(yīng)用,非常方便,但由于運(yùn)算量較大

35、,難以在實(shí)際的系統(tǒng)中得到應(yīng)用,故下面以最為常見(jiàn)的查表法進(jìn)行介紹。故下面以最為常見(jiàn)的查表法進(jìn)行介紹。 查表法的最大優(yōu)點(diǎn)是可以快速計(jì)算非線性函數(shù),它特別查表法的最大優(yōu)點(diǎn)是可以快速計(jì)算非線性函數(shù),它特別適合于系統(tǒng)的動(dòng)態(tài)特性和實(shí)時(shí)性要求比較高的場(chǎng)合。適合于系統(tǒng)的動(dòng)態(tài)特性和實(shí)時(shí)性要求比較高的場(chǎng)合。 所謂的查表法,就是將函數(shù)的自變量在其定義域范圍內(nèi)進(jìn)所謂的查表法,就是將函數(shù)的自變量在其定義域范圍內(nèi)進(jìn)行離散化處理,得到具有一定分辨率的離散點(diǎn),通過(guò)計(jì)算得到行離散化處理,得到具有一定分辨率的離散點(diǎn),通過(guò)計(jì)算得到與其對(duì)應(yīng)的函數(shù)輸出離散點(diǎn),然后將這些離散點(diǎn)按對(duì)應(yīng)關(guān)系制與其對(duì)應(yīng)的函數(shù)輸出離散點(diǎn),然后將這些離散點(diǎn)按對(duì)應(yīng)

36、關(guān)系制作成一張表格,并將這個(gè)表格存儲(chǔ)在程序存儲(chǔ)區(qū)間。在進(jìn)行查作成一張表格,并將這個(gè)表格存儲(chǔ)在程序存儲(chǔ)區(qū)間。在進(jìn)行查表時(shí),只需根據(jù)自變量的大小確定函數(shù)值的地址,然后從該地表時(shí),只需根據(jù)自變量的大小確定函數(shù)值的地址,然后從該地址中讀出該函數(shù)值。顯然址中讀出該函數(shù)值。顯然,自變量的值越多自變量的值越多,表的分辨率越高表的分辨率越高,所所需的表格就越大,需要的程序存儲(chǔ)空間也就越大。需的表格就越大,需要的程序存儲(chǔ)空間也就越大。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu) 查表法比較適合于周期性函數(shù)或已知函數(shù)輸入值范圍的非查表法比較適合于周期性函數(shù)或已知函數(shù)輸入值范圍的非周期性函數(shù)這兩種情

37、況。周期性函數(shù)這兩種情況。下面以一個(gè)周期性的正弦函數(shù)為例來(lái)介紹查表法的應(yīng)用。下面以一個(gè)周期性的正弦函數(shù)為例來(lái)介紹查表法的應(yīng)用。 (1)(1)表格的建立表格的建立 對(duì)于正弦函數(shù)對(duì)于正弦函數(shù)sinxsinx,假設(shè)將其進(jìn)行,假設(shè)將其進(jìn)行256256點(diǎn)離散化處理,且點(diǎn)離散化處理,且數(shù)據(jù)均采用數(shù)據(jù)均采用Q12Q12格式,因此可制作一個(gè)格式,因此可制作一個(gè)256256點(diǎn)的表格。對(duì)點(diǎn)的表格。對(duì)sinxsinx的的離散處理可按下式進(jìn)行離散處理可按下式進(jìn)行2) i2562(int)sin() i (tabsin_12上式中,上式中,i i的取值范圍為的取值范圍為0 0256256。第三章第三章 TMS320LF240 x的軟件結(jié)構(gòu)的軟件結(jié)構(gòu)(2)(2)表格的存儲(chǔ)表格的存儲(chǔ) 將以上所得到的正弦表格以數(shù)據(jù)的形式存儲(chǔ)于將以上所得到的正弦表格以數(shù)據(jù)的形式存儲(chǔ)于FLASHFLASH的指的指定區(qū)域中,采用定區(qū)域中,采用DSPDSP匯編語(yǔ)言的形式表示為匯編語(yǔ)言的形式表示為 .data sin_tab .word 0 ;sin_tab為表頭,它對(duì)應(yīng)起始地址,為表頭,它對(duì)應(yīng)起始地址,i=0對(duì)應(yīng)對(duì)應(yīng)0 .word 100 ;i=1,對(duì)應(yīng)對(duì)應(yīng) .word 200 ;i=2,對(duì)應(yīng)對(duì)應(yīng) .word 0 ;對(duì)對(duì)i=128,對(duì)應(yīng),對(duì)應(yīng) .word 200 .word 1002562/25622/第三章第三章 TMS3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論