2008-01-30 09:32:29 来源:研祥
高速数据传输系统设计的关键是主机接口卡的设计与实现。传统的做法是采用分立元件,由若干个模块构成。大多数的设计都类似于如下结构[1]:接口的主要功能模块包括光电信号转换接口(O/E和E/O)、串行化和解串行化模块(TX和RX)、数据缓存F I F O 、c PCI 控制器和可编程逻辑模块(FPGA或CPLD)或DSP。各模块中O/E和E/O 实现光纤通道串行光信号和串行电信号之间的相互转换。TX和RX 实现将串行电信号和并行电信号的相互转换功能。F I F O 主要实现光纤通道和cPCI 之间信号的缓冲。cPCI 控制器实现FIFO 输出的信号与32 位标准cPCI 信号的转换。FPGA或CPLD 负责各模块之间的时序协调和传输控制。分析以上方案可见,各模块功能都是由分立芯片完成的。这样各芯片间的互连势必会影响传输速率,也将使PCB板的布局布线变得复杂,使传输延时增大,进一步降低传输速率。而随着FPGA(Field Programmable Gate Array)技术的不断发展,其容量、功能、可靠性以及响应速度都在不断的提高。用一片FPGA完全可以实现计算机与光纤通道之间的数据传输与处理。鉴于此,本论文的设计将用一片FPGA来实现串行信号与并行信号的相互转换、数据缓冲以及时序协调和传输控制等以前用分立元件实现的功能。
笼统来说,本设计主要是要完成主机接口的实现。主机接口是实现高速数据传输和数据存储的一个关键环节。主要完成高速数据流的信号转换,实现数据在主机上的存储,同时减少CPU对存储过程的干预。CompactPCI简称cPCI,是国际PICMG协会于1994年提出来的一种总线接口标准。它的出现解决了多年来电信系统工程师与设备制造商面临的棘手问题:将VME密集坚固的封装和大型设备的极佳冷却效果以及PC廉价的易采用具有最新处理能力的芯片结合在一起,既保证99.999%的高可靠度,又降低硬件和软件的开发成本。因此希望通过cPCI总线利用DMA方式完成数据的传输与存储。由图1知,接口的主要功能模块包括电光(光电)信号转换模块、可编成逻辑模块FPGA和cPCI总线接口模块。接口各模块中,O/E和E/O实现光信号与电信号的相互转换。FPGA实现几乎所有的信号处理工作,比如实现数据的串行、并行转换与最终通过光纤进行数据传输;实现FIFO功能进行信号缓冲,在高速数据传输中缓存是很重要的,它协调了数据发送端和接收端之间的数据传输速度,防止由于数据流速度的波动导致传输的失败;实现各模块之间的时序协调和传输控制等。cPCI总线接口卡实现FPGA输出的信号与32位标准cPCI信号的转换,通过DMA方式实现cPCI总线到主机的数据存储。主要的研究与设计重点在cPCI总线接口模块、可编程逻辑模块FPGA和光电转换模块。
接口卡的软件设计主要包括两个部分,一个是FPGA控制程序的编写,一个是板卡驱动程序的编写。以下本文主要就接收端FPGA控制程序的编写加以详细论述。正如前面所述,FPGA主要完成时序协调和传输控制,以及数据流的串并转换和缓存。整个系统的控制采用有限状态机[3]。状态机的状态转换以及各个状态下信号的处理完全依据PCI9056的Local端到PCI端的DMA传输时序图。
转换流程分为3个状态:idle ,prel,dma_read。idle为空闲状态,上电复位后首先进入此状态,在此期间总线无任何操作,只是不断检测ADS#信号,一旦检测到这个信号有效,就进入下一个状态。prel是一过渡状态。根据PCI9056的DMA传输时序图可知,每次一个新的总线接入有效(即ADS#有效)后的第一个数据会持续两个时钟周期(其后的数据持续一个时钟周期),其中,第一个时钟周期并不采集数据,而只是使从设备准备好信号(即READY#)有效,第二个时钟周期才开始采集第一个数据。所以,此过渡状态主要是使READY#信号在采集数据前一个周期有效。dma_read状态期间执行从局部总线到cPCI总线的DMA操作,在每次时钟的上升沿采集数据,直到突发长度内的最后一个数据,BLAST#信号有效,下一个时钟周期,状态机又回到空闲状态,等待下一次传输的开始。对数据的处理是按照数据的流向逐步完成的[4][5]。首先经过OE转换的串行数据进入FPGA,经由FPGA内部的串行高速收发通道完成解码及第一步的串并转换,这时由1bit串行数据变为8bits并行数据;其次由于cPCI局部总线数据线宽度为32位,所以第二步的串并转换要完成8bits数据到32bits数据的转换。其过程是,用4个8bits的D触发器来连续锁存输入的8bits的数据,再用一个32bits的D触发器来同时锁存4个8bits的数据以形成32bits宽的数据输出;最后为了对数据进行缓冲,完成数据速率的转换,将数据存入一32位宽异步FIFO。该异步FIFO的写时钟是从串行数据提取出的随路时钟,读时钟是与总线控制器PCI9056的局部时钟同频的由板上提供的外部66M时钟。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。