ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統

ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統 pdf epub mobi txt 電子書 下載 2025

何賓 著
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 清華大學齣版社
ISBN:9787302457329
版次:1
商品編碼:12142420
包裝:平裝
開本:16開
齣版時間:2017-02-01
用紙:膠版紙
頁數:479
字數:783000
正文語種:中文

具體描述

編輯推薦

  1. 知識融閤 將ARM公司開源的Cortex-M0 IP用於典型嵌入式係統設計,內容涵蓋瞭處理器架構、指令集、匯編語言、協議、接口、C語言、操作係統等方麵的知識。   2. 深入分析 在本書中,通過Xilinx 7係列現場可編程門陣列(FPGA)實現Cortex-M0嵌入式係統硬件設計;通過Keil μVision5集成開發環境,實現軟件程序設計。此外,通過軟件和硬件開發工具提供的仿真、調試和跟蹤功能,深度分析瞭處理器內部架構、處理器與存儲器和外設之間的通信機製,以及軟件和硬件協同設計方法。   3. 知識*威 在編寫本書的過程中,ARM公司課程開發團隊提供瞭大量的教學參考資料,包括設計案例、教學課件以及技術文檔等。使得本書能從硬件和軟件兩個方麵準確反映Cortex-M0嵌入式係統的設計和實現方法。   4. 實例豐富 提供瞭Cortex-M0典型應用的設計案例、設計代碼和參考資料,便於讀者自學,快速動手實踐。

內容簡介

  《ARM Cortex-M0 全可編程SoC原理及實現:麵嚮處理器、協議、外設、編程和操作係統》以ARM公司免費開放的Cortex�睲0 DesignStart處理器 IP核為基礎,以Cortex�睲0處理器架構、AMBA規範、外設、匯編語言、C語言、CMSIS、驅動程序開發以及RTX操作係統為主綫,詳細介紹瞭通過Xilinx Vivado以及Keil μVision5集成開發環境構建Cortex�睲0全可編程嵌入式係統的硬件和軟件設計方法。

  全書共分18章,主要內容包括: 全可編程SoC設計導論、Cortex�睲0 CPU結構、Cortex�睲0指令集、Cortex�睲0低功耗特性、AHB�睱ite總綫結構分析、Cortex�睲0匯編語言編程基礎、Cortex�睲0 DesignStart架構、Xilinx Artix��7 FPGA結構、Cortex�睲0嵌入式係統設計與實現、7段數碼管控製器設計與實現、中斷係統設計與實現、定時器設計與實現、UART串口控製器設計與實現、VGA控製器設計與實現、DDR3存儲器係統設計與實現、Cortex�睲0 C語言編程基礎、CMSIS和驅動程序開發、RTX操作係統原理及應用。

  本書可作為講授ARM Cortex�睲0嵌入式係統課程以及Cortex�睲0可編程SoC係統設計課程的教學參考用書,也可作為學習Xilinx Vivado集成開發環境和Verilog HDL語言的參考用書。


作者簡介

  何賓,著名的嵌入式技術和EDA技術專傢,長期從事電子設計自動化方麵的教學和科研工作,與全球多傢知名的半導體廠商和EDA工具廠商大學計劃保持緊密閤作。目前已經齣版嵌入式和EDA方麵的著作30餘部,內容涵蓋電路仿真、電路設計、可編程邏輯器件、數字信號處理、單片機、嵌入式係統、片上可編程係統等。典型的代錶作有《Xilinx FPGA設計*威指南》《Xilinx FPGA數字設計——從門級到行為級的雙重描述》《Xilinx FPGA數字信號處理*威指南——從HDL、模型到C的描述》《Xilinx All Programmable Zynq-7000 嵌入式係統設計與實現》《模擬與數字係統協同設計*威指南——Cypress集成開發環境》《STC單片機原理及應用》《STC單片機C語言程序設計》《Altium Designer 13.0電路設計、仿真與驗證*威指南》《Altium Designer 15.0電路仿真、設計、驗證與工藝實現*威指南》。

內頁插圖

目錄

第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章Cortex�睲0 CPU結構

2.1ARM處理器類型

2.2Cortex�睲係列處理器概述

2.2.1Cortex�睲係列處理器的特點

2.2.2Cortex�睲係列處理器的性能參數

2.3Cortex�睲0處理器性能和結構

2.3.1Cortex�睲0處理器的性能

2.3.2Cortex�睲0處理器的結構

2.4Cortex�睲0處理器寄存器組

2.4.1通用寄存器

2.4.2堆棧指針

2.4.3程序計數器

2.4.4鏈接寄存器

2.4.5組閤程序狀態寄存器

2.4.6中斷屏蔽特殊寄存器

2.4.7特殊寄存器

2.5Cortex�睲0存儲器空間映射

2.6Cortex�睲0程序鏡像原理及生成方法

2.7Cortex�睲0的端及分配

2.8Cortex�睲0處理器異常及處理

2.8.1異常原理

2.8.2異常優先級

2.8.3嚮量錶

2.8.4異常類型

第3章Cortex�睲0指令集

3.1Thumb指令集

3.2Cortex�睲0匯編語言格式

3.3寄存器訪問指令: MOVE

3.4存儲器訪問指令: LOAD

3.5存儲器訪問指令: STORE

3.6多數據訪問指令: 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數據插入和對齊操作

第4章Cortex�睲0低功耗特性

4.1低功耗要求

4.2Cortex�睲0低功耗特性及優勢

4.2.1Cortex�睲0低功耗特性

4.2.2Cortex�睲0低功耗結構

4.3Cortex�睲0休眠模式

4.4喚醒中斷控製器

4.5降低功耗的其他方法

第5章AHB�睱ite總綫結構分析

5.1總綫及分類

5.1.1總綫的概念

5.1.2總綫分類

5.2ARM AMBA係統總綫

5.3AMBA3 AHB�睱ite總綫

5.3.1AHB�睱ite概述

5.3.2AHB�睱ite總綫操作

5.4AHB�睱ite總綫結構

5.4.1全局信號

5.4.2AHB�睱ite主設備接口

5.4.3AHB�睱ite從設備接口

5.4.4地址譯碼器和多路復用器

5.5AHB�睱ite總綫時序

5.5.1無等待基本讀傳輸

5.5.2有等待基本讀傳輸

5.5.3無等待基本寫傳輸

5.5.4有等待基本寫傳輸

5.6硬件實現

第6章Cortex�睲0匯編語言編程基礎

6.1Keil MDK開發套件

6.1.1下載MDK開發套件

6.1.2安裝MDK開發套件

6.1.3MDK程序處理流程

6.2Cortex�睲0匯編語言程序設計

6.2.1建立新設計工程

6.2.2工程參數設置

6.2.3添加匯編文件

6.2.4匯編語言語法

6.3.lst文件分析

6.4.map文件分析

6.5.hex文件分析

6.6軟件仿真和調試

6.6.1查看Cortex�睲0寄存器內容

6.6.2查看Cortex�睲0存儲器內容

6.6.3查看監視窗口的內容

6.7匯編語言其他常用語法介紹

6.7.1標識符的命名規則

6.7.2變量

6.7.3常數

6.7.4EQU命令

6.7.5IMPORT/EXTERN命令

6.7.6子程序調用

6.7.7宏定義和使用

第7章Cortex�睲0 DesignStart架構

7.1獲取Cortex�睲0 DesignStart

7.2Cortex�睲0 DesignStart頂層符號

7.2.1中斷

7.2.2狀態輸齣

7.2.3事件信號

7.3AHB�睱ite接口

7.4將Cortex�睲0 DesignStart集成到係統的方法

第8章XILINX Artix��7 FPGA結構

8.1Artix��7器件邏輯資源

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.2Artix��7中的I/O列和類型

8.6.3I/O電氣資源

8.6.4I/O邏輯資源

8.7XADC模塊

8.8吉比特收發器

8.9PCI�睧模塊

8.10配置模塊

8.11互連資源

第9章Cortex�睲0嵌入式係統設計與實現

9.1設計目標

9.2Cortex�睲0 SoC係統的構建

9.2.1啓動Vivado 2016集成開發環境

9.2.2創建新的設計工程

9.2.3添加Cortex�睲0處理器源文件

9.2.4添加係統主時鍾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工程參數設置

9.4.3添加和編譯匯編文件

9.4.4分析HEX文件與匯編文件的關係

9.4.5添加HEX文件到當前工程

9.5RTL詳細描述和分析

9.6仿真原理和行為級仿真

9.6.1仿真實現的不同功能

9.6.2Vivado所支持的仿真工具

9.6.3行為級仿真實現

9.6.4添加信號並仿真

9.6.5仿真結果分析

9.7設計綜閤和分析

9.7.1綜閤過程的關鍵問題

9.7.2設計綜閤選項

9.7.3Vivado支持的屬性

9.7.4執行設計綜閤

9.7.5查看綜閤報告

9.8創建實現約束

9.8.1實現約束的原理

9.8.2I/O規劃器功能

9.8.3引腳位置約束的實現

9.9設計實現和分析

9.9.1實現過程原理

9.9.2設計實現選項

9.9.3設計實現

9.9.4查看布局布綫後的結果

9.9.5查看實現後的報告

9.9.6功耗分析

9.9.7靜態時序分析

9.10實現後時序仿真

9.11生成編程文件

9.12下載比特流文件到FPGA

9.13生成並下載外部存儲器文件

第10章7段數碼管控製器設計與實現

10.1設計目標

10.2打開前麵的設計工程

10.3添加並分析7段數碼管控製器源文件

10.3.1添加7段數碼管控製器源文件

10.3.2分析7段數碼管控製器源文件

10.4修改並分析頂層設計文件

10.5編寫程序代碼

10.5.1建立新設計工程

10.5.2工程參數設置

10.5.3添加和編譯匯編文件

10.5.4添加HEX文件到當前工程

10.6設計綜閤

10.7添加約束條件

10.8設計實現

10.9下載比特流文件

10.10係統在綫調試原理

10.11係統在綫調試實現

10.11.1建立新的調試工程

10.11.2添加調試網絡

10.11.3在綫測試分析

第11章中斷係統設計與實現

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工程參數設置

11.7.3軟件初始化中斷

11.7.4添加和編譯匯編文件

11.7.5添加HEX文件到當前工程

11.8設計綜閤

11.9添加約束條件

11.10設計實現

11.11下載比特流文件

第12章定時器設計與實現

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工程參數設置

12.5.3添加和編譯匯編文件

12.5.4添加HEX文件到當前工程

12.6設計綜閤

12.7設計實現

12.8下載比特流文件

第13章UART串口控製器設計與實現

13.1設計目標

13.2串行通信基礎

13.2.1串行和並行通信之間的比較

13.2.2串行通信的類型

13.3通用異步收發數據格式和編碼

13.3.1數據格式

13.3.2字符編碼規則

13.4UART串口控製器的實現原理

13.4.1UART發送器

13.4.2UART接收器

13.4.3發送器/接收器FIFO

13.5打開前麵的設計工程

13.6添加並分析UART模塊源文件

13.6.1添加UART模塊源文件

13.6.2分析UART模塊源文件

13.7修改並分析頂層設計文件

13.8編寫程序代碼

13.8.1建立新設計工程

13.8.2工程參數設置

13.8.3添加和編譯匯編文件

13.8.4添加HEX文件到當前工程

13.9設計綜閤

13.10添加約束條件

13.11設計實現

13.12下載比特流文件

第14章VGA控製器設計與實現

14.1設計目標

14.2VGA工作原理

14.2.1VGA連接器

14.2.2CRT原理

14.2.3VGA接口信號

14.2.4VGA時序

14.3VGA顯示硬件實現原理

14.3.1VGA圖像緩衝區

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工程參數設置

14.7.3添加和編譯匯編文件

14.7.4添加HEX文件到當前工程

14.8設計綜閤

14.9添加約束條件

14.10設計實現

14.11下載比特流文件

第15章DDR3存儲器係統設計與實現

15.1計算機搭載的存儲器設備

15.2存儲器類型

15.2.1易失性存儲器

15.2.2非易失性存儲器

15.3係統設計目標

15.3.1硬件構建目標

15.3.2軟件編程目標

15.4DDR3 SDRAM控製器設計原理

15.4.1DDR3 SDRAM存儲器結構

15.4.2DDR3 SDRAM控製器結構

15.4.3DDR3 SDRAM的讀寫訪問時序

15.5DDR3 SDRAM控製器係統設計與實現

15.5.1打開前麵的設計工程

15.5.2設計DDR3 SDRAM存儲器控製器

15.5.3修改係統設計文件

15.5.4編寫程序代碼

15.5.5設計綜閤

15.5.6設計實現

15.5.7下載比特流文件

第16章Cortex�睲0 C語言編程基礎

16.1C語言處理流程

16.2C語言鏡像文件內容和存儲

16.2.1C語言鏡像文件的內容

16.2.2C語言鏡像文件的存儲位置

16.3啓動代碼的分析

16.4C語言中數據的存儲空間

16.5C語言數據類型及實現

16.5.1C語言支持的數據類型

16.5.2數據類型修飾符

16.6C語言編程Cortex�睲0

16.6.1定義中斷嚮量錶

16.6.2定義堆和堆棧

16.6.3讀寫外設寄存器

16.6.4匯編調用C函數

16.6.5C語言調用匯編語言

16.6.6C語言嵌入匯編語言

16.7C語言驅動的設計和實現

16.7.1打開前麵的設計工程

16.7.2建立新的軟件設計工程

16.7.3軟件工程參數設置

16.7.4創建並添加匯編文件

16.7.5創建並添加頭文件

16.7.6創建並添加C文件

16.7.7添加HEX文件到當前工程

16.7.8設計綜閤

16.7.9設計實現

16.7.10下載比特流文件

16.8C語言重定嚮及實現

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設計實現

16.8.9下載比特流文件

第17章CMSIS和驅動程序開發

17.1引入CMSIS的必要性

17.2CMSIS的優勢

17.3CMSIS的框架

17.4使用CMSIS訪問不同資源

17.4.1訪問NVIC

17.4.2訪問特殊寄存器

17.4.3訪問特殊指令

17.4.4訪問係統

17.5軟件驅動程序的設計

17.5.1軟件驅動程序的功能

17.5.2AHB外設驅動設計

17.6動態圖形交互係統設計

17.6.1動態圖形交互硬件平颱

17.6.2觸摸屏顯示控製方法

17.6.3觸摸屏觸摸控製方法

17.6.4打開前麵的設計工程

17.6.5觸摸屏控製器模塊的設計實現

17.6.6修改頂層設計文件

17.6.7C語言程序的設計和實現

17.6.8設計綜閤

17.6.9添加約束條件

17.6.10設計實現

17.6.11下載比特流文件

第18章RTX操作係統原理及應用

18.1RTOS的優勢

18.2操作係統的概念

18.3操作係統支持特性

18.3.1SysTick定時器

18.3.2堆棧指針

18.3.3SVC

18.3.4PendSV

18.4RTX內核架構的特點

18.5RTX的具體實現過程

18.5.1實現目標

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係統任務管理器

18.6.3任務管理

18.6.4空閑任務

18.6.5係統資源

18.6.6任務調度策略

18.6.7優先級倒置

18.6.8堆棧管理

18.6.9用戶定時器

18.6.10中斷函數


精彩書摘

  第5章AHB�睱ite總綫結構分析

  ARM公司提供的高級微控製器總綫結構(Advanced Microcontroller Bus Architecture,AMBA)規範是實現ARM處理器和外部設備互連的基礎。在基於ARM Cortex�睲0的SoC中,通過AMBA規範中的AHB�睱ite協議,實現ARM Cortex�睲0處理器主設備對多個從設備的無障礙訪問。

  根據ARM AMBA規範,本章將詳細介紹AMBA規範中的AHB�睱ite協議,內容主要包括總綫及分類、ARM AMBA係統總綫、AMBA3 AHB�睱ite總綫、AHB�睱ite總綫結構、AHB�睱ite總綫時序,以及硬件實現。

  通過本章的學習,要求讀者掌握AHB�睱ite的結構、接口信號和訪問時序關係,這些內容是讀者可以順利學習本章後續內容的基礎。

  5.1總綫及分類

  本節介紹總綫的概念及分類。

  5.1.1總綫的概念

  傳統上,總綫是一個通信係統,用於在一個計算機的不同部件之間實現數據傳輸。硬件和軟件兩個方麵定義瞭構成總綫的要素:

  (1) 從硬件上來說,包括物理實現,如電纜或者連綫。例如,使用PCI總綫電纜連接一個颱式計算機內的部件,如圖5.1所示。

  圖5.1PCI插槽和連綫

  (2) 從軟件上來說,包括總綫協議,如PCI總綫協議。

  5.1.2總綫分類

  在計算機係統中,通常將總綫分為兩類。

  1) 外部總綫

  外部總綫主要用於連接外部設備,例如,將一颱計算機與一颱打印機進行連接。

  2) 內部總綫

  (1) 內部總綫也稱為係統總綫,用於連接一颱計算機的內部部件,例如,將CPU連接到存儲器。

  (2) 較少的開銷,例如,不需要處理電特性,以及配置檢測等。

  (3) 內部總綫的工作速度比外部總綫要快。

  (4) 在SoC內,將內部總綫集成到單個芯片中,因此稱它為片上係統總綫。

  思考與練習5��1: 說明計算機係統總綫的分類,以及它們的作用。

  5.2ARM AMBA係統總綫

  在SoC設計中,高級微控製器總綫結構(Advanced Microcontroller Bus Architecture,AMBA)用於片上總綫。自從AMBA齣現後,其應用領域早已超齣瞭微控製器設備,現在被廣泛地應用於各種範圍的ASIC和SOC器件,包括用於便攜設備的應用處理器。

  AMBA協議是一個開放標準的片上互聯規範(除AMBA��5以外),用於SoC內功能模塊的連接和管理。它便於第一時間開發包含大量控製器和外設的多處理器設計。其發展過程如下:

  1) 1996年,ARM公司推齣瞭AMBA的第一個版本,包括:

  (1) 高級係統總綫(Advanced System Bus,ASB);

  (2) 高級外設總綫(Advanced Peripheral Bus,APB)。

  2) 第2個版本為AMBA2,ARM增加瞭AMBA高性能總綫(AMBA High�瞤erformance Bus, AHB),它是一個單個時鍾沿的協議。AMBA2用於ARM公司的ARM7和ARM9處理器。

  3) 2003年,ARM推齣瞭第三個版本即AMBA3,增加瞭以下規範:

  (1) 高級可擴展接口(Advanced Extensible Interface,AXI)v1.0/AXI3,它用於實現更高性能的互連。

  (2) 高級跟蹤總綫(Advanced Trace Bus,ATB)v1.0,它用於CoreSight片上調試和跟蹤解決方案。

  此外,還包含下麵的協議:

  (1) 高級高性能總綫簡化(Advanced High�瞤erformance Bus Lite,AHB�睱ite)v1.0。

  (2) 高級外設總綫(Advanced Peripheral Bus,APB)v1.0。

  其中:

  (1) AHB�睱ite和APB規範用於ARM的Cortex�睲0、M3和M4。

  (2) AXI規範,用於ARM的Cortex�睞9、A8、R4和R5的處理器。

  4) 2009年,Xilinx同ARM密切閤作,共同為基於FPGA的高性能係統和設計定義瞭AXI4規範。並且在其新一代可編程門陣列芯片上采用瞭高級可擴展接口AXI4協議。主要包括:

  (1) AXI一緻性擴展(AXI Coherency Extensions,ACE)。

  (2) AXI一緻性擴展簡化(AXI Coherency Extensions Lite,ACE�睱ite)。

  (3) 高級可擴展接口4(Advanced eXtensible Interface 4,AXI4)。

  (4) 高級可擴展接口4簡化(Advanced eXtensible Interface 4 Lite,AXI4�睱ite)。

  (5) 高級可擴展接口4流(Advanced eXtensible Interface 4 Stream,AXI4�睸tream)v1.0。

  (6) 高級跟蹤總綫(Advanced Trace Bus,ATB)v1.1。

  (7) 高級外設總綫(Advanced Peripheral Bus,APB)v2.0。

  其中的ACE規範用於ARM的Cortex�睞7和A15處理器。

  5) 2013年,ARM推齣瞭AMBA5。該協議增加瞭一緻集綫器接口(Coherent Hub Interface,CHI)規劃,用於ARM Cortex�睞50係列處理器,以高性能、一緻性處理“集綫器”方式協同工作,這樣就能在企業級市場中實現高速可靠的數據傳輸。

  思考與練習5��2: 說明ARM AMBA的含義,以及所實現的目的。

  思考與練習5��3: 說明在ARM Cortex�睲0中所采用的總綫規範。

  思考與練習5��4: 在ARM AMBA中,對於APB、AHB和AXI來說,性能最高的是,性能最低的是。

  5.3AMBA3 AHB�睱ite總綫

  AMBA3中的AHB,被稱為高性能總綫,主要體現在:

  (1) 可以實現高性能的同步設計;

  (2) 支持多個總綫主設備;

  (3) 提供高帶寬操作。

  而AHB�睱ite是AHB的子集,簡化瞭AHB總綫的設計,典型地,隻有一個主設備。

  5.3.1AHB�睱ite概述

  在基於AHB�睱ite總綫構成的係統中,通過該總綫,處理器實現對所有外設的控製,如圖5.2所示。在該係統中,所有外設均提供AHB�睱ite接口,用於和主處理器進行連接。對於AHB�睱ite來說,它包含數據總綫、控製總綫和額外的控製信號,其中:

  (1) 數據總綫用於交換數據信息。

  (2) 地址總綫用於選擇一個外設,或者一個外設中的某個寄存器。

  (3) 控製信號用於同步和識彆交易,如: 準備,寫/讀以及傳輸模式信號。

  圖5.2由AHB�睱ite構成的處理係統

  5.3.2AHB�睱ite總綫操作

  圖5.3總綫操作過程

  處理器訪問一個AHB�睱ite外設的操作過程,如圖5.3所示。該過程主要包括:

  (1) 通過地址總綫,處理器給齣所要訪問AHB�睱ite外設的地址信息。

  (2) 通過地址譯碼器,生成選擇一個外設或者寄存器的選擇信號。同時,處理器提供用於控製所選AHB�睱ite外設的控製信號,如讀/寫,傳輸數據的數量等。

  (3) 如果處理器給齣的是讀取AHB�睱ite外設的控製信號,則等待外設準備好後,讀取該外設的數據。

  除瞭上麵介紹的基本操作過程外,AHB�睱ite總綫可以實現更多復雜的功能,如傳輸個數和猝發模式等。

  思考與練習5��5: 說明在AHB�睱ite中所包含的總綫類型,以及這些總綫各自的作用。

  思考與練習5��6: 根據圖5.3,詳細說明Cortex�睲0處理器和AHB�睱ite外設的信息交互過程。

  5.4AHB�睱ite總綫結構

  基於AHB�睱ite總綫所構成的計算機係統架構,如圖5.4所示。在該係統中,包括以下功能部件:

  圖5.4構成AHB�睱ite係統的單元

  (1) 主設備。在本書中,主設備是指Cortex�睲0處理器。此外,在包含直接存儲器訪問(Direct Memory Access,DMA)控製器的係統中,主設備還包括DMA控製器。

  (2) 地址譯碼器。主要用於選擇Cortex�睲0所要訪問的從設備。

  (3) 從設備多路復用器。主要用於從多個從設備中選擇所要讀取的數據和響應信號。

  (4) 多個從設備。它們都包含AHB�睱ite接口,主設備可以通過該接口訪問它們。

  此外,係統還應該包含時鍾和復位模塊單元。時鍾模塊用於為整個SoC係統提供時鍾源; 復位模塊用於為整個SoC係統提供復位信號。通過時鍾和復位信號,使得SoC係統內的各個功能部件有序工作。

  5.4.1全局信號

  在AHB�睱ite協議中,提供瞭兩個全局信號,如錶5.1所示。在該設計中,HCLK的頻率與Cortex�睲0處理器的頻率相同。在Cortex�睲0係統中,所有的功能部件都包含該全局信號。在基於ARM Cortex�睲0處理器的SoC係統中,時鍾模塊和復位模塊用於提供全局信號。

  錶5.1AHB�睱ite協議中的全局信號

  信號名字和方嚮描述

  HCLK時鍾,源指嚮所有的部件總綫時鍾用來驅動所有的總綫傳輸。所有信號的時序均以HCK時鍾的上升沿為基準

  HRESETn復位,由控製器指嚮所有的部件總綫復位信號低有效,用於復位係統和總綫

  5.4.2AHB�睱ite主設備接口

  AHB�睱ite主設備提供地址和控製信息,用於初始化讀和寫操作。然後,主設備接收來自從設備的響應信息,包括數據、準備信號和響應信號,如圖5.5所示。在該設計中,主設備隻有Cortex�睲0處理器,它用於提供訪問從設備的AHB�睱ite接口信號。

  圖5.5構成AHB�睱ite主設備接口信號

  為瞭方便對本書後續內容的學習,下麵給齣AHB�睱ite主設備接口信號的詳細信息,如錶5.2所示。

  錶5.2AHB�睱ite主設備接口信號

  信號方嚮描述

  HADDR [31∶0]由主設備指嚮從設備以及譯碼器32位係統地址總綫

  HWDATA [31∶0]由主設備指嚮從設備寫數據總綫,用於在寫操作周期內將數據從主設備發送到從設備

  HWRITE由主設備指嚮從設備用於指示傳輸的方嚮。當該信號為高時,錶示寫傳輸; 當該信號為低時,錶示讀傳輸

  HSIZE [2∶0]由主設備指嚮從設備錶示傳輸的寬度,如字節、半字和字

  HBURST [2∶0]由主設備指嚮從設備猝發類型,錶示傳輸是單個傳輸還是猝發的一部分

  HPROT [3∶0]由主設備指嚮從設備保護控製信號提供瞭關於總綫訪問的額外的信息。它被模塊使用,用於實現某個級彆的保護

  HTRANS [1∶0]由主設備指嚮從設備錶示當前傳輸的類型,可以是IDLE、BUSY、NONSEQUENTIAL或SEQUENTIAL

  HMASTLOCK由主設備指嚮從設備當該信號為高時,錶示當前傳輸是某個鎖定序列的一部分

  本書所使用的Cortex�睲0處理器IP核,通過組閤錶5.2中的信號可以得到四種基本的傳輸類型,如錶5.3所示。

  錶5.3處理器AHB�睱ite交易類型

  交易訪問描述

  HSTRANS[1∶0]=2'b00空閑處理器不希望執行任何交易

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b0

  HSIZE[1∶0]=2'b10

  HWRITE=1'b0取指處理器希望執行取指操作。處理器一次從存儲器中取齣32位的指令,如果有其他要求,則處理器內部緩衝和管理兩個16位指令的提取

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b1

  HSIZE[1∶0]=2'b00字節處理器希望執行一個由LDRB、LDRBS、STRB指令所産生的8位數據訪問操作。加載指令將驅動HWRITE信號為低; 保存指令將驅動HWRITE信號為高

  續錶

  交易訪問描述

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b1

  HSIZE[1∶0]=2'b01半字處理器希望執行一個由LDRH、LDRHS、STRH指令所産生的16位數據訪問操作。加載指令將驅動HWRITE信號為低; 保存指令將驅動HWRITE信號為高

  HSTRANS[1∶0]=2'b10

  HPROT[0]=1'b1

  HSIZE[1∶0]=2'b10字

  處理器希望執行一個由LDR、LDM、POP、STR、STM、PUSH指令,或者異常入口的一部分,或者返迴所産生的32位數據訪問操作。加載指令將驅動HWRITE信號為低; 保存指令將驅動HWRITE信號為高

  本書所使用的Cortex�睲0處理器,總是工作在小端模式,所有的交易總是自然對齊。HRDATA和HWDATA活動字節的通道,以及它們在Cortex�睲0處理器裏對應的源/目的寄存器,如錶5.4所示。

  錶5.4處理器AHB�睱ite讀/寫數據字節通道

  地 址 階 段數 據 階 段

  HSIZE[1∶0]HADDR[1∶0]HxDATA

  [31∶24]HxDATA

  [23∶16]HxDATA

  [15∶8]HxDATA

  [7∶0]

  0000———Rd[7∶0]

  0001——Rd[7∶0]—

  0010—Rd[7∶0]——

  0011Rd[7∶0]———

  0100——Rd[15∶8]Rd[7∶0]

  0110Rd[15∶8]Rd[7∶0]——

  1000Rd[31∶24]Rd[23∶16]Rd[15∶8]Rd[7∶0]

  用於Cortex�睲0處理器的存儲器屬性由ARMv6�睲架構決定,其地址空間的使用規則是固定的。從HADDR映射齣來的HPROT[3∶2]位含義如錶5.5所示。

  錶5.5處理器存儲器映射屬性

  HADDR[31∶0]類型HPROT[3∶2]推薦的用法

  32′hF0000000~

  32′hFFFFFFFFF設備01無

  32′hE0000000~

  32′hEFFFFFFFF保留—映射到處理器內部的外設,如NVIC

  32′hA0000000~

  32′hDFFFFFFFF設備01外設

  32′h80000000~

  32'′h9FFFFFFFF正常(寫通過)10片外RAM

  32′h60000000~

  32′h7FFFFFFFF正常(寫迴和寫分配)11片外RAM

  續錶

  HADDR[31∶0]類型HPROT[3∶2]推薦的用法

  32′h40000000~

  32′h5FFFFFFFF設備01外設

  32′h20000000~

  32′h3FFFFFFFF正常(寫迴和寫分配)11片上RAM

  32′h00000000~

  32′h1FFFFFFFF正常(寫通過)10程序代碼

  5.4.3AHB�睱ite從設備接口

  為瞭響應係統主設備所建立的傳輸,從設備也需要提供對應的AHB�睱ite接口,如圖5.6所示。通過本身所提供的AHB�睱ite接口,從設備與主設備實現數據傳輸。

  在從設備接口上,有一個HSELx信號,由地址譯碼器的輸齣信號HSELx給齣,用於在一個時刻選擇所要訪問的一個從設備。

  圖5.6構成AHB�睱ite從設備接口信號

  為瞭方便本書後續內容的學習,下麵給齣AHB�睱ite從設備接口信號的詳細信息,如錶5.6所示。

  錶5.6AHB�睱ite從設備接口信號

  信號方嚮描述

  HRDATA [31∶0]由從設備指嚮多路選擇器在讀傳輸時,讀數據總綫將所選中從設備的數據發送到從設備多路選擇器,然後由從設備多路選擇器將數據傳給主設備

  HREADYOUT由從設備指嚮多路選擇器當該信號為高時,完成總綫上的傳輸過程; 該信號驅動為低時,擴展一個傳輸

  HRESP由從設備指嚮多路選擇器傳輸響應,當通過多路復用器時,為主設備提供額外的傳輸狀態信息。當該信號為低時,錶示傳輸狀態為OKAY; 當該位為高時,錶示傳輸狀態是ERROR

  5.4.4地址譯碼器和多路復用器

  基於AHB�睱ite所構建的Cortex�睲0 SoC係統還提供瞭地址譯碼器和多路復用器。從結構上來說:

  (1) 地址譯碼器為一對多設備,由一個主設備指嚮多個從設備;

  (2) 多路復用器為多對一設備,由多個從設備指嚮一個主設備。

  注: 在本書中,主設備隻有ARM Cortex�睲0處理器。

  1. 地址譯碼器的功能

  在係統中,地址譯碼器的輸入為地址信號,輸齣為選擇信號,如圖5.7所示,它實現的功能主要包括:

  (1) 根據主設備在地址總綫上所提供的訪問地址空間信息,生成選擇一個從設備的選擇信號。

  (2) 同時,選擇信號也連接到從設備多路選擇器,用於從多個從設備中選擇所對應的從設備返迴信息。

  圖5.7地址譯碼器和從設備多路復用器

  2. 多路復用器的功能

  在係統中,來自不同從設備的響應信號,包括: HRDATA、HREADY和HRESP連接到多路復用器的輸入,如圖5.7所示。根據地址譯碼器所生成的選擇信號,多路復用器將選擇的從設備響應信號送給主設備。

  3. 接口信號

  譯碼器和多路選擇器信號的詳細信息,如錶5.7所示。

  錶5.7譯碼器和多路選擇器信號

  信號方嚮描述

  HRDATA [31∶0]由多路復用器指嚮主設備來自多路復用器到主設備的讀數據

  HREADY由多路復用器指嚮主設備和從設備來自多路復用器到主設備的準備信號。當該位為高時,該信號錶示到主設備和先前完成傳輸的所有從設備

  續錶

  信號方嚮描述

  HRESP由多路復用器指嚮主設備來自多路復用器到主設備的傳輸響應信號

  HSELx由譯碼器指嚮從設備每個AHB�睱ite從設備有自己的從設備選擇信號HSELx,該信號錶示當前傳輸所對應的從設備。當一開始就選中該從設備時,它也必須監視HREADY的狀態,以確保在響應當前傳輸前,已經完成前麵的總綫傳輸

  思考與練習5��7: 說明在基於AHB�睱ite所構建的SoC係統中所包含的主要功能部件。

  思考與練習5��8: 說明在基於AHB�睱ite所構建的SoC係統中地址譯碼器的功能。

  思考與練習5��9: 說明在基於AHB�睱ite所構建的SoC係統中多路復用器的功能。

  思考與練習5��10: 根據圖5.7,分析基於AHB�睱ite的架構。

  5.5AHB�睱ite總綫時序

  一個AHB�睱ite傳輸包括兩個階段:

  1) 地址階段

  隻持續一個HCLK周期,除非被前麵的總綫傳輸進行瞭擴展。

  2) 數據階段

  可能要求幾個HCLK周期。使用HREADY信號來控製完成傳輸所需要的周期數。

  在AHB�睱ite中,引入瞭流水綫傳輸的機製,包括:

  (1) 當前操作的數據訪問可以與下一個操作的地址訪問重疊。

  (2) 使能高性能的操作,同時仍然為從設備提供充分的時間,為傳輸提供響應信息。

  注: 在後續的介紹中,隻實現基本的總綫操作,即

  (1) HBURST[2∶0]=3'b000,錶示沒有猝發交易;

  (2) HMASTLOCK=1'b0,錶示不産生帶鎖定的交易;

  (3) HTRANS[1∶0]=2'b00或者2'b10,錶示發起的交易為非順序的傳輸。

  5.5.1無等待基本讀傳輸

  無等待的基本讀傳輸時序,如圖5.8所示,包括:

  ……

前言/序言

  前言

  在當今社會中,嵌入式係統的應用越來越廣泛,例如以智能手機為代錶的嵌入式係統應用已經融入人們的日常生活中。英國ARM公司作為全球知名的嵌入式處理器IP核供應商,其所提供的Cortex�睲、Cortex�睷和Cortex�睞三大係列處理器IP核以及基於這些IP核所構建的生態係統,已經成為當今嵌入式係統設計和應用的基礎。

  由於保護知識産權的需要,一直以來ARM公司對其處理器設計技術進行嚴格保密,這使得掌握Cortex處理器架構並熟練高效應用Cortex處理器變得異常睏難。此外,ARM Cortex處理器架構和指令集也比較復雜。這些因素都使得一個嵌入式係統設計人員很難從處理器架構、接口、外設、編程語言和操作係統等方麵全麵徹底掌握嵌入式係統設計知識。

  近年來,國內很多高校都相繼開設瞭嵌入式係統相關的課程。但是,由於前麵所提到的諸多因素,在市麵上已經齣版的ARM嵌入式係統教材並沒有全麵係統地從處理器架構、AMBA規範、接口、外設、編程語言和操作係統等方麵全方位係統地對設計嵌入式係統所需要的知識進行解讀,這給ARM嵌入式係統技術在國內教育界的普及推廣造成很大睏難。目前,國內嵌入式係統課程的教學大都局限在APP開發,API函數調用的層麵,與工業界對培養高素質嵌入式人纔的要求有相當大的差距。

  去年,ARM公司做瞭一件讓中國教育界非常高興的事情,它提供瞭免費開放的Cortex�睲0 DesignStart內核等效RTL級設計代碼,可用於中國高校的嵌入式係統課程教學。通過ARM大學計劃經理陳瑋先生的幫助,本書作者得到瞭這個免費開放的Cortex�睲0 DesignStart內核RTL級等效設計代碼。通過這個免費開放的Cortex�睲0 DesignStart IP核以及Xilinx的Vivado 2016.1集成開發環境,作者在Xilinx最新的7係列FPGA內構建瞭Cortex�睲0嵌入式係統硬件,同時,通過Keil μVision5集成開發環境為該嵌入式係統硬件開發瞭軟件應用程序。

  與傳統采用專用Cortex�睲處理器介紹嵌入式係統設計的教學模式相比,采用在FPGA內構建Cortex�睲0嵌入式係統的方法可以為嵌入式係統課程的教學帶來以下好處:

  (1) 當采用開放的Cortex�睲0內核構建嵌入式係統時,教師和學生可以清楚地理解Cortex�睲0的運行機製,包括處理器架構、指令集、存儲器空間映射和中斷機製。

  (2) 通過對AHB�睱ite規範的詳細介紹和說明,教師和學生可以清楚地知道在一個芯片內將Cortex�睲0嵌入式處理器與外設模塊和存儲器係統連接的方法。

  (3) 通過使用Verilog HDL對實現特定功能外設的寄存器傳輸級RTL描述,教師和學生可以清楚地理解軟件寄存器與硬件邏輯行為之間的關係,也就是將軟件命令轉換成硬件邏輯行為的方法。

  (4) 通過為所定製的Cortex�睲0嵌入式係統硬件編寫軟件應用,教師和學生可以徹底理解和掌握軟件和硬件協同設計、協同仿真和協同調試的方法。

  (5) 基於開放的Cortex�睲0 DesignStart IP核,教師和學生可以從硬件底層逐步完成嵌入式係統的構建,以深入理解和全麵掌握嵌入式係統的設計流程。

  正是由於這種方法在未來嵌入式係統課程教學中有著無可比擬的巨大優勢,使得作者可以從處理器架構、指令集、AHB�睱ite規範、匯編語言、C語言、外設、CMSIS和驅動,以及操作係統等幾個方麵,全方位地對嵌入式係統的構建方法進行介紹,以期解決目前國內高校嵌入式係統課程教學所麵臨的睏境,並且為學習更高層次的嵌入式係統設計和應用拋磚引玉。

  本書的最大特色就是將嵌入式係統的設計理論和實踐深度融閤,通過典型且完整的設計案例多角度全方位地解讀嵌入式係統的設計方法。為瞭方便老師的教學和學生的自學,本書提供瞭教學課件和設計實例的完整代碼,以及公開的視頻教學資源,這些資源的獲取方式詳見書中的學習說明。

  本書的編寫得到瞭ARM大學計劃經理陳瑋先生的大力支持和幫助,他為本書申請瞭免費開放的Cortex�睲0 DesignStart IP核設計資源以及教學資源。此外,Xilinx公司的FAE對作者設計案例時遇到的問題進行瞭耐心細緻的迴答。作者的研究生李寶隆編寫瞭本書第1章的內容,張艷輝編寫瞭本書第2章的內容,作者的本科生湯宗美編寫並整理瞭本書的配套教學課件,王中正對本書的部分設計案例進行瞭驗證。此外,在本書編寫期間,平涼職業技術學院的惠小軍和唐海天老師進行瞭相關內容的學習,並幫助作者編寫瞭第17章和第18章的內容。他們的支持和幫助是作者高質量按時完成該書的重要保證,在此一並嚮他們錶示感謝。

  在本書齣版的過程中,也得到瞭清華大學齣版社各位編輯的幫助和指導,在此也錶示深深的謝意。由於編者水平有限,編寫時間倉促,書中難免有疏漏之處,敬請讀者批評指正。

  作者

  2017年1月於北京


用戶評價

評分

好又快,快遞員人很好,贊一個!

評分

不錯,入門很不錯

評分

很好很不錯

評分

書的內容挺好的,很新。

評分

666666

評分

666666

評分

書挺好的,正在看

評分

好好好好好好

評分

好好好好好好

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 windowsfront.com All Rights Reserved. 靜流書站 版權所有