《DSP系統與實驗教程》以TMS320F2812為例介紹DSP的基本特點、硬件結構、中斷系統和指令系統;詳細介紹CCS開發環境和C語言在DSP芯片的編寫特點和方法,以及芯片的外設接口模塊。《DSP系統與實驗教程》還介紹了DSP實驗系統的電路設計,對10個應用實例進行詳細分析,給出硬件設計電路圖和C語言程序代碼,并標有詳細的程序說明,為讀者快速應用DSP的知識進行應用開發和教學實驗提供方便。《DSP系統與實驗教程》系統性強,實驗項目豐富,具有較強的實用性。全書將DSP芯片原理、結構和系統設計、實驗融為一體,既方便讀者掌握DSP的基礎知識,也有利于讀者進行DSP系統的項目開發。本書可以作為高等學校電類各專業的本科生和研究生的教材,同時也可作為DSP開發應用人員的參考書。本書免費提供C語言程序代碼,讀者可登錄華信教育資源網下載使用。
《DSP系統與實驗教程》系統性強,實驗項目豐富,具有較強的實用性。全書將DSP芯片原理、結構和系統設計、實驗融為一體,既方便讀者掌握DSP的基礎知識,也有利于讀者進行DSP系統的項目開發。
TI2000系列DSP不僅具有高速數字信號處理功能,又具有實時性強、低功耗、高集成度等嵌入式微計算機的特點,因此在通信、航空航天、工業控制、醫療、國防、汽車等應用領域得到很好的應用。
為了適應DSP技術的發展,滿足教學和信息技術發展需求,讓更多的本科生、研究生和工程技術人員能盡快學習并掌握DSP應用技術,促進我國DSP技術水平的不斷提高,在廣泛聽取學生和同行意見的基礎上,作者依據近幾年為本科生和研究生開設“DSP原理及應用”課程的積累,參考國內外最新的教材和文獻資料,在《TMS320C2000系列DSP原理及實用技術》一書的基礎上,撰寫了本書。
TMS320C28x系列芯片具有很好的性能價格比,以及所具有的低成本、低功耗、高性能和高外設集成度、高A/D轉換速度,在工業控制系統中具有很好的應用前景。TMS320F2812數字信號處理器是TI公司推出的C2000系列中性能優良且廣泛應用的芯片之一,幾乎覆蓋了該系列DSP的所有特點。全書共分10章:首先介紹業界廣泛使用的DSP的性能特點、采用的先進技術、性能指標、發展趨勢和使用前景等,然后對TMS320F2812進行重點講述,內容包括F2812的原理和結構、存儲器配置、中斷系統結構及PIE外設中斷擴展的管理機制;對匯編語言指令系統進行簡要介紹,重點介紹CCS開發環境和C語言在DSP芯片的編寫特點和方法、F2812的外設接口模塊原理及應用方法,并在此基礎上通過對大量應用實例的設計,深入淺出地給出實驗指導以及難點分析、硬件設計電路圖和程序源代碼,源代碼標有詳細的程序說明。實驗難度由淺入深,使讀者能夠結合實際應用盡快掌握DSP的原理和應用系統的設計方法。
書中所介紹的DSP實驗系統,是作者2004年研制并連續使用了8年,期間對最小系統板(基于TMS320LF2407芯片)進行了升級和更換(基于TMS320F2812芯片)。實驗系統采用核心處理板可插拔、整體結構模塊化的設計,充分對DSP芯片可尋址存儲器空間和外設模塊進行了擴展,擴展的模塊接口采用插孔引出方式,最小系統核心板和外圍電路可分離;各模塊之間獨立工作且互不影響;開放的硬件接口以插孔形式提供給使用者,使其能夠自行設計硬件電路,以組成各種應用系統;書中提供的程序代碼均在此實驗開發系統上調試通過。
本書對電類專業的大學生將是一本理論和實踐教學為一體的完整的教材;對從事DSP應用設計的工程師將是一本從入門到軟/硬件設計的系統的參考書。
本書由何蘇勤主編,并編寫了第7、8、10章;韓陽編寫了第2、3、4、5、9章,張杰編寫了第1、6章。詹明靜、單惠喻、趙越、王小慶參加了書稿的錄入、圖表制作以及程序的調試工作,并參與了DSP實驗開發系統的設計工作;霍玲軍參加了書稿的錄入和圖表制作工作。本書得到北京化工大學和美國德州儀器公司大學計劃項目的支持。在此一并向他們表示衷心的感謝。本書在編寫的過程中參考了許多優秀的DSP技術書籍,在此向這些書籍的作者表示真誠的謝意。
本書免費提供C語言程序代碼,讀者可登錄華信教育資源網下載使用。
由于DSP芯片發展迅速及編者水平和掌握的資料有限,書中不當和錯誤之處在所難免,懇請廣大讀者批評指正。
何蘇勤,北京化工大學教授,中國電子學會高教分會理事;北京市大學生電子設計競賽專家委員會委員;北京化工大學教學指導委員會委員。主編出版《TMS320C2000系列DSP原理及實用技術》教材、2003年9月電子工業出版社出版;45萬字(共64萬字)。作為項目負責人,近5年主持承擔了《電子對抗遙測遙控系統開發》;《城市安全信息監控系統開發》;《GPRS移動通信數據傳輸系統的研究開發》;《K5501微量分光光度計的研究開發》;《載人飛船返回艙圖像數據傳輸系統研究》科研項目。被EI收錄、在國際會議和核心期刊發表論文余篇。
第1章 緒論
1.1 DSP的特點
1.2 DSP芯片分類
1.2.1 按基礎特性分類
1.2.2 按用途分類
1.2.3 按數據格式分類
1.3 DSP的性能指標及選型
1.3.1 DSP的性能指標
1.3.2 DSP的選型
1.4 TI及其他公司的DSP
1.5 DSP開發方案的設計與選擇
1.5.1 DSP的功能需求分析
1.5.2 算法的驗證與模擬
1.5.3 DSP芯片及其開發工具的選擇
1.5.4 DSP系統的軟/硬件設計
1.5.5 系統的軟/硬件調試
1.6 DSP軟件開發的流程
1.7 DSP的應用和前景
第2章 TMS320F2812內部結構
2.1 TMS320F2812中央處理單元
2.1.1 TMS320F2812 CPU內部結構
2.1.2 TMS320F2812 CPU內部寄存器
2.1.3 TMS320F2812總線結構
2.2 TMS320F2812的存儲器配置
2.2.1 TMS320F2812存儲器的類型及映射空間
2.2.2 TMS320F2812的片內存儲器配置
2.2.3 TMS320F2812外部存儲器擴展及其接口
2.2.4 TMS320F2812 FLASH存儲器
2.3 TMS320F2812的引導加載方式
2.3.1 Boot ROM基本原理
2.3.2 引導加載程序BootLoader的工作原理
2.4 TMS320F2812的時鐘及系統控制
2.4.1 TMS320F2812系統時鐘寄存器組
2.4.2 TMS320F2812晶體振蕩器OSC與鎖相環PLL時鐘模塊
2.4.3 TMS320F2812 CPU定時器
2.4.4 TMS320F2812看門狗定時器模塊及其應用
2.4.5 TMS320F2812的低功耗模式
第3章 TMS320F2812中斷系統
3.1 TMS320F2812中斷的基本原理與結構
3.2 PIE中斷擴展
3.3 中斷向量表
3.3.1 中斷向量的分配
3.3.2 中斷向量表的映射
3.4 可屏蔽中斷
3.5 非屏蔽中斷
3.6 中斷服務程序
第4章 TMS320F2812指令系統與匯編程序設計
4.1 尋址方式
4.1.1 尋址方式選擇位(AMODE)
4.1.2 立即尋址方式
4.1.3 寄存器尋址方式
4.1.4 直接尋址方式
4.1.5 間接尋址方式
4.1.6 堆棧尋址方式
4.1.7 其他尋址方式
4.2 指令系統
4.2.1 指令系統概述
4.2.2 TMS320F2812指令系統
4.2.3 指令系統列表
4.2.4 TMS320F2812指令集中部分指令簡介
4.3 匯編語言
4.3.1 匯編語言格式
4.3.2 偽指令
4.3.3 通用目標文件格式
4.3.4 鏈接器與鏈接命令文件
第5章 C語言程序編寫基礎
5.1 C編譯器概述
5.1.1 C語言的主要特征
5.1.2 C編譯器輸出文件
5.1.3 C編譯器接口
5.1.4 C編譯器操作
5.1.5 C編譯器工具
5.2 C語言編程基礎
5.2.1 C語言數據類型
5.2.2 C語言關鍵詞
5.2.3 TMS320F2812偽指令
5.2.4 使用C語言編寫DSP程序的注意事項
5.2.5 C語言開發中工程模板文件
5.2.6 傳統的#define方法
5.3 C語言和匯編語言的混合編程方法
5.3.1 混合編程概述
5.3.2 C/C++語言與匯編混合編程
5.4 C程序舉例
第6章 DSP系統開發環境CCS
6.1 CCS的安裝與配置
6.1.1 CCS 3.3系統的安裝
6.1.2 系統配置
6.2 初識CCS
6.2.1 CCS的組成
6.2.2 CCS的集成開發環境功能說明
6.2.3 CCS的常用工具
6.2.4 簡單程序開發流程
6.3 CCS的C語言程序調試實例
第7章 通用輸入/輸出及事件管理模塊
7.1 通用輸入/輸出(GPIO)多路復用器
7.1.1 GPIO多路復用器工作原理
7.1.2 GPIO多路復用器的寄存器
7.2 事件管理器(EV)模塊
7.2.1 通用定時器(GPT)
7.2.2 全比較單元和脈寬調制電路(PWM)
7.2.3 捕獲單元
7.2.4 正交編碼脈沖(QEP)電路
7.2.5 事件管理器(EV)模塊的中斷
第8章 模/數轉換模塊與串行接口模塊
8.1 模/數轉換器(ADC)
8.1.1 ADC模塊的結構特征
8.1.2 自動排序器的工作原理
8.1.3 ADC模塊的工作方式
8.1.4 ADC模塊中的寄存器
8.2 串行通信接口(SCI)模塊
8.2.1 SCI模塊的結構特征
8.2.2 多處理器和異步通信模式
8.2.3 SCI的傳輸方式
8.2.4 SCI中斷
8.2.5 SCI波特率計算
8.2.6 SCI的FIFO
8.2.7 SCI模塊寄存器
8.3 串行外設接口(SPI)模塊
8.3.1 串行外設接口(SPI)的結構和特點
8.3.2 SPI的操作
8.3.3 SPI的中斷
8.3.4 SPI的配置
8.3.5 SPI FIFO說明
8.3.6 SPI的初始化
8.3.7 SPI模塊的寄存器
第9章 eCAN總線及F2812的eCAN模塊
9.1 F2812的eCAN模塊結構特點
9.2 F2812的eCAN模塊消息郵箱的結構
9.3 F2812的eCAN模塊的初始化
9.4 F2812的eCAN模塊的中斷
9.5 F2812的eCAN模塊的寄存器
第10章 DSP實驗開發系統設計及實驗指導
10.1 DSP實驗開發系統設計
10.1.1 DSP最小系統板設計
10.1.2 SCI串行通信模塊設計
10.1.3 CAN總線接口
10.1.4 語音模塊設計
10.1.5 電機控制模塊設計
10.1.6 模擬信號產生模塊設計
10.1.7 D/A轉換模塊設計
10.1.8 鍵盤-顯示模塊設計
10.1.9 DSP實驗系統使用說明
10.2 實驗一 DSP實驗裝置和CCS的使用實驗
10.3 實驗二 I/O(輸入/輸出)端口實驗
10.4 實驗三 事件捕獲實驗
10.5 實驗四 PWM電路控制步進電機轉動
10.6 實驗五 A/D-D/A轉換實驗
10.7 實驗六 定時器觸發ADC轉換實驗
10.8 實驗七 SCI異步串行通信實驗
10.9 實驗八 SPI串行同步模塊雙機通信實驗
10.10 實驗九 語音信號傳輸實驗
10.11 實驗十 eCAN郵箱自收發模式通信實驗
附錄A
附錄B
參考文獻
2.1 TMS320F2812中央處理單元
2.1.1 TMS320F2812CPU內部結構
TMS320F2812中包含一個高性能低功耗的32位定點CPU內核,它主要負責DSP內部指令的控制和數據的處理,主要由CPU內部寄存器、總線及相應控制邏輯組成:
(1)32位中央算術邏輯單元(CALU)。
(2)32位累加器(ACC)。
(3)能進行16bit×16bit或32bit×32bit定點乘法運算的硬件乘法器(MUL)。
(4)桶形移位器。
(5)輔助寄存器算術單元(ARAU)及地址產生邏輯。
(6)程序地址產生器及控制邏輯。
除以上幾個主要部分外,該控制器還包含如指令隊列、指令譯碼邏輯、中斷處理邏輯等控制單元。
TMS320F2812CPU主要包括以下主要部分:
1.乘法器部分
TMS320F2812乘法器部分的組成:
(1)乘法器,它將臨時寄存器的值與來自程序存儲器或數據存儲器的被乘數相乘。
(2)32位的臨時寄存器(TREG),其中存放一個乘數。
(3)64位的乘積存儲器(PREG),存放乘法運算的結果。
(4)乘積移位器,使乘積寄存器的值在送到中央算術邏輯單元或數據存儲器前進行移位定標。
乘法器可以接收以下兩個32位的數據輸入:
(1)數據存儲器或程序存儲器提供一個數據輸入(被乘數)。
(2)臨時寄存器TREG提供另一個輸入(乘數),在乘法之前把讀數據總線的數據值加載到臨時寄存器。
乘積移位器提供四種形式的移位方式,由狀態寄存器ST1中的乘積移位模式位(PM)確定,乘積移位器將乘積結果送到中央算術邏輯單元或由指令SPH(SPL)將乘積移位器的高字位(低字位)送到數據存儲器。
2.中央算術邏輯部分
中央算術邏輯部分的兩個輸入包括:
(1)累加器ACC(所有的加/減法指令都隱含累加器作為一個操作數)。
(2)輸入來自輸入移位器的輸出或乘積移位器的輸出。
32位中央算術邏輯部分完成算術和邏輯運算,主要包括:
(1)32位中央算術邏輯單元(CALU)。實現算術、邏輯運算。
(2)32位累加器(ACC)。接收來自CALU的輸出,并且可以根據進位位(C)的值來實現移位,ACCH和ACCL分別是累加器的高字位和低字位。
與累加器相關的狀態位位于狀態寄存器ST0、ST1中,主要有:
(1)進位位C。
(2)溢出方式位OVM。
(3)溢出標志位OV。
(4)測試/控制標志位TC。
3.輸出移位器
輸出移位器將累加器的高位字和低位字在輸入數據存儲器之前進行移位。其基本原理是輸出移位器將累加器的內容復制過來,并可對其高字位或低字位進行移位操作,然后送到16位的數據寫總線上,寫入數據存儲器中。輸出移位器可以左移0~7位,移位時數據高位丟失,低位補0,然后經指令SACH或SACL將移位器中的高位字或低位字保存到數據存儲器,而累加器的內容保持不變。
4.輔助寄存器算術單元(ARAU)
TMS320F2812的中央處理單元(CPU)中還有一個與中央算術邏輯單元(CALU)無關的輔助寄存器算術單元(ARAU),其主要功能是與中央算術邏輯單元(CALU)中進行的操作并行地實現對輔助寄存器的算術運算。TMS320F2812CPU一共提供8個32位的輔助寄存器:XAR0~XAR7,可以作為輔助寄存器使用,作為地址指針指向TMS320F2812存儲器。
輔助寄存器XAR0~XAR7的低16位AR0~AR7可用作16位比較的通用目的寄存器或循環控制寄存器,而在訪問低16位時其高16位是否改變將取決于所使用的指令。高16位只能作為輔助寄存器XAR0~XAR7的一部分進行訪問而不能單獨訪問。
輔助寄存器XAR0~XAR7除了被用作數據存儲器地址外,還可以用作其他用途:
(1)將輔助寄存器作為數據暫存單元。
(2)可以根據需要將輔助寄存器的內容加或減。
(3)使用CMPR指令,利用輔助寄存器支持條件轉移、調用和返回。CMPR指令可將AR0的內容和當前AR的內容進行比較,并將比較結果存至狀態寄存器ST1中的測試/控制位TC。
綜上所述,TMS320F2812的輔助寄存器算術單元(ARAU)可以完成以下運算:
(1)將輔助寄存器的內容增/減1,或者增/減一個變址量(取決于間接尋址的指令)。
(2)將輔助寄存器的內容增/減一常數(如ADRK、SBRK指令),該常數值通常是指令字的低8位。
(3)將AR0的內容與當前AR的內容進行比較(如CMPR指令),并把結果經數據寫數據總線(DWDB)存入到狀態寄存器ST1的測試/控制位(TC)。
輔助寄存器算術單元一般在流水線的譯碼階段進行它的算術運算,這樣能在下條指令譯碼之前產生地址。但是在處理NORM指令時,是在流水線的執行階段修改輔助寄存器或輔助寄存器指針的。
2.1.2TMS320F2812CPU內部寄存器
TMS320F2812CPU內部的核心單元包含乘法部分、中央算術邏輯部分、移位部分、輔助寄存器算術單元等。其中,寄存器又成為它們的重要組成元素。寄存器既可以暫存算術、邏輯運算操作數,也可以存放運算結果;此外,還可以作為地址指針等特殊功能使用。本節主要介紹TMS320F2812內部主要寄存器及其主要功能。
1.累加器(ACC)
功能:除了部分直接對寄存器和存儲器單元操作外,累加器用于存放ALU的操作結果,其結果送往結果總線。累加器支持32位的數據傳送運算、算術運算、比較運算,同時可以存放32位乘法運算的結果。
累加器除了能保存運算結果,還可以作為一個獨立的CPU內32位寄存器使用,它的32位可以同時分解為2個邏輯獨立的16位寄存器AH(高16位)和AL(低16位),這兩個寄存器可以獨立訪問。
累加器(ACC)的獨立訪問寄存器結構如圖2.2所示。
圖2.2累加器(ACC)的獨立訪問寄存器結構
與累加器相關聯的的狀態位有溢出模式位、溢出標志位、溢出計數位、進位標志位、符號擴展模式位、零標志位、負標志位、測試/控制標志位。
例2.1累加器操作指令
ABSACC;對累加器中的數據求絕對值并返回
ADDAL,DAT1;DAT1為一個16位存儲單元,將其數據與16位寄存器AL相加
2.乘法單元被乘數寄存器XT和結果寄存器P
功能:乘法單元被乘數寄存器XT用于存放乘法運算的操作數;結果寄存器P用于存放乘法運算的結果。
TMS320F2812中的硬件乘法器(MUL)能進行16bit×16bit或32bit×32bit定點乘法運算。其中,XT是一個32位的被乘數寄存器,它可以分解成2個16位的邏輯獨立的寄存器TL和T來單獨訪問(T:TL),其中高16位寄存器T和低16位寄存器TL,用于硬件乘法器進行16bit×16bit的乘法運算。其中,寄存器T存放16位的被乘數。
另外,P是一個32位的乘積結果寄存器,也可以分解為2個16位獨立的寄存器單獨訪問(PH:PL),其中高16位寄存器PH和低16位寄存器PL,可以分別作為16位的數據寄存器使用。乘法單元被乘數寄存器XT和結果寄存器P的結構分別如圖2.3和圖2.4所示。
……