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

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类