Cortex-M0处理器及ABMA总线简介

科技   2024-11-12 12:19   陕西  



Cortex-M0处理器及

ABMA总线简介




01

Cortex-M0 CPU 简介

►►►

1.1 Cortex-M0处理器内部结构


Cortex-M0是ARM公司Cortex-M系列中结构和功能最简单的32位RISC处理器,采用指令和数据共用的总线接口和存储器,以及三级流水线结构,提高了指令通道的吞吐量和运行速率。它支持大部分16位的Thumb-1指令和部分32位的Thumb-2指令,中断包括一个不可屏蔽中断和1~32个物理中断。Cortex-M0微处理器内部结构如图1.1所示。Cortex-M0内部结构包括处理器核、AHB_Lite总线系统、嵌套向量中断控制器(NVIC)、唤醒中断控制器(WIC)、调试子系统以及内部总线系统。

图1.1 Cortex-M0微处理器内部结构

处理器核是Cortex-M0的“大脑”,包含寄存器、算术逻辑单元(ALU)、数据通路和控制逻辑,采用三级流水线的命令通道结构。如图1.2所示,指令一会经历取指数到执行等三个步骤,而指令二不会在指令一结束后才开始它的操作,只会在下一个时钟周期就开始它的数据传输。

图1.2 三级流水线命令通道结构

总线系统的作用如同一个连接器,在Cortex-M0与内部各个功能部件之间建立通信渠道,以便信号的传输和接收。Cortex-M0总线均为32位宽度,而AHB-Lite则是ARM公司指定的片上总线规范。

嵌套向量中断控制器(NVIC)是用来管理使能中断并且配置相关中断的优先级。NVIC中对每一个中断设置了抢先优先级和响应优先级,当多个中断请求到来时,则通过抢先优先级进行比较,抢先优先级相同则比较响应优先级,对中断请求处理后,将高优先级的中断发送给处理器,做出相应操作。如果当前处理器正在执行优先级低的中断,优先级高的中断可以打断当前中断,当高优先级中断执行完后,再返回到上一个中断继续执行。NVIC最多可接受32个中断请求信号和一个不可屏蔽中断NMI。

调试子系统用于实现对调试控制、程序断点和数据监控点的控制和管理。当开发人员进行调试工作时,让处理器核进入停止状态,在该点对处理器的状态、寄存器值和标志位等进行分析,硬件调试工具有JTAG和SWD。

唤醒中断控制器(WIC),主要在低功耗设计中采用,是一个可供选择的模块。它的低功耗在于可以通过关闭大部分元件,让处理器处于休眠模式。一旦检测到有中断事件发生时,WIC向电源管理器发送上电请求,使处理器切换到正常的工作模式。



►►►

1.2 Cortex-M0处理器寄存器组

  • 寄存器组用于保存数据,包括需长时间保存的数据和处理计算的中间数据。

  • 相比外部RAM或ROM,内部寄存器访问速度更快。

  • 寄存器组采用加载-保存结构,处理器不直接在存储器中操作数据,而是先加载到寄存器中处理,再写回存储器。

  • Cortex-M0包含寄存器组和特殊寄存器,其中R0-R12为通用寄存器,R0-R7为低权限寄存器,可被任何指令访问;R8-R12为高权限寄存器,部分Thumb指令无法访问。

Cortex-M0寄存器组如图1.3所示:

图1.3 Cortex-M0寄存器组


►►►

1.3 Cortex-M0存储器映射

Cortex-M0处理器提供了4GB的存储器寻址空间,根据不同的使用目的,结合ARM公司的Cortex-M0用户手册中的Memory-map,将该寻址空间大致划分了区域,如表2-1所示。

表2.1 Cortex-M0存储器寻址空间

起始地址

终止地址

使用描述

0x00000000

0x1FFFFFFF

程序代码

0x20000000

0x3FFFFFFF

数据存储器

0x40000000

0x4000FFFF

APB部分的地址空间

0x40010000

0x40010FFF

AHBGPIO#0

0x40011000

0x40011FFF

AHBGPIO#1

0x40012000

0x40012FFF

AHBGPIO#2

0x40013000

0x40013FFF

AHBGPIO#3

0x40014000

0x4001EFFF

为额外GPIO保留的地址空间

0x4001F000

0x5FFFFFFF

预留片上外设

0x60000000

0x90000000

芯片外接的DDR、FLASH和LCD

0xA0000000

0xDFFFFFFF

外部外设


存储器将地址空间大致划分了成了以下区域:

代码区:用于保存程序代码和数据存储器,构成该区域的物理设备一般为片上Flash。

SRAM区:用于保存数据,如堆和堆栈,也用于程序代码区,构成该区域的物理设备一般为片上存储器,如SRAM。

外设区:该区域包含AHB外设和APB外设以及片上外设。

外部RAM区:该区域用于保存大的数据块或者作为存储器高速缓存。

外部设备区:该区域主要是将地址映射到外部设备,连接片外设备(也称为Off-chip Memory)如SD卡等。




02

AMBA总线协议简介


ARM公司在设计Cortex-M0核时,定义了所需的信号端口及传输特性,并据此制定了AMBA总线协议,用于ARM处理器与外部设备的互连。在Cortex-M0的SOC中,通过AHB-Lite和APB-Lite协议实现无障碍访问。AHB总线用于高性能模块间的连接,而APB总线为低速外部设备提供低功耗互连。


►►►

2.1 AHB-Lite及APB-Lite总线结构

基于AHB-Lite总线所构成的系统架构如图2-4所示。

图2.1 基于AHB-Lite总线所构成的系统架构

(1)Master(主设备)。本文中主设备是指Cortex-M0处理器核,其功能主要是运算并发出地址(HADDR)、数据(HWDATA)和控制类信号,与从设备进行数据的交互;

(2)Decoder(地址译码器)。写操作时,通过接收主设备发送的HADDR地址信号,来使能某一个HSELx信号,从而驱动某一个从设备,达到的效果即是帮助Cortex-M0核选择所要访问的从设备,将数据发送到该从设备并使能其完成相应逻辑功能。在读操作时,发送一个选通信号到多路复用器,完成某一从设备输出数据和信号的选定;

(3)MUX(多路复用器)。准确来说应该是从设备多路复用器,各个从设备的输出信号都会给到MUX,而MUX则根据Decoder发送过来的选通信号来选定某一个从设备的输出信号,并将其发送给主设备。

(4)Slave(从设备)。从设备们都包含AHB-Lite端口,如地址(HADDR)、数据(HWDATA)和控制类端口,主设备可通过这些端口访问它们。APB-Lite的系统架构和功能部件基本上和AHB-Lite一样,但是它们最大的区别是在于主设备上,AHB-Lite的主设备是Cortex-M0核,而APB-Lite的主设备则是AHB_to_APB Bridge,APB桥在AHB-Lite系统架构是作为一个Slave,而在APB-Lite系统架构里面则是作为Master(主设备),其功能相当于一个带有精简信号功能的“桥”的作用,Cortex-M0核想要访问APB总线上挂载的从设备,需要先访问AHB-Lite系统架构中的APB桥这个Slave,桥能够保存传输过来的地址和数据信号,并精简控制信号,然后如同一个主设备再给APB-Lite系统架构发出数据和控制信号,反之Cortex-M0核想要读取APB总线上从设备的数据,也是先将数据传送给APB-Lite系统架构里面的主设备APB桥,然后APB桥在AHB-Lite系统架构中作为从设备发送数据给到主设备Cortex-M0核。


►►►

2.2 AHB总线信号概述

AHB-Lite协议中,提供了两个全局信号,如表2-2所示。

表2.2 AHB-Lite中的全局信号

信号

传输方向

描述

HCLK

时钟源指向所有部件

总线时钟用来驱动所有设备,所有信号的时序均以HCLK的上升沿为基准

HRESETn

复位控制器指向所有部件

线复位信号,是唯一一个低电平有效的信号,用于复位系统和总线

AHB-Lite协议中的主设备接口信号及其描述如表2-3所示。

表2.3 AHB-Lite中的主设备接口信号

信号

传输方向

描述

HADDR[31:0]

指向从设备

32位系统地址总线

HWDATA[31:0]

指向从设备

写数据总线,用于在写操作周期内将数据发送给从设备

HWRITE

指向从设备

指示传输的方向,当信号为高时,表示写传输,为低时,表示读传输

HSIZE[2:0]

指向从设备

表示传输的线宽,如字节、半字和字

HBURST[2:0]

指向从设备

突发类型,表示传输为单一传输或者突发传输

HPORT[3:0]

指向从设备

保护控制信号,提供了关于总线访问的额外信息,被模块使用,实现某个级别的保护。

HTRANS[1:0]

指向从设备

表示当前的传输类型,包括IDLE、BUSY、NONSEQUENTIAL或SEQUENTIAL

在表2-3中,HADDR和HWDATA为总线的地址和数据信号,也是一个传输最基本的信号,而HWRITE、HSIZE、HTRANS等则是该传输的控制信号。HWRITE信号决定了传输方向。HSIZE是一个3bit的信号,这个三位信号显示传输过程中数据的线宽。HTRANS是一个2bit的信号,就存在着00、01、10、11四种传输方式,分别对应着等待、繁忙、非连续和连续传输。传输类型实际上只有连续传输和非连续传输,等待和繁忙则是一个传输类型,在想要完成一个数据传输过程时,若该信号是IDLE,即表示当前无数据传输,可以进行当前传输;若该信号为BUSY,则表示当前Master在一个传输过程了加入了BUSY,但是此时总线使用权力依然没有放开,需要等到该传输完成才能进行当前传输。

AHB-Lite协议中的从设备接口信号及其描述如表2-4所示:

表2.4 AHB-Lite从设备接口信号

信号

传输方向

描述

HRDATA[31:0]

从设备指向多路选择器

在读传输时,从设备会将数据发送到从设备多路选择器,然后由选择器发送到主设备

HRDATA[31:0]

从设备指向多路选择器

HRESP

从设备指向多路选择器

传输响应信号,为主设备提供额外的传输状态信息,为低时表示传输状态OKAY,为高时表示当前传输出现了错误

如表2-4所示,从设备主要是将数据和状态信号传送给多路选择器,多路选择器再根据地址和选通信号选取一个从设备的数据传送到主设备。

AHB-Lite协议中的译码器和多路选择器信号及其描述如表2-5所示。

表2.5 AHB-Lite协议多路选择器信号

信号

传输方向

描述

HRDATA[31:0]

指向主设备

来自多路复用器将要读到主设备的数据

HREADY

指向主设备和从设备

多路复用器到主设备的准备信号,为高时,表示主设备和当前完成传输已完成

HRESP

指向主设备

来自多路复用器的将要传输到主设备的传输响应信号

HSELx

译码器指向从设备

所有从设备的驱动指令,为高时表示该从设备被选择并和主设备实施传输


►►►

2.3 AHB-Lit总线时序

传输时序是各个逻辑部件正常执行操作的基本规则,只有遵从协议中的时序规则来设计逻辑功能,才能适配CPU,通俗来讲就是Cortex-M0核有自己的读取数据和发出数据的时序,设计的模块也应该遵循它的时序,在时序规则之内进行逻辑设计,是各模块可靠性的最根本要求。AHB-Lite传输包括两个阶段,地址阶段和数据阶段,地址阶段一般只持续一个时钟周期,数据阶段则可能需要多个时钟周期来完成。AHB-Lite的基本传输有两种类型,分别是无等待传输和有等待传输,其传输过程如图2-5和2-6所示:

图2.2 AHB-Lite无等待的基本传输过程


图2.3 AHB-Lite有等待的基本传输过程


如图2.2所示的是AHB-Lite无等待的传输过程,且数据的跳变都是随时钟上升沿跳变。图中灰色的类似尖峰或者突变的状态,则是拟合实际情况中数据信号的跳变不是瞬态的,从一个状态跳变到另外一个状态,中间会有一个极短的不定状态,这是因为MOS管的打开和关闭需要时间,并且一些电容的充放电也不是瞬时完成。

图2.2中地址周期维持了一个时钟周期,在时钟上升沿到来之后,将地址A写到了地址总线HADDR上。在数据周期中,在时钟上升沿到来时,HWRITE信号为低,表示此时是为读传输,那么HRDATA会在下一个时钟上升沿的时候读取地址A对应的数据Data(A),之所以会强调该种传输为无等待传输,是因为一个数据的传输由地址周期和数据周期组成,如果在下一个周期时,HREADY信号为高,说明当时的传输可以继续进行,那么就会紧接着完成数据周期的读写操作。

如图2.3所示,地址周期和无等待传输一致,但是到了地址周期的下一个时钟周期,HREADY在时钟上升沿为低,表示当前可能总线被占用或者从设备还没有处理完程序,所以当前传输需要等待,直到总线空闲或者从设备准备到了做接下来的读写操作,那么HREADY信号就会拉高,从而完成数据周期的数据传输过程。等待传输的等待信号HREADY可以是人为逻辑控制,也可以是Cortex-M0核的自主控制,为的是让总线上的传输有条不紊地进行。

在实际传输当中,并不是全读操作后进行全写操作,更多的是读写操作的交错进行,如图2.4所示.

图2.4 AHB-Lite一般传输过程


我们将其传输划分为五段:

T0-T1:A的地址周期;

T1-T2:A的数据周期,此时HREADY为高,并且HWRITE为高,为无等待的写操作传输,所以在HWDATA总线上传输A地址对应的数据DATA(A)。并且也是B的地址周期;

T2-T3:B的数据周期,此时HREADY为高,并且HWRITE为低,为无等待的读操作传输,所以在HRDATA总线上传输B地址对应的数据DATA(B)。并且也是C的地址周期;

T3-T4:C的数据周期,此时HREADY为低,并且HWRITE为高,为写操作,该周期为等待周期,不进行数据传输。

T4-T5:C的数据周期,此时HREADY为高,所以在HWDATA总线上传输C地址对应的数据DATA(C)。



►►►

2.4 基于Cortex-M0的SoC系统架构设计

图2.5基于Cortex-M0的SoC整体架构


本SoC的整体架构分为三个部分:主设备,AHB-lite以及挂载的从设备。主设备是Cortex-M0核,ROM,GPIO,AHB2APB Bridge作为从设备分别映射到不同的地址空间,同时AHB总线又作为主设备,通过UART,WDT,TIMER作为AHB总线的从设备。



END


路科验证
专注于数字芯片验证的系统思想和前沿工程领域。
 最新文章