复杂模块接口的独立设计

最新更新时间:2012-02-11来源: 互联网关键字:模块接口  独立设计 手机看文章 扫描二维码
随时随地手机看文章

一、引言

  在越来越发达的通讯世界里,新产品、新设备层出不穷,随之而来的问题是各产品与设备之间的接口也越来越多样化,虽然标准化组织定义了许多接口标准,比较著名的接口协议如USB,PCI等,但是由于各种接口的性能、价格、应用范围等因素的不同,新的接口协议仍旧层出不穷,如何设计接口一直是困扰着电子工程师,尤其是对复杂的接口协议,问题尤为突出。在国外,已经推出用于接口设计的专用软件。

  在过去的一年多时间里,我们对高性能串行总线IEEE-1394(2000A)做了研究,并设计了基于IEEE-1394(2000A)的物理层和链路层芯片。在芯片设计的过程中,我们对IEEE-1394(2000A)芯片中的PHY/link接口进行了研究和设计,并探寻到了一些接口设计的经验。现在我们以IEEE-1394接口为例,把心得拿出来与大家分享,希望能够起到抛砖引玉的结果。

  二、接口功能结构分析

  接口的主要功能就是使数据通过接口使之能够在不同模块或系统间自由流动,达到数据共享的目的。应用接口的原因多种多样的。通常的情况是由于模块之间协议不匹配使得我们采用接口。另外还有各式各样的原因使得我们不得不采用接口技术,如传输环境恶劣,需要接口把数据按照一定的协议使之能够安全地传输。这方面的一个典型的例子是GSM系统和CDMA的空中接口协议。而在IEEE-1394协议中,定义接口主要用于连接相同厂商或不同厂商的1394串行总线接口的物理层和链路层专用集成电路(ASIC),并为1394系统未来的升级提供支持。国内电子工程师应当在系统设计过程中借鉴这方面的经验。

  总而言之,随着各种新设备,新产品的产生,接口的广泛应用是不言而喻的,它需要我们针对不同的情况,高效快捷地解决数据互连的问题。

  在应用接口的环境中,情况总是这样:模块A的数据输入和输出采用一种接口协议M,而模块B的数据输入和输出采用另外一种接口协议N,因此数据无法在模块A和模块B之间直接传递,模块A和模块B也不能直接互连。

  通常的解决方法是这样的:在模块A和模块B之间进行加上一个接口。这样,接口把模块A发来的数据用协议M接收下来,再在接口中把数据分解出来,按照协议N组成数据包,把数据包发送到模块B,这样模块B就能够接收下到所有模块A发来的数据包。

  三、复杂模块接口的独立设计

  通常我们说某个接口复杂主要指的是接口连接协议很复杂,通常它必须高速处理很多寄存器和多种封装形式复杂数据的存取。对接口设计者来说,必须与接口连接模块的设计者充分地沟通,以得到足够的信息,才能设计出有效的接口连接模块A和模块B。这势必需要接口设计者和模块A、B的设计者多次沟通,以共同制定接口的设计方案。这样的沟通需要很多时间,并可能引起设计交接时的扯皮,所以必须制定设计小组之间的接口文档。这样复杂的工作流程很难保证设计的高效和高正确率。

  在设计实现中,我们更改了通常的接口设计结构,如图3所示,在这种结构的支持下,我们能够很快捷地设计出我们需要的接口,在进行很少的几次讨论之后,各模块的设计者都明白如何进行模块间的连接,使得我们在较短时间内设计出这个复杂接口。

  我们可以看到与一般意义的接口功能结构图的区别在于在接口与模块之间增加了一个发送接收缓冲区,用以存储接口在连接传输数据时需要模块提供的数据,包括相应寄存器的值和需要传送的数据包。

  在接口设计时只要和PHY模块设计者商定好,把需要的信息放在那个寄存器地址下,合作制定好寄存器和发送接收数据包列表就可以了。甚至可以由设计者直接向接口双方模块提供一个寄存器和发送接收数据包清单就可以。这样接口设计者可以有更大的发挥空间,由此使得接口设计者能够细致分析接口需求,设计出性能更好的接口。

  下面,我们以IEEE-1394总线物理层和链路层芯片间的PHY/link接口为例来讨论一下接口的独立设计。

四、高性能串行总线IEEE-1394简介

  IEEE-1394A 它不仅仅是一项只能在某些领域使用的新技术,它有着广泛的市场空间,甚至有可能成为未来的总线标准。尽管IEEE-1394A目前还没有被PC厂商广泛采用,但是它在数字图像领域内的重要作用已经为世人所关注。作为一种数据传输的开放式技术标准,IEEE-1394A被应用在许多领域。目前,IEEE-1394技术使用最广的还是数字图像领域,支持的产品包括数字相机或摄像机等。然而IEEE-1394的潜在市场远非这些,无论在计算机硬盘还是在网络互连等方面,该协议都有其广阔的用武之地。总体上,IEEE-1394A具有廉价,占用空间小,速度快,支持热插拔,支持同步和异步传输等特点。

  从系统结构而言,IEEE-1394系统分为应用层、管理层,事务层、链路层(link)和物理层(PHY)几个部分。物理层和链路层由于相对稳定,性能要求较高,往往做成ASIC,其余部分通常由相关软件来完成。

  这里定义的接口用于连接相同厂商或不同厂商的1394串行总线接口的物理层和链路层专用集成电路(ASIC),并为1394系统未来的升级提供了支持。在IEEE-1394A中,PHY/link层接口单列成一章,足见其重要性。本文在IEEE-1394A的基础上,提出了这种接口的解决方案,性能经过验证达到了该协议中所要求的指标。

  五、复杂数字逻辑EDA简介

  EDA(Electronic Design Automation),是在计算机平台上,利用软件开发工具进行数字,模拟,数模混合电子电路设计的方法,是电子设计领域中最具活力和最有发展前途的一项技术。其中数字逻辑设计已经比较成熟。与传统的设计方法相比,EDA工具缩短了设计周期,降低了开发成本,提高了设计的可靠性。

  IEEE-1394A的PHY/link接口的复杂逻辑设计,采用了先进的EDA技术,进行 Top-Down的设计。逻辑设计的结果通过FPGA/CPLD验证后,进一步制成ASIC。图5是基本EDA逻辑设计流程。

  复杂逻辑的开发需要两部分工具:1)逻辑仿真和综合工具; 2)FPGA/CPLD布局布线工具;

  FPGA/CPLD都是可编程逻辑器件,生产厂家较多,型号各异。其中比较典型的就是Xilinx公司的FPGA(现场可编程门阵列)器件系列和Altera公司的CPLD(复杂可编程逻辑器件)器件系列。采用 FPGA/CPLD芯片进行系统开发,具有以下几个优点:

  可实现强大功能。随着VLSI工艺的不断提高,其单片逻辑门数已达到百万门级,内嵌多种特殊模块,所能实现的功能也越来越强,同时也可以实现系统集成。

  研发投入低。FPGA/CPLD芯片在出厂之前都做过可靠的测试,设计人员只需通过相关的软硬件环境来完成芯片的功能设计,所以节省了许多潜在的花费。

  开发周期短,采用EDA设计方法,设计人员不需要具备专门的IC深层次知识,在较短的时间内就可完成电路的逻辑设计和芯片的制作,快速将产品推向市场。

  可在线编程。基于SRAM/FLASH的FPGA/CPLD,用户可以反复地编程、擦除、使调试/升级都十分方便,亦可用同一芯片实现不同的功能。

  FPGA/CPLD开发工具包括软件和编程器,开发软件一般有芯片生产厂家提供,也有一些优秀的第三方软件可以选用。EDA开发软件包括输入工具、编译器仿真工具、综合工具、及布局布线、版图设计等工具。Verilog 高级硬件描述语言的使用,使逻辑设计输入更为简化,更为准确。

  在设计测试中使用的EDA工具有:硬件描述语言Verilog,仿真工具ModelSim,综合工具Synplify,布局布线工具Maxplus等。设计测试采用ALTERA公司的ACEX1K系列低价位的CPLD芯片,它具有3万基本逻辑单元多,位内嵌存储单元,基本可以满足一般的逻辑设计要求。

  六、接口结构功能简介

  接口分别属于IEEE-1394节点系统的物理层和链路层模块,是物理层和链路层的子模块,负责物理层和链路层的控制信号、数据包和状态报告的传输。物理层和链路层之间主要依靠Ctrl[1:0]、Dn[n:0]、LReq、LPS、LinkOn和SClk 六组信号线来进行传输控制信号和其间的多种数据包。

  链路层取得接口控制权时,可能需要传输的包括:读数据请求包(RdReg)、写数据请求包(WrReg)、立即仲裁请求数据包(ImmReq)、公平仲裁请求数据包(FairReq)、优先仲裁请求数据包(PriReq),和等时仲裁请求数据包(IsoReq)。

  物理层取得接口控制权时,除了可能传输总线上传来的所有的数据包,还可能传输状态信息包和读请求响应包。

  在1394总线系统中,物理层/链路层主要实现物理层和链路层模块之间的定时服务,数据请求,数据服务,仲裁请求和仲裁服务。

  Ctrl[1:0]是该接口的控制信号。相同的信号随接口控制权所属模块不同而不同。Dn[n:0]是接口的数据线,用来传输接口的数据包,也是该接口独具特色的一点。它支持S100,S200和S400和更高的速度,数据总线的带宽与总线速度相适应:在以100Mbps传输时,接口只用D[0:1]来传输数据,传输速度每增加100Mbps,传输数据时接口将多用两根数据线。由于项目要求系统传输最高速度为400Mbps,所以接口中共有八根数据线。这样,如果加快传输速度,只是物理层芯片模拟部分提高处理频率,在整个芯片数字部分,数据时钟频率保持不变,与串行总线速度相独立,使得未来的系统升级成为可能。LReq信号线来传输请求信号,包括读写寄存器请求和仲裁请求等,根据请求,物理层响应传输操作。

  LPS是用于指示链路层电源和功能是否正常。

  另外,协议中还规定了该接口配有Direct数字微分编码器(digital differentiators)选通端,用以增加对物理层和链路层芯片之间隔离的支持。根据接口模块独立设计的思想,该接口实现过程中,主要技术难点主要有以下几点:

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

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

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

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

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

  物理层/链路层模块和接口的握手协议在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是接口物理层模块忙指示,1表明此时接口忙。用以判断总线上的数据包(物理层接收的数据包)是否可以向链路层传输。

  在总线数据包即将向链路层传输时,接口先置位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的读写协议进行操作。

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

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

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

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

  采用了主状态机和从状态机的结构,不仅很大程度上简化了状态机,而且是结构清晰,其次操作相近的仲裁请求包被合为一类,并依据请求类型来编写从控制状态机。在实现过程中,在主从状态机的前提下我们开始使用另外一种依据Ctrl控制线的状态编写从控制状态机。从综合后的结果来比较,现在的这个改进状态机节省了50%以上的资源。从这点看,可见同样的功能,不同的设计会产生截然不同的效果。

  九、Ctrl和Dn定时匹配

  在IEEE-1394A协议中要求支持数字微分编码器(digital differe-ntiators),所以接口引入了微分编码延迟。此时,从数字信号产生到接口相应信号线上的延迟如果超过半个SClk时钟周期,可以依据IEEE1394-2000A协议推断出:对应的接收模块不能准确地接收到有效信号。所以数字微分编码器的设计成为了整个设计的“瓶颈”之一。

  十、结束语

  把复杂协议内部模块间的接口独立出来进行设计,是一种加快和简化设计过程、提高设计可重用性和可维护性的好方法,值得重视和推广。目前国外产品一般采用锁相环(PLL)技术,把外部时钟倍频至SClk的八倍频以作为系统的工作频率,而本接口设计只有部分电路用了SClk的两倍频,在很大程度上降低了对元器件的要求和系统的功耗。

  PHY/link接口在IEEE-1394协议中具有非常重要的作用,对芯片处理速度的提高有较大的影响。本文通过对该接口的分析,提出了解决该接口设计难点的方案。以上方案经过FPGA布线后仿真测试,证明是切实可行的。

关键字:模块接口  独立设计 编辑:神话 引用地址:复杂模块接口的独立设计

上一篇:自制逻辑检测器
下一篇:基于PWM技术的模数转换器设计方法

推荐阅读最新更新时间:2023-10-12 20:34

一种用于ISA总线计算机1553B接口模块设计
引言   MIL-STD-1553B数据通信技术已被航空、航海乃至装甲武器系统所接纳,其技术从1553B总线通信接口的设计到构造大的通信应用系统已被众多设计师所掌握。但是由于传统的MIL-STD-1553B总线通信接口模块结构复杂,功能庞大(逻辑框图如图1所示),使得该模块的成本很高,有碍于新系统的设计、开发、仿真与研究,目前该技术的应用被局限在军工项目中。在工业控制领域,实验室装配等方面由于接口模块成本的因素,还没有很好地应用起来。为了迅速充实该领域,需要一种能满足应用、价廉的可插入通用IBM-PC或工业控制机的1553B-小型、集成、开发、仿真(以下简称1553B-SIDE)装置,用于各种类型的MIL-STD-1553B通
[嵌入式]
基于FPGA的UART接口模块设计
UART(UniversalAnynchronousReceiverTransmitter,通用异步接收发送器)是广泛应用的串行数据传输协议之一,其应用范围遍及计算机外设、工控自动化等场合。虽然USB传输协议比UART协议有更高的性能,但电路复杂开发难度大,并且大多数的微处理器只集成了UART,因此UART仍然是目前数字系统之间进行串行通信的主要协议。   随着FPGA的广泛应用,经常需要FPGA与其他数字系统进行串行通信,专用的UART集成电路如8250,8251等是比较复杂的,因为专用的UART集成电路既要考虑异步的收发功能,又要兼容RS232接口设计,在实际应用中,往往只需要用到UART的基本功能,使用专用芯片会造成
[嵌入式]
基于FPGA的UART<font color='red'>接口</font><font color='red'>模块</font><font color='red'>设计</font>
独立光伏电源系统设计方法
经过光伏工作者们坚持不懈的努力,太阳能电池的生产技术不断得到提高,并且日益广泛地应用于各个领域。特别是邮电通信方面,由于近年来通信行业的迅猛发展,对通信电源的要求也越来越高,所以稳定可靠的太阳能电源被广泛使用于通信领域。而如何根据各地区太阳能辐射条件,来设计出既经济而又可靠的光伏电源系统,这是众多专家学者研究已久的课题,而且已有许多卓越的研究成果,为我国光伏事业的发展奠定了坚实的基础。笔者在学习各专家的设计方法时发现,这些设计仅考虑了蓄电池的自维持时间(即最长连续阴雨天),而没有考虑到亏电后的蓄电池最短恢复时间(即两组最长连续阴雨天之间的最短间隔天数)。这个问题尤其在我国南方地区应引起高度重视,因为我国南方地区阴雨天既长又多,而对
[电源管理]
基于独立DSP平台的实时卫星导航接收机的设计
  目前,卫星定位系统的应用越来越广泛,中国、欧盟和日本等国都在积极发展自己独立的卫星定位系统。自1980年第一台商品GPS信号接收机问世以来,GPS信号接收机不断更新换代,目前的卫星导航接收机主要由专用集成芯片(ASIC)搭建而成,拥有集成度高、速度快的优点。但随着卫星导航系统现代化的开展,在轨飞行的导航卫星日渐增多,卫星导航应用趋于多样化,固定的硬件结构难以完成快速系统更新,暴露出硬件接收灵活度低、升级昂贵的弱点。而软件接收机通常是通过下变频芯片将卫星导航信号降到较低的中频,然后通过模数转换器对信号进行数字化,接收机的捕获、跟踪、定位等功能则由软件在通用的信号处理平台上实现,易于在现有系统的基础上进行性能升级和功能扩展。
[嵌入式]
工业通信用SST DN4 DeviceNet USB接口模块【Molex】
(新加坡 – 2011年4月14日) 全球领先的全套互连产品供应商Molex公司推出SST™ DN4 DeviceNet* USB接口模块,以补足其SST DN4 DeviceNet网络接口卡(NIC)系列产品阵容。SST DN4 DeviceNet USB接口模块为工业OEM厂商和终端用户提供用于PC通信的紧凑型高性能DeviceNet接口,大大提高控制和监控应用之性能。 Molex公司全球产品经理Michael Frayne指出:“SST DN4 DeviceNet USB接口模块设计是DeviceNet Pro PC Card (PCMCIA)卡的功能替代产品。这为前代系统连接提供了DeviceNet Pro
[嵌入式]
LCD显示接口模块的程序设计
  低功耗方式Sleep,通过执行一条睡眠指令就进入低功耗方式。如果使能,MDT将被清0,但仍保持运行。TO(STUATUS 4 )位被置1,PD位(STUATUS 3 )被清0,振荡器驱动器被停止。所有I/O端口保持Sleep指令执行前它们所有的状态(驱动高、驱动低或高阻)。   在这种方式时为使电流消耗最低,把所有的I/O引脚放在VDD或VSS电平上,以保证外部电路从I/O引脚、低功耗的A/D、不使能的外部时钟中拉出电流。为使电流消耗最低,TOCK1输入电平应该在VDD或VSS上。   1.睡眠唤醒   单片机通过下列事件之一唤醒睡眠:   · 在MCLR引脚上的外部复位输入;   · 监视定时器唤醒(如果W
[嵌入式]
OLED显示模块与AT91RM9200的接口设计
OLED全称为Organic Light-Emitting Diode,即有机发光二极管显示器,是指有机半导体材料和发光材料在电流驱动下而达到发光并实现显示的技术。OLED与LCD相比有许多优势:超轻、超薄(厚度可小于1 mm)、亮度高、可视角度大(可达170°)、由像素本身发光而不需要背光源,功耗低、响应速度快(约为LCD速度的1 000倍)、清晰度高、发热量低、抗震性能优异、制造成本低、可弯曲。所以OLED更能够展示完美的视频,再加上耗电量小,可作为移动电话、数码电视等产品的显示屏,被业界公认为最具发展前景的下一代显示技术。 1 P13501显示模块的特性 台湾铼宝公司推出的P13501是一种128×64点阵的单色、
[单片机]
OLED显示<font color='red'>模块</font>与AT91RM9200的<font color='red'>接口</font><font color='red'>设计</font>
基于STM32f103的I2C通信接口的EPPROM模块(24C256)读写程序详解2
接上面的文章!!! 第五步:我们要封装2个函数,一个用于读8位数据,一个用于写8位数据,程序如下: 第六步:我们要利用上面2个函数再封装2个函数,一个用于向EPPROM指定的地址写指定的一字节数据,一个用于读EPPROM指定的地址的数据。程序如下: 第七步:我们要封装2个函数,用于多字节的读写!程序如下: 最后我们就是主函数了!当然这里利用串口发送数据来显示读写的数据!!! const u8 My2 ={ 地址100开始的数据 rn }; //定义了一个多字节的数据 #define MySize2 sizeof(My2) //该数据长度 int main(
[单片机]
基于STM32f103的I2C通信<font color='red'>接口</font>的EPPROM<font color='red'>模块</font>(24C256)读写程序详解2
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved