Avalon总线学习

news2024/11/16 13:26:59

Avalon总线学习

avalon总线可以分为:

  • Avalon clock interface

  • Avalon reset interface

  • Avalon Memory mapped interface

  • Avalon iterrupt interface

  • Avalon streaming interface

  • Avalon tri-state conduit interface

  • Avalon conduit interface

1、Avalon clock interface

这是一个时钟接口,所有的avalon接口都是同步的,都需要有一个时钟,在qsys中,我们每添加一个新的IP核,都需要将它与时钟连接上。自定义IP核时,可以定义一个时钟接口,也可以定义多个时钟接口,时钟接口可以时输入,也可以是输出,就比如PLL锁相环,有输入时钟,又有输出时钟。下图是锁相环的接口图

image-20240311222307514

我们重点关注clock sink输入接口和clock source输出接口。

1)clock sink信号类型:

信号宽度方向是否必选描述
clk1input一时钟信号,为内部逻辑和其他接口提供同步

在qsys中clock sink的属性:

image-20240311223033325

只有一个clock rate,如果为0,那么clock rate无效,如果不为0并且连接的时钟源不是指定的频率,那么qsys则发出警告,一般我们这里采用默认设置就可以了。

2)clock source信号类型

信号宽度方向是否必选描述
clk1output一个输出时钟信号

clock sink是用于整个内部逻辑和其他接口的时序

clock source就是用于外部逻辑和其他接口的时序。

属性如下:

  • associaated direct clock

    任何一个同步的接口都要依附一个时钟,那么这个依附的时钟就是associaated direct clock ,比如双口fifo,我们的输入端口依附的时钟就是输入时钟,我们的输出端口依附的就是输出时钟。

image-20240311224004582

  • clock rate

    表示频率,使用默认设置即可

image-20240311224250374

  • clock rate known

表示时钟频率是否已经知道,如果已经知道,这个信息在系统中可以用于自定义其他 组件

image-20240311224449242

2、Avalon reset interface

这是又给复位接口,avlaon接口他们的复位都是连接在一起的,只要nios ii处理器复位了,那么所有的ip也会一起复位。和时钟接口一样可以分为reset sink和reset source。

信号类型

信号宽度方向是否必选描述
reset、reset_n1input必选复位信号,reset高电平有效,reset_n低电平有效
reset_req1input可选复位请求信号

信号属性

1)reset sink的信号属性:

associateed clock

关联的同步信号,如果我们自定义IP核将输入时钟接口命名为clk,那么此时同步到该接口的时钟名称就是clk,如果我们命名为clock那么此时同步到该接口的时钟名称就是clock。

image-20240311225035474

  • synchronous edges

表示reset输入需要同步类型,none选项表示不服位;deassert选项表示异步复位;both选项表示同步复位。

image-20240311225543627

2)reset source

信号宽度方向是否必选描述
reset、reset_n1output必选复位信号,reset高电平有效,reset_n低电平有效
reset_req1output可选复位请求信号

属性:和reset sink差不多

image-20240312161913465

3、Avalon Memory mapped interface

也就是Avalon-MM,它是一个地址映射接口,可以通过地址读写数据,这个接口非常的常用,也是一个非常重要的接口,疑问我们后面自定义用户外设的化,也是基于这个接口去构建的。采用全同步时序。

Avalon-MM总线是一种主从式的传输方式,由一个主控端外设发起并控制传输的过程,而从属端外设响应经由总线模块发来的信号完成整个传输。Avalon-MM总线不会因为总线被占据而延误传输的时间,有逻辑仲裁,可以遵循先来后到的规则,也可以遵循谁重要谁先访问的规则。image-20240312162658595

也就是nios cpu可以跟多个外设建立一个单独的通道,当多个主机访问同一个slave时,由仲裁模块决定谁先访问.

信号类型以及信号流向:

image-20240312163100949

Avalon-MM信号可以分为主端口信号和从端口,每个单独的主端口或从端口使用的信号类型由外设的设计决定.

属性:

image-20240314201453283

属性名称描述
address units为地址信号指定单位
associated clock同步到该接口的时钟名称
associated reset同步到该接口的复位名称
Bits per symbol定义每个符号位的位数
Burstcount ubits为burstcount信号指定单位
Explicit address span明确地址范围
setup数据建立时间
read wait读取等待时间
write wait写入等待时间
Hold数据保持时间
Timing units为setup,hold,write wait和read wait指定单位
Read latenccy读延时
Maximum pending read transactions在从设备中:这个参数是从设备在等候未读的队列最大数。在主设备中:表示主设备生成的未解决的读事件数量
Burst on rurst boundaries only写信号
LineWrap Bursts写进来的数据

传输方式有:基本传输、流水线传输、突发传输的。流水线传输地址需要多次发送,而突发传输只需要发送1次(首地址)。

Avalon-MM的传输时序:

同种类型的主端口与从端口传输在时序上基本是一致的,其区别仅在于主端口传输时由主端口外设驱动总线模块,而从端口传输是由总线模块驱动从端口外设。

  • Avalon-MM从端口固定延时的写基本传输时序图

    当时钟的上升沿到来的时候,拉高write信号,同时给出写地址address和要写的数据writedata。信号的流向可以参考上图:信号类型以及信号流向

image-20240314200835015

将write wait设置为2,就变成下图,write信号延迟了2个时钟周期,可以给外设充分的响应时间。

image-20240314203104586

  • 可变延迟的写基本传输时序

    可变延迟传输和固定延迟传输的区别在于是否存在waitrequest信号。

    image-20240314203345358

当waitrequest信号为低时,且write为高时,在时钟上升沿地址和数据才能被传输。

  • 流水线传输时序

    下面时序是主机读取从机的数据,主机将read拉高,从机发送低电平的waitrequest信号给主机时,主机将地址address信号传输给从机,从机返还数据给主机的同时把readdatavalid信号拉高,代表数据有效。

image-20240314203706193

在流水线时序传输时序中,需亚奥设置Maximum pending read transactions信号属性,这个属性时表示这个模块最大能接受的流水量。

  • 写突发传输时序

    只需要给出初始地址address,和突发长度,地址能依次累加写入数据。

image-20240314204731121

image-20240314205007164

  • 读突发传输

    read:主机->从机,拉高,同时将address地址和burstcount突发长度给从机,告诉从机从哪里开始读取数据,读取几个数据。

    readdatavali:从机–>主机,拉高时,代表从机返还数据给主机,主机可以开始接收数据了。

    在这里插入图片描述

4、Avalon interrupt interface

这一一个中断接口,自定义外设组件中需要使用中断功能的时候,我们就可以通过这个接口来实现。

1)输入:interrupt receiver

信号类型位宽是否必选描述方向
irq1-32irq是n位的矢量,每个位直接对应一个IRQ发送器,没有优先级在内的呈现输入
  • 属性
  • image-20240314210553370

2)输出:interrupt sender

信号类型位宽是否必选描述方向
irq、irq_n1中断请求信号。当从器件需要接收时使irq有效output
  • 属性:

image-20240314212344299

中断号0的最高,然后是1,依次递推。

5、Avalon streaming interface

它是一个流接口,streaming就是流水的意思,它支持单向数据流,包括数据包,dsp数据等等,avalon-st接口与avalon-mm接口的区别是非常明显的,avalon-mm接口主要用于sopc控制流传输或者简单的数据流传输,而avalon-st接口则主要用于sopc设计中高速数据流的传输,二者可以说是相辅相成的,搭配使用可以清晰的分离系统内的控制流核数据流,显著地提高系统整体地可靠性核运行效率。Avalon-ST是一种单向点对点的高速接口。

Avalon-MM用于qsys控制流传输或者简单的数据流传输
Avalon-ST适用于一些传递速度要求较高,没有地址要求的应用方面

Avalon-MM包含两种接口source端口和sink端口,数据流向

在这里插入图片描述

  • 信号类型:

image-20240314213048046

  • 属性:

image-20240314213134240

注意first symbol in high-order bits选项:

image-20240314213343306

解释一下这个选项的含义:

image-20240314213657135

假设data bits per symbol=16,将它分为symbol0、symble1、symbol2和symbol3四组,如果选中了first symbol in high-order bits,那么symbol0就在最高位,如果没有选中,那么symbol0就会在最低位。

时序图:valid信号为高就可以采集数据了,此时数据有效。

image-20240314214438504

有反馈信号ready的基本传输连接示意图:

image-20240314214740256

因为有ready信号,我们就可以使用到于ready信号相配合使用的ready latency信号属性。如下图,当ready为低的时候,sink是不接受数据的,只有当ready、

valid同时为高是,sink接口才可以接收数据。

image-20240314214937793

再看一个例子:当ready信号有效时,valid信号等待了2个时钟周期才有效,此时sink才会接收source发送的数据。

image-20240314215127567

2)包传输

在Avalon-ST中,我们使用SOP和EOP来指示一个包。sop就是start of packet ,eop就是end of packet。

image-20240314215517584

时序图:

startofpacket和endofpacket的值仅在valid信号拉高时有意义。当startofpacket为高时,数据就开始传输,当endofpacket为高时,数据包停止传输。当两次包传输之间没有空闲期时,startofpacket信号可以紧跟一次包传输的endofpacket信号。注意当ready信号和valid信号同时为高时才开始传输数据。

image-20240314215539223

在看一下其他信号:empty\channel\error

image-20240314220233652

由于使用了channel信号,所以需要设置maximun channel信号属性。maxinmum channel就是用来说明数据接口支持的最大通道数。

image-20240314220827725

6、Avalon tri-state conduit interface

简称Avalon-TC,它是一个三态导管接口。是为了驱动外围组件地片上控制器而设计地。由于多重外围设备可以通过该接口共享数据,地址核控制引脚,因此它能节约FPGA引脚。一个点到点的接口。

altera提供的关于avalon三态导管接口的IP核:

generic tri-state controller、tri-state conduit bridege、tri-state conduit bridge translator、tri-state conduit pin shaarer

7、Avalon conduit interface

它是一个单纯地导管接口,该接口可以将Qsys系统中地信号或者信号组连接到设计中的其他模块或者FPGA的管教上,比如我们将PIO IP核的引脚引出Qsys系统,然后分配给LED管脚,或者其他FPGA管脚。

image-20240314222721151

属性

image-20240314222817145

--晓凡  2024314日于武汉书

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

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

相关文章

【LeetCode热题100】206. 反转链表(链表)

一.题目要求 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 二.题目难度 简单 三.输入样例 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2…

【系统架构设计师】软件架构设计 02

系统架构设计师 - 系列文章目录 01 系统工程与信息系统基础 02 软件架构设计 文章目录 系统架构设计师 - 系列文章目录 文章目录 前言 一、软件架构的概念 ★★★ 二、基于架构的软件开发 ★★★★ 三、软件架构风格 ★★★★ 1.数据流风格 2.调用/返回风格 3.独立构件风格…

PlantUML Integration 编写短信服务类图

PlantUML Integration 写一个类图,主要功能为 1、编写一个serviceSms短信服务类; 2、需要用到短信的地方统一调用基建层的服务即可; 3、可以随意切换、增加短信厂商,不需要更改场景代码,只需要更改application.yml 里面…

搜索二叉树迭代和递归的两种*简单*实现方式

判断搜索二叉树 概念 一棵树所有结点的左节点小于父节点,右节点大于父节点,则为搜索二叉树。 迭代方法 中序遍历二叉树,如果总是升序则是搜索二叉树。如果存在降序,那肯定不是搜索二叉树。 Coding checkTreeOrder()方法 boo…

【Godot4自学手册】第二十六节用GPUParticles2D节点实现地宫入口的奇异光芒

我们的主人公与NPC对话完成后,夜晚来临,在城北有一处乱石岗,出现了奇异光芒,这是地宫的入口,但是有一妖怪把守,我们必须消灭妖怪后才可发现地宫入口。这一节,主要记录利用粒子系统GPUParticles2…

YOLOv9目标识别——环境配置与训练自己的数据集

前言 YOLOv9引入了一种全新的计算机视觉模型架构,相比目前流行的YOLO模型(如YOLOv8、YOLOv7和YOLOv5),在MS COCO数据集上取得了更高的mAP(平均精度均值)。 YOLOv9是由Chien-Yao Wang、I-Hau Yeh和Hong-Yua…

Elasticsearch:调整近似 kNN 搜索

在我之前的文章 “Elasticsearch:调整搜索速度”,我详细地描述了如何调整正常的 BM25 的搜索速度。在今天的文章里,我们来进一步探讨如何提高近似 kNN 的搜索速度。希望对广大的向量搜索开发者有一些启示。 Elasticsearch 支持近似 k 最近邻…

做好外贸网站SEO优化,拓展海外市场

随着全球贸易的发展和互联网的普及,越来越多的外贸企业将目光投向了网络,希望通过建立网站来拓展海外市场。然而,在竞争激烈的外贸市场中,要让自己的网站脱颖而出,吸引更多的目标客户,就需要进行有效的SEO优…

【C语言进阶篇】C语言内存函数

目录 1.memcpy函数及其模拟实现 1.1 memcpy函数的使用 1.2 memcpy函数的模拟实现 2.memmove函数及其模拟实现 2.1 memmove函数的使用 2.2 memmove函数的模拟实现 3.memset函数 4.memcmp函数 1.memcpy函数及其模拟实现 1.1 memcpy函数的使用 memcpy函数是用来拷贝内存的函数&…

【力扣精选算法100道】——带你了解(数组模拟栈)算法

目录 💻比较含退格的字符串 🎈了解题意 🎈分析题意 🚩栈 🚩数组模拟栈 🎈实现代码 844. 比较含退格的字符串 - 力扣(LeetCode) 💻比较含退格的字符串 &#x1f3…

代码学习记录22--回溯算法第三天

随想录日记part22 t i m e : time: time: 2024.03.17 主要内容:今天主要是结合类型的题目加深对回溯算法的理解:1.组合总和;2.组合总和 ;3.分割回文串。 39. 组合总和 40.组合总和II131.分割回文串 Topic1组合总和 题…

Error response from daemon Get server gave HTTP response to HTTPS client

使用docker compose拉起docker镜像时,若出现如下报错 Error response from daemon: Get "https://devops.test.cn:5000/v2/": http: server gave HTTP response to HTTPS client表示Docker守护进程无法从指定url获取响应, 可能原因有以下&…

深入理解jsp技术

目录: JSPJSP介绍JSP运行原理JSP标签的使用JSP原始标签的使用JSP的指令标签JSP的内置对象请求转发请求转发案例JSP中的四大作用域对象JSTL标签库EL表达式JSTL标签库与EL表达式的使用 JSP JSP介绍 JSP(全称Java Server Pages)Java服务端页面技术,是JavaEE…

结构体中的内存对齐是什么?一起搞懂它

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

LeetCode刷题记录:(11)组合(初识回溯算法)

leetcode传送通道 暂时记录&#xff0c;这篇没啥营养&#xff0c;不用看了 class Solution {List<List<Integer>> result new ArrayList<>(); // 存所有组合List<Integer> path new LinkedList<>(); //存每一个组合public List<List<Int…

聚信产服:引领多元化产业服务迈向新纪元

聚信产服成立于2014年&#xff0c;一家在产业服务领域拥有深厚积淀的综合性服务机构&#xff0c;专注于政府招商、园区运营、企业选址咨询及产业链服务等多元化业务。我们致力于通过高效、专业的服务&#xff0c;为政府、企业及投资者提供全方位的产业支持&#xff0c;推动区域…

【鸿蒙HarmonyOS开发笔记】动画过渡效果之布局更新动画

概述 动画的原理是在一个时间段内&#xff0c;多次改变UI外观&#xff0c;由于人眼会产生视觉暂留&#xff0c;所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧&#xff0c;对应一次屏幕刷新&#xff0c;而决定动画流畅度的一个重要指标就是帧率FPS&#x…

计算机二级(Python)真题讲解每日一题:《十字叉》

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬ ‪‬‪‬‪‬‪‬‪‬‮‬‪…

React Hooks全部总结

Hooks 概念理解 学习目标&#xff1a; 理解 Hooks 的概念及解决的问题 什么是 hooks hooks 的本质&#xff1a; 一套能够使函数组件更强大、更灵活的&#xff08;钩子&#xff09; React 体系里组件分为类组件和函数组件 多年使用发现&#xff0c;函数组件是一个更加匹配 Rea…

解决:visio导出公式为pdf图片乱码问题

今天需要将Visio编辑好的以后的图输出pdf&#xff0c;但是点击保存后公式部分一直乱码&#xff0c;如下图所示 保存为pdf后会变成&#xff1a; 解决方案&#xff1a;保存时点击文件下方的快速打印&#xff0c;存到桌面&#xff0c;不要直接点击保存