【DSP复习主要知识点】(大概)
目錄
- 第一章
- 1、數(shù)字系統(tǒng)對(duì)比模擬系統(tǒng)
- 2、馮諾依曼、哈佛架構(gòu)
- 3、CISC、RISC
- 4、DSP特點(diǎn)
- 5、cpu流水線作用
- 6、DSP芯片優(yōu)點(diǎn)
- 第二章:DSP芯片結(jié)構(gòu)原理
- 1、ALU(算數(shù)邏輯運(yùn)算單元)
- 2、累加器A和B
- 3、桶形移位器的功能
- 4、乘法/加法單元
- 5、CPU狀態(tài)與控制寄存器
- 6、內(nèi)部總線結(jié)構(gòu)
- 7、哈佛結(jié)構(gòu)存儲(chǔ)空間分配
- 8、程序存儲(chǔ)器
- 9、數(shù)據(jù)存儲(chǔ)器
- 10、(MMR)存儲(chǔ)器映像寄存器
- 11、復(fù)位電路以及片外電路
- 12、外設(shè)接口與時(shí)序
- 13、利用軟件等待實(shí)現(xiàn)接口的速度配合
- 14、中斷處理
- 15、自舉加載
- 第三章:尋址方式以及指令系統(tǒng)
- 1、尋址分類(lèi)
- 2、程序地址的生成
- 第七章:DSPC55x處理器軟件開(kāi)發(fā)流程
- 1、軟件設(shè)計(jì)
- 2、任務(wù)狀態(tài)
- 3、C語(yǔ)言程序開(kāi)發(fā)優(yōu)化
- 4、通用目標(biāo)文件格式
- 5、C/C++和匯編語(yǔ)言中段的分配
- 6、鏈接命令文件
- 第八章:DSP硬件設(shè)計(jì)基礎(chǔ)
- 1、主要芯片種類(lèi)
- 2、DSP系統(tǒng)的設(shè)計(jì)思路
- 3、信號(hào)線的布置
- 4、DSP最小系統(tǒng)設(shè)計(jì)
- 第九章、DSP典型算法設(shè)計(jì)實(shí)例
- 1、掌握高通濾波器
- 2、巴特沃斯濾波器(Butterworth)
- 3、切比雪夫?yàn)V波器
- 4、卷積算法
- 5、無(wú)限沖激響應(yīng)濾波器(IIR)
- 第十一章,語(yǔ)音技術(shù)識(shí)別
- 1、人與人之間、人與機(jī)器之間的語(yǔ)音信息處理過(guò)程
- 2、典型語(yǔ)音識(shí)別系統(tǒng)實(shí)現(xiàn)過(guò)程
- 第十三章 物聯(lián)網(wǎng)與智能家居
- 互聯(lián)網(wǎng)協(xié)議第六版:IPv6
第一章
1、數(shù)字系統(tǒng)對(duì)比模擬系統(tǒng)
數(shù)字化的優(yōu)點(diǎn):
1.高度的程控能力與靈活性
2、更高的精度
3、可靠性與可重復(fù)性得到了改善
4、大規(guī)模集成
5、接口方便
6、靈活性好
7、保密性好
8、特殊應(yīng)用(只有數(shù)字能做):信息無(wú)失真壓縮、線性相位濾波器、軟件無(wú)線電技術(shù)
模擬與數(shù)字各有所長(zhǎng):
1、實(shí)時(shí)性
模擬:除了電路引入的延時(shí)外,處理是實(shí)時(shí)的
數(shù)字:取決于處理器的速度
2、高頻信號(hào)的處理
模擬:可以處理包括微波毫米波乃至光波信號(hào)
數(shù)字:按照奈奎斯特準(zhǔn)則的要求,受S/H、A/D 和處理速度的限制
3、模擬與數(shù)字信號(hào)轉(zhuǎn)換
現(xiàn)實(shí)世界的信號(hào)大多是模擬的,要想完成數(shù)字處理就必須進(jìn)行轉(zhuǎn)換。
2、馮諾依曼、哈佛架構(gòu)
兩種結(jié)構(gòu)的目的旨在從存儲(chǔ)器存取數(shù)據(jù)。區(qū)別在于程序/數(shù)據(jù)總線和空間是否分開(kāi)。
馮諾依曼結(jié)構(gòu):2進(jìn)制與程序內(nèi)存思想
哈佛架構(gòu):
哈佛結(jié)構(gòu)的特點(diǎn):
1、將程序與數(shù)據(jù)存儲(chǔ)空間分開(kāi)
2、各有獨(dú)立的地址總線和數(shù)據(jù)總線
3、取址和讀數(shù)可以同時(shí)進(jìn)行
4、速度大大提高
3、CISC、RISC
CISC:復(fù)雜指令計(jì)算機(jī)
RISC: 精簡(jiǎn)指令計(jì)算機(jī)
RISC和CISC的區(qū)別:
(1) 指令系統(tǒng):RISC 設(shè)計(jì)者把主要精力放在那些經(jīng)常使用的指令上,盡量使它們具有簡(jiǎn)單高效的特色。對(duì)不常用的功能,常通過(guò)組合指令來(lái)完成。而CISC 計(jì)算機(jī)的指令系統(tǒng)比較豐富,有專用指令來(lái)完成特定的功能。因此,處理特殊任務(wù)效率較高。
(2) 存儲(chǔ)器操作:RISC 對(duì)存儲(chǔ)器操作有限制,使控制簡(jiǎn)單化;而CISC 機(jī)器的存儲(chǔ)器操作指令多,操作直接。
(3) 程序:RISC 匯編語(yǔ)言程序一般需要較大的內(nèi)存空間,實(shí)現(xiàn)特殊功能時(shí)程序復(fù)雜,不易設(shè)計(jì);而CISC 匯編語(yǔ)言程序編程相對(duì)簡(jiǎn)單,科學(xué)計(jì)算及復(fù)雜操作的程序設(shè)計(jì)相對(duì)容易,效率較高。
4、DSP特點(diǎn)
1、哈佛結(jié)構(gòu)
2、硬件乘法/累加器
3、多總線結(jié)構(gòu)
4、多DSP協(xié)調(diào)工作模式
5、特殊DSP指令
6、多級(jí)流水線
5、cpu流水線作用
多級(jí)流水線技術(shù)(PipeLine)
作用:提高取地址效率,減少等待時(shí)間。
圖示:
流水線深度可達(dá)到6級(jí)。
6、DSP芯片優(yōu)點(diǎn)
哈佛結(jié)構(gòu)
多總線結(jié)構(gòu)和多處理單元
流水線技術(shù)
特殊的DSP指令
指令周期短
運(yùn)算精度高
硬件配置強(qiáng)
耗電省
第二章:DSP芯片結(jié)構(gòu)原理
C54x系列DSP器件的CPU基本組成如下:
1、40位算數(shù)邏輯單元
2、2個(gè)40位累加器寄存器
3、支持16~31位移位范圍的桶形移位寄存器
4、乘法累加單元MAC
5、16位臨時(shí)寄存器
6、16位的轉(zhuǎn)換寄存器(TRN)
7、比較、選擇、存儲(chǔ)單元(CSSU)
8、指數(shù)編碼器
9、CPU狀態(tài)和控制寄存器
10、兩個(gè)地址發(fā)生器
重點(diǎn):基本性能、CPU結(jié)構(gòu)、內(nèi)部總線結(jié)構(gòu)、存儲(chǔ)器結(jié)構(gòu)、片外圍電路,這里以C54x芯片為主要切入點(diǎn)。
需要注重的地方
1、多總線結(jié)構(gòu)
2、40位算術(shù)邏輯單元(ALU)
3、17 x 17并行乘法器
4、比較、選擇和存儲(chǔ)單元(CSSU)
5、指數(shù)編碼器
6、兩個(gè)地址發(fā)生器
7、數(shù)據(jù)總線
8、總線尋址空間
9、三種存儲(chǔ)器空間
10、單指令循環(huán)和塊循環(huán)
1、ALU(算數(shù)邏輯運(yùn)算單元)
1、ALU如何獲取數(shù)據(jù)
ALU有兩個(gè)輸入端:
X輸入端的數(shù)據(jù)來(lái)源于移位寄存器的輸出或來(lái)自數(shù)據(jù)總線DB 的數(shù)據(jù)存儲(chǔ)器操作數(shù)
Y輸入端的數(shù)據(jù)來(lái)源于累加器A中的數(shù)據(jù),或累加器B中的數(shù)據(jù),或來(lái)自數(shù)據(jù)總線CB的數(shù)據(jù)存儲(chǔ)器操作數(shù),或來(lái)自T寄存器中的數(shù)據(jù)。
2、ALU輸出
輸出為40位,被送往累加器A或B
3、溢出與進(jìn)借位
溢出是針對(duì)有符號(hào)數(shù)的,進(jìn)借位是針對(duì)無(wú)符號(hào)數(shù)的。
溢出處理:ALU的飽和邏輯可以處理溢出。當(dāng)發(fā)生溢出、且狀態(tài)寄存器ST1的OVM=1時(shí),則用32位最大正數(shù)00 7FFFFFFFh(正向溢出)或最大負(fù)數(shù)FF 80000000h(負(fù)向溢出)加載累加器。
關(guān)于進(jìn)借位:
可以用來(lái)支持?jǐn)U展精度的算術(shù)運(yùn)算,利用兩個(gè)條件操作數(shù)C和NC,可以根據(jù)進(jìn)位位的狀態(tài),進(jìn)行分支轉(zhuǎn)移、調(diào)用與返回操作。
2、累加器A和B
1、作用:存放運(yùn)算前后的數(shù)據(jù)
2、結(jié)構(gòu):一共40位,高8位是保護(hù)位,防止在累加運(yùn)算中產(chǎn)生溢出
3、在存儲(chǔ)器中的存儲(chǔ)位置:
4、AB異同
累加器A和B的差別僅在于累加器A的31~16位可以用作乘法器的一個(gè)輸入。
3、桶形移位器的功能
桶形移位器用于格式化操作
長(zhǎng)啥樣:
1、定標(biāo)的含義:
當(dāng)數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)送入累加器或與累加器中的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),先通過(guò)它進(jìn)行0~16位左移然后再進(jìn)行運(yùn)算。
2、歸一化的作用:
方便指數(shù)運(yùn)算
3、為何要擴(kuò)展符號(hào)位
進(jìn)行符號(hào)保護(hù)
4、乘法/加法單元
C54x系列產(chǎn)品的CPU有一個(gè)17 x 17的硬件乘法器,這個(gè)乘法器與一個(gè)40位專用累加器相連接,構(gòu)成了乘法/累加單元MAC。
這個(gè)乘法器能夠完成帶符號(hào)與不帶符號(hào)的乘法運(yùn)算。
有符號(hào)乘法:使每個(gè)16位操作數(shù)擴(kuò)展成17位有符號(hào)數(shù)。
無(wú)符號(hào)乘法:使每個(gè)16位操作數(shù)的前面加個(gè)0
無(wú)符號(hào)數(shù)與有符號(hào)數(shù)乘法:使一個(gè)16位操作數(shù)前面加一個(gè)0,另一個(gè)16位操作數(shù)符號(hào)擴(kuò)展為17位有符號(hào)數(shù),以完成相乘運(yùn)算。
乘法器工作在小數(shù)相乘方式(狀態(tài)寄存器ST1中的FRCT位=1)時(shí),乘法結(jié)果左移1位,以消除多余的符號(hào)位。
功能:
乘法器/加法器單元可以在一個(gè)流水線狀態(tài)周期內(nèi)完成一次乘法累加(MAC)運(yùn)算
5、CPU狀態(tài)與控制寄存器
有3個(gè)狀態(tài)控制寄存器:狀態(tài)寄存器ST0、狀態(tài)寄存器ST1和處理工作模式狀態(tài)寄存器PMST
ST0和ST1中包含有各種工作條件和工作方式的狀態(tài);
PMST中包含存儲(chǔ)器的設(shè)置狀態(tài)及其它控制信息.
這些寄存器是存儲(chǔ)器尋址,所以可以把三個(gè)寄存器的內(nèi)容存入數(shù)據(jù)存儲(chǔ)器并能從數(shù)據(jù)存儲(chǔ)器讀出。
在存儲(chǔ)器中的排布是這樣的:
ST0
ARP:輔助寄存器操作,指定用于兼容模式下間接尋址的輔助寄存器
TC:測(cè)試控制標(biāo)志,存儲(chǔ)算術(shù)運(yùn)算單元ALU的測(cè)試位操作結(jié)果
C:進(jìn)位標(biāo)志位
OVA:累加器A的溢出標(biāo)志
OVB:累加器B的溢出標(biāo)志
DP:數(shù)據(jù)存儲(chǔ)器頁(yè)指針,用于與指令中7位偏移量共同確定間接尋址的地址。
**處理器工作方式狀態(tài)寄存器(PMST) **
IPTR:中斷矢量指針,指定中斷矢量表的存放位置
MP/MC’:微處理器工作方式位。該引腳為0允許使能并尋址片內(nèi)ROM;為1不能利用片內(nèi)ROM。
OVLY:為1時(shí)允許片內(nèi)雙尋址數(shù)據(jù)RAM塊映射到程序空間
DROM:數(shù)據(jù)ROM,決定片內(nèi)ROM是否可以映射到數(shù)據(jù)空間。
6、內(nèi)部總線結(jié)構(gòu)
TMS320C54x片內(nèi)有一組程序總線、兩組數(shù)據(jù)讀總線、一組數(shù)據(jù)寫(xiě)總線。
程序總線(PB):16位,傳送取自程序存儲(chǔ)器的指令代碼和立即操作數(shù)
數(shù)據(jù)總線(CB、DB和EB):16位,CB和DB傳送讀自數(shù)據(jù)存儲(chǔ)器的操作數(shù);CB用于雙數(shù)據(jù)讀、長(zhǎng)數(shù)據(jù)(32位)讀高16位,DB用于單數(shù)據(jù)讀、雙數(shù)據(jù)讀、長(zhǎng)數(shù)據(jù)(32位)讀低16位、外設(shè)讀;EB用于傳送寫(xiě)到存儲(chǔ)器的數(shù)據(jù)。
地址總線(PAB、CAB、DAB和EAB):16位,用于傳送執(zhí)行指令所需的地址。
PAB傳送程序的地址;CAB傳送讀數(shù)據(jù)需要的地址。
7、哈佛結(jié)構(gòu)存儲(chǔ)空間分配
C54x中,片內(nèi)存儲(chǔ)器的型式有DARAM、SARAM和ROM三種,取決于芯片的型號(hào)。
RAM總是安排到數(shù)據(jù)存儲(chǔ)空間,但也可以構(gòu)成程序存儲(chǔ)空間。
ROM一般構(gòu)成程序存儲(chǔ)空間,也可以部分地安排到數(shù)據(jù)存儲(chǔ)空間。
8、程序存儲(chǔ)器
1、為何將ROM分塊:
2、復(fù)位中斷向量:
9、數(shù)據(jù)存儲(chǔ)器
RAM分塊目的:
為了提高處理器的性能,片內(nèi)RAM也細(xì)分成若干塊。
分塊后,用戶可以在同一個(gè)周期內(nèi)從同一塊DARAM取出兩個(gè)操作數(shù),并將數(shù)據(jù)寫(xiě)入到另一塊DARAM中。
10、(MMR)存儲(chǔ)器映像寄存器
11、復(fù)位電路以及片外電路
具有監(jiān)視(Watchdog)功能的自動(dòng)復(fù)位電路。它除了具有上電復(fù)位功能外,還具有監(jiān)視系統(tǒng)運(yùn)行并在系統(tǒng)發(fā)生故障或死機(jī)時(shí)再次進(jìn)行復(fù)位的能力。
其基本原理是:為電路提供一個(gè)用于監(jiān)視系統(tǒng)運(yùn)行的監(jiān)視線,當(dāng)系統(tǒng)正常運(yùn)行時(shí),應(yīng)在規(guī)定的時(shí)間內(nèi)給監(jiān)視線提供一個(gè)高低電平發(fā)生變化的信號(hào),如果在規(guī)定的時(shí)間內(nèi)這個(gè)信號(hào)不發(fā)生變化,自動(dòng)復(fù)位電路就認(rèn)為系統(tǒng)運(yùn)行不正常并重新對(duì)系統(tǒng)進(jìn)行復(fù)位。
在片外圍電路:有兩個(gè)通用IO引腳,受軟件控制。
XF:輸出
BIO:輸入
12、外設(shè)接口與時(shí)序
外設(shè)接口引線由三部分組成:地址總線、數(shù)據(jù)總線、一組控制信號(hào)。
作用:對(duì)IO口或者片外存儲(chǔ)器進(jìn)行尋址。
外部總線引腳說(shuō)明:
13、利用軟件等待實(shí)現(xiàn)接口的速度配合
首先復(fù)習(xí)軟件等待狀態(tài)發(fā)生器(SWWSR) :
結(jié)構(gòu):
功能:將外部總線周期延長(zhǎng)多達(dá)7個(gè)機(jī)器周期,方便地與外部慢速器件相接口。
為什么要對(duì)外部存儲(chǔ)器分塊 ?
協(xié)調(diào)不同速度的外存器件。
連接圖:
本例中C54x的機(jī)器周期為25ns(40MHz),若外部器件的存取時(shí)間小于15ns,可以不插入等待狀態(tài)。因此例中的數(shù)據(jù)存儲(chǔ)器可以不插入等待狀態(tài),但程序存儲(chǔ)器和A/D、D/A外部設(shè)備應(yīng)分別插入3個(gè)(75ns)和5個(gè)(125ns)等待狀態(tài)。
此時(shí)軟件等待狀態(tài)寄存器SWWSR應(yīng)配置為:
14、中斷處理
1、中斷來(lái)源
硬件驅(qū)動(dòng):受外部中斷口信號(hào)觸發(fā)的外部硬件中斷;受片內(nèi)外圍電路信號(hào)觸發(fā)的內(nèi)部硬件中斷;
軟件驅(qū)動(dòng):程序指令(INTR、TRAP、RESET)
2、中斷分類(lèi)
中斷分為可屏蔽中斷和非屏蔽中斷。
可屏蔽中斷:可以用軟件屏蔽或開(kāi)放
非屏蔽中斷:C54x總是響應(yīng)所有軟件中斷,兩個(gè)外部硬件中斷RS’、NMI’
3、中斷處理過(guò)程
1、接收中斷請(qǐng)求
2、響應(yīng)中斷
3、執(zhí)行中斷服務(wù)程序
可屏蔽中斷處理過(guò)程:
非可屏蔽中斷處理過(guò)程:
4、實(shí)現(xiàn)中斷的相關(guān)問(wèn)題
1、中斷向量地址的計(jì)算
復(fù)位后的初始地址計(jì)算
1、取IPTR的值
2、查表得中斷向量序號(hào)
3、將十六進(jìn)制的中斷向量序號(hào)左移2位
4、將1與3相加得中斷向量地址
具體來(lái)一題:復(fù)位后的初始地址計(jì)算
復(fù)位后,IPTR的所有位被置1(IPTR = 1FFh),RS中斷向量序號(hào)為00;左移2位與IPTR相加,得到最終結(jié)果。
注意1FFh會(huì)將復(fù)位向量銀蛇到程序存儲(chǔ)器的511頁(yè)空間,此時(shí)RS向量不能被重新銀蛇,總是指向程序空間的FF80h。
當(dāng)加載除了1FFh之外的值到IPTR后,中斷向量可以映射到其他地址。如:
其他例子:
15、自舉加載
自舉加載的任務(wù):
自舉加載的途徑:
1、從一個(gè)外部的8位或者16位的EPROM加載
2、由主處理器從以下幾個(gè)途徑加載:
HPI總線、
8位或16位并行I/0、
任何一個(gè)串行口、
從用戶定義的地址熱自舉。
關(guān)于程序的起點(diǎn):
第三章:尋址方式以及指令系統(tǒng)
1、尋址分類(lèi)
1、立即數(shù)尋址:指令中嵌有一個(gè)固定的數(shù)
2、絕對(duì)地址尋址:指令中有一個(gè)固定的地址
3、累加器尋址:按累加器內(nèi)的地址去訪問(wèn)程序存儲(chǔ)空間中的一個(gè)單元
4、直接尋址:指令中的低7bit是一個(gè)數(shù)據(jù)頁(yè)的偏移地址,而所在的數(shù)據(jù)頁(yè)由數(shù)據(jù)頁(yè)指針DP或SP決定,該偏移地址加上DP和SP的值決定了在數(shù)據(jù)存儲(chǔ)空間中的實(shí)際地址
5、間接尋址:按照輔助寄存器中的地址訪問(wèn)數(shù)據(jù)存儲(chǔ)空間
6、存儲(chǔ)器映象寄存器尋址:修改存儲(chǔ)器映射寄存器的值,不影響當(dāng)前DP或SP的值
7、堆棧尋址:把數(shù)據(jù)壓入和彈出系統(tǒng)堆棧
1、立即數(shù)尋址
特點(diǎn):
指令中包含有執(zhí)行指令所需要的操作數(shù)。
立即數(shù)分為3、5、8或9位的短立即數(shù)和16位的長(zhǎng)立即數(shù)兩種。
短立即數(shù)可包含在單字或雙字指令中,長(zhǎng)立即數(shù)在雙字指令中。
語(yǔ)法注意點(diǎn):
在操作數(shù)前面需要加#字號(hào)來(lái)說(shuō)明該操作數(shù)為立即數(shù)。否則會(huì)把該操作數(shù)誤認(rèn)為是一個(gè)地址,從而把立即數(shù)尋址變成絕對(duì)地址尋址。
LD:裝入指令
LD #93h,A ; 把立即數(shù)1000H裝入累加器A3、累加器尋址
方法:用累加器中的數(shù)值作為地址來(lái)讀寫(xiě)程序存儲(chǔ)器;
特點(diǎn):可用來(lái)完成程序存儲(chǔ)器單元的數(shù)據(jù)與數(shù)據(jù)存儲(chǔ)器單元的數(shù)據(jù)進(jìn)行交換。
4、直接尋址
直接尋址是指令代碼包含了數(shù)據(jù)存儲(chǔ)器地址的低7位。這7位dma作為偏移地址與數(shù)據(jù)頁(yè)指針(DP)或堆棧指針(SP)結(jié)合共同形成16位的數(shù)據(jù)存儲(chǔ)空間實(shí)際地址。
數(shù)據(jù)頁(yè)分為512頁(yè),每頁(yè)128字節(jié),共有64k。
用一個(gè)符號(hào)或者一個(gè)常數(shù)來(lái)確定偏移地址。偏移地址操作數(shù)前應(yīng)該加@號(hào)。
分為兩種方式:
CPL=0 7位dma域與9bit的DP相結(jié)合 形成16位的數(shù)據(jù)存儲(chǔ)器地址。
CPL=1 7位dma域加上(正偏移)SP 的值形成16位的數(shù)據(jù)存儲(chǔ)器地址。
例1:采用直接尋址的方式,將立即數(shù)1234h和5678h分別存放到數(shù)據(jù)存儲(chǔ)空間的0089h和2009h地址單元中。
DAT0 .set 09h Start: LD #0001H,DP ;設(shè)置DP指針。加載指令。STM #2000H,SP ;設(shè)置SP指針。存儲(chǔ)指令。 BK0: RSBX CPL ;對(duì)狀態(tài)寄存器ST1中的編輯方式位清0。與DP運(yùn)算ST #1234H,DAT0 ;將立即數(shù)1234H存入DAT0地址單元中。 BK1: SSBX CPL ;對(duì)狀態(tài)寄存器ST1中的編輯方式位置1。與SP運(yùn)算ST #5678H,DAT0 ;將立即數(shù)1234H存入DAT0地址單元中。例2:直接尋址有兩種方式,分別是什么?如何控制當(dāng)SP = 2000H,DP = 2,偏移地址為25H時(shí),分別尋址的是哪個(gè)尋址空間的哪個(gè)地址?
解:
用一個(gè)符號(hào)或者常數(shù)來(lái)確定7位偏移值,與DP共同形成16位的數(shù)據(jù)存儲(chǔ)器實(shí)際地址。
用一個(gè)符號(hào)或者常數(shù)來(lái)確定7位偏移值,與SP共同形成16位的數(shù)據(jù)存儲(chǔ)器實(shí)際地址。
計(jì)算方式如圖:
所以用DP來(lái)算為:0000,0001,0010,0101=> 0125H
用SP來(lái)算為:0010,0000,0010,0101 => 2025H
6、存儲(chǔ)器映象寄存器尋址
功能:用來(lái)修改存儲(chǔ)器映象寄存器。
方法:高9位數(shù)據(jù)存儲(chǔ)器地址置0,利用指令中的低7位地址訪問(wèn)MMR。
特點(diǎn):用來(lái)修改存儲(chǔ)器映象寄存器而不受到當(dāng)前數(shù)據(jù)頁(yè)指針DP或者堆棧指針SP值的影響。
舉例:
7、堆棧尋址
功能:用來(lái)在中斷和子程序調(diào)用時(shí)自動(dòng)保存程序計(jì)數(shù)器(PC)中的數(shù)值,也能用來(lái)保護(hù)現(xiàn)場(chǎng)或傳送參數(shù) .
特點(diǎn):
從高地址向低地址方向生長(zhǎng),SP)來(lái)管理堆棧,SP始終指向堆棧中所存放的最后一個(gè)數(shù)據(jù),即SP指針始終指向棧頂。在壓入操作時(shí),先減小SP的值,再將數(shù)據(jù)壓入堆棧;在彈出操作時(shí),先從堆棧彈出數(shù)據(jù),再增加SP的值。
PSHD Smem ; 把一個(gè)數(shù)據(jù)存儲(chǔ)器的值壓入堆棧 PSHM MMR ; 把一個(gè)存儲(chǔ)器映射寄存器的值壓入堆棧 POPD Smem ; 從堆棧中彈出一個(gè)數(shù)據(jù)到數(shù)據(jù)存儲(chǔ)器單元 POPM MMR ; 從堆棧彈出一個(gè)數(shù)據(jù)到存儲(chǔ)器映射寄存器2、程序地址的生成
程序地址生成器(PAGEN)構(gòu)成:
1、程序計(jì)數(shù)器(PC)
2、重復(fù)計(jì)數(shù)器(RC)
3、塊重復(fù)計(jì)數(shù)器(BRC)
4、塊重復(fù)起始地址寄存器(RSA)
5、塊重復(fù)結(jié)束地址寄存器(REA)
核心:
16位程序計(jì)數(shù)器(PC)內(nèi)保存某個(gè)內(nèi)部或外部程序存儲(chǔ)器的地址。
第七章:DSPC55x處理器軟件開(kāi)發(fā)流程
匯編器:將匯編源代碼轉(zhuǎn)換成機(jī)器語(yǔ)言
鏈接器:將多個(gè)目標(biāo)文件結(jié)合成一個(gè)可執(zhí)行文件
歸檔器:把一組文件歸檔為一個(gè)庫(kù),供用戶使用
1、軟件設(shè)計(jì)
主要分為兩種程序設(shè)計(jì)思路
1、程序自己完成任務(wù)調(diào)度
運(yùn)行效率高,對(duì)硬件中斷響應(yīng)快,程序運(yùn)行穩(wěn)定。是和任務(wù)較為單一,實(shí)時(shí)性較強(qiáng)的應(yīng)用。
2、由嵌入式操作系統(tǒng)完成任務(wù)調(diào)度
用于同時(shí)完成多個(gè)任務(wù)。
下面是使用操作系統(tǒng)的代碼框架
2、任務(wù)狀態(tài)
任務(wù)是一個(gè)無(wú)限循環(huán),它必須處于下面的5個(gè)狀態(tài)之一:
1、休眠狀態(tài):駐村與內(nèi)存中,并沒(méi)有被系統(tǒng)內(nèi)核調(diào)用
2、就緒狀態(tài):任務(wù)已經(jīng)準(zhǔn)備好,但是任務(wù)優(yōu)先級(jí)較低,暫時(shí)不能運(yùn)行
3、運(yùn)行狀態(tài):任務(wù)擁有CPU使用權(quán),正在運(yùn)行
4、掛起狀態(tài):任務(wù)正在等待一個(gè)事件的發(fā)生以結(jié)束目前的等待(如等待外設(shè)的IO操作、等待共享資源、等待定時(shí)或者超時(shí)信息等事件)
5、發(fā)生中斷時(shí),CPU進(jìn)入中斷服務(wù)程序,而暫時(shí)不能運(yùn)行當(dāng)前的任務(wù),任務(wù)就進(jìn)入了被中斷態(tài)。
3、C語(yǔ)言程序開(kāi)發(fā)優(yōu)化
對(duì)I/O空間進(jìn)行尋址關(guān)鍵字ioport
C55x處理器包含數(shù)據(jù)空間和I/O空間,為了在C/C++中對(duì)I/O空間進(jìn)行尋址,編譯器給出了關(guān)鍵字ioport,以支持I/O尋址模式。
ioport關(guān)鍵字可以用在數(shù)組、結(jié)構(gòu)體、聯(lián)合、以及枚舉類(lèi)型當(dāng)中。
當(dāng)用在數(shù)組中時(shí),ioport可以作為數(shù)組中的元素;
在結(jié)構(gòu)體中使用ioport,只能指向ioport數(shù)據(jù)的指針而不能直接作為結(jié)構(gòu)的成員。
ioport類(lèi)型只能用來(lái)聲明全局或靜態(tài)變量,如果在本地變量中使用ioport類(lèi)型,則變量必須用指針聲明。接下來(lái)給出指針聲明ioport類(lèi)型的例子:
應(yīng)當(dāng)注意聲明ioport類(lèi)型的指針只有16位,這是因?yàn)镮/O空間是16位尋址,而不受大/小存儲(chǔ)器模式的限制。
在printf()中不能直接引用ioport指針,如果要引用,則必須進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換“void *”,具體例子如下:
給出在本地變量中使用ioport類(lèi)型的例子:
int *ioport ioport_pointer; //ioport指針 int i; int j; void foo(void) {ioport_pointer = &i;j = *ioport_pointer; }編譯結(jié)果如下:
_foo: MOV #_i,port(#_ioport_pointer) ; 存儲(chǔ)i在I/O空間的地址 MOV port(#_ioport_pointer),AR3 ; 載入i的地址 MOV *AR3,AR1 ; 將i的內(nèi)容存放到AR1中 MOV AR1,*abs16(#_j) ; 將i的內(nèi)容保存到j(luò) return**interrupt關(guān)鍵字 **
中斷操作需要使用特定的寄存器保存規(guī)則,并具有特殊的返回順序。
C55x編譯器使用了關(guān)鍵字interrupt定義中斷函數(shù)。
當(dāng)C/C++代碼被中斷時(shí),中斷程序必須保存所有與程序有關(guān)的寄存器。
當(dāng)使用interrupt關(guān)鍵字定義函數(shù)時(shí),中斷函數(shù)必須返回空并且沒(méi)有參數(shù)傳遞。
中斷函數(shù)可以定義本地變量并且使用對(duì)戰(zhàn):
c_int00是C/C++程序的入口點(diǎn),這個(gè)函數(shù)名被系統(tǒng)復(fù)位中斷保留,該中斷服務(wù)程序用來(lái)初始化系統(tǒng)并調(diào)用main函數(shù)。
**onchip關(guān)鍵字 **
onchip關(guān)鍵字的作用:告訴編譯器由該關(guān)鍵字定義的指針?biāo)赶虻臄?shù)據(jù)可以作為一個(gè)雙乘法指令中的操作數(shù)。
如果onchip關(guān)鍵字向函數(shù)傳遞數(shù)據(jù),或者最終引用的數(shù)據(jù)使用onchip定義的,則該數(shù)據(jù)必須在片上。
如果該數(shù)據(jù)在片外,則當(dāng)通過(guò)數(shù)據(jù)總線訪問(wèn)該數(shù)據(jù)時(shí)將產(chǎn)生一個(gè)總線錯(cuò)誤。
下面喲個(gè)onchip定義數(shù)組和指針的例子:
4、通用目標(biāo)文件格式
匯編器和鏈接器產(chǎn)生的可執(zhí)行文件所采用的格式是通用目標(biāo)文件格式(COFF),采用通用目標(biāo)文件格式有助于實(shí)現(xiàn)模塊化編程。
匯編器和鏈接器都支持用戶創(chuàng)建多個(gè)代碼段和數(shù)據(jù)段,這也有助于用戶的靈活編程。
編譯器產(chǎn)生的可以重新定位的代碼和數(shù)據(jù)塊叫做段。
段可以分成兩大類(lèi)-初始化段和未初始化段。
初始化段裝有數(shù)據(jù)或代碼。
常用**初始化段包括代碼段(.text段)、常數(shù)段(.const段)**等。
未初始化段的作用是在存儲(chǔ)器中保留一定空間供程序生成和存儲(chǔ)變量使用。
常用的未初始化段包括堆棧和系統(tǒng)堆棧段(.stack和.sysstack)、存儲(chǔ)全局和靜態(tài)變量的.bss段以及為分配動(dòng)態(tài)存儲(chǔ)器保留的.sysmem段等。
5、C/C++和匯編語(yǔ)言中段的分配
1、匯編語(yǔ)言中為代碼分配段的例子:
.text MOV #10,AC0 MOV AC0,AC12、匯編語(yǔ)言中為數(shù)據(jù)分配段的例子:
.data .word 9,10 .word 11,126、鏈接命令文件
鏈接器對(duì)匯編器編譯好的代碼和數(shù)據(jù)進(jìn)行鏈接時(shí),所依據(jù)的是連接命令文件,即.cmd文件。
在連接命令文件中定義了段名,段的起始地址,段的長(zhǎng)度,初始化段的初始值等。
下面給出一個(gè).cmd文件的具體示例:
第八章:DSP硬件設(shè)計(jì)基礎(chǔ)
1、主要芯片種類(lèi)
TI的DSP芯片
三大系列
1、TMS320C2000系列,DSP控制器,集成了flash存儲(chǔ)器、告訴A/D轉(zhuǎn)換器以及可靠的CAN模塊
以及數(shù)字馬達(dá)控制的外圍模塊,適用于三相電動(dòng)機(jī)、變頻器等高速實(shí)時(shí)工控產(chǎn)品等需要數(shù)字化的控制領(lǐng)域
2、TMS320C5000系列,16位定點(diǎn)DSP。主要用于通信鄰域,如IP電話機(jī)和IP電話網(wǎng)關(guān)、數(shù)字式助聽(tīng)器
便攜式聲音/數(shù)據(jù)/視頻產(chǎn)品。
3、TMS320C6000系列,采用新的超長(zhǎng)指令字結(jié)構(gòu)設(shè)計(jì)芯片。
主要應(yīng)用于
1)、數(shù)字通信 完成FFT、信道和噪聲估計(jì)、信道糾錯(cuò)、干擾估計(jì)和檢測(cè)等
2)、圖像處理 完成圖像壓縮、圖像傳輸、模式及光學(xué)特性識(shí)別、加密/解密、圖像增強(qiáng)等。
2、DSP系統(tǒng)的設(shè)計(jì)思路
3、信號(hào)線的布置
信號(hào)的過(guò)沖與阻尼震蕩:
1、無(wú)終端補(bǔ)償(NO Termination)
直接進(jìn)行信號(hào)的傳輸,對(duì)終端不進(jìn)行補(bǔ)償
2、串電阻補(bǔ)償(Serial Res)
串電阻補(bǔ)償方式就是在點(diǎn)對(duì)點(diǎn)的連接中直接傳入一個(gè)電阻,這將減少外來(lái)的電壓波形的幅值。
合適的串電阻補(bǔ)償將使信號(hào)正確終止,消除接收器的過(guò)沖現(xiàn)象。
4、DSP最小系統(tǒng)設(shè)計(jì)
DSP最小系統(tǒng)就是滿足DSP運(yùn)行的最小硬件組成,任何一個(gè)DSP硬件系統(tǒng)中都必須包括最小系統(tǒng)的各個(gè)組成部分,最小系統(tǒng)由電源電路、復(fù)位電路、時(shí)鐘電路、JTAG接口電路和程序加載部分等組成
第九章、DSP典型算法設(shè)計(jì)實(shí)例
1、掌握高通濾波器
2、巴特沃斯濾波器(Butterworth)
3、切比雪夫?yàn)V波器
4、卷積算法
卷積和的運(yùn)算在圖形上表示可分為四步:
1、翻轉(zhuǎn):先在變量坐標(biāo)m上作圖x(m)和h(m),將h(m)以m=0的垂直軸為對(duì)稱軸翻轉(zhuǎn)成h(-m);
2、移位:將h(-m)移位n,即得h(n-m)。當(dāng)n為正整數(shù),右移n位。當(dāng)n為負(fù)整數(shù),左移n位。
3、相乘:再將h(n-m)和x(m)的相同m值的對(duì)應(yīng)點(diǎn)值相乘。
4、相加:把以上所有對(duì)應(yīng)點(diǎn)的乘積疊加起來(lái),得到y(tǒng)(n)的值。
5、無(wú)限沖激響應(yīng)濾波器(IIR)
第十一章,語(yǔ)音技術(shù)識(shí)別
1、人與人之間、人與機(jī)器之間的語(yǔ)音信息處理過(guò)程
2、典型語(yǔ)音識(shí)別系統(tǒng)實(shí)現(xiàn)過(guò)程
語(yǔ)音識(shí)別原理框圖:
第十三章 物聯(lián)網(wǎng)與智能家居
互聯(lián)網(wǎng)協(xié)議第六版:IPv6
總結(jié)
以上是生活随笔為你收集整理的【DSP复习主要知识点】(大概)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDU嵌入式实验课程大作业分析报告
- 下一篇: 好猫多少钱一包啊?