一、引言
在越来越发达的通讯世界里,新产品、新设备层出不穷,随之而来的问题是各产品与设备之间的接口也越来越多样化,虽然标准化组织定义了许多接口标准,比较著名的接口协议如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接口为例来讨论一下接口的独立设计。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)