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

相关文章

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过