admin 管理员组文章数量: 887021
2024年3月7日发(作者:滑块价格多少)
应用指南: Virtex-4 FPGAR嵌入式串行 ATA 存储系统作者:Simon Tam 和 Les JonesXAPP716 (v1.0) 2006 年 10 月 13 日提要本应用指南描述了在 Virtex™-4 平台上对嵌入式串行高级技术附件 (Serial Advanced
Technology Attachment, (SATA)) 存储系统的设计和实现。SATA 的前身是流行的并行高级技术附件 (Parallel Advanced Technology Attachment, (PATA)) 接口。SATA 克服了 PATA 的许多局限,并且提供了 150 MB/s 的最大带宽。SATA 与高速网络接口千兆位以太网 (1000Base-X)
相结合,可为许多高性能存储应用创建理想的解决方案,如网络附加存储 (NAS)、存储区域网络 (SAN) 和独立磁盘冗余阵列 (RAID) 等。简介Virtex-4 器件包含多种专用的高性能嵌入式功能,从而使该系列成为理想的嵌入式 SATA 存储系统单芯片解决方案。Virtex-4 嵌入式 PowerPC™405 (PPC405) 处理器支持多种操作系统,其中包括 MontaVista Linux,事实证明这种操作系统可以为 SATA 和以太网提供上层协议支持。Virtex-4 嵌入式千兆位级收发器 (MGT) 与第一代 SATA (1.5 Gb/s) 的链接速度兼容。MGT
不再需要外部物理器件。无论是使用外部物理层器件 (PHY) 还是使用 MGT 作为内部物理层器件,Virtex-4 嵌入式三态以太网媒体访问控制器 (TEMAC) 都可以支持 10/100/1000 Mb/s 以太网。TEMAC 符合 IEEE802.3-2002 标准,已经通过新罕布什尔大学 (University of New
Hampshire) 进行的一致性测试。这些嵌入式功能与灵活的可配置逻辑架构相结合,能够为设计人员提供更大的设计灵活性,同时保证尽可能高的性能。
为了支持快速开发,我们创建了一个嵌入式 SATA 存储 (ESS) 参考系统。本应用指南详细介绍
ESS 参考系统的架构和设计。该 ESS 参考系统包括以下功能:••用于桥接串行 ATA 与以太网器件的高性能 Virtex-4 平台完全支持第一代 SATA (1.5 Gb/s)♦♦第三方 IP 所支持的链路层和传输层在 MGT 中实现的物理层嵌入式 Virtex-4 三态以太网 MAC••••支持 1 Gb/s 以太网♦适合高速同步数据传输的内置 DMA 引擎32 位双倍数据速率 (DDR) 存储器接口
支持 MontaVista Linux 3.1♦♦Linux 内核 2.4Xilinx 以太网和 SATA 驱动程序•经 ML405 评估平台验证的系统© 2006 Xilinx, Inc. All rights reserved. All Xilinx trademarks, registered trademarks, patents, and further disclaimers are as listed at /. PowerPC is atrademark of IBM Inc. All other trademarks and registered trademarks are the property of their respective owners. All specifications are subject to change without OF DISCLAIMER: Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this feature,application, or standard, Xilinx makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you mayrequire for your implementation. Xilinx expressly disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any warrantiesor representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular 716 (v1.0) 2006 年 10 月 13 日/cn 1
ESS 参考设计RESS 参考设计架构本部分重点说明 ESS 参考系统的主要架构元件,如图1 所示:ML405 Evaluation PlatformDDR SDRAMFPGAMulti-port Memory ControllerPort 0Port 1Port 2Port 3Communication DMA ControllerPLB Port InterfacePLB Port InterfaceRx0LocalLinkTx0LocalLinkRx1LocalLinkTx1LocalLinkBlock RAMISPLBPPC405DSPLBY-BridgeLocalLink GMACPeripheralSATA IPDCRInterruptControllerDCR2OPBOOBControllerUARTLiteMGTXCVRGMIIMedia Type:1000BASE-XDB9HardDiskXAPP716_01_100406图 1:
ESS 参考系统详细框图
ESS 参考系统由以下主要元件构成:••PowerPC 405 处理器多端口存储器控制器 (MPMC)/cn 2XAPP716 (v1.0) 2006 年 10 月 13 日
ESS 参考设计•••••••通信 DMA 控制器 (CDMAC)LocalLink TEMAC 外设SATA 主机控制器 IP 核Y 型桥接器UART千兆位级收发器 (MGT)带外 (Out-of-Band) 控制RPowerPC 405 处理器PPC405 是一个嵌入式 32 位 RISC 处理器核。这种行业标准的处理器可提供很高的性能和广泛的操作系统支持。其功能的简要列表如下:••••••••嵌入式 450 MHz 700 + DMIPS RISC 核(32 位哈佛架构 (Harvard architecture))。
五级数据通路流水线。
硬件乘除运算。
32 x 32 位通用寄存器。
16 KB 2 路组关联指令和数据高速缓存。
存储器管理单元 (MMU)。
64 入口的变换后备缓冲器 (Translation Look-aside Buffers, TLB)。
页面大小可变 (1 KB-16 KB)。多端口存储器控制器
多端口存储器控制器 (MPMC) 是一种四端口存储器控制器,用于为 PPC405 和 DMA 引擎提供存储器访问。MPMC 允许多个实体绕过系统总线直接访问存储器。
MPMC 的主要优点是能够利用对优先级的了解同时仲裁全部四个端口,从而有效利用 DDR 存储器。与之相反,基于总线的片上系统必须依次仲裁对总线以及存储器的访问权。MPMC 对各端口的通信对象有专门的了解,因此可以进行优化,以尽量缩短向各端口回写数据的延迟。通信 DMA 控制器通信直接存储器访问控制器 (CDMAC) 与 MPMC 配合可提供多个 DMA 通道。CDMAC 被搭建成可使用两个 MPMC 端口,通过四个独立的 DMA 引擎提供两个全双工 DMA 通道。因此,CDMAC 包含两个发送 DMA 引擎和两个接收 DMA 引擎。
CDMAC 与 MPMC 紧密耦合,因而比其他类型的 DMA 控制器更为小巧灵敏。这种紧密耦合的主要优点之一就是 MPMC 被设计为知道它有两个端口在与 DMA 对话。这种设计提供了如何最好地控制 DDR 存储器以及如何获得尽可能大的带宽的优先级知识[参考文件3]。
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 3
ESS 参考设计RLocalLink TEMAC 外设
LocalLink TEMAC 外设为该参考设计提供一个千兆位以太网接口(第 4 页图2)。该外设将
Virtex-4 TEMAC 与流接口 (Xilinx LocalLink) 集成,从而提供一个 1Gb/s 的全双工以太网接口。该外设旨在实现高性能 TCP 应用。数据是通过 DMA 运行在 LocalLink 的接口上传输。外设的配置和控制是通过 DCR 接口传输。其物理接口就是千兆位媒体独立接口 (GMII)。LocalLinkLocalLink 是一种用于通信器件的轻型流接口,为单向数据传输提供一种简单协议。因此,像
GMAC 外设这类全双工通信器件需要两个 LocalLink 接口。LocalLink 外设的特殊功能包括:••••••32 位 LocalLink 发送和接收接口,用于连接通信 DMA 控制器通过 DCR 总线访问的配置/状态寄存器坏帧或断帧过滤,用于降低处理器和存储器的占用率16 KB 发送和接收缓冲器传输层(UDP 和 TCP)校验和硬件辅助将所有以太网有效帧传送到软件通过注册可获得 Aurora 参考设计,您可从中找到 LocalLink 接口技术规范 [参考文件4]。
TX LocalLink I/FTransmitPeripheralTX Client InterfaceRX LocalLink I/FReceivePeripheralRX Client InterfaceEmbeddedTri-ModeEthernet MACExternal
1000BASE-X PHYDCR I/FDCR-to-HostInterfaceManagementInterfacePeripheral DCRRegistersXAPP716_02_092706图 2:
LocalLink TEMAC 框图
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 4
ESS 参考设计RTEMACTEMAC 嵌入式模块的设计符合 IEEE 802.3 技术规范,可以工作在 1000 Mb/s、100 Mb/s 和 10
Mb/s 模式下。另外,它支持半双工和全双工两种工作模式。嵌入式模块的功能如下:•••••••单速全双工 1 Gb 以太网 MAC全双工物理编码子层 (PCS),带有符合 1000BASE-X 标准的物理介质附属子层 (PMA)PCS 支持自动协商,用于与链接伙伴交换信息支持符合 IEEE 802.3-2002 技术规范的 VLAN 帧通过以太网 MAC 控制暂停帧实现可配置的流量控制可配置的任意长度巨型帧支持可配置的帧间隔调整详情请见 [参考文件1]。SATA 主机控制器 IP 核ESS 参考系统采用了 ASICS World Services, LTD. 开发的 SATA 主机控制器 IP 核(图3),ASICS World Services, LTD. 是 Xilinx 的 AllianceCore 合作伙伴(有关 Xilinx AllianceCore 计划的详情,请访问 /cn/alliance)。此 IP 核支持 [参考文件7] 定义的 SATA 链路层和传输层。
RegisterFileRegisterFileWishboneSlaveCRCFIFOsLink LayerScramble8B/10BPHYI/FDescramble10B/8BXAPP716_03_092706图 3:
SATA 主机控制器 IP 框图
注:为了节省可编程逻辑资源,8B/10B 编码器与解码器是在 MGT 中实现的。
SATA 主机控制器 IP 核的简要功能列表如下:•••••••••8 位物理接口,用于连接符合 SAPIS 的串行 ATA PHY。与第一代 SATA (1.5 Gb/s) 完全兼容。用于访问寄存器及 FIFO/DMA 数据传输的 Wishbone 从接口。1 KB(256 个双字)数据 FIFO。实现了映射寄存器模块以及串行 ATA 状态和控制寄存器。与并行 ATA 传统软件兼容。支持 48 位逻辑块地址 (LBA) 的地址功能设置。仅主机模拟(支持一个器件)。8B/10B 编码和解码(在此参考系统中,是在 MGT 中实现)。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 5
ESS 参考设计••••CONT 和数据扰码器,用于降低电磁干扰 (EMI)。CRC 生成和校验。自动插入 HOLD 基元。支持电源管理(部分 (partial) 状态和休眠状态)。R对于本参考系统,SATA IP 核是在 PATA 兼容模式下配置。在此模式下,内核与为并行 ATA 器件编写的驱动程序软件架构保持全面兼容。在 PATA 兼容模式下,此 IP 核支持以下类型的
SATA 帧信息结构 (FIS):••••••主机注册到器件
器件注册到主机
设置器件位 - 器件对主机PIO 设置 - 器件对主机DMA 激活 - 器件对主机数据 - 双向SATA 链路与物理层之间的接口符合 [参考文件8]。MGT 通过某些架构逻辑与此接口兼容。有关 MGT 与 IP 核之间的时钟控制方案的详情,请查阅第 13 页“MGT 时钟控制”。
传输层支持 [参考文件9] 中定义的从 WISHBONE 接口。连接此接口与 CDMAC 上的
LocalLink 接口需要的适配层将在下一节进行描述。
更多技术信息、定价和 SATA IP 核的供货情况,请访问 ASICS World Services, LTD. 网站
;了解更多 Xilinx AllianceCore 计划的详情,请访问
/cn/alliance。Y 型桥接器一个称为 Y 型桥接器的适配器负责桥接 SATA IP 核上的 Wishbone 接口、CDMAC 上的
LocalLink 接口和 DCR 总线。由于 SATA IP 核上没有 DCR 接口,因此数据和控制通路均需经过 Wishbone 接口。根据访问类型不同,Y 型桥接器在 DCR 总线与 LocalLink 之间切换与
Wishbone 接口的连接。Y 型桥接器默认设置为 DCR 总线,允许存取命令、状态和可编程 I/O
(PIO)。
通用异步接收器/发射器 (UART)这是一种基于片上外设总线 (OPB) 的 UART Lite 核。UART 与 DCR 总线相连,以保持远离高速总线,因此使用一个 DCR 到 OPB 的适配器将 UART 连接到 DCR 总线。
RocketIO MGTRocketIO™ MGT 是一种嵌入式多速率串行收发器,能够以 6.25 - 622 Mb/s 的速度运行,支持包括 SATA 在内的多种串行协议。MGT 由物理介质附属子层 (PMA) 和物理编码子层 (PCS) 组成。PMA 包含串行器/解串器 (SERDES)、TX 与 RX 输入/输出缓冲器、时钟发生器和时钟恢复电路。PCS 包含 8B/10B 编码器/解码器、64B/66B 编码器/解码器/扰码器/解扰器以及支持通道绑定和时钟校正的弹性缓冲器。不过,ESS 系统未使用弹性缓冲器,从而缩短基元的响应延迟,以满足 SATA 的要求(详情请见第 20 页“缩短延迟模式”和 [参考文件2])。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 6
功能描述R带外 (OOB) 控制
OOB 控制模块负责管理 ESS 系统和硬盘之间的初始化顺序,如第 6.8.1.1 节 SATA 技术规范中所述。该控制模块还包含一个 OOB 自动校准子模块,负责微调 OOB 检测器和发射器的设置。这一模块并不属于 MGT 功能,而是在可编程逻辑架构中实现的。功能描述概述ESS 参考系统以流行的千兆位串行参考设计 (GSRD) 为基础(详情请参阅 [参考文件4])。ESS 参考系统继承了此高性能系统的所有功能,包括外设与存储器之间不涉及处理器总线的紧密耦合式直接存储器访问 (DMA)。这一点所依据的前提是,存储器子系统往往允许更大的数据带宽,但受限于较慢的处理器子系统总线。所以,这种架构解除了 PPC405 处理器和处理器本地总线 (PLB) 不得不处理有效载荷数据的负担。反之,通过运行 Linux,PPC405 仅处理 TCP/IP 数据包的包头以及有关的高层协议、文件系统和 DMA 描述符等。外设的配置和控制通过 DCR 接口传输,无须使用 PLB。ESS 系统的 DMA 部分由 MPMC 和 CDMAC 两个主要元件组成。MPMC 是一个四端口存储器控制器,用于为 PPC405 和四个 DMA 引擎提供对 DDR SDRAM 的存储器访问。之所以使用
DDR 存储器是因为它能够提供比大多数参与竞争存储器技术更充足的突发数据带宽。尽管设计
MPMC 时考虑的是 DDR,而其实际的实现方法可用于不同的存储技术。
PPC405 处理器是一种哈佛架构的 CPU,为指令和数据端的处理器本地总线提供独立的 PLB 端口。GSRD 使用拴接型 CDMAC 把指令和数据端口连接到 MPMC 的两个端口,将另外两个端口预留给最多四个的 DMA 通道。
以下各部分更详尽地讨论了参考系统的外设和其他功能件的运行。SATA在 DMA 访问的进程中,Y 型桥接器自动将 LocalLink 接口和 Wishbone 接口连接到一起。在这种模式下,处理器不能向 SATA IP 核中的映射模块寄存器发出任何新命令。
在 DMA 访问的进程中,通过 DCR 接口访问 SATA IP 核状态的尝试会导致无效响应。唯一的例外是在 DMA 写过程中:如果检测到来自 SATA IP 核的中断,Y 型桥接器会中止控制权,将其交还给 DCR 总线。这种中断通常是硬盘报告 CRC 错误的结果。这种 DMA 的中止为内核和驱动器提供重新启动或恢复已失败事务的机会。
当发出 DMA 写命令时,硬盘用 DMA_ACTIVATE FIS 予以响应。SATA IP 核进而置位
dma_wr_req 信号,促使 Y 型桥接器切换到 DMA 模式。LocalLink 两端准备就绪后,CDMAC
立即开始向 SATA IP 核传输数据。根据 CDMAC 和/或 SATA IP 核的准备情况,数据流可以暂停。
发出 DMA 读命令后,来自硬盘的相应数据存储在 SATA IP 核的 FIFO 中。当足够的数据积累高出低水位标记后,SATA IP 核将 dma_rd_req 置为高,提示 Y 型桥接器进入 DMA 模式。此时,Y 型桥接器端的 LocalLink 已准备就绪。一旦 CDMAC LocalLink 准备好,便开始传输数据。Y
型桥接器中的一个传输长度计数寄存器记录正在传输的数据量。一旦计数器递减到零,Y 型桥接器的 LocalLink 便发出 EOP 和 EOF 指令以终止传输。
在数据写(PIO 和 DMA 两种模式)过程中,如果 SATA IP 核已将数据发送完毕,它会向硬盘无限发送 HOLD 基元,同时等待更多数据。核并不记录预期的传输字节数,而是继续发送数据,直到 dma_done 信号在两个周期内保持有效并且内部 FIFO 空出。在读数据和写数据过程中,核对来自硬盘的 HOLD 基元做出响应,回复发送 HOLDA 基元并停止数据传输。
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 7
功能描述RY 型桥接器时序图4、图5 和图6 所示为 DMA 读期间 SATA 通道上从 Wishbone 到 LocalLink 接口的数据传输的全过程。当其 FIFO 有数据可读时,SATA IP 核将信号 dma_rd_req 置位(图4)。Y 型桥接器通过置位“帧起始”(SOF) 和“包起始”(SOP) 信号来通知 CDMAC。
注:LocalLink 头不包含有用信息。
clk_sataWishbonedma_donedma_wr_reqdma_rd_reqWB_stb_oWB_ack_iWB_data_i00000000WB_data_o00000000WB_addr_o1fWB_we_oWB_inta_oWB_rty_iWB_err_iWB_cyc_oWB_tga_o7WB_sel_oLocalLink RX0RX0_D00000000RX0_Rem0RX0_SOFRX0_EOFRX0_SOPRX0_EOPRX0_Src_RdyRX0_Dst_RdyCDMAC_INT27 ns27200 ns27400 ns27600 ns27800 nsXAPP716_04_092706004图 4:
DMA 读,传输开始
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 8
功能描述一旦两端都准备就绪,Y 型桥接器便开始从 SATA IP 核的 FIFO 提取数据,每次一个 Dword,然后将其传送到 LocalLink 端。数据传输在进程中可以随时暂停。桥接器的设计目的是容纳
SATA 链路与存储器之间的间歇数据流。图5 所示为 LocalLink 流程控制。Rclk_sataWishbonedma_donedma_wr_reqdma_rd_reqWB_stb_oWB_ack_iWB_data_iWB_data_oWB_addr_oWB_we_oWB_inta_oWB_rty_iWB_err_iWB_cyc_oWB_tga_oWB_sel_oLocalLink RX0RX0_DRX0_RemRX0_SOFRX0_EOFRX0_SOPRX0_EOPRX0_Src_RdyRX0_Dst_RdyCDMAC_INT3901000003a0100003b0100003c0100003d0100003e0100003f013a013b013c013d013e013f4f4 ns35600 ns35650 ns35700 ns35750 nsXAPP716_05_092706图 5:
DMA 读,传输进行中
Y 型桥接器通过一个由软件驱动程序定义的 DCR 寄存器接收整个 DMA 字节长度。由于 SATA
IP 核和 CDMAC 都不能直接提供这些信息,所以有必要进行这一步。Y 型桥接器根据已传输的字节数递减字节计数。一旦计数达到零,如图6 所示,通过置位“包结束”(EOP) 和“帧结XAPP716 (v1.0) 2006 年 10 月 13 日/cn 9
功能描述R束”(EOF) 信号,从而终止 LocalLink 传输。由于所有 SATA 数据都是 32 位 Dword 对齐,所以将 LocalLink 的剩余信号 RX0_Rem 绑定到全零。
注:LocalLink 尾不包含有用信息。
负责通知处理器数据传输结束的是中断信号 WB_inta_o,不是 CDMAC 中断。有关详情,请参阅“中断”部分。LocalLink 帧结束与 WB_inta_o 置位之间的时间不是恒定的,而是根据硬盘运行时的状态变化。
clk_sataWishbonedma_donedma_wr_reqdma_rd_reqWB_stb_oWB_ack_iWB_data_i0000007c007d0000007e0000007fWB_data_o00000000WB_addr_o00WB_we_oWB_inta_oWB_rty_iWB_err_iWB_cyc_oWB_tga_o4WB_sel_ofLocalLink RX07c0000007e0000001f7RX0_D7b0000007d0000007f000000RX0_Rem0RX0_SOFRX0_EOFRX0_SOPRX0_EOPRX0_Src_RdyRX0_Dst_RdyCDMAC_INT45200 ns45300 ns45400 ns45500 ns45600 nsXAPP716_06_092706图 6:
DMA 读,传输结束
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 10
功能描述R图7 和图8 所示为 DMA 写期间 SATA 通道上从 LocalLink 到 Wishbone 接口的数据传输的全过程。在这种情况下,如图7 所示,通过置位 SOF 和 SOP 信号,CDMAC 启动数据传输。
clk_sataWishboneWB_stb_oWB_ack_i0005WB_data_i0000WB_data_o00000000WB_addr_o1fWB_we_oWB_inta_oWB_rty_iWB_err_iWB_inta_oWB_tga_o7WB_sel_odma_donedma_wr_reqdma_rd_reqMAC LocalLink TXc4TX0_D0a007f00TX0_RemTX0_SOFTX0_EOFTX0_SOPTX0_EOPTX0_Src_RdyTX0_Dst_Rdy058600 us58700 us58800 us58900 us59 usXAPP716_07_092706图 7:
DMA 写,传输开始
与 DMA 读不同的是,软件驱动程序不向 Y 型桥接器提供整个字节长度。CDMAC 在最后一个字节发出后终止 LocalLink 事务,因为它知道整个 DMA 传输的长度。图8 所示为 Y 型桥接器在通过置位 SATA IP 核信号 dma_done 接收 EOP,之后结束 LocalLink 到 SATA IP 核的数据传输。然后,SATA IP 核在最后一个字节发出后用 CRC 和 EOF 结束相应的 SATA 帧。由于所有
SATA 数据都是 32 位 Dword 对齐,所以将 LocalLink 的剩余信号 TX0_Rem 绑定到全零。
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 11
功能描述Rclk_sataWishboneWB_stb_oWB_ack_i0000007c0000007d0000007e0000007fWB_data_i007c0000007d0000007e0000007f00000000WB_data_oWB_addr_oWB_we_oWB_inta_oWB_rty_iWB_err_iWB_cyc_oWB_tga_oWB_sel_odma_donedma_wr_reqdma_rd_reqCDMAC_INTMAC LocalLink TX0TX0_DTX0_RemTX0_SOFTX0_EOFTX0_SOPTX0_EOPTX0_Src_RdyTX0_Dst_Rdy000f1f4f077d0000007e0000007f0076200 ns76300 ns76400 nsXAPP716_16_042006图 8:
DMA 写,传输结束
千兆位以太网ESS 参考系统用一个外部 GMII 物理器件在千兆位以太网模式下配置 TEMAC。TEMAC 外设包含两个附加功能,可大大提高基于以太网的系统的性能:传输层(UDP 和 TCP)的校验和卸载以及坏帧或断帧过滤。这两个功能可大大降低工作负荷,因而增加处理器的带宽,使处理器跟上以太网和 SATA 的线速度。有关 TEMAC 的详细信息,请参阅 [参考文件4]。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 12
功能描述R器件控制寄存器 (DCR)
DCR(一种 IBM CoreConnect 总线)提供一种简单接口协议,用于访问各种器件中的控制和状态寄存器。该总线允许寄存器接入各种器件,而不会使高速接口负担过重。因为 DCR 器件通常访问量不大,并且没有高性能要求,所以在整个参考设计中将它们用于错误状态寄存器、中断控制器和器件初始化逻辑等功能。中断通过 DCR 控制一个用于非关键中断的中断控制器。该控制器允许将来自外设的多个边沿敏感中断或电平敏感中断用“或”逻辑连接起来后返回给 CPU。CDMAC 对两个端口使用一个组合中断,这有可能在以太网接口和 SATA 硬盘之间引起不可避免的中断冲突。为避免这种潜在冲突,改用了 SATA IP 核中断。这一技术明确划分 SATA 与以太网事务之间的中断。
时钟控制图9 所示为用数字时钟管理 (DCM) 在设计中生成主时钟的情况。用一个 100MHz 的输入时钟生成主系统时钟,主系统时钟驱动 PLB、MPMC、LocalLink 和片上存储器 (OCM) 组件。DCM
的 CLK90 输出产生一个 100MHz 的时钟,该时钟相移 90°后供 MPMC 使用。CPU 时钟从
PLB 时钟倍频到 300 MHz。
第二个 DCM 用第一个 DCM 的 CLK0 输出生成 125MHz 的时钟,这些时钟具有 GMAC 外设需要的相位关系。100 MHzCLK0External100-MHzOscillatorCLK90CLKINCLKFXDCMPLB, DCR, MPMC, DDR SRAM,LocalLink, UART, SATADDR SDRAM300 MHzPPCCLK0CLKINCLKFXDCM100 MHz125 MHzDDR SDRAM ClockTEMACXAPP716_09_092706图 9:
生成系统时钟
注:MGT 使用一个独立的专用参考时钟。详请请见“MGT 时钟控制”。
MGT 时钟控制模拟时钟/数据恢复 (CDR) 用于提取数据和恢复接收时钟。图10 和图11 所示为 MGT TX 和
RX 时钟控制机制。表1 和表2 所列为设置 PMA/PCS 时钟所需要的一些属性。欲了解详细信息,请参阅 [参考文件2]。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 13
功能描述RTXASYNCDIV[1:0]TXCLKMODE[3]TXCLKMODE[1]Divider/4Divider/51000100110FTTXOUTCLK1TXPCSHCLKOUTTXCLKMODE [0],[2]TXOUTCLK1_USE_SYNCTXOUTDI2SELRef ClkPLLPhaseFrequencyDetectorLockDetect
Charge Pump,Loop Filter,VCO
LockDivide by 8,10, 16, 20,32 or 40
SerialClockDivide by1, 2, 4, 8,16, or 32
Divider/4Divider/1Divider/2Divider/4000110Divider/4Divider/5Divider/16.5Parallel ClockPCSXCLKTREETXOUTCLK2TXPLLNDIVSELParallel DataPISOSerial DataTXPTXNXAPP716_10_092706图 10:
MGT TX 时钟控制
表 1:
GT11 TX 属性(部分列表)
TX 属性TXPLLNDIVSELTXOUTDIV2SELTXASYNCDIVIDETXCLKMODETXOUTCLK1_USE_SYNCTXCLK0_FORCE_PMACLKTX_CLOCK_DIVIDER设置2042'b004'b0100FalseFalse2'b10XAPP716 (v1.0) 2006 年 10 月 13 日/cn 14
功能描述RRXCLKMODE[2]RXASYNCDIV[1:0]Divider/16.5Divider/1Divider/2Divider/4Divider/4Divider/5Divider/4Divider/5RXCLKMODE[5]RXCLKMODE[4],[1]RXRECCLK1_USE_SYNC100100Divider/1, /2, /4, /8, /16DIGRX_FWDCLKDivider/4RXPRXNPLLClock & DataRecovery
SIPORef ClkPhaseFrequencyDetectorLockLockDetect
Charge Pump,Loop Filter,VCODivide by1, 2, 4, 8,16, or 321RXOUTDIV2SELDivide by8, 10, 16,20, 32, or 40RXPLLDIVSEL001RXCLKMODE[0]RXCLKMODE[3]XAPP716_11_092706RXUSRDIVISOR[4:0}00011010FTRXRECCLK1RXPCSHCLKOUT10DigRx4XCLK2XCLK1XCLK100100PCSXLCKTREE
RXRECCLK2RXDATA PARALLELRXMCLK图 11:
MGT RX 时钟控制
表 2:
GT11 RX 属性(部分列表)
RX 属性RXPLLNDIVSELRXOUTDIV2SELRXCLKMODERXUSRDIVISORDIGRX_FWDCLKRXASYNCDIVIDERXRECCLK1_USE_SYNCENABLE_DCDRRXCLK0_FORCE_PMACLKRX_CLOCK_DIVIDER设置2046'b0001112False2'b00FalseFalseFalse2'b10内部 MGT 压控振荡器 (VCO) 设置在 3 GHz 频率下运行。锁相环 (PLL) 电路跟踪并锁定输入数据流。当传输时钟 (150 MHz) 在 TXOUTCLK1 上时,恢复后的时钟 (150 MHz) 出现在
RXRECCLK1 引脚上。MGT 发射接口和接收接口实质上是按其自身的时钟频率运行。数字
CDR(过采样)在此参考设计中尚未经过测试。图12 所示为 SATA IP 核的时钟控制机制。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 15
功能描述R100-MHzSystem Clock150 MHzBUFGRXRECCLK1TXOUTCLK1TXUSRCLK2TXUSRCLKRXUSRCLKRXUSRCLK2TX_DATAREFCLK1RX_DATARXSIGDETTXENOOBLOCKEDBUFG150 MHzCLKINCLK0ClockASIC_CKTBCRBCBUFG75 MHzRX_DATATX_DATADCMCLKFBCLKDVCLKDV_DIVIDE=2OOB ControlRX_SIGNAL_VALIDRX_LOCKEDGT11TXUSRCLK2 = TXUSRCLKRXUSRCLK2 = RXUSRCLKSATA IP Core150-MHzReferenceMGTCLK_NMGTCLK_PSYNCLK1OUTGT11CLK_MGTSYNCLKOUT1EN = ENABLESYNCLKOUT1EN = DISABLEXAPP716_12_092706图 12:
SATA IP 核时钟控制机制
每个 MGT 组由两个共享同一个参考时钟的 MGT 组成。即使只有一个在使用中,这对 MGT 也必须被一起例化。带外信令SATA 规定使用带外 (OOB) 信号进行复位和电源管理。Virtex-4 MGT 为 OOB 支持提供两个端口:••TXENOOB - 如果被置位,无论是在传输什么数据,MGT 差分输出 (TXP/TXN) 都被强制调为共模(额定 125 mV)(图13)。RXSIGDET - 一个低有效信号,它表明检测到一个大于共模阈值的有效信号,该阈值由
MGT 属性 RXCDRLOS 设置(图14)。
TXENOOB 和 RXSIGDET 都不受当前 MGT 状态的影响,无论发射器和/或接收器是否锁定,它们都照样运行。这些信号未寄存,所以延迟较低。
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 16
功能描述RLinkTXENOOBXAPP716_13_092806图 13:
TXENOOB
LinkRXSIGDETXAPP716_14_092806图 14:
RXSIGDET
SATA OOB 信号SATA OOB 信号有两种:COMRESET/COMINIT 和 COMRESET。COMRESET(图15)是突发长度为 160 UI (106.7 ns) 的 ALIGN 基元,在共模电平上由长度为 480 UI (320 ns) 的空闲周期分隔,并且始终由主机发送。COMINIT 本质上和 COMRESET 相同,唯一区别是它由器件发送。COMWAKE(图16)是突发长度为 160 UI (106.7 ns) 的 ALIGN 基元,在共模电平上由长度为 160 UI (106.7 ns) 的空闲周期分隔,由主机和器件二者发送。106.7 nsOOB 和上电/复位在上电和硬件复位期间,主机通过使用 OOB 信号(图17)启动复位序列来命令硬盘准备就绪(阻抗校准、自我诊断等等)并建立通信链接(速度协商、时钟恢复等等)。
Align320 ns106.7 ns106.7 nsAlignAlign图 15:
COMRESET/COMINIT
AlignAlignAlign图 16:
COMWAKE
AlignAlignXAPP716_16_092806XAPP716_15_092806AlignAlignXAPP716 (v1.0) 2006 年 10 月 13 日/cn 17
功能描述RHostPower OnHostPower OffHostCOMRESETHostReleasesCOMRESETHostCOMWAKEHostCalibrateHostReleasesCOMWAKEHostd10.2HostAlignHostDataHost TX(Device RX)DeviceTX (Host RX)DevicePower OffDeviceCOMINITDevicePower OnDeviceReleasesCOMINITDeviceCalibrateDeviceCOMWAKEDeviceAlignDeviceDataXAPP716_17_092806图 17:
OOB 启动序列
下面详细列出 SATA 上电复位序列,如图17([参考文件7])所示:
1.器件断电 - 主机(参考设计)和器件断电。
2.供电 - 主机端信号调节将 TX 和 RX 对拉到共模电压。
3.主机发出 COMRESET。
4.主机释放 COMRESET - 上电复位释放之后,主机立即释放 COMRESET 信号并置总线于休眠状态。
5.器件发出 COMINIT - 当器件(硬盘)检测到 COMRESET 释放时,使用 COMINIT 作为响应。器件可以随时发出一个 COMINIT 来开始通信。
6.主机校准并发出 COMWAKE。
7.器件响应 - 器件在其 RX 对上检测到 COMWAKE 信号并校准发射器(可选)。校准之后,器件发出一个 6 突发 COMWAKE 信号,然后发出 ALIGN 序列的一个连续流。发出 ALIGN
基元后 54.6 us 如果还没有收到来自主机的有效响应(通过检测接收到的 ALIGN 基元而定),器件便进入错误状态。
8.主机锁定 - 检测到 COMWAKE 之后,主机以所支持的最低速率开始发送 D10.2 字符。同时,主机接收器锁定 ALIGN 序列,并在准备就绪之后,按照与接收相同的速度把 ALIGN
序列返回给器件。主机必须如此设计,才能在 54.6 us (2048 Gen1 ALIGN Dwords) 内获得锁定。如果在 880 us (32768 Gen1 dwords) 内没有接收到 ALIGN,主机会重启上电序列 -
这一操作会无限重复下去,直到应用层将其终止。
9.器件锁定 - 器件锁定到 ALIGN 序列,并在准备就绪之后,发出 SYNC 基元表明可以开始正常运行了。
10.接收到三个背对背非 ALIGN 基元后,即建立了通信链接,开始正常运行。OOB 控制模块与 MGT 协同完成上述上电/复位序列。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 18
功能描述R动态串行 ATA OOB 阈值检测器模块Virtex-4 FX 工程样本和生产器件的内置 OOB 检测器有一个已知的问题。负责设置 OOB 检测器阈值的 RXCDRLOS 属性对分辨率和精度不起作用,请参阅 [参考文件5]。[参考文件5] 进一步说明了当 RXCDRLOS 设置为 001010(等同于 100 mVPPSE)来实现可靠的 OOB 检测时,接收器最小差分信号振幅至少为 400 mV 峰到峰单端 (PPSE)(欲了解更多 OOB 检测器的特性描述结果和详情,请参阅第 36 页上的“附录 B:OOB 检测器特性描述数据”)。
尽管有上述问题,只要找到一个对应于所需的 SATA 阈值电平的 RXCDRLOS 属性设置,就可以执行可靠的 OOB 序列检测。换言之,无论 OOB 检测器的精度如何,如果在 RXCDRLOS 范围内存在一个接收数据到 OOB 信号的交叉点,就可能检测到实际的阈值电平。因此,不必依赖于所有给定器件中的全部 MGT 都共有的一个静态 RXCDRLOS 属性,就可以跟踪为每个运行中的 MGT 动态设置的独特属性。设计动态串行 ATA OOB 阈值检测器模块 (DSOTDM) 的目的就是执行这项任务,它已经过测试,能与第 36 页表6 中列出的硬驱动器配合使用。DSOTDM 在通过动态重配置端口 (DRP) 更改 RXCDRLOS 的同时,搜索来自硬盘驱动器 (HDD)
的连续 COMINIT 序列。 然后,此模块确定最佳的 RXCDRLOS 设置,以求获得可靠的 OOB 运行。
通过 RXSIGDET 端口,DSOTDM 依靠来自 HDD 的 COMINIT OOB 序列来确定给定的
RXCDRLOS 设置是否有效。如图18 所示,DSOTDM 的校准过程由一个 COMRESET 序列组成,该序列先于每个询问周期,通过 TXENOOB 端口被发送到 HDD,以产生 COMINIT。根据
SATA 规范,HDD 必须用 COMINIT 对每个 COMRESET 实例做出响应,上述过程正利用了这一点。
Calibration EndsTXDATACOMRESET (Generated From the ACM)50 µs ElapsedCOMRESET (Generated From the ACM)50 µs ElapsedRXDATARXCDRLOSNN+1N+2N+3N+4N+5N+6N+7First Valid RXCDRLOS ValueLast Valid RXCDRLOS ValueX716_018_092806图 18:
DSOTDM 运行
DSOTDM 起初将 RXCDRLOS 设置为零,并等待 50 µs,以期一个有效的 COMINIT 到来。询问周期过后,此模块将 RXCDRLOS 设置增加一,然后重复询问周期。检测到第一个 COMINIT 之后,相应的 RXCDRLOS 电平便被记录下来,表示可检测的 OOB 范围的最低端。然后,此模块继续增加设置,直到不能再找到 COMINIT。找不到 COMMIT 表示可检测的范围的最高端。一个中间点在可检测范围内选定,并编入 MGT。此时校准结束,正常 OOB 启动序列开始。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 19
功能描述另外,当 TXENOOB 被置位时,在 ES4、ES4S 以及硅片的生产步骤 0 中,差分输出引脚
(TXP/TXN) 的峰到峰的振幅可以高于 65 mV。DSOTDM 与 MGT 校准模块协同工作,后者在
OOB 相位期间降低发射器数据驱动器电平,以满足 OOB TX 的要求,并在正常运行时调回到原始电平。
R由于 OOB 检测校准依赖 COMRESET 和 COMINIT 与 HDD 之间的相互作用,所以只能在 SATA
应用中使用。扩展频谱时钟控制
SATA 采用扩展频谱时钟控制 (Spread Spectrum Clocking, SSC) 来减少电磁发射,以便于与
FCC B 级相符。简单说来,SSC 通过系统化地调制参考时钟,来在任何给定频率上降低 EMI。调制频率 fM 为 30-33 KHz。额定频率的下扩展 (δ) 是 0.5% (图19)。FrequencyfNOMfNOMTime0.5/fm1/fmXAPP716_19_100206图 19:
扩展频谱调制图解
只需接收器便可支持 SSC,且对发射器没有强制要求。Virtex-4 MGT 接收器的设计初衷,就是要按照 SATA 规范来支持 SSC。此参考设计在发射器端不实现 SSC。参阅 [参考文件7] 中
6.6.4.5 部分获取更多信息。缩短延迟模式ESS 系统和硬盘通过在彼此间发送 HOLD 基元来控制数据流。接收到 HOLD 基元后,对方必须发回 HOLDA 基元予以确认并停止数据流。从 HOLD 基元的 MSB 置于连接电缆上的时间到
HOLDA 的 MSB 置于电缆上的时间,两者之间允许的最大延迟不得超过 20 Dword 符号时间
(533.33 ns)。为达到此项指标,MGT 必须配置成缩短延迟模式 (RLM)。在 RLM 模式中,因绕过 TX 和 RX 缓冲器,从而缩短了发射器和接收器之间的整体延迟。 在 RLM 模式下,MGT 发射器和接收器之间的整体延迟通常低于允许的最高限度,但偶尔也会超出。然而,PPC405 软件驱动有内置的功能,可以解决这一问题。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 20
系统仿真R复位和同步由于 ESS 系统以缩短延迟模式运行,它有一个控制发射器/接收器复位信号和时钟同步的模块,如 [参考文件2] 中缩短延迟模式部分所述。
SATA 规范要求接收器在 OOB 启动序列结束后 54.6 µs 内锁定。由于上面提到的初始复位和同步,MGT 接收器需要比允许时间更长的时间来实现锁定。为了解决这一问题,当接收器尚在尝试稳定到锁定状态时,OOB 控制器就向 HDD 控制器发出信号,表明锁定就绪。换句话说,HDD 稍稍提前于系统进入运行就绪状态。然而,这并不会引起同步问题;发出第一个运行请求后,HDD 会无限等待系统发出传输成功确认。通常,这是一个包含 ATA 初始化签名的器件注册到主机 FIS (DeviceToHost Register FIS)。这使系统可以在稍后很短的时间里锁定并做好运行准备。系统仿真由于没有全面硬盘模型可用,SATA 主机 IP 上的链路层模块在器件端被例化。把这个模块和一个 MGT 模块结合起来形成一个原始 HDD 接口,以帮助系统仿真(图20)。此测试平台为器件端链路层后端提供激励。一个简单的测试软件生成基本的必要命令序列;然而,此测试并不仿真操作系统或驱动程序。整个设置说明了 DMA 通过 SATA IP 核发送和接收的传输过程。由于 Verilog 信号水平上没有共模定义,所以模拟 OOB 信号来支持仿真。例如,当 TXENOOB
被置位后,在实际硬件中 MGT TXP 和 TXN 引脚都应被抑制到共模电平;但是在仿真时,它们都强制成高。同样,当 RXP 和 RXN 引脚都是高时,RXSIGDET 被置位。否则,信号保持低。仿真目录位于
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 21
综合/实现RHostDeviceESSSystemMGTMGTSATALinkLayerTestbenchXAPP716_20_092806图 20:
ESS 参考系统测试平台
要运行仿真,请调用 simulation/behavioral 目录中的 run_ 启动仿真。此批处理文件负责启动 MTI SE 仿真器,编译源代码,显示几个波形,并执行仿真。为减少仿真运行时间,对部分初始化过程进行了加速。SATA_ 中的 SIM 属性会启用此功能。DDR 存储器初始化超时例外。DDR 具有 40,000 个初始启动时间周期。在 MHS
文件的 DDR 存储器控制器部分,用参数表示如下:
# Use 0x400 for simulation PARAMETER C_START_MAX = 0x40000用户需将 C_START_MAX 的值减小到 0x400 来加速 MHS 文件中的仿真。开始执行前,此参数必须恢复到默认设置。仿真中的 MGT 参考时钟周期必须设置成 6.66 ns,以避免在 Swift 模型中产生圆整问题。否则,MGT 将无法正确发送和接收数据。
综合/实现ESS 参考系统在 ISE 8.2 和 EDK 8.2 中实现,所用工具为 Xilinx 综合工具 (XST)。实现目录位于
软件/驱动程序本参考设计发布版文件中不包含 SATA IP 核的网表或源代码。可从 ASICS World Services,
LTD. 网站 () 获得许可 SATA IP 核。ESS 系统的其他组件属于 GSRD。此项目中包括一个面向 ML405 评估平台的完全正常运行的 ESS 系统比特流。但此比特流只用于演示目的,下载到板上十分钟后就会锁定系统。请参阅“应用示例”了解参考演示。
R建议将 MGTCLK_P、MGTCLK_N、GT11CLK_MGT 和 GT11 基元位置锁定于特定的相邻位置上。例如,下列 UCF 约束用于在 ML405 rev. B 开发板上实现 ESS 参考系统:NET MGTCLK_P LOC = K1 ; # MGTCLK113NET MGTCLK_N LOC = L1 ;INST ml405_sata6_0/ml405_sata6_0/GT11_SATA6_inst/GT11_1000X_B LOC =
GT11_X1Y2; #FX20 host1INST ml405_sata6_0/ml405_sata6_0/GT11_SATA6_inst/GT11_1000X_A LOC =GT11_X1Y3; #FX20 host1INST ml405_sata6_0/ml405_sata6_0/GT11CLK_MGT_INST LOC = GT11CLK_X1Y1;#FX20该 UCF 约束文件包含在
串行 ATA 主机适配器软件接口PATA 器件的软件接口定义为一个寄存器组,称为“命令与控制模块寄存器组”。在 PATA 器件中,这些寄存器通常位于器件上,可通过并行接口寻址。因为不可能通过串行附件直接访问,所以通过给出一个相似的寄存器组作为软件接口,SATA 主机适配器可随意模拟并行
ATA。这种寄存器组称为“映射命令与控制模块”,可以通过适配器到主机系统的附件直接访问,从而与为并行 ATA 器件编写的驱动程序软件保持全面兼容。有关串行 ATA 主机适配器中并行模拟的详情,请参阅 [参考文件6]。ASICS World Services, LTD. 的主机适配器 IP 核支持并行模拟。表3 所列为映射命令与控制模块对此核的地址映射。表 3:
映射命令与控制模块寄存器
名称数据错误特性扇区数LBA 低LBA 中LBA 高器件状态命令访问R/WR/OW/OR/WR/WR/WR/WR/WR/OW/O位宽描述数据端口错误详情命令参数待传输的扇区数逻辑块寻址逻辑块寻址逻辑块寻址器件选择器件状态(清除中断)待执行的命令偏移0x0080x0090x0090x00A0x00B0x00C0x00D0x00E0x00F0x00F地址0x2080x2090x2090x20A0x20B0x20C0x20D0x20E0x20F0x20FXAPP716 (v1.0) 2006 年 10 月 13 日/cn 23
软件/驱动程序R表 3:
映射命令与控制模块寄存器 (续表)
名称交替状态器件控制访问R/OW/O位宽88描述器件状态器件控制偏移0x0160x016地址0x2160x216“偏移”栏表示每一个寄存器的 DCR 基址偏移,“地址”栏表示在所提供的参考设计中实现的相应的绝对 DCR 地址。CDMAC 软件接口ESS 通过 MPMC 使用 CDMAC 执行 DMA 操作。CDMAC 软件接口是一个 DCR 寄存器组加上
MPMC 附属存储器中储存的一个或多个缓冲器描述符。每个缓冲器描述符对应一个将用 DMA
传输的连续存储段。每个描述符都含有一个指针指向下一个描述符,还含有一些控制字段用来定义中断并控制处理每个缓冲器描述符的行为。这样,就可以用一个缓冲器描述符链表在一事务的任意个片段上完成一个 scatter-gather DMA 操作。要建立 DMA 事务,软件首先建立由一个或多个缓冲器描述符组成的列表,然后通过 DCR 接口将描述符链中第一个描述符的地址传送给 CDMAC。有关软件与 CDMAC 和 CDMAC 缓冲器描述符接口的详情,请参阅[参考文件3]。
有关 CDMAC 缓冲器描述符的软件驱动程序表示法的详情,请参阅 [参考文件4]。ESS SATA PIO 操作ATA PIO 数据操作不使用 DMA。主机处理器读或写整个事务中的每个数据字。这些是低性能操作,但一般很容易在软件中实现。ESS 硬件通过 DCR 接口支持所有 PIO 操作。有关 PIO 操作以及在 PIO 模式下操作的命令列表的详情,请参阅 [参考文件6]。ESS SATA DMA 操作ATA DMA 数据操作使用独立的 DMA 硬件读或写整个事务中的每个数据字。这些是高性能操作,但需要额外的硬件支持,而且在软件中实现较为复杂,在支持 scatter-gather DMA 时尤其如此。ESS 硬件通过 MPMC 和 CDMAC 支持所有 DMA 操作,包括 scatter-gather DMA。
有关 DMA 操作以及在 DMA 模式下操作的命令列表的详情,请参阅 [参考文件6]。ESS SATA 非数据操作XAPP716 (v1.0) 2006 年 10 月 13 日/cn 24
软件/驱动程序有些 ATA 操作(如电源管理中涉及的操作)根本不涉及数据传输。这些操作一般可以快速而简单地在软件中实现。ESS 通过 DCR 接口支持所有非数据操作。有关非数据操作以及在此模式下操作的命令列表的详情,请参阅 [参考文件6]。RESS 上的 LinuxXAPP536 中所述连接 ML403 的 Linux 端口已经升级为支持 ML405 上的 ESS。参考设计中包括预编译的内核映像、串行 ATA 驱动程序源代码和用于构建新内核的实用工具。由于主机适配器模拟并行 ATA 接口,SATA 主控制器通过主流 Linux 2.4 发行版本中包括的标准增强型 IDE 磁盘驱动程序连接到块 I/O 层。
随 Linux 发行的 IDE 驱动程序的架构将任务划分为系统无关的高层 ATA 操作和系统相关的低层操作。这种划分允许各种器件、总线附件和 DMA 硬件能够共享一个公共的高层驱动程序。低层器件驱动程序只须定义如何与所需系统上的特定器件通信,并且向高层驱动程序注册该器件。在 ESS 的情况下,低层 SATA 驱动程序按以下方式连接到 IDE 磁盘驱动程序:•••••定义映射命令模块的位置和地址映射指示 SATA 器件正在使用哪个 IRQ提供通过 DCR 附件与“映射命令与控制模块”寄存器组通信的例程提供在 PIO 操作过程中执行数据传输的例程提供将系统 DMA 请求转换到 CDMAC 架构,并将 CDMAC 用于 DMA 操作的例程高层驱动程序管理用于连接块 I/O 层的接口,并且执行高层 ATA 操作。参考设计中包括一个低层驱动程序。此驱动程序的作用如图21 所示:Standard Linux 2.4 ATA/IDE DriverFeature Support InformationRegister Address MapIRQDMA/PIO RoutinesPIORequestRegister I/ORequestDMARequestInitializationRoutinePIORoutineDCR I/ORoutineDMARoutineESS Adapter DriverSATAHostDCR I/OCDMACXAPP716_21_092806图 21:
串行 ATA 低层器件驱动程序的作用
为在 Linux 中支持 SATA DMA 事务,使用了一个静态分配的 CDMAC 缓冲器描述符链表。尽管
ATA 器件有双向数据流,但在某给定时间内只能有一个事务处于活动状态,所以一条描述符链既用于读操作又用于写操作。在特定事务过程中,只有头尾两个描述符的读写状态字段略有不同,所以在这种实现中系统开销最小。该描述符链如图22 所示。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 25
软件/驱动程序RLinux 系统将给定 DMA 事务中的 scatter-gather 片段数限制到 128。IDE 发行版本中的许多低层驱动程序都允许将最多 256 个片段作为安全网,ESS 参考设计中的驱动程序默认遵守这一规定。Next DescriptorDataData Length
StatusUnusedUnused…Status controls whetheroperation is read or r-GatherData Segment #1Next DescriptorDataData Length
StatusUnusedUnused…Scatter-GatherData Segment #2…Next DescriptorDataData Length
StatusUnusedUnused…256 TotalDescriptorsStatus and Next Descriptorindicate end of 716_22_092806LastScatter-GatherData Segment图 22:
低层驱动程序中的 DMA 描述符链
块 I/O 层通过上层和下层驱动程序将 Linux 内核连接到器件。连接到内核后,数据便可以在整个系统中使用,特别是能为网络层所用,这样,数据就可以通过系统从千兆位以太网传输到
SATA,反之亦然。图23 所示为千兆位以太网与 SATA 桥接应用中的 Linux 操作系统、外设连接和通过系统的数据流。User ApplicationsSystem CallsLinux KernelDevice DriversPower PC405DDR2HostTEMACUARTMGTRequired PathOptional PathPHYConsoleHDDXAPP716_23_092806图 23:
ESS 上的 Linux 数据流
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 26
利用率和性能R从硬件角度看,以太网与串行 ATA 接口之间的最短数据路径是经过 CDMAC 到达外设和 DDR2
存储器。这是必备路径,在图23 中显示为一系列实线箭头。另外,在执行发送操作或写操作之前,内核可以用处理器将数据从用于执行读操作或接收操作的缓冲器复制到另一缓冲器。这些路径用虚线箭头表示,可以包括一个或多个向其他内核子系统、文件系统缓冲器以及用户缓冲器或库缓冲器传送的副本。要达到最高性能,编写软件时,应尽量减少处理器副本数量。有关千兆位以太网外设及其 Linux 器件驱动程序的信息,请参阅 [参考文件4]。开始使用 Linux要开始将 Linux 用于 ESS,请使用参考设计中包含的预编译的演示比特流及内核映像。详情请参阅“应用示例”部分。在 Linux 中设置串行 ATA 器件尽管所提供的驱动程序可以提供对 SATA 器件的访问,但连接硬盘的原始接口却不大好用。为了获得 Linux 系统中预期的访问类型,必须正确配置硬盘。首先,硬盘必须分区,并且至少要在其中一个分区上建立文件系统。另外,可增加一个交换分区以增强系统性能。详情请参阅“在 Linux 下设置串行 ATA 器件”部分。在 Linux 中使用串行 ATA 器件正确配置硬盘后,安装文件系统,然后可以选择激活交换空间。Linux 内核经过编译,将硬盘用于根文件系统,并且自动激活交换空间。参考设计中包括的一个预编译的演示内核映像将根文件系统安装到硬盘上。详情请参阅“在 Linux 下使用串行 ATA 器件”部分。在 Linux 中将文件系统安装到硬盘后,任何访问文件系统的用户应用程序都可以利用串行 ATA
存储的优点。由于包含了千兆位以太网支持,执行 FTP、HTTP 和 TELNET 等标准协议的传统用户级客户机和服务器可立即获得将千兆位以太网桥接到串行 ATA 的能力。另外,任何使用普通库调用和系统调用来访问网络和文件系统的定制用户软件也都能获得相同的能力。在 Linux 中定制内核有关生成内核补丁和建立新内核的详情,请参阅 [参考文件4]。除了实际生成补丁必须使用
ESS 包括的脚本外,本参考设计中使用的过程与 [参考文件4] 中所述的过程完全相同。在 ESS
和 [参考文件4] 中,此脚本都位于同样的子目录中。利用率和性能我们在 XC4VFXFF672-10C 器件中实现了 ESS 参考系统,其主系统时钟运行频率为 100 Mhz。表4 概述了其资源利用率。表 4:
ESS 参考系统利用率
资源6839 个 Slice103 个 I/O36 个 Block RAMXC4VFX20FF672 的利用率80%32%52%表5 详述了 ESS 参考系统使用所选硬盘时的性能,所用性能基准测试工具是
Bonnie++(v1.03)。该工具套件旨在对硬盘驱动器和文件系统的性能进行大量的简单测试。Bonnie++ 是共享软件,可从以下网址下载:/bonnie++/XAPP716 (v1.0) 2006 年 10 月 13 日/cn 27
应用示例R有关基准测试工具的详情,请查阅项目目录下的 Bonnie++ 自述文件。表 5:
文件系统的存取性能
驱动器WD360
Raptor™每字符 (KB/s)1,639连续创建创建 (/sec)148Maxtor
DiamondMAX每字符 (KB/s)1,646连续创建创建 (/sec)147读n/a模块 (KB/s)19,798删除 (/sec)7039重写 (KB/s)15,021读n/a模块 (KB/s)20,177删除 (/sec)7001重写 (KB/s)15,894连续输出(写)模块 (KB/s)16,680重写 (KB/s)14,307连续输入(读)每字符 (KB/s)1,732随机创建创建 (/sec)149每字符 (KB/s)1,731随机创建创建 (/sec)149每字符 (KB/s)1,722随机创建读n/a模块 (KB/s)19,398删除 (/sec)7221重写 (KB/s)15,229创建 (/sec)154每字符 (KB/s)1,733随机创建读n/a模块 (KB/s)19,766删除 (/sec)6926重写 (KB/s)14,671创建 (/sec)149每字符 (KB/s)1,727随机创建读n/a删除 (/sec)7226创建 (/sec)154读n/a删除 (/sec)读n/a模块 (KB/s)45,306删除 (/sec)读n/a模块 (KB/s)44,872删除 (/sec)736查找 (KB/s)163.3读n/a模块 (KB/s)45,809删除 (/sec)683查找 (KB/s)152.7读n/a模块 (KB/s)47,213删除 (/sec)675查找 (KB/s)154.6模块 (KB/s)44,645随机
查找 (KB/s)218.1Seagate
Barracuda每字符 (KB/s)1,654连续创建创建 (/sec)151Western Digital
Caviar® SE每字符 (KB/s)1,649连续创建创建 (/sec)147678查找 (KB/s)170.6Hitachi
Deskstar™每字符 (KB/s)1,650连续创建创建 (/sec)151740以太网性能测试使用的是实用工具 Netperf。有关 Netperf 的详细信息,请访问 Netperf 网站:/应用示例项目中包括演示用的预编译的比特流及内核映像。内核试运行十分钟,然后系统锁定。重启系统需要重新配置。以下是设置基本 FTP 和 HTTP 服务器所需的硬件项目列表:•••ML405 Rev. B 开发板6.5A 外置电源第一代 SATA 硬盘驱动器/cn 28XAPP716 (v1.0) 2006 年 10 月 13 日
应用示例•••••SATA 数据电缆Cat 5 或 Cat 5e 以太网电缆250W ATX 电源平台电缆 USB9 针串行零调制解调器电缆R项目安装请按以下步骤安装所需设计库组件:
1.访问 /cn/esp/wired/optical/xlnx_net/gsrd_2.将 GSRD 项目的 ZIP 文件(仅 gsrd_7_1_ 文件)下载并解压到 EDK 的安装目录。首次访问该文件时需要用户注册。3.将 XPS 7.1i SP2 补丁 (mpmc_7_1_) 下载并解压到 EDK 的安装目录。4.在 XPS GUI 下,转到“项目 (Project)”菜单下的“项目选项 (Project Option)”。选择“Device and Repository”标签。在“高级选项 (Advance Options)”下的“Peripheral
Repository”中指定安装 GSRD 库的路径。此路径应设置为 $XILINX_EDKgsrdedk_libs。5.请从 XAPP716 所在的 Xilinx 应用指南页面下载 ESS 参考系统项目。其中有三个独立的 ZIP
文件: - 该文件中有整个 EDK 项目,包括源代码。将其解压到
- 该文件包含有几个内核启动映像。应将其解压到同一级
设置硬件请按以下步骤设置硬件:1.将 6.5A 开关电源连接到 ML405 电路板。2.按供应商提供的说明将 ATX 电源连接到 SATA 硬盘。ATX 电源的主板连接器必须跳接,以保证在断开 ATX 电源时仍有供电。通过跳接电源连接器上的引脚 14 和 13 实现引脚 (DS-ON) 接地。3.将 SATA 电缆牢固地连接到 SATA 硬盘和 ML405 电路板上的 SATA 主机 1 接插件。4.将以太网线的一端连接到 ML405 以太网 RJ-45 接插件,另一端连接到千兆位以太网适配器或交换机。5.将串行零调制解调器电缆连接在 ML405 串行端口和用户计算机之间。6.将平台电缆 USB 连接在 ML405 调试端口和用户计算机之间。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 29
应用示例7.打开 ATX 电源,然后打开 ML405 的主电源开关。硬盘在加电后应开始起转;不过,如果将其配置为上电待机模式,则硬盘不会起转。
硬件设置至此完毕。请转到下一部分,按照说明在 SATA 硬盘上建立一个文件系统。
R用 Ramdisk 启动 Linux1.根据以上硬件设置部分的描述设置电路板。
2.打开 Windows 浏览器并浏览解压缩后的参考设计文件中的 demo 子目录。3.打开一个终端模拟器:erminal:双击 linux_ 打开 HyperTerminal 对话框。根据需要改变 COM 端口设置。rm Pro:此目录中还包含一个用于 TeraTerm Pro 的 文件。此
INI 文件可从 TeraTerm Pro 处打开,或复制到 TeraTerm Pro 安装目录成为默认设置。根据需要改变 COM 端口设置。:如手动配置终端模拟器,请使用以下设置:波特率:数据:停止:384008 位1 位奇偶校验:无流程控制:无4.浏览解压后的参考设计位置下的 ml405_ess 子目录。5.用文本编辑器打开 文件。6.设置 IP 地址:a.如要求静态 IP 地址,请按所示取消注释 中相应的行(“#”是注释标志):
#
…#dow ../kernel/#dow ../kernel/ ../kernel/#dow ../kernel/#
…b.如要求动态 IP 地址(通过 DHCP),请按所示取消注释 中相应的行(“#”是注释标志):#
…#dow ../kernel/#dow ../kernel/#dow ../kernel/ ../kernel/#
…7.打开一个 Xilinx Cygwin 外壳 (shell) 并浏览项目目录下的 ml405_ess 子目录。
8.从 Xilinx Cygwin 外壳下载比特流到 ML405 的 Virtex-4 FX-20 器件上:$ impact -batch etc/405 评估平台右下角 DONE LED 旁的三个 LED 应亮起,表示启动成功完成。如下是这三个 LED 的定义列表:XAPP716 (v1.0) 2006 年 10 月 13 日/cn 30
应用示例RLED(DS5)
LED(DS4):SATA 连接成功并准备运行:MGT 接收器实现信号锁定LED(DS15):MGT 发射器锁定并且 DSOTDM 完成了 OOB 初始化另外,LED(DS6) 是硬盘活动标志,在硬盘传输进行时亮起。10.从 Xilinx Cygwin 外壳上下载内核映像:$ xmd -xmp 11.下载结束后,可在终端观察 Linux OS 的启动:loaded at:00400000 00A8C1E0board data at:00A89138 00A89150relocated to:004052F0 00405308zimage at:initrd at:avail ram:004058BB 004A8943004A9000 00A88D8400A8D000 04000000Linux/PPC load:
# ls -l /dev/discs/disc0/discbrw------- 1 root root 3, 0 Jan 1 1970
/dev/discs/disc0/disc在 Linux 下设置串行 ATA 器件1.请确认磁盘上无任何内容,因为其上的所有数据都将丢失。如果磁盘已经分区,要建立一个新文件系统和/或交换空间,请执行步骤11。
2.按第 30 页的“用 Ramdisk 启动 Linux”中所述启动内核。3.按 Enter 键登录。4.运行磁盘上的 fdisk 应用程序:# fdisk /dev/discs/disc0/discThe number of cylinders for this disk is set to is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other , DOS FDISK, OS/2 FDISK)Command (m for help):5.验证磁盘上不存在分区(粗体表示用户输入):Command (m for help): pXAPP716 (v1.0) 2006 年 10 月 13 日/cn 31
应用示例RDisk /dev/discs/disc0/disc: 160.0 GB, 16 bytes255 heads, 63 sectors/track, 19457 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id SystemCommand (m for help):6.从所示的默认位置开始创建一个新的 10 GB 分区(粗体表示用户输入):Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 1First cylinder (1-19457, default 1):
+10GCommand (m for help):7.如果不要求交换分区,请执行步骤11。从所示的默认位置开始创建一个新的 2 GB 分区(粗体表示用户输入):Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 2First cylinder (1-19457, default 1):
应用示例10.用 mkswap 应用程序创建一个交换空间:# mkswap /dev/discs/disc0/part2Setting up swapspace version 1, size = 2006962176 bytesR11.用 mke2fs 应用程序在分区 1 上创建一个 ext3“日志”文件系统:# mke2fs -j /dev/discs/disc0/part1mke2fs 1.38 (30-Jun-2005)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)1224000 inodes, 2443880 blocks122194 blocks (5.00%) reserved for the super userFirst data block=075 block groups32768 blocks per group, 32768 fragments per group16320 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Writing inode tables: doneCreating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 34 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.在 Linux 下使用串行 ATA 器件1.按第 30 页的“用 Ramdisk 启动 Linux”中所述启动内核。2.按第 33 页的“在 Linux 下使用串行 ATA 器件”中所述,对磁盘分区并创建交换空间和文件系统。3.用 swapon 应用程序激活交换空间:# swapon /dev/discs/disc0/part2Adding Swap: 1959920k swap-space (priority -1)4.为 ext3 文件系统创建一个安装点:$ mkdir /tmp/sata5.将文件系统装入 /tmp/sata 目录:# mount /dev/discs/disc0/part1 /tmp/sata/kjournald starting. Commit interval 5 secondsEXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journalEXT3-fs: mounted filesystem with ordered data mode.现在可通过访问根目录 /tmp/sata 下的普通文件系统来访问串行 ATA 器件。6.用 ifconfig 应用程序得到系统 IP 地址(所需 IP 地址用粗体表示):XAPP716 (v1.0) 2006 年 10 月 13 日/cn 33
应用示例R$ ifconfigeth0 Link encap:Ethernet HWaddr 00:0A:35:00:22:00 inet addr:149.199.53.84 Bcast:149.199.55.255 Mask:255.255.252.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:39803 errors:0 dropped:0 overruns:0 frame:0 TX packets:4466 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:10196343 (9.7 Mb) TX bytes:697820 (681.4 Kb) Interrupt:28lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1604 (1.5 Kb) TX bytes:1604 (1.5 Kb)7.在 /tmp/sata 目录下创建一个 pub 目录:# mkdir /tmp/sata/pub8.将 pub 设置成全局可读/可写:$ chmod 777 /tmp/sata/pub9.将 复制到 /tmp/sata/pub:# ftpget -u
/tmp/sata/pub/ pub/10.用日期应用程序将系统日期和时间设置成当前值:# date Mon Sep 18 11:03:00 UTC 200611.用 tar 应用程序将文件复制到串行 ATA 器件:# tar -zxf /tmp/sata/pub/ -C /tmp/sata/12.如果想使用静态 IP,请禁用 DHCP daemon:# rm -f /tmp/sata/etc/rc.d/rcS.d/S42dhcpcd13.卸载串行 ATA 驱动:# umount /tmp/sata/14.编辑 用于下载为串行 ATA 器件上的根文件系统而配置的内核复件:a.如要求静态 IP 地址,请按所示取消注释 中相应的行(“#”是注释标志):#
…dow ../kernel/#dow ../kernel/#dow ../kernel/#dow ../kernel/#
…b.如要求动态 IP 地址(通过 DHCP),请按所示取消注释 中相应的行(“#”是注释标志):#
…#dow ../kernel/ ../kernel/#dow ../kernel/#dow ../kernel/#
…XAPP716 (v1.0) 2006 年 10 月 13 日/cn 34
结论R15.按第 30 页的“用 Ramdisk 启动 Linux”中所述下载新内核。该内核/文件系统组合会自动启动 FTP 和网络服务器,可用网络浏览器访问。要查看一个完整启动过程的示例(部分细节可能不同),请参见“附录 E: 控制台输出”。loaded at:00400000 004AC1E0board data at:004A9138 004A9150relocated to:00405300 00405318zimage at:avail ram:004058CB 004A866D004AD000 04000000Linux/PPC load:
Virtex-4 架构先进的嵌入式特性及灵活性,设计人员可以迅速实现高性能系统,具备高吞吐量外设和可靠的操作系统。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 35
附录 A:兼容硬盘驱动器R附录 A:兼容硬盘驱动器虽然我们竭力确保 ESS 系统的可靠性,但该系统尚未获得任何 SATA 管理机构的确认或验证。此系统仅经过有限几个 SATA HDD 的测试(表6)。表 6:
用 ESS 参考设计测试过的驱动器
制造商和驱动器品牌Maxtor DiamondMax 10
Western Digital Caviar® SE
Western Digital Raptor
Seagate BarracudaHitachi Deskstar™密度100GB120GB36GB160GB250GB6L100M0WD1200JD-00HBB0WD360GD-00FLA2ST3160827ASHDS722525VLSA80型号附录 B:OOB
检测器特性描述数据在 OOB 检测器阈值特性描述中使用了具有代表性的硅片材料。选定器件上的每个 Virtex-4 FX
MGT 需要按数据手册中推荐的最低和最高的温度和电压所进行的测试。图24 中记录并汇编了一千多个数据样本。此图的 X 轴表示用户自定义的 RXCDRLOS 设置,该设置决定着 OOB 阈值。Y 轴表示在 mV 峰到峰差分中实测到的 OOB 阈值。预期的 OOB 检测阈值斜度表示
RXCDRLOS 和阈值之间的预期关系。颜色模块表示在给定 RXCDRLOS 设置下的实际阈值分布。中间的灰色区域是最坏情况下 RX 数据和 OOB 信号之间的摆幅差异。从理论上讲,当
RXCDRLOS 设置为约 13 (260 mVppd) 时,所有实测值应在灰色区域中。在此种情况下,RXCDRLOS 最佳设置可以更高或更低,这取决于个别 MGT。根据这一特性,DSOTDM 对整个
RXCDRLOS 范围进行扫描,搜索最佳阈值。XAPP716 (v1.0) 2006 年 10 月 13 日/cn 36
附录 B:OOB 检测器特性描述数据RRXCDRLOSmVppd62Expected OOB Detect ThresholdMaximum OOB SwingWorst Case SATARX Data-OOBCrossover RegionMaximum RX Data Swing> 100 SamplesBetween 30 to 100 SamplesBetween 1 to 30 SamplesXAPP716_24_092806图 24:
OOB 特性描述数据
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 37
附录 C: 已知问题R附录 C:已知问题1.在 DMA 写传输期间,ESS 参考系统会在允许的 20 Dword 时间中偶尔未对 HOLD 基元做出响应,这取决于所用硬盘的类型。发生这种情况时,结果是硬盘上报告 CRC 错误,并将错误记录在内核日志 (/var/log/) 中,类似如下:hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }hda: dma_intr: error=0x84 { DriveStatusError BadCRC }然而,一旦驱动程序检测出此错误,参考系统会重试 DMA 写多达三次。如果写操作仍旧失败,驱动程序会转换至 PIO 模式,该模式总是能成功完成数据传输。换句话说,流量控制引起的延迟违例造成的结果不会导致数据丢失,CRC 警告可以忽略。
2.操作系统在启动过程中可能偶尔会检测不到 HDD。在启动过程中可从控制台看到这一问题。用户在成功检测到 HDD 后应看到以下内容:…[descriptor_init]Recv V:c6000000, P:2d8000[descriptor_init]Send V:c6000c80, P:2d8c80eth0: Xilinx EMAC #0 at 0x00000140 , irq=28Xilinx Serial ATA (SATA) adapterhda: ST3160827AS, ATA DISK driveide0 at 0x208-0x20f,0x216 on irq 30hda: 312581808 sectors (160042 MB) w/8192KiB Cache, CHS=19457/255/63Partition check: /dev/ide/host0/bus0/target0/lun0: p1 p2NET4: Linux TCP/IP 1.0 for NET4.0
…请注意,HDD 型号、大小和分区会被报告。在不成功的情况下,用户会看到以下内容:…[descriptor_init]Recv V:c6000000, P:2d8000[descriptor_init]Send V:c6000c80, P:2d8c80eth0: Xilinx EMAC #0 at 0x00000140 , irq=28Xilinx Serial ATA (SATA) adapterNET4: Linux TCP/IP 1.0 for NET4.0…因为操作系统没有检测到 HDD,所以没有 HDD 相关信息可报告。用户只需再次下载内核重启系统就可以解决此问题。
3.以太网链接与 SATA 通道同时运行(例如,在 FTP 传输期间)时有可能进入死锁状态。这是由于两个通道之间的竞争而导致。但在内部测试中,从未观察到这一现象。
附录 D:其他信息1.本参考系统仅在使用 ES4 硅片的 ML405 产品平台上进行过测试。ML405 平台的早期版本不支持 ESS 参考系统。
2.建议对任何 MGT 操作都使用 156 MHz 或更高频率的参考时钟。但是,ML405 平台对
SATA MGT 馈送一个 150 MHz 的参考时钟。虽然它在内部测试器件不影响可靠性,但强烈建议用户按照所有推荐的 MGT 指导进行板设计。3.虽然 Virtex-4 嵌入式三态以太网 MAC 可以支持 10/100/1000 Mb/s 的运行,但由于软件驱动程序设置的限制,ESS 参考系统仅支持 1 Gb/s 的运行。建议通过千兆位以太网开关来连接 ML405 以太网端口,以建立 10/100 Mb/s 的连接。
4.本参考系统假设在上电前连接到一个正常运行的 SATA 硬盘,可迅速建立链接。然而,如果硬盘运行不正常或不存在,建议在设计中加入适当的校准模块。校准模块将 MGT 置于环回模式中,以解决潜在的负偏压温度不稳定性 (negative-bias temperature instability,
XAPP716 (v1.0) 2006 年 10 月 13 日/cn 38
附录 E: 控制台输出RNBTI) 问题。这一原因还使得任何处活动但未被使用的 MGT 都应连上校准模块来解决
NBTI 问题。请参见 [参考文件5] 或访问 /cn/support 了解校准模块和 MGT
NBTI 问题的详情。5.板上以太网器件在插入交叉电缆时会自动置换发送与接收对。然而,用户在进行连接前需要了解局域网的配置;有些开关不允许交叉连接,因为交叉连接可能导致死链接。
6.通过 FTP 上传或下载文件到 Windows XP,文件大小不得超过 2 GB。这完全是由于
Windows XP 对传输文件的大小加以限制。用户应考虑将大文件分成若干小于 2 GB 文件,再分别传输。
附录 E:控制台输出这是一次常见的成功启动在控制台上的输出:loaded at:board data at:relocated to:zimage at:avail ram:00400000 004AC1E0 004A9138 004A9150 00405300 00405318 004058CB 004A866D 004AD000 04000000Linux/PPC load: console=ttl single ip=on root=/dev/hda1 booting the kernelLinux version 2.4.20_mvl31-ml405_ESS (les@apdlsse4) (gcc version 3.3.1 (MontaVista 3.3.1-3.0.10.0300532 2003-12-24)) #443 Wed Sep 20 11:03:52 PDT 2006Xilinx Virtex-II Pro and Virtex-4 port (C) 2002-2004 MontaVista Software, Inc. (source@)On node 0 totalpages: 16384zone(0): 16384 (1): 0 (2): 0 command line: console=ttl single ip=on root=/dev/hda1 rwXilinx INTC #0 at 0x000003F0 (DCR)Calibrating 299.82 BogoMIPSMemory: 63212k available (1148k kernel code, 348k data, 52k init, 0k highmem)Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)Inode cache hash table entries: 4096 (order: 3, 32768 bytes)Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)Page-cache hash table entries: 16384 (order: 4, 65536 bytes)POSIX conformance testing by UNIFIXLinux NET4.0 for Linux 2.4Based upon Swansea University Computer Society NET3.039XAPP716 (v1.0) 2006 年 10 月 13 日/cn 39
附录 E: 控制台输出Initializing RT netlink socketLSP Revision 42Starting kswapdDisabling the Out Of Memory KillerJournalled Block Device driver loadeddevfs: v1.12c (20020818) Richard Gooch (rgooch@)devfs: boot_options: 0x1pty: 256 Unix98 ptys configuredUniform Multi-Platform E-IDE driver Revision: 6.31ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xxRAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksizePHY Hard Reset.<3>eth0: using sgDMA Reset Error : invalid PHY mode/speed[descriptor_init]Recv V:c6000000, P:2d8000[descriptor_init]Send V:c6000c80, P:2d8c80eth0: Xilinx EMAC #0 at 0x00000140 , irq=28Xilinx Serial ATA (SATA) adapterhda: ST3160827AS, ATA DISK driveide0 at 0x208-0x20f,0x216 on irq 30hda: 312581808 sectors (160042 MB) w/8192KiB Cache, CHS=19457/255/63Partition check: /dev/ide/host0/bus0/target0/lun0: p1 p2 p3NET4: Linux TCP/IP 1.0 for NET4.0IP Protocols: ICMP, UDP, TCP, IGMPIP: routing cache hash table of 512 buckets, 4KbytesTCP: Hash tables configured (established 4096 bind 8192)[xenet_open]stats Tx:0 Rx:0 Txerr:0 Rxerr:0 Txd 0, Rxd 0Sending DHCP requests .., OKIP-Config: Got DHCP answer from 0.0.0.0, my address is 172.19.9.219IP-Config: Complete: device=eth0, addr=172.19.9.219, mask=255.255.252.0, gw=172.19.11.254, host=dhcp-703-3, domain= , nis-domain=(none), bootserver=0.0.0.0, rootserver=0.0.0.0, rootpath=NET4: Unix domain sockets 1.0/SMP for Linux ald starting. Commit interval 5 secondsEXT3-fs warning: maximal mount count reached, running e2fsck is recommendedEXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journalEXT3-fs: recovery 716 (v1.0) 2006 年 10 月 13 日/cn 40
附录 E: 控制台输出EXT3-fs: mounted filesystem with ordered data : Mounted root (ext3 filesystem).Mounted devfs on /devFreeing unused kernel memory: 52k initINIT: version 2.78 Adding Swap: 1959920k swap-space (priority -1)Checking all fsck 1.27 (8-Mar-2002)Mounting hing was mountedCleaning: /etc/network/g up IP spoofing protection: rp_e TCP/IP Explicit Congestion Notification: uring network interfaces: ng portmap daemon: ng dhcpcd on eth0Running ntpdate to synchronize ng: /tmp /var/lock /var/rundhcpcd[61]: DHCP_NAK server response root password for maintenance(or type Control-D for normal startup):INIT: Entering runlevel: 3Starting kernel log daemon: ng system log daemon: ng devfsd: Started device management daemon for /ng web server: ng internet superserver: me: ng barrier for shutdownStarting X11 session for user 'linux'******************************************************************Welcome to the Embedded Serial ATA Storage (ESS) reference system(C) 2006 Xilinx, Inc - Systems Engineering Group / ApplicationsMontaVista(R) Linux(R) Professional Edition 3.1RXAPP716 (v1.0) 2006 年 10 月 13 日/cn 41
附录 E: 控制台输出Note : The ESS demo version expires ten minutes after bootup******************************************************************ess login:RXAPP716 (v1.0) 2006 年 10 月 13 日/cn 42
参考文件R参考文件297《三态以太网 MAC v2.2》
076《Virtex-4 RocketIO 千兆位级收发器用户指南》
535《高性能多端口存储器控制器》
536《千兆位系统参考设计》732《Virtex-4 FX RocketIO MGT 的不活动收发器行为变通解决办法》
Attachment with Packet Interface - 7, Volume 1 - Register Delivered Command Set,
Logical Register Set (ATA/ATAPI-7 V1)。2004。New York:American National
Standards Institute, Inc。
ATA:High Speed Serialized AT Attachment Rev. 1.0a:Serial ATA workgroup
() Intel Corporation。 Physical Interface Specification (SAPIS) rev 0.90。2002。NE System-on-Chip (SoC) Interconnection Architecture Rev B.3。OpenCores
Organization。
an Corbet 和 Allesandro Rubini。2001。Linux Device Drivers, 2nd Edition。Sebastopol:O'an Corbet、Allesandro Rubini 和Greg Kroah-Hartman。2005。Linux Device
Drivers, 3rd Edition。Sebastopol:O'Reilly。 Grimsrud 和 Hubbert Smith。Serial ATA Storage Architecture and Applications。
Intel Press。
Love。Linux Kernel Development, 2nd Edition。2005。Indianapolis:Pearson
Education。修订历史下表说明此技术文档的修订历史。
日期2006 年10 月 13 日版本1.0Xilinx 最初版本。修订XAPP716 (v1.0) 2006 年 10 月 13 日/cn 43
版权声明:本文标题:XILINX FPGA嵌入式串行 ATA 存储系统 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1709759916h545898.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论