本書以ARM公司免費開放的CortexM0 DesignStart處理器 IP核為基礎,以CortexM0處理器架構、AMBA規(guī)范、外設、匯編語言、C語言、CMSIS、驅動程序開發(fā)以及RTX操作系統(tǒng)為主線,詳細介紹了通過Xilinx Vivado以及Keil Vision5集成開發(fā)環(huán)境構建CortexM0全可編程嵌入式系統(tǒng)的硬件和軟件設計方法。
全書共分18章,主要內容包括: 全可編程SoC設計導論、CortexM0 CPU結構、CortexM0指令集、CortexM0低功耗特性、AHBLite總線結構分析、CortexM0匯編語言編程基礎、CortexM0 DesignStart架構、Xilinx Artix7 FPGA結構、CortexM0嵌入式系統(tǒng)設計與實現(xiàn)、7段數(shù)碼管控制器設計與實現(xiàn)、中斷系統(tǒng)設計與實現(xiàn)、定時器設計與實現(xiàn)、UART串口控制器設計與實現(xiàn)、VGA控制器設計與實現(xiàn)、DDR3存儲器系統(tǒng)設計與實現(xiàn)、CortexM0 C語言編程基礎、CMSIS和驅動程序開發(fā)、RTX操作系統(tǒng)原理及應用。
本書可作為講授ARM CortexM0嵌入式系統(tǒng)課程以及CortexM0可編程SoC系統(tǒng)設計課程的教學參考用書,也可作為學習Xilinx Vivado集成開發(fā)環(huán)境和Verilog HDL語言的參考用書。
1. 知識融合 將ARM公司開源的Cortex-M0 IP用于典型嵌入式系統(tǒng)設計,內容涵蓋了處理器架構、指令集、匯編語言、協(xié)議、接口、C語言、操作系統(tǒng)等方面的知識。2. 深入分析 在本書中,通過Xilinx 7系列現(xiàn)場可編程門陣列(FPGA)實現(xiàn)Cortex-M0嵌入式系統(tǒng)硬件設計;通過Keil Vision5集成開發(fā)環(huán)境,實現(xiàn)軟件程序設計。此外,通過軟件和硬件開發(fā)工具提供的仿真、調試和跟蹤功能,深度分析了處理器內部架構、處理器與存儲器和外設之間的通信機制,以及軟件和硬件協(xié)同設計方法。3. 知識權威 在編寫本書的過程中,ARM公司課程開發(fā)團隊提供了大量的教學參考資料,包括設計案例、教學課件以及技術文檔等。使得本書能從硬件和軟件兩個方面準確反映Cortex-M0嵌入式系統(tǒng)的設計和實現(xiàn)方法。4. 實例豐富 提供了Cortex-M0典型應用的設計案例、設計代碼和參考資料,便于讀者自學,快速動手實踐。
何賓:著名的嵌入式技術和EDA技術專家,長期從事電子設計自動化方面的教學和科研工作,與全球多家知名的半導體廠商和EDA工具廠商大學計劃保持緊密合作。目前已經(jīng)出版嵌入式和EDA方面的著作30余部,內容涵蓋電路仿真、電路設計、可編程邏輯器件、數(shù)字信號處理、單片機、嵌入式系統(tǒng)、片上可編程系統(tǒng)等。典型的代表作有《Xilinx FPGA設計權威指南》《Xilinx FPGA數(shù)字設計從門級到行為級的雙重描述》《Xilinx FPGA數(shù)字信號處理權威指南從HDL、模型到C的描述》《Xilinx All Programmable Zynq-7000 嵌入式系統(tǒng)設計與實現(xiàn)》《模擬與數(shù)字系統(tǒng)協(xié)同設計權威指南Cypress集成開發(fā)環(huán)境》《STC單片機原理及應用》《STC單片機C語言程序設計》《Altium Designer 13.0電路設計、仿真與驗證權威指南》《Altium Designer 15.0電路仿真、設計、驗證與工藝實現(xiàn)權威指南》。
目錄
第1章全可編程SoC設計導論
1.1SoC基礎知識
1.1.1SoC的概念
1.1.2SoC與MCU及CPU的比較
1.1.3典型的商用SoC器件
1.2SoC設計流程
1.3SoC體系架構
1.4全可編程SoC技術
1.4.1基于軟核的全可編程SoC
1.4.2基于硬核的全可編程SoC
1.5全可編程SoC設計流程
第2章CortexM0 CPU結構
2.1ARM處理器類型
2.2CortexM系列處理器概述
2.2.1CortexM系列處理器的特點
2.2.2CortexM系列處理器的性能參數(shù)
2.3CortexM0處理器性能和結構
2.3.1CortexM0處理器的性能
2.3.2CortexM0處理器的結構
2.4CortexM0處理器寄存器組
2.4.1通用寄存器
2.4.2堆棧指針
2.4.3程序計數(shù)器
2.4.4鏈接寄存器
2.4.5組合程序狀態(tài)寄存器
2.4.6中斷屏蔽特殊寄存器
2.4.7特殊寄存器
2.5CortexM0存儲器空間映射
2.6CortexM0程序鏡像原理及生成方法
2.7CortexM0的端及分配
2.8CortexM0處理器異常及處理
2.8.1異常原理
2.8.2異常優(yōu)先級
2.8.3向量表
2.8.4異常類型
第3章CortexM0指令集
3.1Thumb指令集
3.2CortexM0匯編語言格式
3.3寄存器訪問指令: MOVE
3.4存儲器訪問指令: LOAD
3.5存儲器訪問指令: STORE
3.6多數(shù)據(jù)訪問指令: LDM和STM
3.7堆棧訪問指令: PUSH和POP
3.8算術運算指令
3.8.1加法指令
3.8.2減法指令
3.8.3乘法指令
3.8.4比較指令
3.9邏輯操作指令
3.10移位操作指令
3.10.1右移指令
3.10.2左移指令
3.11反序操作指令
3.12擴展操作指令
3.13程序流控制指令
3.14存儲器屏蔽指令
3.15異常相關指令
3.16休眠相關指令
3.17其他指令
3.18數(shù)據(jù)插入和對齊操作
第4章CortexM0低功耗特性
4.1低功耗要求
4.2CortexM0低功耗特性及優(yōu)勢
4.2.1CortexM0低功耗特性
4.2.2CortexM0低功耗結構
4.3CortexM0休眠模式
4.4喚醒中斷控制器
4.5降低功耗的其他方法
第5章AHBLite總線結構分析
5.1總線及分類
5.1.1總線的概念
5.1.2總線分類
5.2ARM AMBA系統(tǒng)總線
5.3AMBA3 AHBLite總線
5.3.1AHBLite概述
5.3.2AHBLite總線操作
5.4AHBLite總線結構
5.4.1全局信號
5.4.2AHBLite主設備接口
5.4.3AHBLite從設備接口
5.4.4地址譯碼器和多路復用器
5.5AHBLite總線時序
5.5.1無等待基本讀傳輸
5.5.2有等待基本讀傳輸
5.5.3無等待基本寫傳輸
5.5.4有等待基本寫傳輸
5.6硬件實現(xiàn)
第6章CortexM0匯編語言編程基礎
6.1Keil MDK開發(fā)套件
6.1.1下載MDK開發(fā)套件
6.1.2安裝MDK開發(fā)套件
6.1.3MDK程序處理流程
6.2CortexM0匯編語言程序設計
6.2.1建立新設計工程
6.2.2工程參數(shù)設置
6.2.3添加匯編文件
6.2.4匯編語言語法
6.3.lst文件分析
6.4.map文件分析
6.5.hex文件分析
6.6軟件仿真和調試
6.6.1查看CortexM0寄存器內容
6.6.2查看CortexM0存儲器內容
6.6.3查看監(jiān)視窗口的內容
6.7匯編語言其他常用語法介紹
6.7.1標識符的命名規(guī)則
6.7.2變量
6.7.3常數(shù)
6.7.4EQU命令
6.7.5IMPORT/EXTERN命令
6.7.6子程序調用
6.7.7宏定義和使用
第7章CortexM0 DesignStart架構
7.1獲取CortexM0
DesignStart
7.2CortexM0 DesignStart頂層符號
7.2.1中斷
7.2.2狀態(tài)輸出
7.2.3事件信號
7.3AHBLite接口
7.4將CortexM0
DesignStart集成到系統(tǒng)的方法
第8章XILINX Artix7 FPGA結構
8.1Artix7器件邏輯資源
8.2可配置邏輯塊
8.2.1可配置邏輯塊概述
8.2.2查找表
8.2.3多路復用器
8.2.4進位邏輯
8.2.5存儲元素
8.2.6分布式RAM(只有SLICEM)
8.2.7只讀存儲器(ROM)
8.2.8移位寄存器(只有SLICEM)
8.3時鐘資源和時鐘管理單元
8.3.17系列FPGA時鐘資源
8.3.27系列內部時鐘結構
8.3.37系列FPGA時鐘管理模塊
8.4塊存儲器資源
8.5專用的DSP模塊
8.6輸入/輸出塊
8.6.1I/O特性概述
8.6.2Artix7中的I/O列和類型
8.6.3I/O電氣資源
8.6.4I/O邏輯資源
8.7XADC模塊
8.8吉比特收發(fā)器
8.9PCIE模塊
8.10配置模塊
8.11互連資源
第9章CortexM0嵌入式系統(tǒng)設計與實現(xiàn)
9.1設計目標
9.2CortexM0 SoC系統(tǒng)的構建
9.2.1啟動Vivado 2016集成開發(fā)環(huán)境
9.2.2創(chuàng)建新的設計工程
9.2.3添加CortexM0處理器源文件
9.2.4添加系統(tǒng)主時鐘IP核
9.3設計文件修改和分析
9.3.1AHB總線地址譯碼器
9.3.2AHB總線從設備多路復用器
9.3.3AHB片上存儲器外設
9.3.4AHB LED外設
9.3.5AHBLITE_SYS頂層文件
9.4程序代碼的編寫
9.4.1建立新設計工程
9.4.2工程參數(shù)設置
9.4.3添加和編譯匯編文件
9.4.4分析HEX文件與匯編文件的關系
9.4.5添加HEX文件到當前工程
9.5RTL詳細描述和分析
9.6仿真原理和行為級仿真
9.6.1仿真實現(xiàn)的不同功能
9.6.2Vivado所支持的仿真工具
9.6.3行為級仿真實現(xiàn)
9.6.4添加信號并仿真
9.6.5仿真結果分析
9.7設計綜合和分析
9.7.1綜合過程的關鍵問題
9.7.2設計綜合選項
9.7.3Vivado支持的屬性
9.7.4執(zhí)行設計綜合
9.7.5查看綜合報告
9.8創(chuàng)建實現(xiàn)約束
9.8.1實現(xiàn)約束的原理
9.8.2I/O規(guī)劃器功能
9.8.3引腳位置約束的實現(xiàn)
9.9設計實現(xiàn)和分析
9.9.1實現(xiàn)過程原理
9.9.2設計實現(xiàn)選項
9.9.3設計實現(xiàn)
9.9.4查看布局布線后的結果
9.9.5查看實現(xiàn)后的報告
9.9.6功耗分析
9.9.7靜態(tài)時序分析
9.10實現(xiàn)后時序仿真
9.11生成編程文件
9.12下載比特流文件到FPGA
9.13生成并下載外部存儲器文件
第10章7段數(shù)碼管控制器設計與實現(xiàn)
10.1設計目標
10.2打開前面的設計工程
10.3添加并分析7段數(shù)碼管控制器源文件
10.3.1添加7段數(shù)碼管控制器源文件
10.3.2分析7段數(shù)碼管控制器源文件
10.4修改并分析頂層設計文件
10.5編寫程序代碼
10.5.1建立新設計工程
10.5.2工程參數(shù)設置
10.5.3添加和編譯匯編文件
10.5.4添加HEX文件到當前工程
10.6設計綜合
10.7添加約束條件
10.8設計實現(xiàn)
10.9下載比特流文件
10.10系統(tǒng)在線調試原理
10.11系統(tǒng)在線調試實現(xiàn)
10.11.1建立新的調試工程
10.11.2添加調試網(wǎng)絡
10.11.3在線測試分析
第11章中斷系統(tǒng)設計與實現(xiàn)
11.1設計目標
11.2中斷控制器原理
11.2.1NVIC特點
11.2.2NVIC映射
11.2.3NVIC寄存器
11.3進入和退出異常句柄的過程
11.3.1進入中斷句柄的過程
11.3.2退出中斷句柄的過程
11.4打開前面的設計工程
11.5添加并分析按鍵消抖模塊源文件
11.5.1添加按鍵消抖模塊源文件
11.5.2分析按鍵消抖模塊源文件
11.6修改并分析頂層設計文件
11.7編寫程序代碼
11.7.1建立新設計工程
11.7.2工程參數(shù)設置
11.7.3軟件初始化中斷
11.7.4添加和編譯匯編文件
11.7.5添加HEX文件到當前工程
11.8設計綜合
11.9添加約束條件
11.10設計實現(xiàn)
11.11下載比特流文件
第12章定時器設計與實現(xiàn)
12.1設計目標
12.2打開前面的設計工程
12.3添加并分析定時器模塊源文件
12.3.1定時器模塊設計原理
12.3.2添加定時器源文件
12.3.3分析定時器源文件
12.4修改并分析頂層設計文件
12.5編寫程序代碼
12.5.1建立新設計工程
12.5.2工程參數(shù)設置
12.5.3添加和編譯匯編文件
12.5.4添加HEX文件到當前工程
12.6設計綜合
12.7設計實現(xiàn)
12.8下載比特流文件
第13章UART串口控制器設計與實現(xiàn)
13.1設計目標
13.2串行通信基礎
13.2.1串行和并行通信之間的比較
13.2.2串行通信的類型
13.3通用異步收發(fā)數(shù)據(jù)格式和編碼
13.3.1數(shù)據(jù)格式
13.3.2字符編碼規(guī)則
13.4UART串口控制器的實現(xiàn)原理
13.4.1UART發(fā)送器
13.4.2UART接收器
13.4.3發(fā)送器/接收器FIFO
13.5打開前面的設計工程
13.6添加并分析UART模塊源文件
13.6.1添加UART模塊源文件
13.6.2分析UART模塊源文件
13.7修改并分析頂層設計文件
13.8編寫程序代碼
13.8.1建立新設計工程
13.8.2工程參數(shù)設置
13.8.3添加和編譯匯編文件
13.8.4添加HEX文件到當前工程
13.9設計綜合
13.10添加約束條件
13.11設計實現(xiàn)
13.12下載比特流文件
第14章VGA控制器設計與實現(xiàn)
14.1設計目標
14.2VGA工作原理
14.2.1VGA連接器
14.2.2CRT原理
14.2.3VGA接口信號
14.2.4VGA時序
14.3VGA顯示硬件實現(xiàn)原理
14.3.1VGA圖像緩沖區(qū)
14.3.2VGA控制臺
14.3.3VGA控制器存儲器空間
14.4打開前面的設計工程
14.5添加并分析VGA模塊源文件
14.5.1添加VGA模塊源文件
14.5.2分析VGA模塊源文件
14.6修改其他設計
14.6.1添加并分析頂層設計文件
14.6.2修改時鐘生成器輸出頻率
14.6.3修改波特率時鐘
14.7編寫程序代碼
14.7.1建立新設計工程
14.7.2工程參數(shù)設置
14.7.3添加和編譯匯編文件
14.7.4添加HEX文件到當前工程
14.8設計綜合
14.9添加約束條件
14.10設計實現(xiàn)
14.11下載比特流文件
第15章DDR3存儲器系統(tǒng)設計與實現(xiàn)
15.1計算機搭載的存儲器設備
15.2存儲器類型
15.2.1易失性存儲器
15.2.2非易失性存儲器
15.3系統(tǒng)設計目標
15.3.1硬件構建目標
15.3.2軟件編程目標
15.4DDR3 SDRAM控制器設計原理
15.4.1DDR3 SDRAM存儲器結構
15.4.2DDR3 SDRAM控制器結構
15.4.3DDR3 SDRAM的讀寫訪問時序
15.5DDR3 SDRAM控制器系統(tǒng)設計與實現(xiàn)
15.5.1打開前面的設計工程
15.5.2設計DDR3 SDRAM存儲器控制器
15.5.3修改系統(tǒng)設計文件
15.5.4編寫程序代碼
15.5.5設計綜合
15.5.6設計實現(xiàn)
15.5.7下載比特流文件
第16章CortexM0 C語言編程基礎
16.1C語言處理流程
16.2C語言鏡像文件內容和存儲
16.2.1C語言鏡像文件的內容
16.2.2C語言鏡像文件的存儲位置
16.3啟動代碼的分析
16.4C語言中數(shù)據(jù)的存儲空間
16.5C語言數(shù)據(jù)類型及實現(xiàn)
16.5.1C語言支持的數(shù)據(jù)類型
16.5.2數(shù)據(jù)類型修飾符
16.6C語言編程CortexM0
16.6.1定義中斷向量表
16.6.2定義堆和堆棧
16.6.3讀寫外設寄存器
16.6.4匯編調用C函數(shù)
16.6.5C語言調用匯編語言
16.6.6C語言嵌入?yún)R編語言
16.7C語言驅動的設計和實現(xiàn)
16.7.1打開前面的設計工程
16.7.2建立新的軟件設計工程
16.7.3軟件工程參數(shù)設置
16.7.4創(chuàng)建并添加匯編文件
16.7.5創(chuàng)建并添加頭文件
16.7.6創(chuàng)建并添加C文件
16.7.7添加HEX文件到當前工程
16.7.8設計綜合
16.7.9設計實現(xiàn)
16.7.10下載比特流文件
16.8C語言重定向及實現(xiàn)
16.8.1打開前面的設計工程
16.8.2打開前面的軟件設計工程
16.8.3修改啟動引導文件
16.8.4導入并修改retarget.c文件
16.8.5修改C設計文件
16.8.6添加HEX文件到當前工程
16.8.7設計綜合
16.8.8設計實現(xiàn)
16.8.9下載比特流文件
第17章CMSIS和驅動程序開發(fā)
17.1引入CMSIS的必要性
17.2CMSIS的優(yōu)勢
17.3CMSIS的框架
17.4使用CMSIS訪問不同資源
17.4.1訪問NVIC
17.4.2訪問特殊寄存器
17.4.3訪問特殊指令
17.4.4訪問系統(tǒng)
17.5軟件驅動程序的設計
17.5.1軟件驅動程序的功能
17.5.2AHB外設驅動設計
17.6動態(tài)圖形交互系統(tǒng)設計
17.6.1動態(tài)圖形交互硬件平臺
17.6.2觸摸屏顯示控制方法
17.6.3觸摸屏觸摸控制方法
17.6.4打開前面的設計工程
17.6.5觸摸屏控制器模塊的設計實現(xiàn)
17.6.6修改頂層設計文件
17.6.7C語言程序的設計和實現(xiàn)
17.6.8設計綜合
17.6.9添加約束條件
17.6.10設計實現(xiàn)
17.6.11下載比特流文件
第18章RTX操作系統(tǒng)原理及應用
18.1RTOS的優(yōu)勢
18.2操作系統(tǒng)的概念
18.3操作系統(tǒng)支持特性
18.3.1SysTick定時器
18.3.2堆棧指針
18.3.3SVC
18.3.4PendSV
18.4RTX內核架構的特點
18.5RTX的具體實現(xiàn)過程
18.5.1實現(xiàn)目標
18.5.2打開前面的工程
18.5.3修改工程屬性設置
18.5.4修改啟動代碼
18.5.5導入RTX_Config.c文件
18.5.6修改main.c文件
18.5.7軟件調試和測試
18.6RTX內核功能
18.6.1定時器滴答中斷
18.6.2系統(tǒng)任務管理器
18.6.3任務管理
18.6.4空閑任務
18.6.5系統(tǒng)資源
18.6.6任務調度策略
18.6.7優(yōu)先級倒置
18.6.8堆棧管理
18.6.9用戶定時器
18.6.10中斷函數(shù)