目錄
- 第一章
- 1、數字系統對比模擬系統
- 2、馮諾依曼、哈佛架構
- 3、CISC、RISC
- 4、DSP特點
- 5、cpu流水線作用
- 6、DSP芯片優點
- 第二章:DSP芯片結構原理
- 1、ALU(算數邏輯運算單元)
- 2、累加器A和B
- 3、桶形移位器的功能
- 4、乘法/加法單元
- 5、CPU狀態與控制寄存器
- 6、內部總線結構
- 7、哈佛結構存儲空間分配
- 8、程序存儲器
- 9、數據存儲器
- 10、(MMR)存儲器映像寄存器
- 11、復位電路以及片外電路
- 12、外設接口與時序
- 13、利用軟件等待實現接口的速度配合
- 14、中斷處理
- 15、自舉加載
- 第三章:尋址方式以及指令系統
- 1、尋址分類
- 2、程序地址的生成
- 第七章:DSPC55x處理器軟件開發流程
- 1、軟件設計
- 2、任務狀態
- 3、C語言程序開發優化
- 4、通用目標文件格式
- 5、C/C++和匯編語言中段的分配
- 6、鏈接命令文件
- 第八章:DSP硬件設計基礎
- 1、主要芯片種類
- 2、DSP系統的設計思路
- 3、信號線的布置
- 4、DSP最小系統設計
- 第九章、DSP典型算法設計實例
- 1、掌握高通濾波器
- 2、巴特沃斯濾波器(Butterworth)
- 3、切比雪夫濾波器
- 4、卷積算法
- 5、無限沖激響應濾波器(IIR)
- 第十一章,語音技術識別
- 1、人與人之間、人與機器之間的語音信息處理過程
- 2、典型語音識別系統實現過程
- 第十三章 物聯網與智能家居
- 互聯網協議第六版:IPv6
第一章
1、數字系統對比模擬系統
數字化的優點:
1.高度的程控能力與靈活性
2、更高的精度
3、可靠性與可重復性得到了改善
4、大規模集成
5、接口方便
6、靈活性好
7、保密性好
8、特殊應用(只有數字能做):信息無失真壓縮、線性相位濾波器、軟件無線電技術
模擬與數字各有所長:
1、實時性
模擬:除了電路引入的延時外,處理是實時的
數字:取決于處理器的速度
2、高頻信號的處理
模擬:可以處理包括微波毫米波乃至光波信號
數字:按照奈奎斯特準則的要求,受S/H、A/D 和處理速度的限制
3、模擬與數字信號轉換
現實世界的信號大多是模擬的,要想完成數字處理就必須進行轉換。
2、馮諾依曼、哈佛架構
兩種結構的目的旨在從存儲器存取數據。區別在于程序/數據總線和空間是否分開。
馮諾依曼結構:2進制與程序內存思想
哈佛架構:
哈佛結構的特點:
1、將程序與數據存儲空間分開
2、各有獨立的地址總線和數據總線
3、取址和讀數可以同時進行
4、速度大大提高
3、CISC、RISC
CISC:復雜指令計算機
RISC: 精簡指令計算機
RISC和CISC的區別:
(1) 指令系統:RISC 設計者把主要精力放在那些經常使用的指令上,盡量使它們具有簡單高效的特色。對不常用的功能,常通過組合指令來完成。而CISC 計算機的指令系統比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務效率較高。
(2) 存儲器操作:RISC 對存儲器操作有限制,使控制簡單化;而CISC 機器的存儲器操作指令多,操作直接。
(3) 程序:RISC 匯編語言程序一般需要較大的內存空間,實現特殊功能時程序復雜,不易設計;而CISC 匯編語言程序編程相對簡單,科學計算及復雜操作的程序設計相對容易,效率較高。
4、DSP特點
1、哈佛結構
2、硬件乘法/累加器
3、多總線結構
4、多DSP協調工作模式
5、特殊DSP指令
6、多級流水線
5、cpu流水線作用
多級流水線技術(PipeLine)
作用:提高取地址效率,減少等待時間。
圖示:
流水線深度可達到6級。
6、DSP芯片優點
哈佛結構
多總線結構和多處理單元
流水線技術
特殊的DSP指令
指令周期短
運算精度高
硬件配置強
耗電省
第二章:DSP芯片結構原理
C54x系列DSP器件的CPU基本組成如下:
1、40位算數邏輯單元
2、2個40位累加器寄存器
3、支持16~31位移位范圍的桶形移位寄存器
4、乘法累加單元MAC
5、16位臨時寄存器
6、16位的轉換寄存器(TRN)
7、比較、選擇、存儲單元(CSSU)
8、指數編碼器
9、CPU狀態和控制寄存器
10、兩個地址發生器
重點:基本性能、CPU結構、內部總線結構、存儲器結構、片外圍電路,這里以C54x芯片為主要切入點。
需要注重的地方
1、多總線結構
2、40位算術邏輯單元(ALU)
3、17 x 17并行乘法器
4、比較、選擇和存儲單元(CSSU)
5、指數編碼器
6、兩個地址發生器
7、數據總線
8、總線尋址空間
9、三種存儲器空間
10、單指令循環和塊循環
1、ALU(算數邏輯運算單元)
1、ALU如何獲取數據
ALU有兩個輸入端:
X輸入端的數據來源于移位寄存器的輸出或來自數據總線DB 的數據存儲器操作數
Y輸入端的數據來源于累加器A中的數據,或累加器B中的數據,或來自數據總線CB的數據存儲器操作數,或來自T寄存器中的數據。
2、ALU輸出
輸出為40位,被送往累加器A或B
3、溢出與進借位
溢出是針對有符號數的,進借位是針對無符號數的。
溢出處理:ALU的飽和邏輯可以處理溢出。當發生溢出、且狀態寄存器ST1的OVM=1時,則用32位最大正數00 7FFFFFFFh(正向溢出)或最大負數FF 80000000h(負向溢出)加載累加器。
關于進借位:
可以用來支持擴展精度的算術運算,利用兩個條件操作數C和NC,可以根據進位位的狀態,進行分支轉移、調用與返回操作。
2、累加器A和B
1、作用:存放運算前后的數據
2、結構:一共40位,高8位是保護位,防止在累加運算中產生溢出
3、在存儲器中的存儲位置:
4、AB異同
累加器A和B的差別僅在于累加器A的31~16位可以用作乘法器的一個輸入。
3、桶形移位器的功能
桶形移位器用于格式化操作
長啥樣:
1、定標的含義:
當數據存儲器的數據送入累加器或與累加器中的數據進行運算時,先通過它進行0~16位左移然后再進行運算。
2、歸一化的作用:
方便指數運算
3、為何要擴展符號位
進行符號保護
4、乘法/加法單元
C54x系列產品的CPU有一個17 x 17的硬件乘法器,這個乘法器與一個40位專用累加器相連接,構成了乘法/累加單元MAC。
這個乘法器能夠完成帶符號與不帶符號的乘法運算。
有符號乘法:使每個16位操作數擴展成17位有符號數。
無符號乘法:使每個16位操作數的前面加個0
無符號數與有符號數乘法:使一個16位操作數前面加一個0,另一個16位操作數符號擴展為17位有符號數,以完成相乘運算。
乘法器工作在小數相乘方式(狀態寄存器ST1中的FRCT位=1)時,乘法結果左移1位,以消除多余的符號位。
功能:
乘法器/加法器單元可以在一個流水線狀態周期內完成一次乘法累加(MAC)運算
5、CPU狀態與控制寄存器
有3個狀態控制寄存器:狀態寄存器ST0、狀態寄存器ST1和處理工作模式狀態寄存器PMST
ST0和ST1中包含有各種工作條件和工作方式的狀態;
PMST中包含存儲器的設置狀態及其它控制信息.
這些寄存器是存儲器尋址,所以可以把三個寄存器的內容存入數據存儲器并能從數據存儲器讀出。
在存儲器中的排布是這樣的:
ST0
ARP:輔助寄存器操作,指定用于兼容模式下間接尋址的輔助寄存器
TC:測試控制標志,存儲算術運算單元ALU的測試位操作結果
C:進位標志位
OVA:累加器A的溢出標志
OVB:累加器B的溢出標志
DP:數據存儲器頁指針,用于與指令中7位偏移量共同確定間接尋址的地址。
**處理器工作方式狀態寄存器(PMST) **
IPTR:中斷矢量指針,指定中斷矢量表的存放位置
MP/MC’:微處理器工作方式位。該引腳為0允許使能并尋址片內ROM;為1不能利用片內ROM。
OVLY:為1時允許片內雙尋址數據RAM塊映射到程序空間
DROM:數據ROM,決定片內ROM是否可以映射到數據空間。
6、內部總線結構
TMS320C54x片內有一組程序總線、兩組數據讀總線、一組數據寫總線。
程序總線(PB):16位,傳送取自程序存儲器的指令代碼和立即操作數
數據總線(CB、DB和EB):16位,CB和DB傳送讀自數據存儲器的操作數;CB用于雙數據讀、長數據(32位)讀高16位,DB用于單數據讀、雙數據讀、長數據(32位)讀低16位、外設讀;EB用于傳送寫到存儲器的數據。
地址總線(PAB、CAB、DAB和EAB):16位,用于傳送執行指令所需的地址。
PAB傳送程序的地址;CAB傳送讀數據需要的地址。
7、哈佛結構存儲空間分配
C54x中,片內存儲器的型式有DARAM、SARAM和ROM三種,取決于芯片的型號。
RAM總是安排到數據存儲空間,但也可以構成程序存儲空間。
ROM一般構成程序存儲空間,也可以部分地安排到數據存儲空間。
8、程序存儲器
1、為何將ROM分塊:
2、復位中斷向量:
9、數據存儲器
RAM分塊目的:
為了提高處理器的性能,片內RAM也細分成若干塊。
分塊后,用戶可以在同一個周期內從同一塊DARAM取出兩個操作數,并將數據寫入到另一塊DARAM中。
10、(MMR)存儲器映像寄存器
11、復位電路以及片外電路
具有監視(Watchdog)功能的自動復位電路。它除了具有上電復位功能外,還具有監視系統運行并在系統發生故障或死機時再次進行復位的能力。
其基本原理是:為電路提供一個用于監視系統運行的監視線,當系統正常運行時,應在規定的時間內給監視線提供一個高低電平發生變化的信號,如果在規定的時間內這個信號不發生變化,自動復位電路就認為系統運行不正常并重新對系統進行復位。
在片外圍電路:有兩個通用IO引腳,受軟件控制。
XF:輸出
BIO:輸入
12、外設接口與時序
外設接口引線由三部分組成:地址總線、數據總線、一組控制信號。
作用:對IO口或者片外存儲器進行尋址。
外部總線引腳說明:
13、利用軟件等待實現接口的速度配合
首先復習軟件等待狀態發生器(SWWSR) :
結構:
功能:將外部總線周期延長多達7個機器周期,方便地與外部慢速器件相接口。
為什么要對外部存儲器分塊 ?
協調不同速度的外存器件。
連接圖:
本例中C54x的機器周期為25ns(40MHz),若外部器件的存取時間小于15ns,可以不插入等待狀態。因此例中的數據存儲器可以不插入等待狀態,但程序存儲器和A/D、D/A外部設備應分別插入3個(75ns)和5個(125ns)等待狀態。
此時軟件等待狀態寄存器SWWSR應配置為:
14、中斷處理
1、中斷來源
硬件驅動:受外部中斷口信號觸發的外部硬件中斷;受片內外圍電路信號觸發的內部硬件中斷;
軟件驅動:程序指令(INTR、TRAP、RESET)
2、中斷分類
中斷分為可屏蔽中斷和非屏蔽中斷。
可屏蔽中斷:可以用軟件屏蔽或開放
非屏蔽中斷:C54x總是響應所有軟件中斷,兩個外部硬件中斷RS’、NMI’
3、中斷處理過程
1、接收中斷請求
2、響應中斷
3、執行中斷服務程序
可屏蔽中斷處理過程:
非可屏蔽中斷處理過程:
4、實現中斷的相關問題
1、中斷向量地址的計算
復位后的初始地址計算
1、取IPTR的值
2、查表得中斷向量序號
3、將十六進制的中斷向量序號左移2位
4、將1與3相加得中斷向量地址
具體來一題:復位后的初始地址計算
復位后,IPTR的所有位被置1(IPTR = 1FFh),RS中斷向量序號為00;左移2位與IPTR相加,得到最終結果。
注意1FFh會將復位向量銀蛇到程序存儲器的511頁空間,此時RS向量不能被重新銀蛇,總是指向程序空間的FF80h。
當加載除了1FFh之外的值到IPTR后,中斷向量可以映射到其他地址。如:
其他例子:
15、自舉加載
自舉加載的任務:
自舉加載的途徑:
1、從一個外部的8位或者16位的EPROM加載
2、由主處理器從以下幾個途徑加載:
HPI總線、
8位或16位并行I/0、
任何一個串行口、
從用戶定義的地址熱自舉。
關于程序的起點:
第三章:尋址方式以及指令系統
1、尋址分類
1、立即數尋址:指令中嵌有一個固定的數
2、絕對地址尋址:指令中有一個固定的地址
3、累加器尋址:按累加器內的地址去訪問程序存儲空間中的一個單元
4、直接尋址:指令中的低7bit是一個數據頁的偏移地址,而所在的數據頁由數據頁指針DP或SP決定,該偏移地址加上DP和SP的值決定了在數據存儲空間中的實際地址
5、間接尋址:按照輔助寄存器中的地址訪問數據存儲空間
6、存儲器映象寄存器尋址:修改存儲器映射寄存器的值,不影響當前DP或SP的值
7、堆棧尋址:把數據壓入和彈出系統堆棧
1、立即數尋址
特點:
指令中包含有執行指令所需要的操作數。
立即數分為3、5、8或9位的短立即數和16位的長立即數兩種。
短立即數可包含在單字或雙字指令中,長立即數在雙字指令中。
語法注意點:
在操作數前面需要加#字號來說明該操作數為立即數。否則會把該操作數誤認為是一個地址,從而把立即數尋址變成絕對地址尋址。
LD:裝入指令
LD #93h,A ; 把立即數1000H裝入累加器A
3、累加器尋址
方法:用累加器中的數值作為地址來讀寫程序存儲器;
特點:可用來完成程序存儲器單元的數據與數據存儲器單元的數據進行交換。
READA Smem; 以累加器A中的數作為一個程序存儲空間地址,讀取一個字存入數據存儲單元Smem中
WRITA Smem; 從數據存儲單元Smem讀取一個字存入以累加器A為程序存儲空間地址的單元
4、直接尋址
直接尋址是指令代碼包含了數據存儲器地址的低7位。這7位dma作為偏移地址與數據頁指針(DP)或堆棧指針(SP)結合共同形成16位的數據存儲空間實際地址。
數據頁分為512頁,每頁128字節,共有64k。
用一個符號或者一個常數來確定偏移地址。偏移地址操作數前應該加@號。
分為兩種方式:
CPL=0 7位dma域與9bit的DP相結合 形成16位的數據存儲器地址。
CPL=1 7位dma域加上(正偏移)SP 的值形成16位的數據存儲器地址。
例1:采用直接尋址的方式,將立即數1234h和5678h分別存放到數據存儲空間的0089h和2009h地址單元中。
DAT0 .set 09h
Start: LD #0001H,DP ;設置DP指針。加載指令。STM #2000H,SP ;設置SP指針。存儲指令。
BK0: RSBX CPL ;對狀態寄存器ST1中的編輯方式位清0。與DP運算ST #1234H,DAT0 ;將立即數1234H存入DAT0地址單元中。
BK1: SSBX CPL ;對狀態寄存器ST1中的編輯方式位置1。與SP運算ST #5678H,DAT0 ;將立即數1234H存入DAT0地址單元中。
例2:直接尋址有兩種方式,分別是什么?如何控制當SP = 2000H,DP = 2,偏移地址為25H時,分別尋址的是哪個尋址空間的哪個地址?
解:
用一個符號或者常數來確定7位偏移值,與DP共同形成16位的數據存儲器實際地址。
用一個符號或者常數來確定7位偏移值,與SP共同形成16位的數據存儲器實際地址。
計算方式如圖:
所以用DP來算為:0000,0001,0010,0101=> 0125H
用SP來算為:0010,0000,0010,0101 => 2025H
6、存儲器映象寄存器尋址
功能:用來修改存儲器映象寄存器。
方法:高9位數據存儲器地址置0,利用指令中的低7位地址訪問MMR。
特點:用來修改存儲器映象寄存器而不受到當前數據頁指針DP或者堆棧指針SP值的影響。
舉例:
LDM PRD,A ;將PRD的內容裝入累加器A
7、堆棧尋址
功能:用來在中斷和子程序調用時自動保存程序計數器(PC)中的數值,也能用來保護現場或傳送參數 .
特點:
從高地址向低地址方向生長,SP)來管理堆棧,SP始終指向堆棧中所存放的最后一個數據,即SP指針始終指向棧頂。在壓入操作時,先減小SP的值,再將數據壓入堆棧;在彈出操作時,先從堆棧彈出數據,再增加SP的值。
PSHD Smem ; 把一個數據存儲器的值壓入堆棧
PSHM MMR ; 把一個存儲器映射寄存器的值壓入堆棧
POPD Smem ; 從堆棧中彈出一個數據到數據存儲器單元
POPM MMR ; 從堆棧彈出一個數據到存儲器映射寄存器
2、程序地址的生成
程序地址生成器(PAGEN)構成:
1、程序計數器(PC)
2、重復計數器(RC)
3、塊重復計數器(BRC)
4、塊重復起始地址寄存器(RSA)
5、塊重復結束地址寄存器(REA)
核心:
16位程序計數器(PC)內保存某個內部或外部程序存儲器的地址。
第七章:DSPC55x處理器軟件開發流程
匯編器:將匯編源代碼轉換成機器語言
鏈接器:將多個目標文件結合成一個可執行文件
歸檔器:把一組文件歸檔為一個庫,供用戶使用
1、軟件設計
主要分為兩種程序設計思路
1、程序自己完成任務調度
運行效率高,對硬件中斷響應快,程序運行穩定。是和任務較為單一,實時性較強的應用。
2、由嵌入式操作系統完成任務調度
用于同時完成多個任務。
下面是使用操作系統的代碼框架
中斷程序1;
......
中斷程序m;
Main()
{DSP_INIT(){......}; //DSP初始化For(;;) //主循環{if(){};......if(){};}
}
2、任務狀態
任務是一個無限循環,它必須處于下面的5個狀態之一:
1、休眠狀態:駐村與內存中,并沒有被系統內核調用
2、就緒狀態:任務已經準備好,但是任務優先級較低,暫時不能運行
3、運行狀態:任務擁有CPU使用權,正在運行
4、掛起狀態:任務正在等待一個事件的發生以結束目前的等待(如等待外設的IO操作、等待共享資源、等待定時或者超時信息等事件)
5、發生中斷時,CPU進入中斷服務程序,而暫時不能運行當前的任務,任務就進入了被中斷態。
3、C語言程序開發優化
對I/O空間進行尋址關鍵字ioport
C55x處理器包含數據空間和I/O空間,為了在C/C++中對I/O空間進行尋址,編譯器給出了關鍵字ioport,以支持I/O尋址模式。
ioport關鍵字可以用在數組、結構體、聯合、以及枚舉類型當中。
當用在數組中時,ioport可以作為數組中的元素;
在結構體中使用ioport,只能指向ioport數據的指針而不能直接作為結構的成員。
ioport類型只能用來聲明全局或靜態變量,如果在本地變量中使用ioport類型,則變量必須用指針聲明。接下來給出指針聲明ioport類型的例子:
void foo (void)
{ioport int i; /* 無效的聲明 */ioport int *j; /* 有效聲明 */
}
應當注意聲明ioport類型的指針只有16位,這是因為I/O空間是16位尋址,而不受大/小存儲器模式的限制。
在printf()中不能直接引用ioport指針,如果要引用,則必須進行強制類型轉換“void *”,具體例子如下:
ioport int *p;
printf(“%p\n”, (void*)p);
給出在本地變量中使用ioport類型的例子:
int *ioport ioport_pointer; //ioport指針
int i;
int j;
void foo(void)
{ioport_pointer = &i;j = *ioport_pointer;
}
編譯結果如下:
_foo:
MOV #_i,port(#_ioport_pointer) ; 存儲i在I/O空間的地址
MOV port(#_ioport_pointer),AR3 ; 載入i的地址
MOV *AR3,AR1 ; 將i的內容存放到AR1中
MOV AR1,*abs16(#_j) ; 將i的內容保存到j
return
**interrupt關鍵字 **
中斷操作需要使用特定的寄存器保存規則,并具有特殊的返回順序。
C55x編譯器使用了關鍵字interrupt定義中斷函數。
當C/C++代碼被中斷時,中斷程序必須保存所有與程序有關的寄存器。
當使用interrupt關鍵字定義函數時,中斷函數必須返回空并且沒有參數傳遞。
中斷函數可以定義本地變量并且使用對戰:
interrupt void int_handler()
{unsigned int flags;...
}
c_int00是C/C++程序的入口點,這個函數名被系統復位中斷保留,該中斷服務程序用來初始化系統并調用main函數。
**onchip關鍵字 **
onchip關鍵字的作用:告訴編譯器由該關鍵字定義的指針所指向的數據可以作為一個雙乘法指令中的操作數。
如果onchip關鍵字向函數傳遞數據,或者最終引用的數據使用onchip定義的,則該數據必須在片上。
如果該數據在片外,則當通過數據總線訪問該數據時將產生一個總線錯誤。
下面喲個onchip定義數組和指針的例子:
onchip int x[100];
onchip int *p;
4、通用目標文件格式
匯編器和鏈接器產生的可執行文件所采用的格式是通用目標文件格式(COFF),采用通用目標文件格式有助于實現模塊化編程。
匯編器和鏈接器都支持用戶創建多個代碼段和數據段,這也有助于用戶的靈活編程。
編譯器產生的可以重新定位的代碼和數據塊叫做段。
段可以分成兩大類-初始化段和未初始化段。
初始化段裝有數據或代碼。
常用**初始化段包括代碼段(.text段)、常數段(.const段)**等。
未初始化段的作用是在存儲器中保留一定空間供程序生成和存儲變量使用。
常用的未初始化段包括堆棧和系統堆棧段(.stack和.sysstack)、存儲全局和靜態變量的.bss段以及為分配動態存儲器保留的.sysmem段等。
5、C/C++和匯編語言中段的分配
1、匯編語言中為代碼分配段的例子:
.text
MOV #10,AC0
MOV AC0,AC1
2、匯編語言中為數據分配段的例子:
.data
.word 9,10
.word 11,12
6、鏈接命令文件
鏈接器對匯編器編譯好的代碼和數據進行鏈接時,所依據的是連接命令文件,即.cmd文件。
在連接命令文件中定義了段名,段的起始地址,段的長度,初始化段的初始值等。
下面給出一個.cmd文件的具體示例:
/****************************************************************
* lnk55x <obj files...> -o <out file> -m <map file> lnk.cmd
* cl55x <src files...> -z -o <out file> -m <map file> lnk.cmd
/****************************************************************/-c /*不區分大小寫 */-m a1.map /*生成.map文件*/ -stack 0x1800 /*主堆棧尺寸*/-sysstack 0x1800 /*系統堆棧尺寸*/-heap 0x100 /*動態內存大小*//* Set entry point to Reset vector*//* - Allows Reset ISR to force IVPD/IVPH to point to vector table.*/-e RESET_ISR/*設置系統內存映射*//* 載入及鏈接使用字節地址*/MEMORY{PAGE 0:MMR (RWIX) : o=0000000h, l=00000C0hDARAM0 (RWIX) : o=00000C0h, l=000af40hDARAM1 (RWIX) : o=000b000h, l=0000800hDARAM2 (RWIX) : o=000b800h, l=0000800hDARAM3 (RWIX) : o=000c000h, l=0000800hDARAM4 (RWIX) : o=000c800h, l=0000800h SARAM0 (RWIX) : o=0010000h, l=0010000hSARAM1 (RWIX) : o=0020000h, l=0010000hSARAM2 (RWIX) : o=0030000h, l=0020000hCE0 (RWIX) : o=0050000h, l=0100000hCE1 (RWIX) : o=0400000h, l=0400000hPDROM (RX) : o=0FF8000h, l=0008000hPAGE 1:CE2 (RWIX) : o=0400000h, l=0200000hCE3 (RWIX) : o=0600000h, l=0100000hPAGE 2:IOPORT (RWI) : o=0000000h, l=0020000h
} /*為段分配內存地址*/SECTIONS{{rts55x.lib<boot.obj exit.obj strcpy.obj>(.text)}*/{rts55.lib<boot.obj exit.obj>(.text)}.text > SARAM0 /* CODE*/.switch > SARAM0 /* SWITCH TABLE INFO */.const > SARAM0 /* CONSTANT DATA */.cinit > SARAM0 /* INITIALIZATION TABLES */.pinit > SARAM0 /* INITIALIZATION TABLES */ .data > DARAM0 fill=0xBEEF /* INITIALIZED DATA */.bss > DARAM0 fill=0xBEEF /* GLOBAL & STATIC VARS */.sysmem > DARAM0 fill=0xBEEF /* DYNAMIC MALLOC AREA */.stack > DARAM0 fill=0xBEEF /* PRIMARY SYSTEM STACK */.sysstack > DARAM0 fill=0xBEEF /* SECONDARY SYSTEM STACK */.cio > DARAM0 fill=0xBEEFinput > DARAM1 fill=0xBEEF /* Input data */output > DARAM2 fill=0xBEFF /* Output data */writdata > DARAM3 fill=0xBEFF /* Write pen point */para > DARAM4 fill=0xBEFF /* Tranfer parameter */intvecs > DARAM5 fill=0xBEFFparadata > DARAM6 fill=0x7time > DARAM7 fill=0.ioport > IOPORT PAGE 2
}
第八章:DSP硬件設計基礎
1、主要芯片種類
TI的DSP芯片
三大系列
1、TMS320C2000系列,DSP控制器,集成了flash存儲器、告訴A/D轉換器以及可靠的CAN模塊
以及數字馬達控制的外圍模塊,適用于三相電動機、變頻器等高速實時工控產品等需要數字化的控制領域
2、TMS320C5000系列,16位定點DSP。主要用于通信鄰域,如IP電話機和IP電話網關、數字式助聽器
便攜式聲音/數據/視頻產品。
3、TMS320C6000系列,采用新的超長指令字結構設計芯片。
主要應用于
1)、數字通信 完成FFT、信道和噪聲估計、信道糾錯、干擾估計和檢測等
2)、圖像處理 完成圖像壓縮、圖像傳輸、模式及光學特性識別、加密/解密、圖像增強等。
2、DSP系統的設計思路
3、信號線的布置
信號的過沖與阻尼震蕩:
1、無終端補償(NO Termination)
直接進行信號的傳輸,對終端不進行補償
2、串電阻補償(Serial Res)
串電阻補償方式就是在點對點的連接中直接傳入一個電阻,這將減少外來的電壓波形的幅值。
合適的串電阻補償將使信號正確終止,消除接收器的過沖現象。
4、DSP最小系統設計
DSP最小系統就是滿足DSP運行的最小硬件組成,任何一個DSP硬件系統中都必須包括最小系統的各個組成部分,最小系統由電源電路、復位電路、時鐘電路、JTAG接口電路和程序加載部分等組成
第九章、DSP典型算法設計實例
1、掌握高通濾波器
2、巴特沃斯濾波器(Butterworth)
3、切比雪夫濾波器
4、卷積算法
卷積和的運算在圖形上表示可分為四步:
1、翻轉:先在變量坐標m上作圖x(m)和h(m),將h(m)以m=0的垂直軸為對稱軸翻轉成h(-m);
2、移位:將h(-m)移位n,即得h(n-m)。當n為正整數,右移n位。當n為負整數,左移n位。
3、相乘:再將h(n-m)和x(m)的相同m值的對應點值相乘。
4、相加:把以上所有對應點的乘積疊加起來,得到y(n)的值。
5、無限沖激響應濾波器(IIR)
第十一章,語音技術識別
1、人與人之間、人與機器之間的語音信息處理過程
2、典型語音識別系統實現過程
語音識別原理框圖: