avalon

NIOS II 自定义IP核的静态地址对齐和动态地址对齐

余生颓废 提交于 2021-02-03 07:56:33
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址) 设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addressAlignment {NATIVE} 在软件编程时 可以使用IOWR(基地址,寄存器编号(n),数据)对自定义IP的第n个寄存器进行写入操作 可以使用IORD(基地址,寄存器编号(n)) 对自定义IP的第n个寄存器进行读出操作 如果使用动态地址对齐,(每个寄存器在Avalon总线上占 数据位宽/8个字节的地址)(默认) 在软件编程时,使用IOWR_32DIRECT(数据位宽为32位)、IOWR_16DIRECT(数据位宽为16位)、IOWR_8DIRECT(数据位宽为8位)进行写操作 在软件编程时,使用IORD_32DIRECT(数据位宽为32位)、IORD_16DIRECT(数据位宽为16位)、IOWR_RDIRECT(数据位宽为8位)进行写操作 IOWR_8DIRECT(基地址、地址偏移量、数据),地址偏移量 = 寄存器编号*1 IOWR_16DIRECT(基地址、地址偏移量、数据),地址偏移量 = 寄存器编号*2 IOWR_32DIRECT(基地址、地址偏移量、数据),地址偏移量 = 寄存器编号*4 IORD_8DIRECT(基地址、地址偏移量),地址偏移量 = 寄存器编号

系统架构设计笔记(59)嵌入式系统的组成

非 Y 不嫁゛ 提交于 2020-08-17 05:40:54
嵌入式系统一般都由软件和硬件两个部分组成,其中嵌入式处理器 、 存储器和外部设备构成整个系统的硬件基础。 嵌入式系统的软件部分可以分为3个层次:系统软件 、 应用支撑软件和应用软件。其中,系统软件和支撑软件是基础,应用软件则是最能体现整个嵌入式系统的特点和功能的部分。 1 硬件架构 图 1 是一个嵌入式系统的基本硬件架构。微处理器是整个嵌入式系统的核心,负责控制系统的执行。外部设备是嵌入式系统同外界交互的通道,常见的外部设备有 Flash 存储器 、 键盘 、 输入笔 、 触摸屏 、 液晶显示器等输入 / 输出设备,在很多嵌入式系统中还有与系统用途紧密相关的各种专用外设。 嵌入式系统中经常使用的存储器有3种类型:RAM 、 ROM( Read-Only Memory ,只读内存)和混合存储器。系统的存储器用于存放系统的程序代码 、 数据和系统运行的结果。 1.1 嵌入式处理器 嵌入式系统的核心部件是各种类型的嵌入式处理器。据不完全统计,目前世界上嵌入式处理器的种类已经超过了 1000 种,比较流行的也有 30 几个系列。根据目前的使用情况,嵌入式处理器可以分为如下几类: (1)嵌入式微处理器 嵌入式微处理器( Embedded Micro Processing Unit , EMPU )是由通用计算机中的 CPU 演变而来。嵌入式微处理器在功能上跟普通的微处理器基本一致

用Visual C++创建WPF项目的三种主要方法

廉价感情. 提交于 2020-08-13 08:44:17
用Visual C++创建WPF项目的三种主要方法 The problem with using XAML from C++ Because C++ doesn’t support partial class definitions, it isn’t possible to directly support XAML in VC++ projects using this mechanism. That isn’t, however, the core reason why VC++ doesn’t directly support XAML. In addition to using the x:Class attribute, you can also use the x:Subclass attribute so that the XAML gets compiled into the class specified by the x:Class attribute, and the code behind will define the class specified by x:Subclass, which will be derived from the x:Class type. Thus, the lack of partial classes isn’t

用Visual C++创建WPF项目的三种主要方法

醉酒当歌 提交于 2020-08-09 18:57:37
用Visual C++创建WPF项目的三种主要方法 The problem with using XAML from C++ Because C++ doesn’t support partial class definitions, it isn’t possible to directly support XAML in VC++ projects using this mechanism. That isn’t, however, the core reason why VC++ doesn’t directly support XAML. In addition to using the x:Class attribute, you can also use the x:Subclass attribute so that the XAML gets compiled into the class specified by the x:Class attribute, and the code behind will define the class specified by x:Subclass, which will be derived from the x:Class type. Thus, the lack of partial classes isn’t

【MVVM】- Avalon验证器duplexHooks

依然范特西╮ 提交于 2020-03-01 11:09:35
avalon验证器: 主要用来限定某些元素的格式输入 界面 <!-- ms-duplex-limit:验证目标元素 --> <body ms-controller="test"> <input type="text" ms-duplex-limit="aaa" data-duplex-limit="10">{{aaa}}<br> <input type="text" ms-duplex-email="bbb">{{bbb}} Javascript操作代码: //自定义验证器limit:输入字符个数不能大于limit avalon.duplexHooks.limit={ get:function(str,data){ //str:绑定的元素的值 data:所有的相关数据 var limit=parseInt(data.element.getAttribute("data-duplex-limit")); if(str.length>limit){ //提取0-limit下标的字符串,若未设置则不做限制 return data.element.value=str.slice(0,limit); } return str; } } vm=avalon.define({ $id:"test", aaa:1111, bbb:"sdssds@qq.com" }); 效果图: 来源:

【MVVM】- Avalon 基础入门案例

本小妞迷上赌 提交于 2020-03-01 10:20:49
Avalon 国产前端大神司徒正美借鉴knockout和angularJS的基础上开发的mvvm框架,avalon相比knockout和angularJS在运行效率和设备适配上面具有更大的优势,同时具备以上两种框架的部分特点 avalon控制器作用域 与angualrJS的作用域相似,距离标签最近声明的控制器即为该元素的最终作用控制器,如果存在控制器嵌套,标签可以直接获取外部包裹的控制器的属性,但是最近的控制器不能与外部控制器的属性或者方法名一致, 否则会被最近的控制器的属性和方法覆盖(最近的控制器的优先级更高) 外观界面 <div ms-controller="AAAA"> userName:<span>{{aaaa}}</span> </div> <br><br> <div ms-controller="BBBB"> <div> password:<span>{{bbbb}}</span> </div> <div ms-controller="CCCC"> CCCC:<span>{{cccc :bbbb}}</span> </div> <div ms-important="DDDD"> DDDD:<span>{{dddd}}:{{cccc}}</span><br> <!-- 注意,如果将model的字符串进行连接,important失效:cccc元素数据可以正常显示 -->

【MVVM】- AngularJS 过滤器用法

一世执手 提交于 2020-03-01 10:01:32
过滤器作用 :对model的数据进行加工,按照相应的格式进行显示 AngularJS的过滤器和Avalon的用法差不多,一通百通。 currency 格式化数字为货币格式 filter 从数组项中选择一个子集 lowercase 格式化字符串为小写 orderBy 根据某个表达式排列数组 uppercase 格式化字符串为大写 外观界面 <body ng-app="myApp"> <p>字符串大小过滤</p> <div ng-controller="personCtrl"> 名: <input type="text" ng-model="firstName"><br> 姓: <input type="text" ng-model="lastName"><br> <br> <!-- 表达式过滤和avalon的过滤方法一样 --> 小写姓: {{firstName | lowercase }}<br> 大写名:{{lastName | uppercase }} </div> <hr> <p>数字货币化处理</p> <div ng-init="quantity=3;cost=5"> 总价:{{quantity*cost | currency}} </div> <hr> <p>普通数组排序</p> <div ng-init="nums=[0,5,6,3]"> <ol> <!--

【MVVM】- Avalon 属性监控、解除监控、子孙元素监控、统一属性监控

僤鯓⒐⒋嵵緔 提交于 2020-03-01 10:01:18
Avalon 属性监控 $watch:属性值改变就会改变 监听当前的vm第1层的监控属性与计算属性 多个属性监听可以使用同一个$watch监听 通过监听$all可得知所有的属性变动状况 如果属性是对象,监听该对象的子孙属性需定位对象上$watch回调 对于数组,只能监听长度的变化,不能监听内部值的变化 $unwatch:非监控属性 $fire: 解除属性监控 css样式 /*类下面的div的hover事件触发*/ .ms-hover div:hover{ background-color:yellow; } 界面 <body ms-controller="test" class="ms-hover"> <div ms-duplex="aaa" ms-click="change('aaa')">{{aaa}}</div> <div ms-duplex="$bbb" ms-click="change('$bbb')">{{$bbb}}</div> <div ms-duplex="ccc" ms-click="change('ccc')">{{ccc}}</div> </body> js操作逻辑 var vm=avalon.define({ $id:"test", aaa:"aaa", $bbb:"bbb", //$开头的非监控属性 ccc:"ccc", $skipArray:['ccc

【MVVM】- Avalon 过滤器

时光总嘲笑我的痴心妄想 提交于 2020-03-01 10:00:51
ms-controlle作用:当页面事先加载而页面并未完全渲染完成时自动隐藏目标显示域,待数据完全显示时avalon会自动取消样式,达到遮挡初始静态页面的显示效果 css样式 .ms-controller{ visibility:hidden; } 界面 <div ms-controller="filter"> <span>{{aaa|html}}</span><br> <span>{{bbb|uppercase}}</span><br> <span>{{ccc|lowercase}}</span><br> <!-- 表示从头开始截取5个字符,位数使用后面的字符串填充 --> <span>{{ddd|truncate(5,'00')}}</span><br> <span>{{eee|camelize}}</span><br> <!-- 货币处理 --> <span>{{fff|currency('$')}}</span><br> <!-- 2:表示两位小数 .:表示小数点的形式 ,:表示千分位的分隔符 --> <span>{{ggg|number(2)}}</span><br> <span>{{ggg|number(2,".")}}</span><br> <span>{{ggg|number(2,".",",")}}</span><br><br> <!-- 时间过滤器 -->

【MVVM】- Avalon 常用指令用法

不羁的心 提交于 2020-03-01 10:00:32
Avalon 常用指令 ms-visible、ms-if ms-visible:样式改变display:block ms-if 性能更高,若页面不显示则<!--ms-if-->注释标记, ms-if 还做其他的逻辑控制 css样式 div{ height:100px; width:260px; } div.d1{ background:red; } div.d2{ background:green; } 外观 <body ms-controller="test"> <div class="d1" ms-visible="object.id!=null">ms-visible{{object.message}}</div> <div class="d2" ms-if="object.id!=null">ms-if{{object.message}}</div> </body> js操作逻辑 avalon.ready(function(){ /* *ms-if:dom树添加节点 ms-visible:样式改变display:block *ms-if性能更高,如果不显示现实<!--ms-if-->注释标记 */ var vm=avalon.define({ $id:"test", object:{} }); setTimeout(function(){ /