《Avalon总线规范》PPT课件.ppt

上传人:sh****n 文档编号:8632746 上传时间:2020-03-30 格式:PPT 页数:89 大小:1.30MB
返回 下载 相关 举报
《Avalon总线规范》PPT课件.ppt_第1页
第1页 / 共89页
《Avalon总线规范》PPT课件.ppt_第2页
第2页 / 共89页
《Avalon总线规范》PPT课件.ppt_第3页
第3页 / 共89页
点击查看更多>>
资源描述
第4章Avalon总线规范 4 1Avalon总线简介Avalon总线由ALTERA公司提出 用于在基于FPGA的片上系统中连接片内处理器和片内外设的总线结构 连接到Avalon总线的设备分为主从设备 并各有其工作模式 简单性 易于理解 易于使用 占用资源少 减少对FPGA片内资源的占用 高性能 Avalon总线可以在每一个总线时钟周期完成一次数据传输 专用的地址总线 数据总线和控制总线 这样Avalon总线模块和片上逻辑之间的接口的得以简化 Avalon外设不需要识别数据和地址周期 continue支持高达1024位的数据宽度 支持不是2的偶数幂的数据宽度 支持同步操作 所有Avalon外设的接口与Avalon交换架构的时钟同步 不需要复杂的握手 应答机制 简化了Avalon接口的时序行为 而且便于集成高速外设 支持动态地址对齐 可以处理具有不同数据宽度的外设间的数据传输 Avalon总线的自动地址对齐功能将自动解决数据宽度不匹配的问题 不需要设计者的干预 Avalon总线规范是一个开放的标准 用户可以在未经授权的情况下使用Avalon总线接口来自定义外设 Avalon总线结构采用交换式的总线结构 SOPCBuilder利用最少的FPGA资源 产生新的最佳Avalon交换架构 4 2Avalon总线基本概念 4 2 1Avalon外设和交换架构一个基于Avalon接口的系统会包含很多功能模块 这些功能模块就是Avalon存储器映射外设 通常简称Avalon外设 所谓存储器映射外设是指外设和存储器使用相同的总线来寻址 并且CPU使用访问存储器的指令也用来访问I O设备 为了能够使用I O设备 CPU的地址空间必须为I O设备保留地址 Avalon外设包括存储器 处理器 UART PIO 定时器和总线桥等 还可以有用户自定义的Avalon外设 用户自定义的外设能称之为Avalon外设 要有连接到Avalon结构的Avalon信号 Avalon外设分为主外设和从外设 能够在Avalon总线上发起总线传输的外设是主外设 从外设只能响应Avalon总线传输 而不能发起总线传输 主外设至少拥有一个连接在Avalon交换架构上的主端口 主外设也可以拥有从端口 使得该外设也可以响应总线上其它主外设发起的总线传输 将Avalon外设连接起来 构成一个大的系统的片上互连逻辑就是Avalon交换架构 Avalon交换架构是一种可自动调整的结构 随着设计者不同设计而做出最优的调整 可以看到外设和存储器可以拥有不同的数据宽度 并且这些外设可以工作在不同的时钟频率 Avalon交换架构支持多个主外设 允许多个主外设同时在不同的从外设进行通信 增加了系统的带宽 这些功能的实现都是靠Avalon交换架构中的地址译码 信号复用 仲裁 地址对齐等逻辑实现的 本章重点讨论Avalon外设和Avalon交换架构之间的互连 主要研究接口级的行为 不关注其内部实现 4 2 2Avalon信号Avalon接口定义了一组信号类型 片选 读使能 写使能 地址 数据等 用于描述主 从外设上基于地址的读写接口 Avalon信号的可配置特性是Avalon接口与传统总线接口的主要区别之一 Avalon外设可以使用一小组信号来实现简单的数据传输 或者使用更多的信号来实现复杂的传输类型 例如ROM接口只需要地址 数据和和片信号就可以了 而高速的存储控制器可能需要更多的信号来支持流水线的突发传输 4 2 3主端口和从端口 Avalon端口就是完成通信传输的接口所包含的一组Avalon信号 Avalon端口分为主端口和从端口 主端口可以在Avalon总线上发起数据传输 目标从端口在Avalon总线上响应主端口发起的数据传输 一个Avalon外设可能有一个或多个主端口 一个或多个从端口 也可能既有多个主端口 又有多个从端口 Avalon的主端口和从端口之间没有直接的连接 主 从端口都连接到Avalon交换架构上 由交换架构来完成信号的传递 在传输过程中 主端口和交换架构之间传递的信号与交换架构和从端口之间传递的信号可能有很大的不同 所以 在讨论Avalon传输的时候 必须区分主从端口 4 2 4传输 传输是指在Avalon端口和Avalon交换架构之间的数据单元的读 写操作 Avalon传输一次可以传输高达1024位的数据 需要一个或多个时钟周期来完成 在一次传输完成之后 Avalon端口在下一个时钟周期可以进行下一次的传输 Avalon的传输分成两个基本的类别 主传输和从传输 Avalon主端口发起对交换架构的主传输 Avalon从端口响应来自交换架构的传输请求 传输是和端口相关的 主端口只能执行主传输 从端口只能执行从传输 4 2 5主从端口对 主从端口对是指在数据传输过程中 通过Avalon交换架构相连接起来的主端口和从端口 在传输过程中 主端口的控制和数据信号通过Avalon交换架构和从端口相交互 4 2 6周期 周期是时钟的基本单位 定义为特定端口的时钟信号的一个上升沿到下一个上升沿之间的时间 完成一次传输最少要一个时钟周期 4 3Avalon信号 Avalon接口规范定义了Avalon外设使用的信号类型 如地址 数据 片选信号等等 根据外设逻辑接口的需求 Avalon外设可以使用任何类型的Avalon信号 Avalon接口规范还定义了每种信号类型的行为 Avalon端口上的信号和信号类型是一一对应的 Avalon主 从端口的每一个信号必定属于某类的Avalon信号类型 一个Avalon端口每一种信号类型只能有一个信号实例 根据端口的属性 可以将Avalon信号类型分为主信号或者从信号 有些信号在主端口和从端口的接口上都存在 但是信号的行为是不相同的 4 3 1信号类型的完整列表 每一类型的信号的说明包括 信号类型 信号可能的宽度 信号的方向 从外设的角度看 该信号在端口上是否必不可少 必需性 各种类型的信号的功能和特殊的使用要求的简单描述 4 3Avalon信号 Avalon从端口信号类型 Avalon从端口信号类型 Avalon主端口信号类型 Avalon主端口信号类型 4 3 2信号极性 表中的信号类型都是高电平有效 Avalon接口也提供每个信号类型的低电平有效的版本 在信号类型名后添加 n来表示 例如irq n read n等 这对和那些低电平有效的片外逻辑相接口时非常有用 4 4从端口传输 4 4 1从端口信号详述所有从端口传输都很重要的信号1 address信号2 readdata和writedata信号3 chipselect read和write信号4 byteenable和writebyteenable5 begintransfer信号 32位的从端口使能信号 4 4 2从端口读传输 从端口基本读传输 具有固定等待周期的从端口读传输 具有可变等待周期的从端口读传输 A 第一个周期在clk的上升沿开始 B Avalon交换架构发出地址和read信号 C Avalon交换架构对地址进行译码 然后驱动chipselect信号 D 从端口在下一个clk的上升沿置waitrequest信号有效 E Avalon交换架构在clk的上升沿采样waitrequest waitrequest是有效的 所以在此时钟沿readdata没被捕获 F waitrequest可能会持续一个不确定数目的周期 G 从端口提供有效的readdata H 从端口置waitrequest无效 I Avalon交换架构在下一个clk的上升沿捕获readdata 读传输就此结束 下一个周期在此开始 另一次传输也可由此开始 4 4 3从端口写传输从端口基本写传输 A 第一个周期在clk的上升沿开始 B Avalon交换架构发出有效的writedata address byteenable和write信号 C Avalon交换架构对地址译码 并且发送chipselect给从端口 D 从端口在clk的上升沿捕获writedata address write byteenable和chipselect 写传输结束 下一个周期开始 另一次传输也可以开始 具有固定等待周期的从端口写传输 A 第一个周期在clk的上升沿开始 B 来自Avalon交换架构的writedata address byteenable和write有效 C Avalon交换架构对地址译码 发出chipselect D 第一个等待周期在clk的上升沿结束 所有来自Avalon交换架构的信号保持不变 E 从端口在clk的上升沿或上升沿之前捕获writedata address byteenable write和chipselect 写传输结束 下一个周期开始 另一次传输也可开始 具有可变等待周期的从端口写传输 A 第一个周期在clk的上升沿开始 B 来自Avalon交换架构的address writedata byteenable和write信号有效 C Avalon交换架构对地址译码 然后发出chipselect D 外设在下一个clk的上升沿之前置waitrequest有效 E Avalon交换架构在clk的上升沿采样waitrequest 如果waitrequest有效 周期成为等待周期 address writedata byteenable write和chipselect保持不变 F waitrequest可能保持任意多个周期有效 G 从端口捕获数据 H 从端口置waitrequest无效 I 写传输在下一个clk的上升沿结束 下一个周期可进行另一次的传输 4 5主端口传输所有主端口传输都很重要的信号waitrequest信号address信号readdata和writedata信号read和write信号byteenable信号 主端口基本读传输 A 第一个周期在clk的上升沿开始 B 主端口发出有效的address byteenable和read信号 C 在第一个周期内从Avalon交换架构返回有效的readdata D 主端口在下一个clk的上升沿捕获readdata 并且置它的所有输出无效 主端口的读传输结束 另一次传输可在下一个周期开始 A 第一个周期在clk的上升沿开始 B 主端口发出有效的address byteenable和read信号 C Avalon交换架构在下一个clk的上升沿置waitrequest有效 D 主端口在clk的上升沿接受waitrequest 这个周期称为等待周期 E 只要waitrequest有效 主端口保持其所有输出不变 F Avalon交换架构返回有效的readdata G Avalon交换架构置waitrequest无效 H 主端口在下一个clk的上升沿捕获readdata 并且置其所有的输出无效 读传输结束 另一次传输可以在下一个周期开始 具有等待周期的主端口读传输 A 写传输在clk的上升沿开始 B 主端口发出有效的address byteenable writedata和write信号 C 在clk的上升沿waitrequest是无效的 所以写传输结束 另一次传输可以在下一个周期接着开始 主端口基本写传输 A 第一个周期在clk的上升沿开始 B 主端口发出有效的address writedata和write信号 C waitrequest在clk的上升沿被置为有效 所以该周期变成第一个等待周期 主端口保持所有的输出不变 D waitrequest在clk的上升沿再次被置为有效 所以该周期成为第二个等待周期 主端口保持所有的输出不变 E Avalon交换架构置waitrequest无效 F 在clk的上升沿waitrequest是无效的 所以主端口置所有的输出无效 写传输结束 另一个读或写传输可以在下一个周期开始 具有等待周期的主端口写传输 4 6流水线传输属性 Avalon流水线读传输可以增加Avalon同步从外设的带宽 在第一次访问从外设时需要好几个周期才能返回数据 但是此后每个周期都能返回数据 使用流水线读传输 一个端口可以在上一次传输的readdata返回之前 开始新的传输 只有流水线的读传输 因为Avalon写传输不需要由从端口返回确认信号 所以没有流水线的写传输 Avalon写传输不会受益于流水线 A Avalon交换架构通过提供新传输的地址阶段的chipselect read和address信号 发起一次读传输 B 从端口已经置waitrequest有效 所以前一个周期称为等待周期 Avalon交换架构保持chipselect read和address不变 C 从端口在clk的上升沿置waitrequest无效 并且捕获address 地址阶段结束 数据阶段开始 D 第一个延迟周期在clk的上升沿结束 E 第二个延迟周期在clk的上升沿结束 从端口提供有效的readdata 传输结束 这个clk的上升沿也标志着新的读传输的开始 F Avalon交换架构发出新传输的address read和chipselect信号 G Avalon交换架构在下一个周期发内 在前一次的传输的数据返回之前发起另一次的读传输 H Avalon交换架构在两个延迟周期之后捕获readdata I Avalon交换架构在两个延迟周期之后捕获readdata 具有固定延迟的从端口流水线读传输 具有可变延迟的从端口流水线读传输 4 6 3主端口流水线传输 流水线主外设可以在它接收到前一次传输的有效数据之前发起一次新的读传输 使用1位的输入信号readdatavalid来定义一个流水线主端口 Avalon交换架构发出readdatavalid信号给主端口来指示readdata信号正在提供有效的数据 流水线主端口能够有选择地使用flush信号 当主外设决定它不再需要当前挂起的读传输的数据的情况下 可以使用这个信号 例如 对于不知道指令是否有效之前预取指令的流水线CPU来说 清除流水线的功能是一个基本的要求 当主端口在clk的上升沿发出flush readdatavalid直到下一次新的读传输的数据在readdata端口上有效之前 一直是无效的 主端口可以在其发出flush信号的同一个周期内发起一次新传输 在这种情况下 这次新传输的数据将是readdata上的下一个有效数据 主端口流水线读传输 4 7突发传输 Avalon接口支持突发传输 突发模式下 多个传输作为一个单元来处理 而不是每个数据单元作为一个独立的传输 突发传输最大化从端口的吞吐量 在从端口处理来自一个主端口的多个数据单元的时候可以达到最高的效率 突发传输保证了主端口在突发传输的期间内对目标从端口的访问不会被打断 一旦一个主从端口对之间的突发传输开始 直到突发传输结束 Avalon交换架构不再允许任何其它的主端口访问该从端口 Avalon主 从端口通过包含信号burstcount来支持突发传输 下面是主从端口的burstcount信号的特性 在突发传输的开始 burstcount信号提供一个编码的值 指示当前的突发传输中包含有多少个连续的传输 burstcount的最小值是1 burstcount值为1的突发传输等同于一个单独的非突发的传输 对于burstcount宽度为N的情况 最大突发长度为2N 1 此时 burstcount的最高位为1 所有其它位是0 Avalon突发传输不能保证主端口或从端口每个时钟周期进行一次传输 突发传输能够保证在突发传输期间主从端口对的仲裁是锁定的 突发传输需要的时间是不确定的 取决于主从端口的外设逻辑 4 7 1限制 支持突发传输的端口面临如下的限制 为了支持主端口的突发读传输 主端口必须支持流水线传输 为了支持从端口突发读传输 从端口必须支持 可变的等待周期 即该端口必须包含waitrequest 具有可变的延迟的流水线传输 即该端口必须包含readdatavalid信号 因此 从端口不能使用三态属性 三态属性在具有可变延迟的流水线端口中是不允许的 4 7 2主端口突发传输 对Avalon主端口来说 burstcount信号是输出信号 除了burstcount信号 突发传输还影响address read readdata eaddatavalid write writedata和byteenable信号的行为 突发传输开始时 主端口在address上发出有效的地址 在burstcount发出突发传输的长度 每一次突发传输主端口只发出一个地址值 对于突发传输中所有传输的地址由Avalon交换架构自动地推断 当主端口开始地址为A burstcount值为B的突发传输 该主端口提交了从地址A开始的B个连续的传输 突发传输直到主端口传输了B个单元的数据才完成 在当前的突发传输完成之前 主端口不能终止该突发传输 或者给出一个新地址 4 7 2 1 主端口突发写传输 主端口突发写传输的开始和主端口基本写传输是相似的 除了burstcount信号之外 主端口发出address writedata write和byteenable 如果需要 信号 如果Avalon交换架构还没有准备好 它在下一个clk的上升沿之前发出waitrequest 最后 Avalon交换架构使waitrequest失效 同时在下一个clk的上升沿捕获address和burstcount信号 Avalon交换架构还在这个clk的上升沿捕获writedata的第一个数据单元 主端口必须在突发传输期间保持address byteenable和burstcount不变 当主端口发起了burstcount值大于1的突发传输 须遵循一下的规则 如果主端口指定了burstcount值为N 那么要完成突发传输 主端口必须在N个clk的上升沿发出write信号 并且提供新的writedata 仲裁端口对的仲裁被锁定直到主端口完成该突发传输 主端口可以通过在clk的上升沿使write信号失效来延迟传输 这样能够阻止Avalon交换架构捕获当前时钟周期的writedata Avalon交换架构可以通过发出waitrequest来延迟传输 这样做强迫主端口在一个附件的时钟周期内保持writedata和write不变 主端口必须在整个突发传输期间内置所有的byteenable信号线有效 主端口突发写传输 A 主端口发出address burstcount write和writedata的第一个单元 本例中 burstcount值为4 B Avalon交换架构置waitrequest有效 表明它没有做好处理突发传输的准备 作为响应 主端口保持所有输出不变 C Avalon交换架构置waitrequest无效 D Avalon交换架构在clk的上升沿捕获address burstcount write和writedata的第一个单元 D0 E 主端口置address和burstcount无效 这两个信号在突发传输的剩余部分被忽略 主端口提供writedata的下一个单元 D1 F Avalon交换架构在clk的上升沿捕获writedata下一个单元 D1 G 主端口置write无效 表示它这个周期没有有效的writedata H write信号为无效 所以Avalon交换架构在材料库的上升沿不捕获writedata I 主端口提供有效的writedata D2 并重新置write有效 J Avalon交换架构在clk的上升沿捕获writedata D2 K 主端口提供writedata的最后的一个单元 D3 L Avalon交换架构置waitrequest有效 导致主端口在整个时钟周期内保持所有的输出不变 M Avalon交换架构使waitrequest无效 N Avalon交换架构在clk的上升沿捕获writedata的最后的单元 D3 主端口突发写传输结束 4 7 2 2主端口突发读传输 主端口突发读传输和具有延迟的主端口流水线读传输是相似的 主端口突发读传输具有明显的地址阶段和数据阶段 并且使用readdatavalid信号来指示主端口何时必须捕获readdata 不同点在于一个单独的突发传输地址对应多个数据阶段 主端口突发读传输的开始类似于主端口的流水线读传输 主端口除了burstcount信号之外 还发出address和read信号 如果Avalon交换架构没有准备好 它就在下一个clk的上升沿之前发出waitrequest信号 最后 Avalon交换架构使waitrequest失效 同时在下一个clk的上升沿捕获address和burstcount 这时地址阶段结束 多个数据阶段随之开始 当主端口开始burstcount值大于1的读传输 要遵循下面的规则 如果主端口制定了burstcount值为N 那么要完成突发传输 Avalon交换架构必须确保在N个clk的上升沿发出readdatavalid 主端口端口对的仲裁一直保持锁定 直到Avalon交换架构返回突发传输的所有数据 只要Avalon交换架构置readdatavalid信号有效 主端口必须捕获readdata Readdata的每一个值只是在这个时钟周期有效 主端口必须在整个突发传输期间置所有的byteenable信号线有效 主端口突发读传输 A 主端口发出address burstcount和read 本例中 burstcount值为4 B Avalon交换架构置waitrequest有效 表示它没有做好处理突发传输的准备 作为响应 主端口保持所有的输出不变 C Avalon交换架构置waitrequest无效 D Avalon交换架构在clk的上升沿捕获address和burstcount 主端口可以在此clk的上升沿开始一次新传输或突发传输 本例中不是如此 E 这是Avalon交换架构可以返回有效readdata的最早的时钟上升沿 本例中 Avalon交换架构没有发出readdatavalid 所以主端口不捕获readdata F 一段时间后 Avalon交换架构提供有效的readdata 并置readdatavalid有效 G 主端口在clk的上升沿捕获readdata的第一个单元 D0 H 主端口在clk的上升沿捕获readdata的下一个单元 D1 I Avalon交换架构没有有效的readdata 所以它置readdatavalid无效 Avalon交换架构可以保持eaddatavalid无效任意个时钟周期 J 一段时间后 Avalon交换架构提供有效的readdata 并重新置readdatavalid有效 K 主端口在clk的上升沿捕获readdata的下一个单元 D2 L 主端口在clk的上升沿捕获readdata最后的单元 D3 主端口突发读传输结束 4 7 3从端口突发传输 对于Avalon从端口来说 burstcount是一个输入信号 突发传输除了影响burstcount的行为 还对address read readdata readdatavalid write writedata和byteenable信号的行为产生影响 从端口还可以使用输入信号beginbursttransfer Avalon交换架构在每个突发传输的第一个时钟周期发出该信号 在突发传输开始时 Avalon交换架构在address上发出有效的地址 在burstcount上发出突发传输的长度 对于地址为A burstcount值为B的突发传输 从端口从地址A开始 执行B个连续的传输 突发传输在从端口处理完第B个数据单元之后结束 一次突发传输 从端口只捕获一次地址 突发传输从这个捕获的地址开始 外设的逻辑推断出突发传输中所有剩余传输的地址 推断出的地址与从端口使用的是本地地址对齐还是动态地址对齐有关 如果使用本地地址对齐 地址保持不变 例如 address为0 x1000 burstcount值为0 x0A的突发写传输 向不变的地址0 x1000写入10个数据单元 如果使用动态地址对齐 每传输一个数据单元从端口地址增加1 例如 address为0 x1000 burstcount值为0 x04的写传输 会向从端口地址0 x1000 0 x1001 0 x1002和0 x1003传输4个数据单元 4 7 3 1从端口突发写传输 从端口突发写传输的开始是和从端口基本写传输的开始相类似的 Avalon交换架构除了burstcount之外 还发出chipselect address byteenable writedata和write信号 如果从端口没有准备好进行传输 它就在下一个clk的上升沿之前置waitrequest有效 最后 从端口置waitrequest无效 并且在下一个clk的上升沿捕获address和burstcount 从端口也在这个clk的上升沿捕获writedata的第一个单元 这是从端口捕获有效的burstcount和address的唯一时刻 当从端口开始burstcount值大于1的突发写传输 需要遵循如下的规则 如果Avalon交换架构指定burstcount值为N 要完成突发传输 从端口必须接受N个连续的writedata数据单元 支持端口对之间的仲裁被锁定直到突发传输结束 以保证数据按照主端口发起突发传输的顺序到达 从端口必须只在write有效的时才捕获writedata 对于第2个或其后的数据单元 Avalon交换架构能够在任意的clk的上升沿使write失效 来表示它现在没有提供有效的writedata 这不会终止突发传输 只会延迟突发传输直到Avalon交换架构重新置write有效 chipselect信号是write的反映 当Avalon交换架构使write失效 同是也使chipselect失效 从端口可以在clk的上升沿通过置waitrequest有效来延迟传输 这将强迫Avalon交换架构在一个额外的周期内保持writedata write和byteenable不变 Avalon交换架构在突发传输期间置byteenable的所有信号线有效 从端口突发写传输 A Avalon交换架构发出chipselect address burstcount write和writedata的第一个单元 本例中 burstcount值为4 B 从端口置waitrequest有效 表示它没做好处理突发传输的准备 作为响应 Avalon交换架构保持所有的输出不变 C 从端口置waitrequest无效 D 从端口在clk的上升沿捕获address burstcount write和writedata的第一个单元 D0 这是从端口捕获address和burstcount的唯一时刻 E 从端口在clk的上升沿捕获writedata的下一个单元 D1 F Avalon交换架构置write无效 表示它这个周期没有有效的writedata G 从端口在clk的上升沿不捕获writedata 因为write为无效 H 一段时间之后 Avalon交换架构再次置write和writedata有效 I 从端口在clk的上升沿捕获writedata的下一个单元 D2 J 从端口置waitrequest有效 作为响应 Avalon交换架构在整个时钟周期里保持所有的输出不变 K 从端口置waitrequest无效 L 从端口在clk的上升沿捕获writedata的最后的单元 D3 从端口的突发写传输结束 4 7 3 2从端口突发读传输 从端口突发读传输同具有可变延迟的从端口流水线读传输是相似的 突发读传输有明显的地址和数据阶段 并且从端口使用readdatavalid信号来指示它何时在提供有效的readdata 两者的区别在于一个单独的突发地址阶段对应多个数据阶段 在从端口突发读传输开始的时候 Avalon交换架构除了发出burstcount之外 还发出chipselect address和read信号 如果从端口还没有准备好 从端口在下一个clk的上升沿之前置waitrequest有效 最后 从端口置waitrequest无效 并且在下一个clk的上升沿捕获address和burstcount 地址阶段结束 多个数据阶段随之开始 当从端口开始burstcount值大于1的突发读传输时 要遵循如下的规则 如果Avalon交换架构制定了burstcount值为N 要完成突发传输 从端口必须产生N个连续的readdata数据单元 主从端口对之间的仲裁一直保持锁定直到突发传输结束 从端口通过在clk的上升沿发出有效的readdata和置readdatavalid有效来提供数据单元 置readdatavalid无效不会终止突发传输 只会将突发传输延迟到从端口重新置readdatavalid有效 在突发传输期间 Avalon交换架构置byteenable的所有信号线有效 从端口突发读传输 A Avalon交换架构发出ddress burstcount和read 本例中 burstcount值为4 B 本例中 从端口置waitrequest有效 表示它没做好处理突发传输的准备 作为响应 Avalon交换架构再保持所有的输出一个周期不变 C 从端口置waitrequest无效 D 从端口在clk的上升沿捕获address和burstcount Avalon交换架构可以在此clk的上升沿开始一次新的传输 本例中不是如此 E 这是从端口能返回有效数据的最早的时钟上升沿 本例中 从端口没发出readdatavalid 所以Avalon交换架构在这个clk的上升沿不捕获readdata F 一段时间之后 从端口提供有效的readdata 并置readdatavalid有效 G Avalon交换架构在clk的上升沿捕获readdata的第一个单元 D0 H Avalon交换架构在clk的上升沿捕获readdata的下一个单元 D1 I 从端口没有有效的readdata 所以它置readdatavalid无效 从端口可以保持readdatavalid无效任意个周期 J 一段时间之后 从端口提供有效的readdata 并再次置readdatavalid有效 K Avalon交换架构在clk的上升沿捕获readdata的下一个单元 D2 L Avalon交换架构在clk的上升沿捕获readdata的最后的单元 D3 从端口的突发读传输结束 4 8流控制 Avalon流控制信号给从端口提供了调节来自主端口的传输的机制 从而达到 从端口指示有效数据准备好了或者准备好接收数据了 传输才开始 流控制信号提供如下的好处 简化逻辑设计 因为主端口不用重复地查询从端口以确定从端口是否准备好传输 减少带宽开销 因为从端口传输只在从端口准备就绪才开始 允许从端口控制来自或去往非智能主端口的数据流 这些外设无条件地和连续不断地发起传输 4 8 1具有流控制的从端口传输 要使用流控制 从端口使用下面的一个或多个信号 readyfordata dataavailable和endofpacket 具有流控制的从端口就定义为使用一个或多个上述信号的从端口 流控制属性不会影响其它信号的顺序和时序 4 8 1 1流控制信号 1 readyfordata和dataavailable信号从端口通过发送readyfordata来表示它已经准备好接受写传输 readyfordata无效表示执行写传输将会引起数据上溢出 从端口发送dataavailable来表示其已经准备好提供数据给读传输 dataavailable无效表示读传输会使数据下溢出 在使用流控制的主从端口对中 在主端口发起一次传输之后 只有当readyfordata或dataavailable信号指示从端口已经准备好进行这次传输时 Avalon交换架构才和目的从端口发起传输 当从端口没有准备好时 Avalon交换架构强迫主端口等待 上两个信号中的任意一个无效时 都不会阻止Avalon交换架构发起来自不使用流控制的主端口的传输 因为这个原因 从端口必须总是准备好开始一次传输 不管readyfordata和dataavailable的状态如何 2 endofpacket信号在任何的传输中 有流控制的从端口能够发出endofpacket信号 该信号经由Avalon交换架构到达主端口 endofpacket信号的解释是由外设设计决定的 外设设计还必须说明主端口应该任何响应endofpacket信号 例如 endofpacket信号可被用作包的描述器 用来在一个长的数据流中标记包的开始和结束位置 另外 endofpacket可以指示主端口应该停止当前传输的序列 根据外设的设计 从端口可以置endofpacket一个周期有效 或无限期地置endofpacket有效 直到主端口明确地复位从端口逻辑 主端口可能不使用endofpacket信号 所以 即使主端口不检测endofpacket信号 从端口的逻辑必须能够继续工作 4 8 1 2具有流控制的从端口读传输 据有流控制的从端口读传输使用dataavailable和endofpacket信号 从端口可以在任何时刻发出dataavailable信号 当dataavailable有效时 来自具有流控制的主端口的一次新传输可以在下一个clk的上升沿开始 从端口只可以在读传输结束的时候 置dataavailable无效 该信号立即对随后的连续的传输生效 如果从端口使用endofpacket信号 它必须保证在其发出有效的readdata的同一个时钟上升沿置endofpacket信号有效 具有流控制的从端口读传输 4 8 1 3 具有流控制的从端口写传输 具有流控制的从端口写传输使用readyfordata和endofpacket信号 从端口可以在任何时刻 将readyfordata由低电平置为高电平 有效 当readyfordata有效时 在下一个clk的上升沿 来自具有流控制的主端口的传输开始 在写传输结束的时候 从端口必须将readyfordata由高电平置为低电平 这样的话 该信号能立即对随后的传输起作用 如果从端口使用endofpacket信号 它必须保证在其捕获writedata 的同一个时钟上升沿endofpacket有效 具有流控制的从端口写传输 4 8 2具有流控制的主端口传输 流控制不会改变主端口的信号顺序和时序 流控制不需要额外的主端口信号 主端口能够对写传输或读传输 或读传输和写传输都应用流控制 使用流控制的主端口可以有选择地使用输入信号endofpacket 流控制影响主端口的waitrequest信号 但是不影响主端口响应waitrequest的方式 流控制只是增加了Avalon交换架构发出waitrequest信号给主端口的条件 在具有流控制的主从端口对中 在主端口发起传输后 如果从端口没准备好接受传输 Avalon交换架构发出waitrequest 如果从端口不使用流控制 那么传输的处理同两个端口都不使用流控制的情况一样 如使用了endofpacket 该信号被用作当前传输的状态标志 如果主端口和从端口都是用了endofpacket 该信号直接从从端口传递到主端口 对于写传输 主端口在发送有效的writedata时 捕获endofpacket 对于读传输 主端口在捕获有效的readdata的同一个时钟周期内 捕获endofpacket 对endofpacket信号的解释是有从外设的逻辑决定的 例如endofpacket可被用作包描述器 用来在一个长的数据流中 标志包的开始和结束位置 另外 endofpacket可用来指示主端口应该停止当前的传输队列 具有流控制的主端口读传输和写传输 4 9和传输无关的信号 Avalon接口提供具有系统级功能的控制信号 如中断请求和复位请求信号 这些信号不是和每个数据传输直接相关的 4 9 1中断请求信号 Avalon中断请求信号允许从端口发出中断请求 IRQ 表示它需要主端口为之服务 Avalon交换架构在系统的从端口和主端口之间传递IRQ信号 1 从端口中断信号 irq从端口可以包含irq输出信号 irq信号作为外设逻辑需要主端口服务的标志位 从端口可以在任何时刻发出irq irq信号的时序同任何传输都没有关系 外设逻辑必须保持irq持续有效 直到主端口明确地复位了中断请求 2主端口中断信号 irq和irqnumber主端口可以包含irq和irqnumber信号 这让主端口能探测并响应系统中从端口的IRQ状态 Avalon接口支持两种计算IRQ最高优先级的方法 软件优先级计算和硬件优先级计算 1 软件优先级计算主端口包括32位的irq信号的情况下 使用软件IRQ优先级的计算 这种情况下 主端口不包含irqnumber信号 在软件优先级的配置中 Avalon交换架构将来自多达32从端口的IRQ直接传递给主端口 对IRQ优先级没有任何的设定 0到32位的irq可以在任何时刻进行设置 表示所连接的从端口的IRQ状态 在有多个位被同时置为有效的情况下 主端口 假设在软件的控制下 决定哪个IRQ有最高的优先级 并作相应的反应 irq未使用的位被永久禁用 2 硬件优先级计算主端口包含1位irq信号和irqnumber信号的情况下 使用硬件IRQ优先级计算 Avalon交换架构发出irq给主端口 通知主端口一个或多个从端口产生了IRQ Avalon交换架构同时发出6位的irqnumber信号 给出具有最高优先级的挂起的IRQ的编码值 使用硬件优先级计算 主端口能够检测多达64个的从端口IRQ信号 Avalon交换架构 硬件逻辑 识别出最高优先级的IRQ 并只传递该IRQ的编号给主端口的irqnumber 越小的irqnumber值表示更高的优先级 0为最高的优先级 当一个优先级更高的IRQ被挂起 低优先级的IRQ就无法被主端口检测到了 4 9 2复位控制信号 1reset信号Avalon主端口和从端口可以使用reset输入信号 只要Avalon交换架构发出reset信号 外设逻辑必须复位自己到一个已定义的初始状态 Avalon交换架构可以在任何时刻发出reset 不管一个传输是否正在进行 reset脉冲的宽度大于一个时钟周期 2resetrequest信号Avalon主端口和从端口可以使用resetrequest信号复位整个Avalon系统 resetrequest对于类似看门狗定时器的功能非常有用 如果在一个设定的时间内没有对看门狗定时器操作 它将复位整个系统 发出resetrequest导致Avalon交换架构对系统中的其它外设发出reset 4 10地址对齐 对于主端口和从端口数据宽度不同的系统 系统需要解决地址对齐的问题 这种问题不只局限于Avalon系统中 Avalon接口将数据宽度的差异抽象化 从而使任意的主端口能同任何的从端口通信 不管它们各自的数据宽度 本地地址边界 nativeaddressboundaries 是指由主端口数据宽度决定的字地址 例如 主端口的数据宽度为8位 则本地地址边界落在0 x01 0 x02 0 x03 0 x04等地址上 如果主端口的数据宽度为32位 则本地地址边界落在0 x00 0 x04 0 x08 0 x0C等地址上 如果主端口和从端口的数据宽度不同 有两种可能的地址对齐的方式 Avalon地址对齐属性定义从端口数据如何在主端口的地址空间实现对齐 每个Avalon从端口声明其地址对齐方式为下面两种方式中的一种 本地地址对齐 Nativeaddressalignment 动态地址对齐 Dynamicbussizing 地址对齐属性定义了为了在主端口和从端口之间正确地传输数据 Avalon交换架构必须提供的服务 通常 存储器外设 例如 SDRAM控制器使用动态地址对齐 而从端口和寄存器文件相接口的外设使用本地地址对齐 如串行I O外设 地址对齐属性只影响主端口 它定义了从端口的数据单元应该出现在主端口地址空间的位置 地址对齐对从端口的行为没有任何影响 对主端口和从端口来说 地址对齐方式不会对传输中的信号或信号顺序产生影响 4 10 1本地地址对齐 当主端口从一个较窄数据宽度的从端口读取数据 从端口的数据比特位映射到主端口数据的低比特位中去 而主端口的数据高比特位补零 在传输时 高比特位被忽略 例如 16位的主端口读8位的从端口 readdata信号是0 x00XX的形式 这里XX代表有效的数据 主端口不能使用本地地址对齐来访问数据宽度比自己宽的从端口 本地地址对齐方式的主从端口地址映射 4 10 2动态地址对齐 动态地址对齐指的是具有不同数据的主从端口对之间进行传输时 Avalon交换架构动态管理传输的数据的服务 当主端口使用动态地址对齐方式寻址从端口时 所有从端口的数据在主端口的地址空间连续地按字节对齐 如果主端口数据宽度比从端口宽 主端口的高位字节对应从端口地址空间的下一个地址 例如 32位的主端口使用动态地址对齐方式从16位的从端口读取数据 Avalon交换架构在从端口这侧执行两次读传输 然后提供32位的从端口数据给主端口 如果主端口的数据宽度比从端口窄 则Avalon交换架构适当地处理从端口的字节段 在主端口读传输时 Avalon交换架构只提供从端口适当的字节段给主端口 在主端口写传输时 Avalon交换架构在从端口这侧 自动地置byteenable信号有效 将数据写到适当的字节段 从端口使用动态地址对齐方式时 其数据宽度必须是8 16 32 64 128 256 512或1024 动态地址对齐方式的主从端口地址映射 动态地址对齐抽象了从端口的很多细节 使得主端口进行数据传输时好像从端口的数据宽度与主端口一致一样 简化了软件的设计 从系统级的角度看 动态地址对齐提供了3个优点 32位的NiosII处理器可以使用廉价的8位或16位存储器作为数据和程序存储 存储器的物理宽度对于软件设计人员是透明的 在开发软件时 不必考虑程序在何种宽度的存储器上运行 不需要软件进行数据拼接 软件开发简单且执行速度快
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!