FPGA内需设置一个线性循环移位寄存器(LFSR),在检验过程中与传输数据进行异或,LFSR内部多项式为:
3.2 传输层在FPGA内的实现
传输层在发送过程中将数据和控制信号打包为FIS,在接收过程中分解接收到的FIS。如图2所示,FPGA内部设置了一个FIFO,数据的接收和发送过程都通过同一个FIFO通道。Wishbone总线是一种片上系统互联规范,该规范给片内的各部分以及IP核之间的互联定义了一种通用的接口,由此提高了设计的可靠性和可移植性。图中的Wishbone从接口与应用层的Wishbone主接口通信,过程方便可靠。Shadow寄存器用于转送命令到设备端,或者记录设备端的状态。状态和控制寄存器包含了一系列的寄存器,用于控制接口并且检索接口状态信息。
3.3 SATA与XC5VLX30T的接口及仿真
3.3.1 GTP收发器简介[5]
GTP收发器是Virtex-5 LXT和SXT系列FPGA内高度可配置和高度集成的可编程逻辑资源。它支持包括SATA在内的许多高速串行接口,内部的电流模式逻辑(CML)驱动器和缓存器提供用户可配置的终端、电压摆幅和耦合,可编程的发送预加重和接收均衡使得信号完整性得到优化。此外它还集成了可选的8b/10b编码、逗号校准、信道绑定以及时钟校正模块。
以Virtex-5 LXT系列的XC5VLX30T为例,它具有四个独立的GTP模块,每个模块又分别包含了若干GTP驱动电压与参考电压引脚,一对低压差分串行时钟引脚,以及两对RocketIOTM低压差分串行引脚。
3.3.2 SATA接口信号定义
SATA接口数据线由7根信号线组成。在主机端,1至7号线依次为GND、Tx+、Tx-、GND、Rx+、Rx-和GND。其中,Tx+和Tx-组成低压差分发送信号对,分别与XC5VLX30T的MGTTXP和MGTTXN引脚相连;Rx+和Rx-组成低压差分接收信号对,分别与XC5VLX30T的MGTRXP和MGTRXN引脚相连。
3.3.3 SATA时钟电路及PCB仿真[6-8]
由于SATA的时钟频率和串行数据传输速率都很高,因此对信号的抗干扰能力的要求很高。为提高系统可靠性,需要对布线后的PCB板上SATA时钟信号和数据信号进行反复的仿真实验。下面以SATA时钟信号为例,进行PCB布线后仿真实验。
SATA2.5最高支持3.0Gb/s的传输速度,因此要求所选的晶振具有300MHz以上的低压差分时钟输出能力。IDT公司的ICS844071和ICS844031满足要求,前者的输出频率范围是62.5MHz~170MHz,后者的输出频率范围是245MHz~340MHz。两者在封装上完全兼容,用户可以根据设计的速度要求来选取。图3是SATA时钟接口电路图,其中SATA_CLK和分别与XC5VLX30T 的GTP专用差分时钟输入引脚MGTREFCLKP和MGTREFCLKN相连。
利用844071_3v3.ibs及virtex5.ibs两个IBIS模型,在Hyperlynx7.5环境下对SATA差分时钟进行BoardSim差分眼图仿真。图4是在线长1.2in、线宽10mil、差分线距12mil、串行连接0.01μF电容以及端接100Ω电阻等条件下,考虑各种过孔、PCB板的整体分析等因素后的PRBS位模式仿真眼图。从图中可以看出,在100MHz频率条件下,眼图的睁开程度较大,符合GTP收发器的时钟眼图要求。
随着FPGA逻辑单元的不断增多、内存容量的不断增大、主频的不断提高,许多以前只能在专用芯片上才能实现的功能,现在都可以集成到一片FPGA内部来完成。例如围绕着一片Virtex-5 FXT可以搭建涵盖图像采集、显示、处理、存储、通信等功能的系统。SATA作为一项正蓬勃发展的存储技术,与FPGA技术结合之后可以极大地提高其本身的应用范围,特别是为一些脱离PC机的嵌入式系统实现高速、稳定、价格较低的存储功能提供一种新的有效途径。