MicroBlaze IP核中Local Memory Bus (LMB)接口描述

LMB(Local Memory Bus)是一种同步总线,主要用于访问FPGA上的块RAM(Block RAM,BRAM)。LMB使用最少的控制信号和一个简单的协议,以保证块RAM能在一个时钟周期内被存取。所有的LMB信号都是高电平有效(active high),这意味着当信号处于高电平时,它们才处于活动状态。

  1. N = 32 - 64, 地址总线的宽度N可以是32位到64位,具体取决于配置参数C_ADDR_SIZE。这个特性在MicroBlaze的v9.6版本中引入。

  2. N = 32 - 64, 当使用物理地址扩展(PAE)或64位MicroBlaze时,地址总线的宽度N仍然可以根据C_ADDR_SIZE配置为32位到64位。这个特性在MicroBlaze的v10.0版本中引入。

  3. N = 4, 8, 当使用64位MicroBlaze时,另一个总线或信号(可能是Byte_Enable或其他与数据大小相关的信号)的宽度N可以是4位或8位,具体取决于配置参数C_LMB_DATA_SIZE。这个特性在MicroBlaze的v11.0版本中引入。

  4. N = 32, 64, 当使用64位MicroBlaze时,N的值可以是32位或64位,具体取决于配置参数C_LMB_DATA_SIZE。这个特性是在MicroBlaze的v11.0版本中引入的。
  5. 这部分信息是在MicroBlaze的v8.00版本中首次引入。
Addr[0:N-1]

地址总线是MicroBlaze IP核的输出,用于与外部存储器或其他设备之间的连接,指示当前传输中正被访问的内存地址。

AS为高电平时,地址总线上的Addr[0:N-1]信号才是有效的。在某些情况下,访问外部存储器或设备可能需要多个时钟周期才能完成(例如,因为延迟、等待响应或其他原因)。在这种情况下,尽管整个传输可能需要多个时钟周期,但地址总线上的Addr[0:N-1]只在传输的第一个时钟周期内是有效的。这意味着外部设备应该在第一个时钟周期内捕获地址,并在后续周期中根据该地址进行必要的操作。

Byte_Enable[0:N]

字节使能信号是MicroBlaze IP核的输出,用于指示数据总线的哪些字节通道包含有效的数据。字节使能信号Byte_Enable仅在AS信号为高电平时有效。

当访问外部存储器或设备需要多个时钟周期才能完成时,Byte_Enable信号仅在传输的第一个时钟周期内有效。这意味着外部设备应该在第一个时钟周期内捕获Byte_Enable信号,并根据它来决定哪些字节通道的数据是有效的,然后在后续周期中根据这些信息进行必要的操作。

下表中列出了Byte_Enable信号的有效值。

Data_Write[0:N-1]
写数据总线是MicroBlaze IP核 向外部存储器发送数据时使用的通道。它包含将被写入到存储器中的数据。写数据总线上的数据仅在 AS为高电平时有效。这意味着,只有当 AS信号被激活(置为高)时,写数据总线上的数据才会被外部存储器读取和写入。

Byte_Enable[0:3]是一个4位的字节使能信号,用于指示写数据总线的哪些字节通道包含有效的数据。

AS

地址选通(AS)是MicroBlaze IP核的输出,它用于指示数据传输的开始,并确认地址总线和字节使能信号的有效性。AS信号仅在传输的第一个时钟周期内为高电平。在第一个时钟周期之后,AS信号变为低电平,并保持低电平直到下一次传输的开始。

Read_Strobe

读选通是MicroBlaze IP核的输出,用于指示正在进行的读取传输。读选通信号在传输的第一个时钟周期内变为高电平。它可以保持高电平,直到读取操作完成并且Ready信号被采样为高电平的下一个时钟周期。Ready信号是外部设备(如存储器)向MicroBlaze IP核发送的一个信号,用于指示外部设备已经准备好提供数据或完成当前操作。

Ready信号被采样为高电平时,读选通信号(Read Strobe)可能会在下一个时钟周期变为低电平,表明读取操作已经完成。

如果在Ready信号为高电平的下一个时钟周期直接开始新的读取传输,那么读选通信号可能会保持高电平。这意味着连续的读取操作可能会导致读选通信号保持高电平多个时钟周期,直到最后一次读取操作完成并且Ready信号被采样为高电平。

Write_Strobe

写选通(Write Strobe)是MicroBlaze IP核的输出,用于指示正在进行的写入传输。

写选通信号在传输的第一个时钟周期内变为高电平。它可以保持高电平,直到写入操作完成并且Ready信号被采样为高电平的下一个时钟周期。

Ready信号被采样为高电平时,写选通信号(Write Strobe)可能会在下一个时钟周期变为低电平,表明写入操作已经完成。

如果在Ready信号为高电平的下一个时钟周期直接开始新的写入传输,那么写选通信号(Write_Strobe)可能会保持高电平。

这意味着连续的写入操作可能会导致写选通信号保持高电平多个时钟周期,直到最后一次写入操作完成并且Ready信号被采样为高电平。

Data_Read[0:N-1]

读数据总线是MicroBlaze IP核的输出,包含从外部存储器或其他设备读取的数据。在Ready信号为高电平时,于时钟的上升沿Data_Read变得有效。

Ready

Ready信号是外部设备向MicroBlaze IP核发送的一个输入信号,它用于指示当前传输的完成,并表明下一个传输可以在下一个时钟周期开始。Ready信号在时钟的上升沿被采样。

Ready信号为高电平时,它指示Data_Read[0:31]总线上的数据是有效的。这意味着MicroBlaze IP核可以在该时钟周期的上升沿之后安全地读取这些数据。

Ready信号为高电平时,它表明Data_Write[0:31]总线上的数据已经被写入到本地存储器中。它通知MicroBlaze IP核写入操作已经完成,并可以开始下一个操作或传输。

Wait

Wait信号是外部设备向MicroBlaze IP核发送的一个输入信号,用于指示当前的数据传输请求已经被接受,但传输操作尚未完成。

Wait信号在时钟的上升沿被采样,

Wait信号为高电平时,MicroBlaze IP核知道它发起的数据传输请求已经被外部设备接收,但传输过程仍在进行中,尚未完成。在这种情况下,MicroBlaze IP核通常会暂停或延迟后续的操作,直到Wait信号变为低电平,指示传输已经完成。

CE

CE信号是外部设备向MicroBlaze IP核发送的一个输入信号,用于指示当前的数据传输中存在一个可纠正的错误,并且该错误已经被外部设备或内存系统纠正。CE信号在Ready信号为高电平时,于时钟的上升沿变得有效。

对于读取操作:当CE信号有效时,它表明Data_Read[0:31]总线上的数据在传输过程中存在一个可纠正的错误,但该错误已经被纠正。因此,尽管有错误发生,但读取到的数据是正确的。

对于字节或半字写入操作:如果CE信号有效,则表明在将新数据写入本地存储器之前,相应的数据字在本地存储器中已经存在一个可纠正的错误,并且该错误已经被纠正。这意味着新数据将被写入到一个没有错误的数据字上。

UE

UE信号是外部设备向MicroBlaze IP核发送的一个输入信号,它用于指示当前的数据传输中存在一个不可纠正的错误,即该错误无法被外部设备或内存系统修复。UE信号在Ready信号为高电平时,于时钟的上升沿变得有效。

对于读取操作:当UE信号有效时,它表明Data_Read[0:31]总线上的数据在传输过程中存在一个不可纠正的错误。因此,处理器核心应该认为这个数据值是错误的,并且不能信任它。

对于字节或半字写入操作:如果UE信号有效,则表明在将新数据写入本地存储器之前,相应的数据字(word)在本地存储器中就已经存在一个不可纠正的错误。此时,MicroBlaze IP核需要决定如何处理这个错误,因为新的数据将覆盖一个有问题的数据字。

Clk

所有在LMB上进行的操作(如数据的读写)都是与MicroBlaze IP核时钟同步的,这意味着每一个操作都在MicroBlaze IP核时钟的特定周期(如上升沿或下降沿)开始和结束,这种同步性确保了数据的一致性和传输的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【服务器03】之【Navicat完整版破解】

首先清掉电脑所有Navicat组件 虽然被卸载掉了但是没有彻底清理掉Navicat组件 在原装盘里找到Navicat清楚碎片 清空之后开始下载 navicat16 https://www.alipan.com/s/GTvP93mn3sU 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需…

AI Workflow的敏捷开发:持续创新与优化的艺术

在人工智能的浪潮中,AI Workflow作为大模型落地的关键实践,正逐渐成为技术领域的新宠。然而,随着技术的发展,我们面临着一系列挑战,如何有效地应对这些挑战,实现AI Workflow的敏捷开发,成为了一…

fyne的VBox布局02

VBox布局02 最常用的布局是layout.BoxLayout,它有两种变体,水平和垂直。box布局将所有元素排列在单行或单列中,并带有可选的空格以帮助对齐。 一步一步实现一个如下界面布局,这个界面可以使用VBox布局来实现。 这次添加了2个复…

【C语言】自定义类型

目录 一、结构体: 1、结构体的声明: 2、结构体的自引用: 3、结构体变量的定义和初始化: 4、结构体内存对齐: 5、结构体传参: 6、位段: 二、枚举类型: 三、联合体&#xff1a…

【深度学习驱动流体力学】完整配置安装 OpenFOAM 及其所需的ThirdParty与QT5工具

OpenFOAM 简介 OpenFOAM(Open Field Operation and Manipulation)是一个领先的开源计算流体动力学(CFD)软件包,由 OpenFOAM Foundation 开发和维护。作为一个高度模块化和可扩展的软件工具箱,OpenFOAM 支持模拟多种物理现象,包括流体流动、传热、混合、燃烧、声学等。由…

【设计模式深度剖析】【10】【行为型】【状态模式】

👈️上一篇:访问者模式 | 下一篇:解释器模式👉️ 设计模式-专栏👈️ 文章目录 状态模式定义英文定义直译如何理解呢? 状态模式的角色Context(环境类)State(抽象状态类)Concret…

Java | Leetcode Java题解之第169题多数元素

题目: 题解: class Solution {public int majorityElement(int[] nums) {int count 0;Integer candidate null;for (int num : nums) {if (count 0) {candidate num;}count (num candidate) ? 1 : -1;}return candidate;} }

SpringCloud微服务框架的原理及应用详解(一)

本系列文章简介: 随着云计算、大数据和物联网等技术的飞速发展,企业应用系统的规模和复杂度不断增加,传统的单体架构已经难以满足快速迭代、高并发、高可用性等现代业务需求。在这样的背景下,微服务架构应运而生,成为了…

Netdata介绍

前言 Netdata是一款用于Linux系统的实时性能监测工具,它提供了web界面的视角,使得用户可以通过可视化的方式清晰地了解系统和应用程序的实时状态。 Netdata具有以下几个显著特点: 实时性:Netdata能够实时监测系统和应用程序的性…

Android-Android Studio-FAQ

1 需求 2 接口 3 Android Studio xml布局代码补全功能失效问题 最终解决方案就是尝试修改compileSdk 为不同SDK版本来解决问题,将原本34修改为32测试会发现xml代码补全功能有效了! 参考资料 Android Studio xml布局代码补全功能失效问题_android studi…

电压调整+无功优化!考虑泄流效应的风电场并网点电压系统侧增援调控方法程序代码!

前言 在发电侧能源结构转型的背景下,中国在可再生能源发电技术上的快速发展使得电网中风电并网比例不断增大。风能资源的有效利用缓解了电力紧张,但由于风速的不确定性,风电场引起的公共耦合点(point of common coupling&#xf…

vue3项目使用Electron打包成exe的方法与打包报错解决

将vue3项目打包成exe文件方法 一、安装 1.安装electron npm install electron --save-devnpm install electron-builder --save-dev 2.在vue项目根目录新建文件index.js // index.js// Modules to control application life and create native browser window const { app…

Map-JAVA面试常问

1.HashMap底层实现 底层实现在jdk1.7和jdk1.8是不一样的 jdk1.7采用数组加链表的方式实现 jdk1.8采用数组加链表或者红黑树实现 HashMap中每个元素称之为一个哈希桶(bucket),哈希桶包含的内容有以下4项 hash值(哈希函数计算出来的值) Key value next(…

基于SSM+Jsp的水果销售管理网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

Linux 五种IO模型

注:还有一种信号驱动IO,使用较少暂不讨论; 一,区分阻塞、非阻塞和同步、异步 看了很多文章对这两组概念解释和对比,说的太复杂了,其实没必要,两句话就能说清楚。 首先,对于读数据rec…

探索监管沙箱在金融科技行业中的应用

一、引言 随着金融科技的快速发展,传统金融机构与科技企业之间的竞争也日趋激烈。为了平衡金融科技创新与风险防控,各国监管机构纷纷引入监管沙箱(Regulatory Sandbox)机制。监管沙箱作为一个受监督的安全测试区,允许金…

在超线程CPU上切换到另一个线程

在超线程CPU上切换到另一个线程,主要涉及到的是上下文切换的过程。超线程技术允许单个CPU核心同时执行多个线程,提高了CPU的并行计算效率。当需要从一个线程切换到另一个线程时,CPU会进行一系列的操作来确保线程之间的顺利切换。 首先&#…

Linux字节对齐小程序

#include <stdio.h> // 默认对齐 struct DefaultAligned { char c; int i; }; // 按1字节对齐 #pragma pack(push, 1) struct OneByteAligned { char c; int i; }; #pragma pack(pop) // 恢复之前的对齐设置 int mai…

linux基础 - 内核的基础概念

目录 零. 前言 一. 源码简介 二. 存储管理 物理内存管理&#xff1a; 虚拟内存管理&#xff1a; 内存分配与回收&#xff1a; 三. CPU 和进程管理 进程管理&#xff1a; CPU 管理&#xff1a; 四. 文件系统 文件系统的概念 常见的 Linux 文件系统类型 文件系统的工…

Python日志管理利器:如何高效管理平台日志

一、为什么需要日志管理&#xff1f; 日志是应用程序的重要组成部分&#xff0c;它记录了应用程序的运行状态、错误信息以及用户交互等关键信息。良好的日志管理可以帮助开发人员及时发现和解决问题&#xff0c;提高应用程序的稳定性和可靠性。 项目在本地开发调试时&#xf…