0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
TSI578-ILH

TSI578-ILH

  • 厂商:

    RENESAS(瑞萨)

  • 封装:

  • 描述:

    IC INTERFACE

  • 数据手册
  • 价格&库存
TSI578-ILH 数据手册
Titl IDT Tsi578 Serial RapidIO Switch  User Manual June 6, 2016 GENERAL DISCLAIMER Integrated Device Technology, Inc. (“IDT”) reserves the right to make changes to its products or specifications at any time, without notice, in order to improve design or performance. IDT does not assume responsibility for use of any circuitry described herein other than the circuitry embodied in an IDT product. Disclosure of the information herein does not convey a license or any other right, by implication or otherwise, in any patent, trademark, or other intellectual property right of IDT. IDT products may contain errata which can affect product performance to a minor or immaterial degree. Current characterized errata will be made available upon request. Items identified herein as “reserved” or “undefined” are reserved for future definition. IDT does not assume responsibility for conflicts or incompatibilities arising from the future definition of such items. IDT products have not been designed, tested, or manufactured for use in, and thus are not warranted for, applications where the failure, malfunction, or any inaccuracy in the application carries a risk of death, serious bodily injury, or damage to tangible property. Code examples provided herein by IDT are for illustrative purposes only and should not be relied upon for developing applications. Any use of such code examples shall be at the user's sole risk. Copyright © 2016 Integrated Device Technology, Inc. All Rights Reserved. The IDT logo is registered to Integrated Device Technology, Inc. IDT and CPS are trademarks of Integrated Device Technology, Inc. 3 Contents About this Document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1. Functional Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial RapidIO Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Transaction Flow Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3 Maintenance Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4 Control Symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multicast Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Multicast Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial RapidIO Electrical Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internal Switching Fabric (ISF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internal Register Bus (AHB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JTAG Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 24 26 26 26 27 27 27 27 28 28 30 30 30 32 Serial RapidIO Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.1 2.2 2.3 2.4 2.5 2.6 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Transaction Flow Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Maintenance Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4 Control Symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transaction Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lookup Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Filling the Lookup Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 LUT Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Flat Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4 Hierarchical Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.5 Mixed Mode of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.6 Lookup Table Parity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.7 Lookup Table Error Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.8 Lookup Table Entry States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Maintenance Packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multicast Event Control Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 MCS Reception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2 Generating an MCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.3 Restrictions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reset Control Symbol Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integrated Device Technology www.idt.com 35 35 36 36 36 37 37 38 40 40 45 49 49 50 51 53 55 55 56 56 57 Tsi578 User Manual June 6, 2016 4 Contents 2.7 2.8 2.9 2.10 3. 57 57 57 57 58 59 60 61 62 62 64 64 Serial RapidIO Electrical Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4. Data Integrity Checking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7.1 Packet Data Integrity Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7.2 Control Symbol Data Integrity Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.1 Software Assisted Error Recovery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hot Insertion and Hot Extraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9.1 Hot Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9.2 Hot Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9.3 Hot Extraction System Notification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loss of Lane Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10.1 Dead Link Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10.2 Lane Sync Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Port Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Aggregation: 1x and 4x Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 1x + 1x Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 4x Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clocking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Changing the Clock Speed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Changing the Clock Speed Through I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Power Down. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1 Default Configurations on Power Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2 Special Conditions for Port 0 Power Down. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.3 Power-Down Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.4 Configuration and Operation Through Power-down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Lanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Lane Synchronization and Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2 Lane Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmable Transmit and Receive Equalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.1 Transmit Drive Level and Equalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2 Receive Equalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Loopback Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.1 Digital Equipment Loopback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.2 Logical Line Loopback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bit Error Rate Testing (BERT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1 BERT Pattern Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.2 BERT Pattern Matcher and Error Counter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.3 Fixed Pattern-based BERT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.4 Using PRBS Scripts for the Transmitters and Receivers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 67 67 68 69 69 70 71 71 72 72 73 73 73 74 75 75 77 77 78 79 80 80 80 80 82 82 83 Internal Switching Fabric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.1 4.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Functional Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.2.1 Transfer Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com Contents 5 4.3 Arbitration for Egress Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.3.1 Strict Priority Arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.3.2 Weighted Round Robin (WRR) Arbitration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Packet Queuing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.4.1 Output Queuing on the Egress Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.4.2 Input Queue for the ISF Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.4.3 Input Arbitration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.4.4 Input Queuing Model for the Multicast Work Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.4.5 Input Queuing Model for the Broadcast Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.4.6 Output Queuing Model for Multicast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.4.7 ISF Bandwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.4 5. Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.1 5.2 5.3 5.4 5.5 6. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Multicast Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3 Multicast Operation with Multiple Tsi57x Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.4 Multicast Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.5 Multicast Behavior Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.6 Multicast Work Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.7 Broadcast Buffers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multicast Group Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Configuring Basic Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Configuring Multicast Masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Configuring Multicast Masks Using the IDT Specific Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arbitration for Multicast Engine Ingress Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Management of Multicast Packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Packet TEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 Multicast Packet Stomping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Multicast Maximum Latency Timer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4 Silent Discard of Packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.5 Port-writes and Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 103 103 104 105 106 107 107 110 112 113 116 117 118 118 118 119 120 120 120 Event Notification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.1 6.2 6.3 6.4 6.5 6.6 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Event Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Rate Thresholds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Maintaining Packet Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Stopped State Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Error Stopped States. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.2 Link Error Clearing and Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Event Capture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port-write Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6.1 Destination ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6.2 Payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6.3 Servicing Port-writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integrated Device Technology www.idt.com 121 122 126 127 128 128 129 131 133 134 134 135 Tsi578 User Manual June 6, 2016 6 Contents 6.7 7. 6.6.4 Port-writes and Hot Insertion/Hot Extraction Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6.5 Port-writes and Multicast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.1 INT_b Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.2 Global Interrupt Status Register and Interrupt Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.3 Interrupt Notification and Port-writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.4 Reset Control Symbol and Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 136 136 138 138 140 140 I2C Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Protocol Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Block Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 as I2C Master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.1 Example EEPROM Read and Write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.2 Master Clock Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.3 Master Bus Arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.4 Master External Device Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.5 Master Peripheral Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.6 Master Data Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 as I2C Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.1 Slave Clock Stretching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.2 Slave Device Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.3 Slave Peripheral Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.4 External I2C Register Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.5 Slave Write Data Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.6 Slave Read Data Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.7 Slave Internal Register Accesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.8 Slave Access Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.9 Resetting the I2C Slave Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mailboxes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.1 Incoming Mailbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.2 Outgoing Mailbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SMBus Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7.1 Unsupported SMBus Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7.2 SMBus Protocol Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7.3 SMBus Alert Response Protocol Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Boot Load Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.1 Idle Detect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.2 EEPROM Reset Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.3 Wait for Bus Idle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.4 EEPROM Device Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.5 Loading Register Data from EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.6 Chaining. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.7 EEPROM Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.8 I2C Boot Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8.9 Accelerating Boot Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 User Manual June 6, 2016 141 143 144 147 149 149 150 150 150 151 151 153 154 154 155 156 157 157 158 161 161 163 163 163 164 164 166 166 168 168 168 169 169 170 170 172 173 174 Integrated Device Technology www.idt.com Contents 7.10 7.11 7.12 7.13 8. Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Events versus Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timeouts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.13.1 Start/Restart Condition Setup and Hold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.13.2 Stop Condition Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.13.3 I2C_SD Setup and Hold. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.13.4 I2C_SCLK Nominal and Minimum Periods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.13.5 Idle Detect Period. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 177 179 183 185 185 185 186 186 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 8.1 8.2 8.3 8.4 8.5 9. 7 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1 Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.2 Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performance Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.1 Traffic Efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.2 Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.3 Bottleneck Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.4 Congestion Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.5 Resetting Performance Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Tsi578 for Performance Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.1 Clock Speeds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.2 Tsi578 ISF Arbitration Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.3 Tsi578 RapidIO Transmission Scheduler Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.4 Tsi578 RapidIO Buffer Watermark Selection Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port-to-Port Performance Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.1 Port-to-Port Packet Latency Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.2 Packet Throughput Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.3 Multicast Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Congestion Detection and Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5.1 Congestion Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 187 187 188 190 190 191 191 191 192 192 192 193 193 193 193 194 195 196 198 JTAG Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 9.1 9.2 9.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JTAG Device Identification Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JTAG Register Access Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.1 Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 Write Access to Registers from the JTAG Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.3 Read Access to Registers from the JTAG Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 202 202 202 203 203 10. Clocks, Resets and Power-up Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 10.1 Clocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.1 Clocking Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.2 SerDes Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.3 Reference clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.4 Clock Domains. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.5 Clock Gating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integrated Device Technology www.idt.com 205 206 207 207 208 208 Tsi578 User Manual June 6, 2016 8 Contents 10.2 10.3 Resets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.1 Device Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.2 Per-Port Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.3 Generating a RapidIO Reset Request to a Peer Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.4 JTAG Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Power-up Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1 Power-up Option Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.2 Default Port Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.3 Port Power-up and Power-down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.4 Port Width Override. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 209 211 211 211 212 212 214 214 214 11. Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215 11.1 11.2 11.3 11.4 11.5 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Endian Ordering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Signal Groupings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pinlist and Ballmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 216 216 218 227 12. Serial RapidIO Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 12.1 12.2 12.3 12.4 12.5 12.6 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.1.1 Reserved Register Addresses and Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RapidIO Logical Layer and Transport Layer Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.1 RapidIO Device Identity CAR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.2 RapidIO Device Information CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.3 RapidIO Assembly Identity CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.4 RapidIO Assembly Information CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.5 RapidIO Processing Element Features CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.6 RapidIO Switch Port Information CAR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.7 RapidIO Source Operation CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.8 RapidIO Switch Multicast Support CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.9 RapidIO Route LUT Size CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.10 RapidIO Switch Multicast Information CAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.11 RapidIO Host Base Device ID Lock CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.12 RapidIO Component Tag CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.13 RapidIO Route Configuration DestID CSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.14 RapidIO Route Configuration Output Port CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.15 RapidIO Route LUT Attributes (Default Port) CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.16 RapidIO Multicast Mask Configuration Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.17 RapidIO Multicast DestID Configuration Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.18 RapidIO Multicast DestID Association Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RapidIO Physical Layer Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.1 RapidIO 1x or 4x Switch Port Maintenance Block Header. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.2 RapidIO Switch Port Link Timeout Control CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 User Manual June 6, 2016 229 230 231 231 233 245 246 247 248 249 250 252 253 255 256 257 258 259 260 261 262 263 265 266 268 270 271 Integrated Device Technology www.idt.com Contents 12.7 12.8 12.9 9 12.6.3 RapidIO Switch Port General Control CSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.4 RapidIO Serial Port x Link Maintenance Request CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.5 RapidIO Serial Port x Link Maintenance Response CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.6 RapidIO Serial Port x Local ackID Status CSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.7 RapidIO Port x Error and Status CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.8 RapidIO Serial Port x Control CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RapidIO Error Management Extension Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.1 Port Behavior When Error Rate Failed Threshold is Reached . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.2 RapidIO Error Reporting Block Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.3 RapidIO Logical and Transport Layer Error Detect CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.4 RapidIO Logical and Transport Layer Error Enable CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.5 RapidIO Logical and Transport Layer Address Capture CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.6 RapidIO Logical and Transport Layer Device ID Capture CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.7 RapidIO Logical and Transport Layer Control Capture CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.8 RapidIO Port-Write Target Device ID CSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.9 RapidIO Port x Error Detect CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.10 RapidIO Port x Error Rate Enable CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.11 RapidIO Port x Error Capture Attributes CSR and Debug 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.12 RapidIO Port x Packet and Control Symbol Error Capture CSR 0 and Debug 1 . . . . . . . . . . . . . . . . 12.7.13 RapidIO Port x Packet Error Capture CSR 1 and Debug 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.14 RapidIO Port x Packet Error Capture CSR 2 and Debug 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.15 RapidIO Port x Packet Error Capture CSR 3 and Debug 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.16 RapidIO Port x Error Rate CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.17 RapidIO Port x Error Rate Threshold CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDT-Specific RapidIO Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.1 RapidIO Port x Discovery Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.2 RapidIO Port x Mode CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.3 RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR . . . . . . . 12.8.4 RapidIO Port x RapidIO Watermarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.5 RapidIO Port x Route Config DestID CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.6 RapidIO Port x Route Config Output Port CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.7 RapidIO Port x Local Routing LUT Base CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.8 RapidIO Multicast Write ID x Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.9 RapidIO Multicast Write Mask x Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.10 RapidIO Port x Control Independent Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.11 RapidIO Port x Send Multicast-Event Control Symbol Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.12 RapidIO Port x LUT Parity Error Info CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.13 RapidIO Port x Control Symbol Transmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.14 RapidIO Port x Interrupt Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.15 RapidIO Port x Interrupt Generate Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDT-Specific Performance Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.1 RapidIO Port x Performance Statistics Counter 0 and 1 Control Register . . . . . . . . . . . . . . . . . . . . . 12.9.2 RapidIO Port x Performance Statistics Counter 2 and 3 Control Register . . . . . . . . . . . . . . . . . . . . . 12.9.3 RapidIO Port x Performance Statistics Counter 4 and 5 Control Register . . . . . . . . . . . . . . . . . . . . . 12.9.4 RapidIO Port x Performance Statistics Counter 0 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integrated Device Technology www.idt.com 272 273 275 276 278 281 285 286 287 288 289 290 291 292 293 294 297 299 301 302 302 303 304 306 307 309 310 312 313 314 315 316 317 318 319 322 323 325 326 329 331 332 336 340 344 Tsi578 User Manual June 6, 2016 10 Contents 12.10 12.11 12.12 12.13 12.14 12.9.5 RapidIO Port x Performance Statistics Counter 1 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.6 RapidIO Port x Performance Statistics Counter 2 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.7 RapidIO Port x Performance Statistics Counter 3 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.8 RapidIO Port x Performance Statistics Counter 4 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.9 RapidIO Port x Performance Statistics Counter 5 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.10 RapidIO Port x Transmitter Output Queue Depth Threshold Register . . . . . . . . . . . . . . . . . . . . . . . . 12.9.11 RapidIO Port x Transmitter Output Queue Congestion Status Register . . . . . . . . . . . . . . . . . . . . . . . 12.9.12 RapidIO Port x Transmitter Output Queue Congestion Period Register. . . . . . . . . . . . . . . . . . . . . . . 12.9.13 RapidIO Port x Receiver Input Queue Depth Threshold Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.14 RapidIO Port x Receiver Input Queue Congestion Status Register. . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.15 RapidIO Port x Receiver Input Queue Congestion Period Register . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.16 RapidIO Port x Reordering Counter Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial Port Electrical Layer Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.1 BYPASS_INIT Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.2 SRIO MAC x SerDes Configuration Channel 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.3 SRIO MAC x SerDes Configuration Channel 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.4 SRIO MAC x SerDes Configuration Channel 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.5 SRIO MAC x SerDes Configuration Channel 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.6 SRIO MAC x SerDes Configuration Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.7 SRIO MAC x SerDes Configuration GlobalB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.8 SRIO MAC x Digital Loopback and Clock Selection Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internal Switching Fabric (ISF) Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.11.1 Fabric Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.11.2 Fabric Interrupt Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.11.3 RapidIO Broadcast Buffer Maximum Latency Expired Error Register . . . . . . . . . . . . . . . . . . . . . . . 12.11.4 RapidIO Broadcast Buffer Maximum Latency Expired Override. . . . . . . . . . . . . . . . . . . . . . . . . . . . Utility Unit Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12.1 Global Interrupt Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12.2 Global Interrupt Enable Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12.3 RapidIO Port-Write Timeout Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12.4 RapidIO Port Write Outstanding Request Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12.5 MCES Pin Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multicast Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.1 RapidIO Multicast Register Version CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.2 RapidIO Multicast Maximum Latency Counter CSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.3 RapidIO Port x ISF Watermarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.4 Port x Prefer Unicast and Multicast Packet Prio 0 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.5 Port x Prefer Unicast and Multicast Packet Prio 1 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.6 Port x Prefer Unicast and Multicast Packet Prio 2 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.13.7 Port x Prefer Unicast and Multicast Packet Prio 3 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Per Lane Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.14.1 SerDes Lane 0 Pattern Generator Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.14.2 SerDes Lane 1 Pattern Generator Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.14.3 SerDes Lane 2 Pattern Generator Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.14.4 SerDes Lane 3 Pattern Generator Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 User Manual June 6, 2016 345 346 347 348 349 350 352 354 355 357 359 360 361 362 363 366 368 370 372 376 377 380 380 382 384 386 388 388 390 392 393 394 395 395 396 397 398 399 400 401 402 403 404 405 406 Integrated Device Technology www.idt.com Contents 11 12.14.5 12.14.6 12.14.7 12.14.8 12.14.9 12.14.10 12.14.11 12.14.12 SerDes Lane 0 Pattern Matcher Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Lane 1 Pattern Matcher Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Lane 2 Pattern Matcher Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Lane 3 Pattern Matcher Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Lane 0 Frequency and Phase Value Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Lane 1 Frequency and Phase Value Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Lane 2 Frequency and Phase Value Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Lane 3 Frequency and Phase Value Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 408 409 410 411 412 413 414 13. I2C Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 13.1 13.2 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.1 I2C Device ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.2 I2C Reset Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.3 I2C Master Configuration Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.4 I2C Master Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.5 I2C Master Receive Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.6 I2C Master Transmit Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.7 I2C Access Status Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.8 I2C Interrupt Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.9 I2C Interrupt Enable Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.10 I2C Interrupt Set Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.11 I2C Slave Configuration Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.12 I2C Boot Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.13 Externally Visible I2C Internal Write Address Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.14 Externally Visible I2C Internal Write Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.15 Externally Visible I2C Internal Read Address Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.16 Externally Visible I2C Internal Read Data Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.17 Externally Visible I2C Slave Access Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.18 Externally Visible I2C Internal Access Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.19 Externally Visible I2C Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.20 Externally Visible I2C Enable Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.21 Externally Visible I2C Outgoing Mailbox Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.22 Externally Visible I2C Incoming Mailbox Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.23 I2C Event and Event Snapshot Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.24 I2C New Event Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.25 I2C Enable Event Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.26 I2C Time Period Divider Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.27 I2C Start Condition Setup/Hold Timing Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.28 I2C Stop/Idle Timing Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.29 I2C_SD Setup and Hold Timing Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.30 I2C_SCLK High and Low Timing Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.31 I2C_SCLK Minimum High and Low Timing Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.32 I2C_SCLK Low and Arbitration Timeout Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.33 I2C Byte/Transaction Timeout Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.34 I2C Boot and Diagnostic Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integrated Device Technology www.idt.com 415 418 418 419 420 422 425 426 427 430 433 435 437 440 444 445 446 447 448 450 452 456 460 461 462 466 469 472 473 474 475 476 477 478 479 480 Tsi578 User Manual June 6, 2016 12 Contents 13.2.35 13.2.36 A. Serial RapidIO Protocol Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483 A.1 A.2 A.3 B. B.2 483 483 484 484 484 484 484 Line Rate Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.1 Register Requirements Using 125 MHz S_CLK for a 3.125 Gbps Link Rate . . . . . . . . . . . . . . . . . . P_CLK Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.1 RapidIO Specifications Directly Affected by Changes in the P_CLK Frequency . . . . . . . . . . . . . . . B.2.2 IDT Specific Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.3 I2C interface and Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.4 Other Performance Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 490 493 493 496 497 503 PRBS Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .505 C.1 C.2 C.3 C.4 D. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1 Control Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Physical Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.1 PCS Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.2 PMA Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.3 Physical Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489 B.1 C. I2C Boot Load Diagnostic Progress Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 I2C Boot Load Diagnostic Configuration Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Tsi578_start_prbs_all.txt Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578_framer_disable.txt Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578_sync_prbs_all.txt Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578_read_prbs_all.txt Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 507 508 511 EEPROM Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515 D.1 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .523 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13 Figures Figure 1: Figure 2: Figure 3: Figure 4: Figure 5: Figure 6: Figure 7: Figure 8: Figure 9: Figure 10: Figure 11: Figure 12: Figure 13: Figure 14: Figure 15: Figure 16: Figure 17: Figure 18: Figure 19: Figure 20: Figure 21: Figure 22: Figure 23: Figure 24: Figure 25: Figure 26: Figure 27: Figure 28: Figure 29: Figure 30: Figure 31: Figure 32: Figure 33: Figure 34: Figure 35: Figure 36: Figure 37: Figure 38: Figure 39: Figure 40: Figure 41: Figure 42: Block Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Processor Farm Mezzanine Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Switch Carrier Blade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Tsi578 MAC Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 LUT Mode of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Flat Mode Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Flat Mode Routing Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Flat Mode LUT Configuration Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Hierarchical Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Hierarchical Mode Routing Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 LOLS Silent Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Tsi578 MAC Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Port Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Drive Strength and Equalization Waveform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Tsi578 Loopbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 ISF Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Egress Arbitration: Weighted Round Robin and Strict Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Weighted Round Robin Arbiter per Priority Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Ingress and Egress Packet Queues in Tsi578 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Multicast Operation – Option 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Multicast Operation – Option 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Multicast Packet Flow in the Tsi578 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Relationship Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Completed Tables at the End of Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 IDT-specific Multicast Mask Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Arbitration Algorithm for Multicast Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Control Symbol Format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 RapidIO Block Interrupt and Port Write Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 I2C Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 I2C Reference Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Software-initiated Master Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Transaction Protocols for Tsi578 as Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 I2C Mailbox Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 SMBus Protocol Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 SMBus Alert Response Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Boot Load Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 I2C Interrupt Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 I2C Event and Interrupt Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 I2C Timeout Periods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 I2C Bus Timing Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Latency Illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Congestion and Detection Flowchart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 14 Figure 43: Figure 44: Figure 45: Figure 46: Figure 47: Figures Congestion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Access From JTAG - Serial Data In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Access From JTAG - Serial Data Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 Clocking Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Signal Groupings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 User Manual June 6, 2016 200 202 202 206 218 Integrated Device Technology www.idt.com 15 Tables Table 1: Table 2: Table 3: Table 4: Table 5: Table 6: Table 7: Table 8: Table 9: Table 10: Table 11: Table 12: Table 13: Table 14: Table 15: Table 16: Table 17: Table 18: Table 19: Table 20: Table 21: Table 22: Table 23: Table 24: Table 25: Table 26: Table 27: Table 28: Table 29: Table 30: Table 31: Table 32: Table 33: Table 34: Table 35: Table 36: Table 37: Table 38: Table 39: Table 40: Table 41: Table 42: Error Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Lookup Table States. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Examples of Maintenance Packets with Hop Count = 0 and Associated Tsi578 Responses. . . . . . . . . . . . . . . . . . 53 Tsi578 Port Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Reference Clock Frequency and Supported Serial RapidIO Data Rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Serial Port Power-down Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Lane Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Patterns Supported by Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Patterns Supported by Matcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Sample Register settings for WRR in a given priority group (WRR_EN=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Examples of Use of Watermarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Multicast Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Tsi578 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Error Rate Error Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Port Write Packet Data Payload — Error Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Port x Error and Status Register Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Externally Visible I2C Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Format for Boot Loadable EEPROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Sample EEPROM Loading Two Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Sample EEPROM With Chaining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 I2C Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 I2C Interrupt to Events Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Performance Monitoring Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 4x/1x Latency Numbers Under No Congestion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 4x/1x Multicast Latency Numbers Under No Congestion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Tsi578 Input Reference Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Tsi578 Clock Domains. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Power-Up Options Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Signal Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Tsi578 Port Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Tsi578 Signal Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Address Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Register Access Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Port Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Register map overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Physical Interface Register Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Error Management Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 STOP_FAIL_EN and DROP_EN Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 ERR_TYPE Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 IDT-Specific Broadcast RapidIO Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 IDT-Specific Per-Port Performance Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 16 Table 43: Table 44: Table 45: Table 46: Table 47: Table 48: Table 49: Table 50: Table 51: Table 52: Table 53: Table 54: Table 55: Table 56: Tables IDT-Specific Per-Port Performance Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDT-Specific RapidIO Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial Port Electrical Layer Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TX_LVL Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AC JTAG level programmed by ACJT_LVL[4:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SerDes Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Register Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Master Operation Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Special Characters and Encoding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Control Symbol Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 Supported Line Rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timer Values with P_CLK and TVAL Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timer Values with DISCOVERY_TIMER and P_CLK Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timer Values with P_CLK and DLT_THRESH Variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tsi578 User Manual June 6, 2016 331 361 362 373 374 402 415 424 485 486 489 494 495 496 Integrated Device Technology www.idt.com 17 About this Document This section discusses the following topics: • “Scope” on page 17 • “Document Conventions” on page 17 • “Revision History” on page 18 Scope The Tsi578 User Manual discusses the features, capabilities, and configuration requirements for the Tsi578. It is intended for hardware and software engineers who are designing system interconnect applications with the device. Document Conventions This document uses the following conventions. Non-differential Signal Notation Non-differential signals are either active-low or active-high. An active-low signal has an active state of logic 0 (or the lower voltage level), and is denoted by a lowercase “_b”. An active-high signal has an active state of logic 1 (or the higher voltage level), and is not denoted by a special character. The following table illustrates the non-differential signal naming convention. State Single-line signal Multi-line signal Active low NAME_b NAME_b[3] Active high NAME NAME[3] Differential Signal Notation Differential signals consist of pairs of complement positive and negative signals that are measured at the same time to determine a signal’s active or inactive state (they are denoted by “_p” and “_n”, respectively). The following table illustrates the differential signal naming convention. State Single-line signal Multi-line signal Inactive NAME_p = 0 NAME_n = 1 NAME_p[3] = 0 NAME_n[3] =1 Active NAME_p = 1 NAME_n = 0 NAME_p[3] is 1 NAME_n[3] is 0 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 18 About this Document Object Size Notation • A byte is an 8-bit object. • A word is a 16-bit object. • A doubleword (Dword) is a 32-bit object. Numeric Notation • Hexadecimal numbers are denoted by the prefix 0x (for example, 0x04). • Binary numbers are denoted by the prefix 0b (for example, 0b010). • Registers that have multiple iterations are denoted by {x..y} in their names; where x is first register and address, and y is the last register and address. For example, REG{0..1} indicates there are two versions of the register at different addresses: REG0 and REG1. Symbols Ti p This symbol indicates a basic design concept or information considered helpful. This symbol indicates important configuration information or suggestions. This symbol indicates procedures or operating levels that may result in misuse or damage to the device. Document Status Information • Preliminary – Contains information about a product that is near production-ready, and is revised as required. • Formal – Contains information about a final, customer-ready product, and is available once the product is released to production. Revision History June 6, 2016, Formal • Updated “Reserved Register Addresses and Fields” • Updated the second caution in “RapidIO Error Management Extension Registers” • Updated the description of bit 31 (Reserved) in the following registers: “SRIO MAC x SerDes Configuration Channel 0”, “SRIO MAC x SerDes Configuration Channel 1”, “SRIO MAC x SerDes Configuration Channel 2”, and “SRIO MAC x SerDes Configuration Channel 3” • Removed Ordering Information from the manual. This information now resides solely in the Tsi578 Hardware Manual. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com About this Document 19 February 19, 2015, Formal • Updated the “Ordering Information” September 16, 2014, Formal • Updated step 2 in the “Hot Extraction” procedure • Added a new section, “Lane Sync Timer” • Updated “Power-Down Options” • Updated Figure 14: Drive Strength and Equalization Waveform • Added a new section, “Multicast Operation with Multiple Tsi57x Switches” • Updated steps 3 and 4 in “Control Symbol Example” • Updated the description of Fatal Port Error in Table 13: Tsi578 Events • Updated the description of “Per-Port Reset” • Updated the description of “RapidIO Port x Error and Status CSR”.PORT_ERR • Updated “Tsi578_read_prbs_all.txt Script” May 25, 2012, Formal • Updated the second step in “Removing a Destination ID to Multicast Mask Association” • Updated the second paragraph in “Payload” • Updated “Port-writes and Multicast” • Updated the registers listed in “Global Registers to Program after Port Power Down” • Added a note about how SW_RST_b is the only external indicator that a reset request has been received to “System Control of Resets” and Table 31 November 18, 2010, Formal • Added more information about “Lookup Table Entry States” • Added more information about “Port Aggregation: 1x and 4x Modes” • Added a note to the “SRIO MAC x SerDes Configuration Global” register • Added more information about “SRIO MAC x Digital Loopback and Clock Selection Register”.DLT_THRESH July 2009, Formal This is the production version of the manual. The document has been updated with IDT formatting. There have been no technical changes. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 20 Tsi578 User Manual June 6, 2016 About this Document Integrated Device Technology www.idt.com 21 1. Functional Overview This chapter describes the main features and functions of the Tsi578. This chapter includes the following information: 1.1 • “Overview” on page 21 • “Serial RapidIO Interface” on page 26 • “Serial RapidIO Electrical Interface” on page 28 • “Multicast Engine” on page 27 • “Internal Switching Fabric (ISF)” on page 30 • “Internal Register Bus (AHB)” on page 30 • “I2C Interface” on page 30 • “JTAG Interface” on page 32 Overview The IDT Tsi578 is a third-generation RapidIO switch supporting 80 Gbits/s aggregate bandwidth. The Tsi578 is part of a family of switches that enable customers to develop systems with robust features and high performance at low cost. The Tsi578 provides designers and architects with maximum scalability to design the device into a wide range of applications. Flexible port configurations can be selected through multiple port width and frequency options. Building on the industry leading Tsi568ATM Serial RapidIO Switch, the Tsi578 contains all the benefits of its predecessor plus enhances the fabric switching capabilities through the addition of multicast, traffic management through scheduling algorithms, programmable buffer depth, and fabric performance monitoring to supervise and manage traffic flow. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 22 1. Functional Overview > Overview Figure 1: Block Diagram SP2 (4x or 1x) SP0 (4x or 1x) Multicast Engine SP3 (1x only) SP4 (4x or 1x) SP6 (4x or 1x) SP5 (1x only) SP7 (1x only) Enhanced Internal Switching Fabric SP8 (4x or 1x) SP10 (4x or 1x) SP9 (1x only) SP11 (1x only) SP12 (4x or 1x) SP14 (4x or 1x) Up to 4 Serial RapidIO Ports - 1x/4x Mode or Up to 8 Serial RapidIO Ports - 1x Mode Up to 4 Serial RapidIO Ports - 1x/4x Mode or Up to 8 Serial RapidIO Ports - 1x Mode SP1 (1x only) Registers SP13 (1x only) I2C JTAG SP15 (1x only) 80B803A_BK001_03 Master and Slave Devices IEEE1149.6 Boundary Scan Embedded applications further benefit from the ability to route packets to over 64,000 endpoints through hierarchical lookup tables, independent unicast and multicast routing mechanisms, and error management extensions that provide proactive issue notification to the fabric controller. In addition, the Tsi578 supports both in-band serial RapidIO access and out-of-band access to the full fabric register set through the I2C interface. Typical Applications The Tsi578 can be used in many embedded communication applications. It provides chip-to-chip interconnect between I/O devices and can replace existing proprietary backplane fabrics for board-to-board interconnect which improves system cost and product time-to-market. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 1. Functional Overview > Overview 23 Figure 2: Processor Farm Mezzanine Diagram DSP Tsi578 Dual Serial RapidIO DSP 80B803A_TA001_01 The Tsi578 provides traffic aggregation through packet prioritization when it is used with RapidIO-enabled I/O devices. When it is in a system with multiple RapidIO-enabled processors it provides high performance peer-to-peer communication through its non-blocking switch fabric. Figure 3: Switch Carrier Blade AMC Slot AMC Slot AMC Slot Tsi578 AMC Slot Tsi578 80B803A_TA002_01 Serial RapidIO Mesh Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 24 1. Functional Overview > Overview 1.1.1 Features The Tsi578 contains the following features: Electrical Layer Serial RapidIO Features • Up to 8 ports in 4x Serial mode • Up to 16 ports in 1x Serial mode (each 4x port can be configured independently as two 1x ports) • Operating baud rate per data lane: 1.25 Gbit/s, 2.5 Gbit/s, or 3.125Gbit/s • Full duplex bandwidth: — 12.5 Gbit/s inbound and 12.5 Gbit/s outbound bandwidth at 3.125 GHz for a port configured for 4x mode1 — 3.125 Gbit/s inbound and 3.125 Gbit/s outbound bandwidth at 3.125 GHz for a port configured for 1x mode2 • Programmable serial transmit current with pre-emphasis equalization • Loopback support for system testing • Hot-insertion capable I/Os and hardware support • Per-port power down modes to reduce power consumption • Ability to reverse the bit ordering of a 4x port to simplify PCB layout Transport Layer RapidIO Features • Dedicated destination ID lookup table per port, used to direct packets through the switch • Supports both hierarchical lookup tables and flat mode lookup tables (512 destination IDs per lookup table) • Supports an optional, unique hierarchical destination ID lookup table covering all 64K possible destinations ID • Low-latency forwarding of the Multicast-Event control symbol • Error management capability • Performance monitoring capability • Reset-system interrupt support • Debug packet generation in debug mode Multicast Engine Features • One multicast engine provides dedicated multicast resources without impacting throughput on the ports • Eight multicast groups • Sustained multicast output bandwidth, up to 10 Gbit/s per egress port 1. Usable data rate is 10 Gbit/s rather than 12.5 Gbit/s due to 8B/10B physical layer encoding. 2. Usable data rate is 2.5 Gbit/s rather than 3.125 Gbit/s due to 8B/10B physical layer encoding. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 1. Functional Overview > Overview 25 • 10 Gbit/s of instantaneous multicast input bandwidth1 • Packets are replicated to each egress port in parallel • The multicast engine can accept a bursts of traffic with different packet sizes • Arbitration at the egress port to allow management of resource contention between multicast or non-multicast traffic. System behavior when multicasting of packets which require responses is not defined in the RapidIO Interconnect Specification (Revision 1.3) - Part 11 Multicast Specification. Other Device Interfaces • Master and Slave mode I2C port, supports up to 8 EEPROMs • Optionally loads default configuration from ROMs during boot-up, through I2C • Ability to read and write EEPROMs through I2C during system operation • IEEE 1149.1 and 1149.6 boundary scan, with register access Internal switching fabric (ISF) • Full-duplex,80 Gbps line rate, non-blocking switching fabric • Prevents head-of-line blocking on each port • Eight packet buffers per ingress port • Eight packet buffers per egress port Register Access • Registers can be accessed from any RapidIO interface and both the JTAG interface and I2C • Optionally loads default configuration from ROMs during boot-up, through I2C • Supports one outstanding maintenance transaction per interface • Supports 32-bit wide (4 byte) register access 1. All bandwidths assume the internal switching fabric is clocked at 156.25 MHz. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 26 1.2 1. Functional Overview > Serial RapidIO Interface Serial RapidIO Interface The Tsi578 provides high-performance serial RapidIO interfaces that are used to provide connectivity for control plane and data plane applications. All RapidIO interfaces are compliant with the RapidIO Interconnect Specification (Revision 1.3). This section describes the transport layer features common to all Tsi578 RapidIO interfaces. The RapidIO interface has the following capabilities: 1.2.1 • RapidIO packet and control symbol transmission • RapidIO packet and control symbol reception • Register access through RapidIO maintenance requests Features The following features are supported: • Up to eight 4x-mode or up to 16 1x-mode serial RapidIO ports operating at up to 3.125 Gbits/s • Per-port destination ID look-up table, used to direct packets through the switch This is a IDT-specific implementation. The RapidIO Interconnect Specification (Revision 1.3) standard implementation of look-up tables is also supported. 1.2.2 • RapidIO error management extensions, including both hardware and software error recovery (described in RapidIO Interconnect Specification (Revision 1.3) Part 8) • Low latency forwarding of the multicast control symbol • Proprietary registers for performance monitoring and tuning • Both cut-through and store-and-forward modes for performance tuning • Debug packet generation and capture • Multicast functionality (described in RapidIO Interconnect Specification (Revision 1.3) Part 11) • Head-of-line blocking avoidance Transaction Flow Overview Packets and control symbols are received by the Serial RapidIO Electrical Interface (Serial MAC) and forwarded to the RapidIO Interface (for more information on the Serial MAC, refer to “Serial RapidIO Electrical Interface” on page 65). Received packets have their integrity verified by error checking. Once the packet’s integrity has been verified, the destination ID of the packet is used to access the routing lookup table to determine which port the packet should be forwarded to and whether the packet is a multicast packet. The packet is then buffered by the Internal Switch Fabric (ISF) for transmission to the port. After the packet is transferred to the egress port, the port transmits the packet. If a packet fails the CRC check, the packet is discarded and the transmitter is instructed to retransmit the packet through the use of control symbols. The egress port receives packets to be transmitted from the ISF. The integrity of packets forwarded through the ISF is retained by sending the CRC code received with the packet. For more information on the input and ouput queues, refer to “Packet Queuing” on page 95. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 1. Functional Overview > Multicast Engine 27 The packet transmitter and the packet receiver cooperate to ensure that packets are never dropped (lost). A transmitter must retain a packet in its buffers until the port receives a packet accepted control symbol from the other end of the link. 1.2.3 Maintenance Requests A maintenance packet is the only packet type that will be modified by the switch. If the hop count value of the maintenance request is 0, the maintenance request is forwarded to the register bus for processing. The register bus accesses the registers in the appropriate port. The response to the maintenance request is compiled into a maintenance response packet and queued by the port for transmission. Maintenance packets with a non-zero hop count value have their hop count decremented, CRC recomputed, and are then forwarded to the port selected by the destination ID value in the look up table. 1.2.4 Control Symbols Control symbols received by the Tsi578 have their CRC validated, and their field values checked. If either the CRC is incorrect or the control symbol field values are incorrect, a packet-not-accepted control symbol is sent back and the control symbol is discarded. Otherwise, the control symbol is used by the port for purposes of packet management in the transmit port or link maintenance. 1.3 Multicast Engine The Tsi578 multicast functionality is compliant to the RapidIO Version 1.3 Part 11 Multicast Specification. 1.3.1 Multicast Operation In a multicast operation, packets are received at the speed of any ingress port (up to 10 Gbits/s) and broadcast at the speed of the egress ports (up to 10 Gbits/s for a 4x mode port operating at 3.125 Gbits/s) to multiple ports capable of accepting packets for transmission. The maximum amount of data that can be transmitted by the switch is 70 Gbits/s for seven egress ports operating at maximum width of 4x and a lane speed of of 3.125 Gbit/s, based on the the number of ports on the Tsi578. Packets are routed to the multicast engine based on their destinationID and Transaction Type (TT) field value. If no match is found for the destinationID and TT field, then the ingress lookup tables are used to route the packet. A maximum of eight different DestID/TT field combinations can be routed to the multicast engine. Each destinationID/TT set can be multicast to a different set of egress ports. A set of egress ports that packets are multicast to is called a multicast group and is represented by the multicast mask in the group table. A multicast packet is never sent out on the port that it was received on. Any number of ports can share the same multicast group. Multicast packets are accepted by egress ports based on priority. In the event that multicast and unicast traffic are competing for resources in the egress port, multicast specific egress arbitration can be used to favour multicast or unicast traffic. This allows a group of endpoints that need to multicast to each other to share the same multicast mask. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 28 1. Functional Overview > Serial RapidIO Electrical Interface 1.3.2 Features The Tsi578 supports multicast packet replication in accordance with RapidIO Specification Version 1.3, Part 11 Multicast. The Tsi578 includes the following features: • One multicast engine provides dedicated multicast resources without impacting throughput on the ports • Eight multicast groups • Sustained multicast output bandwidth, up to 10 Gbit/s per egress port • 10 Gbit/s of instantaneous multicast input bandwidth1 • Packets are replicated to each egress port in parallel • The multicast engine can accept bursts of traffic with different packet sizes • Arbitration at the egress port to allow management of resource contention between multicast or unicast traffic System behavior for the multicasting of packets which require responses is not defined in the RapidIO Interconnect Specification (Revision 1.3) - Part 11 Multicast Specification. 1.4 Serial RapidIO Electrical Interface The Tsi578 has eight Media Access Controllers (MAC) comprising the 16 Serial RapidIO ports. The 16 ports are grouped into pairs consisting of one even numbered port and one odd numbered port. Each port has flexible testing features including multiple loopback modes and bit error rate testing. Each pair of ports share four differential transmit lanes and four differential receive lanes. Even and odd number ports have different capabilities. Even numbered ports can operate in either 4x or 1x mode, while odd numbered ports can only operate in 1x mode. When the even numbered port is operating in 4x mode, it has control over all four differential pairs (designated Lanes A, B, C and D). In 4x mode, the default state of the odd numbered port is powered on. All registers in the even and odd numbered port are accessible but the odd numbered port does not have access to the PHY. In order to decrease the power dissipation of the port, the odd numbered port can be powered down in this configuration. When the even numbered port is operating in 1x mode it uses only Lane A and the odd numbered port is permitted to operate in 1x mode using Lane B. The Tsi578 MAC and SerDes interconnect block diagram is shown in the following figure. 1. All bandwidths assume the internal switching fabric is clocked at 156.25 MHz. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 1. Functional Overview > Serial RapidIO Electrical Interface 29 Figure 4: Tsi578 MAC Block Diagram Odd Numbered Ports (1x mode only) Serial Rapid IO Registers and Buffers Even-numbered Ports (4x mode or 1x mode) 8B/10B Enc PRBS Gen 8B/10B Dec PRBS Chk 8B/10B Enc PRBS Gen CDR SERDES Lane A 8B/10B Dec PRBS Chk 8B/10B Enc PRBS Gen CDR SERDES Lane B 8B/10B Dec PRBS Chk CDR SERDES Lane C 8B/10B Enc PRBS Gen 8B/10B Dec PRBS Chk CDR SERDES Lane D Each serial RapidIO MAC includes the following features: • One port in 4x Serial mode • Two ports in 1x Serial mode (each 4x port can be configured as two 1x ports) • RapidIO standard operating baud rate per data lane: 1.25 Gbit/s, 2.5 Gbit/s, or 3.125 Gbit/s — 12.5 Gbit/s inbound and 12.5 Gbit/s outbound bandwidth at 3.125 Gbps for a port configured for 4x mode — 3.125 Gbit/s inbound and 3.125 Gbit/s outbound bandwidth at 3.125 Gbps for a port configured for 1x mode • Adjustable receive equalization that is programmable per lane • Serial loopback with a built-in testability • Bit error rate testing (BERT) • Scope function of eye signals • Hot-insertion capable I/Os and hardware support Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 30 1.5 1. Functional Overview > Internal Switching Fabric (ISF) Internal Switching Fabric (ISF) The Internal Switching Fabric (ISF) is the crossbar switching matrix at the core of the Tsi578. It transfers packets from ingress ports to egress ports and prioritizes traffic based on the RapidIO priority associated with a packet and port congestion. The ISF has the following features: 1.6 • Full-duplex, non-blocking, crossbar-based switch fabric • 10 Gbits/s fabric ports allow up to 10x internal speedup • Manages head-of-line blocking on each port • Cut-through and store-and-forward switching of variable-length packets Internal Register Bus (AHB) An internal multi-master Advanced High Performance Bus (AHB) allows any RapidIO port to configure and maintain the entire device. When the Tsi578 receives a RapidIO maintenance packet destined for itself, it translates the packet into register read or write request on the AHB. The device registers can also be accessed through the JTAG interface or the I2C interface. 1.7 I2C Interface The I2C Interface provides a master and slave serial interface that can be used for the following purposes: • Initializing device registers from an EEPROM after reset • Reading and writing external devices on the I2C bus • Reading and writing Tsi578’s internal registers for management purposes by an external I2C master The I2C Interface has the following features: • Operates as a master or slave on the I2C bus — Multi-master support Tsi578 User Manual June 6, 2016 – Arbitrates among multiple masters for ownership of the I2C bus – Automatically retries accesses if arbitration is lost – Provides timeout indication if the Tsi578 is unable to arbitrate for the I2C bus Integrated Device Technology www.idt.com 1. Functional Overview > I2C Interface 31 — I2C Interface: Master interface – Supports 7-bit device addressing – Supports 0, 1, or 2-byte peripheral addressing – Supports 0, 1, 2, 3, or 4-byte data transfers – Reverts to slave mode if arbitration is lost – Supports clock stretching by an external slave to limit bus speed to less than 100 kHz – Handles timeouts and reports them through interrupts — I2C Interface: Slave interface – Slave address can be loaded from three sources: power-up signals, boot load from EEPROM, or by software configuration – Provides read and write accesses that are 32 bits in size to all Tsi578 registers – Ignores General-Call accesses – Ignores Start-Byte protocol – Provides a status register for determination of Tsi578’s health – Slave operation enabled/disabled through power-up signal, boot load from EEPROM, or by software configuration – Provides mailbox registers for communicating between maintenance software operating on RapidIO based processors and external I2C masters • Supports I2C operations up to 100 kHz • Provides boot-time register initialization — Supports 1- and 2-byte addressing of the EEPROM selected by power-up signal — Verifies the number of registers to be loaded is legal before loading registers — Supports up to 2K byte address space and up to 255 address/data pairs for register configuration in 1-byte addressing mode, or up to 65 Kbyte address space and up to 8 K-1 address/data pairs in 2-byte addressing mode. — Supports chaining to a different EEPROM and/or EEPROM address during initialization. The I2C Interface does not support the following features: • START Byte protocol — Tsi578 does not provide a START Byte in transactions it masters — Tsi578 does not respond to START Bytes in transactions initiated by other devices. The Tsi578 will respond to the repeated start following the start byte provided the 7-bit address provided matches the Tsi578 device address. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 32 1. Functional Overview > JTAG Interface • CBUS compatibility — Tsi578 does not provide the DLEN signal — Tsi578 does not respond as a CBUS device when addressed with the CBUS address. The Tsi578 will interpret the CBUS address like any other 7-bit address and compare it to its device address without consideration for any other meaning. • Fast Mode or High-Speed Mode (HS-MODE) • Reserved 7-bit addresses should not be used as the Tsi578’s 7-bit address. If a reserved address is programmed, the Tsi578 will respond to that address as though it were any other 7-bit address with no consideration of any other meaning. • 10-bit addressing — Tsi578 must not have its device address programmed to the 10-bit address selection (11110XXb) in systems that use 10-bit addressing. The Tsi578 will interpret this address like any other 7-bit address and compare it to its device address without consideration for any other meaning. • 1.8 General Call. The general call address will be NACK’d and the remainder of the transaction ignored up to a subsequent Restart or Stop. JTAG Interface The JTAG interface in Tsi578 is fully compliant with IEEE 1149.6 Boundary Scan Testing of Advanced Digital Networks as well as IEEE 1149.1 Standard Test Access Port and Boundary Scan Architecture standards. There are five standard pins associated with the interface (TMS, TCK, TDI, TDO and TRST_b) which allow full control of the internal TAP (Test Access Port) controller. The JTAG Interface has the following features: • Contains a 5-pin Test Access Port (TAP) controller, with support for the following registers: — Instruction register (IR) — Boundary scan register — Bypass register — Device ID register — User test data register (DR) • IDT-specific pin (BCE) which allows full 1149.6 compliant boundary-scan tests. This pin should be held high on the board. • Supports debug access of Tsi578’s configuration registers • Supports the following instruction opcodes: — Sample/Preload — Extest — EXTEST_PULSE (1149.6) — EXTEST_TRAIN (1149.6) Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 1. Functional Overview > JTAG Interface 33 — Bypass — Hi-Z — IDCODE — Clamp — User data select Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 34 Tsi578 User Manual June 6, 2016 1. Functional Overview > JTAG Interface Integrated Device Technology www.idt.com 35 2. Serial RapidIO Interface This chapter describes the serial RapidIO interface of the Tsi578. It includes the following information: 2.1 • “Overview” on page 35 • “Transaction Flow” on page 37 • “Lookup Tables” on page 37 • “Maintenance Packets” on page 53 • “Multicast Event Control Symbols” on page 55 • “Reset Control Symbol Processing” on page 57 • “Data Integrity Checking” on page 57 • “Error Management” on page 57 • “Hot Insertion and Hot Extraction” on page 59 • “Loss of Lane Synchronization” on page 62 Overview The Tsi578 provides high-performance serial RapidIO interfaces that are used to provide connectivity for control plane and data plane applications. All RapidIO interfaces are compliant with the RapidIO Interconnect Specification (Revision 1.3). This section describes the transport layer features common to all Tsi578 RapidIO interfaces. The RapidIO interface has the following capabilities: 2.1.1 • RapidIO packet and control symbol transmission • RapidIO packet and control symbol reception • Register access through RapidIO maintenance requests Features The following features are supported: • Up to eight 4x-mode or up to 16 1x-mode serial RapidIO ports operating at up to 3.125 Gbits/s • Per-port destination ID look-up table, used to direct packets through the switch This is a IDT-specific implementation. The RapidIO Interconnect Specification (Revision 1.3) standard implementation of look-up tables is also supported. • RapidIO error management extensions, including both hardware and software error recovery (described in RapidIO Interconnect Specification (Revision 1.3) Part 8) • Low latency forwarding of the multicast control symbol Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 36 2.1.2 2. Serial RapidIO Interface > Overview • Proprietary registers for performance monitoring and tuning • Both cut-through and store-and-forward modes for performance tuning • Debug packet generation and capture • Multicast functionality (described in RapidIO Interconnect Specification (Revision 1.3) Part 11) • Head-of-line blocking avoidance Transaction Flow Overview Packets and control symbols are received by the Serial RapidIO Electrical Interface (Serial MAC) and forwarded to the RapidIO Interface (for more information on the Serial MAC, refer to “Serial RapidIO Electrical Interface” on page 65). Received packets have their integrity verified by error checking. Once the packet’s integrity has been verified, the destination ID of the packet is used to access the routing lookup table to determine which port the packet should be forwarded to and whether the packet is a multicast packet. The packet is then buffered by the Internal Switch Fabric (ISF) for transmission to the port. After the packet is transferred to the egress port, the port transmits the packet. If a packet fails the CRC check, the packet is discarded and the transmitter is instructed to retransmit the packet through the use of control symbols. The egress port receives packets to be transmitted from the ISF. The integrity of packets forwarded through the ISF is retained by sending the CRC code received with the packet. For more information on the input and ouput queues, refer to “Packet Queuing” on page 95. The packet transmitter and the packet receiver cooperate to ensure that packets are never dropped (lost). A transmitter must retain a packet in its buffers until the port receives a packet accepted control symbol from the other end of the link. 2.1.3 Maintenance Requests A maintenance packet is the only packet type that will be modified by the switch. If the hop count value of the maintenance request is 0, the maintenance request is forwarded to the register bus for processing. The register bus accesses the registers in the appropriate port. The response to the maintenance request is compiled into a maintenance response packet and queued by the port for transmission. Maintenance packets with a non-zero hop count value have their hop count decremented, CRC recomputed, and are then forwarded to the port selected by the destination ID value in the look up table. 2.1.4 Control Symbols Control symbols received by the Tsi578 have their CRC validated, and their field values checked. If either the CRC is incorrect or the control symbol field values are incorrect, a packet-not-accepted control symbol is sent back and the control symbol is discarded. Otherwise, the control symbol is used by the port for purposes of packet management in the transmit port or link maintenance. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Transaction Flow 2.2 37 Transaction Flow The Tsi578 receives a RapidIO packet on one of its RapidIO ports. After performing integrity checks, such as validating a CRC, the interface logic locates the destination ID in the packet. The Tsi578 uses this information to determine to which egress port the packet must be sent and whether it is a multicast packet. It consults a user-configurable lookup table, which maps destination ID into egress port numbers. The RapidIO port transfers the packet to the Switch ISF where it is buffered and transferred to an egress port or to the Multicast Engine. The Switch ISF is non-blocking, which means that all ports can switch data at the same time as long as they are not switching data from multiple ports to a single port. The Switch ISF manages head-of-line blocking, which means that when a packet cannot be moved to an egress port (for example, because multiple ingress ports are trying to send to the same egress port), the Switch ISF selects another packet to service from the same ingress port. The ingress queue of Tsi578 can operate in two modes: store-and-forward and cut-through modes (see “RapidIO Port x Control Independent Register” on page 319). In store-and-forward mode, the ingress port of the device waits for the arrival of the whole packet before sending it to the ISF. In cut-through mode, the ingress port transmits the packet as soon as the ISF grants access (when the routing information is received). However, in both modes the egress port always operates in cut-through mode: the packet is immediately forwarded. A copy of the packet is saved at the egress port so that it can be retransmitted should an error occur. Ti p RapidIO provides a stomp function to abort partially transmitted packets that are later determined to have data integrity errors or similar errors. This means if the Tsi578 finds that a packet that is being cut-through has an error, it may send a stomp control symbol to notify the receiver that the packet was in error and all received data of the erred packet should be dropped. Packets delivered to a Multicast Engine (MCE) are replicated, based on user-configured multicast groups. The MCE sends copies of the original packet to the egress ports in a parallel fashion. Ti 2.3 p Packets can cut-through from the ingress port to the Multicast Work Queue and from the Multicast Work Queue to the Broadcast Buffers. A complete packet copy must be received by a Broadcast Buffer before it attempts to forward the packet copy to the egress port. Lookup Tables Lookup tables (LUTs) are used to direct incoming packets to output ports. An ingress port performs this routing operation by mapping the destination ID field of an incoming packet to an egress port number on the RapidIO switch. The ingress port does this by using the destination ID as an index to a lookup table containing user-defined egress port numbers. Each RapidIO port has its own uniquely configurable lookup table. Configuration and maintenance of the LUTs is compliant with the RapidIO Interconnect Specification (Revision 1.3). All LUTs are written simultaneously by these registers. Additionally, the LUT of each port can be accessed using device-specific registers. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 38 2. Serial RapidIO Interface > Lookup Tables The LUTs support two modes of operation, selectable on a per-port basis: “Flat Mode” on page 40 and “Hierarchical Mode” on page 45. Flat mode is the default mode and it supports destination IDs in the range of 0 to 511, with a default port for destination IDs outside this range. The hierarchical model covers the full large system range of 64-KB destination IDs, with some limitations. To ensure high system reliability, the lookup tables are parity protected. System software must intervene when a parity error is detected. The Tsi578 guarantees that packets are not incorrectly delivered when the lookup table incurs single bit errors. When a packet arrives at the ingress port, the destination ID of the packet is examined against the Multicast Group Table to determine if the packet is a multicast packet (see “Multicast” on page 103). 2.3.1 Filling the Lookup Tables The process of filling in the LUT is composed of the following series of register writes: • The “RapidIO Route Configuration DestID CSR” on page 260 is loaded with the destination ID value to be routed • The “RapidIO Route Configuration Output Port CSR” on page 261 is written with the desired egress port number If there is an attempt to write a destination ID with a value of greater than 511 into the “RapidIO Route Configuration DestID CSR” on page 260 using the LRG_CFG_DESTID and CFG_DESTID fields, the upper seven bits of the destination ID in the LRG_CFG_DESTID field is truncated. “RapidIO Route LUT Size CAR” on page 256 only advertises the switch can map 512 destination IDs. This is due to the fact this register is global in scope, whereas the ports can be independently configured for either flat mode or hierarchical mode lookup tables. The LUT of all the ports can be loaded simultaneously if it is desired to have the same routing entries in all of the ports required. The loading process is similar to loading an individual port's LUT, however alternative registers are used. The register addresses are: • “RapidIO Route Configuration DestID CSR” on page 260 at 0x0070 or • “RapidIO Port x Route Config DestID CSR” on page 314 at 0x10070 • “RapidIO Route Configuration Output Port CSR” on page 261 at 0x0074 or • “RapidIO Port x Route Config Output Port CSR” on page 315 at 0x10074 The register sets are identical except that SPx_ROUTE_CFG_PORT are per-port configuration registers and include an auto-increment bit to increment the contents of SPx_ROUTE_CFG_DESTID after a read or write operation. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Lookup Tables 39 Figure 5: LUT Mode of Operation Start LUT_512 = 1 in the SPx_MODE register Yes Flat No Heirarchical 8 bit (TT=0) Width of DestID No DestID < 256 16 bit (TT=1) MSB of DestID[15:8] == BASE field in SPx_ROUTE_BASE DestID < 512 Obtain egress port from LOCAL LUT using DestID[7:0] No Obtain egress port from GLOBAL LUT using DestID[15:8] No Yes Yes Yes Obtain egress port from LOCAL LUT using DestID[7:0] LUT entry mapped and egress port < Port_Total Obtain egress port from GLOBAL LUT using DestID[8:0] No Yes Default egress port mapped? Yes Route to egress port defined in LUT No Route to default egress port Discard packet Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 40 2.3.2 2. Serial RapidIO Interface > Lookup Tables LUT Modes The LUT mode, flat or hierarchical, is selected on a per-port basis through the LUT_512 field value in the “RapidIO Port x Mode CSR” on page 310. 2.3.3 Flat Mode A flat mode LUT is a table that maps destination IDs 0 to 511 to user selectable egress ports. Destination IDs that fall outside this range are sent to the egress port identified in the RIO Route LUT Attributes CSR (see “RapidIO Route LUT Attributes (Default Port) CSR”). Flat mode is the default mode of operation of the LUT. Figure 6 shows the configuration of the Local and Global Lookup tables (LUT) in Flat mode. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Lookup Tables 41 Figure 6: Flat Mode Routing Global LUT DestID Port 1FF DestID MSB is loaded into Global LUT through the LRG_CFG_DEST_ID and CFG_DEST_ID fields in the RIO_ROUTE_CFG_DESTID register Egress Port is loaded into the Global LUT through the PORT field in the RIO_ROUTE_CFG_PORT register 100 Local LUT DestID Port FF DestID LSB is loaded into the Local LUT through the CFG_DEST_ID field in the RIO_ROUTE_CFG_DESTID register Egress Port is loaded into the Local LUT through the PORT field in the RIO_ROUTE_CFG_PORT register 00 An incoming packet's destination ID is examined following the process in the flowchart in Figure 5. The egress port number is obtained from the LUT if there is a match between the destination ID in the packet header and the table. If there is no match, the packet is routed based on the default egress port programmed into “RapidIO Route LUT Attributes (Default Port) CSR” on page 262. If the default port is unmapped, the packet is discarded and the Tsi578 raises the IMP_SPEC_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 42 2. Serial RapidIO Interface > Lookup Tables Figure 7 shows an example of flat mode operation. Figure 7: Flat Mode Routing Example DestIDs accessible through this link = 0x02xx to 0xFFxx DestIDs accessible through this link = 0x01xx Tsi57x Tsi57x DestID = 0x13 Ingress Packets DSP 14 DestID = DestID = 0xFE33 0x12 DestID = 0x0137 8 DSP DestID = 0x11 9 0 1 Tsi57x 2 3 C B A Example packets DSP DestID = 0x12 DSP DestID = 0x10 Global LUT DestID Port 1FF DestID MSB is loaded into Global LUT through the LRG_CFG_DESTID field in the RIO_ROUTE_CFG_DESTID register { { 137 9 Egress Port is loaded into Global LUT through the PORT field in the RIO_ROUTE_CFG_PORT register Local LUT DestID Port FF 100 Default Port 14 DestID MSB is loaded into Global LUT through the CFG_DESTID field in the RIO_ROUTE_CFG_DESTID register { 13 0 12 2 11 1 10 3 { Egress Port is loaded into Global LUT through the PORT field in the RIO_ROUTE_CFG_PORT register 00 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Lookup Tables 2.3.3.1 43 Flat LUT Programming Each of the ports on the Tsi578 has its own lookup table. Each lookup table can be programmed with different values which allows each port to route packets differently. The lookup table maps the packet to the correct output port based on the destination ID. The capability of each port having their own LUT is functionality that is not required in the RapidIO Interconnect Specification (Revision 1.3). LUT entries can be reprogrammed at any time during normal system operation. However, software must ensure transactions have completed before reprogramming the LUTs. Figure 8 shows an example of a LUT in flat mode. In this example, a destination ID of 0x0002, or 0x02, is routed by the switch to output port 1. A destination ID of 0x0003, or 0x03, is routed out port 0 and destination IDs greater than 0x1FF are routed out port 4. Figure 8: Flat Mode LUT Configuration Example DEFAULT_OUT_PORT in the RIO_LUT_ATTR register Destination ID FF_FF 04 Out of Range 02_00 01_FF etc. 00_04 00_03 00 00_02 01 00_01 03 00_00 02 512-LUT Registers Used in Lookup Table Configuration The Tsi578’s RapidIO interfaces are compliant with the RapidIO Interconnect Specification (Revision 1.3). The following standard RapidIO registers are used by the Tsi578 for programming the lookup tables: • “RapidIO Route Configuration DestID CSR” on page 260 • “RapidIO Route Configuration Output Port CSR” on page 261 • “RapidIO Route LUT Size CAR” on page 256 • “RapidIO Route LUT Attributes (Default Port) CSR” on page 262 • “RapidIO Port x Local Routing LUT Base CSR” on page 316 Other related registers are IDT specific and include the following: • “RapidIO Port x Route Config DestID CSR” on page 314 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 44 2. Serial RapidIO Interface > Lookup Tables • “RapidIO Port x Route Config Output Port CSR” on page 315 • “RapidIO Port x Local Routing LUT Base CSR” on page 316 Other indirectly related (multicast) registers include: • “RapidIO Multicast Mask Configuration Register” on page 263 • “RapidIO Multicast DestID Configuration Register” on page 265 All lookup table entries are in an unknown state after power-up. All entries should be programmed to a mapped or unmapped state to ensure predictable operation. IDT strongly recommends that the value 0xFF be used as the port value for writing unmapped lookup table entries. An unmapped lookup table entry returns the value of 0xFF as the port value when read. Lookup Table Configuration Examples The Tsi578 lookup tables can be configured through an external EEPROM or through software maintenance writes to the Tsi578 registers. IDT strongly recommends that the entire lookup table be configured on each port to avoid undefined lookup table entries which can cause non-deterministic behavior. The following sequence programs the lookup tables using the broadcast (BC) offset: 1. Write the destination ID to be configured or queried using the broadcast (BC) offset (0x10070) in the “RapidIO Port x Route Config DestID CSR” on page 314. 2. Read the “RapidIO Port x Route Config Output Port CSR” on page 315 register to determine the current egress port for the destination ID, or write this register to change the configuration of the destination ID. Example One: Adding a Lookup Table Entry In the following example, routing is added for all ports to route destination ID 0x98 to output port 0x4.To add a lookup table, perform the following steps: 1. Write to the “RapidIO Port x Route Config DestID CSR” on page 314, using the broadcast offset (0x10070), with a value of 0x00000098. This makes the destination ID 0x98. 2. Write to the “RapidIO Port x Route Config Output Port CSR” on page 315, using the broadcast (BC) offset (0x10074), a value of 0x00000004. This makes the egress Port 0x4 for destination ID 0x98. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Lookup Tables 45 Example Two: Adding a Lookup Table Entry In the following example, routing is added for port 0x5 to route destination ID 0x20 to output port 0x3. To add a lookup table, complete the following steps: 1. Write to the “RapidIO Port x Route Config DestID CSR” on page 314, using the offset for port 5 (0x11570), with a value of 0x80000020. This makes the destination ID 0x20 and the Auto-increment 0x1 2. Write to the “RapidIO Port x Route Config Output Port CSR” on page 315, using the offset for port 5 (0x11574), with a value of 0x00000003. This programs Port 0x3. In this example, if a further write to “RapidIO Port x Route Config DestID CSR” on page 314 (offset 0x11574) was performed the output port for destination ID 0x21 is configured Example Three: Verifying / Reading a Lookup Table Entry In the following example, output port for destination ID 0x54 is read. To verify and read a lookup table entry, perform the following steps: 1. Write to the “RapidIO Port x Route Config DestID CSR” on page 314, using the broadcast (BC) offset (0x10070), with a value of 0x00000054. This programs the destination ID 0x54. 2. Read to the value in “RapidIO Port x Route Config Output Port CSR” on page 315, using the broadcast (BC) offset (0x10074). This value represents the output port for packets with destination ID 0x54 The value reported back is assumed to be for all ports but it only reports back the value in port 0. 2.3.4 Hierarchical Mode The hierarchical mode of operation of the LUT allows the full range of 65536 16-bit destination IDs to be mapped. This mode is enabled by setting RIO_SP_MODE.LUT_512 = 0. The hierarchical mode of operation uses two LUTs, each containing 256 entries. • For packets with 8-bit destination IDs, the ingress port uses the ID as an index into the “local” LUT (see “Flat Mode”). • For packets with 16-bit destination IDs: — If the most significant 8 bits of the packet’s destination ID match the value configured in SPx_ROUTE_BASE.BASE register field, the ingress port uses the least significant 8 bits of the packet’s destination ID to index the “local LUT” and retrieve an egress port number. — If the most significant 8 bits of the packet’s destination ID do not match the value configured in the SPx_ROUTE_BASE.BASE register field, the ingress port uses the most significant 8 bits of the packet’s destination ID to index the “global LUT” and retrieve an egress port number. Thus, the majority of the 16-bit destination ID number space is covered by the global LUT, with groups of 256 destination IDs targeting the same egress switch port. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 46 2. Serial RapidIO Interface > Lookup Tables If the result of a lookup yields an egress port number greater than the value in PORT_TOTAL (“RapidIO Switch Port Information CAR” on page 252), the incoming packet is routed to the Default Port defined by “RapidIO Route LUT Attributes (Default Port) CSR”. If the default port is unmapped, the packet is discarded and the Tsi578 raises the IMP_SPEC_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Register RIO_LUT_SIZE only advertises the switch can map 512 destination IDs. This is due to the fact that RIO_LUT_SIZE is a register with global scope, but the ports can be independently configured for either flat mode or hierarchical mode lookup. Figure 9: Hierarchical Mode Global LUT MSB of Port DestID FF DestID MSB is loaded into the Global LUT through the LRG_CFG_DEST_ID field in the RIO_ROUTE_CFG_DESTID register Egress Port is loaded into the Global LUT through the PORT field of the RIO_ROUTE_CFG_PORT register Local LUT Port { xx FF 00 LSB of DestID } DestID MSB is loaded into the Global LUT through the BASE field in the SPx_ROUTE_BASE register 00 Default Port DestID LSB is loaded into the Local LUT through the CFG_DEST_ID field of the RIO_ROUTE_CFG_DESTID register Egress Port is loaded into the Local LUT through the PORT field of the RIO_ROUTE_CFG_PORT register Figure 10 shows an example of hierarchical mode operation. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Lookup Tables 47 Figure 10: Hierarchical Mode Routing Example DestIDs accessible through this link = 0xFExx, 0xFFxx DestIDs accessible through this link = 0x02xx, 0x01xx, 0x00xx Tsi57x Tsi57x DestID = 0x2813 DSP Ingress Packets 14 DestID = DestID = 0x2812 0xFE33 C B DestID = 0x0137 9 Tsi57x 8 DSP DestID = 0x2811 DSP DestID = 0x2812 0 1 2 3 A Example packets DSP DestID = 0x2810 Global LUT MSB of DestID Port FF { { Local LUT } DestID MSB is loaded into Global LUT through the LRG_CFG_DESTID field in the RIO_ROUTE_CFG_DESTID register Egress Port is loaded into Local LUT through the PORT field in the RIO_ROUTE_CFG_PORT register 0 { 28 xx 02 9 01 9 00 9 Default Port Integrated Device Technology www.idt.com FF 1 Port 3 00 LSB 13 12 11 10 of DestID } DestID MSB is loaded into Global LUT through the BASE field in the SPx_ROUTE_BASE register 2 DestID LSB is loaded into Local LUT through the CFG_DESTID field in the RIO_ROUTE_CFG_DESTID register 14 Tsi578 User Manual June 6, 2016 48 2.3.4.1 2. Serial RapidIO Interface > Lookup Tables Hierarchical LUT Programming This example demonstrates the process used to program the LUT in Hierarchical mode and uses Figure 10 for reference. The following example shows how to program the LUT in Port 8, but because all ports in the Tsi578 are capable of operating in hierarchical mode, this procedure can be easily modified to accommodate a different ingress port. Steps 1 through 5 are in the JTAG script format for ease of re-use. To add the required entries shown in Figure 10 after power-up, the following operations must be performed: 1. Program the LUT_512 bit = 0 in the SP8_MODE_CSR at offset 0x11804. w 11804 0x02000000 2. Program the Default Port = 0xA in the RIO_LUT_ATTR register at offset 0x0078. This operation may be done at any time before packet traffic starts w 0078 0x0A 3. Program the Global LUT with the MSB of the DEST_IDs to be routed using the following write operations:\ W 11870 0x0 / SP8_ROUTE_CFG_DESTID W 11874 0x9 / SP8_ROUTE_CFG_PORT W 11870 0x0100 W 11874 0x9 W 11870 0x0200 W 11874 0x9 W 11870 0xFE00 W 11874 0xE W 11870 0xFF00 W 11874 0xE 4. Program the MSB of the DEST_ID that will be used to index into the Local LUT by programming the BASE field of the SP8_ROUTE_BASE register. W 11878 0x28000000 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Lookup Tables 49 5. Program the Local LUT with the LSB values corresponding to an MSB of 0x28xx. W 11870 0x2810 W 11874 0x3 W 11870 0x2811 W 11874 0x1 W 11870 0x2812 W 11874 0x2 W 11870 0x2813 W 11874 0x0 2.3.5 Mixed Mode of Operation It is possible to operate a system in a mixed configured mode, with some ports in flat mode and some ports in hierarchical mode. Each port performs destination ID lookup consistent with its configured mode of operation. 2.3.6 Lookup Table Parity Each entry in the lookup table is parity protected. A LUT parity error is detected in an entry when an incoming packet causes the ingress port to read that table entry. If the ingress port detects an error, it discards the packet and reports the error (see Table 1). Because the packet is discarded on the ingress port, the packet is never forwarded to the egress port and a stomp control symbol is not required when the packet is discarded. The value of the LUT_VLD bit in the “RapidIO Port x LUT Parity Error Info CSR” on page 323 is unpredictable when there is a parity error in the LUT. All LUT entries must be initialized before use to ensure that the parity bits are set appropriately. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 50 2.3.7 2. Serial RapidIO Interface > Lookup Tables Lookup Table Error Summary Table 1 summarizes error conditions and resulting behaviors associated with the LUTs. Table 1: Error Summary Event Behavior Packet routed to a shut down porta Packet discarded and no record of packet is kept Packet routed to disabled portb ISF time out occurs and a transaction error acknowledge (TEA) interrupt is asserted (if enabled) Note: The TEA signal is asserted when a timeout is detected on the ISF due to the requested destination being blocked. TEA is only asserted after the output port buffers are full. When this signal is asserted, it indicates to the source of the transaction that the requested transaction could not be completed and is removed from the request queue. The TEA error is reported through a port-write and/or an interrupt. Programmable in the “Fabric Control Register” and the interrupt status can be checked in the “Fabric Interrupt Status Register” Packet routed to unconnected portc Packet discarded and no record of packet is kept Packet routed using an unmapped LUT entry, and the default egress port is also unmapped. Packet header is recorded in the error capture registers and the packet is discarded: • IMP_SPEC_ERR bit is set in the “RapidIO Port x Error Detect CSR” • Port write can be generated (if enabled) • Interrupt can be generated (if enabled). Parity error on LUT entry Packet header is recorded in the error capture registers, packet discarded • IMP_SPEC_ERR bit is set in the “RapidIO Port x Error Detect CSR” • Port write can be generated • Interrupt can be generated • Port Number is also captured in “RapidIO Port x LUT Parity Error Info CSR” Writes to LUT entries through the broadcast LUT registers to shutdown ports Silently ignored Access to LUT with a destination ID which exceeds LUT size (greater than 511 in flat mode) Writes silently ignored and reads return 0xF a. When a port is shut down, all clocks are off to that port. Reading to the registers returns 0 (except for 0x158 and 0x15C which give the correct values). b. The Port is a healthy port. Packets routed to that port is disallowed to pass through to the Link Partner. All registers are still functional and when read, return the current operational values. c. It's the same as a powered-on port except that the Link Partner was behaving as disconnected to the port. The port is healthy and when the link partner is resurrected, the link between the port and partner is be re-established. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Lookup Tables 51 If a LUT entry is unmapped for a particular port or the destination ID does not match any of the LUT entry, packets are routed to the default output port, as defined by “RapidIO Port x Route Config DestID CSR” on page 314. The IMP_SPEC_ERR bit is set in the “RapidIO Port x Error Detect CSR” on page 294. Note that if the default output port is unmapped, then the packet is discarded. 2.3.8 Lookup Table Entry States A lookup table entry can be in one of the following states: mapped, unmapped, parity error, or unprogrammed. A lookup table entry that routes packets to a port that exists within the Tsi578 is mapped. A lookup table entry that routes packets to a port that does not exist with the Tsi578 unmapped. After any reset, all lookup table entries are undefined (an unknown state). All lookup table entries must be programmed to a known value after reset to achieve predictable operation. When a lookup table entry’s parity is incorrect, the lookup table entry is in a parity error state. Table 2 shows the possible lookup table states. Table 2: Lookup Table States Lookup Table Entry State How to get into States Action on Packet Arrival Mapped A lookup table entry that routes packets to a port that exists within the Tsi578 is mapped. Packet is routed to the specified output port Unmapped port value A lookup table entry that routes packets to a port that does not exist with the Tsi578 is unmapped. Default port is used for routing the packet Unmapped default port value A lookup table entry that routes packets to a port that does not exist with the Tsi578 is unmapped. • Packet Header recorded in error capture registers Note: The default port is defined in RIO Route LUT Attributes CSR (see “RapidIO Route LUT Attributes (Default Port) CSR”). • Packet discarded • IMP_SPEC_ERR bit is set in the RIO Port x Error and Status CSR • Port write can be generated (if enabled) • Interrupt can be generated (if enabled) Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 52 2. Serial RapidIO Interface > Lookup Tables Table 2: Lookup Table States Lookup Table Entry State Parity Error How to get into States Action on Packet Arrival When a lookup table entry’s parity is incorrect, the lookup table entry is in a parity error state. • Packet Header recorded in error capture registers • Packet is discarded • IMP_SPEC_ERR bit is set in the RIO Port x Error and Status CSR • Port write can be generated • Interrupt can be generated • Port number is captured in RIO Port x LUT Parity Error Info CSR (see “RapidIO Port x LUT Parity Error Info CSR”) Unprogrammed (Undefined) After reset all lookup table entries must be programmed to a known value to achieve predictable operation. Non-deterministic operation can occur When a port value for a lookup table entry is unmapped, the default port is used for routing the packet as defined in RIO Route LUT Attributes CSR register. If the default port value is unmapped, packets routed using the default port value are discarded and the IMP_SPEC_ERR bit is set in the “RapidIO Port x Error Detect CSR” on page 294. Lookup table entries can be programmed through the standard RapidIO compliant interface or through a IDT-specific interface. A LUT parity error can also be left over from initializing the LUTs. The Tsi578’s design always checks the routing table entry for routing maintenance packets it receives, even though when the hop count is zero the receiving port is automatically used to return the response. If the destID in the maintenance packet is not a programmed LUT entry, though the routing table entry is not used to determine where the response packet is to be sent, parity errors are still detected and flagged if they occur. Since the LUTs power up in a random state, the occurrence of a LUT_PAR_ERR will be a random occurrence until all LUT entries are programmed with values to support all destIDs that the switch encounters. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Maintenance Packets 2.4 53 Maintenance Packets Maintenance packets are handled differently than other packets by the Tsi578. In a system the Tsi578 can be the destination of the maintenance packet. Maintenance packet processing is based on the maintenance packet’s hop count value. The hop count value controls how many hops the maintenance packet travels before it reaches its destination. The routing of the maintenance packet is controlled by the destination ID of the packet, the lookup table, and other values programmed in the intervening devices. Ensure the destination IDs of the maintenance packet does not match the destination ID of a multicast packet. If there is a match, system behavior is undefined. If a maintenance packet has a hop count greater than zero, the Tsi578 decrements the hop count, recalculates the CRC, and routes the packet out the port selected by the LUT. For this reason, all maintenance packets must contain routeable source and destination addresses and the routing LUT must be programmed to route both the maintenance transaction and its response. If a maintenance read or maintenance write request packet has a hop count of 0, the port processes the maintenance request and sends a maintenance response packet. The maintenance request is passed to the register bus as a read or write transaction, an address offset, and any data associated with the request. The maintenance response packet is generated by the Tsi578 using the success or failure of the access and data from a read operation. CRC is computed and the packet is enqueued for transmission on the port that received the maintenance request. Each port can have only one outstanding maintenance request at a time. A maintenance request received while another maintenance is being processed is retried by the RapidIO port. The Tsi578 supports 4 byte maintenance requests only. With hop count equals 0, any Maintenance Requests larger than 4 bytes, as well as maintenance packets that are not read or write requests, are dropped and an error is noted in the IMP_SPEC_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Examples of maintenance packets that are dropped are maintenance response and port-write packets received with a hop count of 0. Table 3: Examples of Maintenance Packets with Hop Count = 0 and Associated Tsi578 Responses Transaction Type Size Field Read or Write Request 4 bytes Error Logging Notes Response generated with status ok N/A Accepted address space = 00000 to 1FFFF 4 bytes Send Maintenance Response with Status Error (0111) N/A Address space specified > 1FFFF 4 bytes Send Maintenance Response with Status Error (0111) N/A Not supported by Tsi578 Integrated Device Technology www.idt.com Action taken by Tsi578 Tsi578 User Manual June 6, 2016 54 2. Serial RapidIO Interface > Maintenance Packets Table 3: Examples of Maintenance Packets with Hop Count = 0 and Associated Tsi578 Responses Transaction Type Size Field Action taken by Tsi578 Write Request with no payload Do not care Send Maintenance Response with Status Error (0111) N/A Erred Write Request Read Request with payload Do not care Send Maintenance Response with Status Error (0111) N/A Erred Read Request Write Request with payload 4 bytes Send Maintenance Response with Status Error (0111) N/A Size field reports incorrect payload size Write Response Do not care Send port-write and set interrupt, if enabled Bit 8 in “RapidIO Logical and Transport Layer Error Detect CSR” Tsi578 is not an endpoint device Do not care Send port-write and set interrupt, if enabled Bit 8 in “RapidIO Logical and Transport Layer Error Detect CSR” Tsi578 is not an endpoint device Do not care Send port-write and set interrupt, if enabled Bit 9 in “RapidIO Logical and Transport Layer Error Detect CSR” Tsi578 is not an endpoint device Do not care Send port-write and set interrupt, if enabled Bit 4 in “RapidIO Logical and Transport Layer Error Detect CSR” Tsi578 is not an endpoint device Do not care Send port-write and set interrupt, if enabled Bit 4 in “RapidIO Logical and Transport Layer Error Detect CSR” Tsi578 is not an endpoint device • Hop count is 0 Read Response • Hop count is 0 Port Write • Hop count is 0 Reserved Transaction Type • Hop count is 0 Reserved TT Type • Hop count is 0 Tsi578 User Manual June 6, 2016 Error Logging Notes Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Multicast Event Control Symbols 2.5 55 Multicast Event Control Symbols Multicast-Event Control Symbol (MCS or MCES) forwarding describes the process where an MCS received on one RapidIO port is propagated out other RapidIO ports. When a RapidIO port receives an MCS, it signals all other ports of the fact that an MCS was received. Each port can optionally transmit an MCS when it is notified that an MCS has been received by another port. A port is forwarded an MCS when the MCS_EN bit is set in the “RapidIO Serial Port x Control CSR” on page 281. Ti 2.5.1 p Multicast-Event control symbols (MCS) are explained in detail in the RapidIO Interconnect Specification (Revision 1.3). MCS Reception When a RapidIO port receives a MCS, it does the following: • Raises an interrupt that can be masked. — Interrupts are masked when the port’s MCS_INT_EN bit is set in “RapidIO Port x Mode CSR” on page 310 • Forwards the symbol to all the other RapidIO ports — Each port then forwards the control symbol if its MCS_EN field in the “RapidIO Serial Port x Control CSR” on page 281 is set to 1. Per-port interrupt status appears in the MCS field in the “RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR” on page 312. Additionally, the logical OR of all per-port Multicast Event interrupt status is available in both the MCS field in the “RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR” on page 312 and the MCS field in the “Global Interrupt Status Register” on page 388. Interrupts can be cleared, either per-port or for all ports, by writing 1 to the MCS field in the “RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR” on page 312. Additionally, the MCES pin in the Tsi578 can output an edge when an MCS is received. The MCES pin toggles to signal an MCS is received; that is, the first MCS causes the pin to go low and the second MCS causes it to go back high. The ports that are used as the source for toggling this MCES pin is selectable using the MCS_INT_EN bit in the “RapidIO Port x Mode CSR” on page 310. To select the MCES pin as an output, set the MCES_CTRL to 10 in the “MCES Pin Control Register” on page 394. Due to the finite time it takes to translate an MCS to a signal on the MCES pin, the minimum time between any two MCS received in the Tsi578 is 500 ns. The second MCS can be lost if this condition is not met. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 56 2.5.2 2. Serial RapidIO Interface > Multicast Event Control Symbols Generating an MCS The Tsi578 supports the generation of an MCS in two ways. The first method is called the software usage model which use of a maintenance write transaction in a port (see “RapidIO Port x Send Multicast-Event Control Symbol Register” on page 322). The write operation to this port does not complete — that is, no response is sent — until the MCS is enqueued for transmission. Subsequent writes to the register are ignored until the MCS is transmitted. A register write can also be performed from both JTAG and I2C. The Tsi578 also supports a hardware usage model, which generates an MCS using the MCES pin as an input. When enabled, a transition on the MCES pin signals all ports that a request to transmit an MCS is received. All ports enabled to forward multicast control symbols then transmit an MCS (see “RapidIO Serial Port x Control CSR” on page 281). The minimum time between two transitions on the MCES pin is 1s. For example, when the host needs to create a “heartbeat” for the entire system at 125kHz, it should use a 62.5kHz clock to generate the pulse driving the MCES pin. MCES_CTRL setting should be completed before traffic starts. Changing the MCES_CTRL setting during operation can result in the transmission of spurious MCES. 2.5.3 Restrictions Only one port on the Tsi578 should be assigned to receive Multicast-Event control symbols. If multiple ports receive Multicast-Event control symbols closely spaced in time, or if a single port receives multicast control symbols spaced closely in time, only one control symbol is forwarded correctly. The other control symbols are discarded. The minimum separation between MCS is the time, on the port with the lowest possible aggregate baud rate, to send at least 64 code groups. The 64 code groups is taken from the lowest clock speed (port rate) in the system. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Reset Control Symbol Processing 2.6 57 Reset Control Symbol Processing One of the functions that can be performed by control symbols is requesting that the link partner reset itself. The Tsi578 can generate link-request/reset control symbols using the standard RapidIO registers defined for the purpose. The Tsi578 generates four link-request/reset control symbols with only one register access to the “RapidIO Serial Port x Link Maintenance Request CSR” on page 273. For more information on reset control symbol handling, see“Resets” on page 209. 2.7 Data Integrity Checking Data integrity checking is performed on both control symbols and packets. 2.7.1 Packet Data Integrity Checking Packets have two locations where CRC can occur. The first location is 80 bytes into the packet while the second location is at the end of the packet. This means that packets 80 bytes or smaller in size have only one CRC, while packets larger than 80 bytes have two 16 bit CRC codes. With the exception of maintenance packets, the Tsi578 does not (re)compute CRC codes for packets. The CRC code is forwarded with the packet across the ISF, and the packet is transmitted with the same CRC code it was received with. This ensures that packet corruption within the Tsi578 is detected. The exception to the rule for CRC codes is the handling of maintenance packets. Maintenance packets have a hop count field, covered by CRC, which must be changed by the Tsi578 if the packet is to be forwarded. So, CRC is recomputed for maintenance packets for each link they traverse. 2.7.2 Control Symbol Data Integrity Checking Control symbols have 24 bits, five of which are devoted to a CRC code. The CRC code is verified to ensure that the control symbol was not corrupted in transmission. Additional checks are performed on a control symbol’s fields to ensure that they are valid. If the CRC check or the control symbols fields are invalid, the control symbol is discarded. 2.8 Error Management The Tsi578 supports the Software Assisted Error Recovery registers as defined by the RapidIO Interconnect Specification (Revision 1.3). Refer to “RapidIO Physical Layer Registers” on page 268 for the complete list of registers supported for Software Assisted Error Recovery. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 58 2. Serial RapidIO Interface > Error Management 2.8.1 Software Assisted Error Recovery The software-assisted error recovery process is described in terms of the ackIDs of a Tsi578 port connected to a link partner that becomes mismatched. A system host1, which can be local or remote to the Tsi578 switch, has access to the device through another port. The system host can be any processor in a system that is tasked with error management responsibility. In a large system, multiple processors may have this responsibility. The link partner is assumed to be register compliant to the RapidIO Interconnect Specification (Revision 1.3). All transactions between the system host and the Tsi578 switch are maintenance transactions. Before, during, and at the conclusion of the process, monitor and clear any error bits that were set in the “RapidIO Port x Error and Status CSR” on page 278. If an ackID mismatch occurs between a Tsi578 switch port and an endpoint, the system host manipulates registers in the Tsi578 switch port connected to the endpoint to perform error recovery. If this occurs, the following software-assisted error recovery process can be used: 1. The system host sets the PORT_LOCKOUT bit in the Tsi578’s “RapidIO Serial Port x Control CSR” on page 281 in order to flush the port’s ingress and egress buffers. The PORT_LOCKOUT must be asserted for 50 microseconds to guarantee that all packets are flushed. 2. The system host writes and clears the PORT_LOCKOUT bit on in order to perform a maintenance transaction to the link partner. 3. The system host reads the Tsi578’s “RapidIO Serial Port x Local ackID Status CSR” on page 276 and makes note of the inbound, outbound, and outstanding ACK_IDs. 4. The system host instructs the Tsi578 to generate a link request to its link partner using the “RapidIO Serial Port x Link Maintenance Request CSR” on page 273. 5. The system host reads the link partner's response in the Tsi578's “RapidIO Serial Port x Link Maintenance Response CSR” on page 275. 6. The system host sets the switch's outbound ACK_ID value to match the value in the ACK_ID_STAT field of the“RapidIO Serial Port x Link Maintenance Response CSR” on page 275. The ACK_ID_STAT indicates the link partner's next expected ACK_ID. 7. The system host sends a maintenance write with a priority 2 to the link partner. The maintenance write updates the link partner’s ACK_ID status register with a new OUTBOUND value that matches the Tsi578’s INBOUND value, and an INBOUND value which is incremented by 1 compared to the value returned in step 5. The values must be updated before the link partner sends its maintenance response so the response has the correct ACK_ID. — If the link partner's implementation is such that the ackID is not updated before the maintenance response is issued, the SEMP must wait until the transaction times out (through the TVAL timer), re-issue the link request and compare again the Tsi578 port's “RapidIO Serial Port x Local ackID Status CSR” on page 276 values to those in the “RapidIO Serial Port x Link Maintenance Response CSR” on page 275. — The SEMP should send another link request from the Tsi578 to verify that the ACK_IDs are the same. 1. This type of system host is sometimes referred to as a System Error Management Processor (SEMP). Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Hot Insertion and Hot Extraction 2.9 59 Hot Insertion and Hot Extraction Hot insertion and hot extraction functionality enables reliable systems to safely add, remove, and replace components while the system continues to operate. The system host can use the Tsi578’s capability to restrict the access of a newly inserted component to prevent a faulty component from negatively affecting the system. The following bit fields in “RapidIO Serial Port x Control CSR” control access to the system: • PORT_LOCKOUT: When this bit is set, only link request/response control symbols can be exchanged. When the PORT_LOCKOUT bit is cleared, access is controlled by OUTPUT_EN and INPUT_EN. When a PORT_LOCKOUT bit is set and the link is initialized, a port write can be sent periodically to notify the system host that a new component has been added to the system. • OUTPUT_EN: Controls whether packets other than maintenance requests/responses may be sent by the Tsi578. • INPUT_EN: Controls whether packets other than maintenance requests/responses may be received by the Tsi578. In “RapidIO Port x Interrupt Status Register”: • LINK_INIT_NOTIFICATION: This is an interrupt bit. When the PORT_LOCKOUT bit is set, this bit indicates that the link has been successfully initialized. This is an interrupt bit and to disable the generation of an interrupt, set LINK_INIT_NOTIFICATION_EN to 0 in “RapidIO Port x Control Independent Register”. A port write can be sent if the link is initialized. The LINK_INIT_NOTIFICATION_GEN can force a LINK_INIT_NOTIFICATION interrupt to be generated through the “RapidIO Port x Interrupt Generate Register”,. This is useful in software testing and integration. In “RapidIO Port x Error and Status CSR”: • PORT_OK: Indicates when a port is functioning and can carry traffic. • PORT_UNINIT: When the port is not initialized, this bit is set. The lookup tables (LUTs), although not necessary, can also be used to ensure that no traffic is being routed to the component being inserted/removed. For more information on lookup table functionality, see “Lookup Tables”. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 60 2.9.1 2. Serial RapidIO Interface > Hot Insertion and Hot Extraction Hot Insertion When Hot Insertion occurs at Port#N, the following steps should be completed: 1. Power up the Port#N in Tsi578. 2. Lock out Port#N by writing 1 to PORT_LOCKOUT in “RapidIO Serial Port x Control CSR”. 3. Insert the card. Re-initialization occurs and a port-write is received once both sides are synchronized. 4. Clear Input Error-Stop state errors in “RapidIO Port x Error and Status CSR”. Only if extraction happens on the same Port#N 5. Send Link Request to clear Input Error-Stop states to Link Partner. Only if extraction happens on the same Port#N 6. Re-synchronize the inbound and outbound ackIDs. The system host inquires about the link partner’s Inbound/Outbound ackIDs and re-programs the Tsi578’s ackIDs accordingly (see “RapidIO Serial Port x Local ackID Status CSR”). Tsi578 ports on which a component insertion event can occur can be configured to notify the system host when this event occurs. The PORT_LOCKOUT bit must be set to allow the LINK_INIT_NOTIFICATION bit in the “RapidIO Port x Interrupt Status Register” to be set. To determine that a component insertion event has occurred, the system host has the option of polling the “RapidIO Port x Interrupt Status Register”, or of setting the LINK_INIT_NOTIFICATION_GEN bit in the “RapidIO Port x Control Independent Register” to assert an interrupt or send port write transactions (see “RapidIO Port x Control Independent Register”). Once the system host is notified that a new component is inserted, the LINK_INIT_NOTIFICATION bit should be cleared in the “RapidIO Port x Interrupt Status Register” to stop the assertion of interrupts. If multiple ports become active simultaneously, only one port write is generated. For more information, see “Port-write Notifications” on page 133. The PORT_LOCKOUT bit must be cleared to allow the system host to access the new component and to allow the new component to access the remainder of the system. The OUTPUT_EN and INPUT_EN bits must be set according to the amount of access the system designer requires to allow the new component to be brought into the system safely. Error notification for the link should also be enabled, if required by the system designer. Before any packets can be exchanged, the OUTBOUND field in “RapidIO Serial Port x Local ackID Status CSR” must be programmed to match the INBOUND value of the other side of the link. The link partner's next expected inbound ackID value is determined by issuing a link request to the link partner, and examining the ackID field of the link response that the link partner returned. Similarly, the OUTBOUND value for the component that was just inserted must be programmed to match the INBOUND value of the Tsi578’s port, contained in “RapidIO Serial Port x Local ackID Status CSR”. Ti p Tsi578 User Manual June 6, 2016 The next expected inbound and next outbound ackIDs of the link partner are determined through the use of link request/response control symbols. Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Hot Insertion and Hot Extraction 61 As with a controlled reset of a link partner (see “Generating a RapidIO Reset Request to a Peer Device”), the writes of the two OUTBOUND values must occur in the order given (for example, the Tsi578 followed by the link partner). If the requests are performed in the reverse order, or if other packets are transmitted before the OUTBOUND values are programmed, the link experiences a fatal error due to an ackID mismatch. 2.9.1.1 Link Partner and Unsupported Error Recovery In the event that the link partner does not support the software-assisted error recovery registers, “RapidIO Serial Port x Local ackID Status CSR” will not exist in the link partner. Since it is impossible to set the link partner’s OUTBOUND value in this case, the Tsi578 INBOUND value must become zero. 2.9.2 Hot Extraction Tsi578 ports where a hot extraction event occurs should not have any transactions flowing through them in preparation for the extraction. The PORT_LOCKOUT bit must be set on the port where the hot extraction event occurs in order to drop all packets arriving from the ISF for transmission, to flush any existing packets in the transmit and receive queues of the port, and to prevent new packets from being received from the device about to be extracted. At this point, the component can be safely extracted. The LUT entries for all ports in the Tsi578 can be configured to not route any packets to the port on which the hot extraction occurs. When hot extracting a port (Port#N) originally connected to the Tsi578, the following steps should be completed: 1. Lock out Port#N by writing 1 to PORT_LOCKOUT in “RapidIO Serial Port x Control CSR”. 2. Extract the card. This causes Port #N to lose synchronization. After the Lane Sync Timer has expired, a PORT_ERR status bit may be asserted in the “RapidIO Port x Error and Status CSR”. PORT_UNINIT is set and PORT_OK is de-asserted in the same register. INPUT_ERR_STOP and OUTPUT_ERR_STOP are also set. If Port #N is an odd port, a PORT_ERR condition may occur on the even port of the Tsi578 MAC. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 62 2.9.3 2. Serial RapidIO Interface > Loss of Lane Synchronization Hot Extraction System Notification System designers may require confirmation of when a component is extracted. The following sections describe the confirmation methods supported by the Tsi578. 2.9.3.1 Polling The system can poll the PORT_OK and PORT_UNINIT bits in the “RapidIO Port x Error and Status CSR” for indication that the link partner is no longer present. 2.9.3.2 Interrupts and Port Writes Interrupts and/or port writes can be implemented as part of the hot insertion and hot extraction process. For example, while the PORT_LOCKOUT bit in the “RapidIO Serial Port x Control CSR” and the LINK_INIT_NOTIFICATION bit in the “RapidIO Port x Interrupt Status Register” are set, interrupts are asserted (if LINK_INIT_NOTIFICATION_EN is set in the “RapidIO Port x Control Independent Register”) until the component is extracted. A port write can also be sent once whenever a link is initialized and the port is locked out or when the port is locked out, and the link re-acquires initialization. 2.9.3.3 Link Errors Another notification implementation makes use of the link errors that occur when a component is extracted. In this design, the PORT_DISABLE bit in“RapidIO Serial Port x Control CSR” is set to 1 by software and the LINK_INIT_NOTIFICATION bit in“RapidIO Port x Interrupt Status Register” should be cleared to 0. Error notification by the LINK_INIT_NOTIFICATION_EN in the “RapidIO Port x Control Independent Register” continues to be enabled. When the component is removed, lane synchronization and/or lane alignment is lost. The errors detected cause a port write and/or interrupt to be sent to the system host, indicating that a component may have been extracted. 2.10 Loss of Lane Synchronization A loss of lane synchronization (LOLS) can occur due to high error rates on a link, reset of a link partner, or hot extraction of a link partner. This section discusses with LOLS recovery related to high error rates on a link. For an explanation of LOLS handling due to reset of a link partner, see “Generating a RapidIO Reset Request to a Peer Device” on page 211. For a discussion of LOLS handling due to hot insertion or hot extraction of a link partner, see “Hot Insertion and Hot Extraction” on page 59. When the Tsi578 detects a LOLS, it attempts to regain synchronization and recover so that no packets are lost, duplicated, or unnecessarily retransmitted. This is in compliance with the RapidIO Interconnect Specification (Revision 1.3). To guarantee that no packets are lost, ensure that the duration of the packet time-to-live timer is programmed to be greater than the duration of the port’s silence timer. When a Tsi578 port detects LOLS, it restarts its synchronization state machine and stops its Timeout Interval Value (TVAL) timer for expected packet and control-symbol acknowledgements. The Tsi578 port is in input-error stopped state due to errors seen on the link. For the duration of the timer, see the TVAL field in the “RapidIO Switch Port Link Timeout Control CSR” on page 271. The packet time-to-live timer is not stopped. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 2. Serial RapidIO Interface > Loss of Lane Synchronization 63 Figure 11 shows the Tsi578 entering the silence period when it experiences the loss of signal from its link partner. Figure 11: LOLS Silent Period Once synchronization is re-acquired, the Tsi578 transmitter resumes all timers and resumes sending packets from the next un-sent packet in its transmit queue, using the next available ackID. The transmitter handles the LOLS event as a temporary interruption that is completely ignored from the perspective of packet transfers and control symbol transfers; the actual duration of the LOLS condition has no impact on the process once the link is re-acquired. Any packets transmitted to the Tsi578 are not acknowledged because the port is in input-error stopped state. The link partner times out waiting for a packet acknowledge control symbol, and enters the output-error stopped state. To recover, the link partner sends a link-request/input-status control symbol to the Tsi578 port. This clears the input-error stopped state on the Tsi578. The Tsi578 responds to its link partner’s link-request/input-status control symbol with a link-response/status control symbol. The link partner accepts the symbol and exits the output-error stopped state. The packet associated with the next expected ackID contained in the link-response/status control symbol (if any) is then retransmitted and accepted by the Tsi578. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 64 2.10.1 2. Serial RapidIO Interface > Loss of Lane Synchronization Dead Link Timer When a LOLS event occurs, the loss of communication can continue for an extended length of time. For example, there may be an uncontrolled extraction of the link partner, and a hardware fault on the link partner. Packets continue to be directed to the non-functional (dead) link, but are not able to make forward progress. As a result, this may eventually block every traffic path in the system. To enable systems to robustly deal with dead links, the Tsi578 has a “dead link timer” feature. This is a proprietary function that is outside of the RapidIO specification. The DLT_EN and DLT_THRESH fields in the “SRIO MAC x Digital Loopback and Clock Selection Register” enable/disable the dead link timer and specify the duration of the dead link timer. There is one DLT for four ports (Ports N, N+1, N+8 and N+9, where N = 0, 2, 4, 6). The dead link timer can be disabled by setting DLT_EN to 0. When the dead link timer is enabled (in the DLT_EN bit in the “SRIO MAC x Digital Loopback and Clock Selection Register”) and a link failure causes the timer to expire, it is reported in the PORT_ERR bit in the “RapidIO Port x Error and Status CSR”. When the PORT_ERR bit is set, and port-writes are enabled, a port-write is generated. If the dead link timer expires, which the link is no longer able to transmit or receive, then the port starts removing the impact of the dead link partner from the system. The port drops all packets in its transmit buffers. Any new packets that are transferred to the port from the ISF are accepted and dropped. Packets received by the port from its link partner can still be forwarded to the ISF. The dead link timer register fields affect the RapidIO ports (Ports N and N+1) sharing the Tsi578 MAC. 2.10.2 Lane Sync Timer Supplementary to the Dead Link Timer is the Lane Sync Timer (LST). There is one LST for each lane of the Tsi578 MAC. The LST for a lane starts when lane sync is lost after a link has successfully initialized. When the LST expires for any lane on a port, the PORT_ERR bit is set in the “RapidIO Port x Error and Status CSR”. When the Tsi578 MAC is operating in two 1x mode and the LST expires on the odd port, the even port will detect a spurious PORT_ERR. The LST is a constant 0xFFFFF symbol periods for a link. The timeouts for different lane speeds are given in the following table: Lane Speed Timeout (nsec) 1.25 8,388,600 2.5 4,194,300 3.125 3,355,440 Note that only the PORT_ERR status bit indicates that an LST has expired. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 65 3. Serial RapidIO Electrical Interface This chapter describes the IDT-specific electrical layer features of the Tsi578 Serial RapidIO Electrical Interface. See the “Serial RapidIO Interface” for a description of the standards-defined RapidIO features common to all RapidIO ports. This chapter includes the following information: 3.1 • “Overview” on page 65 • “Port Numbering” on page 67 • “Port Aggregation: 1x and 4x Modes” on page 68 • “Clocking” on page 70 • “Port Power Down” on page 72 • “Port Lanes” on page 74 • “Programmable Transmit and Receive Equalization” on page 77 • “Port Loopback Testing” on page 79 • “Bit Error Rate Testing (BERT)” on page 80 Overview The Tsi578 has eight Media Access Controllers (MAC) comprising the 16 Serial RapidIO ports. The 16 ports are grouped into pairs consisting of one even numbered port and one odd numbered port. Each port has flexible testing features including multiple loopback modes and bit error rate testing. Each pair of ports share four differential transmit lanes and four differential receive lanes. Even and odd number ports have different capabilities. Even numbered ports can operate in either 4x or 1x mode, while odd numbered ports can only operate in 1x mode. When the even numbered port is operating in 4x mode, it has control over all four differential pairs (designated Lanes A, B, C and D). In 4x mode, the default state of the odd numbered port is powered on. All registers in the even and odd numbered port are accessible but the odd numbered port does not have access to the PHY. In order to decrease the power dissipation of the port, the odd numbered port can be powered down in this configuration. When the even numbered port is operating in 1x mode it uses only Lane A and the odd numbered port is permitted to operate in 1x mode using Lane B. The Tsi578 MAC and SerDes interconnect block diagram is shown in the following figure. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 66 3. Serial RapidIO Electrical Interface > Overview Figure 12: Tsi578 MAC Block Diagram Odd Numbered Ports (1x mode only) Serial Rapid IO Registers and Buffers Even-numbered Ports (4x mode or 1x mode) 8B/10B Enc PRBS Gen 8B/10B Dec PRBS Chk 8B/10B Enc PRBS Gen CDR SERDES Lane A 8B/10B Dec PRBS Chk 8B/10B Enc PRBS Gen CDR SERDES Lane B 8B/10B Dec PRBS Chk CDR SERDES Lane C 8B/10B Enc PRBS Gen 8B/10B Dec PRBS Chk CDR SERDES Lane D Each serial RapidIO MAC includes the following features: • One port in 4x Serial mode • Two ports in 1x Serial mode (each 4x port can be configured as two 1x ports) • RapidIO standard operating baud rate per data lane: 1.25 Gbit/s, 2.5 Gbit/s, or 3.125 Gbit/s — 12.5 Gbit/s inbound and 12.5 Gbit/s outbound bandwidth at 3.125 Gbps for a port configured for 4x mode — 3.125 Gbit/s inbound and 3.125 Gbit/s outbound bandwidth at 3.125 Gbps for a port configured for 1x mode • Adjustable receive equalization that is programmable per lane • Serial loopback with a built-in testability • Bit error rate testing (BERT) • Scope function of eye signals • Hot-insertion capable I/Os and hardware support Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Port Numbering 3.2 67 Port Numbering The RapidIO ports on the Tsi578 are numbered sequentially from 0 to 15. The following table shows the mapping between port numbers and the physical ports. These port numbers are used within the destination lookup tables for ingress RapidIO ports and in numerous register configuration fields. Table 4: Tsi578 Port Numbering 3.2.1 Port Number RapidIO Port Mode 0 Serial Port 0 (SP0) 1x or 4x 1 Serial Port 1 (SP1) 1x 2 Serial Port 2 (SP2) 1x or 4x 3 Serial Port 3 (SP3) 1x 4 Serial Port 4 (SP4) 1x or 4x 5 Serial Port 5 (SP5) 1x 6 Serial Port 6 (SP6) 1x or 4x 7 Serial Port 7 (SP7) 1x 8 Serial Port 8 (SP8) 1x or 4x 9 Serial Port 9 (SP9) 1x 10 Serial Port 10 (SP10) 1x or 4x 11 Serial Port 11 (SP11) 1x 12 Serial Port 12 (SP12) 1x or 4x 13 Serial Port 13 (SP13) 1x 14 Serial Port 14 (SP14) 1x or 4x 15 Serial Port 15 (SP15) 1x Port Configuration Ports that operate in either 4x or 1x mode can be configured as either one 4x mode port or dual 1x mode ports. For example, SP0 can be configured as either one 4x mode port, or Port 0 and Port 1 can be dual 1x mode ports. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 68 3. Serial RapidIO Electrical Interface > Port Aggregation: 1x and 4x Modes Figure 13: Port Configuration 4x Mode Port 0 Tx(Lane A,B,C,D) Rx(Lane A,B,C,D) SP0 (4x or 1x) X SP1 (1x only) 3.3 OR Tx(Lane A) Rx(Lane A) Tx(Lane B) Rx(Lane B) Dual 1x Mode SP0 Port 0 (4x or 1x) SP1 (1x only) Port 1 Port Aggregation: 1x and 4x Modes The RapidIO ports on the Tsi578 are grouped into pairs that share the same MAC. The MAC provides the PMA/PCS encoding/decoding layers, as well as the RapidIO physical, transport and logical layer functionality required of a RapidIO switch device. The MACs are numbered by even numbers and support the ports in the following manner: serial ports 0 and 1 use MAC 0, ports 2 and 3 use MAC 2, etc. Ports are grouped into pairs of N and N+1, where N is even. Two configurations are possible on each 4x mode-capable port: • Both port N and port N+1 can operate in 1x mode (the 1x + 1x configuration) • Port N can operate in 4x while port N+1 is unused and can be powered down (the 4x + 0x configuration) Ti p 1x mode means that one physical SerDes lane is used between link partners, and 4x mode means that four physical lanes are used between link partners. 4x mode offers four times the bandwidth as 1x mode at the same baud rate. Each Tsi578 MAC has an external pin called SPx_MODESEL. This pin can be pulled high to configure the MAC for either 1x + 1x mode or pulled low for 4x + 0x mode (see “Signals” on page 215). These pins are sampled after reset is de-asserted. To ensure that the pins are sampled correctly, the pins must be stable at the release of reset, and held at a stable level for 10 clock cycles after reset is de-asserted. The sampled state of the pins is reflected in the PORT_WIDTH field in the “RapidIO Serial Port x Control CSR” on page 281. After reset, the configuration mode can be re-programmed by changing the MAC_MODE field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377 and the programmed value overrides the pin setting of SPx_MODESEL. Changes to the MAC_MODE field that are different than that set by the SPx_MODESEL pin must be programmed after a hardware or software reset with a register write in order to restore the desired condition. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Port Aggregation: 1x and 4x Modes 69 The PWRDNx4 and PWRDNx1 bits must both be asserted prior to changing the state of the MAC_MODE bit. Therefore, changing the MAC operation from x4 to two x1 or from two x1 to x4 operation requires that the ports both be powered down using the PWRDNx4 and PWRDNx1 bits, and then powered back up with the new setting of the MAC_MODE bit. A port’s operation is not affected if the SPx_MODESEL signal values are changed after they have been sampled at reset release. The port width in use can be different from the pin-selected width; the pin indicates what the port was set to operate at, while the registers show what it is actually operating at. An even port with the capability to function in either 1x or 4x mode port can be downgraded to a 1x mode port when faults on lanes prevent operation in 4x mode. Additionally, the port width can be overridden through register programming and changed into operating at a different port mode. Refer to “RapidIO Serial Port x Control CSR” on page 281 for status and control fields for port width and “4x Configuration” on page 69 for downgraded port configuration. 3.3.1 1x + 1x Configuration When the 4x mode-capable port in a Tsi578 MAC is configured to operate in 1x mode, the odd-numbered port in a MAC can also be used in 1x mode. In this configuration, the even-numbered port always uses SerDes lane A and the odd-numbered port always uses SerDes lane B. The two ports that share the same MAC also share the same transmit clock, which means the two ports must have the same bit rate. To select the bit rate, write the IO_SPEED field (see “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377), as described in “Clocking” on page 70. The initial clock rate is selected by the global power-up option for all ports. 3.3.2 4x Configuration When the even-numbered port in a Tsi578 MAC is configured to operate in 4x mode (for example port 0), the odd-numbered port in a MAC (for example port 1) cannot be used and the register values for the odd-numbered port should be ignored. To save power, the odd-numbered port can be powered down (see “Port Power Down” on page 72). The unusable, odd-numbered port is still a part of the Tsi578’s memory map. However, system software must be aware that the port is not usable and that its per-port registers should not be accessed. If the port is accessed the Tsi578’s behavior is undefined. Refer to “Port Power Down” on page 72 for more details on register behavior under power down conditions. The even-numbered port configured for 4x mode follows the link-width negotiation rules outlined in the RapidIO Interconnect Specification (Revision 1.3). Depending on the configuration or capabilities of the link partner, or on the quality of the connection, it is possible that a port configured for 4x mode actually operates in 1x mode on either SerDes lane A or C. Under this scenario, the degraded port can not be configured to an 1x + 1x mode. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 70 3. Serial RapidIO Electrical Interface > Clocking System software can force a downgrade in port mode by writing the OVER_PWIDTH field on either the Tsi578 or in its link partner (see “RapidIO Serial Port x Control CSR” on page 281). The current operating link width is available in the INIT_PWIDTH field. Software may need to manage ackID recovery for the link partner when changing port usage between lanes A and C. It is necessary to know if the link partner can continue to communicate when changing the port width between Lanes A and C. Refer to the “RapidIO Serial Port x Control CSR” in the link partner to determine the capability of the link partner. 3.3.2.1 Degraded Link Mode When a 4x port has degraded to a 1x mode, software may attempt to recover to 4x mode by using the FORCE_REINIT bit in the “RapidIO Port x Control Independent Register” on page 319. Connecting four 1x links to a 4x port is not supported. Doing so results in the port failing to achieve lane alignment. 3.4 Clocking Serial RapidIO ports use source clocked transmission; the clock is embedded in the data stream using 8B/10B encoding. The Tsi578 recovers the embedded clock in the received data stream and generates a separate clock (based on S_CLK) to transmit its own data. The Tsi578 uses only one external differential clock source (S_CLK_P/N) as the reference to generate all internal clocks for processing the data. When the frequency of the reference clock is set at 156.25 MHz, Tsi578 can support three different RapidIO standard signaling rates (3.125 Gbps, 2.5 Gbps, and 1.25 Gbps). Table 5 shows the port speeds and bandwidths supported by the Tsi578. For more information on clocking refer to “Clocks, Resets and Power-up Options” on page 205 and “Clocking” on page 489. Table 5: Reference Clock Frequency and Supported Serial RapidIO Data Rates Reference Clock Frequency (S_CLK_p/n) 156.25MHza Supported Data Rate SP_IO_SPEED[1:0] Setting Default Speed for all Ports User Bandwidth (1x mode) User Bandwidth (4x mode) 1.25 Gbit/s 00 1.25 Gbit/s 1.0 Gbit/s 4.0 Gbit/s 2.50 Gbit/s 01 2.50 Gbit/s 2.0 Gbit/s 8.0 Gbit/s 3.125 Gbit/s 10 3.125 Gbit/s 2.5 Gbit/s 10 Gbit/s 11 (Illegal) Undefined Undefined Undefined N/A a. For information about 125 MHz S_CLK refer to “Clocking” Tsi578 User Manual June 6, 2016 on page 489. Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Clocking 71 When ports in the same MAC are both operating in 1x mode, both ports operate at the same rate. The data rate of all the ports in Tsi578 at power-up is determined by the setting of the SP_IO_SPEED[1:0] pins (see “Signal Descriptions”). There is only one pair of SP_IO_SPEED pins for the entire device, which means all RapidIO ports default to the same speed at power-up. After reset, the individual port speeds can be configured through registers (IO_SPEED in “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377) or through the I2C configuration EEPROM. The settings of SP_IO_SPEED[1:0] pins and the reference clock used have a strict relationship. Entering an illegal setting causes unpredictable behavior of the device. The RapidIO Interconnect Specification (Revision 1.3) requires the receive and transmit signals must operate at the same baud rate. This means a port must transmit at the same clock rate that it receives within +/-100 ppm. 3.4.1 Changing the Clock Speed The following procedure changes the signaling rate of a port: 1. Set PWDN_X4 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377 to 1 2. Select the new clock speed using IO_SPEED in the SMACx_DLOOP_CLK_SEL register 3. Set PWDN_X4 in the SMACx_DLOOP_CLK_SEL to 0 For more information about powering down ports and special requirements for powering down port 0, see “Port Power Down” on page 72. 3.4.2 Changing the Clock Speed Through I2C The Tsi578 can be configured to power up with ports at different link speeds by setting the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377 by an external I2C master access or by an EEPROM boot load. Care must be taken writing this register by an I2C master because the port is initialized before the I2C load is completed and therefore must follow the same rules as outlined in “Changing the Clock Speed” on page 71. Initializing the port speed using an I2C EEPROM boot load must also follow the rules outlined in “Changing the Clock Speed” on page 71 because the port is loaded with the power-up option selection on reset release and, although the port is prevented from initializing during the EEPROM boot load, the PLL is running. The most effective way to configure the port link speed through the I2C register load is to leave the port powered down at boot time through the SP{n}_PWRDN configuration pin (see “Signal Descriptions”) and have entries in the I2C EEPROM to load the appropriate contents of the SMACn_DLOOP_CLK_SEL to power up the port and set the correct port speed. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 72 3. Serial RapidIO Electrical Interface > Port Power Down If port 0 requires a different speed from the default speed, two I2C EEPROM entries are necessary because port 0 does not have a power down configuration pin. In this case, the first I2C EEPROM entry for SMAC0_DLOOP_CLK_SEL must power down the port (SMAC0_DLOOP_CLK_SEL = 0xXXXXXXXC). The second I2C EEPROM entry can power up the port and set IO_SPEED field in the SMAC0_DLOOP_CLK_SEL register to the correct value and power the port back up again. 3.5 Port Power Down All of the Tsi578 RapidIO ports can be powered down to minimize power consumption when the port is not required. However, port 0 has special power-down requirements that must be followed (see “Special Conditions for Port 0 Power Down” on page 73). When a port is powered down, some registers return 0 and all writes to these registers are ignored. These values indicate that the RapidIO port is uninitialized. The following register types are read only and return zero when a port is powered-down: • RapidIO Physical Layer Registers (see “RapidIO Physical Layer Registers”) • RapidIO Error Management Extension Registers (see “RapidIO Error Management Extension Registers”) • IDT-Specific RapidIO Registers (see “IDT-Specific RapidIO Registers”) Both the “RapidIO Port x Error and Status CSR” on page 278 and “RapidIO Serial Port x Control CSR” on page 281 registers return 0x00000001 when read instead of 0s. The following register types can be read and written to when a port is powered-down: 3.5.1 • “Serial Port Electrical Layer Registers” on page 361 • “Internal Switching Fabric (ISF) Registers” • “I2C Registers” on page 415 • “Utility Unit Registers” on page 388 Default Configurations on Power Down When a port is powered down, the port loses configuration information that is stored for that specific port. For example, multicast settings and port write settings return to their default reset settings after a port reset (port is powered down and back up). After port reset, there is no way to determine that the configuration for a particular port is correct. The registers listed in “Global Registers to Program after Port Power Down” are imaged in every port but are accessed through one register address. Therefore, the powering down of a port removes the image of that register in that port. For example, if a port is shut down and then restored, the port write destinationID in that port is reset to the default value. The port write destinationID must be re-written for the whole device after a port is shut down and restored. Similarly, multicast settings for the entire device must be re-written when a port is shut down and restored. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Port Power Down 3.5.1.1 73 Global Registers to Program after Port Power Down The following global registers must be re-programmed with the appropriate configuration values when a port is reset: 3.5.2 • “RapidIO Component Tag CSR” • “RapidIO Route LUT Attributes (Default Port) CSR” • “RapidIO Switch Port Link Timeout Control CSR” • “RapidIO Switch Port General Control CSR” • “RapidIO Logical and Transport Layer Error Enable CSR” • “RapidIO Port-Write Target Device ID CSR” • “RapidIO Multicast Write ID x Register” Special Conditions for Port 0 Power Down Port 0 can only be powered down through register accesses and not through the SPn_PWRDN pin. Port 0 has the has following special conditions after it is powered down: 3.5.3 • The list of registers in “Default Configurations on Power Down” on page 72 can not be read while port 0 is in reset • After reset the listed registers must be re-written (like any other port that has been powered down) Power-Down Options The following power-down options are available on a port: 3.5.4 • A port’s main logic can be powered down at boot up through the SP{n}_PWRDN pins. • The default configuration provided by the pins can be changed using the PWDN_X4 and PWDN_X1 bits in the “SRIO MAC x Digital Loopback and Clock Selection Register”. This can occur during a boot load using an EEPROM on the I2C bus, or during normal operation through a register write. Configuration and Operation Through Power-down The transceivers for the individual bit lanes can be powered down when they are not used. All valid power-down scenarios are shown in Table 6. Table 6: Serial Port Power-down Procedure Mode for Serial Port n Mode for Serial Port n+1 4x N/A Required Power Down Configuration • De-assert the SPn_PWRDN pin and/or set the PWDN_X4 bit to 0 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. • To save power, assert the SPn+1_PWRDN pin and/or set the PWDN_X1 bit to 1 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. If this bit is not set, Port n+1 consumes unnecessary power. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 74 3. Serial RapidIO Electrical Interface > Port Lanes Table 6: Serial Port Power-down Procedure (Continued) Mode for Serial Port n Mode for Serial Port n+1 1x 1x Required Power Down Configuration • De-assert the SPn_PWRDN pin and/or set the PWDN_X4 bit to 0 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. • De-assert the SPn+1_PWRDN pin and/or set the PWDN_X1 bit to 0 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. 1x Port Not Used • De-assert the SPn_PWRDN pin and/or set the PWDN_X4 bit to 0 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. • To conserve power, assert the SPn+1_PWRDN pin and/or set the PWDN_X1 bit to 1 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Otherwise, Port n+1 consumes power unnecessarily. Port Not Used 1x Port Not Used Port Not Used • Not supported • To save power, assert the SPn_PWRDN pin and/or set the PWDN_X4 bit to 1 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. • To conserve power, assert the SPn+1_PWRDN pin and/or set the PWDN_X1 bit to 1 in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. 3.5.4.1 Signals Sampled After Reset After a hardware reset is de-asserted, the Tsi578 samples the state of the SP{n}_PWRDN pins and only powers up the ports that are enabled. Each RapidIO port has a unique pin, SPn_PWRDN. Port 0 is the default port and can only be powered down through a direct register write. The sampled state of the pins is available in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377 register. This register can be overwritten at any time — during boot-up through the I2C interface, JTAG, or during normal operation through the RapidIO interfaces — allowing the system software to override the pin-based configuration. 3.5.4.2 4x Mode and Odd Ports When a pair of ports sharing the same MAC are configured in 4x mode, only the even-numbered port is used. The odd numbered port should be powered down by software or configuration pins to minimize power consumption. 3.6 Port Lanes For ports that support both 1x and 4x mode functionality, even and odd number ports have different capabilities. Even numbered ports can operate in either 4x or 1x mode, while odd numbered ports can only operate in 1x mode. When the even numbered port is operating in 4x mode, it has control over all four differential pairs (designated Lanes A, B, C and D). Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Port Lanes 75 In 4x mode, the default state of the odd numbered port is powered on. All registers in the even and odd numbered port are accessible but the odd numbered port does not have access to the PHY. In order to decrease the power dissipation of the port, the odd numbered port can be powered down in this configuration. When the even numbered port is operating in 1x mode it uses only Lane A and the odd numbered port is permitted to operate in 1x mode using Lane B. For more information on lanes, refer to “Lanes and Channels” on page 76. 3.6.1 Lane Synchronization and Alignment When coming out of reset, the transmit side of the port must continuously send out /K28.5/ code groups on each lane to assist the receive side of its link partner to synchronize. Once a /K28.5/ code group is detected by the receive port, another 127 /K28.5/ code groups must be received error free before the receive port can declare that it is synchronized. No other useful information is communicated between the link partners until the ports are synchronized. For a 4x port, after lane synchronization is complete, lane alignment starts. The port transmits /A/’s (||A||) on all four lanes, according to the RapidIO Interconnect Specification (Revision 1.3) idle sequence generation rules. Reception of four ||A||’s without the intervening reception of a misaligned column is the condition for achieving lane alignment. A misaligned column (that is a column with at least one ||A|| but not all ||A||s in a row) causes the alignment process to restart. Bit errors, or receptions of rows without all /A/’s, result in sampling/buffering adjustments in an attempt to achieve alignment. For more information, see the RapidIO Interconnect Specification (Revision 1.3). 3.6.2 Lane Swapping Lane swap is the ability to reverse the order of the transmit and receive pins. The Tsi578 allows the order of the transmit and/or receive pins of each 4x port to be reversed in order to simplify board layout issues. Lane swap is only supported when the MAC is operating in 4x mode. Lane swapping for 1x mode is not supported. If the Tsi578 port to a connector is lane swapped as 4x mode and a 1x mode device in inserted into the connector, the 4x mode port will fail-down (that is, become a 1x mode connection) and lane A is initialized. However, if the Tsi578 port to a connector is lane swapped as 4x mode and then re-configured to operate as a 1x mode, the swapping is canceled and the port will be unable to connect to a 1x mode device. Table 7 shows the lane sequence for Tsi578’s swapped 4x mode lanes, the connector, and the sequence for non-swapped 1x mode lanes. Table 7: Lane Sequence Swapped 4x Mode Mated Connector Unswapped 1x Mode Lane Sequence Lane Sequence Lane Sequence D D A C C B Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 76 3. Serial RapidIO Electrical Interface > Port Lanes Table 7: Lane Sequence 3.6.2.1 Swapped 4x Mode Mated Connector Unswapped 1x Mode Lane Sequence Lane Sequence Lane Sequence B B C A A D Configuration On reset, the lane swap setting for the entire device is controlled by two configuration pins, SP_RX_SWAP and SP_TX_SWAP (see“Signals” on page 215). Register fields SWAP_TX and SWAP_RX fields in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377 can also be written at reset time by I2C initialization or by software override to set lane swap on a per MAC basis. The reset value of these fields indicates the sampled values of the SP_RX_SWAP and SP_TX_SWAP configuration pins. When a different value is written to either the SWAP_TX or SWAP_RX fields, the MAC has to be reset in order to ensure that the links retrain and communication is re-established with the changed lane configuration. When changing the lane swap setting for a MAC, it is necessary to reset the port through the SOFT_RST_X4 fields in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. 3.6.2.2 Lanes and Channels The terms lanes and channels identify input and output signals. Lanes are enumerated using alphabetic characters (A, B, C, D). The pin associated with a lane changes depending on the lane swap settings. Channels are numbered 0 through 3. Channels are never reordered. When lanes are not swapped, the following mapping between channels and lanes is used: • Channel 0 maps to Lane A • Channel 1 maps to Lane B • Channel 2 maps to Lane C • Channel 3 maps to Lane D When lanes are swapped, the following mapping between channels and lanes is used: • Channel 0 maps to Lane D • Channel 1 maps to Lane C • Channel 2 maps to Lane B • Channel 3 maps to Lane A Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Programmable Transmit and Receive Equalization 77 Even numbered ports in 4x mode are associated with lanes A-D. When an even numbered port is in 1x mode, it is associated with lane A. Odd numbered ports are always associated with lane B. Ti 3.6.2.3 p The RapidIO Interconnect Specification (Revision 1.3) uses Lane 0, 1, 2, 3 terminology instead of the IDT terminology of Lane A, B, C, D. Tx and Rx Swapping The operations in the SMACx_DLOOP_CLK_SEL register are associated with lanes. When lanes are swapped, the channels associated with these operations must change. The user can independently swap only the Tx or Rx lanes. Operations on channels, as supported by the MAC Channel Configuration registers always operate on the specific channels regardless of the lane swap settings for a MAC (see “SRIO MAC x SerDes Configuration Channel 0” on page 363). If lane swap functionality is enabled in the system, the proper channels must also be configured. The channel number of a transmit lane and a receive lane differs when Tx lanes are swapped and Rx lanes are not, or vice versa. 3.7 Programmable Transmit and Receive Equalization The Tsi578 has programmable drive strengths and de-emphasis of a transmit lane. The Tsi578 also has the ability to internally boost the received signal. This functionality is described in the following sections. 3.7.1 Transmit Drive Level and Equalization The Tsi578 has programmable drive strengths and de-emphasis of a transmit lane. This ability adjusts for the electrical characteristics that can degrade the signal quality of a link which connects a device to the Tsi578. Decreasing the drive strength of signals also provides the ability to reduce the power consumption of a port. The drive strength current of each lane can be controlled through the TX_LVL field in the “SRIO MAC x SerDes Configuration Global” on page 372, and the TX_BOOST field in the “SRIO MAC x SerDes Configuration Channel 0” on page 363 (see Figure 14). The de-emphasis functionality can be programmed by the TX_BOOST field in the “SRIO MAC x SerDes Configuration Channel 0” on page 363. The TX_BOOST field controls the drive level of subsequent non-transitional bits with respect to the transitional ones. The amount of de-emphasis is specified as a ratio of the de-emphasis drive strength to the TX_LVL drive strength, in steps of ~0.37dB. The Nominal Drive Level is 1.0 V +/-10%. Refer to the Tsi578 Hardware Manual for the more information. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 78 3. Serial RapidIO Electrical Interface > Programmable Transmit and Receive Equalization The formula for calculating the TX_BOOST is shown in “SRIO MAC x SerDes Configuration Channel 0” on page 363. TheTX_LVL[4:0] register affects the Tx signal swing. For normal operation, the TX_LVL should be set at a minimum of 1 V, and for long reach compliance, TX_LVL can be programmed up to 1.26 V. Figure 14: Drive Strength and Equalization Waveform TX_BOOST) 1.026mV (TX_LVL) 3.7.2 Receive Equalization The received signal can be internally boosted in each receiver by controlling the register RX_EQ_VAL field in the “SRIO MAC x SerDes Configuration Channel 0” on page 363. The equation involving the 3-bit values of the register field are described by: • Receiver boost = (RX_EQ_VAL + 1)*0.5 dB For example, setting RX_EQ_VAL[2:0] = 3’b100 results in a 2.5dB boost of the received signal. This boost is internal to the device and is useful in improving the signal at the slicer when the signal arriving at the pins are degraded. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Port Loopback Testing 3.8 79 Port Loopback Testing The Tsi578’s serial RapidIO ports support the following kinds of loopback: • Digital equipment loopback • Logical line loopback Figure 15 shows where each loopback is implemented in the Tsi578. Figure 15: Tsi578 Loopbacks More RapidIO Ports Internal Switching Fabric Logical Line Loopback Digital Equipment Loopback 8B/10B Enc 8B/10B Dec 8B/10B Enc PRBS Gen PRBS Gen SerDes Lane A Integrated Device Technology www.idt.com Odd Numbered Ports (1x mode only) Serial RapidIO Physical and Transport Layers Even-numbered Ports (4x mode or 1x mode) 8B/10B Dec PRBS Chk 8B/10B Enc PRBS Gen 8B/10B Dec PRBS Chk 8B/10B Enc PRBS Gen 8B/10B Dec PRBS Chk PRBS Chk SerDes Lane B SerDes Lane C SerDes Lane D Tsi578 User Manual June 6, 2016 80 3.8.1 3. Serial RapidIO Electrical Interface > Bit Error Rate Testing (BERT) Digital Equipment Loopback Digital equipment loopback is enabled on a per-port basis through the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. When this form of loopback is enabled, the serial port transmit logic is connected to the receive logic just before the 8B/10B encoder and transmitter. Digital equipment loopback requires the use of packets and a correctly configured lookup table. The Bit Error Rate Tester patterns cannot be used when in Digital Equipment Loopback mode. The SerDes does not have to be trained or operational for this loopback to function since the SerDes PHY is not included in the data path. All incoming data for the port on its external link is ignored when digital equipment loopback is enabled. 3.8.2 Logical Line Loopback Logical line loopback causes a packet sent into the Tsi578’s internal switching fabric to be directed back to the originating port. To cause packets to loop back in this fashion, configure the lookup tables (LUTs) so the destination IDs are destined for the incoming port. For more information on LUT programming, refer to “Lookup Tables”. 3.9 Bit Error Rate Testing (BERT) The RapidIO ports on the Tsi578 have a built-in bit error rate test (BERT). This test is based either on fixed symbols or on a pseudo-random bit sequence (PRBS). Each lane within a port has a pair of Pattern Generators and Pattern Matchers. BERT patterns are not framed RapidIO packets and, therefore, when running BERT testing in Tsi578 the word alignment has to be turned off. This can be completed by de-asserting RX_ALIGN_EN bit for the corresponding lane (see “SRIO MAC x SerDes Configuration Channel 0” on page 363). 3.9.1 BERT Pattern Generator The BERT Pattern Generator can generate different patterns when the link is put into test mode. Table 8 shows what patterns are supported by programming the MODE bit in the “SerDes Lane 0 Pattern Generator Control Register” on page 403. Table 8: Patterns Supported by Generator MODE Setting Description 0 Pattern Generator is disabled 1 15th order linear feedback shift register (LFSR) polynomial: x15 + x14 + 1 2 7th order LFSR polynomial: x7 + x6 + 1 3 Fixed 10-bit pattern from bottom of PAT0 field Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Bit Error Rate Testing (BERT) 81 Table 8: Patterns Supported by Generator MODE Setting Description 4 2 byte DC balanced pattern constructed as {PAT0, ~PAT0} 5 4 byte DC balanced pattern constructed as: {0x000, PAT0, 0x3FF, ~PAT0} 6:7 Reserved BERT testing is enabled on a per-bit lane basis, and normal traffic flow on the bit lane ceases when BERT testing is enabled. To enable BERT testing, program the “SerDes Lane 0 Pattern Generator Control Register” on page 403 to enable either normal operation, PRBS-based BERT, or fixed-pattern-based BERT. BERT testing must be performed across a link from one Tsi578 MAC to another Tsi578 MAC or between the Tsi578 and a device that supports the same polynomial equation. When testing a link on the Tsi578 with the BERT feature, the link partner device must support PRBS testing with at least one of the two polynomials shown in Table 8, or it must support fixed-pattern tests. Alternatively, the link partner must support some form of loopback to the Tsi578. Consult the appropriate documentation for other devices to determine if they support these features, and to determine how to configure them. Other PRBS test sequences may be unsuitable for testing in an AC coupled system. The PRBS pattern must ensure that it does not introduce baseline wander and cause an unrealistically high bit error rate. The PRBS patterns generated by the Tsi578 are DC balanced. 3.9.1.1 Disable SerDes Framing Depending on the type of testing required in the system, the SerDes framing function might need to be disabled in the Tsi578. For example, framing must be disabled if a BERT test is performed. To disable the framer, write to the RX_ALIGN_EN bit in the SMACx_CFG_CHy register (see “SRIO MAC x SerDes Configuration Channel 0”). Disabling this feature makes sure that data passes through the loopback path without being re-aligned to 10 bit codeword boundaries. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 82 3.9.2 3. Serial RapidIO Electrical Interface > Bit Error Rate Testing (BERT) BERT Pattern Matcher and Error Counter The pattern matcher is capable of synchronizing to and detecting erroneous bytes in the two LFSR patterns mentioned in Table 9. Erroneous bytes are counted in the error counter in the “SerDes Lane 0 Pattern Matcher Control Register” on page 407. Table 9: Patterns Supported by Matcher MODE Settings Description 0 Pattern Matcher and Error Counter are disabled 1 Expect 15th order lfsr polynomial: x15 + x14 + 1 2 Expect 7th order lfsr polynomial: x7 + x6 + 1 3 Expect d[n]=d[n-10] 4 Expect d[n]=!d[n-10] 5:7 reserved The Pattern Generator and Matcher are independently controllable within the same lane. They do not need to be enabled, or programmed, the same way. For example, the Tsi578 can transmit a different PRBS pattern than the pattern it is receiving. When the MODE field in the “SerDes Lane 0 Pattern Matcher Control Register” on page 407 is set to 3’b001 or 3’b010, the pattern matcher operates by generating the expected pattern and synchronizing to the incoming pattern. The Error Count (COUNT) field in the “SerDes Lane 0 Pattern Matcher Control Register” on page 407 is a 15-bit value. Together with the OV14 bit, a total of 222 - 27 - 1 errors can be reported. When the OV14 bit is set, the count value should be read as count*128. 3.9.3 Fixed Pattern-based BERT Fixed pattern-based BERT uses data in software-configurable registers to send an alternating pattern of 10-bit 8B10B code groups. Fixed pattern-based BERT does not produce error count results. Fixed patterns are programmed in the PAT0 field and selected by setting the appropriate MODE field in the “SerDes Lane 0 Pattern Generator Control Register” on page 403. The following three patterns are useful for BERT testing: • pat0 = 1010101010 creates a high-frequency pattern, with SMACx_PG_CTL.mode=3’b011 • pat0 = 0011111000, ~pat0 = 1100000111 creates a low-frequency pattern, with SMACx_PG_CTL.mode=3’b100 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 3. Serial RapidIO Electrical Interface > Bit Error Rate Testing (BERT) 3.9.3.1 83 Fixed Pattern-based BERT — Transmitter Configuration To configure a Tsi578 transmitter for fixed-pattern BERT operation: 3.9.3.2 • Write the bit stream to be transmitted into the PAT0 field in the “SerDes Lane 0 Pattern Generator Control Register” on page 403. • Set MODE to the desired fixed pattern mode (MODE=011:100). • Setting this field causes the software defined pattern to transmit. Fixed Pattern-based BERT — Receiver Configuration The Pattern Matcher can only match fixed-pattern mode of {PAT0,PAT0} and {PAT0, ~PAT0}. The error counting method is the same as described in “BERT Pattern Matcher and Error Counter”. 3.9.4 • Tell the transmitter to stop sending PRBS pattern. • Re-enable the receiver's framer by writing to the RX_ALIGN_EN bit in the SMACx_CFG_CH{0..3} register. Using PRBS Scripts for the Transmitters and Receivers IDT provides PRBS scripts in “PRBS Scripts”. All of the PRBS scripts affect all of the ports, therefore editing the files to comment out the respective transmitting and receiving ports where testing is not desired is required. The following sequence must be followed when using the PRBS scripts: • Turn on the desired PRBS transmitter with Tsi578_start_prbs_all.txt. • In the receiving port, turn off the framer using the Tsi578_framer_disable.txt script. • In the receiving port sync the pattern matcher with the incoming PRBS stream using the Tsi578_sync_prbs_all.txt script • Read the error count registers. These registers have the following characteristics: — Two reads are required in order to obtain the count because the registers are pipelined. — The registers must be cleared before use. The registers must be cleared because errors that may have occurred on the port are counted and the registers can contain non-zero values at the start of PRBS testing. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 84 Tsi578 User Manual June 6, 2016 3. Serial RapidIO Electrical Interface > Bit Error Rate Testing (BERT) Integrated Device Technology www.idt.com 85 4. Internal Switching Fabric This chapter describes the main features and functions of the Tsi578’s Internal Switching Fabric (ISF). It includes the following information: 4.1 • “Overview” on page 85 • “Functional Behavior” on page 86 • “Arbitration for Egress Port” on page 88 Overview The Internal Switching Fabric (ISF) is the crossbar switching matrix at the core of the Tsi578. It transfers packets from ingress ports to egress ports and prioritizes traffic based on the RapidIO priority associated with a packet and port congestion. The ISF has the following features: • Full-duplex, non-blocking, crossbar-based switch fabric • 10 Gbits/s fabric ports allow up to 10x internal speedup • Manages head-of-line blocking on each port • Cut-through and store-and-forward switching of variable-length packets Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 86 4.2 4. Internal Switching Fabric > Functional Behavior Functional Behavior The ISF is responsible for transporting packets from an ingress port to an egress port and to and from the multicast engine. When RapidIO packets arrive at the ingress ports, the Tsi578 performs several tests to ensure the packet is valid. If a packet passes these tests, the ingress port consults its destination ID lookup table (LUT) to determine the egress port for the packet. The ISF transfers entire packets without interruption in store-and-forward mode (for more information, see “Transfer Modes” on page 87). Ti p Refer to the “Serial RapidIO Interface” on page 35 for more information how RapidIO packets are tested as valid. The ISF is a crossbar switch, which means that an ingress port can only send one packet at a time to the ISF, and an egress port can only receive one packet at a time from the ISF. However, the ISF can simultaneously transport packets from multiple independent ingress ports and egress port pairs simultaneously. This architecture has no shared memory area that holds packets. Since many ingress ports can attempt to send a packet to the same egress port, queuing is required at the ingress ports. Special arbitration algorithms at both the ingress and egress sides of the fabric ensure that head-of-line blocking is avoided in these queues. Queuing is also required at the egress ports. Packets can accumulate when an egress port has to re-transmit a packet (for example, due to a CRC error), or when a high-bandwidth ingress port sends traffic to a lower-bandwidth egress port. Queuing is also required to support multicast functionality. The ISF supports dedicated connections between each ingress port and the multicast work queue and a dedicated connection between the work queue and the broadcast buffers. This allows packets to be replicated in parallel. For more information on multicast, refer to “Multicast” on page 103. Figure 16 illustrates a conceptual block diagram, showing the relationship of the components within the ISF. Figure 16: ISF Block Diagram Packet Data Received From Ingress Interfaces “VOQ” Packet Data Sent To Egress Interfaces Switching Fabric “VOQ” (Fully connected mesh) “VOQ” RR and SP Schedulers Source Port Modules Tsi578 User Manual June 6, 2016 Destination Arbiters Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Functional Behavior 4.2.1 87 Transfer Modes The ISF supports both cut-through and store-and-forward transfer modes. These modes are selectable on a per-port basis. By default, all ports are configured for store-and-forward mode. To change the configuration, write the TRANS_MODE field in the “RapidIO Port x Control Independent Register” on page 319 when traffic is not flowing through the port. 4.2.1.1 Store-and-Forward Mode When a port is configured for store-and-forward mode, the port must receive the entire packet before the ISF delivers the packet to an egress port. This increases the latency of all packets received on the port. The increase in latency is directly proportional to the packet size and bit rate of the port. Ti 4.2.1.2 p In store and forward mode, the incoming packet is not sent to the ISF until the whole packet is received. Cut-through Mode When a port is configured for cut-through mode, the port is permitted to start sending the packet before the packet has fully arrived at the Tsi578. This is possible because the RapidIO destination ID (routing information) appears near the front of a RapidIO packet. Ti p In cut-through mode, the incoming packet is forwarded through the switch as soon as the routing information is received. Congestion Configuring a port for cut-through mode does not guarantee that the packet is sent to the ISF immediately after the destination ID arrives for the packet. Congestion in the ISF can mean that some or all of the packet is received before the switching operation begins. Cut-through mode, generally, provides better system performance. However, in cases where there is a mix of high-speed and low-speed ports, a packet sent from a low-speed port to a high-speed port in cut-through mode prevents the high-speed port from maximizing its output bandwidth. If other ports are also sending to the same destination, the high speed ingress ports could suffer a drop in throughput. Congestion Example In this congestion example the following parameters are true: • Port 0 is currently sending Packet #1 to port 2 • Packet #2, also destined for port 2, starts to arrive on port 1 Packet #2 must wait for the Packet #1 to finish before it has access to port 2. Some or all of Packet #2 must be buffered. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 88 4.3 4. Internal Switching Fabric > Arbitration for Egress Port Arbitration for Egress Port When multiple ingress ports need to send a packet to the same egress port at the same time, the egress port must make an arbitration decision about which packet to accept. An output arbiter exists for each egress port. The output arbiters work in conjunction with the input arbiters to avoid head-of-line (HOL) blocking and maximize throughput. When the multicast engine is used, the output arbiter allows system designers to control the maximum number of sequential multicast or non-multicast (unicast) packets that are accepted for a given priority. The egress port arbiter abides by the RapidIO buffer control rules. It allows the buffer controls to be configured to improve throughput. Two arbitration schemes are employed to handle traffic from the ingress and multicast ports, namely Strict Priority and Weighted Round Robin (see Figure 17). Only HOL packets at the ingress queues or broadcast buffers are considered for arbitration. Figure 17: Egress Arbitration: Weighted Round Robin and Strict Priority port#0 packet Priority 3 Packets weight choose_UC/choose_MC port#1 packet WRR Pri ori ty 3 BroadcastBuffer(MC) (hi gh e st) P ac ket Priority 2 (high) Packet Arbitration Result SP Priority 1 (low) Packet to egress buffer port#0 packet Priority 0 Packets weight choose_UC/ choose_MC port#1 packet WRR P ri t y ri o 0( P t) es w o l ac t ke BroadcastBuffer(MC) 4.3.1 Strict Priority Arbitration The ISF always considers packet priority with a strict priority (SP) service algorithm. The output arbiters ensure that all traffic with RapidIO priority N is sent before any traffic with RapidIO priority N-1. Ti p Refer to the RapidIO Interconnect Specification (Revision 1.3) for more information on packet arbitration. The SP arbiter gives preference to the highest priority packets among the egress ports. As long as priority 3 packets are being presented for arbitration by any port, those packets are accepted ahead of any priority 2 packets. Similar behavior holds for priority 2 packets being chosen over priority 1; and priority 1 over priority 0 packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Arbitration for Egress Port 89 Priority 3 packets from a given port are always transmitted when the port has its turn. However, priority 2 or lower priority packets may not be sent to an egress port when the number of free buffer associated with that particular port is equal or smaller than the watermark for that particular priority. For more information, see “Egress Watermark” on page 92. 4.3.2 Weighted Round Robin (WRR) Arbitration Within the same priority group, the Weighted Round Robin (WRR) arbiter at each egress port decides which ingress port it receives packets from. This WRR arbiter is a modified Round Robin arbiter with the option to assign different weights on Unicast or Multicast traffic. There are four WRR arbiters per egress port, one for each priority. Figure 18: Weighted Round Robin Arbiter per Priority Group (Unicast Traffic) Port#0 RR Port#7 packets output to Strict Priority 0 Multicast Traffic 1 Chosen Packet Counter WRR_EN chosen_pkc_sent weight_reached count disable datapath non-datapath chosen_UC/chosen_MC weight WRR_EN The conceptual block diagram of the WRR arbiter is shown in Figure 18. The same arbiter exists for each Priority Group. Depending on the setting of WRR_EN, the Multicast Traffic can participate in the Round Robin arbiter. The WRR arbiter consists of a Round Robin arbiter which services its inputs sequentially, starting at Port#0 on reset. The Chosen Packet Counter is only used for weighted operation between multicast and unicast transactions. Otherwise, the RR arbiter outputs are used. If the system has no preferred traffic, WRR_EN is de-asserted (see “Port x Prefer Unicast and Multicast Packet Prio 0 Register” on page 398), the multicast packets are treated as unicast packets. Packets from each port, including the multicast ones (if available) are allowed to proceed in order, one after the other, to the strict priority arbitration. The average probability of multicast packets being serviced, with equal traffic load among multicast and unicast ports, is one out of thirteen when operating in 1x mode with 16 ports (~5.89%) which is the same as a unicast port. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 90 4. Internal Switching Fabric > Arbitration for Egress Port When weighted operation is required, WRR_EN is asserted (WRR_EN=1). Then the type and quantity of preferred traffic is selected by programming the CHOOSE_UC bit and the minimum number of packets allocated for the chosen traffic on the egress port using the WEIGHT field in the “Port x Prefer Unicast and Multicast Packet Prio 0 Register” on page 398. These two register values set the parameters of operation for the Chosen Packet Counter inside the WRR arbiter. The CHOOSE_UC (CHOOSE_MC) value determines which type of traffic is selected to be favored (0= Multicast, 1 = Unicast). The WEIGHT value determines the number of the packets of the chosen type are to be sent in between non-chosen ones. Every time a chosen packet (either multicast or unicast) is sent, the Chosen Packet Counter is notified. The chosen packets are selected for transmission as long as the WEIGHT value is not reached. Once the WEIGHT value is reached, a non-chosen packet is selected instead and the Chose Packet Counter is reset. In the case when no chosen packet is available when its opportunity arises, the WRR arbiter automatically selects the non-chosen packets. Similar behaviour applies to non-chosen packet. When the opportunity to transmit non-chosen packets arises, and there is none available, a packet of the chosen type is sent. However, this does not consume the original opportunity allocated. 4.3.2.1 Examples of WRR Arbitration A few examples of register settings for the WRR arbiter is shown in Table 10. Table 10: Sample Register settings for WRR in a given priority group (WRR_EN=1)a WEIGHT % of Multicast Packets Sent to SP Arbiter % of Unicast Packets Sent to SP Arbiter Packet Sequence (M = Multicast, U = Unicast) 0 0 0 100 ...UUUUUUUU... 0 1 50 50 ...UMUMUMUM... 0 15 93.75 6.25 ...MUMMMMMMMMMMMMMMMUM... 1 0 100 0 ...MMMMMMMM... CHOOSE_UC/ CHOOSE_MC a. The percent values in the table assumes all opportunity for transmission is filled by either the selected or un-selected types. When there is 100% utilization of either unicast or multicast, lack of transfer of the other type of packet can be encountered in the system. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Packet Queuing 4.4 91 Packet Queuing The Tsi578 has a queuing system on both the ingress and egress ports. Figure 19: Ingress and Egress Packet Queues in Tsi578 Egress Packet Queue Ingress Packet Queue ISF 4.4.1 Output Queuing on the Egress Port Each egress port has a queue that holds up to eight packets. This buffer is required because packets may need re-transmitting. The buffer is also necessary to store the incoming packets when the egress port has a slower baud rate than the ingress port. The depth of the buffer queue dictates the switch fabric flow control. This flow control determines how many packets of a certain priority an egress port can receive. In the event that the output queue is full, the ingress port is notified and must begin queuing packets. If the ingress port runs out of buffers for packets as well, RapidIO link level flow control (packet retries) is activated on the ingress RapidIO port. Ti p For more information on packet retries, refer to RapidIO Interconnect Specification (Revision 1.3). Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 92 4.4.1.1 4. Internal Switching Fabric > Packet Queuing Egress Watermark The ISF egress arbiter generates flow control for a given priority of traffic based on watermarks. Watermarks are defined for priority 0, 1, and 2 packets (no watermark is defined for priority 3 packets because they are always accepted whenever there are free buffers). The watermark values are programmable and are located in “RapidIO Port x ISF Watermarks” on page 397. Rules for Programming Watermarks The following rules are applied to Tsi578 watermarks: • No watermark is associated with Priority 3 packets • A priority x packet is accepted in the buffer if the number of free buffers is greater than the programmed watermark of the associated priority. For example, when the PRIO1WM field is programmed to three, a priority 1 packet is accepted only when there are four or more free buffers. • The three programmed watermarks (PRIO0WM, PRIO1WM, and PRIO2WM) must contain values where PRIO0WM > PRIO1WM > PRIO2WM > 0 at all times. • The watermarks for the three priorities must allow for the following minimum levels: — PRIO2WM >= 1 — PRIO1WM >= 2 — PRIO0WM >= 3 Violating any one of the watermark rules creates a deadlock situation in the system. The hierarchy of watermarks ensures that packets of lower priority can never consume all buffers and prevent packets of higher priority from being transmitted. With the correct setting of the watermarks, there is at least one priority 3 packet in a full buffer (that is, if all buffers are filled, then at least one of the buffers must be occupied by a priority 3 packet). Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Packet Queuing 93 Two examples are given in Table 11. The first example describes the default setting of the three watermarks. This maximizes the number of buffers that can accept lower priority packets, which maximizes the throughput of these priorities. The second example describes a customized setting which favors the priority 3 and 2 traffic at the expense of the throughput of priority 1 and 0 packets. Table 11: Examples of Use of Watermarks Example One: Example Two: PRIO2WM = 1 PRIO2WM = 2 PRIO1WM = 2 PRIO1WM = 4 PRIO0WM = 3 PRIO0WM = 5 Packet Buffers Available Packet Priority that can be Accepted Packet Priority that can be Accepted 8 0, 1, 2, 3 0, 1, 2, 3 7 0, 1, 2, 3 0, 1, 2, 3 6 0, 1, 2, 3 0, 1, 2, 3 5 0, 1, 2, 3 1, 2, 3 4 0, 1, 2, 3 2, 3 3 1, 2, 3 2, 3 2 2, 3 3 1 3 3 0 none none In some systems, it is necessary to guarantee maximum throughput for a burst (continuous sequence) of packets at the same priority. In a congested system, it is possible that only one buffer is available for these packets. This can restrict throughput on the egress port, since while one packet in the burst is being transmitted and is awaiting acknowledgment, another packet in the burst cannot be accepted or transmitted. Watermarks can be used to guarantee that two buffers are available for these packets. When two buffers are available, while one packet is transmitted and awaits acknowledgement another packet can be accepted. This leads to an increase in throughput for packets in the burst. The packet offered for selection by the output port is subject to the input queuing arbitration. For information on how the ingress port selects which packet to offer for transmission, see “Input Arbitration” on page 95. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 94 4.4.1.2 4. Internal Switching Fabric > Packet Queuing Transmitting Packets from the Egress Port to the Link Partner Packets in the output queue are transmitted on the RapidIO link in first-come, first-served (FCFS) order (except during re-transmission). Retransmission represents an opportunity for reordering operations as described in input arbitration (see “Input Queue for the ISF Port” on page 94). Whenever a packet is retried by the link partner, the oldest of those packets with the highest priority in the egress buffer is selected for transmission. When a port cannot transmit packets, its output queue becomes full. Since the depth of this queue is used to manage flow control across the internal fabric, a mechanism is required to ensure that the fabric does not eventually suffer performance degradation when a port is unable to retire its packets. Inability to retire packets can be caused by a powered down port or the port being in a error state. These states cause the following issues: 4.4.2 • When a port is powered down, it flushes its buffer and continues to accept packets from the ISF. Packets accepted by a powered down port are silently discarded. • When a port does not enter a normal operating mode with its link partner, this can be detected and the impact to the rest of the system is limited. For more information on detection and recovery from non-operative links, refer to “Loss of Lane Synchronization” on page 62. Input Queue for the ISF Port Each ingress port has a queue that holds up to eight packets. Buffering is required to deal with any congestion in the ISF. Since the ISF is a crossbar switch, each egress port can receive one packet from the ISF at a time. If multiple ingress ports need to send to the same egress port, all but one of the ingress ports must buffer its packet and try to transfer it at a later time. 4.4.2.1 Ingress Watermarks Similar to the egress port, the ingress port generates flow control for a given priority of traffic based on a programmable number of free buffers using watermark. Watermarks can be programmed for priority 0, 1 and 2 packets. Priority 3 packets are always accepted whenever there are free buffers. The “RapidIO Port x RapidIO Watermarks” on page 313 programs watermarks for the ingress port. The rules for programming the Ingress Watermarks are the same as in the egress. These rules and examples can be found in “Egress Watermark” on page 92 This hierarchy of watermarks ensures that packets of lower priority cannot consume all buffers and prevent packets of higher priority from passing them. For example, if all buffers are filled, then at least one of the buffers must be occupied by a packet of priority 3. Since priority 3 is the highest priority in the system, the priority 3 packet should be given the first opportunity to make forward progress. The default watermark values are 1 for priority 2, 2 for priority 1, and 3 for priority 0. This maximizes the number of buffers that can accept lower priority packets, which maximizes the throughput of these packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Packet Queuing 95 In some systems, it is necessary to guarantee maximum throughput for a burst (continuous sequence) of packets at the same priority. In a congested system, it is possible that only one buffer is available for these packets. This can restrict throughput on the egress port, since while one packet in the burst is being transmitted and is awaiting acknowledgment, another packet in the burst cannot be accepted or transmitted. Watermarks can be used to guarantee that two buffers are available for these packets. When two buffers are available, while one packet is transmitted and awaits acknowledgement another packet can be accepted. This leads to an increase in throughput for packets in the burst. If a packet cannot be admitted by the ingress buffer, the packet is dropped and a RETRY is sent to the link partner. The RETRY control symbol begin transmission within 12 SYS_CLK cycles of the reception of the first 4 bytes of the packet. This allows the link partner to select another packet for transmission that has a higher probability of being accepted by the link partner. The Tsi578 provides performance registers that system software can use to determine the extent of input congestion on the switch (refer to “IDT-Specific Performance Registers” on page 331). Table 11 on page 93 shows which priorities of packets can be accepted given the number of free buffers. 4.4.3 Input Arbitration When packets are placed in a single input queue, head-of-line (HOL) blocking can result. HOL occurs when the packet at the head of a queue is blocked, and the packets must remain in the same order. This means that no packet in the queue can be sent across the ISF, even if all the packets, save the first, have an uncongested path to their respective destinations. The ISF manages HOL blocking by reordering packets in a manner compliant with the RapidIO Interconnect Specification (Revision 1.3). This technique may allow another packet to proceed if the packet at the head of a queue is blocked, depending on the arbitration mode selected. In other words the packets are reordered in the queue, but this reordering never violates the RapidIO packet ordering rules. Three modes are supported and can be configured with the IN_ARB_MODE field in the “Fabric Control Register” on page 380: • First come, first served (default) • Strict Priority #1 • Strict Priority #2 Each time the internal switching fabric reorders a packet within its queues1, the Tsi578 increments a 16-bit counter field (CTR) in the “RapidIO Port x Reordering Counter Register” on page 360 on the affected port. This value can be monitored as an indication of the level of switching congestion. The register also contains a threshold. When the counter is incremented and its new value equals the threshold, the Tsi578 raises the maskable INB_RDR interrupt. This interrupt is masked with the “RapidIO Port x Interrupt Status Register” on page 326. The number of times a packet is reordered is configurable (see “Reorder Limiting” on page 97). 1. Counting the number of times a packet is reordered within a queue is different from counting the number of times packets are actually sent out of order. The switching fabric might reorder the queue several times before finding one packet to send. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 96 4.4.3.1 4. Internal Switching Fabric > Packet Queuing First Come, First Served Mode In this mode, packets flow through the ingress queues in order unless reordering is required to manage head-of-line blocking. The packet closest to the head of the queue that can make progress is selected to make progress regardless of its priority. Reordering of packets only occurs if the packet at the head of the queue is blocked and there is at least one packet that can make progress. Reordering of packets does not occur if there is no other packets in the buffer. The reordering limit impacts which packet can be chosen (see “Reorder Limiting” on page 97). This input arbitration mode can produce the best throughput when prioritization of traffic is not important. 4.4.3.2 Strict Priority One In this mode, higher priority packets are served ahead of lower priority packets if the higher priority packets are not blocked. Write the IN_ARB_MODE field in the “Fabric Control Register” on page 380 to select this mode. In this mode, reordering operations only occur when the head of the queue is blocked and there is a packet request with a higher precedence (according to the rules in “Reorder Limiting” on page 97) which exists in the queue. The reordering limit impacts which packet can be chosen (see “Reorder Limiting” on page 97). The arbiter selects a packet to compete in egress arbitration based on the following rules: • Select the priority 3 packet that can be accepted by its destination fabric port and is closest to the head of the queue; • Else if there are no such packets, Select the priority 2 packet that can be accepted by its destination fabric port and is closest to the head of the queue; • Else if there are no such packets, Select the priority 1 packet that can be accepted by its destination fabric port and is closest to the head of the queue; • Else if there are no such packets, Select the priority 0 packet that can be accepted by its destination fabric port and is closest to the head of the queue; • Else if there are no such packets, Select the priority 3 packet closest to the head of the queue; Note that this packet cannot make progress. • Else if there are no such packets, Select the priority 2 packet closest to the head of the queue; Note that this packet cannot make progress. • Else if there are no such packets, Select the priority 1 packet closest to the head of the queue; Note that this packet cannot make progress. • Else if there are no such packets, Select the priority 0 packet closest to the head of the queue.Note that this packet cannot make progress. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Packet Queuing 4.4.3.3 97 Strict Priority Two In this mode, higher priority packets are served ahead of lower priority packets, even when the high priority packets are blocked. This mode has decreased throughput, but does have the lowest latency on high priority packets. In this mode, reorder operations only occur when the head of the queue is blocked and there is a packet request with a higher precedence (according to the rules in “Reorder Limiting” on page 97) which exists in the queue. The arbiter selects a packet to compete in egress arbitration based on the following rules: 4.4.3.4 • Select the priority 3 packet that can be accepted by its destination fabric port and is closest to the head of the queue; • Else if there are no such packets, Select the priority 3 packet closest to the head of the queue; Note that this packet cannot make progress. This means all priority 3 packets have to be out of queue before looking at other levels, even if priority 3 packet cannot make progress. • Else if there are no such packets, Select the priority 2 packet that can be accepted by its destination fabric port and is closest to the head of the queue. • Else if there are no such packets, Select the priority 2 packet closest to the head of the queue; Note that this packet cannot make progress. • Else if there are no such packets, Select the priority 1 packet that can be accepted by its destination fabric port and is closest to the head of the queue; • Else if there are no such packets, Select the priority 1 packet closest to the head of the queue; Note that this packet cannot make progress. • Else if there are no such packets, Select the priority 0 packet that can be accepted by its destination fabric port and is closest to the head of the queue; • Else if there are no such packets, Select the priority 0 packet closest to the head of the queue. Note that this packet cannot make progress. Reorder Limiting When packets leave an input queue in other than first-come first-served order, a packet is said to have been reordered. Reordering occurs as described in the previous sections on input arbitration algorithms: “First Come, First Served Mode” on page 96, “Strict Priority One” on page 96, and “Strict Priority Two” on page 97. If a packet is reordered, that packet is sent earlier than it would otherwise be sent, some packets are sent later than would otherwise be sent, and others are sent in the same relative order. For example, if the fifth packet to arrive at an ingress port is sent first, the first, second, third, and fourth packets are delayed while the sixth, seventh, and eighth packets are not affected. Ti p The Tsi578 never violates the RapidIO protocol when it selects the switching order for packets. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 98 4. Internal Switching Fabric > Packet Queuing Reorder limiting prevents excessive delays of a packet by packets of lower or equal priority. Reorder limiting does not prevent delays of a packet by packets of higher priority. When reorder limiting is enabled, each time a packet X is delayed in the queue because a lower or same priority packet was sent earlier, the fabric decrements the reorder counter. When the packet reordered ahead of packet X has a higher priority than packet X, the reorder counter of packet X is not decremented. Refer to “Fabric Control Register” on page 380 for more information. When the reorder counter for packet X reaches 0, no packets of lower or same priority are permitted to be reordered ahead of packet X. When the reorder counter of packet X is 0, packet X must be transmitted ahead of all other packets of lower or equal priority that are positioned after packet X in the queue. Higher priority packets which appear after packet X in the queue can cause the continued delay of packet X. Higher priority packets can always be reordered ahead of packet X, whatever the value of the reorder counter of packet X. One of the properties of reorder limiting is that when the reorder counter of a packet X of given priority Y reaches 0, the reorder counters of all packets with a priority equal or greater than Y that appear ahead of packet X in the queue must also be 0. Reorder limiting is disabled by default and can be enabled by setting the RDR_LIMIT_EN bit to 1 in the “Fabric Control Register” on page 380. Enabling this feature is recommended. Note that reorder limiting applies to all ports and all packets in the Tsi578. The number of times a packet is permitted to be delayed by a lower or same priority packet is configurable through the RDR_LIMIT register field in the “Fabric Control Register” on page 380. Note that reorder limiting can change the packet chosen by FCFS and Strict Priority 1 arbitration. For example, assume three packets, X1, X2 and X3, are held in the ingress queue in that order. Packets X1 and X2 have the same priority, and packet X3 has a higher priority. Packet X1 and X3 cannot make progress. Using Strict Priority 1 arbitration without reorder limiting results in packet X2 being reordered to the head of the queue. However, if the reorder limiting is used, and packet X1’s reorder limit counter has reached 0, then the Strict Priority 1 arbitration algorithm cannot select packet X2. Packet X3 is chosen in this case. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Packet Queuing 4.4.3.5 99 Transaction Error Acknowledge (TEA) A Transaction Error Acknowledge signal is implemented in the ISF request queue to control the time a packet can be at the head of the request queue. When an ingress packet at the head of the request queue sends a request to the ISF, a timer is started to keep track of the request time. If the timer value reaches a customer programmable threshold due to congestion at the destination port (defined in TEA_OUT bit in the “Fabric Control Register” on page 380), the TEA interrupt is asserted (maskable by TEA_INT_EN in “Fabric Control Register” on page 380 and “Fabric Interrupt Status Register” on page 382). The packet is removed from the request queue to free up space for ingress traffic and the transaction is deemed incomplete. The TEA error can also be reported back to the host by a port-write. Port-Write due to TEA can be disabled by either writing 1 in the PW_DIS bit in the “RapidIO Port x Mode CSR” on page 310 (which also turns off other port-writes), or by disabling the TEA interrupt generation by writing a 0 to the TEA_EN bit in the “Fabric Control Register” on page 380. When there is re-ordering in the request queue, the TEA timer is reset and counting starts with the new head-of-queue packet. 4.4.4 Input Queuing Model for the Multicast Work Queue The multicast work queue accepts packets from all of the ingress ports. The multicast work queue does not accept packets from the broadcast buffers. The multicast work queue accepts packets based on strict priority, as described in “Arbitration for Multicast Engine Ingress Port” on page 117. Any priority N packet is accepted before packets of priority N-1. Within each priority, the multicast work queue uses the round robin algorithm. The multicast work queue operates in strict First-In, First-Out (FIFO) order and has no watermarks associated with it. The multicast work queue always allows packets to cut-through to the broadcast buffer. Refer to “Cut-through Mode” on page 87 for more information. 4.4.4.1 Multicast Work Queue Ingress Flow Control Unlike the ingress port and egress port queues, the multicast work queue operates as a bounded buffer. Packets can begin at any point within the bounded buffer. For more information on the operation of the multicast work queue, refer to the Multicast chapter (see Section 5 on page 103). The multicast work queue has space for up to seven maximum sized (276 byte) packets, or 245 minimum sized (8 byte) packets. The multicast work queue ingress arbitration operates on the following two rules: • If there is not sufficient space for a maximum sized (276 byte) packet to be received, all ingress ports are signalled that no packets can be accepted by the multicast work queue. • If there is sufficient space for at least one maximum sized (276 byte) packet to be received, all ingress ports are signalled that packets of any priority can be accepted by the multicast work queue. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 100 4.4.5 4. Internal Switching Fabric > Packet Queuing Input Queuing Model for the Broadcast Buffer The broadcast buffer receives data from only one source - the multicast work queue. The broadcast buffer operates in strict First-In, First-Out (FIFO) order. The broadcast buffer does not use watermarks. The broadcast buffer always operates in store-and-forward mode. For more information, refer to “Store-and-Forward Mode” on page 87. 4.4.5.1 Broadcast Buffer Ingress Flow Control Like the multicast work queue, the broadcast buffer operates as a bounded buffer. Packets can begin at any point within the bounded buffer. For more information on the operation of the broadcast buffer, refer to “Multicast” on page 103. The broadcast buffer has space for 1 maximum sized (276 byte) packet, or up to 8 smaller packets. Up to 8 packets can be accepted, provided that their individual sizes, rounded up to the nearest multiple of 8 bytes, sum to less than 280 bytes. The broadcast buffer ingress arbitration operates on the following two rules: 4.4.6 • If there is not sufficient space for 8 more bytes of data to be received, the multicast work queue is signalled that no more packet data can be accepted by the broadcast buffer. • If there is sufficient space for 8 more bytes of data to be received, the multicast work queue is signalled that more packet data can be accepted by the broadcast buffer. Output Queuing Model for Multicast Both the multicast work queue and the broadcast buffer operate in First-In First-Out order. No packet reordering is performed. The multicast work queue always allows packets to cut-through to the broadcast buffers. This reduces the latency of multicast operations. Broadcast buffers always operate in store-and-forward mode. This ensures that packet transmission to the egress port is never delayed by packet replication. IDT recommends that multicast packets within a system all have the same priority. 4.4.7 ISF Bandwidth The ISF delivers full 10 Gbits/s of bandwidth in both transmit and receive directions. This is sufficient to handle a 4x Serial RapidIO port operation at 3.125 Gbits/s. ISF packets can be sent back-to-back, without interruption. Delays due to arbitration only occur for the first packet to be sent after a period when no packets were available for transmission. After the first packet has been sent, following packets can be sent back to back. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 4. Internal Switching Fabric > Packet Queuing 101 Bandwidth can be wasted during transfers in cut through mode. If the ingress port operates at a slower rate than the egress port, the egress port receives idles whenever the ingress port has not yet received data for transmission. However, during the transfer, the egress port cannot receive information from ports other than the egress port. Therefore, when transferring data between ports of different bandwidths, it is recommended that the slower port not operate in cut-through mode. Refer to the TRANS_MODE bit in “RapidIO Port x Control Independent Register” on page 319 for more information on how to control cut-through mode. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 102 Tsi578 User Manual June 6, 2016 4. Internal Switching Fabric > Packet Queuing Integrated Device Technology www.idt.com 103 5. Multicast This chapter describes the multicast features of the Tsi578. It includes the following information: 5.1 • “Overview” on page 103 • “Multicast Behavior Overview” on page 106 • “Multicast Group Tables” on page 110 • “Multicast Work Queue” on page 107 • “Broadcast Buffers” on page 107 • “Error Management of Multicast Packets” on page 118 • “Port Reset” on page 120 Overview The Tsi578 multicast functionality is compliant to the RapidIO Version 1.3 Part 11 Multicast Specification. 5.1.1 Multicast Operation In a multicast operation, packets are received at the speed of any ingress port (up to 10 Gbits/s) and broadcast at the speed of the egress ports (up to 10 Gbits/s for a 4x mode port operating at 3.125 Gbits/s) to multiple ports capable of accepting packets for transmission. The maximum amount of data that can be transmitted by the switch is 70 Gbits/s for seven egress ports operating at maximum width of 4x and a lane speed of of 3.125 Gbit/s, based on the the number of ports on the Tsi578. Packets are routed to the multicast engine based on their destinationID and Transaction Type (TT) field value. If no match is found for the destinationID and TT field, then the ingress lookup tables are used to route the packet. A maximum of eight different DestID/TT field combinations can be routed to the multicast engine. Each destinationID/TT set can be multicast to a different set of egress ports. A set of egress ports that packets are multicast to is called a multicast group and is represented by the multicast mask in the group table. A multicast packet is never sent out on the port that it was received on. Any number of ports can share the same multicast group. Multicast packets are accepted by egress ports based on priority. In the event that multicast and unicast traffic are competing for resources in the egress port, multicast specific egress arbitration can be used to favour multicast or unicast traffic. This allows a group of endpoints that need to multicast to each other to share the same multicast mask. 5.1.2 Features The Tsi578 supports multicast packet replication in accordance with RapidIO Specification Version 1.3, Part 11 Multicast. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 104 5. Multicast > Overview The Tsi578 includes the following features: • One multicast engine provides dedicated multicast resources without impacting throughput on the ports • Eight multicast groups • Sustained multicast output bandwidth, up to 10 Gbit/s per egress port • 10 Gbit/s of instantaneous multicast input bandwidth1 • Packets are replicated to each egress port in parallel • The multicast engine can accept bursts of traffic with different packet sizes • Arbitration at the egress port to allow management of resource contention between multicast or unicast traffic System behavior for the multicasting of packets which require responses is not defined in the RapidIO Interconnect Specification (Revision 1.3) - Part 11 Multicast Specification. 5.1.3 Multicast Operation with Multiple Tsi57x Switches Tsi57x multicast support is designed to allow information from a single source to be multicast efficiently over a tree topology within a RapidIO fabric (see Figure 20). When two or more Tsi57x switches are connected to each other, however, multicasting packets in both directions between the switches may create a dependency loop that causes a deadlock. Figure 20: Multicast Operation – Option 1 EP Multicast Packet Source EP Multicast Packets Multicast Packets Tsi57x MCE EP Multicast Packets Multicast Packets EP Multicast Packets EP EP Multicast Packets Tsi57x Tsi57x MCE MCE EP EP EP EP EP EP 1. All bandwidths assume the internal switching fabric is clocked at 156.25 MHz. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 5. Multicast > Overview 105 For systems that use multiple Tsi57x switches, the multicast engine (MCE) in each switch can be used provided that multicast packets are not sent between the switches. This can be accomplished by having the multicast source program the MCE in the switch it is directly connected to (see step 1 in Figure 21), and then initiate an additional unicast transaction to the MCE in the other switch (see step 2). Figure 21: Multicast Operation – Option 2 EP Multicast Packet Source 1 Multicast Packets MCE EP Multicast Packets 1 Multicast Packets 2 2 EP 5.1.4 Unicast Packets MCE EP EP Tsi57x Tsi57x Multicast Packets EP EP Multicast Packet Source EP Multicast Terminology The following table contains the terms used to describe the multicast functionality. Table 12: Multicast Terminology Term Multicast Group Definition A multicast group is a set of ports that must all receive a copy of a packet. A system can support multiple multicast groups, each of which is completely independent of the other (a group can have all, some, or no ports in common with another group). A multicast group is associated with a unique destinationID and TT of a packet. Note: A packet is never multicast back out of the port that it is received on, regardless of whether or not this port is included in the multicast group. Multicast Mask The set of egress ports in a multicast group. Multicast Vector The set of ports in a multicast group that will receive the multicast packets. The vector is used to control which broadcast buffers are loaded with the packet to be multicast. Original Packet A single multicast packet that arrives at a switch and gets replicated and sent to multiple egress ports according to the multicast mask. Packet Copy A copy of an original packet. The copies are sent out on the egress ports. Multicast Traffic Packets which are sent to the multicast engine from ingress ports, and packets which are received from the multicast engine by egress ports. Unicast Traffic All packets which are not sent to or received from the multicast engine. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 106 5.1.5 5. Multicast > Overview Multicast Behavior Overview The multicast operation involves the following blocks: • Multicast Engine • Multicast Group Table • Multicast Work Queue • Broadcast Buffer for each egress port • ISF ingress arbitration algorithms for the Multicast Port • ISF egress arbitration algorithms for each egress port The operation of the Work Queue and Broadcast Buffer is described in this section. For more information ingress/egress arbitration algorithms, refer to “Input Queuing Model for the Multicast Work Queue” on page 99, “Input Queuing Model for the Broadcast Buffer” on page 100, and “Output Queuing Model for Multicast” on page 100. Multicast packets received by an ingress port are routed to the Multicast Engine port based on the destination ID and transaction type (TT) field of the packet. A packet arriving at the Tsi578 is directed to the Multicast Engine (MCE) by the multicast group table on the packet’s ingress port. The multicast work queue selects a multicast group for the packet, again based on the packet’s destination ID and TT field. If the ingress port for the multicast packet is a part of the multicast group, the port is removed from the multicast vector. Once the multicast vector has been computed, the Work Queue transmits the original packet to the Broadcast Buffers associated with the ports in the vector. Transmission between the multicast work queue and the Broadcast Buffers uses a dedicated ISF path that is separate from those used to route unicast traffic. Once the packet copies have been completely received by all of the broadcast buffers in the multicast vector, each broadcast buffer arbitrates with its associated egress ports to accept the packet copy. The broadcast buffer begins to transmit the packet copy to the egress port’s buffer when the egress port signals that it is able to accept a packet. Packets can cut-through from the ingress port to the multicast work queue and from the multicast work queue to the broadcast buffers. However, a complete packet copy must be received by a broadcast buffer before it attempts to forward the packet copy to the egress port. Multicast packets are forwarded to the egress ports exactly as they were received. That is, the source and destination IDs are not altered by the Multicast engine. This means that the replicated packets emerge from the egress port with the same destination ID as the original packets. System designers must be aware of this characteristic of multicast packets because of the necessity that multiple endpoints own the same device ID in order to be able to accept multicast packets. The routing of unicast packets to a system-wide unique device ID is supported in a multicast application because endpoints are expected to support two or more device IDs in order to differentiate unicast from multicast packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 5. Multicast > Overview 5.1.6 107 Multicast Work Queue The multicast work queue accepts packets from ingress ports and forwards them to the broadcast buffers according to the multicast group table. The multicast work queue can store a maximum of 22081 bytes of packet data or seven maximum sized packets inside its buffer. Once the packet buffer has stored 1936 bytes of data, it forces the ISF to stop further packet transmission. For information on ISF arbitration for the multicast work queue, refer to “Input Queuing Model for the Multicast Work Queue” on page 99 and “Output Queuing Model for Multicast” on page 100. Once the first 8 bytes of a packet have been received by the multicast work queue, the destination ID and TT fields of the packet are examined and used by the multicast work queue to determine which multicast group's vector to process in order to replicate the packets. The multicast group table computes a multicast mask which indicates which ports the packet copies should be sent to. The ingress port where the original packet was received is always removed from the multicast mask to form the multicast vector. If the broadcast buffer for a port has detected a maximum latency violation, a system designer can optionally automatically remove this port from the multicast mask. For more information, refer to “Multicast Maximum Latency Timer” on page 119. When the multicast work queue has computed the multicast vector, it arbitrates to transmit packet copies to the broadcast buffers accordingly. The work queue always operates in a cut-through fashion. A packet is not dropped if it is STOMPed when it is received in the multicast work queue. The STOMPed packet is replicated to the broadcast buffers. Similarly, if a packet exceeds the time-to-live counter value in the ingress queue, it is replicated to the broadcast buffers by the multicast work queue. For more information on error scenarios, refer to “Error Management of Multicast Packets” on page 118. 5.1.7 Broadcast Buffers Each egress port has a dedicated broadcast buffer associated with it. The broadcast buffers accept packet copies from the multicast work queue, and forward the packet copies to the egress port. A broadcast buffer can accept one maximum sized packet (276 bytes) or up to eight smaller packets. Eight packets can only be accepted if the sizes of the packets, individually rounded up to the nearest multiple of eight, sum to less than 280 bytes. For more information on ISF arbitration for the broadcast buffers, refer to “Input Queuing Model for the Broadcast Buffer” on page 100 and “Output Queuing Model for Multicast” on page 100. The broadcast buffers wait until a packet has been completely received before starting arbitration with the egress port. 1. Packets are stored in an 8-byte boundary. Packets with length of non-multiple of 8-bytes is rounded up to the nearest multiple of 8 for storage in the buffer. The packets are not altered and are transmitted exactly as they are received. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 108 5. Multicast > Overview Once the egress port acknowledges the broadcast buffer’s request, the broadcast buffer transmits datums to the egress port at sustained rates of up to 10 Gbits/s1. The egress port receives the broadcast buffers data, and can start to transmit that data as soon as the first datum is received. Ti In RapidIO technology, a datum means a word of data sent in a single clock cycle. When the Tsi578 is in 4x mode, a datum is 32 bits and in 1x mode, a datum is 8 bits. p If a packet is STOMPed when it is received at the broadcast buffer, it is not dropped. The STOMPed packet is transmitted to the egress port. The broadcast buffer always sets the time-to-live counter value for a packet copy to the maximum value of seven. For more information, refer to “Error Management of Multicast Packets” on page 118. The following figure shows a step-by-step multicast operation through the Tsi578 with numbered descriptions of the events below the diagram. Figure 22: Multicast Packet Flow in the Tsi578 Broadcast Buffers Ingress Port Egress Arbitration Port 0 Port 0 7a 1 Egress Port 8a Internal Switch Fabric Port 1 9a Port 1 6 Port 2 7b 8b 7c 8c Port 2 9b Port 15 9c Multicast Arbitration 2 Port 15 4 3 Vector Computation Multicast Engine 5 Work Queue Group Tables 1. When the ISF clock speed is set to 156.25 MHz. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 5. Multicast > Overview 109 Description of events in the figure: 1. Port 1 receives a packet and consults its multicast group table. It determines that the packet is a multicast packet by examining the packet’s destination ID and TT fields. The packet ackID field is overwritten with the ingress port identifier. — A packet request is issued by Port 1 to the switch fabric requesting packet transmission to the ISF (MCE port). — The multicast packet is placed in the port’s ingress buffer. Multicast packets residing in the ingress buffer are subject to TEA as described in “Packet TEA” on page 118. Multicast packets residing in the ingress buffer are also subject to packet reordering. 2. The packet request competes for access to the Multicast Engine (MCE) and is granted transmission permission by the MCE specific arbiter. 3. Having won arbitration to the MCE, Port 1 sends the multicast packet through ISF to the MCE. The transfer occurs at 10 Gb/s1 and starts after the first 8 or 16 bytes of the multicast packet has been received in the ingress buffer (cut-through mode). 4. The multicast packet is buffered by the MCE in the multicast work queue. The multicast group is determined from the destinationID and TT fields of the packet and the vector computed for the multicast work queue. Multicast packets residing in the multicast work queue are not subject to reordering and are strictly processed in a FIFO manner. The multicast work queue operates in cut-through mode. 5. By consulting the multicast group table, Ports 0, 1, 2, and 15 are identified as members of the vector and as the receiving ports. If a destinationID in the multicast group table is disassociated while the packet with that destinationID is still in multicast work queue, the packet is silently dropped. — Because Port 1 is the ingress port which originates the multicast packet, as shown in the ackID, it is removed from the Multicast Mask. The resulting Multicast Vector indicates that the packet should be transmitted to Ports 0, 2, and 5. 6. The MCE transmits the multicast vector to the ISF. The ISF is responsible for broadcasting the packets to the broadcast buffers according to the multicast vector. The replication of the multicast packets can occur at a rate of up to 30 Gbps in 4x mode or 37.5 Gbps in 1x mode. Transmission of the packet copies to the selected Broadcast Buffers is a concurrent and parallel operation. 7. The individual broadcast buffers must fully buffer the packet copies before presenting the corresponding packet request to the destination arbiter (store and forward mode). Packet copies residing in the broadcast buffers are subject to multicast latency timeout as described in “Multicast Maximum Latency Timer” on page 119. However, they are not subject to packet reordering and are processed in a strict FIFO manner. 8. When the individual broadcast buffer is granted arbitration, the replicated multicast packet is transmitted to the egress buffer at a rate of up to 10 Gbps. Although represented by the same multicast vector, each individual broadcast buffer operates independently. 1. When the ISF clock speed is set to 156.25 MHz. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 110 5. Multicast > Multicast Group Tables 9. Once in the egress buffer, the packet copies are subjected to STOMP (“Multicast Packet Stomping” on page 118), and packet reordering. The packet copies at each egress ports are transmitted out from the egress buffer independent of each port. When packets are being transferred in cut-through mode, it is possible for the packet to have an error detected in it (that is, CRC), or for the packet to be STOMPed by the RapidIO link partner. In these cases, the packet is still accepted and replicated by the multicast work queue and stored in the broadcast buffers. The last datum in the packet is marked with a STOMP bit in the multicast work queue, the broadcast buffer, and the egress port buffer so that the packet is stomped when it is sent out. System behavior which requires responses from multicast packets is not defined in the RapidIO Interconnect Specification (Revision 1.3). 5.2 Multicast Group Tables Each ingress RapidIO port on the Tsi578 contains a multi-stage lookup table. The Tsi578 compares the incoming packet’s destination ID and TT field to the entries in the lookup table to determine the correct egress port. The destination ID and TT field in the packet uniquely identify a multicast group. The destination ID/TT number space for multicast groups is shared with the number space for unicast destinations. The first stage of the lookup table contains eight entries used only for multicast packets, and is called the multicast group table. This group table resides in both the ingress ports and the multicast engine. An entry is configured either to match a 16-bit destination ID (TT=0) or an 8-bit destination ID (TT=1). For example, to match both the 8-bit destination ID of five and the 16-bit destination ID of five requires two entries in the multicast group table. If the destination ID contained in an incoming packet matches any of the eight entries, the ingress port sends the packet to the multicast engine for replication. The matching table entry contains a list of ports (multicast mask) to which the multicast engine sends a copy of the packet. However, a packet copy is never sent out from the port that the original packet was received on, regardless of the contents of the port list. At the ingress port, if none of the multicast destination IDs in the group table match the packet’s destination ID, the Tsi578 assumes the packet is a unicast packet and consults the unicast lookup table. The eight entries in the multicast group table are configured in a multi-step process: 1. Add a set of ports to one of eight multicast masks through repeated writes to the Multicast Mask Configuration Register. The Tsi578 silently ignores attempts to configure masks greater than the mask number. The mask number is defined with the MAX_MASKS field of the “RapidIO Switch Multicast Information CAR” on page 257. The Tsi578 silently ignores attempts to add or remove non-existent port numbers to/from multicast masks. A non-existent port number is a port number greater than that which exists on the device. For the Tsi578, port numbers greater than 15 are ignored. It is possible to add and remove powered down or otherwise disabled ports to/from the multicast masks. 2. Write the destination ID that identifies the multicast group, and the multicast mask number from the previous step to the “RapidIO Multicast DestID Configuration Register” on page 265. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 5. Multicast > Multicast Group Tables 111 3. Write the “RapidIO Multicast DestID Association Register” on page 266, setting the LARGE field to indicate whether the destination ID is an 8-bit or a 16-bit ID; and setting the CMD field to 11. This associates the destination ID to the list of ports that must receive copies of the packet. Note that there must be a 1:1 association between destination IDs and multicast masks. In alignment with the RapidIO multicast specification, if multiple destination ID association operations occur for a multicast mask, the last association operation executed determines which destination ID and TT value is associated with a multicast mask. Ports can be removed from a multicast mask by writing the Multicast Mask Configuration Register, even when the mask is associated with a destination ID. If a port that is powered down or detected as faulty is a part of a multicast mask, packets are still replicated and sent to that port. However, the port silently drops the packets. Multicast groups can be deleted by breaking the association between destination IDs and multicast mask numbers through the “RapidIO Multicast DestID Configuration Register” on page 265 and “RapidIO Multicast DestID Association Register” on page 266. To execute either of the previous two operations (port removal or group deletion), the system software must remember what port is associated to which multicast masks and to which multicast mask number the destination ID is bound. If the software designer selects not to maintain a state table, it is possible to determine what multicast mask a destination ID/TT value is associated with through the use of Write-to-Verify commands. It is possible that a multicast mask has no ports selected, or the only port selected is the ingress port the original packet was received on. In this case, the multicast engine silently discards the packet. The following figure is a representation of the relationship between the destination ID, multicast group number, multicast vector, and egress port. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 112 5. Multicast > Multicast Group Tables Figure 23: Relationship Representation Switch Port Number Operating Mode 4x/1x/Power-down (PD) DEST_ID Large Small 0 1 2 3 1x 1x 4x N/A 4x N/A PD PD 1x Multicast Group Number 4 5 6 7 8 9 A B C 1x PD PD 4x D E F N/A PD PD 0 = No 1 = Yes Port Participating in Vector AB CD 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 xx EF 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 2 3 4 5 6 7 { { Multicast Group Table Multicast Vector Table Configured using the RIO Multicast DestID { Configuration Register Association between Multicast Group Number and egress port number performed using the RIO Multicast Mask Configuration Register "Large" field activated using the RIO Multicast { DestID Association Register 5.2.1 Configuring Basic Associations It is necessary to associate a destination ID with each multicast mask. For this example, assume the following system requirements: • The 16-bit destination ID 0x1234 needs to be associated with multicast mask 0. • The 8-bit destination ID 0x44 needs to be associated with multicast mask 1. • The 16-bit destination ID 0xFEED needs to be associated with multicast mask 2. In order to create the multicast mask associations, the following register accesses are required: The individual association operations can be performed in any order. 1. Set up the operation to associate destination ID 0x1234 with multicast mask 0 • Tsi578 User Manual June 6, 2016 Write the value 0x1234_0000 to the “RapidIO Multicast DestID Configuration Register” on page 265 Integrated Device Technology www.idt.com 5. Multicast > Multicast Group Tables 113 2. Associate destination ID 0x1234 with multicast mask 0 • Write the value 0x0000_00E0 to the “RapidIO Multicast DestID Association Register” on page 266 3. Set up the operation to associate destination ID 0x44 with multicast mask 1 • Write the value 0x0044_0001 to the RIO Multicast DestID Configuration Register 4. Associate destination ID 0x44 with multicast mask 1 • Write the value 0x0000_0060 to the RIO Multicast DestID Association Register 5. Set up the operation to associate destination ID 0xFEED with multicast mask 2 • Write the value 0xFEED_0002 to the RIO Multicast DestID Configuration Register 6. Associate destination ID 0xFEED with multicast mask 2 • 5.2.2 Write the value 0x0000_00E0 to the RIO Multicast DestID Association Register Configuring Multicast Masks This section discusses assigning an egress port list to a multicast mask. 5.2.2.1 Clearing Multicast Masks In this example, the state of the multicast masks is unknown, and therefore the masks must be cleared before being configured. In order to clear the masks the following register accesses are made: The accesses to the “RapidIO Multicast Mask Configuration Register” on page 263 can be performed in any order. 1. Remove all egress ports from multicast mask 0 • Write the value 0x0000_0040 to the Multicast Mask Configuration Register 2. Remove all ports from multicast mask 1 • Write the value 0x0001_0040 to the Multicast Mask Configuration Register 3. Remove all ports from multicast mask 2 • 5.2.2.2 Write the value 0x0002_0040 to the Multicast Mask Configuration Register Assigning Ports to Multicast Masks To configure mask 0 to multicast to ports 6 and 7, mask 1 to multicast to ports 3, 4 and 5, and mask 2 to multicast to every port, requires the following series of register accesses: The accesses to the “RapidIO Multicast Mask Configuration Register” on page 263 can be performed in any order. 1. Add port 6 to multicast mask 0 • Write the value 0x0000_0610 to the Multicast Mask Configuration Register 2. Add port 7 to multicast mask 0 • Write the value 0x0000_0710 to the Multicast Mask Configuration Register Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 114 5. Multicast > Multicast Group Tables 3. Add port 3 to multicast mask 1 • Write the value 0x0001_0310 to the Multicast Mask Configuration Register 4. Add port 4 to multicast mask 1 • Write the value 0x0001_0410 to the Multicast Mask Configuration Register 5. Add port 5 to multicast mask 1 • Write the value 0x0001_0510 to the Multicast Mask Configuration Register 6. Add all ports to multicast mask 2 • Write the value 0x0002_0050 to the Multicast Mask Configuration Register The following figure shows the completed configuration. Figure 24: Completed Tables at the End of Configuration Switch Port Number 3 4 5 6 7 8 9 Operating Mode 0 1 2 4x/1x/Power-down (PD) 1x 1x 4x N/A 4x N/A PD PD 1x 1x DEST_ID Multicast Mask Large Small Number A B C D E F 1x 1x 4x N/A PD PD 0 = No 1 = Yes Port Participating in Vector 12 34 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 xx 44 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 FE ED 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 4 5 6 { { 7 Multicast Group Table Multicast Vector Table { { Association between Multicast Group Number and egress port number performed using the RIO Multicast Mask Configuration Register Configured using the RIO Multicast DestID Configuration Register Tsi578 User Manual June 6, 2016 "Large" field activated using the RIO Multicast DestID Association Register Integrated Device Technology www.idt.com 5. Multicast > Multicast Group Tables 5.2.2.3 115 Removing a Port from a Multicast Mask In this example, the device attached to port four must be removed from the system. The following register accesses are used to modify multicast masks one and two to stop port four from being a multicast destination: The accesses to the “RapidIO Multicast Mask Configuration Register” on page 263 can be performed in any order. 1. Remove port 4 from multicast mask 1 • Write the value 0x0001_0420 to the Multicast Mask Configuration Register 2. Remove port 4 from multicast mask 2 • 5.2.2.4 Write the value 0x0002_0420 to the Multicast Mask Configuration Register Querying a Multicast Mask In this example, a system designer needs to determine which of the ports are included in multicast mask 2. The following accesses are to be performed to provide this information: In each case, the write operation setting up the ‘Write to Verify’ operation must be performed before the subsequent read to check the Port Present bit status. The individual multicast masks can be queried in any order. 1. Verify that port 0 is included in mask 2 • Write the value 0x0002_0000 to the Multicast Mask Configuration Register • Read the value 0x0002_0001 from the Multicast Mask Configuration Register 2. Verify that port 1 is included in mask 2 • Write the value 0x0002_0100 to the Multicast Mask Configuration Register • Read the value 0x0002_0101 from the Multicast Mask Configuration Register 3. Verify that port 2 is included in mask 2 • Write the value 0x0002_0200 to the Multicast Mask Configuration Register • Read the value 0x0002_0201 from the Multicast Mask Configuration Register 4. Verify that port 3 is included in mask 2 • Write the value 0x0002_0300 to the Multicast Mask Configuration Register • Read the value 0x0002_0301 from the Multicast Mask Configuration Register 5. Verify that port 4 is not included in mask 2 • Write the value 0x0002_0400 to the Multicast Mask Configuration Register • Read the value 0x0002_0400 from the Multicast Mask Configuration Register 6. Verify that port 5 is included in mask 2 • Write the value 0x0002_0500 to the Multicast Mask Configuration Register • Read the value 0x0002_0501 from the Multicast Mask Configuration Register Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 116 5. Multicast > Multicast Group Tables 7. Verify that port 6 is included in mask 2 • Write the value 0x0002_0600 to the Multicast Mask Configuration Register • Read the value 0x0002_0601 from the Multicast Mask Configuration Register 8. Verify that port 7 is included in mask 2 5.2.2.5 • Write the value 0x0002_0700 to the Multicast Mask Configuration Register • Read the value 0x0002_0701 from the Multicast Mask Configuration Register Removing a Destination ID to Multicast Mask Association In this example, assume packets to destination ID 0xFF02 on port 4 should no longer be allowed to multicast to all nodes (multicast mask 2). To remove destination ID 0xFF02 from being associated with multicast mask 2, the following register accesses need to be performed in order. 1. Set up the operation to remove the association between destination ID 0xFF02 and multicast mask 2. — Write the value 0xFF02_0002 to the “RapidIO Multicast DestID Configuration Register” 2. Remove the association between destination ID 0xFF02 and multicast mask 2. — Write the value 0x0000_00C0 to the “RapidIO Multicast DestID Association Register” When CMD value 0b10 is written (which indicates Remove Associations), then the ASSOC_PRESENT and INGRESS_PORT fields are ignored. 5.2.3 Configuring Multicast Masks Using the IDT Specific Registers The Tsi578 also has a device specific implementation to configuring the multicast masks. This implementation allows the direct writing of configuration information into the multicast group and vector tables a through the “RapidIO Multicast Write Mask x Register” on page 318 and the “RapidIO Multicast Write ID x Register” on page 317. The use of these two registers permits the direct writing of configuration information into the multicast group and vector tables. The method described in this section is a Tsi578-specific implementation. The implementation described in “Configuring Multicast Masks” on page 113 conforms to the RapidIO Interconnect Specification (Revision 1.3). Eight registers contain the association between a destinationID and the Multicast Mask number, and eight registers contain the association between the Multicast egress port vector table and the Multicast Mask. Ti p In a closed architecture embedded system, IDT recommends the use of the IDT-specific implementation. However, in an open architecture system the use of the RapidIO compliant register set is recommended. The RapidIO compliant register allows the re-use of switch device independent drivers. Figure 25 illustrates the table architecture and the association between the registers and bit fields. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 5. Multicast > Arbitration for Multicast Engine Ingress Port 117 Figure 25: IDT-specific Multicast Mask Configuration Switch Port Number 0 5.3 { { Multicast Write ID bits [16: 31] in the RIO_MC_ID[0..7] registers 1 2 3 4 5 6 7 8 9 A B C D E F 0 = No 1 = Yes Port Participating in Vector 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 { Multicast DEST_ID Mask Large Small Number 0 12 34 0x10320 0x10300 1 xx 44 0x10324 0x10304 2 FE ED 0x10328 0x10308 3 0x1032C 0x1030C 4 0x10330 0x10310 5 0x10334 0x10314 6 0x10338 0x10318 7 0x1033C 0x1031C Multicast Mask Number RIO_MC_MSK[0..7] Multicast Vector Table bits [0:15] in the RIO_MC_MSK[0..7] registers Arbitration for Multicast Engine Ingress Port The arbitration scheme used to handle multiple ingress accesses to the Multicast engine ingress port is simple Round Robin (RR) arbitration followed by the Strict Priority (SP) arbitration (see Figure 26). Each ingress port goes through RR arbitration based on their priority group. The outputs of the RR arbitration are handled with SP arbitration where higher priority packets are sent before lower priority ones. The RR arbiter looks through the ports sequentially starting from Port 0, one after the other, to accept packets when available. No one port can monopolize the RR arbiter. When a port skips an opportunity to transmit because it carries no packet at the moment, the RR arbiter does not compensate for the lost chance and moves to the next port, in sequence, for an available packet. The packets from the RR arbiters are selected by the SP arbiter based solely on their priority. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 118 5. Multicast > Error Management of Multicast Packets Figure 26: Arbitration Algorithm for Multicast Port Src Port 0 Packet Src Port 1 Packet ... Priority 3 Packets RR Src Port 15 Packet P Src Port 1 Packet ... Priority 2 Packets RR t k e y) ac i t P ri o r 3 y tP ri t es r io i gh (H Src Port 0 Packet Src Port 15 Packet SP Arbitration Result Multicast port Src Port 0 Packet RR Src Port 15 Packet Pr ( L io ri o ty w es 0 P t P r ac io k e r it t y) Src Port 1 Packet ... Priority 1 Packets Src Port 0 Packet Src Port 1 Packet ... Priority 0 Packets RR Src Port 15 Packet 5.4 Error Management of Multicast Packets Multicast packets have four sources of error - packet TEA, packet STOMPing, exceeding the maximum latency time, and exceeding the time-to-live timeout. 5.4.1 Packet TEA A multicast packet at the head of the ingress queue is subject to TEA. The TEA function does not differentiate between multicast and unicast packets. The assertion of TEA for a packet at the head of the ingress queue causes the packet to be immediately dropped from the queue. The packet is not forwarded to the destination port (see “Multicast Work Queue” on page 107). 5.4.2 Multicast Packet Stomping Transfers from the ingress port through the multicast work queue into the broadcast buffers operate in cut-through mode. It is possible for the ingress port’s link partner to stomp a packet, or terminate it due to some other error condition. It is also possible for the ingress port to detect a CRC or some other error with the packet. To handle these situations, the Tsi578 supports stomping of a packet while it is being transferred from ingress port to broadcast buffer. When a packet arrives at the Tsi578 and a stomp control symbol is received part way though the packet, the packet is still multicast to the egress ports. However, the egress ports stomp the packet when they transmit the packet. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 5. Multicast > Error Management of Multicast Packets 5.4.3 119 Multicast Maximum Latency Timer It is expected that the time-outs required for multicast packets in many systems are shorter than that required to enforce time-to-live time-outs for unicast packets, so a separate timer known as the maximum latency timer is used. The maximum latency value is similar in concept to the timer, but separate from it. This allows systems designers to enforce latency rules for multicast traffic that are different from that of unicast traffic in the system. Each broadcast buffer has a separate maximum latency timer to enforce latency limits for a packet and has the capacity to hold a single maximum size packets or up to eight smaller packets (totaling up to, but not more than, 280 bytes). The maximum latency timer starts counting when the packet is completely received by the broadcast buffer. The multicast latency timer has a maximum period of 0xFFFFFF*6.4ns. The multicast latency timer is programmed using the “RapidIO Multicast Maximum Latency Counter CSR” on page 396. The maximum latency timer is associated only with the packet at the head of the broadcast buffer. The multicast latency timer is held in reset when a packet is being transferred from the broadcast buffer to the egress port. Once a packet is completely received in the broadcast buffer, the multicast latency timer starts counting. If the multicast latency timer expires while the packet is in the broadcast buffer, an interrupt is raised (see “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384) and a port-write can be sent (if enabled). All packets in the broadcast buffer at the time the multicast latency timer expires are discarded. A packet copy being transferred from the multicast work queue to the broadcast buffer when the multicast latency timer expires is also discarded. Depending on the system latency restrictions on multicast and the frequency with which the maximum latency timer expires, discarding packets within the broadcast buffer can be sufficient to allow the system to continue to operate. Note that the broadcast buffer is purged only once when the multicast latency timer expires. The next packet copy coming from the multicast work queue is stored in the broadcast buffer as usual. The multicast latency timer is reset and when the new packet reaches the head of the buffer, the timer starts counting again. In systems where exceeding the maximum latency timer is an indication of the failure of a port, system designers can set the AUTODEAD bit in “RapidIO Multicast Maximum Latency Counter CSR” on page 396 to 1. If the AUTODEAD bit is 1 when the multicast latency timer expires, in addition to packets being purged, the port is removed from multicast operation. By clearing the multicast latency timer error for that failed port, the traffic from the MCE to the broadcast buffer is restored and new packet copies can be received by the port. The AUTODEAD bit should only be set to 1 if the expiry of the maximum multicast latency timer means that an error has been detected, and the continued operation of the system requires removal of the offending port. Refer to “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384 and to “Global Interrupt Status Register” on page 388 for the register bits related to notification and handling of a multicast latency timeout error. The “RapidIO Broadcast Buffer Maximum Latency Expired Override” on page 386 can be used to verify the operation of software associated with “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 120 5.4.4 5. Multicast > Port Reset Silent Discard of Packets It is possible for the multicast engine to silently discard packets. The following are examples of situations where a multicast packet is dropped: • A multicast group has no egress ports selected. The multicast mask and multicast vector for a packet using this multicast group is empty. • If the multicast group has only one port selected which corresponds to the ingress port on which the packet was received, the multicast vector is empty. • The multicast group contains a port with which the AUTODEAD bit is set in the “RapidIO Multicast Maximum Latency Counter CSR” on page 396 Only the copy of the packet is dropped. In these cases, no interrupt is issued. No other information is latched regarding the packet(s) that were dropped. 5.4.5 Port-writes and Multicast Port-writes can be multicast to multiple output links, depending on the destinationID of the port-write. Using the multicast feature improves the likelihood of delivery of port-writes for link failures. If a blocked or failed port becomes unblocked, port-writes may be delivered late. 5.5 Port Reset When a port is powered down, the port looses configuration information that is stored for that particular port. For example, multicast settings and port write settings return to their default power up settings after a port reset. After port reset, there is no way to determine that the configuration for a particular port is correct. When one of the active ports is reset, the multicast mask is required to be re-bound to that port. Refer to “Port Power Down” on page 72 for more information Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 121 6. Event Notification This chapter describes the system of error and event notification in the Tsi578. It includes the following information: 6.1 • “Overview” on page 121 • “Event Summary” on page 122 • “Error Rate Thresholds” on page 126 • “Error Stopped State Recovery” on page 128 • “Event Capture” on page 131 • “Port-write Notifications” on page 133 • “Interrupt Notifications” on page 136 Overview The Tsi578 has the following ways to notify external devices about events occurring within the switch: 1. Generate a RapidIO Port-write maintenance message when enabled (as described in the RapidIO Interconnect Specification (Revision 1.3)). 2. Assert the INT_b interrupt pin when an enabled interrupt is generated Most events can generate both types of notification, however some events only generate interrupts. There is no priority or precedence between events in the error notification scheme of the Tsi578. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 122 6.2 6. Event Notification > Event Summary Event Summary Table 13 describes all the events that can be raised within the Tsi578 and whether these events generate a interrupt, a port-write, or both. Table 13: Tsi578 Events Event Name (Status Bit) Max Retry Occurred Type Error Description This event occurs when a port’s retry counter reaches the configured retry counter threshold. The same retry counter is incremented for retries of all packets (it is not a per-packet retry counter). Interface Where Event Occurs Can Generate Interrupt Can Generate Port-write RapidIO Yes Yes RapidIO Yes Yes RapidIO Yes Yes RapidIO Yes Yes The status of this event is contained in the IMP_SPEC_ERR bit in the “RapidIO Port x Error Detect CSR” and the MAX_RETRY bit in the “RapidIO Port x Interrupt Status Register”. The Retry Counter is reset in the following situations: • Counter reaches threshold • A packet acceptance is received • A packet non-acceptance is received Illegal Transaction Error This event occurs when an inbound port receives a transaction with one of the following errors: • Unmapped entry in LUT • Reserved TT field value for data packet or maintenance packet with a hop count not equal to zero The status of this event is contained in the IMP_SPEC_ERR bit in the “RapidIO Port x Error Detect CSR” and the ILL_TRANS_ERR bit in the “RapidIO Port x Interrupt Status Register”. LUT Parity Error Error This event occurs when a parity error is detected when a port is performing a destination ID lookup (refer to “RapidIO Port x LUT Parity Error Info CSR”). The status of this event is contained in the IMP_SPEC_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294 and the LUT_PAR_ERR bit in the “RapidIO Port x Interrupt Status Register” on page 326. Error Rate Failed Threshold Reached Error This event occurs when the error rate counter in the “RapidIO Port x Error Rate CSR” on page 304 reaches the selected Link-Failed threshold found in the “RapidIO Port x Error Rate Threshold CSR” on page 306. For more detail about the Error Rate reporting mechanism, see “Error Rate Thresholds” on page 126. The status of this event is contained in the OUTPUT_FAIL bit in the “RapidIO Port x Error and Status CSR”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 6. Event Notification > Event Summary 123 Table 13: Tsi578 Events (Continued) Event Name (Status Bit) Error Rate Degraded Threshold Reached Type Error Description This event occurs when the error rate counter in the “RapidIO Port x Error Rate CSR” on page 304 register reaches the selected Link-Degraded threshold value found in the “RapidIO Port x Error Rate Threshold CSR” on page 306. For more detail about the Error Rate reporting mechanism, see “RapidIO Port x Error Rate Threshold CSR”. Interface Where Event Occurs Can Generate Interrupt Can Generate Port-write RapidIO Yes Yes RapidIO Yes No RapidIO Yes No RapidIO Yes Yes RapidIO Yes Yes RapidIO Yes Yes The status of this event is contained in the OUTPUT_DEG bit in the “RapidIO Port x Error and Status CSR”. Reset Request Received Status This event occurs when four consecutive reset requests are received by an inbound port. This event is described in detail in “RapidIO Reset Requests” on page 210. The status of this event is contained in the RCS bit in the “RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR” on page 312, as well as the RCS bit in the “Global Interrupt Status Register”. Multicast Symbol Received Status Outbound Queue Threshold Reached Status This event occurs when an inbound port receives the multicast control symbol. The status of this event is contained in the MCS bit in the “RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR” on page 312, as well as the MCS bit in the “Global Interrupt Status Register”. This event is raised when the “outbound queue threshold exceeded counter” reaches the counter threshold configured for that port. This is used to detect congestion on outbound queues. The status of this event is contained in the OUTB_DEPTH bit of the “RapidIO Port x Interrupt Status Register”. Inbound Queue Threshold Reached Status This event is raised when the “inbound queue threshold exceeded counter” reaches the counter threshold configured for that port. This is used to detect congestion on inbound queues. The status of this event is contained in the INB_DEPTH bit of the “RapidIO Port x Interrupt Status Register”. Inbound Reorder Count Threshold Reached Status This event is raised when the reorder count for a particular port reaches the configured reorder counter threshold for that port. The status of this event is contained in the INB_RDR bit of the “RapidIO Port x Interrupt Status Register” on page 326. Note: The “reorder counter threshold” is set to 0xFFFF by default. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 124 6. Event Notification > Event Summary Table 13: Tsi578 Events (Continued) Event Name (Status Bit) TEA in Fabric Type Error (Output Drop) Description This event is raised when a fabric transmission request times out and a packet is dropped. Interface Where Event Occurs Can Generate Interrupt Can Generate Port-write ISF Yes Yes ISF Yes Yes RapidIO Yes Yes RapidIO Yes Yes RapidIO Yes Yesa The status of this event is contained in the TEA bit of the “RapidIO Port x Interrupt Status Register” on page 326, the OUTPUT_DROP bit in the “RapidIO Port x Error and Status CSR” on page 278, and the bits of the “Fabric Interrupt Status Register” on page 382, and the TEA bit of the “Global Interrupt Status Register” on page 388. Multicast TEA Error This event is raised when the Multicast Engine fails to deliver a packet to the Broadcast Buffer before a time-out. The status of this event is contained in the MC_TEA bit of the “RapidIO Port x Interrupt Status Register” on page 326. Fatal Port Error Error Inbound or Outbound port has encountered an error from which the hardware was unable to recover (fatal error). The following fatal errors are included: • Four link-request tries with link-response, but no outstanding ackID • Four link-request tries with time-out error for link-response • The “Dead Link Timer” for a port has expired. • The “Lane Sync Timer” for at least one lane of the port has expired. The status of this event is contained in the PORT_ERR bit of the “RapidIO Port x Error and Status CSR”. Link-request retries with timeout errors also cause the LINK_TO bit in the“RapidIO Port x Error Detect CSR” to be asserted. Link-responses with no outstanding ackID cause the LR_ACKID_ILL bit in the “RapidIO Port x Error Detect CSR” to be asserted. Port Available Event Status This event is raised when a RapidIO port completes its automatic interface initialization after it detects a peer on the interface. This event is typically used to detect hot-swap events. The status of this event is contained in the LINK_INIT_NOTIFICATION bit of the “RapidIO Port x Interrupt Status Register” on page 326. Illegal AckID in Control Symbol Error This event is raised when a RapidIO port receives a control symbol (packet-accepted, packet-not-accepted, or retry) with an ackID that is not in use. The status of this event is contained in the CS_ILL_ACKID bit of the “RapidIO Port x Error Detect CSR” on page 294 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 6. Event Notification > Event Summary 125 Table 13: Tsi578 Events (Continued) Event Name (Status Bit) Illegal AckID in Packet Type Error Description This event is raised when a RapidIO port receives a packet with an ackID that is not in sequence. Interface Where Event Occurs Can Generate Interrupt Can Generate Port-write RapidIO Yes Yes1 RapidIO Yes Yes1 RapidIO Yes Yes1 RapidIO Yes Yes1 RapidIO Yes Yes1 RapidIO Yes Yes1 RapidIO Yes Yes1 RapidIO Yes Yes1 The status of this event is contained in the PKT_ILL_ACKID bit of the “RapidIO Port x Error Detect CSR” on page 294 Illegal Packet Size Error This event is raised when a RapidIO port receives a packet that is larger than 276 bytes. The status of this event is contained in the PKT_ILL_SIZE bit of the “RapidIO Port x Error Detect CSR” on page 294 Illegal AckID in Link Response Error This event is raised when a RapidIO port receives an unused ackID in a Link-Response control symbol. Link-Response control symbols are used to clear retry and error conditions on a link. The status of this event is contained in the LR_ACKID_ILL bit of the “RapidIO Port x Error Detect CSR” on page 294 Protocol Error Error This event is raised when a RapidIO port receives an unexpected, but otherwise correctly composed, control symbol. An example would be receiving a link-response control symbol when no link-request is outstanding. The status of this event is contained in the PROT_ERR bit of the “RapidIO Port x Error Detect CSR” on page 294 Delineation Error Error This event is raised when a RapidIO port receives an unaligned /SC/ or /PD/ symbol, or an undefined code group. The status of this event is contained in the DELIN_ERR bit of the “RapidIO Port x Error Detect CSR” on page 294 Unexpected Acknowledge Error This event is raised when a RapidIO port receives an unexpected packet-accepted control symbol. The status of this event is contained in the CS_ACK_ILL bit of the “RapidIO Port x Error Detect CSR” on page 294 Link Timeout Error This event is raised when a RapidIO port does not receive an acknowledgement (either a packet-accepted control symbol or a link-response control symbol) in time. The status of this event is contained in the LINK_TO bit of the “RapidIO Port x Error Detect CSR” on page 294 Control Symbol CRC Error Error This event is raised when a RapidIO port receives a Control Symbol packet with a CRC error. The status of this event is contained in the CS_CRC_ERR bit of the “RapidIO Port x Error Detect CSR” on page 294 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 126 6. Event Notification > Error Rate Thresholds Table 13: Tsi578 Events (Continued) Event Name (Status Bit) Type Control Symbol Not Accepted Error Packet CRC Error Error Description This event is raised when a RapidIO port receives a “Packet-Not-Accepted” Control Symbol. Interface Where Event Occurs Can Generate Interrupt Can Generate Port-write RapidIO Yes Yes1 RapidIO Yes Yes1 I2C Yes No Multicast Yes Yes The status of this event is contained in the CS_NOT_ACC bit of the “RapidIO Port x Error Detect CSR” on page 294 This event is raised when a RapidIO port receives a packet with a CRC error. The status of this event is contained in the PKT_CRC_ERR bit of the “RapidIO Port x Error Detect CSR” on page 294 I2C Event Multicast Latency Exceeded Status and Error This event is raised when the I2C block has an internal interrupt. Error This event occurs when a multicast request for a particular port cannot be transmitted in the time specified by the RIO Multicast Latency Timer. This results in the MC_LAT being set in the Global Interrupt Status Register. The port does not receive multicast requests unless or until the appropriate error bit in the “RapidIO Multicast Maximum Latency Counter CSR” on page 396 is cleared. The status of this event is contained in the I2C bit in the “Global Interrupt Status Register” on page 388, which is a logical OR of all bits in “I2C Interrupt Status Register” when the corresponding bits in “I2C Interrupt Enable Register” are enabled. For error events related to Maintenance Packets with hop count =0, see Table 3 a.Part of Error Rate Failed/ Degraded Threshold counter 6.3 Error Rate Thresholds There are two event thresholds in the Tsi578: the Error Rate Failed Threshold Reached and the Error Rate Degraded Threshold Reached. These events notify the system that errors are occurring on a RapidIO interface at a rate that requires special attention. The error rate detection threshold function works as follows: • Each RapidIO port maintains a single error counter that is incremented each time one of the RapidIO errors is encountered (see Table 13) — The port’s hardware can be configured to automatically decrement this counter. The rate at which the counter is decremented is configurable through the “RapidIO Port x Error Rate CSR” on page 304. • Tsi578 User Manual June 6, 2016 There are two thresholds configured per port on the Tsi578: Error Rate Failed Threshold Reached and the Error Rate Degraded Threshold Reached. These thresholds specify the counter level at which the port is considered either degraded or failed. Integrated Device Technology www.idt.com 6. Event Notification > Error Rate Thresholds 127 — When the degraded threshold is hit, the Error Rate Degraded Threshold Reached event is raised. The port can be configured to raise an interrupt or issue a Port-write (or both). Another degraded event is not raised until the counter falls below the threshold and then reaches it again, due to subsequent errors. — When the failed threshold is hit, the Error Rate Failed Threshold Reached event is raised. The port can be configured to raise an interrupt or issue a port-write (or both). Another failed event is not be raised until the counter falls below the threshold and then reaches it again, due to subsequent errors. It is also possible to configure the port to drop packets when the Error Rate Failed Threshold Reached event occurs. • “RapidIO Port x Error Rate CSR” on page 304: This register is used in conjunction with the “RapidIO Port x Error Rate Threshold CSR” on page 306. This register contains the following fields: — Error Rate Bias (ERR_RB): This field contains the count used to set the tick timer rate of the Error Rate Bias Timer. At each tick, the Congestion Counter and the Error Rate Counter are decremented. — Error Rate Count (ERR_RATE_CNT): This counter maintains a running total of the transmission errors that the port has encountered. It is decremented by 1 on every tick of the Error Rate Bias Timer. The counts do not decrement below 0. This field only tracks transmission errors that have been unmasked in the Port x Error Rate Enable CSR. This counter does not monitor queue depths. — Error Rate recovery (ERR_RR): This field allows the user to define how far above the Error Rate Threshold Trigger the Error Rate Counter is allowed to count. — PEAK: This field maintains the peak value attained by the Error Rate Counter. It can only be decremented or cleared by a register write. 6.3.1 Maintaining Packet Flow To maintain packet flow through the switch, the switch can be programmed to selectively discard packets. The following conditions, and the related register bit settings, are required to discard packets: • Inbound Buffer — If an inbound buffer attempts to forward a packet to an outbound buffer, and the TEA_EN bit is set, when the TEA timer expires the OUTPUT_DROP bit is set in the “RapidIO Port x Error and Status CSR” on page 278 of the ingress port where that packet was received. The appropriate port's IRQ error bit is also asserted in the “Fabric Interrupt Status Register” on page 382. The packet which was at the head of the queue to be forwarded through the fabric and caused the TEA to assert is then discarded. • Outbound Buffer — If the outbound buffer attempts to transmit a packet to a link partner, and the DROP_EN bit is set, when the Error Rate Failed Threshold is reached the packet is discarded and the OUTPUT_DROP, OUTPUT_FAIL bits are asserted in the port “RapidIO Port x Error and Status CSR” on page 278 where the link failure occurred. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 128 6. Event Notification > Error Stopped State Recovery • Multicast — If the multicast engine attempts to transfer a packet copy to a broadcast buffer but the buffer is full and unable to accept the packet, the MC_TEA is asserted in the congested port's “RapidIO Port x Interrupt Status Register” on page 326 and the timed-out packet is discarded. — If the port specific RIO Multicast Maximum Latency timer expires per the setting in the “RapidIO Multicast Maximum Latency Counter CSR” on page 396, the bit in the “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384 is asserted indicating which outbound buffer was unable to accept packets and caused the timer to expire. All packets in the broadcast buffer which were unable to make forward progress are discarded. 6.4 Error Stopped State Recovery This section describes how to clear physical layer error conditions and status. The standard RapidIO error recovery mechanism is sufficient in normal operation to recover from errors, however in the following special cases software intervention is required for software recovery: • Link partner reset error • Hot Swap errors • Power-up sequence errors When a link enters a error stopped state, there are multiple ways to clear the error conditions. However, the method described in this section uses IDT specific functionality and control symbols to clear the errors by forcing a hardware recovery situation through software. Ti 6.4.1 p Using IDT specific functionality and control symbols to clear errors means that sending of maintenance transactions across the link, and dealing with the resulting time-outs, is not required. Error Stopped States An Input Error-stopped state is entered when a RapidIO receiver detects a protocol error. When in an Input Error-stopped state, a port processes control symbols but discards packets. An output Error-stopped state is entered when a RapidIO transmitter is notified that one of the RapidIO receivers on the link has detected a protocol error. The standard error recovery mechanism for resuming communication is for the port in output error-stopped state to transmit a link-request/input-status control symbol to its link partner. The link partner, which should be in input error-stopped state, sends a link-response control symbol. If the link request/response sequence is repeated four times unsuccessfully, then the port requires software intervention to recover. 6.4.1.1 Input Error-stopped State In an Input Error Stopped State, all received packets are discarded. Control symbols are still processed when the link is in an Input Error Stopped State. An Input Error Stopped State is entered when an input port detects an invalid character or any valid character other then A, K, or R in an idle sequence or an Stype1 control symbol protocol error. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 6. Event Notification > Error Stopped State Recovery 129 The following examples are Stype 1 errors: • Packet with an unexpected ackID value • Packet with an incorrect CRC value • Packet containing invalid characters or valid non-data characters • Packet that overruns some defined boundary such as the maximum data payload. Ti 6.4.1.2 p Refer to error section (Part 6, Chapter 5, section 5.11) of the RapidIO Interconnect Specification (Revision 1.3) and “RapidIO Error Management Extension Registers” on page 285 for more information on triggers and specific errors for entering input and output error-stopped states. Output Error Stop State An Output Error Stop State prevents packets from being transmitted. The error recovery protocol is the only activity on the link. The reception of a control symbol with no detected corruption, but that violates the Stype 0 control symbol field link protocol, causes the receiving port to immediately enter the Output Error-stopped state. Link protocol violations include the following: • Unexpected packet accepted or packet retry control symbol • Packet-not-accepted control symbol • Packet accepted control symbol with an unexpected packet_ackID value • Link time-out while waiting for an acknowledgment control symbol Ti 6.4.2 p Refer to error section (Part 6, Chapter 5, section 5.11) of the RapidIO Interconnect Specification (Revision 1.3) and “RapidIO Error Management Extension Registers” on page 285 for more information on triggers and specific errors for entering input and output error-stopped states. Link Error Clearing and Recovery One technique to clear error conditions is to create a situation that forces the hardware recovery process to run again. This situation is created by sending a control symbol to a link partner that the partner can respond to. The control symbol means for software to start the recovery process on the near end of the link, and simultaneously start the recovery process on the far end of the link. 6.4.2.1 Control Symbol Example When link partners are in an error condition, control symbols can be used to clear the error. There are multiple steps required from both link partners to clear output and input error stopped states. The standard RapidIO mechanism for recovering from errors uses Link Request/Input Status and Link Response control symbols. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 130 6. Event Notification > Error Stopped State Recovery Figure 27 shows the RapidIO standard packet-retry control symbol format. Figure 27: Control Symbol Format bits 0 23 7 8 stype0 parameter0 3 5 12 13 parameter1 5 18 19 15 16 stype1 3 cmd 3 23 CRC 5 The IDT-specific functionality and control symbols process of using multiple control symbols in error clearing and recovery uses the following control symbols: • Packet-not-accepted (Stype0) + General Error (Parameter0) + Link Request (Stype1) + Input Status (CMD) This method triggers hardware recovery at both ends of the link. A Link Request control symbol is sent from the near end, and as part of the same control symbol, a Packet-Not-Accepted control symbol is also sent which notifies the far end of the link of a transmission error and triggers error recovery from that end. The following steps show IDT specific functionality and control symbols that are used for clearing stop states: 1. The near-end link partner sends a Packet-not-accepted + General Error + Link Request + Input Status control symbol To cause the transmission of the required control symbol write the value 0x40FC8000 to the “RapidIO Port x Control Symbol Transmit” register. 2. The far-end link partner (the link partner at the far end of the link) responds with a Link Request/Input Status control symbol The far-end link partner also responds with a Link Response/Input Status control symbol in response to the Link Request/Input Status portion of the received Packet-not-accepted + General Error + Link Request + Input Status control symbol. 3. The near-end link partner receives the Link Request/Input Status control symbol and the assertion of the Input Error Stopped State error condition is cleared. 4. The far-end link partner's receipt of a Link Response clears the Output Error Stopped State error condition on the transmit side of the receiving port. 5. Clear any remaining sticky bits in the “RapidIO Port x Error and Status CSR” on page 278 and the “RapidIO Port x Error Detect CSR” on page 294. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 6. Event Notification > Event Capture 6.5 131 Event Capture When a notification-enabled RapidIO error occurs, the port where the error occurred also logs information about the packet that caused the event. This information is stored within the RapidIO Packet Error Capture registers (see “RapidIO Error Management Extension Registers” on page 285). When a packet is logged in these registers, the Valid Capture (VAL_CAPT) bit is set in the “RapidIO Port x Error Capture Attributes CSR and Debug 0” on page 299. While the VAL_CAPT bit is set, further errors do not capture any packet information in order to preserve the first packet information that caused the enabled error. When the capture information has been retrieved, the VAL_CAPT bit must be written to zero in order to clear it and allow subsequent error packets to be captured. Table 14 lists the errors that cause the error counter to be incremented. All of these errors except the Implementation Specific Logical Error are defined in the RapidIO Interconnect Specification (Revision 1.2). The Implementation Specific Logical Error is set when any of the illegal transaction, maximum retry, lookup table parity error, or time-to-live events occur regardless of whether they are enabled or not. When most of the errors listed in Table 14 occur, they are logged in the “RapidIO Port x Error Detect CSR” on page 294. If the error is enabled in the RIO Port x Error Rate Enable CSR, the error counter is incremented and information about the packet causing the error is logged in the error capture registers (as long as the VAL_CAPT field is not already set in the “RapidIO Port x Error Capture Attributes CSR and Debug 0” on page 299). When a port generates a port-write packet, the port-write is routed to the multicast engine if the destinationID of the port-write packet (contained in the RIO Port-Write Target Device ID CSR) is also contained in a multicast group. The multicast engine multicasts the port-write packet to ports according to the mask associated with destinationID of a multicast group. However, in accordance with the RapidIO Interconnect Specification (Revision 1.2), if the originating port is contained in the multicast mask, the multicast engine removes the source port from the mask list which prevents the port-write packet from being transmitted out of the port which originated the port-write packet. The multicast engine does not distinguish between port-write packets and other types of packets. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 132 6. Event Notification > Event Capture For more detail on these events, see the RapidIO Interconnect Specification (Revision 1.3) — Error Management. Table 14: Error Rate Error Events RapidIO Error Implementation Specific Capture Registers Description The Tsi578 Switch uses the implementation specific error to combine with other error events, so that they can be included within the Error Rate reporting function. These events are: Yes • Reserved Transport Type detected (tt field = 10 or 11 for all but maintenance packets with hop count =0) • Max Retry Occurred Error • Unmapped DestID Error • Parity Error in Lookup Table • ISF TEA Error • Multicast TEA Error • Port Error When any of these events occur, the Implementation Specific Error event is considered to have occurred. The status of this error is contained in the IMP_SPEC_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Caution: The Error Capture register information is only valid for Reserved Transport Type Detected errors and Unmapped DestID errors. For the Max Retry errors the information latched is the last packet received, not the packet that was retried. Received corrupt control symbol Yes Received a control symbol with a bad CRC value. The status of this error is contained in the CS_CRC_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Received acknowledge control symbol with unexpected ackID Received an acknowledge control symbol with an unexpected ackID (packet-accepted or packet_retry) No The status of this error is contained in the CS_ILL_ACKID bit in the “RapidIO Port x Error Detect CSR” on page 294. Received packet-not-accepted control symbol Received packet-not-accepted acknowledge control symbol. Receive packet with unexpected ackID Received packet with unexpected ackID value - out-of-sequence ackID. Received packet with bad CRC Received packet with a bad CRC value. Yes The status of this error is contained in the CS_NOT_ACC bit in the “RapidIO Port x Error Detect CSR” on page 294. Yes The status of this error is contained in the PKT_ILL_ACKID bit in the “RapidIO Port x Error Detect CSR” on page 294. Yes The status of this error is contained in the PKT_CRC_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Received packet exceeds 276 Bytes Tsi578 User Manual June 6, 2016 Yes Received packet which exceeds the maximum allowed size. The status of this error is contained in the PKT_ILL_SIZE bit in the “RapidIO Port x Error Detect CSR” on page 294. Integrated Device Technology www.idt.com 6. Event Notification > Port-write Notifications 133 Table 14: Error Rate Error Events (Continued) RapidIO Error Non-outstanding ackID Capture Registers Description No Link_response received with an ackID that is not outstanding The status of this error is contained in the LR_ILL_ACKID bit in the “RapidIO Port x Error Detect CSR” on page 294. Protocol error Yes An unexpected packet or control symbol was received. The status of this error is contained in the PROT_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Delineation error Received unaligned /SC/ or /PD/ or undefined code-group. No The status of this error is contained in the DELIN_ERR bit in the “RapidIO Port x Error Detect CSR” on page 294. Unsolicited acknowledge control symbol An unexpected acknowledge control symbol was received. Link time-out An acknowledge-response or Link-response is not received within the specified time-out interval, see the RIO_SW_LT_CTL register. Yes The status of this error is contained in the CS_ACK_ILL bit in the “RapidIO Port x Error Detect CSR” on page 294. No The status of this error is contained in the LINK_TO bit in the “RapidIO Port x Error Detect CSR” on page 294. 6.6 Port-write Notifications In the Tsi578, all RapidIO ports can generate port-write messages based on interrupt events. The system is notified of most events that occur in the Tsi578 RapidIO interfaces through the RapidIO port-write message. The port-write function is enabled by default, but can be disabled through the PW_DIS field in the “RapidIO Port x Mode CSR” on page 310. Table 13 on page 122 indicates which events cause RapidIO port-write messages. When the port-write function is enabled, the occurrence of an enabled port-write capable event causes a port-write message to be sent to the destination ID specified in the “RapidIO Port-Write Target Device ID CSR” on page 293. If the event occurs but the interrupt capability is disabled (through the appropriate interrupt enable register) no port-write message is generated. The port-write message is generated for each event regardless of whether there is already a pending interrupt bit for the event set in the interrupt status register. However, when a new event occurs before the previous port-write has been sent, no port-write is sent for the new event. The second port-write is only sent when the first one is cleared. The outstanding port-writes, if any, are indicated in register “RapidIO Port Write Outstanding Request Register” on page 393. The port-write packet does not have a guaranteed delivery and does not have an associated response (see RapidIO Interconnect Specification (Revision 1.3)). Depending on system design, a port write can be sent repeatedly until cleared. A programmable timeout counter controls the frequency the port-write packets are transmitted (defined in the PW_TIMER field of the “RapidIO Port-Write Timeout Control Register” on page 392). When this timer expires, and the port write has not yet been cleared, another port-write is sent and the timer begins counting again. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 134 6.6.1 6. Event Notification > Port-write Notifications Destination ID There is only one port-write destination ID programmed for the entire device; a port-write event that occurs at any RapidIO port is sent to the same destination ID. The specified destination ID must be mapped within the port’s lookup table. Refer to “RapidIO Port-Write Target Device ID CSR” on page 293 for more information. An image of the “RapidIO Port-Write Target Device ID CSR” and the “RapidIO Logical and Transport Layer Error Enable CSR” are kept in each port. Therefore, if a port is powered down, these three registers must be re-programmed when the port is powered back up. 6.6.2 Payload The 16 byte data payload of the maintenance port-write packet contains the contents of several CSRs, the port that encountered the error condition, and implementation specific information. The layout of the port-write packet is shown in the Table 15 on page 135. Ti p The payload of the maintenance port-write packet is defined by the RapidIO Interconnect Specification (Revision 1.3) RapidIO Error Management Extensions. Port-writes are sent at the priority defined in the PW_PRIORITY field in the “RapidIO Port x Discovery Timer”. The default value is priority 3. Port-write packets are transmitted with a sourceID of 0x00. Port-writes are issued with a hop count of 0xFF. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 6. Event Notification > Port-write Notifications 135 Table 15 shows the port write packet data payload for error reporting. Table 15: Port Write Packet Data Payload — Error Reporting Data Payload Byte Offset Word 0 0x0 “RapidIO Component Tag CSR” on page 259 0x8 • Implementation specific bits (“RapidIO Port x Interrupt Status Register” on page 326): Word 1 “RapidIO Port x Error Detect CSR” on page 294 for Port ID Port ID (8 bits) (bits 24 to 31) — Bit 12: MC_TEA — Bit 13: LINK_INIT_NOTIFICATION “RapidIO Logical and Transport Layer Error Detect CSR” on page 288 — Bit 14: LUT_PAR_ERR bit — Bit 15: OUTPUT_DEG bit — Bit 16: OUTPUT_FAIL bit — Bit 17: INB_RDR bit — Bit 18: INB_DEPTH bit — Bit 19: OUTB_DEPTH — Bit 20: PORT_ERR — Bit 21: ILL_TRANS_ERR — Bit 22: OUTPUT_DROP — Bit 23: MAX_RETRY 6.6.3 Servicing Port-writes The Tsi578 supports a programming model for servicing port-writes. The first algorithm described minimizes the number of port writes generated by the Tsi578, and therefore the number of specific interrupt events that must be handled by a system host. When a system host receives a port-write because of an event on Port N, the host follows these steps: • Determine what error caused the port-write to be generated by going through “RapidIO Logical and Transport Layer Error Detect CSR” on page 288 and the following registers of Port N: — “RapidIO Port x Error and Status CSR” on page 278 (bits 6, 7, and 29) — “RapidIO Port x Interrupt Status Register” on page 326 • Correct the error conditions and clear the error sources. • Clear the PORT_W_PEND bit in the “RapidIO Port x Error and Status CSR” on page 278. In the case when there are other errors from other ports that have generated a port-write, bits in the register “RapidIO Port Write Outstanding Request Register” on page 393 are set. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 136 6.6.4 6. Event Notification > Interrupt Notifications Port-writes and Hot Insertion/Hot Extraction Notification Port-write requests are used to support hot insertion/extraction notification. For more information, refer to Hot Insertion and Hot Extraction (see “Hot Insertion and Hot Extraction” on page 59). The sending device sets the PORT_W_PEND status bit in the “RapidIO Port x Error and Status CSR” on page 278. Software indicates that it has seen the port-write operation by clearing the PORT_W_PEND bit. In order to clear the PORT_W_PEND bit, software must first clear the “RapidIO Port x Error Detect CSR” on page 294. 6.6.5 Port-writes and Multicast Port-writes can be multicast to multiple output links, depending on the destinationID of the port-write. Using the multicast feature improves the likelihood of delivery of port-writes for link failures. If a blocked or failed port becomes unblocked port-writes may be delivered late. If a port generates a port-write packet, and the destinationID of the port-write packet that is contained in the “RapidIO Port-Write Target Device ID CSR” is also contained in a multicast group, the port-write will be routed to the multicast engine. The multicast engine does not distinguish between port-write packets and other types of packets. The multicast engine will multicast the port-write packet to ports according to the mask associated with destinationID of a multicast group. However, in respecting the RapidIO Multicast specification, if the originating port is contained in the multicast mask, the multicast engine will remove the source port from the mask list preventing the port-write packet from being transmitted out of the port that originated the port-write packet. 6.7 Interrupt Notifications In the Tsi578 interrupts are hierarchical, which allows software to determine the cause of the interrupt with minimum register access. System designers must decide upon a maximum rate of interrupt notifications, and set the error thresholds appropriately. Figure 28 illustrates the interrupt hierarchy within the Tsi578 RapidIO ports. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 6. Event Notification > Interrupt Notifications 137 Figure 28: RapidIO Block Interrupt and Port Write Hierarchy OUTB_DEPTH, bit[27] SP_INT_STATUS OUTB_DEPTH_EN, bit[27] SP_CTL_INDEP INB_DEPTH, bit[28] SP_INT_STATUS INB_DEPTH_EN, bit[28] SP_CTL_INDEP INB_RDR, bit[29] SP_INT_STATUS INB_RDR_EN, bit[29] SP_CTL_INDEP PW_DIS MAX_RETRY, bit[26] SP_INT_STATUS PW_REQ to Port-Write Arbiter MAX_RETRY_EN, bit[26] SP_CTL_INDEP ILL_TRANS_ERR, bit[24] SP_INT_STATUS SP_ERR_DET register ILL_TRANS_EN, bit[24] SP_CTL_INDEP ERR_RFT, bit[0..7] SP_ERR_THRESH 12 counter ERR_RATE_CNT, bit[24..31] SP_ERR_RATE OUTPUT_FAIL, bit[6] SP_ERR_STATUS SP_ERR_DET_EN register OUTPUT_DEG, bit[7] SP_ERR_STATUS 12 ERR_RDT, bit[8..15] SP_ERR_THRESH IRQ_ERR IRQ_ERR_EN LUT_PAR_ERR, bit[15] SP_INT_STATUS LUT_PAR_ERR_EN, bit[15] SP_CTL_INDEP TEA, bit[31] SP_INT_STATUS TEA_EN, bit[31] SP_CTL_INDEP MCT_TEA, bit[13] SP_INT_STATUS MCT_TEA_EN, bit[13] SP_CTL_INDEP LINK_INIT_NOTIFICATION, bit[14], SP_INT_STATUS LINK_INIT_NOTIFICATION_EN, bit[14], SP_CTL_INDEP PORT_ERR, bit[29] SP_ERR_STATUS PORT_ERR_EN, bit[12] SP_CTL_INDEP Logical/Transport Errors RIO_LOG_ERR_DET register RIO_LOG_ERR_DET_EN register 3 3 RIO_LOG_ERR_DET register is not locked Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 138 6.7.1 6. Event Notification > Interrupt Notifications INT_b Signal At the top level of the interrupt hierarchy is the external interrupt signal INT_b. This active low signal is asserted when any fully enabled interrupt occurs. The INT_b signal remains asserted until all interrupts are cleared within the device. The INT_b signal is driven by the “Global Interrupt Status Register” on page 388. The INT_b signal is asserted when any bit within the Global Interrupt Status register is set and its corresponding enable bit in the“Global Interrupt Enable Register” on page 390 is also set. If an interrupt in the Global Interrupt Enable register is not enabled, the bit in Global Interrupt Status register is still set when an interrupt occurs, but INT_b is not asserted. Interrupts can be cleared by either writing the interrupt status register bit or by disabling that interrupt. When a previously asserted interrupt is disabled, the interrupt bit remains set in the interrupt status register, but the interrupt is no longer propagated up the interrupt hierarchy. 6.7.2 Global Interrupt Status Register and Interrupt Handling The “Global Interrupt Status Register” on page 388 must be read to determine why the interrupt was raised. Interrupt causes in the Global Interrupt Status register allow the interrupt service routine to decide which port raised an interrupt. The I2C controller has a separate indicator bit, as it is not associated with any port. Two functions that are port specific have separate indicator bits to allow for faster handling. These functions are Multicast Event Control Symbol reception, and reception of a valid reset control symbol sequence. Both Multicast Event Control Symbol and Reset Control Symbol interrupts can be cleared with one register write to the status bit in the broadcast address of the “RapidIO Port x Mode CSR” on page 310. After the software has read the Global Interrupt Status register and determined which port has an interrupt pending, the port’s interrupt status registers must be accessed to determine the exact cause. Each port contains an interrupt status register (see “RapidIO Port x Interrupt Status Register” on page 326) and an associated interrupt enable register (see “RapidIO Port x Control Independent Register” on page 319). When an interrupt occurs within a port, the associated bit for that interrupt is set within the interrupt status register regardless of the setting of the interrupt enable register. The port only notifies the “Global Interrupt Status Register” on page 388 if that interrupt is enabled. The RapidIO defined status registers are discussed in “Other Interrupts Types and Interrupt Handling” on page 138. 6.7.2.1 Other Interrupts Types and Interrupt Handling TEA events have a separate register which allows an interrupt handler to quickly determine on which port the TEA occurred. Similarly, multicast latency errors have a separate register to indicate which port is unable to receive multicast packets. Ti p Tsi578 User Manual June 6, 2016 Because there is only one logical layer error per device, the LOG_ERR bit is also in the“Global Interrupt Status Register” on page 388. Integrated Device Technology www.idt.com 6. Event Notification > Interrupt Notifications 139 For those port specific interrupt causes which are not visible in the “Global Interrupt Status Register” on page 388 register, the interrupt handler must access the port’s registers to determine the cause of an interrupt. There are two RapidIO standard registers which must be accessed - the “RapidIO Port x Error and Status CSR” on page 278, and the “RapidIO Port x Error Detect CSR” on page 294. The Implementation Specific Error (IMP_SPEC_ERR) bit in the “RapidIO Port x Error Detect CSR” on page 294 leads to a number of other IDT specific error and performance related interrupts. These interrupts are found in one other register, the “RapidIO Port x Interrupt Status Register” on page 326. The Tsi578 also provides the implementation specific option of sending an interrupt for some of the bits found in the“RapidIO Port x Error Detect CSR” on page 294. All interrupt sources and their associated data can be configured by register writes in order to facilitate the testing of software. Table 16: Port x Error and Status Register Status Status Bit OUTPUT_DROP Further Information RIO Serial Port x Control CSR RIO Port x Error Rate CSR RIO Port x Error Rate Threshold CSR RIO Port x Packet Time to Live CSR RIO Port x Interrupt Status CSR OUTPUT_FAIL RIO Port x Error Rate CSR RIO Port x Error Rate Threshold CSR OUTPUT_DEG RIO Port x Error Rate CSR RIO Port x Error Rate Threshold CSR Integrated Device Technology www.idt.com Interrupt Enable RIO Port x Control Independent CSR for the TEA interrupts. There is no specific interrupt status bit for OUTPUT_DROP of packets when OUTPUT_FAIL is asserted. This must be inferred by the fact that OUTPUT_DROP is set and no TEA interrupts are asserted. Port x Error Rate Threshold CSR Interrupt Clearing Write 1 to OUTPUT_DROP to clear the RIO Port x Interrupt Status CSR TEA interrupt bits for the port. Writing 1 to this bit will not clear the Port x Error Rate CSR ERR_RATE_CNT, so the next time a packet is sent to this port it may be dropped again. Write 1 to OUTPUT_FAIL to clear this interrupt. Writing 1 to this bit will not clear the Port x Error Rate CSR ERR_RATE_CNT, so this bit may become set again immediately. Port x Error Rate Threshold CSR Write 1 to OUTPUT_DEG to clear this interrupt. Writing 1 to this bit will not clear the Port x Error Rate CSR ERR_RATE_CNT, so this bit may become set again immediately. Tsi578 User Manual June 6, 2016 140 6.7.3 6. Event Notification > Interrupt Notifications Interrupt Notification and Port-writes In the Tsi578, all RapidIO ports can also generate port-write messages based on interrupt events. Because of this architecture, the RapidIO interrupt enables also control whether a port-write message is issued for each interrupt. In each port the register bit IRQ_EN in “RapidIO Port x Control Independent Register” on page 319 controls whether any enabled interrupts are propagated to the “Global Interrupt Status Register” on page 388 to generate an interrupt. If the IRQ_EN bit is disabled, no interrupt propagates to the “Global Interrupt Status Register” on page 388 register from this port. The IRQ_EN does not control port-write generation. Port-write generation is controlled by the PW_DIS bit in the “RapidIO Port x Mode CSR” on page 310. 6.7.4 Reset Control Symbol and Interrupt Handling Reception of a valid reset control symbol sequence is a port specific feature that has separate indicator bits to allow for faster interrupt handling. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 141 7. I2C Interface Topics discussed include the following: 7.1 • “Overview” • “Protocol Overview” • “Block Diagram” • “Tsi578 as I2C Master” • “Tsi578 as I2C Slave” • “Mailboxes” • “SMBus Support” • “Boot Load Sequence” • “Error Handling” • “Interrupt Handling” • “Events versus Interrupts” • “Timeouts” • “Bus Timing” Overview The I2C Interface provides a master and slave serial interface that can be used for the following purposes: • Initializing device registers from an EEPROM after reset • Reading and writing external devices on the I2C bus • Reading and writing Tsi578’s internal registers for management purposes by an external I2C master The I2C Interface has the following features: • Operates as a master or slave on the I2C bus — Multi-master support – Arbitrates among multiple masters for ownership of the I2C bus – Automatically retries accesses if arbitration is lost – Provides timeout indication if the Tsi578 is unable to arbitrate for the I2C bus Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Overview 142 — I2C Interface: Master interface – Supports 7-bit device addressing – Supports 0, 1, or 2-byte peripheral addressing – Supports 0, 1, 2, 3, or 4-byte data transfers – Reverts to slave mode if arbitration is lost – Supports clock stretching by an external slave to limit bus speed to less than 100 kHz – Handles timeouts and reports them through interrupts — I2C Interface: Slave interface – Slave address can be loaded from three sources: power-up signals, boot load from EEPROM, or by software configuration – Provides read and write accesses that are 32 bits in size to all Tsi578 registers – Ignores General-Call accesses – Ignores Start-Byte protocol – Provides a status register for determination of Tsi578’s health – Slave operation enabled/disabled through power-up signal, boot load from EEPROM, or by software configuration – Provides mailbox registers for communicating between maintenance software operating on RapidIO based processors and external I2C masters • Supports I2C operations up to 100 kHz • Provides boot-time register initialization — Supports 1- and 2-byte addressing of the EEPROM selected by power-up signal — Verifies the number of registers to be loaded is legal before loading registers — Supports up to 2K byte address space and up to 255 address/data pairs for register configuration in 1-byte addressing mode, or up to 65 Kbyte address space and up to 8 K-1 address/data pairs in 2-byte addressing mode. — Supports chaining to a different EEPROM and/or EEPROM address during initialization. The I2C Interface does not support the following features: • START Byte protocol — Tsi578 does not provide a START Byte in transactions it masters — Tsi578 does not respond to START Bytes in transactions initiated by other devices. The Tsi578 will respond to the repeated start following the start byte provided the 7-bit address provided matches the Tsi578 device address. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Protocol Overview • 143 CBUS compatibility — Tsi578 does not provide the DLEN signal — Tsi578 does not respond as a CBUS device when addressed with the CBUS address. The Tsi578 will interpret the CBUS address like any other 7-bit address and compare it to its device address without consideration for any other meaning. • Fast Mode or High-Speed Mode (HS-MODE) • Reserved 7-bit addresses should not be used as the Tsi578’s 7-bit address. If a reserved address is programmed, the Tsi578 will respond to that address as though it were any other 7-bit address with no consideration of any other meaning. • 10-bit addressing — Tsi578 must not have its device address programmed to the 10-bit address selection (11110XXb) in systems that use 10-bit addressing. The Tsi578 will interpret this address like any other 7-bit address and compare it to its device address without consideration for any other meaning. • 7.2 General Call. The general call address will be NACK’d and the remainder of the transaction ignored up to a subsequent Restart or Stop. Protocol Overview The I2C protocol is a two-wire serial interface that consists of a bidirectional, open-drain clock bus (I2C_SCLK), and a bidirectional open-drain data bus (I2C_SD). Multiple master and/or slave devices can be connected to an I2C bus. I2C data is transmitted from one device to another across the I2C_SD bus with timing referenced to the I2C_SCLK bus. With some exceptions, each bus can be driven low (to a logic 0) by any device, but is pulled high (to a logic 1) by an external resistor tied to VDD. This creates a “wired-and” configuration, where any single device can drive a bus to a logic 0, but a bus rises to a logic 1 only if no devices are driving to a logic 0, allowing the pull-up resistor to bring the bus to a logic 1 voltage. I2C requires one device to assume the role of master during a transfer. The master generates the clock on the I2C_SCLK bus and controls the overall transfer protocol, as defined by the I2C Specification. One or more devices assume the role of slaves during the transfer and respond to the master by either accepting data from the I2C_SD bus, or providing data to the I2C_SD bus. The selection of a specific device to act as a slave results from a master transmitting a unique slave address as part of the I2C protocol. Only one device is normally configured with the specific slave address and is the only device to respond to the master. Other parts of the I2C protocol provide for arbitration between multiple master devices, allowing more than one master device to share the bus on a one-at-a-time basis. p Ti This document refers to I2C signals, serial clock and serial data, by names that are defined by the device package as opposed to the I2C Specification. For example: • Serial clock – Package name is I2C_SCLK, specification name is SCL. • Serial data – Package name is I2C_SD, specification name is SDA. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Block Diagram 144 7.3 Block Diagram Figure 30 shows an overview of the I2C Interface. The shaded area is the block logic. The master and slave interfaces mux between control of the I2C_SD and I2C_SCLK I/O buffers, and connect through the package to the buses on the board. The reference clock (P_CLK) and active-low hard reset are inputs to the block. The power-up reset values are either static signals from outside the block, or connect to package pins for board-level configuration. The I2C_MA pin is a power-up configuration pin that is latched during reset. On the core side, the I2C block connects to the internal device register bus as a slave and master: • As a slave, it enables access to the I2C block registers by a host or processor. • As a master, it enables access to other device registers (for example, during the I2C load at power-up). In addition, various signals relate to the boot load sequencer, an interrupt signal connects to the Tsi578 Interrupt Controller, and device-level status connects to the EXI2C_STAT register in the externally visible registers. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Block Diagram 145 Figure 29: I2C Block Diagram External Device External Device External Pull-ups I2C I2C I2C Buses on Circuit Board I2C_SCLK I2C_SCLK I2C_SD I2C_SD I/O BUFFERS TOP LEVEL SCL SDA MA SA SEL PClk Reset Power-up Resets SCL Out BLOCK LOGIC SCL En SDA Out SDA En SDA In Digital Filter SCL In Digital Filter Slave Interface Master Interface Externally Visible Registers Boot Load Sequencer Event + Interrupt Control Internal Register Bus Slave Internal Access Registers Internal Register Bus Master int boot_ok boot_fail ombox_full smbus_alert Interrupt Controller boot_disable chip status [25:0] Internal Register Bus Arbiter The reference diagram in Figure 30 shows the I2C bus and data protocol. Three basic signal relationships are defined by the bus timing: Start/Restart, Bit, and Stop. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Block Diagram 146 Figure 30: I2C Reference Diagram I2C_SDA Bus Signals I2C_SCLK Start/Restart I2C Bus Protocol Bit or Ack/Nak Stop (P) S/R Bit Bit Bit Bit Bit Bit Bit Bit A/N P R S/R Byte A Byte A Byte A Byte K P I2C Write Data Protocol Slave Address Peripheral Address Data Written to Device R S/R 7 Bit SlvAdr+Wr(0) A PerAdr A PerAdr A WriteData A WriteData K P I2C Read Data Protocol Stop ends the transaction, bus is idle Slave Address Data Read from Device R S/R 7 Bit SlvAdr+Rd(1) A ReadData A ReadData A ReadData N P Restart loops to start of slave address sequence = Optional A = Ack N = Nack K = Ack or Nack P = Stop R = Restart Note: The I2C read data protocol section of this figure implies that the peripheral addressing phase has already occurred. The I2C Interface will remember where it left off such that new reads to the same device do not require the peripheral addressing phase; however, an initial read of an I2C device will require a peripheral addressing phase. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Tsi578 as I2C Master 147 The start/restart and stop conditions delineate a transaction – a master issues a start to claim ownership of the bus and a stop to release ownership. A restart is a repeated start condition between the first start and the terminating stop, and is used by a master to start a new transaction without giving up bus ownership. Between the start and stop, data is transferred one bit at a time, with the basic protocol calling for full bytes of data, this being 8 consecutive bits from master to slave or slave to master, followed by 1 more bit driven by the device receiving the data to acknowledge the receipt of the byte. The first stream of bytes following a start/restart is the device connection sequence, where the master places a slave address on the bus to make a connection to the device with which it needs to communicate. It is also during this period that primary arbitration for bus ownership is completed for the bus between multiple masters. If more than one master attempts to address a slave, a well-defined procedure results in all but one master backing off and waiting for a stop condition, when the bus ownership is again released. Once a connection is made between a master and a slave, data can be transferred to or from the slave in the data read/write sequence phase of the transaction. This sequence is device-dependent, but a common protocol used by memory-oriented devices such as EEPROMs involves the master sending one or more bytes of memory address to the slave to position the slave’s memory address (or peripheral address), then the master writes/reads data to/from the slave. Eventually the master ends the transaction with a stop condition, at which point the bus is free for other masters to start transactions. These I2C master and slave operations are explained in the following sections. 7.4 Tsi578 as I2C Master When the Tsi578 is an I2C master, it addresses an external slave device, generates the I2C_SCLK clock, and controls the overall transfer protocol. There are two instances where the Tsi578 is master: boot loading (see “Boot Load Sequence”), and transactions initiated by setting the START bit in the “I2C Master Control Register” (see the following section). Ti p Because EEPROM devices do not have reset pins, if the Tsi578 is reset the EEPROM is unaffected and can continue to drive data at the previous state. For more information on how this issue may affect your application, and possible work around options, see “Masterless bus busy” in the Tsi578 Design Notes. Software can instruct the Tsi578 to read or write to an external slave device using the following registers: • “I2C Master Configuration Register” to configure external device parameters • “I2C Master Control Register” to select and start the transaction • “I2C Master Receive Data Register” for data to be read (received) • “I2C Master Transmit Data Register” for data to be written (transmitted) • “I2C Access Status Register” for status Figure 31 depicts the sequences on the I2C bus when the Tsi578 is mastering a read or write transaction: Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Tsi578 as I2C Master 148 Figure 31: Software-initiated Master Transactions Write Transaction (WRITE=1) From DEV_ADDR Slave Address S From PADDR Peripheral Address From I2C_MST_WDATA Data Written to Device 7 Bit SlvAdr+Wr(0) A PerAdrMsb A PerAdrLsb A WriteData A WriteData A WriteData A WriteData A P pa_size=2 Arbitration Loss pa_size>=1 size=4 size>=3 size>=2 size>=1 Read Transaction (WRITE* = 0, PA_SIZE* > 0) From DEV_ADDR Slave Address S From PADDR Peripheral Address From DEV_ADDR Slave Address 7 Bit SlvAdr+Wr(0) A PerAdrMsb A PerAdrLsb A R Arbitration Loss pa_size=2 pa_size>=1 7 Bit SlvAdr+Rd(1) A Readdress for Read To I2C_MST_RDATA Data Read from Device ReadData A ReadData A ReadData A ReadData N P size=4 size>=3 size>=2 size>=1 Read Transaction (WRITE=0, PA_SIZE = 0) From DEV_ADDR Slave Address S To I2C_MST_RDATA Data Read from Device 7 Bit SlvAdr+Rd(1) A ReadData A ReadData A ReadData A ReadData N P Arbitration Loss size=4 Shaded = Response From External Device size>=3 A = Ack N = Nack size>=2 S = Start size>=1 P = Stop R = Restart Note: WRITE resides in the “I2C Master Control Register”, while PA_SIZE resides in the “I2C Master Configuration Register”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Tsi578 as I2C Master 149 The overall procedure is to configure the device through the “I2C Master Configuration Register”, load the data to be written in the “I2C Master Transmit Data Register” (only needed for write operations), then load the “I2C Master Control Register” with the specific transaction information and have the START bit in that register set to 1. This initiates the master transaction. Software usually then waits for a master-related interrupt to know when the transaction has completed, or the status can be polled using the “I2C Access Status Register”. If the operation was a read, the data can then be retrieved by reading the “I2C Master Receive Data Register”. Once a master operation is started, it cannot be aborted by software except when the I2C Interface is reset using the “I2C Reset Register”. Reset using the “I2C Reset Register” is not recommended, however, since it can leave the I2C bus in a state that makes it difficult to ensure that all devices are back to an idle state. The internal delay required by an EEPROM device to complete a write operation to its memory array must be managed by software. The I2C Interface only tracks the status of the operation by the bus signals. 7.4.1 Example EEPROM Read and Write This section shows example pseudocode for writing and reading the EEPROM. This example is configured in the context of register writes that must be made during a boot load of the EEPROM. 7.4.1.1 Write Example //Write w 1d114 w 1d10c w 1d114 w 1d10c 7.4.1.2 8 bytes to 0x0042FFFF 0xc4000000 0xFFFFFFFF 0xc4000004 the EEPROM // load the // load the // load the // load the write data register with the write contents destination address in EEPROM and go next 4 bytes into the write data register destination address and go Read Example //Read the locations programmed above w 1d10c 0x84000008 // set the start bit and address r 1d110 [receive data] // get the received data w 1d10c 0x8400000c // same again - set start with the address w 1d10c [receive data] // get the received data 7.4.2 Master Clock Generation The I2C clock (I2C_SCLK) for master operation is generated by dividing down the reference clock (P_CLK). The reset value for the I2C_SCLK generates a nominal 100-kHz operating speed. The bus speed is affected by external devices stretching the clock. For master operations, the clock frequency can be changed by modifying the timing parameter registers (see “Bus Timing”). Operation above 100 kHz is possible but the Tsi578 does not implement all the standards requirements for fast mode. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Tsi578 as I2C Master 150 7.4.3 Master Bus Arbitration Because the Tsi578 can operate in a multi-master I2C system, it arbitrates for the I2C bus as required by the I2C Specification. During the Start and Slave Address phase, any unexpected state on the bus causes the Tsi578 to back off, release the bus, and wait for a Stop before retrying the transaction. If the arbitration timer configured in the “I2C_SCLK Low and Arbitration Timeout Register” expires before the device can get through the slave address phase without collision, then the transaction is aborted with the MA_ATMO status in the “I2C Interrupt Status Register”. An optional interrupt can also be sent to the Interrupt Controller if enabled in the “I2C Interrupt Enable Register”. If the Tsi578 loses the arbitration for the I2C bus, and the winning master selects the Tsi578 as the target of its access, the Tsi578 responds as the slave. 7.4.4 Master External Device Addressing A master transaction starts with a Start condition followed by the 7-bit slave address from the DEV_ADDR field of the “I2C Master Configuration Register”, followed by the R/W bit. Assuming the 8 bits did not collide with another master, an ACK/NACK response bit is expected. If an ACK is received, the slave device exists and the transaction proceeds. If a NACK is received, the slave device is presumed to not exist and the transaction is aborted with a Stop and an MA_NACK status in the I2C_INT_STAT register, and an optional MA_NACK interrupt to the Interrupt Controller if enabled in MA_NACK of “I2C Interrupt Enable Register”. In this case, the transaction is not automatically retried and it is up to software to retry if needed. If the master transaction addresses the slave address of the Tsi578, the slave logic responds correctly as the target device. 7.4.5 Master Peripheral Addressing Some devices, such as EEPROMs, require a peripheral address to be specified to set a starting position in their memory or address space for the read or write. The Tsi578 supports transactions with 0, 1, or 2 bytes of peripheral address. Because this is device dependent, the correct setting for the target device must be set in PA_SIZE of the “I2C Master Configuration Register”; otherwise, the transaction protocol is not correct. The peripheral address is also set in the “I2C Master Configuration Register” when the transaction is started. If the transaction is a read, the Tsi578 must switch the I2C bus protocol to read mode following the peripheral address (sending the peripheral address requires write mode). To do this, a Restart condition is generated, followed by a repeat of the slave address to readdress the device in read mode. Because the bus was not released by the Restart, this phase is not subject to the arbitration timer, therefore any mismatch on the bus aborts the transaction with a MA_COL interrupt. This restart is not necessary if there is no peripheral address status in the “I2C Interrupt Status Register”. An optional interrupt can also be sent to the Interrupt Controller if enabled in MA_COL of the “I2C Interrupt Enable Register”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Tsi578 as I2C Slave 7.4.6 151 Master Data Transactions After the peripheral address phase, if any, 0 to 4 bytes of data are read or written, followed by the Stop condition. The number of bytes to be transferred is set in the SIZE field of the “I2C Master Control Register” when the operation is started, the type of transaction (read or write) is set in the WRITE field of the same register, and the order of byte transfer is set in the DORDER field of the “I2C Master Configuration Register”. For a write transaction, bytes are taken from the “I2C Master Transmit Data Register” based on DORDER and sent to the target device. Each byte must be ACKed by the device. If a NACK is received, the transaction is aborted with a Stop, an MA_NACK interrupt status in the “I2C Interrupt Status Register”. An optional interrupt can also be sent to the Interrupt Controller if enabled in MA_NACK of the “I2C Interrupt Enable Register”. For a read transaction, bytes are received from the target device and placed in the “I2C Master Receive Data Register” based on DORDER. Each byte is ACKed by the Tsi578, except for the final byte that is NACKed to tell the target device to stop sending data, followed by a Stop condition to idle the bus. Upon successful completion of a transaction, the MA_OK interrupt status is updated in the “I2C Interrupt Status Register”. An optional interrupt can also be sent to the Interrupt Controller if enabled in MA_OK of the “I2C Interrupt Enable Register”. If the Tsi578 experiences a chip reset while it is writing to an EEPROM, the write does not complete and the data at the target EEPROM address may be corrupted. 7.5 Tsi578 as I2C Slave The Tsi578 can operate as a slave device on the I2C bus. An external master device places a transaction on the bus with a device address that matches that programmed in the SLV_ADDR field of the “I2C Slave Configuration Register”, or matches the fixed SMBus Alert Response address. The external master can then read or write to the Tsi578 through a small block of 256 addresses called the Tsi578 peripheral address space, and do the following: • Directly access limited status, read and write mailboxes • Configure some options related to the slave access • Indirectly read or write any other register in the Tsi578 that is accessible through the register bus Figure 32 shows the bus protocols for accessing the Tsi578 as a slave device. The general procedure requires the external master to address the Tsi578, set the peripheral address to a position within the Tsi578 peripheral address space, then write or read some number of bytes. A write is terminated with a Stop or Restart, and a read is ended when the master responds to a byte with a NACK. There is no limit to the number of bytes that can be read or written in one transaction. The Tsi578 increments the peripheral address pointer after each byte, and wraps within the 256 space (see “Slave Peripheral Addressing”). Read and write transactions can be mixed by the external master issuing a Restart instead of a Stop, then sending a new transaction that addresses the Tsi578 (all writes must include the peripheral address byte). Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Tsi578 as I2C Slave 152 At the completion of any slave transaction, either the SA_OK or SA_FAIL interrupt status is updated in the “I2C Interrupt Status Register”. An optional interrupt can be sent to the Interrupt Controller, if enabled in SA_OK or SA_FAIL of the “I2C Interrupt Enable Register”, to alert the processor/host that an external device has accessed the peripheral address space. In addition, either the SA_WRITE or SA_READ interrupt status is updated in the “I2C Interrupt Status Register” if a read or write to the internal register space was triggered by the access. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_WRITE or SA_READ of the “I2C Interrupt Enable Register” The SA_FAIL interrupt indicates the slave transaction encountered an error. An SA_FAIL includes the slave logic detecting a collision when it was responding with data or an ACK/NACK, or one of the time-outs triggering and aborting the transaction (see “Timeouts”). If no error condition occurred, then the SA_OK interrupt is triggered. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Tsi578 as I2C Slave 153 Figure 32: Transaction Protocols for Tsi578 as Slave Write Transaction Starting at New SLV_PA Data Written to Peripheral Space Matched to SLV_ADDR Peripheral Slave Address Address S/R 7 Bit SlvAddr+Wr(0) A SLV_PA A WriteData A WriteData A WriteData A P/R 0 or more bytes (no defined limit) SLV_PA incremented(*) after each byte Sets SLV_PA Read Transaction (Setting Peripheral Address) Matched to SLV_ADDR Peripheral Slave Address Address Matched to SLV_ADDR Slave Address S/R 7 Bit SlvAddr+Wr(0) A SLV_PA A R 7 Bit SlvAddr+RD(1) A Sets SLV_PA Readdress for Read Starting at New SLV_PA Data Read from Peripheral Space ReadData N P/R ReadData A ReadData A 1 or more bytes (no defined limit) SLV_PA incremented(*) after each byte Read Transaction (Using Last Peripheral Address) Starting at Current SLV_PA Data Read from Peripheral Space Matched to SLV_ADDR Slave Address S/R 7 Bit SlvAddr+RD(1) A ReadData A ReadData A ReadData N P/R 1 or more bytes (no defined limit) SLV_PA incremented(*) after each byte Shaded = Response From Slave Interface A = Ack N = Nack S = Start P = Stop R = Restart (*) Certain exceptions occur - see text 7.5.1 Slave Clock Stretching When the Tsi578 is a slave, the external master generates the I2C clock (I2C_SCLK). If the Tsi578 must access the internal register bus, I2C_SCLK is held low until data is available on a register read, or until a register write completes. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Tsi578 as I2C Slave 154 7.5.2 Slave Device Addressing The Tsi578 supports 7-bit device addressing. The device address of the Tsi578 is set in the SLV_ADDR field of the “I2C Slave Configuration Register”. For the Tsi578 to respond to an external master, the slave address on the bus must match either the address in the SLV_ADDR field, or the SMBus alert response address (see “SMBus Alert Response Protocol Support”. However, an address of all zeros (0000000) never triggers a response because this address is used for the START byte and General Call protocol. Neither the START byte or General Call protocol are supported by the Tsi578. The SLV_ADDR field can be changed at any time, either using the boot load sequence or by the processor/host. At power-up, the lower 2 bits of the 7-bit device address (defined by SLV_ADDR) are loaded from the PWRUP_I2C pins. This allows the user to support up to four separate Tsi578 devices on the same I2C bus. Changing the SLV_ADDR field does not change the value of the lower 2 bits unless those bits are unlocked by first setting the SLV_UNLK field in the “I2C Slave Configuration Register”. If the Tsi578 masters an I2C transaction and the device address matches the 7-bit address programmed by SLV_ADDR, the Tsi578 will respond to its own transaction. This is the only method that allows software to write to any of the externally visible registers that are read-only from the internal register bus. Ti 7.5.3 p The Tsi578 only responds as a slave if the SLV_EN bit in the “I2C Slave Configuration Register” is set to 1. Slave Peripheral Addressing The Tsi578 peripheral space comprises an addressable range of 256 bytes (from 0x00 to 0xFF) that can be directly read and written by an external I2C master device. When an external master sets the peripheral address, this sets a pointer (viewable in the SLV_PA field of the “I2C Access Status Register”) maintained in the Tsi578 that determines where bytes read and written by the external master are within the peripheral address space. This 256-byte space is mapped to the Externally Visible Registers within the I2C Interface; these registers all start with EXI2C_ (see “Externally Visible I2C Internal Write Address Register”). These registers can be accessed either directly by an external master using the addresses in the peripheral address space, or by the processor/host using the internal register bus addresses. Depending on how the registers are accessed also defines their properties: for example, some registers are read-only through the peripheral address space but read/write through the internal register bus, and vice-versa. The next section discusses the mapping between the peripheral address space and the externally visible registers. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Tsi578 as I2C Slave 155 External I2C Register Map 7.5.4 Table 17 lists the register map that is visible to external I2C devices. The lowest peripheral address maps to the LSB of the register, while the highest peripheral address maps to the MSB of the register. The external master can set the peripheral address to any location in the 256-byte range. If that byte maps to a register, and the byte is read or written, then the specific byte within the register is read or written. These reads and writes are not through the internal address bus but are instead local to the I2C Interface. If the peripheral address does not map to a register, then a read returns 0 and a write has no effect except to increment the peripheral address. When a byte is read or written, the peripheral address is automatically incremented to the next value, with three exceptions listed in the table (addresses 0x07, 0x17, and 0xFF). Table 17: Externally Visible I2C Register Map Tsi578 Peripheral Address Range 0x00–0x03 Mapped Register EXI2C_REG_WADDR Specifies the 4-byte aligned internal register address for the register bus write access performed when EXI2C_REG_WDATA is written. EXI2C_REG_WDATA Specifies the data to write to the internal register address held in EXI2C_REG_WADDR. R/W 0x04–0x07 Description R/W Side effects: When address 0x07 (the MSB) is written, the data in this register is written to the internal register address held in EXI2C_REG_WADDR, and the peripheral address is returned to 0x04 (the LSB). This allows consecutive internal registers to be written in one transaction without resetting the peripheral address. Note: If 0x07 is read, the peripheral address increments to 0x08; if written, the peripheral address does not increment. 0x08–0x0F Reserved This range does not map to any registers. EXI2C_REG_RADDR Specifies the 4-byte aligned internal register address for the register bus read access performed when EXI2C_REG_RDATA is read. EXI2C_REG_RDATA Returns the data read from the internal register address held in EXI2C_REG_RADDR. Read-Only 0x10–0x13 R/W 0x14–0x17 Read-Only Side effects: When address 0x14 (the LSB) is read, the data in this register is loaded from the internal register address held in EXI2C_REG_RADDR, before the data is returned on the I2C bus. When peripheral address 0x17 (the MSB) is read, the peripheral address is returned to 0x14 (the LSB). This allows consecutive internal registers to be read in one transaction without resetting the peripheral address. Note: If 0x17 is written, the peripheral address increments to 0x18; if written, the peripheral address does not increment. 0x18–0x1F Reserved This range does not map to any registers. Read-Only Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Tsi578 as I2C Slave 156 Table 17: Externally Visible I2C Register Map (Continued) Tsi578 Peripheral Address Range 0x20–0x23 Mapped Register EXI2C_ACC_STAT Returns status information on accesses performed by external devices, on the incoming/outgoing mailboxes and on the state of the alert response flag. EXI2C_ACC_CNTRL Provides control information on how the Tsi578 handles internal register accesses through the EXI2C_REG_RDATA and EXI2C_REG_WDATA registers. Reserved This range does not map to any registers. EXI2C_STAT Returns a summary of the internal status of the Tsi578. EXI2C_STAT_ ENABLE Enables the bits in the status summary (EXI2C_STAT) to set the alert flag in the EXI2C_ACC_STAT register. Reserved This range does not map to any registers. EXI2C_MBOX_OUT This register allows a RapidIO-enabled processor to transfer a 32-bit message to an external I2C master. EXI2C_MBOX_IN This register allows an external I2C master to transfer a 32-bit message to a RapidIO-enabled processor. Reserved This range does not map to any registers. Read-Only 0x24–0x27 R/W 0x28–0x7F Description Read-Only 0x80–0x83 Read-Only 0x84–0x87 R/W 0x88–0x8B Read-Only 0x90–0x93 Read-Only 0x94–0x97 R/W 0x98–0xFF Read-Only 7.5.5 Side effects: When peripheral address 0xFF is read or written, the peripheral address wraps back to 0x00. Slave Write Data Transactions An external master must set the peripheral address as part of a write transaction before transferring any data. The effect of the written data depends on the register in which the peripheral address maps (see Table 17). The peripheral address is usually incremented after each byte such that consecutive bytes are written into increasing addresses within the peripheral address space. Certain exceptions exist, however, as indicated in Table 17. In addition, a write that hits the most significant byte of the “Externally Visible I2C Internal Write Address Register” (peripheral address 0x07) has the side-effect of triggering a write to a register on the Tsi578 internal register bus. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Tsi578 as I2C Slave 7.5.6 157 Slave Read Data Transactions An external master is not required to set the peripheral address as part of a read transaction, but can do so by first writing the peripheral address and then issuing a Restart before writing any data. If not set, the read data starts wherever the peripheral address pointer was left by the previous transaction. Because it is possible that another master changed the pointer, it is recommended that the peripheral address be set at the start of a transaction. Data is returned to the external master from consecutive bytes within the peripheral address space, with certain exceptions indicated in Table 17. There also can be side effects to reading some bytes (see Table 17 and the EXI2C register descriptions). For example, a read that hits the LSB of the “Externally Visible I2C Internal Read Address Register” (peripheral address 0x14), also triggers a read from a register on the Tsi578 internal register bus. 7.5.7 Slave Internal Register Accesses The Tsi578 allows external masters to access all of its internal registers through the externally visible I2C registers. The address in the register definitions refers to an offset only. The offset must be prefixed with the block address. The “Externally Visible I2C Internal Read Data Register” is a special register in that a read operation to the first (least significant) byte of this register through the peripheral address space (0x14) triggers the Tsi578 to perform an internal register read operation using the address in the “Externally Visible I2C Internal Read Address Register”. When the internal register read operation is completed, the data is first loaded into the “Externally Visible I2C Internal Read Data Register”, then returned to the external I2C master byte by byte. The “Externally Visible I2C Internal Access Control Register” controls the internal register read operations and allows the user to specify when and how the register read is performed. Likewise, the “Externally Visible I2C Internal Write Data Register” triggers the Tsi578 to perform an internal register write operation using the address in the “Externally Visible I2C Internal Write Address Register”. The external device writes data to the “Externally Visible I2C Internal Write Data Register” through the peripheral space, and when the last (most significant) byte is written (0x07), the register contents is written through the internal register bus to the address in the “Externally Visible I2C Internal Write Address Register”. The “Externally Visible I2C Internal Access Control Register” controls the internal register write operation and allows the user to specify when and how the register write is performed. Internal register accesses can be prohibited by the processor/host through the RD_EN and WR_EN fields in the “I2C Slave Configuration Register”. At the completion of a slave transaction that includes a successful read or write to an internal register, a SA_WRITE or SA_READ interrupt status is updated in the I2C_INT_STAT register. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_WRITE and SA_READ of “I2C Interrupt Enable Register”. This allows the processor/host to be aware that an external device is accessing the internal registers of the Tsi578. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Tsi578 as I2C Slave 158 7.5.8 Slave Access Examples This section shows a slave internal register access by an external master. The following abbreviations are used: Start condition Restart condition The 7-bit Tsi578 slave address (that matches SLV_ADDR) 8-bit peripheral address (current setting viewable in SLV_PA) Acknowledge (ACK) Not acknowledge (NACK) Stop condition Write Read (not write) 8-bit write data (from master to Tsi578) 8-bit read data (from Tsi578 to master) Also, registers and register fields are referenced by name. All examples assume that the transactions occur in the order given; only one master is accessing (such that nothing is changed by another master between transactions); and nothing is changed by the processor/host during the transactions. The following conditions pre-exist: ALERT_FLAG is set in the “Externally Visible I2C Slave Access Status Register”. 1. External device reads “Externally Visible I2C Slave Access Status Register” (LSB only). The returned value of 0x01 is the ALERT_FLAG. External device must NACK after the first read byte to stop the transfer. I2C Sequence: Following the transaction, SLV_PA is 0x21 and interrupt status SA_OK asserts. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK of “I2C Interrupt Enable Register”. 2. External device reads “Externally Visible I2C Status Register” (all 4 bytes). Note that the data from this register is returned LSB to MSB. External device must NACK the fourth byte to stop the transfer. I2C Sequence: Following the transaction, SLV_PA is 0x84 and interrupt status SA_OK asserts. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK of “I2C Interrupt Enable Register”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Tsi578 as I2C Slave 159 3. External device does an Alert Response request. Because ALERT_FLAG is asserted, the alert response address is ACK’d and the Tsi578 slave address is returned. I2C Sequence: Following the transaction, SLV_PA is 0x84 (unchanged from previous transaction) and interrupt status SA_OK asserts. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK of “I2C Interrupt Enable Register”. The ALERT_FLAG in “Externally Visible I2C Slave Access Status Register” is cleared because of the successful response. 4. External device writes all 4 bytes of the “Externally Visible I2C Enable Register” to 0, reads “Externally Visible I2C Slave Access Status Register”, then does another Alert Response request. The ALERT_FLAG is zero (all enables were cleared), so the alert response address is NACKed. I2C Sequence: Following the transaction, SLV_PA is 0x21, “Externally Visible I2C Enable Register” is 0x00000000 and interrupt status SA_OK asserts. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK of “I2C Interrupt Enable Register”. 5. External device writes “Externally Visible I2C Internal Access Control Register” to enable internal register auto-incrementing. I2C Sequence: Following the transaction, SLV_PA is 0x25, “Externally Visible I2C Internal Access Control Register” is 0x000000AC and interrupt status SA_OK asserts. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK of “I2C Interrupt Enable Register”. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Tsi578 as I2C Slave 160 6. External device sets up “I2C_SCLK Low and Arbitration Timeout Register” address (0x354) in EXI2C_REG_WADDR, then writes three registers back-to-back with 0x11223344, 0x55667788, and 0x99AABBCC. Because of the register auto-increment, and because the PA auto-wraps from 0x07 to 0x04, the writes can be completed in a stream. Note that data is written from LSB to MSB. I2C Sequence: Following the transaction, SLV_PA is 0x04, “Externally Visible I2C Internal Write Address Register” is 0x0001_D360, “I2C_SCLK Low and Arbitration Timeout Register” is 0x11223344, “I2C Byte/Transaction Timeout Register” is 0x55667788, and “I2C Boot and Diagnostic Timer” I2C_BOOT_DIAG_TIMER is 0x8000BBCC (reserved fields stay zero) and interrupt status SA_OK and SA_WRITE assert. An optional interrupt can also be sent to the Interrupt Controller if enabled in the “I2C Interrupt Enable Register”. 7. External device sets up “I2C_SCLK Low and Arbitration Timeout Register” address (0x1D354) in “Externally Visible I2C Internal Read Address Register”, then reads 3 registers back-to-back. Because of the register auto-increment, and because the PA auto-wraps from 0x17 to 0x14, the reads can be completed in a stream. Note that data is read from LSB to MSB. I2C Sequence: Following the transaction, SLV_PA is 0x14, “Externally Visible I2C Internal Read Address Register” is 0x0001_D360, and interrupt status SA_OK and SA_READ assert. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK and SA_READ of the “I2C Interrupt Enable Register”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Mailboxes 161 8. External device writes “Externally Visible I2C Internal Access Control Register” to disable internal register auto-incrementing. I2C Sequence: Following the transaction, SLV_PA is 0x25, “Externally Visible I2C Internal Access Control Register” is 0x000000A0, and interrupt status SA_OK asserts. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK of “I2C Interrupt Enable Register”. 9. External device sets up “I2C_SCLK Low and Arbitration Timeout Register” address (0x1D354) in “Externally Visible I2C Internal Read Address Register”, then reads same register 3 times. The register address no longer auto-increments, but the PA still auto-wraps from 0x17 to 0x14, so the reads can be completed in a stream. Note that data is read from LSB to MSB. I2C Sequence: Following the transaction, SLV_PA is 0x14, “Externally Visible I2C Internal Read Address Register” is0x001D354, and interrupt status SA_OK and SA_READ assert. An optional interrupt can also be sent to the Interrupt Controller if enabled in SA_OK and SA_READ of “I2C Interrupt Enable Register”. 7.5.9 Resetting the I2C Slave Interface The I2C slave interface is reset by two conditions: chip reset or the detection of a START condition. When a chip reset is applied, the I2C slave interface immediately returns to the idle state. Any active transfer, to or from the Tsi578 when the reset is asserted, is interrupted. All registers are initialized by a full-chip reset. As required by the I2C Specification, the Tsi578 resets its bus interface logic on receipt of a START or repeated START condition such that it anticipates receiving a device address phase, even if the START condition is not positioned according to the proper format. The I2C registers, however, are not reset. 7.6 Mailboxes As part of the peripheral address space on the Tsi578, the following registers act as I2C mailboxes for communicating information between an external I2C master and a processor or host: • “Externally Visible I2C Incoming Mailbox Register” for data incoming from an external I2C master to the processor or host. • “Externally Visible I2C Outgoing Mailbox Register” for data outgoing from the processor or host to an external I2C master. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Mailboxes 162 In addition, flags in the “Externally Visible I2C Slave Access Status Register” are accessible by an external host to examine the mailbox status. Figure 33 shows the use of I2C mailboxes. Figure 33: I2C Mailbox Operation INCOMING MAIL EXTERNAL I2C MASTER Writes to Mailbox EXI2C_MBOX_IN Flag Goes Up Host is Interrupted (IMB_FULL) PROCESSOR/ HOST EXI2C_ACC_STAT.IMB_FLAG 0100.......000111 EXI2C_MBOX_IN Polls Status Until Flag Down EXI2C_MBOX_IN Host Reads Mailbox Flag Goes Down OUTGOING MAIL EXTERNAL I2C MASTER EXI2C_MBOX_OUT Writes to Mailbox PROCESSOR/ HOST Flag Goes Up EXI2C_ACC_STAT.OMB_FLAG 0100.......000111 Polls Status Until Flag Up EXI2C_MBOX_OUT Reads Mailbox Host is Interrupted (OMB_EMPTY) Flag Goes Down EXI2C_MBOX_OUT The incoming and outgoing I2C mailbox registers are discussed further in the following sections. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > SMBus Support 7.6.1 163 Incoming Mailbox To send data to the processor/host, an external I2C master writes data to the incoming mailbox register, EXI2C_MBOX_IN, through the Tsi578 slave interface. When the Stop condition is seen (indicating the external master is completed writing to the mailbox), the slave interface sets the IMB_FLAG in the “Externally Visible I2C Slave Access Status Register”, and the processor/host is interrupted to let it know the mailbox is full by setting IMB_FULL status in the “I2C Interrupt Status Register”. An optional interrupt can be sent to the Interrupt Controller if enabled in IMB_FULL of the “I2C Interrupt Enable Register”. In response to the interrupt, the processor/host reads the incoming mailbox to retrieve the data. This process of reading the register clears the IMB_FLAG in the status register. The external I2C master can poll the status register through the slave interface, and when it sees the flag go to 0, it knows the processor/host has read the data and it is safe to write more. If the external I2C master writes more data before earlier data is read, the old data is overwritten. In this case, depending on timing, the processor/host may read a mixture of old and new data. 7.6.2 Outgoing Mailbox To send data to an external I2C master, the processor/host writes data to the outgoing mailbox register, EXI2C_MBOX_OUT. This sets the OMB_FLAG in the “Externally Visible I2C Slave Access Status Register”, which the external I2C master can poll through the slave interface. When the flag goes up (1), the external I2C master reads the outgoing mailbox register through the slave interface. Once the Stop condition is seen (indicating the external master has completed reading the mailbox), the slave interface clears the OMB_FLAG in the status register, EXI2C_ACC_STAT, and interrupts the processor/host with an OMB_EMPTY in the “I2C Interrupt Status Register” to let it know the mailbox has been read and it is safe to write more data. An optional interrupt can be sent to the Interrupt Controller if enabled in OMB_EMPTY of “I2C Interrupt Enable Register”. If the processor/host writes more data to the mailbox before the data is read, the old data is overwritten. In this case, depending on timing, the external I2C master may read a mixture of old and new data. 7.7 SMBus Support The I2C Interface provides limited functionality for SMBus applications. The Tsi578 can act as an SMBus Host and communicate to other SMBus slave devices through a subset of the SMBus protocols (see “SMBus Protocol Support”). As a host, the Tsi578 cannot effectively receive a SMBus Host Notify message sent by another non-host SMBus device acting as a master. In addition, the Tsi578 cannot effectively act as a non-host SMBus device and receive commands from an external SMHost. Although the Tsi578 responds as a slave to the SMBus protocols, they are processed relative to the slave interface functionality. The SMBus command code is assumed to be a peripheral address, and data written to or read through the slave interface will depend on the peripheral address selected. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > SMBus Support 164 7.7.1 Unsupported SMBus Features The Tsi578 does not support the following SMBus features: 7.7.2 • Non-host response to external SMBus host protocols, except for Alert Response Protocol • Address Resolution Protocol (ARP) or any related commands • SMBSUS# (suspend mode signal pin) • Packet Error Code (PEC). The Tsi578 does not generate, check, or expect PECs • Process Call command • Block write command with more than 4 data bytes • Block read command • Block write-block read process call command • SMBus host notify protocol as a SMBus host device in slave mode SMBus Protocol Support The Tsi578 master interface functionality supports a subset of the SMBus Protocols (see Figure 34). In all cases, the Tsi578 masters a transaction to another SMBus device. All register and register field references are to the following I2C master interface registers: • “I2C Master Configuration Register” • “I2C Master Control Register” • “I2C Master Receive Data Register” • “I2C Master Transmit Data Register” Use of the Quick Command with Read requires the target device to support the command. Under normal I2C protocol, the slave device returns data on the bus following the ACK, so the master could not always generate the required Stop condition. The target device must release the bus following the ACK if it is responding to this command. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > SMBus Support 165 Figure 34: SMBus Protocol Support SMBus Quick Command with Write, PA_SIZE*=0, SIZE*=0, WRITE*=1 S SlaveAdr Wr A P SMBus Quick Command with Read, PA_SIZE=0, SIZE=0, WRITE=0 S SlaveAdr Rd A P SMBus Send Byte, PA_SIZE=1, SIZE=0, WRITE=1 S SlaveAdr Wr A PA0=Data A P SMBus Receive Byte, PA_SIZE=0, SIZE=1, DORDER*=1, WRITE=0 S SlaveAdr Rd A RD0=Data N P SMBus Write Byte, PA_SIZE=1, SIZE=1, DORDER=1, WRITE=1 S SlaveAdr Wr A PA0=Cmd A TD0 A P SMBus Write Word, PA_SIZE=1, SIZE=2, DORDER=1, WRITE=1 S SlaveAdr Wr A PA0=Cmd A TD0 A TD1 A P SMBus Read Byte, PA_SIZE=1, SIZE=1, DORDER=1, WRITE=0 S SlaveAdr Wr A PA0=Cmd A R SlaveAdr Rd A RD0 N A RD0 A P SMBus Read Word, PA_SIZE=1, SIZE=2, DORDER=1, WRITE=0 S SlaveAdr Wr A PA0=Cmd A R SlaveAdr Rd RD1 N P TD(NB-1) A P SMBus Write Block (NB = 1-4 bytes), PA_SIZE=2, SIZE=NB, DORDER=1, WRITE=1 S SlaveAdr Wr A PA1=Cmd A PA0=NB A TD0 A SMBus Host Notify Protocol, PA_SIZE=1, SIZE=2, DORDER=1, WRITE=1 S SlaveAdr Wr A PA0=DevAdr A TD0 A SlaveAdr = SMBus device address set in DEV_ADDR PA0 = LSB of PADDR PA1 = MSB of PADDR TD0 = LSB of I2C_MST_WDATA TD3 = MSB of I2C_MST_TDATA RD0 = LSB of I2C_MST_RDATA (data returned here) RD3 = MSB of I2C_MST_RDATA (data returned here) TD1 A P Wr = Write mode bit (0) S = Start Condition Rd = Read mode bit (1) P = Stop Condition R = Restart Condition A = ACK N = NACK Unshaded = Master is driving the bus Shaded = Slave is driving the bus * For information about SIZE and WRITE, see “I2C Master Control Register”. For information about PA_SIZE and DORDER, see “I2C Master Configuration Register”. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Boot Load Sequence 166 7.7.3 SMBus Alert Response Protocol Support The Tsi578 supports the SMBus Alert Response Protocol as either master or slave. As a master, an external device can be polled using a master read operation. As a slave, the Tsi578 slave interface responds to the Alert Response Address with the Tsi578’s slave device address based on the value of ALERT_FLAG in the “Externally Visible I2C Slave Access Status Register”, if enabled in ALRT_EN of “I2C Slave Configuration Register”. Once the alert response is given and the Tsi578’s slave device address is returned, the ALERT_FLAG is de-asserted. For the register fields indicated in Figure 34, reference the master interface registers I2C_MST_CFG, I2C_MST_CNTRL, and I2C_MST_RDATA, as well as the slave configuration register I2C_SLV_CFG. Figure 35: SMBus Alert Response Protocol SMBus Alert Response (master interface), DEV_ADDR = 0001100, PA_SIZE=0, SIZE=1, DORDER=1, WRITE=0 S ARA Rd A RD0=DevAdr N S ARA Rd N P P A device returns their address, loaded into read data register No device responds to alert poll, operation fails with MA_NACK interrupt SMBus Alert Response (slave interface), ALRT_EN=1, ALERT_FLAG=1 S ARA Rd A SLV_ADDR N P Alert asserted from Tsi578, slave address is returned SMBus Alert Response (slave interface), ALRT_EN=0 or ALERT_FLAG=0 S ARA Rd N P No alert asserted from Tsi578, poll is NACK’d ARA = SMBus Alert Response Address (0001100) DevAdr = Slave address of external device asserting alert SLV_ADDR = Slave address of Tsi578 from I2C_SLV_CFG RD0 = LSB of I2C_MST_RDATA (data returned here) S = Start Condition Rd = Read mode bit (1) P = Stop Condition A = ACK N = NACK Shaded = Slave is driving the bus Unshaded = Master is driving the bus * For information about DEV_ADDR, DORDER, and PA_SIZE, see “I2C Master Configuration Register”. For more information about SIZE and WRITE, see “I2C Master Control Register”. For more information about ALRT_EN, see “I2C Slave Configuration Register”. 7.8 Boot Load Sequence Unless the I2C_DISABLE pin is held high, the Tsi578 will perform a post-hard reset register initialization sequence where it reads data from one or more external EEPROM devices (for more information about I2C_DISABLE, see “Power-up Options” in this document). This data initializes the Tsi578’s internal registers. The boot load sequence occurs only after a full chip reset, and follows the steps shown in Figure 36. The boot load sequence is controlled by the contents of the I2C_BOOT_CNTRL register. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Boot Load Sequence 167 Figure 36: Boot Load Sequence Device detection Retry Up to 6 Times to Find EEPROM After 6 NACKs, goto Exit Boot Init and Device Detect Not Idle N Hard Reset Idle Detect EEPROM Reset Wait for Bus Idle S Boot Addr P Wr A Collision Idle Set Register Count Peripheral Address Set peripheral address and switch to read mode 2-byte PerAdr Only PerAdr MSB A PerAdr LSB A R Boot Addr Rd A Read Register Count (from the first 2 bytes of the EEPROM after reset. Read eight (8) byte register count field RegCnt MSB A RegCnt LSB A 0xFF A If register count is zero (0), go to Chain Check If not at page_mode boundary*, go to Read Register Info 0xFF A/N Add 8 to peripheral address Check validity of register count, exit if bad Set Register Info Peripheral Address 2-byte PerAdr Only Set peripheral address and switch to read mode S Boot Adr Wr A PerAdr MSB A PerAdr LSB A R Boot Addr Rd A Read Register Info Read 4-byte register address and 4-byte register data RegAdr MSB A RegAdr LSB A RegData MSB A If register count is zero (0), go to Chain Check If at page_mode boundary, go to Set Reg Info Per Address RegData LSB A/N Add 8 to peripheral address Write Data into internal register Chain Check If last register load was to I2C_BOOT_CNTRL and CHAIN bit set goto Select Chained Device, else exit Select Chained Device Select next device S Boot Addr Wr A Exit P Goto Set Register Count Peripheral Address Generate STOP Condition, set boot load status and interrupts EEPROM “Reset” Sequence I2C_SD I2C_SCLK 1 2 8 9 9 Clocks with I2C_SD released High * For information about page mode boundary, see PAGE_MODE in “I2C Boot Control Register”. For information about PA_SIZE, see “I2C Master Configuration Register”. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Boot Load Sequence 168 7.8.1 Idle Detect Upon exit from reset, it is unknown if another master is active. The Idle Detect period determines if the I2C_SCLK signal remains high long enough (roughly 50 microseconds) that it is unlikely another master is active. If I2C_SCLK is seen low during this period, it is assumed another master is active, the EEPROM Reset phase is skipped, and boot sequence proceeds to the Wait for Bus Idle phase. This detection is performed whether or not the boot sequence is disabled using the I2C_DISABLED pin. If the boot sequence is disabled, the BL_OK interrupt status is asserted immediately in the I2C_INT_STAT register, and an optional interrupt can be sent to the Interrupt Controller if enabled using BL_OK in the “I2C Interrupt Enable Register”. If a master transaction is initiated before the idle detect completes, the transaction is started once the idle detect completes. Upon exit from reset, if I2C_SDA is seen low the device assumes the bus is busy and does not attempt to reset the bus. Therefore the boot sequence will not take place. 7.8.2 EEPROM Reset Sequence The EEPROM reset sequence is intended to cover the condition where a hard reset occurs while a transaction is active on the I2C bus. In this case, because the Tsi578 I2C master may have been reset and stopped generating the I2C_SCLK clock, one or more slave devices may be in a hung state where they are expecting a read or write to complete, and may be holding the I2C_SD signal low, preventing the generation of a STOP or START condition. To try to force these devices out of their hung state, the Tsi578 allows the I2C_SD signal to stay high and generate 9 clock pulses on the I2C_SCLK signal. If no device was hung, this should not cause any problems because all devices are looking for a START condition. If a device was in the middle of a receiving a byte, the remainder of the byte will appear to have all 1s, and the device can generate an ACK or NACK. It is possible it may look to the device as if part of another byte is being sent, but because this is the master transmitting part of the protocol, the device will have released its control on the I2C_SD signal, so the master can force a START or STOP condition, even in the middle of the byte. If a device was in the middle of sending a byte, the clocks pulses will allow it to finish the transmission. The I2C_SD left high by the master (the Tsi578) will appear as a NACK to the device and it will not try to transmit another byte, but will leave the I2C_SD signal free so that another master can force a START or STOP condition. This sequence is sent only once after a hard reset, and only if the Idle Detect phase was successful, and the Tsi578 believes it is not interfering with another master. 7.8.3 Wait for Bus Idle Before attempting to access an EEPROM device, the boot loader waits for the bus to be idle. This is either the result of a successful Idle Detect phase, or, if the Idle Detect phase failed, once a STOP condition is seen on the bus, indicating another master has released control. In addition, if the I2C_SCLK and I2C_SD signals are both high for longer than the idle detect period while waiting for a STOP condition, the bus is assumed idle and the boot load process proceeds. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Boot Load Sequence 7.8.4 169 EEPROM Device Detection Once the bus is available, the Tsi578 tries to connect to the EEPROM. A START condition is generated followed by BOOT_ADDR from the “I2C Boot Control Register”. The upper 5 bits of that field reset to 0b10100 and the lower 2 bits are sampled from the I2C_SA[1:0] pins on exit from hard reset. This allows up to four unique Tsi578 devices to boot from different EEPROMs on the same I2C bus. If an ACK is received, which indicates the device is present, the sequence proceeds to the next phase. If there is a bus collision, the loader returns to the Wait for Bus Idle phase because another master has the bus. If a NACK is received, the process is retried from the Wait for Bus Idle phase up to 6 times in case the device was busy. If six NACKs are received, the boot load is aborted and the BL_FAIL interrupt status is asserted. An interrupt can also be sent to the Interrupt Controller if enabled using BL_FAIL in the “I2C Interrupt Enable Register”. 7.8.5 Loading Register Data from EEPROM Once the EEPROM is successfully addressed, the Tsi578 does not release the bus until the boot load is complete. First, the peripheral address is set. The address resets to 0, so the first EEPROM accessed must be loaded from address 0. The peripheral address is either 1 or 2 bytes depending on the state of the I2C_MA pin, which much be set appropriately depending on the type of EEPROM connected. The boot loader then switches to read mode and reads the first 8 bytes, expecting to find a count of the number of registers to be initialized in the first 2 bytes, followed by 6 bytes of 0xFF. A validity check is completed on this field — if the number of registers exceeds the maximum (see “EEPROM Data Format”), or if any of the last 6 bytes are not 0xFF, it is assumed the EEPROM does not contain boot load data, the boot load is aborted and the BL_FAIL interrupt status is updated in the “I2C Interrupt Status Register”. On these boot load status bits, the optional interrupt can be forwarded to the Interrupt Controller if enabled in the “I2C Interrupt Enable Register”. If the register count was 0, the boot load is ended successfully and the BL_OK interrupt status is updated. An optional interrupt can also be forwarded to the Interrupt Controller if enabled in the “I2C Interrupt Enable Register”. For information on the expected EEPROM data format used for boot loading, see “EEPROM Data Format”. The boot loader continues by reading eight bytes of data for each register to be loaded, and increments the peripheral address by 8. Depending on the PAGE_MODE field in the “I2C Boot Control Register”, the peripheral address is periodically reset by issuing a Restart, re-selecting the boot device, and sending the updated peripheral address. On reset, the PAGE_MODE resets to a boundary of 8 such that initially the peripheral address is updated to the device after every register is loaded (see “Accelerating Boot Load”). In addition, for 1-byte peripheral addresses, if the BINC bit is 1, then when the peripheral address crosses a 256-byte boundary (that is, when the 1-byte address rolls over to 0x00), the LSB 3 bits of the BOOT_ADDR are incremented and the device is re-addressed. This supports those EEPROMs that use the lower 3 bits of their address as a 256-byte page indicator. For each block of 8 bytes loaded, the first 4 bytes are the register address on the internal Tsi578 register bus, and the next 4 bytes are the 32-bit data value to be written to the register. No checking is completed for register address or data validity. As soon as all 8 bytes are read, the data is written to the internal address, the peripheral address count is updated, and the register count is decremented. Once the register count reaches 0 the boot load from the current EEPROM is complete, and, unless chaining is invoked, the boot load sequence is complete, a STOP condition is issued to release the bus, and the BL_OK interrupt status is updated. An optional interrupt can also be forwarded to the Interrupt Controller if enabled in the “I2C Interrupt Enable Register”. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Boot Load Sequence 170 7.8.6 Chaining The boot loader provides for booting from multiple EEPROMs, or from multiple sections within a single EEPROM (or any combination of both). This process is called chaining. Chaining is invoked during the boot load sequence when three conditions occur together: • All the registers indicated by the register count are loaded • The final register loaded was the “I2C Boot Control Register” • The value loaded into the I2C_BOOT_CNTRL register had the CHAIN bit set If these conditions are met, then the boot load sequence continues using the updated information in the I2C_BOOT_CNTRL register. This allows all aspects of the boot load to be changed – the device address, the peripheral address, and so forth. When a chain occurs, the boot load sequence addresses the new device and reads a new register count from the peripheral address. This address could be non-zero, so on a chain it is possible to start loading from other than address 0 in an EEPROM. On a chain, it is important to set the peripheral address size (PSIZE), boot address increment (BINC) and page mode (PAGE_MODE) fields so they are valid for the new EEPROM; otherwise, the boot load process may be corrupted (for information about these bits, see “I2C Boot Control Register”). It may also be necessary to use the BOOT_UNLK field to change the lower 2 bits of the EEPROM address. By default, the BOOT_UNLK field is not set, so if the BOOT_ADDR field is changed, the lower 2 bits remain at their previous value. This way the power-up reset value is not inadvertently lost. If as part of the chaining process it is necessary to change those bits (such as if the boot load is being switched to a common EEPROM), then a two-step process is needed. The I2C_BOOT_CNTRL register should be written once with the BOOT_UNLK field set to 1, then written a second time with the correct information. The lower 2 bits of the BOOT_ADDR field are only allowed to change if the BOOT_UNLK field was a 1 before the register load. 7.8.7 EEPROM Data Format Table 18 shows the EEPROM data format for boot loading. The first 8 bytes of the EEPROM contain the number of registers to be loaded during the boot procedure. This count is the 16-bit value in EEPROM location 0 (MSB) and location 1 (LSB). The I2C Interface is limited to 255 register loads in 1-byte address mode, and limited to 8 KB-1 register loads in 2-byte address mode. The remaining 6 bytes (memory locations 2 through 7) must be set to 0xFF or the register count validity check will fail and the boot load will be aborted. When 1-byte address mode is selected, any number of registers greater than 255 (0x00FF) aborts the boot load from the EEPROM. When 2-byte address mode is selected, any number of registers greater than 8191 (8 KB-1 = 0x1FFF) aborts the boot load from the EEPROM. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Boot Load Sequence 171 The register load data consists of 8-byte fields aligned to 8-byte peripheral address boundaries. The first 4 bytes are the internal register address and the second 4 bytes are the register data. Note that the address and data are ordered from MSB to LSB within increasing peripheral byte addresses. Table 18: Format for Boot Loadable EEPROM PerAdr PerAdr+0 PerAdr+1 PerAdr+2 PerAdr+3 0x0 RegCnt(MSB) RegCnt(LSB) 0xFF 0xFF 0x4 0xFF 0xFF 0xFF 0xFF 0x8 RegAdr(MSB) RegAdr RegAdr RegAdr(LSB) 0xC RegData(MSB) RegData RegData RegData(LSB) 0x10 RegAdr(MSB) RegAdr RegAdr RegAdr(LSB) 0x14 RegData(MSB) RegData RegData RegData(LSB) ... ... ... ... ... As an example, the following shows an EEPROM configured to load two registers and then complete – first the “I2C Master Configuration Register” at internal address 0x1D108, loaded with data value 0x0102_0304; then the “I2C Master Transmit Data Register” at internal address 0x1D114, loaded with data value 0x0506_0708. Table 19: Sample EEPROM Loading Two Registers PerAdr PerAdr+0 PerAdr+1 PerAdr+2 PerAdr+3 Description 0x0 0x00 0x02 0xFF 0xFF RegCnt = 2, must have 0xFFFF at end 0x4 0xFF 0xFF 0xFF 0xFF Must be 0xFFFF_FFFF 0x8 0x00 0x01 0xD1 0x08 RegAdr = 0x1D108 I2C_MST_CFG 0xC 0x01 0x02 0x03 0x04 RegData = 0x0102_0304 0x10 0x00 0x01 0xD1 0x14 RegAdr = 0x1D114 I2C_MST_TDATA 0x14 0x05 0x06 0x07 0x08 RegData = 0x0506_0708 >= 0x18 xx xx xx xx Unused by Boot Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Boot Load Sequence 172 As a second example, the following shows an EEPROM configured to first load the I2C_MST_CFG register then chain to address 0x80 in the same EEPROM and load the I2C_MST_TDATA register. Note that the chain requires loading the I2C_BOOT_CNTRL register. The new peripheral address is 0x80 >> 3 = 0x10, because the 3 LSBs must be zero and are not part of the PADDR field. Table 20: Sample EEPROM With Chaining PerAdr PerAdr+0 PerAdr+1 PerAdr+2 PerAdr+3 Description 0x0 0x00 0x02 0xFF 0xFF RegCnt = 2, must have 0xFFFF at end 0x4 0xFF 0xFF 0xFF 0xFF Must be 0xFFFF_FFFF 0x8 0x00 0x01 0xD1 0x08 RegAdr = 0x1D108 I2C_MST_CFG 0xC 0x01 0x02 0x03 0x04 0x10 0x00 0x01 0xD1 0x40 RegData = 0x0102_0304 RegAdr = 0x1D140 I2C_BOOT_CNTRL 0x14 0x80 0x50 0x00 0x10 RegData = 0x8050_0010 CHAIN = 1 BOOT_ADDR = 1010000 PADDR = 0x10 0x18 - 0x7F xx xx xx xx Unused by Boot 0x80 0x00 0x01 0xFF 0xFF RegCnt = 1, must have 0xFFFF at end 0x84 0xFF 0xFF 0xFF 0xFF Must be 0xFFFF_FFFF 0x88 0x00 0x01 0xD1 0x14 RegAdr = 0x1D114 I2C_MST_TDATA 0x8C 0x05 0x06 0x07 0x08 RegData = 0x0506_0708 >= 0x90 xx xx xx xx Unused by Boot 7.8.8 I2C Boot Time The time required to perform an I2C boot depends on the following: • The number of registers that require configuration • The number of devices contending for EEPROM or I2C bus access • The number of chaining operations • The clocking speeds of the master devices Because many of these parameters are outside the control of the Tsi578, the boot time cannot be predicted with complete accuracy. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Boot Load Sequence 173 If there are no other devices contending for bus access, a 1-byte peripheral address is used, no boot acceleration techniques are used, and no retries are necessary for device detect, then boot time can be estimated as follows: Boot_Time = 50 us idle detect time + (9 * ClkPer) EEPROM reset time + (102 * (RegisterCount + 1) * ClkPer) register load time + (1 * ClkPer) STOP time Where: ClkPer = clock period (resets to 10 us for a 100 kHz clock) RegisterCount is the sum of number of registers from the Register Count fields in the EEPROM (only one count field unless chaining is involved). If a 2-byte peripheral address is used, then the “102” constant increases to “111”. The 102 constant comes from the sum of Start + (9-bit boot address) + (9-bit peripheral address) + Restart + (9-bit boot address) + (9-bit data byte * 8 bytes per register = 72 bits) = 101 clocks, but the Start and Restart take an extra 1/2 clock each, so an extra clock cycle is consumed. For example, if 255 registers are read the boot time is: Boot_Time = 50us + (90us EEPROM reset) + (10us * 102 * 256 register load) + 10us Stop Boot_Time = 261,270 us = slightly over 1/4 second 7.8.9 Accelerating Boot Load If boot load time is a design concern, the following techniques may accelerate the boot load sequence: 1. If the EEPROM supports reading of a large block of data sequentially, change PAGE_MODE in “I2C Boot Control Register” as the first register load. Depending on the page size, this reduces the number of times the boot load re-addresses the device and resets the peripheral address. At the limit, if the “infinite” setting was chosen and the device did not wrap on any page boundaries, the 102 constant in the boot time formula in “I2C Boot Time” would be reduced to 72 cycles per register, with only one address phase initially or per chain operation. 2. If the EEPROM supports reading at higher than 100-kHz clock speeds, the timing parameters can be changed during boot load. The success of this depends on the bus properties because the Tsi578 does not contain the Schmitt Triggers or slope controlled outputs needed to guarantee conformance to the 400-kHz high-speed mode. However, it is possible that many configurations will be interoperable at higher speeds (for information on changing timing parameters, see “Bus Timing”). Timing parameters are reloaded upon a chain operation, so the technique is to program the timing parameters for the higher speed, set up the digital filters if required, and then invoke a chain operation using the same EEPROM but the next peripheral address. Everything from the chain onwards will be mastered at the higher speed. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Error Handling 174 7.9 Error Handling The Tsi578 handles a number of I2C errors and reports them with status bits, as summarized in Table 21. Table 21: I2C Error Handling Error Cause Access Type Tsi578 Response Interrupt Status Bit (Events) a Master Access Errors Master arbitration timeout expired. Tsi578 could not successfully arbitrate for the I2C bus; Arbitration lost during device addressing phase. Master read or write initiated using I2C_MST_CNTRL register The I2C transaction is aborted. MA_ATMO Tsi578 determined that it lost arbitration for the I2C bus after the device addressing phase Read or Write The I2C transaction is aborted. MA_COL No device ACK’d the slave address, or target device NACK’d a peripheral address or write data byte. Any read or write access during slave address phase or peripheral address phase, or any write access during the data phase. Access aborted, STOP generated. The I2C_ACC_STAT register indicates where transaction was on error. MA_NACK Timeout expired (I2C_SCLK Low, Byte or Transaction). Target device was too slow, or some device was interfering with the I2C_SCLK signal. Any transfer to or from the Tsi578 Access aborted. The I2C_ACC_STAT register indicates where transaction was on error. For Byte or Transaction, master issues STOP at first legal opportunity. For I2C_SCLK Low, bus is hung, software must recover. MA_TMO (MSCLTO, MBTTO or MTRTO) Read operation Peripheral Address byte is acknowledged, 0x00 is returned as data. SA_OK Write operation Peripheral Address byte is acknowledged. Write data is ignored. Read operation 0x00 is returned as data. Write operation Write data is ignored Slave Access Errors Peripheral Address selects reserved external address space Peripheral Address selects a defined register, but data burst continues into reserved address Tsi578 User Manual June 6, 2016 SA_OK Integrated Device Technology www.idt.com 7. I2C Interface > Error Handling 175 Table 21: I2C Error Handling (Continued) Error Cause Access Type Tsi578 Response Interrupt Status Bit (Events) a Programmed register address accesses a non-existent internal register block Read operation Read returns 0x00 SA_OK Write operation Write data discarded SA_OK Internal register access when disabled External master read to the EXI2C_REG_RDATA register, or write to the EXI2C_REG_WDATA register Operation completes, returns existing RDATA or updates WDATA, but no internal register access generated. SA_OK Timeout expired (I2C_SCLK Low, Byte or Transaction). Target device was too slow, or some device was interfering with the I2C_SCLK signal. Any transfer to or from the Tsi578 Slave releases I2C_SD and I2C_SCLK, goes into wait state. SA_FAIL (SSCLTO, SBTTO or STRTO) Protocol violation (collision detected) Read data or Ack/Nack, when slave puts a 1 on the I2C_SD signal and another device holds the signal to 0. Slave releases I2C_SD and I2C_SCLK, goes into wait state. SA_FAIL (SCOL) No SDW/SDR Register Initialization Loader Errors Failed to find EEPROM Initialization read Read operation retried up to 6 times before aborting. If not Ack’ed by the 6th try, status bits set BL_FAIL (BLNOD) Size field specifies more than 255 registers to load in 1-byte addressing mode, or 8 KB-1 registers in 2-byte addressing mode. Initialization read Initialization load aborted BL_FAIL (BLSZ) Register address selects non-existent register. Register initialization write Data discarded None Failed to arbitrate for I2C bus during boot load, boot load timer expired. Initialization read Initialization load aborted BL_FAIL (BLTO) Protocol error during boot load, including bytes 2-7 of a register count not containing 0xFF. Initialization read Initialization load aborted BL_FAIL (BLERR) a. To determine the setting of the interrupt status bits, see “I2C Interrupt Status Register”. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Interrupt Handling 176 7.10 Interrupt Handling I2C interrupts are generated as shown in Figure 37. An I2C event detected by the I2C Interface sets a bit in the “I2C Interrupt Status Register” to a 1 to assert the interrupt. This bit is then anded with the corresponding bit in the “I2C Interrupt Enable Register” to determine if that interrupt is enabled. Any enabled interrupt status bit asserts the interrupt output signal to the Interrupt Controller. This signal stays asserted until all enabled bits in the interrupt status register are cleared. Figure 37: I2C Interrupt Generation Write 1 to bit N in I2C_INT_STAT to CLEAR Bit 0 Status+Enable AND Event Asserted by Logic SETS Write 1 to bit N in I2C_INT_SET to SET OR Bit N I2C_INT_STAT AND Bit N I2C_INT_ENABLE OR Interrupt Signal to Interrupt Controller Bit 31 Status+Enable AND The interrupt status bits are cleared by a write-one-to-clear operation to the Interrupt Status Register, provided the interrupt status register has first been read. For test purposes, bits in the Interrupt Status Register can also be set by a write-one-to-set operation to the “I2C Interrupt Set Register”. A bit that is set in the Interrupt Status Register is cleared by a write-1-to-clear operation only after the register has first been read, and then providing another event that would result the interrupt condition has not occurred since the read of the register (see “Events versus Interrupts”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Events versus Interrupts 7.11 177 Events versus Interrupts Interrupts are generated by I2C events. Figure 38 shows the design of the event and interrupt logic. A single interrupt status bit may be derived from one or more events. The event registers provide control over the individual events that in turn produce the interrupt status. In the diagram, the shaded boxes represent virtual registers. These registers behave correctly when read or written, but can be constructed from combinational logic as opposed to flip-flops. Whether a register is virtual or not is inconsequential to their behavior from a software perspective. The distinction is shown only for exactness. A new event is set in the “I2C New Event Register” when an event is asserted in the logic, or when a 1 is written to the register (or to the related interrupt bit in the “I2C Interrupt Set Register”). New events are ored with the I2C_SNAP_EVENT register to create the virtual I2C_EVENT register. A snapshot operation occurs when the “I2C Interrupt Status Register” is read. As a result of the snapshot, the new event register is “copied” to the snapshot register by oring the new events into the current snapshot state, then clearing the new event register. Each event is anded with the corresponding enable bit in the “I2C Enable Event Register”, and then ored with any other enabled events that are related to a single interrupt status bit. The combined event state becomes the interrupt status bit in the Interrupt Status Register, and is then anded with the corresponding enable in the “I2C Interrupt Enable Register”. All the enabled interrupt status bits are then ored together to become the single interrupt signal to the Interrupt Controller. The new event and snapshot registers separate events that occurred prior to a read of the interrupt status register from those that occur during or after the read. When a 1 is written to the interrupt status register to clear an interrupt, all related events that are enabled are cleared in the snapshot register. Since events are copied to the snapshot register only when the interrupt status register is read, the read must be completed first for the write 1 to clear to have effect. If no new events have occurred, this write-1-to-clear de-asserts the interrupt status. If a new event has occurred, the event remains set in the new event register, so the interrupt status remains set. For control purposes, software can read and clear the snapshot event bits directly, allowing individual events to be cleared while leaving any new events intact. Software can also select to read or clear events using the new event register. Reading the event register shows the “or” of the new and snapshot, and thus shows whether an event is asserting. Writing a 1 to an event bit clears both the snapshot and new events register bits, thus clearing out the event entirely, unless that event happens to be asserting again on the same cycle the clear is completed, thus setting it again. As long as all event enables are set (the reset state), then the behavior is logical (see “Interrupt Handling”). Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Events versus Interrupts 178 Figure 38: I2C Event and Interrupt Logic Read I2C_INT_STAT to CLEAR (after snapshot) Write 1 to bit N in I2C_EVENT to CLEAR Event Asserted by Logic SETS Bit N I2C_NEW_EVENT Write 1 to bit N in I2C_NEW_EVENT or to related bit in I2C_INT_SET to SET Read I2C_INT_STAT to copy all asserted new events to snapshot register OR Bit N I2C_EVENT Bit N I2C_SNAP_EVENT Write 1 to bit N in I2C_EVENT to CLEAR Write 1 to related status bit in I2C_INT_STAT to CLEAR Other related event(s)+ enb(s) if any AND Bit 0 Status+Enable AND OR OR Bit N I2C_INT_STAT AND AND Bit N I2C_EVENT_ENB Bit N I2C_INT_ENABLE OR Interrupt Signal to Interrupt Controller Bit 31 Status+Enable AND Table 22 shows the mapping of interrupts in the “I2C Interrupt Status Register” to the events in the “I2C Event and Event Snapshot Registers”. Any asserted and enabled event sets the corresponding interrupt status, and clearing an asserted interrupt status bit clears all the related and enabled events. Table 22: I2C Interrupt to Events Mapping Interrupt Status Bit Events Related to Interrupt OMB_EMPTY (Outgoing Mailbox Empty) OMBR (Outgoing Mailbox Read Event) IMB_FULL (Incoming Mailbox Full) IMBW (Incoming Mailbox Write Event) BL_FAIL (Boot Load Fail) BLTO (Boot Load Timeout Error) BLERR (Boot Load Error Event) BLSZ (Boot Load Size Error Event) BLNOD (Boot Load No Device Event) Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Timeouts 179 Table 22: I2C Interrupt to Events Mapping (Continued) Interrupt Status Bit Events Related to Interrupt BL_OK (Boot Load OK) BLOK (Boot Load OK Event) SA_FAIL (Slave Access Failed) SCOL (Slave Collision Detect Event) STRTO (Slave Transaction Timeout Event) SBTTO (Slave Byte Timeout Event) SSCLTO (Slave I2C_SCLK Low Timeout Event) SA_WRITE (Slave Access Write) SDW (Slave Internal Register Write Done Event) SA_READ (Slave Access Read) SDR (Slave Internal Register Read Done Event) SA_OK (Slave Access OK) SD (Slave Transaction Done Event) MA_DIAG (Master Diagnostic Event) DTIMER (Diagnostic Timer Expired Event) DHIST (Diagnostic History Filling Event) DCMDD (Diagnostic Command Done Event) MA_COL (Master Collusion) MA_TMO (Master Timeout) MCOL (Master Collision Detect Event) MTRTO (Master Transaction Timeout Event) MBTTO (Master Byte Timeout Event) MSCLTO (Master I2C_SCLK Low Timeout Event) 7.12 MA_NACK (Master NACK) MNACK (Master NACK Received Event) MA_ATMO (Master Arbitration Timeout) MARBTO (Master Arbitration Timeout Event) MA_OK (Master Transaction OK) MTD (Master Transaction Done Event) Timeouts The I2C Interface supports a number of timeout periods to detect a set of error conditions related to I2C operation. These timeouts, and the registers that configure them, include the following: • I2C_SCLK low timeout (see “I2C_SCLK Low and Arbitration Timeout Register”) – This timeout detects a situation where a device on the bus is stuck holding the clock low. Because the clock is stuck low, no progress can be made. If enabled, this timeout expiring will set either the SSCLTO or MSCLTO events and result in a SA_FAIL or MA_TMO interrupt status being updated in the I2C_INT_STAT register (depending on whether a master or slave operation was in progress). An optional interrupt can be sent to the Interrupt Controller if SA_FAIL or MA_TMO is enabled in the “I2C Interrupt Enable Register”. This is an extreme failure. With I2C_SCLK held low, no Stop condition can be generated. Any operation is aborted, both I2C_SCLK and I2C_SD are released, and both master and slave revert to their monitor-for-bus-idle phase. It is up to software to decide how to handle this error. Because any operation was aborted without correct termination (no Stop), it is possible that the external device is left in an invalid state. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Timeouts 180 • Arbitration timeout (see “I2C_SCLK Low and Arbitration Timeout Register”) – This timeout applies only to master transactions initiated by setting the START bit in the “I2C Master Control Register”. Its purpose is to limit the length of time the master controller tries to gain ownership of the bus. The arbitration timer is disabled once the are successfully transmitted without detecting another master attempting a different transaction. If the Tsi578 I2C master subsequently loses ownership of the bus after this phase of the transaction, the transaction is aborted. If the Tsi578 I2C master detects another master corrupting the bits it has transmitted, the Tsi578 I2C master reverts to waiting for bus idle then tries again. The arbitration timeout continues to run in this case. If the arbitration timer expires before ownership is gained and the master is waiting for bus idle, then it aborts the operation and sets the MARBTO event, which causes a MA_ATMO interrupt status to be updated in the “I2C Interrupt Status Register”. An optional interrupt can also be sent to the Interrupt Controller if the MA_ATMO is enabled in the “I2C Interrupt Enable Register”. If the Tsi578 I2C master was in the midst of transmitting the when the timeout expires, it allows the to complete. If an ACK or NACK is successfully received, the master continues as if the timeout had not expired. If another I2C master collides with , the timeout immediately takes effect following the bit where the collision took place. • Tsi578 User Manual June 6, 2016 Byte timeout (see “I2C Byte/Transaction Timeout Register”) – This timeout is disabled on reset. It detects a situation where one or more devices are stretching the clock enough to slow the transfer speed on the bus beyond some limit. This timeout is available primarily to detect a violation of the SMBus TLOW:MEXT time. The response to this timeout expiring depends on the phase of the transfer and whether it is detected by the master or slave interface. For a master transaction, the master continues to generate clocks until the next bit time where it would have control of the bus; that is, writing data or generating an Ack/Nack in response to a read byte. At that time, the master generates a Stop condition, aborts the operation and sets the MBTTO event, which causes an MA_TMO interrupt status to get updated in the “I2C Interrupt Status Register”. An optional interrupt can also be sent to the Interrupt Controller if the MA_TMO bit is enabled in the “I2C Interrupt Enable Register”. For a slave transaction, the slave waits for the start of the next bit time, releases the I2C_SD and I2C_SCLK signals and sets the SBTTO event, which causes an SA_FAIL interrupt status to get updated in the I2C_INT_STAT register. An optional interrupt can be sent to the Interrupt Controller if the SA_FAIL bit is enabled in the “I2C Interrupt Enable Register”. The slave then reverts to looking for the next Start/Restart/Stop. Integrated Device Technology www.idt.com 7. I2C Interface > Timeouts 181 • Transaction timeout (see “I2C Byte/Transaction Timeout Register”) – This timeout is disabled on reset. It detects a situation where a master is keeping the bus for an extended period of time, as measured from the Start to Stop condition. This timeout is available primarily to detect a violation of the SMBus TLOW:SEXT time. The response to this timeout expiring is identical to a Byte timeout, with the exception that the events are MTRTO or STRTO for the master or slave respectively. • Boot timeout (see “I2C Boot and Diagnostic Timer”) – This timeout detects a situation where the boot load sequence has not completed in a reasonable time. This could occur if the EEPROM was improperly programmed with an infinite chaining loop, the bus ownership is held by some other device, or some other anomalous situation resulting in any of the time-outs above. If the boot timeout expires before the normal end of the boot load sequence, the master interface reads until the next data byte and drives a Stop condition on the bus. It then sets the BLTO event, which causes a BL_FAIL interrupt status to get updated in the “I2C Interrupt Status Register”. An optional interrupt can also be sent to the Interrupt Controller if the BL_FAIL bit is enabled in the “I2C Interrupt Enable Register”. The boot_complete signal is asserted when the boot load timeout expires. If the boot timeout is not desired, then the EEPROM programming should immediately write the I2C_BOOT_DIAG_TIMER.COUNT to 0 to disable the timeout. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Timeouts 182 Figure 39 shows the relationship of the I2C time-outs to I2C operations. Figure 39: I2C Timeout Periods SCL Low Timeout Master or Slave I2C_SCLK From SCL sampled low to SCL sampled high Any collision on bus loses arbitration Arbitration Timeout Master Only START Wait for Bus Idle START bit set in I2C_MST_CNTRL S Slave Adr R/W A S/R P From start of master operation to slave address acknowledge From start/restart to next Ack/Nack Byte Timeout Master or Slave PerAdr Slave Adr R/W A/N PerAdr or Data From Ack/Nack to Stop/Restart A/N P/R From Ack/Nack to next Ack/Nack Transaction Timeout Master or Slave S Slave Adr R/W A/N PerAdr or Data A/N R P From Start Condition to Stop Condition (may have multiple restarts in between) N Hard Reset Idle Detect EEPROM Reset Wait for Bus Idle S Boot Adr W A Boot Timeout Master Only Load Regs Chain Load Regs P From existing hard reset to Stop condition that terminates the boot load sequence Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Bus Timing 7.13 183 Bus Timing Figure 40 shows the relationship of the bus timing parameters to the generation of the I2C_SCLK and I2C_SD signals on the I2C bus. These parameters are configured in the following registers: • “I2C Start Condition Setup/Hold Timing Register” • “I2C Stop/Idle Timing Register” • “I2C_SD Setup and Hold Timing Register” • “I2C Stop/Idle Timing Register” • “I2C_SCLK High and Low Timing Register” • “I2C_SCLK Minimum High and Low Timing Register” The bus timing resets to 100-kHz operation. By reprogramming these registers, other bus speeds can be configured. Speeds above 100 kHz are not guaranteed to conform to the I2C Specification because of the absence of Schmitt triggers on the input of the I2C_SD and I2C_SCLK signals, and the absence of slope controlled outputs for the I2C_SD and I2C_SCLK signals. It is up to the board or system designer to decide on the applicability of operation at speeds above 100 kHz. Bus timing does not normally change during a transaction, even if these registers are changed. The timing registers are sampled at certain times to prevent this from occurring. The following are the times when timing adjustments take effect: • On hard reset (times are reset to 100 kHz) • When reset using the “I2C Reset Register” • At the start of a master transaction through the “I2C Master Control Register”, when the START condition is generated • Upon a chain operation during boot load Timing parameters are discussed further in the following sections. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Bus Timing 184 Figure 40: I2C Bus Timing Diagrams I2C_SD START/RESTART Condition Master Only I2C_SCLK Setup Hold I2C_SD STOP Condition Master Only I2C_SCLK Setup I2C_SD I2C_SD Data Bit or Ack/Nack Master or Slave I2C_SCLK Setup Hold Nominal Low Nominal High I2C_SCLK High/Low Master Only SCL Minimum Low Minimum High RESET Idle Detect Post-Reset Idle I2C_SCLK Not Idle Idle Timeout Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 7. I2C Interface > Bus Timing 7.13.1 185 Start/Restart Condition Setup and Hold The Start/Restart Condition is generated by a master. As shown in Figure 40, the Start Setup time defines the minimum period both the I2C_SD and I2C_SCLK signals must be seen high (1) before the I2C_SD signal is pulled low (0) to trigger the Start. The I2C_SD signal must also have fulfilled the I2C_SD Setup time prior to the rising edge of I2C_SCLK. Once the I2C_SD signal is seen low (0), the Start Hold time is the minimum period the I2C_SCLK signal must continue to remain high (1) before it is pulled low (0). These parameters are used by the Tsi578 as a master when generating the Start condition. These times may be violated by an external master or slave pulling the I2C_SD or I2C_SCLK signals low before the setup/hold periods are expired, which may result in an arbitration loss or collision. 7.13.2 Stop Condition Setup The Stop Condition is generated by a master. As shown in Figure 40, the Stop Setup time defines the minimum period the I2C_SD must be seen low (0) and the I2C_SCLK signal must be seen high (1) before the I2C_SD signal is released high (1) to trigger the Start. The I2C_SD signal must also have fulfilled the I2C_SD Setup time prior to the rising edge of I2C_SCLK. There is no separate Stop Hold parameter, as the only valid condition following a Stop would be a Start; therefore, the Start Setup fulfills the same use as a Stop Hold or Stop-to-Start buffer time. This parameter is used by the Tsi578 as a master when generating the Stop condition. If the I2C_SCLK signal was prematurely pulled low (0) by an external master or slave, this would be seen as a collision event. 7.13.3 I2C_SD Setup and Hold Either a master or a slave can be in control of the I2C_SD signal, depending on the phase of the data transfer protocol. As shown in Figure 40, the I2C_SD Setup time defines the minimum period the I2C_SD signal must set to the desired state while I2C_SCLK is low (0) before the I2C_SCLK signal is release high (1) to generate the high period of the clock. The I2C_SD Hold time defines the minimum period the I2C_SD signal is left unchanged after the falling edge of I2C_SCLK (I2C_SCLK seen low). The I2C_SD hold time may be violated by another device pulling I2C_SD low, but this is not an error, as it normally indicates another device with a different design. The I2C_SD setup time is not as defined in the I2C Specification. The setup time parameter encompasses both the maximum rise/fall time of the I2C_SD signal plus the output hold time and must be set accordingly. There is no feedback check that the I2C_SD signal goes to the desired state, as this could result in I2C_SCLK being held low erroneously. If another device is also controlling I2C_SD, the likely result is an arbitration loss or collision. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 7. I2C Interface > Bus Timing 186 7.13.4 I2C_SCLK Nominal and Minimum Periods These parameters are used by the Tsi578 as a master to generate the I2C_SCLK clock. The master must obey the minimum times to conform to the I2C Specification, and must also attempt to regulate the overall I2C_SCLK frequency to a defined period. From Figure 40, it can be seen that the logic measures the minimum periods high/low from the detected rising/falling edges of the I2C_SCLK signal to the point where I2C_SCLK is driven low or released high to generate the opposing edge. In conjunction, a separate nominal period timer measures from driven low to released high, and released high to driven low. Both timers must expire if unaffected by external devices. If another device pulls the I2C_SCLK signal low prematurely in the high period, the high period timers are expired and the lower period timers restart for the low period, so the actual low period may be stretched by the nominal timer. If another device holds the I2C_SCLK signal low longer in the low period than the nominal low period, the high period nominal timer will likely expire early and the minimum high period timer will control the high period when the clock is finally released. 7.13.5 Idle Detect Period This is a master-only parameter that is used in two cases. First, upon exit from reset it is unknown if another master is active. The Idle Detect timeout determines if the I2C_SCLK signal remains high long enough (roughly 50 microseconds) that it is unlikely another master is active. If I2C_SCLK is seen low during this period, it is assumed another master is active, and the master enters the Wait for Bus Idle phase. If the idle detect period expires without I2C_SCLK seen low, then it is assumed the bus is idle and the master is free to generate a Start Condition if needed. Second, during the Wait for Bus Idle phase, it is possible that an external master that has claimed the bus ceases activity without issuing a STOP condition. When a master operation is started but the bus is currently seen busy, the idle detect timer monitors the I2C_SCLK and I2C_SD signals. If the I2C_SCLK and I2C_SD signals both remain high longer than the idle detect period, the bus is then assumed idle even though a STOP had not been seen, and the master logic will attempt the requested transaction. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 187 8. Performance This chapter is a detailed description of the packet switching performance characteristics of the Tsi578. It consists of the following general topics: 8.1 • “Overview” on page 187 • “Performance Monitoring” on page 188 • “Configuring the Tsi578 for Performance Measurements” on page 192 • “Port-to-Port Performance Characteristics” on page 193 • “Multicast Performance” on page 195 • “Congestion Detection and Management” on page 196 Overview Performance for packet switching is characterized by three measurements: throughput, latency, and latency variation. Performance is specified for error free transmission and reception of packets. Performance is specified for end-to-end transfers through the Tsi578. No performance specifications are made for the different stages of transfers through the Tsi578. Performance is specified for a single switch. Performance for larger systems can be computed from this data. 8.1.1 Throughput Throughput for packets is a measurement of the amount of packet data that can be transferred in a given amount of time. It can be presented in different forms: • Percentage of a link’s bandwidth (for example, 56% of a 1x @ 3.125 Gbaud) • Number of packets of a given size per unit time (for example, 3000 44 byte packets every second) • Bit transfer rate (for example, 300 Mbits/s) Throughput measurements include only successfully transferred packets. Measured throughput does not include control symbols, retried packets, or other non-packet data transmitted/received on a link (/K/ and /R/ characters). 8.1.2 Latency Latency is the amount of time between packet reception and packet transmission. However, the specific time at which packet reception and packet transmission are deemed to have started must still be defined. Throughout this document, latency is measured as the time interval between the first bit of the Start-of-Packet arriving at the ingress of the Tsi578 and that same bit leaving the device. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 188 8. Performance > Performance Monitoring Figure 41 illustrates the path a packet flows through a Tsi578. For Tsi578 latency performance, packet reception time begins with the time the first bit of a packet is seen on the input pins. Packet transmission begins when the first bit of a packet has been transmitted on the output pins. As part of the resolution of resource contention, higher priority packets can be allowed to pass packets of lower priority. Latencies should therefore decrease as the priority of a packet increases. A specific time for packet latency can only be specified when there are no conditions that create resource contention between packets. For example, if a single stream of packets passing from one ingress port to a single egress port is the only traffic handled by the Tsi578, it is possible to specify the latency for the packets in this stream. A complex traffic pattern is defined to be one which has resource contention. Complex traffic patterns make specifying the exact latency figure that each packet experiences difficult, because the amount of contention that a packet experiences can vary widely. As such, these scenarios are not covered in this manual. Figure 41: Latency Illustration Tsi578 Packet Source Ingress Link Packets Ingress ISF Egress Port Port T0 = first bit to arrive at Ingress Egress Link Packets Destination Port T1= first bit to leave at Egress Latency Equation: Latency = T1-T0 In the Tsi578, packets experience packet latency variations caused by the asynchronous ability of the device. Packets can experience an extra one or two clock cycles of delay over the minimum latency when crossing from one clock domain to another clock domain. These factors should be taken into account when creating a system timing budget (refer to Table 24 on page 194). 8.2 Performance Monitoring The main purpose of the performance monitoring functionality is to observe the data traffic on the RapidIO interface. The RapidIO traffic can come from different sources (different processing endpoints) and can cause data congestion in one of the destination interfaces. This congestion can have a negative impact on overall system performance. Performance monitoring can be used to identify and help prevent situations that negatively impact system performance. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 8. Performance > Performance Monitoring 189 Performance monitoring decisions can be made by system software in real-time. The system software can be programmed to routinely read the performance monitoring registers, analyze the traffic flow patterns, and re-route accordingly to avoid congestion. Each Serial RapidIO port in the device has a copy of the performance monitoring registers. Table 23 lists the statistic parameters that are available from the Outbound and Inbound registers, as part of each port’s performance monitoring capabilities. Table 23: Performance Monitoring Parameters Parameters Number of 32-bit words Registers Description • “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332 Any of the performance statistics counter registers can be configured to count the number of 32 bit words sent or received by a RapidIO link. • “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 Number of transactions • “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332 • “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 Number of packets for each priority (0, 1, 2, and 3) • “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332 • “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 Queue depth for inbound and outbound buffer • “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350 • “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352 Any of the performance statistics counter registers can be configured to count the number of packets sent or received by a RapidIO link. Any of the performance statistics counter registers can be configured to count the number of packets sent or received by a RapidIO link with a particular priority. Performance Statistics for monitoring the congestion situation in both Tx and Rx directions are supported. • “RapidIO Port x Transmitter Output Queue Congestion Period Register” on page 354 • “RapidIO Port x Receiver Input Queue Depth Threshold Register” on page 355 • “RapidIO Port x Receiver Input Queue Congestion Status Register” on page 357 • “RapidIO Port x Receiver Input Queue Congestion Period Register” on page 359 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 190 8. Performance > Performance Monitoring The following sub-sections describe the use of these parameters for monitoring the performance of the serial RapidIO ports in Tsi578. 8.2.1 Traffic Efficiency To characterize the efficiency of system traffic, the following parameters are used: 1. Packet rate (number of packets / time) — Packet rate is calculated using the number of packets computed from a counter register configured to count the number of packets. 2. Average packet size (number of 32-bit words / number of packets) — Average packet size is calculated using a counter configured to count the number of 32-bit words (call it COUNTER A), and a counter configured to count the number of packets (call it COUNTER B). The average packet size is COUNTER A divided by the value in COUNTER B. 3. Utilization ((packet rate * packet size) / max capacity) — Utilization is calculated using parameter 1 and parameter 2, above. These values are derived from the number of packets and the number of 32-bit words on each interface. The calculations of the packet rate, packet size, and utilization are completed externally. 8.2.2 Throughput The count of packets per priority in each interface can be a very important parameter when debugging RapidIO systems. This information can also be valuable when used by system software to dynamically re-route traffic around congested interfaces. The following parameters are used to monitor the throughput on each RapidIO interface: • Number of packets for each priority level (0, 1, 2 and 3) — Each performance counter register (for example, “RapidIO Port x Performance Statistics Counter 0 Register” on page 344) can be configured to count the number of packets selected based on priority. Retried packets are not counted. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 8. Performance > Performance Monitoring 8.2.3 191 Bottleneck Detection Monitoring the queue depth of the inbound and outbound modules can detect bottleneck traffic in the RapidIO interfaces. It can also be used to determine the period of time that packets of a given priority and below cannot be accepted. Both the inbound and outbound directions have the ability to program a queue depth watermark. The number of times that the queue depth watermark is exceeded is counted. As well, the amount of time that the queue depth watermark is exceeded is also counted to a programmable degree of accuracy. A port-write and/or an interrupt can be asserted if the queue depth watermark value exceeds a programmable number. The registers in the outbound direction that contain the values and counters described above are: • “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350 • “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352 • “RapidIO Port x Transmitter Output Queue Congestion Period Register” on page 354 The registers in the inbound direction are: 8.2.4 • “RapidIO Port x Receiver Input Queue Depth Threshold Register” on page 355 • “RapidIO Port x Receiver Input Queue Congestion Status Register” on page 357 • “RapidIO Port x Receiver Input Queue Congestion Period Register” on page 359 Congestion Detection A packet is reordered when it cannot make forward progress through the internal switching fabric. Packet reordering can be a sign of congestion in a RapidIO interface. A count of the number of times packets are reordered in each interface is stored in the “RapidIO Port x Reordering Counter Register” on page 360. After the value in a programmable threshold is reached, an interrupt is triggered. For example, if the traffic is time-critical control data, a very low threshold is programmed so that it is not congested for long. The interrupt handler is invoked. The system host can then take action to help ease the congestion. 8.2.5 Resetting Performance Registers The Inbound and Outbound performance registers are both read and writable. These registers are cleared after every read and saturate at the maximum counter values. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 192 8.3 8. Performance > Configuring the Tsi578 for Performance Measurements Configuring the Tsi578 for Performance Measurements Performance measurements for complex traffic patterns can be specified for two different configurations of performance settings. The first configuration is for lightly loaded systems, where the likelihood of resource contention is low. This is known as the ‘fair share’ performance configuration. The second configuration is for congested systems which optimize the throughput and latency of the highest priority packets at the expense of lower priority packets. This is known as the ‘high priority’ performance configuration. Ti p It is expected that configurations different from the two described will have performance figures between the two values specified. There are many controls in the Tsi578 that allow a system designer to optimize their system interconnect performance. These controls can be categorized as clock speeds, ISF arbitration settings, RapidIO packet scheduling and buffer management settings. 8.3.1 Clock Speeds Port speeds directly affect throughput, latency and latency variation. Generally, the slower the port, the lower the throughput, the higher the average latency and the greater the spread between minimum and maximum latency. • For ports operating in 1x mode, performance measurements are specified for operation at 3.125 Gbaud. • For ports operating in 4x mode, performance measurements are specified for operation at 3.125 Gbaud per lane. • All performance measurements assume that the ISF is operating at its maximum frequency of 156.25 MHz. Ti 8.3.2 p Performance changes linearly with port and ISF speed. Tsi578 ISF Arbitration Settings The ISF has three possible settings for its egress arbitration: First Come, First Served, Strict Priority 1, and Strict Priority 2. The First Come, First Served algorithm is used in the fair share performance configuration. For high priority systems which require the absolute lowest possible latency for the highest priority packets, and are willing to tolerate the additional latency and latency variation induced on the lower priority packets, the ISF Strict Priority 2 arbitration algorithm should be used. ISF Strict Priority 1 can be used in verification to ensure that ISF Strict Priority 2 does deliver optimal performance. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 8. Performance > Port-to-Port Performance Characteristics 8.3.3 193 Tsi578 RapidIO Transmission Scheduler Settings The First Come, First Served packet scheduling algorithm is used in fair share systems. In this algorithm, the oldest packet is transmitted. If this packet is retried, then the oldest, highest priority packet is transmitted. The oldest packet is the transmitted again. This leads to increased latency and decreased throughput for higher priority packets, since their forward progress is dependent upon the speed with which a lower priority packet can be retried. 8.3.4 Tsi578 RapidIO Buffer Watermark Selection Settings Buffer watermarks are used to restrict the transmission of lower priority packets, to the advantage of higher priority packets. Watermark settings directly affect throughput and indirectly latency and latency variation. For more information on watermarks, refer to “Egress Watermark” on page 92. The default watermark settings should be used for the fair share configuration for both RapidIO ingress buffer management and RapidIO egress buffer management. For ‘high priority’ configurations, watermark settings should be used which deliver maximal throughput for the highest priority packets. For ingress and egress ports, a maximum of 6 priority 2 packets can be accepted, a maximum of 4 priority 1 packets can be accepted, and a maximum of 2 priority 0 packets are accepted. 8.4 Port-to-Port Performance Characteristics The most intuitively obvious performance measurements of the Tsi578’s use port-to-port traffic models to characterize the maximum possible throughput and minimum latency performance of the Tsi578. In this case, all traffic is of uniform size and the same priority. Due to the simple type of traffic, the throughput and latency performance numbers do not change with the priority of the packets. 8.4.1 Port-to-Port Packet Latency Performance Table 24 on page 194 shows the 4x and 1x mode latency numbers under no congestion with default ISF arbitration and watermark settings. The numbers are based on the same ingress and egress port widths and baud rates. The minimum latency is the minimum time an ingress packet takes to appear at the egress. Due to the multi-clock domain system, the device operates in, the minimum latency can vary by one 312.5 MHz clock period and one reference clock (S_CLK) period. Cut-through mode is assumed. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 194 8. Performance > Port-to-Port Performance Characteristics Table 24: 4x/1x Latency Numbers Under No Congestion Reference Clock Ingress and Egress Port Width Ingress and Egress Baud Rate Minimum Latency (ns)a 156.25MHz 4x mode 3.125 112 2.5 128.8 1.25 212.8 3.125 131.2 2.5 152.8 1.25 260.8 1x mode a. Due to the asynchronous ability of the clock frequencies within the device, the latency numbers can vary as much by one 312.5 MHz clock period and one reference clock (S_CLK) period. The Tsi578 is designed to allow high priority traffic to bypass low priority traffic in periods of contention, as allowed in the RapidIO protocol specification. 8.4.2 Packet Throughput Performance Packet throughput varies from the packet type (for example, NWRITE packets do not require a logical layer response), availability of resources within the device, ability for source and destination of traffic to generate or receive packets, retries of packet, and actual data rates. A bubble is a control symbol inserted by an egress port to maintain the baud rate of the port. The appearance of a bubble indicates that the egress port is under-utilized. A bubble packet is not the Idle Sequence inserted to maintain link synchronization, as required by the RapidIO Interconnect Specification (Revision 1.3). 8.4.2.1 One Port-to-One Port Throughput Performance Under a non-congested port-to-port packet traffic situation, when the ingress and egress have the same line rate (1.25, 2.5, or 3.125 Gbaud), the ingress and egress always maintain the line rates. This means there is no retry of packets at the ingress ports and no bubbles will appear in the egress packet stream except for the idle sequence insertion every 5000 code-groups as required by the RapidIO Interconnect Specification (Revision 1.3). This is true for any payload size and different priorities. When the ingress line rate exceeds that of the egress port, a retry occurs at the ingress port when the buffer is filled to the capacity permitted by the priority of the packets. The egress port still maintains its maximum packet rate with no bubble. This is true for any payload size and priorities. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 8. Performance > Port-to-Port Performance Characteristics 8.4.2.2 195 Many Ports-to-One Port Throughput Performance Under a non-congested, many ports-to-one port packet traffic scenario, when all of the total ingress line rates are the same as the egress line rate (for example, four 1x mode, 3.125 Gbaud ingress ports all going to one 4x mode, 3.125 Gbaud egress port), the ingress port and egress port will always maintain line rates. This means there will be no retry of packets at the ingress and no bubble occurring in the egress packet streams except for the idle sequence insertion every 5000 code-groups required by the RapidIO Interconnect Specification (Revision 1.3). This is true for any payload size and different priorities. The arbitration scheme within the device allocates sufficient bandwidth for each ingress port. When the total of the ingress line rates exceed that of egress port, retries occur at one or more of the ingress ports if the packet density exceeds the capacity of the egress port. The egress port still maintains its maximum packet rate with no bubble. This is true for any payload size and priorities. 8.4.2.3 One Port-to-Many Port Throughput Performance Under a non-congested one port-to-many ports packet traffic scenario, when the ingress line rate is the same as the total egress line rates (for example one 4x mode, 3.125 Gbaud ingress port splitting to four 1x mode, 3.125 Gbaud egress port), the ingress and egress always maintain line rates. This means there is no retry of packets in ingress and no bubble-packet in the egress packet streams except for the idle sequence insertion every 5000 code-groups required by the RapidIO specification. This is true for any payload size and different priorities. The arbitration scheme within the device divides the traffic according to the egress port bandwidths. When the ingress line rate exceeds that of the total of the egress ports, retries occur at the ingress port when the packet density exceeds the buffer capacity. The egress ports still maintains their maximum packet rates with no bubble. This is true for any payload size and priorities. 8.4.3 Multicast Performance 8.4.3.1 Multicast Latency Since multicast involves more than one egress port and each egress port can have independent traffic conditions, a multicast packet can appear at the destination egress ports at different times. A minimum multicast latency is defined as the shortest time from the arrival of the first bit of a packet at an ingress port that will be multicast, to the appearance of the first bit of the multicast packet at an egress port under no resource contention. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 196 8. Performance > Congestion Detection and Management Table 25: 4x/1x Multicast Latency Numbers Under No Congestion Reference Clock Ingress and Egress Port Width Ingress and Egress Baud Rate (Gbaud) Minimum Latency (ns)a 156.25MHz 4x 3.125 163.2 2.5 178.4 1.25 254.4 3.125 188.8 2.5 210.4 1.25 318.4 1x a. Due to the asynchronous ability of the clock frequencies within the device, the latency numbers can vary as much as 6.4 ns. 8.4.3.2 Multicast Throughput The maximum input payload bandwidth of the multicast engine is 10 Gbit/s. This corresponds to a line rate of 4x mode, 3.125 Gbaud at the ingress port. The maximum input bandwidth of the multicast engine can be sourced from one ingress port or multiple ingress ports. When there is no congestion, and when all destination egress ports have a line rate of 4x mode (3.125 Gbaud) the egress port always maintains the line rate. There is no bubble-packet in the egress packet streams except for the idle sequence insertion every 5000 code-groups required by the RapidIO Interconnect Specification (Revision 1.3). There is also no retry at the ingress port because the ingress aggregation is handled by the multicast arbitration. This is true for any payload size and different priorities. When any of the egress port has a line rate lower than the input bandwidth of the multicast engine, retries occur at the ingress port. In this situation, the egress port maintains its line rate.For example, when an egress port is set to 4x mode, 2.5 Gbaud while the multicast engine is receiving a single or aggregated input data at maximum 10Gbit/s, retries happen at the ingress port(s). However, the egress port still maintains its line rate with no bubble inserted in that packet stream. 8.5 Congestion Detection and Management The congestion detection and management functionality enables the system management host to monitor the system through a series of registers. The system host can monitor the ingress and egress queue levels and the frequency at which the queues are above the threshold defined by the DEPTH parameter. The behavior and effects of the various tick timers and counters is described in the flow chart shown in Figure 42. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 8. Performance > Congestion Detection and Management 197 Figure 42: Congestion and Detection Flowchart Start Receive packet into egress queue Number of packets in queue >= Depth ? Yes Increment Congestion Counter by 1 No Congestion Period timer expire ? Yes Yes Leak Rate timer expire ? Increment Congestion Period No Counter by 1 Decrement Congestion Counter No by 1 Congestion Period Counter read by software Congestion Counter >= Congestion Threshold ? Yes ? No Clear Congestion Period Counter Set OUTB_DEPTH interrupt No Error Rate Bias Yes Yes timer expire ? Decrement Congestion Counter No Congestion Counter Yes read by software ? Reset No Error Rate Bias timer Wait for next packet Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 198 8.5.1 8. Performance > Congestion Detection and Management Congestion Registers The Tsi578 contains registers in every port that can be used for the detection and monitoring of ingress and egress queue levels. The registers and their descriptions are as follows: • “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350: This register contains tick timer values for the Congestion Period timer and the Leak Rate timer. This register also contains the Depth threshold which is compared against the number of packets in present in the egress queue. — Congestion Period (CONG_PERIOD): This value sets the tick interval for the Congestion Period Timer. At the timer expiry, the Congestion Counter is incremented by 1 if the counter value is greater than zero. The Congestion Period Counter indicates the number of tick intervals that the number of packets in the egress queue has exceeded the preset value in the DEPTH field of the register between the current and previous register reads of the Congestion Period Counter. — DEPTH: This field sets the threshold which exceeded by the number of packets in the egress buffer cause the Congestion Counter to be incremented. — Leak Rate (LEAK_RT): This register field is the count for the Leak Rate tick timer. At every tick of the Leak Rate tick timer, the Congestion Counter is decremented. • “RapidIO Port x Transmitter Output Queue Congestion Period Register” on page 354: This register contains only one field, CONG_PERIOD_CTR. This is the Congestion Period Counter. This counter is incremented at every tick whose period is set by the CONG_PERIOD field when the Congestion Counter is greater than zero. This register is keeps a running count, and is only cleared with a register read. • “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352: This register contains two fields, the Congestion Counter and the Congestion Threshold. — Congestion Counter (CONG_CTR): This field keeps a running count of the number of times that the number of packets in the egress queue exceed the DEPTH field setting. The test to increment this counter is performed when a packet has arrived in the egress buffer in its entirety. The test is not synchronous to any clocks. The Congestion Counter is decremented on Leak Rate timer ticks and on Error Rate Bias timer ticks, and is cleared by writing 1 to the OUTB_DEPTH bit in the RIO Port x Interrupt Status Register. — Congestion Threshold (CONG_THRESH): This is the threshold value which if exceeded by the Congestion Counter, sets the OUTB_DEPTH interrupt bit in the RIO Port x Interrupt Status Register. • “RapidIO Port x Reordering Counter Register” on page 360: This register contains two fields which are used to track when a packet in an ingress buffer is unable to make forward progress to an egress buffer because the egress buffer cannot accept any more packets of the priority of the received packet. Packet reordering takes place when a packet of higher priority is blocked by a packet of lower priority. — Counter (CTR): This is a counter which is incremented each time the switch fabric selects a packet in the ingress queue that is not at the head of the queue for transmission to an egress buffer. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 8. Performance > Congestion Detection and Management 199 — Threshold (THRESH): This field sets the threshold of how many times the ISF can re-order packets before the INB_RDR bit in the RIO Port x Interrupt Status register is set. The receiver versions of the registers contain the same fields as the registers related to the transmitters however the receiver registers pertain to the ingress buffer queue status. 8.5.1.1 • “RapidIO Port x Receiver Input Queue Depth Threshold Register” on page 355 • “RapidIO Port x Receiver Input Queue Congestion Period Register” on page 359 • “RapidIO Port x Receiver Input Queue Congestion Status Register” on page 357 Interrupts Each port's congestion management register set has two status interrupts, one for the ingress queue depth status and one for the egress queue status. Both interrupts are located in the “RapidIO Port x Interrupt Status Register” on page 326 for the port. The Congestion Counter and Congestion Period Counter fields must be polled in order to determine the current congestion trend if waiting for the interrupts to occur is insufficient warning that the buffers in the switch have become congested. Also, by tracking the Congestion Counter value and the Congestion Period Counter value, it is possible to determine the traffic trend for the buffer. 8.5.1.2 Example of Congestion Register Behavior In this example, the number of packets in the egress queue are monitored. The bursting ability of the queue is shown with the frequent increase and decrease of packets. When the queue appears flat it indicates either condition where the number of packets entering the queue is the same as the number of packets leaving the queue appear in this manner or that queue was stalled during that period. Figure 43 on page 200 is an example of what the congestion registers may contain at various times during port operation. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 200 8. Performance > Congestion Detection and Management Figure 43: Congestion Example 8 7 6 5 Packets in Egress Queue (DEPTH field set to 4) 4 3 2 1 Packet Receipt Rate Congestion Period Counter tick Congestion Period Count value Congestion Counter value Leak Rate Timer tick 0 0 0 0 1 1 2 3 1 1 0 4 5 6 3 2 1 7 8 9 10 Interrupt OUTB_DEPTH (Congestion Threshold set to 8) The Packet Receipt Rate in the chart indicates how quickly packets can enter and leave the queue. Essentially, this represents the packet line rate. A system with smaller packets increases this receipt rate while a system with predominantly large packages decreases this rate. The chart also shows the Congestion Period Counter tick and the Leak Rate Timer tick. These ticks occur based on their programmed values (see “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350). In this example, the DEPTH bit is programmed to four in the “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350. Also shown is the Congestion Period Count value (see “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350) and the Congestion Counter value (see “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352). In this example, the value of the Congestion Threshold has been set to eight (see “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352). When the Congestion Counter equals the value in the Congestion Threshold, the OUTB_DEPTH interrupt is asserted (see “RapidIO Port x Interrupt Status Register” on page 326). When the OUTB_DEPTH interrupt is asserted, a port-write packet can be generated which causes an in-band notification of the condition that can be routed to any host in the system. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 201 9. JTAG Interface This chapter describes the main features of the JTAG interface. It includes the following information: 9.1 • “Overview” on page 201 • “JTAG Device Identification Number” on page 202 • “JTAG Register Access Details” on page 202 Overview The JTAG interface in Tsi578 is fully compliant with IEEE 1149.6 Boundary Scan Testing of Advanced Digital Networks as well as IEEE 1149.1 Standard Test Access Port and Boundary Scan Architecture standards. There are five standard pins associated with the interface (TMS, TCK, TDI, TDO and TRST_b) which allow full control of the internal TAP (Test Access Port) controller. The JTAG Interface has the following features: • Contains a 5-pin Test Access Port (TAP) controller, with support for the following registers: — Instruction register (IR) — Boundary scan register — Bypass register — Device ID register — User test data register (DR) • IDT-specific pin (BCE) which allows full 1149.6 compliant boundary-scan tests. This pin should be held high on the board. • Supports debug access of Tsi578’s configuration registers • Supports the following instruction opcodes: — Sample/Preload — Extest — EXTEST_PULSE (1149.6) — EXTEST_TRAIN (1149.6) — Bypass — Hi-Z — IDCODE — Clamp — User data select Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 202 9.2 9. JTAG Interface > JTAG Device Identification Number JTAG Device Identification Number The JTAG device ID number for the Tsi578 is 0x20573167 9.3 JTAG Register Access Details The Tsi578 has the capability to read and write registers through the JTAG interface. Prior to using the IEEE Register Access Command feature, the part must be reset by driving TRST_b low. The JTAG Interface has the ability to access registers in order to debug issues that can affect RapidIO register accesses. Register access through the JTAG Interface can also be used in normal mode to do extensive read and write accesses on the performance registers without slowing down the normal traffic in the device or during initialization. A user defined command is used to enable the read and write capabilities of the interface. The command is in the IEEE 1149.1 Instruction Register (IR) in the Tsi578. • IEEE Register Access Command (IRAC) Ti 9.3.1 p There must be IEEE 1149.1 capability on the board to use the IEEE 1149.1 register access feature. Format The format used to access the registers is shown in Figure 44 and Figure 45. The address shown in the figure is the RapidIO offset. Figure 44: Register Access From JTAG - Serial Data In JT_TDI Address [20:0] R/W Data [31:0] Error Ready Reserved [63:0] Figure 45: Register Access From JTAG - Serial Data Out Address [20:0] R/W Data [31:0] Error Tsi578 User Manual June 6, 2016 Ready JT_TDO Integrated Device Technology www.idt.com 9. JTAG Interface > JTAG Register Access Details 9.3.2 203 Write Access to Registers from the JTAG Interface The following steps are required in order to write to a register through the JTAG interface: 1. Move to the Tap controller “Shift-IR” state and program the instruction register with IRAC instruction by writing into Instruction Register bits [2:0] with 3’b101. 2. Move to the “Shift-DR” state and shift the data[31:0], R/W = 1 and the address[20:0] serially in the TDI pin. To prevent corruption of un-used bits, the full DR bits have to be written. The following values must be written: • DR[119:99] = ADDR[20:0] • DR[98] = R/W • DR[97:66] = DATA[31:0] • DR[65:64] = 0b0 • DR[63:0] = 0b0. 3. Move to the “Run-test idle” state and loop in this state for a minimum of 20 TCK cycles. 4. Move to the “shift-DR” state again and shift-in 120 zero bits to DR[119:0], while at the same time verify the Ready and Error bits that are being shifted-out as the first two bits shifted-out. 5. Go back to step two to perform another write. 9.3.3 Read Access to Registers from the JTAG Interface The following steps are required in order to read a register through the JTAG interface: 1. Move to the Tap controller “Shift-IR” state and program the instruction register with IRAC instruction. — This step is optional if the instruction register is already programmed during the write cycle. 2. Move to the “Shift-DR” state and shift the R/W = 0 and the address[20:0] serially in the TDI pin. To prevent corruption of un-used bits, the full DR bits have to be written. The following values must be written: • DR[119:99] = ADDR[20:0] • DR[98] = R/W • DR[97:66] = DATA[31:0] • DR[65:64] = 0b0 • DR[63:0] = 0b0 3. Move to the “Run-test idle” state and loop in this state for a minimum of 20 TCK cycles. 4. Move to the “Shift-DR” state and shift in 120 bits of 0. The first two bits in data shifted out are the Error and Ready bits. The next 32 bits are data. The rest of the shifted out data can be discarded. 5. Verify that the Error bit is at logic low and the Ready bit is at logic high. 6. Go back to step two to perform another read. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 204 Tsi578 User Manual June 6, 2016 9. JTAG Interface > JTAG Register Access Details Integrated Device Technology www.idt.com 205 10. Clocks, Resets and Power-up Options This chapter describes the clock and reset of the Tsi578. It includes the following information: 10.1 • “Clocks” on page 205 • “Resets” on page 209 • “Power-up Options” on page 212 Clocks The Tsi578 has three input clocks (S_CLK_p/n, P_CLK and I2C_SCLK) that are used to produce the Tsi578’s internal clock domains. In addition to these reference clocks, each RapidIO ingress port contains independent receive clock domains, one for each lane. The receive clock is extracted from the 8B/10B encoding on each lane. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 206 10.1.1 10. Clocks, Resets and Power-up Options > Clocks Clocking Architecture The Tsi578 device relies on the reference clock (S_CLK_p/n) to generate most clocks inside device. S_CLK_p/n is fed into each SerDes. On the receive side, each SerDes recovers clocks from the data stream. In 4x mode, four different synchronous clocks are extracted (RXCLKA..D). In 1x mode, either one (RXCLKA) or two (RXCLKA..B) clocks are recovered. On the transmit side, the clock (TX_CLK) is derived from the SerDes. An extra clock (SYS_CLK) is also sourced from the SerDes to the MAC. The S_CLK_p/n signal is also an input to the Switch Fabric and internal registers. Figure 46: Tsi578 Clocking Architecture 2 I C_SCLK pin P_CLK pin 2 I C Internal registers and bus Internal Switching Fabric S_CLK_P/N pin Serial Port 0 clk gen Serial Port 0 logic Serial Port 1 logic Serial Port 14 clk gen Serial Port 14 logic Serial Port 15 logic Tsi578 User Manual June 6, 2016 rxclka rxclkb rxclkc rxclkd Serial Port 0 SerDes txclk rxclka rxclkb rxclkc rxclkd Serial Port 14 SerDes txclk Integrated Device Technology www.idt.com 10. Clocks, Resets and Power-up Options > Clocks 10.1.2 207 SerDes Clocks All SerDes in Tsi578 use the same external reference clock (S_CLK_p/n). Depending on the pin or register setup, the SerDes generates the appropriate clocks to serialize/deserialize the data as well as the clocks for the internal logic. On the Receive side, each lane of the SerDes recovers their own clocks. These clocks can be powered down by register controls (“SRIO MAC x SerDes Configuration Global” on page 372). 10.1.3 Reference clocks The two reference clocks are described in Table 26. Ti p For information on configuring the clock rate of RapidIO ports, refer to “Clocking” on page 70. Table 26: Tsi578 Input Reference Clocks Clock Input Pin S_CLK_p/n Type Differential Frequencya 156.25MHzb Clock Domains Serial Transmit Domain (Maximum 156.25 MHz) Internal Switching Fabric (ISF) Domain P_CLKc Single-ended 100 MHz Internal Register Domain I2C Domain a. For more electrical characteristics of the clocks, please refer to the Tsi578 Hardware Manual. b. For more information about operation at alternative S_CLK frequencies, refer to “Line Rate Support” on page 489. c. For more information on programming additional frequencies for the P_CLK, refer to “P_CLK Programming” on page 493. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 208 10.1.4 10. Clocks, Resets and Power-up Options > Clocks Clock Domains The Tsi578 contains a number of clock domains that are generated from the two input reference clocks. These domains are detailed in Table 27. For more information about special line rate support see “Clocking” on page 489. Table 27: Tsi578 Clock Domains Clock Domain Clock Source Internal Register Domain (P_CLK domain) P_CLKb Frequencya 100 MHz Description This clock domain includes all internal registers within each of the internal blocks, as well as the bus that performs the register accesses. The domain uses the input P_CLK directly. Internal Switching Fabric (ISF) Domain S_CLK_p/n 156.25 MHz This clock domain includes the switching matrix of the ISF, the Multicast blocks, and the portion of each block that communicates with the ISF. The domain uses the S_CLK_P/N. Serial Transmit Domain S_CLK_p/n 156.25 MHz This clock domain is used to clock all the Serial RapidIO transmit ports. The S_CLK_P/N input is used directly to clock the transmit logic. This clock is used to generate the high-speed clock that is used to output the serial data on output pins SP{0..15}_T{A..D}_P/N. The maximum data rate for this domain is 3.125 Gb/s per lane. I2C Domain P_CLK divided by 1024 97.7 kHz This clock domain is responsible for driving the I2C output clock pin I2C_SCLK. This clock domain is generated by dividing the P_CLK input by a programmable value. The majority of the I2C logic runs in the Internal Register Domain (P_CLK domain). a. For more electrical characteristics of the clocks, please refer to the Tsi578 Hardware Manual. b. For more information on programming additional frequencies for the P_CLK, refer to “P_CLK Programming” on page 493. 10.1.5 Clock Gating When a RapidIO port is powered down using the PWDN_X1/X4 bits in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377, the clock to that RapidIO port is gated to prevent the port from consuming power. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 10. Clocks, Resets and Power-up Options > Resets 10.2 209 Resets Internal logic is responsible for automatically sequencing the removal of reset in all internal blocks to meet their requirements; no additional software programming is required. 10.2.1 Device Reset The Tsi578 can be reset the following ways: 1. Assertion of the HARD_RST_b input pin 2. Receiving four RapidIO Link Request/Reset-Device Control Symbols in a row (without any other intervening packets or control symbols, except status control symbols) from any of the RapidIO ports. • The SELF_RST bit in the “RapidIO Port x Mode CSR” on page 310 must be set to 1 (self-reset) In both cases, when the Tsi578 is reset it goes through its full reset and power-up sequence. All state machines and the configuration registers are reset to the original power on states. Lookup tables are left in an undefined state after reset. It is recommended that lookup tables be completely initialized after a reset to ensure deterministic operation. 10.2.1.1 I2C Boot When all blocks have been taken out of reset, the I2C Interface is responsible for performing automatic reads from an externally attached EEPROM device in order to load the initial configuration of the device. For more details refer to “I2C Interface” on page 141. External I2C devices are not reset by the Tsi578, so the I2C bus could be left in an undefined state if the Tsi578 is reset during initial configuration. It is recommended that resets of the Tsi578 occur at a rate that ensures that register loading from I2C device has completed before another reset is issued. 10.2.1.2 HARD_RST_b Reset The HARD_RST_b signal is an external system reset input signal and causes a general reset of the Tsi578; all blocks are reset within the device. HARD_RST_b is an active low signal with asynchronous assertion and de-assertion. The internal reset synchronizers are responsible for assuring that reset is de-asserted internally at the correct time for each of the clock domains. When HARD_RST_b is asserted, SW_RST_b is de-asserted. SW_RST_b remains de-asserted after HARD_RST_b is released. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 210 10. Clocks, Resets and Power-up Options > Resets Timing of HARD_RST_b The Tsi578 requires the following timing for the HARD_RST_b signal: • HARD_RST_b must be asserted for a minimum of 1 millisecond (ms). • Tsi578 comes out of reset within 1 ms after HARD_RST_b is de-asserted after assertion. — A boot load from the I2C EEPROM will delay when the device becomes ready for RapidIO traffic on the ports. See “Boot Load Sequence” on page 166 for more information on boot loading and the time implications. 10.2.1.3 RapidIO Reset Requests The Tsi578 responds to Reset Request Control Symbols as defined by the RapidIO Interconnect Specification (Revision 1.3). Self Reset When a reset request occurs, the Tsi578’s response is controlled by the “RapidIO Port x Mode CSR” on page 310. By default, the Tsi578 resets itself. A self-reset occurs when four link-request/reset-device control symbols are received in a row (without any other intervening packets or control symbols, except status control symbols) and the SELF_RST field in the “RapidIO Port x Mode CSR” on page 310 is set. When a self-reset is performed, it is not necessary to drive the HARD_RST_b input signal. The SW_RST_b signal remains asserted for the duration of the self reset, which is at least four P_CLK clock cycles. If the SELF_RST field is not set an interrupt signal is asserted (if RCS_INT_EN is also set in the “RapidIO Port x Mode CSR” on page 310). System Control of Resets Self-reset of the Tsi578 may not be sufficient in systems which require other components to be reset at the same time as the Tsi578. The Tsi578 supports system control of resets in two ways. First, the Tsi578 can assert the INT_b interrupt so that a local processor can trigger a reset through the Tsi578’s HARD_RST_b pin. For this design to work, reset interrupts must be enabled in the “RapidIO Port x Mode CSR” on page 310 and the “Global Interrupt Enable Register” on page 390. Secondly, if interrupts are not suitable for reset functionality in a system, it is possible to use the SW_RST_b output pin. When the Tsi578 has received a reset request, the SW_RST_b output pin is asserted until the reset request status is cleared in the port that received it. The SW_RST_b output pin can be used as an input to a reset controller to trigger the start of a system reset. If self-reset is not enabled, SW_RST_b remains asserted until the device is reset through the input reset pin HARD_RST_b or until the interrupt bit is cleared for the port that received the reset message. If self-reset is enabled, SW_RST_b is asserted for the duration of the reset, which is at least four P_CLK clock cycles. When the Tsi578 is in reset, the INT_b pin is not asserted. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 10. Clocks, Resets and Power-up Options > Resets 211 SW_RST_b is the only method to determine that a reset request has been received and should be handled as an interrupt. Port-writes cannot be sent for notification of reset request reception. 10.2.2 Per-Port Reset In order to reset an individual RapidIO port it must be powered down and back up again using the following procedure: 1. Power down the port using the procedure in “Port Power Down”. 2. Wait 50 microseconds to guarantee that all packets are flushed. 3. Power the port back up. 4. Reconfigure the registers that were impacted by the power down (see “Default Configurations on Power Down”). After a port has been reset (powered down and back up), the following is applicable: • The port’s configuration registers revert to their default values. • The port’s SerDes related registers and LUTs must be re-configured. • The port’s register values are not loaded from I2C on a port reset. The SOFT_RST_X1 and SOFT_RST_X4 bits in the “SRIO MAC x Digital Loopback and Clock Selection Register” only reset the MAC – they do not reset the SerDes. 10.2.3 Generating a RapidIO Reset Request to a Peer Device The following steps can be used by software to reset a peer device: 1. Determine which RapidIO port is connected to the peer to be reset. 2. Alter the LUT contents to ensure that no packets are being routed to the link partner that is to be reset. 3. Lockout the port using the PORT_LOCKOUT field in the “RapidIO Serial Port x Control CSR” on page 281. This ensures that any traffic received from the peer device is dropped, and any traffic still in flight to the peer device is dropped. 4. Use the “RapidIO Serial Port x Link Maintenance Request CSR” on page 273 to transmit four reset control symbols in a row. 5. Write 0 to the OUTBOUND field of the“RapidIO Serial Port x Local ackID Status CSR” on page 276. 10.2.4 JTAG Reset The JTAG TAP controller’s reset is independent of the Tsi578 functional resets. For boundary scan operation, the TAP controller can be reset with either the external pin TRST_b or by holding the pin TMS asserted for more than five TCK cycles. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 212 10. Clocks, Resets and Power-up Options > Power-up Options To ensure predictable operation of the Tsi578, for power-up reset, HARD_RST_b and TRST_b must be asserted prior to operation. After power-up, the TAP controller can be reset at any time and this does not affect the Tsi578 operation. Normal functional reset is still required to reset the device’s internal registers. Reset of the Tsi578 does not reset the TAP. The TAP controller must be reset on power-up, whether or not it is going to be used, to ensure predictable operation of the Tsi578. 10.3 Power-up Options The Tsi578 has the following types of power-up option pins: default port speed (SP_IO_SPEED[1:0]), port power-up and power-down (SPn_PWRDN), mode selection (SPn_MODESEL), lane swap (SP_RX_SWAP and SP_TX_SWAP), and I2C pins (I2c_DISABLE, I2C_MA, I2C_SA[1:0], I2C_SEL). The power-up option pins must be stable for 10 P_CLK cycles after HARD_RST_b is de-asserted. 10.3.1 Power-up Option Signals Power up options are latched at reset for initializing the Tsi578. The power-up option pins are listed in Table 28. All power-up option pins have to remain stable for 10 P_CLK cycles after HW_RST_b is de-asserted in order to be sampled correctly. These signals are ignored after reset and software is able to override the settings. The power-up signals do have internal PU or PD, however external resistors are recommended on these signals. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 10. Clocks, Resets and Power-up Options > Power-up Options 213 Table 28: Power-Up Options Signals Pin Name SP{n}_MODESEL Description Selects the serial port operating mode for ports n and n+1 0 = Port n operating in 4x mode (Port n+1 not available) 1 = Ports n and n+1 operating in 1x mode Note: The MAC_MODE in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377 overrides and determine the operating mode for the corresponding ports. SP_IO_SPEED[1:0] Serial Port Transmit and Receive operating frequency select. SP_IO_SPEED[1:0], these pin select the power-up serial port frequency for all ports. 00 = 1.25Gbit/s 01 = 2.5Gbit/s 10 = 3.125Gbit/s (default) 11 = illegal Note; The SP_IO_SPEED[1:0] setting is equal to the IO_SPEED field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Output capability of this pin is only used in test mode. SP{n}_PWRDN Port n Transmit and Receive Power Down Control This signal controls the state of Port n and Port n+1 The PWRDN controls the state of all four lanes (A/B/C/D) of SerDes Macro. 0 = Port n Powered Up. Port n+1 controlled by SP{n+1}_PWRDN. 1 = Port n Powered Down. Port n+1 Powered Down. Override SP{n}_PWRDN using PWDN_X4 field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. SP{n+1}_PWRDN Port n+1 Transmit and Receive Power Down Control This signal controls the state of Port n+1. Note that Port n+1 is never used when 4x mode is selected for a Serial Rapid I/O MAC, and it must be powered down. 0 = Port n+1 Powered Up 1 = Port n+1 Powered Down Override SP{n+1}_PWRDN using PWDN_X1 field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. SP_RX_SWAP Configures the order of 4x receive/transmit lanes on serial ports [0,2,4,6,...,14] SP_TX_SWAP 0 = A, B, C, D 1 = D, C, B, A Override SP_RX(TX)_SWAP using RX(TX)_SWAP field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 214 10. Clocks, Resets and Power-up Options > Power-up Options Table 28: Power-Up Options Signals Pin Name Description I2C_MA I2C Multibyte Address When driven high, I2C module expects multi-byte peripheral addressing; otherwise, when driven low, single-byte peripheral address is assumed. I2C_SA[1,0] I2C Slave Address pins. The values on these two pins represent the values for the lower 2 bits of the 7-bit address of Tsi578 when acting as an I2C slave. I2C Pin Select. Together with the I2C_SA[1,0] pins, Tsi578 determines the lower 2 bits of the 7-bit address of the EEPROM address it boots from. I2C_SEL When asserted, the I2C_SA[1,0] values are also used as the lower 2 bits of the EEPROM address. When de-asserted, the I2C_SA[1,0] pins are ignored and the lower 2 bits of the EEPROM address are default to 00. I2C_DISABLE Disable I2C register loading after reset. When asserted, the Tsi578 does not attempt to load register values from I2C. 0 = Enable I2C register loading 1 = Disable I2C register loading Must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. For alternative P_CLK values, refer to “Clocking” on page 489. This signal is ignored after reset. 10.3.2 Default Port Speed When the SP_IO_SPEED[1:0] pins are left unconnected in the board, the device’s internal pull-ups configure the Tsi578 to 3.125 Gbit/s (default). The speed can be overridden by the IO_SPEED field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. It is strongly recommended to drive the SP_IO_SPEED[1:0] with known values instead of relying on the internal default values in order to set the default speeds of the device. 10.3.3 Port Power-up and Power-down The power-up and power-down is overridden by the PWDN_X1 and PWDN_X4 fields in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. 10.3.4 Port Width Override Initial port width of the port is set by SPx_MODESEL pins at power-up. After power-up the SPx_MODESEL signals are ignored and the port width setting can be overridden by the OVER_PWIDTH field in the “RapidIO Serial Port x Control CSR” on page 281. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 215 11. Signals This chapter describes the signals and pinout of the Tsi578. It includes the following information: 11.1 • “Overview” on page 215 • “Endian Ordering” on page 216 • “Port Numbering” on page 216 • “Signal Groupings” on page 218 • “Pinlist and Ballmap” on page 227 Overview The following conventions are used in the signal description table: • Signals with the suffix “_p” are the positive half of a differential pair. • Signals with the suffix “_n” are the negative half of a differential pair. • Signals with the suffix “_b” are active low. Signals are classified according to the types defined in Table 29. Table 29: Signal Types Pin Type Definition I Input O Output I/O Input/Output OD Open Drain SRIO Differential driver/receiver defined by RapidIO Interconnect Specification (Revision 1.3) CML Current Mode Logic Defined by RapidIO Interconnect Specification (Revision 1.3) PU Pulled up internal to the Tsi578 PD Pulled down internal to the Tsi578 LVTTL CMOS I/O with LVTTL thresholds Hyst Hysteresis Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 216 11. Signals > Endian Ordering Table 29: Signal Types (Continued) Pin Type Definition Core Power Core supply Core Ground Ground for core logic I/O Power I/O supply N/C No connect These signals must be left unconnected. 11.2 Endian Ordering This document follows the bit-numbering convention adopted by RapidIO Interconnect Specification (Revision 1.3), where [0:7] is used to represent an 8 bit bus with bit 0 as the most-significant bit. 11.3 Port Numbering The following table shows the mapping between port numbers and the physical ports. These port numbers are used within the destination ID lookup tables for ingress RapidIO ports and in numerous register configuration fields Table 30: Tsi578 Port Numbering Tsi578 User Manual June 6, 2016 Port Number RapidIO Port Mode 0 Serial Port 0 (SP0) 1x or 4x 1 Serial Port 1 (SP1) 1x 2 Serial Port 2 (SP2) 1x or 4x 3 Serial Port 3 (SP3) 1x 4 Serial Port 4 (SP4) 1x or 4x 5 Serial Port 5 (SP5) 1x 6 Serial Port 6 (SP6) 1x or 4x 7 Serial Port 7 (SP7) 1x 8 Serial Port 8 (SP8) 1x or 4x 9 Serial Port 9 (SP9) 1x 10 Serial Port 10 (SP10) 1x or 4x 11 Serial Port 11 (SP11) 1x 12 Serial Port 12 (SP12) 1x or 4x Integrated Device Technology www.idt.com 11. Signals > Port Numbering 217 Table 30: Tsi578 Port Numbering Port Number RapidIO Port Mode 13 Serial Port 13 (SP13) 1x 14 Serial Port 14 (SP14) 1x or 4x 15 Serial Port 15 (SP15) 1x Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 218 11.4 11. Signals > Signal Groupings Signal Groupings Figure 47: Signal Groupings BCE TCK TDI TDO TMS TRST_b I2C_SCLK I2C_SD I2C_DISABLE HARD_RST_b SW_RST_b INT_b S_CLK_[p,n] P_CLK REF_AVDD MCES 1 1 8 1 8 JTAG TAP 1 1 1 Ports 0,1 1 1 SP0_R[A,B,C,D]_[p,n] 1 SP0_REXT 1 SP0_AVDD 1 SP0_MODESEL 1 I2C SP1_PWRDN 1 1 Reset 1 1 Interrupt SP2 SP4 SP6 Ports 2 - 13 SP8 SP10 SP12 2 8 Ref Clks 1 8 1 1 Multicast Ports 14,15 VSS VDD Logic Pwr/Gnd VSS_IO VDD_IO IO Pwr/Gnd SP0, 2, 4 …. 14 VDD SP14_R[A,B,C,D]_[p,n] SP14_REXT 1 SP14_AVDD 1 SP14_MODESEL 1 Port Config SP14_T[A,B,C,D]_[p,n] 1 1 Tsi578 User Manual June 6, 2016 SP0_T[A,B,C,D]_[p,n] 2 SP14_PWRDN SP15_PWRDN SP_IO_SPEED[1:0] SP_VDD Integrated Device Technology www.idt.com 11. Signals > Signal Groupings 219 Table 31 describes the Tsi578 signals. Table 31: Tsi578 Signal Descriptions Pin Name Type Description Recommended Terminationa Signal Port Numbering PORT n - 1x/4x Mode Serial RapidIO PORT (n+1) - 1x Mode Serial RapidIO Port {n} where {n} = 0, 2, 4, 6, 8, 10, 12, 14 Serial Port Transmit SP{n}_TA_p O, SRIO Port n Lane A Differential Non-inverting Transmit Data output (4x mode) No termination required. Port n Lane A Differential Non-inverting Transmit Data output (1x mode) SP{n}_TA_n O, SRIO Port n Lane A Differential Inverting Transmit Data output (4x mode) No termination required. Port n Lane A Differential Inverting Transmit Data output (1x mode) SP{n}_TB_p O, SRIO Port n Lane B Differential Non-inverting Transmit Data output (4x mode) Port n+1 Lane B Differential Non-inverting Transmit Data output (1x mode) No termination required. SP{n}_TB_n O, SRIO Port n Lane B Differential Inverting Transmit Data output (4x mode) Port n+1 Lane B Differential Inverting Transmit Data output (1x mode) No termination required. SP{n}_TC_p O, SRIO Port n Lane C Differential Non-inverting Transmit Data output (4x mode) No termination required. SP{n}_TC_n O, SRIO Port n Lane C Differential Inverting Transmit Data output (4x mode) No termination required. SP{n}_TD_p O, SRIO Port n Lane D Differential Non-inverting Transmit Data output (4x mode) No termination required. SP{n}_TD_n O, SRIO Port n Lane D Differential Inverting Transmit Data output (4x mode) No termination required. I, SRIO Port n Lane A Differential Non-inverting Receive Data input (4x mode) DC blocking capacitor of 0.1uF in series Serial Port Receive SP{n}_RA_p Port n Lane A Differential Non-inverting Receive Data input (1x mode) Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 220 11. Signals > Signal Groupings Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Type Description Recommended Terminationa SP{n}_RA_n I, SRIO Port n Lane A Differential Inverting Receive Data input (4x node) DC blocking capacitor of 0.1uF in series Port n Lane A Differential Inverting Receive Data input (1x mode) SP{n}_RB_p I, SRIO Port n Lane B Differential Non-inverting Receive Data input (4x mode) Port n+1 Lane B Differential Non-inverting Receive Data input (1x mode) DC blocking capacitor of 0.1uF in series SP{n}_RB_n I, SRIO Port n Lane B Differential Inverting Receive Data input (4x mode) Port n+1 Lane B Differential Inverting Receive Data input (1x mode) DC blocking capacitor of 0.1uF in series SP{n}_RC_p I, SRIO Port n Lane C Differential Non-inverting Receive Data input (4x mode) DC blocking capacitor of 0.1uF in series SP{n}_RC_n I, SRIO Port n Lane C Differential Inverting Receive Data input (4x mode) DC blocking capacitor of 0.1uF in series SP{n}_RD_p I, SRIO Port n Lane D Differential Non-inverting Receive Data input (4x mode) DC blocking capacitor of 0.1uF in series SP{n}_RD_n I, SRIO Port n Lane D Differential Inverting Receive Data input (4x mode) DC blocking capacitor of 0.1uF in series SP{n}_REXT Analog Used to connect a resistor to VSS to provide a reference current for the driver and equalization circuits. Must be connected to VSS with a 191-ohm (1%) resistor. SP{n}_MODESEL I/O, LVTTL, PD Selects the serial port operating mode for ports n and n+1 Pin must be tied off according to the required configuration. Either a 10K pull up to VDD_IO or a 10K pull-down to VSS_IO. Serial Port Configuration 0 = Port n operating in 4x mode (Port n+1 not available) 1 = Ports n and n+1 operating in 1x mode Output capability of this pin is only used in test mode. Internal pull-down can be used for logic 0. Must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. For alternative P_CLK values, refer to “Clocking” on page 489. This signal is ignored after reset. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 11. Signals > Signal Groupings 221 Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Type Description Recommended Terminationa SP{n}_PWRDN I/O, LVTTL, PU Port n Transmit and Receive Power Down Control This signal controls the state of Port n and Port n+1. The PWRDN controls the state of all four lanes (A/B/C/D) of SerDes Macro. Pin must be tied off according to the required configuration. Either a 10K pull up to VDD_IO or a 10K pull-down to VSS_IO. 0 = Port n Powered Up. Port n+1 controlled by SP{n+1}_PWRDN. 1 = Port n Powered Down. Port n+1 Powered Down. Internal pull-up can be used for logic 1. Override SP{n}_PWRDN using PWDN_X4 field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Output capability of this pin is only used in test mode. This signal must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. This signal is ignored after reset. SP{n+1}_PWRDN I/O, LVTTL, PU Port n+1 Transmit and Receive Power Down Control This signal controls the state of Port n+1. Note that Port n+1 is never used when 4x mode is selected for a Serial Rapid I/O MAC, and it must be powered down. Pin must be tied off according to the required configuration. Either a 10K pull up to VDD_IO or a 10K pull-down to VSS_IO. Internal pull-up can be used for logic 1. 0 = Port n+1 Powered Up 1 = Port n+1 Powered Down Override SP{n+1}_PWRDN using PWDN_X1 field in “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Output capability of this pin is only used in test mode. This signal must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. This signal is ignored after reset. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 222 11. Signals > Signal Groupings Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Type Description Recommended Terminationa I/O, LVTTL, PU Serial Port Transmit and Receive operating frequency select, bit 1. When combined with SP_IO_SPEED[0], this pin selects the default serial port frequency for all ports. Pin must be tied off according to the required configuration. Either a 10K pull-up to VDD_IO or a 10K pull-down to VSS_IO. 00 = 1.25 Gbps Internal pull-down may be used for logic 0. Serial Port Speed Select SP_IO_SPEED[1] 01 = 2.5 Gbps 10 =3.125 Gbps (default) 11 = Illegal Selects the speed at which the ports operates when reset is removed. This could be at either HARD_RST_b being de-asserted or by the completion of a self-reset. These signals must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. These signals are ignored after reset and software is able to over-ride the port frequency setting in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. The SP_IO_SPEED[1:0] setting is equal to the IO_SPEED field in the SRIO MAC x Clock Selection Register. Output capability of this pin is only used in test mode. SP_IO_SPEED[0] I/O, LVTTL, PD See SP_IO_SPEED[1] Pin must be tied off according to the required configuration. Either a 10K pull-up to VDD_IO or a 10K pull-down to VSS_IO. Internal pull-up may be used for logic 1. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 11. Signals > Signal Groupings 223 Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Type Description Recommended Terminationa Configures the order of 4x receive lanes on serial ports[[0,2,4,6, ...14]. No termination required. Serial Port Lane Ordering Select SP_RX_SWAP I, LVTTL, PD 0 = A, B, C, D 1 = D, C, B, A Must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. This signal is ignored after reset. Internal pull-down can be used for logic 0. Pull up7 to VDD_IO through 10K if external pull-up is desired. Pull down to VSS_IO through a 10K resistor if an external pull-down is desired. Note: Ports that require the use of lane swapping for ease of routing will only function as 4x mode ports. The re-configuration of a swapped port to dual 1x mode operation results in the inability to connect to a 1x mode link partner. SP_TX_SWAP I, LVTTL, PD Configures the order of 4x transmit lanes on serial ports [[0,2,4,6, ...14]. 0 = A, B, C, D 1 = D, C, B, A Must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. This signal is ignored after reset. No termination required. Internal pull-down can be used for logic 0. Pull up to VDD_IO through 10K if external pull-up is desired. Pull down to VSS_IO through a 10K resistor if an external pull-down is desired. Note: Ports that require the use of lane swapping for ease of routing only function as 4x mode ports. The re-configuration of a swapped port to dual 1x mode operation results in the inability to connect to a 1x mode link partner. Clock and Reset P_CLK I, LVTTL This clock is used for the register bus clock. No termination required. The nominal frequency of this input clock is 100 MHz. For more information on programming the P_CLK operating frequency, refer to “P_CLK Programming” on page 493. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 224 11. Signals > Signal Groupings Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Type Description Recommended Terminationa S_CLK_p I, CML Differential reference clock at 156.25MHz. The clock is used as a reference clock for the SerDes and as a source for the internal logic clocks. AC coupling capacitor of 0.1uF required. These signals are internally terminated. The S_CLK inputs should be ac-coupled. S_CLK_n I, CML If this clock input is not used, pull this signal up to SP_VDD with a 10K resistor. AC coupling capacitor of 0.1uF required. If this clock input is not used, pull this signal down to VSS with a 10K resistor. HARD_RST_b I, LVTTL, Hyst, PU Schmidt-triggered hard reset. Asynchronous active low reset for the entire device. Connect to a power-up reset source. Refer to the Tsi578 Hardware Manual for more information. O, OD, LVTTL Interrupt signal (open drain output) External pull-up required. O, OD, LVTTL Software reset (open drain output): This signal is asserted when a RapidIO port receives a valid reset request on a RapidIO link. If self-reset is not selected, this pin remains asserted until the reset request is cleared from the status registers. If self-reset is selected, this pin remains asserted until the self reset is complete. If the Tsi578 is reset from the HARD_RST_b pin, this pin is de-asserted and remains de-asserted after HARD_RST_b is released. For more information, see “Resets”. Interrupts INT_b SW_RST_b Pull up to VDD_IO through a 10K resistor. External pull-up required. Pull up to VDD_IO through a 10K resistor. Note: SW_RST_b is the only external indicator that a reset request has been received, and should be handled as an interrupt. Port-writes cannot be sent for notification of reset request reception. Multicast MCES I/O, LVTTL, PD Multicast Event Control Symbol As an input, an edge (rising or falling) triggers a Multicast Event Control Symbol to be sent to all enabled ports. No termination required. This pin must not be driven by an external source until all power supply rails are stable. As an output, this pin toggles its value every time an Multicast Event Control Symbol is received by any port which is enabled for Multicast Event Control Symbols. This signal must remain stable for 10 P_CLK cycles before and after a transition. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 11. Signals > Signal Groupings 225 Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Recommended Terminationa Type Description I/O, OD, LVTTL, PU I2C input/output clock, up to 100 kHz. I2C I2C_SCLK 2 If an EEPROM is present on the I C bus, this clock signal must be connected to the clock input of the serial EEPROM on the I2C bus. If an EEPROM is not present, the recommended termination should be used. No termination required. Internal pull-up can be used for logic 1. Pull up to VDD_IO through a minimum 470 ohms resistor if higher edge rate required. I2C_SD I/O, OD, LVTTL, PU I2C input and output data bus (bidirectional open drain) No termination required. Internal pull-up can be used for logic 1. Pull up to VDD_IO through a minimum 470 ohms resistor if higher edge rate required. I2C_DISABLE I, LVTTL, PD Disable I2C register loading after reset. When asserted, the Tsi578 does not attempt to load register values from I2C. No termination required. Pull up to VDD_IO through a 10K resistor if I2C loading is not required. 0 = Enable I2C register loading 1 = Disable I2C register loading Must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. Note: This signal does not control the slave accessibility of the interface. This signal is ignored after reset. I2C_MA I, LVTTL, PU I2C Multibyte Address. When driven high, I2C module expects multi-byte peripheral addressing; otherwise, when driven low, single-byte peripheral address is assumed. Must remain stable for 10 P_CLK cycles after HARD_RST_b is de-asserted in order to be sampled correctly. No termination required. Internal pull-up can be used for logic 1. Pull up to VDD_IO through 10K resistor if external pull-up is desired. Pull down to VSS_IO to change the logic state. This signal is ignored after reset. I2C_SA[1,0] I, LVTTL, PU I2C Slave Address pins. The values on these two pins represent the values for the lower 2 bits of the 7-bit address of Tsi578 when acting as an I2C slave (see “I2C Slave Configuration Register” on page 437). The values at these pins can be overridden by software after reset. Integrated Device Technology www.idt.com No termination required. Internal pull-up can be used for logic 1. Pull up to VDD_IO through 10K resistor if external pull-up is desired. Pull down to VSS_IO to change the logic state. Tsi578 User Manual June 6, 2016 226 11. Signals > Signal Groupings Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Type Description Recommended Terminationa I2C_SEL I, LVTTL, PU I2C Pin Select. No termination required. Internal pull-up can be used for logic 1. Together with the I2C_SA[1,0] pins, the Tsi578 determines the lower 2 bits of the 7-bit address of the EEPROM address it boots from. When asserted, the I2C_SA[1,0] values are also be used as the lower two bits of the EEPROM address. Pull up to VDD_IO through a 10K resistor if external pull-up is desired. Pull down to VSS_IO to change the logic state. When de-asserted, the I2C_SA[1,0] pins are ignored and the lower two bits of the EEPROM address are default to 00. The values of the lower two bits of the EEPROM address can be over-ridden by software after reset. JTAG / TAP Controller TCK I, LVTTL, PD IEEE 1149.1/1149.6 Test Access Port Clock input Pull up to VDD_IO through a 10K resistor if not used. TDI I, LVTTL, PU IEEE 1149.1/1149.6 Test Access Port Serial Data Input Pull up to VDD_IO through 10K if not used or if higher edge rate is required. TDO O, LVTTL IEEE 1149.1/1149.6 Test Access Port Serial Data Output No connect if JTAG is not used. Pull up to VDD_IO through a 10K resistor if used. TMS I, LVTTL, PU IEEE 1149.1/1149.6 Test Access Port Test Mode Select Pull up to VDD_IO through a 10K resistor if not used. TRST_b I, LVTTL, PU IEEE 1149.1/1149.6 Test Access Port TAP Reset Input Tie to VSS_IO through a 10K resistor if not used. This input must be asserted during the assertion of HARD-RST_b. Afterwards, it can be left in either state. Combine the HARD_RST_b and TRST_b signals with an AND gate and use the output to drive the TRST_b pin. BCE I, LVTTL, PU Boundary Scan compatibility enabled pin. This input is used to aid 1149.6 testing. This signal also enables system level diagnostic capability using features built into the SerDes. For more information on this functionality, refer to the Serial RapidIO Signal Analyzer documentation available on the IDT website. This signal must be tied to VDD_IO during normal operation of the device, and during JTAG accesses of the device registers Tsi578 User Manual June 6, 2016 This signal should have the capability to be pulled-up or pulled-low. • The default setting is to be pulled-up. • Pulling the signal low enables the signal analyzer functionality on the SerDes • A 10K resistor to VDD_IO should be used. Integrated Device Technology www.idt.com 11. Signals > Pinlist and Ballmap 227 Table 31: Tsi578 Signal Descriptions (Continued) Pin Name Type Description Recommended Terminationa Power Supplies SP_AVDD - Port n and n+1: 3.3V supply for bias generator circuitry. This is required to be a low-noise supply. Refer to decoupling recommendations in the Tsi578 Hardware Manual for more information REF_AVDD - Analog 1.2V for Reference Clock (S_CLK_P/N). Clock distribution network power supply. Refer to decoupling recommendations in the Tsi578 Hardware Manual for more information VDD_IO - Common 3.3V supply for LVTTL I/O Refer to decoupling recommendations in the Tsi578 Hardware Manual for more information VSS - Common ground returns for digital logic Refer to decoupling recommendations in the Tsi578 Hardware Manual for more information VDD - Common 1.2V supply for digital logic Refer to decoupling recommendations in the Tsi578 Hardware Manual for more information SP_VDD - 1.2V supply for CDR, Tx/Rx, and digital logic for all RapidIO ports For more information on decoupling recommendations, refer to the Tsi578 Hardware Manual Common Supply a. Signals for unused serial ports do not require termination and can be left as N/Cs. 11.5 Pinlist and Ballmap For more information, see the following documents: • Tsi578 Pinlist • Tsi578 Ballmap Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 228 Tsi578 User Manual June 6, 2016 11. Signals > Pinlist and Ballmap Integrated Device Technology www.idt.com 229 12. Serial RapidIO Registers This chapter describes the Tsi578 registers. The following topics are discussed: 12.1 • “Overview” on page 229 • “Port Numbering” on page 231 • “Conventions” on page 231 • “Register Map” on page 233 • “RapidIO Logical Layer and Transport Layer Registers” on page 245 • “RapidIO Physical Layer Registers” on page 268 • “RapidIO Error Management Extension Registers” on page 285 • “IDT-Specific RapidIO Registers” on page 307 • “Serial Port Electrical Layer Registers” on page 361 • “Internal Switching Fabric (ISF) Registers” on page 380 • “Utility Unit Registers” on page 388 • “Multicast Registers” on page 395 • “SerDes Per Lane Register” on page 402 Overview The application defined Tsi578 registers receive initial values during power on initialization through the I2C Interface and external serial EEPROM; all undefined registers read 0 and a write is ignored. The Tsi578 registers use direct addressing of 32-bit registers. The RapidIO Interconnect Specification (Revision 1.3), uses 64-bit addressing of registers. Table 32 shows the rules used to associate the register offsets in both specifications. Table 32: Address Rules Tsi578 Address — Register Offset RapidIO Specification Address — Register Offset 0xXXXX0 0xXXXX0, Word 0 0xXXXX4 0xXXXX0, Word 1 0xXXXX8 0xXXXX8, Word 0 0xXXXXC 0xXXXX8, Word 1 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 230 12.1.1 12. Serial RapidIO Registers > Overview Reserved Register Addresses and Fields Reserved register addresses should not be read or written. Reads to reserved register addresses return unspecified data. Writes to reserved register addresses can lead to unpredictable results. For the RapidIO Standard Registers (Section 12.5 to 12.7), the Reserved fields should always be written as 0. For the IDT implementation-specific registers (Section 12.8 to 13.2), a read modify write operation must be performed for register reserved fields that have an undefined reset value. Other reserved fields should always be written as 0 unless otherwise noted. Table 33 shows the defined register access types. Table 33: Register Access Types Abbreviation R Description Read Only Note: R registers are not read/write during the I2C boot unless it specified in the register description R/W Read or Write Note: All R/W registers are read/write during the I2C boot. R/W1C Readable Write 1 to Clear R/W0C Readable Write 0 to Clear. R/W1S Readable Write 1 to Set.Writing a 1 triggers an event, bit reads as 0. RC Read, then automatically Clear These fields are writable for test purposes. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Port Numbering 12.2 231 Port Numbering The following table shows the mapping between port numbers and the physical ports. These port numbers are used within the destination ID lookup tables for ingress RapidIO ports and in numerous register configuration fields. The odd ports are unavailable when the even port is in 4x mode. Table 34: Port Numbering 12.3 Port Number RapidIO Port Mode 0 Serial Port 0 (SP0) 1x or 4x 1 Serial Port 1 (SP1) 1x 2 Serial Port 2 (SP2) 1x or 4x 3 Serial Port 3 (SP3) 1x 4 Serial Port 4 (SP4) 1x or 4x 5 Serial Port 5 (SP5) 1x 6 Serial Port 6 (SP6) 1x or 4x 7 Serial Port 7 (SP7) 1x 8 Serial Port 8 (SP8) 1x or 4x 9 Serial Port 9 (SP9) 1x 10 Serial Port 10 (SP10) 1x or 4x 11 Serial Port 11 (SP11) 1x 12 Serial Port 12 (SP12) 1x or 4x 13 Serial Port 13 (SP13) 1x 14 Serial Port 14 (SP14) 1x or 4x 15 Serial Port 15 (SP15) 1x Conventions In many instances, there are multiple instances of a register, for example, one instance per RapidIO port. Two notations are used to refer to these registers. • In the first notation, a lower-case letter such as “x” is used as a wildcard character. For example, Sx_DESTID refers to S0_DESTID, S1_DESTID, S2_DESTID, and so on. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 232 12. Serial RapidIO Registers > Conventions • In the second notation, the names of the instances are explicitly listed. For example, S{BC,0..2}_DESTID refers to registers SBC_DESTID, S0_DESTID, S1_DESTID, and S2_DESTID. Generally, the instance number refers to a RapidIO port number. The special instance “BC” (broadcast) refers to a register that when written simultaneously affects all powered-up ports, and that when read returns a value from port number 0. Port 0 should not be powered-down. Refer to “Special Conditions for Port 0 Power Down” on page 73 for more information Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Register Map 12.4 233 Register Map Table 35 gives an overview of the Tsi578 register map. Table 35: Register map overview Register Group Start Address End Address “RapidIO Logical Layer and Transport Layer Registers” on page 245 0x00000 0x000FC “RapidIO Physical Layer Registers” on page 268 0x00100 0x0033C Reserved 0x00340 0x00FFC “RapidIO Error Management Extension Registers” on page 285 0x01000 0x0143C Reserved 0x014C0 0x0FFFF “IDT-Specific RapidIO Registers” on page 307 and Serial Port Electrical Layer Registers 0x10000 0x14FFC Reserved 0x15000 0x1A9FC “Internal Switching Fabric (ISF) Registers” on page 380 0x1AA00 0x1AAFC Reserved 0x1AB00 0x1ABFC “Utility Unit Registers” on page 388 0x1AC00 0x1ACFC Reserved 0x1AD00 0x1AFFC Fabric Arbitration Registers 0x1B000 0x1BFFC Reserved 0x1C000 0x1CFFC 0x1D000 0x1DFFC “SerDes Per Lane Register” on page 402 0x1E000 0x1EFFC Reserved 0x1F000 0x1FFFC Tsi578 I2C Registers 2 These registers are not described in this chapter, they are described in the I C Register Chapter. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 234 12. Serial RapidIO Registers > Register Map Table 36 shows the Tsi578 register map. Table 36: Register Map Offset Register Name See RapidIO Logical Layer and Transport Layer Registers 00000 RIO_DEV_ID “RapidIO Device Identity CAR” on page 246 00004 RIO_DEV_INFO “RapidIO Device Information CAR” on page 247 00008 RIO_ASBLY_ID “RapidIO Assembly Identity CAR” on page 248 0000C RIO_ASBLY_INFO “RapidIO Assembly Information CAR” on page 249 00010 RIO_PE_FEAT “RapidIO Processing Element Features CAR” on page 250 00014 RIO_SW_PORT “RapidIO Switch Port Information CAR” on page 252 00018 RIO_SRC_OP “RapidIO Source Operation CAR” on page 253 00020 - 0002C Reserved 00030 RIO_PE_MC_FEAT “RapidIO Switch Multicast Support CAR” on page 255 00034 RIO_LUT_SIZE “RapidIO Route LUT Size CAR” on page 256 00038 RIO_SW_MC_INFO “RapidIO Switch Multicast Information CAR” on page 257 0003C - 00064 Reserved 00068 RIO_HOST_BASE_ID_LOCK “RapidIO Host Base Device ID Lock CSR” on page 258 0006C RIO_COMP_TAG “RapidIO Component Tag CSR” on page 259 00070 RIO_ROUTE_CFG_DESTID “RapidIO Route Configuration DestID CSR” on page 260 00074 RIO_ROUTE_CFG_PORT “RapidIO Route Configuration Output Port CSR” on page 261 00078 RIO_LUT_ATTR “RapidIO Route LUT Attributes (Default Port) CSR” on page 262 0007C Reserved 00080 RIO_MC_MASK_CFG “RapidIO Multicast Mask Configuration Register” on page 263 00084 RIO_MC_DESTID_CFG “RapidIO Multicast DestID Configuration Register” on page 265 00088 RIO_MC_DESTID_ASSOC “RapidIO Multicast DestID Association Register” on page 266 0008C - 000FC Reserved RapidIO Physical Layer Registers (using extended features block ID = 0x0009) General Physical Layer Registers Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Register Map 235 Table 36: Register Map (Continued) Offset Register Name 00100 RIO_SP_MB_HEAD 00104 - 0011C Reserved 00120 RIO_SW_LT_CTL 00124 - 00138 Reserved 0013C RIO_SW_GEN_CTL See “RapidIO 1x or 4x Switch Port Maintenance Block Header” on page 270 “RapidIO Switch Port Link Timeout Control CSR” on page 271 “RapidIO Switch Port General Control CSR” on page 272 Serial Port 0 Registers (Offset 0x140 - 0x15C) 00140 SP0_LM_REQ “RapidIO Serial Port x Link Maintenance Request CSR” on page 273 00144 SP0_LM_RESP “RapidIO Serial Port x Link Maintenance Response CSR” on page 275 00148 SP0_ACKID_STAT “RapidIO Serial Port x Local ackID Status CSR” on page 276 0014C - 00154 Reserved 00158 SP0_ERR_STATUS “RapidIO Port x Error and Status CSR” on page 278 0015C SP0_CTL “RapidIO Serial Port x Control CSR” on page 281 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 236 12. Serial RapidIO Registers > Register Map Table 36: Register Map (Continued) Offset Register Name 160 - 17C Serial Port 1 180 - 19C Serial Port 2 1A0 - 1BC Serial Port 3 1C0 - 1DC Serial Port 4 1E0 - 1FC Serial Port 5 200 - 21C Serial Port 6 220 - 23C Serial Port 7 240 - 25C Serial Port 8 260 - 27C Serial Port 9 280 - 29C Serial Port 10 2A0 - 2BC Serial Port 11 2C0 - 2DC Serial Port 12 2E0 - 2FC Serial Port 13 300 - 31C Serial Port 14 320 - 33C Serial Port 15 340 - FFC Tsi578 Reserved See Same set of registers as Serial Port 0, offset 140 - 15C. RapidIO Error Management Extensions General Error Management Registers 01000 RIO_ERR_RPT_BH 01004 Reserved 01008 RIO_LOG_ERR_DET “RapidIO Logical and Transport Layer Error Detect CSR” on page 288 0100C RIO_LOG_ERR_DET_EN “RapidIO Logical and Transport Layer Error Enable CSR” on page 289 01014 RIO_LOG_ERR_ADDR “RapidIO Logical and Transport Layer Address Capture CSR” on page 290 01018 RIO_LOG_ERR_DEVID “RapidIO Logical and Transport Layer Control Capture CSR” on page 292 0101C RIO_LOG_ERR_CTRL_INFO “RapidIO Logical and Transport Layer Device ID Capture CSR” on page 291 Tsi578 User Manual June 6, 2016 “RapidIO Error Reporting Block Header” on page 287 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Register Map 237 Table 36: Register Map (Continued) Offset Register Name 01020 - 01024 Reserved 01028 RIO_PW_DESTID 0102C - 0103C Reserved See “RapidIO Port-Write Target Device ID CSR” on page 293 Per Port Error Management Registers 01040 SP0_ERR_DET “RapidIO Port x Error Detect CSR” on page 294 01044 SP0_RATE_EN “RapidIO Port x Error Rate Enable CSR” on page 297 01048 SP0_ERR_ATTR_CAPT_DBG0 “RapidIO Port x Error Capture Attributes CSR and Debug 0” on page 299 0104C SP0_ERR_ATTR_CAPT_0_DBG1 “RapidIO Port x Packet and Control Symbol Error Capture CSR 0 and Debug 1” on page 301 01050 SP0_ERR_ATTR_CAPT_1_DBG2 “RapidIO Port x Packet Error Capture CSR 1 and Debug 2” on page 302 01054 SP0_ERR_ATTR_CAPT_2_DBG3 “RapidIO Port x Packet Error Capture CSR 2 and Debug 3” on page 302 01058 SP0_ERR_ATTR_CAPT_3_DBG4 “RapidIO Port x Packet Error Capture CSR 3 and Debug 4” on page 303 0105C - 1064 Reserved 01068 SP0_ERR_RATE “RapidIO Port x Error Rate CSR” on page 304 0106C SP0_ERR_THRESH “RapidIO Port x Error Rate Threshold CSR” on page 306 01070 - 0107C Reserved Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 238 12. Serial RapidIO Registers > Register Map Table 36: Register Map (Continued) Offset Register Name 01080 - 010BC Serial Port 1 010C0 - 010FC Serial Port 2 01100 - 0113C Serial Port 3 01140 - 0117C Serial Port 4 01180 - 011BC Serial Port 5 011C0 - 011FC Serial Port 6 01200 - 0123C Serial Port 7 01240 - 0127C Serial Port 8 01280 - 012BC Serial Port 9 012C0 - 012FC Serial Port 10 01300 - 0133C Serial Port 11 01340 - 0137C Serial Port 12 01380 - 013BC Serial Port 13 013C0 - 013FC Serial Port 14 01400 - 0143C Serial Port 15 01440 - 0FFFC Tsi578 Reserved See Same set of registers as for SP0, offsets 0x01040 - 0x0107C. IDT-Specific RapidIO Registers Broadcast Registers (Offset 10000 - 10FFC) - Writing these registers affects all ports. Read data comes from port SP0. 10000 SPBC_DISCOVERY_ TIMER “RapidIO Port x Discovery Timer” on page 309 10004 SPBC_MODE “RapidIO Port x Mode CSR” on page 310 10008 SPBC_CS_INT_STATUS “RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR” on page 312 1000C SPBC_RIO_WM “RapidIO Port x RapidIO Watermarks” on page 313 10010 - 1006C Reserved 10070 SPBC_ROUTE_CFG_DESTID “RapidIO Port x Route Config DestID CSR” on page 314 10074 SPBC_ROUTE_CFG_ PORT “RapidIO Port x Route Config Output Port CSR” on page 315 10078 SPBC_ROUTE_BASE “RapidIO Port x Local Routing LUT Base CSR” on page 316 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Register Map 239 Table 36: Register Map (Continued) Offset Register Name See 1007C - 102FC Reserved 10300, 10304, 10308, 1030C, 10310, 10314, 10318, 1031C RIO_MC_ID{0..7} “RIO Multicast Write ID x” on page 245 10320, 10324, 10328, 1032C, 10330, 10334, 10338, 1033C RIO_MC_MASK{0..7} “RIO Multicast Write Mask x” on page 246 Per Port Instances of the Broadcast Registers (Offset 11000 - 110FC) Writing/reading these registers is a port specific operation. 11000 - 110FC Serial Port 0 11100 - 111FC Serial Port 1 11200 - 112FC Serial Port 2 11300 - 113FC Serial Port 3 11400 - 114FC Serial Port 4 11500 - 115FC Serial Port 5 11600 - 116FC Serial Port 6 11700 - 117FC Serial Port 7 11800 - 118FC Serial Port 8 11900 - 119FC Serial Port 9 11A00 - 11AFC Serial Port 10 11B00 - 11BFC Serial Port 11 11C00 - 11CFC Serial Port 12 11D00 - 11DFC Serial Port 13 11E00 - 11EFC Serial Port 14 11F00 - 11FFC Serial Port 15 12000 - 12FFC Tsi578 Reserved Same set of registers as Broadcast Registers, offset 10000 100FC. Non-Broadcast Per Port Registers 13000 Reserved Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 240 12. Serial RapidIO Registers > Register Map Table 36: Register Map (Continued) Offset Register Name See 13004 SP0_CTL_INDEP 13008 Reserved 1300C SP0_SEND_MCS “RapidIO Port x Send Multicast-Event Control Symbol Register” on page 322 13010 SP0_LUT_PAR_ERR_INFO “RapidIO Port x LUT Parity Error Info CSR” on page 323 13014 SP0_CS_TX “RapidIO Port x Control Symbol Transmit” on page 325 13018 SP0_INT_STATUS “RapidIO Port x Interrupt Status Register” on page 326 1301C SP0_INT_GEN “RapidIO Port x Interrupt Generate Register” on page 329 13020 SP0_PSC0n1_CTRL “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332 13024 SP0_PSC2n3_CTRL “RapidIO Port x Performance Statistics Counter 2 and 3 Control Register” on page 336 13028 SP0_PSC4n5_CTRL “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340 1302C - 1303C Reserved 13040 SP0_PSC0 “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 13044 SP0_PSC1 “RapidIO Port x Performance Statistics Counter 1 Register” on page 345 13048 SP0_PSC2 “RapidIO Port x Performance Statistics Counter 2 Register” on page 346 1304C SP0_PSC3 “RapidIO Port x Performance Statistics Counter 3 Register” on page 347 13050 SP0_PSC4 “RapidIO Port x Performance Statistics Counter 4 Register” on page 348 13054 SP0_PSC5 “RapidIO Port x Performance Statistics Counter 5 Register” on page 349 13058 - 1307C Reserved 13080 SP0_TX_Q_D_THRESH “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350 13084 SP0_TX_Q_STATUS “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352 13088 SP0_TX_Q_PERIOD “RapidIO Port x Transmitter Output Queue Congestion Period Register” on page 354 Tsi578 User Manual June 6, 2016 “RapidIO Port x Control Independent Register” on page 319 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Register Map 241 Table 36: Register Map (Continued) Offset Register Name See 1308C Reserved 13090 SP0_RX_Q_D_THRESH “RapidIO Port x Receiver Input Queue Depth Threshold Register” on page 355 13094 SP0_RX_Q_STATUS “RapidIO Port x Receiver Input Queue Congestion Status Register” on page 357 13098 SP0_RX_Q_PERIOD “RapidIO Port x Receiver Input Queue Congestion Period Register” on page 359 1309C Reserved 130A0 SP0_REORDER_CTR 130A4-130AC Reserved 130B0 SMAC0_CFG_CH0 “SRIO MAC x SerDes Configuration Channel 0” on page 363 130B4 SMAC0_CFG_CH1 “SRIO MAC x SerDes Configuration Channel 1” on page 366 130B8 SMAC0_CFG_CH2 “SRIO MAC x SerDes Configuration Channel 2” on page 368 130BC SMAC0_CFG_CH3 “SRIO MAC x SerDes Configuration Channel 3” on page 370 130C0 SMAC0_CFG_GBL “SRIO MAC x SerDes Configuration Global” on page 372 130C8 SMAC0_DLOOP_CLK_SEL “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377 130CC Reserved 130D0 MCES_PIN_CTRL 130D4-130FC Reserved 13100 - 131AC Serial Port 1 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. 13200 - 132FC Serial Port 2 All registers as for SP0, offsets 0x13000 - 0x130FC. 13300 - 133AC Serial Port 3 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. 13400 - 134FC Serial Port 4 All registers as for SP0, offsets 0x13000 - 0x130FC. 13500 - 135AC Serial Port 5 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. 13600 - 136FC Serial Port 6 All registers as for SP0, offsets 0x13000 - 0x130FC. 13700 - 137AC Serial Port 7 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. Integrated Device Technology www.idt.com “RapidIO Port x Reordering Counter Register” on page 360 “MCES Pin Control Register” on page 394 Tsi578 User Manual June 6, 2016 242 12. Serial RapidIO Registers > Register Map Table 36: Register Map (Continued) Offset Register Name See 13800 - 138FC Serial Port 8 All registers as for SP0, offsets 0x13000 - 0x130FC. 13900 - 139AC Serial Port 9 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. 13A00 - 13AFC Serial Port 10 All registers as for SP0, offsets 0x13000 - 0x130FC. 13B00 - 13BAC Serial Port 11 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. 13C00 - 13CFC Serial Port 12 All registers as for SP0, offsets 0x13000 - 0x130FC. 13D00 - 13DAC Serial Port 13 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. 13E00 - 13EFC Serial Port 14 All registers as for SP0, offsets 0x13000 - 0x130FC. 13F00 - 13FAC Serial Port 15 Same set of registers as for SP0, offsets 0x13000 - 0x130AC. The registers at offsets 0x130B0 - 0x130FC are excluded. Fabric Global Interrupt Registers 1AA00 FAB_CTL “Fabric Control Register” on page 380 1AA04 FAB_INT_STAT “Fabric Interrupt Status Register” on page 382 1AA08 RIO_MC_LAT_ERR “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384 1AA0C RIO_MC_LAT_ERR_SET “RapidIO Broadcast Buffer Maximum Latency Expired Override” on page 386 1AA10 - 1ABFC Reserved Utility Unit Registers 1AC00 GLOB_INT_STATUS “Global Interrupt Status Register” on page 388 1AC04 GLOB_INT_ENABLE “Global Interrupt Enable Register” on page 390 1AC08 - 1AC10 Reserved 1AC14 RIO_PW_TIMEOUT “” on page 391 1AC18 RIO_PW_OREQ_STATUS “RapidIO Port Write Outstanding Request Register” on page 393 1AFFC Reserved Multicast Registers 1B000 RIO0_MC_REG_VER “RapidIO Multicast Register Version CSR” on page 395 1B004 RIO0_MC_LAT_LIMIT “RapidIO Multicast Maximum Latency Counter CSR” on page 396 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Register Map 243 Table 36: Register Map (Continued) Offset Register Name See 1B008 SP0_ISF_WM “RapidIO Port x ISF Watermarks” on page 397 1B00C Reserved 1B010 SP0_WRR_0 “Port x Prefer Unicast and Multicast Packet Prio 0 Register” on page 398 1B014 SP0_WRR_1 “Port x Prefer Unicast and Multicast Packet Prio 1 Register” on page 399 1B018 SP0_WRR_2 “Port x Prefer Unicast and Multicast Packet Prio 2 Register” on page 400 1B01C SP0_WRR_3 “Port x Prefer Unicast and Multicast Packet Prio 3 Register” on page 401 1B020 - 1B0FC Reserved 1B100 - 1B1FC Serial Port 1 1B200 - 1B2FC Serial Port 2 1B300 - 1B3FC Serial Port 3 1B400 - 1B4FC Serial Port 4 1B500 - 1B5FC Serial Port 5 1B600 - 1B6FC Serial Port 6 1B700 - 1B7FC Serial Port 7 1B800 - 1B8FC Serial Port 8 1B900 - 1B9FC Serial Port 9 1BA00 - 1BAFC Serial Port 10 1BB00 - 1BBFC Serial Port 11 1BC00 - 1BCFC Serial Port 12 1BD00 - 1BDFC Serial Port 13 1BE00 - 1BEFC Serial Port 14 1BF00 - 1BFFC Serial Port 15 1C000 - 1CFFC Tsi578 Reserved Same set of registers as Serial Port 0, offset 1B000 - 1B0FC I2C Registers 1D000-1DFFC See the I2C Register Chapter for a full description of the I2C registers. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 244 12. Serial RapidIO Registers > Register Map Table 36: Register Map (Continued) Offset Register Name See SerDes Per Lane Registers 1D000 - 1DFFC Documented in the I2C Register Chapter 1E000-1E01C Reserved 1E020 SMAC{0,2,4,6,8,10,12,14}_PG_CT L_0 1E024-1E02C Reserved 1E030 SMAC{0,2,4,6,8,10,12,14}_PM_CT L_0 “SerDes Lane 0 Pattern Matcher Control Register” on page 407 1E034 SMAC{0,2,4,6,8,10,12,14}_FP_VAL _0 “SerDes Lane 0 Frequency and Phase Value Register” on page 411 1E038-1E03C Reserved 1E060 SMAC{0,2,4,6,8,10,12,14}_PG_CT L_1 1E064-1E06C Reserved 1E070 SMAC{0,2,4,6,8,10,12,14}_PM_CT L_1 “SerDes Lane 1 Pattern Matcher Control Register” on page 408 1E074 SMAC{0,2,4,6,8,10,12,14}_FP_VAL _1 “SerDes Lane 1 Frequency and Phase Value Register” on page 412 1E078-1E07C Reserved 1E0A0 SMAC{0,2,4,6,8,10,12,14}_PG_CT L_2 1E0A4-1E0AC Reserved 1E0B0 SMAC{0,2,4,6,8,10,12,14}_PM_CT L_2 “SerDes Lane 2 Pattern Matcher Control Register” on page 409 1E0B4 SMAC{0,2,4,6,8,10,12,14}_FP_VAL _2 “SerDes Lane 2 Frequency and Phase Value Register” on page 413 1E0B8-1E0BC Reserved 1E0E0 SMAC{0,2,4,6,8,10,12,14}_PG_CT L_3 1E0E4-1E0EC Reserved 1E0F0 SMAC{0,2,4,6,8,10,12,14}_PM_CT L_3 Tsi578 User Manual June 6, 2016 “SerDes Lane 0 Pattern Generator Control Register” on page 403 “SerDes Lane 1 Pattern Generator Control Register” on page 404 “SerDes Lane 2 Pattern Generator Control Register” on page 405 “SerDes Lane 3 Pattern Generator Control Register” on page 406 “SerDes Lane 3 Pattern Matcher Control Register” on page 410 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 245 Table 36: Register Map (Continued) Offset Register Name 1E0F4 SMAC{0,2,4,6,8,10,12,14}_FP_VAL _3 1E0F8-1E0FC Reserved 12.5 See “SerDes Lane 3 Frequency and Phase Value Register” on page 414 RapidIO Logical Layer and Transport Layer Registers Every processing element contains a set of capability registers (CARs) that allows another processing element to determine its capabilities through maintenance read operations. All registers are 32 bits wide and are organized and accessed in 32-bit quantities. CARs are read-only and are big-endian — bit 0 is the most significant bit. A processing element contains a set of command and status registers (CSRs) that allows another processing element to control and determine the status of its internal hardware. All registers are organized and accessed in the same way as the CARs. All of the registers in this section are defined in the RapidIO Interconnect Specification (Revision 1.3). When an individual port is powered down, the RapidIO Logical Layer and Transport Layer Registers for that port are read only and return 0. These registers are reset by the HARD_RST_b reset input signal, as well as when the Tsi578 performs a self-reset. The registers within a port are also reset by a “Port Reset”. For more information on Tsi578 reset implementation and behavior, see “Clocks, Resets and Power-up Options” on page 205. It is possible to override reset values of writable fields, and some read-only fields, using the I2C register loading capability on boot. Refer to “I2C Interface” on page 141 for more information on the use of I2C register loading capability. The I2C register loading capability is only used on a power-on reset (that is, HARD_RST_b) Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 246 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.1 RapidIO Device Identity CAR This register identifies the device and vendor information for the Tsi578. Register name: RIO_DEV_ID Register offset: 00000 Reset value: 0x0578_000D Bits 0 1 2 3 4 00:7 DEV_ID 07:15 DEV_ID 16:23 DEV_VEN_ID 24:31 DEV_VEN_ID Bits 0:15 Name DEV_ID 5 Description Device Identifier 6 7 Type Reset Value R 0x0578 R 0x000D This field contains the IDT-assigned part number of the device. 16:31 DEV_VEN_ID Device Vendor Identifier This field identifies IDT as the vendor that manufactured the device. This value is assigned by the RapidIO Trade Association. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.2 247 RapidIO Device Information CAR The SILICON_REV and METAL_REV fields in this register identify the device. Register name: RIO_DEV_INFO Register offset: 00004 Reset value: 0x0000_0010 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 Bits SILICON_REV Name 5 6 7 METAL_REV Description Type Reset Value 0:23 Reserved N/A R 0 24:27 SILICON_REV Indicates the version of silicon used in the device. This value may change with different silicon revisions of the device. R 0b0001 28:31 METAL_REV Indicates the version of the metal layers for the given silicon version. This value may change with different metal revisions of the device. R 0b0000 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 248 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.3 RapidIO Assembly Identity CAR This register contains assembly identification information about the Tsi578. Register name: RIO_ASBLY_ID Register offset: 00008 Reset value: 0x0001_000D Bits 0 1 2 3 4 00:07 ASBLY_ID 08:15 ASBLY_ID 16:23 ASBLY_VEN_ID 24:31 ASBLY_VEN_ID Bits 0:15 Name ASBLY_ID 5 Description Assembly ID. 6 7 Type Reset Value R 0x0001 R 0x000D Identifies the type of assembly from the vendor specified by the ASBLY_VEN_ID field. I2C load from EEPROM 16:31 ASBLY_VEN_ID Assembly Vendor ID Identifies the vendor that manufactured the assembly or subsystem that contains the device. I2C load from EEPROM Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.4 249 RapidIO Assembly Information CAR This register contains additional information about the assembly. Register name: RIO_ASBLY_INFO Register offset: 0000C Reset value: 0x0000_0100 Bits 0 1 2 3 4 00:07 ASBLY_REV 08:15 ASBLY_REV 16:23 EXT_FEAT_PTR 24:31 EXT_FEAT_PTR Bits Name 0:15 ASBLY_REV 5 Description Assembly Revision Level 6 7 Type Reset Value R 0x0000 R 0x0100 I2C load from EEPROM. 16:31 EXT_FEAT_PTR Extended Features Pointer This is the pointer to the first entry in the extended features list. In the Tsi578 it points to the Serial Physical Layer (see “RapidIO Physical Layer Registers” on page 268). Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 250 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.5 RapidIO Processing Element Features CAR This register identifies the major functionality provided by the processing element. Register name: RIO_PE_FEAT Register offset: 00010 Reset value: 0x1000_051F Bits 0 1 2 3 00:07 BRDG MEM PROC SW 08:15 5 6 7 Reserved SBR Reserved Reserved 16:23 Reserved 24:31 Reserved Bits 0 4 Name BRDG MC CTLS EXT_FEA EXT_AS Description Bridge Type Reset Value R 0 R 0 R 0 R 1 0 = Processing element is not a bridge 1 = Processing element can bridge to another interface 1 MEM Endpoint 0 = Not a RapidIO endpoint addressable for reads and writes 1 = The processing element has physically addressable local address space and can be accessed as an endpoint through non-maintenance (that is, NREAD and NWRITE) transactions. 2 PROC Processor 0 = Not a processor 1 = Physically contains a local processor or similar device that executes code. A device that bridges to an interface that connects to a processor does not count (see bit 0). 3 SW Switching Capabilities PE can bridge to another external RapidIO Interface. For example, a device with two RapidIO ports and a local endpoint is a two port switch, not a three port switch, regardless of the internal architecture. 0 = Processing element is not a switch 1 = Processing element is a switch. Ftype 8 packets with hop count equal to 0 are routed to the register bus. 4:20 21 Reserved N/A R 0 MC Multicast R 1 0 = Does not support the multicast extensions 1 = Supports the multicast extensions Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 251 (Continued) Bits Type Reset Value N/A R 0 System bringup register extension R 1 Name 22 Reserved 23 SBR Description 0 = System bringup register extension is not supported 1 = System bringup register extension is supported 24:26 27 Reserved N/A R 0 CTLS For the Tsi578, packets are forwarded according to the configuration of the ingress port’s lookup table. This bit is not used in the control of any functionality in the Tsi578. R 1 R 1 R 0b111 0 = Device supports 8-bit destination IDs only 1 = Device supports 8-bit and 16-bit destination IDs 28 EXT_FEA Extended Features Pointer is valid Pointer to the first entry in the extended features list. In the Tsi578 this pointer points to the “RapidIO Physical Layer Registers” on page 268 29:31 EXT_AS Extended Addressing Support. 001 = 34-bit addresses 011 = 50- and 34-bit addresses 101 = 66- and 34-bit addresses 111 = 66-, 50-, and 34-bit addresses Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 252 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.6 RapidIO Switch Port Information CAR This register defines the switching capabilities of a processing element. Register name: RIO_SW_PORT Register offset: 00014 Reset value: Undefined Bits 0 1 2 3 4 6 7 Type Reset Value N/A R 0x0000 Port Total R 0x10 R Undefined 00:07 Reserved 08:15 Reserved 16:23 PORT_TOTAL 24:31 PORT_NUM Bits Name 0:15 Reserved 16:23 PORT_TOTAL 5 Description The total number of RapidIO ports on the device. Note that the number of ports reported in this register assumes that all RapidIO ports are in 1x mode. For example, when a port is configured for 4x mode it consumes two ports from this reported number. 24:31 PORT_NUM Port Number The port number that received the maintenance read packet that caused this register to be read. This value is undefined if the register is read through JTAG. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.7 253 RapidIO Source Operation CAR This register defines the set of RapidIO I/O logical operations that can be issued by the Tsi578. The device can generate I/O logical maintenance read and write requests if it is required to access CARs and CSRs in other processing elements. The Tsi578 can route any packet. Register name: RIO_SRC_OP Register offset: 00018 Reset value: 0x0000_0004 Bits 0 1 2 3 00:07 4 5 6 7 Reserved 08:15 Reserved IMPLEMENT_DEF 16:23 READ WRITE STRM_WR WR_RES D_MSG DBELL 24:31 A_INC A_DEC A_SET A_CLEAR Reserved PORT_WR Reserved A_TSWAP Reserved Type Reset Value N/A R 0 Implementation defined R 0 READ Read operation supported R 0 17 WRITE Write operation supported R 0 18 STRM_WR Streaming write operation supported R 0 19 WR_RES Write-with-response operation supported R 0 20 D_MSG Data messaging R 0 21 DBELL Doorbell R 0 22 Reserved N/A R 0 23 A_TSWAP Atomic (test-and-swap) operation supported R 0 24 A_INC Atomic (increment) operation supported R 0 25 A_DEC Atomic (decrement) operation supported R 0 26 A_SET Atomic (set) operation supported R 0 27 A_CLEAR Atomic (clear) operation supported R 0 28 Reserved N/A R 0 Bits Name 0:13 Reserved 14:15 IMPLEMENT_ DEF 16 Integrated Device Technology www.idt.com Description Tsi578 User Manual June 6, 2016 254 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers (Continued) Bits Name 29 PORT_WR Description Port-write operation Type Reset Value R 1 R 0 The RapidIO ports support port-write generation to report errors. 30:31 Reserved Tsi578 User Manual June 6, 2016 Implementation defined Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.8 255 RapidIO Switch Multicast Support CAR This register identifies the multicast programming model supported by a switch. The Tsi578 does not support the simple programming model (for more information, see the “RapidIO Multicast Mask Configuration Register” on page 263). Register name: RIO_PE_MC_FEAT Register offset: 00030 Reset value: 0x0000_0000 Bits 0 00:07 SIMP 1 2 3 4 Reserved 16:23 Reserved 24:31 Reserved Name 0 SIMP 6 7 Reserved 08:15 Bits 5 Description Simple Programming Type Reset Value R 0 R 0 0 = Does not support simple block programming model 1 = Supports simple block programming model (not implemented) 1:31 Reserved N/A Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 256 12.5.9 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers RapidIO Route LUT Size CAR This register tells host software that the Tsi578 supports 512 destination IDs in its lookup table (LUT). When the LUT_512 bit in the “RapidIO Port x Mode CSR” on page 310 is set to 0, the corresponding switch port supports 64K destination IDs with limited capabilities Register name: RIO_LUT_SIZE Register offset: 0034 Reset value: 0x0000_01FF Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 LUT_SIZE[0:7] 24:31 LUT_SIZE[8:15] Bits Name 0:15 Reserved 16:31 LUT_SIZE 5 6 7 Type Reset Value Reserved R 0 Lookup Table Size R 0x01FF Description Identifies the destination IDs that can be used to route packets through the switch. Destination IDs 0x0000 to LUT_SIZE are valid. Note: When the LUT_512 bit in “RapidIO Port x Mode CSR” on page 310 is set to 0, destination IDs 0x0000 to 0xFFFF are valid on the corresponding port, regardless of the LUT_SIZE value. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.10 257 RapidIO Switch Multicast Information CAR This RapidIO standard register gives information about the multicast programming model, the number of multicast destination IDs supported, and the number of multicast masks supported. Register name: RIO_SW_MC_INFO Register offset: 00038 Reset value: 0x0000_0008 Bits 0 1 00:07 ASSOC_ MODE ASSOC_ SCOPE 2 3 4 5 6 7 MAX_DESTID_ASSOC 08:15 MAX_DESTID_ASSOC 16:23 MAX_MASKS 24:31 MAX_MASKS Bits Name Description Type Reset Value 0 ASSOC_MODE Defines the capabilities of a switch to associate destination IDs with multicast masks. R 0 R 0 R 0 R 8 0 = Single associate. One “associate” write is required per association between a destinationID and a multicast mask. 1 = Block association is supported (Not implemented in the Tsi578) 1 ASSOC_SCOPE Defines the capabilities of a switch to associate a destination ID with a multicast mask on a per-inbound-port basis. 0 = A destination ID, when associated with a multicast mask, associates with the mask regardless of which switch inbound port received the packet. 1 = Per-port association is supported (Not implemented in the Tsi578) 2:15 MAX_DESTID_ ASSOC This is the maximum number of destinationIDs that can be associated with any multicast mask. The values are one less than the maximum number of associations. For example, 0x0000 - Maximum of one destinationID per multicast mask. 16:31 MAX_MASKS Defines the number of multicast masks available. Multicast masks are sequentially numbered, with the first multicast mask number being 0x0000. Additional multicast masks are sequentially numbered. There are eight multicast masks available on the Tsi578. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 258 12.5.11 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers RapidIO Host Base Device ID Lock CSR The host base device ID lock CSR contains the base device ID value for the processing element in the system that is responsible for initializing this processing element. The HOST_BASE_ID field is a write-once/reset field. Once the HOST_BASE_ID field is written, all subsequent writes to the field are ignored, except when the value written matches the value in the field. In this case, the register is re-initialized to 0xFFFF. Note that writing 0xFFFF to this register does not result in a lock being obtained. After writing the HOST_BASE_ID field, a processing element must read the Host Base Device ID Lock CSR to verify that it owns the lock before attempting to initialize this processing element. Register name: RIO_HOST_BASE_ID_LOCK Register offset: 00068 Reset value: 0x0000_FFFF Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 HOST_BASE_ID[16:23] 24:31 HOST_BASE_ID[24:31] Bits Name 0:15 Reserved 16:31 HOST_BASE_ID 5 Description Reserved Host Base ID 6 7 Type Reset Value R 0x0000 R/W 0xFFFF Base Device ID for the processing element that is initializing this processing element. The HOST_BASE_ID set in this register does not enforce exclusive access to the device. It coordinates device identification during initialization and discovery. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.12 259 RapidIO Component Tag CSR This register is written by software. It is used for labeling and identifying the port-write transactions to the host. Register name: RIO_COMP_TAG Register offset: 0006C Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 CTAG[0:7] 08:15 CTAG[8:15] 16:23 CTAG[16:23] 24:31 CTAG[24:31] Bits Name 00:31 CTAG Integrated Device Technology www.idt.com Description Component Tag 5 6 7 Type Reset Value R/W 0 Tsi578 User Manual June 6, 2016 260 12.5.13 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers RapidIO Route Configuration DestID CSR This register and “RapidIO Route Configuration Output Port CSR” on page 261 operate together to provide indirect read and write access to the destination ID lookup tables (LUTs). Writes to the LUTs through these registers affect the LUTs of all ports on the device. Reads from these registers always return the data from Port 0. This register set is identical to “RapidIO Port x Route Config DestID CSR” on page 314 (Offset 10070) and “RapidIO Port x Route Config Output Port CSR” on page 315 (Offset 10074), except that “RapidIO Port x Route Config Output Port CSR” on page 315 are per-port configuration registers and they include an auto-increment bit to increment the contents of SPx_ROUTE_CFG_DESTID after a read or write operation. For details on how to configure the LUTs using this register, refer to “Lookup Tables” on page 37. Register name: RIO_ROUTE_CFG_DESTID Register offset: 0070 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 LRG_CFG_DEST_ID 24:31 CFG_DEST_ID Bits Name Reserved Reserved 16:23 LRG_CFG_ DEST_ID Large Configuration Destination ID CFG_DEST_ ID Configuration Destination ID Tsi578 User Manual June 6, 2016 6 Description 0:15 24:31 5 7 Type Reset Value R 0 R/W 0x00 R/W 0x00 This field specifies the most significant byte of the destination ID used to select an entry in the LUT, when the “RapidIO Port x Route Config Output Port CSR” on page 315 is read or written. This field specifies the destination ID used to select an entry in the LUT when the “RapidIO Port x Route Config Output Port CSR” on page 315 register is read or written. Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.14 261 RapidIO Route Configuration Output Port CSR This register and “RapidIO Route Configuration DestID CSR” on page 260 operate together to provide indirect read and write access to the LUTs. Writes to the LUTs through these registers affect the LUTs of all ports on the device. Reads from these registers always return the data from Port 0. This register set is identical to “RapidIO Port x Route Config DestID CSR” on page 314 (Offset 10070) and “RapidIO Port x Route Config Output Port CSR” on page 315 (Offset 10074), except that “RapidIO Port x Route Config Output Port CSR” on page 315 are per-port configuration registers and they include an auto-increment bit to increment the contents of SPx_ROUTE_CFG_DESTID after a read or write operation. For details on how to configure the LUTs using this register, refer to “Lookup Tables” on page 37. Register name: RIO_ROUTE_CFG_PORT Register offset: 0074 Reset value: Undefined Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 PORT Bits Name 0:23 Reserved 24:31 PORT 5 Description Reserved Port 6 7 Type Reset Value R 0 R/W Undefined This is the RapidIO output port through which all reads and writes meant for the CFG_DEST_ID field in the “RapidIO Route Configuration DestID CSR” on page 260 are sent. Writing a value greater to this field than the PORT_TOTAL field in the “RapidIO Switch Port Information CAR” on page 252 sets the LUT entry to an unmapped state. For future compatibility, write the value 0xFF to indicate an unmapped destination ID. When reading an unmapped value from the LUT, this field is set to 0xFF. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 262 12.5.15 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers RapidIO Route LUT Attributes (Default Port) CSR This register provides a default route for packets that do not match a valid entry in the destination ID lookup table (LUT). By default, the default route is unmapped and packets that attempt to use the default route are discarded. Register name: RIO_LUT_ATTR Register offset: 0078 Reset value: 0x0000_00FF Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 DEFAULT_PORT Bits Name 0:23 Reserved 24:31 DEFAULT_ PORT 5 6 Description Reserved Default Output Port 7 Type Reset Value R 0 R/W 0xFF All transactions with destination IDs not defined in the LUT are routed to this pre-defined default output port. DEFAULT_PORT can be set to “unmapped” with a value greater than PORT_TOTAL in the RIO_SW_PORT register. For compatibility with future devices, it is recommended that the value 0xFF be used to indicate unmapped. If a packet needs to consult the default route and the default route is unmapped, the packet is discarded. See “Port Numbering” on page 67 for a mapping of port numbers to physical ports. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.16 263 RapidIO Multicast Mask Configuration Register This register is used to add and remove egress port numbers to multicast masks. This can be completed either before or after a mask is bound to a destination ID and placed in the multicast group table. This register can also be used to retrieve the current configuration of a multimask mask. Register name: RIO_MC_MASK_CFG Register offset: 00080 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 MC_MASK_NUM[15:8] 08:15 MC_MASK_NUM[7:0] 16:23 EG_PORT_NUM[7:0] 24:31 Reserved MASK_CMD 5 6 7 Reserved PORT_ PRESENT Bits Name Description Type Reset Value 0:15 MC_MASK_NUM Specifies the multicast mask [0:7] which is to be modified when this register is written with the MASK_CMD field set to “Add” or “Delete“(0x0000 to 0x0007). R/W 0 R/W 0 R 0 Specifies the Multicast mask which is to be queried for the presence of a port (by a subsequent read of this register) when this register is written with a “Write_to_Verify“command. When the register is read, this field returns the contents that were previously written. 16:23 EG_PORT_NUM When this register is written, it specifies the port number to be added or deleted from the Multicast_Mask. This field is ignored when the MASK_CMD field indicates “Delete All Ports” or “Add All Ports”. When the register is read, this field returns the contents that were previously written. 24 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 264 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers (Continued) Bits Name Description Type Reset Value 25:27 MASK_CMD Specifies the mask action on a write. Contains the last value written for read operations. R/W 0 • 000 = Write_to_Verify. This write is only to set up a Multicast_Mask and Egress_Port_Number for a subsequent read of this register to check the Port_Present bit. No bits are changed in any multicast mask. • 001 = Add the given Egress_Port_Number to the specified Multicast Mask. • 010 = Delete the given Egress_Port_Number from the specified Multicast Mask. • 011 = Reserved • 100 = Delete all egress ports from the specified Multicast Mask. • 101 = Add all egress ports to the specified Multicast Mask. • 110 = Reserved • 111 = Reserved When the register is read, this field returns the contents that were previously written. 28:30 Reserved N/A R 0 31 PORT_ PRESENT Port Present R 0 0 = Port is not enabled as an outbound port in the specified multicast mask. 1 = Port is enabled as an outbound port in the specified multicast mask. The Multicast_Mask and Egress_Port_Number were specified in a prior write to this register using the “Write_to_Verify” command. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.17 265 RapidIO Multicast DestID Configuration Register This register is used to configure the multicast group table. It contains the association between a destination ID and a multicast mask number. The association is formed or removed only when the “RapidIO Multicast DestID Association Register” on page 266 register is written. This register associates only one destination ID to one mask. Associating ranges of destination IDs to ranges of masks is not supported. Register name: RIO_MC_DESTID_CFG Register offset: 00084 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 DESTID_BASE_LT[7:0] 08:15 DESTID_BASE[7:0] 16:23 MASK_NUM_BASE[15:8] 24:31 MASK_NUM_BASE[7:0] Bits Name 0:7 DESTID_BASE_L T 5 6 7 Type Reset Value R/W 0 The 8-bit destination ID or the least significant 8 bits of a 16-bit destination ID to be associated with the mask MASK_NUM_BASE. R/W 0 The multicast mask number [0:7] to be associated with the destination ID configured above (0x0000 to 0x0007). R/W 0 Description The most significant 8 bits of a 16-bit destination ID to be associated with the mask MASK_NUM_BASE. This field is ignored when an 8-bit destination ID is being associated with a multicast mask. 8:15 DESTID_BASE 16:31 MASK_NUM_ BASE Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 266 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 12.5.18 RapidIO Multicast DestID Association Register This register populates and depopulates the multicast group table. When this register is written, the device consults the value in the “RapidIO Multicast DestID Configuration Register” on page 265 register to determine which destination ID is associated with which multicast mask (or which association must be removed). Register name: RIO_MC_DESTID_ASSOC Register offset: 00088 Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 00:07 ASSOC_BLK_SIZE 08:15 ASSOC_BLK_SIZE 16:23 INGRESS_PORT 24:31 LARGE CMD 6 RESERVED 7 ASSOC_ PRESENT Bits Name Description Type Reset Value 0:15 ASSOC_BLK_ SIZE This field is ignored. Set this field to 0 when writing the register for future software compatibility. R 0 16:23 INGRESS_ PORT This field is ignored. R 0 24 LARGE R/W 0 0 = The association is for a small transport destination IDs 1 = The association is for a large transport destination IDs This field returns the previously written value when this register is read. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Logical Layer and Transport Layer Registers 267 (Continued) Bits Name 25:26 CMD Description Command Type Reset Value R/W 0 R 0000 R/W 0 • 00 = Verify Association This read checks the association status, for a given transport type, between a given destination ID and a multicast mask number. The transport type is specified by the LARGE field. The multicast mask number and destination ID are specified by a prior write to the “RapidIO Multicast DestID Configuration Register”. • 01 = Reserved • 10 = Remove Associations This register write removes the associations between a destination ID and multicast mask number. The multicast mask number and destination ID are specified by a prior write to the “RapidIO Multicast DestID Configuration Register”. • 11 = Add Associations This register write adds associations between a destination ID and multicast mask number. The multicast mask number and destination ID are specified by a prior write to the “RapidIO Multicast DestID Configuration Register”. • This field returns the previously written value when this register is read. 27:30 Reserved Reserved 31 ASSOC_ PRESENT Association Present When read, this bit reflects the association status between a destination ID, given a transport type, and a multicast mask number. The destination ID and multicast mask number are specified by a previous write to the “RapidIO Multicast DestID Configuration Register”. The transport type is specified by a previous write to this register with a command of “Write_To_Verify” with the LARGE field set accordingly. 0 = No association present 1 = Association present This bit is reserved on a write to this register. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 268 12.6 12. Serial RapidIO Registers > RapidIO Physical Layer Registers RapidIO Physical Layer Registers This section describes the Command and Status Register (CSR) set. All registers in the set are 32-bits long and aligned to a 32-bit boundary. These registers allow an external processing element to determine the capabilities, configuration, and status of a processing element using the Serial physical layer. The registers can be accessed using the maintenance operations defined in the RapidIO Interconnect Specification (Revision 1.3). When an individual port is powered down, the RapidIO Physical Layer Registers for that port are read only and return undetermined values. These registers are reset by the HARD_RST_b reset input signal, as well as when the Tsi578 performs a self-reset. The registers within a port are also reset by a “Port Reset”. For more information on Tsi578 reset implementation and behavior, see “Clocks, Resets and Power-up Options” on page 205. It is possible to override reset values of writable fields, and some read-only fields, using the I2C register loading capability on boot. Refer to “I2C Interface” on page 141 for more information on the use of I2C controller register loading capability. The I2C register loading capability is only used on a power-on reset (that is, HARD_RST_b) Reads to reserved register addresses return 0, writes to reserved register addresses complete without error. The following table shows the register offsets of the physical layer of the Tsi578. When the even-numbered port in a Tsi578 is configured to operate in 4x mode, the odd-numbered port cannot be used and the register values for the odd-numbered port should be ignored Table 37: Physical Interface Register Offsets RapidIO Port x Registers Tsi578 User Manual June 6, 2016 Port Offset Description All 0x0100 These registers affect the operation of all ports. 0 0x0140 1x/4x serial port 1 0x0160 1x serial port 2 0x0180 1x/4x serial port 3 0x01A0 1x serial port 4 0x01C0 1x/4x serial port 5 0x01E0 1x serial port 6 0x0200 1x/4x serial port 7 0x0220 1x serial port Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 269 Table 37: Physical Interface Register Offsets RapidIO Port x Registers Port Offset 8 0x0240 1x/4x serial port 9 0x0260 1x serial port 10 0x0280 1x/4x serial port 11 0x02A0 1x serial port 12 0x02C0 1x/4x serial port 13 0x02E0 1xserial port 14 0x0300 1x/4x serial port 15 0x0320 1x serial port Integrated Device Technology www.idt.com Description Tsi578 User Manual June 6, 2016 270 12.6.1 12. Serial RapidIO Registers > RapidIO Physical Layer Registers RapidIO 1x or 4x Switch Port Maintenance Block Header This register contains the block header information. Register name: RIO_SW_MB_HEAD Register offset: 100 Reset value: 0x1000_0009 Bits 0 1 2 3 4 00:07 EF_PTR 08:15 EF_PTR 16:23 EF_ID 24:31 EF_ID Bits Name 0:15 EF_PTR 5 6 Description Extended Features Pointer 7 Type Reset Value R 0x1000 R 0x0009 Hard-wired pointer to the next block in the features data structure. 16:31 EF_ID Hard-wired Extended Features ID 0x0009 = Switch with software recovery capability Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 12.6.2 271 RapidIO Switch Port Link Timeout Control CSR This register contains the timeout timer value for all ports on a device. This timeout is for link events such as sending a packet and receiving the corresponding acknowledge, or sending a link-request and receiving the corresponding link-response. The reset value is the maximum timeout interval, and is 5.4 seconds with a P_CLK of 100 MHz. When Link Time Out is expired the port enters the Output-Error state, as outlined in the RapidIO Interconnect Specification (Revision 1.3). Register name: RIO_SW_LT_CTL Register offset: 120 Reset value: 0xFFFF_FF00 Bits 0 1 2 3 4 00:07 TVAL 08:15 TVAL 16:23 TVAL 24:31 Reserved Bits Name 0:23 TVAL 5 Description Timeout Interval Value 6 7 Type Reset Value R/W 0xFFFFFF R 0 Timeout = (32/F) * TVAL, where F is the register bus frequency, P_CLK (recommended operation is 100 MHz). When F = 100 MHz, the default value of this register gives a time out of 5.4 seconds. When TVAL is 0, the timer is disabled. Note: Refer to “P_CLK Programming” on page 493 for information on programming options for the P_CLK frequency. 24:31 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 272 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 12.6.3 RapidIO Switch Port General Control CSR This register applies to all ports on the device. A device has only one copy of the bits in this register. These bits are also accessible through the Port General Control CSR of any other physical layer implemented on a device. Register name: RIO_SW_GEN_CTL Register offset: 13C Reset value: 0x0000_0000 Bits 00:07 0 1 Reserved 2 3 4 DISC Reserved 16:23 Reserved 24:31 Reserved Name 0:1 Reserved 2 DISC 6 7 Reserved 08:15 Bits 5 Description N/A Discovered Type Reset Value R 0 R/W 0 R 0 This device has been located by the processing element responsible for system configuration. 1 = Device discovered by system host 0 = Device not discovered 3:31 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 12.6.4 273 RapidIO Serial Port x Link Maintenance Request CSR According to the RapidIO Interconnect Specification (Revision 1.3) only one link maintenance request can be outstanding at a time. However, the Tsi578 can be instructed to produce four consecutive link maintenance requests in order to quickly re-establish a link. Multiple link maintenance request symbols are generated by the CMD field in the RapidIO Serial Port x Link Maintenance Request CSR. An external device can write to this register and generate a link-request control symbol on the corresponding RapidIO port. A read to this register returns the last value written. The control symbols generated by this register are encoded as: Status+ackID_status+buf_status + link_req+CMD. If the Tsi578 sends its own link maintenance request, and if that request is outstanding and the CMD field is written to, then the register write is ignored. If this register is written twice in rapid succession, it could cause a protocol violation. If the RapidIO Serial Port x Link Maintenance Response CSR does not indicate that the link-request is complete, software must ensure that a period of time equal to the Port Link Timeout period, controlled by the RapidIO Switch Port Link Time Out Control CSR, has passed before attempting another link maintenance request to avoid protocol violations. Register name: SP{0..15}_LM_REQ Register offset: 140, 160, 180, 1A0, 1C0, 1E0, 200, 220, 240, 260, 280, 2A0, 2C0, 2E0, 300, 320 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 5 Reserved Bits Name 0:28 Reserved 29:31 CMD 6 7 CMD Description N/A Command Type Reset Value R 0 R/W 0 Command to be sent in the link-request control symbol. If read, this field returns the last written value. 011 = Reset. Writing this value causes the device to send four consecutive reset control symbols. 100 = Input-status Other values are reserved, but the Tsi578 sends a control symbol with the requested value. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 274 12. Serial RapidIO Registers > RapidIO Physical Layer Registers Writing to this register on a port in normal operation affects traffic on that port. This register should only be used on ports in an error state. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 12.6.5 275 RapidIO Serial Port x Link Maintenance Response CSR This register is accessed by an external RapidIO device. A read of this register returns the status from the last link-response received from the link-partner due to a link-request/input-status issued using the RapidIO Serial Port x Link Maintenance Request CSR CSR or the RapidIO Port x Control Symbol Transmit register. Register name: SP{0..15}_LM_RESP Register offset: 144, 164, 184, 1A4, 1C4, 1E4, 204, 224, 244, 264, 284, 2A4, 2C4, 2E4, 304, 324 Reset value: 0x0000_0000 Bits 0 00:07 RESP_VLD 1 2 3 4 5 6 7 Reserved 08:15 Reserved 16:23 Reserved 24:31 ACK_ID_STAT ACK_ID_STAT Bits Name 0 RESP_VLD LINK_STAT Type Reset Value RC 0 N/A R 0 AckID Status R 0 R 0 Description Response Valid 0 = No link-response control symbol received or no link-request/reset transmitted 1 = If the link-request was a link-request/input-status, this bit indicates that the link-response control symbol has been received. The LINK_STAT field contains information pertaining to that link response. If link-request was a link-request/reset, this bit indicates that the link-request/reset has been transmitted. Note: For link-response control symbols, this bit certifies the availability of data, it does not certify the correctness of the data. 1:21 Reserved 22:26 ACK_ID_STAT AckID status field from the link-response control symbol. The value of the next ackID expected by the receiver. 27:31 LINK_STAT Link Status Link status field from the link-response control symbol. Other values are reserved. 0b00010 = Error 0b00100 = Retry-stopped 0b00101 = Error-stopped 0b10000 = OK Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 276 12.6.6 12. Serial RapidIO Registers > RapidIO Physical Layer Registers RapidIO Serial Port x Local ackID Status CSR A read to this register returns the local ackID for both the inbound and outbound port of the device. Register name: SP{0..15}_ACKID_STAT Register offset: 148, 168, 188, 1A8, 1C8, 1E8, 208, 228, 248, 268, 288, 2A8, 2C8, 2E8, 308, 328 Reset value: 0x0000_0000 Bits 0 1 00:07 2 3 4 Reserved 08:15 5 6 7 INBOUND Reserved 16:23 Reserved OUTSTANDING 24:31 Reserved OUTBOUND Bits Name 0:2 Reserved 3:7 INBOUND Type Reset Value N/A R/W 0 Inbound Acknowledge ID R/W 0 N/A R 0 Outstanding Acknowledge IDs R 0 R 0 Description Next expected ackID value for the receive side of the port. Software can write this field to force re-transmission of outstanding unacknowledged packets, in order to manually implement error recovery. Note: The INBOUND value can be initialized through the I2C Interface. Initializing the INBOUND value from I2C is required for test purposes only. Unless the INBOUND value is initialized to 0, the device state is not consistent with the state required by the RapidIO Specification. It is not possible to exchange packets after a reset if the INBOUND value is other than 0. The INBOUND field may only be written when there are no packets outstanding in the transmit queue, and no packets are being exchanged with a link partner. Caution: Changing the INBOUND field when there are packets being exchanged with a link partner results in non-deterministic ackID values. It is likely that a fatal error due to ackID mismatch will result. 8:18 Reserved 19:23 OUTSTANDING The first unacknowledged ackID. Note: When software writes to OUTBOUND field, the OUTSTANDING is also updated with the value in OUTBOUND. 24:26 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 277 (Continued) Bits Name 27:31 OUTBOUND Description Outbound Acknowledge ID Type Reset Value R/W 0 Next ackID to be transmitted by the port. Software can write this field to force re-transmission of outstanding unacknowledged packets, in order to manually implement error recovery. If an error or retry occurs on the inbound while the write to this register is being processed, the OUTBOUND value is not used for the next packet transmitted. The new OUTBOUND value is always used when the port is operating normally, and when the port is in an error state. The OUTBOUND field may only be written when there are no packets outstanding in the transmit queue, and no packets are being exchanged with a link partner. Caution: Changing the OUTBOUND field when there are packets being exchanged with a link partner results in non-deterministic ackID values. It is likely that a fatal error due to ackID mismatch will result. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 278 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 12.6.7 RapidIO Port x Error and Status CSR This register contains the port error and status information. This register returns 0x0000001 if it is read when the port is powered down. Register name: SP{0..15}_ERR_STATUS Register offset: 158, 178, 198, 1B8, 1D8, 1F8, 218, 238, 258, 278, 298, 2B8, 2D8, 2F8, 318, 338 Reset value: 0x0000_0001 Bits 0 1 2 00:07 3 4 Reserved 08:15 Reserved 16:23 OUTPUT_ RE OUTPUT_ R Reserved 24:31 Reserved Bits Name 0:4 Reserved 5 OUTPUT_DROP PORT_W_ PEND Reserved 5 6 7 OUTPUT_ DROP OUTPUT_ FAIL OUTPUT_ DEG OUTPUT_ RS OUTPUT_ ERR OUTPUT_ ERR_ STOP INPUT_RS INPUT_ ERR INPUT_ ERR_ STOP PORT_ ERR PORT_ OK PORT_ UNINIT Description N/A Output port has discarded a packet. Type Reset Value R 0 R/W1C 0 R/W1C 0 R/W1C 0 R 0 R/W1C 0 The packet is dropped when the Error Rate Threshold is reached, when the time-to-live counter has expired, or when a TEA or MAC_TEA error has occurred. 6 OUTPUT_FAIL Output Failed Encountered Output port has encountered a failed condition, meaning that the failed port error threshold has been reached in the “RapidIO Port x Error Rate Threshold CSR” on page 306. 7 OUTPUT_DEG Output Degraded Encountered Output port has encountered a degraded condition, meaning that the degraded port error threshold has been reached in “RapidIO Port x Error Rate CSR” on page 304. 8:10 Reserved 11 OUTPUT_RE N/A Output Retry-encountered Outbound port has encountered a retry condition.This bit is set when the Output Retry-stopped bit (bit 13) is set. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 279 (Continued) Bits Name 12 OUTPUT_R Type Reset Value R 0 R 0 R/W1C 0 R 0 N/A R 0 Input Retry-stopped R 0 R/W1C 0 R 0 R 0 R/W1C 0 R 0 Description Output Retried Outbound port has received a packet-retry control symbol and cannot make forward progress. This bit is set when the Output Retry-stopped bit (bit 13) is set. This bit is cleared after receiving a packet-accepted or packet-not-accepted control symbol. 13 OUTPUT_RS Output Retry-stopped Outbound port has received a packet-retry control symbol and is in the output retry-stopped state. 14 OUTPUT_ERR Output Error-encountered Outbound port has encountered (and possibly recovered from) a transmission error. This bit is set when the Output Error-stopped bit (bit 15) is set. 15 OUTPUT_ERR_ STOP 16:20 Reserved 21 INPUT_RS Output Error-stopped Outbound port is in the output error-stopped state. Inbound port is in the input retry-stopped state. 22 INPUT_ERR Input Error-encountered Inbound port has encountered (and possibly recovered from) a transmission error. This bit is set when bit 23, Input Error-stopped, is set. 23 INPUT_ERR_STOP Input Error-stopped Inbound port is in the input error-stopped state. 24:26 Reserved 27 PORT_W_PEND N/A Port-write Pending Port has encountered a condition which required it to issue an I/O logical port-write maintenance request. 28 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 280 12. Serial RapidIO Registers > RapidIO Physical Layer Registers (Continued) Bits Name 29 PORT_ERR Description Port Error Type Reset Value R/W1C 0 R 0 R 1 PORT_ERR on the even port is composed of a logical OR of PORT_ERR signal produced by the individual lanes independent of whether the MAC is configured in 4x mode or 1x mode. Therefore, when the MAC is in a x1 configuration, and an error occurs on the odd port, the PORT_ERR bit will be asserted in the Error and Status CSR of both the odd and even ports. The assertion of PORT_ERR in the even port's Error and Status CSR occurs independently of the state of the PORT_OK bit of the even port. Inbound or Outbound port has encountered an error from which the hardware was unable to recover (fatal error). The following fatal errors cause a PORT_ERR: • Four link-request tries with link-response, but no outstanding ackID • Four link-request tries with time-out error for link-response • Dead link timer is enabled (in the DLT_EN bit in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377) and the timer expires. Refer to “Dead Link Timer” on page 64 for more information on this feature. • The Lane Sync Timer (LST) expires for at least one lane of a port (for more information, see “Lane Sync Timer”). 30 PORT_OK Port OK Inbound and Outbound ports are initialized and can communicate with the adjacent device. This bit and bit 31, Port Un-initialized, are mutually exclusive. 31 PORT_UNINIT Port Un-initialized Inbound and Outbound ports are not initialized. This bit and bit 30, PORT_OK, are mutually exclusive. This bit is set to a 1 after reset. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 12.6.8 281 RapidIO Serial Port x Control CSR This register returns a default value when read in power down mode. This register returns 0x0000001 if it is read when the port is powered down. Register name: SP{0..15}_CTL Register offset: 15C, 17C, 19C, 1BC, 1DC, 1FC, 21C, 23C, 25C, 27C, 29C, 2BC, 2DC, 2FC, 31C, 33C Reset value: Undefined Bits 00:07 08:15 0 1 2 PORT_WIDTH PORT_DIS 3 4 5 INIT_PWIDTH OUTPUT_ EN INPUT_EN ERR_DIS 16:23 6 7 OVER_PWIDTH MCS_EN Reserved ENUM_B Reserved DROP_EN PORT_LO CKOUT PORT_TYP E Reserved 24:31 Reserved Bits Name 0:1 PORT_WIDTH STOP_FAI L_EN Description Port Width Type Reset Value R Undefined R 0 This field displays the port mode after reset. • 00 = Single-lane port (the port is 1x mode only) • 01 = Four-lane port (the port has 1x/4x mode and can operate in 1x or 4x mode) PORT_WIDTH is defined by the SPx_MODESEL pin as follows: • If the SPx_MODESEL pin is high, PORT_WIDTH for SPx is 0 and PORT_WIDTH for SPx+1 is 0. • If the SPx_MODESEL pin is low, PORT_WIDTH for SPx is 1 and PORT_WIDTH for SPx+1 is 0. However, that port SPx+1 cannot be used. 2:4 INIT_PWIDTH Initialized Port Width Current operating mode of the port. This bit is set by hardware when the initialization process is complete, and whenever the operating width of the port changes (that is, a 4x port degrades to a 1x port). • 000 = 1x port, lane 0 • 001 = 1x port, lane 2 • 010 = 4x port Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 282 12. Serial RapidIO Registers > RapidIO Physical Layer Registers (Continued) Bits Name 5:7 OVER_PWIDTH Description Override Port Width Type Reset Value R/W 0 R/W 0 R/W 1 R/W 1 Software port configuration that overrides the hardware size. This field is valid only if the PORT_WIDTH field is set to 01 and the port is operating in 4x mode. If a port that only has 1x mode functionality is placed in 4x mode, the odd numbered port becomes disabled. Can be configured as a power-up option (I2C) or forced during normal mode of operation (forced re-initialization). • 000 = No override (stay in current operation mode, either 1x or 4x) • 001 = Reserved • 010 = Force single lane, lane 0 • 011 = Force single lane, lane 2 Other values are reserved. Re-initialization occurs on the port if the value of this register is changed. Re-initialization can be forced by the FORCE_REINIT field of the “RapidIO Port x Control Independent Register” on page 319 register. Note: Initial port width of the port is set by SPx_MODESEL pins at power-up. After reset release, the SPx_MODESEL pins are ignored and configuration is controlled by this register. 8 PORT_DIS Port Disable 0 = Port receivers/drivers are enabled. 1 = Port receivers/drivers are disabled and are unable to receive/transmit to any packets or control symbols. When the port is disabled, there is no data flow to the output drivers. Transmit drivers of a disabled port transmits all zeros. Any data sent to this port sits in the Output Queue. 9 OUTPUT_EN Output Port Transmit Enable 0 = Port is stopped and is not able to issue any packets. It can only route and respond to maintenance packets. 1 = Port is enabled to issue any packets. 10 INPUT_EN Inbound Port Enable 0 = Inbound port is stopped and only routes or responds to maintenance requests. Other packets generate packet-not-accepted control symbols to force an error condition on the sending device. 1 = Inbound port responds to any packet. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Physical Layer Registers 283 (Continued) Bits Name 11 ERR_DIS Description Error Checking Disable - physical layer CRC error only Type Reset Value R/W 0 R/W 0 R 0 R/W Undefined R 0 R/W 0 R/W 0 0 = Enable error checking and recovery 1 = Disable error checking and recovery. Retransmission is suppressed for all packets. Caution: If error checking is disabled, corrupt maintenance packets may be accepted by the Tsi578. Even when error checking is disabled, a corrupt maintenance write request is ignored by the registers. If error checking is enabled, corrupt maintenance packets are not accepted. 12 MCS_EN Multicast-event Participant 0 = Do not forward incoming Multicast Event control symbols out this port. 1 = Forward incoming Multicast Event control symbols out this port 13 Reserved N/A 14 ENUM_B Enumeration boundary bit, used in system discovery algorithms. This bit does not control any functionality within the Tsi578. The reset value of this bit is 1 for port 2. For all other ports, the reset value of this bit is 0. 15:27 Reserved 28 STOP_FAIL_EN N/A Stop on Port Failed Encountered Enable This bit is used the DROP_EN bit to force the port to stop attempting to send packets to the connected device when the Error Rate Failed Threshold has been met or exceeded. For more information, see Table 39 on page 286. 29 DROP_EN Drop Packet Enable This bit is used with the STOP_FAIL_EN bit to force the output port to drop packets that are acknowledged with a packet-not-accepted control symbol when the Error Rate Failed Threshold has been met or exceeded. For more information, see Table 39 on page 286. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 284 12. Serial RapidIO Registers > RapidIO Physical Layer Registers (Continued) Bits Name 30 PORT_LOCKOUT Description Port Lockout Type Reset Value R/W 0 R 1 0 = The packets that may be received and issued are controlled by the state of the Output Port Enable and Input Port Enable bits. 1= This port is stopped and is not enabled to issue or receive any packets. The input port can still send and respond to link-requests. All received packets return packet-not-accepted control symbols to force the sending device to signal an error condition. The receipt of a packet by the locked-out port causes the assertion of the INPUT_ERR and INPUT_ERR_STOP bits in its RapidIO Port x Error and Status CSR. The link partner indicates packet rejection by asserting its OUTPUT_ERR and OUTPUT_ERR_STOP bits. Setting the PORT_LOCKOUT bit also causes the port to drop all packets arriving from the ISF for transmission, and to flush any existing packets in the transmit and receive queues of the port. Packet ackIDs are not modified in the RapidIO Serial Port x Local ackID Status CSR. 31 PORT_TYPE Port Type Indicates the port type 1 = Serial port Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7 285 RapidIO Error Management Extension Registers This section describes the registers in the Extended Features block (EF_ID = 0x0007), which is defined in Part VIII of the RapidIO specification. These registers enable an external processing element to manage the error status and reporting for a processing element. Ti Not all Error Management Extension registers are supported in the Tsi578. p These registers are reset by the HARD_RST_b reset input signal, as well as when the Tsi578 performs a self-reset. The registers within a port are also reset by a “Port Reset”. For more information on Tsi578 reset implementation and behavior, see “Clocks, Resets and Power-up Options” on page 205. It is possible to override reset values of writable fields using the I2C register loading capability on boot. Refer to “I2C Interface” on page 141 for more information on the use of I2C controller register loading capability. When an individual port is powered down, the RapidIO Error Management Extension Registers are read only and return 0. The Logical/Transport Error Detect registers are not required for a switch. However, a switch’s register bus access errors and transport errors are reported per port in bit 0 of the “RapidIO Port x Error Detect CSR” on page 294. The port’s capture registers contain error information. Software must not write to reserved addresses, and reserved bits in the RapidIO Error Management Extension registers should be written with zero. All registers are 32-bits and aligned to a 32-bit boundary Table 38: Error Management Registers Port Offset Description All 0x1000 General Error Management capability registers SP0 0x1040 1x/4x Serial port SP1 0x1080 1x Serial port SP2 0x10C0 1x/4x Serial port SP3 0x1100 1x Serial port SP4 0x1140 1x/4x Serial port SP5 0x1180 1x Serial port SP6 0x11C0 1x/4x Serial port SP7 0x1200 1x Serial port SP8 0x1240 1x/4x Serial port Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 286 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers Table 38: Error Management Registers (Continued) 12.7.1 Port Offset Description SP9 0x1280 1x Serial port SP10 0x12C0 1x/4x Serial port SP11 0x1300 1x Serial port SP12 0x1340 1x/4x Serial port SP13 0x1380 1x Serial port SP14 0x13C0 1x/4x Serial port SP15 0x1400 1x Serial port Port Behavior When Error Rate Failed Threshold is Reached When the Error Rate Counter (ERR_RATE_CNT field) reaches the enabled Error Rate Failed Threshold (ERR_RFT field), the behavior of the port depends upon the value of the STOP_FAIL_EN bit and the DROP_EN bit in the “RapidIO Port x Error and Status CSR” on page 278. The required behavior is defined in Table 39. Table 39: STOP_FAIL_EN and DROP_EN Setting Bit Setting Port Behavior STOP_FAIL_EN DROP_EN Stop on Port Failed Encountered Enable Drop Packet Enable 0 0 The port continues to attempt to transmit packets to the connected device if the Output Failed Encountered bit is set and/or if the Error Rate Failed threshold has been met or exceeded. 0 1 The port discards packets that receive a Packet-not-accepted control symbol when the Error Rate Failed Threshold has been met or exceeded. Upon discarding a packet, the port sets the Output Packet-dropped bit in the Port x Error and Status CSR. If the output port “heals”, the Error Rate Counter falls below the Error Rate Failed Threshold and the output port continues to forward all packets. 1 0 The port stops attempting to send packets to the connected device when the Output Failed Encountered bit is set. The output port becomes congested. 1 1 The port discards all output packets without attempting to send when the port’s Output Failed Encountered bit is set. Upon discarding a packet, the port sets the Output Packet-dropped bit in the “RapidIO Port x Error and Status CSR” on page 278. Caution: When both bits are set, only the stored packets in the queue are discarded. Any packets sent after are forwarded. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.2 287 RapidIO Error Reporting Block Header The error reporting block header indicates the start of the Error Management Extensions registers in the Tsi578. Register name: RIO_ERR_RPT_BH Register offset: 1000 Reset value: 0x0000_0007 Bits 0 1 2 3 4 00:07 EF_PTR 08:15 EF_PTR 16:23 EF_ID 24:31 EF_ID Bits Name 0:15 EF_PTR Description Extended Features Pointer 5 6 7 Type Reset Value R 0x0000 R 0x0007 Hard wired pointer to the next block in the data structure. 0000 = Last extended feature block 16:31 EF_ID Hard-wired Extended Features ID 0x0007 = EF ID for error management capability Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 288 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.3 RapidIO Logical and Transport Layer Error Detect CSR This register indicates the error that was detected by the Logical or Transport logic layer. Multiple bits can be set in the register if simultaneous errors are detected during the same clock cycle errors are logged. Note that for switches the errors detected are limited to maintenance packets (maintenance requests, maintenance responses, and port writes) with a hop count of 0. No other packets reach the logical layer of a switch Register name: RIO_LOG_ERR_DET Register offset:1008 Reset value: 0x0000_0000 Bits 0 1 00:07 08:15 2 3 Reserved L_ILL_RES P 4 Reserved 24:31 Reserved 0:3 Reserved 4 L_ILL_TRANS 7 Reserved Reserved 16:23 Name 6 L_ILL_TRA NS L_UNSUP_ TRANS Bits 5 Description N/A Illegal Transaction Type Reset Value R 0 R/W0C 0 R 0 R/W0C 0 R/W0C 0 R 0 Bit is set when a terminating maintenance (Type 8, hopcount = 0) request transaction was received with one or more of the following conditions: • TTYPE = 0b0101 - 0b1111 • TT code = 0b11/0b10 5:7 Reserved 8 L_ILL_RESP N/A Illegal Response A maintenance response was received with a hop count of 0. 9 L_UNSUP_TRANS Unsupported Transaction A port-write transaction was received with a hop count of 0. 10:31 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.4 289 RapidIO Logical and Transport Layer Error Enable CSR This register contains the bits that control if an error condition locks the Logical/Transport Layer Error Detect and Capture registers, and is reported to the system host through an interrupt and/or a port-write. For switches, the errors detected are limited to maintenance packets (maintenance requests, maintenance responses, and port writes) with a hop count of 0. Once enabled, port-writes and interrupts can be generated for these sources. No other packets reach the logical layer of a switch. Register name: RIO_LOG_ERR_DET_EN Register offset:100C Reset value: 0x0000_0000 Bits 0 1 00:07 08:15 2 3 4 Reserved ILL_RESP_ EN ILL_TRANS _EN UNSUP_T RANS_EN Reserved 24:31 Reserved Name 0:3 Reserved 4 ILL_TRANS_EN 6 7 Reserved Reserved 16:23 Bits 5 Descriptiona N/A Illegal Transaction Decode Enable Type Reset Value R 0 R/W 0 R 0 R/W 0 R/W 0 R 0 0 = disable L_ILL_TRANS 1 = enable L_ILL_TRANS 5:7 Reserved 8 ILL_RESP_EN N/A Illegal Response Enable 0 = disable L_ILL_RESP 1 = enable L_ILL_RESP 9 UNSUP_TRANS_E N Unsupported Transaction Enable 0 = disable L_UNSUP_TRANS 1 = enable L_UNSUP_TRANS 10:31 Reserved N/A a. All bits in this register enable bits in “RapidIO Logical and Transport Layer Error Detect CSR” on page 288. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 290 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.5 RapidIO Logical and Transport Layer Address Capture CSR This register contains error information. It is locked when a Logical/Transport error is detected and the corresponding enable bit is set. For switches, the errors detected are limited to maintenance packets (maintenance requests, maintenance responses, and port writes) with a hop count of 0. No other packets reach the logical layer of a switch. Therefore, the only time this register contains valid information is for maintenance requests which have incorrect field values. Only invalid data can be captured in this register for erroneous port-writes and maintenance responses, as these transactions reserve the address field. If the TT code for an erroneous maintenance request is invalid, this register captures the address of the invalid data. Refer to “RapidIO Logical and Transport Layer Device ID Capture CSR” on page 291 for the source ID where the error originated. Note that this register is not updated when a correctly formatted maintenance request fails. Register name: RIO_LOG_ERR_ADDR Register offset:1014 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 ADDRESS 16:23 ADDRESS 24:31 ADDRESS Bits Name 0:7 Reserved N/A 8:28 ADDRESS Address of the illegal maintenance request received. 29 Reserved N/A 30 WDPTR 31 Reserved Tsi578 User Manual June 6, 2016 5 6 7 Reserved WDPTR Reserved Description Word pointer from the illegal maintenance request received N/A Type Reset Value R 0 R/W 0 R 0 R/W 0 R 0 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.6 291 RapidIO Logical and Transport Layer Device ID Capture CSR This register contains error information, specifically the device ID field values for failed transactions. It is locked when a Logical/Transport error is detected and the corresponding enable bit is set. When the TT field of the erroneous message is not a defined value, the contents of this register are bytes 3 and 4 of the packet received. For switches, the errors detected are limited to maintenance packets (maintenance requests, maintenance responses, and port writes) with a hop count of 0. No other packets can reach the logical layer of a switch. Note that this register is not updated when a correctly formatted maintenance request fails. Register name: RIO_LOG_ERR_DEVID Register offset:1018 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 SRCID_MSB 24:31 SRCID Bits Name 0:15 Reserved 16:23 SRCID_MSB 5 Description N/A Source ID Most Significant Byte 6 7 Type Reset Value R 0 R/W 0 R/W 0 Most significant byte of the source ID associated with the error (large transport systems only) 24:31 SRCID Source ID The sourceID associated with the error. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 292 12.7.7 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers RapidIO Logical and Transport Layer Control Capture CSR This register contains error information, specifically the message type and subtype field values for failed transactions. It is locked when a Logical/Transport error is detected and the corresponding enable bit is set. The Ftype value should always be eight for a maintenance packet. The TTYPE value always reflects the four bits following the FTYPE field in the packet. Note that for switches, the errors detected are limited to maintenance packets (maintenance requests, maintenance responses, and port writes) with a hop count of 0. No other packets reach the logical layer of a switch. Note that this register is not updated when a correctly formatted maintenance request fails. Register name: RIO_LOG_ERR_CTRL_INFO Register offset:101C Reset value: 0x0000_0000 Bits 0 1 00:07 2 3 4 FTYPE Reserved 16:23 Reserved 24:31 Reserved Name 0:3 FTYPE 4:7 TTYPE 8:31 Reserved 6 7 TTYPE 08:15 Bits 5 Type Reset Value Format type associated with the error R/W 0 Transaction type associated with the error R/W 0 R 0 Description N/A A value of 0x00000000 must be written to this register to clear it. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.8 293 RapidIO Port-Write Target Device ID CSR This register contains the target device ID to be used when the switch generates a maintenance port-write operation to report errors to a system host. Port-write packets are routed to the output port defined by the routing LUT of the switch. Register name: RIO_PW_DESTID Register offset: 1028 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 DESTID_MSB 08:15 DESTID_LSB 16:23 LARGE_ DESTID 5 6 7 Reserved 24:31 Reserved Bits Name 0:7 DESTID_MSB Description Most Significant Byte of port-write Target Device ID. Type Reset Value R/W 0 R/W 0 R/W 0 R 0 This field is used only when LARGE_DESTID is 1. 8:15 DESTID_LSB If LARGE_DESTID is 0, the DESTID_LSB field is the 8-bit DESTID used in locally-generated port-write requests. If LARGE_DESTID is 1, the DESTID_LSB field forms the least significant bits of a 16-bit DestID used in locally-generated port-write requests. 16 LARGE_DESTID 0 = Port-write transactions are generated with an 8-bit destination ID. 1 = Port-write transactions are generated with a 16-bit destination ID. 17:31 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 294 12.7.9 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers RapidIO Port x Error Detect CSR This register indicates transmission errors that are detected by the hardware. Each write of a non-zero value to the Port x Error Detect CSR causes the Error Rate Counter to increment, if the corresponding error bit is enabled in the “RapidIO Port x Error Rate Enable CSR” on page 297. When the threshold is reached, hardware informs the system software of the error using its standard error reporting function. After the error has been reported, the system software can read and clear registers as necessary to complete its error handling protocol testing. Register name: SP{0..15}_ERR_DET Register offset: 1040, 1080, 10C0, 1100, 1140, 1180, 11C0, 1200, 1240, 1280, 12C0, 1300, 1340, 1380, 13C0, 1400 Reset value: 0x0000_0000 Bits 0 1 00:07 IMP_SPEC _ERR 08:15 Reserved 2 4 5 6 7 PKT_CRC_ ERR PKT_ILL_ SIZE Reserved DELIN_ ERR CS_ACK_ ILL LINK_TO Reserved CS_CRC_E RR CS_ILL_ID 16:23 24:31 3 CS_NOT_A CC PKT_ILL_A CKID Reserved Reserved Tsi578 User Manual June 6, 2016 LR_ACKID _ILL PROT_ ERR Reserved Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers Bits Name 0 IMP_SPEC_ERR 295 Type Reset Value R/W0C 0 R 0 Received a control symbol with a CRC error. R/W0C 0 Received an acknowledge control symbol with an unexpected ackID (packet-accepted or packet_retry). R/W0C 0 Received packet-not-accepted control symbol. R/W0C 0 Description Implementation Specific Error Detected Logical/Transport error per port. This bit indicates one or more of the following illegal field errors: • Reserved transport type (TT) detected (TT field = 10 or 11 for all but maintenance packets with hop count = 0) • Maximum retry threshold exceeded • Unmapped destination ID error • Parity Error in Lookup Table • ISF TEA error • Multicast TEA error • Port error Note: Clearing all the bits in this register also clears the following interrupt status bits in the “RapidIO Port x Interrupt Status Register” on page 326: • MAX_RETRY • TEA • MC_TEA • LUT_PAR_ERR • ILL_TRANS_ERR Caution: The Error Capture register information is only valid for Reserved Transport Type Detected errors and Unmapped DestID errors. For the Max Retry errors the information latched is the last packet received, not the packet that was retried. For more information on error capture, see “RapidIO Port x Error Capture Attributes CSR and Debug 0” on page 299. 1:8 Reserved 9 CS_CRC_ERR 10 CS_ILL_ID N/A The Capture register does not have valid information during this error detection. 11 CS_NOT_ACC 12 PKT_ILL_ACKID Received packet with unexpected ackID. R/W0C 0 13 PKT_CRC_ERR Received a packet with a CRC error. R/W0C 0 14 PKT_ILL_SIZE Received packet exceeds 276 bytes. R/W0C 0 15:25 Reserved R 0 Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 296 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers (Continued) Bits Name 26 LR_ACKID_ILL Type Reset Value R/W0C 0 R/W0C 0 R 0 R/W0C 0 Received an unexpected acknowledge control symbol R/W0C 0 An acknowledge or Link-response is not received within the specified timeout interval (see “RapidIO Switch Port Link Timeout Control CSR” on page 271 register). R/W0C 0 Description Link response received with an ackID that is not outstanding. The Capture register does not have valid information during this error detection. During a recovery attempt by the Tsi578, it issued a link request control symbol to its link partner in order to attempt to clear the outstanding port error states. The link response it got back is supposed to contain the ACK_ID that the link partner is expecting in the next new packet it receives. The Tsi578 is indicating that it has already sent a packet with that ACK_ID and has received a packet accepted control symbol for it, and has moved to the next ACK_ID value. This value can be found in the “RapidIO Serial Port x Local ackID Status CSR” on page 276. Therefore, an ACK_ID mismatch has occurred and until the ACK_IDs are re-aligned, no packet transfers take place. 27 PROT_ERR Protocol Error Received control symbol is unexpected. 28 Reserved 29 DELIN_ERR N/A Delineation Error Received unaligned /SC/ or /PD/, or undefined code-group. The Capture register does not capture information for this error. 30 CS_ACK_ILL 31 LINK_TO The Capture register does not capture information for this error. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.10 297 RapidIO Port x Error Rate Enable CSR This register contains the bits that control when an error condition is allowed to increment the error rate counter. and be captured in the error capture register. Each write of a non-zero value to the “RapidIO Port x Error Detect CSR” on page 294 causes the Error Rate Counter to increment, if the corresponding error bit is enabled in the Port x Error Rate Enable CSR. When the threshold is reached, hardware informs the system software of the error using its standard error reporting function. After the error has been reported, the system software can read and clear registers as necessary to complete its error handling protocol testing. Register name: SP{0..15}_RATE_EN Register offset: 1044, 1084, 10C4, 1104, 1144, 1184, 11C4, 1204, 1244, 1284, 12C4, 1304, 1344, 1384, 13C4, 1404 Reset value: 0x0000_0000 Bits 0 1 00:07 IMP_SPEC _ERR 08:15 Reserved 2 3 5 6 7 PKT_CRC_ ERR_EN PKT_ILL_S IZE_EN Reserved DELIN_ ERR_EN CS_ACK_ ILL_EN LINK_TO_E N Reserved CS_CRC_E RR_EN CS_ILL_ID _EN CS_NOT_A CC_EN 16:23 24:31 4 PKT_ILL_A CKID_EN Reserved Reserved Bits Name 0 IMP_SPEC_ERR LR_ ACKID_ ILL_EN PROT_ ERR_EN Reserved Description Logical /Transport Error Enable Type Reset Value R/W 0 R 0 R/W 0 R/W 0 Enable error rate counting of implementation specific errors. See the “RapidIO Port x Error Detect CSR” on page 294 for a description of the errors applicable to this field. Caution: The Error Capture register information is only valid for Reserved Transport Type Detected errors and Unmapped DestID errors. For the Max Retry errors the information latched is the last packet received, not the packet that was retried. For more information on error capture, see “RapidIO Port x Error Capture Attributes CSR and Debug 0” on page 299. 1:8 Reserved 9 CS_CRC_ERR_ EN Enable error rate counting. CS_ILL_ID_EN Enable error rate counting. 10 N/A Received Control Symbol with a CRC error. Received an acknowledge control symbol with an unexpected ackID (packet-accepted or packet_retry). Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 298 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers (Continued) Bits Name 11 CS_NOT_ACC_ EN Enable error rate counting. PKT_ILL_ACKID_ EN Enable error rate counting. PKT_CRC_ERR_E N Enable error rate counting. PKT_ILL_SIZE_ EN Enable error rate counting. 12 13 14 Description Reset Value R/W 0 R/W 0 R/W 0 R/W 0 R 0 R/W 0 R/W 0 R 0 R/W 0 R/W 0 R/W 0 Received packet-not-accepted control symbol. Received packet with unexpected ackID. Received packet with a CRC error. Received packet exceeds 276 bytes. 15:25 Reserved 26 LR_ACKID_ILL_ EN Enable error rate counting. PROT_ERR_EN Enable error rate counting. 27 Type N/A A received Link Response control symbol contains an ackID that is not outstanding. Protocol Error. Received Control Symbol is unexpected. 28 Reserved 29 DELIN_ERR_EN N/A Enable error rate counting Delineation Error Received unaligned /SC/or/PD/ or undefined code-group. 30 CS_ACK_ILL_EN Enable error rate counting An unexpected acknowledge control symbol was received. 31 LINK_TO_EN Enable error rate counting An acknowledge or Link-response is not received within the specified time-out interval. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.11 299 RapidIO Port x Error Capture Attributes CSR and Debug 0 This register indicates the type of information contained in the Port x Error Capture registers. In the case of multiple detected errors during the same clock cycle, only one of the errors must be reflected in the error type (ERR_TYPE) field. When VAL_CAPT is set, the fields (except VAL_CAPT) are read-only. In debug mode this register is unlocked and all its fields are used for writing the content of the debug packet. Register name: SP{0..15}_ERR_ATTR_CAPT_DBG0 Register offset: 1048, 1088, 10C8, 1108, 1148, 1188, 11C8, 1208, 1248, 1288, 12C8, 1308, 1348, 1388, 13C8, 1408 Reset value: 0x0000_0000 Bits 00:07 0 1 2 INFO_TYPE 3 4 Reserved 6 7 ERR_TYPE 08:15 Reserved 16:23 Reserved 24:31 5 Reserved Bits Name 0:1 INFO_TYPE Description Type of information logged. VAL_CAPT Type Reset Value R/W 0 R 0 R/W 0 R 0 R/W0C 0 • 00 = Packet • 01 = Control Symbol and unaligned /SC/or/PD/ or undefined code-group • 10 = Implementation specific (capture register contents are implementation specific to report implementation specific errors) • 11 = Reserved for serial port 2 Reserved 3:7 ERR_TYPE N/A Error Type Encoded 5-bit value of captured error bit in the “RapidIO Port x Error Detect CSR” on page 294. For detailed information on the ERR_TYPE values, refer to Table 40 on page 300. When an ERR_TYPE is reported, only specific errors cause the capture registers to capture valid data. 8:30 Reserved 31 VAL_CAPT N/A Capture Valid Information This bit is set by hardware to indicate that the packet/control symbol capture registers contain valid information. For control symbols, only capture register 0 contains meaningful information. Software writes 0 to clear this bit and unlock all capture registers of port x. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 300 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers Table 40: ERR_TYPE Values ERR_TYPE Value Name Error Description Valid Data Capture 00000 Bit 0 = IMP_SPEC_ERR Reserved Transport Type Yes Max Retry Error Occurred Yes Unmapped DestID Error Yes Parity Error in Lookup Table Yes ISF TEA Error No Multicast TEA Error No Port Error No 00001-to-00111 Bit 1:8 = Reserved - - 01000 Bit 9 = CS_CRC_ERR Control Symbol CRC Error Yes 01001 Bit 10 = CS_ILL_ID Control Symbol Illegal ID Yes 01011 Bit 11 = CS_NOT_ACC Control Symbol Not Accepted Yes 01011 Bit 12 = PKT_ILL_ACKID Packet Illegal AckID Yes 01011 Bit 13 = PKT_ILL_SIZE Packet Illegal Size Yes 0110-to-11001 Bit 14:25 = Reserved - - 11010 Bit 26 = LR_ACKID_IL Link Response Received with an Illegal AckID No 11011 Bit 27 = PROT_ERR Protocol Error Yes 11100 Bit 28 = Reserved - - 11101 Bit 29 = DELIN_ERR Delineation Error No 11110 Bit 30 = CS_ACKID_ILL Control Symbol Illegal AckID Yes 11111 Bit 31 = LINK_TO Link Timeout No Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.12 301 RapidIO Port x Packet and Control Symbol Error Capture CSR 0 and Debug 1 In debug mode this register is unlocked. It contains bytes 4 to 7 of the debug packet being composed. During normal operation, this register captures bytes 0 to 3 of the packet, or the entire control symbol, that was detected to be in error. To assist in software testing and debug of the system error recovery and threshold function, the “RapidIO Port x Error Detect CSR” on page 294 and the Port x Error Capture registers are also writable. Software must clear the Capture Valid Info (VAL_CAPT) bit in the “RapidIO Port x Error Capture Attributes CSR and Debug 0” on page 299, then write the packet/control symbol information to the other capture registers. Register name: SP{0..15}_ERR_CAPT_0_DBG1 Register offset: 104C, 108C, 10CC, 110C, 114C, 118C, 11CC, 120C, 124C, 128C, 12CC, 130C, 134C, 138C, 13CC, 140C Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CAPT_0[0:7] 8:15 CAPT_0[8:15] 16:23 CAPT_0[16:23] 24:31 CAPT_0[24:31] 5 6 7 Bits Name Description Type Reset Value 0:31 CAPT_0 Character and control symbol or bytes 0 to 3 of packet header. R/W 0 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 302 12.7.13 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers RapidIO Port x Packet Error Capture CSR 1 and Debug 2 Register name: SP{0..15}_ERR_CAPT_1_DBG2 Register offset: 1050, 1090, 10D0, 1110, 1150, 1190, 11D0, 1210, 1250, 1290, 12D0, 1310, 1350, 1390, 13D0, 1410 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CAPT_1[0:7] 8:15 CAPT_1[8:15] 16:23 CAPT_1[16:23] 24:31 CAPT_1[24:31] Bits Name 0:31 CAPT_1 12.7.14 Description Bytes 4 to 7 of the packet 6 7 Type Reset Value R/W 0 RapidIO Port x Packet Error Capture CSR 2 and Debug 3 Register name: SP{0..15}_ERR_CAPT_2_DBG3 Register offset: 1054, 1094, 10D4, 1114, 1154, 1194, 11D4, 1214, 1254, 1294, 12D4, 1314, 1354, 1394, 13D4, 1414 Reset value: 0x0000_0000 Bits 5 0 1 2 3 4 0:7 CAPT_2[0:7] 8:15 CAPT_2[8:15] 16:23 CAPT_2[16:23] 24:31 CAPT_2[24:31] Bits Name 0:31 CAPT_2 Tsi578 User Manual June 6, 2016 Description Byte 8 to 11 of the packet 5 6 7 Type Reset Value R/W 0 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 12.7.15 RapidIO Port x Packet Error Capture CSR 3 and Debug 4 Register name: SP{0..15}_ERR_CAPT_3_DBG4 Register offset: 1058, 1098, 10D8, 1118, 1158, 1198, 11D8, 1218, 1258, 1298, 12D8, 1318, 1358, 1398, 13D8, 1418 Reset value: 0x0000_0000 Bits 303 0 1 2 3 4 0:7 CAPT_3[0:7] 8:15 CAPT_3[8:15] 16:23 CAPT_3[16:23] 24:31 CAPT_3[24:31] 5 6 7 Reset Bits Name 0:31 CAPT_3 Integrated Device Technology www.idt.com Description Byte 12 to 15 of the packet Type Value R/W 0 Tsi578 User Manual June 6, 2016 304 12.7.16 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers RapidIO Port x Error Rate CSR This register and the “RapidIO Port x Error Rate Threshold CSR” on page 306 are used to monitor and control the reporting of transmission errors. Register name: SP{0..15}_ERR_RATE Register offset: 1068, 10A8, 10E8, 1128, 1168, 11A8, 11E8, 1228, 1268, 12A8, 12E8, 1328, 1368, 13A8, 13E8, 1428 Reset value: 0x8000_0000 Bits 0 1 2 3 00:07 4 5 6 7 ERR_RB 08:15 Reserved ERR_RR 16:23 PEAK 24:31 ERR_RATE_CNT Bits Name 0:7 ERR_RB Description The Error Rate Bias value. Type Reset Value R/W 0x80 R 0 R/W 0 R/W 0 Register bus frequency - 100 MHz • 00 = Do not decrement error rate counter • 01 = Decrement every 1.31ms • 02 = Decrement every 10.48ms • 04 = Decrement every 83.88ms • 08 = Decrement every 1.342s • 10 = Decrement every 10.74s • 20 = Decrement every 86s • 40 = Decrement every 1374s • 80 = Decrement every 10995s • FF - Decrement every 1.28us (Debug only) Other values are reserved. 8:13 Reserved 14:15 ERR_RR N/A Error Rate Recovery This field defines how far above the Error Rate Failed Threshold Trigger the Error Rate Counter is allowed to count. • 00 = 2 errors above • 01 = 4 errors above • 10 = 16 errors above • 11 = No limit 16:23 PEAK Tsi578 User Manual June 6, 2016 The maximum value attained by the error rate counter. This value increments with ERR_RATE_CNT, but does not decrement except through a host controlled register write. Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers 305 (Continued) Bits Name 24:31 ERR_ RATE_ CNT Description Error Rate Counter Type Reset Value R/W 0 These bits maintain a count of the number of transmission errors that have been detected by the port. This number is decremented by the Error Rate Bias function. The counter cannot over or underflow and continue to increment or decrement as defined, even if thresholds are met. Software can reset this counter. If the value of the counter equals the error rate threshold trigger register, an error is reported. For more information see the RapidIO Interconnect Specification (Revision 1.3), Part 8: Error Management Extensions Specification. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 306 12.7.17 12. Serial RapidIO Registers > RapidIO Error Management Extension Registers RapidIO Port x Error Rate Threshold CSR This register and the “RapidIO Port x Error Rate CSR” on page 304 are used to monitor and control the reporting of transmission errors. Register name: SP{0..15}_ERR_THRESH Register offset: 106C, 10AC, 10EC, 112C, 116C, 11AC, 11EC, 122C, 126C, 12AC, 12EC, 132C, 136C, 13AC, 13EC, 142C Reset value: 0xFFFF_0000 Bits 0 1 2 3 4 00:07 ERR_RFT 08:15 ERR_RDT 16:23 Reserved 24:31 Reserved Bits Name 0:7 ERR_RFT 5 Description Error Rate Failed Threshold 6 7 Type Reset Value R/W 0xFF R/W 0xFF R 0 These bits provide the threshold value for reporting an error condition due to a possibly broken link. • 00 = Disable the error rate failed register • 01 = Set the error reporting threshold to 1 • 02 = Set the error reporting threshold to 2 • ... • FF - Set the error reporting threshold to 255 8:15 ERR_RDT Error Rate Degraded Threshold These bits provide the threshold value for reporting an error condition due to a degrading link. • 00 = Disable the error rate degraded register • 01 = Set the error reporting threshold to 1 • 02 = Set the error reporting threshold to 2 • ... • FF - Set the error reporting threshold to 255 16:31 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8 307 IDT-Specific RapidIO Registers The registers in this section are specific to IDT’s switching products. The following table shows IDT-specific RapidIO Registers that are not defined in the RapidIO Interconnect Specification (Revision 1.3). When a individual port is powered down, the IDT-Specific RapidIO Registers are read only and return 0 with the exception of “RapidIO Port x Error and Status CSR” on page 278 and “RapidIO Serial Port x Control CSR” on page 281, both of which return 0x00000001 when read. These registers are reset by the HARD_RST_b reset input signal, as well as when the Tsi578 performs a self-reset. The registers within a port are also reset by a “Port Reset”. For more information on Tsi578 reset implementation and behavior, see “Clocks, Resets and Power-up Options” on page 205. It is possible to override reset values of writable fields, and some read-only fields, using the I2C register loading capability on boot. Refer to “I2C Interface” on page 141 for more information on the use of I2C controller register loading capability. Table 41: IDT-Specific Broadcast RapidIO Registers Port Register Offset Description BC 10000 Broadcast addresses, which affect register copies in all the ports. SP0 11000 1x/4x mode serial port SP1 11100 1x mode serial port SP2 11200 1x/4x mode serial port SP3 11300 1x mode serial port SP4 11400 1x/4x mode serial port SP5 11500 1x mode serial port SP6 11600 1x/4x mode serial port SP7 11700 1x mode serial port SP8 11800 1x/4x Serial port SP9 11900 1x Serial port SP10 11A00 1x/4x Serial port SP11 11B00 1x Serial port SP12 11C00 1x/4x Serial port SP13 11D00 1x Serial port Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 308 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers Table 41: IDT-Specific Broadcast RapidIO Registers (Continued) Port Register Offset Description SP14 11E00 1x/4x Serial port SP15 11F00 1x Serial port Non-Broadcast Per-Port Registers The following table shows the IDT-specific per-port registers not defined by the RapidIO Interconnect Specification (Revision 1.3). It is not possible to broadcast to these registers. Table 42: IDT-Specific Per-Port Performance Registers Tsi578 User Manual June 6, 2016 Port Register Offset Description SP0 13000 1x/4x mode serial port SP1 13100 1x mode serial port SP2 13200 1x/4x mode serial port SP3 13300 1x mode serial port SP4 13400 1x/4x mode serial port SP5 13500 1x mode serial port SP6 13600 1x/4x mode serial port SP7 13700 1x mode serial port SP8 13800 1x/4x Serial port SP9 13900 1x Serial port SP10 13A00 1x/4x Serial port SP11 13B00 1x Serial port SP12 13C00 1x/4x Serial port SP13 13D00 1x Serial port SP14 13E00 1x/4x Serial port SP15 13F00 1x Serial port Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.1 309 RapidIO Port x Discovery Timer This register defines discovery-timer value for the serial ports in 4x mode.. Register name: SP{BC,0..15}_DISCOVERY_TIMER Register offset: 10000, 11000, 11100, 11200, 11300, 11400, 11500, 11600, 11700, 11800, 11900, 11A00, 11B00, 11C00, 11D00, 11E00, 11F00 Reset value: 0x90C0_0000 Bits 0 00:07 08:15 1 2 3 4 5 DISCOVERY_TIMER Reserved 16:23 Reserved 24:31 Reserved Name 0:3 DISCOVERY_ TIMER 7 Reserved PW_PRIORITY Bits 6 Description Discovery Timer Type Reset Value R/W 9 R 0 R/W 11 R 0 This field is used by serial ports configured to operate in 4x mode. The discovery-timer allows time for the link partner to enter its discovery state, and if the link partner supports 4x mode, for all four lanes to be aligned. The discovery timer has a value of 11.79 ms, with the P_CLK set to 100 MHz • 0: 320 • {1:15}: DISCOVERY_TIMER (decimal) * 1179639 * 1/ P_CLK = actual time Note: Refer to “P_CLK Programming” on page 493 for more information on programming the P_CLK operating frequency. 4:7 Reserved 8:9 PW_PRIORITY N/A Port-write packet priority This field sets the priority of a port-write packet. The priority can be set from 0 to 3 00 = priority 0 01 = priority 1 10 = priority 2 11 = priority 3 10:31 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 310 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.2 RapidIO Port x Mode CSR This register defines the mode of operation for the ports, and contains the interrupt enables for the Multicast-Event control symbol and Reset control symbol. Register name: SP{BC,0..15}_MODE Register offset: 10004, 11004, 11104, 11204, 11304, 11404, 11504, 11604, 11704, 11804, 11904, 11A04, 11B04, 11C04, 11D04, 11E04, 11F04 Reset value: 0x0300_0000 Bits 00:07 0 1 Reserved 2 3 4 5 6 7 IDLE_ERR _DIS Reserved PW_DIS Reserved SELF_RST LUT_512 MCS_INT_ EN RCS_ INT_EN Type Reset Value R 0 R/W 0 R 0 R/W 0 R 0 R/W 1 08:15 Reserved 16:23 Reserved 24:31 Reserved Bits Name 0:1 Reserved 2 IDLE_ERR_DIS Description N/A Idle Error Checking Disable 0 = Error checking is enabled by default if one or more data characters are sent (Dx.y characters not delimited with start of packet/end of packet control symbols) in an idle sequence, the device enters the Input Error stopped state. 1 = Ignore all not idle or invalid characters in the idle sequence. 3 Reserved N/A 4 PW_DIS Port_Write Disable 0 = Port-write Error reporting is enabled (default) 1 = Port-write is disabled 5 Reserved 6 SELF_RST N/A Self Reset Enable After four link-request reset control symbols are accepted, the device either resets itself or raises an interrupt, according to the value in this register field. 0 = Disabled. Interrupt signal is asserted (if RCS_INT_EN is also asserted) 1 = Enabled. Device is reset Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 311 (Continued) Bits Name 7 LUT_512 Description LUT_512 Type Reset Value R/W 1 R 0 R/W 0 R/W 0 Sets the mode of the destination ID lookup table 0 = Global LUT (64K destination IDs, assigned with resolution of 256 destination IDs) 1 = One 512-entry local LUT 8:29 Reserved 30 MCS_INT_EN N/A Multicast-Event Control Symbol Interrupt Enable 0 = Disabled 1 = Enabled. The interrupt signal is high when the multicast-event control symbol is received. 31 RCS_INT_EN Reset Control Symbol Interrupt Enable 0 = Disabled 1 = Enabled. The interrupt signal is High when four reset control symbols are received in a sequence. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 312 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.3 RapidIO Port x Multicast-Event Control Symbol and Reset Control Symbol Interrupt CSR This register contains the interrupt status for Multicast-Event control symbols and Reset control symbols. Register name: SP{BC,0..15}_CS_INT_STATUS Register offset: 10008, 11008, 11108, 11208, 11308, 11408, 11508, 11608, 11708, 11808, 11908, 11A08, 11B08, 11C08, 11D08, 11E08, 11F08 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 5 Reserved Bits Name 0:29 Reserved 30 MCS Description N/A Multicast Event Control Symbol Interrupt Status 6 7 MCS RCS Type Reset Value R 0 R/W1C 0 R/W1C 0 Indicates whether a multicast event control symbol has been received on the port. Reading the MCS field using the BC offset gives the value of Port 0. All MCS interrupts from ports are ORed together. The “Global Interrupt Status Register” on page 388 shows the status of the combined MCS interrupts from all ports. Write 1 to clear this bit. Writing 1 to this bit clears the interrupt on all the ports when using the BC offset. 31 RCS Reset Control Symbol Received Interrupt Status Indicates that four consecutive Reset control symbols have been received on the port. Reading the RCS field using the BC offset gives the value of Port 0. All RST interrupts from ports are ORed together. The “Global Interrupt Status Register” on page 388 register shows the status of the combined RCS from all ports. Write 1 to clear this bit. Writing 1 to this bit clears the interrupt on all the ports. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.4 313 RapidIO Port x RapidIO Watermarks This register controls ingress buffer allocation for reception of packets for each port (see “Egress Watermark” on page 95). Register name: SP{BC,0..15}_RIO_WM Register offset: 1000C, 1100C, 1110C, 1120C, 1130C, 1140C, 1150C, 1160C, 1170C, 1180C, 1190C, 11A0C, 11B0C, 11C0C, 11D0C, 11E0C, 11F0C Reset value: 0x0001_0203 Bits 0 1 2 00:7 3 4 5 6 7 Reserved 8:15 Reserved PRIO2WM 16:23 Reserved PRIO1WM 24:31 Reserved PRIO0WM Bits Name Description 0:12 Reserved N/A 13:15 PRIO2WM Priority 2 packets are accepted if the number of free buffer is greater than this value. This value must be smaller than PRIO1WM. Type Reset Value R 0 R/W 1 R 0 R/W 2 R 0 R/W 3 Note: It is a programming error for this value to be either greater than or equal to PRIO1WM or PRIO0WM, or greater than 7. 16:20 Reserved N/A 21:23 PRIO1WM Priority 1 packets are accepted if the number of free buffer is greater than this value. This value must be smaller than PRIO0WM. Note: It is a programming error for this value to be either greater than or equal to PRIO0WM, or greater than 7. 24:28 Reserved N/A 29:31 PRIO0WM Priority 0 packets are accepted if the number of free buffer is greater than this value. Note: It is a programming error for this value to be greater than 7. This register must be programmed after reset and not when transactions are in progress. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 314 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.5 RapidIO Port x Route Config DestID CSR This register and SPx_ROUTE_CFG_PORT operate together to provide indirect read and write access to the LUTs. The registers are identical to RIO_ROUTE_CFG_DESTID and RIO_ROUTE_CFG_PORT, except the “RapidIO Port x Route Config Output Port CSR” on page 315 are per-port registers and they include an auto-increment bit to increment the contents of the destination ID register after a read or write operation. Register name: SP{BC,0..15}_ROUTE_CFG_DESTID Register offset: 10070, 11070, 11170, 11270, 11370, 11470, 11570, 11670, 11770, 11870, 11970, 11A70, 11B70, 11C70, 11D70, 11E70, 11F70 Reset value: 0x0000_0000 Bits 0 1 00:07 AUTO_INC PAR_INVE RT 2 3 4 5 6 7 Reserved 08:15 Reserved 16:23 LRG_CFG_DEST_ID[0:7] 24:31 CFG_DEST_ID[8:15] Bits Name Description Type Reset Value 0 AUTO_INC Automatically post-increment the destination ID when the destination ID is used to perform either a read or a write, through the “RapidIO Port x Route Config Output Port CSR” on page 315. R/W 0 1 PAR_INVERT Parity Invert R/W 0 R 0 This bit is for testing of interrupt and/or demerit software systems. 0 = Normal operation 1 = Invert the parity bit for each LUT entry written (but not read). This causes a parity error when the LUT entry is used to route a packet. 2:15 Reserved N/A 16:23 LRG_CFG_D EST_ID This field specifies the most significant byte of the destination ID used to select an entry in the LUT, when the “RapidIO Port x Route Config Output Port CSR” on page 315 is read or written. R/W 0x00 24:31 CFG_DEST_ ID Specifies the destination ID used to select an entry in the LUT when the RIO_ROUTE_CFG_PORT register is read or written. R/W 0x00 This value increments by one for every write to the “RapidIO Port x Route Config Output Port CSR” on page 315 when the AUTO_INC bit is set Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.6 315 RapidIO Port x Route Config Output Port CSR This register and SPx_ROUTE_CFG_DESTID operate together to provide indirect read and write access to the LUTs. The registers are identical to RIO_ROUTE_CFG_DESTID and RIO_ROUTE_CFG_PORT, except the RIO_ROUTE_CFG_PORT are per-port registers and they include an auto-increment bit to increment the contents of the destination ID register after a read or write operation. Register name: SP{BC,0..15}_ROUTE_CFG_PORT Register offset: 10074, 11074, 11174, 11274, 11374, 11474, 11574, 11674, 11774, 11874, 11974, 11A74, 11B74, 11C74, 11D74, 11E74, 11F74 Reset value: Undefined Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 PORT Bits Name 0:23 Reserved 24:31 PORT 5 Description N/A This is the RapidIO output port through which all transactions meant for CFG_DEST_ID are sent. 6 7 Type Reset Value R 0 R/W Undefined Writing a value greater or equal to PORT_TOTAL field in the “RapidIO Switch Port Information CAR” on page 252 sets the LUT entry to an unmapped state. For future compatibility, write the value 0xFF to indicate an unmapped destination ID. When reading an unmapped value from the LUT, this field is set to 0xFF. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 316 12.8.7 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers RapidIO Port x Local Routing LUT Base CSR This register is required for switch devices that operate in a large system. For small systems, this register is ignored. The serial port supports local and global routing LUT pages. The number of entries is defined by the “RapidIO Route LUT Size CAR” on page 256 Register name: SP{BC,0..15}_ROUTE_BASE Register offset: 10078, 11078, 11178, 11278, 11378, 11478, 11578, 11678, 11778, 11878, 11978, 11A78, 11B78, 11C78, 11D78, 11E78, 11F78 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 BASE 08:15 Reserved 16:23 Reserved 24:31 Reserved 5 6 7 Bits Name Description Type Reset Value 0:7 BASE This value represents the most significant byte of a destination ID. If the most significant upper 8 bits of an incoming 16-bit destination ID match this field, the least significant bits of the destination ID is used to index the local LUT. Otherwise, the most significant 8 bits of the destination ID is used to index the global LUT. R/W 0 R 0 Refer to “Lookup Tables” on page 37 for more information. 8:31 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.8 317 RapidIO Multicast Write ID x Register This register contains the Multicast ID, which is associated to the multicast mask registers. The switch supports eight multicast groups and the Multicast ID registers for each multicast group must contain unique values. These registers are implemented globally, and are visible from every ingress port. Register name: RIO_MC_ID{0..7} Register offset: 10300, 10304, 10308, 1030C, 10310, 10314, 10318, 1031C Reset value: 0x0000_0000 Bits 0 1 00:7 MC_EN LARGE_ SYS 2 3 4 Reserved 16:23 MC_ID[15:8] 24:31 MC_ID[7:0] Name 0 MC_EN 6 7 Reserved 8:15 Bits 5 Description Multicast can be disabled by setting this bit. Type Reset Value R/W 0 R/W 0 R 0 R/W 0x0000 0 = Disabled 1 = Enabled 1 LARGE_ SYS This field defines multicast destination ID (MC_ID) in the Large or Small system. The MC_ID of Small system is not a subset of MC_ID of Large system, but both systems can co-exist together. 0 = Small system 1 = Large system 2:15 Reserved 16:31 MC_ID N/A This field defines the multicast destination ID for which the associated multicast mask is activated for this extended features block. When using these registers, it is important that no multiple, identical entries exist because an addition of an association of destination ID does not delete the association of a duplicate destination ID to a different mask. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 318 12.8.9 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers RapidIO Multicast Write Mask x Register This register contains the set of egress ports where a multicast packet is sent when it matches the destination ID associated with the mask. These bits form the multicast vector used by the broadcast buffer to determine which egress ports the packet is copied to. The bit descriptions apply to all packets received on a port whose destination ID field maps to the multicast ID register value. A multicast packet received on an input port is sent to all egress ports whose multicast select bit is set to 1. However, the multicast packet is not sent to the port from which it was received, regardless of the setting of that port’s multicast select bit. This registers is only located in the multicast engine. Register name: RIO_MC_MSK{0..7} Register offset: 10320, 10324, 10328, 1032C, 10330, 10334, 10338, 1033C Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 MC_MSK[15:8] 08:15 MC_MSK[7:0] 16:23 Reserved 24:31 Reserved Bits Name 00:15 MC_MSK 5 Description Port x Multicast Select 6 7 Type Reset Value R/W 0 R 0 Where x refers to ports 0 through 15. (Other values are reserved.) 0 = Do not Multicast the packet to output port x 1 = Multicast the packet to output port x An output port is specified by the bit position: Bit 0 = mask of output port 0 Bit 1 = mask of output port 1 ... 16:31 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.10 319 RapidIO Port x Control Independent Register This register is used for error recovery. Register name: SP{0..15}_CTL_INDEP Register offset: 13004, 13104, 13204, 13304, 13404, 13504, 13604, 13704, 13804, 13904, 13A04, 13B04, 13C04, 13D04, 13E04, 13F04 Reset value: 0x0100_0000 Bits 00:07 08:15 0 1 Reserved DEBUG_M ODE 2 3 SCRATCH SEND_DB G_PKT Reserved Reserved 16:23 24:31 4 PORT_ER R_EN 5 6 7 FORCE_R EINIT Reserved TRANS_M ODE MC_TEA_E N LINK_INIT_ NOTIFICAT ION_EN LUT_PAR_ ERR_EN INB_RDR_ EN Reserved TEA_EN Type Reset Value R 0 R/W 0 R 0 R/W1S 0 R 0 R/W 1 MAX_RETRY_THRESHOLD ILL_TRANS _ERR IRQ_EN MAX_RET RY_EN Bits Name 0:1 Reserved N/A 2 SCRATCH Scratch Pad OUTB_DE PTH_EN INB_DEPT H_EN Description This bit controls no functionality. It is a read/write scratch pad bit for software use. 3:4 Reserved 5 FORCE_REINIT N/A Force Link Re-initialization Process This bit is active on write and automatically returns to 0. 6 Reserved 7 TRANS_MODE N/A Transfer mode for each port 0 = Cut-through mode. In cut-through mode, the incoming packet is forwarded through the switch as soon as the routing information is received. 1 = Store-and-forward mode (default). In store-and-forward mode, the incoming packet is not sent to the switch fabric until the whole packet is received. Note: If ports are operating at different speeds, cut-through mode may impact the overall performance of the switch. This is because in cut-through mode, a slower port can use the internal switching fabric for a long time relative to a faster port, incurring additional latency and potentially throughput loss on the faster port. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 320 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers (Continued) Bits Name 8 DEBUG_MODE Description Mode of operation Type Reset Value R/W 0 R/W 0 R 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0x00 R/W 0 0 = Normal 1 = Debug mode Debug mode unlocks the capture registers for writing and enables the debug packet generator feature. 9 SEND_DBG_PKT Send Debug Packet 0 = Normal 1 = Send debug packet This bit is set by software and is cleared by hardware after the debug packet is sent. Writes when the bit is already set are ignored. Debug mode only. 10:11 Reserved 12 PORT_ERR_EN N/A Port Error Enable An interrupt and/or port-write is generated if there is a Port Error. 13 MC_TEA_EN Multicast TEA Enable An interrupt and/or port write is generated when the multicast engine has timed out before it could deliver a packet to the broadcast buffer. 14 LINK_INIT_NOTIF ICATION_EN Enables interrupts and port writes for LINK_INIT_NOTIFICATION events. 0 = Interrupt and/or port write disabled 1 = Interrupt and/or port write enabled 15 LUT_PAR_ERR_ EN Enables interrupts for parity errors in the lookup table. 0 = Interrupt disabled 1 = Interrupt enabled 16:23 MAX_RETRY_TH RESHOLD Maximum Retry Threshold These bits provide the threshold value for reporting congestion at an outbound switch buffer caused by congestion at the link partner. When the number of consecutive retries reaches this threshold, the switch generates a port-write and sends the IMP_SPEC_ERR bit in the RapidIO Port x Error Detect CSR. 00 = Disable the RETRY_ERROR reporting 01 = Set the MAX_RETRY_THRESHOLD to 1 02 = Set the MAX_RETRY_THRESHOLD to 2 ... FF = Set the MAX_RETRY_THRESHOLD to 255 24 ILL_TRANS_ERR Illegal Transfer Error Reporting Enable If enabled, the port-write and/or interrupt report an error when the ILL_TRANS_ERR bit is set. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 321 (Continued) Bits Name 25 IRQ_EN Description Interrupt Error Report Enable Type Reset Value R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 If enabled, the interrupt signal is high when the IRQ_ERR bit is set to 1. 26 MAX_RETRY_EN Maximum Retry Report Enable If enabled, the port-write and interrupt report an error when the MAX_RETRY_THRESHOLD is exceeded and the MAX_RETRY bit is set in the “RapidIO Port x Interrupt Status Register” on page 326. 27 28 OUTB_DEPTH_E N INB_DEPTH_EN Output Queue Depth Interrupt Enable An interrupt is generated when the OUTB_DEPTH bit is set in the “RapidIO Port x Interrupt Status Register” on page 326. Input Queue Depth Interrupt Enable An interrupt is generated when the INB_DEPTH bit is set in the “RapidIO Port x Interrupt Status Register” on page 326. 29 INB_RDR_EN Inbound Reorder Interrupt Enable An interrupt is generated when the INB_RDR bit is set in the “RapidIO Port x Interrupt Status Register” on page 326. 30 Reserved Reserved R/W 0 31 TEA_EN Transfer Error Acknowledge Enable R/W 0 An interrupt is generated if the internal switching fabric times out trying to send the packet to its egress port. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 322 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.11 RapidIO Port x Send Multicast-Event Control Symbol Register When this register is written, it causes a Multicast-Event control symbol to be sent on the corresponding RapidIO output port. The port must be enabled for multicast control symbol forwarding through the MCS_EN bit in the SP{0..15}_CTL register. A write to this register is not considered complete until the multicast-event control symbol is queued to the outbound flow. There can be only one outstanding request at a time. Subsequent requests are ignored until the multicast control symbol is sent. Register name: SP{0..15}_SEND_MCS Register offset: 1300C, 1310C, 1320C, 1330C, 1340C, 1350C, 1360C, 1370C, 1380C, 1390C, 13A0C, 13B0C, 13C0C, 13D0C, 13E0C, 13F0C Reset value: 0x0000_0002 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 5 Reserved Bits Name 0:29 Reserved 30 DONE 6 7 DONE SEND Type Reset Value N/A R 0 0= The Tsi578 sets this field to 0 when system software sets SEND to 1. R 1 R/W1S 0 Description 1 = The Tsi578 sets this field to 1 once it has sent the Multicast-Event control symbol. It indicates that the Tsi578 is ready to send another Multicast Event control symbol. 31 SEND Tsi578 User Manual June 6, 2016 Write 1 to send a multicast-event control symbol when the DONE bit is set to 1. Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.12 323 RapidIO Port x LUT Parity Error Info CSR The RapidIO Port x LUT Parity Error Info CSR contains information about the look up operation that caused the parity error, as well as the LUT information associated with the parity error. The contents of this register are frozen when a LUT parity error is indicated in the “RapidIO Port x Interrupt Status Register” on page 326 register. Writes to this register have no affect when a LUT parity error is not indicated. Register name: SP{0..15}_LUT_PAR_ERR_INFO Register offset: 13010, 13110, 13210, 13310, 13410, 13510, 13610, 13710, 13810, 13910, 13A10, 13B10, 13C10, 13D10, 13E10, 13F10 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 DESTID_MSB 08:15 DESTID_LSB 16:23 LG_DESTI D 24:31 PTY_BIT 5 6 7 Reserved LUT_VLD Reserved PORT_NUM Bits Name Description Type Reset Value 0:7 DESTID_MSB Most significant byte of a 16 bit destination ID used in the lookup operation which caused the error. Only valid if the LG_DESTID field value is 1 and a LUT parity error is signalled in the Port x Interrupt Status CSR. R/W 0 R/W 0 R/W 0 R 0 R/W 0 When the parity error is cleared in “RapidIO Port x Interrupt Status Register” on page 326, the information in these bits become meaningless. Note: In small systems, this field holds the 8-bit Dest_ID. 8:15 DESTID_LSB Least significant byte of a 16 bit destination ID used in the lookup operation which caused the error. Only valid if a LUT parity error is signalled in the Port x Interrupt Status CSR. When the parity error is cleared in “RapidIO Port x Interrupt Status Register” on page 326, the information in these bits become meaningless. Note: This field is not used in small systems. 16 LG_DESTID 17:23 Reserved N/A 24 PTY_BIT The parity bit read from the LUT memory array. Integrated Device Technology www.idt.com 1 = This bit is set if the TT code of the packet which caused the error is anything other than 0. Tsi578 User Manual June 6, 2016 324 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers (Continued) Bits Name 25 LUT_VLD Description 0 = Indicates that the LUT entry is unmapped. The PORT_NUM field value should be 0xF in this case. Type Reset Value R/W 0 R 0 R/W 0 1 = Indicates the LUT entry is mapped. The PORT_NUM field value is the port to which the packet could be routed (0x0 to 0xF). Caution: The value of this bit is unpredictable when there is a parity error in the LUT. For more information, see “Lookup Table Parity” on page 49. 26:27 Reserved 28:31 PORT_NUM N/A The Tsi578 port number where packets are routed. If the port is unmapped (LUT_VLD = 0), then the field reads 0xF. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.13 325 RapidIO Port x Control Symbol Transmit Writing to this register transmits a single control symbol to RapidIO. This register is only used for debug purposes. All control symbol fields are defined according to the RapidIO Interconnect Specification (Revision 1.3). The control symbol’s CRC field is generated by hardware. Register name: SP{0..15}_CS_TX Register offset: 13014, 13114, 13214, 13314, 13414, 13514, 13614, 13714, 13814, 13914, 13A14, 13B14, 13C14, 13D14, 13E14, 13F14 Reset value: 0x0000_0000 Bits 0 1 00:07 2 3 4 STYPE_0 08:15 5 6 PAR_0 PAR_1 16:23 CMD 7 STYPE_1 CS_EMB 24:31 Reserved Reserved Bits Name 0:2 STYPE_0 Description Encoding for control symbol Type Reset Value R/W 0 This field uses the parameters PAR_0 and PAR_1. 3:7 PAR_0 Used in conjunction with stype0 encoding. R/W 0 8:12 PAR_1 Used in conjunction with stype0 encoding. R/W 0 13:15 STYPE_1 Encoding for the control symbol that uses the CMD parameter. R/W 0 16:18 CMD Used in conjunction with stype1 encoding to define the link maintenance commands. R/W 0 19 CS_EMB Embed the control symbol into a data stream R/W 0 R 0 0 = Control symbol is sent out immediately 1 = Control symbol is sent immediately if there is data transferring on the output port, or is inserted until after the first 32 bits of data of the next packet sent if there is currently no data transferring on the output port. 20:31 Reserved N/A Writing to this register causes control symbols to be generated that can interfere with the operation of the port. This can cause the port or its link partner to enter the input error stopped state due to the reception of an unexpected control symbol. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 326 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.14 RapidIO Port x Interrupt Status Register Register name: SP{0..15}_INT_STATUS Register offset: 13018, 13118, 13218, 13318, 13418, 13518, 13618, 13718, 13818, 13918, 13A18, 13B18, 13C18, 13D18, 13E18, 13F18 Reset value: 0x0000_0000 Bits 0 1 2 3 00:07 5 6 7 MC_TEA LINK_INIT_ NOTIFICAT ION LUT_PAR_ ERR INB_RDR Reserved TEA Reserved 08:15 Reserved 16:23 24:31 4 Reserved ILL_TRANS _ERR IRQ_ERR MAX_RET RY OUTB_DE PTH INB_DEPT H Bits Name Description 0:12 Reserved N/A 13 MC_TEA This interrupt is raised when the Multicast Engine has timed out before it could deliver a packet to the broadcast buffer. Type Reset Value R 0 R/W1C 0 R/W1C 0 R/W1C 0 R 0 This bit is cleared by writing a 1 to it, or by clearing all bits in the “RapidIO Port x Error Detect CSR” on page 294. 14 LINK_INIT_ NOTIFICATION Link Initialization Notification Once set, the LINK_INIT_NOTIFICATION bit is cleared by writing 1 to it. When the PORT_LOCKOUT bit is set in “RapidIO Serial Port x Control CSR” on page 281, and a link has initialized according to the PORT_OK bit in “RapidIO Port x Error and Status CSR” on page 278, the LINK_INIT_NOTIFICATION is set to 1. To stop the LINK_INIT_NOTIFICATION bit from being set, PORT_LOCKOUT must be set to 0 and/or the link must no longer be in an initialized state. 15 LUT_PAR_ ERR Lookup Table Parity Error 1= a packet looks up its destination ID in the lookup table, and the selected lookup table entry has a parity error. This bit is cleared by writing a 1 to it, or by clearing all the bits in the “RapidIO Port x Error Detect CSR” on page 294. 16:23 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 327 (Continued) Bits Name 24 ILL_TRANS_ERR Description Illegal Transfer Error Type Reset Value R/W1C 0 R 0 R/W1C 0 R/W1C 0 This bit is set to 1 when the following occurs: • Received transaction has reserved tt field for all but maintenance packets with hop count = 0 • DestinationID is unmapped (not defined in lookup table) Once set, the bit remains set until written with logic 1 to clear. The setting of this bit generates a port-write and interrupt if a the bit ILL_TRANS_EN bit is set in the “RapidIO Port x Control Independent Register” on page 319. This bit duplicates a function of bit 0 of the “RapidIO Port x Error Detect CSR” on page 294, but a port-write is sent immediately when the error is detected without exceeding the “RapidIO Port x Error Rate Threshold CSR” on page 306. This error also reported in “RapidIO Port x Error Detect CSR” on page 294. 25 IRQ_ERR Interrupt Error Status Set to one if an error occurs (refer to the “Error Management” on page 57). Once set, the bit remains unchanged until all the error sources are cleared. The setting of this bit generates an interrupt if the IRQ_EN bit in“RapidIO Port x Control Independent Register” on page 319 is set. 26 MAX_ RETRY Maximum Retry Error Set when number of retries has reached MAX_RETRY_THRESHOLD. An interrupt is generated if MAX_RETRY_EN is set. A port-write request can also be generated if enabled. This bit is ignored if MAX_RETRY_THRESHOLD is 0x00. This bit is cleared by writing a 1 to it, or by clearing all bits in the “RapidIO Port x Error Detect CSR” on page 294. 27 OUTB_DEPTH Outbound Depth Interrupt This value is set when Output Queue Depth Count reaches the maximum number defined in the Output Queue Depth Threshold field in the “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350. To get an interrupt in this status register, the Outbound Depth Interrupt Enable bit in the “RapidIO Port x Control Independent Register” on page 319 is set to 1. Writing a 1 to this bit clears the interrupt and clears CONG_CNTR in the “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 328 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers (Continued) Bits Name 28 INB_DEPTH Type Reset Value R/W1C 0 R/W1C 0 Reserved R/W1C 0 This interrupt is raised when the internal switching fabric has timed out before it could deliver a packet to an egress port. R/W1C 0 Description Inbound Depth Interrupt This value is set when Input Queue Depth Count reaches the maximum number defined in the Input Queue Depth Threshold field in “RapidIO Port x Receiver Input Queue Depth Threshold Register” on page 355. To get an interrupt in this status register, the Inbound Depth Interrupt Enable bit in the“RapidIO Port x Control Independent Register” on page 319 is set to 1. Writing a 1 to this bit clears the interrupt and clears INB_QD_CNT in the “RapidIO Port x Receiver Input Queue Congestion Status Register” on page 357. 29 INB_RDR Inbound Interrupt: Reordering This value is set when Reordering Count reaches the maximum number defined in the Inbound Reordering Threshold field in the “RapidIO Port x Reordering Counter Register” on page 360. To get an interrupt in this status register, the Inbound Interrupt Reordering Enable bit in the “RapidIO Port x Control Independent Register” on page 319 has to be set to 1. Writing a 1 to this bit clears the interrupt and clears INB_RDR_CNT in the “RapidIO Port x Reordering Counter Register” on page 360. 30 Reserved 31 TEA This bit is cleared by writing a 1 to it, or by clearing all bits in the “RapidIO Port x Error Detect CSR” on page 294. Writing 0 to any bit in the “RapidIO Port x Interrupt Generate Register” on page 329 clears the corresponding bit in this register. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers 12.8.15 329 RapidIO Port x Interrupt Generate Register This register can be used to generate the corresponding error in the “RapidIO Port x Interrupt Status Register” on page 326. When bits in the register are set, behavior associated with the error (port writes, interrupts) occur. Register name: SP{0..15}_INT_GEN Register offset: 1301C, 1311C, 1321C, 1331C, 1341C, 1351C, 1361C, 1371C, 1381C, 1391C, 13A1C, 13B1C, 13C1C, 13D1C, 13E1C, 13F1C Reset value: 0x0000_0000 Bits 0 1 2 3 00:07 5 6 7 MC_TEA_ GEN LINK_INIT_ NOTIFICAT ION_GEN LUT_PAR_ ERR_GEN INB_RDR_ GEN Reserved TEA_GEN Reserved 08:15 Reserved 16:23 24:31 4 Reserved ILL_TRANS _GEN Reserved Bits Name 0:12 Reserved 13 MC_TEA_GEN MAX_RET RY_GEN OUTB_DE PTH_GEN INB_DEPT H_GEN Descriptiona N/A Forces the MC_TEA bit to be set. Type Reset Value R 0 R/W1S 0 R/W1S 0 R/W1S 0 R 0 R/W1S 0 R 0 R/W1S 0 R/W1S 0 R/W1S 0 Bit always reads as zero. 14 15 LINK_INIT_NOTIFIC ATION_GEN Forces the LINK_INIT_NOTIFICATION bit to be set. LUT_PAR_ERR_GE N Force the LUT_PAR_ERR bit to be set. 16:23 Reserved 24 ILL_TRANS_GEN This bit always reads as zero. This bit always reads as zero. N/A Forces the ILL_TRANS_ERR bit to be set. Bit always reads as zero. 25 Reserved 26 MAX_RETRY_GEN N/A Forces the MAX_RETRY bit to be set to 1. This bit always reads as zero. 27 28 OUTB_DEPTH_GE N INB_DEPTH_GEN Forces the OUTB_DEPTH bit to be set to 1. This bit always reads as zero. Forces the INB_DEPTH bit to be set to 1. This bit always reads as zero. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 330 12. Serial RapidIO Registers > IDT-Specific RapidIO Registers (Continued) Type Reset Value R/W1S 0 Reserved R/W1S 0 Forces the TEA bit to be set to 1. R/W1S 0 Descriptiona Bits Name 29 INB_RDR_GEN Forces the INB_RDR bit to be set to 1. This bit always reads as zero. 30 Reserved 31 TEA_GEN This bit always reads as zero. a. All bits in this register set/clear bits in the “RapidIO Port x Interrupt Status Register” on page 326. Writing 0 to any bit in this register clears the corresponding bit in the “RapidIO Port x Interrupt Status Register” on page 326. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9 331 IDT-Specific Performance Registers The registers in this section are specific to IDT’s switching products. The following table shows the IDT-specific per-port registers not defined by the RapidIO Interconnect Specification (Revision 1.3). It is not possible to broadcast to these registers Table 43: IDT-Specific Per-Port Performance Registers Port Register Offset Description SP0 13000 1x/4x Serial port SP1 13100 1x Serial port SP2 13200 1x/4x Serial port SP3 13300 1x Serial port SP4 13400 1x/4x Serial port SP5 13500 1x Serial port SP6 13600 1x/4x Serial port SP7 13700 1x Serial port SP8 13800 1x/4x Serial port SP9 13900 1x Serial port SP10 13A00 1x/4x Serial port SP11 13B00 1x Serial port SP12 13C00 1x/4x Serial port SP13 13D00 1x Serial port SP14 13E00 1x/4x Serial port SP15 13F00 1x Serial port . Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 332 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.1 RapidIO Port x Performance Statistics Counter 0 and 1 Control Register This register is used to control the performance statistics counters PS0 and PS1 registers. For every performance statistics register SPx_PSCy (where y refers to the Performance Statistics counter PS0 and PS1), the following configurations (direction, type, and priority) are selected through the SP{0..15}_PSC0n1_CTRL register: • The PSy_DIR field determines the performance statistics receiver versus transmitter direction application. • The PSy_TYPE field assigns the type of statistics collection (packet, control symbol, multicast, etc..) to be accumulated for a given SPx_PSCy. • The PSy_PRIO[0..3] fields determine the priority of the packets for performance statistics collection through the SPx_PSCy register (see “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 and “RapidIO Port x Performance Statistics Counter 1 Register” on page 345). The SPx_PSCy can be disabled by selecting PSy_PRIO[0..3] to be set to 0. Setting PSy_PRIO[0..3] to all ones, allows for collecting performance statistics through the SPx_PSCy for all priority packets. Register name: SP{0..15}_PSC0n1_CTRL Register offset: 13020, 13120, 13220, 13320, 13420, 13520, 13620, 13720, 13820, 13920, 13A20, 13B20, 13C20, 13D20, 13E20, 13F20 Reset value: 0x0000_0000 Bits 0 1 2 3 00:7 PS0_PRIO 3 PS0_PRIO 2 PS0_PRIO 1 PS0_PRIO 0 8:15 16:23 4 5 6 Reserved PS0_DIR Reserved PS1_PRIO 3 PS1_PRIO 2 24:31 PS1_PRIO 1 PS0_TYPE PS1_PRIO 0 Reserved PS1_DIR Reserved Bits Name 0 PS0_PRIO3 7 PS1_TYPE Description Performance Stats Reg PS0 Priority 3 Selection Type Reset Value R/W 0 This value represents the packet priority 3 is selected for which performance statistics are accumulated for in the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344. 0 = If all PS0_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 is disabled. 1 = Count priority 3 packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 333 (Continued) Bits Name 1 PS0_PRIO2 Description Performance Stats Reg PS0 Priority 2 Selection Type Reset Value R/W 0 R/W 0 R/W 0 R 0 R/W 0 R 0 This value represents the packet priority 2 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344. 0 = If all PS0_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 is disabled. 1 = Count priority 2 packets. 2 PS0_PRIO1 Performance Stats Reg PS0 Priority 1 Selection This value represents the packet priority 1 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344. 0 = If all PS0_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344 is disabled. 1 = Count priority 1 packets. 3 PS0_PRIO0 Performance Stats Reg PS0 Priority 0 Selection This value represents the packet priority 0 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344. 0 = If all PS0_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344is disabled. 1 = Count priority 0 packets. 4:6 Reserved N/A 7 PS0_DIR Performance Stats Reg PS0 Direction Selection This value selects the direction (receiver vs. transmitter) for the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344. 0 = Receiver Stats Counter Register 1 = Transmitter Stats Counter Register 8:12 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 334 12. Serial RapidIO Registers > IDT-Specific Performance Registers (Continued) Bits Name 13:15 PS0_TYPE Description Performance Stats Reg PS0 Type Selection Type Reset Value R/W 0 R/W 0 R/W 0 R/W 0 This value determines the type of performance statistics that is collected in the “RapidIO Port x Performance Statistics Counter 0 Register” on page 344. Retries are not counted as part of the data. 000 = Count all unicast request packets only. The response packets, maintenance packets, and maintenance packets with hop count of 0 are excluded from this counter. 001 = Count all unicast packet types. This counter includes all request, response, maintenance packets (including the maintenance packets with hop count 0). 010 = Count all retry control symbols only. 011 = Count all control symbols (excluding retry control symbols). 100 = Count every 32-bits of unicast data. This counter counts all accepted unicast packets data (including header). 101 = Count all multicast packets only. 110 = Count all multicast control symbols. 111 = Count every 32-bits of multicast data. This counter includes counting the entire multicast packet (including header). 16 PS1_PRIO3 Performance Stats Reg PS1 Priority 3 Selection This value represents the packet priority 3 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345. 0 = If all PS1_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345 is disabled. 1 = Count priority 3 packets. 17 PS1_PRIO2 Performance Stats Reg PS1 Priority 2 Selection This value represents the packet priority 2 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345. 0 = If all PS1_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345 is disabled. 1 = Count priority 2 packets. 18 PS1_PRIO1 Performance Stats Reg PS1 Priority 1 Selection This value represents the packet priority 1 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345. 0 = If all PS1_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345 is disabled. 1 = Count priority 1 packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 335 (Continued) Bits Name 19 PS1_PRIO0 Description Performance Stats Reg PS1 Priority 0 Selection Type Reset Value R/W 0 R 0 R/W 0 R 0 R/W 0 This value represents the packet priority 0 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345. 0 = If all PS1_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345 is disabled. 1 = Count priority 0 packets. 20:22 Reserved N/A 23 PS1_DIR Performance Stats Reg PS1 Direction Selection This value selects the direction (receiver vs. transmitter) for the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345. 0 = Receiver Stats Counter Register 1 =Transmitter Stats Counter Register 24:28 Reserved 29:31 PS1_TYPE N/A Performance Stats Reg PS1 Type Selection This value determines the type of performance statistics that is collected in the “RapidIO Port x Performance Statistics Counter 1 Register” on page 345. Retries are not counted as part of the data. 000 = Count all unicast request packets only. The response packets, maintenance packets, and maintenance packets with hop count of 0 are excluded from this counter. 001 = Count all unicast packet types. This counter includes all request, response, maintenance packets (including the maintenance packets with hop count 0). 101 = Count all retry control symbols only. 011 = Count all control symbols (excluding retry control symbols). 100 = Count every 32-bits of unicast data. This counter counts all accepted unicast packets data (including header). 101 = Count all multicast packets only. 110 = Count all multicast control symbols. 111 = Count every 32-bits of multicast data. This counter includes counting the entire multicast packet (including header). Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 336 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.2 RapidIO Port x Performance Statistics Counter 2 and 3 Control Register This register is used to control the performance statistics counters PS2 and PS3 registers. For every performance stats register SPx_PSCy (where y refers to the Performance Statistics counter PS2 and PS3), the following configurations (direction, type, and priority) are selected through the SP{0..15}_PSC2n3_CTRL register: • The PSy_DIR field determines the performance stats receiver versus transmitter direction application. • The PSy_TYPE field assigns the type of stats collection (for example, packet, control symbol, and multicast) to be accumulated for a given SPx_PSCy. • The PSy_PRIO[0..3] fields determine the priority of the packets for performance statistics collection through the “RapidIO Port x Performance Statistics Counter 2 Register” on page 346 and “RapidIO Port x Performance Statistics Counter 3 Register” on page 347. The SPx_PSCy can be disabled by selecting PSy_PRIO[0..3] to be set to 0. Setting PSy_PRIO[0..3] to all ones, allows for collecting performance statistics through the SPx_PSCy for all priority packets. Register name: SP{0..15}_PSC2n3_CTRL Register offset: 13024, 13124, 13224, 13324, 13424, 13524, 13624, 13724, 13824, 13924, 13A24, 13B24, 13C24, 13D24, 13E24, 13F24 Reset value: 0x0000_0000 Bits 0 1 2 3 00:7 PS2_PRIO 3 PS2_PRIO 2 PS2_PRIO 1 PS2_PRIO 0 8:15 16:23 4 5 Reserved Reserved PS3_PRIO 3 PS3_PRIO 2 24:31 PS3_PRIO 1 Name 0 PS2_PRIO3 7 PS2_DIR PS2_TYPE PS3_PRIO 0 Reserved Reserved Bits 6 PS3_DIR PS3_TYPE Description Performance Stats Reg PS2 Priority 3 Selection Type Reset Value R/W 0 This value represents the packet priority 3 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. 0 = If all PS2_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340 is disabled. 1 = Count priority 3 packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 337 (Continued) Bits Name 1 PS2_PRIO2 Description Performance Stats Reg PS2 Priority 2 Selection Type Reset Value R/W 0 R/W 0 R/W 0 R 0 R/W 0 R 0 This value represents the packet priority 2 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. 0 = If all PS2_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340 is disabled. 1 = Count priority 2 packets. 2 PS2_PRIO1 Performance Stats Reg PS2 Priority 1 Selection This value represents the packet priority 1 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. 0 = If all PS2_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340 is disabled. 1 = Count priority 1 packets. 3 PS2_PRIO0 Performance Stats Reg PS2 Priority 0 Selection This value represents the packet priority 0 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. 0 = If all PS2_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340 is disabled. 1 = Count priority 0 packets. 4:6 Reserved N/A 7 PS2_DIR Performance Stats Reg PS2 Direction Selection This value selects the direction (receiver vs. transmitter) for the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. 0 = Receiver Stats Counter Register 1 =Transmitter Stats Counter Register 8:12 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 338 12. Serial RapidIO Registers > IDT-Specific Performance Registers (Continued) Bits Name 13:15 PS2_TYPE Description Performance Stats Reg PS2 Type Selection Type Reset Value R/W 0 R/W 0 R/W 0 R/W 0 This value determines the type of performance statistics that is collected in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. Retries are not counted as part of the data. 000 = Count all unicast request packets only. The response packets, maintenance packets, and maintenance packets with hop count of 0 are excluded from this counter. 001 = Count all unicast packet types. This counter includes all request, response, maintenance packets (including the maintenance packets with hop count 0). 010 = Count all retry control symbols only 011 = Count all control symbols (excluding retry control symbols). 100 = Count every 32-bits of unicast data. This counter counts all accepted unicast packets data (including header). 101 = Count all multicast packets only 110 = Count all multicast control symbols 111 = Count every 32-bits of multicast data. This counter includes counting the entire multicast packet (including header). 16 PS3_PRIO3 Performance Stats Reg PS3 Priority 3 Selection This value represents the packet priority 3 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347. 0 = If all PS3_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347 is disabled. 1 = Count priority 3 packets 17 PS3_PRIO2 Performance Stats Reg PS3 Priority 2 Selection This value represents the packet priority 2 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347. 0 = If all PS3_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347 is disabled. 1 = Count priority 2 packets 18 PS3_PRIO1 Performance Stats Reg PS3 Priority 1 Selection This value represents the packet priority 1 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347. 0 = If all PS3_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347 is disabled. 1 = Count priority 1 packets Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 339 (Continued) Bits Name 19 PS3_PRIO0 Description Performance Stats Reg PS3 Priority 0 Selection Type Reset Value R/W 0 R 0 R/W 0 R 0 R/W 0 This value represents the packet priority 0 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347. 0 = If all PS3_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347 is disabled. 1 = Count priority 0 packets. 20:22 Reserved N/A 23 PS3_DIR Performance Stats Reg PS3 Direction Selection This value selects the direction (receiver vs. transmitter) for the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347. 0 = Receiver Stats Counter Register 1 =Transmitter Stats Counter Register 24:28 Reserved 29:31 PS3_TYPE N/A Performance Stats Reg PS3 Type Selection This value determines the type of performance statistics that is collected in the “RapidIO Port x Performance Statistics Counter 3 Register” on page 347. Retries are not counted as part of the data. 000 = Count all unicast request packets only. The response packets, maintenance packets, and maintenance packets with hop count of 0 are excluded from this counter. 001 = Count all unicast packet types. This counter includes all request, response, maintenance packets (including the maintenance packets with hop count 0). 010 = Count all retry control symbols only. 011 = Count all control symbols (excluding retry control symbols). 100 = Count every 32-bits of unicast data. This counter counts all accepted unicast packets data (including header). 101 = Count all multicast packets only. 110 = Count all multicast control symbols. 111 = Count every 32-bits of multicast data. This counter includes counting the entire multicast packet (including header). Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 340 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.3 RapidIO Port x Performance Statistics Counter 4 and 5 Control Register This register is used to control the performance statistics counters PS4 and PS5 registers. For every performance stats register SPx_PSCy (where y refers to the Performance Statistics counter PS4 to PS5), the following configurations (direction, type, and priority) are selected through the SP{0..15}_PSC4n5_CTRL register: • The PSy_DIR field determines the performance stats receiver versus transmitter direction application. • The PSy_TYPE field assigns the type of stats collection (for example, packet, control symbol, and multicast) to be accumulated for a given SPx_PSy_CTR. • The PSy_PRIO[0..3] fields determine the priority of the packets for performance statistics collection through the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348 and “RapidIO Port x Performance Statistics Counter 5 Register” on page 349. The SPx_PSCy can be disabled by selecting PSy_PRIO[0..3] to be set to 0. Setting PSy_PRIO[0..3] to all ones, allows for collecting performance statistics through the SPx_PSCy for all priority packets. Register name: SP{0..15}_PSC4n5_CTRL Register offset: 13028, 13128, 13228, 13328, 13428, 13528, 13628, 13728, 13828, 13928, 13A28, 13B28, 13C28, 13D28, 13E28, 13F28 Reset value: 0x0000_0000 Bits 0 1 2 3 00:7 PS4_PRIO 3 PS4_PRIO 2 PS4_PRIO 1 PS4_PRIO 0 8:15 16:23 4 5 Reserved Reserved PS5_PRIO 3 PS5_PRIO 2 24:31 PS5_PRIO 1 Name 0 PS4_PRIO3 7 PS4_DIR PS4_TYPE PS5_PRIO 0 Reserved Reserved Bits 6 PS5_DIR PS5_TYPE Description Performance Stats Reg PS4 Priority 3 Selection Type Reset Value R/W 0 This value represents the packet priority 3 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348. 0 = If all PS4_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348 is disabled. 1 = Count priority 3 packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 341 (Continued) Bits Name 1 PS4_PRIO2 Description Performance Stats Reg PS4 Priority 2 Selection Type Reset Value R/W 0 R/W 0 R/W 0 R 0 R/W 0 R 0 This value represents the packet priority 2 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348. 0 = If all PS4_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348 is disabled. 1 = Count priority 2 packets. 2 PS4_PRIO1 Performance Stats Reg PS4 Priority 1 Selection This value represents the packet priority 1 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348. 0 = If all PS4_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348 is disabled. 1 = Count priority 1 packets. 3 PS4_PRIO0 Performance Stats Reg PS4 Priority 0 Selection This value represents the packet priority 0 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348. 0 = If all PS4_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348 is disabled. 1 = Count priority 0 packets. 4:6 Reserved N/A 7 PS4_DIR Performance Stats Reg PS4 Direction Selection This value selects the direction (receiver vs. transmitter) for the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348. 0 = Receiver Stats Counter Register 1 = Transmitter Stats Counter Register 8:12 Reserved Integrated Device Technology www.idt.com N/A Tsi578 User Manual June 6, 2016 342 12. Serial RapidIO Registers > IDT-Specific Performance Registers (Continued) Bits Name 13:15 PS4_TYPE Description Performance Stats Reg PS4 Type Selection Type Reset Value R/W 0 R/W 0 R/W 0 R/W 0 This value determines the type of performance statistics that is collected in the “RapidIO Port x Performance Statistics Counter 4 Register” on page 348. Retries are not counted as part of the data. 000 = Count all unicast request packets only. The response packets, maintenance packets, and maintenance packets with hop count of 0 are excluded from this counter. 001 = Count all unicast packet types. This counter includes all request, response, maintenance packets (including the maintenance packets with hop count 0). 010 = Count all retry control symbols onlya 011 = Count all control symbols (excluding retry control symbols)1. 100 = Count every 32-bits of unicast data. This counter counts all accepted unicast packets data (including header). 101 = Count all multicast packets only. 110 = Count all multicast control symbols. 111 = Count every 32-bits of multicast data. This counter includes counting the entire multicast packet (including header). 16 PS5_PRIO3 Performance Stats Reg PS5 Priority 3 Selection This value represents the packet priority 3 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349. 0 = If all PS5_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349 is disabled. 1 = Count priority 3 packets. 17 PS5_PRIO2 Performance Stats Reg PS5 Priority 2 Selection This value represents the packet priority 2 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349. 0 = If all PS5_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349 is disabled. 1 = Count priority 2 packets. 18 PS5_PRIO1 Performance Stats Reg PS5 Priority 1 Selection This value represents the packet priority 1 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349. 0 = If all PS5_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349 is disabled. 1 = Count priority 1 packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 343 (Continued) Bits Name 19 PS5_PRIO0 Description Performance Stats Reg PS5 Priority 0 Selection Type Reset Value R/W 0 R 0 R/W 0 R 0 R/W 0 This value represents the packet priority 0 is selected for which performance stats are accumulated for in the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349. 0 = If all PS5_PRIO[0..3] are set to zero, the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349 is disabled. 1 = Count priority 0 packets. 20:22 Reserved N/A 23 PS5_DIR Performance Stats Reg PS5 Direction Selection This value selects the direction (receiver vs. transmitter) for the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349. 0 = Receiver Stats Counter Register 1 =Transmitter Stats Counter Register 24:28 Reserved 29:31 PS5_TYPE N/A Performance Stats Reg PS5 Type Selection This value determines the type of performance statistics that is collected in the “RapidIO Port x Performance Statistics Counter 5 Register” on page 349. Retries are not counted as part of the data. 000 = Count all unicast request packets only. The response packets, maintenance packets, and maintenance packets with hop count of 0 are excluded from this counter. 001 = Count all unicast packet types. This counter includes all request, response, maintenance packets (including the maintenance packets with hop count 0). 010 = Count all retry control symbols only. 011 = Count all control symbols (excluding retry control symbols). 100 = Count every 32-bits of unicast data. This counter counts all accepted unicast packets data (including header). 101 = Count all multicast packets only. 110 = Count all multicast control symbols. 111 = Count every 32-bits of multicast data. This counter includes counting the entire multicast packet (including header). a. The Control Symbol has no priority. In this case, any non-zero setting in bit 0-3 increments the counter. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 344 12.9.4 12. Serial RapidIO Registers > IDT-Specific Performance Registers RapidIO Port x Performance Statistics Counter 0 Register This register is used to collect performance statistics. These counters provide the means of accumulating statistics for the purposes of performance monitoring measurements: throughput and latency. The PS0_CTR counter collects performance statistics information based on the configuration fields specified in the “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332. The PS0_CTR counter value is writable for testing purposes.This counter saturates when it reaches its maximum value 0xFFFFFFFF and is cleared on a read. The PS0_CTR is enabled, when PS0_PRIO[0..3] value in the “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332 is configured to a value other than 0. Register name: SP{0..15}_PSC0 Register offset: 13040, 13140, 13240, 13340, 13440, 13540, 13640, 13740, 13840, 13940, 13A40, 13B40, 13C40, 13D40, 13E40, 13F40 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 PS0_CTR 8:15 PS0_CTR 16:23 PS0_CTR 24:31 PS0_CTR Bits Name 0:31 PS0_CTR 5 6 Description This counter is used to collect performance statistics based on the configurations specified through the “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332 7 Type Reset Value R/W 0 A read clears this register. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.5 345 RapidIO Port x Performance Statistics Counter 1 Register This register is used to collect performance statistics. These counters provide the means of accumulating statistics for the purposes of performance monitoring measurements: throughput and latency. The PS1_CTR counter collects performance statistics information based on the configuration fields specified in the “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332. The PS1_CTR counter value is writable for testing purposes. This counter saturates when it reaches its maximum value 0xFFFFFFFF and is cleared on a read. The PS1_CTR is enabled, when PS1_PRIO[0..3] value in the “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332 is configured to a value other than 0. Register name: SP{0..15}_PSC1 Register offset: 13044, 13144, 13244, 13344, 13444, 13544, 13644, 13744, 13844, 13944, 13A44, 13B44, 13C44, 13D44, 13E44, 13F44 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 PS1_CTR 8:15 PS1_CTR 16:23 PS1_CTR 24:31 PS1_CTR Bits Name 0:31 PS1_CTR 5 Description This counter is used to collect performance statistics based on the configurations specified through the “RapidIO Port x Performance Statistics Counter 0 and 1 Control Register” on page 332. 6 7 Type Reset Value R/W 0 A read clears this register. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 346 12.9.6 12. Serial RapidIO Registers > IDT-Specific Performance Registers RapidIO Port x Performance Statistics Counter 2 Register This register is used to collect performance statistics. These counters provide the means of accumulating statistics for the purposes of performance monitoring measurements: throughput and latency. The PS2_CTR counter collects performance statistics information based on the configuration fields specified in the “RapidIO Port x Performance Statistics Counter 2 and 3 Control Register” on page 336 register. The PS2_CTR counter value is writable for testing purposes. This counter saturates when it reaches its maximum value 0xFFFFFFFF and is cleared on a read. The PS2_CTR is enabled, when PS2_PRIO[0..3] value in the“RapidIO Port x Performance Statistics Counter 2 and 3 Control Register” on page 336 is configured to a value other than 0. Register name: SP{0..15}_PSC2 Register offset: 13048, 13148, 13248, 13348, 13448, 13548, 13648, 13748, 13848, 13948, 13A48, 13B48, 13C48, 13D48, 13E48, 13F48 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 PS2_CTR 8:15 PS2_CTR 16:23 PS2_CTR 24:31 PS2_CTR Bits Name 0:31 PS2_CTR 5 6 Description This counter is used to collect performance statistics based on the configurations specified through the “RapidIO Port x Performance Statistics Counter 2 and 3 Control Register” register. 7 Type Reset Value R/W 0 A read clears this register. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.7 347 RapidIO Port x Performance Statistics Counter 3 Register This register is used to collect performance statistics. These counters provide the means of accumulating statistics for the purposes of performance monitoring measurements: throughput and latency. The PS3_CTR counter collects performance statistics information based on the configuration fields specified in the “RapidIO Port x Performance Statistics Counter 2 and 3 Control Register” on page 336. The PS3_CTR counter value is writable for testing purposes. This counter saturates when it reaches its maximum value 0xFFFFFFFF and is cleared on a read. The PS3_CTR is enabled, when PS3_PRIO[0..3] value in the “RapidIO Port x Performance Statistics Counter 2 and 3 Control Register” on page 336 is configured to a value other than 0. Register name: SP{0..15}_PSC3 Register offset: 1304C, 1314C, 1324C, 1334C, 1344C, 1354C, 1364C, 1374C, 1384C, 1394C, 13A4C, 13B4C, 13C4C, 13D4C, 13E4C, 13F4C Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 PS3_CTR 8:15 PS3_CTR 16:23 PS3_CTR 24:31 PS3_CTR Bits Name 0:31 PS3_CTR 5 Description This counter is used to collect performance statistics based on the configurations specified through the “RapidIO Port x Performance Statistics Counter 2 and 3 Control Register” on page 336. 6 7 Type Reset Value R/W 0 A read clears this register. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 348 12.9.8 12. Serial RapidIO Registers > IDT-Specific Performance Registers RapidIO Port x Performance Statistics Counter 4 Register This register is used to collect performance statistics. These counters provide the means of accumulating statistics for the purposes of performance monitoring measurements: throughput and latency. The PS4_CTR counter collects performance statistics information based on the configuration fields specified in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. The PS4_CTR counter value is writable for testing purposes.This counter saturates when it reaches its maximum value 0xFFFFFFFF and is cleared on a read. The PS4_CTR is enabled, when PS4_PRIO[0..3] value in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340) register is configured to a value other than 0. Register name: SP{0..15}_PSC4 Register offset: 13050, 13150, 13250, 13350, 13450, 13550, 13650, 13750, 13850, 13950, 13A50, 13B50, 13C50, 13D50, 13E50, 13F50 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 PS4_CTR 8:15 PS4_CTR 16:23 PS4_CTR 24:31 PS4_CTR Bits Name 0:31 PS4_CTR 5 6 Description This counter is used to collect performance statistics based on the configurations specified through the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. 7 Type Reset Value R/W 0 A read clears this register. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.9 349 RapidIO Port x Performance Statistics Counter 5 Register This register is used to collect performance statistics. These counters provide the means of accumulating statistics for the purposes of performance monitoring measurements: throughput and latency. The PS5_CTR counter collects performance statistics information based on the configuration fields specified in the SPx_PSy_CTRL1 (“RapidIO Port x Performance Statistics Counter 4 and 5 Control Register”) register. The PS5_CTR counter value is writable for testing purposes. This counter saturates when it reaches its maximum value 0xFFFFFFFF and is cleared on a read. The PS5_CTR is enabled, when PS5_PRIO[0..3] value in the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” is configured to a value other than 0. Register name: SP{0..15}_PSC5 Register offset: 13054, 13154, 13254, 13354, 13454, 13554, 13654, 13754, 13854, 13954, 13A54, 13B54, 13C54, 13D54, 13E54, 13F54 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 PS5_CTR 8:15 PS5_CTR 16:23 PS5_CTR 24:31 PS5_CTR Bits Name 0:31 PS5_CTR 5 Description This counter is used to collect performance statistics based on the configurations specified through the “RapidIO Port x Performance Statistics Counter 4 and 5 Control Register” on page 340. 6 7 Type Reset Value R/W 0 A read clears this register. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 350 12.9.10 12. Serial RapidIO Registers > IDT-Specific Performance Registers RapidIO Port x Transmitter Output Queue Depth Threshold Register Queue depth registers are designed to allow for the rapid detection and notification of congestion. This register sets the Transmitter Queue Depth threshold, which is used in conjunction with “RapidIO Port x Transmitter Output Queue Congestion Status Register” to monitor congestion on the output buffers. This register also sets the CONG_PERIOD, which is used in conjunction with the “RapidIO Port x Transmitter Output Queue Congestion Period Register” to determine how long the output buffers have been in a congestion state. Register name: SP{0..15}_TX_Q_D_THRESH Register offset: 13080, 13180, 13280, 13380, 13480, 13580, 13680, 13780, 13880, 13980, 13A80, 13B80, 13C80, 13D80, 13E80, 13F80 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CONG_PERIOD 8:15 CONG_PERIOD 16:23 DEPTH 24:31 5 6 Reserved 7 LEAK_RT LEAK_RT Bits Name Description Type Reset Value 0:15 CONG_PERIOD This value is programmed by software to indicate the maximum number of clock cycles that the output buffer can be in a continuous congestion state. The congestion state is determined based on the DEPTH and “RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352. R/W 0x0000 The programmed CONG_PERIOD value is then used as follows: 0000 = CONG_PERIOD_CTR (in “RapidIO Port x Transmitter Output Queue Congestion Period Register” on page 354) is disabled. 0001= For every clock cycle that the output buffer is in continuous congestion state, increment the CONG_PERIOD_CTR by 1. For example, for a 4x port operating at 3.125 Gbaud/s, this is 3.2 ns. FFFF = For every 64K clock cycles that the output buffer is in continuous congestion state, increment the CONG_PERIOD_CTR by 1. For example, for a 4x port operating at 3.125 Gbaud/s, this is 209.7 us Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 351 (Continued) Bits Name Description Type Reset Value 16:19 DEPTH This number is used to decide the congestion state of the output buffers. If the number of packets in the output queue meets or exceeds this number, the congestion counter is incremented. R/W 0x0 R 0 R/W 0x0 0 = Disables congestion monitoring 1 = The congestion counter increments when the buffer fill reaches or exceeds 2 2 = The congestion counter increments when the buffer fill reaches or exceeds 3 …… 7 = the congestion counter increments when the buffer fill reaches 8 8 = Reserved 20 Reserved N/A 21:31 LEAK_RT This value is the leak rate for both the receiver and transmitter congestion counters. Whenever this time period expires, the CONG_CTR values for both transmitter (“RapidIO Port x Transmitter Output Queue Congestion Status Register” on page 352) and receiver (“RapidIO Port x Receiver Input Queue Congestion Status Register” on page 357) are decremented by 1. 0 = Leak rate is disabled 1 = Decrement CONG_CTR every 1.28s 2 = Decrement CONG_CTR every 2*1.28s = 2.56s ... 2047 = Decrement CONG_CTR every 2047*1.28s = 2.62ms. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 352 12.9.11 12. Serial RapidIO Registers > IDT-Specific Performance Registers RapidIO Port x Transmitter Output Queue Congestion Status Register This register is used to monitor data congestion in the output buffer. New packets accumulate in the output buffers, destined for the switching fabric. When the number of buffers in use equals or exceeds the threshold set in DEPTH field of the “RapidIO Port x Transmitter Output Queue Depth Threshold Register”, the CONG_CTR field in this register is incremented. The CONG_CTR counter value is writable for testing purposes. This counter stops counting when it reaches its maximum value. Writing 1 into the OUTB_DEPTH field in the “RapidIO Port x Interrupt Status Register” on page 326 interrupt status bit causes this counter to be reset to 0. The CONG_CTR is enabled, when CONG_THRESH value is configured to a value other than 0. The CONG_CTR value is decremented by 1 if it is not read within the Error Rate Bias frequency as specified by the ERR_RB field in the “RapidIO Port x Error Rate CSR” on page 304 If the CONG_CTR equals or exceeds the threshold CONG_THRESH, the maskable OUTB_DEPTH interrupt is generated. Register name: SP{0..15}_TX_Q_STATUS Register offset: 13084, 13184, 13284, 13384, 13484, 13584, 13684, 13784, 13884, 13984, 13A84, 13B84, 13C84, 13D84, 13E84, 13F84 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CONG_CTR 8:15 CONG_CTR 16:23 CONG_THRESH 24:31 CONG_THRESH Bits Name 0:15 CONG_CTR 5 6 Description Output Queue Depth Count 7 Type Reset Value R/W 0x0000 The number of times that the output queue exceeds the threshold DEPTH field of the “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350. The count is incremented by 1 when a packet is received. This counter counts up to 0xFFFFand remains at 0xFFFF until reset. The counter is reset when 1 is written to the OUTB_DEPTH (see “RapidIO Port x Interrupt Status Register” on page 326) status bit. The counter is enabled if CONG_THRESH is set to a value other than 0.The CONG_CTR value is decremented by 1 whenever the LEAK_RT [see “RapidIO Port x Transmitter Output Queue Depth Threshold Register” on page 350] time period expires. The CONG_CTR value never goes below 0. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 353 (Continued) Bits Name 16:31 CONG_THRESH Description Output Queue Depth Threshold Type Reset Value R/W 0x0000 If the CONG_CTR count is equal to the value in this field, an interrupt is reported to the system through the OUTB_DEPTH status bit in the “RapidIO Port x Interrupt Status Register” on page 326. Setting the CONG_THRES to zero, disables the CONG_CTR. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 354 12.9.12 12. Serial RapidIO Registers > IDT-Specific Performance Registers RapidIO Port x Transmitter Output Queue Congestion Period Register This register is used to monitor the duration of time that the output buffer is in congestion state. The CONG_PERIOD_CTR counter value is incremented for every N clock cycles specified by the CONG_PERIOD field in the “RapidIO Port x Transmitter Output Queue Depth Threshold Register”, while the output buffer is under congestion state. This counter represents the amount of time that the output buffer is under congestion state. The CONG_PERIOD_CTR counter value is writable for testing purposes. This counter stops counting when it reach its maximum value. Reading the CONG_PERIOD_CTR clears the counter value. The CONG_PERIOD_CTR can be disabled when the CONG_PERIOD field in the “RapidIO Port x Transmitter Output Queue Depth Threshold Register” is set to 0. Register name: SP{0..15}_TX_Q_PERIOD Register offset: 13088, 13188, 13288, 13388, 13488, 13588, 13688, 13788, 13888, 13988, 13A88, 13B88, 13C88, 13D88, 13E88, 13F88 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CONG_PERIOD_CTR 8:15 CONG_PERIOD_CTR 16:23 CONG_PERIOD_CTR 24:31 CONG_PERIOD_CTR Bits Name 0:31 CONG_PERIOD_ CTR 5 6 7 Description Type Reset Value Output Queue Congestion Period Count R/W 0x0000 Each time the output buffer enters a congestion state, this counter is incremented for every N clock cycles (as specified in CONG_PERIOD field of the “RapidIO Port x Transmitter Output Queue Depth Threshold Register”. This counter counts up to 0xFFFFand remains at 0xFFFF until reset. Note: The counter is reset when read. The counter is enabled if CONG_PERIOD is set to a value other than 0. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.13 355 RapidIO Port x Receiver Input Queue Depth Threshold Register Queue depth registers are designed to allow for the rapid detection and notification of congestion. This register sets the Receiver Queue Depth threshold, which is used in conjunction with “RapidIO Port x Receiver Input Queue Congestion Status Register” to monitor congestion on the input buffers. This register also sets the CONG_PERIOD, which is used in conjunction with the “RapidIO Port x Receiver Input Queue Congestion Period Register” to determine how long the input buffers have been in a congestion state. Register name: SP{0..15}_RX_Q_D_THRESH Register offset: 13090, 13190, 13290, 13390, 13490, 13590, 13690, 13790, 13890, 13990, 13A90, 13B90, 13C90, 13D90, 13E90, 13F90 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CONG_PERIOD 8:15 CONG_PERIOD 16:23 DEPTH 24:31 5 6 7 Type Reset Value R/W 0x0000 Reserved Reserved Bits Name 0:15 CONG_PERIOD Description This value is programmed by SW to indicate the maximum number of clock cycles that the output buffer can be in a continuous congestion state. The congestion state is determined based on the DEPTH and SPx_RX_Q_STATUS. The programmed CONG_PERIOD value is then used as follows: 0000 = CONG_PERIOD_CTR is disabled. 0001= For every clock cycle (for a 4x port operating at 3.125 Gbaud, this is 3.2 ns) that the output buffer is in continuous congestion state, increment the CONG_PERIOD_CTR by 1. FFFF = For every 64K clock cycles (for a 4x port operating at 3.125 Gbaud, this is 209.7 usec) that the output buffer is in continuous congestion state, increment the CONG_PERIOD_CTR by 1. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 356 12. Serial RapidIO Registers > IDT-Specific Performance Registers (Continued) Bits Name Description Type Reset Value 16:19 DEPTH This number is used to decide the congestion state of the input buffers. If the number of packets in the input queue meets or exceeds this number, the congestion counter is incremented. R/W 0 R 0 0 = Disables congestion monitoring 1 = The congestion counter increments when the buffer fill reaches or exceeds 2 2 = The congestion counter increments when the buffer fill reaches or exceeds 3 …… 7 = the congestion counter increments when the buffer fill reaches 8 8 = Reserved 20:31 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.14 357 RapidIO Port x Receiver Input Queue Congestion Status Register This register is used to monitor data congestion in the input buffer. New packets accumulate in the input buffers, destined for the switching fabric. When the number of buffers in use equals or exceeds the threshold set in DEPTH field of the “RapidIO Port x Receiver Input Queue Depth Threshold Register”, the CONG_CTR field in SPx_R_Q_STATUS is incremented. The CONG_CTR counter value is writable for testing purposes. This counter stops counting when it reaches its maximum value. Writing 1 into the INB_DEPTH (see “RapidIO Port x Interrupt Status Register” on page 326) interrupt status bit causes this counter to be reset to 0. The CONG_CTR is enabled, when CONG_THRESH value is configured to a value other than 0. The CONG_CTR value is decremented by 1 if it is not read within the Error Rate Bias frequency as specified by the ERR_RB field in the “RapidIO Port x Error Rate CSR” on page 304. If the CONG_CTR equals or exceeds the threshold CONG_THRESH, the maskable INB_DEPTH interrupt is generated. Register name: SP{0..15}_RX_Q_STATUS Register offset: 13094, 13194, 13294, 13394, 13494, 13594, 13694, 13794, 13894, 13994, 13A94, 13B94, 13C94, 13D94, 13E94, 13F94 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CONG_CTR 8:15 CONG_CTR 16:23 CONG_THRESH 24:31 CONG_THRESH Bits Name 0:15 CONG_CTR 5 Description Input Queue Depth Count 6 7 Type Reset Value R/W 0x0000 The number of times that the input queue meets or exceeds the threshold DEPTH field of the “RapidIO Port x Receiver Input Queue Depth Threshold Register” on page 355. The count is incremented by 1 when a packet is received. This counter counts up to 0xFFFFand remains at 0xFFFF until reset. The counter is reset when 1 is written to the INB_DEPTH status bit (see “RapidIO Port x Interrupt Status Register” on page 326). The counter is enabled if CONG_THRES is set to a value other than 0. The CONG_CTR value is decremented by 1 if it is not read within the Error Rate Bias frequency as specified by the ERR_RB field in the “RapidIO Port x Error Rate CSR” on page 304. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 358 12. Serial RapidIO Registers > IDT-Specific Performance Registers (Continued) Bits Name 16:31 CONG_THRESH Description Input Queue Depth Threshold Type Reset Value R/W 0x0000 If the CONG_CTR count is equal to the value in this field, an interrupt is reported to the system through the INB_DEPTH status bit in the “RapidIO Port x Interrupt Status Register” on page 326. Setting the CONG_THRESH to zero, disables the CONG_CTR. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > IDT-Specific Performance Registers 12.9.15 359 RapidIO Port x Receiver Input Queue Congestion Period Register This register is used to monitor the duration of time that the input buffer is in congestion state. The CONG_PERIOD_CTR counter value is incremented for every N clock cycles specified by the CONG_PERIOD field in the “RapidIO Port x Receiver Input Queue Depth Threshold Register”, while the input buffer is under congestion state. This counter represents the amount of time that the input buffer is under congestion state. The CONG_PERIOD_CTR counter value is writable for testing purposes. This counter stops counting when it reach its maximum value. Reading the CONG_PRIOD_CTR clears the register. The CONG_PERIOD_CTR can be disabled when the CONG_PERIOD field in the “RapidIO Port x Receiver Input Queue Depth Threshold Register” is set to 0. Register name: SP{0..15}_RX_Q_PERIOD Register offset: 13098, 13198, 13298, 13398, 13498, 13598, 13698, 13798, 13898, 13998, 13A98, 13B98, 13C98, 13D98, 13E98, 13F98 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:7 CONG_PERIOD_CTR 8:15 CONG_PERIOD_CTR 16:23 CONG_PERIOD_CTR 24:31 CONG_PERIOD_CTR Bits Name 0:31 CONG_PERIOD_ CTR 5 Description Input Queue Congestion Period Count 6 7 Type Reset Value R/W 0 Each time the input buffer enters a congestion state, this counter is incremented for every N clock cycles (as specified in CONG_PERIOD field of the “RapidIO Port x Transmitter Output Queue Depth Threshold Register”). This counter counts up to 0xFFFFand remains at 0xFFFF until reset. The counter is reset when read. The counter is enabled if CONG_PERIOD is set to a value other than 0. Note: Reading clears this register Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 360 12.9.16 12. Serial RapidIO Registers > IDT-Specific Performance Registers RapidIO Port x Reordering Counter Register When a packet cannot make forward progress due to internal switching congestion, the internal switching fabric selects packets in an order different from the order in which the packets were received. Each time this happens, it is counted as a “reorder” event in this register. The Input Reordering Threshold (THRESH) defines the number of times the Input Reordering Count is incremented before an interrupt is generated, if enabled (see “RapidIO Port x Interrupt Status Register” on page 326). Register name: SP{0..15}_REORDER_CTR Register offset: 130A0, 131A0, 132A0, 133A0, 134A0, 135A0, 136A0, 137A0, 138A0, 139A0, 13AA0, 13BA0, 13CA0, 13DA0, 13EA0, 13FA0 Reset value: 0x0000_FFFF Bits 0 1 2 3 4 00:7 CTR 8:15 CTR 16:23 THRESH 24:31 THRESH Bits Name 0:15 CTR 5 6 Description Reorder Counter 7 Type Reset Value R/W 0x0000 R/W 0xFFFF This counter is updated every time the input queue is reordered. This counter counts up to 0xFFFFand remains at 0xFFFF until reset. The counter is reset when 1 is written to the INB_RDR status bit in the “RapidIO Port x Interrupt Status Register” on page 326. The counter is enabled if the THRESH is configured to a value other than 0. 16:31 THRESH Input Reordering Threshold When CTR equals THRESH, the maskable interrupt “INB_RDR” in the “RapidIO Port x Interrupt Status Register” on page 326 is generated. Setting the THRESH value to 0 disables the CTR. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 12.10 361 Serial Port Electrical Layer Registers The Serial Port Electrical Layer Registers are not defined in the RapidIO Interconnect Specification (Revision 1.3). They are specific to IDT’s switching products. These registers are reset by the HARD_RST_b reset input signal, as well as when the Tsi578 performs a self-reset. The registers within a port are also reset by a “Port Reset”. For more information on Tsi578 reset implementation and behavior, see “Clocks, Resets and Power-up Options” on page 205. It is possible to override reset values of writable fields, and some read-only fields, using the I2C register loading capability on boot. Refer to “I2C Interface” on page 141 for more information on the use of I2C controller register loading capability. Software must not access reserved addresses or bits, because this can affect device operation in non-deterministic ways. Table 44: IDT-Specific RapidIO Registers Port Register Offset Description BC 10000 Broadcast addresses. These registers affect all the ports. SP0 11000 1x/4x serial port SP1 11100 1x serial port SP2 11200 1x/4x serial port SP3 11300 1x serial port SP4 11400 1x/4x serial port SP5 11500 1x serial port SP6 11600 1x/4x serial port SP7 11700 1x serial port SP8 11800 1x/4x serial port SP9 11900 1x serial port SP10 11A00 1x/4x serial port SP11 11B00 1x serial port SP12 11C00 1x/4x serial port SP13 11D00 1x serial port SP14 11E00 1x/4x serial port SP15 11F00 1x serial port Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 362 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers The registers in the following table are accessible even when the serial RapidIO ports are in reset or powered down. Table 45: Serial Port Electrical Layer Registers 12.10.1 MAC Register Offset Description MAC0 130B0 Ports 0 and 1 MAC2 132B0 Ports 2 and 3 MAC4 134B0 Ports 4 and 5 MAC6 136B0 Ports 6 and 7 MAC8 138B0 Ports 8 and 9 MAC10 13AB0 Ports 10 and 11 MAC12 13CB0 Ports 12 and 13 MAC14 13EB0 Ports 14 and 15 BYPASS_INIT Functionality The traffic affecting SerDes controls are locked by the BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372. The following bits and fields are unlocked when the BYPASS_INIT bit is set to 1: • MPLL_CK_OFF in the SMACx_CFG_GBL register • SERDES_RESET in the SMACx_CFG_GBL register • MPLL_PWRON in the SMACx_CFG_GBL register • TX_EN in the SMACx_CFG_CH3 register • TX_EN in the SMACx_CFG_CH2 register • TX_EN in the SMACx_CFG_CH1 register • TX_EN in the SMACx_CFG_CH0 register • RX_PLL_PWRON in the SMACx_CFG_CH0 register • RX_PLL_PWRON in the SMACx_CFG_CH1 register • RX_PLL_PWRON in the SMACx_CFG_CH2 register • RX_PLL_PWRON in the SMACx_CFG_CH3 register • RX_EN in the SMACx_CFG_CH0 register • RX_EN in the SMACx_CFG_CH1 register • RX_EN in the SMACx_CFG_CH2 register • RX_EN in the SMACx_CFG_CH3 register Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 12.10.2 363 SRIO MAC x SerDes Configuration Channel 0 This register is used to control serial port SerDes channel 0. For more details on port configuration after power down, see “Port Power Down” on page 72. Register name: SMAC{0,2,4,6,8,10,12,14}_CFG_CH0 Register offset: 130B0, 132B0, 134B0, 136B0, 138B0, 13AB0, 13CB0, 13EB0 Reset value: Undefined Bits 0 1 00:07 HALF_RAT E TX_CALC 08:15 Reserved 16:23 RX_PLL_P WRON 24:31 2 Name 0 HALF_RATE 4 TX_EN[2:0] RX_EN 5 6 7 Unused DPLL_RES ET RX_DPLL_MODE[2:0] Bits 3 TX_BOOST[3:0] Reserved TX_CKO_E N RX_EQ_VAL[2:0] LOS_CTL[1:0] Description Baud Rate Control RX_ALIGN _EN Reserved Type Reset Value R/W Undefined R/W 0 0 = Running at 2.5Gbps and 3.125Gbps 1 = Running at 1.25Gbps This bit corresponds to the SerDes PLL divider setting selected by the IO_SPEED field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Caution: This field should not be independently modified. Changing it can lead to unpredictable behavior. 1 TX_CALC Transmitter Calculation A rising edge causes a recalculation of the transmitter attenuation and boost configuration. The rising edge can be generated by writing a 0 and then a 1 to the register bit. 2:7 8 9:11 Unused N/A R/W 0x4 Reserved N/A R 0 R/W 0x3 TX_EN[2:0] Transmitter enable 000 = off, no clocks running 011 = transmitter fully enabled, all clocks running Other values are Reserved. This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 364 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers (Continued) Bits Name 12:15 TX_BOOST[ 3:0] Description Transmit Boost control Type Reset Value R/W 0xC R/W 0x1 R/W 0x1 Programmed boost value (ratio of drive level of transition bit to non-transition bit) is: boost = -20*log(1-(tx_boost[3:0]+0.5)/32)dB, except that setting tx_boost to 0 produces 0dB of boost. This produces results up to 5.75dB in steps of ~0.37dB 16 RX_PLL_PW RON Power up/reset the receive PLL 0 = Rx PLL off 1 = Rx PLL on This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. 17 RX_EN Enable receive clock and data outputs RX_EN can only be asserted when both RX_PLL_PWRON and RX_PLL_STATE are both asserted. Set to 1 to enable Receive Data; 0 to disable Receive Data This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. 18 DPLL_RESE T A rising edge resets the frequency register of the DPLL. The rising edge may be generated by writing a 0 and then a 1 to the register bit. R/W 0x1 19:20 Reserved N/A R/W 0 21:23 RX_EQ_VAL [2:0] Receive Equalization control R/W 0x5 R/W 0x0 R/W 1 R/W 0x0 R/W 1 Internal linear equalizer boost is approximately = (rx_eq_val+1)*0.5dB Example: 3’b100 = 2.5dB boost 24:26 27 28:29 RX_DPLL_M ODE[2:0] DPLL Mode Selection TX_CKO_E N 0 = Port is not in used. LOS_CTL[1: 0] Enable LOS detector and/of filtering of raw LOS output When RX_EN is not asserted, this can change any time. This should not change when RX_EN is asserted, 1 = Power-up clock for Transmit Domain. Must be set 1 even when only one lane is in use. 00 = LOS detector disabled 11 = Heavy filtering for generic LOS signaling Other values are reserved. 30 RX_ALIGN_ EN Enable Word Alignment 0 = Alignment (framer) disabled 1 = Alignment enabled Note: Must be disabled during PRBS test (see “Bit Error Rate Testing (BERT)” on page 80) Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 365 (Continued) Bits 31 Name Reserved Description N/A Type Reset Value R/W 1 Note: Only write 1 to this reserved field. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 366 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 12.10.3 SRIO MAC x SerDes Configuration Channel 1 This register is used to control serial port SerDes channel 1. For more details on port configuration after power down, refer to “Port Power Down” on page 72. Register name: SMAC{0,2,4,6,8,10,12,14}_CFG_CH1 Register offset: 130B4, 132B4, 134B4, 136B4, 138B4, 13AB4, 13CB4, 13EB4 Reset value: Undefined Bits 0 1 00:07 HALF_ RATE TX_CALC 08:15 Reserved 16:23 RX_PLL_P WRON 24:31 2 Name 0 HALF_RATE 4 TX_EN[2:0] RX_EN 5 6 7 Unused DPLL_RES ET RX_DPLL_MODE[2:0] Bits 3 TX_BOOST[3:0] Reserved TX_CKO_ EN RX_EQ_VAL[2:0] LOS_CTL[1:0] RX_ALIGN _EN Description Baud rate control. Reserved Type Reset Value R/W Undefined 0 = Running at 2.5 Gbps and 3.125 Gbps 1 = Running at 1.25 Gbps This bit corresponds to the SerDes PLL divider setting selected by the IO_SPEED field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Caution: This field should not be independently modified. Changing it can lead to unpredictable behavior. 1 2:7 8 9:11 TX_CALC A rising edge causes a recalculation of the transmitter attenuation and boost configuration. The rising edge can be generated by writing a 0 and then a 1 to the register bit. R/W 0 Unused N/A R/W 0x4 Reserved N/A R 0 R/W 0x3 TX_EN[2:0] Transmitter enable 000 = Off, no clocks running 011 = Transmitter fully enabled, all clocks running Other values are Reserved. This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 367 (Continued) Bits Name 12:15 TX_BOOST[ 3:0] Description Transmit Boost control. Programmed boost value (ratio of drive level of transition bit to non-transition bit) is: Type Reset Value R/W 0xC R/W 0x1 R/W 0x1 boost = -20*log(1-(tx_boost[3:0]+0.5)/32)dB, except that setting tx_boost to 0 produces 0dB of boost. This produces results up to 5.75dB in steps of ~0.37dB. 16 RX_PLL_PW RON Power up/reset the receive PLL 0 = Rx PLL off 1 = Rx PLL on This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. 17 RX_EN Enable receive clock and data outputs. RX_EN can only be asserted when both RX_PLL_PWRON and RX_PLL_STATE are both asserted. Set to 1 to enable Receive Data; 0 to disable Receive Data. This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. 18 DPLL_RESE T A rising edge resets the frequency register of the DPLL. The rising edge can be generated by writing a 0 and then a 1 to the register bit. R/W 0x1 19:20 Reserved N/A R/W 0 21:23 RX_EQ_VAL [2:0] Receive Equalization control. Internal linear equalizer boost is approximately = (rx_eq_val+1)*0.5dB R/W 0x5 R/W 0x0 R/W 1 R/W 0x0 R/W 1 R/W 1 For example, 3’b100 = 2.5dB boost 24:26 27 28:29 RX_DPLL_M ODE[2:0] TX_CKO_E N LOS_CTL[1: 0] DPLL Mode selection When RX_EN is not asserted, this can change any time. This should NOT change when RX_EN is asserted, 0= Port is not in use 1 = Power-up clock for Transmit Domain. Must be set to1 even when only 1 lane is in use. Enable LOS detector and/of filtering of raw LOS output 00 = LOS detector disabled 11 = Heavy filtering for generic LOS signaling Other values are reserved. 30 31 RX_ALIGN_ EN Enable Word Alignment Reserved N/A Must be disabled turned off during PRBS test (“Bit Error Rate Testing (BERT)” on page 80) Note: Only write 1 to this reserved field. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 368 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 12.10.4 SRIO MAC x SerDes Configuration Channel 2 This register is used to control serial port SerDes channel 2. For more details on port configuration after power down, refer to “Port Power Down” on page 72. Register name: SMAC{0,2,4,6,8,10,12,14}_CFG_CH2 Register offset: 130B8, 132B8, 134B8, 136B8, 138B8, 13AB8, 13CB8, 13EB8 Reset value: Undefined Bits 0 1 00:07 HALF_ RATE TX_CALC 08:15 Reserved 16:23 RX_PLL_P WRON 24:31 2 Name 0 HALF_RATE 4 TX_EN[2:0] RX_EN 5 6 7 Unused TX_BOOST[3:0] DPLL_RES ET RX_DPLL_MODE[2:0] Bits 3 Reserved TX_CKO_E N RX_EQ_VAL[2:0] LOS_CTL[1:0] RX_ALIGN _EN Description Baud rate control. Reserved Type Reset Value R/W Undefined 0 = Running at 2.5 Gbps and 3.125 Gbps 1 = Running at 1.25 Gbps This bit corresponds to the SerDes PLL divider setting selected by the IO_SPEED field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Caution: This field should not be independently modified. Changing it can lead to unpredictable behavior. 1 2:7 8 9:11 TX_CALC A rising edge causes a recalculation of the transmitter attenuation and boost configuration. The rising edge can be generated by writing a 0 and then a 1 to the register bit. R/W 0 Unused N/A R/W 0x4 Reserved N/A R 0 TX_EN[2:0] Transmitter enable R/W 0x3 000 = Off, no clocks running 011 = Transmitter fully enabled, all clocks running Other values are Reserved. This bit is read only unless SMACx_CFG_GBL[BYPASS_INIT] is set to 1. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 369 (Continued) Bits Name Description Type Reset Value 12:15 TX_BOOST[3 :0] Transmit Boost control. Programmed boost value (ratio of drive level of transition bit to non-transition bit) is: R/W 0xC R/W 0x1 R/W 0x1 boost = -20*log(1-(tx_boost[3:0]+0.5)/32)dB, except that setting tx_boost to 0 produces 0dB of boost. This produces results up to 5.75dB in steps of ~0.37dB. 16 RX_PLL_PW RON Power up/reset the receive PLL 0 = Rx PLL off 1 = Rx PLL on This bit is read only unless SMACx_CFG_GBL[BYPASS_INIT] is set to 1. 17 RX_EN Enable receive clock and data outputs. RX_EN can only be asserted when both rx_pll_pwron and rx_pll_state are both asserted. Set to 1 to enable Receive Data; 0 to disable Receive Data. This bit is read only unless SMACx_CFG_GBL[BYPASS_INIT] is set to 1. 18 DPLL_RESE T A rising edge resets the frequency register of the DPLL. The rising edge can be generated by writing a 0 and then a 1 to the register bit. R/W 0x1 19:20 Reserved N/A R/W 0 21:23 RX_EQ_VAL[ 2:0] Receive Equalization control. Internal linear equalizer boost is approximately = (rx_eq_val+1)*0.5dB R/W 0x5 R/W 0x0 For example, 100 = 2.5dB boost 24:26 RX_DPLL_M ODE[2:0] DPLL Mode selection 27 TX_CKO_EN Set to “1” to power-up clock for Transmit Domain. Set to “0” when port is not in used. Have to be set to “1” even when only 1 lane is in used. R/W 1 28:29 LOS_CTL[1:0 ] Enable LOS detector and/of filtering of raw LOS output R/W 0x0 R/W 1 R/W 1 When RX_EN is not asserted, this can change any time. This should NOT change when RX_EN is asserted, 00 = LOS detector disabled 11 = Heavy filtering for generic LOS signaling Other values are reserved. 30 31 RX_ALIGN_E N Enable Word Alignment Reserved N/A Has to be turned off during PRBS test (“Bit Error Rate Testing (BERT)” on page 80) Note: Only write 1 to this reserved field. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 370 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 12.10.5 SRIO MAC x SerDes Configuration Channel 3 This register is used to control serial port SerDes channel 3. For more details on port configuration after power down, refer to “Port Power Down” on page 72. Register name: SMAC{0,2,4,6,8,10,12,14}_CFG_CH3 Register offset: 130BC, 132BC, 134BC, 136BC, 138BC, 13ABC, 13CBC, 13EBC Reset value: Undefined Bits 0 1 00:07 HALF_ RATE TX_CALC 08:15 Reserved 16:23 RX_PLL_P WRON 24:31 2 Name 0 HALF_RATE 4 TX_EN[2:0] RX_EN 5 6 7 Unused DPLL_RES ET RX_DPLL_MODE[2:0] Bits 3 TX_BOOST[3:0] Reserved TX_CKO_ EN RX_EQ_VAL[2:0] LOS_CTL[1:0] RX_ALIGN _EN Description Baud rate control. Reserved Type Reset Value R/W Undefined 0 = Running at 2.5Gbps and 3.125Gbps 1 = Running at 1.25Gbps This bit corresponds to the SerDes PLL divider setting selected by the IO_SPEED field in the “SRIO MAC x Digital Loopback and Clock Selection Register” on page 377. Caution: This field should not be independently modified. Changing it can lead to unpredictable behavior. 1 2:7 8 9:11 TX_CALC A rising edge causes a recalculation of the transmitter attenuation and boost configuration. The rising edge can be generated by writing a 0 and then a 1 to the register bit. R/W 0 Unused N/A R/W 0x4 Reserved N/A R 0 TX_EN[2:0] Transmitter enable R/W 0x3 000 = off, no clocks running 011 = transmitter fully enabled, all clocks running Other values are Reserved. This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 371 (Continued) Bits Name Description Type Reset Value 12:15 TX_BOOST[ 3:0] Transmit Boost control. Programmed boost value (ratio of drive level of transition bit to non-transition bit) is: R/W 0xC R/W 0x1 R/W 0x1 R/W 0x1 boost = -20*log(1-(tx_boost[3:0]+0.5)/32)dB, except that setting tx_boost to 0 produces 0dB of boost. This produces results up to 5.75dB in steps of ~0.37dB. 16 RX_PLL_PW RON Power up/reset the receive PLL 0 = Rx PLL off 1 = Rx PLL on This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. 17 RX_EN Enable receive clock and data outputs. rx_en can only be asserted when both rx_pll_pwron and rx_pll_state are both asserted. The bit is set to 1 to enable Receive Data and 0 to disable Receive Data. This bit is read only unless BYPASS_INIT bit “SRIO MAC x SerDes Configuration Global” on page 372 is set to 1. 18 DPLL_RESE T A rising edge resets the frequency register of the DPLL. 19:20 Reserved N/A R/W 0 21:23 RX_EQ_VAL[ 2:0] Receive Equalization control. Internal linear equalizer boost is approximately = (rx_eq_val+1)*0.5dB R/W 0x5 R/W 0x0 R/W 1 R/W 0x0 R/W 1 R/W 1 The rising edge can be generated by writing a 0 and then a 1 to the register bit. For example, 3’b100 = 2.5dB boost 24:26 27 RX_DPLL_M ODE[2:0] TX_CKO_EN DPLL Mode selection When RX_EN is not asserted, this can change any time. This should not change when RX_EN is asserted, 0 =Port is not in used 1 = Power-up clock for Transmit Domain. Have to be set to 1 even when only 1 lane is in used. 28:29 LOS_CTL[1:0 ] Enable LOS detector and/of filtering of raw LOS output 00 = LOS detector disabled 11 = Heavy filtering for generic LOS signaling Other values are reserved. 30 31 RX_ALIGN_ EN Enable Word Alignment Reserved N/A This bit must be disabled during PRBS test (“Bit Error Rate Testing (BERT)” on page 80) Note: Only write 1 to this reserved field. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 372 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 12.10.6 SRIO MAC x SerDes Configuration Global This register configures the SerDes of all four lanes of each port. Register name: SMAC{0,2,4,6,8,10,12,14}_CFG_GBL Register offset: 130C0, 132C0, 134C0, 136C0, 138C0, 13AC0, 13CC0, 13EC0 Reset value: undefined Bits 0 1 2 00:07 SERDES_R STN BYPASS_I NIT Reserved 3 4 5 6 TX_LVL[4:0] 08:15 Reserved ACJT_LVL[4:0] 16:23 Reserved LOS_LVL[4:0] 24:31 MPLL_PW R_ON MPLL_CK_ OFF Reserved Type Reset Value R/W 1 R/W 0 R 0 R/W 0x0A N/A R/W 0 ACJT Receiver Comparator Level R/W 0x06 R 0x0 Bits Name 0 SERDES_RS TN Active low reset signal to the SerDes BYPASS_INI T Control bit to bypass initialization logic 1 7 Description This bit is read only unless BYPASS_INIT is set to 1. 0 = (default) SerDes initialization is determined by SP_IO_SPEED[1,0] 1 = Bypass initialization logic set by the SP_IO_SPEED[1,0] pins and allow direct control to SerDes. See “BYPASS_INIT Functionality” on page 362 for more information on this bit. 2 Reserved 3:7 TX_LVL[4:0] N/A Fine Resolution setting of Tx signal level. Equation: Pk-Pk output level (without attenuation) = 1230 x (48 + tx_lvl/2)/63.5 mV Vdiff-pp Note: TX_LVL should be set to >= 0b01010 (which results in an output of 1Vp-p). Refer to Table 46 on page 373 for more information on available settings. 8:10 Reserved 11:15 ACJT_LVL[4: 0] 16:18 Reserved Tsi578 User Manual June 6, 2016 This sets the hysterisis level for AC JTAG (Table 47 on page 374). Refer to IEEE 1149.6 for setting the correct voltage levels. N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 373 (Continued) Bits Name Description 19:23 LOS_LVL[4:0 ] Control the LOS detection threshold. Type Reset Value R/W 0x0 R/W 1 R/W 0 R/W Undefined Level at which LOS is asserted falls between the programmed threshold + 2mV and programmed threshold + 55mV. Programmed threshold = ((LOS_LVL+1)/(32*16))*1.21 Vpk 24 MPLL_PWR_ ON 0 = power down 1 = normal operation This bit is read only unless BYPASS_INIT is set to 1. 25 MPLL_CK_O FF 0 = Turns on the MPLL clock 1 = Stops the reference clock This bit is read only unless BYPASS_INIT in is set to 1. 26:31 Reserved N/A The reserved bits in this register are connected to signals that are configuration dependent. Table 46: TX_LVL Values TX_LVL Value TX_LVL[0:4] Vdiff-pp (mV) 0 0x00 5'b00000 929.8 1 0x01 5'b00001 939.4 2 0x02 5'b00010 949.1 3 0x03 5'b00011 958.8 4 0x04 5'b00100 968.5 5 0x05 5'b00101 978.2 6 0x06 5'b00110 987.9 7 0x07 5'b00111 997.6 8 0x08 5'b01000 1007.2 9 0x09 5'b01001 1016.9 10 0xA 5'b01010 1026.6 11 0xB 5'b01011 1036.3 12 0xC 5'b01100 1046.0 13 0xD 5'b01101 1055.7 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 374 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers Table 46: TX_LVL Values TX_LVL Value TX_LVL[0:4] Vdiff-pp (mV) 14 0xE 5'b01110 1065.4 15 0xF 5'b01111 1075.0 16 0x10 5'b10000 1084.7 17 0x11 5'b10001 1094.4 18 0x12 5'b10010 1104.1 19 0x13 5'b10011 1113.8 20 0x14 5'b10100 1123.5 21 0x15 5'b10101 1133.1 22 0x16 5'b10110 1142.8 23 0x17 5'b10111 1152.5 24 0x18 5'b11000 1162.2 25 0x19 5'b11001 1171.9 26 0x1A 5'b11010 1181.6 27 0x1B 5'b11011 1191.3 28 0x1C 5'b11100 1200.9 29 0x1D 5'b11101 1210.6 30 0x1E 5'b11110 1220.3 31 0x1F 5'b11111 1230.0 Table 47: AC JTAG level programmed by ACJT_LVL[4:0] Tsi578 User Manual June 6, 2016 ACJT_LVL[4:0] Vmin level peak-to-peak differential (mV) Vmin level peak single-ended (mV) 5’h02 310 77 5’h03 353 80 5’h04 395 100 5’h05 437 111 5’h06 478 121 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 375 Table 47: AC JTAG level programmed by ACJT_LVL[4:0] ACJT_LVL[4:0] Vmin level peak-to-peak differential (mV) Vmin level peak single-ended (mV) 5’h07 521 133 5’h08 563 144 5’h09 605 155 5’h0A 648 165 5’h0B 692 176 5’h14 605 100 5’h15 670 111 5’h16 735 121 5’h17 800 133 5’h18 865 144 5’h19 932 155 5’h1A 997 165 5’h1B 1065 3176 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 376 12.10.7 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers SRIO MAC x SerDes Configuration GlobalB This register configures the SerDes of all four ports. Register name: SMAC{0,2,4,6,8,10,12,14}_CFG_GBLB Register offset: 130C4, 132C4, 134C4, 136C4, 138C4, 13AC4, 13CC4, 13EC4 Reset value: 0x0023_014F Bits 0 1 2 3 00:07 08:15 4 5 6 7 Reserved Reserved MPLL_PRESCALE[1:0] 16:23 Unused Unused 24:31 Unused Bits Name 0:9 Reserved 10:11 MPLL_PRES CALE[1:0] Reserved Description Reserved Controls the MPLL’s REF_CLK prescaler. Type Reset Value R 0 R/W 0x2 Should be set to 2’b10 in Tsi578. Mapping: 00 = Reserved 01 = Reserved 10 = Divide REF_CLK by 2 11 = Unused Transition only during RESET or when the MPLL Is disabled. 12:25 Unused N/A R/W 0xC05 26:31 Reserved N/A R 0x0F Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 12.10.8 377 SRIO MAC x Digital Loopback and Clock Selection Register This register consists of controls for Dead Link Timer and Digital Equipment Loopback (TX -> RX) as well as clock selection on a per port basis. Register name: SMAC{0,2,4,6,8,10,12,14}_DLOOP_CLK_SEL Register offset:130C8, 132C8, 134C8, 136C8, 138C8, 13AC8, 13CC8, 13EC8 Reset value: Undefined Bits 0 00:07 DLT_EN 1 2 4 5 6 7 Reserved MAC_MOD E DLB_ ODD_EN DLB_ EVEN_EN PWDN_X1 PWDN_X4 DLT_THRESH 08:15 DLT_THRESH 16:23 24:31 3 LINE_LB[3:0] SWAP_TX Bits Name 0 DLT_EN SWAP_RX SOFT_RST _X1 SOFT_RST _X4 Description Dead Link Timer Enable IO_SPEED Type Reset Value R/W 0 R/W 0x7FFF 0 = Disabled (default) 1 = Enabled This timer is used to determine when a link is powered-up and enabled, but dead (that is, there is no link partner responding). When a link is declared dead, the transmitting port on the Tsi578 removes all packets from its transmit queue and ensure that all new packets sent to port are dropped rather than placed in the transmit queue. This feature affects both RapidIO ports sharing the MAC. This feature is not limited to lane 0 of the SerDes. 1:15 DLT_ THRESH Dead Link Timer Threshold Each time a silence is detected on a link, the counter is reloaded from this register and starts to count down. When the count reaches 0, the link is declared dead, which means that all packets are flushed from the transmit queue and no new packets are admitted to the queue until the link comes up. The duration of the dead link timer is computed as: 2^^13 * (DLT_THRESH +1) * P_CLK period. If DLT_THRESH = 0, even when DLT_EN = 1, the counter is still disabled. duration = 8192*(DLT_TRESH + 1) * 10nS default time = 2.68 sec If DLT_THRESH = 1, time = 164uS. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 378 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers (Continued) Bits Name 16:19 LINE_LB Type Reset Value R/W 0 N/A R/W 0 After the Tsi578 is reset, this field reflects the configuration of the SPx_MODESEL. Writing to this register overrides the pin settings of SPx_MODESEL. R/W 0 R/W 0 R/W 0 R/W Undefined R/W Undefined R/W 0 Description Line Loopback 0 = Disabled 1 = Enabled Line Loopback LINE_LB[3..0] = lane[D, C, B, A] Caution: This function is available but its use is not recommended as CDR and elastic buffering from receive to transmit is not available. 20 Reserved 21 MAC_MODE 0 = MAC supports a single 1x/4x port. 1 = MAC supports two independent 1x ports. 22 DLB_ODD_E N Digital Equipment Loopback Mode Odd-numbered Port Digital equipment loopback mode connects Tx data flow to Rx data flow before the 8B10B encoder/decoder. 0 = Normal operation 1 = Loopback enabled for the odd numbered port served by this MAC. Note: The loopback path does not include the 8b/10B encoder/decoder. For more information, refer to “Port Loopback Testing” on page 79. 23 DLB_EVEN_ EN Digital Equipment Loopback Mode Even-numbered Port Digital equipment loopback mode connects Tx data flow to Rx data flow before the 8B10b encoder/decoder. 0 = Normal operation 1 = Loopback enabled for the even-numbered port served by this MAC. The loopback path does not include the 8b/10B encoder/decoder. For more information, refer to “Port Loopback Testing” on page 79. 24 SWAP_TX Software control for transmitter lane swap functionality for this MAC. Initially, this field reflects the sampled value of the SP_TX_SWAP pin. 0 = A, B, C, D 1 = D, C, B, A 25 SWAP_RX Software control for receiver lane swap functionality for this MAC. Initially, this field reflects the sampled value of the SP_RX_SWAP pin. 0 = A, B, C, D 1 = D, C, B, A 26 SOFT_RST_ X1 Software reset control for the odd-numbered port. 0 = Normal mode of operation 1 = Odd-numbered port held in reset Note: This bit only affects the port logic and per-port registers; it does not reset the SerDes. In order to perform a per-port reset for an odd-numbered port, the PWDN_X1 bit must be used. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Serial Port Electrical Layer Registers 379 (Continued) Bits Name 27 SOFT_RST_ X4 Description Software reset control for the even-numbered port. Type Reset Value R/W 0 R/W Undefined R/W Undefined R/W Undefined 0 = Normal mode of operation 1 = Even-numbered port held in reset Note: This bit only affects the port logic and per-port registers; it does not reset the SerDes. In order to perform a per-port reset for an even-numbered port, the PWDN_X4 bit must be used. 28 PWDN_X1 Power down control for the odd-numbered port using this MAC. Initially, this field reflects the sampled value of the SPx_PWDN pin, where “x” is 1, 3, 5,..., 15. Writing to this register overrides the configuration provided by the pin. 0 = Normal mode of operation 1 = Port powered down 29 PWDN_X4 Power down control for even-numbered ports using this MAC. Initially, this field reflects the sampled value of the SPx_PWDN pin, where “x” is 0, 2, 4,..., 14. Writing to this register overrides the configuration provided by the odd numbered pins connected to this MAC. 0 = Normal mode of operation 1 = Even numbered port is powered down, odd numbered port is reset 30:31 IO_SPEED This field determines the lane speed for the serial port: 00 = 1.25Gbps 01 = 2.5Gbps 10 = 3.125Gbps 11 = Reserved Note: This field reflects the value on SP_IO_SPEED after reset. Writing to this register overrides a power up value of SP_IO_SPEED speed selection. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 380 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers 12.11 Internal Switching Fabric (ISF) Registers These registers provide control and status information concerning time-out errors in data crossing the internal switching fabric. 12.11.1 Fabric Control Register The TEA signal is asserted when a timeout is detected on the ISF due to the requested destination being blocked. When this signal is asserted, it indicates to the source of the transaction that the requested transaction could not be completed and is removed from the request queue. The TEA error is reported through a port-write and/or an interrupt. Register name: FAB_CTL Register offset: 1AA00 Reset value: 0x0F01_0200 Bits 0 1 00:07 08:15 2 3 4 5 Reserved RDR_LIMIT _EN Reserved IN_ARB_MODE TEA_OUT[15:8] 24:31 TEA_OUT[7:0] Name 0:3 Reserved 4:7 RDR_LIMIT 7 TEA_INT_E N TEA_EN RDR_LIMIT 16:23 Bits 6 Reserved Description N/A Reorder Limit Type Reset Value R 0x0 R/W 0xF R/W 0 R 0 When packets arrive at an ingress port they are sent to the fabric in order. The fabric can change the order due to packet priority (if enabled through IN_ARB_MODE), and the fabric can change the order to avoid head-of-line blocking. For the latter case, a limit can be placed on the number of times a packet allows a lower or same priority packet to be placed ahead of it. This can be used to provide an upper bound on packet latency. If RDR_LIMIT_EN is set to 1, then the value in RDR_LIMIT is the maximum number of times a packet with lower or same priority can be moved ahead of a packet. 8 RDR_LIMIT _EN Reorder Limit Enable. 0 = No limit 1 = Reordering of lower or same priority packets is limited by the value in RDR_LIMIT (recommended) 9 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers Bits Name 10:11 IN_ARB_M ODE Description Input Arbitration Mode. 381 Type Reset Value R/W 0 R 0 R/W 0 R/W 1 R/W 0x0200 This field selects the arbitration scheme used by the fabric’s ingress arbiters. 0 = First-come, first-served 1 = Strict Priority 1 2 = Reserved 3 = Strict Priority 2 12:13 Reserved 14 TEA_INT_E N N/A Interrupt Enable for TEA 0 = Disabled 1 = An interrupt is produced when a TEA event occurs. 15 TEA_EN TEA Enable. 0 = TEA timer is disabled, similar to writing all 0s to the TEA_OUT field. 1 = TEA timer is enabled. 16:31 TEA_OUT[1 5:0] TEA Period This value is multiplied by 2^15 to determine the number of ISF clock cycles a request waits for an acknowledge before a transaction error acknowledge (TEA) occurs. For example, assume the ISF clock is operating at maximum frequency of 156.25 MHz, and TEA_OUT is at its default value of 0x0200. The TEA timeout period is: (0x0200) * 2^15 * 6.4 ns = 107.4 ms. A value of 0x0000 disables the TEA timer. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 382 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers 12.11.2 Fabric Interrupt Status Register This register contains a status bit for every port on the fabric. The status bits indicate on which port(s) a Transaction Error Acknowledge (TEA) has occurred. Writing 1 to a bit clears it. The status bits are “ORed” together to produce the IRQ signal. Register name: FAB_INT_STAT Register offset: 1AA04 Reset value: 0x0000_0000 Bits 0 1 2 3 00:07 Reserved 08:15 Reserved 4 5 6 7 16:23 PORT15_I RQ PORT14_I RQ PORT13_I RQ PORT12_I RQ PORT11_IR Q PORT10_I RQ PORT9_IR Q PORT8_IR Q 24:31 PORT7_IR Q PORT6_IR Q PORT5_IR Q PORT4_IR Q PORT3_IR Q PORT2_IR Q PORT1_IR Q PORT0_IR Q Bits Name 0:15 Reserved 16 PORT15_IRQ Description N/A Serial Port 15 IRQ Type Reset Value R 0 R/W1C 0 Indicates that a TEA has occurred on this port. Writing a 1 to this bit clears it and causes the IRQ signal to be de-asserted. 17 PORT14_IRQ Serial Port 14 IRQ R/W1C 0 18 PORT13_IRQ Serial port 13 IRQ R/W1C 0 19 PORT12_IRQ Serial port 12 IRQ R/W1C 0 20 PORT11_IRQ Serial port 11 IRQ R/W1C 0 21 PORT10_IRQ Serial port 10 IRQ R/W1C 0 22 PORT9_IRQ Serial port 9 IRQ R/W1C 0 23 PORT8_IRQ Serial port 8 IRQ R/W1C 0 24 PORT7_IRQ Serial port 7 IRQ R/W1C 0 R/W1C 0 Indicates that a TEA has occurred on this port. Writing a 1 to this bit clears it and causes the IRQ signal to be de-asserted. 25 PORT6_IRQ Tsi578 User Manual June 6, 2016 Serial port 6 IRQ Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers 383 (Continued) Type Reset Value Serial port 5 IRQ R/W1C 0 PORT4_IRQ Serial port 4 IRQ R/W1C 0 28 PORT3_IRQ Serial port 3 IRQ R/W1C 0 29 PORT2_IRQ Serial port 2 IRQ R/W1C 0 30 PORT1_IRQ Serial port 1 IRQ R/W1C 0 31 PORT0_IRQ Serial port 0 IRQ R/W1C 0 Bits Name 26 PORT5_IRQ 27 Description Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 384 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers 12.11.3 RapidIO Broadcast Buffer Maximum Latency Expired Error Register This register is a bit vector of ports which have had their maximum latency timer expire. If the AUTODEAD bit is set in the “RapidIO Multicast Maximum Latency Counter CSR” on page 396, these ports do not receive multicast packets from the broadcast buffers. Setting any of these bits cause an exception in the Global Interrupt Mask Status. For more information, refer to “RapidIO Multicast Maximum Latency Counter CSR” on page 396. Register name: RIO_MC_LAT_ERR Register offset: 1AA08 Reset value: 0x0000_0000 Bits 0 1 2 3 00:07 Reserved 08:15 Reserved 4 5 6 7 16:23 P15_ERR P14_ERR P13_ERR P12_ERR P11_ERR P10_ERR P9_ERR P8_ERR 24:31 P7_ERR P6_ERR P5_ERR P4_ERR P3_ERR P2_ERR P1_ERR P0_ERR Type Reset Value R 0 Port 15 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 P14_ERR Port 14 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 18 P13_ERR Port 13 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 19 P12_ERR Port 12 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 20 P11_ERR Port 11 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 21 P10_ERR Port 10 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 22 P9_ERR Port 9 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 23 P8_ERR Port 8 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 24 P7_ERR Port 7 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 Bits Name 0:15 Reserved N/A 16 P15_ERR 17 Tsi578 User Manual June 6, 2016 Description Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers 385 (Continued) Bits Name Description Type Reset Value 25 P6_ERR Port 6 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 26 P5_ERR Port 5 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 27 P4_ERR Port 4 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 28 P3_ERR Port 3 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 29 P2_ERR Port 2 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 30 P1_ERR Port 1 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 31 P0_ERR Port 0 violated the maximum multicast latency time, and will not be multicast to. R/W1C 0 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 386 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers 12.11.4 RapidIO Broadcast Buffer Maximum Latency Expired Override Writing to this register causes the corresponding bits in the “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384 to be set. This bit causes the corresponding broadcast buffer to be purged of all data currently held in the broadcast buffer. Any packet in the process of being transferred to the broadcast buffer is purged as well. The packet being sent out from the broadcast buffer, however, finishes transmission and is not purged. If the AUTODEAD bit is set in the “RapidIO Multicast Maximum Latency Counter CSR” on page 396, the ports are prevented from receiving multicast packets. Register name: RIO_MC_LAT_ERR_SET Register offset: 1AA0C Reset value: 0x0000_0000 Bits 0 1 2 3 00:07 Reserved 08:15 Reserved 4 5 6 7 16:23 P15_SET P14_SET P13_SET P12_SET P11_SET P10_SET P9_SET P8_SET 24:31 P7_SET P6_SET P5_SET P4_SET P3_SET P2_SET P1_SET P0_SET Bits Name 0:15 Reserved N/A 16 P15_SET 17 Type Reset Value R 0 Port 15 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 P14_SET Port 14 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 18 P13_SET Port 13 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 19 P12_SET Port 12 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 20 P11_SET Port 11 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 21 P10_SET Port 10 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 22 P9_SET Port 9 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 23 P8_SET Port 8 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 Tsi578 User Manual June 6, 2016 Description Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Internal Switching Fabric (ISF) Registers 387 (Continued) Bits Name Description Type Reset Value 24 P7_SET Port 7 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 25 P6_SET Port 6 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 26 P5_SET Port 5 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 27 P4_SET Port 4 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 28 P3_SET Port 3 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 29 P2_SET Port 2 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 30 P1_SET Port 1 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 31 P0_SET Port 0 multicast mask is overridden once, every time this bit is written as a 1. R/W1S 0 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 388 12. Serial RapidIO Registers > Utility Unit Registers 12.12 Utility Unit Registers The utility block contains global registers for interrupts and clocking. 12.12.1 Global Interrupt Status Register This register indicates which block within the Tsi578 has generated an interrupt. The interrupt requests from a given block are “ORed” together and the value of the output is reflected in this register. Register name: GLOB_INT_STATUS Register offset: 1AC00 Reset value: 0x0000_0000 Bits 0 1 00:07 2 3 Reserved 08:15 4 5 6 7 RCS MCS I2C TEA MC_LAT Reserved Reserved 16:23 PORT15 PORT14 PORT13 PORT12 PORT11 PORT10 PORT9 PORT8 24:31 PORT7 PORT6 PORT5 PORT4 PORT3 PORT2 PORT1 PORT0 Type Reset Value R 0 Bits Name 0:3 Reserved Description N/A Note: These upper 4 bits are reserved in order to be compatible with the I2C IP. Refer to the I2C Chapter. 4 RCS Combined 4 Reset Control Symbols interrupt status from all ports R 0 5 MCS Combined Multicast-Event Control Symbol interrupt status from all ports R 0 6 I2C I2C Interrupt Port R 0 7 TEA TEA occurred in fabric. See “Fabric Interrupt Status Register” on page 382) to determine what port(s) experienced the TEA. R 0 8:13 Reserved N/A R 0 14 MC_LAT At least one broadcast buffer has exceeded its maximum multicast latency timeout. Refer to “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384 to find out which ports have experienced this error. R 0 15 Reserved N/A R 0 16 PORT15 Port 15 Interrupt R 0 17 PORT14 Port 14 Interrupt R 0 18 PORT13 Port 13 Interrupt R 0 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Utility Unit Registers 389 (Continued) Type Reset Value Port 12 Interrupt R 0 PORT11 Port 11 Interrupt R 0 21 PORT10 Port 10 Interrupt R 0 22 PORT9 Port 9 Interrupt R 0 23 PORT8 Port 8 Interrupt R 0 24 PORT7 Port 7 Interrupt R 0 25 PORT6 Port 6 Interrupt R 0 26 PORT5 Port 5 Interrupt R 0 27 PORT4 Port 4 Interrupt R 0 28 PORT3 Port 3 Interrupt R 0 29 PORT2 Port 2 Interrupt R 0 30 PORT1 Port 1 Interrupt R 0 31 PORT0 Port 0 Interrupt R 0 Bits Name 19 PORT12 20 Description Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 390 12. Serial RapidIO Registers > Utility Unit Registers 12.12.2 Global Interrupt Enable Register This register allows an internal interrupt request to signal an external interrupt through the INT_b pin. Register name: GLOB_INT_ENABLE Register offset: 1AC04 Reset value: 0x0000_0000 Bits 0 1 00:07 2 3 Reserved 08:15 4 5 6 7 RCS_EN MCS_EN I2C_EN TEA_EN MC_LAT_E N Reserved Reserved 16:23 PORT15_ EN PORT14_ EN PORT13_ EN PORT12_ EN PORT11_ EN PORT10_ EN PORT9_EN PORT8_EN 24:31 PORT7_EN PORT6_EN PORT5_EN PORT4_EN PORT3_EN PORT2_EN PORT1_EN PORT0_EN Type Reset Value R 0 Four Reset Control Symbols Interrupt Enable R/W 0 Multicast Event Control Symbol Interrupt Enable R/W 0 I2C_EN I2C Interrupt Port Enable R/W 0 7 TEA_EN TEA interrupt Enable R/W 0 8:13 Reserved N/A R 0 14 MC_LAT_EN R/W 0 15 Reserved R 0 16 PORT15_EN Port 15 Interrupt Enable R/W 0 17 PORT14_EN Port 14 Interrupt Enable R/W 0 18 PORT13_EN Port 13 Interrupt Enable R/W 0 19 PORT12_EN Port 12 Interrupt Enable R/W 0 20 PORT11_EN Port 11 Interrupt Enable R/W 0 21 PORT10_EN Port 10 Interrupt Enable R/W 0 22 PORT9_EN Port 9 Interrupt Enable R/W 0 23 PORT8_EN Port 8 Interrupt Enable R/W 0 Bits Name 0:3 Reserved N/A 4 RCS_EN 5 MCS_EN 6 Tsi578 User Manual June 6, 2016 Description Multicast Latency Interrupt Enable N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Utility Unit Registers 391 (Continued) Type Reset Value Port 7 Interrupt Enable R/W 0 PORT6_EN Port 6 Interrupt Enable R/W 0 26 PORT5_EN Port 5 Interrupt Enable R/W 0 27 PORT4_EN Port 4 Interrupt Enable R/W 0 28 PORT3_EN Port 3 Interrupt Enable R/W 0 29 PORT2_EN Port 2 Interrupt Enable R/W 0 30 PORT1_EN Port 1 Interrupt Enable R/W 0 31 PORT0_EN Port 0 Interrupt Enable R/W 0 Bits Name 24 PORT7_EN 25 Description Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 392 12.12.3 12. Serial RapidIO Registers > Utility Unit Registers RapidIO Port-Write Timeout Control Register This register defines port-write time-out value. Whenever a port-write is pending, this timer begins counting. When this timer expires and the port write has not yet been cleared, another port-write is sent and the timer begins counting again. Register name: RIO_PW_TIMEOUT Register offset: 1AC14 Reset value: 0x0000_0000 Bits 0 00:07 1 2 3 4 PW_TIMER Reserved 16:23 Reserved 24:31 Reserved Name 0:3 PW_TIMER 6 7 Reserved 08:15 Bits 5 Description Port-write Timer Type Reset Value R/W 0 R 0 This field defines the time period to repeat sending an error reporting port-write request for software assistance. The timer is stopped by software writing to the error detect registers. The timeout value is computed by = {[167772160 ns x pw_timer_value (in decimal)] + 2x(10 ns)}, where 10 ns = clock cycle period of the AMBA clk Register Bus frequency - 100 MHz 0000 = Disabled and a port-write is sent once per event. 0001 = 167.7ms 0010 = 335.5ms 0100 = 671.1ms 1000 = 1.34s 1111 = 1.3us (Debug only) Other values are reserved. 4:31 Reserved Tsi578 User Manual June 6, 2016 N/A Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Utility Unit Registers 12.12.4 393 RapidIO Port Write Outstanding Request Register This register displays the port number that has an outstanding port-write still in the port-write arbiter. After a port-write is sent, any remaining port-write requests from any port sets a bit in the register. Register name: RIO_PW_OREQ_STATUS Register offset: 1AC18 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 PORTX_OREG 24:31 PORTX_OREG Bits Name 0:15 Reserved 16:31 PORTX_OREG 5 6 7 Type Reset Value N/A R 0 Port x Port Write Outstanding Request R 0 Description When a bit is set, it indicates that an outstanding port-write still exists in the port-write arbiter. Bit 31 is Port 0. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 394 12.12.5 12. Serial RapidIO Registers > Utility Unit Registers MCES Pin Control Register This register controls the operation of the MCES pin. Register name: MCES_PIN_CTRL Register offset: 130D0 Reset value: 0x0000_0000 Bits 00:07 0 1 2 Reserved 3 4 MCES_CTRL Reserved 16:23 Reserved 24:31 Reserved Name 0:1 Reserved 2:3 MCES_CTRL 6 7 Reserved 08:15 Bits 5 Description N/A MCES Pin Control Type Reset Value R 0 R/W 0 R 0 00 = Disabled. The MCES pin does not affect generation or receipt of Multicast Event Control Symbol 01 = MCES pin is an input (see “Generating an MCS” on page 56) 10 = MCES pin is an output (see “MCS Reception” on page 55) 11 = Reserved 4:31 Reserved N/A Changing MCES_CTRL setting during operation may result in spurious Multicast Event Control Symbols being sent. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Multicast Registers 395 12.13 Multicast Registers 12.13.1 RapidIO Multicast Register Version CSR This register identifies the multicast register interface version of the IDT specific registers that is supported by this device. Register name: RIO{0..15}_MC_REG_VER Register offset: 1B000,1B100, 1B200, 1B300, 1B400, 1B500, 1B600, 1B700, 1B800, 1B900, 1BA00, 1BB00, 1BC00, 1BD00, 1BE00, 1BF00 Reset value: 0x0000_0001 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 REG_VER Bits Name 0:23 Reserved 24:31 REG_VER 5 6 7 Type Reset Value N/A R 0 IDT MC Register Interface Version supported by this device R 0x01 Description Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 396 12. Serial RapidIO Registers > Multicast Registers 12.13.2 RapidIO Multicast Maximum Latency Counter CSR This register identifies the maximum time a packet copy can wait at the head of a broadcast buffer. If this time limit is exceeded the multicast packet and packet copies in flight to the broadcast buffer are dropped, and an interrupt is raised/port-write packet sent. Optionally, the port is removed from future multicast operations until software clears the error. Register name: RIO{0..15}_MC_LAT_LIMIT Register offset: 1B004,1B104, 1B204, 1B304, 1B404, 1B504, 1B604, 1B704, 1B804, 1B904, 1BA04, 1BB04, 1BC04, 1BD04, 1BE04, 1BF04 Reset value: 0x0000_0000 Bits 0 00:07 AUTODEA D 1 2 3 4 MAX_MC_LAT 16:23 MAX_MC_LAT 24:31 MAX_MC_LAT 0 Name AUTODEA D 6 7 Reserved 08:15 Bits 5 Description Remove Port from Multicast if Latency Timer Expires Enable Type Reset Value R/W 0 R 0 R/W 0 0 = Do not remove port from multicast operations if the multicast maximum latency timer expires for this port. 1 = Remove this port from future multicast operations if the multicast maximum latency timer expires for this port. 1:7 Reserved N/A 8:31 MAX_MC_L AT The time period after which the oldest packet copy residing in the broadcast buffer is deemed to have expired. If MAX_MC_LAT == 0x0000, the multicast maximum latency feature is disabled. The timeout period is: 6.4ns * MAX_MC_LAT When the multicast maximum latency counter expires, all packet copies in the broadcast buffer are discarded. Packet copies that have been partially transferred to the broadcast buffer are also discarded. A port-write packet or interrupt may be issued to report an error. Optionally, the port may be removed from future multicast operations until software recovers the port. Ports whose maximum latency timer have expired are marked in the “RapidIO Broadcast Buffer Maximum Latency Expired Error Register” on page 384. Note: If MAX_MC_LAT is set to its maximum value, it is equivalent to the maximum time-to-live timeout value for packets. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Multicast Registers 12.13.3 397 RapidIO Port x ISF Watermarks This register controls egress buffer allocation for reception of packets from ISF for each port. Register name: SP{0..15}_ISF_WM Register offset: 1B008,1B108, 1B208, 1B308, 1B408, 1B508, 1B608, 1B708, 1B808, 1B908, 1BA08, 1BB08, 1BC08, 1BD08, 1BE08, 1BF08 Reset value: 0x0001_0203 Bits 0 1 2 00:7 3 4 5 6 7 Reserved 8:15 Reserved PRIO2WM 16:23 Reserved PRIO1WM 24:31 Reserved PRIO0WM Bits Name Description 0:12 Reserved N/A 13:15 PRIO2WM Priority 2 packets are accepted if the number of free buffer is greater than this value. This value must be smaller than PRIO1WM. Type Reset Value R 0 R/W 0x1 R 0 R/W 0x2 R 0 R/W 0x3 Note: It is a programming error for this value to be either greater than or equal to PRIO1WM or PRIO0WM, or greater than 7. 16:20 Reserved N/A 21:23 PRIO1WM Priority 1 packets are accepted if the number of free buffer is greater than this value. This value must be smaller than PRIO0WM. Note: It is a programming error for this value to be either greater than or equal to PRIO0WM, or greater than 7. 24:28 Reserved N/A 29:31 PRIO0WM Priority 0 packets are accepted if the number of free buffer is greater than this value. Note: It is a programming error for this value to be greater than 7. This register must only be programmed after reset and not while traffic is flowing. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 398 12. Serial RapidIO Registers > Multicast Registers 12.13.4 Port x Prefer Unicast and Multicast Packet Prio 0 Register This register is used by the egress arbitration to control desired percentage of packets of either multicast or unicast within the same priority group. For more information, refer to “Arbitration for Egress Port” on page 92. Register name: SP{0..15}_WRR_0 Register offset: 1B010,1B110, 1B210, 1B310, 1B410, 1B510, 1B610, 1B710, 1B810, 1B910, 1BA10, 1BB10, 1BC10, 1BD10, 1BE10, 1BF10 Reset value: 0x0000_0000 Bits 0 1 2 00:07 3 4 5 Reserved 08:15 Reserved 16:23 Reserved 24:31 Reserved 6 7 WRR_EN CHOOSE_ UC WEIGHT Bits Name Description Type Reset Value 0:5 Reserved N/A R 0 6 WRR_EN R/W 0 R/W 0 R 0 R/W 0 Weighted Round Robin Enable 0 = Weighted Round Robin is disabled and no preference is given to multicast nor unicast packets. The registers WEIGHT and CHOOSE_UC have no effect. 1= Weight Round Robin is enabled and the WEIGHT field is applied to the preferred traffic chosen by CHOOSE_UC. 7 CHOOSE_UC Set the preferred traffic type within the same priority group. 0 = Multicast 1 = Unicast 8:27 Reserved N/A 28:31 WEIGHT This sets the number of packets of the chosen type to be sent between non-chosen type. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Multicast Registers 12.13.5 399 Port x Prefer Unicast and Multicast Packet Prio 1 Register This register is used by the egress arbitration to control desired percentage of packets of either multicast or unicast within the same priority group. For more information, refer to “Arbitration for Egress Port” on page 92. Register name: SP{0..15}_WRR_1 Register offset: 1B014,1B114, 1B214, 1B314, 1B414, 1B514, 1B614, 1B714, 1B814, 1B914, 1BA14, 1BB14, 1BC14, 1BD14, 1BE14, 1BF14 Reset value: 0x0000_0000 Bits 0 1 2 00:07 3 4 5 Reserved 08:15 Reserved 16:23 Reserved 24:31 Reserved 6 7 WRR_EN CHOOSE_ UC WEIGHT Bits Name Description Type Reset Value 0:5 Reserved N/A R 0 6 WRR_EN R/W 0 R/W 0 R 0 R/W 0 Weighted Round Robin Enable 0 = Weighted Round Robin is disabled and no preference is given to multicast nor unicast packets. The registers WEIGHT and CHOOSE_UC have no effect. 1 = Weight Round Robin is enabled and the WEIGHT field is applied to the preferred traffic chosen by CHOOSE_UC. 7 CHOOSE_U C Choose Traffic Type Set the preferred traffic type within the same priority group. 0 = Multicast 1 = Unicast 8:27 Reserved N/A 28:31 WEIGHT Weight This sets the number of packets of the chosen type to be sent between non-chosen type. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 400 12. Serial RapidIO Registers > Multicast Registers 12.13.6 Port x Prefer Unicast and Multicast Packet Prio 2 Register This register is used by the egress arbitration to control desired percentage of packets of either multicast or unicast within the same priority group. For more information, refer to “Arbitration for Egress Port” on page 92. Register name: SP{0..15}_WRR_2 Register offset: 1B018,1B118, 1B218, 1B318, 1B418, 1B518, 1B618, 1B718, 1B818, 1B918, 1BA18, 1BB18, 1BC18, 1BD18, 1BE18, 1BF18 Reset value: 0x0000_0000 Bits 0 1 2 00:07 3 4 5 Reserved 08:15 Reserved 16:23 Reserved 24:31 Reserved 6 7 WRR_EN CHOOSE_ UC WEIGHT Bits Name Description 0:5 Reserved N/A 6 WRR_EN Weighted Round Robin Enable Type Reset Value R 0 R/W 0 R/W 0 R 0 R/W 0 0 = Weighted Round Robin is disabled and no preference is given to multicast nor unicast packets. The registers WEIGHT and CHOOSE_UC have no effect. 1 = Weight Round Robin is enabled and the WEIGHT field is applied to the preferred traffic chosen by CHOOSE_UC. 7 CHOOSE_U C Choose Traffic Type Set the preferred traffic type within the same priority group. 0 = Multicast 1 = Unicast 8:27 Reserved N/A 28:31 WEIGHT Weight This sets the number of packets of the chosen type to be sent between non-chosen type. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > Multicast Registers 12.13.7 401 Port x Prefer Unicast and Multicast Packet Prio 3 Register This register is used by the egress arbitration to control desired percentage of packets of either multicast or unicast within the same priority group. For more information, refer to “Arbitration for Egress Port” on page 92. Register name: SP{0..15}_WRR_3 Register offset: 1B01C,1B11C, 1B21C, 1B31C, 1B41C, 1B51C, 1B61C, 1B71C, 1B81C, 1B91C, 1BA1C, 1BB1C, 1BC1C, 1BD1C, 1BE1C, 1BF1C Reset value: 0x0000_0000 Bits 0 1 2 00:07 3 4 5 Reserved 08:15 Reserved 16:23 Reserved 24:31 Reserved 6 7 WRR_EN CHOOSE_ UC WEIGHT Bits Name Description Type Reset Value 0:5 Reserved N/A R 0 6 WRR_EN R/W 0 R/W 0 R 0 R/W 0 Weighted Round Robin Enable 0 = Weighted Round Robin is disabled and no preference is given to multicast nor unicast packets. The registers WEIGHT and CHOOSE_UC have no effect. 1 = Weight Round Robin is enabled and the WEIGHT field is applied to the preferred traffic chosen by CHOOSE_UC. 7 CHOOSE_U C Choose Traffic Type Set the preferred traffic type within the same priority group. 0 = Multicast 1 = Unicast 8:27 Reserved N/A 28:31 WEIGHT Weight This sets the number of packets of the chosen type to be sent between non-chosen type. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 402 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14 SerDes Per Lane Register This section details the access registers that control the functionality of the SerDes in Tsi578. The SerDes register offsets in this section are based on lane 0. In order to define lanes 1, 2, and 3 the offset is incremented by 0x40 for each lane. For example, 0x1E000 represents lane 0 of SerDes 0, 0x1E040 represents lane 1 of SerDes 0, 0x1E080 represents lane 2 of SerDes 0, and 0x1E0C0 represents lane 3 of SerDes 0. The reset values of the registers listed in this section are only valid when the SerDes are fully initialized. Any read operations to these registers before the SerDes is initialized returns meaningless values. The SerDes is fully initialized when MPLL_PWR_ON is equal to 1 (see “SRIO MAC x SerDes Configuration Global” on page 372). When software has powered-down a port, 10 us must pass before the port is powered-up again. Table 48: SerDes Register Map Channel Register Offset Notes 0 1E000 - 1E03F SerDes Per Lane Register 1 1E040 - 1E07F 2 1E080 - 1E0BF 3 1E0C0 - 1E0FF Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.1 403 SerDes Lane 0 Pattern Generator Control Register This register controls the Pattern Generator in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PG_CTL_0 Register offset: 1E020, 1E220, 1E420, 1E620, 1E820, 1EA20, 1EC20, 1EE20 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 Name 0:17 Reserved 18:27 PAT0 6 7 PAT0 PAT0 Bits 5 TRIGGER_ ERR Description NA Pattern for MODE setting 3-5. MODE Type Reset Value R 0x0 R/W 0x0 R/W 0x0 R/W 0x0 Program the desired pattern in these 10bits when using modes 3-5. Note: This field returns to its reset value on reset 28 29:31 TRIGGER_E RR MODE Insert a single error into a LSB Note: This field returns to its reset value on reset Pattern to Generate 0 = Disabled 1 = lfsr15 (x15+x14+1) 2 = lfsr7 (x7+x6+1) 3 = Fixed word (pat0) 4 = DC balanced word (pat0, ~pat0) 5 = Fixed pattern: (000, pat0, 3FF, ~pat0) 6:7 = Reserved Note: This field returns to its reset value on reset Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 404 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.2 SerDes Lane 1 Pattern Generator Control Register This register controls the Pattern Generator in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PG_CTL_1 Register offset: 1E060, 1E260, 1E460, 1E660, 1E860, 1EA60, 1EC60, 1EE60 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 Name 0:17 Reserved 18:27 PAT0 6 7 PAT0 PAT0 Bits 5 TRIGGER_ ERR Description NA Pattern for MODE setting 3-5. MODE Type Reset Value R 0x0 R/W 0x0 R/W 0x0 R/W 0x0 Program the desired pattern in these 10bits when using modes 3-5. Note: This field returns to its reset value on reset 28 29:31 TRIGGER_E RR MODE Insert a single error into a LSB Note: This field returns to its reset value on reset Pattern to Generate 0 = Disabled 1 = lfsr15 (x15+x14+1) 2 = lfsr7 (x7+x6+1) 3 = Fixed word (pat0) 4 = DC balanced word (pat0, ~pat0) 5 = Fixed pattern: (000, pat0, 3FF, ~pat0) 6:7 = Reserved Note: This field returns to its reset value on reset Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.3 405 SerDes Lane 2 Pattern Generator Control Register This register controls the Pattern Generator in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PG_CTL_2 Register offset: 1E0A0, 1E2A0, 1E4A0, 1E6A0, 1E8A0, 1EAA0, 1ECA0, 1EEA0 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 Name 0:17 Reserved 18:27 PAT0 6 7 PAT0 PAT0 Bits 5 TRIGGER_ ERR Description NA Pattern for MODE setting 3-5. MODE Type Reset Value R 0x0 R/W 0x0 R/W 0x0 R/W 0x0 Program the desired pattern in these 10bits when using modes 3-5. Note: This field returns to its reset value on reset 28 29:31 TRIGGER_E RR MODE Insert a single error into a LSB Note: This field returns to its reset value on reset Pattern to Generate 0 = Disabled 1 = lfsr15 (x15+x14+1) 2 = lfsr7 (x7+x6+1) 3 = Fixed word (pat0) 4 = DC balanced word (pat0, ~pat0) 5 = Fixed pattern: (000, pat0, 3FF, ~pat0) 6:7 = Reserved Note: This field returns to its reset value on reset Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 406 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.4 SerDes Lane 3 Pattern Generator Control Register This register controls the Pattern Generator in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PG_CTL_3 Register offset: 1E0E0, 1E2E0, 1E4E0, 1E6E0, 1E8E0, 1EAE0, 1ECE0, 1EEE0 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 Name 0:17 Reserved 18:27 PAT0 6 7 PAT0 PAT0 Bits 5 TRIGGER_ ERR Description NA Pattern for MODE setting 3-5. MODE Type Reset Value R 0x0 R/W 0x0 R/W 0x0 R/W 0x0 Program the desired pattern in these 10bits when using modes 3-5. Note: This field returns to its reset value on reset 28 29:31 TRIGGER_E RR MODE Insert a single error into a LSB Note: This field returns to its reset value on reset Pattern to Generate 0 = Disabled 1 = lfsr15 (x15+x14+1) 2 = lfsr7 (x7+x6+1) 3 = Fixed word (pat0) 4 = DC balanced word (pat0, ~pat0) 5 = Fixed pattern: (000, pat0, 3FF, ~pat0) 6:7 = Reserved Note: This field returns to its reset value on reset Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.5 407 SerDes Lane 0 Pattern Matcher Control Register This register contains the controls the Pattern Matcher and the error counters associated with the corresponding matcher in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PM_CTL_0 Register offset: 1E030, 1E230, 1E430, 1E630, 1E830, 1EA30, 1EC30, 1EE30 Reset value: 0x0000_0000 Bits 0 00:07 OV14 1 2 3 4 COUNT 16:23 Reserved 24:31 Reserved Name 0 OV14 6 7 COUNT 08:15 Bits 5 SYNC Description 1= multiply COUNT by 128. When OV14=1 and count = 215-1, signal overflows MODE Type Reset Value R/W 0x0 R/W 0x0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 1:15 COUNT Current error count If OV14 field is active, multiply count by 128. Note: Read operation on this register is pipelined. Two reads needed to get “current” value. The values are volatile (that is, value may change at any time).The second read resets the counter. 16:27 Reserved 28 SYNC NA Synchronize pattern matcher LFSR with incoming data. Must be turned on then off to enable checking. RX_ALIGN_EN must be disabled when checking PRBS patterns Note: This bit returns to its reset value on reset 29:31 MODE Pattern to match 0 = Disabled 1 = lfsr15 2 = lfsr7 3 = d[n] = d[n-10] 4 = d[n] = !d[n-10] 5:7 = Reserved Note: This field returns to its reset value on reset Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 408 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.6 SerDes Lane 1 Pattern Matcher Control Register This register contains the controls the Pattern Matcher and the error counters associated with the corresponding matcher in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PM_CTL_1 Register offset: 1E070, 1E270, 1E470, 1E670, 1E870, 1EA70, 1EC70, 1EE70 Reset value: 0x0000_0000 Bits 0 00:07 OV14 1 2 3 4 COUNT 16:23 Reserved 24:31 Reserved Name 0 OV14 6 7 COUNT 08:15 Bits 5 SYNC MODE Description 1= multiply COUNT by 128. When OV14=1 and count = 215-1, signal overflows Type Reset Value R/W 0x0 R/W 0x0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 1:15 COUNT Current error count If OV14 field is active, multiply count by 128. Note: Read operation on this register is pipelined. Two reads needed to get “current” value. The values are volatile (that is, value may change at any time) 16:27 Reserved 28 SYNC NA Synchronize pattern matcher LFSR with incoming data. Must be turned on then off to enable checking. RX_ALIGN_EN must be disabled when checking PRBS patterns Note: This bit returns to its reset value on reset 29:31 MODE Pattern to match 0 = Disabled 1 = lfsr15 2 = lfsr7 3 = d[n] = d[n-10] 4 = d[n] = !d[n-10] 5:7 = Reserved Note: This field returns to its reset value on reset Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.7 409 SerDes Lane 2 Pattern Matcher Control Register This register contains the controls the Pattern Matcher and the error counters associated with the corresponding matcher in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PM_CTL_2 Register offset: 1E0B0, 1E2B0, 1E4B0, 1E6B0, 1E8B0, 1EAB0, 1ECB0, 1EEB0 Reset value: 0x0000_0000 Bits 0 00:07 OV14 1 2 3 4 COUNT 16:23 Reserved 24:31 Reserved Name 0 OV14 6 7 COUNT 08:15 Bits 5 SYNC Description 1= multiply COUNT by 128. When OV14=1 and count = 215-1, signal overflows MODE Type Reset Value R/W 0x0 R/W 0x0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 1:15 COUNT Current error count If OV14 field is active, multiply count by 128. Note: Read operation on this register is pipelined. Two reads needed to get “current” value. The values are volatile (that is, value may change at any time) 16:27 Reserved 28 SYNC NA Synchronize pattern matcher LFSR with incoming data. Must be turned on then off to enable checking. RX_ALIGN_EN must be disabled when checking PRBS patterns Note: This bit returns to its reset value on reset 29:31 MODE Pattern to match 0 = Disabled 1 = lfsr15 2 = lfsr7 3 = d[n] = d[n-10] 4 = d[n] =!d[n-10] 5:7 = Reserved Note: This field returns to its reset value on reset Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 410 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.8 SerDes Lane 3 Pattern Matcher Control Register This register contains the controls the Pattern Matcher and the error counters associated with the corresponding matcher in each lane. Register name: SMAC{0,2,4,6,8,10,12,14}_PM_CTL_3 Register offset: 1E0F0, 1E2F0, 1E4F0, 1E6F0, 1E8F0, 1EAF0, 1ECF0, 1EEF0 Reset value: 0x0000_0000 Bits 0 00:07 OV14 1 2 3 4 COUNT 16:23 Reserved 24:31 Reserved Name 0 OV14 6 7 COUNT 08:15 Bits 5 SYNC MODE Description 1= multiply COUNT by 128. When OV14=1 and count = 215-1, signal overflows Type Reset Value R/W 0x0 R/W 0x0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 1:15 COUNT Current error count If OV14 field is active, multiply count by 128. Note: Read operation on this register is pipelined. Two reads needed to get “current” value. The values are volatile (that is, value may change at any time) 16:27 Reserved 28 SYNC NA Synchronize pattern matcher LFSR with incoming data. Must be turned on then off to enable checking. RX_ALIGN_EN must be disabled when checking PRBS patterns Note: This bit returns to its reset value on reset 29:31 MODE Pattern to match 0 = Disabled 1 = lfsr15 2 = lfsr7 3 = d[n] = d[n-10] 4 = d[n] =!d[n-10] 5:7 = Reserved Note: This field returns to its reset value on reset Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.9 411 SerDes Lane 0 Frequency and Phase Value Register This register contains the frequency and phase of the incoming eyes on the SerDes. Register name: SMAC{0,2,4,6,8,10,12,14}_FP_VAL_0 Register offset: 1E034, 1E234, 1E434, 1E634, 1E834, 1EA34, 1EC34, 1EE34 Reset value: 0x0000_0000 Bits 00:07 0 1 2 3 4 Reserved 5 6 7 FVAL 08:15 FVAL 16:23 Reserved DTHR_0 PVAL 24:31 PVAL Bits Name 0:1 Reserved 2:14 FVAL Description NA Frequency is 1.526*FVAL ppm from the reference. DTHR_1 Type Reset Value R 0x0 R/W 0x0 R/W 0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 15 DTHR_0 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 16:20 Reserved 21:30 PVAL NA Phase is 0.78125*pval ps from zero reference Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 31 DTHR_1 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 412 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.10 SerDes Lane 1 Frequency and Phase Value Register This register contains the frequency and phase of the incoming eyes on the SerDes. Register name: SMAC{0,2,4,6,8,10,12,14}_FP_VAL_1 Register offset: 1E074, 1E274, 1E474, 1E674, 1E874, 1EA74, 1EC74, 1EE74 Reset value: 0x0000_0000 Bits 00:07 0 1 2 3 4 Reserved 5 6 FVAL 08:15 FVAL 16:23 DTHR_0 Reserved PVAL 24:31 PVAL Bits Name 0:1 Reserved 2:14 FVAL 7 DTHR_1 Description NA Frequency is 1.526*FVAL ppm from the reference. Type Reset Value R 0x0 R/W 0x0 R/W 0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 15 DTHR_0 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 16:20 Reserved 21:30 PVAL NA Phase is 0.78125*pval ps from zero reference Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 31 DTHR_1 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.11 413 SerDes Lane 2 Frequency and Phase Value Register This register contains the frequency and phase of the incoming eyes on the SerDes. Register name: SMAC{0,2,4,6,8,10,12,14}_FP_VAL_2 Register offset: 1E0B4, 1E2B4, 1E4B4, 1E6B4, 1E8B4, 1EAB4, 1ECB4, 1EEB4 Reset value: 0x0000_0000 Bits 00:07 0 1 2 3 4 Reserved 5 6 7 FVAL 08:15 FVAL 16:23 Reserved DTHR_0 PVAL 24:31 PVAL Bits Name 0:1 Reserved 2:14 FVAL Description NA Frequency is 1.526*FVAL ppm from the reference. DTHR_1 Type Reset Value R 0x0 R/W 0x0 R/W 0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 15 DTHR_0 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 16:20 Reserved 21:30 PVAL NA Phase is 0.78125*pval ps from zero reference Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 31 DTHR_1 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 414 12. Serial RapidIO Registers > SerDes Per Lane Register 12.14.12 SerDes Lane 3 Frequency and Phase Value Register This register contains the frequency and phase of the incoming eyes on the SerDes. Register name: SMAC{0,2,4,6,8,10,12,14}_FP_VAL_3 Register offset: 1E0F4, 1E2F4, 1E4F4, 1E6F4, 1E8F4, 1EAF4, 1ECF4, 1EEF4 Reset value: 0x0000_0000 Bits 00:07 0 1 2 3 4 Reserved 5 6 FVAL 08:15 FVAL 16:23 DTHR_0 Reserved PVAL 24:31 PVAL Bits Name 0:1 Reserved 2:14 FVAL 7 DTHR_1 Description NA Frequency is 1.526*FVAL ppm from the reference. Type Reset Value R 0x0 R/W 0x0 R/W 0 R 0x0 R/W 0x0 R/W 0x0 Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 15 DTHR_0 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 16:20 Reserved 21:30 PVAL NA Phase is 0.78125*pval ps from zero reference Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time 31 DTHR_1 Bits below the useful resolution Note: Read operations on this register is pipelined. Two reads needed to get current value. The values are volatile and the value may change at any time Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 415 13. I2C Registers Topics discussed include the following: 13.1 • “Register Map” • “Register Descriptions” Register Map The following table lists the register map for the I2C registers. All registers can be accessed through the internal register bus. A portion of the register space is visible to an external I2C master through the slave interface. The registers in this portion have a peripheral address in addition to their internal register bus address, and are called the externally visible I2C registers, meaning they can be accessed by the external I2C master using I2C reads and writes (see Table 49). The peripheral address equates to a 4-byte range within a consecutive 256-byte address space. For peripheral addresses, the lowest address maps to the least significant byte of the internal register (LSB), while the highest address maps to the most significant byte of the internal register (MSB). p Ti The internal address for the I2C registers is 0x1D000 to 0x1DFFC. Table 49: I2C Register Map Internal Address Peripheral Address 0x1D000– 0x1D0FC n/a Reserved 0x1D100 n/a I2C_DEVID “I2C Device ID Register” 0x1D104 n/a I2C_RESET “I2C Reset Register” 0x1D108 n/a I2C_MST_CFG “I2C Master Configuration Register” 0x1D10C n/a I2C_MST_CNTRL “I2C Master Control Register” 0x1D110 n/a I2C_MST_RDATA “I2C Master Receive Data Register” 0x1D114 n/a I2C_MST_TDATA “I2C Master Transmit Data Register” 0x1D118 n/a I2C_ACC_STAT “I2C Access Status Register” 0x1D11C n/a I2C_INT_STAT “I2C Interrupt Status Register” 0x1D120 n/a I2C_INT_ENABLE “I2C Interrupt Enable Register” Integrated Device Technology www.idt.com Register Name See Tsi578 User Manual June 6, 2016 416 13. I2C Registers > Register Map Table 49: I2C Register Map (Continued) Internal Address Peripheral Address 0x1D124 n/a I2C_INT_SET “I2C Interrupt Set Register” 0x1D12C n/a I2C_SLV_CFG “I2C Slave Configuration Register” 0x11D130– 0x1D13C n/a Reserved 0x1D140 n/a I2C_BOOT_CNTRL 0x1D144– 0x1D1FC n/a Reserved 0x1D200 0x00–0x03 EXI2C_REG_WADDR “Externally Visible I2C Internal Write Address Register” 0x1D204 0x04–0x07 EXI2C_REG_WDATA “Externally Visible I2C Internal Write Data Register” 0x1D208– 0x1D20C 0x08–0x0F Reserved 0x1D210 0x10–0x13 EXI2C_REG_RADDR “Externally Visible I2C Internal Read Address Register” 0x1D214 0x14–0x17 EXI2C_REG_RDATA “Externally Visible I2C Internal Read Data Register” 0x1D218– 0x1D21C 0x18–0x1F Reserved 0x1D220 0x20–0x23 EXI2C_ACC_STAT “Externally Visible I2C Slave Access Status Register” 0x1D224 0x24–0x27 EXI2C_ACC_CNTRL “Externally Visible I2C Internal Access Control Register” 0x1D228– 0x1D27C 0x28–0x7F Reserved 0x1D280 0x80–0x83 EXI2C_STAT “Externally Visible I2C Status Register” 0x1D284 0x84–0x87 EXI2C_STAT_ENABLE “Externally Visible I2C Enable Register” 0x1D288– 0x1D28C 0x88–0x8F Reserved 0x1D290 0x90–0x93 EXI2C_MBOX_OUT “Externally Visible I2C Outgoing Mailbox Register” 0x1D294 0x94–0x97 EXI2C_MBOX_IN “Externally Visible I2C Incoming Mailbox Register” 0x1D298– 0x1D2FC 0x98–0xFF Reserved 0x1D300 n/a I2C_EVENT “I2C Event and Event Snapshot Registers” 0x1D304 n/a I2C_SNAP_EVENT “I2C Event and Event Snapshot Registers” Tsi578 User Manual June 6, 2016 Register Name See “I2C Boot Control Register” Integrated Device Technology www.idt.com 13. I2C Registers > Register Map 417 Table 49: I2C Register Map (Continued) Internal Address Peripheral Address 0x1D308 n/a I2C_NEW_EVENT “I2C New Event Register” 0x1D30C n/a I2C_EVENT_ENB “I2C Enable Event Register” 0x1D310– 0x1D31C n/a Reserved 0x1D320 n/a I2C_DIVIDER 0x1D324– 0x1D33C n/a Reserved 0x1D340 n/a I2C_START_SETUP_HOLD “I2C Start Condition Setup/Hold Timing Register” 0x1D344 n/a I2C_STOP_IDLE “I2C Stop/Idle Timing Register” 0x1D348 n/a I2C_SDA_SETUP_HOLD “I2C_SD Setup and Hold Timing Register” 0x1D34C n/a I2C_SCL_PERIOD “I2C_SCLK High and Low Timing Register” 0x1D350 n/a I2C_SCL_MIN_PERIOD “I2C_SCLK Minimum High and Low Timing Register” 0x1D354 n/a I2C_SCL_ARB_TIMEOUT “I2C_SCLK Low and Arbitration Timeout Register” 0x1D358 n/a I2C_BYTE_TRAN_TIMEOUT “I2C Byte/Transaction Timeout Register” 0x1D35C n/a I2C_BOOT_DIAG_TIMER “I2C Boot and Diagnostic Timer” 0x1D360– 0x1D3B4 n/a Reserved 0x1D3B8 n/a I2C_BOOT_DIAG_PROGRESS “I2C Boot Load Diagnostic Progress Register” 0x1D3BC n/a I2C_BOOT_DIAG_CFG “I2C Boot Load Diagnostic Configuration Register” 0x1D3C0– 0x1D3FC n/a Reserved Integrated Device Technology www.idt.com Register Name See “I2C Time Period Divider Register” Tsi578 User Manual June 6, 2016 418 13.2 13. I2C Registers > Register Descriptions Register Descriptions This section describes the I2C registers. These registers are reset by a chip reset. 13.2.1 I2C Device ID Register This register identifies the version of the IDT I2C block in this device. Register name: I2C_DEVID Register offset: 0x1D100 Reset value: 0x0000_0001 Bits 0 1 2 3 4 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 Reserved Bits Name 00:27 Reserved 28:31 REV Tsi578 User Manual June 6, 2016 5 6 7 REV Type Reset Value Reserved R 0x000_0000 Indicates the revision ID for the I2C block. R 0x1 Description Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.2 419 I2C Reset Register This register completes a reset of the I2C block. This reset returns the logic to its idle, non-transacting state while retaining all configuration registers, such that the block does not have to be reprogrammed. This is provided for exceptional conditions. A reset while the block is involved in a transaction as a master or slave may leave the bus in an unexpected state relative to any external I2C masters or slaves, and thus should be used with caution and only as a last solution if the block seems unresponsive. I2C registers that are affected by a this reset are indicated in the description of that register. All other registers should be assumed to be unaffected by this reset. Register name: I2C_RESET Register offset: 0x1D104 Reset value: 0x0000_0000 Bits 0 1 00:07 SRESET 2 3 4 Reserved 16:23 Reserved 24:31 Reserved Name 00 SRESET 6 7 Reserved 08:15 Bits 5 Description Reset under Software Control Type Reset Value R/W 0 R 0 I 2C Setting this bit resets the block. The R/W fields of configuration and control registers are not affected (nor is this register affected). While in reset neither the Master nor slave interface will be operational: the I2C_SCLK and I2C_SD signals will be undriven so as to not obstruct the bus. This bit must be written to 0 to bring the block out of reset. Any active bus transactions while reset occurs are aborted. All status and events are returned to the reset state. The boot load sequence will not be invoked upon exit from reset, although the bus idle detect sequence will be invoked. Power-up latch values will not be re-latched, and the fields will remain at their pre-soft-reset value. 01:31 Reserved Integrated Device Technology www.idt.com Reserved Tsi578 User Manual June 6, 2016 420 13. I2C Registers > Register Descriptions 13.2.3 I2C Master Configuration Register This register contains options that apply to master operations initiated through the “I2C Master Control Register”. The configuration specifies the properties of the external slave device to which a read or write transaction will be directed. Register name: I2C_MST_CFG Register offset: 0x1D108 Reset value: Undefined Bits 0 1 2 3 00:07 08:15 5 6 7 Reserved DORDER Reserved 16:23 24:31 4 PA_SIZE Reserved Reserved DEV_ADDR Bits Name Description 00:07 Reserved Reserved 08 DORDER Data Order Type Reset Value R 0x00 R/W 0 R 0x00 R/W Undefined R 0x000 R/W Undefined 0 = Data from/to data registers is ordered (processed) from MSB to LSB within an I2C transaction. 1 = Data from/to data registers is ordered (processed) from LSB to MSB within an I2C transaction. Data registers are “I2C Master Transmit Data Register” and “I2C Master Receive Data Register”. 09:13 Reserved Reserved 14:15 PA_SIZE Peripheral Address Size 00 = No peripheral address used 01 = 8-bit peripheral device addressing using LSB of PADDR 10 = 16-bit peripheral device addressing using MSB and LSB of PADDR (in that order) 11 = Reserved (handled as 00) This field selects the number of bytes in the peripheral address for master transactions. The peripheral address itself is specified in the “I2C Master Control Register”. 16:24 Reserved 25:31 DEV_ADDR Reserved Device Address 2 Specifies the 7-bit device address to select the I C device for a read or write transaction initiated through the “I2C Master Control Register”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 421 Do not change this register while a master operation is active. The effect on the transaction cannot be determined. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 422 13. I2C Registers > Register Descriptions 13.2.4 I2C Master Control Register This register sets the peripheral address and to start an I2C transaction. The transaction is directed to the device defined in the “I2C Master Configuration Register”. Note: Software must not set the peripheral address and the SIZE parameters such that unintended page wrap-arounds occur in the target device. The Tsi578 does not force repeated start conditions within a single software initiated access. Register name: I2C_MST_CNTRL Register offset: 0x1D10C Reset value: 0x0000_0000 Bits 0 1 2 00:07 START WRITE 3 4 Reserved 08:15 Reserved 16:23 PADDR 24:31 PADDR Bits Name 00 START 5 Description Start Operation 6 7 SIZE Type Reset Value R/W1S 0 R/W 0 R 0 2 0 = I C operation is not in progress (self clears) 1 = Start of an I2C operation. Clears itself back to zero when the initiated operation has completed. This bit cannot be cleared by software once set, except through a reset under software control. Note: This bit is cleared by a reset initiated by the “I2C Reset Register”. 01 WRITE I2C Read or Write 0 = Read from I2C memory 1 = Write to I2C memory For a read, data is returned to the “I2C Master Receive Data Register”. For a write, data is taken from the “I2C Master Transmit Data Register”. 02:04 Reserved Tsi578 User Manual June 6, 2016 Reserved Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 423 (Continued) Bits Name 05:07 SIZE Description Number of bytes in an I2C operation (read or write) Type Reset Value R/W 000 R 0 R/W 0x0000 000 = 0 bytes 001 = 1 bytes 010 = 2 bytes 011 = 3 bytes 100 = 4 bytes 101 = Reserved (equivalent of 0 bytes) 110 = Reserved (equivalent of 0 bytes) 111 = Reserved (equivalent of 0 bytes) A value of 000 should not be normally used for a Read operation, as any device put into read mode assumes at least one byte will be read. An exception would be the SMBus Quick Command protocol to a device that is known to not hold the bus following the slave address phase. 08:15 Reserved 16:31 PADDR Reserved Peripheral address for master operation If PA_SIZE in the “I2C Master Configuration Register” is 10, then all 16 bits are used, with the most significant 8 bits placed on I2C bus first, followed by the least significant 8 bits. If PA_SIZE is 01, then only least significant 8 bits are used. If PA_SIZE is 00, this field is not used for the transaction. A master operation is initiated by writing this register and setting the START bit to 1. The same write should set the WRITE, SIZE, and PADDR fields as required by the transaction. Other information for the transaction must have been pre-loaded into the “I2C Master Configuration Register”. Do not change this register while a master operation is active. The effect on the transaction cannot be determined. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 424 13. I2C Registers > Register Descriptions The following is the sequence triggered by setting the START bit: Table 50: Master Operation Sequence Phase Description 1. Begin transaction Start arbitration timer. 2. Address slave Detect bus idle. Send START. Send I2C_MST_CFG.[DEV_ADDR]. Send Read or Write (normally Write unless WRITE=0 and PA_SIZE=0). Outcome Any loss of arbitration repeats this phase. Phase completes with ACK. NACK terminates operation with a MNACK event (issues STOP). Expiration of arbitration timer aborts operation with MARBTO. Wait for ACK/NACK. Disable arbitration timer. 3. Peripheral Address If PA_SIZE = 10, send PADDR[15:8] and wait for ACK. If PA_SIZE = 01 or 10, send PADDR[7:0] and wait for ACK. If PA_SIZE is 00 or 11, this phase is skipped. Any loss of arbitration will abort with MCOL. Any NACK will abort with MNACK. (WRITE = 1) If SIZE > 0, send SIZE bytes from I2C_MST_TDATA based on DORDER. Wait for ACK from each. This phase is skipped if WRITE=1. Any loss of arbitration will abort with MCOL. Any NACK will abort with MNACK. 5. Read Data Setup Send RESTART. (WRITE = 0) Repeat the “Address Slave” process with last bit a Read. This phase is skipped if WRITE=1 or SIZE=0. NACK aborts with MNACK. Loss of arbitration aborts with MCOL (because bus was never released). 4. Send Data Wait for ACK/NACK. 6. Read Data (WRITE = 0) 7. Complete Read SIZE bytes and place in I2C_MST_RDATA based on DORDER. Respond with ACK to each, except for final byte respond with a NACK. This phase is skipped if WRITE=1 or SIZE=0. Any loss of arbitration aborts with MCOL. Issue STOP. Except for arbitration loss, master always tries to force a STOP condition. Clear I2C_MST_CNTRL[START]. Set MSD event. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.5 425 I2C Master Receive Data Register This register contains the data read from an external slave device following a read operation initiated using the “I2C Master Control Register”. As bytes are read from the I2C bus, they are placed in this register depending on DORDER in the “I2C Master Configuration Register”. If DORDER is 0, bytes are loaded from MSB to LSB, in order: RBYTE3, RBYTE2, RBYTE1, RBYTE0. If DORDER is 1, bytes are loaded from LSB to MSB, in order: RBYTE0, RBYTE1, RBYTE2, RBYTE3. If the transaction size is less than four (4) bytes (that is, SIZE in the “I2C Master Control Register” < 4) then any remaining bytes in the register are left unchanged (that is, they retain the values they had from the prior read operation). Register name: I2C_MST_RDATA Register offset: 0x1D110 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 RBYTE3 08:15 RBYTE2 16:23 RBYTE1 24:31 RBYTE0 Bits Name 00:07 RBYTE3 08:15 6 7 Type Reset value Received I2C data — Byte 3 (most significant) R 0x00 RBYTE2 Received I2C data — Byte 2 R 0x00 16:23 RBYTE1 Received I2C data — Byte 1 R 0x00 24:31 RBYTE0 Received I2C data — Byte 0 (least significant) R 0x00 Integrated Device Technology www.idt.com Description 5 Tsi578 User Manual June 6, 2016 426 13.2.6 13. I2C Registers > Register Descriptions I2C Master Transmit Data Register This register contains the data to be written (transmitted) to an external slave when a write operation is initiated using the “I2C Master Control Register”. This register should be written with data to be sent prior to setting the START bit in that register. As bytes are written to the I2C bus, they are taken from this register depending on DORDER in the “I2C Master Configuration Register”. If DORDER is 0, bytes are taken from MSB to LSB, in order: TBYTE3, TBYTE2, TBYTE1, TBYTE0. If DORDER is 1, bytes are taken from LSB to MSB, in order: TBYTE0, TBYTE1, TBYTE2, TBYTE3. If the transaction size is less than 4 bytes (that is, SIZE in the “I2C Master Control Register” Register Descriptions 13.2.7 427 I2C Access Status Register This register indicates the status of the I2C block. Fields in this register change dynamically as operations are initiated or progress. Register name: I2C_ACC_STAT Register offset: 0x1D118 Reset value: 0x0000_0000 Bits 0 1 2 00:07 SLV_ ACTIVE BUS_ ACTIVE 3 Reserved 08:15 16:23 4 5 SLV_WAIT 6 SLV_PHASE 7 SLV_AN SLV_PA MST_ ACTIVE 24:31 Reserved MST_PHASE Reserved Bits Name 00 SLV_ACTIVE MST_AN MST_NBYTES Description Slave Active Type Reset Value R 0 R 0 R 00 0 = Slave is not addressed 1 = Slave is addressed by external master and a read or write is active on the bus This bit is set following the slave address phase if the address matched the SLV_ADDR or Alert Response Address and the slave interface was enabled. Note: This bit is zeroed on a reset controlled by the “I2C Reset Register”. 01 BUS_ACTIVE Bus Active 0 = I2C bus is not active 1 = I2C bus is active: a START bit is seen (and no subsequent STOP) Note: This bit is zeroed on a reset controlled by the “I2C Reset Register”, and is not set to 1 until a START condition is seen after reset is de-asserted in the “I2C Reset Register”. 02:03 Reserved Integrated Device Technology www.idt.com Reserved Tsi578 User Manual June 6, 2016 428 13. I2C Registers > Register Descriptions (Continued) Bits Name 04 SLV_WAIT Description Slave Wait Type Reset Value R 0 R 0x0 R 0 R 0x00 R 0 R 0 0 = Slave is not waiting for a STOP or RESTART 1 = Slave is waiting for a STOP or RESTART This bit is clear if the bus is not active or the slave address is being received or the slave is active. This bit is set if the bus is active but the slave is not active and the slave address is not being received. Note: This bit is zeroed on a reset controlled by the “I2C Reset Register”. 05:06 SLV_PHASE Slave Phase 00 = Slave address being received (even if slave interface is disabled using SLV_EN). 01 = Peripheral address being received 10 = Data incoming (write from external master) 11 = Data outgoing (read by external master) At the end of a slave operation, this field will hold its value until the next START/RESTART. If a slave operation aborts, this field will qualify where in the transaction the error occurred. 07 SLV_AN Slave Ack/Nack 0 = Slave transaction is not in the ACK/NACK bit of a byte 1 = Slave transaction is in the ACK/NACK bit of a byte This qualifies the SLV_PHASE field. 08:15 SLV_PA Slave Peripheral Address This field indicates the current peripheral address that is used when the Tsi578 is accessed by an external master. 16 MST_ACTIVE Master Active 0 = No master operation in progress 1 = Master operation is in progress This status is the same as the START bit in the “I2C Master Control Register”. Note: This bit is zeroed on a reset controlled by the “I2C Reset Register”. 17:19 Reserved Tsi578 User Manual June 6, 2016 Reserved Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 429 (Continued) Bits Name 20:22 MST_ PHASE Description Master Phase Type Reset Value R 000 R 0 000 = START condition being sent 001 = External slave address being transmitted 010 = Peripheral address being transmitted 011 = RESTART condition being sent 100 = Data incoming (read operation) 101 = Data outgoing (write operation) 110 = STOP condition being sent 111 = Reserved At the end of a master operation, this field will hold its value until the next master operation is started. If a master operation aborts, this field will qualify where in the transaction the error occurred. 23 MST_AN Master Ack/Nack 0 = Master transaction is not in the ACK/NACK bit of a byte 1 = Master transaction is in the ACK/NACK bit of a byte This qualifies the MST_PHASE field. 24:27 Reserved Reserved R 0x0 28:31 MST_ NBYTES Master Number of Bytes R 0x0 Integrated Device Technology www.idt.com This is the running count of the number of data bytes transferred in the current master operation (read or write). At the end of an operation, if successfully completed, the field will equal the SIZE field from the “I2C Master Control Register”. If an operation aborts prematurely, this field will indicate the number of bytes transferred before the error occurred. Tsi578 User Manual June 6, 2016 430 13. I2C Registers > Register Descriptions 13.2.8 I2C Interrupt Status Register This register indicates the status of the I2C interrupts. When an interrupt status bit is set, an interrupt is generated to the Interrupt Controller if the corresponding bit is enabled in the “I2C Interrupt Enable Register”. If the corresponding enable is not set, the interrupt status bit will still assert but will not result in assertion of an interrupt to the Interrupt Controller. This register can only be accessed through the register bus. Note: This register is affected by a reset controlled by the “I2C Reset Register”. All interrupts will be cleared and no interrupt will assert until an event occurs after SRESET bit in the “I2C Reset Register” is de-asserted. Register name: I2C_INT_STAT Register offset: 0x1D11C Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 6 7 00:07 Reserved OMB_ EMPTY IMB_FULL 08:15 Reserved BL_FAIL BL_OK 16:23 24:31 Reserved MA_DIAG Bits Name 0:5 Reserved 6 OMB_EMPTY Reserved MA_COL SA_ FAIL SA_ WRITE SA_READ SA_OK MA_TMO MA_NACK MA_ATMO MA_OK Description Reserved Outgoing Mailbox Empty Type Reset Value R 0x00 R/W1C 0 R/W1C 0 R 0x00 R/W1C 0 0 = Interrupt status not asserted 1 = Outgoing mailbox is empty Set when an external I2C master reads data from the mailbox (see “Externally Visible I2C Outgoing Mailbox Register”), if data had been previously been written to the mailbox by software. 7 IMB_FULL Incoming Mailbox Full 0 = Interrupt status not asserted 1 = Incoming mailbox is full Set when an external I2C master writes data into the “Externally Visible I2C Incoming Mailbox Register”. 8:13 Reserved 14 BL_FAIL Reserved Boot Load Failed 0 = Interrupt status not asserted 1 = Boot load sequence failed to complete Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 431 (Continued) Bits Name 15 BL_OK Description Boot Load OK Type Reset Value R/W1C 0 R 0x0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 R 00 0 = Interrupt status not asserted 1 = Boot load sequence completed successfully This will also be set if the boot loading was disabled at reset. 16:19 Reserved Reserved 20 SA_FAIL Slave Access Failed 0 = Interrupt status not asserted 1 = Error detected during slave access transaction A slave transaction addressed to the Tsi578 aborted. 21 SA_WRITE Slave Write 0 = Interrupt status not asserted 1 = Internal register write performed The “Externally Visible I2C Internal Write Data Register” was written by an external master, invoking a write to an internal register. This will not assert if slave writes are disabled (WR_EN in the “I2C Slave Configuration Register” = 0). 22 SA_READ Slave Read 0 = Interrupt status not asserted 1 = Internal register read performed The “Externally Visible I2C Internal Read Data Register” was read by an external master, invoking a read to an internal register. This will not assert if slave reads are disabled (RD_EN = 0 in the “I2C Slave Configuration Register”). 23 SA_OK Slave Access OK 0 = Interrupt status not asserted 1 = Access completed successfully The Tsi578 was addressed as a slave device and the transaction completed without error. 24 MA_DIAG Master Diagnostic Event 0 = Interrupt status not asserted 1 = Diagnostic event 25:26 Reserved Integrated Device Technology www.idt.com Reserved Tsi578 User Manual June 6, 2016 432 13. I2C Registers > Register Descriptions (Continued) Bits Name 27 MA_COL Description Master Collision Type Reset Value R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 0 = Interrupt status not asserted 1 = Collision (arbitration loss) occurred following the device address phase A transaction initiated using the “I2C Master Control Register” aborted due to loss of arbitration after the slave device address phase. This indicates multiple masters tried to access the same slave. This can also be set at the end of boot load due to BL_FAIL. 28 MA_TMO Master Timeout 0 = Interrupt status not asserted 1 = Transaction aborted due to timeout expiration A transaction initiated using the “I2C Master Control Register” aborted due to expiration of the clock low, byte, or transaction time-outs. This can also be set at the end of boot load due to BL_FAIL. 29 MA_NACK Master NACK 0 = Interrupt status not asserted 1 = NACK received during transaction A transaction initiated through the “I2C Master Control Register” aborted due to receipt of a NACK in response to slave address, peripheral address, or a written byte. This can also be set at the end of boot load due to BL_FAIL. 30 MA_ATMO Master Arbitration Timeout 0 = Interrupt status not asserted 1 = Bus arbitration timeout expired A transaction initiated through the “I2C Master Control Register” aborted due to expiration of the arbitration timeout (see ARB_TO in “I2C_SCLK Low and Arbitration Timeout Register”). This indicates the bus is in use by other masters. 31 MA_OK Master Transaction OK 0 = Interrupt status not asserted 1 = Access completed and successful A transaction initiated through the “I2C Master Control Register” completed without error. The write-1-to-clear (W1C) operation requires that this register first be read to create an event snapshot. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.9 433 I2C Interrupt Enable Register This register controls which of the interrupt status bits in the “I2C Interrupt Status Register” will result in an interrupt asserted to the Interrupt Controller. It can only be accessed from the register bus. Register name: I2C_INT_ENABLE Register offset: 0x1D120 Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 6 7 00:07 Reserved OMB_ EMPTY IMB_FULL 08:15 Reserved BL_FAIL BL_OK 16:23 24:31 Reserved MA_DIAG Bits Name 0:5 Reserved 6 OMB_ EMPTY Reserved MA_COL Description Reserved Enable OMB_EMPTY Interrupt SA_ FAIL SA_ WRITE SA_READ SA_OK MA_TMO MA_NACK MA_ATMO MA_OK Type Reset Value R 0x00 R/W 0 R/W 0 R 0x00 R/W 0 R/W 0 R 0x0 R/W 0 0 = Interrupt is disabled 1 = Interrupt is enabled 7 IMB_FULL Enable IMB_FULL Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 8:13 Reserved 14 BL_FAIL Reserved Enable BL_FAIL Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 15 BL_OK Enable BL_OK Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 16:19 Reserved Reserved 20 SA_FAIL Enable SA_FAIL Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 434 13. I2C Registers > Register Descriptions (Continued) Bits Name 21 SA_WRITE Description Enable SA_WRITE Interrupt Type Reset Value R/W 0 R/W 0 R/W 0 R/W 0 R 00 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 0 = Interrupt is disabled 1 = Interrupt is enabled 22 SA_READ Enable SA_READ Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 23 SA_OK Enable SA_OK Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 24 MA_DIAG Enable MA_DIAG Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 25:26 Reserved Reserved 27 MA_COL Enable MA_COL Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 28 MA_TMO Enable MA_TMO Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 29 MA_NACK Enable MA_NACK Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 30 MA_ATMO Enable MA_ATMO Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled 31 MA_OK Enable MA_OK Interrupt 0 = Interrupt is disabled 1 = Interrupt is enabled Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.10 435 I2C Interrupt Set Register This register sets the status of the I2C blocks interrupts. It can only be accessed from the register bus. Note: Setting an interrupt sets all related underlying events in the “I2C New Event Register”. This is significant in that if all underlying events are disabled for a specific interrupt bit, this register will not appear to work for that bit. Register name: I2C_INT_SET Register offset: 0x1D124 Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 6 7 00:07 Reserved OMB_ EMPTY IMB_ FULL 08:15 Reserved BL_FAIL BL_OK 16:23 24:31 Reserved MA_DIAG Bits Name 0:5 Reserved 6 OMB_EMPTY Reserved MA_COL Description Reserved Set OMB_EMPTY Interrupt SA_FAIL SA_ WRITE SA_READ SA_OK MA_TMO MA_NACK MA_ATMO MA_OK Type Reset Value R 0x00 R/W1S 0 R/W1S 0 R 0x00 R/W1S 0 R/W1S 0 R 0x0 R/W1S 0 0 = No effect 1 = Interrupt is set 7 IMB_FULL Set IMB_FULL Interrupt 0 = No effect 1 = Interrupt is set 8:13 Reserved Reserved 14 BL_FAIL Set BL_FAIL Interrupt 0 = No effect 1 = Interrupt is set 15 BL_OK Set BL_OK Interrupt 0 = No effect 1 = Interrupt is set 16:19 Reserved Reserved 20 SA_FAIL Set SA_FAIL Interrupt 0 = No effect 1 = Interrupt is set Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 436 13. I2C Registers > Register Descriptions (Continued) Bits Name 21 SA_WRITE Description Set SA_WRITE Interrupt Type Reset Value R/W1S 0 R/W1S 0 R/W1S 0 R/W1S 0 R 00 R/W1S 0 R/W1S 0 R/W1S 0 R/W1S 0 R/W1S 0 0 = No effect 1 = Interrupt is set 22 SA_READ Set SA_READ Interrupt 0 = No effect 1 = Interrupt is set 23 SA_OK Set SA_OK Interrupt 0 = No effect 1 = Interrupt is set 24 MA_DIAG Set MA_DIAG Interrupt 0 = No effect 1 = Interrupt is set 25:26 Reserved Reserved 27 MA_COL Set MA_COL Interrupt 0 = No effect 1 = Interrupt is set 28 MA_TMO Set MA_TMO Interrupt 0 = No effect 1 = Interrupt is set 29 MA_NACK Set MA_NACK Interrupt 0 = No effect 1 = Interrupt is set 30 MA_ATMO Set MA_ATMO Interrupt 0 = No effect 1 = Interrupt is set 31 MA_OK Set MA_OK Interrupt 0 = No effect 1 = Interrupt is set Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.11 437 I2C Slave Configuration Register This register configures the slave interface portion of the I2C block. The slave interface is the logic that responds to transactions from an external master on the I2C bus. Register name: I2C_SLV_CFG Register offset: 0x1D12C Reset value: 0xD0000030 Bits 0 1 2 3 4 00:07 RD_EN WR_EN ALRT_EN SLV_EN Reserved 16:23 Reserved Reserved Bits Name 0 RD_EN 6 Reserved 08:15 24:31 5 7 SLV_UNLK SLV_ADDR Description Register Bus Read Enable Type Reset Value R/W 1 R/W 1 This bit controls whether external masters can read registers internal to the Tsi578. The SLV_EN bit must also be set for this option to have any effect. 0 = Transactions that read the “Externally Visible I2C Internal Read Data Register” on page 447 will not invoke reads of the internal registers. 1 = Transactions that read the “Externally Visible I2C Internal Read Data Register” on page 447 will trigger reads of the internal register whose address is in the “Externally Visible I2C Internal Read Address Register” on page 446. 1 WR_EN Register Bus Write Enable This bit controls whether external masters can write to Tsi578’s internal registers. The SLV_EN bit must also be set for this option to have any effect.0 = Transactions that write the “Externally Visible I2C Internal Write Data Register” on page 445 will not invoke writes of the internal registers. 1 = Transactions that write the “Externally Visible I2C Internal Write Data Register” on page 445 will trigger writes of the internal register whose address is in the “Externally Visible I2C Internal Write Address Register” on page 444. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 438 13. I2C Registers > Register Descriptions (Continued) Bits Name 2 ALRT_EN Description Alert Address Enable Type Reset Value R/W 0 R/W 1 R 000 R/W 0 R 0x0000 0 = Do not respond to read of the Alert Response Address of 0001100 1 = Respond to read of the Alert Response Address of 0001100 if any bits are set in the “Externally Visible I2C Status Register” on page 452. If enabled, the slave interface will respond to the Alert Response Address for a read transaction if the ALERT_FLAG is set in the “Externally Visible I2C Slave Access Status Register” on page 448. The response is to return the SLV_ADDR field followed by a 0 to the external master, then clear the ALERT_FLAG. If ALRT_EN is 0, then the Alert Response address may be used as a SLV_ADDR. If ALRT_EN is 1 and SLV_ADDR is also set to the alert response address, then the alert response behavior will take precedence. 3 SLV_EN Slave Enable 0 = Slave is not enabled; SLV_ADDR is ignored. 1 = Slave interface is enabled; SLV_ADDR is responded to when transaction started by external master. When enabled, the slave interface will acknowledge transactions to the SLV_ADDR from an external master. If not enabled, then all transactions are NACK’d, except the Alert Response Address read, if ALRT_EN is 1. This bit controls access to the peripheral address space of the Tsi578. Access to the internal register space is also controlled by the RD_EN and WR_EN bits. If SLV_EN is 0 then internal register access is also disabled. 4:6 Reserved 7 SLV_UNLK Reserved Slave Address Unlock 0 = The LSB 2 bits of the SLV_ADDR are locked for writing (a write will leave those bits unchanged). 1 = The LSB 2 bits of the SLV_ADDR are unlocked, and can be changed by a write. This bit controls a write-protect on the 2 LSBs of the SLV_ADDR field. When 0 those bits are not writeable, which protects the power-up latch value of those bits. To change the bits, this SLV_UNLK bit must be written to 1 on the write performed to this register that is changing the SLV_ADDR[30:31] bits. 8:24 Reserved Tsi578 User Manual June 6, 2016 Reserved Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 439 (Continued) Bits Name 25:31 SLV_ADDR Description Slave Address Type Reset Value R/W 0x30 This is the device address for the Tsi578 as an I2C slave. An external master uses this address to access the Tsi578 peripheral register space. For the slave interface to respond to this address, the SLV_EN bit must be set. The LSB two bits [30:31] of this field are latched at power-up from the state of input pins. This allows board configuration of up to four unique Tsi578 devices on the I2C bus. These two bits are then locked for writing until the SLV_UNLK bit is set to 1 during a write. This feature allows the boot load process to write a slave address value to this register without changing the power-up latch field. A SLV_ADDR of 0x00 is never valid, as that value is used for the I2C START_BYTE and General Call functions. The General Call functions are not supported by the Tsi578 and are ignored and NACK’d. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 440 13. I2C Registers > Register Descriptions 13.2.12 I2C Boot Control Register This register controls the boot load sequence that is initiated following a chip reset of the Tsi578. The initial boot load operation is controlled by the reset state of this register. Some of the fields are also latched from device pins at power-up. Once boot loading is in progress, the data read from the EEPROM can modify the contents of this register and redirect the loading to another EEPROM, or to another address within the same EEPROM. This process is called “chaining.” The progress of a boot load operation can be monitored using the “I2C Boot Load Diagnostic Progress Register” and “I2C Boot Load Diagnostic Configuration Register”. This register can be read and written after boot loading is complete, but has no further effect on block operation. Register name: I2C_BOOT_CNTRL Register offset: 0x1D140 Reset value: Undefined Bits 0 1 2 3 00:07 CHAIN PSIZE BINC BUNLK 08:15 Reserved 16:23 4 5 6 7 Reserved BOOT_ADDR PAGE_MODE PADDR 24:31 PADDR Bits Name 00 CHAIN Description Chain During Boot Type Reset Value R/W 0 0 = No chain 1 = Chain to new device This bit is set to invoke a chain operation during boot load. In order to chain, this bit must be set and the register load count must be at zero; that is, the write to this register must be the last one in the boot sequence within this EEPROM if chaining were not continuing the boot. Except for the BUNLK and PAGE_MODE fields, modifications to the remaining fields in this register have no effect unless this bit is set. The fields will change value, but they will not affect the boot load sequence. Once boot load is complete, this register has no further effect on block operation. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 441 (Continued) Bits Name 01 PSIZE Description Peripheral Address Size Type Reset Value R/W Undefined R/W 1 R/W 0 R 0x00 0 = Use 1 byte for peripheral address 1 = Use 2 bytes for peripheral address This selects the number of bytes in the peripheral address. If 0 then only the least significant 5 bits of PADDR are used (+ 3 LSBs of 000). If 1 then all 13 bits of PADDR are used (+ 3 LSBs of 000). For 2-byte addressing, the MSB of the address is transmitted first on the I2C bus (see the PADDR field for an example). This field can be changed during the boot load, in conjunction with setting the CHAIN bit, in order to jump the boot load to a new boot device with different address size. 02 BINC Boot Address Increment 0 = Do not increment boot address when peripheral address overflows 1 = Increment the least significant 3 bits of the internal boot address when peripheral address overflows, then re-address device This option is valid only when PSIZE is 0, and is used to access devices that use the least significant 3 bits of their device address as a 256-byte page select (typically 2K EEPROMs). When enabled, and the 1-byte peripheral address wraps back to zero, the least significant 3 bits of the device address is incremented, followed by a Restart and a new device address cycle. The device address starts as the value of the BOOT_ADDR field, and is copied internally at boot start or upon a chain operation. It is the internal value that is incremented to simulate addressing a 2K EEPROM. This field can be changed during the boot load, in conjunction with setting the CHAIN bit, in order to jump the boot load to a new boot device with new page properties. 03 BUNLK Boot Address Unlock 0 = The the least significant 2 bits of the BOOT_ADDR are locked for writing (a write will leave those bits unchanged). 1 = The the least significant 2 bits of the BOOT_ADDR are unlocked, and can be changed by a write. This bit controls a write-protect on the two least significant bits of the BOOT_ADDR field. When 0, those bits are not writeable, which protects the power-up latch value of those bits. To change the bits, this BUNLK bit must be written as 1 on the write performed to this register that is changing the BOOT_ADDR[14:15] bits. 04:08 Reserved Integrated Device Technology www.idt.com Reserved Tsi578 User Manual June 6, 2016 442 13. I2C Registers > Register Descriptions (Continued) Bits Name 09:15 BOOT_ADDR Description Boot Device Address Type Reset Value R/W Undefined R/W 000 This is the device address that the Tsi578 will access during the boot load sequence. The least significant two bits [14:15] of this field are latched at power-up from the state of the I2C_SA[1:0] pins. This allows board configuration of up to four unique Tsi578 devices on the I2C bus, each of which access a different EEPROM during boot load. These two bits are then locked for writing until the BUNLK bit is set to 1 during a write. This feature allows the boot load process to change the boot address value to this register without changing the power-up latch field. This field can be changed during the boot load in conjunction with setting the CHAIN bit, in order to jump the boot load to a new boot device. This starting address is copied internally at boot start or boot load, and it is the internal value that is incremented, as explained in the BINC field. 16:18 PAGE_MODE Page Mode 000 = 8 bytes 001 = 32 bytes 010 = 64 bytes 011 = 128 bytes 100 = 256 bytes 101 = 512 bytes 110 = 1024 bytes 111 = Infinite This field modifies the boot load process to adjust the boundary at which the boot device is re-addressed. In the default case, the boot load sequence reads 8 bytes, then does a Restart followed by the device and peripheral address phases. By changing this field, the device will be re-addressed only when the peripheral address crosses the indicated boundary, thus saving a considerable number of clock cycles during the boot. It is up to the programmer of the EEPROM to ensure that the addressed device can support consecutive reads up to the selected boundary. Some devices wrap at certain page boundaries, and this setting must be consistent with such limitations. A setting of 111 causes the entire boot load to be read sequentially, with two exceptions. No matter what the setting of this field, if the boot address is incremented due to the BINC mode being enabled, or if chaining occurs, then the device is readdressed. Changing this field during boot load will immediately affect the boot sequence. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 443 (Continued) Bits Name 19:31 PADDR Description Peripheral Address Type Reset Value R/W 0x0000 This is the most significant 5 or 13 bits of the peripheral address (depending on PSIZE setting). The least significant 3 bits are not programmable and are assumed 000; that is, the peripheral address must be aligned to a multiple of 8 address in the EEPROM. To form the peripheral address, this field is shifted left by 3 and then copied internally upon boot start or a chain operation. The internal address is then incremented as the boot load progresses. For 2-byte addressing, the MSB of the peripheral address is sent first. For example, setting this field to 0x0127 gives a peripheral address of (0x0127 Register Descriptions Externally Visible I2C Internal Write Address Register This register contains the internal register address set by an external I2C master to be used for internal register writes when the “Externally Visible I2C Internal Write Data Register” is written. The address is forced to be 4-byte aligned (the 2 lowest bits are read-only). This register is read-only from the register bus, and R/W from the I2C bus through the slave interface. This register corresponds to the I2C peripheral address 0x00 through 0x03. Note: This register is also used during the boot load process to accumulate the address read from the EEPROM for each address/data pair. Therefore, at the end of the boot load process, this register will contain the last register address read from the EEPROM, or the first four bytes of the register count. Register name: EXI2C_REG_WADDR Register offset: 0x1D200 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 ADDR 08:15 ADDR 16:23 ADDR 24:31 5 6 ADDR Bits Name 0:29 ADDR 7 Reserved Description Internal Register Write Address Type Reset Value R 0x0000_ 0000 R 00 Register address to be used when a write to the “Externally Visible I2C Internal Write Data Register” invokes an internal register write. This address is 4-byte aligned. The specific byte accessed is controlled by the peripheral address within the data register. Only the least significant 24 bits are significant to the Tsi578. Bits [00:07] can be written but will not have any effect. This address auto-increments by 4 if WINC in the “Externally Visible I2C Internal Access Control Register” is set, and the MSB of the data (peripheral address 0x07) is written. 30:31 Reserved Tsi578 User Manual June 6, 2016 Reserved Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.14 445 Externally Visible I2C Internal Write Data Register This register contains the internal register data last written by an external I2C master through the slave interface. The register is read-only from the register bus, and R/W from the I2C bus through the slave interface. This register corresponds to the I2C peripheral addresses 0x04 through 0x07. Note: This register is also used during the boot load process to accumulate the data read from the EEPROM for each address/data pair. Therefore, at the end of the boot load process, this register will contain the last register data read from the EEPROM, or the last four bytes of the register count. Register name: EXI2C_REG_WDATA Register offset: 0x1D204 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 WDATA 08:15 WDATA 16:23 WDATA 24:31 WDATA Bits Name 0:31 WDATA 5 Description Internal Register Write Data 6 7 Type Reset Value R 0 Data written by the external I2C master to be used for an internal register write. When WSIZE is configured for 4-byte access in the “Externally Visible I2C Internal Access Control Register” on page 450, the contents of this register are written to an internal register when the MSB is written by an external I2C master (peripheral address 0x07 = WDATA[00:07]). The register bus address is taken from the “Externally Visible I2C Internal Write Address Register” on page 444. Writes of other bytes (peripheral addresses 0x04-06) do not invoke internal accesses. Note: When the MSB of this register is written (peripheral address 0x07), the slave peripheral address wraps to 0x04 (the LSB of this register) instead of incrementing to 0x08. This allows an external master to write a block of internal registers without having to change the slave peripheral address, assuming WINC in the “Externally Visible I2C Internal Access Control Register” is set to auto-increment the WADDR. When 0x07 is read, the peripheral address increments to 0x08. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 446 13.2.15 13. I2C Registers > Register Descriptions Externally Visible I2C Internal Read Address Register This register contains the internal register address set by an external I2C master to be used for internal register reads when the “Externally Visible I2C Internal Read Data Register” is read. The address is forced to be 4-byte aligned (the 2 lowest bits are read-only). This register is read-only from the register bus, and R/W from the I2C bus through the slave interface. This register corresponds to the I2C peripheral address 0x10 through 0x13. Register name: EXI2C_REG_RADDR Register offset: 0x1D210 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 ADDR 08:15 ADDR 16:23 ADDR 24:31 5 6 ADDR Bits Name 0:29 ADDR 7 Reserved Description Internal Register Read Address Type Reset Value R 0x0000_ 0000 R 00 Register address to be used when a read to the “Externally Visible I2C Internal Read Data Register” invokes an internal register read. This address is 4-byte aligned. The specific byte accessed is controlled by the peripheral address within the data register. Only the least significant 24 bits are significant to the Tsi578. Bits [00:07] can be written, but will not have any effect. This address auto-increments by 4 if RINC in the “Externally Visible I2C Internal Access Control Register” is set, and the LSB of the data (peripheral address 0x14) is read. 30:31 Reserved Tsi578 User Manual June 6, 2016 Reserved Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.16 447 Externally Visible I2C Internal Read Data Register This register contains the internal register data last read by an external I2C master through the slave interface. The register is read-only from both the register bus and the I2C bus through the slave interface. This register corresponds to the I2C peripheral addresses 0x14 through 0x17. Register name: EXI2C_REG_RDATA Register offset: 0x1D214 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 RDATA 08:15 RDATA 16:23 RDATA 24:31 RDATA Bits Name 0:31 RDATA 5 Description Internal Register Read Data 6 7 Type Reset Value R 0 2 Data read by the external I C master as a side-effect of reading this register. When RSIZE is configured for 4-byte access in the “Externally Visible I2C Internal Access Control Register” on page 450, this register is updated by the read of an internal register when the LSB is read by an external I2C master (peripheral address 0x14 = RDATA[24:31]). The register bus address is taken from the “Externally Visible I2C Internal Read Address Register” on page 446. Reads of subsequent bytes (peripheral addresses 0x15-17) do not invoke internal accesses. Note: When the MSB of this register is read (peripheral address 0x17), the slave peripheral address wraps to 0x14 (the LSB of this register) instead of incrementing to 0x18. This allows an external master to read a block of internal registers without having to change the slave peripheral address, assuming RINC in the “Externally Visible I2C Internal Access Control Register” is set to auto-increment the RADDR. When 0x17 is written, the peripheral address increments to 0x18. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 448 13. I2C Registers > Register Descriptions 13.2.17 Externally Visible I2C Slave Access Status Register This register provides status indications to an external I2C master. It is read-only from both the register bus and the I2C bus through the slave interface. This register corresponds to the I2C peripheral addresses 0x20 through 0x23. Note: This register is affected by a reset controlled by the “I2C Reset Register”. All status will be cleared. Register name: EXI2C_ACC_STAT Register offset: 0x1D220 Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 6 7 OMB_ FLAG IMB_ FLAG Reserved ALERT_ FLAG 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 ACC_OK Bits Name 00:23 Reserved 24 ACC_OK Reserved Type Reset Value Reserved R 0x00_0000 Internal Register Access OK R 0 R 000 Description 0 = No access, or access in progress 1 = Access was successful This bit is set when a slave access successfully reads or writes data to an internal register through the “Externally Visible I2C Internal Write Data Register” or “Externally Visible I2C Internal Read Data Register”. Reading this bit returns the last status of the bit. If read through the slave interface (through peripheral address 0x20), the bit is then cleared to 0. The bit is not cleared to 0 when read by a host or indirectly through the EXI2C_REG_RADDR / EXI2C_REG_RDATA function. 25:27 Reserved Tsi578 User Manual June 6, 2016 Reserved Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 449 (Continued) Bits Name 28 OMB_FLAG Type Reset Value R 0 R 0 Reserved R 0 Alert Response Flag R 0 Description Outgoing Mailbox Flag 0 = Outgoing mailbox empty 1 = New data in the outgoing mailbox This bit is set when data is written to the outgoing mailbox register (“Externally Visible I2C Outgoing Mailbox Register”) by software. This bit remains set (flag up) until an external I2C master reads the outgoing mailbox register, and the bit is then cleared (flag down). When the mailbox is read, the OMB_EMPTY interrupt is asserted. A mailbox read is considered complete when the external master issues a STOP condition to end the transaction during which any bytes in the mailbox were written. 29 IMB_FLAG Incoming Mailbox Flag 0 = Incoming mailbox empty 1 = New data in the incoming mailbox This bit is set when data is written to the incoming mailbox register (“Externally Visible I2C Incoming Mailbox Register”) by an external I2C master. This bit remains set (flag up) until software reads the incoming mailbox register, and the bit is then cleared (flag down). When the mailbox is written and the flag is set, the IMB_FULL interrupt is asserted. A mailbox read is considered complete when the external master issues a STOP condition to end the transaction during which any bytes in the mailbox were written. 30 Reserved 31 ALERT_FLAG 0 = No alert 1 = Alert response active This bit is set when the Alert Response would trigger, as defined in the “Externally Visible I2C Status Register”. It is cleared by a successful response to the Alert Response Address or if the global status no longer requires the alert to be asserted. On a hard reset, this flag will assert immediately due to EXI2C_STAT[RESET] asserting. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 450 13.2.18 13. I2C Registers > Register Descriptions Externally Visible I2C Internal Access Control Register This register allows an external I2C master to configure the functionality for internal register accesses through the slave interface. This register is read-only from the register bus and R/W from the I2C bus through the slave interface. The fields in this register control the size and auto-increment functions when internal register accesses are performed by an external master through the slave interface. This register corresponds to the I2C peripheral addresses 0x24 through 0x27. Register name: EXI2C_ACC_CNTRL Register offset: 0x1D224 Reset value: 0x0000_00A0 Bits 0 1 2 3 4 5 RINC WINC 00:07 Reserved 08:15 Reserved 16:23 Reserved 24:31 RSIZE Bits Name 00:23 Reserved 24:25 RSIZE WSIZE 6 7 Reserved Type Reset Value Reserved R 0x00_0000 Internal Register Read Access Size R 10 Description 00 = 1 byte (Reserved) 01 = 2 bytes 10 = 4 bytes – An internal register read is invoked once for each internal register, loading all 4 bytes in the “Externally Visible I2C Internal Read Data Register”. The read is performed when the LSB of the data register is read (peripheral address 0x14). 11 = 8 bytes (Reserved) All Reserved settings will result in internal read accesses being disabled. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 451 (Continued) Bits Name 26:27 WSIZE Description Internal Register Write Access Size Type Reset Value R 10 R 0 R 0 R 00 00 = 1 byte (Reserved) 01 = 2 bytes 10 = 4 bytes – An internal register write is invoked once for each internal register, writing all 4 bytes from the “Externally Visible I2C Internal Write Data Register”. The write is performed when the MSB of the data register is written (peripheral address 0x07). 11 = 8 bytes (Reserved) All Reserved settings will result in internal writes accesses being disabled. 28 RINC Enable Auto-Incrementing on Internal Register Reads 0 = The “Externally Visible I2C Internal Read Address Register” is unchanged after reads performed to the “Externally Visible I2C Internal Read Data Register” 1 = The “Externally Visible I2C Internal Read Address Register” is incremented by 4 after reads performed to the LSB of the “Externally Visible I2C Internal Read Data Register” (peripheral address 0x14) so that the address points to the next internal register address. When auto-incrementing is on, consecutive internal registers can be read in one I2C transaction without the need to reset the peripheral address because the peripheral address wraps from 0x17 back to 0x14. If auto-incrementing is off, then the same internal register can be read multiple times in a single I2C transaction. The latter could be useful for polling a status register. 29 WINC Enable Auto-Incrementing on Internal Register Writes 0 = The “Externally Visible I2C Internal Write Address Register” is unchanged after reads performed to the “Externally Visible I2C Internal Write Data Register”. 1 = The “Externally Visible I2C Internal Write Address Register” is incremented by 4 after writes performed to the MSB of the “Externally Visible I2C Internal Write Data Register” (peripheral address 0x07) so that the address points to the next internal register address. When auto-incrementing is on, consecutive internal registers can be written in one I2C transaction with the need to reset the peripheral address because the peripheral address wraps from 0x07 back to 0x04. If auto-incrementing is off, then the same internal register can be written multiple times in a single I2C transaction. 30:31 Reserved Integrated Device Technology www.idt.com Reserved Tsi578 User Manual June 6, 2016 452 13. I2C Registers > Register Descriptions 13.2.19 Externally Visible I2C Status Register This register provides a summary view of status of the Tsi578. It can be polled by an external system management device. Any bit masked by its related enable, changing from 0 to 1, will cause ALERT_FLAG to be set in the “Externally Visible I2C Slave Access Status Register”, and the Tsi578 to respond to the Alert Response Address if the ALRT_EN bit is set in the “I2C Slave Configuration Register”. The related enables are present in the “Externally Visible I2C Enable Register”. If all masked status bits are 0, then the ALERT_FLAG clears. The ALERT_FLAG also clears when the slave responds to the Alert Response Address, and not set again until there is a change in the status. Bits [0:31] are read only from the register bus, but R/W1C from the I2C bus through the slave interface. They are set when the corresponding event occurs within the Tsi578, and held asserted until an external I2C master writes a 1 to that position to clear the event. If an event is still asserting at the time the W1C occurs, the bit remains set. The software status bits [1:3] are R/W from the register bus. They can be set or cleared by software, and thereby used for any system purpose. An external I2C master can write 1 to those bits to clear them. If the W1C occurs at the same time as software is writing the bit, the software written value will take precedence. This register corresponds to the I2C peripheral addresses 0x80 through 0x83. This register is affected by a reset controlled by the “I2C Reset Register”. All status will be cleared, including the software status bits. Chip status will re-assert after a SRESET is released in the “I2C Reset Register” only if that chip event occurs again. Register name: EXI2C_STAT Register offset: 0x1D280 Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 6 7 00:07 RESET SW_ STAT2 SW_ STAT1 SW_ STAT0 OMBW IMBR I2C TEA 08:15 RCS MCS LOGICAL MC_LAT MCE 16:23 PORT15 PORT14 PORT13 PORT12 PORT11 PORT10 PORT9 PORT8 24:31 PORT7 PORT6 PORT5 PORT4 PORT3 PORT2 PORT1 PORT0 Bits Name 0 RESET Reserved Description Reset Status Type Reset Value R 0 0 = No reset has occurred since the last time this bit was cleared. 1 = A reset has occurred since the last time this bit was cleared. This indicates a hardware reset of the Tsi578. This bit is set to 1 on a hardware reset, and cleared to 0 when the I2C logic is reset using the “I2C Reset Register”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 453 (Continued) Bits Name 1 SW_STAT2 Description Software Status Bit 2 Type Reset Value R/W 0 R/W 0 R/W 0 R 0 R 0 R 0 R 0 R 0 0 = Status value 0 1 = Status value 1 This bit can be set or cleared by software using a register write for any system specific purpose. 2 SW_STAT1 Software Status Bit 1 0 = Status value 0 1 = Status value 1 This bit can be set or cleared by software using a register write for any system specific purpose. 3 SW_STAT0 Software Status Bit 0 0 = Status value 0 1 = Status value 1 This bit can be set or cleared by software using a register write for any system specific purpose. 4 OMBW Outgoing Mailbox Written 0 = Outgoing mailbox not filled since last clear 1 = Outgoing mailbox is filled This bit asserted indicates that software has written to the outgoing mailbox since this bit was last cleared. 5 IMBR Incoming Mailbox Read 0 = Incoming mailbox not read since last clear 1 = Incoming mailbox is emptied This bit asserted indicates that software has read the incoming mailbox, when the mailbox was full, since this bit was last cleared. 6 I2C I2C Interrupt 2 0 = I C is not asserting an interrupt to processor 1 = I2C is asserting an interrupt to the processor 7 TEA Fabric Transaction Error Acknowledge (TEA) 0 = No TEA 1 = TEA asserted by one or more ports. TEA occurred in the switching fabric. 8 RCS Reset Control Symbol Status 0 = No status asserted 1 = Status asserted Combined Reset Control Symbol interrupt status from all ports. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 454 13. I2C Registers > Register Descriptions (Continued) Bits Name 9 MCS Description Multicast Event Control Symbol Status Type Reset Value R 0 0 = No status asserted 1 = Status asserted Combined multicast event control system interrupt status from all ports. 10:12 Reserved Reserved R 000 13 LOGICAL Logical/Transport Layer Error R 0 R 0 R 0 R 0 R 0 R 0 R 0 R 0 R 0 0 = No error 1 = A logical/transport layer error has occurred Only one of these errors is allowed to occur per switch. 14 MC_LAT Multicast Latency Timeout 0 = No timeout 1 = Multicast timeout on one or more ports Indicates that a multicast request for a specific port could not be sent in the required time. 15 MCE Multicast Work Queue Dropped Packet Interrupt 0 = No interrupt 1 = Multicast logic dropped a packet 16 PORT15 Port 15 Interrupt 0 = No interrupt 1 = Port 15 has asserted an interrupt to the processor 17 PORT14 Port 14 Interrupt 0 = No interrupt 1 = Port 14 has asserted an interrupt to the processor 18 PORT13 Port 13 Interrupt 0 = No interrupt 1 = Port 13 has asserted an interrupt to the processor 19 PORT12 Port 12 Interrupt 0 = No interrupt 1 = Port 12 has asserted an interrupt to the processor 20 PORT11 Port 11 Interrupt 0 = No interrupt 1 = Port 11 has asserted an interrupt to the processor 21 PORT10 Port 10 Interrupt 0 = No interrupt 1 = Port 10 has asserted an interrupt to the processor Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 455 (Continued) Bits Name 22 PORT9 Description Port 9 Interrupt Type Reset Value R 0 R 0 R 0 R 0 R 0 R 0 R 0 R 0 R 0 R 0 0 = No interrupt 1 = Port 9 has asserted an interrupt to the processor 23 PORT8 Port 8 Interrupt 0 = No interrupt 1 = Port 8 has asserted an interrupt to the processor 24 PORT7 Port 7 Interrupt 0 = No interrupt 1 = Port 7 has asserted an interrupt to the processor 25 PORT6 Port 6 Interrupt 0 = No interrupt 1 = Port 6 has asserted an interrupt to the processor 26 PORT5 Port 5 Interrupt 0 = No interrupt 1 = Port 5 has asserted an interrupt to the processor 27 PORT4 Port 4 Interrupt 0 = No interrupt 1 = Port 4 has asserted an interrupt to the processor 28 PORT3 Port 3 Interrupt 0 = No interrupt 1 = Port 3 has asserted an interrupt to the processor 29 PORT2 Port 2 Interrupt 0 = No interrupt 1 = Port 2 has asserted an interrupt to the processor 30 PORT1 Port 1 Interrupt 0 = No interrupt 1 = Port 1 has asserted an interrupt to the processor 31 PORT0 Port 0 Interrupt 0 = No interrupt 1 = Port 0 has asserted an interrupt to the processor Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 456 13. I2C Registers > Register Descriptions 13.2.20 Externally Visible I2C Enable Register Any bit set in this register will enable the equivalent bit in the “Externally Visible I2C Status Register” to set the ALERT_FLAG. These enables do not affect whether events are set in the global status register, only whether the asserted events are allowed to set the ALERT_FLAG when changing from 0 to 1. If an event is already asserted in the status when the related enable is changed from 0 to 1, this is equivalent to the event asserting, and the ALERT_FLAG will be set. This register is R/W from either the register bus or from the I2C bus through the slave interface. If the register is written by both at the same time, the register bus interface will take precedence. This register corresponds to the I2C peripheral addresses 0x84 through 0x87. Register name: EXI2C_STAT_ENABLE Register offset: 0x1D284 Reset value: 0xFFFF_FFFF Bits 0 1 2 3 4 5 6 7 00:07 RESET SW_ STAT2 SW_ STAT1 SW_ STAT0 OMBW IMBR I2C TEA 08:15 RCS MCS LOGICAL MC_LAT MCE 16:23 PORT15 PORT14 PORT13 PORT12 PORT11 PORT10 PORT9 PORT8 24:31 PORT7 PORT6 PORT5 PORT4 PORT3 PORT2 PORT1 PORT0 Type Reset Value R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 Bits Name 0 RESET Reserved Description Enable RESET Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 1 SW_STAT2 Enable SW_STAT2 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 2 SW_STAT1 Enable SW_STAT1 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 3 SW_STAT0 Enable SW_STAT0 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 4 OMBW Enable Outgoing Mailbox Written 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 457 (Continued) Bits Name 5 IMBR Description Enable Incoming Mailbox Read Type Reset Value R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 111 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 6 I2C Enable I2C Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 7 TEA Enable TEA Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 8 RCS Enable RCS Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 9 MCS Enable MCS Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 10:12 Reserved Reserved These bits are unused in the Tsi578. The enables can be changed, but have no effect. 13 LOGICAL Enable LOGICAL Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 14 MC_LAT Enable MC_LAT Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 15 MCE Enable MCE Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 16 PORT15 Enable PORT15 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 17 PORT14 Enable PORT14 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 18 PORT13 Enable PORT13 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 458 13. I2C Registers > Register Descriptions (Continued) Bits Name 19 PORT12 Description Enable PORT12 Alert Response Type Reset Value R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 20 PORT11 Enable PORT11 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 21 PORT10 Enable PORT10 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 22 PORT9 Enable PORT9 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 23 PORT8 Enable PORT8 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 24 PORT7 Enable PORT7 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 25 PORT6 Enable PORT6 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 26 PORT5 Enable PORT5 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 27 PORT4 Enable PORT4 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 28 PORT3 Enable PORT3 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 29 PORT2 Enable PORT2 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 459 (Continued) Bits Name 30 PORT1 Description Enable PORT1 Alert Response Type Reset Value R/W 1 R/W 1 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG 31 PORT0 Enable PORT0 Alert Response 0 = Status asserted will not enable setting ALERT_FLAG 1 = Status asserted will enable setting ALERT_FLAG Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 460 13.2.21 13. I2C Registers > Register Descriptions Externally Visible I2C Outgoing Mailbox Register This register is the outgoing mailbox, allowing the processor to communicate data to an external I2C master. The register is R/W from the register bus, and read-only from the I2C bus through the slave interface. This register corresponds to the I2C peripheral addresses 0x90 through 0x93. Register name: EXI2C_MBOX_OUT Register offset: 0x1D290 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 DATA 08:15 DATA 16:23 DATA 24:31 DATA 5 6 7 Bits Name Description Type Reset Value 0:31 DATA Mailbox data to be transferred to an external I2C master. Every write to this register by software sets the OMB_FLAG bit in the “Externally Visible I2C Slave Access Status Register”, indicating data is available in the outgoing mailbox. When this register is read by an external master, the OMB_FLAG bit is cleared, and an OMB_EMPTY interrupt is asserted if the OMB_FLAG bit was set. R/W 0 This register is read-only through the I2C slave interface. Note: A read is considered complete when the STOP condition is seen on the I2C bus, and one or more bytes in this register were read by the external master since the preceding START condition. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.22 461 Externally Visible I2C Incoming Mailbox Register This register is the incoming mailbox, allowing an external I2C master to communicate data to the host processor. The register is read-only from the register bus, and R/W from the I2C bus through the slave interface. This register corresponds to the I2C peripheral addresses 0x94 through 0x97. Register name: EXI2C_MBOX_IN Register offset: 0x1D294 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 DATA 08:15 DATA 16:23 DATA 24:31 DATA 5 6 7 Bits Name Description Type Reset value 0:31 DATA Mailbox data transferred from an external I2C master. Every write to this register sets the IMB_FLAG in the “Externally Visible I2C Slave Access Status Register”, and asserts an IMB_FULL interrupt. When software reads this register, the IMB_FLAG is cleared. R 0 Note: This register is writable only through the I2C slave interface. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 462 13. I2C Registers > Register Descriptions 13.2.23 I2C Event and Event Snapshot Registers These registers indicate events that occur within the I2C block. For the I2C_EVENT register, each bit is an “or” of the corresponding bit in the “I2C New Event Register” and the I2C_SNAP_EVENT register. The I2C_SNAP_EVENT register contains those events that were asserted prior to the last snapshot. A snapshot is taken when the “I2C Interrupt Status Register” is read. Each bit in these registers are write-one-to-clear. Writing a 1 to a bit position in the I2C_EVENT register will clear the event in both the snapshot and new event registers. Writing a 1 to a bit position in the I2C_SNAP_EVENT register will clear the bit only in that register. Writing a 1 to a bit position in the I2C_INT_STAT register will clear all related event bits in the I2C_SNAP_EVENT register, provided those events are enabled in the I2C_EVENT_ENB register. Bits from the I2C_EVENT register are masked (enabled) by the corresponding bits in the “I2C Enable Event Register”, and then determine whether a related bit in the I2C_INT_STAT register is set. Note: These registers are affected by a reset controlled by the “I2C Reset Register”. All events will be cleared and will not assert while SRESET is asserted in the “I2C Reset Register”. Register name: I2C_{EVENT, SNAP_EVENT} Register offset: 0x1D300, 1D304 Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 6 7 00:07 Reserved SDW SDR SD Reserved DTIMER DHIST DCMDD 08:15 IMBW OMBR Reserved SCOL STRTO SBTTO SSCLTO Reserved 16:23 Reserved MTD Reserved BLTO BLERR BLSZ BLNOD BLOK MNACK MCOL MTRTO MBTTO MSCLTO MARBTO 24:31 Reserved Bits Name 00 Reserved 01 SDW Description Reserved Slave Internal Register Write Done Event Type Reset Value R 0 R/W1C 0 R/W1C 0 R/W1C 0 0 = Event not asserted 1 = Slave interface completed a transaction for an external master that resulted in a write to an internal register 02 SDR Slave Internal Register Read Done Event 0 = Event not asserted 1 = Slave interface completed a transaction for an external master that resulted in a read to an internal register 03 SD Slave Transaction Done Event 0 = Event not asserted 1 = Slave interface completed an I2C transaction for an external master with no detectable error Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 463 (Continued) Bits Name Description 04 Reserved Reserved 05 DTIMER Diagnostic Timer Expired Event Type Reset Value R 0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 R 0 R/W1C 0 R/W1C 0 R/W1C 0 0 = Event not asserted 1 = Diagnostic timer has expired This event does not assert during the boot load sequence. The BLTO will assert instead. 06 DHIST Diagnostic History Filling Event 0 = Event not asserted 1 = Diagnostic history recorded the 8th event 07 DCMDD Diagnostic Command Done Event 0 = Event not asserted 1 = Master interface completed the diagnostic command 08 IMBW Incoming Mailbox Write Event 0 = Event not asserted 1 = Slave interface completed a write transaction to the incoming mailbox 09 OMBR Outgoing Mailbox Read Event 0 = Event not asserted 1 = Slave interface completed a read transaction to the outgoing mailbox when the OMB_FLAG was set The event is asserted only if the mailbox was full. 10 Reserved 11 SCOL Reserved Slave Collision Detect Event 0 = Event not asserted 1 = Slave interface detected a bit collision on the I2C bus during a slave transaction initiated by an external master. The slave interface was not able to successfully assert a 1 for a data bit or for a NACK. 12 STRTO Slave Transaction Timeout Event 0 = Event not asserted 1 = Transaction timer expired during a slave transaction initiated by an external master 13 SBTTO Slave Byte Timeout Event 0 = Event not asserted 1 = Byte timer expired during a slave transaction initiated by an external master Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 464 13. I2C Registers > Register Descriptions (Continued) Bits Name 14 SSCLTO Description Slave I2C_SCLK Low Timeout Event Type Reset Value R/W1C 0 R 00 R/W1C 0 R 0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 0 = Event not asserted 1 = I2C_SCLK low timer expired during a slave transaction initiated by an external master 15:16 Reserved 17 MTD Reserved Master Transaction Done Event 0 = Event not asserted 1 = Master interface completed the I2C transaction initiated through the “I2C Master Control Register” 18 Reserved 19 BLTO Reserved Boot Load Timeout Event 0 = Event not asserted 1 = Boot load timer expired This event only asserts during the boot load sequence if the Boot/Diagnostic timer expires. During normal operation, the DTIMER event will assert. 20 BLERR Boot Load Error Event 0 = Event not asserted 1 = The boot load sequence failed due to an error during register reading: a protocol error (NACK when ACK expected), an I2C_SCLK low timer, collision after the device addressing phase, or the last six bytes of a register count field not being 0xFF. This error will be qualified by the MNACK, MCOL or MSCLTO event. The last data read from the EEPROM is visible in the EXI2C_REG_WADDR and EXI2C_REG_WDATA registers. 21 BLSZ Boot Load Size Error Event 0 = Event not asserted 1 = The boot load sequence aborted because the count field is incorrect, indicating an improperly loaded boot EEPROM. The register count is visible in the EXI2C_REG_WADDR register. 22 BLNOD Boot Load No Device Event 0 = Event not asserted 1 = The boot load sequencer received a NACK 6 times when trying to address the slave device. No device is responding to the boot load device address. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 465 (Continued) Bits Name 23 BLOK Description Boot Load OK Event Type Reset Value R/W1C 0 R 00 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 R/W1C 0 0 = Event not asserted 1 = The boot load sequence completed with no detectable errors. This bit is also asserted if boot load is disabled upon power up. 24:25 Reserved 26 MNACK Reserved Master NACK Received Event 0 = Event not asserted 1 = Master interface received a NACK from a slave device during a transaction initiated through the “I2C Master Control Register”. This event can also assert during boot load, and provides more information on the source of a BLERR event. 27 MCOL Master Collision Detect Event 0 = Event not asserted 1 = Master interface lost arbitration after it addressed the slave device during a transaction initiated through the “I2C Master Control Register”. Another master is competing for access to the same slave device. This event can also assert during boot load, and provides more information on the source of a BLERR event. 28 MTRTO Master Transaction Timeout Event 0 = Event not asserted 1 = Transaction timeout timer expired during a transaction initiated through the “I2C Master Control Register” 29 MBTTO Master Byte Timeout Event 0 = Event not asserted 1 = Byte timeout timer expired during a transaction initiated through the “I2C Master Control Register” 30 MSCLTO Master I2C_SCLK Low Timeout Event 0 = Event not asserted 1 = SCL_TO timeout timer expired during a transaction initiated through the “I2C Master Control Register”. Another device is holding the I2C_SCLK signal low. This event can also assert during boot load, and provides more information on the source of a BLERR event. 31 MARBTO Master Arbitration Timeout Event 0 = Event not asserted 1 = Arbitration timeout timer expired during a transaction initiated through the “I2C Master Control Register”. Another master has control of the I2C bus. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 466 13. I2C Registers > Register Descriptions 13.2.24 I2C New Event Register This register indicates events that occurred since the last snapshot. This register is write-one-to-set. Writing a 1 to a bit position will set the event for diagnostic purposes. The register is cleared by writing to the I2C_EVENT register (see “I2C Event and Event Snapshot Registers”) or by creating a snapshot by reading the “I2C Interrupt Status Register”. For individual event descriptions, see the I2C_EVENT register. Note: This register is affected by a reset controlled by the “I2C Reset Register”. All events will be cleared and will not assert while SRESET is asserted in the “I2C Reset Register”. Register name: I2C_NEW_EVENT Register offset: 0x1D308 Reset value: 0x0000_0000 Bits 0 1 2 3 4 5 6 7 00:07 Reserved SDW SDR SD Reserved DTIMER DHIST DCMDD 08:15 IMBW OMBR Reserved SCOL STRTO SBTTO SSCLTO Reserved 16:23 Reserved MTD Reserved BLTO BLERR BLSZ BLNOD BLOK MNACK MCOL MTRTO MBTTO MSCLTO MARBTO 24:31 Reserved Bits Name 00 Reserved 01 SDW Description Reserved Slave Internal Register Write Done Event Type Reset Value R 0 R/W1S 0 R/W1S 0 R/W1S 0 R 0 R/W1S 0 R/W1S 0 0 = Event not asserted 1 = Event asserted 02 SDR Slave Internal Register Read Done Event 0 = Event not asserted 1 = Event asserted 03 SD Slave Transaction Done Event 0 = Event not asserted 1 = Event asserted 04 Reserved Reserved 05 DTIMER Diagnostic Timer Expired Event 0 = Event not asserted 1 = Event asserted 06 DHIST Diagnostic History Filling Event 0 = Event not asserted 1 = Event asserted Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 467 (Continued) Bits Name 07 DCMDD Description Diagnostic Command Done Event Type Reset Value R/W1S 0 R/W1S 0 R/W1S 0 R 0 R/W1S 0 R/W1S 0 R/W1S 0 R/W1S 0 R 00 R/W1S 0 R 0 R/W1S 0 R/W1S 0 0 = Event not asserted 1 = Event asserted 08 IMBW Incoming Mailbox Write Event 0 = Event not asserted 1 = Event asserted 09 OMBR Outgoing Mailbox Read Event 0 = Event not asserted 1 = Event asserted 10 Reserved 11 SCOL Reserved Slave Collision Detect Event 0 = Event not asserted 1 = Event asserted 12 STRTO Slave Transaction Timeout Event 0 = Event not asserted 1 = Event asserted 13 SBTTO Slave Byte Timeout Event 0 = Event not asserted 1 = Event asserted 14 SSCLTO Slave I2C_SCLK Low Timeout Event 0 = Event not asserted 1 = Event asserted 15:16 Reserved 17 MTD Reserved Master Transaction Done Event 0 = Event not asserted 1 = Event asserted 18 Reserved 19 BLTO Reserved Boot Load Timeout Event 0 = Event not asserted 1 = Event asserted 20 BLERR Boot Load Error Event 0 = Event not asserted 1 = Event asserted Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 468 13. I2C Registers > Register Descriptions (Continued) Bits Name 21 BLSZ Description Boot Load Size Error Event Type Reset Value R/W1S 0 R/W1S 0 R/W1S 0 R 00 R/W1S 0 R/W1S 0 R/W1S 0 R/W1S 0 R/W1S 0 R/W1S 0 0 = Event not asserted 1 = Event asserted 22 BLNOD Boot Load No Device Event 0 = Event not asserted 1 = Event asserted 23 BLOK Boot Load OK Event 0 = Event not asserted 1 = Event asserted 24:25 Reserved 26 MNACK Reserved Master NACK Received Event 0 = Event not asserted 1 = Event asserted 27 MCOL Master Collision Detect Event 0 = Event not asserted 1 = Event asserted 28 MTRTO Master Transaction Timeout Event 0 = Event not asserted 1 = Event asserted 29 MBTTO Master Byte Timeout Event 0 = Event not asserted 1 = Event asserted 30 MSCLTO Master I2C_SCLK Low Timeout Event 0 = Event not asserted 1 = Event asserted 31 MARBTO Master Arbitration Timeout Event 0 = Event not asserted 1 = Event asserted Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.25 469 I2C Enable Event Register This register modifies the function of the I2C_EVENT register (see “I2C Event and Event Snapshot Registers”). Each bit in this register enables (1) or disables (0) the corresponding event in the I2C_EVENT register from asserting in the “I2C Interrupt Status Register”. Register name: I2C_EVENT_ENB Register offset: 0x1D30C Reset value: 0x74DE_5F3F Bits 0 1 2 3 4 5 6 7 00:07 Reserved SDW SDR SD Reserved DTIMER DHIST DCMDD 08:15 IMBW OMBR Reserved SCOL STRTO SBTTO SSCLTO Reserved 16:23 Reserved MTD Reserved BLTO BLERR BLSZ BLNOD BLOK MNACK MCOL MTRTO MBTTO MSCLTO MARBTO 24:31 Reserved Bits Name 00 Reserved 01 SDW Description Reserved Slave Internal Register Write Done Enable Type Reset Value R 0 R/W 1 R/W 1 R/W 1 R 0 R/W 1 R/W 0 R/W 0 0 = Event does not assert to interrupt status 1 = Event will assert in interrupt status 02 SDR Slave Internal Register Read Done Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 03 SD Slave Transaction Done Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 04 Reserved Reserved 05 DTIMER Diagnostic Timer Expired Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 06 DHIST Diagnostic History Filling Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 07 DCMDD Diagnostic Command Done Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 470 13. I2C Registers > Register Descriptions (Continued) Bits Name 08 IMBW Description Incoming Mailbox Write Enable Type Reset Value R/W 1 R/W 1 R 0 R/W 1 R/W 1 R/W 1 R/W 1 R 00 R/W 1 R 0 R/W 1 R/W 1 R/W 1 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 09 OMBR Outgoing Mailbox Read Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 10 Reserved 11 SCOL Reserved Slave Collision Detect Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 12 STRTO Slave Transaction Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 13 SBTTO Slave Byte Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 14 SSCLTO Slave I2C_SCLK Low Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 15:16 Reserved 17 MTD Reserved Master Transaction Done Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 18 Reserved 19 BLTO Reserved Boot Load Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 20 BLERR Boot Load Error Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 21 BLSZ Boot Load Size Error Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 471 (Continued) Bits Name 22 BLNOD Description Boot Load No Device Enable Type Reset Value R/W 1 R/W 1 R 00 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 R/W 1 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 23 BLOK Boot Load OK Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 24:25 Reserved 26 MNACK Reserved Master NACK Received Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 27 MCOL Master Collision Detect Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 28 MTRTO Master Transaction Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 29 MBTTO Master Byte Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 30 MSCLTO Master I2C_SCLK Low Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status 31 MARBTO Master Arbitration Timeout Enable 0 = Event does not assert to interrupt status 1 = Event will assert in the interrupt status Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 472 13.2.26 13. I2C Registers > Register Descriptions I2C Time Period Divider Register This register provides programmable extension of the reference clock period into longer periods used by the timeout and idle detect timers. Register name: I2C_DIVIDER Register offset: 0x1D320 Reset value: 0x0063_03E7 Bits 0 1 00:07 2 3 4 5 Reserved 6 7 USDIV 08:15 USDIV 16:23 Reserved MSDIV 24:31 MSDIV Bits Name 00:03 Reserved 04:15 USDIV Description Reserved Period Divider for Micro-Second Based Timers Type Reset Value R 0x0 R/W 0x0063 R 0x0 R/W 0x03E7 This field divides the reference clock down for use by the Idle Detect Timer, the Byte Timeout Timer, the I2C_SCLK Low Timeout Timer, and the Milli-Second Period Divider. Period(USDIV) = Period(P_CLK) * (USDIV + 1), where P_CLK is 10 ns. Reset period is 1 microsecond. 16:19 Reserved 20:31 MSDIV Reserved Period Divider for Milli-Second Based Timers This field divides the USDIV period down further for use by the Arbitration Timeout Timer, the Transaction Timeout Timer, and the Boot/Diag Timeout Timer. Period(MSDIV) = Period(USDIV) * (MSDIV + 1). Reset period is 1 millisecond. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.27 473 I2C Start Condition Setup/Hold Timing Register This register programs the setup and hold timing for the Start condition when generated by the master control logic. The timer periods are relative to the reference clock. This register is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. Register name: I2C_START_SETUP_HOLD Register offset: 0x1D340 Reset value: 0x01D7_0191 Bits 0 1 2 3 4 00:07 START_SETUP 08:15 START_SETUP 16:23 START_HOLD 24:31 START_HOLD Bits Name 00:15 START_SETUP 5 Description Count for the START Condition Setup Period 6 7 Type Reset Value R/W 0x01D7 R/W 0x0191 Defines the minimum setup time for the START condition; that is, both I2C_SCLK and I2C_SD seen high prior to I2C_SD pulled low. This is a master-only timing parameter. This value also doubles as the effective Stop Hold time. Period(START_SETUP) = (START_SETUP * Period(PCLK)), where PCLK is 10ns. Reset time is 4.71 microseconds. 16:31 START_HOLD Count for the START Condition Hold Period Defines the minimum hold time for the START condition; that is, from I2C_SD seen low to I2C_SCLK pulled low. This is a master only timing parameter. Period(START_HOLD) = (START_HOLD * Period(PCLK)), where PCLK is 10 ns. Reset time is 4.01 microseconds. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 474 13.2.28 13. I2C Registers > Register Descriptions I2C Stop/Idle Timing Register This register programs the setup timing for the Stop condition when generated by the master control logic, and the Idle Detect timer. The Start Setup time doubles as the Stop Hold. The timer period for the Stop setup is relative to the reference clock. The timer period for the Idle Detect is relative to the USDIV period. The STOP setup time is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. Register name: I2C_STOP_IDLE Register offset: 0x1D344 Reset value: 0x0191_0033 Bits 0 1 2 3 4 00:07 STOP_SETUP 08:15 STOP_SETUP 16:23 IDLE_DET 24:31 IDLE_DET Bits Name 00:15 STOP_SETUP 5 Description Count for STOP Condition Setup Period 6 7 Type Reset Value R/W 0x0191 R/W 0x0033 Defines the minimum setup time for the STOP condition; that is, both I2C_SCLK seen high and I2C_SD seen low prior to I2C_SD released high. This is a master-only timing parameter. Period(STOP_SETUP) = (STOP_SETUP * Period(P_CLK)), where P_CLK is 10ns. Reset time is 4.01 microseconds. 16:31 IDLE_DET Count for Idle Detect Period Used in two cases. First, defines the period after reset during which the I2C_SCLK signal must be seen high to call the bus idle. This period is needed to avoid interfering with an ongoing transaction after reset. Second, defines the period before a master transaction during which the I2C_SCLK and I2C_SD signals must both be seen high to call the bus idle. This period is a protection against external master devices not correctly idling the bus. Period(IDLE_DET) = (IDLE_DET * Period(USDIV)), where USDIV is the microsecond time defined in the “I2C Time Period Divider Register”. A value of zero results in no idle detect period, meaning the bus will be sensed as idle immediately. Reset time is 51 microseconds. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.29 475 I2C_SD Setup and Hold Timing Register This register programs the setup and hold times for the I2C_SD signal when output by either the master or slave interface. It is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. Register name: I2C_SDA_SETUP_HOLD Register offset: 0x1D348 Reset value: 0x007E_001F Bits 0 1 2 3 4 00:07 SDA_SETUP 08:15 SDA_SETUP 16:23 SDA_HOLD 24:31 SDA_HOLD Bits Name 00:15 SDA_SETUP 5 Description Count for the I2C_SD Setup Period 6 7 Type Reset Value R/W 0x007E R/W 0x001F Defines the minimum setup time for the I2C_SD signal; that is, I2C_SD set to desired value prior to rising edge of I2C_SCLK. This applies to both slave and master interface. Note: This value should be set to the sum of the I2C_SD setup time and the maximum rise/fall time of the I2C_SD signal to ensure that the signal is valid on the output at the correct time. This time is different than the raw I2C_SD setup time in the I2C Specification. Period(SDA_SETUP) = (SDA_SETUP * Period(P_CLK)), where P_CLK is 10ns. Reset time is 1260 nanoseconds. 16:31 SDA_HOLD Count for I2C_SD Hold Period Defines the minimum hold time for the I2C_SD signal; that is, I2C_SD valid past the falling edge of I2C_SCLK. This applies to both slave and master interface. Period(SDA_HOLD) = (SDA_HOLD * Period(P_CLK)), where P_CLK is 10 ns. Reset time is 310 nanoseconds. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 476 13.2.30 13. I2C Registers > Register Descriptions I2C_SCLK High and Low Timing Register This register programs the nominal high and low periods of the I2C_SCLK signal when generated by the master interface. It is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. Register name: I2C_SCL_PERIOD Register offset: 0x1D34C Reset value: 0x01F4_01F4 Bits 0 1 2 3 4 00:07 SCL_HIGH 08:15 SCL_HIGH 16:23 SCL_LOW 24:31 SCL_LOW Bits Name 00:15 SCL_HIGH 5 Description Count for I2C_SCLK High Period 6 7 Type Reset Value R/W 0x01F4 R/W 0x01F4 Defines the nominal high period of the clock, from rising edge to falling edge of I2C_SCLK. This is a master-only parameter. The observed period may be shorter if other devices pull the clock low. Period(SCL_HIGH) = (SCL_HIGH * Period(P_CLK)), where P_CLK is 10 ns. Reset time is 5.00 microseconds (100 kHz). 16:31 SCL_LOW Count for I2C_SCLK Low Period Defines the nominal low period of the clock, from falling edge to rising edge of I2C_SCLK. This is a master-only parameter. The observed period may be longer if other devices pull the clock low. Period(SCL_LOW) = (SCL_LOW * Period(P_CLK)), where P_CLK is 10 ns. Reset time is 5.00 microseconds (100 kHz). Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.31 477 I2C_SCLK Minimum High and Low Timing Register This register programs the minimum high and low periods of the I2C_SCLK signal when generated by the master interface. It is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. Register name: I2C_SCL_MIN_PERIOD Register offset: 0x1D350 Reset value: 0x0191_01D7 Bits 0 1 2 3 4 00:07 SCL_MINH 08:15 SCL_MINH 16:23 SCL_MINL 24:31 SCL_MINL Bits Name 00:15 SCL_MINH 5 Description Count for I2C_SCLK High Minimum Period 6 7 Type Reset Value R/W 0x0191 R/W 0x01D7 Defines the minimum high period of the clock, from rising edge seen high to falling edge of I2C_SCLK. This is a master-only parameter. The observed period may be shorter if other devices pull the clock low. Period(SCL_MINH) = (SCL_MINH * Period(P_CLK)), where P_CLK is 10 ns. Reset time is 4.01 microseconds. 16:31 SCL_MINL Count for I2C_SCLK Low Minimum Period Defines the minimum low period of the clock, from falling edge seen low to rising edge of I2C_SCLK. This is a master-only parameter. The observed period may be longer if other devices pull the clock low. Period(SCL_MINL) = (SCL_MINL * Period(P_CLK)), where P_CLK is 10 ns. Reset time is 4.71 microseconds. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 478 13.2.32 13. I2C Registers > Register Descriptions I2C_SCLK Low and Arbitration Timeout Register This register programs the I2C_SCLK low timeout and the Arbitration timeout. The arbitration timer period is relative to the MSDIV period, and the I2C_SCLK low timeout period is relative to the USDIV period. Register name: I2C_SCL_ARB_TIMEOUT Register offset: 0x1D354 Reset value: 0x65BB_0033 Bits 0 1 2 3 4 00:07 SCL_TO 08:15 SCL_TO 16:23 ARB_TO 24:31 ARB_TO Bits Name 00:15 SCL_TO 5 Description Count for I2C_SCLK Low Timeout Period 6 7 Type Reset Value R/W 0x65BB R/W 0x0033 Defines the maximum amount of time for a slave device holding the I2C_SCLK signal low. This timeout covers the period from I2C_SCLK falling edge to the next I2C_SCLK rising edge. Value 0x0 disables the timeout. Period(SCL_TO) = (SCL_TO * Period(USDIV)) where USDIV is the microsecond time defined in the “I2C Time Period Divider Register”. The reset value of this timeout is 26,000 microseconds (26 milliseconds). 16:31 ARB_TO Count for Arbitration Timeout Period Defines the maximum amount of time for the master interface to arbitrate for the bus before aborting the transaction. This timeout covers the period from master operation start (setting the START bit in the “I2C Master Control Register”) until the ACK/NACK is received from the external slave for the slave device address. A value of 0 disables the timeout. Period(ARB_TO) = (ARB_TO * Period(MSDIV)) where MSDIV is the millisecond time defined in “I2C Time Period Divider Register”. The reset value of this timeout is 51 milliseconds. However, this timeout is not active during the boot load sequence. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.33 479 I2C Byte/Transaction Timeout Register This register programs the Transaction and Byte timeouts. The timer periods are relative to the USDIV period for the byte timeout, and relative to the MSDIV period for the transaction timeout. Register name: I2C_BYTE_TRAN_TIMEOUT Register offset: 0x1D358 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 BYTE_TO 08:15 BYTE_TO 16:23 TRAN_TO 24:31 TRAN_TO Bits Name 00:15 BYTE_TO 5 Description Count for Byte Timeout Period 6 7 Type Reset Value R/W 0x0000 R/W 0x0000 Defines the maximum amount of time for a byte to be transferred on the I2C bus. This covers the period from Start condition to next ACK/NACK, between two successive ACK/NACK bits, or from ACK/NACK to Stop/Restart condition. A value of 0 disables the timeout. Period(BYTE_TO) = (BYTE_TO * Period(USDIV)) where USDIV is the microsecond time defined in “I2C Time Period Divider Register”. This timeout is disabled on reset, and is not used during boot load. 16:31 TRAN_TO Count for Transaction Timeout Period Defines the maximum amount of time for a transaction on the I2C bus. This covers the period from Start to Stop. A value of 0 disables the timeout. Period(TRAN_TO) = (TRAN_TO * Period(MSDIV)) where MSDIV is the millisecond time defined in “I2C Time Period Divider Register”. This timeout is disabled on reset, and is not used during boot load. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 480 13. I2C Registers > Register Descriptions 13.2.34 I2C Boot and Diagnostic Timer This register programs a timer that times out the boot load sequence, and can be used after boot load as a general purpose timer. Register name: I2C_BOOT_DIAG_TIMER Register offset: 0x1D35C Reset value: 0x0000_0FA0 Bits 0 1 00:07 FREERUN 2 3 4 Reserved 16:23 COUNT 24:31 COUNT Name 00 FREERUN 6 7 Reserved 08:15 Bits 5 Description Free Running Timer Type Reset Value R/W 0 R 0x0000 R/W 0x0FA0 0 = Timer is not automatically restarted when expires 1 = When timer expires, timer is restarted with same COUNT 01:15 Reserved 16:31 COUNT Reserved Count for Timer Period Defines period for timer. Initial reset value is used for overall boot load timeout. During normal operation, this timer can be used for any general purpose timing. A value of 0 disables the timeout. Period(DTIMER) = (COUNT * Period(MSDIV)), where MSDIV is the millisecond period define in “I2C Time Period Divider Register”. Timer begins counting when this register is written. If this register is written while the counter is running, the timer is immediately restarted with the new COUNT, and the DTIMER/BLTO event is not generated. When the timer expires, either the BLTO or DTIMER event is generated, depending on whether the boot load sequence is active. If FREERUN is set to 1 when timer expires, then the timer is restarted immediately (the event is still generated), providing a periodic interrupt capability. The reset value for the boot load timeout is 4 seconds. If the boot load completes before the timer expires, the timer is set to zero (disabled). Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 13. I2C Registers > Register Descriptions 13.2.35 481 I2C Boot Load Diagnostic Progress Register This register provides visibility of the register count and peripheral address during the boot load sequence. Register name: I2C_BOOT_DIAG_PROGRESS Register offset: 0x1D3B8 Reset value: 0x0000_0000 Bits 0 1 2 3 4 00:07 REGCNT 08:15 REGCNT 16:23 PADDR 24:31 PADDR Bits Name 00:15 REGCNT 5 Description Register Count 6 Type PADDR Peripheral Address Value of current peripheral address used by the boot load sequence. This field is initialized to zero at reset, and increments as the boot load sequence progresses. If a chain operation is performed, this field is loaded with the new peripheral address from the “I2C Boot Control Register” (with the 3 LSBs set to zero). Reset Value R 0x0000_000 0 R 0x0000_000 0 The number of registers remaining to load from the current EEPROM during the boot load sequence. This register is initialized to the count read from the first two bytes of the EEPROM after reset, or to the first two byte read after a boot chaining operation. The field counts down as each register address/data pair is read. 16:31 7 This is a diagnostic register. Documentation is provided for reference purposes only. The function of this register is not guaranteed in future versions and usage thereof is not supported. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 482 13. I2C Registers > Register Descriptions 13.2.36 I2C Boot Load Diagnostic Configuration Register This register provides visibility of boot sequence information. Register name: I2C_BOOT_DIAG_CFG Register offset: 0x1D3BC Reset value: Undefined Bits 0 1 2 3 4 00:07 BOOTING BDIS PASIZE PINC Reserved 16:23 Reserved Reserved Bits Name 00 BOOTING 6 7 Reserved 08:15 24:31 5 BOOT_ADDR Type Reset Value R 0 R Undefined R Undefined R 0 Reserved R 0x000 Boot Device Address R 0x00 Description Booting 0 = Boot sequence not active 1 = Boot sequence in progress 01 BDIS Boot Disabled 0 = Boot enabled 1 = Boot disabled 02 PASIZE Peripheral Address Size 0 = 1-byte peripheral address 1 = 2-byte peripheral address Note: This is the state of the I2C_BOOT_CNTRL.PSIZE field at boot load start or after a chain operation. 03 PINC Page Increment 0 = Page increment disabled 1 = Page increment enabled 04:24 Reserved 25:31 BOOT_ADDR Current value of the boot device address in use by the boot load sequence. This value is incremented during the bootload if the page increment feature is enabled. This is a diagnostic register. Documentation is provided for reference purposes only. The function of this register is not guaranteed in future versions and usage thereof is not supported. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 483 A. Serial RapidIO Protocol Overview The RapidIO Physical Layer 1x/4x LP-Serial Specification addresses the physical layer requirements for devices utilizing an electrical serial connection medium. This specification defines a full duplex serial physical layer interface (link) between devices using unidirectional differential signals in each direction. Further, it allows ganging of four serial links for applications requiring higher link performance. It also defines a protocol for link management and packet transport over a link. RapidIO systems are comprised of end point processing elements and switch processing elements. The RapidIO interconnect architecture is partitioned into a layered hierarchy of specifications which includes the Logical, Common Transport, and Physical layers. The Logical layer specifications define the operations and associated transactions by which end point processing elements communicate with each other. The Common Transport layer defines how transactions are routed from one end point processing element to another through switch processing elements. The Physical Layer defines how adjacent processing elements electrically connect to each other. RapidIO packets are formed through the combination of bit fields defined in the Logical, Common Transport, and Physical Layer specifications. TheTsi578 fully manages the end to end link on each port. A.1 Protocol The RapidIO Physical Layer 1x/4x LP-Serial specification defines the protocol for packet delivery between serial RapidIO devices including packet and control symbol transmission, flow control, error management, and other device to device functions. A particular device may not implement all of the mode selectable features presented in the RapidIO specification. The 1x/4x LP-Serial physical layer specification has the following properties: A.2 • Embeds the transmission clock with data using an 8B/10B encoding scheme. • Supports one serial differential pair, referred to as one lane, or four ganged serial differential pairs, referred to as four lanes, in each direction. • Allows switching packets between RapidIO 1x/4x LP-Serial Ports and RapidIO Physical Layer 8/16 LP-LVDS ports without requiring packet manipulation. • Employs similar retry and error recovery protocols as the RapidIO Physical Layer 8/16 LP-LVDS specification. • Supports transmission rates of 1.25, 2.5, and 3.125 Gbaud (data rates of 1.0, 2.0, and 2.5 Gbit/s) per lane. Packets A RapidIO 1x/4x LP-Serial packet is formed by prefixing a 10-bit physical layer header to the combined RapidIO transport and logical layer bit fields followed by an appended 16-bit CRC field. The sum of all of the bit fields adds 20 bytes to the encapsulated data packet size. The maximum data field size is 256 bytes resulting in a maximum packet size of 276 bytes. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 484 A.2.1 A. Serial RapidIO Protocol Overview > Physical Layer Control Symbols Two classes of control symbols are defined (stype0 and stype1) and are used for packet acknowledgment, link utility functions, link maintenance, and packet delineation. A control symbol is a 24-bit entity (including a 5-bit CRC code). The control symbol is used for packet delineation by placement at the beginning of a packet. The control symbol may also be embedded within a packet for message passing and link status notification as well as sent when the link is idle. Acknowledgment control symbols are used by processing elements to indicate packet transmission status. Utility control symbols are used to communicate buffer status and link recovery synchronization. Link maintenance control symbols are used by link partner devices to communicate physical layer status, synchronization requests, and device reset. A.3 Physical Layer The physical layer is broken into two sub-layers, the PCS and PMA Layers describes the Physical Coding Sub-layer (PCS) functionality as well as the Physical Media Attachment (PMA) functionality. A.3.1 PCS Layer The PCS layer functionality includes 8B/10B encoding scheme for embedding the clock with the data. It also manages the transmission rules for the 1x and 4x interfaces and defines the link initialization sequence for clock synchronization. The PCS function is also responsible for idle sequence generation, encoding for transmission and lane striping, and decoding, lane alignment and de-striping on reception. The PCS layer also provides methods for determining the operational mode of the port as 4-lane or 1-lane operation, and means to detect link states. It provides for clock difference tolerance between the sender and receiver without requiring flow control. A.3.2 PMA Layer The PMA function is responsible for serializing 10-bit parallel code-groups to/from a serial bit stream on a lane-by-lane basis. Upon receiving data, the PMA function provides alignment of the received bit stream to 10-bit code-group boundaries, done independently on a lane-by-lane basis. It then provides a continuous stream of 10-bit code-groups to the PCS, one stream for each lane. The 10-bit code-groups are not observable by layers higher than the PCS. A.3.3 Physical Protocol The physical connection of a RapidIO link is managed by a series of control symbols transmitted on a transmit - response basis. These control symbols are made up of 10-bit encoded special characters and 3 byte control symbols. Encoded 8-bit characters are given encoding values and names that allow easy and unique detection of the character. Detailed explanation of the encoding values and names can be found in Chapter 4, “PCS and PMA Layers” of “Part VI Physical Layer 1x/4x LP-Serial RapidIO Specification”. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com A. Serial RapidIO Protocol Overview > Physical Layer 485 The Table 51 illustrates the Special Characters and their function as it applies to the serial protocol. Table 51: Special Characters and Encoding Code Group Use Number of Groups Encoding 8-bit Value /PD/ packet delimiter 1 /K28.3/ 0x7C /SC/ start of Control Symbol 1 /K28.0/ 0x1C /I/ 1x Idle /K/ or /R/ see below 0xBC or 0xFD or 0xFB or /A/ /K/ 1x Sync 1 /K28.5/ 0xBC /R/ 1x Skip 1 /K29.7/ 0xFD /A/ 1x Align 1 /K27.7/ 0xFB //I// Idle Column //K// or //R// see below 0xBC or 0xFD or 0xFB or //A// //K// 4x Idle 4 /K28.5/K28.5/K2 8.5/K28.5/ 0xBC on each lane //R// 4x Sync 4 /K29.7/K29.7/K2 9.7/K29.7/ 0xFD on each lane //A// 4x Skip 4 /K27.7/K27.7/K2 7.7/K27.7/ 0xFB on each lane Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 486 A. Serial RapidIO Protocol Overview > Physical Layer Table 52 illustrates the control symbol construction in 8-bit values. Further detail on the usage of the control symbols may be found in Part VI Physical Layer 1x/4x LP-Serial RapidIO Specification”. Table 52: Control Symbol Construction 3-bits --- 5-bits 5-bits 3-bits stype0 [0-2] definition P-0 P-1 stype1 [0-2] 000 pkt-accepte d pkt-ackID buf_status 001 pkt-rtry pkt-ackID buf_status 010 pkt-not-acce pted pkt-ackID cause 011 reserved --- --- 100 status ackID_stat us buf_status 101 reserved --- --- 110 link-respons e ackID_stat us port_statu s --- 3-bits 5-bits cmd CRC -- (see below) (see below) 111 reserved --- --- pkt-not-accepted cause [0-4] Tsi578 User Manual June 6, 2016 definition 00000 reserved 00001 recvd unexpected ackID on pkt 00010 recvd a ctrl symbol w/ bad CRC 00011 non-maint pkt reception is stopped 00100 recvd pkt w/ bad CRC 00101 recvd invalid char or valid but illegal char 000110-11 110 reserved 11111 general error Integrated Device Technology www.idt.com A. Serial RapidIO Protocol Overview > Physical Layer 487 Table 52: Control Symbol Construction 3-bits --- 5-bits 5-bits link response port_status [0-4] 3-bits --- 3-bits 5-bits -- stype1[0-2] definition cmd[0-2 ] cmd function pkt delimiter 000 start of pkt 000 reserved yes 001 stomp 000 reserved yes 010 end of pkt 000 reserved yes 011 restart from rtry 000 reserved N/A 100 link req 000-010 reserved N/A 011 reset device N/A 100 input status N/A 101-111 reserved N/A definition 00000 reserved 00001 reserved 00010 unrecoverable error unable to accept pkts 00011 reserved 00100 retry-stopped state 00101 error-stopped state 00110-011 11 reserved 10000 OK 10001-111 11 reserved stype1 Integrated Device Technology www.idt.com 101 multicast event 000 reserved no 110 reserved 000 reserved no 111 NOP 000 reserved no Tsi578 User Manual June 6, 2016 488 Tsi578 User Manual June 6, 2016 A. Serial RapidIO Protocol Overview > Physical Layer Integrated Device Technology www.idt.com 489 B. Clocking This appendix describes device behavior outside the RapidIO Interconnect Specification (Revision 1.3) recommended operating line rates and clock frequencies. The following topics are discussed: B.1 • “Line Rate Support” on page 489 • “P_CLK Programming” on page 493 Line Rate Support The Tsi578 supports all of the RapidIO Interconnect Specification (Revision 1.3) specified line rates of 1.25, 2.50, and 3.125 Gbaud. The device also supports line rates that are outside of the RapidIO specification. The ability to support multiple line rates gives the Tsi578 flexibility in both application support and power consumption. Table 53 shows the supported line rates for the Tsi578. The Serial Port Select pin, SP_IO_SPEED[1,0] must be set to the values shown in Table 53 to achieve the documented line rates. Table 53: Tsi578 Supported Line Rates a S_CLK_p/n (MHz) 153.60 Baud Rate (Gbaud) SP_IO_SPEED[1,0] Bit Settings Register Settings 1.2288 0,0 - 0,1 - 0,1 - 1,0 - 0,0 - 0,1 - 1,0 - CPRI Line Rate 153.60 1.536 OBSAI Line Rate 153.60 2.4576 CPRI Line Rate 153.60 3.0720 CPRI Line Rate 156.25 1.2500 Standard RapidIO Line Rate 156.25 2.5000 Standard RapidIO Line Rate 156.25 3.1250 Standard RapidIO Line Rate Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 490 B. Clocking > Line Rate Support Table 53: Tsi578 Supported Line Rates (Continued)a S_CLK_p/n (MHz) 125.00 Baud Rate (Gbaud) SP_IO_SPEED[1,0] Bit Settings Register Settings 1.2500 0,1 - 1,0 - 1,0 See “Register Requirements Using 125 MHz S_CLK for a 3.125 Gbps Link Rate” on page 490 Standard RapidIO Line Rate 125.00 2.5000 Standard RapidIO Line Rate 125.00 3.1250 Standard RapidIO Line Rate a. This information assumes a +/- 100 ppm clock tolerance that must be obeyed between link partners. All bit and register settings that are documented for operation with S_CLK = 156.25 .MHz also apply to the use of 153.6 MHz and 125 MHz. For more clocking information, see “Clocks” in the Tsi578 User Manual. B.1.1 Register Requirements Using 125 MHz S_CLK for a 3.125 Gbps Link Rate In order to use S_CLK at 125 MHz to create a 3.125 Gbps link baud rate, the default values in the SerDes PLL Control Register must be modified from a x20 multiplier to a x25 multiplier. On power-up, the default PLL multipliers of x20 causes the 125 MHz source to create a 2.5 Gbps link rate. Changing this link rate to 3.125 Gbps requires either intervention by the I2C boot EEPROM during boot loading to reconfigure the SerDes, or the intervention of an external host to modify the SerDes registers through the use of maintenance transactions. However, modifying by EEPROM is the recommended method. The SerDes PLL Control Registers are volatile. Applying HARD_RST_b or asserting PWRDN_x4 results in the SerDes PLL Control Register default value being re-applied. B.1.1.1 Modification by EEPROM Boot Load Modifying the EEPROM is the recommended method for using the S_CLK at 125 MHz to create a 3.125 Gbps link baud rate because the EEPROM boot load accesses the required configuration registers before the SerDes are released from reset. This can be performed by modifying the EEPROM loading script (for more information, see “EEPROM Scripts” in the Tsi578 User Manual). Once the boot load is complete, the modified switch ports operate at 3.125 Gbps, while the remaining ports operate at 2.5 Gbps. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com B. Clocking > Line Rate Support 491 Using the Script The example EEPROM loading script in the “EEPROM Scripts” appendix of the Tsi578 User Manual configures ports six and eight of the Tsi578. Other ports can be added to the script and configured by editing the text. The script is written assuming that no other contents are required in the EEPROM. Additional register configurations may be appended to the script as required, as well as the value written to location 0 of the EEPROM to indicate the number (hex) of registers the bootloader is required to initialize. For more information regarding configuring the contents of the EEPROM, see “I2C Interface” in the Tsi578 User Manual. B.1.1.2 Modification by Maintenance Transaction Modification by maintenance transactions must occur after the link to the host processor tasked with changing the port speeds has initialized. The process involves performing the sequence of operations listed in “Example Maintenance Transaction Sequence” on page 491. The possibility of link instability exists should the process not be followed in the stated sequence Example Maintenance Transaction Sequence The following procedure configures port two. After these steps are complete, port two can train with its link partner at a baud rate of 3.125Gbps. 1. Reset the MAC by asserting SOFT_RST_x4 and leave the IO_SPEED set to 3.125 — Write offset 0x132C8 with 0x7FFF0012 2. Set the BYPASS_INIT bit to enable control of the following: MPLL_CK_OFF, SERDES_RESET, MPLL_PWRON, TX_EN, RX_PLL_PWRON, RX_EN — Write offset 0x132C0 with 0xCA060084 3. Clear the RX_EN bit in the SMAC_x SerDes Configuration Register Channel 0 - 3 — Write offset 0x132B0 with 0x203CA513 — Write offset 0x132B4 with 0x203CA513 — Write offset 0x132B8 with 0x203CA513 — Write offset 0x132BC with 0x203CA513 4. Clear the RX_PLL_PWRON bit in the SMAC_x SerDes Configuration Register Channel 0 - 3 — Write offset 0x132B0 with 0x203C2513 — Write offset 0x132B4 with 0x203C2513 — Write offset 0x132B8 with 0x203C2513 — Write offset 0x132BC with 0x203C2513 5. Clear the TX_EN field in the SMACx_CFG_CH0 — Write offset 0x132B0 with 0x200C2513 — Write offset 0x132B4 with 0x200C2513 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 492 B. Clocking > Line Rate Support — Write offset 0x132B8 with 0x200C2513 — Write offset 0x132BC with 0x200C2513 6. Clear the MPLL_PWRON bit in the SMACx_CFG_GLOBAL register — Write offset 0x132c0 with 0xCA060004 — Ensure that BYPASS_INIT remains asserted 7. Set the MPLL_CK_OFF bit in the SMACx_CFG_GLOBAL register — Write offset 0x132c0 with 0xCA060044 8. Change the multipliers by: — Write offset 0x132C4 with 0x002C0545 — Write offset 0x132C0 with 0xCA060045 9. Clear the MPLL_CK_OFF bit in the SMACx_CFG_GBL register — Write offset 0x132C0 with 0xCA060005 10. Toggle the SERDES_RSTN bit in the SMACx_CFG_GBL register — Write offset 0x132C0 with 0x4A060005 — Write offset 0x132c0 with 0xCA060005 11. Set the MPLL_PWRON bit in the SMACx_CFG_GLOBAL register — Write offset 0x132C0 with 0xCA060085 — Ensure that BYPASS_INIT remains asserted 12. Set TX_EN[2:0] to 0b011 in the SMACx_CFG_CH0-3 register — Write offset 0x132B0 with 0x203C2513 — Write offset 0x132B4 with 0x203C2513 — Write offset 0x132B8 with 0x203C2513 — Write offset 0x132BC with 0x203C2513 13. Set the RX_PLL_PWRON bit in the SMACx_CFG_CH0-3 register — Write offset 0x132B0 with 0x203CA513 — Write offset 0x132B4 with 0x203CA513 — Write offset 0x132B8 with 0x203CA513 — Write offset 0x132BC with 0x203CA513 14. Set the RX_EN bit in the SMACx_CFG_CH0-3 register — Write offset 0x132B0 with 0x203CE513 — Write offset 0x132B4 with 0x203CE513 — Write offset 0x132B8 with 0x203CE513 — Write offset 0x132BC with 0x203CE513 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com B. Clocking > P_CLK Programming 493 15. Release the MAC from reset — Write offset 0x132c8 with 0x7FFF0002 B.2 P_CLK Programming The Tsi578 recommends a P_CLK operating frequency of 100 MHz. However, the device also supports P_CLK frequencies less than the recommended 100 MHz. The ability to support other P_CLK frequencies gives the Tsi578 flexibility in both application support and design. The minimum frequency supported by the P_CLK input is 25 MHz. Operation above 100 MHz or below 25 MHz is not tested or guaranteed. The following sections describe the effects on the Tsi578 when the input frequency of the P_CLK source is decreased from the recommended 100 MHz operating frequency. B.2.1 RapidIO Specifications Directly Affected by Changes in the P_CLK Frequency The following sections describe how changing the P_CLK frequency to below the recommended 100 MHz operation affect the counters and state machines in the Tsi578 that are defined in the RapidIO Interconnect Specification (Revision 1.3). B.2.1.1 Port Link Time-out CSR RapidIO Part 6: 1x/4x LP-Serial Physical Layer Specification Revision 1.3: Section 6.6.2.2 Port Link Time-out CSR (Block Offset 0x20) The RapidIO Interconnect Specification (Revision 1.3) defines the Port Link Time-out CSR as follows: The port-link time-out control register contains the time-out timer value for all ports on a device. This time-out is for link events, such as sending a packet to receiving the corresponding acknowledge and sending a link-request to receiving the corresponding link-response. The reset value is the maximum time-out interval, and represents between three and six seconds. IDT Implementation The Tsi578 supports this timer in the RapidIO Switch Port Link Time Out Control CSR. Effects of changing the P_CLK frequency are shown in the following formula: • Time-out = 32/F x TVAL — F is P_CLK frequency in MHz — TVAL is the 24-bit counter setting – Integrated Device Technology www.idt.com Maximum TVAL decimal value of 16,777,215 (0xFFFFFF) Tsi578 User Manual June 6, 2016 494 B. Clocking > P_CLK Programming Effects of changing the P_CLK frequency and TVAL setting can be seen in Table 54. Table 54: Timer Values with P_CLK and TVAL Variations P_CLK Setting TVAL Setting Equation Timer Value 25 MHz 2,343,750 (0x23C346) 32/25 x 2,343,750 3 seconds 25 MHz 4,687,500 (0x47868C) 32/25 x 4,687,500 6 seconds 50 MHz 4,687,500 (0x47868C) 32/50 x 4,687,500 3 seconds 50 MHz 9,375,000 (0x8F0D18) 32/50 x 9,375,000 6 seconds 50 MHz 16,777,215 (0xFFFFFF) 32/50 x 16,777,215 10.4 seconds 100 MHz 9,375,000 (0x8F0D18) 32/100 x 9,375,000 3 seconds 100 MHz 16,777,215 (0xFFFFFF) 32/100 x 16,777,215 5.4 seconds B.2.1.2 RapidIO Part 6: 1x/4x LP-Serial Physical Layer Specification Revision 1.3: Section 4.7.3.2 State Machine Variables and Functions SILENCE_TIMER_DONE The RapidIO Interconnect Specification (Revision 1.3) defines the SILENCE_TIMER_DONE as follows: Asserted when the SILENCE_TIMER_EN has been continuously asserted for 120 +/- 40 µs and the state machine is in the SILENT state. The assertion of SILENCE_TIMER_DONE causes SILENCE_TIMER_EN to be de-asserted. When the state machine is not in the SILENT state, SILENCE_TIMER_DONE is de-asserted IDT Implementation The Tsi578’s silence timer does not have user programmable registers. The silence timer is sourced from the P_CLK and any changes to P_CLK are directly reflected in the timer timeout period. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com B. Clocking > P_CLK Programming 495 DISCOVERY_TIMER_DONE The RapidIO Interconnect Specification (Revision 1.3) defines the DISCOVERY_TIMER_DONE as follows: Asserted when DISCOVERY_TIMER_EN has been continuously asserted for 12 +/- 4msec and the state machine is in the DISCOVERY state. The assertion of DISCOVERY_TIMER_DONE causes DISCOVERY_TIMER_EN to be de-asserted. When the state machine is not in the DISCOVERY state, DISCOVERY_TIMER_DONE is de-asserted. IDT Implementation The Tsi578’s discovery timer is programmed in the RapidIO Port x Discovery Timer. The DISCOVERY_TIMER field is used by serial ports configured to operate in 4x mode. The DISCOVERY_TIMER allows time for the link partner to enter its discovery state, and if the link partner supports 4x mode, for all four lanes to be aligned. The DISCOVERY_TIMER field is a 4-bit field whose value is used as a pre-scaler for a 17-bit counter clocked by P_CLK. The DISCOVERY_TIMER has a default value of 9 decimal, but can be programmed to various values. The results of changing the DISCOVERY_TIMER value and P_CLK are shown in Table 55. Table 55: Timer Values with DISCOVERY_TIMER and P_CLK Variations P_CLK Setting DISCOVERY_TIMER Setting Equation Timer Value 100 MHz 9 decimal 9 * 0x1FFFF * 1/ P_CLK 11.79 mS 100 MHz 9 decimal 9 * 131071 * 1/ P_CLK 11.79 mS 25 MHz 1 decimal 1 * 131071 * 1/25 MHz 5.24 mS 25 MHz 2 decimal 2 * 131071 * 1/25 MHz 10.48 mS 25 MHz 15 decimal 15 * 131071 * 1/25 MHz 78.6 mS 50 MHz 1 decimal 1 * 131071 * 1/ 50 MHz 2.62 mS 50 MHz 5 decimal 5 * 131071 * 1/ 50 MHz 13.1 mS 50 MHz 15 decimal 15 * 131071 *1/ 50 MHz 19.7 mS 100 MHz 1 decimal 1 * 131071 * 1/ 100 MHz 1.31 mS 100 MHz 9 decimal 9 * 131071 * 1/ 100 MHz 11.79 mS 100 MHz 15 decimal 15 * 131071 *1/ 100 MHz 19.7 mS Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 496 B.2.2 B. Clocking > P_CLK Programming IDT Specific Timers The following sections describe how changing the P_CLK frequency to below the recommended 100 MHz operation affect the IDT-specific counters and state machines in the Tsi578. B.2.2.1 Dead Link Timer The Dead Link Timer period is controlled by the DLT_THRESH field in the SRIO MAC x Digital Loopback and Clock Selection Register. Each time a silence is detected on a link, the counter is reloaded from this register and starts to count down. When the count reaches 0, the link is declared dead, which means that all packets are flushed from the transmit queue and no new packets are admitted to the queue until the link comes up. The duration of the dead link timer is computed by the following formula: • 2^^13 * DLT_THRESH * P_CLK period — P_CLK is 100 MHz (which gives a P_CLK period of 10nS) — Default value of DLT_THRESH is 0x7FFF (which corresponds to 32767) • Using these parameters, the populated formula is 8192*32767*10e-9 = 2.68 seconds When enabled, this timer is used to determine when a link is powered up and enabled, but dead (that is, there is no link partner responding). When a link is declared dead, the transmitting port on the Tsi578 removes all packets from its transmit queue and ensure that all new packets sent to port are dropped rather than placed in the transmit queue. The DLT_THRESH is a 15-bit counter with a maximum value of 32767. Table 56 shows equations using different values for DLT_THRESH and P_CLK. Table 56: Timer Values with P_CLK and DLT_THRESH Variations P_CLK Setting Equation Timer Value 25 MHz 8192 * 1 * 1/25 MHz 327 uS 8192 * 32767 * 1/25 MHz 10.74 seconds 8192 * 1 * 1/50 MHz 163.8 uS 8192 * 32767 * 1/50 MHz 5.37 seconds 8192 * 1 * 1/100 MHz 81.9 uS 8192 * 32767 * 1/100 MHz 2.68 seconds 50 MHz 100 MHz Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com B. Clocking > P_CLK Programming B.2.3 497 I2C interface and Timers The I2C interface clock is derived from the P_CLK. Decreasing the frequency of P_CLK causes a proportional decrease in the I2C serial clock and affects the I2C timers. The timer values can be re-programmed during boot loading but the changes does not take effect until after the boot load has completed. As a result, a decrease from 100 MHz to 50 MHz of P_CLK causes a doubling of the boot load time of the EEPROM. Once boot loading has completed, the new values take effect and the I2C interface can operate at the optimum rate of the attached devices. B.2.3.1 I2C Time Period Divider Register The I2C Time Period Divider Register provides programmable extension of the reference clock period into longer periods used by the timeout and idle detect timers. USDIV Period Divider for Micro-Second Based Timers The USDIV field divides the reference clock down for use by the Idle Detect Timer, the Byte Timeout Timer, the I2C_SCLK Low Timeout Timer, and the Milli-Second Period Divider. • Period(USDIV) = Period(P_CLK) * (USDIV + 1) • P_CLK is 10 ns • Tsi578 reset value is 0x0063 MSDIV Period Divider for Milli-Second Based Timers The MSDIV field divides the USDIV period down further for use by the Arbitration Timeout Timer, the Transaction Timeout Timer, and the Boot/Diagnostic Timeout Timer. B.2.3.2 • Period (MSDIV) = Period(USDIV) * (MSDIV + 1) • Tsi578 reset value is 0x03E7 I2C Start Condition Setup/Hold Timing Register The I2C Start Condition Setup/Hold Timing Register programs the setup and hold timing for the start condition when generated by the master control logic. The timer periods are relative to the reference clock. This register is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. START_SETUP Count for the START Condition Setup Period The START_SETUP field defines the minimum setup time for the START condition; that is, both I2C_SCLK and I2C_SD seen high prior to I2C_SD pulled low. This is a master-only timing parameter. Ti p This value also doubles as the effective Stop Hold time. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 498 B. Clocking > P_CLK Programming • Period (START_SETUP) = (START_SETUP * Period(PCLK)) — PCLK is 10ns — Reset time is 4.71 microseconds. — Tsi578 reset value is 0x01D7 START_HOLD Count for the START Condition Hold Period The START_HOLD field defines the minimum hold time for the START condition; that is, from I2C_SD seen low to I2C_SCLK pulled low. This is a master only timing parameter. B.2.3.3 • Period (START_HOLD) = (START_HOLD * Period(P_CLK)) • P_CLK is 10 ns • Reset time is 4.01 microseconds • Tsi578 reset value is 0x0191 I2C Stop/Idle Timing Register The I2C Stop/Idle Timing Register programs the setup timing for the Stop condition when generated by the master control logic and the Idle Detect timer. Ti p The START_SETUP time doubles as the Stop Hold. The Stop/Idle register is broken down as follows: • The timer period for the STOP_SETUP is relative to the reference clock • The timer period for the Idle Detect is relative to the USDIV period • The STOP_SETUP time is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. STOP_SETUP Count for STOP Condition Setup Period The STOP_SETUP field defines the minimum setup time for the STOP condition (that is, both I2C_SCLK seen high and I2C_SD seen low prior to I2C_SD released high). This is a master-only timing parameter. • Period(STOP_SETUP) = (STOP_SETUP * Period(P_CLK)) — P_CLK is 10ns — Reset time is 4.01 microseconds — Tsi578 reset value is 0x0191 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com B. Clocking > P_CLK Programming 499 IDLE_DET Count for Idle Detect Period The IDLE_DET field is used in two cases. First, it defines the period after reset during which the I2C_SCLK signal must be seen high in order to call the bus idle. This period is needed to avoid interfering with an ongoing transaction after reset. Second, it defines the period before a master transaction during which the I2C_SCLK and I2C_SD signals must both be seen high in order to call the bus idle. This period is a protection against external master devices not correctly idling the bus. • Period(IDLE_DET) = (IDLE_DET * Period(USDIV)), where USDIV is the microsecond time defined in the I2C Time Period Divider Register A value of zero results in no idle detect period, meaning the bus will be sensed as idle immediately. — Reset time is 51 microseconds — Tsi578 reset value is 0x0033 B.2.3.4 I2C_SD Setup and Hold Timing Register The I2C_SD Setup and Hold Timing Register programs the setup and hold times for the I2C_SD signal when output by either the master or slave interface. It is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. SDA_SETUP Count for the I2C_SD Setup Period The SDA_SETUP field defines the minimum setup time for the I2C_SD signal; that is, I2C_SD is set to a desired value prior to rising edge of I2C_SCLK. This applies to both slave and master interface. This value should be set to the sum of the I2C_SD setup time and the maximum rise/fall time of the I2C_SD signal in order to ensure that the signal is valid on the output at the correct time. This time is different than the raw I2C_SD setup time in the I2C Specification. • Period(SDA_SETUP) = (SDA_SETUP * Period(P_CLK)), where P_CLK is 10ns. — Reset time is 1260 nanoseconds — Tsi578 reset value is 0x007E SDA_HOLD Count for I2C_SD Hold Period The SDA_HOLD field defines the minimum hold time for the I2C_SD signal; that is, I2C_SD valid past the falling edge of I2C_SCLK. This applies to both slave and master interface. • Period(SDA_HOLD) = (SDA_HOLD * Period(P_CLK)), where P_CLK is 10 ns. — Reset time is 310 nanoseconds — Tsi578 reset value is 0x001F Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 500 B.2.3.5 B. Clocking > P_CLK Programming I2C_SCLK High and Low Timing Register The I2C_SCLK High and Low Timing Register programs the nominal high and low periods of the I2C_SCLK signal when generated by the master interface. It is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. SCL_HIGH Count for I2C_SCLK High Period The SCL_HIGH field defines the nominal high period of the clock, from rising edge to falling edge of I2C_SCLK. This is a master-only parameter. The actual observed period may be shorter if other devices pull the clock low. • Period(SCL_HIGH) = (SCL_HIGH * Period(P_CLK)) — P_CLK is 10 ns — Reset time is 5.00 microseconds (100 kHz) — Tsi578 reset value is 0x01F4 SCL_LOW Count for I2C_SCLK Low Period The SCL_LOW field defines the nominal low period of the clock, from falling edge to rising edge of I2C_SCLK. This is a master-only parameter. The actual observed period may be longer if other devices pull the clock low. • Period(SCL_LOW) = (SCL_LOW * Period(P_CLK)) — P_CLK is 10 ns — Reset time is 5.00 microseconds (100 kHz) — Tsi578 reset value is 0x01F4 B.2.3.6 I2C_SCLK Minimum High and Low Timing Register The I2C_SCLK Minimum High and Low Timing Register programs the minimum high and low periods of the I2C_SCLK signal when generated by the master interface. It is shadowed during boot loading, and can be reprogrammed prior to a chain operation without affecting the bus timing for the current EEPROM. SCL_MINH Count for I2C_SCLK High Minimum Period The SCL_MINH field defines the minimum high period of the clock, from rising edge seen high to falling edge of I2C_SCLK. This is a master-only parameter. The actual observed period may be shorter if other devices pull the clock low. • Period(SCL_MINH) = (SCL_MINH * Period(P_CLK)) — P_CLK is 10 ns — Reset time is 4.01 microseconds — Tsi578 reset value is 0x0191 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com B. Clocking > P_CLK Programming 501 SCL_MINL Count for I2C_SCLK Low Minimum Period The SCL_MINL defines the minimum low period of the clock, from falling edge seen low to rising edge of I2C_SCLK. This is a master-only parameter. The actual observed period may be longer if other devices pull the clock low. • Period(SCL_MINL) = (SCL_MINL * Period(P_CLK)) — P_CLK is 10 ns — Reset time is 4.71 microseconds — Tsi578 reset value is 0x01D7 B.2.3.7 I2C_SCLK Low and Arbitration Timeout Register The I2C_SCLK Low and Arbitration Timeout Register programs the I2C_SCLK low timeout and the Arbitration timeout. The arbitration timer period is relative to the MSDIV period, and the I2C_SCLK low timeout period is relative to the USDIV period. SCL_TO Count for I2C_SCLK Low Timeout Period The SCL_TO field defines the maximum amount of time for a slave device holding the I2C_SCLK signal low. This timeout covers the period from I2C_SCLK falling edge to the next I2C_SCLK rising edge. A value of 0 disables the timeout. • Period(SCL_TO) = (SCL_TO * Period(USDIV)) — USDIV is the microsecond time defined in the I2C Time Period Divider Register. — The reset value of this timeout is 26 milliseconds — Tsi578 reset value is 0x65BB ARB_TO Count for Arbitration Timeout Period The ARB_TO field defines the maximum amount of time for the master interface to arbitrate for the bus before aborting the transaction. This timeout covers the period from master operation start (see setting the START bit in the I2C Master Control Register) until the ACK/NACK is received from the external slave for the slave device address. A value of 0 disables the timeout. • Period(ARB_TO) = (ARB_TO * Period(MSDIV)) — MSDIV is the millisecond time defined in I2C Time Period Divider Register. — The reset value of this timeout is 51 milliseconds – This timeout is not active during the boot load sequence. — Tsi578 reset value is 0x0033 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 502 B.2.3.8 B. Clocking > P_CLK Programming I2C Byte/Transaction Timeout Register The I2C Byte/Transaction Timeout Register programs the Transaction and Byte time-outs. The timer periods are relative to the USDIV period for the byte timeout, and relative to the MSDIV period for the transaction timeout. BYTE_TO Count for Byte Timeout Period The BYTE_TO field defines the maximum amount of time for a byte to be transferred on the I2C bus. This covers the period from Start condition to next ACK/NACK, between two successive ACK/NACK bits, or from ACK/NACK to Stop/Restart condition. A value of 0 disables the timeout. • Period(BYTE_TO) = (BYTE_TO * Period(USDIV)) — USDIV is the microsecond time defined in I2C Time Period Divider Register. — This timeout is disabled on reset, and is not used during boot load. — Tsi578 reset value is 0x0000 TRAN_TO Count for Transaction Timeout Period The TRAN_TO field defines the maximum amount of time for a transaction on the I2C bus. This covers the period from Start to Stop. A value of 0 disables the timeout. • Period(TRAN_TO) = (TRAN_TO * Period(MSDIV)) — MSDIV is the millisecond time defined in I2C Time Period Divider Register. — This timeout is disabled on reset, and is not used during boot load — Tsi578 reset value is 0x0000 B.2.3.9 I2C Boot and Diagnostic Timer The I2C Boot and Diagnostic Timer programs a timer used to timeout the boot load sequence, and can be used after boot load as a general purpose timer. COUNT Count for Timer Period The COUNT field defines the period for the timer. The initial reset value is used for overall boot load timeout. A value of 0 disables the timeout. Ti p During normal operation, this timer can be used for any general purpose timing. The timer begins counting when this register is written. If this register is written while the counter is running, the timer is immediately restarted with the new COUNT, and the DTIMER/BLTO event is not generated. Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com B. Clocking > P_CLK Programming 503 When the timer expires, either the BLTO or DTIMER event is generated, depending on whether the boot load sequence is active. If FREERUN is set to 1 when timer expires, then the timer is restarted immediately (the event is still generated), providing a periodic interrupt capability. • Period(DTIMER) = (COUNT * Period(MSDIV)) — MSDIV is the millisecond period define in I2C Time PeriodDivider Register. — The reset value for the boot load timeout is four seconds. If the boot load completes before the timer expires, the timer is set to zero (disabled). — Tsi578 reset value is 0x0FA0 B.2.4 Other Performance Factors This section describes any other factors that may impact the performance of the Tsi578 if P-CLK is programmed to operate lower than the recommended 100 MHz frequency. B.2.4.1 Internal Register Bus Operation The internal register bus, where all the internal registers reside, is a synchronous bus clocked by the P_CLK source. A decrease in the P_CLK frequency causes a proportional increase in register access time during RapidIO maintenance transactions, JTAG registers accesses, and I2C register accesses. RapidIO Maintenance Transaction Maintenance transactions use the internal register bus to read and write registers in the Tsi578. If the P_CLK frequency is decreased, it may be necessary to review the end point’s response latency timer value to ensure that it does not expire before the response is returned. Changing the frequency of the P_CLK does not affect the operation or performance of the RapidIO portion of the switch, in particular its ability to route or multicast packets between ports. JTAG Register Interface Changing the P_CLK frequency affects accesses to the internal registers through the JTAG register interface because the interface uses the internal register bus. However, the decreased performance will not be noticeable. Boundary scan operations are not affected by a change in the P_CLK frequency because these transactions use the JTAG TCK clock signal and do not access the internal register bus. Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 504 Tsi578 User Manual June 6, 2016 B. Clocking > P_CLK Programming Integrated Device Technology www.idt.com 505 C. PRBS Scripts The following sections show the PRBS scripts used in “Using PRBS Scripts for the Transmitters and Receivers”. All of the PRBS scripts affect all of the ports, therefore editing the files to comment out the respective transmitting and receiving ports is required. Topics discussed include the following: C.1 • “Tsi578_start_prbs_all.txt Script” • “Tsi578_framer_disable.txt Script” • “Tsi578_sync_prbs_all.txt Script” • “Tsi578_read_prbs_all.txt Script” Tsi578_start_prbs_all.txt Script This JTAG script is used to turn on the PRBS pattern generator for each lane to be tested. The SerDes in a port are offset by 0x40 from the lane 0 register of the port. The SerDes Lane 0 Pattern Generator Control Register is located at offset 0x1e020. Therefore lane 1 is located at offset 0x1e060, lane 2 is located at 0x1e0a0 and lane 3 is located at 0x1e0e0. //i 0 //Port 0 w 1e020 00000002 //Start 2^7 Pattern Generator w 1e060 00000002 w 1e0a0 00000002 w 1e0e0 00000002 //Port 2 w 1e220 00000002 //Start 2^7 Pattern Generator w 1e260 00000002 w 1e2a0 00000002 w 1e2e0 00000002 //Port 4 w 1e420 00000002 //Start 2^7 Pattern Generator w 1e460 00000002 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 506 C. PRBS Scripts > Tsi578_start_prbs_all.txt Script w 1e4a0 00000002 w 1e4e0 00000002 //Port 6 w 1e620 00000002 //Start 2^7 Pattern Generator w 1e660 00000002 w 1e6a0 00000002 w 1e6e0 00000002 //Port 8 w 1e820 00000002 //Start 2^7 Pattern Generator w 1e860 00000002 w 1e8a0 00000002 w 1e8e0 00000002 //Port a w 1ea20 00000002 //Start 2^7 Pattern Generator w 1ea60 00000002 w 1eaa0 00000002 w 1eae0 00000002 //Port c w 1ec20 00000002 //Start 2^7 Pattern Generator w 1ec60 00000002 w 1eca0 00000002 w 1ece0 00000002 //Port e w 1ee20 00000002 //Start 2^7 Pattern Generator w 1ee60 00000002 w 1eea0 00000002 w 1eee0 00000002 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com C. PRBS Scripts > Tsi578_framer_disable.txt Script C.2 507 Tsi578_framer_disable.txt Script This script turns off the word alignment framer because PRBS patterns are not word aligned. This script is only for use with PRBS patterns. In this script, the HALF_RATE bit is set corresponding to port operation at 1.25 Gbps. PRBS testing at 2.5 or 3.125 Gbps requires the HALF_RATE bit to be cleared. The data to be written therefore becomes 0x203CE511. //i 0 //Port 0 w 130b0 A03CE511 //Clear RX_ALIGN_EN w 130b4 A03CE511 w 130b8 A03CE511 w 130bc A03CE511 //Port 2 w 132b0 A03CE511 //Clear RX_ALIGN_EN w 132b4 A03CE511 w 132b8 A03CE511 w 132bc A03CE511 //Port 4 w 134b0 A03CE511 //Clear RX_ALIGN_EN w 134b4 A03CE511 w 134b8 A03CE511 w 134bc A03CE511 //Port 6 w 136b0 A03CE511 //Clear RX_ALIGN_EN w 136b4 A03CE511 w 136b8 A03CE511 w 136bc A03CE511 //Port 8 w 138b0 A03CE511 //Clear RX_ALIGN_EN w 138b4 A03CE511 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 508 C. PRBS Scripts > Tsi578_sync_prbs_all.txt Script w 138b8 A03CE511 w 138bc A03CE511 //Port a w 13ab0 A03CE511 //Clear RX_ALIGN_EN w 13ab4 A03CE511 w 13ab8 A03CE511 w 13abc A03CE511 //Port c w 13cb0 A03CE511 //Clear RX_ALIGN_EN w 13cb4 A03CE511 w 13cb8 A03CE511 w 13cbc A03CE511 //Port e w 13eb0 A03CE511 //Clear RX_ALIGN_EN w 13eb4 A03CE511 w 13eb8 A03CE511 w 13ebc A03CE511 C.3 Tsi578_sync_prbs_all.txt Script This JTAG script is used to turn on the PRBS pattern matcher for each lane to be tested. The SerDes in a port are offset by 0x40 from the lane 0 register of the port. The SerDes Lane 0 Pattern Generator Control Register is located at offset 0x1e020. Therefore lane 1 is located at offset 0x1e060, lane 2 is located at 0x1e0a0 and lane 3 is located at 0x1e0e0. //i 0 //Port 0 w 1e030 0000000a //turn on Sync pattern matcher w 1e070 0000000a w 1e0b0 0000000a w 1e0f0 0000000a w 1e030 00000002 //turn off sync pattern matcher w 1e070 00000002 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com C. PRBS Scripts > Tsi578_sync_prbs_all.txt Script 509 w 1e0b0 00000002 w 1e0f0 00000002 //Port 2 w 1e230 0000000a //Sync pattern matcher w 1e270 0000000a w 1e2b0 0000000a w 1e2f0 0000000a w 1e230 00000002 w 1e270 00000002 w 1e2b0 00000002 w 1e2f0 00000002 //Port 4 w 1e430 0000000a //Sync pattern matcher w 1e470 0000000a w 1e4b0 0000000a w 1e4f0 0000000a w 1e430 00000002 w 1e470 00000002 w 1e4b0 00000002 w 1e4f0 00000002 //Port 6 w 1e630 0000000a //Sync pattern matcher w 1e670 0000000a w 1e6b0 0000000a w 1e6f0 0000000a w 1e630 00000002 w 1e670 00000002 w 1e6b0 00000002 w 1e6f0 00000002 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 510 C. PRBS Scripts > Tsi578_sync_prbs_all.txt Script //Port 8 w 1e830 0000000a //Sync pattern matcher w 1e870 0000000a w 1e8b0 0000000a w 1e8f0 0000000a w 1e830 00000002 w 1e870 00000002 w 1e8b0 00000002 w 1e8f0 00000002 //Port a w 1ea30 0000000a //Sync pattern matcher w 1ea70 0000000a w 1eab0 0000000a w 1eaf0 0000000a w 1ea30 00000002 w 1ea70 00000002 w 1eab0 00000002 w 1eaf0 00000002 //Port c w 1ec30 0000000a //Sync pattern matcher w 1ec70 0000000a w 1ecb0 0000000a w 1ecf0 0000000a w 1ec30 00000002 w 1ec70 00000002 w 1ecb0 00000002 w 1ecf0 00000002 //Port e w 1ee30 0000000a //Sync pattern matcher Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com C. PRBS Scripts > Tsi578_read_prbs_all.txt Script 511 w 1ee70 0000000a w 1eeb0 0000000a w 1eef0 0000000a w 1ee30 00000002 w 1ee70 00000002 w 1eeb0 00000002 w 1eef0 00000002 C.4 Tsi578_read_prbs_all.txt Script This script is used to read the PRBS values. Note that the PRBS error counter and overflow bit fields must be read twice to determine the correct value. The result of the first read is invalid and should be discarded. The result of the second read is correct and should be kept. //Port0 r 1e030 r 1e030 r 1e070 r 1e070 r 1e0b0 r 1e0b0 r 1e0f0 r 1e0f0 //Port2 r 1e230 r 1e230 r 1e270 r 1e270 r 1e2b0 r 1e2b0 r 1e2f0 r 1e2f0 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 512 C. PRBS Scripts > Tsi578_read_prbs_all.txt Script //Port4 r 1e430 r 1e430 r 1e470 r 1e470 r 1e4b0 r 1e4b0 r 1e4f0 r 1e4f0 //Port6 r 1e630 r 1e630 r 1e670 r 1e670 r 1e6b0 r 1e6b0 r 1e6f0 r 1e6f0 //Port8 r 1e830 r 1e830 r 1e870 r 1e870 r 1e8b0 r 1e8b0 r 1e8f0 r 1e8f0 //Porta r 1ea30 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com C. PRBS Scripts > Tsi578_read_prbs_all.txt Script 513 r 1ea30 r 1ea70 r 1ea70 r 1eab0 r 1eab0 r 1eaf0 r 1eaf0 //Portc r 1ec30 r 1ec30 r 1ec70 r 1ec70 r 1ecb0 r 1ecb0 r 1ecf0 r 1ecf0 //Porte r 1ee30 r 1ee30 r 1ee70 r 1ee70 r 1eeb0 r 1eeb0 r 1eef0 r 1eef0 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 514 Tsi578 User Manual June 6, 2016 C. PRBS Scripts > Tsi578_read_prbs_all.txt Script Integrated Device Technology www.idt.com 515 D. EEPROM Scripts The following section shows the EEPROM script used in “Modification by EEPROM Boot Load”. D.1 Script ew 0 0047FFFF ew 4 FFFFFFFF /1 ew 8 138c8 ew c 7FFF0012 /2 ew 10 138c0 ew 14 CA060084 /3 ew 18 138B0 ew 1c 203CA513 /4 ew 20 138B4 ew 24 203CA513 /5 ew 28 138B8 ew 2c 203CA513 /6 ew 30 138BC ew 34 203CA513 /7 ew 38 138B0 ew 3c 203C2513 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 516 D. EEPROM Scripts > Script /8 ew 40 138B4 ew 44 203C2513 /9 ew 48 138B8 ew 4c 203C2513 /A ew 50 138BC ew 54 203C2513 /B -ew 58 138B0 ew 5c 200C2513 /C ew 60 138B4 ew 64 200C2513 /D ew 68 138B8 ew 6c 200C2513 /E ew 70 138BC ew 74 200C2513 /F -ew 78 138c0 ew 7c CA060004 /10 ew 80 138c0 ew 84 CA060044 /11 ew 88 138C4 ew 8c 002C0545 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com D. EEPROM Scripts > Script 517 /12 ew 90 138c0 ew 94 CA060045 /13 ew 98 138c0 ew 9c CA060005 /14 ew a0 138c0 ew a4 4A060005 /15 ew a8 138c0 ew ac CA060005 /16 -ew b0 138c0 ew b4 CA060085 /17 ew b8 138B0 ew bc 203C2513 /18 ew c0 138B4 ew c4 203C2513 /19 ew c8 138B8 ew cc 203C2513 /1A ew d0 138BC ew d4 203C2513 /1B ew d8 138B0 ew dc 203CA513 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 518 D. EEPROM Scripts > Script /1C ew e0 138B4 ew e4 203CA513 /1D ew e8 138B8 ew ec 203CA513 /1E ew f0 138BC ew f4 203CA513 /1F ew f8 138B0 ew fc 203CE513 /20 ew 100 138B4 ew 104 203CE513 /21 ew 108 138B8 ew 10c 203CE513 /22 ew 110 138BC ew 114 203CE513 /23 ew 118 138c8 ew 11c 7FFF0002 /24 start of port 6 initialization ew 120 136c8 ew 124 7FFF0012 /25 ew 128 136c0 ew 12c CA060084 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com D. EEPROM Scripts > Script 519 /26 ew 130 136B0 ew 134 203CA513 /27 ew 138 136B4 ew 13c 203CA513 /28 ew 140 136B8 ew 144 203CA513 /29 ew 148 136BC ew 14c 203CA513 /2a ew 150 136B0 ew 154 203C2513 /2b ew 158 136B4 ew 15c 203C2513 /2c ew 160 136B8 ew 164 203C2513 /2d ew 168 136BC ew 16c 203C2513 /2e ew 170 136B0 ew 174 200C2513 /2f ew 178 136B4 ew 17c 200C2513 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 520 D. EEPROM Scripts > Script /30 ew 180 136B8 ew 184 200C2513 /31 ew 188 136BC ew 18c 200C2513 /32 ew 190 136c0 ew 194 CA060004 /33 ew 198 136c0 ew 19c CA060044 /34 ew 1a0 136C4 ew 1a4 002C0545 /35 ew 1a8 136c0 ew 1ac CA060045 /36 ew 1b0 136c0 ew 1b4 CA060005 /37 ew 1b8 136c0 ew 1bc 4A060005 /38 ew 1c0 136c0 ew 1c4 CA060005 /39 ew 1c8 136c0 ew 1cc CA060085 Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com D. EEPROM Scripts > Script 521 /3a ew 1d0 136B0 ew 1d4 203C2513 /3b ew 1d8 136B4 ew 1dc 203C2513 /3c ew 1e0 136B8 ew 1e4 203C2513 /3d ew 1e8 136BC ew 1ec 203C2513 /3e ew 1f0 136B0 ew 1f4 203CA513 /3f ew 1f8 136B4 ew 1fc 203CA513 /40 ew 200 136B8 ew 204 203CA513 /41 ew 208 136BC ew 20c 203CA513 /42 ew 210 136B0 ew 214 203CE513 /43 ew 218 136B4 ew 21c 203CE513 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 522 D. EEPROM Scripts > Script /44 ew 220 136B8 ew 224 203CE513 /45 ew 228 136BC ew 22c 203CE513 /46 ew 230 136c8 ew 234 7FFF0002 /47 ew 238 8 ew 23c deadbeef Tsi578 User Manual June 6, 2016 Integrated Device Technology www.idt.com 523 Index 1x + 1x Configuration 69 4x + 0x Configuration 69 Multicast Maximum Latency Timer 119 Silent Discard of Packets 120 Event Notification 121 Interrupt Notifications 136 Overview 121 Port-Write Notifications 133 RapidIO Error Rate Events 126 A F Arbitration for Multicast Engine Ingress Port 117 Fabric Interrupt Status Register 382 Fixed-Pattern BERT, Transmitter Configuration 83 Functional Overview 21, 35, 205 Walkthrough 37 Numerics B Bit Error Rate Testing (BERT) 80 Fixed-Pattern BERT, Transmitter Configuration 83 Boot Description EEPROM data format 170 I2C Boot Time 172, 173 Bottleneck Detection 191 Broadcast Buffers 107 C Changing the Clock Speed 71 Clock Domains 208 Clocking 70 Changing the Clock Speed 71 Clocks 205 Clock Domains 208 Clocks, Resets and Power-up Options 205 Configuration and Operation Through Power Down 73 Configuring Basic Associations 112 Congestion Detection 191 D Data Integrity Checking 37 Debug Packet and Control Symbol Generator 64 Default Port Speed 214 Destination ID Lookup Tables 37 Flat Mode 40 Lookup Table Error Summary 50 Lookup Table Parity 49 Device Reset 209 RapidIO Reset Requests 210 Timing of HARD_RST_b 210 Digital Equipment Loopback 80 document conventions document status 18 numeric conventions 18 symbols 18 E Electrical Layer Lane Synchronization and Alignment 74 Programmable Driver Current and Equalization 77 Error Management 57 Error Management of Multicast Packets 118 Integrated Device Technology www.idt.com G Generating a RapidIO Reset Request to a Peer Device 211 H HARD_RST_b Reset 209 Hot Insertion/Extraction 59 Component Insertion 60 Hot Extraction 61 I I2C Boot 209 I2C Interface 30 IDT-Specific RapidIO Registers 307 Inbound Read Packet Count Register Priority x 397 Internal Register Bus (AHB) 30 Internal Switching Fabric (ISF) 85 Overview 85 Internal Switching Fabric (ISF) Registers 380 Interrupt Notifications 136 ISF System Behaviour 86 J JTAG 201 Overview 201 JTAG Device Identification Numbers 202 JTAG Interface Read access 203 Write access 203 JTAG Register Access Details 202 Read Access to Registers from the JTAG Interface 203 Write Access to Registers from the JTAG Interface 203 JTAG Reset 211 L Lane Synchronization and Alignment 74 Line Rate Support 489 Logical Line Loopback 80 Loopback Digital Equipment Loopback 80 Logical Line Loopback 80 Tsi578 User Manual June 6, 2016 524 Loopbacks 79 Loss of Lane Synchronization 62 Dead Link Timer 64 M Maintenance Packets 53 Multicast 103 Arbitration for Multicast Engine Ingress Port 117 Error Management of Multicast Packets 118 Features 28, 103 Multicast Behavior Overview 106 Multicast Group Tables 110 Multicast Operation 27, 103 Multicast Terminology 105 Overview 103 Port Reset 120 Multicast Behavior Overview 106 Broadcast Buffers 107 Multicast Work Queue 107 Multicast Group Tables 110 Configuring Basic Associations 112 Configuring Multicast Masks 113 Assigning Ports to Multicast Masks 113 Clearing Multicast Masks 113 Querying a Multicast Mask 115 Removing a Destination ID to Multicast Mask Association 116 Removing a Port from a Multicast Mask 115 Configuring Multicast Masks Using the IDT Specific Registers 116 Multicast Operation 27, 103 Multicast Terminology 105 Multicast Work Queue 107 P Packets 483 Control Symbols 484 PCS Layer 484 Performance Monitoring Bottleneck Detection 191 Congestion Detection 191 Resetting Performance Registers 191 Throughput 190 Traffic Efficiency 190 Per-Port Resets 211 Physical Layer 484 PCS Layer 484 Physical Protocol 484 PMA Layer 484 Physical Protocol 484 Pinlist and Ballmap 227 PMA Layer 484 Port Aggregation (4x and 1x link modes) 68 1x + 1x Configuration 69 4x + 0x Configuration 69 Tsi578 User Manual June 6, 2016 Index Port Power-up and Power-down 214 Port Reset 120 Port Width Override 214 Port-Write Notifications 133 Power Down 72 Configuration and Operation Through Power Down 73 Power-up Option Signals 212 Power-up Options 212 Default Port Speed 214 Port Power-up and Power-down 214 Port Width Override 214 Power-up Option Signals 212 Programmable Driver Current and Equalization 77 R RapidIO Error Management Extension Registers 285 RapidIO Error Rate Events 126 RapidIO Logical Layer and Transport Layer Registers 245 RapidIO Physical Layer Registers 268 RapidIO Ports 35 RapidIO Reset Requests 210 Read Access to Registers from the JTAG Interface 203 Register Map 233 Registers 229 Conventions 231 Overview 229 Reset Device Reset HARD_RST_b Reset 209 I2C Boot 209 RapidIO Reset Requests 210 Self Reset 210 System Control of Resets 210 Device Resets Generating a RapidIO Reset Request to a Peer Device 211 JTAG Reset 211 Per-Port Resets 211 Reset Control Symbol Processing 57 Resets 209 Device Reset 209 Resetting Performance Registers 191 RIO Assembly Identity CAR 248 RIO Assembly Information CAR 249 RIO Component Tag CSR 259 RIO Device Information CAR 247 RIO Port x Discovery Timer SP{BC,0..15}_DISCOVERY_TIMER 242 RIO Processing Element Features CAR 250 RIO Switch Port Information CAR 252 S Serial Port Electrical Layer Registers 361 Serial RapidIO Interfaces 26 Serial RapidIO MAC 65 Integrated Device Technology www.idt.com Index 525 Overview 65 Serial RapidIO Protocol 483 Packets 483 Physical Layer 484 Serial RapidIO Protocol Overview 483 Signal 218 Signal Groupings 218 Clock and Reset 223 I2C 225 Interrupts 224 JTAG / TAP Controller 226 Multicast 224 Power Supplies 227 Serial Port Configuration 220 Serial Port Lane Ordering Select 223 Serial Port Receive 219 Serial Port Speed Select 222 Serial Port Transmit 219 Signal Types 215 Signals 215 Supported Line Rates 489 System Behaviour 86 Input Queuing Model 94 Output Arbitration 88 Output Queuing Model 91 Transfer Modes 87 T Throughput 190 Traffic Efficiency 190 U Utility Unit Registers 388 W Write Access to Registers from the JTAG Interface 203 Integrated Device Technology www.idt.com Tsi578 User Manual June 6, 2016 526 Tsi578 User Manual June 6, 2016 Index Integrated Device Technology www.idt.com CORPORATE HEADQUARTERS 6024 Silver Creek Valley Road San Jose, CA 95138 for SALES: 800-345-7015 or 408-284-8200 www.idt.com for Tech Support: srio@idt.com June 6, 2016
TSI578-ILH 价格&库存

很抱歉,暂时无法提供与“TSI578-ILH”相匹配的价格&库存,您可以联系我们找货

免费人工找货