热度 7
2013-4-1 16:53
1599 次阅读|
0 个评论
翻译第三弹,原文《A LOW COST FPGA BASED USB DEVICE CORE》,翻译的不好,有兴趣的共同探讨。 摘要: 近年来,通用串行总线标准已经广泛应用到数据传输的一些产品中,可以直接替代其它产品作为通讯接口,具有一定的优势。因此,实现系统级USB通讯标准的不同应用已迫在眉睫。 为了解决所面临的挑战,本文将介绍一种廉价USB核,采用FPGA集成电路应对不同的应用。 一:简介 在以往,对数字系统与设备之间的数据通讯方式的高速率和高准确率的需求催生了能够替代传统串行和并行接口的一些标准,此标准不仅仅能够提高数据的传输速率,而且可以允许采用普通的结构连接不同的收发设备。这就使数据通信系统便于管理,同时满足高效率的要求。 对于此挑战的解决方法,在过去的一些年里,USB标准在数字系统中已经成为基本的通信模型,具有很多优点,可以替代先前的一些并行和串行通讯接口。USB的特点包括廉价、易于使用,结构简单。因而,对于一些系统和设备中,应当考虑采用USB标准作为通信协议。 USB标准描述的规格使其能在通信系统中得到广泛应用。此外,仅是提到如下特点,并不代表限制性: 通过一根平衡线传输数据,获得更高的抗噪声干扰能力; 总线类型的结构允许在一次传输中连接多个设备; 电功耗设备都需要它; 连接简单,即插即用。 本文将采用一个集成的FPGA电路完成完整的USB核的开发,为了连贯性,本文将首先深入的介绍USB标准。此分析将作为不同开发阶段的结果,以便完成需求接口的设计。开发阶段将在下一段详细的介绍,包含所有阶段的分析,从通信格式到错误管理标准。图1示意了提出核的块表。 二:开发步骤 为使本文所提出的USB核便于开发,作者给出了一系列实现USB标准的步骤。 第一开发阶段是USB协议分析仪采用DL语言在FPGA上实现。用于USB协议的编码和信息的读出,能使验证最终的收发协议一致性。 协议分析仪填补了PC上实现的应用的不足,能够提供生动的数据接收的演示。 客观上讲,此阶段是为了确保由分析仪获取的数据包的编码的准确性。作为一个理论性和研究性的工具,它也能提供人们学习USB标准工作的过程。 第二阶段的分析是产生基于USB协议第一层框架的产生器,可以用来最终的测试和用于USB发射器的协调。第三阶段是集成所有的系统,采用一个Pico Blaze处理器在同样的FPGA芯片上实现,用于对本项目的测试。微控制器负责高层协议控制和同外部接口通信。 最后一阶段是在个人电脑上实现驱动环境的开发。这些使设备的开发容易,在个人电脑上能够获得相关的应用。实现是在Xilinx Spartan 3E TQFP开发板上。所有的核都是基于此集成电路的,仅仅使用了此芯片资源的一小部分。 三:USB接收器和协议分析仪 USB协议分析仪在本项目中的第一步就有描述,即是一个嗅探器,便于来自USB总线的数据分析。电路图如图2所示。 一个收发器集成电路USB1T11A用于连接USB线,包含一级转换器,能够匹配USB差分输入,一旦USB总线接收了NRZI格式的数据,译码处理开始。 译码处理采用VHDL语言编写,因为它在FPGA占用少量资源。 NRZI到RZ转换电路用于检测所接收到的数据。转换电路是基于图3中的边缘检测器。 检测器采用DFF设计,采用的时钟信号是USB总线时钟信号的4倍。异或门和D触发器的Q输出端相连接,用于每个周期产生脉冲边缘。在每个时钟边缘出现的时候产生逻辑0电平,否则出现逻辑1电平。有点必须指出,一个已经存在的边缘代表逻辑电平0,一个边缘信号的出现代表逻辑电平1。再生时钟信号是通过无溢出32位计数器计数得到。当计数器计数到11111时,数据包接收完,计数器变成00000,然后开始新的计数。 如果计数器在计到00110时并没有收到边缘,会在四次计数到26时产生一个时钟脉冲。在此阶段,计数器保持等待一个时钟边缘,不会有额外的脉冲产生。 这种特殊事件对用每行中的六个。在那种情况下,计数器将停止产生脉冲,等待一个边缘(逻辑0)。最后一个脉冲并不发送,仅仅是一个同步脉冲,没有数据的产生(bit不进行操作)。 图4给出了晶振读出波形。通道1给出RZ数据波形,通道2给出了来自NRZI传输的时钟脉冲恢复波形。转换系统要求延时时钟脉冲要参考数据总线译码的时钟。串行通信输出包含来自存储器的数据发送到个人电脑上。应用软件运行在PC上,可以将接收到的数据绘制成图便于以后的分析。 四:USB发射器和数据包产生机 在USB核内的传输逻辑工作原理和先前介绍的接收逻辑细节相似。和结束信息点相关的信息存储在RAM存储器中。考虑到结束信息点的方向性,存储器需要重新组织以便用于数据的发送和接收处理。USB发射机管理数据的发射时钟,以便解决包含0 bit在内的6个连续序列的发送。 在发送数据到发射机(CRC16产生机)前,来自存储器的数据将会被处理。此阶段将产生CRC校验用于检测所有发出的数据包。