微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 复杂模块接口的独立设计经验分享

复杂模块接口的独立设计经验分享

时间:09-21 来源:互联网 点击:

计的思想,该接口实现过程中,主要技术难点主要有以下几点:

  接口与上下层模块之间的握手协议需要仔细的设计。由于该接口传输的数据包大小不一,使接口同上下层模块内部的连接变得复杂,这部分协议没有提及,必须自己小心地设计该协议,目标是使上下层模块同接口的连接简明扼要,并且高效,尽可能地减少接口到相应模块的传输延迟,这样物理层和链路层的握手等动作所消耗的时间也将相应减少,得到更高的数据吞吐量。

  接口传输多种格式和功能的数据包,传送不同的数据包时,物理/链路层接口的动作和响应都不同。如果处理不当,会极大地增加了接口实现时的复杂度和规模。

  规范定义的Ctrl和Dn定时匹配成为很主要的矛盾。接口依靠Ctrl[1:0]来传输和识别控制信号,以产生相应动作。在物理层把接口控制权交接给链路层时,协议中要求不超过两个周期。但在系统中,各层发送和识别控制信号需要一定的时间,接口必须尽可能少地减少这个时间,使响应模块识别控制信号。

  以下将针对以上几个难点简述我们在项目中的实现方法。

  接口和物理/链路模块的握手协议

七、接口和物理/链路模块的握手协议

  物理层/链路层模块和接口的握手协议在IEEE-1394A中没有定义,给设计者留下了思考的空间。1394总线系统本身旨在提供一种高速的数据传输方式, 而物理/链路接口处于所有数据流必经的通路,所以在设计协议时,我们的目标是尽可能地减小数据流通过接口的延迟,以避免接口的“瓶颈”效应。

  基于以上的考虑,我们考虑了这种方案:

  (注:由于物理层和链路层模块处于对等的地位,限于篇幅,我只描述物理层模块的情形,链路层模块以此类推。)

  在上述方案中,各引脚功能定义如下:

  Preq_En[1:0]是物理层数据包传输使能位,而且代表请求的优先级。2 'b00代表无请求,2 'b01代表该请求具有最高的优先级,可以终止现在的正在操作的请求,2 'b10代表请求优先级较低,它将等待接口正在处理的请求完成后再执行。

  Preq_Data[31:0]是物理层请求数据,包含请求类型,包长度,速度及相关参数。0~15位请求相关数据,16~31位数据包长度及格式信息,最大情况支持65536个32位字节组成的数据包(可以容纳协议中最大的数据包)。

  Preq_Pkt[31:0]是物理层数据包输入端口,一次能够输入一个32位字节。

  PktUpdt_Req是数据包输入端口数据更新请求位,物理数据包输入端口上的字节已经传输完毕,请求更新数据以便传输。

  Link_Pkt[31:0]是链路层数据包输出端口。

  Link_Pkt_On是链路层数据包到达指示。用以判断链路层的新数据是否被传输完毕。

  INTF_Busy是接口物理层模块忙指示,表明此时接口忙。用以判断总线上的数据包(物理层接收的数据包)是否可以向链路层传输。

  在总线数据包即将向链路层传输时,接口先置位INTF_Busy,阻止在此操作的同时,阻止其他的总线数据包向上传输。与此同时,置位Preq_En,设置请求使能和优先级。接着当接口物理层模块做好准备后,置位PktUp-dt_Req,物理层模块检测到该信号置位后,立即把数据放在Preq_Data上。接口物理层层模块传输完后,再次置位PktUpdt_Req以得到数据包的下一个字节,同时接口内部计数器加一,在重复该过程,直至该数据包被传输完毕。当链路层有数据包要求传至总线上时,接口物理层模块转交总线控制权,同时置位INTF_Busy,阻止总线上的数据包上传。当接口物理层模块接收到数据包的第一个32位字节后,置位Li-nk_Pkt_On,同时置位Link_Pkt。物理层模块检测到Link_Pkt_On后读取Link_Pkt上得到第一个32位数据包,计数器加一,重复此过程,直至该数据包接收完毕。

  在实际的应用过程中,我们采取了提前准备数据的方法,在每个32位字节最后一位开始传输的同时,发出更新数据的请求,使数据包从物理层模块传输到链路层模块的过程中,基本上没有握手协议上的延迟。

  设计之初,我们曾经考虑过把请求数据位用一个控制数据包代替,并把所有数据一次性地读到一个ram中去,并用ram的读写协议进行操作。

  容易看出,改进后的协议在处理大的数据包时显现出了无法比拟的优势,付出的代价是增加了握手信号的数量,由于这些信号线处于模块内,相对增加的成本微乎其微。

  八、多个数据包处理状态机化简合并

  在协议中规定接口必须完成传输多种格式和功能的数据包。对各种数据包,其传输方式也各不一样。类似地,对接口物理层模块的每种请求相应的操作也都不一样。我们考察各种请求操作流程后,我们对这些流程进行的多次化简归纳,最后采用了如下这种状态机。

在接口物理层模块和链路层模块实现时,我们采用了一个主状态机和一个从

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top