MicroBlaze IP核的特性和暂停功能详述

2024-06-20 09:12

本文主要是介绍MicroBlaze IP核的特性和暂停功能详述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MicroBlaze IP核的组织结构采用哈佛架构,为数据和指令访问提供了独立的总线接口单元。MicroBlaze支持的主要内存接口是本地存储器总线(Local Memory Bus, LMB)和AMBA AXI4接口(AXI4)和ACE接口(ACE)。

LMB提供对片上双端口块RAM的单周期访问。AXI4接口提供到片上和片外外围设备以及存储器的连接。ACE接口提供到存储器的高速缓存一致连接。
MicroBlaze还支持多达16个AXI4 Stream接口端口,每个端口都有一个主端口和一个从接口。

1 特性

MicroBlaze软核处理器具有高度可配置性,允许您选择设计中所需的一组特定功能。

AMBA AXI4 Interface:用于外设接口,它支持高效的、基于包的传输。AXI4 是 ARM AMBA (Advanced Microcontroller Bus Architecture) 的一部分,是一种高性能、高带宽、低延迟的接口,用于在处理器、内存和其他 IP 核之间传输数据。

AMBA AXI4 Coherency Extension (ACE) Interface:用于缓存接口,它扩展了 AXI4 以支持缓存一致性。这对于需要多个处理器或处理器与加速器之间共享数据的应用非常有用。

LMB (Local Memory Bus):提供了一个简单的同步协议,用于在 MicroBlaze 处理器和 FPGA 上的其他模块(如块 RAM)之间进行高效的数据传输。它通常用于那些不需要 AXI4 接口的复杂性和带宽的应用。

AXI4-Stream:提供了一个非仲裁的、快速的流通信机制。它特别适用于需要连续数据传输的应用,如视频流或音频流。AXI4-Stream 接口可以配置为单向或双向,并可以连接多个设备,以实现高吞吐量的数据流。

Debug Interface:用于与 Microprocessor Debug Module (MDM)  IP核一起使用,允许开发人员对 MicroBlaze 处理器进行调试。通过这个接口,开发人员可以访问处理器的内部状态、设置断点、单步执行代码等。

Trace Interface:用于性能分析。它允许开发人员捕获处理器在执行过程中的详细信息,如指令执行、数据访问等。这些信息可以用于分析处理器的性能瓶颈,并优化代码或硬件设计以提高性能。

这些接口的配置取决于具体的应用需求,开发人员可以根据需要选择适当的接口来优化他们的设计。

2 MicroBlaze的I/O接口概述

下图展示了MicroBlaze IP核的接口示意图。

  • M_AXI_DP:外设数据接口,可以是AXI4-Lite或AXI4接口。用于连接外部设备,进行数据传输。
  • DLMB (Data Local Memory Bus):数据接口,本地存储器总线(仅用于BRAM)。提供CPU与本地块存储器(如BRAM)之间的数据交换通道。
  • M_AXI_IP:外设指令接口,AXI4-Lite接口。用于挂载AXI总线形式的接口外设IP,以传输指令信息。
  • ILMB (Instruction Local Memory Bus):指令接口,本地存储器总线(仅用于BRAM)。提供CPU与本地块存储器(如BRAM)之间的指令交换通道。
  • M0_AXIS..M15_AXIS:AXI4-Stream接口主设备直接连接接口。提供高速、非仲裁的流通信机制,支持主设备与其他设备间的数据传输。
  • S0_AXIS..S15_AXIS:AXI4-Stream接口从设备直接连接接口。支持从设备与其他设备间的高速、非仲裁的流通信。
  • M_AXI_DC:数据侧缓存AXI4接口。用于连接外部数据缓存,支持高速数据传输和缓存一致性管理。
  • M_ACE_DC:数据侧缓存AXI Coherency Extension (ACE)接口。扩展AXI4接口以支持缓存一致性,用于多处理器或处理器与加速器间的数据共享。
  • M_AXI_IC:指令侧缓存AXI4接口。用于连接外部指令缓存,支持指令的高速缓存和传输。
  • M_ACE_IC:指令侧缓存AXI Coherency Extension (ACE)接口。与M_AXI_IC类似,但扩展了缓存一致性支持。
  •  Core:其他杂项信号,包括时钟、复位、中断、调试和跟踪。提供MicroBlaze IP核运行所需的基本控制和调试功能。

这些接口为MicroBlaze提供了丰富的外设连接和内存访问能力,支持各种嵌入式应用的需求。开发人员可以根据具体的应用场景选择合适的接口进行配置和使用。

3 睡眠和暂停功能

在MicroBlaze中,有两种明确的方法以受控的方式暂停执行:软件控制和硬件控制。

3.1 软件控制

通过执行MBAR(MicroBlaze Architecture Reference Manual)指令来进入睡眠模式。这种方式是通过编程实现的,即编写特定的指令让MicroBlaze进入休眠状态。

当MicroBlaze执行MBAR指令以进入睡眠模式并完成所有外部访问后,其流水线会停止,并设置Sleep、Hibernate或Suspend输出信号之一。此时可以安全地执行一些动作,如停止时钟、重置处理器或其他IP核。

这些输出信号的具体作用取决于系统设计和配置。例如,Sleep信号可能只是暂停处理器的执行,而Hibernate信号可能涉及保存处理器状态并完全关闭处理器的电源。Suspend信号可能表示处理器进入了一种低功耗状态,但仍然可以响应某些唤醒事件。

为了从睡眠模式中唤醒MicroBlaze,一个或多个Wakeup输入信号必须被设置为激活状态(通常是逻辑高电平,即“1”)。一旦这些信号被激活,MicroBlaze就会从睡眠状态中恢复,并继续执行MBAR指令之后的代码。

Dbg_Wakeup输出信号是MicroBlaze处理器用于指示调试器请求唤醒的一个信号。当这个信号被激活时,外部硬件应该处理这个信号并唤醒处理器,同时执行任何必要的硬件操作,比如启动时钟。

在使用调试唤醒功能时,软件必须意识到这可能是唤醒的原因。如果处理器在唤醒后没有需要执行的其他操作,它可能会再次进入睡眠模式。这通常是由调试器或操作系统的调度程序来控制的。

在最简单的情况下,如果处理器唤醒前不需要执行额外的动作,可以将一个Wakeup输入信号直接连接到MicroBlaze的中断输入信号(如INT),而另一个Wakeup输入信号连接到MicroBlaze的Dbg_Wakeup输出。这样配置后,MicroBlaze可以在中断发生时或者当调试器请求时唤醒。

要实现软件复位功能,可以将MicroBlaze的Suspend输出信号连接到适当的复位输入上,以便在需要时复位处理器或整个系统。

以下表格总结了MicroBlaze处理器的MBAR睡眠模式指令:

下面图3-2中的框图,展示了如何使用睡眠功能来实现时钟控制。在这个例子中,当执行睡眠指令时,时钟会被停止,而任何中断或调试命令都会启动时钟并唤醒处理器。

当使用RTL模块代替IP核来实现时钟控制时,可以使用VHDL来编写相应的代码。以下是一个VHDL实现示例,用于在类似图3-2所示的框图中控制时钟。

library IEEE;
use IEEE.STD_LOGIC_1164.all;
library UNISIM;
use UNISIM.VComponents.all;
entity clock_control isport (clkin : in std_logic;reset : in std_logic;sleep : in std_logic;interrupt : in std_logic;dbg_wakeup : in std_logic;clkout : out std_logic);
end clock_control;
architecture Behavioral of clock_control isattribute X_INTERFACE_INFO : string;attribute X_INTERFACE_INFO of clkin : signal is ".com:signal:clock:1.0 clk CLK";attribute X_INTERFACE_INFO of reset : signal is ".com:signal:reset:1.0 reset RST";attribute X_INTERFACE_INFO of interrupt : signal 
is ".com:signal:interrupt:1.0 interrupt INTERRUPT";attribute X_INTERFACE_INFO of clkout : signal is ".com:signal:clock:1.0 clk_out CLK";attribute X_INTERFACE_PARAMETER : string;attribute X_INTERFACE_PARAMETER of reset : signal is "POLARITY ACTIVE_HIGH";attribute X_INTERFACE_PARAMETER of interrupt : signal is "SENSITIVITY LEVEL_HIGH";attribute X_INTERFACE_PARAMETER of clkout : signal is "FREQ_HZ 100000000";signal clk_enable : std_logic := '1';
beginclock_enable_dff : process (clkin) isbeginif clkin'event and clkin = '1' thenif reset = '1' thenclk_enable <= '1';elsif sleep = '1' and interrupt = '0' and dbg_wakeup = '0' thenclk_enable <= '0';elsif clk_enable = '0' thenclk_enable <= '1';end if;end if;end process clock_enable_dff;clock_enable : component BUFGCEport map (O => clkout,CE => clk_enable,I => clkin);
end Behavioral;

3.2 硬件控制

通过设置输入信号Pause来暂停流水线。这里的“流水线”指的是处理器执行指令的并行处理过程。当Pause输入信号被设置为1(高电平),并且MicroBlaze已经完成所有外部访问时,处理器的流水线会停止,并且Pause_Ack输出信号会被设置。这个Pause_Ack信号是用来通知外部硬件,现在可以安全地执行诸如停止时钟、重置处理器或其他IP核等操作。为了从暂停状态恢复,Pause输入信号必须被清除到0(低电平)。当Pause信号变为低电平时,MicroBlaze将从之前暂停的地方继续执行指令。

Dbg_Continue 输出信号是 MicroBlaze 处理器提供的一个调试功能信号。当这个信号被激活(通常设置为高电平)时,它表示调试器请求处理器从暂停状态恢复执行。这个信号对于调试过程中需要精细控制处理器状态的情况非常有用。

在外部硬件设置或清除“Pause”状态后,为了避免由于错误地检测“Pause_Ack”而导致的问题,建议当外部硬件设置了“Pause”状态后,应该等待相应的“Pause_Ack”信号被设置。这通常表示系统或内部硬件已经成功接收到了“Pause”的请求,并且已经采取了相应的动作。

用于硬件控制的所有信号(Pause、Pause_Ack和Dbg_Continue)都是与MicroBlaze时钟同步。

图3-3中的框图展示了如何使用暂停功能来停止处理器以及如何实现时钟控制。在这个例子中,Pause 是一个外部硬件信号,用于暂停处理器的执行并停止时钟。当 Pause 被清除(设置为零)时,时钟被启用,并且处理器的执行恢复。这个例子假设外部逻辑监视 Dbg_Continue 信号,并在允许调试时清除 Pause

这篇关于MicroBlaze IP核的特性和暂停功能详述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1077710

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件