关于AVALON总线动态地址对齐
在NIOS的使用中,我们往往要用到自定义外设,然后通过AVALON交换架构和NIOSII进行通信。
AVALON总线,其实是一种交换架构的协议,在自定义外设挂在AVALON总线上时,一定要注意地址对齐。
AVALON总线要求自定义外设数据位宽必须为8、16、32,这样如果使用位宽为32,那么就不需要考虑对齐了。 如果使用数据位宽为8,也就是外设数据总线位宽是8,而NIOS
数据总线位宽是32,这样就要考虑地址对齐了。这个地址对齐就是内存地址对齐。在NIOS写数据到从外设时,由于位宽不对等,NIOS会执行4次写操作,将一个32位数分成4个8位
数据写到从外设。NIOS读取从外设数据时同样道理,在读使能有效后的下一个时钟从外设必须将数据放到总线上,而且应该是4个数据,如果只有一个字节有效,其他3个字节补零
即可。
举个例子,在QSYS下挂外设时,通常系统分配好了内存映射地址,比如0x3322,那么外设的地址就从这里开始,对于8位数据位宽,那么连续4个数据在内存中存储的地址分
别是0x3322,0x3323,0x3320,0x3321,这个是由内存决定的。调试过SDRAM的朋友应该知道。特别是NIOS读取外设数据的时候,很容易出错。比如当NIOS读数据时,外设的连续4个
数据是0xaa,0x00,0x00,0x00,也就是说只有0xaa是有效的,那么根据上述地址,根据小端存储方式,地址对应的数据为0x3322->0xaa,0x3323->0x00,0x3320->0x00,0x3321-
>0x00,这样我们在NIOS中操作的时候,由于NIOS是32位的,地址对齐的是0x3320,所以就出现了读取数据的错误。 如果使用位宽是16位的,那么NIOS读写外设的时候会产生两
次读写过程。同样和上面一样,也要注意地址对齐问题。

转载请注明出处:alifpga
原文地址:bbs.alifpga.com
版权:卿萃科技
关于AVALON总线动态地址对齐的更多相关文章
- NIOS II 自定义IP核的静态地址对齐和动态地址对齐
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址)设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addres ...
- 关于 avalon总线理解(整理)
1,一个基于Avalon接口的系统会包含很多功能模块,这些功能模块就是Avalon存储器映射外设,通常简称Avalon外设.所谓存储器映射外设是指外设和存储器使用相同的总线来寻址,并且CPU使用访问存 ...
- Avalon总线概述
Nios系统的所有外设都是通过Avalon总线与Nios CPU相接的,Avalon总线是一种协议较为简单的片内总线,Nios通过Avalon总线与外界进行数据交换. Avalon总线接口分类 可分为 ...
- 每天进步一点点------SOPC的Avalon-MM IP核(二) AVALON总线的IP核定制
简介 NIOS II是一个建立在FPGA上的嵌入式软核处理器,除了可以根据需要任意添加已经提供的外设外,用户还可以通过定制用户逻辑外设和定制用户指令来实现各种应用要求.这节我们就来研究如何定制基于Av ...
- 浅谈MIPS地址对齐问题
1.什么叫地址对齐? RISC 下使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍,这个叫做地址对齐. 2.计算机主要的架构分哪两类?及其地址对齐在两者的区别? 计算机主 ...
- c++地址对齐
在一些计算机上,由于性能方面的原因,2个字节的变量,必须放在2的倍数的地址中,4个字节的,就必须放在4的倍数中的地址中,以此类推. 也就是说,如果有3个占用两个字节的变量,分别为:A,B,C,如下图: ...
- C语言结构体变量内存分配与地址对齐
地址对齐简单来说就是为了提高访问内存的速度. 数组的地址分配比较简单,由于数据类型相同,地址对齐是一件自然而然的事情. 结构体由于存在不同基本数据类型的组合,所以地址对齐存在不同情况,但总体来说有以下 ...
- C语言精要总结-内存地址对齐与struct大小判断篇
在笔试时,经常会遇到结构体大小的问题,实际就是在考内存地址对齐.在实际开发中,如果一个结构体会在内存中高频地分配创建,那么掌握内存地址对齐规则,通过简单地自定义对齐方式,或者调整结构体成员的顺序,可以 ...
- Avalon总线学习 ---Avalon Interface Specifications
Avalon总线学习 ---Avalon Interface Specifications 1.Avalon Interfaces in a System and Nios II Processor ...
随机推荐
- svn status详解
svn 是在提交前查看本地文本和版本库里面的文件的区别.返回值有许多种具体含义如下: [url=] L abc.c # svn已经在.svn目录锁定了abc.c M ...
- Java基础学习——泛型
一.泛型方法 /** 自定义泛型:自定义泛型可以理解为是一个数据类型的占位符,或者理解为是一个数据类型的变量. 泛型方法: 泛型方法的自定义格式:修饰符<声明自定义泛型>返回值类型 函数名 ...
- HTML语言笔记
html语言即超文本标记语言. 超文本标记语言,标准通用标记语言下的一个应用. "超文本"就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元 ...
- 波涛1202wm8833 lihomme/历织造 2013秋装全新男装夹克 整身年龄外套潮流立领男士休闲外套薄_9才号
波涛1202wm8833 lihomme/历织造 2013秋装全新男装夹克 整身年龄外套潮流立领男士休闲外套薄_9才号 波涛1202wm8833lihomme/历织造2013秋装全新男装夹克整身年龄外 ...
- 201521123061 《Java程序设计》第九周学习总结
201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...
- 201521123022 《Java程序设计》 第十四周学习总结
1. 本章学习总结 2. 书面作业 Q1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名),在自己建立的数据库上执行常见SQL语句(截图) ...
- openfire:基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件
基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件 上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfir ...
- Maven第三篇【Maven术语、pom.xml介绍】
maven术语 在我们上一篇中已经知道了在Intellij idea下是如何使用Maven的了,创建出来的目录结构是这样子的: 上面的目录结构就是Maven所谓的"约定",我们使用 ...
- python实例编写(1)--浏览器操作,元素操作
一.浏览器操作 1. back()与 forward() #coding=gbk //编码不一定是utf-8 from selenium import webdriver //导入包,也叫”模组“ ...
- crypto加密
/* hash.js */ var crypto = require('crypto'); module.exports = function(){ this.encode = fu ...