基于FPGA的SATAll协议结构层中的物理层设计与实现

摘 要 :sata作为一种高速串行, 点对点传输的硬盘接口, 已取代了ide 硬盘接口。 目前在硬盘中使用较为普遍的是 sataii 和sataiii, 其线速率分别达到了3gbit•s -1和6 gbit•s-1。文中对 sataii 协议进行了全面的分析,并利用 xilinx公司的ise开发工具和 ml507干估板完成了协议的软 ip核编写与调试。 所用 fpga 型号为xc5vfx70t, 利用其中硬核rocket io gtx 实现了高速链路的功能,并使用多级流水线技术进行并行设计以提高整体速度。
sata作为一种高速串行链路已取代了 ide作为 硬盘的标准接口。该高速差分链路使用吉比特传输和8b/10b 编码技术, 其相比于ide、 pata 接口具有传输 速度更高、 设备升级更简单和配置使用更便捷等优 势[1] 。 首先, 作为一种高速点对点的传输方式, sata解决了直流偏置、 信号偏移、 码间干扰等问题, 并提高 了传输的带宽。 同时具备了更完善的查错和纠错能 力, 传输质量和传输可靠性得到了大幅提升。 其次,sata接口相比于传统的并行接口具有更少的引脚数 目, 更利于pcb板级的设计、 装配和散热。 最终,sata 总线还支持热捅拔并具有更低的功耗。sata接口协 议具有层次化的结构[2-3] , 如图1 所示, 从下到上分别 是物理层、 数据链路层、 传输层和应用层。 其中物理层 负责低压差分信号的发送和接收, 并实现接口的初始 化过程和速率的自动协商。
1 物理层功能 在发送过程中, 物理层从链路层接收并行的数据将其转为串行数据, 然后以3gbit•s -1 的线速度向硬盘侧发送lvds nrz高速比特流。在接收过程中, 将串 行数据转化成并行数据, 在串行数据流中检测其中的k28.5字符, 使得输出的并行数据对齐[4] 。 物理层提供 的具体功能如下: ( 1) 发送侧和接收侧提供100ω 电阻 进行内部端接, 以此来消除反射, 保证信号的完整性。
( 2) 向链路层提供不同位宽的接口。
( 3) 用 cdr技术 从高速的串行比特流内恢复出时钟和数据。
( 4)k28.5字符检测, 以此来对齐接收到的数据。
( 5) 发送和检测oob( out-of-band) 信号, 进行硬盘和fpga的同步 和协商。
( 6 ) 向上层报告物理层的工作状态。
( 7 ) 提 供电源管理功能, 以此降低功耗。
( 8 ) 支持接收和发 送阻抗匹配。
( 9) 解决扩散频谱时钟引起的输入数据 频率波动。
( 10) 响应远端发出的测试请求。
2 oob 信号 sata 协议使用oob信号来完成初始化过程和速 率协商过程。oob信号不属于数据信号, 所以称之为 带外信号。oob是一种低频信号, 具体含有3 种模 式: comreset、cominit和comwake。 comreset, 如图2所示, 由主机端发送, 用来设备复位和链 路的初始化, 其由突发长度为106.7ns 的align 原语 和 320ns 的空闲共模电平分隔。comini, 如图 2所 示, 格式与comreset相同, 与后者的区别在于, 其是 由设备侧向主侧发送的。comwake, 如图3 所示, 与 前两者的区别在于其的空闲间隔为106.7ns, 且设备 侧和主侧均可以发送。
3 物理链路建立过程 在上电和硬件复位期间, 主机通过oob信号来建 立通行链路, 其中包括速度协商、时钟恢复、阻抗校准和 自我诊断等。 具体上电过程如图4所示, 由以下10个步骤组成:
( 1) 主侧fpga和设备侧硬盘处于断电状态。
( 2) 系统上电, 主设备侧将发送和接收差分对拉到共 模电压。
( 3) 主设备侧发送 comreset信号。
( 4) 当 上电复位结束后, 主设备侧停止发送comreset 信号 并将 串 行 总 线 置 于 空 闲 状 态。
( 5 ) 当硬盘检测到comreset信号,其开始发送 cominit信号作为响应。 硬盘可在任何时间点通过发送cominit 信号来建立新 的 通 信 连 接。
( 6 ) 主设备侧进行校准且发送comwake信号。
( 7) 当硬盘在其的接收线上检测到comwake信号后, 其开始校准发送器。 完成校准后, 硬盘发送突发长度为6的comwake信号然后连续发 送align原语。 当连续发送 54.6μs的align 原语后还 未收到来自主设备侧的回应, 而硬盘侧则进入错误状 态。
( 8) 当主设备侧检测到comwake信号后便以所 支持的最低速率开始发送d10.2字符。 于此同时, 主 设备侧开始锁定align原语, 当准备好便以与接收到相 同的速度向硬盘侧发送align原语。 若在880μs内主 设备未接收到align原语, 主设备便重新开始复位。
( 9) 硬盘锁存到 align原语序列, 并在准备就绪后, 发送sync原语表明可正常运行。
( 10) 当主机侧接收到非align原语, 链路建立完成, 则可进行正常的数据传输。
4 实现过程 sata 协议物理层的实现由 3 部分组成, 分别是整体流程图的设计、 时钟部分和速率协商状态转移设计。
4.1 整体设计流程图
初始化的过程严格按照sata 协议的规定。 整个过程流程如图5所示。 主机端上电后首先发送持续时间为1μs 的 comreset 信号, 然后等待 cominit信号, 当srxstatus等于100时, 再发送持续时间为1μs的comwake信号。 在接收到comwake信号后且线路处于 空闲的状态, 接着发送 d10.2字符。 若在 880μs 内接收 到了align原语, 则发送align原语且开始等待sync原语, 否则将重新开始发送comreset 信号[ 4-7] 。
4.2 时钟控制设计
sata 协 议 物 理 层 的 实 现 是 基 于xilinx公 司 的fpga, 利用fpga内部提供的高速serdes接口实现高 速比特流的发送、 接收和串并转换。 其中一个高速串 行收发器gtx由两个tile组成, 为节省功耗, 两个tile由一个锁相环, 如图6 所示提供时钟。 由外部提 供给gtx 中锁相环的参考时钟频率为 150mhz, 其中 锁 相 环 的pll_divsel_fb参 数 设 置 为2,pll_divsel_ref参数设置为1,intdatawidth参数设 置为 1, 在 这 种 设 置 条 件 下 锁 相 环 输 出 的 倍 频 时 钟pllclk为1.5ghz, 如图7所示。 该倍频时钟分别提 供给发送器和接收器。 提供给发送器的参考时钟由参 数pll_txdivsel_out设定, 接收器则由参数pll_rxdivsel_out 决定。 参 数pl_txdivsel_out、
pll_rxdivsel_out的可能取值为1和 2。 参数取值 由协商的速率决定, 可在协商的过程中通过drp接口 动态地改变。 提供给 fpga逻辑部分的时钟由gtx提供给链路层的数据位宽决定[8-11] 。 锁相环模块对 外提供的接口信号如下:
( 1 )clkin信号用来向模块 提供参考信号。
( 2 ) intdatawidth信号用来决定gtx串行收发器内部的数据宽度。
( 3 ) plldet信号 用来表示锁相环内部的vco压控振荡器的输出范围 是否在可接受的有效范围内。
( 4 ) plldeten信号用 来使能内部的锁定功能。
( 5 ) refclkout频率等于clkin,其可为上层的逻辑电路提供参考时钟。
整个sata物理的时钟网络结构, 如图8 所示, 由4部分组成[8] , 分别是高速串行收发器部分oob信号 控制部分、dcm 数字时钟控制部分和 snc 同步控制部 分, 其中高速串行收发器向逻辑控制部分提供 drp动 态控制接口。gtpreset 信号用来对整个收发器进行 全局的复位。txdata接口用来接收将要发送的并行 数据。 rxdata接口用来将串并转化后的并行数据提 供给上层。txcomstart 用来指示收发器何时开始 发送 oob信号, 并将其置 1 时开始发送oob信号, 置0不发送oob信号。txcomtype用来指示发送oob信号的种类。txcharisk信号用来指示所发送的数据是否是k字符。 rxstatus 用来表示串行收发器的状态。
refclkout时钟信号由串行收发器模块输出, 经全局时钟缓冲器bufg进入fpga的全局时钟专用 网络, 最 后 进 入dcm和snc模 块。 从 dcm输 出clk0时钟和clk2x时钟, 分别通过bufg后向收发 器提供并行的收发时钟。snc模块可通过动态地改变 收发器的状态达到速率自动协商的功能。oob模块 用来控制带外信号的发送和接收。
4.3 速率协商设计
速率协商的状态转移过程如图9所示。 该设计方 案可根据设备硬盘侧挂载的硬盘型号, 自动的改变主fpga这一侧的线速率。 若硬盘支持i代接口, 则fpga自动调整gtx线速率到1.5gbit•s-1 , 若硬盘支持ii代接口, 则fpga自动调整线速率到 3gbit•s-1 。
具体的调节过程如下: ( 1) 设备复位后, 改变接收器的线速率为3gbit•s-1, 通过drp动态接口读取并修改地址为0x46寄存器的 值为 1。 ( 2) 等待 16 个时钟周期。 ( 3 ) 改变发送器的 线速率为3gbit•s-1, 通过drp动态接口读取并修改 地址为0x45 寄存器的值为1。 ( 4) 复位 oob信号控 制模块, 此时fpga和硬盘进行速率协商。 ( 5) 等待链 接建立, 若在3.5ms时间内链接建立完成, 则物理层 准备好, 此时给上层一个phyrdy的信号。 ( 6 ) 若未 建立好, 则改变接收器的线速率为1.5gbit•s-1 。 通过drp动态接口读取并修改地址为0x46寄存器的值 为 0。 ( 7) 等待 16个时钟周期。 ( 8 ) 改变发送器的线 速率为1.5gbit•s-1 。 通过 drp动态接口读取并修 改地址为0x45寄存器的值为 0。 ( 9 ) 等待链接建立, 若3.5ms内链接建立, 则硬盘和主fpga协商的速率 为1.5gbit•s-1, 向上层报告链路建立可进行正常的 数据传输, 若未建立, 则从过程(1) 开始重新循环, 直 至速率协商好为止。
5 结束语 代码调试完成后下载到xilinx提供的ml507评 估板中, 利用 chipscope工具抓取的波形如图10和图 11所示。 图10中 speed信号为低, 表示速率协商到1.5gbit•s-1 。 在图11 中,sof信号带来一个高脉冲 后,rxdata信号线上的数据是硬盘与fpga建立连 接后由硬盘发送的一帧报告硬盘状态信息的寄存器类 型帧。 帧的有效长度介于sof的高脉冲和eof的高 脉冲之间。 帧的长度是6个双字, 最后4byte为crc校验值, 其中所有的数据均经扰码加扰。 从图中可看 出,物理层完成了速率协商和链接建立的过程。

Mindspeed的双模小蜂窝基站SoC采用Picochip Transcede LTE平台
数字式三用表校验仪的使用与维护知识
安泰测试:矢量网络分析仪可以测哪些参数?
Kepware助力汽车行业用户提升整体竞争力
单片机的I/O口不够,怎样同时控制最多81个继电器
基于FPGA的SATAll协议结构层中的物理层设计与实现
需要了解的Linux系统进程环境
Xilinx FPGA平台GTX简易使用教程(二)
三菱全新SUV,对开门,全时四驱,青蛙外观上路回头率百分百
AI发展预计2023年可突破5000亿美元大关
5G、4K、VR、人工智能等为代表的新技术,会给广电带来什么?
软通动力中标中关村东升科技园二期速通门项目
电脑死机按什么键恢复
醒醒吧!家用摄像头也不一定安全 或许你的生活正暴露在千百双眼睛下
中国北斗导航系统面向全球,是否能与GPS匹敌?
NMOS的用法
Diodes推出新型APX4558双通道运算放大器
海信推出OLED电视 创维可以着急却无法阻止
光模块PCB焊盘的可焊性不良分析
探讨嵌入式硬件电源设计方面的注意事项
s