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

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
CS4210VJG

CS4210VJG

  • 厂商:

    BURR-BROWN(德州仪器)

  • 封装:

    BQFP100

  • 描述:

    IC CONTROLLER GEODE OHCI 100LQFP

  • 数据手册
  • 价格&库存
CS4210VJG 数据手册
CS4210 Geode CS4210 IEEE 1394 OHCI Controller Literature Number: SNOS923A Geode™ CS4210 IEEE 1394 OHCI Controller General Description                   Eight isochronous transmit contexts Eight isochronous receive contexts Capable of reading a 128-byte descriptor in one burst 128 byte, zero wait state bursting Dynamically re-prioritize services 2 KB of isochronous transmit FIFO 2 KB of asynchronous transmit FIFO ol e The CS4210 is an implementation of the link layer protocol of the IEEE 1394 high speed serial bus, with additional features to support the transaction and bus management layers. The CS4210 also includes DMA engines for high speed performance data transfer and a host PCI bus interface. Perfect for use in PC, set-top box, thin client, and WebPAD™ system applications. 1394-1995 version and P1394a Draft 2.0 Physical Layer devices te The National Semiconductor® Geode™ CS4210 is a PCIbased IEEE 1394 OHCI (Open Host Controller Interface) controller. The CS4210 provides an implementation of the IEEE 1394 Link Layer functionality according to the programming model defined by 1394 OHCI Specification Version 1.0. It supports high speed serial communication up to 400 Mbits per second. The CS4210 supports two types of data transfers: asynchronous and isochronous. bs The CS4210 provides an external IEEE 1394 physical layer device interface. The CS4210’s physical layer interface (PHY-Link) is compatible with the Geode™ CS4103 and other IEEE 1394 physical layer devices. Features  Supports 100, 200, and 400 Mbit/sec data transfer rates  Compliant with 1394 OHCI Specification Version 1.0  Compatible interface with the Geode CS4103 IEEE Per-packet FIFO thresholding Four concurrent posted writes Eight pending physical responses National specific configuration registers I2C interface support for an optional serial EEPROM Accepts and generates external 8 kHz reference clock 5V tolerant PCI rev 2.1 I/O interface 0.25µ CMOS 100-pin LQFP (Low-profile Quad Flat Pack) package NAND tree for test purposes O P1394a Physical Layer (PHY) device and other IEEE 4 KB of receiver FIFO System Block Diagram PCI Bus I2C Interface EEPROM PCI Interface Geode™ CS4210 IEEE 1394 OHCI Controller PHY-Link Interface Geode™ CS4103 P1394a Physical Layer IEEE 1394 Cable Connectors National Semiconductor is a registered trademark of National Semiconductor Corporation. Geode and WebPAD are trademarks of National Semiconductor Corporation. For a complete listing of National Semiconductor trademarks, please visit www.national.com/trademarks. © 2000 National Semiconductor Corporation www.national.com Geode™ CS4210 IEEE 1394 OHCI Controller July 2000 Architectural Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 2.0 Signal Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1 2.2 3.0 PCI INTERFACE MODULE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 DMA ENGINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.1 Transfer Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.2 Host Memory Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.3 ATDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.4 ITDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.5 RDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 TRANSMIT DRAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 RECEIVE FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 LINK LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 PHYSICAL LAYER INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 REGISTER SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 RELATED DOCUMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 te 1.0 PIN ASSIGNMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 SIGNAL DESCRIPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.1 PCI Bus Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.2 PHY-Link Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.3 Miscellaneous Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.4 Power Supplies and Ground Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ol e Geode™ CS4210 Table of Contents Operational Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.1 Asynchronous Data Transfer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.2 Isochronous Data Transfer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.3 Miscellaneous Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 SOFTWARE INTERFACE OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.2 DMA Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 bs 3.1 3.2 3.2.2.1 3.2.2.2 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 O 3.2.3 3.2.3.1 3.2.3.2 3.2.3.3 3.3 www.national.com Asynchronous Transmit Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Asynchronous Receive Interrupts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Isoch Tx and Rx Context Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 COMMON DMA CONTROLLER FEATURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.1 Context Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.2 ContextControl.event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.2.1 3.3.2.2 3.3.2.3 3.3.2.4 3.3.2.5 3.4 DMA Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Physical Response DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 ContextControl.run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ContextControl.wake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ContextControl.active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ContextControl.dead. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 CommandPtr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 LIST MANAGEMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.1 Context Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.2 Appending to Running List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.3 Stopping a Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.4 Hardware Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2 Revision 1.0 3.6 3.7 ASYNCHRONOUS RECEIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5.1 Unrecoverable Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.2 Ack Codes for Write Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.3 Posted Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.4 Retries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5.5 DMA Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 PHYSICAL REQUESTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.6.1 Filtering Physical Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.6.2 Posted Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.3 Physical Responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.4 Physical Response Retries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.5 Interrupt Considerations for Physical Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.6 Bus Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 HOST BUS ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7.1 Causes of Host Bus Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7.2 CS4210 Actions When Host Bus Error Occurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 te 3.5 3.7.2.1 3.7.2.2 3.7.2.3 3.9 4.0 ol e 3.7.3 Isochronous Transmit Data Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.4 Asynchronous Receive DMA Data Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.5 Isochronous Receive Data Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.6 Physical Read Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.7 Posted Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 BUS RESETS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.1 Asynchronous Transmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.2 Asynchronous Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.3 Isochronous Transmit and Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 SERIAL EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.9.1 Serial EEPROM Cyclic Redundancy Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 bs 3.8 Descriptor Read Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 xferStatus Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Transmit Data Read Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Register Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 PCI CONFIGURATION SPACE ACCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 REGISTER SUMMARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 PCI CONFIGURATION REGISTERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 OHCI CONFIGURATION REGISTERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.4.1 Version Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.2 GUIDROM Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.3 ATRetries Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Autonomous CSR Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.4.5 Configuration ROM Header Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4.6 Bus Identification Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4.7 Bus Options Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.4.8 Global Unique ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.4.9 Configuration ROM Mapping Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.4.10 PostedWriteAddress Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4.11 Vendor ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4.12 HCControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 O 4.1 4.2 4.3 4.4 4.4.12.1 noByteSwapData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.4.12.2 programPhyEnable and aPhyEnhanceEnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.4.12.3 LPS and linkEnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Revision 1.0 3 www.national.com Geode™ CS4210 Table of Contents (Continued) 4.4.13 4.4.14 4.4.15 4.4.16 Self-ID Buffer Pointer Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Self-ID Count Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 IRMultiChanMask Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.4.16.1 4.4.16.2 4.4.16.3 4.4.16.4 4.4.16.5 4.4.16.6 4.4.16.7 4.4.17 4.4.18 4.4.19 4.4.20 4.4.21 4.4.22 4.4.23 4.4.24 Fairness Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 LinkControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Node ID and Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 PHYControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 IsochCycleTimer Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Asynchronous Request Filter Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Physical Request Filter Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Asynchronous Request/Response Transmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Asynchronous Request/Response Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.4.25.1 4.4.25.2 4.4.25.3 4.4.25.4 4.4.26 Async Request Transmit Context Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Async Request Transmit Command Pointer Register. . . . . . . . . . . . . . . . . . . . . . . . . 80 Async Response Transmit Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . 81 Async Response Transmit Command Pointer Register . . . . . . . . . . . . . . . . . . . . . . . 81 ol e 4.4.24.1 4.4.24.2 4.4.24.3 4.4.24.4 4.4.25 IntEvent Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Bus Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 IntMask Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 IsochTxIntEvent Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 IsochTxIntMask Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 IsochRxIntEvent Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 IsochRxIntMask Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 te Geode™ CS4210 Table of Contents (Continued) Async Request Receive Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Async Request Receive Command Pointer Register . . . . . . . . . . . . . . . . . . . . . . . . . 82 Async Response Receive Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . 83 Async Response Receive Command Pointer Register. . . . . . . . . . . . . . . . . . . . . . . . 83 Isochronous Transmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 bs 4.4.26.1 Isoch Transmit Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.4.26.2 Isoch Transmit Command Pointer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.4.27 Isochronous Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.4.27.1 Isoch Receive Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.4.27.2 Isoch Receive Command Pointer Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.4.27.3 Isoch Receive Context Match Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 NATIONAL (NSC) SPECIFIC CONFIGURATION REGISTERS . . . . . . . . . . . . . . . . . . . . . . . 89 4.5.1 nscControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.5.2 nscEventSet/Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.5.3 nscMaskSet/Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.5.4 nscRAMBist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.5 nscCmcControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.6 nscTxThreshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.7 nscSubSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.8 nscPhysReadCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.5.9 nscPhysWriteCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.5.10 nscPhysLockCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.5.11 nscBusmgrID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.5.12 nscBandwAvail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.5.13 nscChanAvailHi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.5.14 nscChanAvailLo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 O 4.5 www.national.com 4 Revision 1.0 5.0 Electrical Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.1 5.2 5.3 5.4 5.5 Physical Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 O bs ol e te 6.0 NAND TREE TEST MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 ABSOLUTE MAXIMUM RATINGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 OPERATING CONDITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 DC CHARACTERISTICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 AC SPECIFICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Revision 1.0 5 www.national.com Geode™ CS4210 Table of Contents (Continued) Geode™ CS4210 1.0 Architectural Description The CS4210 device implements an IEEE 1394 serial bus host controller as specified by the OHCI Specification Version 1.0. It is organized as a collection of reusable modules as illustrated in Figure 1-1. • TE: Transfer Engine — Provides generic data movement services to the rest of the DMA engine logic. • The interface to the 1394 bus is organized into three clock domains: PCI, SCLK, and SCLK/2. The PCI clock domain can operate at up to 33 MHz. The PCI clock can also be stopped. The SCLK clock domain operates at 49.152 MHz. The SCLK/2 clock domain operates at 24.576 MHz. 1.1 • ITDMA: Isochronous Transmit DMA — Controls the transmission of all isochronous packets. • RDMA: Receive DMA — Processes all received packets (asynchronous, isochronous and physical) and transmit status. PCI INTERFACE MODULE The PCI interface module provides a full function bus mastering interface to the PCI bus. 1.2 A single port SRAM is shared by the DMA logic for caching control information and descriptor blocks fetched from the host memory. This RAM is used for capturing entire descriptor blocks in a single PCI bus tenure. DMA ENGINE te The DMA engine is decomposed into four functional modules: ol e PCI Interface FM_Bus (Master) FM_Bus (Slave) Arbiter DMA Engine Register Set RDMA O bs I2C Bus ATDMA: Asynchronous Transmit DMA — Controls the transmission of all asynchronous packets. ITDMA ATDMA Tx FIFO (SRAM) Tx FIFO (SRAM) AR IR Phys Scratchpad (SRAM) Tx Drain Clock Generator and Power Management TE Rx FIFO (SRAM) Rx Fill Link Layer Physical Layer Interface (49.152 MHz) SCLK LNKON LPS LREQ DATA[0:7] CTRL[0:1] DIRECT Figure 1-1. Functional Block Diagram www.national.com 6 Revision 1.0 1.3 1.2.1 Transfer Engine The transfer engine performs data movement between different sources/sinks: 1) Host memory (TxFIFOs/RxFIFO, Scratchpad SRAM) 2) DMA modules (ATDMA, ITDMA, or RDMA) TRANSMIT DRAIN The transmit drain module accepts packets from the TxFIFOs (asynchronous and isochronous) and interfaces with the link layer module to transmit these packets. It also places transmit completion status in the TxFIFO. 1.4 All byte alignment and byte swapping tasks are also performed by the transfer engine. RECEIVE FILL The receive fill module accepts packets from the link layer and places them into the RxFIFO. It performs packet filtering and routing. It also determines which handshake, if any, to return for each received packet. 1.2.2 Host Memory Organization The 1394 OHCI specification allows for many different data FIFO implementations. This CS4210 implements two transmit FIFOs (asynchronous and isochronous) and a single receive FIFO. The transmit FIFOs share a single embedded dual-port SRAM (36x1024). The receive FIFO uses a single embedded dual-port SRAM (36x1024). A small transmit FIFO is also implemented using latches and some decoding logic. 1.5 LINK LAYER te The link layer module implements a 1394 link layer function developed for this host controller application. It includes support for the CRC32 generation/checking, link state machine, transmit/receive data paths and the generation/ reception of cycle start packets. This module includes support for features defined in the P1394a supplement. All FIFOs may be tested using an embedded RAM BIST controller. See Section 4.5.4 "nscRAMBist" on page 94 for more details. PHYSICAL LAYER INTERFACE ol e 1.6 The physical layer interface module implements the external interface to connect to the Geode CS4103 P1394a physical layer device. It includes support for features defined in revision 2.0 of the P1394a specification. 1.2.3 ATDMA The ATDMA module controls the transmission of all asynchronous packets. This includes AT (Asynchronous Transmit) Request context packets, AT Response context packets and all physical DMA transmit request and response packets. The ATDMA module also controls retransmission of packets as required by the OHCI specification. 1.7 bs 1.2.4 ITDMA The ITDMA module controls the transmission of all isochronous packets. Annex E of the OHCI specification describes the operation of the ITDMA module. This annex was contributed by National Semiconductor. O 1.2.5 RDMA The RDMA module processes all received packets and transmit status. This includes packets destined for the AR (Asynchronous Receive) Request context, AR Response context, all IR (Isochronous Receive) contexts, the Self-ID buffer, and all physical DMA requests (including CSR accesses). It also examines the transmit status to manage the collection of currently active physical DMA requests. Revision 1.0 REGISTER SET The register set module coordinates slave accesses to the host controller registers. It fields read/write requests from the PCI interface module. It can also read configuration data from a serial EEPROM device via an I2C interface. 1.8 RELATED DOCUMENTS The following documents may be useful in understanding the terms and concepts used in this publication. • 1394 Open Host Controller Interface Specification Release 1.0 • IEEE 1394-1995 High Performance Serial Bus, 1995 • ISO/IEC 13213:1994 Control and Status Register Architecture for Microcomputer Buses International Standards Organization, 1994 • IEEE P1394a Standard for a High Performance Serial bus (Supplement) 7 www.national.com Geode™ CS4210 Architectural Description (Continued) Geode™ CS4210 2.0 Signal Definitions Table 2-1. Pin Type Definitions This section defines the signals and external interface of the CS4210. Figure 2-1 shows the pins organized by their functional groupings (internal test and electrical pins are not shown). 2.1 Mnemonic I PIN ASSIGNMENT The tables in this section use several common abbreviations. Table 2-1 lists the mnemonics and their meanings. Input Pin I/O Bidirectional Pin O Output t/s TRI-STATE Signal VDD Figure 2-2 on page 9 shows the pin assignment for the CS4210 with Tables 2-2 and 2-3, on pages 10 and 11, listing the pin assignments sorted by pin number and alphabetically by signal name. Definition VDDIO VSS 2.5V Core Power Supply 3.3V I/O Power Supply Ground Connection DATA[0:7] CTRL[0:1] LREQ SCLK LPS LNKON DIRECT PHY-Link Interface EECLK EEDATA I2C Interface CCLKO CCLKI 8 kHz Reference Clock Interface CMC CMCL Contender Master Control Interface ol e Geode™ CS4210 bs PCI Bus Interface AD[31:0] C/BE[3:0]# FRAME# IRDY# TRDY# STOP# DEVSEL# IDSEL PERR# SERR# PAR PREQ# PGNT# INTA# RST# PCLK PME# te Section 2.2 "Signal Descriptions" starting on page 12 provides a description for each signal within its associated functional group. O Figure 2-1. Signal Groups www.national.com 8 Revision 1.0 Geode™ CS4210 VSS AD0 AD1 AD2 AD3 VDD AD4 AD5 AD6 AD7 C/BE0# AD8 VDDIO AD9 AD10 VSS AD11 AD12 AD13 AD14 VDD AD15 C/BE1# PAR SERR# te 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 Geode™ CS4210 Top View ol e 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 bs AD25 AD24 C/BE3# IDSEL VSS AD23 AD22 AD21 AD20 VDD AD19 AD18 AD17 VDDIO AD16 C/BE2# VSS FRAME# IRDY# TRDY# VDD DEVSEL# STOP# PERR# VSS 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 VSS CMC CMCL EECLK EEDATA VDDIO TESTO INTA# VDD RST# VSS PCLK VDD PGNT# PREQ# VDDIO PME# AD31 AD30 VDD AD29 AD28 AD27 VSS AD26 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 VSS LPS LNKON LREQ VDD SCLK VSS CTRL0 CTRL1 VDD DATA0 DATA1 DATA2 VDDIO DATA3 DATA4 DATA5 VSS DATA6 DATA7 VDD DIRECT CCLKI CCLKO TESTEN# Signal Definitions (Continued) O Figure 2-2. Pin Assignment Diagram Order Number: CS4210VJG Revision 1.0 9 www.national.com Table 2-2. Pin Assignment - Sorted by Pin Number Pin No. Signal Type Pin No. Signal Type Pin No. Signal Type VSS GND 35 VDD PWR 69 AD4 I/O 2 CMC O 36 AD19 I/O 70 VDD PWR 3 CMCL O 37 AD18 I/O 71 AD3 I/O 4 EECLK O 38 AD17 I/O 72 AD2 I/O 5 EEDATA I 39 VDDIO PWR 73 AD1 I/O 6 VDDIO PWR 40 AD16 I/O 74 AD0 I/O 7 TESTO O 41 C/BE2# I/O 75 VSS GND 8 INTA# O 42 VSS GND 76 TESTEN# I 9 VDD PWR 43 FRAME# I/O 77 CCLKO O 10 RST# O 44 IRDY# I/O 78 CCLKI I 11 VSS GND 45 TRDY# I/O 79 DIRECT I 12 PCLK I 46 VDD PWR 80 VDD 13 VDD PWR 47 DEVSEL# I/O 81 DATA7 I/O 14 PGNT# I I/O 15 PREQ# 16 ol e te 1 PWR STOP# I/O 82 DATA6 O 49 PERR# I/O 83 VSS VDDIO PWR 50 VSS GND 84 DATA5 I/O 17 PME# O 51 SERR# I/O 85 DATA4 I/O 18 AD31 I/O 52 PAR I/O 86 DATA3 I/O 19 AD30 I/O 53 C/BE1# I/O 87 VDDIO PWR 20 VDD PWR 54 AD15 I/O 88 DATA2 I/O 21 AD29 I/O 55 VDD PWR 89 DATA1 I/O 22 AD28 I/O 56 AD14 I/O 90 DATA0 I/O 23 AD27 I/O 57 AD13 I/O 91 VDD 24 VSS GND 58 AD12 I/O 92 CTRL1 I/O 25 AD26 I/O 59 AD11 I/O 93 CTRL0 I/O 26 AD25 I/O 60 VSS GND 94 VSS 27 AD24 I/O 61 AD10 I/O 95 SCLK I 28 C/BE3# I/O 62 AD9 I/O 96 VDD PWR 29 IDSEL I 63 VDDIO PWR 97 LREQ O 30 VSS GND 64 AD8 I/O 98 LNKON I 31 AD23 I/O 65 C/BE0# I/O 99 LPS O 32 AD22 I/O 66 AD7 I/O 100 VSS GND 33 AD21 I/O 67 AD6 I/O 34 AD20 I/O 68 AD5 I/O bs 48 O Geode™ CS4210 Signal Definitions (Continued) www.national.com 10 GND PWR GND Revision 1.0 Table 2-3. Pin Assignment - Sorted Alphabetically Type Pin No. C/BE2# I/O 41 SCLK 73 C/BE3# I/O 28 I/O 61 CCLKI I AD11 I/O 59 CCLKO AD12 I/O 58 AD13 I/O AD14 Type Pin No. I 95 SERR# I/O 51 78 STOP# I/O 48 O 77 TESTEN# I 76 CMC O 2 TESTO O 7 57 CMCL O 3 TRDY# I/O 45 I/O 56 CTRL0 I/O 93 VDD PWR 9 AD15 I/O 54 CTRL1 I/O 92 VDD PWR 13 AD16 I/O 40 DATA0 I/O 90 VDD PWR 20 AD17 I/O 38 DATA1 I/O 89 VDD PWR 35 AD18 I/O 37 DATA2 I/O 88 VDD PWR 46 AD19 I/O 36 DATA3 I/O 86 VDD PWR 55 AD2 I/O 72 DATA4 I/O 85 VDD PWR 70 AD20 I/O 34 DATA5 I/O 84 VDD PWR 80 AD21 I/O 33 DATA6 I/O 82 VDD PWR 91 AD22 I/O 32 DATA7 I/O 81 VDD PWR 96 AD23 I/O 31 DEVSEL# I/O 47 VDDIO PWR 6 AD24 I/O 27 DIRECT I 79 VDDIO PWR 16 AD25 I/O 26 EECLK O 4 VDDIO PWR 39 AD26 I/O 25 EEDATA I 5 VDDIO PWR 63 I/O 43 VDDIO PWR 87 AD0 I/O 74 AD1 I/O AD10 bs AD27 Signal Signal te Pin No. ol e Type Signal I/O 23 FRAME# I/O 22 IDSEL I 29 VSS GND 1 I/O 21 INTA# O 8 VSS GND 11 I/O 71 IRDY# I/O 44 VSS GND 24 I/O 19 LNKON I 98 VSS GND 30 I/O 18 LPS O 99 VSS GND 42 AD4 I/O 69 LREQ O 97 VSS GND 50 AD5 I/O 68 PAR I/O 52 VSS GND 60 AD6 I/O 67 PCLK I 12 VSS GND 75 AD7 I/O 66 PERR# I/O 49 VSS GND 83 AD8 I/O 64 PGNT# I 14 VSS GND 94 AD9 I/O 62 PME# O 17 VSS GND 100 C/BE0# I/O 65 PREQ# O 15 C/BE1# I/O 53 RST# O 10 AD28 AD29 AD3 AD30 O AD31 Revision 1.0 11 www.national.com Geode™ CS4210 Signal Definitions (Continued) Geode™ CS4210 Signal Definitions (Continued) 2.2 SIGNAL DESCRIPTIONS 2.2.1 PCI Bus Interface Signals Signal Name AD[31:0] Pin No. Type Refer to Table 2-3 I/O Description Multiplexed Address and Data AD[31:0] is a physical address during the first clock of a PCI transaction; it is the data during subsequent clocks. When the CS4210 is a PCI master, AD[31:0] are outputs during the address and write data phases, and are inputs during the read data phase of a transaction. C/BE[3:0]# FRAME# 65, 53, 41, 28 I/O 43 I/O te When the CS4210 is a PCI slave, AD[31:0] are inputs during the address and write data phases, and are outputs during the read data phase of a transaction. Bus Command and Byte Enables Multiplexed bus command and byte enables. Cycle Frame Driven by the initiator to indicate the beginning and duration of an access. 44 I/O Initiator Ready ol e IRDY# Indicates that the initiator is ready to complete the current data phase of the transaction. TRDY# 45 I/O Target Ready Indicates that the current data phase of the transaction is ready to be completed. STOP# 48 I/O Stop bs Indicates that the current target is requesting the initiator to stop the current transaction. DEVSEL# 47 I/O Device Select When actively driven, DEVSEL# indicates the driving device has decoded its address as the target of the current access. IDSEL 29 I Initialization Device Select Used as a chip select during configuration read and write transactions. 49 O PERR# SERR# PAR 51 52 I/O Parity Error Used for reporting data parity errors during all PCI transactions except a Special Cycle. I/O System Error Used for reporting address parity errors, data parity errors on the Special Cycle command, or any other system error where the result will be catastrophic. I/O Parity PAR is even parity across AD[31:0] and C/BE[3:0]. PAR is an input when AD[31:0] are inputs and is an output when AD[31:0] are outputs. PREQ# 15 O PCI Bus Request PCI bus request to PCI bus arbiter. PGNT# 14 I PCI Bus Grant PCI bus grant from PCI bus arbiter. INTA# 8 O Interrupt A 1394 OpenHCI PCI interrupt. www.national.com 12 Revision 1.0 Geode™ CS4210 Signal Definitions (Continued) 2.2.1 PCI Bus Interface Signals (Continued) Signal Name RST# Pin No. Type 10 I Description PCI Reset RST# is driven low to reset the device. PCLK 12 I Clock 0-33 MHz PCI clock. PME# 17 O Power Management Event PCI power management pin as defined in the PCI Bus Power Management Specification Revision 1.1. Signal Name DATA[0:7] Pin No. I/O Description 81, 82, 84, 85, 86, 88, 89, 90 I/O PHY Data Bidirectional data lines driven by both the Link and PHY layer modules. The width of the data bus depends on the speed of data transfer rate. Packet rate for 100 Mbit/sec transfers use DATA[0:1], 200 Mbit/sec transfers use DATA[0:3], 400 Mbit/sec transfers use DATA[0:7]. Note: CTRL[0:1] 93, 92 te PHY-Link Interface Signals ol e 2.2.2 I/O DATA0 is considered the MSB (most significant bit) based upon the IEEE 1394-1995 specification. Control bits 1 and 0 LREQ bs Bidirectional handshaking signals driven by both the Link and PHY layer modules. The CS4210 and CS4103 use these signals to arbitrate the control of the PHY-Link interface. The control bits also indicate the type of transfer communicating between the two layers namely idle, status, receive, and transmit. 97 O Link Request Used by the CS4210 to request access of the 1394 bus and to read/write the internal registers of the CS4103. 95 O SCLK LPS LNKON 99 98 I Sync Clock The 49.152 MHz clock input driven by the CS4103’s PLL block synchronized to the 1394 bus clock. This clock is also used to synchronize the LREQ, CTRL[0:1], and DATA[0:7] communication protocol between the CS4210 and CS4103. O Link Power Status Indicates the power status of the CS4210. If LPS is low indicating the CS4210 is not powered, the signals CTRL[0:1], DATA[0:7], and SCLK connected to the CS4210 are disabled. I Link On Indicates to the CS4210 that the CS4103 has received a Link-On packet addressed to this node. DIRECT 79 I Direct High indicates direct connection. Low indicates isolation barrier. Set high when using the single capacitor bus hold isolation. Revision 1.0 13 www.national.com Geode™ CS4210 Signal Definitions (Continued) 2.2.3 Miscellaneous Interface Signals Signal Name EECLK Pin No. Type 4 O Description Serial EEPROM Clock The I2C bus clock signal. EEDATA 5 I Serial EEPROM Data The I2C data signal. CCLKO 77 O Cycle Clock Output The 8 kHz reference clock output. CCLKI 78 I Cycle Clock Input CMC 2 O te The 8 kHz reference clock input. Contender Master Control This output is set via the nscCMCControl.CMC bit (BAR1+Offset 18h[0]). The value placed on the bit is directly reflected on this pin. CMCL 3 O Contender Master Control Link Enabled TESTO 7 ol e This output is set via the nscCMCControl.CMCL bit (BAR1+Offset 18h[1]). The value of the bit is reflected on the output when HCControl.linkEnable (BAR0+Offset 50h[17]) is set. Otherwise it is 0. O Test Out National internal test pin, user must float. TESTEN# 76 I Test Enable 2.2.4 bs National internal test pin, user must tie high. Power Supplies and Ground Connections Signal Name VDD VDDIO Type Description 9, 13, 20, 35, 46, 55, 70, 80, 91, 96 PWR 2.5V Core Power Supply Connections (Total of 10) 6, 16, 39, 63, 87 PWR 3.3V I/O Power Supply Connections (Total of 5) 1, 11, 24, 30, 42, 50, 60, 75, 83, 94, 100 GND Ground Connections (Total of 11) O VSS Pin No. www.national.com 14 Revision 1.0 3.1 Operational Description OVERVIEW The CS4210 is an implementation of the link layer protocol of the 1394 serial bus, with additional features to support the transaction and bus management layers. The CS4210 also includes DMA engines for high-performance data transfer and a PCI host bus interface. IEEE 1394 serial bus (and 1394 OpenHCI) protocols support two types of data transfer: asynchronous and isochronous. nous receive. The CS4210 provides eight isochronous transmit contexts. The isochronous transmit DMA controller can transmit from each context during each cycle. Each context can transmit data for a single isochronous channel. The CS4210 provides eight isochronous receive contexts. The isochronous receive DMA controller can receive data for each context during each cycle. Each context can be configured to receive data from a single isochronous channel. Additionally, one context can be configured to receive data from multiple isochronous channels (see bit 28, multiChanMode, in Table 4-53 on page 87 for programming details). • Asynchronous data transfer puts the emphasis on guaranteed delivery of data, with less emphasis on guaranteed timing. ol e 3.1.1 Asynchronous Data Transfer Functions The CS4210 can transmit and receive all of the defined 1394 packet formats. Packets to be transmitted are read out of host memory and received packets are written into host memory, both using DMA. The CS4210 can also be programmed to act as a bus bridge between the host bus and 1394 devices by directly executing 1394 read and write requests as reads and writes to the host bus memory space. 3.1.3 Miscellaneous Functions Upon detecting a bus reset, the CS4210 automatically flushes all packets queued for asynchronous transmission. Asynchronous packet reception continues without interruption, and a token appears in the received request packet stream to indicate the occurrence of the bus reset. When the CS4103 provides the new local node ID, the CS4210 loads this value into its Node ID register, see Table 3-1. Asynchronous packet transmit will not resume until directed to by software. Because target node ID values may have changed during the bus reset, software will not generally be able to re-issue old asynchronous requests until software has determined the new target node IDs. Isochronous transmit and receive functions are not halted by a bus reset, instead they restart as soon as the bus initialization process is complete. A number of management functions are also implemented by the CS4210. A global unique ID register, shown in Table 3-2, can only be written once. For full compliance with higher level standards, this register must be written before the boot block is read. To make this implementation simpler, the CS4210 has an interface to an external serial I2C EEPROM such as the Fairchild Semiconductor NM24C02. The CS4210 also supports four registers that implement the compare-swap operation needed for isochronous resource management. te • Isochronous data transfer is the opposite, with the emphasis on the guaranteed timing of the data, and less emphasis on delivery. bs 3.1.2 Isochronous Data Transfer Functions The CS4210 is capable of performing the cycle master function as defined by the IEEE 1394 OHCI specification. This means it contains a cycle timer and counter, and can queue the transmission of a special packet called a “cycle start” after every rising edge of the 8 kHz cycle clock. The CS4210 can generate the cycle clock internally or use an external reference connected to the CCLKI input (pin 78). When not the cycle master, the CS4210 keeps its internal cycle timer synchronized with the cycle master node by correcting its own cycle timer with the reload value from the cycle start packet. Conceptually, the CS4210 supports one DMA controller each for isochronous transmit and isochro- O Table 3-1. BAR0+Offset E8h: Note ID and Status Register Map RSVD CPS root iDValid 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 RSVD 9 8 7 6 5 busNumber 4 3 2 1 0 nodeNumber Table 3-2. GUID Register Map 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 BAR0+Offset 24h-27h BAR0+Offset 28h-2Bh 9 8 7 6 5 4 3 2 1 0 GUIDHi Register GUIDLo Register node_vendor_ID chip_ID_Hi chip_ID_Lo Revision 1.0 15 www.national.com Geode™ CS4210 3.0 Geode™ CS4210 Operational Description (Continued) 3.2 SOFTWARE INTERFACE OVERVIEW sources which correspond to each DMA context completion, there is also a set of interrupts which correspond to other CS4210 functions/units. For example, one of these interrupts could be sent when a Self-ID packet stream has been received. The processor interrupt line is controlled by the IntEvent and IntMask registers. The IntEvent register indicates which interrupt events have occurred, and the IntMask register is used to enable selected interrupts. Software writes to the IntEventClear register to clear interrupt conditions in IntEvent. In addition, there are registers used by the isochronous transmit and isochronous receive controllers to indicate interrupt conditions for each context. There are three basic means by which software communicates with the CS4210: registers, DMA, and interrupts. 3.2.1 Registers The host architecture (PCI, for example) is responsible for mapping the CS4210’s registers into a portion of the host’s address space. 3.2.2 DMA Operation DMA transfers in the CS4210 are accomplished through one of two methods: DMA memory and physical response DMA. Table 3-3 shows a map of the IntEvent and IntMask Set/ Clear registers. Refer to Section 4.4.16.1 "IntEvent Register" on page 70 and Section 4.4.16.3 "IntMask Register" on page 72 for further information details. te 3.2.2.1 DMA Memory DMA memory resident data structures are used to describe lists of data buffers. The CS4210 automatically sequences through this buffer descriptor list. This data structure also contains status information regarding the transfers. Upon completion of each data transfer, the DMA controller conditionally updates the corresponding DMA context command and conditionally interrupts the processor so it can observe the status of the transaction. A set of registers within the CS4210 is used to initialize each DMA context and to perform control actions such as starting the transfer. ol e 3.2.3.1 Asynchronous Transmit Interrupts Each asynchronous DMA context has one interrupt indication bit in the IntEvent register. For requests, it is the reqTxComplete bit and for responses it is the respTxComplete bit. This interrupt indication bit is set to one if a completed OUTPUT_LAST command has the “i” field set to 11b, or if the “i” field is set to 01b and transmission of the packet did not yield an ack_complete or an ack_pending. bs 3.2.2.2 Physical Response DMA The CS4210 can be programmed to accept 1394 read and write transactions as reads and writes to host memory space. In this mode, the CS4210 acts as a bus bridge from the 1394 bus into host memory. The formats for the data sent and received in all these modes are specified in the 1394 Open Host Controller Interface Specification Release 1.00. 3.2.3 Interrupts When any DMA transfer completes (or aborts), an interrupt may be sent to the host system. In addition to the interrupt 3.2.3.2 Asynchronous Receive Interrupts There are two interrupts for each context (request and response) that software can use to gauge the usage of the receive buffers. If software needs to be informed of the arrival of each packet being sent to the context buffers, it can use the RQPkt or RSPkt interrupts in the IntEvent register. If software needs to be informed of the completion of a buffer, it can set the descriptor i field to 11b, which triggers either the ARRQ or ARRS interrupt in the IntEvent register. 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 7 6 5 4 3 2 1 0 ARRS ARRS reqTxComplete RQPkt RQPkt reqTxComplete RSPkt RSPkt ARRQ isochTx isochTx respTxComplete isochRx isochRx ARRQ postedWriteErr postedWriteErr respTxComplete lockRespErr selfIDcomplete busReset RSVD phy cycleSynch cycle64Seconds RSVD selfIDcomplete busReset RSVD phy cycleSynch cycle64Seconds cycleLost cycleInconsistent phyRegRcvd RSVD unrecoverableError IntMask Set Register IntMask Clear Register cycleTooLong masterIntEnable BAR0+Offset 88h BAR0+Offset 8Ch www.national.com 8 IntEvent Set Register IntEvent Clear Register cycleLost cycleInconsistent phyRegRcvd cycleTooLong RSVD unrecoverableError BAR0+Offset 80h BAR0+Offset 84h 9 lockRespErr O Table 3-3. IntEvent and IntMask Register Map 16 RSVD Revision 1.0 3.2.3.3 Isoch Tx and Rx Context Interrupts Each of the eight implemented isochronous transmit and each of the eight implemented isochronous receive contexts can generate an interrupt. Software can enable interrupts on a per-context basis by setting the corresponding IsochTxnContextIntMask or IsochRxnContextIntMask bit to one. To efficiently handle interrupts which could conceivably be generated from eight different contexts in close proximity to one another, there is a single bit for all IT DMA contexts and another for all IR DMA contexts in the CS4210 IntEvent register. These bits signify that at least one but potentially several IT or IR DMA contexts attempted to generate an interrupt. Software can read the isochTxIntEvent register to find out which isochronous transmit context(s) are involved. Software can read the Iso- chRxIntEvent register to find out which isochronous receive context(s) are involved. Table 3-4 shows a map of the IsochTx/Rx Context Interrupt Event and Mask Set/Clear registers. Refer to Section 4.4.16.4 on page 73 through Section 4.4.16.7 on page 74 for further register information. te The number of supported isochronous DMA contexts varies for 1394 OHCI implementations from a minimum of four to a maximum of 32. Software can determine the number of supported IT or IR DMA contexts by writing FFFF_FFFFh to IsochTxIntMask register for IT and IsochRxIntMask register for IR, and then reading it back. Bits returned as 1’s indicate supported contexts, and bits returned as 0’s indicate unsupported/unimplemented contexts. Table 3-4. IsochTx and IsochRx Context Interrupt Related Registers 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 5 4 3 2 1 0 isochTxInt0 isochTxInt1 isochTxInt2 isochTxInt3 isochTxInt4 isochTxInt5 isochTxInt6 isochTxInt7 isochTxIntMask0 isochTxIntMask1 isochTxIntMask2 isochTxIntMask3 isochTxIntMask4 isochTxIntMask5 isochTxIntMask6 isochRxInt7 isochRxInt6 isochRxInt5 isochRxInt4 isochRxInt3 isochRxInt2 isochRxInt1 isochRxInt0 isochRxIntMask7 isochRxIntMask6 isochRxIntMask5 isochRxIntMask4 isochRxIntMask3 isochRxIntMask2 isochRxIntMask1 isochRxIntMask0 IsochRxIntEvent Set Register IsochRxIntEvent Clear Register RSVD O isochTxIntMask7 bs BAR0+Offset A0h BAR0+Offset A4h Revision 1.0 6 IsochTxIntMask Set Register IsochTxIntMask Clear Register RSVD BAR0+Offset A8h BAR0+Offset ACh 7 IsochTxIntEvent Set Register IsochTxIntEvent Clear Register RSVD BAR0+Offset 98h BAR0+Offset 9Ch 8 ol e BAR0+Offset 90h BAR0+Offset 94h 9 IsochRxIntMaskSet Register IsochRxIntMaskClear Register RSVD 17 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) When the IntEvent.cycleInconsistent condition occurs, the IT and IR DMA controllers continue processing running contexts normally, except that contexts with the ContextControl.cycleMatchEnable bit set remain inactive and cycleMatch processing is, in effect, disabled. To re-enable cycleMatch processing, software must first stop the IT and/ or IR contexts for which cycleMatch is enabled (by clearing ContextControl.run and waiting for ContextControl.active to clear, then clearing the IntEvent.cycleInconsistent interrupt (read BAR0+Offset 84h[23]). The stopped IR contexts may then be started. The stopped IT contexts may also be started, but software should not schedule any transmits to occur for these contexts for at least two cycles immediately following the clearing of the interrupt condition. Table 3-5 is a register format for the eight Isochronous Transmit Context Control Set/Clear registers. Refer to Section 4.4.26.1 "Isoch Transmit Context Control Register" on page 84 for further register information. Table 3-5. IsochTx[7:0]ContextControl Set/Clear Register Formats 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 te event code O bs ol e dead RSVD active RSVD run cycleMatch wake cycleMatchEnable IsochTxnContextControl Set Register IsochTxnContextControl Clear Register www.national.com 18 Revision 1.0 3.3 COMMON DMA CONTROLLER FEATURES page 80 through Section 4.4.27 for further register information. The CS4210 provides several types of DMA functionality: • General-purpose DMA handling asynchronous transmit and receive packets and isochronous transmit and receive packets. 3.3.2 ContextControl.event The packet event codes shown in Table 3-7 on page 20 are possible values for the five-bit ContextControl.event field. This field may contain either a 1394 defined ack code or an OpenHCI generated event code. Bits [15:0] of the ContextControl register may be written into host memory to indicate packet and/or DMA descriptor status. However, all possible event codes which may appear in a particular context’s ContextControl register may not necessarily ever be written into host memory for a packet or DMA descriptor status, depending on circumstances and the functionality of the context. The list of ack codes provided in Table 3-7 is informative not normative (i.e., for asynchronous packets the event code may be set to any ack code specified in current and future 1394 standards). OpenHCI generated event codes have an “evt_” prefix and are denoted by a code with the high (fifth) bit equal to 0. In some cases for isochronous I/O OpenHCI may generate a 1394 style ack code for ContextControl.event. • An inbound bus bridge function that allows 1394 devices to directly access system memory called “physical DMA.” • A separate write buffer for the received Self-ID packets. • A mapping between a 1 KB block in system memory and the first 1K of configuration ROM. te 3.3.1 Context Registers A context provides the basic information to the CS4210 to allow it to fetch and process descriptors for one of the several DMA controllers. All contexts (except for Self-ID) have a ContextControl register and a CommandPtr register. The format of the ContextControl Registers is DMA controller specific. ol e Table 3-6 is a register format of the Contex.Control and CommandPtr registers. Refer to Section 4.4.24 starting on Table 3-6. ContextControl and CommandPtr Registers Formats 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 bs dead RSVD active run RSVD wake AsyncReqTxContextControl Set/Clear Registers AsyncRespTxContextControl Set/Clear Registers RSVD event code dead RSVD active run RSVD wake AsyncReqRxContextControl Set/Clear Registers AsyncRespRxContextControl Set/Clear Registers RSVD spd event code dead run event code active RSVD wake RSVD IsochRxnContextControl Set/Clear Registers RSVD dead RSVD spd event code active RSVD run multiChanMode CycleMatchEnable bufferFill isochheader O cycleMatch wake cycleMatchEnable IsochTxnContextControl Set/Clear Registers CommandPtr Register descriptorAddress Revision 1.0 19 Z www.national.com Geode™ CS4210 Operational Description (Continued) Table 3-7. Packet Event Codes Code 00h Name evt_no_status DMA AT, AR, IT, IR Description No event status. 001h Reserved -- Reserved 02h evt_long_packet IR The received data length was greater than the buffer’s data_length. 03h evt_missing_ack AT A subaction gap was detected before an ack arrived or the received ack had a parity error. 04h evt_underrun 05h evt_overrun 06h evt_descriptor_read 07h evt_data_read AT, IT 08h evt_data_write AR, IR, IT 09h evt_bus_reset AR Identifies a CS4103 packet in the receive buffer as being the synthesized bus reset packet. (See Section 3.8 "Bus Resets" on page 30.) 0Ah evt_timeout AT Indicates that the asynchronous transmit response packet expired and was not transmitted. evt_tcode_err Reserved 0Eh evt_unknown 0Fh evt_flushed 10h Reserved 11h ack_complete 12h Underrun on the corresponding FIFO. The packet was truncated. A receive FIFO overflowed during the reception of an isochronous packet. An unrecoverable error occurred while the CS4210 was reading a descriptor block. An error occurred while the CS4210 was attempting to read from host memory in the data stage of descriptor processing. te AT, AR, IT, IR AT, IT -- An error occurred while the CS4210 was attempting to write to host memory either in the data stage of descriptor processing (AR, IR), or when processing a single 16-bit host memory write (IT). A bad tCode is associated with this packet. The packet was flushed. Reserved AT, AR, IT, IR An error condition has occurred that cannot be represented by any other event codes defined herein. AT Sent by the link side of the output FIFO when asynchronous packets are being flushed due to a bus reset. --- AT, AR, IT, IR ack_pending AT, AR Reserved for definition by future 1394 standards. For asynchronous request and response packets, this event indicates the destination node has successfully accepted the packet. If the packet was a request subaction, the destination node has successfully completed the transaction and no response subaction follows. The event code for transmitted CS4103, isochronous, asynchronous stream and broadcast packets, none of which yields a 1394 ack code, are set by hardware to ack_complete unless an event occurs. Reserved The destination node has successfully accepted the packet. If the packet was a request subaction, a response subaction follows at a later time. This code is not returned for a response subaction. --- Reserved for definition by future 1394 standards. 14h ack_busy_X AT The packet could not be accepted after max ATRetries (see Section 4.4.3 "ATRetries Register" on page 59) attempts, and the last ack received was ack_busy_X. 15h ack_busy_A AT The packet could not be accepted after max ATRetries (see Section 4.4.3 "ATRetries Register" on page 59) attempts, and the last ack received was ack_busy_A. 16h ack_busy_B AT The packet could not be accepted after max AT Retries (see Section 4.4.3 "ATRetries Register" on page 59) attempts, and the last ack received was ack_busy_B. O 13h IR ol e 0Bh 0Ch-0Dh AT, IT bs Geode™ CS4210 Operational Description (Continued) 17h-1Ah Reserved 1Bh ack_tardy AT The destination node could not accept the packet because the link and higher layers are in a suspended state. 1Ch Reserved --- Reserved for definition by future 1394 standards. 1Dh ack_data_error AT, IR The destination node could not accept the block packet because the data field failed the CRC check, or because the length of the data block payload did not match the length contained in the data_length field. This code is not returned for any packet that does not have a data block payload. 1Eh ack_type_error AT, AR A field in the request packet header was set to an unsupported or incorrect value, or an invalid transaction was attempted (e.g., a write to a read-only address). 1Fh Reserved www.national.com Reserved for definition by future 1394 standards. --- Reserved for definition by future 1394 standards. 20 Revision 1.0 For asynchronous contexts, the CS4210 returns the appropriate ack_busy* code. In addition, the CS4210 “backs out” the packet by not updating the buffer’s byte count (resCount), and flushes the packet from the FIFO. The CS4210 does not go inactive, as there is still buffer space available and software is attempting to provide more buffer space. For both transmit and receive contexts, if the Z value is now non-zero, the CS4210 continues processing. In order to ensure that a wake condition is not missed, the CS4210 clears ContextControl.wake before it reads or rereads a descriptor. ContextControl.wake is ignored when ContextControl.run is zero. te 3.3.2.3 ContextControl.active ContextControl.active is set and cleared only by the CS4210. It is set when the CS4210 receives an indication from software that a valid descriptor is available for processing. This indication occurs as a result of software setting the ContextControl.run or by software setting ContextControl.wake while ContextControl.run is set. There are four cases in which the CS4210 clears ContextControl.active: 1) When a branch is indicated by a descriptor but the Z value of the branch address is 0. 2) When software clears ContextControl.run and the CS4210 has reached a safe stopping point. 3) While ContextControl.dead is set. 4) After a hardware or software reset of the CS4210. bs ol e 3.3.2.1 ContextControl.run The ContextControl.run bit is set by software when the CS4210 is to begin processing descriptors for the context. Before software sets ContextControl.run, ContextControl.active must not be set, and the CommandPtr register for the context must contain a valid descriptor block address and a Z value that is appropriate for the descriptor block address. Software may stop the CS4210 from further processing of a context by clearing ContextControl.run. When a ContextControl.run is cleared, the CS4210 will stop processing of the context in a manner that will not impact the operation of any other context or DMA controller. The CS4210 may require a significant amount of time to safely stop processing for a context but when the CS4210 does stop, it clears ContextControl.active. If software clears a ContextControl.run for an isochronous context while the CS4210 is processing a packet for the context, the CS4210 continues to receive or transmit the packet and update descriptor status. The CS4210 does, however, stop at the conclusion of that packet. If ContextControl.run is cleared for a non-isochronous context, the CS4210 may stop processing at any convenient point as long as the context and descriptors end up in a consistent state (e.g., status updated if a packet was sent and acknowledged). Clearing ContextControl.run may have other side effects that are DMA controller dependent. These effects are described in the subsections of Section 4.4 "OHCI Configuration Registers" starting on page 48 that cover each of the DMA controllers. When software clears ContextControl.run and the CS4210 has stopped, the CS4210 is not necessarily in a state that can be restarted simply by setting ContextControl.run. Software should always ensure that CommandPtr.descriptorAddress and CommandPtr.Z are set to valid values before setting ContextControl.run. O 3.3.2.2 ContextControl.wake When software adds to a list of descriptors for a context, the CS4210 may have already read the descriptor that was at the end of the list before it was updated. The value that the CS4210 read may contain a Z value of zero indicating the end of the descriptor list. The ContextControl.wake bit provides a simple semaphore to the hardware to indicate that the list may have changed since the last time the CS4210 read a descriptor. Therefore, if the CS4210 had fetched a descriptor and the indicated branch address had a Z value of zero, then the CS4210 rereads the pointer value. For transmit contexts and receive contexts in buffer-fill mode (a mode in which a context can receive multiple packets into one data buffer), if the Z value is still zero, then the end of the list was reached and the CS4210 clears ContextControl.active. For receive contexts in buffer-fill mode, if the Z value is still zero on the reread, then the packet cannot be accepted. Revision 1.0 21 Additionally, for the asynchronous transmit contexts (request and response), the CS4210 clears ContextControl.active when a bus reset occurs. When ContextControl.active is cleared and ContextControl.run is already clear, the CS4210 sets the IntEvent bit for the context. This interrupt is the same interrupt that would have been generated by the context if a completed descriptor had indicated that an interrupt should be generated. 3.3.2.4 ContextControl.dead ContextControl.dead is used to indicate a fatal error in processing a descriptor. When ContextControl.dead is set by the CS4210, ContextControl.active is immediately cleared but ContextControl.run remains set. In addition, setting ContextControl.dead causes an unrecoverableError interrupt event and blocks a normal context event interrupt from being set. ContextControl.dead is immediately cleared when software clears ContextControl.run or by either a hardware or software reset of the CS4210. Software can determine the cause of a context going dead by checking the ContextControl.event code. The defined reasons for the CS4210 to set ContextControl.dead are described in Section 3.7 "Host Bus Errors" on page 28. www.national.com Geode™ CS4210 Operational Description (Continued) 3.3.2.5 CommandPtr Software initializes CommandPtr.descriptorAddress to contain the address of the first descriptor block that the CS4210 accesses when software enables the context by setting ContextControl.run. Software also initializes CommandPtr.Z to indicate the number of descriptors in the first descriptor block. Software only writes to this register when both ContextControl.run and ContextControl.active are zero. The CS4210’s behavior when this rule is violated is undefined. Since the CS4210 utilizes the CommandPtr register while processing a context, there is a set of guidelines by which software may safely and deterministically read CommandPtr. These guidelines are based on the ContextControl bits as listed in Table 3-8 (X = don’t care). If ContextControl.run is set and ContextControl.dead is not set, then the contents of CommandPtr are only specified if both ContextControl.active and ContextControl.wake are clear. In this instance, CommandPtr.descriptorAddress contains the address of a descriptor within the last descriptor block that was executed. If ContextControl.run and ContextControl.dead are both set, then descriptorAddress points to a descriptor within the descriptor block in which an unrecoverable error occurred. Except for the case where software initializes CommandPtr, the value of CommandPtr.Z is undefined and Z may contain a value that is implementation dependent. The value of CommandPtr is undefined after a hardware or software reset of the CS4210. When software sets ContextControl.run to 1 and CommandPtr.Z contains an invalid value for the controller and context, or if a Z value is invalid for a fetched descriptor block in a running context, the CS4210: sets ContextControl.dead to 1 and sets ContextControl.event to evt_unknown and will not process any descriptors in that context. te Geode™ CS4210 Operational Description (Continued) Table 3-8. CommandPtr Read Values CommandPtr.descriptor Address Value ol e ContextControl Bits dead active wake 0 0 0 X A descriptor block address. Either last written or last executed. 0 0 1 X Contents unspecified. 1 0 0 0 Refers to the descriptor block that contains the Z = 0 that caused the CS4210 to set active to 0. 1 0 0 1 Contents unspecified. 1 0 1 0 Contents unspecified. 1 0 1 1 Contents unspecified. 1 0 X Points to the descriptor block in which a fatal error occurred. O 1 bs run www.national.com 22 Revision 1.0 3.4 LIST MANAGEMENT 3.5 All contexts use an identical method for controlling the processing of descriptors associated with the context. This presents a uniform interface to controlling software and allows reuse of hardware on the CS4210. Physical Requests - Physical requests, including physical read, physical write, and lock requests to some CSR registers (see Section 4.4.4 "Autonomous CSR Resources" on page 60) are handled directly by the CS4210 and are not made visible to system software. The CS4210 uses a dedicated physical response unit to handle these requests. This unit will not block processing of other transaction types while dealing with physical requests. Section 3.6 "Physical Requests" on page 26 provides details on which requests can be processed as physical. 3.4.1 Context Initialization Software initializes the context by first checking to see that ContextControl.run, ContextControl.active, and ContextControl.dead are all 0. Then, CommandPtr.descriptorAddress is written to point to a valid descriptor block and CommandPtr.Z is set to a value that is consistent with the descriptor block. Then ContextControl.run can be set. te Self-ID Packets - CS4103 packets with the Self-ID format can be received at any time. However, only those packets that are received during the Self-ID phase of bus initialization which immediately follows a bus reset are considered to be Self-ID packets. Others are considered simply to be PHY packets which are handled like asynchronous requests. The CS4210 can be programmed to accept or ignore Self-ID packets. When Self-ID packets are accepted, they are stored in a special memory buffer which has a dedicated controller and context. Because of this special memory buffer, Self-ID packets can never get ‘stuck’ in a FIFO. ol e 3.4.2 Appending to Running List Software may append to a list of descriptors at any time. Software may append either a single descriptor or a linked list of descriptors. When the to-be-appended list is properly formatted, software updates the branch address and Z value of the descriptor that was at the end of the list being processed by the CS4210. When software completes the linking process it must set ContextControl.wake for the context. This ensures that the CS4210 resumes operation if it had previously reached the end of the list and gone inactive. ASYNCHRONOUS RECEIVE The CS4210 accepts 1394 transactions and groups them as follows: bs 3.4.3 Stopping a Context Software can stop a running context by clearing ContextControl.run. The context might not stop immediately. To ensure that the context has stopped, software must wait for ContextControl.active to be cleared by the CS4210. This indicates that the CS4210 has completed all processing associated with the context. O 3.4.4 Hardware Behavior The CS4210 has several DMA controllers each of which has one or more contexts. Each DMA controller is expected to examine each of its contexts on a periodic basis and make operational decisions based on the context state as contained in ContextControl. The DMA controller examines the state of the active, run, wake, and dead bits to govern descriptor processing. This process is executed once each time a context is ‘scheduled’. Scheduling of a context is dependent on the DMA controller. For example, an isochronous transmit context is scheduled once per cycle while an asynchronous request transmit context is only scheduled once per fairness interval. Revision 1.0 23 Asynchronous Responses - When the host system initiates a request through the asynchronous transmit request context, the response is handled by the asynchronous receive response context. The fact that host system software initiates the process and the fact that the CS4210 has a separate context for responses, allows system software to budget for all responses which ensures that the CS4210 always has a place in system memory to store a response when it arrives. In the unlikely event that the CS4210 does not have a place for the response it is allowed to drop the response when it arrives. This causes a split-transaction time-out which is an error condition with which the software is already able to deal. Asynchronous Requests - A request may arrive at the CS4210 at any time. Additionally, a request can be of any size up to the limits imposed by the max_rec field in the Bus_Info_Block (see Section 4.4.7 "Bus Options Register" on page 62). Due to the unpredictable nature of this transaction type, it is impractical for the system software to ensure that there is always sufficient buffer space defined in the asynchronous request receive buffers. If the FIFO which is receiving requests becomes full, all subsequent requests are busied until there is room to receive them. www.national.com Geode™ CS4210 Operational Description (Continued) 3.5.1 Unrecoverable Error If an unrecoverable error occurs when the CS4210 is writing to the AR DMA request buffer, a fail indication is sent to the link side of the FIFO. This indicates that the link side should set its count to zero which will busy further read requests and write requests that are destined for the AR DMA request buffer. If the AR DMA request context has an unrecoverable error, the system side of the FIFO continues to unload the FIFO even though the AR DMA request context is dead. All asynchronous requests that would have been sent to the AR DMA request queue are dropped and no responses for them are sent to the initiating node. Dropping requests destined for the AR DMA request queue is acceptable because: AR DMA read requests are always split transactions (ack_pended), 2) write requests within the physical range have been ack_pended and 3) write requests above the physical range which have been posted (ack_completed) are by definition permitted to fail. te 1) successfully written to the addressed location in physical memory. If posting of physical writes is enabled, then the CS4210 is allowed to return ack_complete to a physical write request with certain restrictions. This CS4210 supports four posted writes. However, for error reporting purposes a posted write is considered pending until the write is actually completed to the offset address. For each pending posted write, there is an error reporting register to hold the request’s source node ID and 48-bit offset address should that posted write fail. If the maximum allowed posted writes are pending, the CS4210 must return either ack_pending or ack_busy* for subsequent posted write request candidates and only return resp_complete when those writes have actually been performed. Read and write requests within the Asynchronous Request FIFO do not pass any posted writes, whether posted in the Physical or Asynchronous Request FIFOs. Within the Physical Request FIFO, read requests may coherently pass posted writes, but write requests and posted writes do not pass other writes posted in the Physical Request FIFO. Physical read and write requests may pass writes posted to the Asynchronous Request FIFO. In conjunction with the ordering rules, the following protocol restrictions are adhered to so that proper ordering and therefore data integrity is maintained. The term “visible side-effect” is used to mean an indirect action caused by a request or response which results in the alteration of the contents or usage of host memory outside the address scope of the request or response. ol e Geode™ CS4210 Operational Description (Continued) bs 3.5.2 Ack Codes for Write Requests For write requests that are handled by the physical request controller, the CS4210 may send an ack_complete before the data is actually written to system memory. For a full description of which requests are candidates for physical requests, refer to Section 3.6 "Physical Requests" on page 26. The ack_code sent for write requests to offsets in the range of 0000_FFFF_FFFFh to FFFE_FFFF_FFFFh when not busied is always ack_complete. The ack_code sent for requests to offsets in the range FFFF_0000_0000h to FFFF_FFFF_FFFFh and for block requests with a non-zero extended tcode is always ack_pending. O 3.5.3 Posted Writes As described above, a write request that is handled by the physical request controller or which is in the address range 0000_FFFF_FFFFh to FFFE_FFFF_FFFFh to be handled by the asynchronous request unit, may generate an ack_complete before the data is actually written to the designated system memory location. These writes are referred to as posted writes. Write requests to the physical memory range of the host may be posted if software has enabled posted writes (see Section 4.4.10 "PostedWriteAddress Register" on page 64). If posting is not enabled, the CS4210 will not return a complete indication (ack_complete or resp_complete) until the data has been www.national.com 24 1) Write requests within the range 0000_FFFF_FFFFh to FFFE_FFFF_FFFFh do not have 1394 visible side effects. 2) Read or write requests within the range 0h to 0_FFFF_FFFEh, whether handled by the Physical Request controller or not, do not have 1394 visible side-effects. 3) Read requests to CSR addresses which are processed autonomously by the CS4210 (Section 4.4.4 "Autonomous CSR Resources" on page 60) do not have 1394 visible side-effects. 4) If an error occurs in writing the posted data packet, the CS4210 sets an interrupt event to notify software and provides information about the failed write in an error reporting register. For more information about error handling of posted writes, refer to Section 3.7.7 "Posted Write Error" on page 29. Revision 1.0 3.5.4 Retries For asynchronous receive, the CS4210 supports dualphase retry for packets that must be busied. For asynchronous transmit, CS4210 supports the single-phase retry protocol. The retry mechanism is managed by hardware and invisible to software. 3.5.5 DMA Summary Table 3-9 is a summary of DMA information for reference purposes. Table 3-9. DMA Summary DMA Contexts Per Context Registers Asynchronous Transmit 1 Request ContextControl CommandPtr reqTxComplete 1 Response ContextControl CommandPtr respTxComplete 1 Request ContextControl CommandPtr ARRQ RQPkt 1 Response ContextControl CommandPtr ARRS RSPkt Isochronous Transmit 8 ContextControl CommandPtr IsochTx IsochTxIntEventn IsochTxIntMaskn Isochronous Receive 8 ContextControl CommandPtr ContextMatch IsochRx IsochRxIntEventn IsochRxIntMaskn Self-ID 1 SelfIDBuffer SelfIDCount SelfIDComplete Buffer-fill Receive Mode DMA Commands te OUTPUT_MORE OUTPUT_MORE-Immediate OUTPUT_LAST OUTPUT_LAST-Immediate Buffer-fill INPUT_MORE Z tcodes 2-8 0, 1, 4, 5, 9, A, E 2, 6, 7, B 1 0, 1, 4, 5, 9, E* 2, 6, 7, B 1-8 A Packet-perbuffer INPUT_MORE INPUT_LAST 1-8 A Buffer-fill INPUT_MORE 1 ol e OUTPUT_MORE OUTPUT_MORE-Immediate OUTPUT_LAST OUTPUT_LAST-Immediate STORE_VALUE N/A O bs Asynchronous Receive Per Context Interrupts Revision 1.0 25 www.national.com Geode™ CS4210 Operational Description (Continued) 3.6 PHYSICAL REQUESTS When a block or quadlet read or write request is received, the CS4210 handles the operation automatically without involving software if the offset address in the request packet header meets a specific set of criteria listed below. Requests that do not meet these criteria are directed to the AR DMA Request context unless otherwise specified. CS4210 registers which are written via physical access to the CS4210 yield unspecified results. The CS4210 checks to see if the offset address in the request packet header is one of the following. If the offset falls within the physical range, then the offset address is used as the memory address for the block or quadlet transaction. Physical range is defined by offsets inclusively between a lower bound of 0h and an upper bound of 0000_FFFF_FFFFh. If the high order 16-bits of the offset address is 0000h, then the lower 32 bits of the offset address are used as the memory address for the block or quadlet transaction. 1) Config ROM header (1st quadlet of the Config ROM) (FFFFF0000400h): Local register is ConfigROMheader (see Section 4.4.5 "Configuration ROM Header Register" on page 61). 2) Bus ID (1st quadlet of the Bus_Info_Block) (FFFFF0000404h): Local register is BusID (see Section 4.4.6 "Bus Identification Register" on page 61). 3) Bus options (2nd quadlet of the Bus_Info_Block) (FFFFF0000408h): Local register is BusOptions (see Section 4.4.7 "Bus Options Register" on page 62). 4) Global unique ID (3rd and 4th quadlets of the Bus_Info_Block) (FFFFF000040Ch and FFFFF0000410h): Local registers are GlobalIDHi and GlobalIDLo (see Section 4.4.8 "Global Unique ID Register" on page 63). 5) Configuration ROM (FFFFF0000414h to FFFFF00007FFh). Mapped by the ConfigROMmapping register to a 1 KB block of system memory (see Section 4.4.9 "Configuration ROM Mapping Register" on page 63) ol e Lock transactions and block transactions with a non-zero extended tcode are not supported in this address space, instead they are diverted to the AR DMA Request context. For read requests, the information needed to formulate the response packet is passed to the Physical Response Unit. Requests are only accepted if the source node ID of the request has a corresponding bit in the Asynchronous Request Filter registers and Physical Request Filter registers (see Section 4.4.23 "Physical Request Filter Registers" on page 79). If the offset address is one of the following addresses, the Physical Request controller directly handles quadlet reads. Other requests shall be sent an ack_type_error. te Geode™ CS4210 Operational Description (Continued) For information about ack codes for write requests, see Section 3.5.2 "Ack Codes for Write Requests" on page 24. bs If the offset address selects one of the following addresses, the physical request unit directly handles quadlet compareswaps and quadlet reads. Other requests are sent an ack_type_error (see Table 3-7 on page 20.) BUS_MANAGER_ID (FFFFF000021Ch): Local register is nscBusmgrID (BAR1+Offset 60h). 2) BANDWIDTH_AVAILABLE (FFFFF0000220h): Local register is nscBandwAvai (BAR1+Offset 64h). 3) CHANNELS_AVAILABLE_HI (FFFFF0000224h): Local register is nscChanAvailHi (BAR1+Offset 68h). 4) CHANNELS_AVAILABLE_LO (FFFFF0000228h): Local register is nscChanAvailLo (BAR1+Offset 6Ch). O 1) www.national.com 26 3.6.1 Filtering Physical Requests Software can control which nodes it receives packets from by utilizing the asynchronous filter registers. There are two registers, one for filtering out all requests from a specified set of nodes (AsynchronousRequestFilter register) and one for filtering out physical requests from a specified set of nodes (PhysicalRequestFilter register). The settings in both registers have a direct impact on how the AR DMA Request context is used (e.g., disabling only physical receives from a node causes all request packets from that node to be routed to the AR DMA Request context). The usage and interrelationship between these registers is described in Section 4.4.22 "Asynchronous Request Filter Registers" on page 78.” Revision 1.0 3.6.2 Posted Writes For write requests handled by the Physical Request controller, the CS4210 may send an ack_complete before the data is actually written to system memory. These writes are referred to as posted writes since posted writes impact the Physical Request controller and the Asynchronous Receive Request DMA context. Further information about posted writes is located in Section 3.5.3 "Posted Writes" on page 24. Information on host bus error handling of posted writes is provided in Section 3.7.7 "Posted Write Error" on page 29.” te 3.6.6 Bus Reset On a bus reset, all pending physical requests (those for which ack_pending was sent) are discarded. Following a bus reset, only physical requests to the autonomous CSR resources (see Section 4.4.4 "Autonomous CSR Resources" on page 60) can be handled immediately. Other physical requests are processed after software initializes the filter registers (see Section 4.4.22 "Asynchronous Request Filter Registers" on page 78 and Section 4.4.23 "Physical Request Filter Registers" on page 79). ol e 3.6.3 Physical Responses The response packet generated for a physical read, nonposted write, and lock request contains the transaction label as it appeared in the request, the destination_ID as provided in the request’s source_ID, and are transmitted at the speed at which the request was received. The source bus ID in the response packet is equal to the destination bus ID from the original request. Note that this is not necessarily the same as the contents of the busNumber field in the Node ID register (BAR0+Offset E8h[15:6]). Unlike AR Response packets, physical responses do not track a SPLIT_TIMEOUT expiration time. 3.6.5 Interrupt Considerations for Physical Requests Physical read request handling does not cause an interrupt to be generated under any circumstances. Physical write requests generate an interrupt when posted write processing yields an error. Lock requests to the serial bus registers generate an interrupt when the CS4210 is unable to deliver a lock response packet. O bs 3.6.4 Physical Response Retries There is a separate nibble-wide MaxPhysRespRetries field in the ATRetries Register (BAR0+Offset 08h[15:11]) that tells the Physical Response Unit how many times to attempt to retry the transmit operation for the response packet when an ack_busy* or ack_data_error is received from the target node. If the retry count expires, the packet is dropped and software is not notified. Refer to Section 4.4.3 "ATRetries Register" on page 59 for register details. Revision 1.0 27 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) 3.7 HOST BUS ERRORS 3.7.2.2 xferStatus Write Error For any type of context, when the CS4210 encounters an error writing the status to a descriptor, it sets ContextControl.dead. The values that would have been written to xferStatus of a descriptor are retained in ContextControl for inspection by system software. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set regardless of the setting of the interrupt (i) field in the descriptor. Additionally, CommandPtr is set to point to a descriptor within the descriptor block in which the error occurred. The CS4210 has three primary goals when dealing with host bus error conditions: 1) Continue transmission and/or reception on all contexts not involved in the error. 2) Provide information to software which is sufficient to allow recovery from the error when possible. 3) Provide a means of error recovery on a context other than a general chip reset. 3.7.1 Causes of Host Bus Errors Host bus errors can generally be classified as one of the following: • Operation error (e.g., attempt to write to read-only memory) • Data transfer error (e.g., parity or unrecoverable ECC) ol e • Time-out error (e.g., reply on split transaction bus was not received in time) te • Addressing error (e.g., non-existent memory location) Each of these errors can occur at three identifiable stages in the processing of a descriptor: • Descriptor fetch • Data transfer (read or write) • Optional descriptor status update. bs In general, the nature of the bus error is not as significant as the stage of descriptor processing in which it occurs. For example, the difference between an addressing error and a data parity error is not significant to the error processing. O 3.7.2 CS4210 Actions When Host Bus Error Occurs When a host bus error occurs, the CS4210 performs a defined set of actions for all context types. Additionally, there is a set of actions that is performed depending on the context type. The following subsections outline these actions. 3.7.2.1 Descriptor Read Error When an error occurs during the reading of a descriptor or descriptor block, the behavior of the CS4210 is the same regardless of the context type. The CS4210 sets ContextControl.dead and sets ContextControl.event to evt_descriptor_read to indicate that the descriptor fetch failed. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set. Additionally, CommandPtr is set to point to a descriptor within the descriptor block in which the error occurred. Since the descriptor could not be read, its xferStatus and resCount are not written with current values, and software must refer to ContextControl.event for the status. www.national.com 3.7.2.3 Transmit Data Read Error For asynchronous request transmit, asynchronous response transmit, and isochronous transmit, the CS4210 handles system data read errors in a similar manner. The CS4210 does not stop processing for the context. Instead, the event code in the status of the OUTPUT_LAST* descriptor is set to indicate that there was an error and the nature of the error. The indicated errors are evt_data_read or evt_underrun. If the error occurs before a packet’s header is placed in the output FIFO, the CS4210 can immediately abort the packet transfer, optionally set the descriptor status to evt_data_read or evt_underrun, and move on to the next descriptor block. If the error occurs after the header has been placed in the output FIFO, the CS4210 stops placing data in the output FIFO. This causes the CS4210 to send a packet with a length that does not agree with the data_length field of the header. If the CS4210 receives an ack_data_error from the addressed node, then the CS4210 substitutes evt_data_read or evt_underrun as appropriate. If the device returns anything other than ack_data_error, then the CS4210 stores that value in the status for the packet. This means that if the addressed node returns an ack_pending on a block write, the error indication is lost. If the packet was a broadcast write, an isochronous packet, or an asynchronous stream packet, no ack code is received from any node. In this case, the CS4210 assumes that ack_data_error was received and proceeds as outlined above. Note: 28 Underruns which occur due to host bus latency are not construed to be host bus data errors, and as a result such asynchronous request and response packets are retried as described in Section 4.4.3 "ATRetries Register" on page 59. Revision 1.0 3.7.6 Physical Read Error When an external node does a physical access and the CS4210’s read of system memory fails, the CS4210 returns an error indication to the requester by forming a response containing a response code of resp_data_error. If the device replies with ack_busy or ack_data_error the host retries the packet. If the error was caused by a FIFO underrun, the CS4210 retries with the same response. If the error was a host bus error, the response packet is changed to resp_data_error. 3.7.4 Asynchronous Receive DMA Data Write Error When a host bus error occurs while the CS4210 is attempting to write to either the request or response buffer, the CS4210 sets the corresponding ContextControl.dead and set ContextControl.event to evt_data_write. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set regardless of the setting of the interrupt (i) field in the descriptor. CommandPtr.descriptorAddress points to the descriptor that contained the buffer descriptor for the memory address at which the error occurred. Any data in the input FIFO for the context is discarded. 3.7.7 Posted Write Error Whether to be handled by the Physical Request controller or by the Asynchronous Receive Request context, write requests to certain address ranges (see Section 3.6 "Physical Requests" on page 26) may be acked with ack_complete before the data is actually written to system memory. Since the sending node has been notified that the action is complete, when the CS4210 cannot complete a posted write operation due to a host bus error the system must be notified so that software can recover. te 3.7.3 Isochronous Transmit Data Write Error A data write error can occur when the CS4210 attempts to write to the address indicated in a STORE_VALUE descriptor. This error is handled like a data read error with the exception that the event code is set to evt_data_write. The CS4210 does not begin placing the packet associated with a STORE_VALUE into the output FIFO until the STORE_VALUE operation is complete. This is to prevent the possibility of having multiple errors that cannot be properly reported to system software. ol e If an error occurs in writing the posted data packet, then the CS4210 sets the IntEvent.PostedWriteErr bit (BAR0+Offset 80h[8]) to indicate that an error has occurred and the write remains pending. Software can then read the source node ID and offset address from the PostedWriteAddress register and then clear IntEvent.PostedWriteErr. When software clears IntEvent.PostedWriteErr, that write is no longer pending. O bs 3.7.5 Isochronous Receive Data Write Error If a data write error occurs for a context that is in packetper-buffer mode, the CS4210 sets ContextControl.event to evt_data_write or evt_overrun and conditionally updates xferStatus of the descriptor in which the error occurred. Any remaining data in the input FIFO for the packet is discarded. The resCount value in a descriptor that has an error will not necessarily reflect the correct number of data bytes successfully written to memory. If a FIFO overrun occurs for a context that is in buffer-fill mode, the packet is treated as if a data length error had occurred and is ‘backed out’ of the receive buffer (xferStatus and resCount not updated) and the remainder of the packet is discarded from the input FIFO. If a host bus error occurs for a context in buffer-fill mode, the CS4210 sets ContextControl.dead and sets ContextControl.event to evt_data_write. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set regardless of the setting of the interrupt (i) field in the descriptor. CommandPtr.descriptorAddress points to the descriptor that contained the buffer descriptor for the memory address at which the error occurred. Any data in the input FIFO for the context is discarded. Although the CS4210 allows four pending writes, error reporting is through a single pair of software visible registers. If multiple posted write failures have occurred, software accesses them one at a time through the PostedWriteAddress register. When software clears IntEvent.PostedWriteErr, this is a signal to the CS4210 that software has completed reading of the current contents of PostedWriteAddress and that the CS4210 can report another error by again setting IntEvent.PostedWriteErr and presenting a new set of values when software reads PostedWriteAddress. Table 3-10 provides a map of the PostedWriteAddress register. Refer to Section 4.4.10 "PostedWriteAddress Register" on page 64 for further register information. If the CS4210 has four pending physical writes, additional physical writes may not be posted. Instead the CS4210 returns ack_pending and only returns a complete indication when the write is actually done. Table 3-10. BAR0+Offset 38h: PostedWriteAddress Register Map 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 sourceID 9 8 7 6 5 4 3 2 1 0 offsetHi offsetLo Revision 1.0 29 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) 3.8 BUS RESETS 3.8.2 Asynchronous Receive To assist software in determining which asynchronous request packets arrived before and after a bus reset, this is necessary since node numbers may have changed, the CS4210 inserts a synthesized CS4103 packet into the AR DMA Request Context buffer (if active) as soon as a bus reset condition is detected. The format of the packet can be found in the 1394 OHCI specification. When a 1394 bus reset occurs, certain actions must be taken by software for proper operation of the DMA contexts. These actions and the behavior of the CS4210 are described in the following subsections. 3.8.1 Asynchronous Transmit Upon detection of a bus reset, the CS4210 ceases transmission of asynchronous transmit packets. When this occurs there are two possibilities for AT packets that are left in the FIFO. • Case 2 is when a bus reset occurs after the packet is placed in the FIFO but before it is transmitted. For this category, the link side of the CS4210 returns evt_flushed. ol e When each context becomes stable (all data transfers have been halted and status writes have been completed), the CS4210 clears the corresponding ContextControl.active bit. te • Case 1 is when a bus reset occurs after the packet was transmitted but before an ack was received. For this category, the link side of the CS4210 returns evt_missing_ack. Software can distinguish the bus-reset packet from authentic CS4103 packets by the value of eventCode which is set to evt_bus_reset. Software can further interpret and coordinate received asynchronous packets across multiple bus resets by using the selfIDGeneration number provided in the bus-reset packet. Since the bus-reset packet is fabricated when a bus reset is initially detected, the selfIDGeneration number is for the new (not previous) generation and is the same as the selfIDGeneration number in the SelfIDCount register as well as in the selfID buffer. If more than one bus reset has occurred without any intervening packets, then only the “last” one is required to result in a synthesized bus-reset packet. If the input FIFO is full when a bus reset occurs, the link side of the FIFO inserts the bus-reset packet when space becomes available. If the AR DMA request context does not have enough buffer space for the bus-reset packet, the packet is synthesized once buffer space becomes available. The bus reset interrupt (IntEvent.busReset) is independent on the time when this packet goes from the FIFO into a host buffer. This interrupt shall occur as soon as possible after a bus reset has been detected. The bus-reset packet is no different from any other packet going into the AR Request buffer in that IntEvent.RQPkt is generated like it is for other packets. When a bus reset occurs, the link side flushes the asynchronous transmit FIFO(s) until the IntEvent.busReset condition is cleared. Software must make sure that IntEvent.busReset is not cleared until: software has cleared the ContextControl.run bits for both Asynchronous Transmit contexts, and 2) both Asynchronous Transmit contexts have acquiesced and both ContextControl.active fields are zero. This is to ensure that all queued asynchronous packets (with potentially stale node numbers) are flushed. bs 1) 3.8.3 Isochronous Transmit and Receive Bus reset does not affect isochronous contexts. O Once the contexts are no longer active, software may clear the busReset interrupt condition, and hardware stops flushing the asynchronous transmit FIFO(s). Before setting ContextControl.run for either context following a bus reset, software must ensure that NodeID.iDValid is set and that NodeID.nodeNumber (Section 4.4.19 "Node ID and Status Register" on page 76) does not equal 63. www.national.com 30 Revision 1.0 3.9 SERIAL EEPROM Table 3-11. Serial EEPROM Map A serial EEPROM may be used to configure the CS4210. If a serial EEPROM device is connected, the CS4210 detects the pull-up resistor on the EEDATA pin (pin 5) and considers the EEPROM present. Immediately after RST# is deasserted, the serial EEPROM is scanned via EEDATA and EECLK (pin 4). The CS4210 reads configuration information from the first 34 bytes of the EEPROM. Offset subsystem[7:0] 01h subsystem[15:8] 02h subsystem[23:16] 03h subsystem[31:24] 04h configROMheader[7:0] 05h configROMheader[15:8] 06h configROMheader[23:16] 07h configROMheader[31:24] 08h busOptions[7:0] 09h busOptions[15:8] 0Ah busOptions[23:16] 0Bh busOptions[31:24] 0Ch guidHi[7:0] 0Dh guidHi[15:8] 0Eh guidHi[23:16] 0Fh guidHi[31:24] 10h guidLo[7:0] 11h guidLo[15:8] 12h guidLo[23:16] 13h guidLo[31:24] 14h nscControl[7:0] 15h nscControl[15:8] 16h nscControl[23:16] 17h nscControl[31:24] 18h nscTxThrsh[7:0] 19h nscTxThrsh[15:8] 1Ah nscTxThrsh[23:16] 1Bh nscTxThrsh[31:24] 1Ch cmcControl[7:0] 1Dh cmcControl[15:8] 1Eh cmcControl[23:16] 1fh cmcControl[31:24] 20h CRC1 21h CRC2 O bs ol e 3.9.1 Serial EEPROM Cyclic Redundancy Check The serial EEPROM uses a Cyclical Redundancy Check (CRC) to insure the data in the EEPROM is valid. If the CRC check fails, the data from the EEPROM is not loaded into the mapped registers listed in Table 3-11. The CRC1 and CRC2 values may be computed using the sample code in Figure 3-1 "CRC1 and CRC2 Sample Code" on page 32. This code accepts hexadecimal data from STDIN and writes data plus CRC to STDOUT. As a check, this code should produce the results as shown in Figure 3-1. 00h te If the presence of the serial EEPROM was not detected, the CS4210 will not attempt to load configuration data via the EEDATA/EECLK pins. It will instead allow software to write to the guidHi and guidLo bit fields of the GUID register once after each hardware reset (RST#). Revision 1.0 Description 31 www.national.com Geode™ CS4210 Operational Description (Continued) ff ff ff ff ff ff ff ff -> CRC1 = feh, CRC2 = 70h 01 23 45 67 89 ab cd ef -> CRC1 = 19h, CRC2 = 07h 00 00 00 00 00 00 00 00 -> CRC1 = bfh, CRC2 = f4h #include typedef unsigned char uchar_t; typedef unsigned short ushort_t; typedef unsigned long long_t; ol e ushort_t calc_crc(ushort_t r, uchar_t d); ushort_t rev16(ushort_t src); /* main routine */ int main(int argc, char *argv[]) { ushort_t residual = 0xffff; int din; uchar_t byte; uchar_t crc1, crc2; while(scanf("%2x", &din ) != EOF ) { byte = din; printf("%2.2x ", byte); residual = calc_crc(residual, byte); }; printf("\n"); residual = rev16(residual); crc1 = ~(residual & 0x00ff); crc2 = ~(residual>>8); printf("CRC1 = %2.2hxh\n", crc1); printf("CRC2 = %2.2hxh\n", crc2); te Geode™ CS4210 Operational Description (Continued) return(0); /* calc_crc - apply a byte of data to the 16-bit CRC */ } ushort_t calc_crc(ushort_t r, uchar_t d) { ushort_t bit_in; int i; } bs for(i=0;i>i) & 0x0001; if((r>>15) ^ bit_in) r = (((r15 ^ ((r>>14)&0x0001) ^ bit_in) >15 ^ ((r>>1)&0x0001) ^ bit_in)
CS4210VJG 价格&库存

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

免费人工找货