ZFx86 Data Book System On A Chip
User Manual: ZFx86 System-on-a-Chip Data Book La Biblioteca de los 8 bits
Open the PDF directly: View PDF .
Page Count: 670
Download | |
Open PDF In Browser | View PDF |
ZFx86™ System-on-a-Chip Data Book Version 1.0 Rev D June 5, 2006 ZFx86 Data Book 1.0 Rev D Page 1 Legal Notice THIS DOCUMENT AND THE INFORMATION CONTAINED THEREIN IS PROVIDED “AS-IS” AND WITHOUT A WARRANTY OF ANY KIND. YOU, THE USER, ACCEPT FULL RESPONSIBILITY FOR PROPER USE OF THE MATERIAL. ZF MICRO SOLUTIONS, INC. MAKES NO REPRESENTATIONS OR WARRANTIES THAT THIS DATA BOOK OR THE INFORMATION CONTAINED THERE-IN IS ERROR FREE OR THAT THE USE THEREOF WILL NOT INFRINGE ANY PATENTS, COPYRIGHT OR TRADEMARKS OF THIRD PARTIES. ZF MICRO SOLUTIONS, INC. EXPLICITLY ASSUMES NO LIABILITY FOR ANY DAMAGES WHATSOEVER RELATING TO ITS USE. LIFE SUPPORT and HIGH RISK APPLICATION POLICY Customers of ZF Micro Solutions products will not knowingly integrate, promote, sell, or otherwise transfer any ZF Product to any customer or end user for use in any high risk applications, LIFE SUPPORT DEVICES or Life support SYSTEMS. ZF MICRO SOLUTIONS' PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN HIGH RISK APPLICATIONS or LIFE SUPPORT DEVICES or LIFE SUPPORT SYSTEMS WITHOUT THE EXPRESS WRITTEN APPROVAL OF THE PRESIDENT AND GENERAL COUNSEL OF ZF MICRO SOLUTIONS, INC. and ZF Micro Solutions does not indemnify for any such uses. As used herein: 1. Life support devices or systems are devices or systems which, (a) are intended for surgical implant into the body, or (b) support or sustain life, and whose failure to perform when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in a significant injury to the user. 2. A critical component is any component of a life support device or system whose failure to perform can be reasonably expected to cause the failure of the life support device or system, or to affect its safety or effectiveness. 3. A high risk application is any use in any applications where it is reasonably foreseeable that failure of the product as used in such application(s) would lead to death, bodily injury, or catastrophic property damage. Examples of such applications specifically include, without limitation, certain uses in nuclear facilities, air traffic control systems, and aeronautical aircraft control applications. ZFx86 Data Book 1.0 Rev D Page 2 Legal Notice © 2001 ZF Micro Devices, Inc. All rights reserved. © 2006 ZF Micro Solutions, Inc. All rights reserved. ZFx86, FailSafe FailSafe Boot ROM, Z-tag ZF-Logic, InternetSafe, OEMmodule SCC, ZF SystemCard, ZF FlashDisk-SC, netDisplay, ZF 104Card, ZF SlotCard, and ZF Micro Solutions logo are trademarks of ZF Micro Solutions, Inc. Other brands and product names are trademarks of their respective owners. All trademarks and copyrights of ZF MicroSystems, ZF Embedded, ZF Linux Devices and ZF Micro Devices are the property of ZF Micro Solutions. ZFx86 Data Book 1.0 Rev D Page 3 ZFx86 Specification Changes ZFx86 Specification Changes This application note describes the differences in specifications between the ZFx86BGA388 devices produced for ZF Micro Solutions by National Semiconductor and the new devices available as of June 1, 2006 produced for ZF Micro Solutions by IBM Microelectronics. DEVICE MARKING NSC produced devices had the following foundry code: 3100-0200-01 B1 or 3100-020001 A5 IBM produced devices have the following foundry code: 3100-0200-03 C0 CPU PERFORMANCE Initial units of the IBM produced devices will be available at 100 MHz CPU clock speeds. (NSC produced versions were: Industrial temp 100MHz; Commercial temp 128MHz) VOLTAGE NOTE: IF YOU WILL BE TESTING THE NEW ZFx86 ON AN EXISTING DESIGN THE CORE VOLTAGE MUST BE CHANGED TO THE SETTING BELOW! The Vdd-Core voltage specification is expected to be: Minimum 2.09V Nominal 2.20V Maximum 2.31V (NSC produced versions were also dual voltage devices: 5V tolerant, 3.3V I/O, 2.5V core voltage at 100MHz and 2.7V core voltage at 128MHz) MECHANICAL / ENVIRONMENTAL Commercial Temperature - Up to 100MHz (0C to +70C ambient temperature) Industrial Temperature - Up to 100MHz (-40C to +85C case temperature) Package: 388-pin Plastic Ball Grid Array, 35mm x 35mm, fully RoHS compliant (NSC produced versions were non RoHS compliant) ZFx86 Data Book 1.0 Rev D Page 4 ZFx86 Specification Changes NOTE: After full characterization of the devices from the IBM foundry has been completed ZF will issue an update regarding final temperature ratings. SOFTWARE An updated version of the ZTAG .bin file for loading the Phoenix BIOS is required however there is no change to the BIOS, just this particular loader module. Please contact support@zfmicro.com with “NEW Z-TAG” in the subject line and you will be sent the new file. Note: When you flash the BIOS using the dongle there are two software components inside of the dongle; the loader program and the BIOS image. You will now use a new version of the loader program but the same BIOS image.) ZFx86 Data Book 1.0 Rev D Page 5 Revision History Revision History This section contains the revision history of this manual, starting with ZFx86 Data Book 1.0 Revision D. The change from revision C to revision D occurred when ZF Micro Solutions resumed production of the ZFx86 using a new foundry in 2006. Designers who used ZFx86 chips in pre-2006 products will want to review the specification changes listed herein. Volume I Revision D June 5th, 2006 Most references to ZF Micro Devices are changed to ZF Micro Systems (except in copyright of source code listings). The specification for Vdd-Core has been changed to new voltages in Table 7.2, ‘Recommended Operating Conditions, ’ on page 482 A note listing important changes between the NSC (previous) and IBM (current) produced chips appears on "ZFx86 Specification Changes" on page 4 ZFx86 Data Book 1.0 Rev D Page 6 Table of Contents Table of Contents ZFx86 Specification Changes .............................................................................................. 4 Revision History ..................................................................................................................... 6 Volume I Revision D June 5th, 2006 ................................................................................... 6 Table of Contents.......................................................................................................... 7 List of Figures ............................................................................................................. 13 List of Tables............................................................................................................... 17 1. Overview ................................................................................................................... 29 2. 32-bit x86 Processor................................................................................................ 31 2.1. Overview ...................................................................................................................... 31 2.1.1. Internal Clock Logic ............................................................................................ 32 2.1.2. On-Chip Write-Back Cache ................................................................................ 32 2.1.3. System Management Mode................................................................................ 33 2.1.4. Power Management............................................................................................ 33 2.1.5. Signal Summary ................................................................................................. 33 2.2. Programming Interface ................................................................................................ 33 2.2.1. Processor Initialization........................................................................................ 34 2.2.2. Instruction Set Overview..................................................................................... 35 2.2.3. Register Set ........................................................................................................ 36 2.2.4. Address Spaces.................................................................................................. 60 2.2.5. Interrupts and Exceptions ................................................................................... 66 2.2.6. System Management Mode................................................................................ 71 2.2.7. Shutdown and Halt ............................................................................................. 80 2.2.8. Protection............................................................................................................ 80 2.2.9. Virtual 8086 Mode............................................................................................... 82 2.2.10. FPU Operations ................................................................................................ 83 2.3. Instruction Set.............................................................................................................. 86 2.3.1. General Instruction Fields................................................................................... 87 2.3.2. Instruction Set Tables ......................................................................................... 93 3. North Bridge ........................................................................................................... 113 3.1. North Bridge Features ............................................................................................... 113 3.2. Interface Signals ........................................................................................................ 116 3.3. Functional Description ............................................................................................... 118 3.3.1. Processor Interface........................................................................................... 118 3.3.2. DRAM Controller............................................................................................... 122 3.3.3. Configuration and Testability ............................................................................ 126 3.3.4. PCI bus interface and arbiter ............................................................................ 127 3.3.5. PCI Write Buffer and Bursts.............................................................................. 129 3.3.6. Write buffer architecture ................................................................................... 134 3.3.7. System Management Mode.............................................................................. 134 3.3.8. Power Management.......................................................................................... 136 3.4. Register Set ............................................................................................................... 136 ZFx86 Data Book 1.0 Rev D Page 7 Table of Contents 3.4.1. Register Address Map ...................................................................................... 137 3.4.2. DRAM registers ................................................................................................ 149 3.4.3. Power Management registers........................................................................... 160 3.4.4. Test Signals ...................................................................................................... 162 3.4.5. PCI configuration registers ............................................................................... 162 4. South Bridge .......................................................................................................... 165 4.1. South Bridge Module ................................................................................................. 165 4.1.1. South Bridge Features...................................................................................... 165 4.2. Architecture................................................................................................................ 166 4.2.1. Front-side PCI / Back-Side PCI Bus ................................................................. 167 4.2.2. IDE Controller ................................................................................................... 168 4.2.3. Universal Serial Bus ......................................................................................... 168 4.2.4. Integrated SuperI/O .......................................................................................... 169 4.2.5. ISA Bus Interface.............................................................................................. 169 4.2.6. Power Management.......................................................................................... 170 4.2.7. GPIO Interface.................................................................................................. 171 4.2.8. ZF-Logic............................................................................................................ 171 4.3. Signal Descriptions .................................................................................................... 172 4.3.1. System Interface Signals .................................................................................. 173 4.3.2. Back-Side PCI Interface Signals....................................................................... 175 4.3.3. Integrated SuperI/O Interface Signals .............................................................. 188 4.4. Register Descriptions................................................................................................. 195 4.4.1. PCI Configuration Space and Access Methods................................................ 196 4.4.2. Register Summaries ......................................................................................... 197 4.4.3. Chipset Register Space .................................................................................... 206 4.4.4. USB Controller Registers - PCIUSB ................................................................. 246 4.4.5. ISA Legacy Register Space.............................................................................. 248 4.5. SuperI/O - A PC98 Compliant Cell ............................................................................ 258 4.5.1. Outstanding Features ....................................................................................... 258 4.5.2. Features............................................................................................................ 259 4.5.3. SIGNAL/PIN Descriptions................................................................................. 261 4.5.4. Device Architecture and Configuration ............................................................. 261 4.5.5. Standard Logical Device Configuration Register Definitions ............................ 265 4.5.6. Standard Configuration Registers..................................................................... 267 4.6. SuperI/O Configuration Registers .............................................................................. 269 4.6.1. Register Type Abbreviations ............................................................................ 269 4.7. Floppy Disk Controller (FDC) Configuration .............................................................. 272 4.8. Parallel Port Configuration ......................................................................................... 274 4.8.1. Logical Device 1 (PP) Configuration................................................................. 274 4.9. System Wake-Up Control (SWC) .............................................................................. 276 4.9.1. Overview........................................................................................................... 276 4.9.2. Functional Description ...................................................................................... 276 4.9.3. Event Detection ................................................................................................ 277 ZFx86 Data Book 1.0 Rev D Page 8 Table of Contents 4.9.4. SWC Register Bitmap....................................................................................... 291 4.9.5. Keyboard/Mouse Control .................................................................................. 294 4.9.6. Infrared Communication Port Configuration ..................................................... 297 4.10. ACCESS.Bus Interface (ACB) Configuration........................................................... 298 4.11. Real-time Clock (RTC)............................................................................................. 300 4.11.1. RTC Overview ................................................................................................ 302 4.11.2. Functional Description .................................................................................... 302 4.11.3. RTC Configuration Registers.......................................................................... 307 4.11.4. RTC Registers ................................................................................................ 309 4.11.5. RTC General-purpose RAM Map .................................................................. 321 4.12. ACCESS.bus Interface (ACB) ................................................................................. 322 4.12.1. Functional Description .................................................................................... 322 4.12.2. ACB Registers ................................................................................................ 329 4.13. Legacy Functional Blocks ........................................................................................ 335 4.13.1. Keyboard and Mouse Controller (KBC) .......................................................... 335 4.13.2. Floppy Disk Controller (FDC).......................................................................... 336 4.13.3. Parallel Port .................................................................................................... 337 4.13.4. UART Functionality (SP1/SP2)....................................................................... 340 4.13.5. IR Communication Port (IRCP) Functionality ................................................. 345 5. ZF-Logic and Clocking .......................................................................................... 403 5.1. Features..................................................................................................................... 403 5.2. ZFL Register Space Summary .................................................................................. 404 5.2.1. Pins Associated with ZF-Logic.......................................................................... 408 5.3. ISA Memory Mapper for Flash/SRAM ....................................................................... 410 5.3.1. Window settings registers................................................................................ 415 5.3.2. Control (R/W, 8/16)........................................................................................... 418 5.3.3. Events (SMI, etc.) ............................................................................................. 418 5.3.4. Initialization of mem_cs0 .................................................................................. 418 5.3.5. Sample Code for Memory Window Calculation ................................................ 421 5.4. GPCS I/O mapper...................................................................................................... 422 5.4.1. GPCS control.................................................................................................... 424 5.4.2. GPCS base low byte......................................................................................... 424 5.4.3. GPCS base high byte ....................................................................................... 424 5.4.4. GPCS Events................................................................................................... 424 5.5. Watchdog Timer ........................................................................................................ 424 5.5.1. Watchdog Registers ......................................................................................... 426 5.6. PWM generator.......................................................................................................... 430 5.7. Z-tag Overview .......................................................................................................... 434 5.8. Boot Parameters Register ......................................................................................... 437 5.8.1. Special Notes of Interest................................................................................... 440 5.8.2. Design Example................................................................................................ 441 5.8.3. Clocking and Control Overview ........................................................................ 443 5.9. Data registers (F0H to FEH) ...................................................................................... 444 ZFx86 Data Book 1.0 Rev D Page 9 Table of Contents 5.10. BUR Base Register.................................................................................................. 445 5.11. System Clocking ...................................................................................................... 447 5.11.1. mhz_14c [AF16].............................................................................................. 448 5.11.2. 32KHZC_C [AF01].......................................................................................... 449 5.11.3. SYSCLK_C [A20]............................................................................................ 450 5.11.4. USB_48MHz_C [AE15]................................................................................... 453 5.11.5. PCI Clocking ................................................................................................... 454 6. Z-tag, BUR, and The ZFiX Console....................................................................... 455 6.1. Serial Port Connection ............................................................................................... 455 6.2. Z-Tag Dongles ........................................................................................................... 455 6.2.1. PassThrough Dongle ........................................................................................ 455 6.2.2. Memory Dongle ................................................................................................ 455 6.2.3. Using the Dongle .............................................................................................. 456 6.3. Z-tag Manager Software ............................................................................................ 459 6.3.1. Z-tag Summary ................................................................................................. 459 6.3.2. Z-tag Data Transfer Protocol ............................................................................ 460 6.3.3. Z-tag Port Interface........................................................................................... 461 6.4. Z-tag Register Descriptions ....................................................................................... 461 6.4.1. Z-tag Data (D1h)............................................................................................... 461 6.4.2. Z-tag Control (7Ch).......................................................................................... 461 6.5. BUR (Boot Up ROM) ................................................................................................. 462 6.5.1. ZFiX Console Functions ................................................................................... 463 6.5.2. Z-tag Functionality ............................................................................................ 464 6.5.3. Internal Functionality......................................................................................... 465 6.6. BUR COM1 Download Examples .............................................................................. 466 6.6.1. Procomm: Download a Test Program............................................................... 466 6.6.2. HyperTerminal: Download a Test Program ...................................................... 468 6.6.3. BUR Version Test Program Source Code ........................................................ 469 6.6.4. BUR/BET Memory Map ................................................................................... 470 6.7. Flash Programming Example .................................................................................... 470 7. Electrical Specifications........................................................................................ 481 7.1. General Specifications ............................................................................................... 481 7.1.1. MTTF and FIT Specifications............................................................................ 481 7.1.2. Power/Ground Connections and Decoupling.................................................... 481 7.2. Signal I/O Buffer Type Directory .......................................................................... 483 7.3. Detailed DC Characteristics of Cells.......................................................................... 484 7.4. AC Characteristics ..................................................................................................... 489 7.4.1. System Interface............................................................................................... 489 7.4.2. Memory Interface.............................................................................................. 492 7.4.3. ACCESS.bus Interface ..................................................................................... 494 7.4.4. PCI Bus............................................................................................................. 495 7.4.5. ISA Interface ..................................................................................................... 501 7.4.6. IDE Interface Timing ......................................................................................... 504 ZFx86 Data Book 1.0 Rev D Page 10 Table of Contents 7.4.7. Universal Serial Bus (USB) .............................................................................. 523 7.4.8. Serial Port (UART)............................................................................................ 527 7.4.9. Fast IR Port Timing........................................................................................... 528 7.4.10. JTAG Timing ................................................................................................ 529 7.4.11. GPIO Timing ................................................................................................... 530 7.4.12. Floppy Disk Interface ...................................................................................... 531 7.4.13. Keyboard and Mouse Interface....................................................................... 533 7.4.14. Parallel Port .................................................................................................... 534 7.4.15. ZF-Logic.......................................................................................................... 540 8. Pinout Summary .................................................................................................... 541 8.1. Pad Assignments ....................................................................................................... 8.2. Pin Descriptions (Sorted by Pin) ................................................................................ 8.3. Pin Descriptions (Sorted by Pin Name) ..................................................................... 8.4. Pin Descriptions (Sorted by Pin Description) ............................................................. 541 545 558 572 9. BUR API .................................................................................................................. 587 9.1. Using the BUR API .................................................................................................... 587 9.2. Function Call Definitions ............................................................................................ 587 10. Signal Status After POST .................................................................................... 597 10.1. Access Bus .............................................................................................................. 597 10.2. Floppy Disk .............................................................................................................. 597 10.2.1. FDD Active ..................................................................................................... 597 10.2.2. Z-tag Active .................................................................................................... 598 10.3. GPIO ........................................................................................................................ 599 10.4. ISA ........................................................................................................................... 599 10.5. PS/2 ......................................................................................................................... 599 10.6. PCI........................................................................................................................... 600 10.7. LPT .......................................................................................................................... 600 10.8. IR Control (COM2) ................................................................................................... 601 10.9. ZF Logic ................................................................................................................... 601 11. Phoenix BIOS Register Settings......................................................................... 603 11.1. North Bridge............................................................................................................ 603 11.1.1. Reset, Sampling, and Misc North Bridge Registers........................................ 603 11.1.2. DRAM Registers ............................................................................................. 615 11.1.3. Power Management Registers ....................................................................... 623 11.1.4. PCI Configuration Registers ........................................................................... 624 11.2. South Bridge ............................................................................................................ 626 11.2.1. Floppy Disk Controller .................................................................................... 626 11.2.2. Parallel Port .................................................................................................... 629 11.2.3. Serial Port 1 .................................................................................................... 630 11.2.4. Serial Port 2 .................................................................................................... 632 11.2.5. PS/2 Mouse/Keyboard.................................................................................... 633 11.2.6. Infrared Communication Port Configuration ................................................... 635 ZFx86 Data Book 1.0 Rev D Page 11 Table of Contents 11.2.7. Access Bus ..................................................................................................... 636 11.2.8. Pin Multiplexor Registers ................................................................................ 637 11.2.9. GPIO Configuration Pins ................................................................................ 640 Index........................................................................................................................... 653 ZFx86 Data Book 1.0 Rev D Page 12 List of Figures List of Figures Table of Contents ......................................................................................................... 7 List of Figures ............................................................................................................ 13 List of Tables .............................................................................................................. 17 1. Overview .................................................................................................................. 29 Figure 1-1 ZFx86 Fail-Safe PC-on-a-Chip Block Diagram ............................................. 30 2. 32-bit x86 Processor ............................................................................................... 31 Figure 2-1 Figure 2-2 Figure 2-3 Figure 2-4 Figure 2-5 Figure 2-6 Figure 2-7 Figure 2-8 Figure 2-9 Figure 2-10 Figure 2-11 Figure 2-12 Figure 2-13 Figure 2-14 Figure 2-15 Figure 2-16 Figure 2-17 Figure 2-18 Figure 2-19 Processor Block Diagram ............................................................................. 31 Task Register ............................................................................................... 46 Processor Internal I/O Interface Signals ....................................................... 53 Processor Cache Architecture ...................................................................... 58 Memory and I/O Address Spaces ................................................................ 61 Offset Address Calculation ........................................................................... 61 Real Mode Address Calculation ................................................................... 63 Protected Mode Address Calculation ........................................................... 63 Selector Mechanism ..................................................................................... 64 Paging Mechanism ....................................................................................... 65 Error Code Format ....................................................................................... 70 System Management Memory Address Space ............................................ 72 SMI Execution Flow Diagram ....................................................................... 73 SMM Memory Space Header ....................................................................... 74 SMM and Suspend Mode State Diagram ..................................................... 78 Tag Word Register ....................................................................................... 84 FPU Status Register ..................................................................................... 84 FPU Mode Control Register ......................................................................... 84 Instruction Set Format .................................................................................. 86 3. North Bridge .......................................................................................................... 113 Figure 3-1 Figure 3-2 Figure 3-3 Figure 3-4 Figure 3-5 Figure 3-6 Figure 3-7 Figure 3-8 Figure 3-9 Figure 3-10 Data Paths .................................................................................................. 114 Block Diagram ............................................................................................ 115 CPU Address Translation and Decode ...................................................... 122 32-Bit Banks Connection ............................................................................ 124 16-Bit Bank Connections ............................................................................ 124 PCI Bus Arbiter Block Diagram .................................................................. 128 PCI Bank Arbiter State Diagram ................................................................. 129 Translation of Type 0 Configuration Cycle ................................................. 132 Translation of Type 1 Configuration Cycle ................................................. 132 SMM RAM Location ................................................................................... 135 4. South Bridge ......................................................................................................... 165 Figure 4-1 Figure 4-2 Figure 4-3 Figure 4-4 Internal Block Diagram ............................................................................... 167 IDE Channel Connections .......................................................................... 168 South Bridge Block Diagram ...................................................................... 172 Super I/O Block Diagram ............................................................................ 259 ZFx86 Data Book 1.0 Rev D Page 13 List of Figures Figure 4-5 Figure 4-6 Figure 4-7 Figure 4-8 Figure 4-9 Figure 4-10 Figure 4-11 Figure 4-12 Figure 4-13 Figure 4-14 Figure 4-15 Figure 4-16 Figure 4-17 Figure 4-18 Figure 4-19 Detailed SuperI/O Block Diagram .............................................................. 262 Structure of the Standard Configuration Register File ................................ 264 Configuration Register Map ........................................................................ 267 Keyboard and Mouse Interfaces ................................................................ 295 Divider Chain Control ................................................................................. 303 Interrupt/Status Timing ............................................................................... 306 Bit Transfer ................................................................................................. 323 Start and Stop Conditions .......................................................................... 323 ACCESS.bus Data Transaction ................................................................. 323 ACCESS.bus Acknowledge Cycle ............................................................. 324 A Complete ACCESS.bus Data Transaction .............................................. 325 UART Mode Register Bank Architecture .................................................... 341 Composite Serial Data ............................................................................... 346 IRCP Register Bank Architecture ............................................................... 355 DMA Control Signals Routing ..................................................................... 377 5. ZF-Logic and Clocking ......................................................................................... 403 Figure 5-1 Figure 5-2 Figure 5-3 Figure 5-4 Figure 5-5 Figure 5-6 Figure 5-7 Figure 5-8 Figure 5-9 Figure 5-10 Figure 5-11 Figure 5-12 Figure 5-13 Figure 5-14 ZF-Logic Features ...................................................................................... 404 Memory Window Mapping .......................................................................... 415 Fields in 32-bit memory settings register .................................................... 416 Watchdog Block Diagram ........................................................................... 425 PWM Control Unit ....................................................................................... 430 PWM Period and Duty Cycle ...................................................................... 431 Dongle (w/o Cover) .................................................................................... 434 Sample DIP Switch Schematic ................................................................... 442 System Clocking and Control ..................................................................... 443 mhz_14c[AF16] Clocking Control Circuitry ................................................. 449 32KHZC_C [AF01] Clocking Control Circuitry ............................................ 450 SYSCLK_C [A20] Clocking Control Circuitry .............................................. 452 USB_48MHz_C [AE15] Clocking Control Circuitry ..................................... 453 PCI Clocking Control Circuitry .................................................................... 454 6. Z-tag, BUR, and The ZFiX Console ...................................................................... 455 Figure 6-1 Figure 6-2 Figure 6-3 Figure 6-4 Figure 6-5 Data Transfer Protocol ............................................................................... 460 Data Input ................................................................................................... 460 Dongle Data Record ................................................................................... 465 Using Procomm YMODEM Batch .............................................................. 467 Using HyperTerminal - Send File Ymodem ................................................ 468 7. Electrical Specifications ....................................................................................... 481 Figure 7-1 Figure 7-2 Figure 7-3 Figure 7-4 Figure 7-5 Figure 7-6 Figure 7-7 Differential Input Sensitivity for Common Mode Range .............................. 486 sysclk_c Timing and Measurement Points ................................................. 490 reset_n timing ............................................................................................. 490 res_out timing ............................................................................................. 491 CPU_trig timing .......................................................................................... 491 Drive Level and Measurement Points for Switching Characters ................ 492 Output Valid Timing .................................................................................... 493 ZFx86 Data Book 1.0 Rev D Page 14 List of Figures Figure 7-8 Figure 7-9 Figure 7-10 Figure 7-11 Figure 7-12 Figure 7-13 Figure 7-14 Figure 7-15 Figure 7-16 Figure 7-17 Figure 7-18 Figure 7-19 Figure 7-20 Figure 7-21 Figure 7-22 Figure 7-23 Figure 7-24 Figure 7-25 Figure 7-26 Figure 7-27 Figure 7-28 Figure 7-29 Figure 7-30 Figure 7-31 Figure 7-32 Figure 7-33 Figure 7-34 Figure 7-35 Figure 7-36 Figure 7-37 Figure 7-38 Figure 7-39 Figure 7-40 Figure 7-41 Figure 7-42 Figure 7-43 Figure 7-44 Figure 7-45 Figure 7-46 Figure 7-47 Figure 7-48 Figure 7-49 Figure 7-50 Figure 7-51 Figure 7-52 Figure 7-53 Setup and Hold Timing - Read Data In ...................................................... 494 ACB Signals (SDAT AND SCLK) Rising and Falling times ........................ 494 Testing Setup for Slew Rate and Minimum Timing .................................... 496 V/I Curves for PCI Output Signals .............................................................. 496 PCICLK Timing and Measurement Points .................................................. 497 Load Circuits for Maximum Time Measurements ....................................... 498 Output Timing Measurement Conditions .................................................... 499 Input Timing Measurement Conditions ....................................................... 500 Reset Timing .............................................................................................. 500 ISA Read Operation ................................................................................... 503 ISA Write Operation ................................................................................... 503 IDE Reset Timing ....................................................................................... 504 IDE Register Transfer To/From Device ...................................................... 506 IDE PIO Data Transfer To/From Device ..................................................... 508 Multiword Data Transfer ............................................................................. 510 Initiating an Ultra DMA Data in Burst .......................................................... 513 Sustained Ultra DMA Data In Burst ............................................................ 514 Host Pausing an Ultra DMA Data In Burst ................................................. 515 Device Terminating an Ultra DMA Data In Burst ........................................ 516 Host Terminating an Ultra DMA Data In Burst ........................................... 517 Initiating an Ultra DMA Data Out Burst ....................................................... 518 Sustained Ultra DMA Data Out Burst ......................................................... 519 Device Pausing an Ultra DMA Data Out Burst ........................................... 520 Host Terminating an Ultra DMA Data Out Burst ......................................... 521 Device Terminating an Ultra DMA Data Out Burst ..................................... 522 Data Signal Rise and Fall Time .................................................................. 525 Source Differential Data Jitter .................................................................... 525 EOP Width Timing ...................................................................................... 526 Receiver Jitter Tolerance ........................................................................... 526 UART, Sharp-IR, SIR, and Consumer Remote Control Timing .................. 527 Fast IR Timing (MIR and FIR) .................................................................... 528 TCK Timing and Measurement Points ....................................................... 529 GPIO Output Timing Measurement Conditions .......................................... 530 GPIO Input Timing Measurement Conditions ............................................. 530 Floppy Disk Reset Timing .......................................................................... 531 Write Data Timing ....................................................................................... 532 Drive Control Timing ................................................................................... 532 Read Data Timing ...................................................................................... 533 KBC Signals Rising and Falling .................................................................. 533 Parallel Port Interrupt Timing (Compatible Mode) ...................................... 534 Parallel Port Interrupt Timing (Extended Mode) ......................................... 534 Typical Parallel Port Data Exchange .......................................................... 535 Enhanced Parallel Port 1.7 Timing ............................................................. 536 Enhanced Parallel Port 1.9 Timing ............................................................. 537 ECP Parallel Port Forward Timing Diagram ............................................... 538 ECP Parallel Port Backward Timing Diagram ............................................ 539 ZFx86 Data Book 1.0 Rev D Page 15 List of Figures Figure 7-54 Figure 7-55 ZF-Logic Output Timing Measurement Conditions ..................................... 540 ZF-Logic Input Timing Measurement Conditions ....................................... 540 8. Pinout Summary ................................................................................................... 541 Figure 8-1 Figure 8-2 Figure 8-1 ZFx86 Package - Solder Balls .................................................................... 542 388 BGA Internal ........................................................................................ 543 ZFx86 Orientation ....................................................................................... 544 9. BUR API ................................................................................................................. 587 10. Signal Status After POST ................................................................................... 597 11. Phoenix BIOS Register Settings ........................................................................ 603 Index .......................................................................................................................... 653 ZFx86 Data Book 1.0 Rev D Page 16 List of Tables List of Tables Table of Contents ......................................................................................................... 7 List of Figures ............................................................................................................ 13 List of Tables .............................................................................................................. 17 1. Overview .................................................................................................................. 29 2. 32-bit x86 Processor ............................................................................................... 31 Table 2.1 Table 2.2 Table 2.3 Table 2.4 Table 2.5 Table 2.6 Table 2.7 Table 2.8 Table 2.9 Table 2.10 Table 2.11 Table 2.12 Table 2.13 Table 2.14 Table 2.15 Table 2.16 Table 2.17 Table 2.18 Table 2.19 Table 2.20 Table 2.21 Table 2.22 Table 2.23 Table 2.24 Table 2.25 Table 2.26 Table 2.27 Table 2.28 Table 2.29 Table 2.30 Table 2.31 Table 2.32 Table 2.33 Table 2.34 Table 2.35 Table 2.36 Table 2.37 Table 2.38 Table 2.39 Initialized Register Controls........................................................................... 34 Application Register Set ................................................................................ 37 Segment Register Selection Rules................................................................ 39 EFLAGS Register .......................................................................................... 40 System Register Set...................................................................................... 41 Control Registers Map................................................................................... 42 CR3, CR2, and CR0 Bit Definitions ............................................................... 42 Effects of Various Combinations of TS, EM and MP Bits .............................. 43 Application and System Segment Descriptors .............................................. 45 Gate Descriptors ........................................................................................... 45 Gate Descriptor Bit Definitions ..................................................................... 46 32-Bit Task State Segment (TSS) Table ....................................................... 46 16-Bit Task State Segment (TSS) Table ....................................................... 47 Configuration Register Map........................................................................... 48 CCR1 Bit Definitions...................................................................................... 49 CCR2 Bit Definitions...................................................................................... 51 CCR3 Bit Definitions...................................................................................... 51 SMAR Size Field ........................................................................................... 52 DIR0 Bit Definitions ....................................................................................... 52 DIR1 Bit Definitions ....................................................................................... 52 Debug Registers............................................................................................ 54 DR6 and DR7 Field Definitions ..................................................................... 55 Test Registers ............................................................................................... 56 TR7 and TR6 Bit Definitions .......................................................................... 56 TR6 Attribute Bit Pairs ................................................................................... 57 TR3-TR5 Bit Definitions................................................................................. 59 Memory Addressing Modes........................................................................... 62 Directory and Page Table Entry (DTE and PTE) Bit Definitions.................... 66 Interrupt Vector Assignments ........................................................................ 68 Interrupt and Exception Priorities .................................................................. 69 Exception Changes in Real Mode ................................................................. 70 Error Code Bit Definitions .............................................................................. 71 Requirement for Recognizing SMI# and SMINT ........................................... 72 SMM Memory Space Header ........................................................................ 75 SMM Instruction Set ...................................................................................... 76 SMM Pin Definitions ...................................................................................... 79 Descriptor Types Used for Control Transfer.................................................. 82 Status Control Register Bit Definitions .......................................................... 84 Mode Control Register Bit Definition ............................................................. 85 ZFx86 Data Book 1.0 Rev D Page 17 List of Tables Table 2.40 Table 2.41 Table 2.42 Table 2.43 Table 2.44 Table 2.45 Table 2.46 Table 2.47 Table 2.48 Table 2.49 Table 2.50 Table 2.51 Table 2.52 Table 2.53 Table 2.54 Table 2.55 Table 2.56 Table 2.57 Table 2.58 Instruction Fields ........................................................................................... 87 Instruction Prefix Summary ........................................................................... 87 w Field Encoding ........................................................................................... 88 d Field Encoding............................................................................................ 88 eee Field Encoding........................................................................................ 88 mod r/m Field Encoding ................................................................................ 89 mod r/m Field Encoding Dependent on w Field ............................................ 90 reg Field ........................................................................................................ 90 sreg3 Field Encoding..................................................................................... 90 sreg2 Field Encoding..................................................................................... 91 ss Field Encoding .......................................................................................... 91 index Field Encoding ..................................................................................... 91 mod base Field Encoding .............................................................................. 91 CPU Clock Count Abbreviations ................................................................... 93 Flag Abbreviations......................................................................................... 94 Action of Instruction on Flag .......................................................................... 94 Processor Core Instruction Set Summary ..................................................... 94 FPU Table Abbreviations ............................................................................ 107 MMX Instruction Set Summary.................................................................... 108 3. North Bridge .......................................................................................................... 113 Table 3.1 Table 3.2 Table 3.3 Table 3.4 Table 3.5 Table 3.6 Table 3.7 Table 3.8 Table 3.9 Table 3.10 Table 3.11 Table 3.12 Table 3.13 Table 3.14 Table 3.15 Table 3.16 Table 3.17 Table 3.18 Table 3.19 Table 3.20 Table 3.21 Table 3.22 Table 3.23 Table 3.24 Table 3.25 Table 3.26 SDRAM Interface Signals............................................................................ 116 PCI Sideband Signals ................................................................................ 118 Test Signals (JTAG) .................................................................................... 118 Memory Access Map ................................................................................... 119 I/O Address Map ......................................................................................... 119 North Bridge Core Burst Sequence ............................................................. 120 SDRAM Configurations ............................................................................... 123 ROM Shadow Illustration............................................................................. 126 North Bridge Registers ................................................................................ 126 CPU-PCI Cycle Conversion ........................................................................ 133 Configuration Registers ............................................................................. 137 SMM Control Register (SMMC) ................................................................. 140 Processor Control Register (PROC) .......................................................... 142 Write FIFO Control Register (WFIFOC) .................................................... 143 PCI Control Register (PCIC) ...................................................................... 145 Clock Skew Adjust Register (CSA) ............................................................ 146 BUS MASTER And Snooping Control Register (SNOOPCTRL)................. 146 Arbiter Control Register (ARBCTRL)........................................................... 148 PCI Write FIFO Control Register (PCIWFIFOC) ........................................ 148 Shadow RAM Read Enable Control Register (SHADRC) ......................... 149 Shadow RAM Write Enable Control Register ............................................. 150 Bank 0 Control Register (N_B0C) .............................................................. 151 Bank 0 Timing Control Register (N_B0TC) ............................................... 152 Bank 1 Control Register (N_B1C) ............................................................. 152 Bank 1 Timing Control Register (N_B1TC) ............................................... 153 Bank 2 Control Register (N_B2C) .............................................................. 153 ZFx86 Data Book 1.0 Rev D Page 18 List of Tables Table 3.27 Table 3.28 Table 3.29 Table 3.30 Table 3.31 Table 3.32 Table 3.33 Table 3.34 Table 3.35 Table 3.36 Table 3.37 Table 3.38 Table 3.39 Table 3.40 Table 3.41 Table 3.42 Table 3.43 Table 3.44 Bank 2 Timing Control Register (N_B2TC) ............................................... 154 Bank 3 Control Register (N_B3C) .............................................................. 155 Bank 3 Timing Control Register (N_B3TC) ............................................... 155 DRAM Configuration Register 1 (DCONF1) .............................................. 156 DRAM Configuration Register 2 (DCONF2) ............................................... 157 DRAM Refresh Control Register (DRFSHC) .............................................. 158 SDRAM Mode Program Register (SDRAMMPR) ....................................... 158 SDRAM Mode Program Register (SDRAMMPREX) .................................. 159 SDRAM Slew Control Register (SDRAMSLEW) ...................................... 159 Clock Control Register (CC) ....................................................................... 160 Clock Control2 Register (CC2) ................................................................... 161 CPU-SYNC Register (CPUSYNC) ............................................................. 162 Vendor ID Register (VID) ........................................................................... 162 Device ID Register (DID) ............................................................................ 162 Command Register (COMMD) ................................................................... 162 Status Register (STAT) .............................................................................. 163 Revision ID Register (RID) ......................................................................... 163 Class Register (CLASS) ............................................................................. 163 4. South Bridge ......................................................................................................... 165 Table 4.1 Table 4.2 Table 4.3 Table 4.4 Table 4.5 Table 4.6 Table 4.7 Table 4.8 Table 4.9 Table 4.10 Table 4.11 Table 4.12 Table 4.13 Table 4.14 Table 4.15 Table 4.16 Table 4.17 Table 4.18 Table 4.19 Table 4.20 Table 4.21 Table 4.22 Table 4.23 Table 4.24 Table 4.25 Table 4.26 Table 4.27 Logical Devices ........................................................................................... 169 System Interface Signals............................................................................. 173 Clock and Crystal Interface Signals ............................................................ 173 CPU Interface Signals ............................................................................... 174 Back-Side PCI Bus Interface Signals .......................................................... 175 IDE Interface Signals................................................................................... 180 USB Interface Signals ................................................................................. 182 GPIO Interface Signals................................................................................ 182 Full ISA Interface......................................................................................... 183 Access Bus.................................................................................................. 189 Clock ........................................................................................................... 189 Floppy Disk Controller ................................................................................. 189 Keyboard and Mouse Controller (KBC) ....................................................... 190 Parallel Port ................................................................................................. 192 Power and Ground ...................................................................................... 193 Serial Port 1 and Serial Port 2 (Shared with I/R Port) ................................. 194 Infrared Communication Port (Shared W/COM2)........................................ 195 PCI Configuration Address Register (0CF8h) ............................................ 196 F0: PCI Header/Bridge and GPIO Configuration Register Summary ......... 197 F0BAR0: GPIO Support Registers Summary ............................................. 199 F1: PCI Header Registers for SMI Status Summary .................................. 200 F1BAR0: SMI Status Registers Summary................................................... 200 F2: PCI Header Registers for IDE Controller Support Summary ................ 201 IDE Controller Configuration Summary ....................................................... 202 F3: PCI Header Registers for XBus Expansion Summary ......................... 202 F3BAR0: XBus Expansion Registers Summary ......................................... 203 PCIUSB: USB Controller Register Summary ............................................ 203 ZFx86 Data Book 1.0 Rev D Page 19 List of Tables Table 4.28 Table 4.29 Table 4.30 Table 4.31 Table 4.32 Table 4.33 Table 4.34 Table 4.35 Table 4.36 Table 4.37 Table 4.38 Table 4.39 Table 4.40 Table 4.41 Table 4.42 Table 4.43 Table 4.44 Table 4.45 Table 4.46 Table 4.47 Table 4.48 Table 4.49 Table 4.50 Table 4.51 Table 4.52 Table 4.53 Table 4.54 Table 4.55 Table 4.56 Table 4.57 Table 4.58 Table 4.59 Table 4.60 Table 4.61 Table 4.62 Table 4.63 Table 4.64 Table 4.65 Table 4.66 Table 4.67 Table 4.68 Table 4.69 Table 4.70 Table 4.71 Table 4.72 Table 4.73 Table 4.74 ZF-Logic Register Summary ...................................................................... 204 Legacy I/O Register Summary .................................................................. 204 F0 Index xxh: PCI Header and Bridge Configuration Registers ................ 207 F0BAR0+I/O Offset xxh: GPIO Runtime and Configuration Registers ...... 230 F1 Index xxh: PCI Header Registers for SMI Status ................................... 232 F1BAR0+I/O Offset xxh: SMI Status Registers ........................................... 233 F2 Index xxh: PCI Header/Channels 0 & 1 Registers for IDE Controller Config ................................................................................. 236 F2BAR4+I/O Offset xxh: IDE Controller Configuration Registers................ 239 F3 Index xxh: PCI Header Registers for XBus Expansion .......................... 241 F3BAR0+I/O Offset xxh: XBus Expansion Registers .................................. 244 PCIUSB: USB Controller Registers ............................................................. 246 DMA Channel Control Registers ................................................................. 248 DMA Page Registers .................................................................................. 252 Programmable Interval Timer Registers ..................................................... 253 Programmable Interrupt Controller Registers ............................................. 254 Keyboard Controller Registers .................................................................. 256 Real-Time Clock Registers.......................................................................... 257 Miscellaneous Registers ............................................................................ 257 ACCESS.bus Interface (ACB) ..................................................................... 261 SuperI/O Configuration Options .................................................................. 263 Logical Device Number (LDN) Assignments ............................................... 264 Standard Control Registers ......................................................................... 265 Logical Device Activate Register ................................................................. 265 I/O Space Configuration Registers .............................................................. 265 Interrupt Configuration Registers ................................................................ 266 DMA Configuration Registers ...................................................................... 266 Special Logical Device Configuration Registers.......................................... 266 Register Type Abbreviations ...................................................................... 269 SuperI/O Configuration Registers .............................................................. 269 SuperI/O ID Register (SID) - Index 20H ..................................................... 270 SuperI/O Configuration 1 Register (SIOCF1) - Index 21H ......................... 270 SuperI/O Configuration 2 Register (SIOCF2) - Index 22H ......................... 271 SuperI/O Revision ID Register (SRID) - Index 27H .................................... 271 FDC Registers ............................................................................................. 272 Logical Device 0 (FDC) Configuration ........................................................ 273 FDC Configuration Register - Index F0H ................................................... 273 Drive ID Register - Index F1H .................................................................... 274 Parallel Port Configuration Registers .......................................................... 275 Parallel Port Configuration Register - F0H .................................................. 275 Banks 0 and 1 - The Common Control and Status Register Map .............. 279 Bank 0 - PS/2 KBD/MOUSE Wake-Up Config/Control Register Map ........ 279 Bank 1 - CEIR Wake-Up Config/Control Register Map .............................. 279 Wake-Up Events Status Register (WKSR) - 00H ....................................... 280 Wake-Up Events Control Register (WKCR) - 01H ..................................... 281 Wake-Up Configuration Register (WKCFG) - 02H ..................................... 282 PS/2 Protocol Control Register (PS2CTL) (Bank 0 Offset 03H).................. 283 Keyboard Data Shift Register (KDSR) - Bank 0 Offset 06H ........................ 284 ZFx86 Data Book 1.0 Rev D Page 20 List of Tables Table 4.75 Table 4.76 Table 4.77 Table 4.78 Table 4.79 Table 4.80 Table 4.81 Table 4.82 Table 4.83 Table 4.84 Table 4.85 Table 4.86 Table 4.87 Table 4.88 Table 4.89 Table 4.90 Table 4.91 Table 4.92 Table 4.93 Table 4.94 Table 4.95 Table 4.96 Table 4.97 Table 4.98 Table 4.99 Table 4.100 Table 4.101 Table 4.102 Table 4.103 Table 4.104 Table 4.105 Table 4.106 Table 4.107 Table 4.108 Table 4.109 Table 4.110 Table 4.111 Table 4.112 Table 4.113 Table 4.114 Table 4.115 Table 4.116 Table 4.117 Table 4.118 Table 4.119 Table 4.120 Table 4.121 Mouse Data Shift Register (MDSR) 07H ..................................................... 284 PS/2 Keyboard Key Data Registers (PS2KEY0 - PS2KEY7) ..................... 285 CEIR Wake-Up Control Register (IRWCR) - Bank 1 Offset 3 .................... 285 CEIR Wake-Up Address Register (IRWAD) - Bank 1 Offset 05H .............. 286 CEIR Wake-Up Address Mask Register (IRWAM) - Bank 1 Offset 6 ......... 286 CEIR Address Shift Register (ADSR) - Bank 1 Offset 7 ............................. 286 CEIR Wake-Up Range 0 Registers - IRWTR0L– Bank 1 Offset 8 ............. 287 CEIR Wake-Up Range 0 Registers - IRWTR0H – Bank 1 Offset 9 ............ 287 CEIR Wake-Up Range 1 Registers - IRWTR1L – Bank 1 Offset 0AH ....... 287 CEIR Wake-Up Range 1 Registers - IRWTR1H – Bank 1 Offset 0BH ....... 288 CEIR Wake-Up Range 2 Registers - IRWTR2L – Bank 1 0CH) ................. 289 CEIR Wake-Up Range 2 Registers - IRWTR2H – Bank 1 0DH .................. 289 CEIR Wake-Up Range 3 Registers - IRWTR3L – Bank 1 OEH ................. 289 CEIR Wake-Up Range 3 Registers - IRWTR3H – Bank 1 OFH ................. 290 Time Range Limits for CEIR Protocols ....................................................... 290 Banks 0 and 1 - The Common Three-Register Map .................................. 291 Bank 0 - PS/2 Keyboard/Mouse Wake-Up Config/Ctrl Registers ............... 291 CEIR Wake-Up Configuration and Control Registers ................................. 291 Serial Ports 1 and 2 Configuration Registers .............................................. 292 Serial Ports 1 and 2 Configuration Register - F0H ...................................... 293 System Wake-Up Control (SWC) Configuration.......................................... 294 Mouse Configuration Registers ................................................................... 295 Keyboard Configuration Registers .............................................................. 296 iKBC Configuration Register - F0H ............................................................. 296 Infrared Communication Port Configuration Registers ................................ 297 Infrared Communication Port Configuration Register - F0H........................ 297 ACB Runtime Registers .............................................................................. 298 Access Bus Interface (ACB) Configuration ................................................. 299 ACB Configuration Register – F0H ............................................................. 299 Logical Device A (RTC) Configuration ........................................................ 300 RAM Lock Register (RLR) - F0H ................................................................. 300 Date Of Month Alarm Register Offset (DOMAO) – F1H .............................. 301 Month Alarm Register Offset (MAO) – F2H................................................. 301 Century Register Offset (CENO0) – F3H .................................................... 302 RTC Configuration Register Map ................................................................ 307 RAM Lock Register (RLR) ........................................................................... 307 Date Of Month Alarm Register Offset (DOMAO)......................................... 308 Month Alarm Register Offset (DOMAO) ...................................................... 308 Century Register Offset (CENO) ................................................................. 309 RTC Configuration Register Bitmap ............................................................ 309 RTC Register Map....................................................................................... 310 Seconds Register (SEC)) – Index 00H ....................................................... 310 Seconds Alarm Register (SECA)) – 01H..................................................... 311 Minutes Register (MIN)) – 02H ................................................................... 311 Minutes Alarm Register (MINA) – 03H ....................................................... 311 Hours Register (HOR) – 04H ..................................................................... 312 Hours Alarm Register (HORA) – 05H ......................................................... 312 ZFx86 Data Book 1.0 Rev D Page 21 List of Tables Table 4.122 Table 4.123 Table 4.124 Table 4.125 Table 4.126 Table 4.127 Table 4.128 Table 4.129 Table 4.130 Table 4.131 Table 4.132 Table 4.133 Table 4.134 Table 4.135 Table 4.136 Table 4.137 Table 4.138 Table 4.139 Table 4.140 Table 4.141 Table 4.142 Table 4.143 Table 4.144 Table 4.145 Table 4.146 Table 4.147 Table 4.148 Table 4.149 Table 4.150 Table 4.151 Table 4.152 Table 4.153 Table 4.154 Table 4.155 Table 4.156 Table 4.157 Table 4.158 Table 4.159 Table 4.160 Table 4.161 Table 4.162 Table 4.163 Table 4.164 Table 4.165 Table 4.166 Table 4.167 Table 4.168 Day Of Week Register (DOW) – 06H ......................................................... 312 Date Of Month Register (DOM) – 07H ....................................................... 313 Month Register (MON) - 08H ..................................................................... 313 Year Register (YER) - 09H ......................................................................... 313 RTC Control Register A (CRA) – 0AH ........................................................ 314 Divider Chain Control and Test Selection .................................................. 314 Periodic Interrupt Rate Encoding ............................................................... 315 RTC Control Register B (CRB) - 0BH ........................................................ 316 RTC Control Register C (CRC) - 0CH ........................................................ 318 RTC Control Register D (CRD) - 0DH ........................................................ 319 Date of Month Alarm Register (DOMA) ...................................................... 319 Month Alarm Register (MONA) .................................................................. 319 Century Register (CEN) ............................................................................. 320 BCD and Binary Formats ........................................................................... 320 RTC Register Bitmap ................................................................................ 321 Standard RAM Map .................................................................................... 321 Extended RAM Map ................................................................................... 321 ACB Register Map....................................................................................... 329 ACB Serial Data Register (ACBSDA) - 00H ................................................ 329 ACB Status Register (ACBST) - 01H .......................................................... 330 ACB Control Status Register (ACBCST) - 02H ........................................... 331 ACB Control Register 1 (ACBCTL1) - 03H.................................................. 332 ACB Own Address Register (ACBADDR) - 04H ......................................... 333 ACB Control Register 2 (ACBCTL2) - 05H.................................................. 334 ACB Register Bitmap .................................................................................. 334 KBC Register Map....................................................................................... 335 KBC Bitmap Summary ................................................................................ 335 FDC Register Map....................................................................................... 336 FDC Bitmap Summary ................................................................................ 337 Parallel Port Register Map for First Level Offset ......................................... 338 Parallel Port Register Map for Second Level Offset .................................... 338 Parallel Port Bitmap Summary for First Level Offset ................................... 339 Parallel Port Bitmap Summary for Second Level Offset.............................. 340 Bank 0 Register Map ................................................................................... 341 Bank Selection Encoding ............................................................................ 342 Bank 1 Register Map ................................................................................... 342 Bank 2 Register Map ................................................................................... 342 Bank 3 Register Map ................................................................................... 342 Bank 0 Bitmap ............................................................................................. 343 Bank 1 Bitmap ............................................................................................. 344 Bank 2 Bitmap ............................................................................................. 344 Bank 3 Bitmap ............................................................................................. 344 Register Bank Summary ............................................................................ 355 Bank 0 Register Map ................................................................................... 356 Interrupt Enable Register (IER, Non-Extended Mode) ................................ 358 Non-Extended Mode Interrupt Priorities ...................................................... 360 Bit Settings for Parity Control ...................................................................... 364 ZFx86 Data Book 1.0 Rev D Page 22 List of Tables Table 4.169 Table 4.170 Table 4.171 Table 4.172 Table 4.173 Table 4.174 Table 4.175 Table 4.176 Table 4.177 Table 4.178 Table 4.179 Table 4.180 Table 4.181 Table 4.182 Table 4.183 Table 4.184 Table 4.185 Table 4.186 Table 4.187 Table 4.188 Table 4.189 Table 4.190 Table 4.191 Table 4.192 Table 4.193 Table 4.194 Table 4.195 Table 4.196 Bank Selection Encoding ............................................................................ 365 Bank 0 Bitmap ............................................................................................. 372 Bank 1 Register Map ................................................................................... 373 Bits Cleared on Fallback ............................................................................. 374 Baud Generator Divisor Settings ................................................................. 374 Bank 1 Bitmap ............................................................................................. 375 Bank 2 Register Map ................................................................................... 375 DMA Threshold Levels ................................................................................ 377 Bank 2 Bitmap ............................................................................................. 380 Bank 3 Register Map ................................................................................... 380 Bank 3 Bitmap ............................................................................................. 381 Bank 4 Register Map ................................................................................... 382 Bank 4 Bitmap ............................................................................................. 384 Bank 5 Register Map ................................................................................... 385 Bank 5 Bitmap ............................................................................................. 388 Bank 6 Register Map ................................................................................... 388 IMIR Pulse Width Settings........................................................................... 390 MIR Beginning Flags ................................................................................... 392 FIR Preamble Length .................................................................................. 392 Bank 6 Bitmap ............................................................................................. 392 Bank 7 Register Map ................................................................................... 393 CEIR, Low Speed Demodulator (RXHSC = 0) ............................................ 394 Consumer IR High Speed Demodulator (RXHSC = 1)................................ 395 Sharp-IR Demodulator ................................................................................ 395 Carrier Clock Pulse Width Options (Frequency Ranges in KHz)................. 396 CEIR Carrier Frequency Encoding (Frequency Ranges in KHz)................. 396 Infrared Receiver Input Selection ................................................................ 400 Bank 7 Bitmap ............................................................................................. 401 5. ZF-Logic and Clocking ......................................................................................... 403 Table 5.1 Table 5.2 Table 5.3 Table 5.4 Table 5.5 Table 5.6 Table 5.7 Table 5.8 Table 5.9 Table 5.10 Table 5.11 Table 5.12 Table 5.13 Table 5.14 Table 5.15 Table 5.16 Table 5.17 Table 5.18 Access to ZFL ............................................................................................. 404 ZF-Logic Complete Index ............................................................................ 406 ZF-Logic Pin List ......................................................................................... 409 Memory Mapper Pins .................................................................................. 410 Indices For Memory Windows ..................................................................... 411 Memory Window “N” Base Low - Bits 15:12 (nibble 3)................................ 411 Memory Window “N” Base High - Bits 23:16 (nibbles 5-4) .......................... 412 Memory Window “N” Size Low - (nibble 3) .................................................. 412 Memory Window “N” Size High - (nibbles 5-4) ............................................ 412 Memory Window “N' Page Low - (nibble 3) ................................................. 412 Memory Window “N” Page High - (nibbles 5-4)........................................... 412 Memory Control Low -- Index 5AH .............................................................. 413 Memory Control High -- Index 5BH ............................................................. 413 I/O and Memory Window Mapper Events -- Index 66H ............................... 414 GPCS Pins .................................................................................................. 422 ZF-Logic Indices For I/O Windows .............................................................. 423 ZF-Logic Index for I/O Windows .................................................................. 423 I/O Window “N” Base Low Format............................................................... 423 ZFx86 Data Book 1.0 Rev D Page 23 List of Tables Table 5.19 Table 5.20 Table 5.21 Table 5.22 Table 5.23 Table 5.24 Table 5.25 Table 5.26 Table 5.27 Table 5.28 Table 5.29 Table 5.30 Table 5.31 Table 5.32 Table 5.33 Table 5.34 Table 5.35 Table 5.36 Table 5.37 Table 5.38 Table 5.39 Table 5.40 Table 5.41 Table 5.42 Table 5.43 Table 5.44 Table 5.45 Table 5.46 Table 5.47 Table 5.48 Table 5.49 Table 5.50 Table 5.51 Table 5.52 I/O Window “N” Base High Format .............................................................. 424 ZF-Logic Index for the Watchdog Timers .................................................... 426 Watchdog 1 Count Low Byte -- Index 0CH ................................................. 426 Watchdog 1 Count High Byte -- Index 0DH................................................. 426 Watchdog Generated Reset Pulse Length -- Index 0FH ............................. 427 Watchdog Control Low -- Index 10H ........................................................... 427 Watchdog Control High -- Index 11H .......................................................... 428 Watchdog Status -- Index 12H .................................................................... 429 ZF-Logic Index for the PWM Generator ...................................................... 430 PWM Prescaler Low Byte - Index 04H ........................................................ 431 PWM Prescaler High Byte - Index 05h ........................................................ 431 PWM duty cycle - Index 06h........................................................................ 431 PWM I/O Control -- Index 08H .................................................................... 432 PWM Read Output -- Index 0AH ................................................................. 432 ZF-Logic Index for the Z-tag ........................................................................ 434 Z-tag Data Write Register -- Index 5EH ...................................................... 435 Z-tag Data Read Register -- Index 60H..................................................... 435 Z-tag Control Register -- Index 7CH............................................................ 436 Z-tag Sequencer Divisor -- Index 7DH ........................................................ 436 Z-tag Sequencer Waveform -- Index 7EH ................................................... 436 Z-tag Sequencer Strobe Points -- Index 7FH .............................................. 437 Z-tag Sequencer Data -- Index 80H ............................................................ 437 ZF-Logic Index for the Boot Parameters Register ....................................... 438 Composite BootStrap Register Map ............................................................ 438 Sample DIP Switch Settings........................................................................ 441 ZF-Logic Index for the Scratch Register...................................................... 444 Indices for Scratch Registers ...................................................................... 444 Scratch Register “N” High or Low................................................................ 445 ZF-Logic Index for BUR Base ..................................................................... 445 BUR Base Bits 15-12 .................................................................................. 445 BUR Base Bits 23-16 .................................................................................. 446 System Clocking.......................................................................................... 447 Formal Clock Names and Clocking Modes ................................................. 448 CORE frequencies (MHz)............................................................................ 451 6. Z-tag, BUR, and The ZFiX Console ...................................................................... 455 Table 6.1 Table 6.2 Table 6.3 Table 6.4 Table 6.5 Table 6.6 Table 6.7 Table 6.8 Memory Dongle Jumper Settings ................................................................ 458 Z-tag and ZFiX Summary ............................................................................ 459 Pins for the FLOPPY / Z-tag Logic .............................................................. 460 Z-tag Data Lines .......................................................................................... 461 Z-Logic Index for the Z-tag .......................................................................... 461 Z-tag Control Register -- Index 7CH............................................................ 462 ZFix Console Commands ............................................................................ 463 On-Chip RAM Assignment in BUR .............................................................. 470 7. Electrical Specifications ....................................................................................... 481 Table 7.1 Table 7.2 Absolute Maximum Ratings......................................................................... 481 Recommended Operating Conditions ......................................................... 482 ZFx86 Data Book 1.0 Rev D Page 24 List of Tables Table 7.3 Table 7.4 Table 7.5 Table 7.6 Table 7.7 Table 7.8 Table 7.9 Table 7.10 Table 7.11 Table 7.12 Table 7.13 Table 7.14 Table 7.15 Table 7.16 Table 7.17 Table 7.18 Table 7.19 Table 7.20 Table 7.21 Table 7.22 Table 7.23 Table 7.24 Table 7.25 Table 7.26 Table 7.27 Table 7.28 Table 7.29 Table 7.30 Table 7.31 Table 7.32 Table 7.33 Table 7.34 Table 7.35 Table 7.36 Table 7.37 Table 7.38 Table 7.39 Table 7.40 Table 7.41 Table 7.42 Table 7.43 Table 7.44 Table 7.45 Table 7.46 Table 7.47 Table 7.48 Current Consumption .................................................................................. 482 Pin Capacitance and Inductance................................................................. 482 I/O Cell Characteristics................................................................................ 483 Input, MPCi.................................................................................................. 484 Input, Generic2............................................................................................ 484 Input, MUSB ................................................................................................ 485 Input, MIDE ................................................................................................. 485 Input, M-FDCP ............................................................................................ 485 Input, MMC-D .............................................................................................. 485 Input, MWUSB............................................................................................. 486 Input, MAC97 .............................................................................................. 486 Output, PCI TRI-STATE Buffer ................................................................... 487 Output, GENERIC 2 .................................................................................... 487 Output, MIDE............................................................................................... 487 Output, MUSB ............................................................................................. 487 Output, M-FDC_PP ..................................................................................... 487 Output, MMC_D .......................................................................................... 488 Output, MWUSB .......................................................................................... 488 Output, MAC97............................................................................................ 488 Default Levels for Measurement of Switching Parameters ......................... 489 sysclk_c Clock Parameters ......................................................................... 489 SDRAM Interface Signals............................................................................ 493 ACCESS.bus Interface ................................................................................ 494 PCI Bus - AC Specifications ........................................................................ 495 PCI Clock Parameters ................................................................................. 497 PCI Bus Timing Parameters ........................................................................ 498 Measurement Condition Parameters........................................................... 499 ISA Output Signals ...................................................................................... 501 General Timing of the IDE Interface ............................................................ 504 IDE Register Transfer To/From Device ....................................................... 505 IDE PIO Data Transfer To/From Device...................................................... 507 IDE Multiword DMA Data Transfer .............................................................. 509 Ultra DMA Data Burst Timing Requirements............................................... 511 Universal Serial Bus (USB) ......................................................................... 523 UART, Sharp-IR, SIR, and Consumer Remote Control Parameters ........... 527 Fast IR Port Timing Parameters .................................................................. 528 JTAG Timing ............................................................................................... 529 GPIO Timing................................................................................................ 530 Floppy Disk Reset Timing ........................................................................... 531 Floppy Disk Write Data Timing .................................................................... 531 Write Data Timing – Minimum tWDW Values.............................................. 531 Drive Control Timing.................................................................................... 532 Read Data Timing ....................................................................................... 533 KBC Signals Rising and Falling................................................................... 533 Standard Parallel Port Timing ..................................................................... 534 Enhanced Parallel Port 1.7 Timing Parameters .......................................... 535 ZFx86 Data Book 1.0 Rev D Page 25 List of Tables Table 7.49 Table 7.50 Table 7.51 Table 7.52 Enhanced Parallel Port 1.9 Timing Parameters .......................................... 536 Extended Capabilities Port (ECP) Timing – Forward .................................. 538 Extended Capabilities Port (ECP) Timing – Backward................................ 539 ZF-Logic Signals ......................................................................................... 540 8. Pinout Summary ................................................................................................... 541 Table 8.1 Table 8.2 Table 8.3 Table 8.4 Pin Utilization............................................................................................... 541 Pin Descriptions Sorted by Pin .................................................................... 545 Pin Descriptions Sorted by Pin Name ......................................................... 558 Pin Descriptions Sorted by Pin Description ................................................. 572 9. BUR API ................................................................................................................. 587 10. Signal Status After POST ................................................................................... 597 Table 10.1 Table 10.2 Table 10.3 Table 10.4 Table 10.5 Table 10.6 Table 10.7 Table 10.8 Table 10.9 Table 10.10 Access Bus Settings.................................................................................... 597 Floppy Disk (FDD) Settings ......................................................................... 597 Floppy Disk (Z-tag) Settings ........................................................................ 598 GPIO Settings ............................................................................................. 599 ISA Pin Settings .......................................................................................... 599 PS/2 Pin Settings ........................................................................................ 599 PCI Settings ................................................................................................ 600 LPT Settings ................................................................................................ 600 IR Control Settings ...................................................................................... 601 ZF Logic Settings ........................................................................................ 601 11. Phoenix BIOS Register Settings ........................................................................ 603 Table 12.1 Table 12.2 Table 12.3 Table 12.4 Table 12.5 Table 12.6 Table 12.7 Table 12.8 Table 12.9 Table 12.10 Table 12.11 Table 12.12 Table 12.13 Table 12.14 Table 12.15 Table 12.16 Table 12.17 Table 12.18 Table 12.19 Table 12.20 Table 12.21 Table 12.22 Reset, Sampling, and Misc North Bridge Registers .................................... 603 DRAM Registers.......................................................................................... 615 Power Management Registers .................................................................... 623 PCI Configuration Registers ........................................................................ 624 Floppy Disk Controller Registers ................................................................. 626 Floppy Disk Controller Bitmap Summary .................................................... 627 Parallel Port Registers................................................................................. 629 Serial Port 1 Registers ................................................................................ 630 Serial Port 2 Registers ................................................................................ 632 PS/2 Mouse/Keyboard Registers ............................................................... 633 Infrared Communication Port Configuration Registers ............................... 635 Access Bus Registers ................................................................................. 636 Pin Multiplexor Registers............................................................................. 637 GPIO0 Registers ......................................................................................... 640 GPIO1 Registers ......................................................................................... 641 GPIO2 Registers ......................................................................................... 642 GPIO3 Registers ......................................................................................... 643 GPIO4 Registers ......................................................................................... 644 GPIO5 Registers ......................................................................................... 645 GPIO6 Registers ......................................................................................... 646 GPIO7 Registers ......................................................................................... 647 ZF–Logic Registers ..................................................................................... 648 ZFx86 Data Book 1.0 Rev D Page 26 List of Tables Index .......................................................................................................................... 653 ZFx86 Data Book 1.0 Rev D Page 27 List of Tables ZFx86 Data Book 1.0 Rev D Page 28 1 1. Overview The “ZFx86” System-On-a-Chip (SOC) is a complete processor and peripheral subsystem requiring only external clocks, SDRAM, and BIOS ROM/Flash. It is illustrated in ZFx86 Fail-Safe PC-on-a-Chip Block Diagram and consists of the following major blocks: 1) Industry standard 32 bit processor core with integrated floating point co-processor and 8K byte write-back level 1 cache. The clock multiplier design allows the core to run at a multiple of the system bus. For example, a 3x multiplier delivers a system running at 100 MHz with a 33 MHz PCI bus. 4) 12K Bytes of ROM with ZF proprietary code. This Boot Up ROM (BUR) is used in a special mode which allows a flash based BIOS to be updated without removal of any system components or peripherals. See ‘BUR (Boot Up ROM) ’ on page 462. 5) ZF proprietary digital logic including specific and general purpose chip selects, watchdog timer, and flash controller. See ‘ZF-Logic and Clocking ’ on page 403. The above functions are packaged in a 35 MM. 388 pin Ball Grid Array (BGA). See ‘Pinout Summary ’ on page 541. 2) A North Bridge (system controller) with “Frontside” PCI Master / Slave Arbitration interface and SDRAM interface. See ‘North Bridge ’ on page 113. 3) A custom South Bridge with “Frontside” PCI interface to the North Bridge and “Backside” PCI Master/Slave system interface, enhanced IDE controller supporting four devices on two channels, USB controller with two hub ports, real time clock (RTC), floppy disk controller, serial ports, access bus, 8042 compatible keyboard and mouse controller, parallel port, general purpose programmable I/O’s and counters, PC/AT system components, and power management. The PC/AT system components include 8237 compatible DMA controllers, two 8259 compatible interrupt controllers, 8254 compatible system timer, and ISA bus interface. See ‘South Bridge ’ on page 165. ZFx86 Data Book 1.0 Rev D Page 29 1 Figure 1-1 ZFx86 Fail-Safe PC-on-a-Chip Block Diagram • • • • Processor: 486+ CPU at 100 MHz North Bridge: DRAM Controller and FrontSide 32 MHz PCI Bus South Bridge: Generates BackSide PCI and ISA Buses. USB + Extended IDE Device Interface: on the FrontSide PCI Bus • • SuperIO: Industry Standard X86 I/O + I2C ZF-Logic: ISA Additions for Embedded Systems, Low BOM cost, and FailSafe ZFx86 Data Book 1.0 Rev D Page 30 2 2. 32-bit x86 Processor 2.1. Overview The Processor is an industry standard 32-bit x86 compatible microprocessor. Configure the 8 KB cache to run in traditional write-through mode or in the higher performance write-back mode. Write-back mode eliminates unnecessary external memory write cycles offering higher overall performance than write-through mode. The processor supports 8-, 16- and 32-bit data types and operates in real, virtual 8086 and protected modes. The CPU accesses up to 256 MB of physical memory using a 32-bit burst mode bus. Floating point instructions are parallel processed using an on-chip math coprocessor. The processor is an ideal design solution for low-powered applications. Due to its static design, it features a low current drain while the input clock is stopped in suspend mode. SMM (System Management Mode) allows the implementation of transparent system power management or the software emulation of I/O peripheral devices. SUSP# 16-Byte Instruction Queue Instruction r Decoder Control Core Clock Immediate Prefetch Data Bus 32 Bus Clock SMM, Suspend Mode and Clock Control ROM Address SUSPA# CLK SMI# SMADS# Microcode ROM Sequencer Control Execution Pipeline Memory Data Bus Execution Unit Branch Control Limit Unit 8 Write Immediate Multiplier Line 3-Input Adder Unit Shift Unit Register File Buffers Byte MUXES & I/O Regs D31-D0 Data Buffers 32 Linear Address Bus FPU Cache and Memory Management Memory Management Unit Prefetch Unit 8 KB Instr/Data Cache Bus Control Control Control Instruction Address Bus Data Address Bus Address Buffers AD31-AD2 BE3#-BE0# 32-bit x86-Compatible Bus Interface Figure 2-1 Processor Block Diagram ZFx86 Data Book 1.0 Rev D Page 31 2 2.1.1. Internal Clock Logic The processor operates in 4 clock rate modes and 3 clock operation modes. These modes are controlled by 4 signals, CLKMODE0, CLKMODE1, PLLMODE and RAWCLK. Additionally 3 signals, CLKDEL[2:0] control the duty cycle of the internal clock signal. As you look at the clock modes, please also reference Table 5.42 "Composite BootStrap Register Map" on page 438, and Figure 5-9 "System Clocking and Control" on page 443. 2.1.1.1. Clock Rate Modes The internal clock rate can be 1, 2, 3 or 4 times the input clock rate as controlled by the CLKMODE[1:0] signals. RATE 1X 2X 3X 4X CLKMODE[1:0] 00b 01b 11b 10b 2.1.1.2. Clock Operation Modes The source of the internal clock is determined by the PLLMODE and RAWCLK signals. Three modes of operation are supported, PLL Mode, Delay Mode and Raw Clock Mode. Mode PLLMODE PLL Mode 1 Delay Mode 0 Rawclock Mode 0 NOT SUPPORTED 1 RAWCLK 1 1 0 0 PLL Mode (DLL Mode) In PLL Mode the source of the internal clock is from the Digital Locked Loop. Clock modes 1x, 2x, 3x and 4x are supported. The duty cycle of the internal clock is determined by the state of the CLKDEL[2:0] signals. Delay Mode In Delay Mode the source of the internal clock is from the Clock Delay circuitry. Modes 1x, ZFx86 Data Book 1.0 Rev D 2x, 3x and 4x are supported. The duty cycle and frequency of the internal clock is determined by the state of the CLKDEL[2:0] signals. The exact operation of this mode is beyond the scope of this document. Raw Clock Mode Raw Clock Mode is normally used for test purposes only. In Raw Clock Mode the source of the internal clock is from the CLK port. Only clock rate mode 1x is supported in this mode. Clock Delay Signals The CLKDEL[2:0] signals effect the duty cycle of the internal clock. The exact effect is beyond the scope of this document. The setting of these signals is determined during early production testing experimentally. The setting which results in the best performance over voltage, temperature and frequency is normally used as a bond out option in the final package. 2.1.2. On-Chip Write-Back Cache The processor on-chip cache can be configured to run in traditional write-through mode or in a higher performance write-back mode. The write-back cache mode was specifically designed to optimize performance of the CPU core by eliminating bus bottlenecks caused by unnecessary external write cycles. This writeback architecture is especially effective in improving performance of the clock-tripled processor. Traditional write-through cache architectures require that all writes to the cache also update external memory simultaneously. These unnecessary write cycles create bottlenecks which result in CPU stalls that adversely impact performance. In contrast, a write-back architecture allows data to be written to the cache without updating external memory. With a write-back cache, external write cycles are only required when a cache miss occurs, a modified line is replaced in the cache, or when an external bus master requires access to data. Page 32 2 The processor cache is an 8 KB unified instruction. Data cache is implemented using a four-way set associative architecture and an LRU (Least Recently Used) replacement algorithm. The cache is designed for optimum performance in write-back mode; however, the cache can be operated in write-through mode. The cache line size is 16 bytes and new lines are only allocated during memory read cycles. Valid status is maintained on a 16-byte cache line basis, but modified or “dirty” status for write-back mode is maintained on a 4-byte DWORD (Double Word) basis. Therefore, only the DWORDs that have been modified are written back to external memory when a line is replaced in the cache. The CPU core can access the cache in a single internal clock cycle for both reads and writes. 2.1.3. System Management Mode System Management Mode (SMM) provides an additional interrupt and a separate address space that can be used for system power management or software transparent emulation of I/O peripherals. SMM is entered using the SMI# (System Management Interrupt) or SMINT instruction. While running in isolated SMM address space, the SMI interrupt routine can execute without interfering with the operating system or application programs. After entering SMM, portions of the CPU state are automatically saved. Program execution begins at the base of SMM address space. The location and size of the SMM memory are programmable within the processor. Eight SMM instructions have been added to the processor instruction set that permit software entry into SMM, as well as saving and restoring the total CPU state when in SMM mode. consumption is far less than full operation current. Suspend mode is entered by either a hardware or a software initiated action. Using the hardware method to initiate suspend mode involves a two-signal handshake between the SUSP# and SUSPA# signals. The software can initiate suspend mode through the execution of the HALT instruction. Once in suspend mode, power consumption is further reduced by stopping the external clock input. Since the processor is static, no internal data is lost when the clock is stopped. 2.1.5. Signal Summary The processor interface signal set includes five cache interface signals, two coprocessor interface signals, two power management signals, and two system management mode signals. 2.2. Programming Interface In this chapter the internal operations of the Processor are described from an application programmer’s point of view. Included in this chapter are descriptions of processor initialization, the register set, memory addressing, various types of interrupts and the shutdown and halt process. An overview is provided of real, virtual 8086 and protected operating modes. FPU operations are described separately at the end of this chapter. 2.1.4. Power Management The processor power management features allow for a dramatic improvement in battery life over systems designed with non-static processors. During suspend mode the typical current ZFx86 Data Book 1.0 Rev D Page 33 2 2.2.1. Processor Initialization The processor is initialized when the RESET# signal is asserted. The processor is placed in real mode and the registers listed in Table 2.1 are set to their initialized values. RESET invalidates and disables the processor cache, and turns off paging. When RESET# is asserted the processor terminates all local bus activity and all internal execution. During the entire time that RESET# is asserted the internal pipeline is flushed, and no instruction execution or bus activity occurs. Approximately 150 to 250 external clock cycles (additional 220 + 60 if self-test is requested) after RESET is negated, the processor begins executing instructions at the top of physical memory (address location FFFF FFF0h). When the first intersegment JMP or CALL is executed, address lines AD31-AD20 are driven low for code segment-relative memory access cycles. While AD31-AD20 are low, the processor executes instructions only in the lowest 1 MB of physical address space until system-specific initialization occurs via program execution. Table 2.1 Initialized Register Controls Register Register Name Initialized Contents EAX Accumulator xxxx xxxxh EBX Base xxxx xxxxh ECX Count xxxx xxxxh EDX Data xxxx 0400h + Device ID EBP Base Pointer xxxx xxxxh ESI Source Index xxxx xxxxh EDI Destination Index xxxx xxxxh ESP Stack Pointer xxxx xxxxh Comments 0000 0000h indicates self-test passed Device ID = xxh EFLAGS Flag Word 0000 0002h EIP Instruction Pointer 0000 FFF0h ES Extra Segment 0000h Base address set to 0000 0000h. Limit set to FFFFh CS Code Segment F000h Base address set to FFFF 0000h. Limit set to FFFFh SS Stack Segment 0000h Base address set to 0000 0000h. Limit set to FFFFh DS Data Segment 0000h Base address set to 0000 0000h. Limit set to FFFFh FS Extra Segment 0000h Base address set to 0000 0000h. Limit set to FFFFh GS Extra Segment 0000h Base address set to 0000 0000h. Limit set to FFFFh IDTR Interrupt Descriptor Table Register Base = 0, Limit = 3FFh CR0 Machine Status Word 6000 0010h CCR1 Configuration Control 1 00h CCR2 Configuration Control 2 00h CCR3 Configuration Control 3 00h SMAR SMM Address Region 0000h DIR0 Device Identification 0 processor = xxh DIR1 Device Identification 1 Step ID + Revision ID DR7 Debug Register 7 0000 0400h Note: x = Undefined value ZFx86 Data Book 1.0 Rev D Page 34 2 2.2.1.1. Warm Reset The WM_RESET input signal is used to support write back caching policy on the processor. The WM_RESET signal will reset the entire processor except for the CD and NW bits in the CR0 register, the CFG0 register, the CFG1 register and the valid and dirty bits in the cache. The WM_RESET signal is always enabled and included a pull-down resistor to keep the pin inactive when not used. 2.2.2. Instruction Set Overview The processor instruction set can be divided into eight types of operations: • Arithmetic • Bit Manipulation • Control Transfer • Data Transfer • Floating Point • High-Level Language Support • Operating System Support • Shift/Rotate • String Manipulation All processor instructions operate on as few as 0 operands and as many as 3 operands. An NOP instruction (no operation) is an example of a 0 operand instruction. Two operand instructions allow the specification of an explicit source and destination pair as part of the instruction. These two operand instructions can be divided into eight groups according to operand types: • • • • • • • • Register to Register Register to Memory Memory to Register Memory to Memory Register to I/O I/O to Register Immediate Data to Register Immediate Data to Memory ZFx86 Data Book 1.0 Rev D An operand can be held in the instruction itself (as in the case of an immediate operand), in a register, in an I/O port or in memory. An immediate operand is prefetched as part of the opcode for the instruction. • Operand lengths of 8, 16, or 32 bits are supported as well as 64 or 80 bit associated with floating point instructions. • Operand lengths of 8 or 32 bits are generally used when executing code written for x86 32-bit code processors. • Operand lengths of 8 or 16 bits are generally used when executing existing 8086 or 80286 code (16-bit code). The default length of an operand can be overridden by placing one or more instruction prefixes in front of the opcode. For example, by using prefixes, a 32-bit operand can be used with 16-bit code or a 16-bit operand can be used with 32-bit code. Section 2.3. ‘Instruction Set’ of this manual lists each instruction in the processor instruction set along with the associated opcodes, execution clock counts and effects on the FLAGS register. 2.2.2.1. Lock Prefix The LOCK prefix may be placed before certain instructions that read, modify, then write back to memory. The prefix asserts the LOCK# signal to indicate to the external hardware that the CPU is in the process of running multiple indivisible memory accesses. The LOCK prefix can be used with the following instructions: • Bit Test Instructions (BTS, BTR, BTC) • Exchange Instructions (XADD, XCHG, CMPXCHG) • One-operand Arithmetic and Logical Instructions (DEC, INC, NEG, NOT) Page 35 2 • Two-operand Arithmetic and Logical Instructions (ADC, ADD, AND, OR, SBB, SUB, XOR) An invalid opcode exception is generated if the LOCK prefix is used with any other instruction, or with the above instructions when no write operation to memory occurs (i.e., the destination is a register). The LOCK prefix function may be disabled by setting the NO_LOCK bit in Configuration Control Register 1 (CCR1). If No_Lock (bit 4 in CCR1) is set, locked cycles are inhibited for some locked instructions. These instructions include interrupt acknowledge cycles, descriptor loads, and updates and accesses to the interrupt descriptor table. However, locked cycles are not inhibited by No_Lock bit for TLB table lookups, XCHG instructions to memory, or any instruction that includes a lock prefix. If No_Lock = 0, locked cycles occur for all locked instructions. 2.2.3. Register Set There are 40 accessible registers in the processor, and these registers are grouped into two sets: 2.2.3.1. Application Register Set The Application Register Set, shown in Table 2.2, are generally accessible and are not protected from read or write access. The contents of the eight General Purpose Registers are frequently modified by assembly language instructions and typically contain arithmetic and logical instruction operands. In real mode the six Segment Registers contain the base address for each segment. In protected mode the Segment Registers contain segment selectors. The segment selectors provide indexing for tables (located in memory) that contain the base address for each segment, as well as other memory addressing information. The Flag Register contains control bits used to reflect the status of previously executed instructions. This register also contains control bits that affect the operation of some instructions. The Instruction Pointer register points to the next instruction that the processor will execute. This register is automatically incremented by the processor as execution progresses. • The Application Register Set contains eight general purpose registers, six segment registers, a flag register and an instruction pointer register, and are typically used by application programmers. • The System Register Set contains the remaining registers which include three control registers, four system address registers, six debug registers, six configuration registers and five test registers, and are typically used by operating system programmers. Each of the registers is discussed in detail in the following sections. ZFx86 Data Book 1.0 Rev D Page 36 2 Table 2.2 Application Register Set 31 16 15 8 7 0 Application Register Set AX AH AL EAX (Extended A Register) BX BH BL EBX (Extended B Register) CX CH CL ECX (Extended C Register) DX DH DL EDX (Extended D Register) General Purpose Registers SI (Source Index) ESI (Extended Source Index) DI (Destination Index) EDI (Extended Destination Index) BP (Base Pointer) EBP (Extended Base Pointer) SP (Stack Pointer) ESP (Extended Stack Pointer) CS (Code Segment) SS (Stack Segment) DS (D Data Segment) ES (E Data Segment) FS (F Data Segment) Segment (Selector) Registers GS (G Data Segment) EIP (Extended Instruction Pointer Register) EFLAGS (Extended Flags Register) General Purpose Registers (eight) The General Purpose Registers are divided into four data registers, two pointer registers, and two index registers. Data Registers are used by the applications programmer to manipulate data structures and to hold the results of logical and arithmetic operations. Different portions of the general data registers can be addressed by using different names. An “E” prefix identifies the complete 32-bit register. An “X” suffix without the “E” prefix identifies the lower 16 bits of the ZFx86 Data Book 1.0 Rev D Instruction Pointer and Flags Register register. The lower two bytes of the register can be addressed with an “H” suffix to identify the upper byte or an “L” suffix to identify the lower byte. When a destination operand size specified by an instruction is smaller than the specified destination register, the other bytes of the destination register are not affected when the operand is written to the register. Page 37 2 The Pointer and Index Registers are listed as follows: processor to determine the location in memory of code, data and stack references. There are six 16-bit segment registers: • SI or ESI Source Index • DI or EDI Destination Index • CS – Code Segment • SP or ESP Stack Pointer • DS – Data Segment • BP or EBP Base Pointer • ES – Extra Segment • SS – Stack Segment These registers can be addressed as 16- or 32bit registers, with the “E” prefix indicating 32 bits. The pointer and index registers can be used as general purpose registers, however, some instructions use a fixed assignment of these registers. For example, repeated string operations always use ESI as the source pointer, EDI as the destination pointer and ECX as a counter. The instructions using fixed registers include multiply and divide, I/O access, string operations, translate, loop, variable shift and rotate and stack operations instructions. The processor implements a stack using the ESP register. This stack is accessed during the PUSH and POP instructions, procedure calls, procedure returns, interrupts, exceptions, and interrupt/exception returns. The microprocessor automatically adjusts the value of the ESP during operation of these instructions. • FS – Additional Data Segment • GS – Additional Data Segment In real and virtual 8086 operating modes, a segment register holds a 16-bit segment base. The 16-bit segment base is multiplied by 16 and a 16-bit or 32-bit offset is then added to it to create a linear address. The offset size is dependent on the current address size. In real mode and in virtual 8086 mode with paging disabled, the linear address is also the physical address. In virtual 8086 mode with paging enabled, the linear address is translated to the physical address using the current page tables. In protected mode, a segment register holds a Segment Selector containing a 13-bit Index, a Table Indicator (TI) bit, and a two-bit Requested Privilege Level (RPL) field, as illustrated in Figure 2-1. 15 The EBP register may be used to reference data passed on the stack during procedure calls. Local data may also be placed on the stack and referenced relative to BP. This register provides a mechanism to access stack data in high-level languages. Segment Registers and Selectors (six) Segmentation provides a means of defining data structures inside the memory space of the microprocessor. There are three basic types of segments: code, data, and stack. Segments are used automatically by the ZFx86 Data Book 1.0 Rev D 3 Index 2 1 0 T RPL I TI = Table Indicator RPL = Request Privilege Level Figure 2-1 Segment Selector The Index Register points into a descriptor table in memory and selects one of 8192 (213) segment descriptors contained in the descriptor table. A segment descriptor is an 8byte value used to describe a memory segment by defining the segment base, the segment limit, and access control information. Page 38 2 To address data within a segment, a 16-bit or 32-bit offset is added to the segment’s base address. Once a segment selector has been loaded into a segment register, an instruction needs to specify the offset only. The Table Indicator (TI) bit of the selector defines which descriptor table the index points to. If TI = 0, the index references the Global Descriptor Table (GDT). If TI = 1, the index references the Local Descriptor Table (LDT). The GDT and LDT are described in more detail later in Section ‘Descriptor Table Registers and Descriptors’ on page 44. The Requested Privilege Level (RPL) field contains a 2-bit segment privilege level (0 = most privileged, 3 = least privileged). The RPL bits are used when the segment register is loaded to determine the Effective Privilege Level (EPL). If the RPL bits indicate less privilege than the Current Program Level (CPL), the RPL overrides the CPL and the EPL is the less privileged level. If the RPL bits indicate more privilege than the program, the CPL overrides the RPL and again the EPL is the less privileged level. When a segment register is loaded with a segment selector, the segment base, segment limit and access rights are also loaded from the descriptor table into a user-invisible or hidden portion of the segment register i.e., cached on-chip. The CPU does not access the descriptor table again until another segment register load occurs. If the descriptor tables are modified in memory, the segment registers must be reloaded with the new selector values by the software. The processor automatically selects a default segment register for memory references. Table 2.3 describes the selection rules. In general, data references use the selector contained in the DS register, stack references use the SS register and instruction fetches use the CS register. While some of these selections may be overridden, instruction fetches, stack operations, and the destination write of string operations cannot be overridden. Special segment override prefixes allow the use of alternate segment registers including the use of the ES, FS, and GS segment registers. Table 2.3 Segment Register Selection Rules Implied (Default) Segment Type of Memory Reference Segment-Override Prefix Code Fetch CS None Destination of PUSH, PUSHF, INT, CALL, PUSHA instructions SS None Source of POP, POPA, POPF, IRET, RET instructions SS None Destination of STOS, MOVS, REP STOS, REP MOVS instructions ES None Other data references with effective address using base registers of: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP DS CS, ES, FS, GS, SS SS CS, DS, ES, FS, GS Instruction Pointer Register (one) The Instruction Pointer (EIP) register contains the offset into the current code segment of the next instruction to be executed. The register is normally incremented with each instruction execution unless implicitly modified through an interrupt, exception or an instruction that ZFx86 Data Book 1.0 Rev D changes the sequential execution flow (e.g., JMP, CALL). Page 39 2 Flags Register (one) The Extended Flags Register, EFLAGS, contains status information and controls certain operations on the processor. The lower 16 bits of this register are referred to as the FLAGS register that is used when executing 8086 or 80286 code. The flag bits are illustrated in Table 2.4 Table 2.4 EFLAGS Register Bit Name Flag Type 31:19 RSVD -- Description 18 AC System Alignment Check Enable — In conjunction with the AM flag in CR0, the AC flag determines whether or not misaligned accesses to memory cause a fault. If AC is set, alignment faults are enabled. 17 VM System Virtual 8086 Mode — If set while in protected mode, the processor switches to virtual 8086 operation handling segment loads as the 8086 does, but generating exception 13 faults on privileged opcodes. The VM bit can be set by the IRET instruction (if current privilege level is 0) or by task switches at any privilege level. 16 RF Debug Resume Flag — Used in conjunction with debug register breakpoints. RF is checked at instruction boundaries before breakpoint exception processing. If set, any debug fault is ignored on the next instruction. 15 RSVD -- 14 NT System Nested Task — While executing in protected mode, NT indicates that the execution of the current task is nested within another task. 13:12 IOPL System I/O Privilege Level — While executing in protected mode, IOPL indicates the maximum current privilege level (CPL) permitted to execute I/O instructions without generating an exception 13 fault or consulting the I/O permission bit map. IOPL also indicates the maximum CPL allowing alteration of the IF bit when new values are popped into the EFLAGS register. 11 OF Arithmetic Overflow Flag — Set if the operation resulted in a carry or borrow into the sign bit of the result but did not result in a carry or borrow out of the high-order bit. Also set if the operation resulted in a carry or borrow out of the high-order bit but did not result in a carry or borrow into the sign bit of the result. 10 DF Control Direction Flag — When cleared, DF causes string instructions to auto-increment (default) the appropriate index registers (ESI and/or EDI). Setting DF causes auto-decrement of the index registers to occur. 9 IF System Interrupt Enable Flag — When set, maskable interrupts (INTR input signal) are acknowledged and serviced by the CPU. 8 TF Debug Trap Enable Flag — Once set, a single-step interrupt occurs after the next instruction completes execution. TF is cleared by the single-step interrupt. Reserved — Set to 0. Reserved — Set to 0. 7 SF Arithmetic Sign Flag — Set equal to high-order bit of result (0 indicates positive, 1 indicates negative). 6 ZF Arithmetic Zero Flag — Set if result is zero; cleared otherwise. 5 RSVD -- 4 AF Arithmetic 3 RSVD -- 2 PF Arithmetic 1 RSVD -- 0 CF Arithmetic ZFx86 Data Book 1.0 Rev D Reserved — Set to 0. Auxiliary Carry Flag — Set when a carry out of (addition) or borrow into (subtraction) bit position 3 of the result occurs; cleared otherwise. Reserved — Set to 0. Parity Flag — Set when the low-order 8 bits of the result contain an even number of ones; otherwise PF is cleared. Reserved — Set to 1. Carry Flag — Set when a carry out of (addition) or borrow into (subtraction) the most significant bit of the result occurs; cleared otherwise. Page 40 2 2.2.3.2. System Register Set The System Register Set, shown in Table 2.5, consists of registers not generally used by application programmers. These registers are typically employed by system level programmers who generate operating systems and memory management programs. The Control Registers control certain aspects of the processor such as paging, coprocessor functions, and segment protection. When a paging exception occurs while paging is enabled, the control registers retain the linear address of the access that caused the exception. The Descriptor Table Registers and the Task Register can also be referred to as system address or memory management registers. These registers consist of two 48-bit and two 16-bit registers. These registers specify the location of the data structures that control the segmentation used by the processor. Segmentation is one available method of memory management. The Configuration Registers are used to configure the processor on-chip cache operation, coprocessor interface, power management features and System Management Mode. The configuration registers also provide information on the CPU device type and revision. The Debug Registers provide debugging facilities for the processor and enable the use of data access breakpoints and code execution breakpoints. The Test Registers provide a mechanism to test the contents of both the on-chip 8 KB cache and the Translation Lookaside Buffer (TLB). The TLB is used as a cache for the tables which are used in translating linear addresses to physical addresses while paging is enabled. In the following sections, the system register set is described in greater detail. ZFx86 Data Book 1.0 Rev D Table 2.5 System Register Set Group Control Registers Descriptor Table and Task Registers Configuration Registers Debug Registers Test Registers Name Width (Bits) Function CR0 System Control Register 32 CR2 Page Fault Linear Address Register 32 CR3 Page Directory Base Register 32 GDTR GDT Register 48 IDTR IDT Register 48 LDTR LDT Register 16 TR Task Register Setup 16 CCR1 Configuration Control Register 1 8 CCR2 Configuration Control Register 2 8 CCR3 Configuration Control Register 3 8 SMAR SMM Address Region Register 24 DIR0 Device Identification Register 0 8 DIR1 Device Identification Register 1 8 DR0 Linear Breakpoint Address 0 32 DR1 Linear Breakpoint Address 1 32 DR2 Linear Breakpoint Address 2 32 DR3 Linear Breakpoint Address 3 32 DR6 Breakpoint Status 32 DR7 Breakpoint Control 32 TR3 Cache Test 32 TR4 Cache Test 32 TR5 Cache Test 32 TR6 TLB Test Control 32 TR7 TLB Test Status 32 Page 41 2 2.2.3.3. Control Registers (3) A map of the Control Registers (CR3, CR2 and CR0) is shown in Table 2.6 and the bit definitions are given in Table 2.7. The CR0 register contains system control flags which control operating modes and indicate the general state of the CPU. The lower 16 bits of CR0 are referred to as the Machine Status Word (MSW). The reserved bits in CR0 should not be modified. When paging is enabled and a page fault is generated, the CR2 register retains the 32-bit linear address of the address that caused the fault. Register CR3 contains the 20 most significant bits of the physical base address of the page directory. The page directory must always be aligned to a 4 KB page boundary; therefore, the lower 12 bits of CR3 are not required to specify the base address. When operating in protected mode, any program can read the control registers; however, only privilege level 0 (most privileged) programs can modify the contents of these registers. Table 2.6 Control Registers Map 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 CR3 Register PDBR (Page Directory Base Register) RSVD P P C W D T RSVD CR2 Register PFLA (Page Fault Linear Address) CR0 Register P G C N D W RSVD A M R W S P V D RSVD N E 1 T S E M M P P E Machine Status Word (MSW) Table 2.7 CR3, CR2, and CR0 Bit Definitions Bit Name Description CR3 Register 31:12 PDBR Page Directory Base Register: Identifies page directory base address on a 4 KB page boundary. 11:4 RSVD Reserved 4 PCD Page-level Cache Disable: Affects the operation of internal cache. 3 PWT Page Write Through: Drives output pins for controlling external caches. 2:0 RSVD Reserved CR2 Register 31:0 PFLA Page Fault Linear Address: With paging enabled and after a page fault, PFLA contains the linear address of the address that caused the page fault. CR0 Register ZFx86 Data Book 1.0 Rev D Page 42 2 Table 2.7 CR3, CR2, and CR0 Bit Definitions (cont.) Bit Name Description 31 PG Paging Enable Bit: If PG = 1 and protected mode is enabled (PE = 1), paging is enabled. 30 CD Cache Disable: If CD = 1, no further cache line fills occur; however data already present in the cache continues to be used if the requested address hits in the cache. The cache must also be invalidated to completely disable any cache activity. 29 NW Not Write-Through: If NW = 1, the on-chip cache operates in write-back mode. In write-back mode, writes are issued to the external bus only for a cache miss, a line replacement of a modified line, or as the result of a cache inquiry cycle. If NW = 0, the on-chip cache operates in write-through mode. In write-through mode, all writes (including cache hits) are issued to the external bus. 28:19 RSVD 18 AM 17 RSVD 16 WP 15:6 RSVD 5 NE Reserved Alignment Check Mask: If AM = 1, the AC bit in the EFLAGS register is unmasked and allowed to enable alignment check faults. Setting AM = 0 prevents AC faults from occurring. Reserved Write Protect: Protects read-only pages from supervisor write access. WP = 0 allows a read-only page to be written from privilege level 0-2. WP = 1 forces a fault on a write to a read-only page from any privilege level. Reserved Numerics Exception: NE = 1 to allow FPU exceptions to be handled by interrupt 16. NE = 0 if FPU exceptions are to be handled by external interrupts. 4 1 3 TS Task Switched: Set whenever a task switch operation is performed. Execution of a floating point instruction with TS = 1 causes a DNA (Device Not Available) fault. If MP = 1 and TS = 1, a WAIT instruction also causes a DNA fault. Reserved: Do not attempt to modify. 2 EM Emulate Processor Extension: If EM = 1, all floating point instructions cause a DNA fault 7. 1 MP Monitor Processor Extension: If MP = 1 and TS = 1, a WAIT instruction causes a DNA fault 7. The TS bit is set to 1 on task switches by the CPU. Floating point instructions are not affected by the state of the MP bit. The MP bit should be set to one during normal operations. 0 PE Protected Mode Enable: Enables the segment based protection mechanism. If PE = 1, protected mode is enabled. If PE = 0, the CPU operates in real mode, with segment based protection disabled, and addresses are formed as in an 8086-style CPU. Table 2.8 Effects of Various Combinations of TS, EM and MP Bits CR0[3:1] Instruction Type TS EM MP WAIT ESC 0 0 0 Execute Execute 0 0 1 Execute Execute 1 0 0 Execute Fault 7 1 0 1 Fault 7 Fault 7 0 1 0 Execute Fault 7 0 1 1 Execute Fault 7 1 1 0 Execute Fault 7 1 1 1 Fault 7 Fault 7 ZFx86 Data Book 1.0 Rev D Page 43 2 Descriptor Table Registers and Descriptors The Global, Interrupt and Local Descriptor Table Registers (GDTR, IDTR and LDTR), shown in Figure 2-2 "Task Register", are used to specify the location of the data structures that control segmented memory management. The GDTR, IDTR and LDTR are loaded using the LGDT, LIDT and LLDT instructions, respectively. The values of these registers are stored using the corresponding store instructions. The GDTR and IDTR load instructions are privileged instructions when operating in protected mode. The LDTR can only be accessed in protected mode. The Global Descriptor Table Register (GDTR) holds a 32-bit linear base address and 16-bit limit for the Global Descriptor Table (GDT). The GDT is an array of up to 8192 8-byte descriptors. When a segment register is loaded from memory, the TI bit in the segment selector chooses either the GDT or the Local Descriptor Table (LDT) to locate a descriptor. If TI = 0, the index portion of the selector is used to locate a given descriptor within the GDT. The contents of the GDTR are completely visible to the programmer. The first descriptor in the GDT (location 0) is not used by the CPU and is referred to as the “null descriptor”. If the GDTR is loaded while operating in 16-bit operand mode, the processor accesses a 32bit base value but the upper 8 bits are ignored resulting in a 24-bit base address. 48 The Interrupt Descriptor Table Register (IDTR) holds a 32-bit linear base address and 16-bit limit for the Interrupt Descriptor Table (IDT). The IDT is an array of 256 8-byte interrupt descriptors, each of which is used to point to an interrupt service routine. Every interrupt that may occur in the system must have an associated entry in the IDT. The contents of the IDTR are completely visible to the programmer. The Local Descriptor Table Register (LDTR) holds a 16-bit selector for the Local Descriptor Table (LDT). The LDT is an array of up to 8192 8-byte descriptors. When the LDTR is loaded, the LDTR selector indexes an LDT descriptor that must reside in the Global Descriptor Table (GDT). The contents of the selected descriptor are cached on-chip in the hidden portion of the LDTR. The CPU does not access the GDT again until the LDTR is reloaded. If the LDT descriptor is modified in memory in the GDT, the LDTR must be reloaded to update the hidden portion of the LDTR. When a segment register is loaded from memory, the TI bit in the segment selector chooses either the GDT or the LDT to locate a segment descriptor. If TI = 1, the index portion of the selector is used to locate a given descriptor within the LDT. Each task in the system may be given its own LDT, managed by the operating system. The LDTs provide a method of isolating a given task’s segments from other tasks in the system. 16 15 0 Base Address Limit GDTR Base Address Limit IDTR Selector LDTR Figure 2-2 Descriptor Table Registers ZFx86 Data Book 1.0 Rev D Page 44 2 • Gate Descriptors that define task gates, interrupt gates, trap gates and call gates. Descriptors There are three types of descriptors: • Application Segment Descriptors that define code, data and stack segments. • System Segment Descriptors that define an LDT segment or a Task State Segment (TSS) table described later in this text. Application Segment Descriptors are located in either the LDT or GDT; System Segment Descriptors can only be located in the GDT. Dependent on gate type, gate descriptors are located in either the GDT, LDT or Interrupt Descriptor Table (IDT). Table 2.9 illustrates the descriptor format for both Application Segment Descriptors and System Segment Descriptors. Table 2.9 Application and System Segment Descriptors 31 31 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 Memory Offset +4 BASE[31:24] G D 0 A V L LIMIT[19:16] P DPL D T TYPE BASE[23:16] Memory Offset +0 BASE[15:0] LIMIT[15:0] Gate Descriptors provide protection for executable segments operating at different privilege levels. Table 2.10 illustrates the format for Gate Descriptors and Table 2.11 lists the corresponding bit definitions. Task Gate Descriptors (TGD) are used to switch the CPU’s context during a task switch. The selector portion of the TGD locates a Task State Segment. TGDs can be located in the GDT, LDT or IDT tables. Interrupt Gate Descriptors are used to enter a hardware interrupt service routine. Trap Gate Descriptors are used to enter exceptions or software interrupt service routines. Trap Gate and Interrupt Gate Descriptors can only be located in the IDT. Call Gate Descriptors are used to enter a procedure (subroutine) that executes at the same or a more privileged level. A Call Gate Descriptor primarily defines the procedure entry point and the procedure’s privilege level. Table 2.10 Gate Descriptors 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 0 0 0 4 3 2 1 0 Memory Offset +4 OFFSET[31:16] P DPL 0 TYPE PARAMETERS Memory Offset +0 SELECTOR[15:0] ZFx86 Data Book 1.0 Rev D OFFSET[15:0] Page 45 2 Table 2.11 Gate Descriptor Bit Definitions Bit Memory Offset 31:16 15:0 31:16 +4 +0 +0 SELECTOR 15 14:13 11:8 +4 +4 +4 P DPL TYPE 4:0 +4 PARAMETERS Name Description OFFSET Offset — Used during a call gate to calculate the branch target. Selector — Segment selector used during a call gate to calculate the branch target. Segment present. Descriptor privilege level. Segment type: 0100 = 16-bit call gate 0101 = task gate 0110 = 16-bit interrupt gate 0111 = 16-bit trap gate 1100 = 32-bit call gate 1110 = 32-bit interrupt gate 1111 = 32-bit trap gate. Parameters — Number of 32-bit parameters to copy from the caller’s stack to the called procedure’s stack. Task Register During task switching, the processor saves the current CPU state in the TSS before starting a new task. The TR points to the current TSS. The TSS can be either a 386/486-type 32-bit TSS as shown in Table 2.12 or a 286-type 16-bit TSS type as shown on Table 2.13. An I/O permission bit map is referenced in the 32-bit TSS by the I/O Map Base Address. The Task Register (TR) holds a 16-bit selector for the current Task State Segment (TSS) table as shown in xxx. The TR is loaded and stored via the LTR and STR instructions, respectively. The TR can only be accessed during protected mode and can only be loaded when the privilege level is 0 (most privileged). When the TR is loaded, the TR selector field indexes a TSS descriptor that must reside in the Global Descriptor Table (GDT). The contents of the selected descriptor are cached on-chip in the hidden portion of the TR 15 0 SELECTOR Figure 2-2 Task Register Table 2.12 32-Bit Task State Segment (TSS) Table 31 16 15 I/O Map Base Address 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T +64h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Selector for Task’s LDT +60h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GS +5Ch 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FS +58h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DS +54h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SS +50h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 CS +4Ch 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ES +48h ZFx86 Data Book 1.0 Rev D Page 46 2 Table 2.12 32-Bit Task State Segment (TSS) Table (cont.) 31 0 16 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 EDI +44h ESI +40h EBP +3Ch ESP +38h EBX +34h EDX +30h ECX +2Ch EAX +28h EFLAGS +24h EIP +20h CR3 +1Ch 0 SS for CPL = 2 +18h SS for CPL = 1 +10h ESP for CPL = 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +14h ESP for CPL = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Ch SS for CPL = 0 +8h Back Link (Old TSS Selector) +0h ESP for CPL = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4h Note: 0 = Reserved Table 2.13 16-Bit Task State Segment (TSS) Table 15 ZFx86 Data Book 1.0 Rev D 0 Selector for Task’s LDT +2Ah DS +28h SS +26h CS +24h ES +22h DI +20h SI +1Eh BP +1Ch SP +1Ah BX +18h DX +16h CX +14h AX +12h FLAGS +10h IP +Eh SS for Privilege Level 2 +Ch SP for Privilege Level 2 +Ah SS for Privilege Level 1 +8h SP for Privilege Level 1 +6h SS for Privilege Level 0 +4h SP for Privilege Level 0 +2h Page 47 2 Table 2.13 16-Bit Task State Segment (TSS) Table (cont.) 15 0 Back Link (Old TSS Selector) Configuration Registers (six) The processor provides three 8-bit Configuration Control Registers (CCR1, CCR2 and CCR3) used to control the on-chip write-back cache, the coprocessor interface signals and SMM features. The processor also provides two 8-bit internal read-only device identification registers (DIR0 and DIR1) and one 24-bit SMM Address Region Register (SMAR). The CCR, DIR, and SMAR registers exist in I/O memory space and are selected by a “register index” number as listed in ‘Table 2.14 Configuration Register Map’ on page 48. Access to these registers is achieved by writing the index of the register to I/O port 22h. I/O port 23h is then used for data transfer. Each I/O port 23h data transfer must be preceded by an I/O port 22h register index selection, otherwise the second and later I/O port 23h operations are directed off-chip and produce external I/O cycles. If the register index number is outside the C0h-CFh, FEh-FFh range, external I/O cycles will also occur. The CCR1 register, Table 2.15 on page 49, controls SMM features and enables SMM and cache interface signals. +0h The CCR2 register, Table 2.16 on page 51, is used to setup internal cache operation and enable suspend control signals. The CCR3 register, Table 2.17 on page 51, controls additional SMM features. The SMAR register, Table 2.18 on page 52, is used to define the location and size of the memory region associated with SMM memory space. The starting address of the SMM address region must be on a block size boundary. For example, a 128 KB block is allowed to have a starting address of 0 KB, 128 KB, 256 KB, etc. The SMM block size must be defined for SMI# to be recognized. ‘Table 2.19 DIR0 Bit Definitions’ on page 52 contains an 8-bit value that defines the device type. ‘Table 2.20 DIR1 Bit Definitions’ on page 52 contains additional device type information. The upper 4 bits of DIR1 represent the stepping number of the device and the lower 4 bits of DIR1 represent the particular revision number of the stepping. Actual values for DIR0 and DIR1 are shown in Table 2.1 "Initialized Register Controls" on page 34. Table 2.14 Configuration Register Map Register Index Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Control Registers CCR1 (C1h) RSVD NO_LOCK MMAC SMAC SMI RPL HALT LOCK_NW WBAK RSVD RSVD RSVD RSVD CCR2 (C2h) SUSP BWRT BARB WTI CCR3 (C3h) RSVD RSVD RSVD RSVD SMM_MODE SMM Address Region Registers (24 bits) CDh A31 A30 A29 A28 A27 A26 A25 A24 CEh A23 A22 A21 A20 A19 A18 A17 A16 CFh A15 A14 A13 A12 ZFx86 Data Book 1.0 Rev D SIZE Page 48 2 Table 2.14 Configuration Register Map (cont.) Device ID Registers DIR0 DEVID 7 DEVID 6 DIR1 DEVID 5 DEVID4 DEVID3 SID[3:0] DEVID2 DEVID1 DEVID0 RID[3:0] Note: The following register index numbers are reserved for future use: C0h through CFh and FEh, FFh. Example ; Enable CPU warm reset (WM_RST). See Table 2.16, ‘CCR2 Bit Definitions,’ on page 51, and see ‘Configuration Registers (six)’ on page 48. Compare North Bridge Configuration Registers in ‘I/O Address Map’ on page 119. mov out in or mov mov out mov out al, 22h, al, al, ah, al, 22h, al, 23h, 0C2h al 23h 2 al 0C2h al ah al ; ; ; ; select CCR2 set address pointer to CCR2 read data from CCR2 or in WBAK bit Enable WM_RST ; ; ; ; select CCR2 again (see prev page) set address pointer to CCR2 or in bit 1 WBAK write data to CCR2 Table 2.15 CCR1 Bit Definitions Bit Name Description 7:5 RSVD Reserved. 4 NO_LOCK Negate LOCK# — If = 1: All bus cycles are issued with LOCK# signal negated except page table accesses. Interrupt acknowledge cycles are executed as locked cycles even though LOCK# is negated. With NO_LOCK set, previously noncacheable locked cycles are executed as unlocked cycles and, therefore, may be cached. This results in higher CPU performance. 3 MMAC Main Memory Access — If = 1: All data accesses which occur within an SMI service routine (or when SMAC = 1) access main memory instead of SMM memory space. If = 0: No effect on access. 2 SMAC System Management Memory Access — If = 1: Any access to addresses within the SMM memory space cause external bus cycles to be issued with SMADS# output active. SMI# input is ignored. If = 0: No effect on access. 1 SMI Enable SMM Signals — If = 1: SMI# input/output signal and SMADS# output signal are enabled. If = 0: SMI# input signal ignored and SMADS# output signal floats. 0 RPL Enable RPL Signals — If = 1: Enable output signals RPLSET(1-0) and RPLVAL#. If = 0: Output signals RPLSET(1-0) and RPLVAL# float. ZFx86 Data Book 1.0 Rev D Page 49 2 Table 2.15 CCR1 Bit Definitions (cont.) Bit Name Description Note: Bits [4:0] are cleared to 0 at reset. ZFx86 Data Book 1.0 Rev D Page 50 2 Table 2.16 CCR2 Bit Definitions Bit Name Description 7 SUSP Enable Suspend Signals — If = 1: SUSP# input and SUSPA# output are enabled. If = 0: SUSP# input is ignored and SUSPA# output floats. 6 BWRT Enable Burst Write Cycles — If = 1: Enables use of 16-byte burst write-back cycles. 5 BARB Enable Cache Coherency on Bus Arbitration — If = 1: Enable write-back of all dirty cache data when HOLD is requested and prior to asserting HLDA. 4 WT1 Write-Through Region 1 — If = 1: Forces all writes to the 640 KB to 1 MB address region that hit in the on-chip cache to be issued on the external bus. 3 HALT Suspend on HALT — If = 1: CPU enters suspend mode following execution of a HALT instruction. 2 LOCK_NW 1 WBAK Enable Write-Back Cache Interface Signals — If = 1: Enable INVAL and WM_RST input signals, and HITM# output signal. If = 0: INVAL and WM_RST input signals are ignored, and HITM# output signal floats. 0 RSVD Reserved. LOCK NW Bit — If = 1: Prohibits changing the state of the NW bit in CR0. Note: All bits are cleared to zero at reset. Table 2.17 CCR3 Bit Definitions Bit Name Description 7:4 RSVD Reserved. 3 SMM_MODE SL-enhanced compatible mode. If = 1: SL compatible mode enabled. If = 0: SL compatible mode disabled. NOTE: Once the SMI_Lock bit is set, the CPU must be reset in order to modify SMI_Lock and SMM_Mode. 2 RSVD Reserved 1 NMIEN NMI Enable — If = 1: NMI is enabled during SMM. If = 0: NMI is not recognized during SMM. 0 SMI_LOCK SMM Register Lock — If = 1: the following SMM control bits cannot be modified: CCR1 bits: 1, 2, and 3 CCR3 bit: 1 all SMAR bits While operating within an SMI handler, these SMM control bits can be modified. Once set, the SMI_LOCK bit can only be cleared by asserting the RESET signal. Note: Bits [1:0] are cleared to zero at reset. ZFx86 Data Book 1.0 Rev D Page 51 2 Table 2.18 SMAR Size Field Bits [3:0] Block Size Bits [3:0] Block Size 0h Disabled 8h 512 KB 1h 4 KB 9h 1 MB 2h 8 KB Ah 2 MB 3h 16 KB Bh 4 MB 4h 32 KB Ch 8 MB 5h 64 KB Dh 16 MB 6h 128 KB Eh 32 MB 7h 256 KB Fh 4 KB (Same as 1h) Table 2.19 DIR0 Bit Definitions Bit Name 7:0 DEVID[7:0] Description Device Identification — DEVID[7:0] bits define the CPU type. These bits are read only. processor = xxh Table 2.20 DIR1 Bit Definitions Bit Name 7:4 SID[3:0] Stepping Identification — SID[3:0] are read only and indicate device stepping number. 3:0 RID[3:0] Revision Identification — RID[3:0] are read only and indicate device revision number. ZFx86 Data Book 1.0 Rev D Description Page 52 2 A31-A2 A20M# ADS# AHOLD BE3#-BE0# BOFF# BLAST# BRDY# BREQ BS16#, BS8# D31-D0 CLK D/C# EADS# 1 1 FLUSH# IGNNE# 2 DP3-DP0 Processor Input and Output Signals 2 FERR# 1 HITM# INTR HLDA INVAL 1 LOCK# HOLD M/IO# KEN# 1 1 NMI PCD PCHK# RDY# PLOCK# RESET 1 PWT SMI# 4 1 RPLSET(1-0) SUSP# 3 1 RPLVAL# 4 SMADS# 3 SUSPA# UP# WM_RST 5 W/R# 1= 2= 3= 4= 5= Cache Interface Coprocessor Interface Power Management System Management Mode Reset Input Figure 2-3 Processor Internal I/O Interface Signals ZFx86 Data Book 1.0 Rev D Page 53 2 Debug Registers DR7 that specify the memory access type associated with the breakpoint. Six debug registers (DR0-DR3, DR6 and DR7), shown in Table 2.21, support debugging on the processor. Memory addresses loaded in the debug registers, referred to as “breakpoints”, generate a debug exception when a memory access of the specified type occurs to the specified address. A breakpoint can be specified for a particular kind of memory access such as a read or a write. Code and data breakpoints can also be set allowing debug exceptions to occur whenever a given data access (read or write) or code access (execute) occurs. The size of the debug target can be set to 1-, 2-, or 4-bytes. The debug registers are accessed via MOV instructions which can be executed only at privilege level 0. The R/W field can be used to specify instruction execution as well as data access breakpoints. Instruction execution breakpoints are always taken before execution of the instruction that matches the breakpoint. The Debug Status Register (DR6) reflects conditions that were in effect at the time the debug exception occurred. The contents of the DR6 register are not automatically cleared by the processor after a debug exception occurs and, therefore, should be cleared by software at the appropriate time. Table 2.22 on page 55 lists the field definitions for the DR6 and DR7 registers. Code execution breakpoints may also be generated by placing the breakpoint instruction (INT 3) at the location where control is to be regained. The single-step feature may be enabled by setting the TF flag in the EFLAGS register. This causes the processor to perform a debug exception after the execution of every instruction Debug Address Registers (DR0-DR3) contain the linear address for one of four possible breakpoints. Each breakpoint is specified by bits in Debug Control Register (DR7). For each breakpoint address in DR0-DR3, there are corresponding fields (L, R/W, and LEN) in Table 2.21 Debug Registers 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 DR7 Register LEN3 R/W3 LEN2 R/W2 LEN1 R/W1 LEN0 R/W0 0 0 G D 0 0 1 G E L E G 3 L 3 G 2 L 2 G 1 L 1 G 0 L 0 0 0 0 0 0 0 B T B S 0 0 1 1 1 1 1 1 1 1 B 3 B 2 B 1 B 0 DR6 Register 0 0 0 0 0 0 0 0 0 0 DR3 Register Breakpoint 3 Linear Address DR2 Register Breakpoint 2 Linear Address DR1 Register Breakpoint 1 Linear Address DR0 Register Breakpoint 0 Linear Address Note: All bits marked as 0 or 1 are reserved and should not be modified. ZFx86 Data Book 1.0 Rev D Page 54 2 Table 2.22 DR6 and DR7 Field Definitions Register Field Number Of Bits DR6 Bi 1 BT 1 BS 1 R/Wi 2 LENi 2 Gi 1 Li 1 GD 1 DR7 Description Bi is set by the processor if the conditions described by DRi, R/Wi, and LENi occurred when the debug exception occurred, even if the breakpoint is not enabled via the Gi or Li bits. BT is set by the processor before entering the debug handler if a task switch has occurred to a task with the T bit in the TSS set. BS is set by the processor if the debug exception was triggered by the singlestep execution mode (TF flag in EFLAGS set). Applies to the DRi breakpoint address register: 00 - Break on instruction execution only 01 - Break on data writes only 10 - Not used 11 - Break on data reads or writes. Applies to the DRi breakpoint address register: 00 - One byte length 01 - Two byte length 10 - Not used 11 - Four byte length. If set to a 1, breakpoint in DRi is globally enabled for all tasks and is not cleared by the processor as the result of a task switch. If set to 1, breakpoint in DRi is locally enabled for the current task and is cleared by the processor as the result of a task switch. Global disable of debug register access. GD bit is cleared whenever a debug exception occurs. Test Registers The five test registers, shown in Table 2.23, are used to test the CPU’s Translation Lookaside Buffer (TLB) and on-chip cache. TR6 and TR7 are used for TLB testing, and TR3-TR5 are used for cache testing. Table 2.24 on page 56 lists the bit definitions for the TR6 and TR7 registers. The processor TLB is a four-way set associative memory with eight entries per set. Each TLB entry consists of a 24-bit tag and 20-bit data. The 24-bit tag represents the high-order 20 bits of the linear address, a valid bit, and three attribute bits. The 20-bit data portion represents the upper 20 bits of the physical address that corresponds to the linear address. ZFx86 Data Book 1.0 Rev D The TLB Test Control Register (TR6) contains a command bit, the upper 20 bits of a linear address, a valid bit and the attribute bits used in the test operation. The contents of TR6 is used to create the 24-bit TLB tag during both write and read (TLB lookup) test operations. The command bit defines whether the test operation is a read or a write. The TLB Test Data Register (TR7) contains the upper 20 bits of the physical address (TLB data field), three LRU bits and a control bit. During TLB write operations, the physical address in TR7 is written into the TLB entry selected by the contents of TR6. During TLB lookup operations, the TLB data selected by the contents of TR6 is loaded into TR7. Page 55 2 Table 2.23 Test Registers 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 TLB LRU 0 0 PL 3 2 1 0 REP 0 0 0 0 C TR7 Register P P C W D T TLB Physical Address TR6 Register TLB Linear Address V D D# U U# R R# 0 0 TR5 Register RSVD Line Selection Set/ DWORD CTL TR4 Register Cache Tag Address 0 V Cache LRU Bits Dirty Bits RSVD 0 TR3 Register Cache Data Table 2.24 TR7 and TR6 Bit Definitions Register Name Bit TR7 31:12 11 10 9:7 4 3:2 ZFx86 Data Book 1.0 Rev D Description Physical address. TLB lookup: data field from the TLB. TLB write: data field written into the TLB. Page-level cache disable bit (PCD). Corresponds to the PCD bit of a page table entry. Page-level cache write-through bit (PWT). Corresponds to the PWT bit of a page table entry. LRU bits. TLB lookup: LRU bits associated with the TLB entry prior to the TLB lookup. TLB write: ignored. PL bit. TLB lookup: If = 1, read hit occurred. If = 0, read miss occurred. TLB write: If = 1, REP field is used to select the set. If = 0, the pseudo-LRU replacement algorithm is used to select the set. Set selection (REP). TLB lookup: If PL = 1, set in which the tag was found. If PL = 0, undefined data. TLB write: If PL = 1, selects one of the four sets for replacement. If PL = 0, ignored. Page 56 2 Table 2.24 TR7 and TR6 Bit Definitions Register Name Bit TR6 31:12 11 10:9 8:7 6:5 0 Description Linear address. TLB lookup: The TLB is interrogated per this address. If one and only one match occurs in the TLB, the rest of the fields in TR6 and TR7 are updated per the matching TLB entry. TLB write: A TLB entry is allocated to this linear address. Valid bit (V). TLB write: If set, indicates that the TLB entry contains valid data. If clear, target entry is invalidated. Dirty attribute bit and its complement (D, D#). Refer to Table 2-17 on page 30. User/supervisor attribute bit and its complement (U, U#). Refer to Table 2-17 on page 30. Read/write attribute bit and its complement (R, R#). Refer to Table 2-17 on page 30. Command bit (C). If = 0: TLB write. If = 1: TLB lookup. Table 2.25 TR6 Attribute Bit Pairs Bit (D, U or R) Bit Complement (D#, U#, or R#) 0 0 0 1 1 0 1 1 Effect On TLB Lookup Undefined. Match if D, U or R bit = 0. Clear the bit. Match if D, U or R bit = 1. Set the bit. Match if D, U or R bit = either 1 or 0. Undefined. Do not match. Cache Test Registers The processor 8 KB on-chip cache is a fourway set associative memory that can be configured as either write-back or writethrough. Each cache set contains 128 entries. Each entry consists of a 21-bit tag address, a 16-byte data field, a valid bit, and four dirty bits. The 21-bit tag represents the high-order 21 bits of the physical address. The 16-byte data represents the 16 bytes of data currently in memory at the physical address represented by the tag. The valid bit indicates whether the data bytes in the cache actually contain valid data. The four dirty bits indicate if the data bytes in the cache have been modified internally without updating external memory (writeback configuration). Each dirty bit indicates ZFx86 Data Book 1.0 Rev D Effect On TLB Write the status for one double-word (4 bytes) within the 16-byte data field. For each line in the cache there are three LRU bits that indicate which of the four sets was most recently accessed. A line is selected using bits10-4 of the physical address. Figure 2-4 illustrates the processor cache architecture. The processor contains three test registers that allow testing of its internal cache. Bit definitions for the cache test registers are shown in Table 2.26. Using these registers, cache writes and reads may be performed. Cache test writes cause the data in the cache fill buffer to be written to the selected set and entry in the cache. Data must be written to TR3 (32-bit register) four times in order to fill the cache fill buffer. Once the cache fill buffer Page 57 2 has been loaded, a cache test write can be performed. For data to be written to the allocated entry, the valid bit for the entry must be set prior to the write of the data. cache flush buffer. Once the buffer has been loaded, data must be read from TR3 four times in order to empty the cache flush buffer. For proper operation, cache tests should be performed only when the cache is disabled (CD bit in CR0 = 1). Cache test reads cause the data in the selected set and entry to be loaded into the Line Address SET 0 SET 1 SET 2 LRU SET 3 127 126 A10-A4 D E C O D E 0 153 0 153 0 153 0 153 0 2 0 = Cache Entry (154 bits) Tag Address (21 bits) Data (128 bits) Valid Status (1 bit) Dirty Status (4 bits) Figure 2-4 Processor Cache Architecture ZFx86 Data Book 1.0 Rev D Page 58 2 Table 2.26 TR3-TR5 Bit Definitions Bit Name Description 31:0 TR3 Cache data — Flush buffer read: data accessed from the cache flush buffer. Fill buffer write: data to be written into the cache fill buffer. 31:12 TR4 Upper Tag Address — Cache read: upper 21 bits of tag address of the selected entry. Cache write: data written into the upper 21 bits of the tag address of the selected entry. 10 Valid Bit — Cache read: valid bit for the selected entry. Cache write: data written into the valid bit for the selected entry. 9:7 LRU Bits — Cache read: the LRU bits for the selected line. xx1 = Set 0 or Set 1 most recently accessed. xx0 = Set 2 or Set 3 most recently accessed. x1x = Most recent access to Set 0 or Set 1 was to Set 0. x0x = Most recent access to Set 0 or Set 1 was to Set 1. 1xx = Most recent access to Set 2 or Set 3 was to Set 2. 0xx = Most recent access to Set 2 or Set 3 was to Set 3. Cache write: ignored. 6:3 Dirty Bits — Cache read: the dirty bits for the selected entry (one bit per DWORD). Cache write: data written into the dirty bits for the selected entry. 10:4 TR5 Line Selection — Physical address bits 10:4 used to select one of 128 lines. 3:2 Set/DWORD Selection — Cache read: selects which of the four sets is used as the source for data transferred to the cache flush buffer. Cache write: selects which of the four sets is used as the destination for data transferred from the cache fill buffer. Flush buffer read: selects which of the four Words in the flush buffer is loaded into TR3. Fill buffer write: selects which of the four DWORDs in TR3 is written to the fill buffer. 1:0 Control Bits — If = 00: flush read or fill buffer write. Writing to TR3 fill buffer write. Reading TR3 initiates flush buffer read. If = 01: cache write. If = 10: cache read. If = 11: cache flush. ZFx86 Data Book 1.0 Rev D Page 59 2 2.2.4. Address Spaces 2.2.4.2. Memory Address Space The CPU can directly address either memory or I/O space. Figure 2-5 illustrates the range of addresses available for memory address space and I/O address space. For the processor, the addresses for physical memory range between 0000 0000h and FFFF FFFFh (4 GB). However, the address bus capability of the ZFx86 limits external memory address space to 256 MB.The accessible I/O addresses space ranges between 0000 0000h and 0000 FFFFh (64 KB). The processor does not use coprocessor communication space in upper I/O space between 8000 00F8h and 8000 00FFh as do the 386-style CPU’s. The I/O locations 22h and 23h are used for the processor configuration register access. The processor directly addresses up to 4 GB of physical memory. However, the address bus capability of the ZFx86 limits external memory address space to 256 MB. Memory address space is accessed as bytes, WORDS (16-bits) or DWORDs (32-bits). WORDS and DWORDs are stored in consecutive memory bytes with the low-order byte located in the lowest address. The physical address of a word or DWORD is the byte address of the low-order byte. 2.2.4.1. I/O Address Space The processor I/O address space is accessed using IN and OUT instructions to addresses referred to as “ports”. The accessible I/O address space is 64 KB and can be accessed as 8-bit, 16-bit or 32-bit ports. The execution of any IN or OUT instruction causes the M/IO# signal to be driven low, thereby selecting the I/O space instead of memory space. The processor configuration registers reside within the I/O address space at port addresses 22h and 23h and are accessed using standard IN and OUT instructions. The configuration registers are modified by writing the index of the configuration register to port 22h, then transferring the data through port 23h. Accesses to the on-chip configuration registers do not generate external I/O cycles. Each port 23h operation must be preceded by a port 22h write with a valid index value. Otherwise, the second and later port 23h operations are directed off-chip and generate external I/O cycles without modifying the on-chip configuration registers. Writes to port 22h outside of the processor index range (C0h-CFh and FEhFFh) result in external I/O cycles and do not affect the on-chip configuration registers. Reads of port 22h are always directed off-chip. ZFx86 Data Book 1.0 Rev D Memory can be addressed using nine different addressing modes. These addressing modes are used to calculate an offset address often referred to as an effective address. Depending on the operating mode of the CPU, the offset is then combined using memory management mechanisms to create a physical address that actually addresses the physical memory devices. Memory management mechanisms on the CPU consist of segmentation and paging. Segmentation allows each program to use several independent, protected address spaces. Paging supports a memory subsystem that simulates a large address space using a small amount of RAM and disk storage for physical memory. Either or both of these mechanisms can be used for management of the processor memory address space Page 60 2 Accessible Programmed I/O Space Physical Memory Space FFFF FFFFH FFFF FFFFH Not Accessible Physical Memory 4 GB Allowed Memory 256 MB Processor Configuration Register I/O Space 0000 FFFFh 64 KB 0000 0000h 0000 0023h 0000 0022h 0000 0000h Figure 2-5 Memory and I/O Address Spaces Offset Mechanism The offset mechanism computes an offset (effective) address by adding together up to three values: a base, an index and a displacement. The base, if present, is the value in one of eight 32-bit general registers at the time of the execution of the instruction. The index, like the base, is a value that is contained in one of the 32-bit general registers (except the ESP register) when the instruction is executed. The index differs from the base in that the index is first multiplied by a scale factor of 1, 2, 4 or 8 before the summation is made. The third component added to the memory address calculation is the displacement which is a value of up to 32-bits in length supplied as part of the instruction. See Figure 2-6 "Offset Address Calculation". Nine valid combinations of the base, index, scale factor and displacement can be used with the processor instruction set. These combinations are listed in Table 2.27. The ZFx86 Data Book 1.0 Rev D base and index both refer to contents of a register as indicated by [Base] and [Index] Index Base Displacement Scaling x1, x2, x4, x8 + Offset Address (Effective Address) Figure 2-6 Offset Address Calculation Page 61 2 Table 2.27 Memory Addressing Modes Addressing Mode Base Index Scale Factor Direct Displacement x Register Indirect x Based x Offset Address (OA) Calculation OA = DP OA = [BASE] Index x Scaled Index x Based Index x x Based Scaled Index x x Based Index with Displacement x x Based Scaled Index with Displacement x x x x OA = [BASE] + DP x OA = [INDEX] + DP x OA = ([INDEX] * SF) + DP OA = [BASE] + [INDEX] OA = [BASE] + ([INDEX] * SF) x x Real Mode Memory Addressing In real mode operation, the CPU only addresses the lowest 1 MB of memory. To calculate a physical memory address, the 16bit segment base address located in the selected segment register is multiplied by 16 and then the 16-bit offset address is added. The resulting 20-bit address is then extended with twelve zeros in the upper address bits to create the 32-bit physical address. Figure 2-13 illustrates the real mode address calculation. The addition of the base address and the offset address may result in a carry. Therefore, the resulting address may actually contain up to 21 significant address bits that can address memory in the first 64 KB above 1 MB. x OA = [BASE] + [INDEX] + DP x OA = [BASE] + ([INDEX] * SF) + DP • Optional Paging Mechanism that translates a linear address to the physical memory address. The offset and base address are added together to produce the linear address. If paging is not used, the linear address is used as the physical memory address. If paging is enabled, the paging mechanism is used to translate the linear address into the physical address. The offset mechanism is described in ‘Offset Mechanism’ on page 61. and applies to both real and protected mode. The selector and paging mechanisms are described in the following paragraphs. Protected Mode Memory Addressing In protected mode three mechanisms calculate a physical memory address: • Offset Mechanism that produces the offset or effective address as in real mode. • Selector Mechanism that produces the base address. ZFx86 Data Book 1.0 Rev D Page 62 2 Offset Mechanism Offset Address Linear Address = Physical Address + Selected Segment Register X 16 Figure 2-7 Real Mode Address Calculation Offset Address Offset Mechanism + Selector Mechanism Linear Address Optional Paging Mechanism Physical Memory Address Base Address Figure 2-8 Protected Mode Address Calculation Selector Mechanism Memory is divided into an arbitrary number of segments, each containing less than the 232 byte (4 GB) maximum. The six segment registers (CS, DS, SS, ES, FS and GS) each contain a 16-bit selector that is used when the register is loaded to locate a segment descriptor in either the global descriptor table (GDT) or the local descriptor table (LDT). The segment descriptor defines the base address, limit and attributes of the selected segment and is cached on the processor as a result of loading the selector. address in the hidden portion of the segment register to the offset address. If paging is not enabled, this linear address is used as the physical memory address. Figure 2-9 "Selector Mechanism" illustrates the operation of the selector mechanism. The cached descriptor contents are not visible to the programmer. When a memory reference occurs in protected mode, the linear address is generated by adding the segment base ZFx86 Data Book 1.0 Rev D Page 63 2 15 Selector Load 0 Index Segment Descriptor TI RPL TI = 0 TI = 1 (Accessed Segment Register) Segment Descriptor Local Descriptor Table Global Descriptor Table Cache Update From Memory Selector Descriptor Cache Base Address Figure 2-9 Selector Mechanism Paging Mechanism The paging mechanism supports a memory subsystem that simulates a large address space with a small amount of RAM and disk storage. The paging mechanism either translates a linear address to its corresponding physical address or generates an exception if the required page is not currently present in RAM. When the operating system services the exception, the required page is loaded into memory and the instruction is then restarted. Pages are either 4 KB or 1 MB in size. The CPU defaults to 4 KB pages that are aligned to 4 KB boundaries. A page is addressed by using two levels of tables as illustrated in Figure 2-10 on page 65. The upper 10 bits of the 32-bit linear address are used to locate an entry in the page directory table. The page directory table acts as a 32-bit master index to up to 1 KB individual second-level page tables. The selected entry in the page directory table, referred to as the ZFx86 Data Book 1.0 Rev D directory table entry, identifies the starting address of the second-level page table. The page directory table itself is a page and is, therefore, aligned to a 4 KB boundary. The physical address of the current page directory table is stored in the CR3 control register, also referred to as the Page Directory Base Register (PDBR). Bits 21:12 of the 32-bit linear address, the Page Table Index, locate a 32-bit entry in the second-level page table. The Page Table Entry (PTE) contains the base address of the page frame. The second-level page table addresses up to 1 KB individual page frames. A second-level page table is 4 KB in size and is itself a page. The lower 12 bits of the 32-bit linear address, the Page Frame Offset (PFO), locate the desired physical data within the page frame. Since the page directory table can point to 1 KB page tables, and each page table can point to 1 KB of page frames, a total of 1 MB of page Page 64 2 frames can be implemented. Since each page frame contains 4 KB, up to 4 GB of virtual memory can be addressed by the processor with a single page directory table. In addition to the base address of the page table or the page frame, each directory table entry or page table entry contains attribute bits and a Present (P) Flag bit as illustrated in Figure 2-10 and listed in Table 2.28. Linear Address 31 22 21 12 11 0 Page Table Index (PTI) Directory Table Index (DTI) Directory Table Page Frame Offset (PFO) Page Table 4 KB Page Frame 4 KB 4 KB Physical Data PTE DTE 0 0 CR3 0 Control Register Figure 2-10 Paging Mechanism If the P bit is set in the DTE, the page table is present and the appropriate page table entry is read. If P = 1 in the corresponding PTE (indicating that the page is in memory), the accessed and dirty bits are updated, if necessary, and the operand is fetched. Both accessed bits are set (DTE and PTE), if necessary, to indicate that the table and the page have been used to translate a linear address. The dirty bit (D) is set before the first write is made to a page. The P bits must be set to validate the remaining bits in the DTE and PTE. If either of the P bits is not set, a page fault is generated when the DTE or PTE is accessed. If P = 0, the remaining DTE/PTE bits are available for use by the operating system. For example, the ZFx86 Data Book 1.0 Rev D operating system can use these bits to record where on the hard disk the pages are located. A page fault is also generated if the memory reference violates the page protection attributes. Translation Look-Aside Buffer The translation look-aside buffer (TLB) is a cache for the paging mechanism and replaces the two-level page table lookup procedure for TLB hits. The TLB is a four-way set associative 32-entry page table cache that automatically keeps the most commonly used page table entries in the processor. The 32-entry TLB, coupled with a 4 KB page size, results in coverage of 128 KB of memory addresses. Page 65 2 The TLB must be flushed when entries in the page tables are changed. The TLB is flushed whenever the CR3 register is loaded. An indi- vidual entry in the TLB can be flushed using the INVLPG instruction. Table 2.28 Directory and Page Table Entry (DTE and PTE) Bit Definitions Bit Name Description 31:12 Base Address 11:9 -- 8:7 RSVD 6 D Dirty Bit — If set, indicates that a write access has occurred to the page (PTE only; undefined in DTE). 5 A Accessed Flag — If set, indicates that a read access or write access has occurred to the page. 4 PCD Page Caching Disable Flag — If set, indicates that the page is not cacheable in the on-chip cache. 3 PWT Page Write-Through Flag — If set, indicates that writes to the page or page tables that hit in the on-chip cache must update both the cache and external memory. 2 U/S User/Supervisor Attribute — If set (user), page is accessible at privilege level 3. If clear (supervisor), page is accessible only when CPL ≤ 2. 1 W/R Write/Read Attribute — If set (write), page is writable. If clear (read), page is read only. 0 P Present Flag — If set, indicates that the page is present in RAM, and validates the remaining DTE/PTE bits. If clear, indicates that the page is not present in memory and the remaining DTE/PTE bits can be used by the programmer. Specifies the base address of the page or page table. Undefined and available to the programmer. Reserved and not available to the programmer. 2.2.5. Interrupts and Exceptions 2.2.5.1. Interrupts The processing of either an interrupt or an exception changes the normal sequential flow of a program by transferring program control to a selected service routine. Except for SMM interrupts, the location of the selected service routine is determined by one of the interrupt vectors stored in the interrupt descriptor table. External events can interrupt normal program execution by using one of the three interrupt signals on the CPU. True interrupts are hardware interrupts and are generated by signal sources external to the CPU. All exceptions (including so-called software interrupts) are produced internally by the CPU. ZFx86 Data Book 1.0 Rev D • Non-maskable Interrupt (NMI signal) • Maskable Interrupt (INTR signal) • SMM Interrupt (SMI# signal). For most interrupts, program transfer to the interrupt routine occurs after the current instruction has been completed. When the execution returns to the original program, it begins immediately following the interrupted instruction. Page 66 2 The NMI interrupt cannot be masked by software and always uses interrupt vector 2 to locate its service routine. Since the interrupt vector is fixed and is supplied internally, no interrupt acknowledge bus cycles are performed. This interrupt is normally reserved for unusual situations such as parity errors and has priority over INTR interrupts. program execution is passed to an SMI service routine which runs in SMM address space reserved for this purpose. The remainder of this section does not apply to the SMM interrupts. SMM interrupts are described in greater detail in Section 2.2.5.4. ‘Interrupt and Exception Priorities’ on page 69. Once NMI processing has started no additional NMIs are processed until an IRET instruction is executed, typically at the end of the NMI service routine. If NMI is re-asserted prior to execution of the IRET instruction, one and only one NMI rising edge is stored and then processed after execution of the next IRET. Exceptions are generated by an interrupt instruction or a program error. Exceptions are classified as traps, faults or aborts depending on the mechanism used to report them and the ability to restart of the instruction which first caused the exception. During the NMI service routine, maskable interrupts may be enabled. If an unmasked INTR occurs during the NMI service routine, the INTR is serviced and execution returns to the NMI service routine following the next IRET. If a HALT instruction is executed within the NMI service routine, the processor restarts execution only in response to RESET, an unmasked INTR or an SMM interrupt. NMI does not restart CPU execution under this condition. The INTR interrupt is unmasked when the Interrupt Enable Flag (IF) in the EFLAGS register is set to 1. With the exception of string operations, INTR interrupts are acknowledged between instructions. Long string operations have interrupt windows between memory moves that allow INTR interrupts to be acknowledged. 2.2.5.2.Exceptions A Trap Exception is reported immediately following the instruction that generated the trap exception. Trap exceptions are generated by execution of a software interrupt instruction (INTO, INT 3, INT n, BOUND), by a single- step operation or by a data breakpoint. Software interrupts can be used to simulate hardware interrupts. For example, an INT n instruction causes the processor to execute the interrupt service routine pointed to by the nth vector in the interrupt table. Execution of the interrupt service routine occurs regardless of the state of the IF flag in the EFLAGS register. The one byte INT 3, or breakpoint interrupt (vector 3), is a particular case of the INT n instruction. By inserting this one byte instruction in a program, the user can set breakpoints in the code that can be used during debug. When an INTR interrupt occurs, the CPU performs two locked interrupt acknowledge bus cycles. During the second cycle, the CPU reads an 8-bit vector which is supplied by an external interrupt controller. This vector selects which of the 256 possible interrupt handlers will be executed in response to the interrupt. Single-step operation is enabled by setting the TF bit in the EFLAGS register. When TF is set, the CPU generates a debug exception (vector 1) after the execution of every instruction. Data breakpoints also generate a debug exception and are specified by loading the debug registers (DR0-DR7) with the appropriate values. The SMM interrupt has higher priority than either INTR or NMI. After SMI# is asserted, A Fault Exception is reported prior to completion of the instruction that generated the ZFx86 Data Book 1.0 Rev D Page 67 2 exception. By reporting the fault prior to instruction completion, the CPU is left in a state which allows the instruction to be restarted and the effects of the faulting instruction to be nullified. Fault exceptions include divide-by-zero errors, invalid opcodes, page faults and coprocessor errors. Debug exceptions (vector 1) are also handled as faults (except for data breakpoints and single-step operations). After execution of the fault service routine, the instruction pointer points to the instruction that caused the fault. An Abort Exception is a type of fault exception that is severe enough that the CPU cannot restart the program at the faulting instruction. The double fault (vector 8) is the only abort exception that occurs on the processor. 2.2.5.3.Interrupt Vectors When the CPU services an interrupt or exception, the current program’s instruction pointer and flags are pushed onto the stack to allow resumption of execution of the interrupted program. In protected mode, the processor also saves an error code for some exceptions. Program control is then transferred to the interrupt handler (also called the interrupt service routine). Upon execution of an IRET at the end of the service routine, program execution resumes at the instruction pointer address saved on the stack when the interrupt was serviced. Interrupt Vector Assignments Each interrupt (except SMI#) and exception is assigned one of 256 interrupt vector numbers listed in Table 2.29. The first 32 interrupt vector assignments are defined or reserved. INT instructions acting as software interrupts may use any of interrupt vectors, 0 through 255. The non-maskable hardware interrupt (NMI) is assigned vector 2. Illegal opcodes including ZFx86 Data Book 1.0 Rev D faulty FPU instructions will cause an invalid opcode fault, Interrupt Vector 6. Table 2.29 Interrupt Vector Assignments Interrupt Vectors Function Exception Type 0 Divide error FAULT 1 Debug exception TRAP/FAULT (see note) 2 NMI interrupt 3 Breakpoint TRAP 4 Interrupt on overflow TRAP 5 BOUND range exceeded FAULT 6 Invalid opcode FAULT 7 Device not available FAULT 8 Double fault ABORT 9 Reserved 10 Invalid TSS FAULT 11 Segment not present FAULT 12 Stack fault FAULT 13 General protection fault TRAP/FAULT 14 Page fault FAULT 15 Reserved 16 FPU error FAULT 17 Alignment check exception FAULT 18-31 Reserved 32-255 Maskable hardware interrupts TRAP 0-255 Programmed interrupt TRAP Note: Data breakpoints and single steps are traps. All are debug exceptions are faults. In response to a maskable hardware interrupt (INTR), the processor issues interrupt acknowledge bus cycles used to read the vector number from external hardware. These vectors should be in the range 32-255 as vectors 0-31 are pre-defined. Page 68 2 Interrupt Descriptor Table The interrupt vector number is used by the CPU to locate an entry in the interrupt descriptor table (IDT). In real mode, each IDT entry consists of a 4-byte far pointer to the beginning of the corresponding interrupt service routine. In protected mode, each IDT entry is an 8-byte descriptor. The Interrupt Descriptor Table Register (IDTR) specifies the beginning address and limit of the IDT. Following RESET, the IDTR contains a base address of 0h with a limit of 3FFh. The IDT can be located anywhere in physical memory as determined by the IDTR register. The IDT may contain different types of descriptors: interrupt gates, trap gates and task gates. Interrupt gates are used primarily to enter a hardware interrupt handler. Trap gates are generally used to enter an exception handler or software interrupt handler. If an interrupt gate is used, the Interrupt Enable Flag (IF) in the EFLAGS register is cleared before the interrupt handler is entered. Task gates are used to make the transition to a new task. 2.2.5.4. Interrupt and Exception Priorities exceptions and hardware interrupts. The priorities for competing interrupts and exceptions are listed in Table 2-31 “Interrupt and Exception Priorities”. SMM interrupts always take precedence. Debug traps for the previous instruction and next instructions are handled as the next priority. When NMI and maskable INTR interrupts are both detected at the same instruction boundary, the processor services the NMI interrupt first. The processor checks for exceptions in parallel with instruction decoding and execution. Several exceptions can result from a single instruction. However, only one exception is generated upon each attempt to execute the instruction. Each exception service routine should make the appropriate corrections to the instruction and then restart the instruction. In this way, exceptions can be serviced until the instruction executes properly. The processor supports instruction restart after all faults, except when an instruction causes a task switch to a task whose task state segment (TSS) is partially not present. A TSS can be partially not present if the TSS is not page aligned and one of the pages where the TSS resides is not currently in memory. As the processor executes instructions, it follows a consistent policy for prioritizing Table 2.30 Interrupt and Exception Priorities Priority Description Notes 0 SMM hardware interrupt. SMM interrupts are caused by SMI# asserted and always have highest priority. 1 Debug traps and faults from previous instruction. Includes single-step trap and data breakpoints specified in the debug registers. 2 Debug traps for next instruction. Includes instruction execution breakpoints specified in the debug registers. 3 Non-maskable hardware interrupt. Caused by NMI asserted. 4 Maskable hardware interrupt. Caused by INTR asserted and IF = 1. 5 Faults resulting from fetching the next instruction. Includes segment not present, general protection fault and page fault. 6 Faults resulting from instruction decoding. Includes illegal opcode, instruction too long, or privilege violation. ZFx86 Data Book 1.0 Rev D Page 69 2 Table 2.30 Interrupt and Exception Priorities Priority Description Notes 7 WAIT instruction and TS = 1 and MP = 1. Device not available. Exception generated. 8 ESC instruction and EM = 1 or TS = 1. Device not available. Exception generated. 9 Floating point error exception. Caused by unmasked floating point exception with NE = 1. 10 Segmentation faults (for each memory reference required by the instruction) that prevent transferring the entire memory operand. Includes segment not present, stack fault, and general protection fault. 11 Page Faults that prevent transferring the entire memory operand. 12 Alignment check fault. 2.2.5.5. Exceptions in Real Mode 2.2.5.6. Error Codes Many of the exceptions described in the ‘Interrupt and Exception Priorities’ on page 69 are not applicable in real mode. Exceptions 10, 11, and 14 do not occur in real mode. Other exceptions have slightly different meanings in real mode as listed in ‘Exception Changes in Real Mode’ on page 70 When operating in protected mode, the following exceptions generate a 16-bit error code: • Double Fault • Alignment Check • Invalid TSS • Segment Not Present Table 2.31 Exception Changes in Real Mode Vector Protected Mode Function • Page Fault Double fault Interrupt table limit overrun. 10 Invalid TSS -- 11 Segment not present -- 12 Stack fault SS segment limit overrun 13 General protection fault CS, DS, ES, FS, GS segment limit overrun Page fault -- Note: -- means “does not occur”. ZFx86 Data Book 1.0 Rev D • General Protection Fault Real Mode Function 8 14 • Stack Fault The error code format is shown in Figure 2-18 and the error code bit definitions are listed in Table 2-33. Bits [15:3] (selector index) are not meaningful if the error code was generated as the result of a page fault. The error code is always zero for double faults and alignment check exceptions. 15 Selector Index 3 2 1 0 S 2 S 1 S 0 Figure 2-11 Error Code Format Page 70 2 Table 2.32 Error Code Bit Definitions Fault Type Page Fault Selector Index (Bits [15:3]) Reserved S2 (Bit 2) S1 (Bit 1) S0 (Bit 0) Fault caused by: Fault occurred during: Fault occurred during: 0 = not present page 1 = page-level protection violation 0 = read access 1 = write access 0 = supervisor access 1 = user access IDT Fault Index of faulty IDT selector Reserved 1 If = 1, exception occurred while trying to invoke exception or hardware interrupt handler. Segment Fault Index of faulty selector TI bit of faulty selector 0 If = 1, exception occurred while trying to invoke exception or hardware interrupt handler. 2.2.6. System Management Mode System Management Mode (SMM) provides an additional interrupt which can be used for system power management or software transparent emulation of I/O peripherals. SMM is entered using the System Management Interrupt (SMI#) that has a higher priority than any other interrupt, including NMI. An SMI interrupt can also be triggered via the software using an SMINT instruction. After an SMI interrupt, portions of the CPU state are automatically saved, SMM is entered, and program execution begins at the base of SMM address space (Figure 2-12). Running in protected SMM address space, the interrupt routine does not interfere with the operating system or any application program. Eight SMM instructions are included in the processor instruction set that permit software initiated SMM, and saving and restoring of the total CPU state when in SMM mode. The signals SMI# and SMADS# support SMM functions. ZFx86 Data Book 1.0 Rev D Page 71 2 Potential SMM Address Space Physical Memory Space FFFF FFFFh FFFF FFFFh ADS# Active 4 KB to 32 MB Physical Memory 4 GB Defined SMM Address Space SMADS# Active Allowed Memory 256 MB ADS# Active 0000 0000h 0000 0000h Non-SMM Mode ADS# Active SMM Mode Figure 2-12 System Management Memory Address Space 2.2.6.1. SMM Operation SMM operation is summarized in Figure 2-20. Entering SMM requires the assertion of the SMI# signal for at least two CLK periods or execution of the SMINT instruction. For the SMI# or SMINT instruction to be recognized, the following configuration register bits must be set as shown in Table 2.33. The configuration registers are discussed in detail in Section “Configuration Registers” on page 25. Table 2.33 Requirement for Recognizing SMI# and SMINT SMI# SMINT SMI Register (Bit) CCR1 [1] 1 1 SMAC CCR1 [2] 0 1 SMAR SIZE [3-0] >0 >0 located at the top of SMM memory space. After the header is saved, the CPU enters real mode and begins executing the SMI service routine starting at the SMM memory base address. The SMI service routine is user definable and may contain system or power management software. If the power management software forces the CPU to power down, or the SMI service routine modifies more than what is automatically saved, the complete CPU state information can be saved. After recognizing SMI# or SMINT and prior to executing the SMI service routine, some of the CPU state information is changed. Prior to modification, this information is automatically saved in the SMM memory space header ZFx86 Data Book 1.0 Rev D Page 72 2 SMI# Sampled Active or SMINT Instruction Executed CPU State Stored in SMM Address Space Header Program Flow Transfers to SMM Address Space CPU Enters Real Mode Execution Begins at SMM Address Space Base Address RSM Instruction Restores CPU State Using Header Information Normal Execution Resumes Figure 2-13 SMI Execution Flow Diagram 2.2.6.2. SMM Memory Space Header With every SMI interrupt or SMINT instruction, certain CPU state information is automatically saved in the SMM memory space header located at the top of SMM address space. See Figure 2-14. The header contains CPU state information that is modified when servicing an SMI interrupt. Included in this information are two pointers. The Current IP points to the instruction executing when the SMI was detected. ZFx86 Data Book 1.0 Rev D Page 73 2 31 0 Top of SMM Address Space DR7 -4h EFLAGS -8h CR0 -Ch Current IP -10h Next IP 16 15 31 0 -18h CS Selector Reserved -1Ch CS Descriptor (Bits 63:32) CS Descriptor (Bits 31:0) 31 Reserved -14h 3 2 1 0 -20h I -24h I/O Write Address -28h S P 16 15 I/O Write Data Size I/O Write Data -2Ch ESI or EDI -30h Figure 2-14 SMM Memory Space Header The Next IP points to the instruction that will be executed after exiting SMM. Also saved are the contents of debug register 7 (DR7), the extended flags register (EFLAGS), and control register 0 (CR0). If SMM has been entered due to an I/O trap for a REP INSx or REP OUTSx instruction, the Current IP and Next IP fields contain the same addresses and the I and P field contain valid information. tion. The I/O write information is not restored within the CPU when executing an RSM instruction. If entry into SMM was caused by an I/O trap (“I/O Trapping” on page 99.), it is useful for the programmer to know the port address, data size and data value associated with that I/O operation. This information is also saved in the header and is only valid for an I/O write opera- ZFx86 Data Book 1.0 Rev D Page 74 2 Table 2.34 SMM Memory Space Header Name Size Description DR7 4 Bytes The contents of Debug Register 7. EFLAGS 4 Bytes The contents of Extended Flags Register. CR0 4 Bytes The contents of Control Register 0. Current IP 4 Bytes The address of the instruction executed prior to servicing SMI interrupt. Next IP 4 Bytes The address of the next instruction that will be executed after exiting SMM mode. CS Selector 2 Bytes Code segment register selector for the current code segment. CS Descriptor 8 Bytes Code segment register descriptor for the current code segment. S 1 Bit Software SMM Entry Indicator. S = 1 if current SMM is the result of an SMINT instruction. S = 0 if current SMM is not the result of an SMINT instruction. P 1 Bit REP INSx/OUTSx Indicator. P = 1 if current instruction has a REP prefix. P = 0 if current instruction does not have a REP prefix. I 1 Bit IN, INSx, OUT, or OUTSx Indicator. I = 1 if current instruction performed is an I/O WRITE. I = 0 if current instruction performed is an I/O READ. I/O Write Data Size 2 Bytes Indicates size of data for the trapped I/O write. 01h = Byte 03h = WORD 0Fh = DWORD I/O Write Address 2 Bytes Address of the trapped I/O write. I/O Write Data 4 Bytes Data associated with the trapped I/O write. ESI or EDI 4 Bytes Restored ESI or EDI value. Used when it is necessary to repeat a REP OUTSx or REP INSx instruction when one of the I/O cycles caused an SMI# trap. Note: INSx = INS, INSB, INSW or INSD instruction. OUTSx = OUTS, OUTSB, OUTSW and OUTSD instruction. 2.2.6.3. SMM Instructions The processor automatically saves the minimal amount of CPU state information when entering SMM which allows fast SMI service routine entry and exit. After entering the SMI service routine, the MOV, SVDC, SVLDT and SVTS instructions can be used to save the complete CPU state information. If the SMI service routine modifies more than what is automatically saved or forces the CPU to power down, the complete CPU state information must be saved. Since the CPU is a static device, its internal state is retained when the input clock is ZFx86 Data Book 1.0 Rev D stopped. Therefore, an entire CPU state save is not necessary prior to stopping the input clock. The SMM instructions, listed in Table 2-36, can only be executed if the following conditions are met: Page 75 2 SMI# is enabled and SMAR SIZE > 0 and [the Current Privilege Level (CPL) = 0 and the SMAC bit (CCR1, bit 2) is set] or [the Current Privilege Level (CPL) = 0 and the CPU is in an SMI service routine (SMI# = 0)]. If the above conditions are not met and an attempt is made to execute an SVDC, RSDC, SVLDT, RSLDT, SVTS, RSTS, SMINT or RSM instruction, an invalid opcode exception is generated. These instructions can be executed outside of defined SMM space provided the above conditions are met. The SMINT instruction can be used by software to enter SMM. The CPU will not drive the SMI# output low during the software initiated SMM. Table 2.35 SMM Instruction Set Instruction OPCODE Format Description SVDC 0F 78 [mod sreg3 r/m] SVDC mem80, sreg3 Save Segment Register and Descriptor: Saves reg (DS, ES, FS, GS, or SS) to mem80. RSDC 0F 79 [mod sreg3 r/m] RSDC sreg3, mem80 Restore Segment Register and Descriptor: Restores reg (DS, ES, FS, GS, or SS) from mem80 Use RSM to restore CS. Note: Processing “RSDC CS, Mem80” will produce an exception. SVLDT 0F 7A [mod 000 r/m] SVLDT mem80 Save LDTR and Descriptor: Saves Local Descriptor Table (LDTR) to mem80. RSLDT 0F 7B [mod 000 r/m] RSLDT mem80 Restore LDTR and Descriptor: Restores Local Descriptor Table (LDTR) from mem80 SVTS 0F 7C [mod 000 r/m] SVTS mem80 Save TSR and Descriptor: Saves Task State Register (TSR) to mem80. RSTS 0F 7D [mod 000 r/m] RSTS mem80 Restore TSR and Descriptor: Restores Task State Register (TSR) from mem80. SMINT 0F 7E SMINT Software SMM Entry: CPU enters SMM mode. CPU state information is saved in SMM memory space header and execution begins at SMM base address. RSM 0F AA RSM Resume Normal Mode: Exits SMM mode. The CPU state is restored using the SMM memory space header and execution resumes at interrupted point. Note: mem80 = 80-bit memory location If the SMI# is asserted to the CPU during a software SMM, the SMI# handshake occurs normally. The hardware SMI# is serviced after the software SMM has been exited by execution of the RSM instruction. ZFx86 Data Book 1.0 Rev D All of the SMM instructions (except RSM and SMINT) save or restore 80 bits of data, allowing the saved values to include the hidden portion of the register contents. Page 76 2 2.2.6.4. SMM Memory Space SMM memory space is defined by specifying the base address and size of the SMM memory space in the SMAR register. The base address must be a multiple of the SMM memory space size. For example, a 32 KB SMM memory space must be located at a 32 KB address boundary. The memory space size can range from 4 KB to 32 MB. SMM memory space accesses are always non-cacheable. SMM accesses ignore the state of the A20M# input signal and drive the A20 address bit to the unmasked value. Access to the SMM memory space can be made even though not in SMM mode by setting the SMAC bit in the CCR1 register. This feature may be used to initialize the SMM memory space. While in SMM mode, SMADS# address strobes are generated instead of ADS# for SMM memory accesses. Any memory accesses outside the defined SMM space result in normal memory accesses and ADS# strobes. Data (non-code) accesses to main memory that overlap with defined SMM memory space are allowed if MMAC in CCR1 is set. In this case, ADS# strobes are generated for data accesses only and SMADS# strobes continue to be generated for code accesses. 2.2.6.5. SMI Service Routine Execution After the SMM header has been saved, upon entry into SMM the CR0, EFLAGS, and DR7 registers are set to their reset values. The Code Segment (CS) register is loaded with the base, as defined by the SMAR register, and a limit of 4 GB. The SMI service routine then begins execution at the SMM base address in real mode. ately after entering the SMI service routine, the programmer must use CS as a segment override. I/O port access is possible during the routine, but care must be taken to save registers modified by the I/O instructions. Before using a segment register, the register and the register’s descriptor cache contents should be saved using the SVDC instruction. While executing in the SMM space, execution flow can transfer to normal memory locations. Hardware interrupts, (INTRs and NMIs), may be serviced during a SMI service routine. If interrupts are to be serviced while executing in the SMM memory space, the SMM memory space must be within the 0 to 1 MB address range to guarantee proper return to the SMI service routine after handling the interrupt. INTRs are automatically disabled when entering SMM since the IF flag is set to its reset value. Once in SMM, the INTR can be enabled by setting the IF flag. An NMI event in SMM mode can be enabled by setting NMIEN in the CCR3 register. If NMI is not enabled while in SMM mode, the CPU latches one NMI event and services the interrupt after NMI has been enabled or after exiting SMM mode through the RSM instruction. Within the SMI service routine, protected mode may be entered and exited as required, and real or protected mode device drivers may be called. To exit the SMI service routine, a Resume (RSM) instruction, rather than an IRET, is executed. The RSM instruction causes the processor to restore the CPU state using the SMM header information and resume execution at the interrupted point. If the full CPU state was saved by the programmer, the stored values should be reloaded prior to executing the RSM instruction using the MOV, RSDC, RSLDT and RSTS instructions. The programmer must save the value of any registers that may be changed by the SMI service routine. For data accesses immedi- ZFx86 Data Book 1.0 Rev D Page 77 2 CPU States Related to SMM and Suspend Mode Figure 2-15 illustrates the various CPU states associated with SMM and suspend mode. While in the SMI service routine, the processor can enter suspend mode either by (1) executing a halt (HLT) instruction or (2) by asserting the SUSP# input. During SMM operations and while in SUSP# initiated suspend mode, an occurrence of either NMI or INTR is latched. (In order for INTR to be latched, the IF flag must be set.) NMI or INTR Suspend Mode (SUSPA# = 0) The INTR or NMI is serviced after exiting suspend mode. If suspend mode is entered via a HLT instruction from the operating system or application software, the reception of an SMI# interrupt causes the CPU to exit suspend mode and enter SMM. If suspend mode is entered via the hardware (SUSP# = 0) while the operating system or application software is active, the CPU latches one occurrence of INTR, NMI and SMI#. Interrupt Service Routine IRET* HLT* NMI or INTR SUSP# = 0 OS/Application Software RESET SMI# = 0 SMI# = 0 SMINT* (INTR, NMI and SMI latched) RSM* Non-SMM Operations SMM Operations SMI Service Routine (SMI# = 0) INTR or NMI IRET* Interrupt Service Routine Suspend Mode (SUSPA# = 0) SUSP# = 1 HLT* Suspend Mode (SUSPA# = 0) IRET* INTR and NMI SUSP# = 0 SUSP# = 1 Interrupt Service Routine Suspend Mode (SUSPA# = 0) * Instructions (INTR and NMI latched) Figure 2-15 SMM and Suspend Mode State Diagram ZFx86 Data Book 1.0 Rev D Page 78 2 SL-enhanced Compatibility Mode SMM Control Bit Following power-up or RESET, the CPU SMM interface pins are disabled. Once enabled, these two pins can either function as defined previously (SMI and SMADS) or can be programmed to function with a signalling protocol compatible with the 32-bit x86enhanced CPUs (SMI, SMIACT). This section describes the operation of the SMM interface pins when operating in the SL-compatible mode. The SMM_Mode bit in the configuration register (CCR3 bit 3) controls the SMM interface mode. Once the SMI_Lock bit is set, the CPU must be reset in order to modify SMI_Lock and SMM_Mode. Pin Definitions The two pins that change function in SLcompatible mode are SMI and SMADS. Table 2.36 SMM Pin Definitions Non-SLCompatible Mode SL-Compatible Mode SMI: Bidirectional System Management Interrupt pin. SMI: System Management Interrupt input pin. Asserted by the system logic to request an SMI interrupt. Sampled by the CPU on each rising clock edge. Causes I/O trap to occur if sampled and found asserted at least two clocks prior to ready sampled asserted for an I/O cycle. Asserted by the system logic to request an SMI interrupt. Sampled by the CPU on each rising clock edge. SMI is falling edge sensitive and causes an I/O trap to occur if sampled and found asserted at least three clocks prior to RDY/BRDY sampled asserted for any I/O cycle. Asserted by the CPU during execution of an SMI service routine or in response to SMINT if SMAC is set. SMADS: SMI Address Strobe output used to indicate that the current bus cycle is an SMM memory access. Nested SMI In Non-SLCompatible mode, nested SMI’s cannot occur due to the fact that the SMI pin becomes an output during SMI servicing. In SL-Compatible mode, if an SMI occurs during an SMI service routine, one and only one SMI is latched. The latched SMI is then serviced immediately following execution of a RSM instruction (used to exit the original SMI service routine). SMM Features Not Used with SLCompatible Interface. The SMAC and MMAC functions are disabled when in SL-Compatible mode. Additionally, SMIACT remains asserted while executing an SMI service routine regardless of the address being accessed. In other words, if the SMI service routine accesses memory outside the defined SMM memory space, SMIACT ZFx86 Data Book 1.0 Rev D SMIACT: SMI Active output asserted by the CPU during execution of an SMI service routine. remains asserted. Also, the SMINT instruction should not be used in SL-Compatible mode. Write-Back Caching and SMM The CPU allows caching of SMM memory accesses. The SMM memory caching may cause coherency problems in systems where SMM memory space and normal memory space overlap. Therefore, one of the following options is recommended: 1) Flush the cache when entering and exiting an SMI service routine. OR 2) Flush the cache when entering an SMI service routine and then make all SMM accesses non-cacheable using the KEN pin. In either case it is recommended to assert the FLUSH input pin when the SMIACT pin is Page 79 2 asserted. Asserting FLUSH in this manner is acceptable for a CPU with write-through cache as the flush invalidates the cache in a single clock. vector and flag information (i.e., stack pointer is greater than 0005h). Otherwise, shutdown can only be exited by a processor reset. However, on CPUs with write-back cache, asserting FLUSH requires the writing of all dirty data to external memory prior to invalidating the cache contents. Bus cycles that address normal memory addresses that overlap with SMM memory space should not be issued while SMIACT is asserted. Segment protection and page protection are safeguards built into the CPU protected mode architecture which deny unauthorized or incorrect access to selected memory addresses. These safeguards allow multitasking programs to be isolated from each other and from the operating system. Page protection is discussed earlier in this chapter in ‘Paging Mechanism’ on page 64. This section concentrates on segment protection. Therefore, while in SL-Compatible mode, the CPU automatically writes all dirty data to memory and then invalidates the cache prior to asserting SMIACT. This guarantees that no dirty data exists in the CPU at the time that SMIACT is asserted. SMM accesses are always non-cacheable and the cache is flushed before entering the SMI service routine. For these reasons, a bus snoop that occurs while SMIACT is asserted can never hit on a dirty line that is in SMM space or the overlapped normal memory space.Therefore, bus snoops that occur, while SMIACT is asserted, never result in memory incoherences. 2.2.7. Shutdown and Halt The halt instruction (HLT) stops program execution and prevents the processor from using the local bus until restarted. The processor then enters a low-power suspend mode if the HLT bit in CCR2 is set. SMI, NMI, INTR with interrupts enabled (IF bit in EFLAGS = 1), or RESET forces the CPU out of the halt state. If interrupted, the saved code segment and instruction pointer specify the instruction following the HLT. Shutdown occurs when a severe error is detected that prevents further processing. An NMI input can bring the processor out of shutdown if the IDT limit is large enough to contain the NMI interrupt vector (at least 000Fh) and the stack has enough room to contain the ZFx86 Data Book 1.0 Rev D 2.2.8. Protection Selectors and descriptors are the key elements in the segment protection mechanism. The segment base address, size, and privilege level are established by a segment descriptor. Privilege levels control the use of privileged instructions, I/O instructions and access to segments and segment descriptors. Selectors are used to locate segment descriptors. Segment accesses are divided into two basic types, those involving code segments (e.g., control transfers) and those involving data accesses. The ability of a task to access a segment depends on: • the segment type • the instruction requesting access • the type of descriptor used to define the segment • the associated privilege levels (described below). Data stored in a segment can be accessed only by code executing at the same or a more privileged level. A code segment or procedure can only be called by a task executing at the same or a less privileged level. Page 80 2 2.2.8.1. Privilege Levels The values for privilege levels range between 0 and 3. Level 0 is the highest privilege level (most privileged), and level 3 is the lowest privilege level (least privileged). The privilege level in real mode is effectively 0. The Descriptor Privilege Level (DPL) is the privilege level defined for a segment in the segment descriptor. The DPL field specifies the minimum privilege level needed to access the memory segment pointed to by the descriptor. The Current Privilege Level (CPL) is defined as the current task’s privilege level. The CPL of an executing task is stored in the hidden portion of the code segment register and essentially is the DPL for the current code segment. The Requested Privilege Level (RPL) specifies a selector’s privilege level and is used to distinguish between the privilege level of a routine actually accessing memory (the CPL), and the privilege level of the original requestor (the RPL) of the memory access. The lesser of the RPL and CPL is called the effective privilege level (EPL). Therefore, if RPL = 0 in a segment selector, the effective privilege level is always determined by the CPL. If RPL = 3, the effective privilege level is always 3 regardless of the CPL. For a memory access to succeed, the effective privilege level (EPL) must be at least as privileged as the descriptor privilege level (EPL £ DPL). If the EPL is less privileged than the DPL (EPL > DPL), a general protection fault is generated. For example, if a segment has a DPL = 2, an instruction accessing the segment only succeeds if executed with an EPL £ 2. 2.2.8.2. I/O Privilege Levels The I/O Privilege Level (IOPL) allows the operating system executing at CPL = 0 to define the least privileged level at which IOPL-sensitive instructions can unconditionally be used. ZFx86 Data Book 1.0 Rev D The IOPL-sensitive instructions include CLI, IN, OUT, INS, OUTS, REP INS, REP OUTS, and STI. Modification of the IF bit in the EFLAGS register is also sensitive to the I/O privilege level. The IOPL is stored in the EFLAGS register. An I/O permission bit map is available as defined by the 32-bit Task State Segment (TSS). Since each task can have its own TSS, access to individual I/O ports can be granted through separate I/O permission bit maps. If CPL <= IOPL, IOPL-sensitive operations can be performed. If CPL > IOPL, a general protection fault is generated if the current task is associated with a 16-bit TSS. If the current task is associated with a 32-bit TSS and CPL > IOPL, the CPU consults the I/O permission bitmap in the TSS to determine on a port-by-port basis whether or not I/O instructions (IN, OUT, INS, OUTS, REP INS, REP OUTS) are permitted, and the remaining IOPL-sensitive operations generate a general protection fault. 2.2.8.3. Privilege Level Transfers A task’s CPL can be changed only through intersegment control transfers using gates or task switches to a code segment with a different privilege level. Control transfers result from exception and interrupt servicing and from execution of the CALL, JMP, INT, IRET and RET instructions. There are five types of control transfers that are summarized in Table 2.37. Control transfers can be made only when the operation causing the control transfer references the correct descriptor type. Any violation of these descriptor usage rules causes a general protection fault. Any control transfer that changes the CPL within a task results in a change of stack. The initial values for the stack segment (SS) and stack pointer (ESP) for privilege levels 0, 1, and 2 are stored in the TSS. During a JMP or CALL control transfer, the SS and ESP are Page 81 2 loaded with the new stack pointer and the previous stack pointer is saved on the new stack. When returning to the original privilege level, the RET or IRET instruction restores the less-privileged stack. Table 2.37 Descriptor Types Used for Control Transfer Control Transfer Type Operation Types Descriptor Descriptor Table Intersegment within the same privilege level. JMP, CALL, RET, IRET* Code Segment GDT or LDT Intersegment to the same or a more privileged level. Interrupt within task (could change CPL level). CALL Gate Call GDT or LDT Interrupt Instruction, Exception External Interrupt Trap or Interrupt Gate LDT Intersegment to a less privileged level (changes task CPL). RET, IRET* Code Segment GDT or LDT Task Switch via TSS. CALL, JMP Task State Segment GDT Task Switch via Task Gate. CALL, JMP Task Gate GDT or LDT IRET** Interrupt Instruction, Exception, External Interrupt Task Gate IDT * ** NT (Nested Task bit in EFLAGS) = 0 NT (Nested Task bit in EFLAGS) = 1 Gates Gate descriptors provide protection for privilege transfers among executable segments. Gates are used to transition to routines of the same or a more privileged level. Call gates, interrupt gates and trap gates are used for privilege transfers within a task. Task gates are used to transfer between tasks. Gates conform to the standard rules of privilege. In other words, gates can be accessed by a task if the effective privilege level (EPL) is the same or more privileged than the gate descriptor’s privilege level (DPL). 2.2.8.4. Initialization and Transition to Protected Mode The processor switches to real mode immediately after RESET. While operating in real mode, the system tables and registers should be initialized. The GDTR and IDTR must point to a valid GDT and IDT, respectively. The size of the ZFx86 Data Book 1.0 Rev D IDT should be at least 256 bytes, and the GDT must contain descriptors which describe the initial code and data segments. The processor can be placed in protected mode by setting the PE bit in the CR0 register. After enabling protected mode, the CS register should be loaded and the instruction decode queue should be flushed by executing an intersegment JMP. Finally, all data segment registers should be initialized with appropriate selector values. 2.2.9. Virtual 8086 Mode Both real mode and virtual 8086 (V86) mode are supported by the CPU, allowing execution of 8086 application programs and 8086 operating systems. V86 mode allows the execution of 8086-type applications, yet still permits use of the processor protection mechanism. V86 tasks run at privilege level 3. Upon entry, all Page 82 2 segment limits are set to FFFFh (64 KB) as in real mode. 2.2.9.1. Memory Addressing While in V86 mode, segment registers are used in an identical fashion to real mode. The contents of the segment register are multiplied by 16 and added to the offset to form the segment base linear address. The CPU permits the operating system to select which programs use the V86 address mechanism and which programs use protected mode addressing for each task. The processor also permits the use of paging when operating in V86 mode. Using paging, the 1 MB address space of the V86 task can be mapped to anywhere in the 4 GB linear address space of the CPU. The paging hardware allows multiple V86 tasks to run concurrently and provides protection and operating system isolation. The paging hardware must be enabled to run multiple V86 tasks or to relocate the address space of a V86 task to physical address space greater than 1 MB. 2.2.9.2. Protection All V86 tasks operate with the least amount of privilege (level 3) and are subject to all of the protected mode protection checks. As a result, any attempt to execute a privileged instruction within a V86 task results in a general protection fault. In V86 mode a slightly different set of instructions is sensitive to the I/O privilege level (IOPL) than in protected mode. The instructions are: CLI, INTn, IRET, POPF, PUSHF, and STI. The INT3, INTO and BOUND variations of the INT instruction are not IOPL sensitive. 2.2.9.3. Interrupt Handling To fully support the emulation of an 8086-type machine, interrupts in V86 mode are handled as follows. When an interrupt or exception is serviced in V86 mode, program execution ZFx86 Data Book 1.0 Rev D transfers to the interrupt service routine at privilege level 0 (i.e., transition from V86 to protected mode occurs) and the VM bit in the EFLAGS register is cleared. The protected mode interrupt service routine then determines if the interrupt came from a protected mode or V86 application by examining the VM bit in the EFLAGS image stored on the stack. The interrupt service routine may then choose to allow the 8086 operating system to handle the interrupt or may emulate the function of the interrupt handler. Following completion of the interrupt service routine, an IRET instruction restores the EFLAGS register (restores VM = 1) and segment selectors and control returns to the interrupted V86 task. 2.2.9.4. Entering and Leaving V86 Mode V86 mode is entered from protected mode by either executing an IRET instruction at CPL = 0 or by task switching. If an IRET is used, the stack must contain an EFLAGS image with VM = 1. If a task switch is used, the TSS must contain an EFLAGS image containing a 1 in the VM bit position. The POPF instruction cannot be used to enter V86 mode since the state of the VM bit is not affected. V86 mode can only be exited as the result of an interrupt or exception. The transition out must use a 32bit trap or interrupt gate which must point to a non-conforming privilege level 0 segment (DPL = 0), or a 32-bit TSS. These restrictions are required to permit the trap handler to IRET back to the V86 program. 2.2.10. FPU Operations 2.2.10.1. FPU Register Set In addition to the registers described to this point, the FPU circuitry within the CPU provides the user eight data registers (accessed in a stack-like manner), a control register, and a status register. The CPU also provides a data register tag word which improves context switching and stack performance by maintaining empty/non-empty Page 83 2 status for each of the eight data registers. In addition, registers in the CPU contain pointers to (a) the memory location containing the current instruction word and (b) the memory location containing the operand associated with the current instruction word (if any). FPU Tag Word Register. The processor maintains a tag word register comprised of two bits for each physical data register. Tag Word fields assume one of four values depending on the contents of their associated data registers, Valid (00), Zero (01), Special (10), and Empty (11). Note: Denormal, Infinity, QNaN, SNaN and unsupported formats are tagged as “Special”. Tag values are maintained transparently by the processor and are only available to the programmer indirectly through the FSTENV and FSAVE instructions. The tag word with tag fields for each associated physical register, tag(n), is shown in Figure 2-16. 15 13 11 9 7 5 3 1 Tag 7 Tag 6 Tag 5 Tag 4 Tag 3 Tag 2 Tag 1 Tag 0 Figure 2-16 Tag Word Register that reflect exception status, operation execution status, register status, operand class, and comparison results. This register is continuously accessible to the CPU regardless of the state of the Control or Execution Units. The Status Register’s bit definitions are given in Table 2.38. 15 11 7 3 B C3 S S S C2 C1 C0 ES SF P U O Z D I Figure 2-17 FPU Status Register FPU Mode Control Register. The FPU Mode Control Register (MCR), Figure 2-18, is used by the CPU to specify the operating mode of the FPU. The MCR contains bit fields which specify the rounding mode to be used, the precision by which to calculate results, and the exception conditions which should be reported to the CPU via traps. The user controls precision, rounding, and exception reporting by setting or clearing appropriate bits in the MCR. The Mode Control Register’s bit definitions are given in Table 2.39. 15 11 7 3 FPU Status Register. The FPU circuitry - - - - RC RC PC PC - - P U O Z D I communicates information about its status and the results of operations to the CPU via the Figure 2-18 FPU Mode Control Register status register. The FPU status register, illustrated in Figure 2-17, is comprised of bit fields Table 2.38 Status Control Register Bit Definitions Bit Name 15 B 14, 10:8 C3-C0 13:11 SSS Top of stack register number which points to the current TOS. 7 ES Error indicator. Set to 1 if an unmasked exception is detected. 6 SF Stack Fault or invalid register operation bit. 5 P Precision error exception bit. 4 U Underflow error exception bit. 3 O Overflow error exception bit. 2 Z Divide by zero exception bit. 1 D Denormalized operand error exception bit. ZFx86 Data Book 1.0 Rev D Description Copy of the ES bit. (ES is bit 7 in this table.) Condition code bits. Page 84 2 Table 2.38 Status Control Register Bit Definitions Bit Name 0 I Description Invalid operation exception bit. Table 2.39 Mode Control Register Bit Definition Bit Name Description 15:12 RSVD Reserved. 11:10 RC Rounding Control bits: 00 01 10 11 9:8 PC = Round to nearest or even = Round towards minus infinity = Round towards plus infinity = Truncate Precision Control bits: 00 01 10 11 = 24-bit mantissa = Reserved = 53-bit mantissa = 64-bit mantissa 5 P Precision error exception bit mask. 4 U Underflow error exception bit mask. 3 O Overflow error exception bit mask. 2 Z Divide by zero exception bit mask. 1 D Denormalized operand error exception bit mask. 0 I Invalid operation exception bit mask. ZFx86 Data Book 1.0 Rev D Page 85 2 2.3. Instruction Set Depending on the instruction, the CPU instructions follow the general instruction format shown in Figure 2-19. These instructions vary in length and can start at any byte address. An instruction consists of one or more bytes that can include: prefix byte(s), at least one opcode byte(s), mod r/m byte, s-i-b byte, address displacement byte(s) and immediate data byte(s). An instruction can be as short as one byte and as long as 15 bytes. If there are more than 15 bytes in the instruction a general protection fault (error code 0) is generated. This section summarizes the Processor instruction set and provides detailed information on the instruction encodings. All instructions are listed in the CPU Instruction Set Summary Table Table 2.56 on page 94, and the FPU Instruction Set Summary Table Table 2.58 on page 108. These tables provide information on the instruction encoding, and the instruction clock counts for each instruction. The clock count values for both tables are based on the assumptions described in the Section 2.3.2.1. ‘Assumptions Made in Determining Instruction Clock Count’ on page 93. 7 0 7 PPPPPPPP TTTTTTTT operation prefix byte(s) opcode 1 or 2 bytes 0 mod 76 RRR 543 r/m 210 ss 76 index 543 mod r/m byte s-i-b byte base 210 32 16 8 none address displacement 4, 2, 1 bytes or none 32 16 8 none immediate data (4, 2, 1 bytes or none) register and address mode specifier P = prefix bit T = opcode bit R = opcode bit or reg bit ss = scale r/m = register/mode Figure 2-19 Instruction Set Format ZFx86 Data Book 1.0 Rev D Page 86 2 2.3.1. General Instruction Fields The fields in the general instruction format at the byte level are listed in Table 2.40. Table 2.40 Instruction Fields Field Name Description Width Optional Prefix Byte(s) Specifies segment register override, address and operand size, repeat elements in string instruction, LOCK# assertion. 1 or more bytes Opcode Byte(s) Identifies instruction operation. 1 or 2 bytes mod and r/m Byte Address mode specifier. 1 byte s-i-b Byte Scale factor, Index and Base fields. 1 byte Address Displacement Address displacement operand. 1, 2 or 4 bytes Immediate data Immediate data operand. 1, 2 or 4 bytes 2.3.1.1. Optional Prefix Byte(s) Prefix bytes can be placed in front of any instruction. The prefix modifies the operation of the next instruction only. When more than one prefix is used, the order is not important. There are five types of prefixes as follows: • Segment Override explicitly specifies which segment register an instruction will use for effective address calculation. • Address Size switches between 16- and 32-bit addressing. Selects the inverse of the default. • Repeat is used with a string instruction which causes the instruction to be repeated for each element of the string. • Lock is used to assert the hardware LOCK# signal during execution of the instruction. Table 2.41 lists the encodings for each of the available prefix bytes. The operand size and address size prefixes allow the individual overriding of the default value for operand size and effective address size. The presence of these prefixes selects the opposite (non-default) operand size and/or effective address size. • Operand Size switches between 16- and 32-bit operand size. Selects the inverse of the default. Table 2.41 Instruction Prefix Summary Prefix Encoding Description ES: 26h Override segment default, use ES for memory operand CS: 2Eh Override segment default, use CS for memory operand SS: 36h Override segment default, use SS for memory operand DS: 3Eh Override segment default, use DS for memory operand FS: 64h Override segment default, use FS for memory operand GS: 65h Override segment default, use GS for memory operand ZFx86 Data Book 1.0 Rev D Page 87 2 Table 2.41 Instruction Prefix Summary Prefix Encoding Description Operand Size 66h Make operand size attribute the inverse of the default Address Size 67h Make address size attribute the inverse of the default LOCK F0h Assert LOCK# hardware signal. REPNE F2h Repeat the following string instruction. REP/REPE F3h Repeat the following string instruction. 2.3.1.2. Opcode Byte(s) 2.3.1.4. d Field The opcode field is either one or two bytes in length and may be further defined by additional bits in the mod r/m byte. The opcode field specifies the operation to be performed by the instruction. Some operations have more than one opcode, each specifying a different form of the operation. Some opcodes name instruction groups. For example, opcode 0x80 names a group of operations that has an immediate operand, and a register or memory operand. The opcodes are given in hex values unless shown within brackets ([ ]). Values within brackets are given in binary. The reg field may appear in the second opcode byte or in the mod r/m byte. The d field determines which operand is taken as the source operand and which operand is taken as the destination. 2.3.1.3. w Field The 1-bit w field selects the operand size during 16 and 32 bit data operations. Table 2.43 d Field Encoding Direction of Operation d Field Source Operand Destination Operand 0 Register --> Register or Register --> Memory reg mod r/m or mod s-i-b 1 Register --> Register or Memory --> Register mod r/m or mod s-i-b reg 2.3.1.5. eee Field The eee field is used to select the control, debug and test registers in the MOV instructions. The type of register and base registers selected by the eee field are listed in Table 2.44. The values shown are the only valid encodings for the eee bits. Table 2.42 w Field Encoding W Field Operand Size 16-bit Data Operations Operand Size 32-bit Data Operations 0 8 Bits 1 16 Bits ZFx86 Data Book 1.0 Rev D Table 2.44 eee Field Encoding eee Field Register Type Base Register 8 Bits 000 Control Register CR0 32 Bits 010 Control Register CR2 011 Control Register CR3 000 Debug Register DR0 001 Debug Register DR1 010 Debug Register DR2 011 Debug Register DR3 110 Debug Register DR6 111 Debug Register DR7 Page 88 2 Table 2.44 eee Field Encoding (cont.) eee Field Register Type Base Register 011 Test Register TR3 100 Test Register TR4 101 Test Register TR5 110 Test Register TR6 111 Test Register TR7 2.3.1.6. mod and r/m Byte The mod and r/m fields, within the mod r/m byte, select the type of memory addressing to be used. Some instructions use a fixed addressing mode (e.g., PUSH or POP) and therefore, these fields are not present. Table 2.45 lists the addressing method when 16-bit addressing is used and a mod r/m byte is present. Some mod r/m field encodings are dependent on the w field and are shown in Table 2.46. Table 2.45 mod r/m Field Encoding mod and r/m fields 16-bit Address Mode with mod r/m byte 32-bit Address Mode with mod r/m byte and no s-i-b byte present 00 000 00 001 00 010 00 011 00 100 00 101 00 110 00 111 DS:[BX+SI] DS:[BX+DI] DS:[BP+SI] DS:[BP+DI] DS:[SI] DS:[DI] DS:[d16] DS:[BX] DS:[EAX] DS:[ECX] DS:[EDX] DS:[EBX] s-i-b is present DS:[d32] DS:[ESI] DS:[EDI] 01 000 01 001 01 010 01 011 01 100 01 101 01 110 01 111 DS:[BX+SI+d8] DS:[BX+DI+d8] DS:[BP+SI+d8] DS:[BP+DI+d8] DS:[SI+d8] DS:[DI+d8] SS:[BP+d8] DS:[BX+d8] DS:[EAX+d8] DS:[ECX+d8] DS:[EDX+d8] DS:[EBX+d8] s-i-b is present SS:[EBP+d8] DS:[ESI+d8] DS:[EDI+d8] 10 000 10 001 10 010 10 011 10 100 10 101 10 110 10 111 DS:[BX+SI+d16] DS:[BX+DI+d16] DS:[BP+SI+d16] DS:[BP+DI+d16] DS:[SI+d16] DS:[DI+d16] SS:[BP+d16] DS:[BX+d16] DS:[EAX+d32] DS:[ECX+d32] DS:[EDX+d32] DS:[EBX+d32] s-i-b is present SS:[EBP+d32] DS:[ESI+d32] DS:[EDI+d32] 11000-11111 See Table 5-7 See Table 5-7 ZFx86 Data Book 1.0 Rev D Page 89 2 Table 2.46 mod r/m Field Encoding Dependent on w Field mod r/m 16-bit Operation w=0 16-bit Operation w=1 32-bit Operation w=0 32-bit Operation w=1 11 000 AL AX AL EAX 11 001 CL CX CL ECX 11 010 DL DX DL EDX 11 011 BL BX BL EBX 11 100 AH SP AH ESP 11 101 CH BP CH EBP 11 110 DH SI DH ESI 11 111 BH DI BH EDI 2.3.1.7. reg Field The reg field determines which general registers are to be used. The selected register is dependent on whether a 16 or 32 bit operation is current and the status of the w bit. Table 2.47 reg Field reg 16-bit Operation w Field Not Present 32-bit Operation w Field Not Present 16-bit Operation w=0 16-bit Operation w=1 32-bit Operation w=0 32-bit Operation w=1 000 AX EAX AL AX AL EAX 001 CX ECX CL CX CL ECX 010 DX EDX DL DX DL EDX 011 BX EBX BL BX BL EBX 100 SP ESP AH SP AH ESP 101 BP EBP CH BP CH EBP 110 SI ESI DH SI DH ESI 111 DI EDI BH DI BH EDI 2.3.1.8. sreg3 Field The sreg3 field (Table 2.43) is 3-bit field that is similar to the sreg2 field, but allows use of the FS and GS segment registers. Table 2.48 sreg3 Field Encoding sreg3 Field ZFx86 Data Book 1.0 Rev D Segment Register Selected 000 ES 001 CS Page 90 2 Table 2.48 sreg3 Field Encoding sreg3 Field Table 2.50 ss Field Encoding Segment Register Selected ss Field Scale Factor 010 SS 01 x2 011 DS 01 x4 100 FS 11 x8 101 GS 110 undefined 2.3.1.12. index Field 111 undefined The sreg2 field (Table 2.42) is a 2-bit field that allows one of the four 286 type segment registers to be specified. The index field (Table 2.51) specifies the index register used by the offset mechanism for offset address calculation. When no index register is used (index field = 100), the ss value must be 00 or the effective address is undefined. Table 2.49 sreg2 Field Encoding Table 2.51 index Field Encoding 2.3.1.9. sreg2 Field sreg2 FIELD Segment Register Selected Index Field Index Register 00 ES 000 EAX 01 CS 001 ECX 10 SS 010 EDX 11 DS 011 EBX 100 none 101 EBP 2.3.1.10. s-i-b Byte The s-i-b fields provide scale factor, indexing and a base field for address selection. 2.3.1.11. ss Field The ss field (Table 2.50) specifies the scale factor used in the offset mechanism for address calculation. The scale factor multiplies the index value to provide one of the components used to calculate the offset address. Table 2.50 ss Field Encoding ss Field Scale Factor 00 x1 110 ESI 111 EDI Base Field In Table 2.45, the note “s-i-b present” for certain entries forces the use of the mod and base field as listed in Table 2.52. The first two digits in the first column of this table identifies the mod bits in the mod r/m byte. The last three digits in the first column identify the base fields in the s-i-b byte. Table 2.52 mod base Field Encoding 32-Bit Address Mode with mod r/m and s-i-b Bytes Present mod Field within mode/rm Byte base Field within s-i-b Byte 00 000 DS:[EAX+(scaled index)] 00 001 DS:[ECX+(scaled index)] ZFx86 Data Book 1.0 Rev D Page 91 2 Table 2.52 mod base Field Encoding (cont.) 32-Bit Address Mode with mod r/m and s-i-b Bytes Present mod Field within mode/rm Byte base Field within s-i-b Byte 00 010 DS:[EDX+(scaled index)] 00 011 DS:[EBX+(scaled index)] 00 100 SS:[ESP+(scaled index)] 00 101 DS:[d32+(scaled index)] 00 110 DS:[ESI+(scaled index)] 00 111 DS:[EDI+(scaled index)] 01 000 DS:[EAX+(scaled index)+d8] 01 001 DS:[ECX+(scaled index)+d8] 01 010 DS:[EDX+(scaled index)+d8] 01 011 DS:[EBX+(scaled index)+d8] 01 100 SS:[ESP+(scaled index)+d8] 01 101 SS:[EBP+(scaled index)+d8] 01 110 DS:[ESI+(scaled index)+d8] 01 111 DS:[EDI+(scaled index)+d8] 10 000 DS:[EAX+(scaled index)+d32] 10 001 DS:[ECX+(scaled index)+d32] 10 010 DS:[EDX+(scaled index)+d32] 10 011 DS:[EBX+(scaled index)+d32] 10 100 SS:[ESP+(scaled index)+d32] 10 101 SS:[EBP+(scaled index)+d32] 10 110 DS:[ESI+(scaled index)+d32] 10 111 DS:[EDI+(scaled index)+d32] ZFx86 Data Book 1.0 Rev D Page 92 2 2.3.2. Instruction Set Tables The instruction set is presented in two tables, the CPU Instruction Set (Table 2.56 on page 94) and the FPU Instruction Set (Table 2.58 on page 108). Additional information concerning the FPU Clock Counts is presented on page 107. 2.3.2.1. Assumptions Made in Determining Instruction Clock Count The following assumptions have been made in presenting the clock count values for the individual instructions: • All clock counts refer to the internal CPU internal clock frequency. For example, the clock counts for a clock-doubled processor refer to 50 MHz clocks while the external clock is 25 MHz. • The instruction has been prefetched, decoded and is ready for execution. • Bus cycles do not require wait states. • There are no local bus HOLD requests delaying processor access to the bus. • No exceptions are detected during instruction execution. • If an effective address is calculated, it does not use two general register components. One register, scaling and displacement can be used within the clock count shown. However, if the effective address calculation uses two general register components, add one clock to the clock count shown. • For non-cached memory accesses, add two clocks (DX) or four clocks (DX2), assuming zero wait state memory accesses. • Locked cycles are not cacheable. Therefore, using the LOCK prefix with an instruction adds additional clocks as specified in instruction 9 above. 2.3.2.2. CPU Instruction Set Summary Table Abbreviations The clock counts listed in the CPU Instruction Set Summary Table are grouped by operating mode and whether there is a register/cache hit or a cache miss. In some cases, more than one clock count is shown in a column for a given instruction, or a variable is used in the clock count. The abbreviations used for these conditions are listed in Table 2.53. Table 2.53 CPU Clock Count Abbreviations Clock Count Symbol Explanation / Register operand/memory operand. n Number of times operation is repeated. L Level of the stack frame. | Conditional jump taken | Conditional jump not taken. (e.g. “4|1” = 4 clocks if jump taken, 1 clock if jump not taken) \ CPL ≤ IOPL \ CPL > IOPL (where CPL = Current Privilege Level, IOPL = I/O Privilege Level) • All clock counts assume aligned 32-bit memory/ IO operands. • If instructions access a 32-bit operand on odd addresses, add one clock for read or write and add two clocks for read and write. ZFx86 Data Book 1.0 Rev D Page 93 2 2.3.2.3. CPU Instruction Set Summary Table Flags Table The CPU Instruction Set Summary Table lists nine flags that are affected by the execution of instructions. The conventions shown in Table 2.54 are used to identify the different flags. Table 2.55 lists the conventions used to indicate what action the instruction has on the particular flag. Table 2.54 Flag Abbreviations (cont.) Abbreviation AF Auxiliary Flag PF Parity Flag CF Carry Flag Table 2.55 Action of Instruction on Flag Table 2.54 Flag Abbreviations Abbreviation Name Of Flag Instruction Table Symbol Name Of Flag Action x Flag is modified by the instruction. OF Overflow Flag DF Direction Flag - Flag is not changed by the instruction. IF Interrupt Enable Flag 0 Flag is reset to “0”. 1 Flag is set to “1”. TF Trap Flag SF Sign Flag ZF Zero Flag Table 2.56 Processor Core Instruction Set Summary Real Mode Flags Instruction Opcode O D I T S Z A P C F F F F F F F F F Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) AAA ASCII Adjust AL after Add 37 - - - - - - x - x 4 AAD ASCII Adjust AX before Divide D5 0A - - - - x x - x - 4 4 AAM ASCII Adjust AX after Multiply D4 0A - - - - x x - x - 16 16 AAS ASCII Adjust AL after Subtract 3F - - - - - - x - x 4 4 Register to Register 1 [00dw] [11 reg r/m] x - - - x x x x x 1 1 Register to Memory 1 [000w] [mod reg r/m] 3 3 Prot’d Mode Notes 4 ADC Add with Carry Memory to Register 1 [001w] [mod reg r/m] Immediate to Register/Memory 8 [00sw] [mod 010 r/m]# Immediate to Accumulator 1 [010w] # 3 3 1/3 1/3 1 1 1 1 3 3 b h b h b h ADD Integer Add Register to Register 0 [00dw] [11 reg r/m] Register to Memory 0 [000w] [mod reg r/m] Memory to Register 0 [001w] [mod reg r/m] Immediate to Register/Memory 8 [00sw] [mod 000 r/m]# Immediate to Accumulator 0 [010w] # x - - - x x x x x 3 3 1/3 1/3 1 1 AND Boolean AND Register to Register 2 [00dw] [11 reg r/m] Register to Memory 2 [000w] [mod reg r/m] Memory to Register 2 [001w] [mod reg r/m] Immediate to Register/Memory 8 [00sw] [mod 100 r/m]# Immediate to Accumulator 2 [010w] # 0 - - - x x - x 0 1 1 3 3 3 3 1/3 1/3 1 1 ARPL Adjust Requested Privilege Level ZFx86 Data Book 1.0 Rev D Page 94 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction From Register/Memory Opcode O D I T S Z A P C F F F F F F F F F 63 [mod reg r/m] - - - - - x - - - 62 [mod reg r/m] - - - - - - - - - Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) Prot’d Mode Notes 6/10 a h 11+INT 11+INT b, e g,h,j,k,r 11 11 BOUND Check Array Boundaries If Out of Range (Int 5) If In Range BSF Scan Bit Forward Register, Register/Memory 0F BC [mod reg r/m] - - - - - x - - - 5/7+n 5/7+n b h 0F BC [mod reg r/m] - - - - - x - - - 5/7+n 5/7+n b h 0F C[1 reg] - - - - - - - - - 4 4 Register/Memory, Immediate 0F BA [mod 100 r/m]# - - - - - - - - x 3/4 3/4 b h Register/Memory, Register 0F A3 [mod reg r/m] 3/6 3/6 4/5 4/5 b h 5/8 5/8 4/5 4/5 b h 5/8 5/8 3/5 3/5 b h 4/7 4/7 b h,j,k,r BSR Scan Bit Reverse Register, Register/Memory BSWAP Byte Swap BT Test Bit BTC Test Bit and Complement Register/Memory, Immediate 0F BA [mod 111 r/m]# Register/Memory, Register 0F BB [mod reg r/m] - - - - - - - - x BTR Test Bit and Reset Register/Memory, Immediate 0F BA [mod 110 r/m]# Register/Memory, Register 0F B3 [mod reg r/m] - - - - - - - - x BTS Test Bit and Set Register/Memory 0F BA [mod 101 r/m Register (short form) 0F AB [mod reg r/m] - - - - - - - - x CALL Subroutine Call Direct Within Segment E8 +++ 7 7 Register/Memory Indirect Within Segment FF [mod 010 r/m] - - - - - - - - - 8/9 8/9 Direct Intersegment -Call Gate to Same Privilege -Call Gate to Different Privilege No Par’s -Call Gate to Different Privilege m Par’s -16-bit Task to 16-bit TSS -16-bit Task to 32-bit TSS -16-bit Task to V86 Task -32-bit Task to 16-bit TSS -32-bit Task to 32-bit TSS -32-bit Task to V86 Task 9A [unsigned full offset, selector] 12 30 41 83 81+4x 235 262 179 238 265 182 Indirect Intersegment -Call Gate to Same Privilege -Call Gate to Different Privilege No Par’s -Call Gate to Different Privilege m Par’s -16-bit Task to 16-bit TSS -16-bit Task to 32-bit TSS -16-bit Task to V86 Task -32-bit Task to 16-bit TSS -32-bit Task to 32-bit TSS -32-bit Task to V86 Task FF [mod 011 r/m] 14 14 43 85 86+4x 237 264 181 240 267 184 CBW Convert Byte to Word 98 - - - - - - - - - 3 3 CDQ Convert DWORD to Quadword 99 - - - - - - - - - 1 1 CLC Clear Carry Flag F8 - - - - - - - - 0 1 1 CLD Clear Direction Flag FC - 0 - - - - - - - 1 1 CLI Clear Interrupt Flag FA - - 0 - - - - - - 7 7 ZFx86 Data Book 1.0 Rev D m Page 95 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode O D I T S Z A P C F F F F F F F F F Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) CLTS Clear Task Switched Flag 0F 06 - - - - - - - - - 5 5 CMC Complement the Carry Flag F5 - - - - - - - - x 1 1 x - - - x x x x x Prot’d Mode Notes c l b h b h b h b,e e,h b h CMP Compare Integers Register to Register 3 [10dw] [11 reg r/m] Register to Memory 3 [101w] [mod reg r/m] 1 1 Memory to Register 3 [100w] [mod reg r/m] 3 3 Immediate to Register/Memory 8 [00sw] [mod 111 r/m] # 3 3 Immediate to Accumulator 3 [110w] ### 1/3 1/3 CMPS Compare String A [011w] x - - - x x x x x 7 7 Register1, Register2 0F B [000w] [11 reg2 reg1] x - - - x x x x x 5 5 Memory, Register 0F B [000w] [mod reg r/m] 7 7 CMPXCHG Compare and Exchange CWD Convert Word to DWORD 99 - - - - - - - - - 1 1 CWDE Convert Word to DWORD Extended 98 - - - - - - - - - 3 3 DAA Decimal Adjust AL after Add 27 - - - - x x x x x 4 4 DAS Decimal Adjust AL after Subtract 2F - - - - x x x x x 4 4 Register/Memory F [111w] [mod 001 r/m] x - - - x x x x - 1/3 1/3 Register (short form) 4 [1 reg] 1 1 14/15 22/23 38/39 14/15 22/23 38/39 DEC Decrement by 1 DIV Unsigned Divide Accumulator by Register/Memory Divisor: Byte WORD DWORD F [011w] [mod 110 r/m] - - - - - - - - - ENTER Enter New Stack Frame Level = 0 C8 ++[8-bit Level] - - - - - - - - - Level = 1 Level (L) > 1 HLT Halt F4 - - - - - - - - - F [011w] [mod 111 r/m] - - - - - - - - - 7 7 10 10 6+4*L 6+4*L 3 3 19/20 27/28 43/44 19/20 27/28 43/44 l IDIV Integer (Signed) Divide Accumulator by Register/Memory Divisor: Byte WORD DWORD b,e e,h IMUL Integer (Signed) Multiply ZFx86 Data Book 1.0 Rev D Page 96 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode Accumulator by Register/Memory Multiplier: Byte WORD DWORD F [011w] [mod 101 r/m] Register with Register/Memory Multiplier: WORD Doubleword Register/Memory with Immediate to Register2 Multiplier: Word DWORD O D I T S Z A P C F F F F F F F F F x - - - - - - - Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) x Notes b 3/5 3/5 7/9 3/5 3/5 7/9 0F AF [mod reg r/m] 3/5 3/5 7/9 3/5 3/5 7/9 6 [10s1] [mod reg r/m] # 3/5 3/5 7/9 3/5 3/5 7/9 Prot’d Mode h IN Input from I/O Port Fixed Port E [010w] [port number] - - - - - - - - - 16 6/19 Variable Port E [110w] 16 6/19 6 [110w] - - - - - - - - - 20 6/19 b h,m Register/Memory F [111w] [mod 000 r/m] x - - - x x x x - 1/3 1/3 b h Register (short form) 4 [0 reg] 1 1 INS Input String from I/O Port m INC Increment by 1 INT Software Interrupt ZFx86 Data Book 1.0 Rev D Page 97 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction INT i Opcode CD [i] O D I T S Z A P C F F F F F F F F F - x 0 - - - - Clock Count (Reg/Cache Hit) - Protected Mode: -Interrupt or Trap to Same Privilege -Interrupt or Trap to Different Privilege -16-bit Task to 16-bit TSS by Task Gate -16-bit Task to 32-bit TSS by Task Gate -16-bit Task to V86 by Task Gate -16-bit Task to 16-bit TSS by Task Gate -32-bit Task to 32-bit TSS by Task Gate -32-bit Task to V86 by Task Gate -V86 to 16-bit TSS by Task Gate -V86 to 32-bit TSS by Task Gate -V86 to Privilege 0 by Trap Gate/Int Gate INT 3 Prot’d Mode Notes g,j,k,r 14 49 77 233 260 177 236 263 180 236 263 93 CC 14 49 77 233 260 177 236 263 180 236 263 93 CE 1 15 Protected Mode Interrupt or Trap to Same Privilege Interrupt or Trap to Different Priv. 16-bit Tsk - 16-bit TSS by Tsk Gate 16-bit Tsk - 32-bit TSS by Tsk Gate 16-bit Task to V86 by Task Gate 32-bit Tsk - 16-bit TSS by Tsk Gate 32-bit Tsk - 32-bit TSS by Tsk Gate 32-bit Task to V86 by Task Gate V86 to 16-bit TSS by Task Gate V86 to 32-bit TSS by Task Gate V86 to Priv. 0 by Trap Gate/Int Gate 1 49 77 233 260 177 236 263 180 236 263 93 INVD Invalidate Cache 0F 08 - - - - - - - - - 4 4 INVLPG Invalidate TLB Entry 0F 01 [mod 111 r/m] - - - - - - - - - 4 4 ZFx86 Data Book 1.0 Rev D Real Mode b,e Protected Mode Interrupt or Trap to Same Privilege Interrupt or Trap to Different Priv. 16-bit Tsk - 16-bit TSS by Tsk Gate 16-bit Tsk - 32-bit TSS by Tsk Gate 16-bit Task to V86 by Task Gate 32-bit Tsk - 16-bit TSS by Tsk Gate 32-bit Tsk - 32-bit TSS by Tsk Gate 32-bit Task to V86 by Task Gate V86 to 16-bit TSS by Task Gate V86 to 32-bit TSS by Task Gate V86 to Priv. 0 by Trap Gate/Int Gate INTO If OF==0 If OF==1 (INT 4) Prot’d Mode Page 98 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction IRET Interrupt Return Opcode CF O D I T S Z A P C F F F F F F F F F x x x x x x x x Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) Prot’d Mode Notes x g,h,j,k,r 14 Real Mode Protected Mode: -Within Task to Same Privilege -Within Task to Different Privilege -16-bit Task to 16-bit Task -16-bit Task to 32-bit TSS -16-bit Task to V86 Task -32-bit Task to 16-bit TSS -32-bit Task to 32-bit TSS -32-bit Task to V86 Task 31 66 229 256 173 232 259 176 JB/JNAE/JC Jump on Below/Not Above or Equal/Carry 8-bit Displacement 72 + Full Displacement 0F 82 +++ - - - - - - - - - 4|1 6|1 4|1 6|1 4|1 6|1 r JBE/JNA Jump on Below or Equal/Not Above 8-bit Displacement 76 + Full Displacement 0F 86 +++ r - - - - - - - - 4|1 6|1 E3 + - - - - - - - - - 7|3 7|3 r 8-bit Displacement 74 + - - - - - - - - - 4|1 6|1 r Full Displacement 0F 84 +++ 4|1 6|1 JCXZ/JECXZ Jump on CX/ECX Zero JE/JZ Jump on Equal/Zero JECXZ Jump on EXC Zero E3 + - - - - - - - - - 7|3 7|3 r 8-bit Displacement 7C + - - - - - - - - - 4|1 6|1 r Full Displacement 0F 8C +++ 4|1 6|1 4|1 6|1 4|1 6|1 4 4 6/8 6 6 6/8 26 37 238 265 182 241 268 185 30 39 240 267 184 243 270 187 JL/JNGE Jump on Less/Not Greater or Equal JLE/JNG Jump on Less or Equal/Not Greater 8-bit Displacement 7E + Full Displacement 0F 8E +++ - - - - - - - - - r JMP Unconditional Jump Short Direct within Segment Register/Memory Indirect Within Segment Direct Intersegment Call Gate Same Privilege Level 16-bit Task to 16-bit TSS 16-bit Task to 32-bit TSS 16-bit Task to V86 Task 32-bit Task to 16-bit TSS 32-bit Task to 32-bit TSS 32-bit Task to V86 Task Indirect Intersegment Call Gate Same Privilege Level 16-bit Task to 16-bit TSS 16-bit Task to 32-bit TSS 16-bit Task to V86 Task 32-bit Task to 16-bit TSS 32-bit Task to 32-bit TSS 32-bit Task to V86 Task EB E9 FF EA + +++ [mod 100 r/m] [full offset, selector] - - - - - - - - - 9 FF [mod 101 r/m] b h,j,k,r JNB/JAE/JNC Jump on Not Below/Above or Equal/Not Carry 8-bit Displacement 73 + Full Displacement 0F 83 +++ - - - - - - - - 4|1 6|1 4|1 6|1 r JNBE/JA Jump on Not Below or Equal/Above ZFx86 Data Book 1.0 Rev D Page 99 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode 8-bit Displacement 77 + Full Displacement 0F 87 +++ Prot’d Mode O D I T S Z A P C F F F F F F F F F Clock Count (Reg/Cache Hit) - 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 4|1 6|1 2 2 - - - - - - - Real Mode Prot’d Mode Notes r JNE/JNZ Jump on Not Equal/Not Zero 8-bit Displacement 75 + Full Displacement 0F 85 +++ - - - - - - - - r JNL/JGE Jump on Not Less/Greater or Equal 8-bit Displacement 7D + Full Displacement 0F 8D +++ - - - - - - - - r JNLE/JG Jump on Not Less or Equal/Greater 8-bit Displacement 7F + Full Displacement 0F 8F +++ - - - - - - - - r JNO Jump on Not Overflow 8-bit Displacement 71 + Full Displacement 0F 81 +++ - - - - - - - - r JNP/JPO Jump on Not Parity/Parity Odd 8-bit Displacement 7B + Full Displacement 0F 8B +++ - - - - - - - - r JNS Jump on Not Sign 8-bit Displacement 79 + Full Displacement 0F 89 +++ - - - - - - - - r JO Jump on Overflow 8-bit Displacement 70 + Full Displacement 0F 80 +++ - - - - - - - - r JP/JPE Jump on Parity/Parity Even 8-bit Displacement 7A + Full Displacement 0F 8A +++ - - - - - - - - r JS Jump on Sign 8-bit Displacement 78 + Full Displacement 0F 88 +++ LAHF Load AH with Flags - - - - - - - - r 9F - - - - - - - - - 0F 02 [mod reg r/m] - - - - - x - - - 11/12 a g,h,j,p C5 [mod reg r/m] - - - - - - - - - 6 19 b h,i,j 8D [mod reg r/m] - - - - - - - - - 2 2 LAR Load Access Rights From Register/Memory LDS Load Pointer to DS LEA Load Effective Address No Index Register With Index Register 3 3 LEAVE Leave Current Stack Frame C9 - - - - - - - - - 3 3 b h LES Load Pointer to ES C4 [mod reg r/m] - - - - - - - - - 6 19 b h,i,j LFS Load Pointer to FS 0F B4 [mod reg r/m] - - - - - - - - - 6 19 b h,i,j LGDT Load GDT Register 0F 01 [mod 010 r/m] - - - - - - - - - 9 9 b,c h,l LGS Load Pointer to GS 0F B5 [mod reg r/m] - - - - - - - - - 6 19 b h,i,j LIDT Load IDT Register 0F 01 [mod 011 r/m] - - - - - - - - - 9 9 b,c h,l 0F 00 [mod 010 r/m] - - - - - - - - - 16/17 a g,h,j,l LLDT Load LDT Register From Register/Memory LMSW Load Machine Status Word ZFx86 Data Book 1.0 Rev D Page 100 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction From Register/Memory Opcode O D I T S Z A P C F F F F F F F F F Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) Prot’d Mode Notes 0F 01 [mod 110 r/m] - - - - - - - - - 5 5 b,c h,l LODS Load String A [110 w] - - - - - - - - - 4 4 b h LOOP — Offset Loop/No Loop E2 + - - - - - - - - - 7|3 9|3 LOOPNZ/LOOPNE — Offset E0 + - - - - - - - - - 7|3 9|3 r LOOPZ/LOOPE — Offset E1 + - - - - - - - - - 7|3 9|3 r 0F 03 [mod reg r/m] - - - - - x - - - 0F B2 [mod reg r/m] - - - - - - - - - 0F 00 [mod 011 r/m] - - - - - - - - - - - - - - - - - - r LSL Load Segment Limit From Register/Memory LSS Load Pointer to SS 6 14/15 a g,h,j,p 19 a h,i,j 16/17 a g,h,j,l b h,i,j LTR Load Task Register From Register/Memory MOV Move Data Register to Register/Memory 8 [100w] [mod reg r/m] 1/2 1/2 Register/Memory to Register 8 [100w] [mod reg r/m] 1/2 1/2 Immediate to Register/Memory C [011w] [mod 000 r/m] ### 1/2 1/2 Immediate to Register (short form) B [w reg] ### 1 1 Memory to Accumulator (short form) A [000w] +++ 2 2 Accumulator to Memory (short form) A [001w] +++ 1/2 1/2 Register/Memory to Segment Register 8E [mod sreg3 r/m] 2/3 15/16 Segment Register to Register/Memory 8C [mod sreg3 r/m] 1/2 1/2 11/3/3 11/3/3 MOV Move to/from Control/Debug/Test Regs - - - - - - - - - - - - - - - - - - l Register to CR0/CR2/CR3 0F 22 [11 eee reg] CR0/CR2/CR3 to Register 0F 20 [11 eee reg] 1/3/3 1/3/3 Register to DR0-DR3 0F 23 [11 eee reg] 1 1 DR0-DR3 to Register 0F 21 [11 eee reg] 3 3 Register to DR6-DR7 0F 23 [11 eee reg] 1 1 DR6-DR7 to Register 0F 21 [11 eee reg] 3 3 Register to TR3-5 0F 26 [11 eee reg] 5 5 TR3-5 to Register 0F 24 [11 eee reg] 5 5 Register to TR6-TR7 0F 26 [11 eee reg] 1 1 TR6-TR7 to Register 0F 24 [11 eee reg] 3 3 MOVS Move String l A [010w] - - - - - - - - - 5 5 b h 0F B[111w] [mod reg r/m] - - - - - - - - - 1/3 1/3 b h 0F B[011w] [mod reg r/m] - - - - - - - - - 2/3 2/3 b h F [011w] [mod 100 r/m] x - - - b h 3/5 3/5 3/5 3/5 7/9 7/9 b h MOVSX Move with Sign Extension Register from Register/Memory MOVZX Move with Zero Extension Register from Register/Memory MUL Unsigned Multiply Accumulator with Register/Memory Multiplier: Byte WORD DWORD x NEG Negate Integer F [011w] [mod 011 r/m] x - - - x x x x x 1/3 1/3 NOP No Operation 90 - - - - - - - - - 1 1 NOT Boolean Complement F [011w] [mod 010 r/m] - - - - - - - - - 1/3 1/3 b h OIO Official Invalid Opcode 0F FF - - 0 - - - - - - 15 49-300 t t ZFx86 Data Book 1.0 Rev D Page 101 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode O D I T S Z A P C F F F F F F F F F Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) Prot’d Mode Notes OR Boolean OR Register to Register 0 [10dw] [11 reg r/m] Register to Memory 0 [100w] [mod reg r/m] Memory to Register 0 [101w] [mod reg r/m] Immediate to Register/Memory 8 [00sw] [mod 001 r/m] ### Immediate to Accumulator 0 [110w] ### 0 - - - x x x x 0 1 1 3 3 3 3 1/3 1/3 1 1 b h OUT Output to Port Fixed Port E [011w] # Variable Port E [111w] - - - - - - - - OUTS Output String 6 [111w] - - - - - - - - Register/Memory 8F [mod 000 r/m] - - - - - - - - Register (short form) 5 [1 reg] - 18 4/17 18 4/17 m - 20 6/19 b h,m - 3/5 3/5 b h,i,j 3 3 POP Pop Value off Stack Segment Register (ES, CS, SS, DS) [000 sreg2 111] 4 18 Segment Register (ES, CS, SS, DS, FS, GS) 0F [10 sreg3 001] 4 18 POPA Pop All General Registers 61 - - - - - - - - - 18 18 b h POPF Pop Stack into FLAGS 9D x x x x x x x x x 4 4 b h,n Assert Hardware LOCK Prefix F0 - - - - - - - - - Address Size Prefix 67 Operand Size Prefix 66 Segment Override Prefix -CS -DS -ES -FS -GS -SS 2E 3E 26 64 65 36 - - - - - - - - - PREFIX BYTES m PUSH Push Value onto Stack Register/Memory FF [mod 110 r/m] 2/4 2/4 Register (short form) 5 [0 reg] 2 2 [000 sreg2 110] 2 2 0F [10 sreg3 000] 2 2 Segment Register (ES, CS, SS, DS) Segment Register (ES. CS. SS, DS, FS, GS) Immediate 6 [10s0] ### b h 2 2 PUSHA Push All General Registers 60 - - - - - - - - - 17 17 b h PUSHF Push FLAGS Register 9C - - - - - - - - - 2 2 b h D [000w] [mod 010 r/m] x - - - - - - - x 9/9 9/9 b h b h RCL Rotate Through Carry Left Register/Memory by 1 Register/Memory by CL D [001w] [mod 010 r/m] u - - - - - - - x 9/9 9/9 Register/Memory by Immediate C [000w] [mod 010 r/m] # u - - - - - - - x 9/9 9/9 RCR Rotate Through Carry Right Register/Memory by 1 D [000w] [mod 011 r/m] x - - - - - - - x 9/9 9/9 Register/Memory by CL D [001w] [mod 011 r/m] u - - - - - - - x 9/9 9/9 Register/Memory by Immediate C [000w] [mod 011 r/m] # u - - - - - - - x 9/9 9/9 ZFx86 Data Book 1.0 Rev D Page 102 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode Prot’d Mode O D I T S Z A P C F F F F F F F F F Clock Count (Reg/Cache Hit) Real Mode Prot’d Mode Notes REP INS Input String F2 6[110w] - - - - - - - - - 20+9n 5+9n\ 18+9n b h,m REP LODS Load String F2 A[110w] - - - - - - - - - 4+5n 4+5n b h REP MOVS Move String F2 A[010w] - - - - - - - - - 5+4n 5+4n b h REP OUTS Output String F2 6[111w] - - - - - - - - - 20+4n 5+4n\ 18+4n b h,m REP STOS Store String F2 A[101w] - - - - - - - - - 3+4n 3+4n b h F3 A[011w] x - - - x x x x x 5+8n 5+8n b h F3 A[111w] x - - - x x x x x 4+5n 4+5n b h F2 A[011w] x - - - x x x x x 5+8n 5+8n b h F2 A[111w] x - - - x x x x x 4+5n 4+5n b h Within Segment C3 - - - - - - - - - 10 10 b g,h,j,k,r Within Segment Adding Immediate to SP C2 ## 10 10 b h b h REPE CMPS Compare String Find non-match REPE SCAS Scan String Find non-AL/AX/EAX REPNE CMPS Compare String Find match REPNE SCAS Scan String Find AL/AX/EAX RET Return from Subroutine Intersegment CB 13 26 Intersegment Adding Immediate to SP CA ## 13 26 Protected Mode: Different Privilege Level -Intersegment -Intersegment Adding Immediate to SP 61 61 ROL Rotate Left Register/Memory by 1 D[000w] [mod 000 r/m] x - - - - - - - x 2/4 2/4 Register/Memory by CL D[001w] [mod 000 r/m] 3/5 3/5 Register/Memory by Immediate C[000w] [mod 000 r/m] # 2/4 2/4 ROR Rotate Right Register/Memory by 1 D[000w] [mod 001 r/m] 2/4 2/4 Register/Memory by CL D[001w] [mod 001 r/m] 3/5 3/5 Register/Memory by Immediate C[000w] [mod 001 r/m] # 2/4 2/4 x - - - - - - - x RSDC Restore Segment Register and Descriptor 0F 79 [mod sreg3 r/m] - - - - - - - - - 10 10 s s RSLDT Restore LDTR and Descriptor 0F 7B [mod 000 r/m] - - - - - - - - - 10 10 s s RSM Resume from SMM Mode 0F AA -x - - - - - - - - 76 76 s s RSTS Restore TSR and Descriptor 0F 7D [mod 000 r/m] - - - - - - - - - 10 10 s s SAHF Store AH in FLAGS 9E x - - - x x - x x 2 2 b h b h SAL Shift Left Arithmetic Register/Memory by 1 D[000w] [mod 100 r/m] x - - - x x - x x 2/4 2/4 Register/Memory by CL D[001w] [mod 100 r/m] u - - - x x u x x 3/5 3/5 Register/Memory by Immediate C[000w] [mod 100 r/m] # u - - - x x u x x 2/4 2/4 x - - x x x x SAR Shift Right Arithmetic Register/Memory by 1 D[000w] [mod 111 r/m] 2/4 2/4 Register/Memory by CL D[001w] [mod 111 r/m] 3/5 3/5 Register/Memory by Immediate C[000w] [mod 111 r/m] # 2/4 2/4 ZFx86 Data Book 1.0 Rev D - x Page 103 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode O D I T S Z A P C F F F F F F F F F Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) Prot’d Mode Notes SBB Integer Subtract with Borrow Register to Register 1[10dw] [11 reg r/m] Register to Memory 1[100w] [mod reg r/m] Memory to Register 1[101w] [mod reg r/m] Immediate to Register/Memory 8[00sw] [mod 011 r/m] ### Immediate to Accumulator (short form) 1[110w] ### SCAS Scan String A [111w] x x - - - - x x x x x 1 1 3 3 3 3 1/3 1/3 1 1 - - x x x x x 5 5 b h b h SETB/SETNAE/SETC Set Byte on Below/Not Above or Equal to Register/Memory 0F 92 [mod 000 r/m] - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h SETBE/SETNA Set Byte on Below or Equal/Not Above to Register/Memory 0F 96 [mod 000 r/m] SETE/SETZ Set Byte on Equal/Zero to Register/Memory 0F 94 [mod 000 r/m] SETL/SETNGE Set Byte on Less/Not Greater or Equal to Register/Memory 0F 9C [mod 000 r/m] SETLE/SETNG Set Byte on Less or Equal/Not Greater to Register/Memory 0F 9E [mod 000 r/m] SETNB/SETAE/SETNC Set Byte on Not Below/Above or Equal/Not Carry to Register/Memory 0F 93 [mod 000 r/m] - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h - - - - - - - - - 2/2 2/2 h 0F 98 [mod 000 r/m] - - - - - - - - - 2/2 2/2 h 0F 01 [mod 000 r/m] - - - - - - - - - 6 6 b,c h 0F 01 [mod 001 r/m] - - - - - - - - - 6 6 b,c h 0F 01 [mod 000 r/m] - - - - - - - - - 1/2 a h SETNBE/SETA Set Byte on Not Below or Equal/Above to Register/Memory 0F 97 [mod 000 r/m] SETNE/SETNZ Set Byte on Not Equal/Not Zero to Register/Memory 0F 95 [mod 000 r/m] SETNL/SETGE Set Byte on Not Less/Greater or Equal to Register/Memory 0F 9D [mod 000 r/m] SETNLE/SETG Set Byte on Not Less or Equal/Greater to Register/Memory 0F 9F [mod 000 r/m] SETNO Set Byte on Not Overflow to Register/Memory 0F 91 [mod 000 r/m] SETNP/SETPO Set Byte on Not Parity/Parity Odd to Register/Memory 0F 9B [mod 000 r/m] SETNS Set Byte on Not Sign to Register/Memory 0F 99 [mod 000 r/m] SETO Set Byte on Overflow to Register/Memory 0F 90 [mod 000 r/m] SETP/SETPE Set Byte on Parity/Parity Even to Register/Memory 0F 9A [mod 000 r/m] SETS Set Byte on Sign to Register/Memory to Register/Memory SGDT Store GDT Register to Register/Memory SIDT Store IDT Register to Register/Memory SLDT Store LDT Register to Register/Memory STR Store Task Register to Register/Memory ZFx86 Data Book 1.0 Rev D Page 104 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode O D I T S Z A P C F F F F F F F F F 0F 00 [mod 001 r/m] - - - - - - - - - SMSW Store Machine Status Word 0F 01 [mod 100 r/m] - - - - - - - - - STOS Store String A [101w] - - - - - - - - x - - - x x - x Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) Prot’d Mode Notes 1/2 a 1/2 1/2 b,c h h - 3 3 b h x b h s s SHL Shift Left Logical Register/Memory by 1 D [000w] [mod 100 r/m] 1/3 1/3 Register/Memory by CL D [001w] [mod 100 r/m] 2/4 2/4 Register/Memory by Immediate C [000w] [mod 100 r/m] # 1/3 1/3 1/3 1/3 3/5 3/5 SHLD Shift Left Double Register/Memory by Immediate 0F A4 [mod reg r/m] # Register/Memory by CL 0F A5 [mod reg r/m] - - - - x x - x x SHR Shift Right Logical Register/Memory by 1 D [000w] [mod 101 r/m] 1/3 1/3 Register/Memory by CL D [001w] [mod 101 r/m] x - - - x x - x x 2/4 2/4 Register/Memory by Immediate C [000w] [mod 101 r/m] # 1/3 1/3 1/3 1/3 3/5 3/5 - 24 24 SHRD Shift Right Double Register/Memory by Immediate 0F AC [mod reg r/m] # Register/Memory by CL 0F AD [mod reg r/m] - - - SMINT Software SMM Entry 0F 7E - - - - - x - x - - - x - x STC Set Carry Flag F9 - - - - - - - - 1 1 1 STD Set Direction Flag FD - 1 - - - - - - - 1 1 STI Set Interrupt Flag FB - - 1 - - - - - - 7 7 Register to Register 2 [10dw] [11 reg r/m] x - - x x x x x 1 1 Register to Memory 2 [100w] [mod reg r/m] 3 3 m SUB Integer Subtract Memory to Register 2 [101w] [mod reg r/m] Immediate to Register/Memory 8 [00sw] [mod 101 r/m] ### Immediate to Accumulator (short form) 2 [110w] ### - 3 3 1/3 1/3 1 1 b h s SVDC Save Segment Register and Descriptor 0F 78 [mod sreg3 r/m] - - - - - - - - - 18 18 s SVLDT Save LDTR and Descriptor 0F 7A [mod 000 r/m] - - - - - - - - - 18 18 s s SVTS Save TSR and Descriptor 0F 7C [mod 000 r/m] - - - - - - - - - 18 18 s s Register/Memory and Register 8 [010w] [mod reg r/m] 0 - - - x x - x 0 1/3 1/3 b h Immediate Data and Register/Memory F [011w] [mod 000 r/m] # 1/3 1/3 Immediate Data and Accumulator A [100w] # 1 1 TEST Test Bits VERR Verify Read Acces to Register/Memory 0F 00 [mod 100 r/m] - - - - - x - - - 9/10 a g,h,j,p 0F 00 [mod 101 r/m] - - - - - x - - - 9/10 a g,h,j,p WAIT Wait Until FPU Not Busy 9B - - - - - - - - - 5 5 WBINVD Write-Back and Invalidate Cache 0F 09 - - - - - - - - - 4 4 VERW Verify Write Access to Register/Memory XADD Exchange and Add ZFx86 Data Book 1.0 Rev D Page 105 2 Table 2.56 Processor Core Instruction Set Summary (cont.) Real Mode Flags Instruction Opcode Register1, Register2 0F C[000w] [11 reg2 reg1] Memory, Register 0F C[000w] [mod reg r/m] O D I T S Z A P C F F F F F F F F F x - - - x x x x x Prot’d Mode Real Mode Clock Count (Reg/Cache Hit) 3 3 6 6 3/4 3/4 3 3 3 3 Prot’d Mode Notes XCHG Exchange Register/Memory with Register 8[011w] [mod reg r/m] Register with Accumulator 9[0 reg] XLAT Translate Byte - - - - - - - - - D7 - - - - - - - - - Register to Register 3 [00dw] [11 reg r/m] 0 - - - x x - x 0 Register to Memory 3 [000w] [mod reg r/m] b,f f,h h XOR Boolean Exclusive OR Memory to Register 3 [001w] [mod reg r/m] Immediate to Register/Memory 8 [00sw] [mod 110 r/m] # Immediate to Accumulator (short form) 3 [010w] # Instruction Notes for Instruction Set Summary Notes a through c apply to Real Address Mode only: a. This is a Protected Mode instruction. Attempted execution in Real Mode will result in exception 6 (invalid op-code). b. Exception 13 fault (general protection) will occur in Real Mode if an operand reference is made that partially or fully extends beyond the maximum CS, DS, ES, FS, or GS segment limit (FFFFH). Exception 12 fault (stack segment limit violation or not present) will occur in Real Mode if an operand reference is made that partially or fully extends beyond the maximum SS limit. c. This instruction may be executed in Real Mode. In Real Mode, its purpose is primarily to initialize the CPU for Protected Mode. Note: E through g apply to Real Address Mode and Protected Virtual Address Mode: d. An exception may occur, depending on the value of the operand. e. LOCK# is automatically asserted, regardless of the presence or absence of the LOCK prefix. ZFx86 Data Book 1.0 Rev D 1 1 3 3 3 3 1/3 1/3 1 1 b h f. LOCK# is asserted during descriptor table accesses. Note: H through r apply to Protected Virtual Address Mode only: g. Exception 13 fault will occur if the memory operand in CS, DS, ES, FS, or GS cannot be used due to either a segment limit violation or an access rights violation. If a stack limit is violated, an exception 12 occurs. h. For segment load operations, the CPL, RPL, and DPL must agree with the privilege rules to avoid an exception 13 fault. The segment’s descriptor must indicate “present” or exception 11 (CS, DS, ES, FS, GS not present). If the SS register is loaded and a stack segment not present is detected, an exception 12 occurs. i. All segment descriptor accesses in the GDT or LDT made by this instruction will automatically assert LOCK# to maintain descriptor integrity in multiprocessor systems. j. JMP, CALL, INT, RET, and IRET instructions referring to another code segment will cause an exception 13, if an applicable privilege rule is violated. Page 106 2 k. An exception 13 fault occurs if CPL is greater than 0 (0 is the most privileged level). non-cacheable. An invalid opcode exception 6 occurs unless SMI is enabled and SMAR size > 0, and CPL = 0 and [SMAC is set or if in an SMI handler]. l. An exception 13 fault occurs if CPL is greater than IOPL. m. The IF[9] bit of the EFLAG register is not updated if CPL is greater than IOPL. The IOPL and VM fields of the flag register are updated only if CPL = 0. n. The PE bit of the MSW (CR0) cannot be reset by this instruction. Use MOV into CRO if desiring to reset the PE bit. o. Any violation of privilege rules as apply to the selector operand does not cause a Protection exception, rather, the zero flag is cleared. p. If the coprocessor’s memory operand violates a segment limit or segment access rights, an exception 13 fault will occur before the ESC instruction is executed. An exception 12 fault will occur if the stack limit is violated by the operand’s starting address. q. The destination of a JMP, CALL, INT, RET, or IRET must be in the defined limit of a code segment or an exception 13 fault will occur. Note: S applies to processor specific SMM instructions: r. All memory accesses to SMM space are s. As requested by Microsoft® Corporation. 2.3.2.4. FPU Clock Counts The CPU can be divided into the FPU which processes floating point instructions and the remaining circuity collectively called the integer unit. The FPU can execute instructions independently of the integer unit. For example, the integer unit can issue a floating point instruction without memory operands, in two clock cycles and then pass the operation to the FPU to execute. The integer unit will continue to execute instructions until the next floating point instruction is encountered. The FPU loads from memory are similar in that the integer unit issues the FPU instruction, transfers data to the FPU and then is free to execute integer instructions. However, when executing a floating point store, the resources of both the FPU and integer unit are used. 2.3.2.5. Instruction Set Summary Table 2.58 summarizes the operation and allowed forms of the FPU instruction set. 2.3.2.6. Abbreviations The abbreviations used in Table 2.57 are listed in the table below: Table 2.57 FPU Table Abbreviations Abbreviation n Meaning Stack register number TOS Top of stack register pointed to by SSS in the status register. ST(1) FPU register next to TOS ST(n) A specific FPU register, relative to TOS M.WI 16-bit integer operand from memory M.SI 32-bit integer operand from memory M.LI 64-bit integer operand from memory M.SR 32-bit real operand from memory M.DR 64-bit real operand from memory ZFx86 Data Book 1.0 Rev D Page 107 2 Table 2.57 FPU Table Abbreviations M.XR M.BCD CC Env Regs 80-bit real operand from memory 18-digit BCD integer operand from memory FPU condition code Status, Mode Control and Tag Registers, Instruction Pointer and Operand Pointer Table 2.58 MMX Instruction Set Summary Clock Count Notes TOS <— 2TOS-1 98 - 114 Note 2 E1 TOS <— | TOS | 5 DC [1100 0 n] ST(n) <— ST(n) + TOS 80-bit Register D8 [1100 0 n] TOS <— TOS + ST(n) 10 - 16 64-bit Real DC [mod 000 r/m] TOS <— TOS + M.DR 13 - 19 MMX Instructions Opcode Operation F2XM1 Function Evaluation 2x-1 D9 F0 FABS Floating Absolute Value D9 Top of Stack FADD Floating Point Add 10 - 16 32-bit Real D8 [mod 000 r/m] TOS <— TOS + M.SR 11 - 17 FADDP Floating Point Add, Pop DE [1100 0 n] ST(n) <— ST(n) + TOS; then pop TOS 10 - 16 32-bit integer DA [mod 000 r/m] TOS <— TOS + M.SI 18 - 27 16-bit integer DE [mod 000 r/m] TOS <— TOS + M.WI 18 - 26 FCHS Floating Change Sign D9 E0 TOS <— TOS FCLEX Clear Exceptions (9B) DB E2 Wait then Clear Exceptions 8 FNCLEX Clear Exceptions DB E2 Clear Exceptions 5 80-bit Register D8 [1101 0 n CC set by TOS - ST(n) 8 64-bit Real DC [mod 010 r/m] CC set by TOS - M.DR 12 32-bit Real D8 [mod 010 r/m] CC set by TOS - M.SR 10 80-bit Register D8 [1101 1 n CC set by TOS - ST(n); then pop TOS 8 64-bit Real DC [mod 011 r/m] CC set by TOS - ST(n); then pop TOS 12 32-bit Real D8 [mod 011 r/m] CC set by TOS - ST(n); then pop TOS 10 CC set by TOS-ST(1) then pop TOS and ST(1) 8 FIADD Floating Point Integer Add 5 FCOM Floating Point Compare FCOMP Floating Point Compare, Pop FCOMPP Floating Point Compare , Pop Two Stack Elements DE D9 FICOM Floating Point Compare 32-bit integer DA [mod 011 r/m] CC set by TOS - M.WI 15 - 17 16-bit integer DE [mod 011 r/m] CC set by TOS - M.SI 15 - 16 FICOMP Floating Point Compare 32-bit integer DA [mod 011 r/m] CC set by TOS - M.WI; then pop TOS 15 - 17 16-bit integer DE [mod 011 r/m] CC set by TOS - M.SI; then pop TOS 15 - 16 FCOS Function Evaluation: Cos(x) D9 FF TOS <— COS(TOS) 98 - 143 FDECSTP Decrement Stack Pointer D9 F6 Decrement top of stack pointer ZFx86 Data Book 1.0 Rev D Note 1 5 Page 108 2 Table 2.58 MMX Instruction Set Summary (cont.) MMX Instructions Clock Count Opcode Operation Top of Stack DC [1111 1 n] ST(n) <— ST(n) / TOS 28 - 34 80-bit Register D8 [1111 0 n] TOS <— TOS / ST(n) 28 - 34 64-bit Real DC [mod 110 r/m] TOS <— TOS / M.DR 35 - 41 32-bit Real D8 [mod 110 r/m] TOS <— TOS / M.SR 33 - 39 FDIVP Floating Point Divide, Pop DE [1111 1 n] ST(n) <— ST(n) / TOS; then pop TOS 28 - 34 Top of Stack DC [1111 0 n] TOS <— ST(n) / TOS 28 - 34 80-bit Register D8 [1111 1 n ST(n) <— TOS / ST(n) 28 - 34 64-bit Real DC [mod 111 r/m] TOS <— M.DR / TOS 35 - 41 32-bit Real D8 [mod 111 r/m] TOS <— M.SR / TOS 33 - 39 Notes FDIV Floating Point Divide FDIVR Floating Point Divide Reversed FIDIVRP Floating Point Integer Divide, Reversed, Pop DE [1111 0 n] ST(n) <— TOS / ST(n); then pop TOS 28 - 34 32-bit Integer DA [mod 110 r/m] TOS <— TOS / M.SI 36 - 44 16-bit Integer DE [mod 110 r/m] OS <— TOS / M.WI 36 - 43 FIDIV Floating Point Integer Divide FIDIVR Floating Point Integer Divide Reversed 32-bit Integer DA [mod 111 r/m] TOS <— M.SI / TOS 36 - 43 16-bit Integer DE [mod 111 r/m] TOS <— M.WI / TOS 36 - 43 FFREE Free Floating Point Register DD [1100 0 n] TAG(n) <—Empty 5 F7 Increment top of stack pointer 5 FINCSTP Increment Stack Pointer D9 FINIT Initialize FPU (9B)DB E3 Wait then initialize 8 FNINIT Initialize FPU DB E3 Initialize 5 D9 [1100 0 n] Push ST(n) onto stack 4 9 FLD Load Data to FPU Register Top of Stack 80-bit Register DB [mod 101 r/m] Push M.XR onto stack 64-bit Real DD [mod 000 r/m Push M.DR onto stack 7 32-bit Real D9 [mod 000 r/m] Push M.SR onto stack 5 DF [mod 100 r/m] Push MBCD onto stack 49 - 53 64-bit Integer DF [mod 101 r/m] Push M.LI onto stack 9 - 13 32-bit Integer DB [mod 000 r/m] Push M.SI onto stack 8 - 10 16-bit Integer DF [mod 000 r/m] Push 1.0 onto stack 8-9 FLD1 Load Floating Const. = 1.0 D9 E8 Push 1.0 onto stack 6 FBLD Load Packed BCD Data to FPU Register FILD Load Integer Data to FPU Register FLDCW Load FPU Mode Control Register D9 [mod 101 r/m] CTL Word <— Memory 6 FLDENV Load FPU Environment D9 [mod 100 r/m] Env Regs <— Memory 28 - 38 FLDL2E Load Floating Const. = Log2(e) D9 EA Push Log2(e) onto stack 6 FLDL2T Load Floating Const. = Log2(10) D9 E9 Push Log2(10) onto stack 6 ZFx86 Data Book 1.0 Rev D Page 109 2 Table 2.58 MMX Instruction Set Summary (cont.) MMX Instructions Opcode Operation Clock Count FLDLG2 Load Floating Const. = Log10(2) D9 EC Push Log10(2) onto stack 6 FLDLN2 Load Floating Const. = Ln(2) D9 ED Push Loge(2) onto stack 6 FLDPI Load Floating Const. = p D9 EB Push π onto stack 6 FLDZ Load Floating Const. = 0.0 D9 EE Push 0.0 onto stack 6 Top of Stack DC [1100 1 n] ST(n) <— ST(n) x TOS 12 80-bit Register D8 [1100 1 n] TOS <— TOS x ST(n) 12 64-bit Real DC [mod 001 r/m] TOS <— TOS x M.DR 15 32-bit Real D8 [mod 001 r/m] TOS <— TOS x M.SR 13 FMULP Floating Point Multiply & Pop DE [1100 1 n ST(n) <— ST(n) x TOS, then pop TOS 12 Notes FMUL Floating Point Multiply FIMUL Floating Point Integer Multiply 32-bit Integer DA [mod 001 r/m] TOS <— TOS x M.SI 21 - 54 16-bit Integer DE [mod 001 r/m] TOS <— TOS x M.WI 21 - 24 FNOP No Operation D9 D0 No Operation FPATAN Function Eval: Tan-1(y/x) D9 F3 ST(1) <— ATAN[ST(1) / TOS]; then pop TOS 97 - 161 FPREM Floating Point Remainder 3 D9 F8 TOS <— Rem[TOS / ST(1)] 82 - 93 FPREM1 Floating Point Remainder IEEE D9 F5 TOS <— Rem[TOS / ST(1)] 82 - 93 FPTAN Function Eval: Tan(x) D9 F2 TOS <— TAN(TOS); then push 1.0 onto stack 123 - 140 FRNDINT Round to Integer D9 FC TOS <— Round(TOS) [mod 100 r/m] Restore state Note 3 Note 1 12 - 21 FRSTOR Load FPU Environment and Register DD FSAVE Save FPU Environment and Reg (9B)DD[mod 110 r/m] Wait then save state 110 - 120 143 -153 FNSAVE Save FPU Environment and Register DD [mod 110 r/m] Save state FSCALE Floating Multiply by 2n D9 FD TOS <— TOS x 2(ST(1)) 10 - 15 FSIN Function Evaluation: Sin(x) D9 FE TOS <— SIN(TOS) 81 - 159 FSINCOS Function Eval.: Sin(x)& Cos(x) D9 FB temp <— TOS; TOS <— SIN(temp); then push COS (temp) onto stack 150 - 165 FSQRT Floating Point Square Root FA TOS <— Square Root of TOS D9 140 - 150 Note 1 61 - 62 FST Store FPU Register 80-bit Register DD [1101 0 n] ST(n) <— TOS 5 80-bit Real DB [mod 111 r/m] M.XR <— TOS 15 64-bit Real DD [mod 010 r/m] M.DR <— TOS 12 32-bit Real D9 [mod 010 r/m] M.SR <— TOS 9 Top of Stack DB [1101 1 n] ST(n) <— TOS; then pop TOS 5 80-bit Real DB [mod 111 r/m] M.XR <— TOS; then pop TOS 15 FSTP —tore FPU Register, Pop 64-bit Real DD [mod 011 r/m] M.DR <— TOS; then pop TOS 12 32-bit Real D9 [mod 011 r/m] M.SR <— TOS; then pop TOS 9 ZFx86 Data Book 1.0 Rev D Page 110 2 Table 2.58 MMX Instruction Set Summary (cont.) MMX Instructions Clock Count Opcode Operation DF [mod 110 r/m] M.BCD<—TOS; then pop TOS 32-bit Integer DB [mod 010 r/m] M.SI <— TOS 16 - 22 16-bit Integer DF [mod 010 r/m] M.WI <— TOS 12 - 18 64-bit Integer DF [mod 111 r/m] M.LI <— TOS; then pop TOS 19 - 27 32-bit Integer DB [mod 011 r/m] M.SI <— TOS; then pop TOS 16 - 22 16-bit Integer DF [mod 011 r/m] M.WI <— TOS; then pop TOS 12 - 18 FBSTP Store BCD Data, Pop Notes 77 - 82 FIST Store Integer FPU Register FISTP Store Integer FPU Register, Pop FSTCW Store FPU Mode Control Register 9B)D9[mod 111 r/m] Wait Memory <— Control Mode Register 6 FNSTCW Store FPU Mode Control Register D9 FSTENV Store FPU Environment [mod 111 r/m] (9B)D9[mod 110 r/m [mod 110 r/m] Memory <— Wait Memory <— <— 3 30 - 40 Env. Registers 27 - 37 FNSTENV Store FPU Environment D9 FSTSW Store FPU Status Register (9B)DD[mod 111 r/m] Wait Memory <— Status Register 6 FNSTSW Store FPU Status Register DD Memory <— Status Register 3 FSTSW AX Store FPU Status Reg. to AX (9B)DF E0 Wait AX <— Status Register 6 FNSTSW AX Store FPU Status Reg to AX DF E0 AX <— Status Register 3 [mod 111 r/m] Memory Control Mode Register Env. Register FSUB Floating Point Subtract Top of Stack DC [1110 1 n] ST(n) <— ST(n) - TOS 10 - 16 80-bit Register D8 [1110 0 n] TOS <— TOS - ST(n) 10 - 16 64-bit Real DC [mod 100 r/m] TOS <— TOS - M.DR 13 - 19 2-bit Real D8 [mod 100 r/m TOS <— TOS - M.SR 11 - 17 FSUBP Floating Point Subtract, Pop DE [1110 1 n] ST(n) <— ST(n) - TOS; then pop TOS 10 - 16 Top of Stack DC [1110 0 n] TOS <— ST(n) - TOS 10 - 16 80-bit Register D8 [1110 1 n ST(n) <— TOS - ST(n) 10 - 16 64-bit Real DC [mod 101 r/m] TOS <— TOS - M.DR - TOS 13 - 19 32-bit Real D8 [mod 101 r/m] TOS <— TOS - M.SR - TOS 11 - 17 FSUBRP Floating Point Subtract Reverse, Pop DE [1110 0 n] TOS <— TOS - ST(n); then pop TOS 10 - 16 32-bit Integer DA [mod 100 r/m] TOS <— TOS - M.SI 18 - 27 16-bit Integer DE [mod 100 r/m] TOS <— TOS - M.WI 18 - 26 FSUBR Floating Point Subtract Reverse FISUB Floating Point Integer Subtract FISUBR Floating Point Integer Subtract Reverse 32-bit Integer Reversed DA [mod 101 r/m] TOS <— M.SI - TOS 18 - 27 16-bit Integer Reversed DE [mod 101 r/m] TOS <— M.WI - TOS 18 - 26 FTST Test Top of Stack D9 E4 CC set by TOS - 0.0 10 FUCOM Unordered Compare DD [1110 0 n] CC set by TOS - ST(n) 8 FUCOMP Unordered Compare, Pop DD [1110 1 n] CC set by TOS - ST(n); then pop TOS 8 CC set by TOS - ST(1); then pop TOS & ST(1) 8 FUCOMPP Unordered Compare, Pop two elements DA ZFx86 Data Book 1.0 Rev D E9 Page 111 2 Table 2.58 MMX Instruction Set Summary (cont.) MMX Instructions Clock Count Opcode Operation FWAIT Wait 9B Wait for FPU not busy 3 FXAM Report Class of Operand D9 E5 CC 4 FXCH Exchange Register with TOS D9 [1100 1 n] TOS <—>ST(n) Exchange FXTRACT Extract Exponent D9 F4 temp <— TOS TOS <— exponent (temp); then push significant (temp) onto stack FLY2X Function Eval. y × Log2(x) D9 F1 ST(1) <— ST(1) x Log2(TOS); then pop TOS FLY2XP1 Function Eval. y × Log2(x+1) D9 F9 ST(1) <— ST(1) x Log2(1+TOS);then pop TOS 131 - 133 <— Class of TOS Notes 9 145 - 154 Note 4 FPU Instruction Summary Notes All references to TOS and ST(n) refer to stack layout prior to execution. Notes: 1. Values popped off the stack are discarded. 2. A pop from the stack increments the top of stack pointer. 3. A push to the stack decrements the top of stack pointer. 4. For FCOS, FSIN, FSINCOS and FPTAN, time shown is for absolute value of TOS < 3p/4. Add 90 clock counts for argument reduction if outside this range. - For FCOS, clock count is 143 if TOS < p/4 and clock count is 98 if p/4 < TOS > p/2. - For FSIN, clock count is 81 to 82 if absolute value of TOS < p/4. 5. For F2XM1, clock count is 98 if absolute value of TOS < 0.5. 6. For FPATAN, clock count is 97 if ST(1)/TOS < p/32. 7. For FYL2XP1, clock count is 170 if TOS is out of range and regular FYL2X is called. ZFx86 Data Book 1.0 Rev D Page 112 3 3. North Bridge The North Bridge (illustrated in Figure 3-1 Data Paths) is a high performance 32 bit controller. Through the use of synchronous DRAM, high processor to/from system memory bandwidth is supported. This minimizes the need for second level cache. PCI read and write buffers allow system memory accesses to be handled in bursts and hence maximizes system availability to the processor. Lastly, a CPU to PCI write buffer allows the processor to post writes to the PCI and then continue to other tasks. • CPU bus to PCI bus bridge with PCI arbiter. Support for three external masters and one internal master. Any on chip or off chip master must connect via this interface. • External PCI bus mastership. External bus mastership of System Controller internal bus. Mastership allows access to system controller memory devices. • SDRAM Write Buffer – 32 Bytes • CPU to PCI Write Buffer – 32 Bytes • PCI Write Buffer – 16 Bytes 3.1. North Bridge Features • PCI Read Pre-fetch Buffer – Dual 16 Bytes The North Bridge controller is based on a PC87550 PCI System Controller (North Bridge) designed for a Pentium class processor. Following are the features of the North Bridge Controller. • Support for Power Management signals from the South Bridge • CPU single cycle and burst bus transactions support • Cache coherency support Figure 3-1 "Data Paths" on page 114 & ‘Block Diagram’ on page 115 provide a detailed look at the control paths of the North Bridge and how the data flows through it. Table 3.0 table base • CPU level one write back and write through cache support. • Support for SMM bus cycles • Support for Level 1 cache flush via CPU FLUSH# pin • Programmable cache, non-cache and Read-only regions support • 32 bit data bus structure though out • Memory Controller to support Synchronous DRAM (SDRAM). Memory can be configured as 16 or 32 bits wide. • Support for up to four banks of SDRAM and 256 Mbytes of memory space ZFx86 Data Book 1.0 Rev D Page 113 3 Processor Internal Configuration Registers Read DataPath A R B I T E R CPU-PCI Write Buffer 16 DW DRAM Write Buffer 8 DWORDS S D R A M MemoryPCI Pre-Fetch Buffer Dual 4DW PCIMemory Write Buffer 4 DW Memory Controller PCI Controller PCI BUS Figure 3-1 Data Paths ZFx86 Data Book 1.0 Rev D Page 114 3 C A IOCYCLE Controller AC Configuration Registers A A C NC_ADDR L2 Controller (see Note) Write Buffer and Control ADR SDRAM Controller BRDYPATH CNTRL PCI BM Buffer and Control CPU Backoff A CKE Refresh Control SNOOPCPU 32 KHz Int Clocks PCI ARBITER R HOST2PCI Control PCI BM Control G Clock Control SUSPA CLK66 Figure 3-2 Block Diagram Note: The L2 Controller is not operational in the ZFx86 chip. ZFx86 Data Book 1.0 Rev D Page 115 3 3.2. Interface Signals This section provides the description of signals between the North Bridge Core and other cores or pads. The signal descriptions are divided into various tables according to the functionality and interface they relate to for easy reference. Table 3.1 SDRAM Interface Signals Pin No. (PU/PD) Signal Type Description O Chip Select - drives CSn inputs of four pairs of SDRAM banks 7/6, 5/4, 3/2 and 1/0. Disables or enables device operation by masking or enabling all inputs except CLK, CKE (clock enable) and DQM. SDRAM_CSn_N[3:0] 0 = B25 1 = A25 2 = A24 3 = B24 SDRAM_DQM[3:0] 0 = C23 1 = B23 2 = D22 3 = A23 O Data Input/Output Mask - Drives four DQM inputs of SDRAM bank pair. They correspond to inverse of BEn[3:0] in 32 bits mode, in 16 bits mode DQM[1:0] is used to multiplex the four byte enables. When DQM is high during a write no data is written and during a read data pins are tri-stated. SDRAM_WE_N C22 O Data Write Enable - This output drives write enables to all SDRAMs. Enables write operation and row pre-charge. Latches data in starting from CAS, WE active. (dram_Wenn) MA[11:0] 0 = A15 1 = C14 2 = B15 3 = C15 4 = B16 5 = A16 6 = C16 7 = B17 8 = C17 9 = A18 10 = C18 11 = B18 O Memory Address - Twelve bits of address for SDRAM. Row/column addresses are multiplexed on the same pin. And it correspond to Row address : RA11 ~ RA0, Column address : CA9 ~ CA0 MA[13:12] 12 = A19 13 = D18 O Memory Address - SDRAM chips are organized internally in banks, and there may be 4 banks{x4, x8 and x16 SDRAMs) or 2 banks (x32 SDRAM). These banks should not confuse with system level banks of SDRAMs. ZFx86 Data Book 1.0 Rev D Page 116 3 Table 3.1 SDRAM Interface Signals (cont.) Pin No. (PU/PD) Signal Type Description D[31:0] 0 = C24 1 = A26 2 = B26 3 = C25 4 = D24 5 = C26 6 = E23 7 = D25 8 = E24 9 = D26 10 = E25 11 = E26 12 = F24 13 = F25 14 = G23 15 = F26 16 = G25 17 = G24 18 = G26 19 = H24 20 = H25 21 = H26 22 = J24 23 = J23 24 = J25 25 = J26 26 = K25 27 = K24 28 = K26 29 = L23 30 = L24 31 = L25 I/O Memory Data Bus - SDRAM_RAS_N C20 O Row Address Strobe - connects RASn input of SDRAM chips. SDRAM_CAS_N D20 O Column Address Strobe - connects to CASn input of all SDRAM chips. SDRAMCLK[0:3] 0 = B22 1 = A22 2 = B21 3 = A21 O SDRAM Clock - The frequency will be x1 of the System Clock (CLKIN). The SDRAM captures inputs at the positive edge of the clock. O SDRAM Clock Enable - Masks clock to freeze operation from the next clock cycle. SDRAM_CKE should be enabled at least one cycle prior to new command. Disables input buffers for power down mode. SDRAM_CKE C21 ZFx86 Data Book 1.0 Rev D Page 117 3 Table 3.2 PCI Sideband Signals Signal Type Description SB_REQnn I South Bridge PCI Request - This is a request signal from the South bridge for PCI bus into the arbiter. SB_GNTnn O South Bridge PCI Grant - This is bus grant signal from the arbiter in response to SBREQn. SB_PCICLK O South Bridge PCI Clock - This is a clock signal output to the South Bridge. IRQ13 Internal Only O Floating Point Interrupt - Causes SB to send INT to the CPU. WRM_RESET I Warm Reset - This is an input to the core. This pin allows an external source to initiate a warm reset to the CPU, by setting this pin HIGH. If not used it should be tied LOW. Table 3.3 Test Signals (JTAG) Signal Type Description TESTMODE I Enable Test Mode. SCAN_MODE I Scan Mode SCAN_EN I Scan Enable TEST_SI1–TEST_SI4 I Scan In ports - for four scan chains TEST_SO1–TEST_SO4 O Scan Out ports - for four scan chains CPU_SYNC[3:0] O CPU SYNC bus - For syncing Processor test with PCI Masters in simulation and with PCI Bus Testers in hardware. Only CPU_SYNC[0] actually goes out off chip. 3.3. Functional Description 3.3.1. Processor Interface Processor Interface will support memory, I/O and special bus cycles from the processor to the onboard resource, system memory and PCI bus. It will also handle snoop cycles to the processor on behalf of the PCI bus master. configuration address register is always local, while access to configuration data register is special as it could be within the core or external depending on the contents of the configuration address register. This is explained in more detail in the PCI Configuration section. 3.3.1.1. Address Map Following Memory and I/O address map specifies how address decoding is done to determine if local (within the core) or external resource is being accessed. Access to the PCI ZFx86 Data Book 1.0 Rev D Page 118 3 Table 3.4 Memory Access Map Local/ PCI Access Size Locala All 0FFF FFFF (256 MB max) PCI Memory Space PCI All Top-of-Memory => 0FFF FFFF PCI Memory Space PCIb All 1000 0000 FDFF FFFF SMM Space Local All 1DFD 0000 — 1DFE FFFF PCI All FE00 0000 — FFFF FFFF (32 MB) Memory Maximum local DRAM Upper ROM (Presently this also goes to PCI) Address Range a.Some holes may exist in the range of 000A 0000 – 000F FFFF for the Video Memory and ROMs may not be shadowed b.A hole of 128 KB may be used by SMM, which would be local, if programmed in SMMC Table 3.5 I/O Address Map Register Local/ PCI Access Size Address NB Configuration Index Register Local 16 bits 24H NB Configuration Data Register Local 16 bits 26H PCI Configuration Cycle Address Register Local 32 bits CF8H All CFCH PCI Configuration Cycle Data Register (If Configuration Enable =1 in PCI Configuration Address Register) Local or PCI 3.3.1.2. Special Regions To allow system flexibility, 4 regions have been defined that can be individually programmed to be non-cacheable. The region sizes should be allowed to be 32KB, 64KB, 128KB, 256KB, 512KB, or 1MB. The starting address and size are programmed in the registers PR3-PR1, and the mode is programmed in the register PRC. ZFx86 Data Book 1.0 Rev D Refer to ‘Register Set’ on page 136 for programming information. In a typical system configuration, these regions are not required since standard non-cacheable regions — nonshadowed ROM regions between 000C0000H-000FFFFFH — are automatically marked as non-cacheable. Page 119 3 3.3.1.3. Invalidate ROM Shadowed Region in L1 . Table 3.6 North Bridge Core Burst Sequence If ROM region is cached in L1, then whenever write to the ROM region is detected will cause the NB to run an invalidate cycle back to the processor. 3.3.1.4. ROM Regions Since the CPU is not capable of handling write-back/write-through modes on cache line basis, all ROM regions shadowed in the memory should be marked as non-cacheable, if the L1 cache is operating in write-back mode. If L1 is operating in write-through mode then ROM may be cacheable, if L1WBEN is cleared in the PROC register and SMM RAM is not overlaid to this ROM region. The reading from this region of DRAM is controlled by SHADRC and SHADWC register controls the writing. To load the DRAM with ROM information, that region should be marked write-able and disable the reading. This will cause the reads to happen from the ROM and write to the DRAM. After loading is complete the bits may be reversed in SHADRC and SHADWC for that region. Programming of SHADRC and SHADWC is explained in more detail in 3.4. "Register Set" on page 136. 3.3.1.5. Special cycles The North Bridge will always swallow special cycles, with the exception of shutdown and halt cycles, which it will broadcast to the PCI bus followed by a master-abort cycle. 3.3.1.6. Burst sequence The North Bridge core will support only linear burst sequence Burst Cycle First Address A3A2 Linear assumed burst cycle address sequence A3A2 00 00-01-10-11 01 01-10-11-00 10 10-11-00-01 11 11-00-01-10 3.3.1.7. Concurrent CPU and PCI busses The North Bridge will support an external master and the CPU running concurrently. This mandates that the PCI bus be (TRDY#) stalled on external master cycles until we run the cycle up to the CPU (if snooping is required). This may result in a write-back cycle, and thus the DRAM must be updated with the CPU data. The CPU should only be snooped for External Master accesses to a new 16 byte line (A[31:4] change). The initiator of the snoop request (Memory Controller) will manage this. 3.3.1.8. PCI Master Deadlock Issues In the event of a PCI deadlock condition, i.e. where the Target is continually retrying cycles, we need to take the following steps. • Condition our response with a large timeout counter. • CPU interface snoop logic must be able to generate BOFF# to the CPU to retry the cycle. Special care must be taken when there are cycles already been posted to the write buffer. • If the deadlock is on a PCI read, the CPU can be backed off, the external master granted the bus and the corresponding ZFx86 Data Book 1.0 Rev D Page 120 3 address snooped to the CPU. In the event of a write-back cycle, the DRAM is updated and the external master continues with the cycle. • In the event of a deadlock on a PCI write, with the PCI write buffer full, we must block the post to the write buffer, assert BOFF# to the CPU, force the CPU Interface/L2 FASTEN’s to idle and let the CPU retry the cycle. If the interrupted cycle was to DRAM, interrupting the cycle in the middle of a burst and rewriting part or all of the data is non-destructive (b/c it is linear memory). This means that in the clock that BOFF# is asserted to the CPU, all writes to the Write Buffer are blocked (in the Write Buffer modules) • While snooping, AHOLD to the processor will be used, so that a write-back cycle can occur, even if BOFF# was generated. 3.3.1.9. Conditions when a memory address is not cacheable in L1 If any one of the conditions below is true, that memory address must be made non-cacheable in L1. • KENEN bit in the PROC register is a ‘0’. • The address is not within the local DRAM area. • The address matches the value programmed in any of the four programmable regions and the cacheability bit for the programmable region indicates noncacheable. • DIS23RMAP bit in SMMC register is a ‘0’ and access is to 20000-3FFFFh region. • SMM memory is mapped to lower SMM RAM region. • When in SMM mode, and SMM memory is mapped to lower region, D0000-EFFFFh. Or KDISSMMRAM bit is set to a ’1’ in the ZFx86 Data Book 1.0 Rev D SMMC register. "SMM Control Register (SMMC) - Configuration Index 118H" on page 140 3.3.1.10. Conditions when a memory address is marked as WT Since the Processor does not support WB and WT regions in the memory, entire cache can be Write-back (WB) or Write-through (WT). The corresponding bits in the Programmable Region Control Register will be treated as don’t cares. 3.3.1.11. Conditions when there is no write-posting to PCI buffer All IO cycles will cause the write buffers to flush and finish any outstanding cycles. If any external masters currently occupy the PCI bus the CPU must be stalled until it regains arbitration priority for the PCI bus. LOCK and Pseudo-LOCK CPU drives the LOCK# signal when it is executing read-modify-write type of instruction. The LOCK# is driven with the ADS# of the first read bus cycle and stays on till the RDY# for the last write cycle. During the lock cycle the access to SDRAM from PCI is blocked till the LOCK# is de-asserted. Pseudo Lock indicated by PSLOCK# signal is asserted by the CPU when doing multi dword read. NB uses this signal only during 64-bit write cycle to lock the bus to the SDRAM, just like LOCK#, till the second write is complete. The use of PSLOCK# is controlled by a bit, DIS_PSLOCK, in the PROC register. When this bit is set, PSLOCK# signal will be ignored. 3.3.1.12. Address Translation When the processor does a memory access (MIO# = high) the address goes through a translation logic before it is fed to the decoders to determine if the address belongs to local memory or it is off-chip Page 121 3 CPU IOC Controller L2C Controller NC Addr A3, A2 Snoop CPU NC Address Memory Interface Cpuaddr[31:2] DRAM Decode Bank Useraddr[31:2] DRAM Decode SMM usedram non cache Write Buffer firstmeg DRAM Decode Single Bank Shadow Decode DCONFx BxC Regionx Hit CPU Final Decode CPU Local DRAM Bank Info Decode CPU Bank Type, CPU Row Address CPU Column Address etc. Memory KENnn Figure 3-3 CPU Address Translation and Decode . 3.3.2. DRAM Controller 3.3.2.1. DRAM architecture NB DRAM controller will only support 16 Mb, 64 Mb and 128Mb Synchronous DRAM. It will have control for up to four banks of 32-bit memory or 16-bit memory. Each bank can be made up of a single or multiple SDRAM ZFx86 Data Book 1.0 Rev D chip(s). Each 32-bit bank can have capacity from 8 MB to 64 MB of memory, with four banks giving a total of 256 MB for the NB. With 16-bit banks lower memory size (2MB) can be achieved for a low entry cost system design. DRAM controller will support Single Data Strobe (SDR) SDRAM of the following configurations: Page 122 3 Table 3.7 SDRAM Configurations SDRAM Type SDRAM Configuration SDRAM Int. Bank Size SDRAM Row Size SDRAM Column Size Number of SDRAM per Memory Bank Max Memory Bank Size (Mbytes) 32Bit 16Bit 32Bit 16Bit 2M x 4 x 2 1 11 10 8 4 16 8 1M x 8 x 2 1 11 9 4 2 8 4 512K x 16 x 2 1 11 8 2 1 4 2 4M x 4 x 4 2 12 10 8 4 64 32 2M x 8 x 4 2 12 9 4 2 32 16 1M x 16 x 4 2 12 8 2 1 16 8 512K x 32 x 4 2 11 8 1 1 8 4* 2M x 16 x 4 2 12 9 2 1 32 16 16Mbit 64Mbit 128Mbit 3.3.2.2. DRAM memory map Address mapping is done to reduce the encoding logic and cover wide range of memory devices. Row address is presented with a RAS and column address is presented with a CAS, bank address need to be stable and same, during both RAS and CAS times. “P” bit during CAS indicates to the SDRAM to enable or disable Auto Pre-Charge. The memory address MA[11:0] connect to MA[11:0], and MA[13:12] connect to the internal-bank address SDRAMs. The exact mapping of address connection between NB and the SDRAMs will depend on the technology and the configuration of the SDRAM. ZFx86 Data Book 1.0 Rev D Page 123 3 BA<> MA<> North Bridge D<31:0> RAS#, CAS#, WE# CS# CS# CS# CS# Figure 3-4 32-Bit Banks Connection North Bridge BA<> 32 Bit DIMM MA<> D<15:0> RAS#, CAS#, WE# CS# CS# CS#<1:0> Figure 3-5 16-Bit Bank Connections ZFx86 Data Book 1.0 Rev D Page 124 3 3.3.2.3. DRAM Bank location flexibility 3.3.2.8. Pre-charge Time All DRAMs, regardless of sizes, must be able to be placed in any Bank and at any starting address locations (in 2 Meg resolution for 16 bit banks). If there are gaps in the mapping, the gaps will go to PCI. There is no checking for the overlapped mapping, and this is done in the BIOS firmware. Pre-charge command is used instead of Auto Pre-charge to pre-charge the rows of the DRAM. It is initiated at the start of the Mode Register setting, auto-refresh, self-refresh, RAS time-out, page-miss and on power-on. 3.3.2.4. Mixing SDRAM banks Instead of latching the address into the write FIFO in the NB chip and then decoding the necessary signals when the actual write cycle is about to occur, all necessary signals will be decoded and then written into the FIFO. This will allow faster DRAM signal generation. Mixing of SDRAM banks of different size, speed and/or manufacturers will be allowed through SDRAM bank control and timing control registers for each bank. The 16-bit banks only exist on the lower 16 bits of the MD<> bus. Also a bank can be of 16-bit and another bank of 32-bit in a system will be supported. 3.3.2.5. DRAM refresh 16 Mb, 64 Mb and 128Mb SDRAM need refresh every 64 ms/row regardless of the width. Using Auto Refresh command every 15.625 usec satisfies this requirement. SDRAM refresh period is generated from 32KHz clock, using both edges of the clock to generate refresh request pulse. Though 50% duty cycle clock is not required, the ratio should be reasonable to allow the system clock to synchronize this 32KHz clock. 3.3.2.9. Decode all necessary signals before writing to FIFO 3.3.2.10. ROM shadowing When ROM is shadowed into DRAM, only CPU is allowed access to shadowed RAM. The DRAM controller should treat all non-CPU access to ROM regions as non-local DRAM access. The ROM shadowing is applicable to regions 000C0000H-000FFFFFH. Reg. 200 and 201 specify READ/WRITE ability of the shadowed ROM. Illustrated below is a table specifying the 16KB block from D4000H-D7FFFH (1MB160KB). 3.3.2.6. CPU write to 16 bit DRAM bank If a 16 bit DRAM bank is in the system and the processor is writing to either the upper word or lower word only, there should be just one DRAM write cycle. The DRAM should filter writes based on the BE[3:0]# and ONLY run 2 cycles if both BE2# AND BE3# are active (i.e. crossing a WORD boundary). 3.3.2.7. Treat bank miss as page miss Because bank miss cycles are very infrequent, bank misses will be treated as page misses. This will save logic by allowing the use of one block of logic (i.e. RAS precharge logic) for all DRAM banks, instead of one for each DRAM bank. ZFx86 Data Book 1.0 Rev D Page 125 3 Table 3.8 ROM Shadow Illustration SHADRC SHADWC Description 0 0 Read from 000D4000H:000D7FFH comes from ROM Write to 000D4000H:000D7FFH is ignored Read from 4GB→4GB-32MB comes from ROM Write to 4GB→4GB-32MB is sent to PCI bus 0 1 Read from 000D4000H:000D7FFH comes from ROM Write to 000D4000H:000D7FFH is to Shadow RAM Read from 4GB→4GB-32MB comes from ROM Write to 4GB→4GB-32MB is sent to PCI bus 1 0 Read from 000D4000H:000D7FFH comes from Shadow RAM Write to 000D4000H:000D7FFH is ignored Read from 4GB→4GB-32MB comes from ROM Write to 4GB→4GB-32MB is sent to PCI bus 1 1 Read from 000D4000H:000D7FFH comes from Shadow RAM Write to 000D4000H:000D7FFH is to Shadow RAM Read from FFFD4000H:FFFD7FFH comes from ROM Write to FFFD4000H:FFFD7FFH is sent to PCI bus 3.3.3. Configuration and Testability 3.3.3.1. North Bridge Register Programming IO address 24H will be used as an index register and IO address 26H will be used as a data register. All 16 bit register accesses to these addresses will be absorbed by North Bridge (NB) and will not appear on the PCI bus. Any byte accesses to IO 24/26 will be ignored by NB and passed onto the PCI bus where the South Bridge will pick up the request. Table 3.9 North Bridge Registers Index range Function 0100H-01FFH Reset sampling and Miscellaneous Registers 0200H-02FFH SDRAM Registers 0300H-03FFH Power Management Registers 0400H-04FFH L2 Controller Registersa a.The ZFx86 does not support an L2 Cache. ZFx86 Data Book 1.0 Rev D Page 126 3 3.3.3.2. PCI Registers The PCI specification requires that all devices connected to the PCI bus must implement a minimum set of 64bytes of PCI configuration space registers. In order to support this, two double-word IO addresses, 0CF8H and 0CFCH are used as CONFIG_ADDRESS and CONFIG_DATA registers, respectively. Only double-word access to 0CF8H address will be trapped for local access and it accesses PCI_CONFIG_ADDRESS register, other size accesses will go to PCI bus. To access local PCI configuration registers, address has to be loaded into PCI_CONFIG_ADDRESS bits 7:0 and with bits 23:11 equal to 0s, and bit31 equal to 1. If bits 23:11 is other than 0s or bit31 is not a 1, or access is not a double-word a PCI cycle would be run. See ‘PCI Hardware and Software Architecture & Design, 4th Edition, Solari & Willse, Annabooks, IBSN 092939259-0. 3.3.4. PCI bus interface and arbiter 3.3.4.1. PCI arbiter NB will support up to 3 external PCI masters, a South Bridge request, and the CPU request. The arbiter will allow a rotating priority scheme between the PCI-ISA bridge, the CPU, and one of the PCI REQ/GNT# pairs. It can be configured to give the PCI REQ#/GNT# pairs every other arbitration (see GRNT_BANK diagram below). The arbitration is set up on a 4-3 tier formation. The starting arbitration chooses evenly (round robin), or prioritizes between a “PCI Winner”, the South Bridge and the CPU. The beginning arbitration chooses a “PCI Winner” amongst 3 requesters. These 4 requesters can be mapped to any of the REQ#/GNT# pins. will give priority access to certain masters (ex. video or IDE) if they are continually requesting. Although the Requester A can get every other PCI arbitration, it still needs to arbitrate with an “ISA winner” and the CPU. If the PCI Winner is allowed every other arbitration (see GNT_BANK Priority Diagram below) and the CPU and ISA are all requesting, the Requester A will get 1/2 of all PCI Arbitration but only get access (to DRAM) 1/4 of the arbitration. If the PCI Winner is programmed for Round Robin (fair arbitration) the Requester A would have a maximum of 1/6 of all arbitration to DRAM. The PCI Arbiter should allow PCI Peer to Peer access (we decode the address as non-local DRAM) and allow the CPU to access the DRAM while the Peer to Peer transaction is taking place. In the event of a CPU request for the PCI bus, it must again wait until it is arbitrated the bus, and then the cycle can complete. Note that for PCI peer to peer transactions we do NOT need to snoop the CPU because this memory is considered noncacheable. Figure 3-6 shows the arbitration priority scheme between requesters on the PCI bank. in order to determine a “PCI Winner”. Note Requester A (mapped from any REQ#/GNT# pair) can win every other PCI arbitration. This ZFx86 Data Book 1.0 Rev D Page 127 3 ARBITER CONFIGURATION DIAGRAM From CFG_REG CPUREQ# From CFG_REG GNT_a GNT0# GNT_b GNT1# GNT_c GNT2# REQ1# REQ_b GNT_d GNT3# REQ2# REQ_c REQ3# REQ_d REQ4# PCI BANK GNT_e PCI_WINNER ARBITER CORE REQ_e V3_GNT# SB_REQ# ISA BANK ARBITER REQ_a ARBITER REQ0# GNT4# SB_GNT# ISA_WINNER CPUGNT# SB_REQ#: Can be routed via SB_REQ pin or one of the PCI REQ# pins. PCI_BANK: Only 5 requests as 6th is routed to V4. Priority scheme as explained. ISA_BANK: Always ROTATING priority between masters. If SIO_HIPRI bit (Reg111EH[6]) is set, then V4 is always higher priority. ARBITER CORE: Priority scheme as explained. Figure 3-6 PCI Bus Arbiter Block Diagram ZFx86 Data Book 1.0 Rev D Page 128 3 PCI_BANK PRIORITY SCHEME Reset REQ_a REQ_a (Slot 0) Reg11EH(0) REQ_b REQ_c REQ_a (Slot 1) Reg11EH(1) Programmable Slots REQ_b (Slot 2) Reg11EH(2) REQ_a (Slot 3) Reg11EH(3) REQ_d REQ_e Transition to next state occurs when the master completes one cycle (locked / unlocked) or PMIT expires Figure 3-7 PCI Bank Arbiter State Diagram 3.3.5. PCI Write Buffer and Bursts In order to meet the 100Mb/s PCI transfer rate requirements, the PCI needs to sustain a continual burst of data to linearly increasing addresses. Thus the PCI block must look ahead 3 entries (from the current address and data) in order to determine if it can sustain the burst cycle. The 3 entry requirement is based ZFx86 Data Book 1.0 Rev D on the need to de-assert FRAME# on the next to last data transfer. The PCI write buffer will be 16 DWORD entries long. Read Reordering is NOT allowed for PCI cycles. Page 129 3 The conditions for preventing or terminating a burst sequence are: • The next cycle is to a different (non-contiguous address). • There are less than 3 entries in the PCI write buffer. • The PCI burst enable bit is turned off in the PCIC register. • The cycle is to a ROM region. • The cycle is to I/O space. 3.3.5.1. CPU write/read to PCI Since the CPU (32-bit X86) and PCI are of same data widths, CPU memory and I/O cycles are translated into corresponding PCI cycles of the same type, except for writes and reads to configuration address which is explained in the next section. 3.3.5.2. PCI configuration address and data registers The PCI configuration address and data registers have been defined as 0CF8H and 0CFCH respectively. The North Bridge (NB) is implementing the PCI configuration mechanism #1 with 64 bytes of configuration space (00H3FH). Since some registers within this 64 bytes are reserved, the PCI specification requires any writes to these areas to be ignored and any reads from these areas to be returned as all 0s. Writes and reads to the Configuration Address port 0CF8H have to be full double-word and the composition of the Configuration Address register is in Figure 3-8 Translation of Type 0 Configuration Cycle, and Figure 3-9 Translation of Type 1 Configuration Cycle. Any access other than full double-word access will turn into an I/O cycle on the PCI bus. When the CPU makes an access to the Configuration Data port 0CFCH, bit 31 of the Configuration Address register decides if its going to be a configuration cycle or a ordinary I/O cycle. Configuration cycles to the PCI register space (Device Address = 0) are trapped to local PCI registers; other accesses go out to the PCI as Configuration cycles. Configuration cycles can be Type 0 or Type 1, and are differentiated in the way the mapping of device address is done before it is presented on the PCI bus. In Type 0 cycles the device address, CONFIG_ADDR Register[15:11], is decoded and presented on the AD[31:11] bits, the CONFIG_ADDR Register[10:2] will go as is on AD[10:2] and AD[1:0] are forced to ‘00’. In Type 1 cycles the contents of the CONF Register[31:2] are copied to AD[31:2] and AD[1:0] are forced to ‘01’. Both Type0 and Type1 configuration cycles are supported, and the type of cycle run will depend on the value of the “Bus Number” field in the Configuration Address register. If it’s zero then Type 0 will be run otherwise Type 1 would be run. ; Check to see if the NB is in it's default state. mov mov out add in sub cmp eax, dx, dx, dl, al, dl, al, 80009048h 0CF8h eax 4 dx 4 04h ZFx86 Data Book 1.0 Rev D ; ; ; ; ; ; ; ; ; (EAX) = Function register (DX) = PCI register. Write it on out (full width) DX = 0CFCH Get the current value (I/O cycle) DX = 0CF8H Check to see if it's the default value or we have been programming it. Page 130 3 ; Check to see if NB is in it's default state. mov mov out add in sub shr cmp eax, dx, dx, dl, eax, dl, eax, al, 80009050h 0CF8h eax 4 dx 4 16 98h jz SkipReset ; ; ; ; ; ; ; ; ; ; (EAX) = Function register (DX) = PCI register. Write it on out. DX - 0CFCH Get the current value. DX = 0CF8H shift reg52 to AL default value? (ROM read-write gets changed at table programming (bit1) Skip reseting PCI if default ; Do reset, if register content was not as ; defaults are supposed to be ; DoReset: POSTCODE 02h mov out add in or out nop nop nop and out or out sub jmp eax, 80009044h dx, eax dl, 4 al, dx al, 0Eh dx, al ; ; ; ; ; (EAX) = reset control register, 5540. Select the reset control register. Move to PCI index register. Get the reset status. Reset PCI, IDE etc. al, 0F0h dx, al al, 1 dx, al dl, 4 DoReset ; ; ; ; That reset was edge sensitive. Clear reset bits Do X-Bus reset (resets entire system) do-it ; keep spinning until hardware reset SkipReset: ZFx86 Data Book 1.0 Rev D Page 131 3 CONFIG_ADDRESS 31|30 24|23 Reserved 16|15 Bus Number 11|108|7 Device Number 2|1 Register Number 0 Type Function Number Only One “1” 31 11|10 2|1 0 PCI_AD BUS Figure 3-8 Translation of Type 0 Configuration Cycle CONFIG_ADDRESS 31|30 24|23 Reserved 16|15 Bus Number 11|108|7 Device Number 2|1 Register Number 0 Type Function Number 01 31 2|1 0 PCI_AD BUS Figure 3-9 Translation of Type 1 Configuration Cycle ZFx86 Data Book 1.0 Rev D Page 132 3 3.3.5.3. CPU to PCI bus cycle conversion The Following table illustrates the conversion of CPU cycles to PCI cycles. In most cases it is one to one except where the configuration space is involved. Table 3.10 CPU-PCI Cycle Conversion M/IO# D/C# W/R# CPU bus definition C/BE[3:0]# PCI bus definition 0 0 0 Interrupt Acknowledge 0000 Interrupt Acknowledge 0 0 1 Special Cycle 0001 Special Cycle 0 1 0 I/O Read 0010 I/O Read 0 1 1 I/O Write 0011 I/O Write 0 1 0 I/O Read to CFCH 1010 Configuration Read 0 1 1 I/O Write to CFCH 1011 Configuration Write 1 X 0 Memory Read 0110 Memory Read 1 1 1 Memory Write 0111 Memory Write 3.3.5.4. PCI interrupt acknowledge cycle The CPU generates 2 INTA cycles, for any assertion of INTR. However, the PCI bus specifies that only one INTA cycle is to be run on the PCI bus. NB will swallow the first INTA cycle from the CPU, and pass only the second INTA cycle. 3.3.5.5. AD[31:0] must be actively driven If the CPU is the master, the NB must actively drive out AD[31:0], C/BE[3:0]#, and PAR. 3.3.5.6. Hardware generated PCI special cycle Hardware generated special cycles on the PCI bus come from CPU generated special cycles only. In particular, the CPU ‘SHUTDOWN’ and ‘HALT’ special cycles will be propagated to the PCI bus and become PCI special cycles. All other CPU special cycles should not propagate to the PCI bus. For the CPU ‘SHUTDOWN’ cycle, the value 0000H should be driven out on AD[15:0], until the end of the PCI ZFx86 Data Book 1.0 Rev D cycle. For CPU the ‘HALT’ cycle, the value 0001H should be driven out on AD[15:0] until the end of the PCI cycle. The normal PCI cycle will have an address phase, followed by the data phase, while a hardware PCI special cycle will have an address phase only, and no data phase. 3.3.5.7. PCI configuration access For a PCI configuration access, AD[31:0] (in address phase) needs to be driven out one PCI clock before FRAME# is asserted. This will allow enough precharge time for devices that resistively connect their IDSEL signals to the AD bus. 3.3.5.8. Master Abort When the CPU is doing a I/O or memory read from the PCI bus and a master abort condition happens, NB must drive out all ‘1’s to the CPU bus. This is the prescribed behavior for a CPU bridge according to the PCI Spec. and this event is recorded in the PCI Configuration Sta- Page 133 3 tus register. 3.3.6. Write buffer architecture 3.3.6.1. Write FIFO depth There are two 8 level deep write FIFO’s in NB. The independent FIFO’s are for buffering DRAM and PCI writes from the CPU. 3.3.6.2. Read re-ordering support for DRAM DRAM read around write should be allowed as an option for performance purposes. 3.3.6.3. Empty write buffers before disabling When the write buffer enable bit has been programmed to disable, the internal logic must ensure that the write buffer is emptied before disabling the write buffer. This should be guaranteed by design, since a configuration cycle (I/O space) will flush the buffers before disabling them. 3.3.6.4. All IO writes should not be posted All IO writes should not be posted. This mean that BRDY# to the processor should not be returned until the IO cycle is actually finished. 3.3.6.5. PCI Reads should wait for Empty PCI buffers All PCI reads should wait for the PCI write buffer to empty. 3.3.6.6. Concurrent PCI and DRAM operation Due to the presence of 2 split write buffer’s, allowing PCI memory writes and DRAM memory writes/reads to occur in parallel enhances NB performance. For example, if the CPU posts 6 PCI memory writes, these should all be taken from the CPU at 0 or 1 Wait State (dependent on L2). If the CPU follows with 5 DRAM writes and then a read, the read should be serviced while the PCI memory writes are ZFx86 Data Book 1.0 Rev D in process and while the DRAM writes are being stored (read-reordering). 3.3.7. System Management Mode System Management Mode (SMM) provides system designers with a means of adding new software controlled features to their computer products that always operate transparently to the operating system (OS) and software applications. SMM is intended for use only by system firmware, not by applications software or general purpose system software. System Management Mode is entered when the processor detects an SMI# (generated by South Bridge). SMM is used for special power management software or for transparent emulation of I/O devices. Special SMM memory space is allocated to protect this software from getting corrupted by the application or OS. The processor after a RESET needs to be put in the SL-mode by writing to CCR3 internal CPU register. In SL-mode the processor generates SMIACT# after it gets an SMI# signal, and it remains asserted until the RSMI instruction is executed by the SMM software. SMIACT# is generated on the pin marked SMADS#, as in the default mode of the processor (ST-mode) special System Mode Address Strobe# (SMADS#) is generated to access SMM space. When SMIACT# is asserted NB logic enables the access to the special SMM memory during this time, which is usually mapped over some normal memory addresses explained in the following sections. 3.3.7.1. SMM base address The SMM base address in the NB system is defined as either 000D 0000H-000E FFFFH or 1DFD 0000H-1DFE FFFFH region, selected via SMMC register in NB. The region selected and its size should be programmed into the CPU SMAR register. The size of the SMM memory can be a multiple of 32Kbytes, to maximum of 128KBytes Page 134 3 All physical memory space used for SMM memory is at A0000H-BFFFFH in DRAM. The reason for physically locating SMM memory here is that normally a Video memory space exists here, which is never shadowed in the local DRAM memory. The address re-mapping logic for DRAM also re-maps 20000H-3FFFFH to A0000HBFFFFH (physical memory) during the very first SMM mode access after reset, when SMMC[2]=0 to allow copying the SMM code. SMM RAM Normal Memory Normal Memory SMM RAM Shadowed Region Normal Memory Non-overlaid Region Overlaid Region Figure 3-10 SMM RAM Location 3.3.7.2. L1 Cacheability of SMM RAM The NB does not allow the SMM RAM to be cached in the L1 cache if SMM RAM is mapped to the lower SMM region by keeping KEN# HIGH during SMM space access. If the SMM RAM is mapped to the upper region i.e. 1DFD0000-1DFEFFFFh then SMM may be cached if SMMC[1]=0 and the processor was operating in the write-through mode. If the L1 was operating in the write-back mode then BIOS should set SMMC[1] to a ‘1’ to disable the caching to avoid dirty data remaining in the L1 cache. "SMM Control Register (SMMC) Configuration Index 118H" on page 140 Reasons why the SMM cannot and should not be cached in L1: ZFx86 Data Book 1.0 Rev D • If the CPU was operating in write-back mode, the SMM RAM cannot be cached in L1 as the CPU lacks a WB/WT# pin to put SMM data in write-through mode. The SMM data needs to be marked WT, as after the SMI handler is finished the dirty data in the L1 cache cannot be written back to the memory as that SMM space will not be available to the NB in the normal mode to write back the data. This is a CPU limitation. • If the CPU was operating in the writethrough mode and SMM was mapped in the lower region which may contain shadowed ROM, the L1 needs to be flushed on the entry of the SMI handler by asserting FLUSH# pin of the CPU. Flushing the SMM code at the end of SMI handler by Page 135 3 asserting the FLUSH# pin again immediately after de-assertion of SMI#. Presently the NB does not have this function to assert FLUSH# on the start or end of SMI handler. The only condition under which SMM memory can be cached in L1: • If the CPU was in Write-through mode and the SMM RAM is mapped to the upper region, then it is not overlaid on a cacheable memory. Here no cache flushing is needed at the start or at the end of SMI handler. 3.3.7.3. SMM code copying to SMM RAM in non-SMM mode To copy the SMI handler in the SMM memory space, LDSMIHLDER bit in the SMMC register should be set to ‘1’ and DIS23RMAP bit (SMMC[2]) should be set to a ‘0’. See "SMM Control Register (SMMC) - Configuration Index 118H" on page 140. Then write to address 20000H to 3FFFFH with the SMM code, which actually writes to the physical A0000H to BFFFFH area in the local DRAM. Which means that BIOS or the loader software should not be using the 20000H-3FFFFH space for code or data storage during this time. After the loading is complete BIOS should set bit SMMC[2] to a ‘1’, which disables the re-mapping of 20000H–3FFFFH to A0000H-BFFFFH address for normal operation, and clear LDSMHLDER bit. Also the SMIHLDERLOCK bit should be set in SMMC after the loading to prevent access to this area in the normal mode. 3.3.8. Power Management 3.3.8.1. CPU clock management The South Bridge Core or Chip will do all the power management. The NB will receive SUSP# and SUPA# signals from the South Bridge. On detection of SUSPA# assertion, if the EN_STOP_CPU_CLK bit is a ‘1’ in the Clock Control2 (CC2) register, the clock will be stopped to the CPU within 2-4 clocks. On detection of SUSP# de-assertion the clock to the CPU will restart within 2-4 clocks. 3.3.8.2. PCI clock management PCI clock to the PCI bus is free running. 3.3.8.3. Power Management for SDRAMs The CKE (clock enable) pin for SDRAM puts the device into a low power state. If EN_SDRAM_CKE_RST bit is a ‘1’ in the Clock Control2 register, CKE will be driven low on detection of P_SUSPA# assertion and will be driven back HIGH on detection of SB_SUSP# pin de-assertion. Another bit EN_STOP_SDRAM_CLK in the CC2 when set to ‘1’ will stop the clocks going to SDRAM for even lower power consumption under the conditions described above. 3.4. Register Set Registers are divided into six groups: • Reset Sampling • Memory Configurations Registers • Power Management Registers 3.3.7.4. Ban non-CPU masters from accessing SMM RAM When the PCI master accesses the memory space reserved for SMM memory, NB will not re-map the address and it will access the normal memory at that location. ZFx86 Data Book 1.0 Rev D • L2 Cache Controller Registers • PCI Configuration Registers • Miscellaneous Registers Page 136 3 3.4.1. Register Address Map The address of these registers will be maintained to be same as in 87550 chip. The register composition may change as certain bits may be eliminated or meaning changed and some new ones added. Note: Some registers discussed here may not be consecutively numbered; registers reserved for future expansion are not shown in this chapter. Ports 24h and 26h are used as index and data register respectively. Note that 16-bit access to Port 24h and 26h will be directed to the North Bridge and not passed to the PCI bus. However, any byte access to Ports 24h and 26h will be ignored by the North Bridge and passed to the PCI bus. This table shows the index numbers and abbreviations, detailed register descriptions follows. Table 3.11 Configuration Registers Bit Name Function Def. NB RevisionID Register (RID): Configuration Index 100H 3:0 North Bridge ID 15:4 Reserved North Bridge version ID. 0H All 0s Programmable Region 1 Register (PR1): Configuration Index 110H 2:0 PREG1S<2:0> Programmable region 1 block size: 000 = 001 = 010 = 011 = 100 = 101 = 11X = 15:3 PREG1S<27:15> 0H 32KB 64KB 128KB 256KB 512KB 1 MB Reserved Programmable region 1 starting address: The programmable region starting address must be a multiple of the block size. 000H Programmable Region 2 Register (PR2): Configuration Index 111H 2:0 PREG2S<2:0> Programmable region 2 block size: 000 = 001 = 010 = 011 = 100 = 101 = 11X = 15:3 PREG2S<27:15> ZFx86 Data Book 1.0 Rev D 0H 32KB 64KB 128KB 256KB 512KB 1 MB Reserved Programmable region 2 starting address: The programmable region starting address must be a multiple of the block size. 000H Page 137 3 Table 3.11 Configuration Registers (cont.) Bit Name Function Def. Programmable Region 3 Register (PR3): Configuration Index 112H 2:0 PREG3S<2:0> Programmable region 3 block size: 000 = 001 = 010 = 011 = 100 = 101 = 11X = 15:3 PREG3S<27:15> 0H 32KB 64KB 128KB 256KB 512KB 1 MB Reserved Programmable region 3 starting address: The programmable region starting address must be a multiple of the block size. 000H Programmable Region 4 Register (PR4): Configuration Index 113H 2:0 PREG4S<2:0> Programmable region 4 block size: 000 = 001 = 010 = 011 = 100 = 101 = 11X = 15:3 PREG4S<27:15> 0H 32KB 64KB 128KB 256KB 512KB 1 MB Reserved Programmable region 4 starting address: The programmable region starting address must be a multiple of the block size. 000H Programmable Region Control Register (PRC): Configuration Index 114H 1:0 PRGREG1_SEL<1:0> Programmable region 1 select <1:0>: 00 = 01 = 10 = 11 = 3:2 PRGREG2_SEL<1:0> 5:4 PRGREG3_SEL<1:0> 00 Disable Reserved non-cacheable Reserved Programmable region 3 select <1:0>: 00 = 01 = 10 = 11 = ZFx86 Data Book 1.0 Rev D Disable Reserved non-cacheable Reserved Programmable region 2 select <1:0>: 00 = 01 = 10 = 11 = 00 00 Disable Reserved non-cacheable Reserved Page 138 3 Table 3.11 Configuration Registers (cont.) Bit Name Function Def. 7:6 PRGREG4_SEL<1:0> Programmable region 4 select <1:0>: 00 00 = 01 = 10 = 11 = 15:8 Disable Reserved non-cacheable Reserved Reserved All 0s Cacheability Override Register (COR): Configuration Index 115H 0 CACHE_OVR_A24 Cacheability Override A24: When set, all address with A<24> high is marked non-cacheable. This corresponds to addresses in the range X1000000HX1FFFFFFH. 0 1 CACHE_OVR_A25 Cacheability Override A25: When set, all address with A<25> high is marked non-cacheable. This corresponds to addresses in the range X2000000HX3FFFFFFH. 0 2 CACHE_OVR_A26 Cacheability Override A26: When set, all address with A<26> high is marked non-cacheable. This corresponds to addresses in the range X4000000HX7FFFFFFH. 0 3 CACHE_OVR_A27 Cacheability Override A27: When set, all address with A<27> high is marked non-cacheable. This corresponds to addresses in the range X8000000HXFFFFFFFH. 0 4 CACHE_OVR_A28 Cacheability Override A28: When set, all address with A<28> high is marked non-cacheable. This corresponds to addresses in the range 10000000H1FFFFFFFH. 0 5 CACHE_OVR_A29 Cacheability Override A29: When set, all address with A<29> high is marked non-cacheable. This corresponds to addresses in the range 20000000H3FFFFFFFH. 0 6 CACHE_OVR_A30 Cacheability Override A30: When set, all address with A<30> high is marked non-cacheable. This corresponds to addresses in the range 40000000H7FFFFFFFH. 0 7 CACHE_OVR_A31 Cacheability Override A31: When set, all address with A<31> high is marked non-cacheable. This corresponds to addresses in the range 80000000HFFFFFFFFH. 0 15:8 Reserved ZFx86 Data Book 1.0 Rev D All 0s Page 139 3 Table 3.11 Configuration Registers (cont.) Bit Name Function Def. Back-off Control Register (BCR): Configuration Index 117H 1:0 NONPOST_RETRY_CNT<1:0> Non-posted PCI cycle retry count <1:0> 00 = 01 = 10 = 11 = 2 NONPOST_RETRY_DIS 3 Reserved 5:4 POST_RETRY_CNCT<1:0> 0 3 7 11 15 Disable PCI retry counter for non-posted cycle: 0 = enable, 1 = disable Posted PCI cycle retry count<1:0> 00 = 01 = 10 = 11 = 3 7 11 15 6 POST_RETRYCNT_DIS Disable PCI retry counter for posted cycle: 0 = enable, 1 = disable 7 Reserved 8 RESET_CNT_ON_GNT RESET retry counter on any bus master grant: 0 = not reset on gnt, 1 = reset on gnt. 9 HLD_RETRY_ON_REQ Hold retry on any PCI Bus Master Request: 0 = initiate retry once before backoff, 1 = initiate retry only after all pending PCI bus master requests have been serviced 15:10 Reserved 0 0 Table 3.12 SMM Control Register (SMMC) Bit Name Function Def. SMM Control Register (SMMC) - Configuration Index 118H 0 Reserved 1 KDISSMMRAM 0 SMM RAM KEN disable: 1= KEN# held inactive (high) during access to SMM RAM, 0 = KEN# function normally within SMM RAM. 0 Should always be set to ‘1’, to disallow caching. 2 DIS23RMAP ZFx86 Data Book 1.0 Rev D Disable 20000H-3FFFFH remap to A0000H-BFFFFH physical memory in SMM mode: 0 = enabled, 1 = disabled. Note: This bit can only be used while both L1 and L2 are disabled. 0 Page 140 3 Table 3.12 SMM Control Register (SMMC) (cont.) Bit Name Function Def. 3 FRCREMAP Enables the SMM remapped address to be used in a non-SMM cycle. This is used during loading of the SMM code to the memory. It works in conjunction with bit 14 and 15 of this register, and they need to be in the correct state to allow the loading. 0 5:4 SMM_DL_SEL[1:0] SMM D0000H-D7FFFH select<1:0>: 00 00 XXXD0000H-XXXD7FFFH is not used as SMM space. 01 reserved 10 000D0000H-000D7FFFH is used as SMM space. remap to 000A0000H-000A7FFFH in physical DRAM space.) 11 1DFD0000H-1DFD7FFFH is used as SMM space. (remap to 000A0000H-000A7FFFH in physical DRAM space.) *Note: When programmed to 10, 000D0000H-000D7FFFH will be automatically be set to non-cacheable. 7:6 SMM_DH_SEL[1:0] SMM D8000H-DFFFFH select<1:0>: 00 XXXD8000H-XXXDFFFFH is not used as SMM space. 01 reserved 10 000D8000H-000DFFFFH is used as SMM space. (remap to 000A8000H-000AFFFFH in physical DRAM space.) 11 1DFD8000H-1DFDFFFFH is used as SMM space. (remap to 000A8000H-000AFFFFH in physical DRAM space.) 00 *Note: When programmed to 10, 000D8000H-000DFFFFH will be automatically bet set to non-cacheable. 9:8 SMM_EL_SEL[1:0] SMM E0000H-E7FFFH select<1:0>: 00 00 01 10 XXXE0000H-XXXE7FFFH is not used as SMM space. reserved 000E0000H-000E7FFFH is used as SMM space. (remap to 000B0000H-000B7FFFH in physical DRAM space.) 11 1DFE0000H-1DFE7FFFH is used as SMM space. (remap to 000B0000H-000B7FFFH in physical DRAM space.) *Note: When programmed to 10, 000E0000H-000E7FFFH will be automatically bet set to non-cacheable. 11:10 SMM_EH_SEL[1:0] SMM E8000H-EFFFFH select<1:0>: 00 00 01 10 XXXE8000H-XXXEFFFFH is not used as SMM space. reserved 000E8000H-000EFFFFH is used as SMM space. (remap to 000B8000H-000BFFFFH in physical DRAM space.) 11 1DFE8000H-1DFEFFFFH is used as SMM space. (remap to 000B8000H-000BFFFFH in physical DRAM space.) *Note: When programmed to 10, 000E8000H-000EFFFFH will be automatically bet set to non-cacheable. ZFx86 Data Book 1.0 Rev D Page 141 3 Table 3.12 SMM Control Register (SMMC) (cont.) Bit 12 Name Function SWAP_23_MAP Swap SMM 2/3 mapping: 0 = 2/3 will be mapped to A/B, 1 = 2/3 will be mapped to B/A. Here 2/3 and A/B refer to the address bits 19-16, 0= 1= 13 SWAP_DE_MAP 1= 0 2XXXX access will be mapped to AXXXX and 3XXXX to BXXXX 2XXXX access will be mapped to BXXXX and 3XXXX to AXXXX Swap SMM D/E mapping: 0 = D/E will be mapped to A/B, 1 = D/E will be mapped to B/A. Here again D/E and A/B refer to the address bits 19-16, 0= Def. 0 DXXXX access will be mapped to AXXXX and EXXXX to BXXXX DXXXX access will be mapped to BXXXX and EXXXX to AXXXX 14 LDSMIHLDER Load SMI handler into SMM RAM: 1 = enable access to SMM RAM during normal cycle, 0 = disable access to SMM RAM during normal cycle. 0 15 SMIHLDERLOCK SMM RAM access in normal mode lock: This bit provides an option to lock bit 14 in a disabled state, thereby prohibiting any further access to SMM RAM from normal mode. This bit can only be written once. Reading a 0 from this bit indicates that bit 14 above is not locked. Reading a 1 from this bit indicates that bit 14 above is locked to disable state. 0 Table 3.13 Processor Control Register (PROC) Bit Name Function Def. KEN enable: When low, KEN# will be forced to inactive state for all cycles. When high, KEN# will be generated for all local memory cycles. 0 Processor Control Register (PROC) - Configuration Index 119H 0 1 KENEN L1WBEN L1 write-back enable: When low, WB_WT# will be in write through state always. When high, WB_WT# will be in write back state whenever is possible. 1 NO WB_WT# pin on CPU 2 Reserved 3 Reserved 4 Reserved ZFx86 Data Book 1.0 Rev D 0 Set to 1 in hardware. 1 0 Page 142 3 Table 3.13 Processor Control Register (PROC) Bit 5 Name WRFIFO_EN Function Def. Enable write FIFO: 0 = disable, 1 = enable. This bit controls buffer depth of CPU-PCI write buffer and CPU-SDRAM write buffer. When disabled, CPU-PCI depth = 2 CPU-SDRAM depth = 1 0 When enabled, CPU-PCI depth is controlled by PCIWFIFOC register CPU-SDRAM depth is controlled by WFIFOC registers 6 DIS_PSLOCK Disable PSLOCK – When set to ‘1’, will disable the PSLOCK signal from being used. 0 7 FLUSH Setting this bit from 0->1, causes the core to set FLUSHnn pin to the CPU to go LOW for 1 clock. To do another flush this bit should be reset to ‘0’ and then set to 1. 0 8 DIS_FPUCLR_BY_F0 Disable clearing of FPU error by writing to IO port F0H: 0 = enable clearing, 1 = disable clearing. 0 9 DIS_FPUCLR_BY_F1 Disable clearing of FPU error by writing to IO port F1H: 0 = enable clearing, 1 = disable clearing. 0 10 WRM_RST Warm Reset – When a ‘1’ is written to this bit, a warm reset sequence initiates. It works the same as FLUSH bit. For example, to do another warm reset, clear this bit to ‘0’ and then set it to 1. 0 Address 20 Mask – Used for DOS compatibility. 0 11 A20M 15:12 Reserved All 0’s Table 3.14 Write FIFO Control Register (WFIFOC) Bit Name Function Def. Write FIFO Control Register (WFIFOC) - Configuration Index 11AH 2:0 FIFOD<2:0> Write FIFO depth 000 001 010 011 100 101 110 111 3 DRMRDREODEREN 4 Reserved ZFx86 Data Book 1.0 Rev D 000 8 dwords 7 dwords 6 dwords 5 dwords 4 dwords 3 dwords 2 dwords 1 dword DRAM read re-ordering enable: 0 = disable, 1 = enable. When this bit is set and when there’s pending DRAM write cycle, a DRAM read operation will be performed before a DRAM write operation. 0 Page 143 3 Table 3.14 Write FIFO Control Register (WFIFOC) (cont.) Bit 5 Name CPU&EM_DRAM ARBITRATION Function CPU/External Master DRAM Arbitration Priority Scheme: 0 0 CPU has NO Write Buffer access while Ext. Master is accessing DRAM 1 7:6 Reserved 11:8 RD2WR_LAT<3:0> Def. CPU has Write Buffer access’ while Ext. Master is accessing DRAM 00 Read to write pending latency<3:0>: These bits indicate the number of clocks to delay before switching from a read cycle back to pending cycles in the write buffer. These bits have no effect if the read re-ordering is disabled. 2H Bits<3:0> Number of CPUCLKs 0H reserved 1H 1 2H 2 3H 3 4H 4 5H 5 6H 6 7H 7 8H 8 9H 9 AH 10 BH 11 CH 12 DH 13 EH 14 FH 15 13:12 Reserved 15:14 WR_LATENCY<1:0> 00 DRAM write latency<1:0>: These bits indicate the number of processor clocks write are stalled before being issued to DRAM controller. 00 Bits<1:0> number of clocks 00 01 10 11 ZFx86 Data Book 1.0 Rev D 1 2 3 4 Page 144 3 Table 3.15 PCI Control Register (PCIC) Bit Name Function Def. PCI Control Register (PCIC) - Configuration Index 11BH 0 CPU2PCI_BURST_EN CPU to PCI burst enable: When 0, the North Bridge only does a single PCI transfer when CPU is accessing PCI bus. When 1, the North Bridge will try to burst to PCI when CPU is master. 0 1 PCIM2DRM_BRST_EN PCI master to DRAM burst enable: When 0, the North Bridge only does a single DRAM transfer when PCI master is accessing DRAM. When 1, the North Bridge tries to do a burst to DRAM when PCI master is accessing. 0 2 BM_BURSTRD_ALWYS PCI master read prefetch always: When 0, only PCI read line or PCI read multiple starts a burst read request. For PCI single read, a burst read request initiates only after the first data phase completes and PCI master indicates that it wants a burst access. When 1, any PCI read cycle initiates a burst read request. Note: In order to enable this feature, bit[1] must be enabled. 0 3 DISC_ON_LN_BOUNDARY Disconnect from PCI master on CACHE line boundary: 0 = no disconnect, 1 = disconnect. 0 4 EN_PCI_FAST_DECDE Enable PCI fast decode when accessing DRAM: 0 = disable, 1 = enable. 0 5 EN_ADCBE_FLT_IDLE Enable AD/CBE/PAR float when PCI is idle and CPU is the bus master: 0 = disable float, 1 = enable float. 0 6 DIS_RESOURCE_LOCK Disable Resource Lock: 0 = enable, 1 = disable. 0 Note: when EN_BUS_LOCK(bit 7) is set to 1, this bit ignored. 7 EN_BUS_LOCK Enable Bus Lock: 0 = disable, 1 = enable. When enabled, GNT# to a particular PCI master remains asserted until LOCK# is deasserted. Note: When this bit is set to 1, DIS_RESOURCE_LOCK(BIT 6) ignored. 0 8 LCK_RDBURST_EN Enable the locking of PCI bus during a 64-bit processor read access to the PCI bus. 0 = disable, 1 = enable. 0 9 CNFCY_AD_STEP_DIS PCI configuration cycle address stepping disable: 0 = enable, 1 = disable. 0 10 BM_DONE_DIS Disable the waiting of PCI master cycle is done before 0 starting processor initated PCI cycle. 0 = enable, 1 = disable. When enabled, the North Bridge’s PCI master controller will not start until, 1)PCI master initiated cycle is done, 2)PCI master write buffer is empty, and 3) PCI master read prefetch is done. 11 Reserved 0 12 Reserved 0 ZFx86 Data Book 1.0 Rev D Page 145 3 Table 3.15 PCI Control Register (PCIC) (cont.) Bit 15:12 Name Function Reserved Def. All 0’s Table 3.16 Clock Skew Adjust Register (CSA) Bit Name Function Def. Clock Skew Adjust Register (CSA) - Configuration Index 11CH 2:0 Reserved 5:3 SDRAMCLK_SKEW 000 There three bits control the skew between the core clock and the SDRAM clock. 000 – 001 – 010 – 100 – 101 – Reset – 15:6 000 Nominal Minus 1 nsec Minus 2 nsec Plus 1 nsec Plus 2 nsec Default to Nominal Reserved All 0’s Table 3.17 BUS MASTER And Snooping Control Register (SNOOPCTRL) Bit Name Function Def. BUS MASTER And Snooping Control Register (SNOOPCTRL) - Configuration Index 11DH 0 DIS_SNOOP Disable Snooping: 0 = enable snoop, 1 = disable snoop. 0 1 DIS_CHK_HITM Disable the check of HITM#: 0 = enable the checking of HITM# during snooping. 1 = disable the checking of HITM# during snooping. In either case, the L1 cache may be invalidated with INVAL signal. 0 3:2 CK_HITM_WS<1:0> Check HITM# wait state: 00 2 clock after EADS# is deasserted. 01 3 clocks after EADS# is deasserted. 10 4 clocks after EADS# is deasserted. 11 5 clocks after EADS# is deasserted. 00 4 ADP_PREF_DIS Adaptive Prefetch Disable: 0 = enable, 1 = disable. When enabled, the North Bridge will monitor the average burst transfer length of a master access and than control the number of speculative prefetches accordingly. 0 5 Reserved ZFx86 Data Book 1.0 Rev D 0 Page 146 3 Table 3.17 BUS MASTER And Snooping Control Register (SNOOPCTRL) (cont.) Bit 6 Name DIS_WB_MERGE Function 0= 1= 7 DIS_EM_PREFETCH 0= 1= Def. Merge CPU/L2 Write-back data with External Master writes. The External Master’s valid bytes overwrite the data cast-out from the CPU/L2 and subsequently limit the bandwidth requirements to the s/dram. Do not merge External Master write data bytes with CPU/L2 write-back cycle. 0 Prefetch next “cache” line on EM accesses, and store in prefetch buffer Disable prefetch logic for External Masters (CPU clock based) 0 8 DIS_CONCURRENCY CPU/PCI master concurrency disable: 0 = enable, 1 = disable. 0 9 FAST_TRDY 0= 1= Normal TRDY# timings Enable Fast TRDY# timings to EM. Improves path from prefetch data ready (from CPU writeback, yes we snarf-see bit 10, or from DRAM) 0 10 DIS_BUS_SNARF 0= Snarf CPU write-back data and return it to the requesting External Master (read), concurrent with it’s retirement into DRAM. Disable bus snarfing and create 2nd cycle to get data after the write-back has retired it to DRAM. 0 1= 11 FORCE_DRM_PM_PCIM Force DRAM page miss in bus master cycle: 0= 1= 12 Reserved 13 DISPCIM_ELY_DRM_CY 0 Disable force page miss mode Enable force page miss mode. 0 Speculatively start DRAM cycle for PCI External Master Request and restart it in the event of an L1 or L2 writeback: 0 = enable, 1 = disable. 0 Errata: LNB will corrupt system memory with 2 PCI masters. This bug can be eliminated by setting bit 13 -DISPCIM_ELY_DRM_CY, in the SNOOPCTRL register. 14 Reserved 15 DISPCIM_SHADOWRAM ZFx86 Data Book 1.0 Rev D 0 0= Claim cycle for PCI Master access to 000C0000- 0 000F0000 region: 1= Do not Claim cycle for PCI Master access to ROM space (shadowed RAM) Note: All DRAM Write/Read protect bits are still applicable Page 147 3 Table 3.18 Arbiter Control Register (ARBCTRL) Bit Name Function Def. Arbiter Control Register (ARBCTRL) - Configuration Index 11EH (see also PCI register section REG 41H) 0 REQa_slot0 0= 1= Disable Slot 0 for REQa Enable Slot 0 for REQa 0 1 REQa_slot1 0= 1= Disable Slot 1 for REQa Enable Slot 1 for REQa 0 2 REQb_slot2 0= 1= Disable Slot 2 for REQb Enable Slot 2 for REQb 0 3 REQa_slot3 0= 1= Disable Slot 3 for REQa Enable Slot 3 for REQa 0 4 REQpci_slot4 0= 1= Disable Slot 1 for 2nd Arbitration of PCI (see diagram) Enable Slot 1 for 2nd Arbitration of PCI (see diagram) 0 5 PC98_support 0= 1= V4REQ#/V4GNT# pair treated as such. The V4REQ#/V4GNT# pair is treated as PHOLD#/PHLDA# 0 6 SIO_HIPRI 0= 1= Fair Arbitration between V3 & V4 REQ# pins Always give priority to V3 REQ# 0 7 Reserved [15:8] CPU_BUSY_TIMER 0 Number of PCI bus clocks that the CPU can “own” of the PCI bus before it is preempted by any other active requesters 00H = 01H = 02H = FFH = 00H Never preempt the CPU 4 clks 8 clks... 1024 clks Table 3.19 PCI Write FIFO Control Register (PCIWFIFOC) Bit Name Function Def. PCI Write FIFO Control Register (PCIWFIFOC) - Configuration Index 120H 2:0 FIFOD[2:0] PCI Write FIFO depth Bits 000 001 010 011 100 101 110 111 000 FIFO depth 16 dwords 14 dwords 12 dwords 10 dwords 8 dwords 6 dwords 4 dwords 2 dwords 3 Reserved 0 4 Reserved 0 ZFx86 Data Book 1.0 Rev D Page 148 3 Table 3.19 PCI Write FIFO Control Register (PCIWFIFOC) Bit Name Function Def. 5 PCI BM_FREERUNMODE PCI master write buffer PCI entry count free running mode bit. Transfer loop which copies CPU clocked write buffer entry count to PCI clocked entry count normally operates in an on-demand mode. This forces a free running mode which update the PCI every 6 or 8 CPU clocks (see slow transfer bit below). 0 6 PCI_BM_SLOWRUNMODE PCI master write buffer PCI entry count slow transfer mode. Increases transfer loop period from 6 CPU clocks to 8 CPU clocks. Transfer loop period is defined as how often the PCI side entry count is updated from the CPU entry count. 0 0= 1= 8:7 STALL_PCI_BM_POST 6 CPU clocks 8 CPU clocks Stall PCI master posting: 00 Bits<1:0> # of clocks 00 no stall 01 1 clock 10 3 clocks 11 7 clocks 11:9 Reserved All 0’s 15:12 0 3.4.2. DRAM registers Table 3.20 Shadow RAM Read Enable Control Register (SHADRC) Bit Name Function Def. Shadow RAM Read Enable Control Register (SHADRC) - Configuration Index 200H 0 LMEMRDEN0 Local memory C0000H-C3FFFH read enable: 0 = disable, 1 = enable. 0 1 LMEMRDEN1 Local memory C4000H-C7FFFH read enable: 0 = disable, 1 = enable. 0 2 LMEMRDEN2 Local memory C8000H-CBFFFH read enable: 0 = disable, 1 = enable. 0 3 LMEMRDEN3 Local memory CC000H-CFFFFH read enable: 0 = disable, 1 = enable. 0 4 LMEMRDEN4 Local memory D0000H-D3FFFH read enable: 0 = disable, 1 = enable. 0 5 LMEMRDEN5 Local memory D4000H-D7FFFH read enable: 0 = disable, 1 = enable. 0 6 LMEMRDEN6 Local memory D8000H-DBFFFH read enable: 0 = disable, 1 = enable. 0 7 LMEMRDEN7 Local memory DC000H-DFFFFH read enable: 0 = disable, 1 = enable. 0 ZFx86 Data Book 1.0 Rev D Page 149 3 Table 3.20 Shadow RAM Read Enable Control Register (SHADRC) (cont.) Bit Name Function Def. 8 LMEMRDEN8 Local memory E0000H-E3FFFH read enable: 0 = disable, 1 = enable. 0 9 LMEMRDEN9 Local memory E4000H-E7FFFH read enable: 0 = disable, 1 = enable. 0 10 LMEMRDEN10 Local memory E8000H-EBFFFH read enable: 0 = disable, 1 = enable. 0 11 LMEMRDEN11 Local memory EC000H-EFFFFH read enable: 0 = disable, 1 = enable. 0 12 LMEMRDEN12 Local memory F0000H-F3FFFH read enable: 0 = disable, 1 = enable. 0 13 LMEMRDEN13 Local memory F4000H-F7FFFH read enable: 0 = disable, 1 = enable. 0 14 LMEMRDEN14 Local memory F8000H-FBFFFH read enable: 0 = disable, 1 = enable. 0 15 LMEMRDEN15 Local memory FC000H-FFFFFH read enable: 0 = disable, 1 = enable. 0 Table 3.21 Shadow RAM Write Enable Control Register Bit Name Function Def. Shadow RAM Write Enable Control Register (SHADWC) - Configuration Index 201H 0 LMEMWREN0 Local memory C0000H-C3FFFH write enable: 0 = disable, 1 = enable. 0 1 LMEMWREN1 Local memory C4000H-C7FFFH write enable: 0 = disable, 1 = enable. 0 2 LMEMWREN2 Local memory C8000H-CBFFFH write enable: 0 = disable, 1 = enable. 0 3 LMEMWREN3 Local memory CC000H-CFFFFH write enable: 0 = disable, 1 = enable. 0 4 LMEMWREN4 Local memory D0000H-D3FFFH write enable: 0 = disable, 1 = enable. 0 5 LMEMWREN5 Local memory D4000H-D7FFFH write enable: 0 = disable, 1 = enable. 0 6 LMEMWREN6 Local memory D8000H-DBFFFH write enable: 0 = disable, 1 = enable. 0 7 LMEMWREN7 Local memory DC000H-DFFFFH write enable: 0 = disable, 1 = enable. 0 8 LMEMWREN8 Local memory E0000H-E3FFFH write enable: 0 = disable, 1 = enable. 0 9 LMEMWREN9 Local memory E4000H-E7FFFH write enable: 0 = disable, 1 = enable. 0 ZFx86 Data Book 1.0 Rev D Page 150 3 Table 3.21 Shadow RAM Write Enable Control Register Bit Name Function Def. 10 LMEMWREN10 Local memory E8000H-EBFFFH write enable: 0 = disable, 1 = enable. 0 11 LMEMWREN11 Local memory EC000H-EFFFFH write enable: 0 = disable, 1 = enable. 0 12 LMEMWREN12 Local memory F0000H-F3FFFH write enable: 0 = disable, 1 = enable. 0 13 LMEMWREN13 Local memory F4000H-F7FFFH write enable: 0 = disable, 1 = enable. 0 14 LMEMWREN14 Local memory F8000H-FBFFFH write enable: 0 = disable, 1 = enable. 0 15 LMEMWREN15 Local memory FC000H-FFFFFH write enable: 0 = disable, 1 = enable. 0 Table 3.22 Bank 0 Control Register (N_B0C) Bit Name Function Def. Bank 0 Control Register (N_B0C) - Configuration Index 202H 7:0 B0A<27:20> 8 Reserved 11:9 B0S<2:0> Bank 0 starting address <27:20> 0 Bank 0 DRAM size Bits<2:0> 000 001 010 011 100 101 110 111 14:12 COLADR0<2:0> 00H 000 DRAM bank size 2MB 4MB 8MB 16MB 32MB 64MB Reserved Reserved Number of column address bits for Bank 0<2:0> 000 Bits<2:0>Column address 000 8 bits 001 9 bits 010 10 bits all othersReserved 15 Reserved ZFx86 Data Book 1.0 Rev D 0 Page 151 3 Table 3.23 Bank 0 Timing Control Register (N_B0TC) Bit Name Function Def. Bank 0 Timing Control Register (N_B0TC) - Synchronous DRAM - Configuration Index 204H 1:0 B0_TRP SDRAM Pre-charge cmd to ACT cmd 11 Bits<1:0> Time 00 Reserved 01 2T 10 3T 11 4T 3:2 B0_TRC SDRAM ACT cmd to ACT cmd (same bank) 11 Bits<3:2> Addr. hold time 00 6T 01 7T 10 8T 11 9T 6:4 Reserved 111 7 B0_CAS_LATCY SDRAM CAS Latency: 0 = 2T, 1 = 3T 1 8 B0_TRCD SDRAM ACT cmd to R/W cmd delay: 0 = 2T, 1 = 3T 1 9 B0_TCCD SDRAM R/W cmd to R/W cmd: 0 = 1T, 1 = 2T 1 15:10 Reserved All ‘1’s Table 3.24 Bank 1 Control Register (N_B1C) Bit Name Function Def. Bank 1 Control Register (N_B1C) - Configuration Index 205H 7:0 B1A<27:20> 8 Reserved 11:9 B1S<2:0> Bank 1 starting address <27:20> 00H 0 Bank 21DRAM size 000 Bits<2:0> DRAM bank size 000 2MB 001 4MB 010 8MB 011 16MB 100 32MB 101 64MB 110 Reserved 111 Reserved ZFx86 Data Book 1.0 Rev D Page 152 3 Table 3.24 Bank 1 Control Register (N_B1C) (cont.) Bit 14:12 Name COLADR1<2:0> Function Number of column address bits for Bank 2 Def. 000 Bits<2:0>Column address 000 8 bits 001 9 bits 010 10 bits all othersReserved 15 Reserved 0 Table 3.25 Bank 1 Timing Control Register (N_B1TC) Bit Name Function Def. Bank 1 Timing Control Register (N_B1TC) - Synchronous DRAM - Configuration Index 207H 1:0 B1_TRP SDRAM Pre-charge cmd to ACT cmd 11 Bits<1:0> Time 00 Reserved 01 2T 10 3T 11 4T 3:2 B1_TRC SDRAM ACT cmd to ACT cmd (same bank) 11 Bits<3:2>Addr. hold time 00 6T 01 7T 10 8T 11 9T 6:4 Reserved 7 B1_CAS_LATCY SDRAM CAS Latency: 0 = 2T, 1 = 3T 1 8 B1_TRCD SDRAM ACT cmd to R/W cmd delay: 0 = 2T, 1 = 3T 1 9 B1_TCCD SDRAM R/W cmd to R/W cmd: 0 = 1T, 1 = 2T 1 15:10 Reserved All ‘1’s Table 3.26 Bank 2 Control Register (N_B2C) Bit Name Function Def. Bank 2 Control Register (N_B2C) - Configuration Index 208H 7:0 B2A<27:20> 8 Reserved ZFx86 Data Book 1.0 Rev D Bank 2 starting address <27:20> 00H 0 Page 153 3 Table 3.26 Bank 2 Control Register (N_B2C) Bit 11:9 Name B2S<2:0> Function Bank 2 DRAM size Def. 000 Bits<2:0>DRAM bank size 000 2MB 010 8MB 011 16MB 100 32MB 101 64MB 110 Reserved 111 Reserved 14:12 COLADR2<2:0> Number of column address bits for Bank 4 000 Bits<2:0>Column address 000 8 bits 001 9 bits 010 10 bits all others Reserved 15 Reserved 0 Table 3.27 Bank 2 Timing Control Register (N_B2TC) Bit Name Function Def. Bank 2 Timing Control Register (N_B2TC) - Synchronous DRAM - Configuration Index 20AH 1:0 B2_TRP SDRAM Pre-charge cmd to ACT cmd Bits <1:0> Time 00 Reserved 01 2T 10 3T 11 4T 11 3:2 B2_TRC SDRAM ACT cmd to ACT cmd (same bank) Bits <3:2> Addr. hold time 00 6T 01 7T 10 8T 11 9T 11 6:4 Reserved 7 B2_CAS_LATCY SDRAM CAS Latency: 0 = 2T, 1 = 3T 1 8 B2_TRCD SDRAM ACT cmd to R/W cmd delay: 0 = 2T, 1 = 3T 1 9 B2_TCCD SDRAM R/W cmd to R/W cmd: 0 = 1T, 1 = 2T 1 15:10 Reserved ZFx86 Data Book 1.0 Rev D All ‘1’s Page 154 3 Table 3.28 Bank 3 Control Register (N_B3C) Bit Name Function Def. Bank 3 Control Register (N_B3C) - Configuration Index 20BH 7:0 B3A<27:20> 8 Reserved Bank 3 starting address <27:20> 00H 11:9 B3S<2:0> Bank 3 DRAM size Bits <2:0> DRAM bank size 000 2MB 001 4MB 010 8MB 011 16MB 100 32MB 101 64MB 110 Reserved 111 Reserved 000 14:12 COLADR3<2:0> Number of column address bits for Bank 6 Bits<2:0> Column address 000 8 bits 001 9 bits 010 10 bits 011 11 bits 100 12 bits all others Reserved 000 15 Reserved 0 0 Table 3.29 Bank 3 Timing Control Register (N_B3TC) Bit Name Function Def. Bank 3 Timing Control Register (N_B3TC) - Synchronous DRAM - Configuration Index 20DH 1:0 B3_TRP SDRAM Pre-charge cmd to ACT cmd 11 Bits<1:0> Time 00 Reserved 01 2T 10 3T 11 4T 3:2 B3_TRC SDRAM ACT cmd to ACT cmd (same bank) 11 Bits<3:2> Addr. hold time 00 6T 01 7T 10 8T 11 9T 6:4 Reserved 7 B3_CAS_LATCY ZFx86 Data Book 1.0 Rev D SDRAM CAS Latency: 0 = 2T, 1 = 3T 1 Page 155 3 Table 3.29 Bank 3 Timing Control Register (N_B3TC) (cont.) Bit 8 Name B3_TRCD Function SDRAM ACT cmd to R/W cmd delay: Def. 1 0 = 2T, 1 = 3T 9 B3_TCCD 15:10 Reserved SDRAM R/W cmd to R/W cmd: 1 0 = 1T, 1 = 2T All ‘1’s Table 3.30 DRAM Configuration Register 1 (DCONF1) Bit Name Function Def. DRAM Configuration Register 1 (DCONF1) - Configuration Index 20EH 2:0 Reserved 5:3 DRAM_INAT_TO 000 DRAM inactive time-out<2:0> Bits<2:0> Page size 000 never 001 8T 010 32T 011 128T 100 512T 101 reserved 110 reserved 111 immediate 000 If SDRAM interface is inactive for the set amount of time, a Pre-charge cycle is generated at the end of timeout. Pre-charge cycle de-activates the DRAM row which may be in “ACTIVE” state. Doing a Pre-charge cycle when SDRAM is in-active for a while saves power. But the next memory cycle may be to the row which was just closed, and takes a hit of running a RAS cycle causing lower performance. 7:6 Reserved 8 Reserved 9 Reserved 10 Reserved 11 SDRAM_CMD_PIPELINE ZFx86 Data Book 1.0 Rev D 00 Fixed to ‘0’ in the hardware 0 0 SDRAM command pipeline enable: 0 = disable the pipelining of SDRAM command cycle. 1 = enable the pipelining of SDRAM command cycle. 0 Page 156 3 Table 3.30 DRAM Configuration Register 1 (DCONF1) (cont.) Bit Name Function Def. 12 EN_RELAX_SDRM_CMD_TMING Enable relax timing for SDRAM command cycle. 0 = disable, 1 = enable relax timing to the SDRAM command cycle. =1 MA, RAS, CAS and WE are asserted 1 clk before CS is asserted. Note: setting this bit to 1 will not affect performance but at the same time, allow the potential of not buffering MA, SDRAM_RAS, SDRAM_CAS, and WE# externally. 0 13 EN_SDRM_PWRDN Enable SDRAM power-down mode during mix DRAM type configuration: 0 = disable, 1 = enable SDRAM to get into power-down mode during mix DRAM type configuration and when access is to anywhere other than SDRAM. FW should always set this bit to ‘0’ 0 14 FST_SDRM_RD_L2_EN Enable fast SDRAM read access when L2 is on: 0 = disable, 1 = enable. FW should always set this bit to ‘0’ 0 15:14 Reserved 00 Table 3.31 DRAM Configuration Register 2 (DCONF2) Bit Name Function Def. DRAM Configuration Register 2 (DCONF2) - Configuration Index 20FH 0 BANK0_16EN Bank 0 enable: 0 = disable, 1 = enable. When enabled, bank 0 operates as a 16bit bank. 1 1 BANK1_16EN Bank 1 enable: 0 = disable, 1 = enable. When enabled, bank 1 operates as a 16bit bank. 0 2 BANK2_16EN Bank 2 enable: 0 = disable, 1 = enable. When enabled, bank 2 operates as a 16 bit bank. 0 3 BANK3_16EN Bank 3 enable: 0 = disable, 1 = enable. When enabled, bank 3 operates as a 32 bit bank. 0 7:4 Reserved 8 BANK0_32EN 0000 =0 Bank 0 disabled (bit0 overides this) 0 =1 Bank 1 enabled as 32 bit bank (this bit overides bit 0) 9 BANK1_32EN =0 Bank 0 disabled (bit1 overides this) 0 =1 Bank 1 enabled as 32 bit bank (this bit overides bit 1) 10 BANK2_32EN =0 Bank 0 disabled (bit2 overides this) 0 =1 Bank 1 enabled as 32 bit bank (this bit overides bit 2) 11 BANK3_32EN =0 Bank 0 disabled (bit3 overides this) 0 =1 Bank 1 enabled as 32 bit bank (this bit overides bit 3) 15:12 Reserved ZFx86 Data Book 1.0 Rev D 0H Page 157 3 Table 3.32 DRAM Refresh Control Register (DRFSHC) Bit Name Function Def. DRAM Refresh Control Register (DRFSHC) - Configuration Index 211H 4:0 Reserved 00000 7:5 REFRPRD<2:0> Refresh period: These bits determine the refresh period for local DRAM. 101 Bits<2:0> Refresh period 000 15us 001 15us 010 15us 011 30us all others stopped 10:8 Reserved 000 11 MANUAL_REFRESH 13:12 Reserved 11 15:14 Reserved 00 Manual refresh control: A 1-> 0->1 generates a refresh 0 cycle after 128 process clocks. Also, this bit forces normal refresh disabled while left at the 1 setting. Table 3.33 SDRAM Mode Program Register (SDRAMMPR) Bit Name Function Def. SDRAM Mode Program Register (SDRAMMPR) - Configuration Index 213H 0 EN_SDRAM_CONFIG Enable SDRAM MRS configuration cycle: 0 = disable, 1 = enable. 0 2:1 SDRAM_BANK_CONFIG[1:0] SDRAM bank configuration select <1:0> programming options as follows: Bits<1:0> DRAM bank 00 Bank 0 01 Bank 1 10 Bank 2 11 Bank 3 00 4:3 POWERON_SEQ[1:0] SDRAM Power-on initialization sequence bits Bits<1:0> Function 00 Normal 01 Pre-charge SDRAM bank specified by BANK_CONFIG[1:0] 10 Trigger Mode Program Register Command 11 Trigger CBR refresh cycle 00 ZFx86 Data Book 1.0 Rev D Page 158 3 Table 3.33 SDRAM Mode Program Register (SDRAMMPR) Bit 15:5 Name WCBR_MA[11:1]= Function MA[0] [2:0] [3] [6:4] [11:7] comes from the SDRAMMPEX register as it is needed to handle 16 bit banks to do 8 burst cycles set to ‘010’ corresponding to burst length of 4 for 32 bit banks set to ‘011’ corresponding to burst length of 8 for 16 bit banks always set to 0 linear burst type (Fixed in hardware) 010 CAS Latency 2 011 CAS Latency 3 Others Reserved Always leave at ‘00000’ Def. 019H Note: MA[13:12] will be forced to 0 always during SDRAM configuration cycle Table 3.34 SDRAM Mode Program Register (SDRAMMPREX) Bit Name Function Def. SDRAM Mode Program Register (SDRAMMPREX) - Configuration Index 214H 0 WCBR_MA[0] 15:1 Reserved SDRAM Mode Register bit 0 used together with bits 11:1 defined earlier. 0 0000 Table 3.35 SDRAM Slew Control Register (SDRAMSLEW) Bit Name Function Def. SDRAM Slew Control Register (SDRAMSLEW) - Configuration Index 239H 2:0 MD_DQM_SLEW 32 Bit Data and 4 Bit Mask Bus: MD[31:0], DQM[3:0] 000 = 001 = 010 = 011 = 100 = 101 = 110 = 111 = 111 Force Tri-State 2*N-ch + 4*P-ch 3*N-ch + 6*P-ch 5*N-ch + 10*P-ch 4*N-ch + 8*P-ch 6*N-ch + 12*P-ch 7*N-ch + 14*P-ch 8*N-ch + 16*P-ch 5:3 MA_SLEW 14 Bit Address Bus: BA[1:0], MA[11:0] Encoding same as for 2:0 bits 111 8:6 RAS_CAS_SLEW RASnn and CASnn Encoding same as for 2:0 bits 111 ZFx86 Data Book 1.0 Rev D Page 159 3 Table 3.35 SDRAM Slew Control Register (SDRAMSLEW) (cont.) Bit Name Function Def. 11:9 WE_SLEW Write Enable: Wenn Encoding same as for 2:0 bits 111 14:12 CS_SLEW 4 Chip Select: CSnn[3:0] Encoding same as for 2:0 bits 111 15 DATA_BUS_HOLD Data Bus Holder enabled when LOW 1 3.4.3. Power Management registers Table 3.36 Clock Control Register (CC) Bit Name Function Def. Clock Control Register (CC) - Configuration Index 300H 15:0 Reserved ZFx86 Data Book 1.0 Rev D All 0’s Page 160 3 Table 3.37 Clock Control2 Register (CC2) Bit Name Function Def. Clock Control 2 Register (CC2) - Configuration Index 3FFH 0 EN_STOP_CPU_CLK Enables stopping of CPU clock during Suspend mode. Stopping the clock conserves more power than placing the CPU in suspend mode. This bit allows the BIOS decide. 0 1 EN_SDRAM_CKE_RST Enables resetting of SDRAM CKE (clock enable) input during suspend mode. 0 2 EN_STOP_SDRAM_CLK Enables stopping of SDRAM CLK during Suspend mode. Different from SDRAMCLK disable bit in CSA, which always disables the clock. Only use this bit during suspend mode. 0 3 EN_STOP_CORE_CLK Enable stopping the core clock during suspend mode. When set to 1, it stops the clocks to most of the cores except the clocks needed to detect the end of suspend mode. 0 15:4 Reserved All "0"s ZFx86 Data Book 1.0 Rev D Page 161 3 3.4.4. Test Signals Table 3.38 CPU-SYNC Register (CPUSYNC) Bit Name Function Def. CPU-SYNC Register (CPUSYNC) - Configuration Index 238H 0 SYNC_OUT 15:1 Reserved This bit when set to 1, generates a pulse on the SYNC_OUT port of the NB of 2 processor clock wide. This bit is not sticky i.e. writing a 1 will be cleared to zero within two clocks. 0H 00H 3.4.5. PCI configuration registers Note that any read to PCI registers between 00H-FFH which are not described below must return all 0s. Table 3.39 Vendor ID Register (VID) Bit Name Function Def. Vendor ID Register (VID) - Configuration Index 00H 15:0 VENDOR_ID Vendor ID number. These bits are hard-wired. 1066H Table 3.40 Device ID Register (DID) Bit Name Function Def. Device ID Register (DID) - Configuration Index 02H 31:16 DEVICE_ID Device ID number. These bits are hard-wired. 0005H Table 3.41 Command Register (COMMD) Bit Name Function Def. Command Register (COMMD) - Configuration Index 04H 0 Reserved 1 MEM_RESPOND 5:2 Reserved 6 PARERR_REP 15:7 Reserved ZFx86 Data Book 1.0 Rev D 0 Memory space enable: 0 = PCI master access to main memory disabled. 1 = PCI master access to main memory is enabled. 1 1H Parity Error Respond: 0 = the North Bridge does not assert PERR# when a PCI parity error detected 1 = the North Bridge asserts PERR# when a PCI parity error detected. . 0 0 Page 162 3 Table 3.42 Status Register (STAT) Bit Name Function Def. Status Register (STAT) - Configuration Index 06H 22:16 Reserved All ‘0’s 23 FAST_B2B_STAT Fast Back-to-Back status – Use this bit when EN_PCI_FAST_DCD bit in the PCIC register is set. This bit indicates that NB as a target can accept fast back-to-back cycles from another master. 0 24 DATA_PAR_DET Data Parity Detected: Set this bit when operating as a bus master and either the PERR# output is driven low by the North Bridge or the target asserts PERR# and bit 6 of the Device Control Register is set. Reset this bit writing a 1. 0 26:25 DEVSEL_TIM DEVSEL Timing: These bits indicate the slowest time that NB will return DEVSEL#. 00 = fast, 01 = medium, 10 = slow, 11 = reserved. Note that these bits are hard-wired to 01 01 27 Reserved 28 REC_TAG_ABRT Receive Target Abort: Reading a 1 indicates receiving a target abort condition. Reset this bit by writing a 1. 0 0 29 REC_MST_ABRT Receive Master Abort: Reading a 1 indicates receiving a master abort condition(not including master abort generated from a special cycle). Reset this bit by writing a 1. 0 30 Reserved 31 DET_PAR_ERR 0 Detect parity error: When the North Bridge detects a PCI parity error, this bit will be set to 1. Reset this bit by writing a 1. 0 Table 3.43 Revision ID Register (RID) Bit Name Function Def. Revision ID Register (RID) - Configuration Index 08H 7:0 REVISION_ID Revision ID number. These bits are hard wired. 00H Table 3.44 Class Register (CLASS) Bit Name Function Def. Class Register (CLASS) - Configuration Index 09H 31:8 CLASS_CODE ZFx86 Data Book 1.0 Rev D Class Code. These bits are hard-wired. 060000H Page 163 3 ZFx86 Data Book 1.0 Rev D Page 164 4 4. South Bridge 4.1. South Bridge Module The South Bridge module is an enhanced PCI-to-ISA bridge module that provides AT/ISA functionality. The module also contains a bus mastering IDE controller for support of up to four ATA-compliant devices. A two-port Universal Serial Bus (USB) host controller provides high speed, Plug & Play expansion for a variety of new consumer peripheral devices. 4.1.1. South Bridge Features 4.1.1.1. Front-PCI Interface • PCI protocol for transfers on Front-PCI • Up to 33 MHz operation • Point-to-point only connection to North Bridge enables higher bandwidth • Uses non-preemptable arbiter connection to North Bridge • Subtractive decode handled internally in conjunction with back-side PCI bus • Front-PCI signals do not include SERR# and PERR# 4.1.1.2. PCI Interface • Off chip “back-side” PCI interface • Non-supported modes: - Devices internal to South Bridge (that is, IDE, USB, ISA, etc.) cannot master to memory on back-side PCI bus - Legacy DMA not supported to memory located on back-side PCI bus - South Bridge bit-buckets subtractively decoded I/O cycles originating from backside PCI bus 4.1.1.3. Bus Mastering IDE Controller • One channel with support for up to two IDE devices • Second IDE channel for two more devices off GPIO • Independent timing for master and slave devices • PCI bus master burst reads and writes • Ultra DMA (ATA-4) support • Multiword DMA support • Programmed I/O (PIO) Modes 0-4 support 4.1.1.4. Universal Serial Bus • Two independent USB interfaces • USB 1.1 specification compliant • PCI 2.1 compliant • Open Host Controller Interface (OpenHCI) 1.0 specification compliant • Up to 33 MHz operation • Second generation proven core design • Internal PCI master for IDE and USB controllers • Overcurrent and power control support • Subtractive agent for unclaimed transactions • Supports PCI initiator-to-Front-PCI • PCI-to-ISA interrupt mapper/translator • PCI bus master burst reads and writes 4.1.1.5. Integrated SuperI/O • Floppy disk controller • Two standard serial ports fully compatible with 16550A and 16450 • Infrared communication port ZFx86 Data Book 1.0 Rev D Page 165 4 • Parallel Port: Extended Capabilities Port (ECP) that is IEEE 1284 compliant, including level 2 • Real-time clock compatible with DS1287, MC146818, and CP87911 • 8042 keyboard controller • ACCESS.bus interface (compatible with the physical layer of SMBus and I2C) 4.1.1.6. AT Compatibility 4.2. Architecture The South Bridge architecture provides the internal functional blocks shown in Figure 4-1 "Internal Block Diagram". • Front-PCI interface / Back-side PCI bus • PCI configuration registers • IDE controller (UDMA-33) • USB controller • 8259A-equivalent interrupt controllers • Integrated SuperI/O • 8254-equivalent timer • ISA bus interface • 8237-equivalent DMA controllers • AT compatibility logic • Port A, B, and NMI logic • Power management • Positive decode for AT I/O space • GPIOs 4.1.1.7. ISA Interface • ZF Logic • Boot ROM and keyboard chip select • Extended ROM to 16 MB • Two general purpose chip selects • NAND Flash support 4.1.1.8. Power Management • Automated CPU Suspend modulation • I/O Traps and Idle Timers for peripheral power management • Software SMI and Stop Clock for APM support • Keyboard and mouse activity detect for screen wake-up 4.1.1.9. GPIOs • Eight GPIOs: All have the capability to generate Power Management Events (PMEs) ZFx86 Data Book 1.0 Rev D Page 166 4 Front-PCI 33-66 MHz UDMA33 Back-PCI FXBus PCI Interface IDE GPIOs GPIOs 33 MHz Configuration Registers USB XBus USB Legacy (ISA/PIC/PIT/DMA) PW PM Floppy/Parallel/Serial/ IR/RTC/Access Bus/ Fan CTRL/KBD-Mouse/ Wake-Up ZF Logic ISA SIO Figure 4-1 Internal Block Diagram 4.2.1. Front-side PCI / Back-Side PCI Bus The South Bridge provides a PCI bus interface that is both a slave for PCI cycles initiated by the North Bridge or other PCI master devices, and a non-preemptable master for DMA transfer cycles. The module is also a standard PCI master for the IDE controller. The South Bridge supports positive decode for configurable memory and I/O regions, and implements a subtractive decode option for unclaimed PCI accesses. The South Bridge also generates address and data parity, and performs parity checking. The arbiter for the Front-PCI interface is located in North Bridge. The main objective of the Front-PCI interface is two-fold: • Provide a fast PCI compliant internal bus between the North and South Bridges. • Enable a higher bandwidth interface to system memory for high bandwidth devices. To achieve these goals, the following describes how the Front-PCI interface manages PCI cycles. Configuration registers are accessed through the PCI interface using the PCI Bus Type 1 configuration mechanism as described in the PCI 2.1 Specification. ZFx86 Data Book 1.0 Rev D Page 167 4 4.2.1.1. North Bridge Mastered Cycles on Front-PCI this bus. Support for up to three bus masters is provided. The arbiter is in the South Bridge. All North Bridge initiated cycles are acted upon by the South Bridge following the normal PCI rules for active/subtractive decode using DEVSEL. Memory writes are automatically posted. Reads will be retried if they are not destined for actively decoded devices on the FXBus or the XBus. This means that a read to back-side PCI or ISA devices are automatically treated as a delayed transaction through the PCI retry mechanism. This allows the high bandwidth devices access to the Front-PCI interface while the response from a possibly slow device can be accumulated. 4.2.2. IDE Controller All types of configuration cycles are supported and handled appropriately according to the PCI specification. The South Bridge integrates a PCI bus mastering ATA-4 compatible IDE controller. The IDE controller supports Ultra DMA, Multiword DMA, and Programmed I/O (PIO) modes. The controller contains two channels with two devices supported per channel, for a total of up to four devices. To enable the second channel, GPIO pins must be reconfigured. Program the data-transfer speed for each device independently. This allows highspeed IDE peripherals to coexist on the same channel as lower speed devices. Faster devices must be ATA-4 compatible. 4.2.1.2. Back-Side PCI Master Cycles to Front PCI IDE_DATA[15:0] Memory cycles mastered by external PCI devices on the back-side PCI bus are actively taken if they are within the system memory address range. Memory cycles to system memory are forwarded to the Front-PCI interface. Burst transfers are stopped on every cache line boundary to allow efficient buffering in the Front-PCI interface block. CS0#, DREQ0, DMACK0#, IORDY0, DIOR0#, DIOW0# I/O and configuration cycles mastered by external back-side PCI devices which are subtractively decoded by the South Bridge will not be handled. They will be discarded. 4.2.1.3. South Bridge Internal or ISA Master Cycles to Front PCI Only memory cycles (not I/O cycles) are supported by the internal ISA or legacy DMA masters. These memory cycles are always forwarded to the Front-PCI interface. 4.2.1.4. Back-Side PCI Bus The Back-Side PCI bus is a fully-compliant 5V tolerant PCI bus. PCI slots are connected to ZFx86 Data Book 1.0 Rev D IDE_ADDR[2:0] Primary Channel IRQ14 Secondary Channel IRQ15 IDE_RST# CS1#, DREQ1, DMACK1#, IORDY1, DIOR1#, DIOW1# Figure 4-2 IDE Channel Connections 4.2.3. Universal Serial Bus The South Bridge provides two complete, independent USB ports. Each port contains a Data “–” and a Data “+” pin. The USB ports are Open Host Controller Interface (OpenHCI) version 1.0 compliant. The OpenHCI specification provides a registerlevel description for a host controller, as well Page 168 4 as common industry hardware/software interface and drivers. The USB host controller masters Front-PCI to fetch setup and control information related to OpenHCI. The USB host controller also masters the PCI bus performing read and write bursts to move, transmit, and receive packet data to system memory. ISA Specification Version 1.0a. All system resources assigned to the functional blocks (I/O address space, DMA channels, and IRQ lines) are configured in, and managed by the central configuration register set. In addition, some function-specific parameters are configurable through this unit and distributed to the functional blocks through special control signals 4.2.4. Integrated SuperI/O 4.2.5. ISA Bus Interface The integrated SuperI/O is based on 11 logical devices (shown in Table 4.1), the host interface, and a configuration register set, all built around a central, internal 8-bit bus. Functional Block The South Bridge provides an ISA bus interface for subtractive-decoded memory and I/O cycles on PCI. The South Bridge is the default subtractive decoding agent and forwards all unclaimed memory and I/O cycles to the ISA interface; however, the South Bridge may be configured to ignore either I/O, memory, or all unclaimed cycles (subtractive decode disabled). 00h Floppy Disk Controller (FDC) DRAM is not supported on the ISA. 01h Parallel Port (PP) 02h Serial Port 2 (SP2) Table 4.1 Logical Devices LDN (Logical Device Number) 03h Serial Port 1 (SP1) 04h System Wake-Up Control (SWC) 05h Keyboard and Mouse Controller (KBC) — Mouse interface 06h Keyboard and Mouse Controller (KBC) — Keyboard interface 07h Infrared Communication Port (IRCP) 08h ACCESS.Bus (ACB) 09h Reserved 0Ah Real Time Clock (RTC) When you disable the ZF-Logic, the ISA interface of the South Bridge remaps pin functions to include the followings signals in addition to the signals used for an ISA interface (chip pin): • IOCS0# (mem_cs1), IOCS1# (mem_cs2) - Asserted on I/O read/write transactions from/to a programmable address range. • DOCCS# (mem_cs3) - Asserted on memory read/write transactions from/to an 8 KB programmable window. • ROMCS# (mem_cs0) The host interface serves as a bridge between the external ISA interface and the internal bus. It supports 8-bit I/O read, 8-bit I/O write, and 8-bit DMA transactions as defined in Personal Computer Bus Standard P996. The central configuration registers are structured as a subset of the Plug and Play Standard Registers, defined by Intel® and Microsoft® in Appendix A of the Plug and Play ZFx86 Data Book 1.0 Rev D - Asserted on memory read/write to upper 16 MB of address space. Configurable via the ROM Mask Register (F0 Index 6Eh). The Boot Flash supported by the South Bridge can be up to 16 MB using the ROMCS# signal. Page 169 4 Forward all unclaimed memory and I/O cycles to the Boot Flash and I/O Peripheral interface when subtractive decode is enabled. Assert the Disk-On-Chip chip-select signal (DOCCS#) on any memory read or memory write transaction from/to a predefined 8 KB window in the address range 0C0000h0EFFFFh. Program the 8 KB window via the DOCBASE register (F0 Index 78h). The window’s base address must be on an 8 KB address boundary. 4.2.5.1. AT Compatibility Logic The South Bridge integrates: • ISA bus master device support using Cascade mode When there is at least one active DMA request (DRQ), DACK[7:0] indicates which DRQ is granted. When there is no active DRQ, DACK[7:0] are encoded with 00010000b, which is an unused DACK. 4.2.5.3. Programmable Interval Timer The South Bridge contains an 8254-equivalent programmable interval timer. This device has three timers, each with an input frequency of 1.193 MHz. Each timer can be individually programmed to different modes. • Two 8237-equivalent DMA controllers with full 32-bit addressing 4.2.5.4. Programmable Interrupt Controller • Two 8259-equivalent interrupt controllers providing 13 individually programmable external interrupts The South Bridge contains two 8259-equivalent programmable interrupt controllers, with eight interrupt request lines each, for a total of 16 interrupts. The two controllers cascade internally, and two of the interrupt request inputs are connected to the internal circuitry. This allows a total of 13 externally available interrupt requests. • An 8254-equivalent timer for refresh, timer, and speaker logic • NMI control and generation for PCI system errors and all parity errors • Support for standard AT keyboard controllers • Positive decode for the AT I/O register space • Reset control 4.2.5.2. DMA Controller The South Bridge supports the industry standard DMA architecture using two 8237compatible DMA controllers in cascaded configuration. South Bridge supported DMA functions include: Individually select any South Bridge IRQ signal as an edge- or level-sensitive type. Route the four PCI interrupt signals internally to any PIC IRQ. 4.2.6. Power Management The South Bridge integrates advanced power management features including idle timers for common system peripherals, address trap registers for programmable address ranges for I/O or memory accesses, clock throttling with automatic speedup for the CPU clock, and software CPU stop clock. • Standard seven-channel DMA support • 32-bit address range support via high page registers • IOCHRDY extended cycles for compatible timing transfers ZFx86 Data Book 1.0 Rev D Page 170 4 4.2.7. GPIO Interface Up to eight GPIOs in the South Bridge provide for system control. The ZFx86 contains 8 GPIO pins. The features include power management event (PME) generation. This means that any of the 8 GPIO pins set in input mode can be used to wake up the processor. That is, each GPIO pin can be programmed to generate an SMI or SCI. The features of the GPIO pins include the following: • PME Debounce Enable — Enables or disables IRQ debounce (debounce period = 16 ms): • PME Polarity — Selects the signal polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high) • PME Edge/Level Select — Selects the signal type (edge or level) that issues a PME from the corresponding GPIO pin. • Pull-Up Control — Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. • Output Type — Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. • Output Enable — Indicates the GPIO pin output state. It has no effect on input. Note: To clear the GPIO PME source, complete these two items: (1) write a “1” to the source bit in the GPIO Status Register (F0BAR0+0Ch), and (2) perform a read to that same register. For more information, see Table 4.31 on page 230. 4.2.8. ZF-Logic See Chapter 5. "ZF-Logic and Clocking" on page 403. • Lock — This bit locks the corresponding GPIO pin. Once set to 1 by software, it can only be cleared to 0 by system reset or power-off. ZFx86 Data Book 1.0 Rev D Page 171 4 4.3. Signal Descriptions PCI Interface IDE Interface IDE (2x) Controller PCI Bridge USB Controller USB Interface Internal X Bus / ISA Bus Interrupt & DMA Interface Legacy: PIC, DMA & PIT GPIO Interface Power Man & GPIO Parallel Interface IEEE 1294 Controller Key & Mouse Controller Keyboard Mouse Interface Floppy Disk Controller Floppy Disk Interface I2C Bus Controller I2 C Interface Access Bus Serial & IR Interface Two 16550 UARTS & IR Real-time Clock ISA Interface Figure 4-3 South Bridge Block Diagram ZFx86 Data Book 1.0 Rev D Page 172 4 4.3.1. System Interface Signals Table 4.2 System Interface Signals Signal Name MEM_CS[0] POR_N Pin No. (PU/PD) Type (Drive) Function Selection B04 O (8mA) --- I smt --- C19 Description ROM Chip Select ROMCS# is the enable pin for the BIOS ROM and is asserted for ISA memory accesses that are in the BIOS address range. ROM size selection is made via F0 Index 52h[2]. This is part of the ZF-Logic described in 5.3. "ISA Memory Mapper for Flash/SRAM" on page 410. POR_N POR# is the system reset signal generated from the power supply to indicate that the system should be reset. Table 4.3 Clock and Crystal Interface Signals Signal Name Pin No. (PU/PD) Type (Drive) Function Selection CLK_14MHZ AF16 I --- Description 14MHz Clock This buffered 14.31818MHz input is used for the ISA bus OSC. This signal is derived internally if the RTC is enabled. CLK_48MHZ AE15 I --- 48MHz Clock This input connects to an external 48MHz clock source and is used by the SIO and USB. KHZ32_C AE01 I --- 32KHz Crystal Oscillator Connection X1C and X2C are used with a capacitor and resistor to create a 32KHz oscillator connection. KHZZ32 AF01 I --- 32KHz Clock Connection If a 32KHz crystal is not used in the system design, this signal can be directly connected to a 32KHz external clock. ZFx86 Data Book 1.0 Rev D Page 173 4 Table 4.4 CPU Interface Signals Signal Name CPU_RST INTR IRQ13 FERR# Pin No. (PU/PD) Type (Drive) Function Selection Description Internal Pin O (8mA) --- CPU Reset Internal Pin O (4mA) --- Internal Pin I Internal Pin CPU_RST resets the CPU and is asserted for approximately 100µs after the negation of POR. CPU Interrupt Request INTR is the level output from the integrated 8259 PICs and is asserted if an unmasked interrupt request (IRQn) is sampled active. F0 Index 53h[1] = 1 Interrupt Request 13/Floating Point Error Interrupt F0 Index 53h[1] = 0 Floating Point Error Interrupt IRQ13 is the input from floating point unit indicating that an error was detected and that INTR should be asserted. FERR# is an input from a processor that supports the FERR# signal. It indicates that a floating point error was detected and that IGNNE# should be asserted. In order for the above event to occur, pin E11 must be programmed to function as: IGNNE# (F0 Index 4Ah[3] = 0). Note that the IGNNE# (pin E11) is only available in the 456 PBGA. SMI# Internal Pin I/O (4mA) --- System Management Interrupt SMI# is a level-sensitive interrupt to the CPU that can be configured to assert on a number of different system events. After an SMI# assertion, System Management Mode (SMM) is entered, and program execution begins at the base of SMM address space. Once asserted, SMI# remains active until the SMI source is cleared. NMI Internal Pin SUSPA# O (8mA) --- I --- Non-Maskable Interrupt Request Non-maskable Interrupt Request is an output that causes the processor to suspend execution of the current instruction stream and begin execution of an NMI interrupt service routine. CPU Suspend Acknowledge SUSPA# is a level input from the processor. When asserted it indicates the CPU is in Suspend mode as a result of SUSP# assertion or execution of a HALT instruction. ZFx86 Data Book 1.0 Rev D Page 174 4 Table 4.4 CPU Interface Signals (cont.) Signal Name Pin No. (PU/PD) SUSP# Type (Drive) Function Selection O (4mA) --- Description CPU Suspend SUSP# asserted requests that the CPU enter Suspend mode. The CPU then asserts SUSPA# to complete the handshake, but only after executing a HALT instruction and turning off the appropriate internal clocks. The SUSP# pin is then deasserted by the South Bridge upon detection of a pre-defined Speedup or Wakeup/Resume event. If the SUSP#/SUSPA# handshake is configured as a system 3 Volt Suspend, the deassertion of SUSP# will be delayed to allow the system clock chip and the processor’s internal clocks to stabilize. The SUSP#/SUSPA# handshake can occur as a result of a write to the Suspend Notebook Command Register (F0 Index AFh), or an expiration of the Suspend Modulation OFF Count Register (F0 Index 94h) when Suspend Modulation is enabled. Suspend Modulation is enabled via F0 Index 96[0]. 4.3.2. Back-Side PCI Interface Signals Table 4.5 Back-Side PCI Bus Interface Signals Signal Name PCICLK_C Pin No. (PU/PD) Type (Drive) Function Selection U25 I --- Description PCI Clock An input clock signal to the backside PCI interface of the South Bridge. It runs at the PCI clock frequency and is used to drive most of the South Bridge circuitry. PCI_RST_N CLKRUN# U26 not supported ZFx86 Data Book 1.0 Rev D O (14mA) --- I/O (PCI) --- PCI Reset PCI_RST# is the reset signal for the PCI bus. Asserted for approximately 100µs after the negation of POR. Clock Run CLKRUN# is an I/O that follows the PCI 2.2 defined protocol. Page 175 4 Table 4.5 Back-Side PCI Bus Interface Signals (cont.) Signal Name Pin No. (PU/PD) Type (Drive) Function Selection AD[31:0] 0 = U24 I/O, t/s (PCI) --- 1 = V26 2 = V24 3 = V25 4 = W26 5 = V23 6 = W25 Description PCI Address/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 South Bridge 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. When the South Bridge 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. 7 = W24 8 = Y26 9 = Y25 10 = Y23 11 = Y24 12 = AA26 13 = AA25 14 = AA24 15 = AB26 16 = AB25 17 = AB24 18 = AC26 19 = AB23 20 = AC25 21 = AC24 22 = AD25 23 = AD26 24 = AE26 25 = AE25 26 = AD24 27 = AF26 28 = AF25 29 = AE24 30 = AD23 31 = AF24 ZFx86 Data Book 1.0 Rev D Page 176 4 Table 4.5 Back-Side PCI Bus Interface Signals (cont.) Signal Name Pin No. (PU/PD) Type (Drive) Function Selection C/BE[3:0]_N 0 = T24 I/O, t/s (PCI) --- 1 = T26 Description PCI Bus Command and Byte Enables During the address phase of a PCI transaction, C/BE[3:0]# define the bus command. During the data phase of a transaction, C/BE[3:0]# are the data byte enables. 2 = T25 3 = R24 C/BE[3:0]# are outputs when the South Bridge is a PCI master and are inputs when it is a PCI slave. The command encoding and types are: 0000 = Interrupt Acknowledge 0001 = Special Cycle 0010 = I/O Read 0011 = I/O Write 0100 = Reserved 0101 = Reserved 0110 = Memory Read 0111 = Memory Write 1000 = Reserved 1001 = Reserved 1010 = Configuration Read 1011 = Configuration Write 1100 = Memory Read Multiple 1101 = Dual Address Cycle (Rsvd) 1110 = Memory Read Line 1111 = Memory Write and Invalidate INT9# D02 I --- The South Bridge provides inputs for the optional “levelsensitive” PCI interrupts (also known in industry terms as PIRQx#). These interrupts may be mapped to IRQs of the internal 8259s using PCI Interrupt Steering Registers 1 and 2 (F0 Index 5Ch and 5Dh). PCI_INT_A INT10# E04 PCI_INT_B INT11# D01 Optionally routed internally. PCI_INT_C INT12# PCI Interrupt Pins For detailed information about routing PCI interrupts using the ZFx86 BIOS, refer to the “Routing ZFx86 PCI Interrupts” document (P/N 9150-0015-00) on the ZF Micro Solutions website: http://www.zfmicro.com E03 PCI_INT_D REQ1_N N23 REQ0_N M25 GNT1_N M24 GNT0_N L26 ZFx86 Data Book 1.0 Rev D I --- PCI Bus Requests The South Bridge asserts REQ# in response to a DMA request or ISA master request to gain ownership of the PCI bus. The REQ# and GNT# signals are used to arbitrate for the PCI bus. O (PCI) --- PCI Bus Grants GNT# is asserted by an arbiter that indicates to the South Bridge that access to the PCI bus has been granted. Page 177 4 Table 4.5 Back-Side PCI Bus Interface Signals (cont.) Signal Name FRAME_N Pin No. (PU/PD) Type (Drive) Function Selection P24 I/O, t/s (PCI) --- Description PCI Cycle Frame FRAME# is asserted to indicate the start and duration of a transaction. It is deasserted on the final data phase. FRAME# is an input when the South Bridge is a PCI slave. IRDY_N P25 I/O, t/s (PCI) --- PCI Initiator Ready IRDY# is driven by the master to indicate valid data on a write transaction, or that it is ready to receive data on a read transaction. When the South Bridge is a PCI slave, IRDY# is an input that can delay the beginning of a write transaction or the completion of a read transaction. Wait cycles are inserted until both IRDY# and TRDY# are asserted together. TRDY_N R26 I/O, t/s (PCI) --- PCI Target Ready TRDY# is asserted by a PCI slave to indicate it is ready to complete the current data transfer. TRDY# is an input that indicates a PCI slave has driven valid data on a read or a PCI slave is ready to accept data from the South Bridge on a write. TRDY# is an output that indicates the South Bridge has placed valid data on AD[31:0] during a read or is ready to accept the data from a PCI master on a write. Wait cycles are inserted until both IRDY# and TRDY# are asserted together. STOP_N P26 I/O, t/s (PCI) --- PCI Stop As an input, STOP# indicates that a PCI slave wants to terminate the current transfer. The transfer will either be aborted or retried. As an output, STOP# is asserted with TRDY# to indicate a target disconnect, or without TRDY# to indicate a target retry. The South Bridge will assert STOP# during any cache line crossings if in single transfer DMA mode or if busy. LOCK_N N25 I/O, t/s (PCI) --- PCI Lock LOCK# indicates an atomic operation that may require multiple transactions to complete. If the South Bridge is currently the target of a LOCKed transaction, any other PCI master request with the South Bridge as the target will be forced to retry the transfer. The South Bridge does not generate LOCKed transactions. ZFx86 Data Book 1.0 Rev D Page 178 4 Table 4.5 Back-Side PCI Bus Interface Signals (cont.) Signal Name DEVSEL_N Pin No. (PU/PD) Type (Drive) Function Selection R25 I/O, t/s (PCI) --- Description PCI Device Select DEVSEL# is asserted by a PCI slave, to indicate to a PCI master and subtractive decoder that it is the target of the current transaction. As an input, DEVSEL# indicates a PCI slave has responded to the current address. As an output, DEVSEL# is asserted one cycle after the assertion of FRAME#, and remains asserted to the end of a transaction as the result of a positive decode. DEVSEL# is asserted four cycles after the assertion of FRAME# if the South Bridge is selected as the result of a subtractive decode. The subtractive decode sample point can be configured in F0 Index 41h[2:1]. These cycles are passed to the ISA bus. PAR N26 I/O, t/s (PCI) --- PCI Parity PAR is the parity signal driven to maintain even parity across AD[31:0] and C/BE[3:0]#. The South Bridge drives PAR one clock after the address phase and one clock after each completed data phase of write transactions as a PCI master. It also drives PAR one clock after each completed data phase of read transactions as a PCI slave. PERR_N N24 I/O, t/s (PCI) --- PCI Parity Error PERR# is pulsed by a PCI device to indicate that a parity error was detected. If a parity error was detected, PERR# is asserted by a PCI slave during a write data phase and by a PCI master during a read data phase. When the South Bridge is a PCI master, PERR# is an output during read transfers and an input during write transfers. When the South Bridge is a PCI slave, PERR# is an input during read transfers and an output during write transfers. Parity detection is enabled through F0 Index 04h[6]. An NMI is generated if I/O Port 061h[2] is set. PERR# can assert SERR# if F0 Index 40h[1] is set. ZFx86 Data Book 1.0 Rev D Page 179 4 Table 4.5 Back-Side PCI Bus Interface Signals (cont.) Signal Name Pin No. (PU/PD) Type (Drive) Function Selection M26 I/O, OD (PCI) --- SERR_N Description PCI System Error SERR# is pulsed by a PCI device to indicate an address parity error, data parity error on a special cycle command, or other fatal system errors. SERR# is an open drain output reporting an error condition, and an input indicating that the South Bridge should generate an NMI. As an input, SERR# is asserted for a single clock by the slave reporting the error. System error detection is enabled with F0 Index 04h[8]. An NMI is generated if I/O Port 061h[2] is set. PERR# can assert SERR# if F0 Index 40h[1] is set. Table 4.6 IDE Interface Signals Signal Name Pin No. (PU/PD) Type (Drive) Function Selection IDE_CS0_N AE20 --- IDE_CS1_N AF21 O (IDE) IDE_DIOR0_N AC20 --- IDE_DIOR1_N AD11 O (IDE) O (IDE) --- IDE_DIOW1_N AF11 GPIO[2] AC22 IDE_DMA_ACK1_N AE11 --- GPIO[1] AE23 IDE_DMA_REQ1_N AE10 I --- GPIO[5] AD22 IDE_IORDY1 AD10 GPIO[6]a ZFx86 Data Book 1.0 Rev D DMA Request Channels 0 and 1 The DREQ is used to request a DMA transfer from the South Bridge. The direction of the transfers is determined by the IDE_IOR/IOW signals. a IDE_IORDY0 DMA Acknowledge Channels 0 and 1 The DMACK# acknowledges the DREQ request to initiate DMA transfers. a IDE_DMA_REQ0_N IDE I/O Write for Channels 0 and 1 IDE_IOW0# is the write signal for Channel 0 and IDE_IOW1# is the read signal for Channel 1. Each signal is asserted on write accesses to corresponding the IDE port addresses. a IDE_DMA_ACK0_N IDE I/O Read for Channels 0 and 1 IDE_IOR0# is the read signal for Channel 0 and IDE_IOR1# is the read signal for Channel 1. Each signal is asserted on read accesses to the corresponding IDE port addresses. GPIO[3] AE21 IDE Chip Select for Channels 0 and 1 The chip select signals are used to select the command block registers in an IDE device. a IDE_DIOW0_N Description I --- I/O Ready Channels 0 and 1 When deasserted, these signals extend the transfer cycle of any host register access when the device is not ready to respond to the data transfer request. Page 180 4 Table 4.6 IDE Interface Signals (cont.) Signal Name Pin No. (PU/PD) Type (Drive) Function Selection IDE_ADDR[0] AD21 --- IDE_ADDR[1] AF22 O (IDE) IDE_ADDR[2] AE22 I/O (IDE) --- O (IDE) --- I --- IDE_DATA[15:0] 0 = AD20 1 = AF20 Description IDE Address Bits These address bits are used to access a register or data port in a device on the IDE bus. IDE Data Lines IDE_DATA[15:0] transfers data to/from the IDE devices. 2 = AD19 3 = AE19 4 = AF19 5 = AD18 6 = AC18 7 = AE18 8 = AF18 9 = AE17 10 = AD17 11 = AF17 12 = AC16 13 = AD16 14 = AE16 15 = AD15 IDE_RST_N AF23 IRQ14 E02 IDE Reset This signal resets all devices attached to the IDE interface. Interrupt Request 14 Normally connected to the primary IDE channel. IRQ15 E01 I --- Interrupt Request 15 Normally connected to the secondary IDE channel. a. See Table 4.8 "GPIO Interface Signals" ZFx86 Data Book 1.0 Rev D Page 181 4 Table 4.7 USB Interface Signals Signal Name Pin No. (PU/PD) Type (Drive) Function Selection POWER_EN AE12 O (4mA) --- I --- OVER_CUR1# AD13 OVER_CUR2# AF12 PORT1_P AE13 PORT1_M PORT2_P PORT2_M AF13 AF14 AE14 Description Power Enable Enables the power to a bus-powered USB hub. Over Current Indicates the USB hub detected an overcurrent on the USB. I/O (USB) --- I/O (USB) --- I/O (USB) --- I/O (USB) --- USB Port 1 Data Positive The Universal Serial Bus Data Positive for port 1. USB Port 1 Data Minus The Universal Serial Bus Data Minus for port 1. USB Port 2 Data Positive The Universal Serial Bus Data Positive for port 2. USB Port 2 Data Minus The Universal Serial Bus Data Minus for port 2. Table 4.8 GPIO Interface Signals Pin No. (PU/PD) Type (Drive) gpio[0] AD12 I/O GPIO/0 (optional 32KHz out). Reference IO_CLK32K_OEca gpio[1] AE11 I/O GPIO/1 (optional 2nd IDE IDE_DMA_ACK1_N)b gpio[2] AF11 I/O GPIO/2 (optional 2nd IDE IDE_DIOW1_N)b gpio[3] AD11 I/O GPIO/3 (optional 2nd IDE IDE_DIOR1_N)b gpio[4] AF10 I/O GPIO/4 (can set GPIO[0] to 32 Khz Out)c gpio[5] AE10 I/O GPIO/5 (optional 2nd IDE IDE_DMA_REQ1_N)b gpio[6] AD10 I/O GPIO/6 (optional 2nd IDE IDE_IORDY1)b gpio[7] AF09 I/O GPIO/7 Signal Name Description a. GPIO[0] can also be Chip Select for External BUR. See Table 5.42 "Composite BootStrap Register Map" on page 438. b. See ‘IO_IDE_ON_GPIO — Drive IDE channel 2 onto gpio. Must also have gpio conditioned to correct direction corresponding to IDE pin functionality.’ on page 245. c. See Figure 5-9 "System Clocking and Control" on page 443 ZFx86 Data Book 1.0 Rev D Page 182 4 Example: Setting the ISA Bus Clock Although the only legal values of the ISA Bus Clock are 2 and 3, this example steps through all eight values. It illustrates how to access the South Bridge configuration registers. The 1 2 3 4 5 6 7 8 “outpd” on line 4 writes a 32-bit value to the port address specified. For the pattern output to CF8, see “PCI Configuration Space and Access Methods” on page 196, and “PCI Configuration Address Register (0CF8h)” on page 196 printf ("\r\n\n\n Step Through ISA Bus Clock Divisors\r\n"); for (uii = 0; uii < 8; uii++) { outpd (0xCF8, 0x80009050); outp (0xCFC, ((inp (0xCFC) & 0xF0) | uii)); printf ("Divisor is Now %i - Press Key to Step", uii); getch(); } Table 4.9 Full ISA Interface Signal Name ISACLK_N Pin No. (PU/PD) Type (Drive) ACO2 O (14mA) Function Selection F0 Index 4Ah[4] = 0 Description ISA Bus Clock ISACLK is derived from PCICLK and is typically programmed for 8.33MHz. F0 Index 50h[2:0] is used to program the ISA clock divisor. These bits determine the divisor of the PCI clock used to make the 8.33MHz ISA bus clock. If F0 Index 50h[2:0] is set to: 010 = Divide by three (PCI clock = 25MHz) 011 = Divide by four (PCI clock = 33MHz) All other values are invalid and can produce unexpected results. See Table 4.30 "F0 Index xxh: PCI Header and Bridge Configuration Registers". MASTER_N TC AEN BALE Not Supported I A12 C13 AD2 ZFx86 Data Book 1.0 Rev D F0 Index 4Ah[4] = 0 Master O (8mA) F0 Index 4Ah[4] = 0 Terminal Count O (8mA) F0 Index 4Ah[4] = 0 Address Enable O (8mA) F0 Index 4Ah[4] = 0 Buffered Address Latch Enable The MASTER# input asserted indicates an ISA bus master is driving the ISA bus and that it may access any device on the system board. TC signals the final data transfer of a DMA transfer. TC is accepted only when a DACK signal is active. AEN asserted indicates to ISA memory devices that a valid address for a DMA transfer is present on SA[23:0], and for I/O devices to ignore this address and any data on the ISA bus. BALE indicates when SA[23:0] and SBHE# are valid and may be latched. For DMA transfers, BALE remains asserted until the transfer is complete. Page 183 4 Table 4.9 Full ISA Interface (cont.) Pin No. (PU/PD) Type (Drive) SD[15:0] 0 = AC07 1 = AD07 2 = AF06 3 = AE06 4 = AD06 5 = AF06 6 = AE05 7 = AD05 8 = AF04 9 = AC05 10 = AEO4 11 = AD04 12 = AF03 13 = AE03 14 = AF02 15 = AE02 I/O (8mA) F0 Index 4Ah[5] = 0 System Data Bus Bits 15-0 SA[23:0] 0 = AC01 1 = AB02 2 = AB01 3 = AA03 4 = AA02 5 = Y04 6 = AA01 7 = Y02 8 = Y03 9 = Y01 10 = W03 11 = W02 12 = W01 13 = V03 14 = V04 15 = V02 16 = V01 17 = U02 18 = U03 19 = U01 20 = T04 21 = T03 22 = T02 23 = R03 I/O (8mA) F0 Index 4Ah[5] = 0 System Address Bus Lines 23-20 Internal I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 1 Signal Name IRQ1 ZFx86 Data Book 1.0 Rev D Function Selection Description The SA[23:20] signals provide the address for memory and I/O accesses on the ISA bus. The addresses are outputs when the South Bridge owns the ISA bus and are inputs when an external ISA master owns the ISA bus. Keyboard / Mouse Page 184 4 Table 4.9 Full ISA Interface (cont.) Pin No. (PU/PD) Type (Drive) IRQ3 B02 I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 3 IRQ4 C01 I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 4 I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 5 I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 6 I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 7 I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 8 I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 9 / PCI Int A I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 10 / PCI Int B I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 11 / PCI Int C I/O (4mA) F0 Index 47h[0] = 0 Interrupt Request 12 / PCI Int D Signal Name IRQ5 IRQ6 IRQ7 IRQ8# IRQ9, C02 Internal D03 Internal D02 PCI_INT_A IRQ10, E04 PCI_INT_B IRQ11, D01 PCI_INT_C IRQ12, E03 PCI_INT_D IRQ14 E02 I Function Selection --- Description Refer to IRQ1 signal description. Refer to IRQ1 signal description. Refer to IRQ1 signal description. Refer to IRQ1 signal description. Refer to IRQ1 signal description. RTC Refer to IRQ1 signal description. Refer to IRQ1 signal description. Refer to IRQ1 signal description. PCI Int D Interrupt Request 14 Normally connected to the primary IDE channel. IRQ15 E01 I --- Interrupt Request 15 Normally connected to the secondary IDE channel. DRQ1 B14 DRQ5 B13 DRQ3 Internal DRQ6 Internal ZFx86 Data Book 1.0 Rev D I F0 Index 4Ah[4] = 0 DMA Requests DRQ inputs are asserted by ISA DMA devices to request a DMA transfer. The request must remain asserted until the corresponding DACK is asserted. IDE DMA does not use ISA DMA. I F0 Index 47h[0] = 0 DMA Request 3 F0 Index 47h[0] = 0 DMA Request 6 I The DRQ is used to request DMA service from the DMA controller. The DRQ is used to request DMA service from the DMA controller. Page 185 4 Table 4.9 Full ISA Interface (cont.) Signal Name Pin No. (PU/PD) Type (Drive) DRQ7 Internal I DACK0 Internal Function Selection Description F0 Index 47h[0] = 0 DMA Request 7 O (8mA) F0 Index 47h[0] = 0 DMA Acknowledge 0 The DRQ is used to request DMA service from the DMA controller. IDE DMA does not use ISA DMA. DACK1_N A14 O (8mA) F0 Index 47h[0] = 0 DMA Acknowledge 1 DACK5_N A13 O (8mA) F0 Index 47h[0] = 0 DMA Acknowledge 5 AB04 I F0 Index 47h[0] = 0 Zero Wait States F0 Index 47h[0] = 0 System Bus High Enable ZWS_N SBHE_N AC03 I/O (8mA) ZWS_N asserted indicates that an ISA 8- or 16-bit memory slave can shorten the current cycle. The South Bridge samples this signal in the phase after BALE is asserted. If asserted, it shortens 8-bit cycles to three ISACLKs and 16-bit cycles to two ISACLKs. The South Bridge or ISA master asserts SBHE_N to indicate that SD[15:8] will be used to transfer a byte at an odd address. SBHE_N is an output during non-ISA master DMA operations. It is driven as the inversion of AD0 during 8-bit DMA cycles. It is forced low for all 16-bit DMA cycles. SBHE_N is an input during ISA master operations. IOCS16_N MEMCS16_N SMEMR_N AF07 AE07 AE08 ZFx86 Data Book 1.0 Rev D I F0 Index 47h[0] = 0 I/O Chip Select 16 I/O (8mA) F0 Index 47h[0] = 0 Memory Chip Select 16 O (8mA) F0 Index 47h[0] = 0 System Memory Read IOCS16_N is asserted by 16-bit ISA I/O devices based on an asynchronous decode of SA[15:0] to indicate that SD[15:0] may be used to transfer data (8-bit ISA I/O devices use SD[7:0]). MEMCS_N is asserted by 16-bit ISA memory devices based on an asynchronous decode of SA[23:17] to indicate that SD[15:0] may be used to transfer data (8-bit ISA memory devices use SD[7:0]). SMEMR_N is asserted for memory read accesses below 1MB. It enables 16-bit memory slaves to decode the memory address on SA[23:0]. Page 186 4 Table 4.9 Full ISA Interface (cont.) Signal Name SMEMW_N MR Pin No. (PU/PD) Type (Drive) AD08 O (8mA) Function Selection F0 Index 47h[0] = 0 B20 Description System Memory Write SMEMW_N is asserted for all memory write accesses below 1MB. It enables 16-bit memory slaves to decode the memory address on SA[23:0]. Master Reset An active high MR input signal resets the device with its default settings. MEMW_N MEMR_N IOR_N IOW_N IOCHRDY AC09 AF08 AD09 AE09 AD01 I/O (8mA) --- I/O (8mA) --- I/O (8mA) --- I/O (8mA) --- I/O, OD (8mA) --- Memory Write MEMW_N is asserted for all memory write accesses. Memory Read MEMR_N is asserted for all memory read accesses. I/O Read IOR_N is asserted to request an ISA I/O slave to drive data onto the data bus. I/O Write IOW_N is asserted to request an ISA I/O slave to accept data from the data bus. I/O Channel Ready IOCHRDY deasserted indicates that an ISA slave requires additional wait states. When the South Bridge is an ISA slave, IOCHRDY is an output indicating additional wait states are required. ZFx86 Data Book 1.0 Rev D Page 187 4 4.3.3. Integrated SuperI/O Interface Signals IRTX Infrared Communication Port IRSL3-0 IRRX2,1 Serial Port 1 Parallel Port Configuration and Control Registers RDATA WDATA Serial Port 2 RX1 TX1 RTS1 DTR1 CTS1 DSR1 DCD1 RI1 RX2 [A07] TX2 [B07] RTS2 DTR2 CTS2 DSR2 DCD2 RI2 Keyboard and Mouse Controller KBLOCK KBCLK KBDAT MDAT MCLK ACCESS Bus SCL DSKCHG WP ZFx86 Data Book 1.0 Rev D VBAT VCC_IO X2C X1C/X1 ALARM Real-Time Clock (RTC) Host Interface System Wake-Up SDA TC DACK0-3 DRQ0-3 IRQ1-12,14-15 IOCHRDY ZWS IOWR IORD AEN SIOCFG CLKIN MR D7-0 A15-0 TRK0 INDEX PWUREQ FDC STEP RING S_GPWI01 CHASI S_GPWI02 CHASO DIR Internal Bus HDSEL Control Signals WGATE Page 188 4 Table 4.10 Access Bus Signal Name SCL_C Pin No. Type Power Buffer Type (PU/PD) (Drive) Well B12 INSM/OD6 I/O Description VDD ACCESS.bus Clock Signal An internal pull-up is optional, depending upon the ACCESS.bus configuration register. SDA D13 INSM/OD6 I/O VDD ACCESS.bus Data Signal An internal pull-up is optional, depending upon the ACCESS.bus configuration register. Table 4.11 Clock Signal Name CLKIN Pin No. Type (PU/PD) (Drive) Internal Buffer Type Power Well INT VDD I Description Clock In A 48MHz clock input. Table 4.12 Floppy Disk Controller Signal Name DIR_N DR0_N DSKCHG_N Pin No. (PU/PD) Type (Drive) Buffer Type Power Well G03 O OD14O14/14 VDD OD14O14/14 VDD INT VDD F01 O J02 I Description Direction Determines the direction of the Floppy Disk Drive (FDD) head movement (active = step in, inactive = step out) during a seek operation. During reads or writes, DIR is inactive. Drive Select 0 Decoded drive select output signal. DR0 is controlled by Digital Output Register (DOR) bit 0. Disk Change Indicates if the drive door has been opened. The state of this pin is stored in the Digital Input Register (DIR). This pin can also be configured as the RGATE data separator diagnostic input signal via the MODE command. HDSEL INDEX_N H01 O F03 I OD14, O14/14 VDD INT VDD Head Select Determines which side of the FDD is accessed. Active low selects side 1, inactive selects side 0. Index Indicates the beginning of an FDD track. ZFx86 Data Book 1.0 Rev D Page 189 4 Table 4.12 Floppy Disk Controller (cont.) Signal Name MTR0_N Pin No. (PU/PD) Type (Drive) Buffer Type Power Well F02 O OD14, O14/14 VDD Description Motor Select 0 Active low, motor enable line for drive 0, controlled by bits D7-4 of the Digital Output Register (DOR). This signal is not available on the PPM, assuming that the external FDD is either drive 1 or 3. RDATA_N J04 I INT VDD Read Data Raw serial input data stream read from the FDD. STEP_N TRK0_N G04 O H03 I OD14, O14/14 VDD INT VDD Step Issues pulses to the disk drive at a software programmable rate to move the head during a seek operation. Track 0 Indicates to the controller that the head of the selected floppy disk drive is at track 0. WDATA_N WGATE_N WRPRT_N G02 G01 O O H02 I OD14, O14/14 VDD OD14, O14/14 VDD INT VDD Write Data Carries out the write pre-compensated serial data that is written to the selected floppy disk drive. Pre-compensation is software selectable. Write Gate Enables the write circuitry of the selected disk drive. WGATE is designed to prevent glitches during power up and power down. This prevents writing to the disk when power is cycled. Write Protected Indicates that the disk in the selected drive is write protected. A software programmable configuration bit (FDC configuration at Index F0h, Logical Device 0) can force an active write-protect indication to the FDC regardless of the status of this pin. Table 4.13 Keyboard and Mouse Controller (KBC) Signal Name KBCLK Pin No. (PU/PD) Type (Drive) Buffer Type C12 I/O INTS/OD2 Power Well Description VDD, Keyboard Clock VCC_IO Transfers the keyboard clock between the SuperI/O chip and the external keyboard using the PS/2 protocol. Driven by the internal, inverted KBC P26 signal, and connected internally to the T0 signal of the KBC. External pullup resistor to 5V required (for PS/2 compliance). The pin is monitored for wake-up event detection. However, to enable this activity during power off, it must be pulled up to Keyboard and Mouse standby voltage. ZFx86 Data Book 1.0 Rev D Page 190 4 Table 4.13 Keyboard and Mouse Controller (KBC) (cont.) Signal Name KBDAT Pin No. (PU/PD) Type (Drive) Buffer Type A11 I/O INTS/OD2 Power Well Description VDD, Keyboard Data VCC_IO Transfers the keyboard data between the SuperI/O chip and the external keyboard using the PS/2 protocol. Driven by the internal, inverted KBC P27 signal, and connected internally to KBC P10. External pull-up resistor to 5V required (for PS/2 compliance). The pin is monitored for wake-up event detection. To enable this activity, it must be pulled up to Keyboard and Mouse standby voltage. KBLOCK B11 I INTS VDD Keyboard Lock P17 input. MCLK_C D11 I/O INTS/OD2 VDD, Mouse Clock VCC_IO Transfers the mouse clock between the SuperI/O chip and the external keyboard using the PS/2 protocol. Driven by the internal, inverted KBC P23 signal, and connected internally to KBC’s T1. External pull-up resistor to 5V required (for PS/2 compliance). The pin is monitored for wake-up event detection. To enable the activity, it must be pulled up to Keyboard and Mouse standby voltage. MDAT C11 I/O INTS/OD2 VDD, Mouse Data VCC_IO Transfers the mouse data between the SuperI/O chip and the external keyboard using the PS/2 protocol. This pin is driven by the internal, inverted KBC P22 signal, and is connected internally to KBC’s P11. External pull-up resistor to 5V is required (for PS/2 compliance). The pin is monitored for wake-up event detection. To enable the activity, it must be pulled up to Keyboard and Mouse standby voltage. ZFx86 Data Book 1.0 Rev D Page 191 4 Table 4.14 Parallel Port Signal Name ACK_N Pin No. (PU/PD) Type (Drive) Buffer Type Power Well K02 I INT VDD Description Acknowledge Pulsed low by the printer to indicate that it has received data from the Parallel Port. AFD_N L02 O OD14, O14/14 VDD Automatic Feed - AFD When low, instructs the printer to automatically feed a line after printing each line. This pin is in TRI-STATE after a 0 is loaded into the corresponding control register bit. An external 4.7 KΩ pull-up resistor should be attached to this pin. Data Strobe (EPP) - DSTRB Active low, used in EPP mode to denote a data cycle. When the cycle is aborted, DSTRB becomes inactive (high). BUSY K03 I INT VDD Busy Set high by the printer when it cannot accept another character. Wait In EPP mode, the Parallel Port device uses this active low signal to extend its access cycle. ERR_N L01 I INT VDD Error Set active low by the printer when it detects an error. INIT PD[7:0] L03 0 = P03 O I/O 1 = P01 2 = P02 OD14, O14/14 VDD INT/ OD14, O14/14 VDD INT VDD Initialize When low, initializes the printer. This signal is in TRI-STATE after a 1 is loaded into the corresponding control register bit. Use an external 4.7 KΩ pull-up resistor. Parallel Port Data Transfer data to and from the peripheral data bus and the appropriate Parallel Port data register. These signals have a high current drive capability. 3 = N01 4 = N02 5 = M01 6 = N03 7 = M02 PE J01 I Paper End Set high by the printer when it is out of paper. This pin has an internal weak pull-up or pull-down resistor. SLCT J03 I INT VDD Select Set active high by the printer when the printer is selected. ZFx86 Data Book 1.0 Rev D Page 192 4 Table 4.14 Parallel Port (cont.) Signal Name SLIN_N Pin No. (PU/PD) Type (Drive) K01 O Buffer Type OD14, O14/14 Power Well VDD Description Select Input - SLIN When low, selects the printer. This signal is in TRI-STATE after a 0 is loaded into the corresponding control register bit. Uses an external 4.7 KΩ pull-up resistor. Address Strobe (EPP) - ASTRB Active low, used in EPP mode to denote an address or data cycle. When the cycle is aborted, ASTRB becomes inactive (high). STB_N M03 O OD14, O14/14 VDD Data Strobe - STB When low, Indicates to the printer that valid data is available at the printer port. This signal is in TRI-STATE after a 0 is loaded into the corresponding control register bit. An external 4.7 KΩ pull-up resistor should be employed. Write Strobe - WRITE Active low, used in EPP mode to denote an address or data cycle. When the cycle is aborted, WRITE becomes inactive (high). Table 4.15 Power and Ground Signal Name VBAT Pin No. Type (PU/PD) (Drive) AD3 Buffer Type Power Well INULR - Description Battery Power Supply Provides battery back-up to the System Wake-Up Control registers. The pin is connected to the internal logic through a series resistor for UL protection. Note: The ZFx86 contains no reverse polarity protection. VDD PWR - Main 3.3V Power Supply See Pin description Table 8.4 on page 572. GND GND - Ground See Table 8.4 on page 572 ZFx86 Data Book 1.0 Rev D Page 193 4 Table 4.16 Serial Port 1 and Serial Port 2 (Shared with I/R Port) Signal Name Pin No. Type (PU/PD) (Drive) CTS1_N CTS2_N 1 = D09 DCD1_N DCD2_N 1 = A10 DSR1_N 1 = C10 DSR2_N 2 = C08 DTR1_N, BOUT1 DTR2_N, BOUT2 I Buffer Type Power Well INTS VDD Clear to Send When low, indicates that the modem or other data transfer device is ready to exchange data. 2 = A06 I INTS VDD Data Carrier Detected When low, indicate that the modem or other data transfer device has detected the data carrier. 2 = B08 C09 Description I INTS VDD Data Set Ready When low, indicate that the data transfer device, e.g., modem, is ready to establish a communications link. O O8/8 VDD Data Terminal Ready When low, indicate to the modem or other data transfer device that the Serial Port is ready to establish a communications link. After system reset, these pins provides the DTR function, sets these signals to inactive high, and loopback operation holds them inactive. D07 Baud Output Provides the associated serial channel baud rate generator output signal if test mode is selected, that is, bit 7 of the EXCR1 Register is set. RI1_N RI2_N A08 RTS1_N RTS2_N A09 I INTS O O8/8 B06 VDD, Ring Indicators (Modem) VCC_IO When low, indicates that a telephone ring signal has been received by the modem. These pins may issue a wake-up event. VDD When low, indicates to the modem or other data transfer device that the corresponding Serial Port is ready to exchange data. A system reset sets these signals to inactive high, and loopback operation holds them inactive. C07 RX1 RX2 B10 TX1 TX2 B09 Request to Send I INTS VDD Serial Input Receive composite serial data from the communications link (peripheral device, modem, or other data transfer device). A07 O B07 ZFx86 Data Book 1.0 Rev D O8/8 VDD Serial Output Send composite serial data to the communications link (peripheral device, modem, or other data transfer device). The SOUT2,1 signals are set active high after system reset. Page 194 4 Table 4.17 Infrared Communication Port (Shared W/COM2) Signal Name IRRX1 Pin No. (PU/PD) Type (Drive) Buffer Type C06 I Generic 2 Power Well Description VDD_IO IR Reception 1 Primary input to receive serial data from the IR transceiver module. IRSL0 C07 I/O Generic 2 VDD_IO IR Select 0 - IRSL0 Input/Output to control the IR analog front end. IRSL1 C08 I/O Generic 2 VDD_IO IR Select 1 - IRSL1 Input/Output to control the IR analog front end. IRSL2 B08 I/O Generic 2 VDD_IO IR Select 2 - IRSL2 Input/Output to control the IR analog front end. IRSL3 A06 I Generic 2 VDD_IO IR Select 3 - IRSL3 Input to control the IR analog front end. IRTX A05 O Generic 2 VDD_IO IR Transmit IR serial output data. 4.4. Register Descriptions The South Bridge module is a multi-function device. Its register space can be broadly divided into three categories in which specific types of registers are located: • Chipset Register Space (F0-F3) • USB Controller Register Space (PCIUSB) • ISA Legacy Register Space (I/O Port) The Chipset and USB Controller Register Spaces are accessed through the PCI interface using the PCI Type One Configuration Mechanism. The Chipset Register Space of the South Bridge module is comprised of four separate functions; each with its own register space consisting of PCI header registers and configuration registers. these registers to configure the PCI for the device. Use the rest of the 256-byte region to configure the device or function itself. The USB Controller Register Space consists of the standard PCI header registers. The USB controller supports three ports and is OpenHCI compliant. The ISA Legacy I/O Register Space contains all the legacy compatibility I/O ports that are internal, trapped, shadowed, or snooped. The remaining subsections of this chapter contains the following: • A brief discussion on how to access the registers located in PCI Configuration Space. • Register summaries • Bit formats for all registers The PCI header is a 256-byte region used for configuring a PCI device or function. The first 64 bytes are the same for all PCI devices and are predefined by the PCI specification. Use ZFx86 Data Book 1.0 Rev D Page 195 4 4.4.1. PCI Configuration Space and Access Methods Configuration cycles are generated from the North Bridge. All configuration registers in the South Bridge module are accessed through the PCI interface using the PCI Configuration Mechanism 1. This mechanism uses two DWORD I/O locations at 0CF8h and 0CFCh. the configuration register offset. On the following cycle, a read or write to the Configuration Data Register (CDR) causes a PCI configuration cycle to the South Bridge module. Byte, word, or double word accesses are allowed to the CDR at 0CFCh, 0CFDh, 0CFEh, or 0CFFh. • 0CF8h references the Configuration Address Register. The South Bridge module has five PCI configuration register sets, one for each function (F0-F3) and USB (PCIUSB). Base Address Registers (BARx) in F0-F3 and PCIUSB set the base addresses for additional I/O or memory mapped configuration registers for each respective function. • 0CFCh references the Configuration Data Register. Note: The write to 0CF8h for configuration cycles must be a 32 bit IO operation. To access PCI configuration space, write the Configuration Address (0CF8h) Register with data that specifies the South Bridge module as the device on PCI being accessed, along with Table 4.18 shows the PCI Configuration Address Register (0CF8h) and how to access the PCI header registers. Table 4.18 PCI Configuration Address Register (0CF8h) 31 30 24 23 16 15 11 10 8 7 2 1 0 Configuration Space Mapping RSVD Bus Number Device Number Function Index Doubleword 00 1 (Enable) 000 000 0000 0000 xxxx x (Note) xxx xxxx xx 00 (Always) Function 0 (F0): Bridge Configuration and GPIO Configuration Register Space 80h 0000 0000 1001 0 000 Index Function 1 (F1): SMI Status and Power Management Timer Configuration Register Space 80h 0000 0000 1001 0 001 Index 1001 0 010 Index 1001 0 011 Index 1001 1 000 Index Function 2 (F2): IDE Controller Configuration Register Space 80h 0000 0000 Function 3 (F3): XBus Expansion Register Space 80h 0000 0000 PCIUSB: USB Controller Register Configuration Space 80h 0000 0000 See “Example: Setting the ISA Bus Clock” on page 183. ZFx86 Data Book 1.0 Rev D Page 196 4 4.4.2. Register Summaries The tables in this subsection summarize all the registers of the South Bridge module. Included in the tables are the register’s reset values and page references where the bit formats are found. Table 4.19 F0: PCI Header/Bridge and GPIO Configuration Register Summary F0 Index Width (Bits) Type Name Reset Value Reference (Table 4.30) 00h-01h 16 RO Vendor Identification Register 1078h Page 207 02h-03h 16 RO Device Identification Register 0400h Page 207 04h-05h 16 R/W PCI Command Register 000Fh Page 207 06h-07h 16 R/W PCI Status Register 0280h Page 207 08h 8 RO Device Revision ID Register 00h Page 208 09h-0Bh 24 RO PCI Class Code Register 060100h Page 208 0Ch 8 R/W PCI Cache Line Size Register 00h Page 208 0Dh 8 R/W PCI Latency Timer Register 00h Page 208 0Eh 8 RO PCI Header Type Register 80h Page 208 0Fh 8 RO PCI BIST Register 00h Page 208 10h-13h 32 R/W Base Address Register 0 (F0BAR0) — Sets the base address for the I/O mapped GPIO Runtime and Configuration Registers (summarized in Table 4.20). 00000001h Page 208 14h-2Bh -- -- 2Ch-2Dh 16 RO Subsystem Vendor ID Reserved 1078h Page 209 2Eh-2Fh 16 RO Subsystem ID 0400h Page 209 30h-3Fh -- -- 40h 8 R/W PCI Function Control Register 1 39h Page 209 41h 8 R/W PCI Function Control Register 2 00h Page 209 42h -- -- 43h 8 R/W 44h 8 R/W 45h -- -- 46h 8 R/W PCI Functions Enable Register FEh Page 210 47h 8 R/W Miscellaneous Enable Register 00h Page 210 Reserved Reserved -- -- -- PIT Delayed Transactions Register 02h Page 210 Reset Control Register 01h Page 210 Reserved 48h-4Bh -- -- 4Ch-4Fh 32 R/W Top of System Memory Reserved 50h 8 R/W 51h 8 R/W -- -FFFFFFFFh Page 211 PIT Control/ISA CLK Divider 7Bh Page 211 ISA I/O Recovery Control Register 40h Page 211 52h 8 R/W ROM/AT Logic Control Register 98h Page 211 53h 8 R/W Alternate CPU Support Register 00h Page 212 54h-59h -- -- 5Ah 8 R/W Reserved Decode Control Register 1 -01h Page 212 5Bh 8 R/W Decode Control Register 2 20h Page 213 5Ch 8 R/W PCI Interrupt Steering Register 1 00h Page 213 5Dh 8 R/W PCI Interrupt Steering Register 2 00h Page 214 5Eh-6Dh -- -- Reserved -- 6Eh-6Fh 16 R/W ROM Mask Register FFF0h Page 214 70h-71h 16 R/W IOCS1# Base Address Register 0000h Page 214 ZFx86 Data Book 1.0 Rev D Page 197 4 Table 4.19 F0: PCI Header/Bridge and GPIO Configuration Register Summary (cont.) Width (Bits) Type 72h 8 R/W 73h -- -- 74h-75h 16 R/W IOCS0# Base Address Register 76h 8 R/W IOCS0# Control Register F0 Index Name IOCS1# Control Register Reserved Reserved Reset Value Reference (Table 4.30) 00h Page 214 -0000h Page 215 00h Page 215 77h -- -- 78h-7Bh 32 R/W DOCCS# Base Address Register 00000000h Page 215 7Ch-7Fh 32 R/W DOCCS# Control Register 00000000h Page 215 80h 8 R/W Power Management Enable Register 1 00h Page 216 81h 8 R/W Power Management Enable Register 2 00h Page 216 82h 8 R/W Power Management Enable Register 3 00h Page 217 83h 8 R/W Power Management Enable Register 4 00h Page 218 84h -- -- 85h 8 RO Second Level PME/SMI Status Mirror Register 2 00h Page 219 86h 8 RO Second Level PME/SMI Status Mirror Register 3 00h Page 219 87h 8 RO Second Level PME/SMI Status Mirror Register 4 00h Page 220 88h 8 R/W General Purpose Timer 1 Count Register 00h Page 220 89h 8 R/W General Purpose Timer 1 Control Register 00h Page 220 8Ah 8 R/W General Purpose Timer 2 Count Register 00h Page 221 8Bh 8 R/W General Purpose Timer 2 Control Register 00h Page 221 8Ch 8 R/W IRQ Speedup Timer Count Register 00h Page 222 8Dh-92h -- -- 93h 8 R/W Miscellaneous Device Control Register 00h Page 222 94h 8 R/W Suspend Modulation OFF Count Register 00h Page 222 95h 8 R/W Suspend Modulation ON Count Register 00h Page 222 96h 8 R/W Suspend Configuration Register 00h Page 223 97h -- -- Reserved Reserved Reserved -- -- -- -- 98h-99h 16 R/W Hard Disk Idle Timer Count Register — Primary Channel 0000h Page 223 9Ah-9Bh 16 R/W Floppy Disk Idle Timer Count Register 0000h Page 223 9Ch-9Dh 16 R/W Parallel / Serial Idle Timer Count Register 0000h Page 223 9Eh-9Fh 16 R/W Keyboard / Mouse Idle Timer Count Register 0000h Page 224 A0h-A1h 16 R/W User Defined Device 1 Idle Timer Count Register 0000h Page 224 A2h-A3h 16 R/W User Defined Device 2 Idle Timer Count Register 0000h Page 224 A4h-A5h 16 R/W User Defined Device 3 Idle Timer Count Register 0000h Page 224 A6h-ABh -- -- ACh-ADh 16 R/W AEh 8 WO AFh 8 WO B0h-B7h -- -- B8h 8 RO DMA Shadow Register xxh Page 225 B9h 8 RO PIC Shadow Register xxh Page 225 BAh 8 RO PIT Shadow Register xxh Page 226 BBh 8 RO RTC Index Shadow Register xxh Page 226 BCh 8 R/W Clock Stop Control Register 00h Page 226 ZFx86 Data Book 1.0 Rev D Reserved -0000h Page 224 CPU Suspend Command Register 00h Page 225 Suspend Notebook Command Register 00h Page 225 Hard Disk Idle Timer Count Register — Secondary Channel Reserved -- Page 198 4 Table 4.19 F0: PCI Header/Bridge and GPIO Configuration Register Summary (cont.) F0 Index Width (Bits) Type Name Reset Value Reserved Reference (Table 4.30) BDh-BFh -- -- C0h-C3h 32 R/W User Defined Device 1 Base Address Register 00000000h -Page 226 C4h-C7h 32 R/W User Defined Device 2 Base Address Register 00000000h Page 226 C8h-CBh 32 R/W User Defined Device 3 Base Address Register 00000000h Page 227 CCh 8 R/W User Defined Device 1 Control Register 00h Page 227 CDh 8 R/W User Defined Device 2 Control Register 00h Page 227 CEh 8 R/W User Defined Device 3 Control Register 00h Page 227 CFh -- -- D0h 8 WO D1h-EBh -- -- ECh 8 R/W EDh-F4h -- -- F5h 8 RC Second Level PME/SMI Status Register 2 00h Page 228 F6h 8 RC Second Level PME/SMI Status Register 3 00h Page 228 F7h 8 RC Second Level PME/SMI Status Register 4 00h Page 229 F8h-FFh -- -- Reserved Software SMI Register -00h Reserved Timer Test Register Page 228 -00h Reserved Page 228 -- Reserved -- Table 4.20 F0BAR0: GPIO Support Registers Summary F0BAR0+ I/O Offset Width (Bits) Type Name 00h 8 R/W GPIO Data Out 0 Register 01h-03h -- -- 04h 8 RO 05h-07h -- -- 08h 8 R/W 09h-0Bh -- -- 0Ch 8 R/W1C 0Dh-1Fh -- -- 20h 8 R/W 21h-23h -- -- 24h 8 R/W 25h-27h -- -- 28h 8 R/W 29h-2Bh -- -- ZFx86 Data Book 1.0 Rev D Reserved GPIO Data In 0 Register Reserved GPIO Interrupt Enable 0 Register Reserved GPIO Status 0 Register Reserved GPIO Pin Configuration Select Register Reserved GPIO Pin Configuration Access Register Reserved GPIO Reset Control Register Reserved Reset Value Reference (Table 4.31) FFh Page 230 -FFh Page 230 -00h Page 230 -00h Page 230 -00h Page 230 -44h Page 231 -00h Page 231 -- Page 199 4 Table 4.21 F1: PCI Header Registers for SMI Status Summary Width (Bits) Type Name Reset Value 00h-01h 16 02h-03h 16 RO Vendor Identification Register 1078h Page 232 RO Device Identification Register 0401h Page 232 04h-05h 16 06h-07h 16 R/W PCI Command Register 0000h Page 232 RO PCI Status Register 0280h 08h Page 232 8 RO Device Revision ID Register 00h Page 232 09h-0Bh 24 RO PCI Class Code Register 000000h Page 232 0Ch 8 RO PCI Cache Line Size Register 00h Page 232 0Dh 8 RO PCI Latency Timer Register 00h Page 232 0Eh 8 RO PCI Header Type Register 00h Page 232 0Fh 8 RO PCI BIST Register 00h Page 232 10h-13h 32 R/W Base Address Register 0 (F1BAR0) — Sets the base address for the I/O mapped SMI Status Registers (summarized in Table 4.22). 00000001h Page 232 F1 Index Reserved Reference (Table 4.32) 14h-2Bh -- -- 2Ch-2Dh 16 RO Subsystem Vendor ID 1078h Page 232 2Eh-2Fh 16 RO Subsystem ID 0401h Page 232 30h-FFh -- -- Reserved -- -- Table 4.22 F1BAR0: SMI Status Registers Summary F1BAR0+ I/O Offset Width (Bits) Type Name Reset Value Reference (Table 4.33) 00h-01h 16 RO Top Level PME/SMI Status Mirror Register 0000h Page 233 02h-03h 04h-05h 16 RC Top Level PME/SMI Status Register 0000h Page 233 16 RO Second Level General Traps & Timers PME/SMI 0000h Page 234 0000h Page 235 0000h Page 235 Status Mirror Register 06h-07h 16 RC Second Level General Traps & Timers PME/SMI Status Register 08h-09h 16 Read to Enable 0Ah-4Fh -- -- Reserved 50h-FFh -- -- The I/O mapped registers located here (F1BAR0+Offset 50h-FFh) are also accessible at F0 Index 50h-FFh. The preferred method is to program these registers through the F0 register space. ZFx86 Data Book 1.0 Rev D SMI Speedup Disable Register -- Page 200 4 Table 4.23 F2: PCI Header Registers for IDE Controller Support Summary F2 Index 00h-01h Width (Bits) Type 16 RO Name Reset Value Reference (Table 4.34) Vendor Identification Register 1078h Page 236 02h-03h 16 RO Device Identification Register 0402h Page 236 04h-05h 16 R/W PCI Command Register 0000h Page 236 06h-07h 16 RO PCI Status Register 0280h Page 236 08h 8 RO Device Revision ID Register 01h Page 236 09h-0Bh 24 RO PCI Class Code Register 010180h Page 236 0Ch 8 RO PCI Cache Line Size Register 00h Page 236 0Dh 8 RO PCI Latency Timer Register 00h Page 236 0Eh 8 RO PCI Header Type Register 00h Page 236 0Fh 8 RO PCI BIST Register 00h Page 236 10h-13h 32 RO Base Address Register 0 (F2BAR0) — Reserved for possible future use by the South Bridge module. 00000000h Page 236 14h-17h 32 RO Base Address Register 1 (F2BAR1) — Reserved for possible future use by the South Bridge module. 00000000h Page 236 18h-1Bh 32 RO Base Address Register 2 (F2BAR2) — Reserved for possible future use by the South Bridge module. 00000000h Page 236 1Ch-1Fh 32 RO Base Address Register 3 (F2BAR3) — Reserved for possible future use by the South Bridge module. 00000000h Page 237 20h-23h 32 R/W Base Address Register 4 (F2BAR4) — Sets the base address for the I/O mapped Bus Master IDE Registers (summarized in Table 4.25) 00000001h Page 237 24h-2Bh -- -- -- Page 237 2Ch-2Dh 16 RO Subsystem Vendor ID 1078h Page 237 2Eh-2Fh 16 RO Subsystem ID 0402h Page 237 30h-3Fh -- -- -- Page 237 40h-43h 32 R/W Channel 0 Drive 0 PIO Register 00009172h Page 237 44h-47h 32 R/W Channel 0 Drive 0 DMA Control Register 00077771h Page 238 48h-4Bh 32 R/W Channel 0 Drive 1 PIO Register 00009172h Page 238 4Ch-4Fh 32 R/W Channel 0 Drive 1 DMA Control Register 00077771h Page 238 50h-53h 32 R/W Channel 1 Drive 0 PIO Register 00009172h Page 238 54h-57h 32 R/W Channel 1 Drive 0 DMA Control Register 00077771h Page 238 58h-5Bh 32 R/W Channel 1 Drive 1 PIO Register 00009172h Page 238 5Ch-5Fh 32 R/W Channel 1 Drive 1 DMA Control Register 00077771h Page 239 60h-FFh -- -- ZFx86 Data Book 1.0 Rev D Reserved Reserved Reserved -- Page 201 4 Table 4.24 IDE Controller Configuration Summary F2BAR4+ I/O Offset Width (Bits) Type 00h 8 R/W 01h -- -- 02h 8 R/W Name IDE Bus Master 0 Command Register — Primary Not Used IDE Bus Master 0 Status Register — Primary 03h -- -- 04h-07h 32 R/W Not Used IDE Bus Master 0 PRD Table Address — Primary 08h 8 R/W IDE Bus Master 1 Command Register — Secondary 09h -- -- 0Ah 8 R/W 0Bh -- -- 0Ch-0Fh 32 R/W Not Used IDE Bus Master 1 Status Register — Secondary Not Used IDE Bus Master 1 PRD Table Address — Secondary Reset Value Reference (Table 4.35) 00h Page 239 -00h Page 239 -00000000h Page 240 00h Page 240 -00h Page 240 -00000000h Page 240 Table 4.25 F3: PCI Header Registers for XBus Expansion Summary Width (Bits) Type Name Reset Value 00h-01h 16 02h-03h 16 RO Vendor Identification Register 1078h Page 241 RO Device Identification Register 0403h Page 241 04h-05h 16 06h-07h 16 R/W PCI Command Register 0000h Page 241 RO PCI Status Register 0280h 08h Page 241 8 RO Device Revision ID Register 00h Page 241 09h-0Bh 24 RO PCI Class Code Register 000000h Page 241 0Ch 8 RO PCI Cache Line Size Register 00h Page 241 0Dh 8 RO PCI Latency Timer Register 00h Page 241 0Eh 8 RO PCI Header Type Register 00h Page 241 0Fh 8 RO PCI BIST Register 00h Page 241 10h-13h 32 R/W Base Address Register 0 (F3BAR0) — Sets the base address for the XBus Expansion support registers (summarized in Table 4.26). 00000000h Page 241 14h-17h 32 R/W Base Address Register 1 (F3BAR1) — Reserved for possible future use by the South Bridge module. 00000000h Page 242 18h-1Bh 32 R/W Base Address Register 2 (F3BAR2) — Reserved for possible future use by the South Bridge module. 00000000h Page 242 1Ch-1Fh 32 R/W Base Address Register 3 (F3BAR3) — Reserved for possible future use by the South Bridge module. 00000000h Page 242 20h-23h 32 R/W Base Address Register 4 (F3BAR4) — Reserved for possible future use by the South Bridge module. 00000000h Page 242 24h-27h 32 R/W Base Address Register 5 (F3BAR5) — Reserved for possible future use by the South Bridge module. 00000000h Page 242 F3 Index 28h-2Bh -- -- 2Ch-2Dh 16 RO Subsystem Vendor ID 1078h Page 242 2Eh-2Fh 16 RO Subsystem ID 0405h Page 242 30h-3Fh -- -- ZFx86 Data Book 1.0 Rev D Reserved Reference (Table 4.36) Reserved -- -- Page 202 4 Table 4.25 F3: PCI Header Registers for XBus Expansion Summary (cont.) Width (Bits) Type Name Reset Value Reference (Table 4.36) 40h-43h 32 R/W 44h-47h 32 R/W F3BAR0 Base Address Register Mask 00000000h Page 242 F3BAR1 Base Address Register Mask 00000000h 48h-4Bh 32 Page 243 R/W F3BAR2 Base Address Register Mask 00000000h 4Ch-4Fh Page 243 32 R/W F3BAR3 Base Address Register Mask 00000000h Page 243 50h-53h 32 R/W F3BAR4 Base Address Register Mask 00000000h Page 243 54h-57h 32 R/W F3BAR5 Base Address Register Mask 00000000h Page 243 58h 8 R/W F3BARx Initialized Register 00h Page 243 58h-FFh -- -- F3 Index Reserved -- Table 4.26 F3BAR0: XBus Expansion Registers Summary F3BAR0+ I/O Offset 00h-03h Width (Bits) Type Name Reset Value Reference (Table 4.37) 32 R/W I/O Control Register 1 010C0007h Page 244 04h-07h 32 R/W I/O Control Register 2 00000000h Page 245 08h-0Bh 32 R/W I/O Control Register 3 00009000h Page 245 Table 4.27 PCIUSB: USB Controller Register Summary PCIUSB Index Width (Bits) Type Name Reset Value Reference (Table 4.38) 00h-01h 16 RO Vendor Identification 0E11h Page 246 02h-03h 16 RO Device Identification A0F8h Page 246 04h-05h 16 R/W Command Register 00h Page 246 06h-07h 16 R/W Status Register 0280h Page 246 08h 8 RO Device Revision ID 07h Page 247 09h-0Bh 24 RO Class Code 0C0310h Page 247 0Ch 8 R/W Cache Line Size 00h Page 247 0Dh 8 R/W Latency Timer 00h Page 247 0Eh 8 RO Header Type 00h Page 247 0Fh 8 RO BIST Register 00h Page 247 10h-13h 32 R/W Base Address 0 00000000h Page 247 14h-2Bh -- -- 2Ch-2Dh 16 R/W Subsystem Vendor ID 0E11h Page 247 2Eh-2Fh 16 R/W Subsystem ID A0F8h Page 247 30h-3Bh -- -- 3Ch 8 R/W Interrupt Line Register 00h Page 247 3Dh 8 RO Interrupt Pin Register 01h Page 248 3Eh 8 RO Min. Grant Register 00h Page 248 3Fh 8 RO Max. Latency Register 50h Page 248 ZFx86 Data Book 1.0 Rev D Reserved Reserved -- -- Page 203 4 Table 4.27 PCIUSB: USB Controller Register Summary (cont.) PCIUSB Index Width (Bits) Type Name 40h-43h 32 R/W ASIC Test Mode Enable Register 44h 8 R/W ASIC Operational Mode Enable 45h-FFh -- -- Reserved Reset Value Reference (Table 4.38) 000F0000h Page 248 00h Page 248 -- Table 4.28 ZF-Logic Register Summary ISA Index Width (Bits) Type 218-21Ch 40 -- Name Reserved for ZF-Logic - See ‘ZF-Logic and Clocking’ on page 403. Reset Value Reference -- Page 403 Table 4.29 Legacy I/O Register Summary I/O Port Type Name Reference DMA Channel Control Registers (Table 4.39) 000h R/W DMA Channel 0 Address Register Page 248 001h R/W DMA Channel 0 Transfer Count Register Page 248 002h R/W DMA Channel 1 Address Register Page 249 003h R/W DMA Channel 1 Transfer Count Register Page 249 004h R/W DMA Channel 2 Address Register Page 249 005h R/W DMA Channel 2 Transfer Count Register Page 249 006h R/W DMA Channel 3 Address Register Page 249 007h R/W DMA Channel 3 Transfer Count Register Page 249 008h Read DMA Status Register, Channels 3:0 Page 249 Write DMA Command Register, Channels 3:0 Page 249 009h WO Software DMA Request Register, Channels 3:0 Page 249 00Ah R/W DMA Channel Mask Register, Channels 3:0 Page 249 00Bh WO DMA Channel Mode Register, Channels 3:0 Page 250 00Ch WO DMA Clear Byte Pointer Command, Channels 3:0 Page 250 00Dh WO DMA Master Clear Command, Channels 3:0 Page 250 00Eh WO DMA Clear Mask Register Command, Channels 3:0 Page 250 00Fh WO DMA Write Mask Register Command, Channels 3:0 Page 250 0C0h R/W DMA Channel 4 Address Register (Not used) Page 250 0C2h R/W DMA Channel 4 Transfer Count Register (Not Used) Page 250 0C4h R/W DMA Channel 5 Address Register Page 250 0C6h R/W DMA Channel 5 Transfer Count Register Page 250 0C8h R/W DMA Channel 6 Address Register Page 250 0CAh R/W DMA Channel 6 Transfer Count Register Page 250 0CCh R/W DMA Channel 7 Address Register Page 250 0CEh R/W DMA Channel 7 Transfer Count Register Page 250 ZFx86 Data Book 1.0 Rev D Page 204 4 Table 4.29 Legacy I/O Register Summary (cont.) I/O Port Type Name Reference 0D0h Read DMA Status Register, Channels 7:4 Page 251 Write DMA Command Register, Channels 7:4 Page 251 0D2h WO Software DMA Request Register, Channels 7:4 Page 251 0D4h R/W DMA Channel Mask Register, Channels 7:0 Page 251 0D6h WO DMA Channel Mode Register, Channels 7:4 Page 251 0D8h WO DMA Clear Byte Pointer Command, Channels 7:4 Page 251 0DAh WO DMA Master Clear Command, Channels 7:4 Page 251 0DCh WO DMA Clear Mask Register Command, Channels 7:4 Page 251 0DEh WO DMA Write Mask Register Command, Channels 7:4 Page 251 DMA Page Registers (Table 4.40) 081h R/W DMA Channel 2 Low Page Register Page 252 082h R/W DMA Channel 3 Low Page Register Page 252 083h R/W DMA Channel 1 Low Page Register Page 252 087h R/W DMA Channel 0 Low Page Register Page 252 089h R/W DMA Channel 6 Low Page Register Page 252 08Ah R/W DMA Channel 7 Low Page Register Page 252 08Bh R/W DMA Channel 5 Low Page Register Page 252 08Fh R/W ISA Refresh Low Page Register Page 252 481h R/W DMA Channel 2 High Page Register Page 252 482h R/W DMA Channel 3 High Page Register Page 252 483h R/W DMA Channel 1 High Page Register Page 252 487h R/W DMA Channel 0 High Page Register Page 252 489h R/W DMA Channel 6 High Page Register Page 252 48Ah R/W DMA Channel 7 High Page Register Page 253 48Bh R/W DMA Channel 5 High Page Register Page 253 Programmable Interval Timer Registers (Table 4.41) 040h 041h 042h 043h Write PIT Timer 0 Counter Page 253 Read PIT Timer 0 Status Page 253 Write PIT Timer 1 Counter (Refresh) Page 253 Read PIT Timer 1 Status (Refresh) Page 253 Write PIT Timer 2 Counter (Speaker) Page 253 Read PIT Timer 2 Status (Speaker) Page 253 R/W PIT Mode Control Word Register Page 254 Programmable Interrupt Controller Registers (Table 4.42) 020h / 0A0h WO Master / Slave PCI IWC1 Page 254 021h / 0A1h WO Master / Slave PIC ICW2 Page 254 021h / 0A1h WO Master / Slave PIC ICW3 Page 254 021h / 0A1h WO Master / Slave PIC ICW4 Page 254 021h / 0A1h R/W Master / Slave PIC OCW1 Page 255 020h / 0A0h WO Master / Slave PIC OCW2 Page 255 020h / 0A0h WO Master / Slave PIC OCW3 Page 255 020h / 0A0h RO Master / Slave PIC Interrupt Request and Service Registers for OCW3 Commands Page 255 ZFx86 Data Book 1.0 Rev D Page 205 4 Table 4.29 Legacy I/O Register Summary (cont.) I/O Port Type Name Reference Keyboard Controller Registers (Table 4.43) 060h R/W External Keyboard Controller Data Register Page 256 061h R/W Port B Control Register Page 256 062h R/W External Keyboard Controller Mailbox Register Page 256 064h R/W External Keyboard Controller Command Register Page 256 066h R/W External Keyboard Controller Mailbox Register Page 257 092h R/W Port A Control Register Page 257 Real Time Clock Registers (Table 4.44) 070h WO RTC Address Register Page 257 071h R/W RTC Data Register Page 257 Miscellaneous Registers (Table 4.45) 0F0h, 0F1h WO Coprocessor Error Register Page 257 170h-177h/ 376h-377h R/W Secondary IDE Registers Page 257 1F0-1F7h/ 3F6h-3F7h R/W Primary IDE Registers Page 257 4D0h R/W Interrupt Edge/Level Select Register 1 Page 257 4D1h R/W Interrupt Edge/Level Select Register 2 Page 258 4.4.3. Chipset Register Space The Chipset Register Space of the South Bridge module is comprised of four separate functions (F0-F3), each with its own register space. Base Address Registers (BARs) in each PCI header register space set the base address for the configuration registers for each respective function. The configuration registers accessed through BARs are I/O or memory mapped. The PCI header registers in all functions are very similar. • Function 0 (F0): PCI Header/Bridge Configuration Registers and GPIO Support • Function 1 (F1): PCI Header Registers for SMI Status • Function 2 (F2): PCI Header/Channel 0 and 1 Configuration Registers for IDE Controller Support • Function 3 (F3): PCI Header Registers for XBus Expansion. F3 contains six BARs in their standard PCI header locations (that is, Index 10h, 14h, 18h, 1Ch, 20, and 24h). In addition there are six mask registers that allow the six BARs to be fully programmed; I/O versus memory space and size: --from 4 GB to 16 bytes for memory and --from 4 GB to 4 bytes for I/O. 4.4.3.1. Bridge, GPIO Registers Function 0 The register space designated as Function 0 (F0) is used to configure Bridge features and functionality unique to the South Bridge module. In addition, it configures the PCI portion of support hardware for the GPIO support registers. Table 4.30 defines the bit formats for the PCI Header Registers and Bridge Configuration. Note: The registers at F0 Index 50h-FFh can ZFx86 Data Book 1.0 Rev D Page 206 4 also be accessed at F1BAR0+I/O Offset 50h-FFh. However, the preferred method is to program these registers through the F0 register space. Located in the PCI Header Registers of F0 is Base Address Register (F0BAR0) used for pointing to the register spaces designated for GPIO configuration, described in Section 4.4.3.2. Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers Bit Description Index 00h-01h Vendor Identification Register (RO) Reset Value = 1078h Index 02h-03h Device Identification Register (RO) Reset Value = 0400h Index 04h-05h PCI Command Register (R/W) Reset Value = 000Fh 15:10 9 Reserved — Set to 0. Fast Back-to-Back Enable (Read Only) — Always reads 0. 8 SERR# — Allow SERR# assertion on detection of special errors: 0 = Disable (Default); 1 = Enable. 7 Wait Cycle Control (Read Only) — Always reads 0. 6 Parity Error — Allow the South Bridge module to check for parity errors on PCI cycles for which it is a target and to assert PERR# when a parity error is detected: 0 = Disable (Default); 1 = Enable. 5 VGA Palette Snoop Enable (Read Only) — Always disabled. Reads 0. 4 Memory Write and Invalidate — Allow the South Bridge module to do memory write and invalidate cycles, if the PCI Cache Line Register (F0 Index 0Ch) is set to 32 bytes (08h). 0 = Disable (Default); 1 = Enable. 3 Special Cycles — Allow the South Bridge module to respond to special cycles: 0 = Disable; 1 = Enable (Default). 2 Bus Master — Allow the South Bridge module bus mastering capabilities: 0 = Disable; 1 = Enable (Default). This bit must be enabled to allow the CPU Warm Reset signal to be triggered from a CPU Shutdown cycle. This bit must be set to 1. 1 Memory Space — Allow the South Bridge module to respond to memory cycles from the PCI bus: 0 = Disable; 1 = Enable (Default). 0 I/O Space —Allow the South Bridge module to respond to I/O cycles from the PCI bus: 0 = Disable; 1 = Enable (Default). This bit must be enabled to access I/O offsets through F0BAR0 and F0BAR1 (see F0 Index 10h and 14h). Index 06h-07h 15 PCI Status Register (R/W) Reset Value = 0280h Detected Parity Error — This bit is set whenever a parity error is detected. Write 1 to clear. 14 Signaled System Error — This bit is set whenever the South Bridge module asserts SERR# active. Write 1 to clear. 13 Received Master Abort — This bit is set whenever a master abort cycle occurs. A master abort will occur when a PCI cycle is not claimed, except for special cycles. Write 1 to clear. 12 Received Target Abort — This bit is set whenever a target abort is received while the South Bridge module is the master for the PCI cycle. Write 1 to clear. 11 Signaled Target Abort — This bit is set whenever the South Bridge module signals a target abort. This occurs when an address parity error occurs for an address that hits in the active address decode space of the South Bridge module. Write 1 to clear. 10:9 DEVSEL# Timing (Read Only) — These bits are always 01, as the South Bridge module will always respond to cycles for which it is an active target with medium DEVSEL# timing. 00 = Fast; 01 = Medium; 10 = Slow; 11 = Reserved. ZFx86 Data Book 1.0 Rev D Page 207 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit 8 Description Data Parity Detected —This bit is set when: 1) The South Bridge module asserted PERR# or observed PERR# asserted. 2) The South Bridge module is the master for the cycle in which the PERR# occurred and the Parity Error bit is set (F0 Index 04h[6] = 1). Write 1 to clear. 7 Fast Back-to-Back Capable (Read Only) — As a target, the South Bridge module is capable of accepting fast back-toback transactions: 0 = Disable; 1 = Enable. This bit is always 1. 6:0 Reserved Index 08h Index 09h-0Bh Index 0Ch 7:0 Device Revision ID Register (RO) PCI Class Code Register (RO) PCI Cache Line Size Register (R/W) Reset Value = 00h Reset Value = 060100h Reset Value = 00h PCI Cache Line Size Register — This register sets the size of the PCI cache line, in increments of four bytes. For memory write and invalidate cycles, the PCI cache line size must be set to 16 bytes (04h) and the Memory Write and Invalidate bit must be set (F0 Index 04h[4] = 1). Index 0Dh PCI Latency Timer Register (R/W) Reset Value = 00h 7:4 Reserved 3:0 PCI Latency Timer Value — The PCI Latency Timer Register prevents system lockup when a slave does not respond to a cycle that the South Bridge module masters. If the value is set to 00h (default), the timer is disabled. If the timer is written with any other value, bits [3:0] become the four most significant bytes in a timer that counts PCI clocks for slave response. The timer is reset on each valid data transfer. If the counter expires before the next assertion of TRDY# is received, the South Bridge module stops the transaction with a master abort and asserts SERR#, if enabled to do so (F0 Index 04h[8] = 1). Index 0Eh 7:0 PCI Header Type (RO) Reset Value = 80h PCI Header Type Register — This register defines the format of this header. This header is of type format 0. Additionally, bit 7 defines whether this PCI device is a multifunction device (bit 7 = 1) or not (bit 7 = 0). Index 0Fh PCI BIST Register (RO) Reset Value = 00h 7 BIST Capable (Read Only) — Is device capable of running a built-in self-test (BIST)? 0 = No; 1 = Yes, 6 Reserved 5:4 Reserved 3:0 BIST Completion Code (Read Only) — Upon completion of the BIST, the completion code will be stored in these bits. A completion code of zero indicates the BIST has successfully been completed. All other values indicate some type of BIST failure. Index 10h-13h Base Address Register 0 - F0BAR0 (R/W) Reset Value = 00000001h This register allows access to I/O mapped GPIO runtime and configuration registers. Bits [5:0] are read only (000001), indicating a 64-byte aligned I/O address space. Table 4.31 gives the bit formats and reset values of the GPIO registers. 31:6 GPIO Base Address 5:0 Address Range (Read Only) Index 14h-17h ZFx86 Data Book 1.0 Rev D Reserved Page 208 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 18h-2Bh Reserved Index 2Ch-2Dh Subsystem Vendor ID (RO) Reset Value = 1078h Index 2Eh-2Fh Subsystem ID (RO) Reset Value = 0400h Index 30h-3Fh Reserved Index 40h 7:5 4 3:2 PCI Function Control Register 1 (R/W) Reset Value = 39h Reserved PCI Subtractive Decode — Allow the South Bridge module to act as a subtractive decode agent on the Front-PCI bus: 0 = Disable; 1 = Enable. Reserved 1 PERR# Signals SERR# — Assert SERR# any time that PERR# is asserted or detected active by the South Bridge module (allows PERR# assertion to be cascaded to NMI (SMI) generation in the system): 0 = Disable; 1 = Enable. 0 PCI Interrupt Acknowledge Cycle Response — Allow the South Bridge module to respond to PCI interrupt acknowledge cycles: 0 = Disable; 1 = Enable. Index 41h 7:4 3 PCI Function Control Register 2 (R/W) Reset Value = 00h Reserved XBus Configuration Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs to one of the configuration registers in PCI Function 3 (F3) register space, an SMI is generated. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[5]. 2 IDE Configuration Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs to one of the configuration registers in PCI Function 2 (F2) register space, an SMI is generated. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[5]. 1 Power Management Configuration Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs to one of the configuration registers in PCI Function 1 (F1) register space, an SMI is generated. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[5]. 0 Legacy Configuration SMI — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs to one of the configuration registers in the ISA Legacy I/O register space, an SMI is generated. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[5]. Note: It is not recommended Index 42h ZFx86 Data Book 1.0 Rev D Reserved Page 209 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 43h 7:2 1 PIT Delayed Transactions Register (R/W) Reset Value = 02h Reserved — Set to 0. Enable PCI Delayed Transactions for AT legacy PIT I/O Addresses — Some x86 programs (certain benchmarks/diagnostics) assume a particular latency for PIT accesses; this bit will allow that code to work. 0 = PIT I/O addresses complete as fast as possible on PCI. 1 = Accesses to PIT I/O addresses are delayed transactions on PCI. (Default) For best performance when running Windows™ this bit should be set to 0. 0 Reserved Index 44h 7:4 3 Reset Control Register (R/W) Reset Value = 01h Reserved IDE Controller Reset — Reset the IDE controller: 0 = Disable; 1 = Enable. Write 0 to clear. This bit is level-sensitive and must be cleared after the reset is enabled. 2 IDE Reset — Reset IDE bus: 0 = Disable; 1 = Enable (will drive outputs to zero). Write 0 to clear. This bit is level-sensitive and must be cleared after the reset is enabled. 1 PCI Reset — Reset PCI bus: 0 = Disable; 1 = Enable. When set, the South Bridge module PCI_RST# output pin is asserted and all devices on the PCI bus including PCIUSB reset. No other function within the South Bridge module is affected by this bit. Write 0 to clear. This bit is level-sensitive and must be cleared after the reset is enabled. 0 XBus Warm Start — Reading/writing this bit has two different meanings/functions: Read: Has a warm start occurred since power-up? 0 = Yes; 1 = No Write: 0 = NOP; 1 = Execute system wide reset Index 45h Reserved Index 46h PCI Functions Enable Register (R/W) 7:4 3 Reset Value = FEh Reserved F3 (PCI Function 3) —F3 register space: 0 = Disable; 1 = Enable (Default). This bit must always be set to 1. 2 F2 (PCI Function 2) — F2 register space: 0 = Disable; 1 = Enable (Default). This bit must always be set to 1. 1 F1 (PCI Function 1) — F1 register space: 0 = Disable; 1 = Enable (Default). This bit must always be set to 1. 0 Reserved Index 47h 7:2 Miscellaneous Enable Register (R/W) Reset Value = 00h Reserved 1 F0BAR0 (Function 0, Base Address Register 0) — F0BAR0, pointer to I/O mapped GPIO runtime and configuration registers: 0 = Disable; 1 = Enable. 0 Reserved Index 48h-4Bh ZFx86 Data Book 1.0 Rev D Reserved Page 210 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 4Ch-4Fh 31:0 Top of System Memory (R/W) Reset Value = FFFFFFFFh Top of System Memory — Highest address in system used to determine active decode for external PCI mastered memory cycles. Errata: The last nibble must always remain set else external master bursted writes will be disabled. If an external PCI master requests a memory address below the value programmed in this register, the cycle is transferred from the external PCI bus interface to the Front-PCI interface for servicing by the processor module. Index 50h PIT Control/ISA CLK Divider (R/W) Reset Value = 7Bh 7 PIT Software Reset — 0 = Disable; 1 = Enable. 6 PIT Counter 1 — 0 = Forces Counter 1 output (OUT1) to zero; 1 = Allows Counter 1 output (OUT1) to pass to the I/O Port 061h[4]. 5 PIT Counter 1 Enable — 0 = Sets GATE1 input low; 1 = Sets GATE1 input high. 4 PIT Counter 0 — 0 = Forces Counter 0 output (OUT0) to zero; 1 = Allows Counter 0 output (OUT0) to pass to IRQ0. 3 PIT Counter 0 Enable — 0 = Sets GATE0 input low; 1 = Sets GATE0 input high. 2:0 ISA Clock Divisor — Determines the divisor of the PCI clock used to make the ISA clock, which is typically programmed for approximately 8 MHz: 000 = Divide by 1 001 = Divide by 2 010 = Divide by 3 011 = Divide by 4 100 = Divide by 5 101 = Divide by 6 110 = Divide by 7 111 = Divide by 8 If PCI clock = 25 MHz, use setting of 010 (divide by 3). It PCI clock = 30 or 33 MHz, use a setting of 011 (divide by 4). Index 51h 7:4 0100 = 5 PCI clocks 0101 = 6 PCI clocks 0110 = 7 PCI clocks 0111 = 8 PCI clocks 1000 = 9 PCI clocks 1001 = 10 PCI clocks 1010 = 11 PCI clocks 1011 = 12 PCI clocks 1100 = 13 PCI clocks 1101 = 14 PCI clocks 1110 = 15 PCI clocks 1111 = 16 PCI clocks 16-Bit I/O Recovery — These bits determine the number of ISA bus clocks between back-to-back 16-bit I/O cycles. This count is in addition to a preset one-clock delay built into the controller. 0000 = 1 PCI clock 0001 = 2 PCI clocks 0010 = 3 PCI clocks 0011 = 4 PCI clocks Index 52h 7 Reset Value = 40h 8-Bit I/O Recovery — These bits determine the number of ISA bus clocks between back-to-back 8-bit I/O read cycles. This count is in addition to a preset one-clock delay built into the controller. 0000 = 1 PCI clock 0001 = 2 PCI clocks 0010 = 3 PCI clocks 0011 = 4 PCI clocks 3:0 ISA I/O Recovery Control Register (R/W) 0100 = 5 PCI clocks 0101 = 6 PCI clocks 0110 = 7 PCI clocks 0111 = 8 PCI clocks 1000 = 9 PCI clocks 1001 = 10 PCI clocks 1010 = 11 PCI clocks 1011 = 12 PCI clocks ROM/AT Logic Control Register (R/W) 1100 = 13 PCI clocks 1101 = 14 PCI clocks 1110 = 15 PCI clocks 1111 = 16 PCI clocks Reset Value = 98h Snoop Fast Keyboard Gate A20 and Fast Reset — Enables the snoop logic associated with keyboard commands for A20 Mask and Reset: 0 = Disable; 1 = Enable (snooping). If disabled, the keyboard controller handles the commands. 6:5 Reserved 4 Enable A20M# Deassertion on Warm Reset — Force A20M# high during a Warm Reset (guarantees that A20M# is deasserted regardless of the state of A20): 0 = Disable; 1 = Enable. 3 Enable Port 092h (Port A) — I/O Port 092h decode and the logical functions: 0 = Disable; 1 = Enable. 2 Upper ROM Size — Selects upper ROM addressing size: 0 = 256 KB (FFFC0000h-FFFFFFFFh); 1 = Use ROM Mask Register (F0 Index 6Eh) ROMCS# goes active for the above ranges. Refer to F0BAR1+I/O Offset 10h[15] for further strapping/programming details. Note: The selected range can then be either positively or subtractively decoded through F0 index 5Bh[5]. ZFx86 Data Book 1.0 Rev D Page 211 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit 1 Description ROM Write Enable — Enable writes to ROM space, allowing Flash programming: 0 = Disable; 1 = Enable. If strapped for ISA and this bit is set, writes to the configured ROM space will assert ROMCS#, enabling the write cycle to the Flash device on the ISA bus. Otherwise, ROMCS# is inhibited for writes. Refer to F0BAR1+I/O Offset 10h[15] for further LPC strapping/programming details. 0 Lower ROM Size — Selects lower ROM addressing size in which ROMCS# goes active: 0 = 000F0000h-000FFFFFh (64 KB) (Default) 1 = 000E0000h-000FFFFFh (128 KB) ROMCS# goes active for the above ranges. Refer to F0BAR1+I/O Offset 10h[15] for further strapping/programming details. Note: The selected range can then be either positively or subtractively decoded through F0 Index 5Bh[5]. Index 53h Alternate CPU Support Register (R/W) Reset Value = 00h 7 Enable Keyboard Chip Select — Allow the ROMCS# signal to fire on keyboard controller I/O accesses. 0 = Disable (Default); 1 = Enable. 6 Reserved 5 Bidirectional SMI Enable — 0 = Disable; 1 = Enable. Note that even if this bit is enabled, F0 Index 81h[3] will prevent the ROMCS# from firing. This bit must be set to 0. 4:2 1 Reserved IRQ13 Pin Function Selection — Selects function of IRQ13/FERR# pin: 0 = FERR#; 1 = IRQ13. This bit must be set to 1. 0 Generate SMI on A20M# toggle — 0 = Disable; 1 = Enable. SMI status is reported at F1BAR0+I/O Offset 00h/02h[7]. Index 54h-59h Index 5Ah Reserved Decode Control Register 1 (R/W) Reset Value = 01h 7 Secondary Floppy Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 372h-375h and 377h: 0 = Subtractive; 1 = Positive. 6 Primary Floppy Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 3F2h-3F5h and 3F7h: 0 = Subtractive; 1 = Positive. 5 COM4 Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 2E8h-2EFh: 0 = Subtractive; 1 = Positive. 4 COM3 Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 3E8h-3EFh: 0 = Subtractive; 1 = Positive. 3 COM2 Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 2F8h-2FFh: 0 = Subtractive; 1 = Positive. 2 COM1 Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 3F8h-3FFh: 0 = Subtractive; 1 = Positive. 1 Keyboard Controller Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 060h and 064h (and I/O Port 062h/066h if enabled): 0 = Subtractive; 1 = Positive. 0 Real Time Clock Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 070h and 071h: 0 = Subtractive; 1 = Positive. Note: Positive decoding by the South Bridge module speeds up the I/O cycle time. These I/O Ports do not exist in the South Bridge module. It is assumed that if positive decode is enabled, the port exists on the ISA bus. ZFx86 Data Book 1.0 Rev D Page 212 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 5Bh Decode Control Register 2 (R/W) Reset Value = 20h 7 Keyboard Port 062h/066h Decode — This alternate port to the keyboard controller is provided in support of the 8051SL notebook keyboard controller mailbox: 0 = Disable; 1 = Enable. 6 Reserved 5 BIOS ROM Positive Decode — Selects positive or subtractive decoding for accesses to the configured ROM space: 0 = Subtractive; 1 = Positive. ROM configuration is at F0 Index 52h[2:0]. 4 Secondary IDE Controller Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 170h-177h and 376h-377h (excluding writes to 377h): 0 = Subtractive; 1 = Positive. Positively decoded IDE addresses are forwarded to the internal IDE controller and then to the IDE bus. Subtractively decoded IDE addresses are forwarded to the PCI slot bus. If a master abort occurs, they are then forwarded to ISA. 3 Primary IDE Controller Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 1F0h-1F7h and 3F6h-3F7h (excluding writes to 3F7h): 0 = Subtractive; 1 = Positive. Positively decoded IDE addresses are forwarded to the internal IDE controller and then to the IDE bus. Subtractively decoded IDE addresses are forwarded to the PCI slot bus. If a master abort occurs, they are then forwarded to ISA. 2 LPT3 Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 3BCh-3BFh: 0 = Subtractive; 1 = Positive. 1 LPT2 Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 378h-37Fh: 0 = Subtractive; 1 = Positive. 0 LPT1 Positive Decode — Selects PCI positive or subtractive decoding for accesses to I/O Port 278h-27Fh: 0 = Subtractive; 1 = Positive. Note: Positive decoding by the South Bridge module speeds up the I/O cycle time. The Keyboard, LPT3, LPT2, and LPT1 I/O Ports do not exist in the South Bridge module. It is assumed that if positive decode is enabled, the port exists on the ISA bus. Index 5Ch 7:4 Reset Value = 00h INTB# Target Interrupt 0000 = Disable 0001 = IRQ1 0010 = RSVD 0011 = IRQ3 3:0 PCI Interrupt Steering Register 1 (R/W) 0100 = IRQ4 0101 = IRQ5 0110 = IRQ6 0111 = IRQ7 1000 = RSVD 1001 = IRQ9 1010 = IRQ10 1011 = IRQ11 1100 = IRQ12 1101 = RSVD 1110 = IRQ14 1111 = IRQ15 0100 = IRQ4 0101 = IRQ5 0110 = IRQ6 0111 = IRQ7 1000 = RSVD 1001 = IRQ9 1010 = IRQ10 1011 = IRQ11 1100 = IRQ12 1101 = RSVD 1110 = IRQ14 1111 = IRQ15 INTA# Target Interrupt 0000 = Disable 0001 = IRQ1 0010 = RSVD 0011 = IRQ3 Note: The target interrupt must first be configured as level sensitive via I/O Port 4D0h and 4D1h in order to maintain PCI interrupt compatibility ZFx86 Data Book 1.0 Rev D Page 213 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 5Dh 7:4 0000 = Disable 0001 = IRQ1 0010 = RSVD 0011 = IRQ3 3:0 PCI Interrupt Steering Register 2 (R/W) Reset Value = 00h INTD# Target Interrupt 0100 = IRQ4 0101 = IRQ5 0110 = IRQ6 0111 = IRQ7 1000 = RSVD 1001 = IRQ9 1010 = IRQ10 1011 = IRQ11 1100 = IRQ12 1101 = RSVD 1110 = IRQ14 1111 = IRQ15 0100 = IRQ4 0101 = IRQ5 0110 = IRQ6 0111 = IRQ7 1000 = RSVD 1001 = IRQ9 1010 = IRQ10 1011 = IRQ11 1100 = IRQ12 1101 = RSVD 1110 = IRQ14 1111 = IRQ15 INTC# Target Interrupt 0000 = Disable 0001 = IRQ1 0010 = RSVD 0011 = IRQ3 Note: The target interrupt must first be configured as level sensitive via I/O Port 4D0h and 4D1h in order to maintain PCI interrupt compatibility Index 5Eh-5Fh Reserved Index 60h-63h Reserved Index 64h-6Dh Reserved Index 6Eh-6Fh ROM Mask Register (R/W) 15:8 Reserved — Read/modify/write. 7:4 ROM Size — If F0 Index 52h[2] = 1, these bits select the upper ROM size: 0000 = 1 MB: FFF00000h-FFFFFFFFh 0001 = 2 MB: FFE00000h-FFFFFFFFh 0010 = RSVD 0011 = 4 MB: FFC00000h-FFFFFFFFh 0100 = RSVD 0101 = RSVD 0110 = RSVD 0111 = 8 MB: FF800000h-FFFFFFFFh 3:0 1000 = RSVD 1001 = RSVD 1010 = RSVD 1011 = RSVD 1100 = RSVD 1101 = RSVD 1110 = RSVD 1111 = 16 MB: FF000000h-FFFFFFFFh Reserved Index 70h-71h 15:0 Reset Value = FFF0h IOCS1# Base Address Register (R/W) Reset Value = 0000h I/O Chip Select 1 Base Address — This 16-bit value represents the I/O base address used to enable the assertion of the IOCS1# signal. This register, together with F0 Index 72h (control register) is used to configure the operation of the IOCS1# pin. Index 72h IOCS1# Control Register (R/W) Reset Value = 00h 7 I/O Chip Select 1 — IOCS1#: 0 = Disable; 1 = Enable. 6 Writes Result in Chip Select — Writes to configured I/O address (base address configured in F0 Index 70h and range configured in bits [4:0]) causes IOCS1# signal to be asserted: 0 = Disable; 1 = Enable. 5 Reads Result in Chip Select — Reads from configured I/O address (base address configured in F0 Index 70h and range configured in bits [4:0]) causes IOCS1# signal to be asserted: 0 = Disable; 1 = Enable. 4:0 IOCS1# I/O Address Range — This 5-bit field is used to select the range of IOCS0# signal: 00000 = 1 byte 01111 = 16 bytes 00001 = 2 bytes 11111 = 32 bytes 00011 = 4 bytes All other combinations are reserved. 00111 = 8 bytes Note: This register, together with F0 Index 70h (base address register) is used to configure the operation of the IOCS1# pin. ZFx86 Data Book 1.0 Rev D Page 214 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 74h-75h 15:0 IOCS0# Base Address Register (R/W) Reset Value = 0000h I/O Chip Select 0 Base Address — This 16-bit value represents the I/O base address used to enable the assertion of the IOCS0# signal. This register, together with F0 Index 76h (control register) is used to configure the operation of the IOCS0# pin. Index 76h IOCS0# Control Register (R/W) Reset Value = 00h 7 I/O Chip Select 0 — IOCS0#: 0 = Disable; 1 = Enable. 6 Writes Result in Chip Select — Writes to configured I/O address (base address configured in F0 Index 74h and range configured in bits [4:0]) causes IOCS0# signal to be asserted: 0 = Disable; 1 = Enable. 5 Reads Result in Chip Select — Reads from configured I/O address (base address configured in F0 Index 74h and range configured in bits [4:0]) causes IOCS0# signal to be asserted: 0 = Disable; 1 = Enable. 4:0 IOCS0# I/O Address Range — This 5-bit field is used to select the range of IOCS0# signal: 00000 = 1 byte 01111 = 16 bytes 00001 = 2 bytes 11111 = 32 bytes 00011 = 4 bytes All other combinations are reserved. 00111 = 8 bytes Note: This register together with F0 Index 74h (base address register) is used to configure the operation of the IOCS0# pin. Index 77h Index 78h-7Bh 31:0 Reserved DOCCS# Base Address Register (R/W) Reset Value = 00000000h Disk-On-Chip Chip Select Base Address — This 32-bit value represents the memory base address used to enable the assertion of the DOCCS# signal. This register, together with F0 Index 7Ch (control register) is used to configure the operation of the DOCCS# pin. Index 7Ch-7Fh 31:27 DOCCS# Control Register (R/W) Reset Value = 00000000h Reserved 26 Disk-On-Chip Chip Select — DOCCS#: 0 = Disable; 1 = Enable. 25 Writes Result in Chip Select — Writes to configured memory address (base address configured in F0 Index 78h and range configured in bits [18:0]) causes DOCCS# signal to be asserted: 0 = Disable; 1 = Enable. 24 Reads Result in Chip Select — Reads from configured memory address (base address configured in F0 Index 78h and range configured in bits [18:0]) causes DOCCS# signal to be asserted: 0 = Disable; 1 = Enable. 23:19 Reserved 18:0 DOCCS# Memory Address Range — This 19-bit mask is used to further qualify accesses on which the DOCCS# signal is asserted. It is used to mask the upper 19 bits of the incoming PCI address (AD[31:13]). Note: This register together with F0 Index 78h (base address register) is used to configure the operation of the DOCCS# pin. ZFx86 Data Book 1.0 Rev D Page 215 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 80h 7:4 3 Power Management Enable Register 1 (R/W) Reset Value = 00h Reserved IRQ Speedup — Any unmasked IRQ (per I/O Ports 021h/0A1h) or SMI disables clock throttling (via SUSP#/SUSPA# handshake) for a configurable duration when system is power managed using CPU Suspend modulation: 0 = Disable; 1 = Enable. The duration of the speedup is configured in the IRQ Speedup Timer Count Register (F0 Index 8Ch). 2 Traps — Globally enable all power management I/O traps: 0 = Disable; 1 = Enable. 1 Idle Timers — Device idle timers: 0 = Disable; 1 = Enable. Note, disable at this level does not reload the timers on the enable. The timers are disabled at their current counts. This bit has no affect on the Suspend Modulation OFF/ON Timers (F0 Index 94h/95h). Only applicable when in APM mode. 0 Power Management — Global power management: 0 = Disable; 1 = Enabled. This bit must be set (1) immediately after POST for power management resources to function. Index 81h Power Management Enable Register 2 (R/W) Reset Value = 00h 7 Reserved 6 User Defined Device 3 (UDEF3) Idle Timer Enable — Turn on UDEF3 Idle Timer Count Register (F0 Index A4h) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the programmed address range, the timer is reloaded with the programmed count. UDEF3 address programming is at F0 Index C8h (base address register) and CEh (control register). Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[6]. 5 User Defined Device 2 (UDEF2) Idle Timer Enable — Turn on UDEF2 Idle Timer Count Register (F0 Index A2h) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the programmed address range, the timer is reloaded with the programmed count. UDEF2 address programming is at F0 Index C4h (base address register) and CDh (control register). Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[5]. 4 User Defined Device 1 (UDEF1) Idle Timer Enable — Turn on UDEF1 Idle Timer Count Register (F0 Index A0h) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the programmed address range, the timer is reloaded with the programmed count. UDEF1 address programming is at F0 Index C0h (base address register) and CCh (control register). Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[4]. 3 Keyboard/Mouse Idle Timer Enable — Turn on Keyboard/Mouse Idle Timer Count Register (F0 Index 9Eh) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the address ranges listed below, the timer is reloaded with the programmed count. Keyboard Controller: I/O Ports 060h/064h COM1: I/O Port 3F8h-3FFh (if F0 Index 93h[1:0] = 10 this range is included) COM2: I/O Port 2F8h-2FFh (if F0 Index 93h[1:0] = 11 this range is included) Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[3]. ZFx86 Data Book 1.0 Rev D Page 216 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit 2 Description Parallel/Serial Idle Timer Enable — Turn on Parallel/Serial Port Idle Timer Count Register (F0 Index 9Ch) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the address ranges listed below, the timer is reloaded with the programmed count. LPT1: I/O Port 378h-37Fh, 778h-77Ah LPT2: I/O Port 278h-27Fh, 678h-67Ah COM1: I/O Port 3F8h-3FFh (if F0 Index 93h[1:0] = 10 this range is excluded) COM2: I/O Port 2F8h-2FFh (if F0 Index 93h[1:0] = 11 this range is excluded) COM3: I/O Port 3E8h-3EFh COM4: I/O Port 2E8h-2EFh Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[2]. 1 Floppy Disk Idle Timer Enable — Turn on Floppy Disk Idle Timer Count Register (F0 Index 9Ah) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the address ranges (listed below, the timer is reloaded with the programmed count. Primary floppy disk: I/O Port 3F2h-3F5h, 3F7h, Secondary floppy disk: I/O Port 372h-375h, 377h Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[1]. 0 Primary Hard Disk Idle Timer Enable — Turn on Primary Hard Disk Idle Timer Count Register (F0 Index 98h) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the address ranges selected in F0 Index 93h[5], the timer reloads with the programmed count. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[0]. Index 82h 7 6 Power Management Enable Register 3 (R/W) Reset Value = 00h Reserved User Defined Device 3 (UDEF3) Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the programmed address range, an SMI generates. UDEF3 address programming is at F0 Index C8h (base address register) and CEh (control register). Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[4]. 5 User Defined Device 2 (UDEF2) Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the programmed address range, an SMI generates. UDEF2 address programming is at F0 Index C4h (base address register) and CDh (control register). Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[3]. 4 User Defined Device 1 (UDEF1) Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the programmed address range, an SMI generates. UDEF1 address programming is at F0 Index C0h (base address register), and CCh (control register). Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[2]. 3 Keyboard/Mouse Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the address ranges listed below, an SMI generates. Keyboard Controller: I/O Ports 060h/064h COM1: I/O Port 3F8h-3FFh (if F0 Index 93h[1:0] = 10 this range is included) COM2: I/O Port 2F8h-2FFh (if F0 Index 93h[1:0] = 11 this range is included) Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 86h/F6h[3]. ZFx86 Data Book 1.0 Rev D Page 217 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit 2 Description Parallel/Serial Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the address ranges listed below, an SMI is generated. LPT1: I/O Port 378h-37Fh, 778h-77Ah LPT2: I/O Port 278h-27Fh, 678h-67Ah COM1: I/O Port 3F8h-3FFh (if F0 Index 93h[1:0] = 10 this range is excluded) COM2: I/O Port 2F8h-2FFh (if F0 Index 93h[1:0] = 11 this range is excluded) COM3: I/O Port 3E8h-3EFh COM4: I/O Port 2E8h-2EFh Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 86h/F6h[2]. 1 Floppy Disk Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the address ranges listed below, an SMI generates. Primary floppy disk: I/O Port 3F2h-3F5h, 3F7h, Secondary floppy disk: I/O Port 372h-375h, 377h Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 86h/F6h[1]. 0 Primary Hard Disk Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the address ranges selected in F0 Index 93h[5], an SMI generates. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 86h/F6h[0]. Note: Does not work when the internal IDE is used. Index 83h 7 Power Management Enable Register 4 (R/W) Reset Value = 00h Secondary Hard Disk Idle Timer Enable — Turn on Secondary Hard Disk Idle Timer Count Register (F0 Index ACh) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. If an access occurs in the address ranges selected in F0 Index 93h[4], the timer is reloaded with the programmed count. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 86h/F6h[4]. 6 Secondary Hard Disk Trap — 0 = Disable; 1 = Enable. If this bit is enabled and an access occurs in the address ranges selected in F0 Index 93h[4], an SMI is generated. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 86h/F6h[5]. Note: Does not work when the internal IDE is used. 5:2 1 Reserved General Purpose Timer 2 Enable — Turn on GP Timer 2 Count Register (F0 Index 8Ah) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. This idle timer is reloaded from the assertion of GPIO7 (if programmed to do so). GP Timer 2 programming is at F0 Index 8Bh[5,3,2]. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[1]. 0 General Purpose Timer 1 Enable — Turn on GP Timer 1 Count Register (F0 Index 88h) and generate an SMI when the timer expires: 0 = Disable; 1 = Enable. This idle timer’s load is multi-sourced and gets reloaded any time an enabled event (F0 Index 89h[6:0]) occurs. GP Timer 1 programming is at F0 Index 8Bh[4]. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. Second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[0]. Index 84h ZFx86 Data Book 1.0 Rev D Reserved Page 218 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 85h Second Level PME/SMI Status Mirror Register 2 (RO, see Note) Reset Value = 00h 7 Reserved 6 User Defined Device 3 Idle Timer (UDEF3) SMI Status (Read Only) — Was SMI caused by expiration of UDEF3 Idle Timer Count Register (F0 Index A4h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[6] = 1. 5 User Defined Device 2 Idle Timer (UDEF2) SMI Status (Read Only) — Was SMI caused by expiration of UDEF2 Idle Timer Count Register (F0 Index A2h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[5] = 1. 4 User Defined Device 1 Idle Timer (UDEF1) SMI Status (Read Only) — Was SMI caused by expiration of UDEF1 Idle Timer Count Register (F0 Index A0h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[4] = 1. 3 Keyboard/Mouse Idle Timer SMI Status (Read Only) — Was SMI caused by expiration of Keyboard/Mouse Idle Timer Count Register (F0 Index 9Eh)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[3] = 1. 2 Parallel/Serial Idle Timer SMI Status (Read Only) — Was SMI caused by expiration of Parallel/Serial Port Idle Timer Count Register (F0 Index 9Ch)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[2] = 1. 1 Floppy Disk Idle Timer SMI Status (Read Only) — Was SMI caused by expiration of Floppy Disk Idle Timer Count Register (F0 Index 9Ah)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[1] = 1. 0 Primary Hard Disk Idle Timer SMI Status (Read Only) — Was SMI caused by expiration of Primary Hard Disk Idle Timer Count Register (F0 Index 98h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[0] = 1. Note: Second level of status reporting. Top level status reported at F1BAR0+I/O Offset 00h/02h[0]. If any SMI source described in Index 85h occurs, then bit 0 – SMI Source is Power Management Event of F1BAR+I/O Offset 00h/02h sets. This register is called a “Mirror” register since an identical register exists at F0 Index F5h. Reading this register does not clear the status, while reading its counterpart at F0 Index F5h clears the status at both the second and top levels. Index 86h 7:6 Second Level PME/SMI Status Mirror Register 3 (RO, see Note) Reset Value = 00h Reserved 5 Secondary Hard Disk Access Trap SMI Status (Read Only) — Was SMI caused by a trapped I/O access to the secondary hard disk? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[6] = 1. 4 Secondary Hard Disk Idle Timer SMI Status (Read Only) — Was SMI caused by expiration of Hard Disk Idle Timer Count Register (F0 Index ACh)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[7] = 1. 3 Keyboard/Mouse Access Trap SMI Status (Read Only) — Was SMI caused by a trapped I/O access to the keyboard or mouse? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[3] = 1. 2 Parallel/Serial Access Trap SMI Status (Read Only) — Was SMI caused by a trapped I/O access to either the serial or parallel ports? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[2] = 1. 1 Floppy Disk Access Trap SMI Status (Read Only) — Was SMI caused by a trapped I/O access to the floppy disk? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[1] = 1. 0 Primary Hard Disk Access Trap SMI Status (Read Only) — Was SMI caused by a trapped I/O access to the primary hard disk? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[0] = 1. ZFx86 Data Book 1.0 Rev D Page 219 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Note: Second level of status reporting. Top level status reported at F1BAR0+I/O Offset 00h/02h[0]. If any SMI source described in Index 86h occurs, then bit 0 – SMI Source is Power Management Event of F1BAR+I/O Offset 00h/02h sets. This register is called a “Mirror” register since an identical register exists at F0 Index F6h. Reading this register does not clear the status, while reading its counterpart at F0 Index F6h clears the status at both the second and top levels. Index 87h 7 Second Level PME/SMI Status Mirror Register 4 (RO, see Note) Reset Value = 00h GPIO Event SMI Status (Read Only) — Was SMI caused by a transition of any of the GPIOs? 0 = No; 1 = Yes. Note that F0BAR0+I/O Offset 08h/18h selects which GPIOs are enabled to generate a PME. In addition, the selected GPIO must be enabled as an input (F0BAR0+I/O Offset 20h and 24h). The next level (third level) of SMI status is at F0BAR0+I/O 0Ch/1Ch. 6:4 3 Reserved SIO PWUREQ SMI Status (Read Only) — Was SMI caused by a power-up event from the SIO? 0 = No; 1 = Yes. A power-up event is defined as any of the following events/activity: Modem, Telephone, Keyboard, Mouse, CEIR (Consumer Electronic Infrared). 2 Reserved 1 Reserved 0 Reserved Note: This is the second level of status reporting. The top level status is reported at F1BAR0+I/O Offset 00h/02h[0]. If any SMI source described in Index 87h occurs, then bit 0 – SMI Source is Power Management Event of F1BAR+I/O Offset 00h/02h is set. This register is called a “Mirror” register since an identical register exists at F0 Index F7h. Reading this register does not clear the status, while reading its counterpart at F0 Index F7h clears the status at both the second and top levels except for bit 7 which has a third level of SMI status reporting at F0BAR0+I/O 0Ch/1Ch. Index 88h 7:0 General Purpose Timer 1 Count Register (R/W) Reset Value = 00h General Purpose Timer 1 Count — This field represents the load value for General Purpose Timer 1. This value can represent either an 8-bit or 16-bit counter (selected in F0 Index 8Bh[4]). It is loaded into the counter when the timer is enabled (F0 Index 83h[0] = 1). Once enabled, an enabled event (configured in F0 Index 89h[6:0]) reloads the timer. The counter is decremented with each clock of the configured timebase (1 msec or 1 sec selected at F0 Index 89h[7]). Upon expiration of the counter, an SMI is generated and the top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[9]. The second level SMI status is reported at F1BAR0+I/O Offset 04h/06h[0]). Once expired, this counter must be re-initialized by either disabling and enabling it, or writing a new count value here. Index 89h General Purpose Timer 1 Control Register (R/W) Reset Value = 00h 7 General Purpose Timer 1 Timebase — Selects timebase for General Purpose Timer 1 (F0 Index 88h): 0 = 1 sec; 1 = 1 msec. 6 Re-trigger General Purpose Timer 1 on User Defined Device 3 (UDEF3) Activity — 0 = Disable; 1 = Enable. Any access to the configured (memory or I/O) address range for UDEF3 (configured in F0 Index C8h and CEh) reloads General Purpose Timer 1. 5 Re-trigger General Purpose Timer 1 on User Defined Device 2 (UDEF2) Activity — 0 = Disable; 1 = Enable. Any access to the configured (memory or I/O) address range for UDEF2 (configured in F0 Index C4h and CDh) reloads General Purpose Timer 1. 4 Re-trigger General Purpose Timer 1 on User Defined Device 1 (UDEF1) Activity — 0 = Disable; 1 = Enable. Any access to the configured (memory or I/O) address range for UDEF1 (configured in F0 Index C0h and CCh) reloads General Purpose Timer 1. 3 Re-trigger General Purpose Timer 1 on Keyboard or Mouse Activity — 0 = Disable; 1 = Enable Any access to the keyboard or mouse I/O address range listed below reloads General Purpose Timer 1. Keyboard Controller: I/O Ports 060h/064h COM1: I/O Port 3F8h-3FFh (if F0 Index 93h[1:0] = 10 this range is included) COM2: I/O Port 2F8h-2FFh (if F0 Index 93h[1:0] = 11 this range is included) ZFx86 Data Book 1.0 Rev D Page 220 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit 2 Description Re-trigger General Purpose Timer 1 on Parallel/Serial Port Activity — 0 = Disable; 1 = Enable. Any access to the parallel or serial port I/O address range listed below reloads the General Purpose Timer 1. LPT1: I/O Port 378h-37Fh, 778h-77Ah LPT2: I/O Port 278h-27Fh, 678h-67Ah COM1: I/O Port 3F8h-3FFh (if F0 Index 93h[1:0] = 10 this range is excluded) COM2: I/O Port 2F8h-2FFh (if F0 Index 93h[1:0] = 11 this range is excluded) COM3: I/O Port 3E8h-3EFh COM4: I/O Port 2E8h-2EFh 1 Re-trigger General Purpose Timer 1 on Floppy Disk Activity — 0 = Disable; 1 = Enable. Any access to the floppy disk drive address ranges listed below reloads General Purpose Timer 1. Primary floppy disk: I/O Port 3F2h-3F5h, 3F7h Secondary floppy disk: I/O Port 372h-375h, 377h The active floppy disk drive is configured via F0 Index 93h[7]. 0 Re-trigger General Purpose Timer 1 on Primary Hard Disk Activity — 0 = Disable; 1 = Enable. Any access to the primary hard disk address range selected in F0 Index 93h[5], reloads General Purpose Timer 1. Note: Does not work when the internal IDE is used. Index 8Ah 7:0 General Purpose Timer 2 Count Register (R/W) Reset Value = 00h General Purpose Timer 2 Count — This field represents the load value for General Purpose Timer 2. This value can represent either an 8-bit or 16-bit counter (configured in F0 Index 8Bh[5]). It is loaded into the counter when the timer is enabled (F0 Index 83h[1] = 1). Once the timer is enabled and a transition occurs on GPIO7, the timer is re-loaded. The counter is decremented with each clock of the configured timebase (1 msec or 1 sec selected at F0 Index 8Bh[3]. Upon expiration of the counter, an SMI is generated and the top level of status is F1BAR0+I/O Offset 00h/02h[9]. The second level of status is reported at F1BAR0+I/O Offset 04h/06h[1]). Once expired, this counter must be re-initialized by either disabling and enabling it, or writing a new count value here. For GPIO7 to act as the reload for this counter, it must be enabled as such (F0 Index 8Bh[2]) and be configured as an input. (GPIO pin programming is at F0BAR0+I/O Offset 20h and 24h.) Index 8Bh 7 General Purpose Timer 2 Control Register (R/W) Reset Value = 00h Re-trigger General Purpose Timer 1 (GP Timer 1) on Secondary Hard Disk Activity — 0 = Disable; 1 = Enable. Any access to the secondary hard disk address range selected in F0 Index 93h[4] reloads GP Timer 1. 6 Reserved 5 General Purpose Timer 2 (GP Timer 2) Shift — GP Timer 2 is treated as an 8-bit or 16-bit timer: 0 = 8-bit; 1 = 16-bit. As an 8-bit timer, the count value is loaded into GP Timer 2 Count Register (F0 Index 8Ah). As a 16-bit timer, the value loaded into GP Timer 2 Count Register is shifted left by eight bits, the lower eight bits become zero, and this 16-bit value is used as the count for GP Timer 2. 4 General Purpose Timer 1 (GP Timer 1) Shift — GP Timer 1 is treated as an 8-bit or 16-bit timer: 0 = 8-bit; 1 = 16-bit. As an 8-bit timer, the count value is loaded into GP Timer 1 Count Register (F0 Index 88h). As a 16-bit timer, the value loaded into GP Timer 1 Count Register is shifted left by eight bit, the lower eight bits become zero, and this 16-bit value is used as the count for GP Timer 1. 3 General Purpose Timer 2 (GP Timer 2) Timebase — Selects timebase for GP Timer 2 (F0 Index 8Ah): 0 = 1 sec; 1 = 1 msec. 2 Re-trigger Timer on GPIO7 Pin Transition — A rising-edge transition on the GPIO7 pin reloads GP Timer 2 (F0 Index 8Ah): 0 = Disable; 1 = Enable. For GPIO7 to work here, it must first be configured as an input. (GPIO pin programming is at F0BAR0+I/O Offset 20h and 24h.) 1:0 Reserved ZFx86 Data Book 1.0 Rev D Page 221 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 8Ch 7:0 IRQ Speedup Timer Count Register (R/W) Reset Value = 00h IRQ Speedup Timer Load Value — This field represents the load value for the IRQ speedup timer. It is loaded into the counter when Suspend Modulation is enabled (F0 Index 96h[0] = 1) and an INTR or an access to I/O Port 061h occurs. When the event occurs, the Suspend Modulation logic is inhibited, permitting full performance operation of the CPU. Upon expiration, no SMI is generated; the Suspend Modulation begins again. The IRQ speedup timer’s timebase is 1 msec. This speedup mechanism allows instantaneous response to system interrupts for full-speed interrupt processing. A typical value here would be 2 to 4 msec. Index 8Dh-92h Index 93h Reserved Miscellaneous Device Control Register (R/W) Reset Value = 00h 7 Floppy Disk Port Select — All system resources used to power manage the floppy disk drive use the primary or secondary FDC addresses for decode: 0 = Secondary; 1 = Primary. 6 Reserved — This bit must always be set to 1 if written. 5 Partial Primary Hard Disk Decode — This bit is used to restrict the addresses which are decoded as primary hard disk accesses. 0 = Power management monitors all reads and writes I/O Port 1F0h-1F7h, 3F6h-3F7h (excludes writes to 3F7h) 1 = Power management monitors only writes to I/O Port 1F6h and 1F7h 4 Partial Secondary Hard Disk Decode — This bit is used to restrict the addresses which are decoded as secondary hard disk accesses. 0 = Power management monitors all reads and writes I/O Port 170h-177h, 376h-377h (excludes writes to 377h) 1 = Power management monitors only writes to I/O Port 176h and 177h 3:2 Reserved 1 Mouse on Serial Enable — Mouse is present on a Serial Port: 0 = No; 1 = Yes. (Note) 0 Mouse Port Select — Selects which serial port the mouse is attached to: 0 = COM1; 1 = COM2. (Note) Note: Bits 1 and 0 - If a mouse is attached to a serial port (bit 1 = 1), that port is removed from the serial device list being used to monitor serial port access for power management purposes and added to the keyboard/mouse decode. This is done because a mouse, along with the keyboard, is considered an input device and is used only to determine when to blank the screen. These bits determine the decode used for the Keyboard/Mouse Idle Timer Count Register (F0 Index 9Eh) as well as the Parallel/Serial Idle Timer Count Register (F0 Index 9Ch). Index 94h 7:0 Suspend Modulation OFF Count Register (R/W) Reset Value = 00h Suspend Signal Deasserted Count — This 8-bit counter represents the number of 32 µs intervals that the SUSP# pin will be deasserted to the processor. This counter, together with the Suspend Modulation ON Count Register (F0 Index 95h), perform the Suspend Modulation function for CPU power management. The ratio of the on-to-off count sets up an effective (emulated) clock frequency, allowing the power manager to reduce CPU power consumption. This counter is prematurely reset if an enabled speedup event occurs. The speedup events are IRQ speedups and video speedups. Index 95h 7:0 Suspend Modulation ON Count Register (R/W) Reset Value = 00h Suspend Signal Asserted Count — This 8-bit counter represents the number of 32 µs intervals that the SUSP# pin will be asserted. This counter, together with the Suspend Modulation OFF Count Register (F0 Index 94h), perform the Suspend Modulation function for CPU power management. The ratio of the on-to-off count sets up an effective (emulated) clock frequency, allowing the power manager to reduce CPU power consumption. This counter is prematurely reset if an enabled speedup event occurs. The speedup events are IRQ speedups and video speedups. ZFx86 Data Book 1.0 Rev D Page 222 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 96h 7:2 1 Suspend Configuration Register (R/W) Reset Value = 00h Reserved SMI Speedup Configuration — Selects how Suspend Modulation function reacts when an SMI occurs: 0 = Use the IRQ Speedup Timer Count Register (F0 Index 8Ch) to temporarily disable Suspend Modulation when an SMI occurs. 1 = Disable Suspend Modulation when an SMI occurs until a read to the SMI Speedup Disable Register occurs. (F1BAR0+I/O Offset 08h). The goal of this bit is to disable Suspend Modulation while the CPU is in the System Management Mode so that VSA and Power Management operations occur at full speed. Two methods for accomplishing this are either to map the SMI into the IRQ Speedup Timer Count Register (F0 Index 8Ch), or to have the SMI disable Suspend Modulation until the SMI handler reads the SMI Speedup Disable Register (F1BAR0+I/O Offset 08h). The latter is the preferred method. The IRQ speedup method is provided for software compatibility with earlier revisions of the South Bridge module. This bit has no affect if the Suspend Modulation feature is disabled (bit 0 = 0). 0 Suspend Modulation Feature Enable — Suspend Modulation feature: 0 = Disable; 1 = Enable. When enabled, the SUSP# pin will be asserted and deasserted for the durations programmed in the Suspend Modulation OFF/ON Count Registers (F0 Index 94h/95h). This bit setting is mirrored in the Top Level PME/SMI Status Register (F1BAR0+I/O Offset 00h/02h[15]. It is used by the SMI handler to determine if the SMI Speedup Disable Register (F1BAR0+I/O Offset 08h) must be cleared on exit. Index 97h Index 98h-99h 15:0 Reserved Primary Hard Disk Idle Timer Count Register (R/W) Reset Value = 0000h Primary Hard Disk Idle Timer Count — This idle timer is used to determine when the hard disk is not in use so that it can be powered down. The 16-bit value programmed here represents the period of hard disk inactivity after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to the configured hard disk’s data port (I/O Port 1F0h or 170h). The counter uses a 1 second timebase. To enable this timer set F0 Index 81h[0] = 1. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[0]. Index 9Ah-9Bh 15:0 Floppy Disk Idle Timer Count Register (R/W) Reset Value = 0000h Floppy Disk Idle Timer Count — This idle timer is used to determine when the floppy disk drive is not in use so that it can be powered down. The 16-bit value programmed here represents the period of floppy disk drive inactivity after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to the configured floppy drive’s data port (I/O Port 3F5h or 375h). The counter uses a 1 second timebase. To enable this timer set F0 Index 81h[1] = 1. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[1]. Index 9Ch-9Dh 15:0 Parallel / Serial Idle Timer Count Register (R/W) Reset Value = 0000h Parallel / Serial Idle Timer Count — This idle timer is used to determine when the parallel and serial ports are not in use so that the ports can be power managed. The 16-bit value programmed here represents the period of inactivity for these ports after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to the parallel (LPT) or serial (COM) I/O address spaces. If the mouse is enabled on a serial port, that port is not considered here. The counter uses a 1 second timebase. To enable this timer set F0 Index 81h[2] = 1. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[2]. ZFx86 Data Book 1.0 Rev D Page 223 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index 9Eh-9Fh 15:0 Keyboard / Mouse Idle Timer Count Register (R/W) Reset Value = 0000h Keyboard / Mouse Idle Timer Count — This idle timer determines when the keyboard and mouse are not in use so that the LCD screen can be blanked. The 16-bit value programmed here represents the period of inactivity for these ports after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to either the keyboard or mouse I/O address spaces, including the mouse serial port address space when a mouse is enabled on a serial port. The counter uses a 1 second timebase. To enable this timer set F0 Index 81h[3] = 1. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[3]. Index A0h-A1h 15:0 User Defined Device 1 Idle Timer Count Register (R/W) Reset Value = 0000h User Defined Device 1 (UDEF1) Idle Timer Count — This idle timer determines when the device configured as UDEF1 is not in use so that it can be power managed. The 16-bit value programmed here represents the period of inactivity for this device after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to memory or I/O address space configured in F0 Index C0h (base address register) and F0 Index CCh (control register). The counter uses a 1 second timebase. To enable this timer set F0 Index 81h[4] = 1. Top level SMI status is reported at F1BAR+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[4]. Index A2h-A3h 15:0 User Defined Device 2 Idle Timer Count Register (R/W) Reset Value = 0000h User Defined Device 2 (UDEF2) Idle Timer Count — This idle timer determines when the device configured as UDEF2 is not in use so that it can be power managed. The 16-bit value programmed here represents the period of inactivity for this device after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to memory or I/O address space configured in the F0 Index C4h (base address register) and F0 Index CDh (control register). The counter uses a 1 second timebase. To enable this timer set F0 Index 81h[5] = 1. Top level SMI status is reported at F1BAR+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[5]. Index A4h-A5h 15:0 User Defined Device 3 Idle Timer Count Register (R/W) Reset Value = 0000h User Defined Device 3 (UDEF3) Idle Timer Count — This idle timer determines when the device configured as UDEF3 is not in use so that it can be power managed. The 16-bit value programmed here represents the period of inactivity for this device after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to memory or I/O address space configured in the UDEF3 Base Address Register (F0 Index C8h) and UDEF3 Control Register (F0 Index CEh). The counter uses a 1 second timebase. To enable this timer set F0 Index 81h[6] = 1. Top level SMI status is reported at F1BAR+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 85h/F5h[6]. Index A6h-ABh Reserved Index ACh-ADh Secondary Hard Disk Idle Timer Count Register (R/W) 15:0 Reset Value = 0000h Secondary Hard Disk Idle Timer Count — This idle timer is used to determine when the hard disk is not in use so that it can be powered down. The 16-bit value programmed here represents the period of hard disk inactivity after which the system is alerted via an SMI. The timer is automatically reloaded with the count value whenever an access occurs to the configured hard disk’s data port (I/O Port 1F0h or 170h). The counter uses a 1 second timebase. To enable this timer set F0 Index 83h[7] = 1. Top level SMI status is reported at F1BAR0+I/O Offset 00h/02h[0]. Second level SMI status is reported at F0 Index 86h/F6h[4]. ZFx86 Data Book 1.0 Rev D Page 224 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index AEh 7:0 CPU Suspend Command Register (WO) Reset Value = 00h Software CPU Suspend Command (Write Only) — If bit 0 in the Clock Stop Control Register is set low (F0 Index BCh[0] = 0), a write to this register causes a SUSP#/SUSPA# handshake with the CPU, placing the CPU in a low-power state. The data written is irrelevant. Once in this state, any unmasked IRQ or SMI releases the CPU halt condition. If F0 Index BCh[0] = 1, writing to this register invokes a full system Suspend. Index AFh 7:0 Reset Value = 00h Software CPU Stop Clock Suspend (Write Only) — A write to this register causes a SUSP#/SUSPA# handshake with the CPU, placing the CPU in a low-power state. Index B0h-B7h Index B8h 7:0 Suspend Notebook Command Register (WO) Reserved DMA Shadow Register (RO) Reset Value = xxh DMA Shadow (Read Only) — This 8-bit port sequences through the following list of shadowed DMA Controller registers. At power on, a pointer starts at the first register in the list and consecutively reads incrementally through it. A write to this register resets the read sequence to the first register. Each shadow register in the sequence contains the last data written to that location. The read sequence for this register is: 1. DMA Channel 0 Mode Register 2. DMA Channel 1 Mode Register 3. DMA Channel 2 Mode Register 4. DMA Channel 3 Mode Register 5. DMA Channel 4 Mode Register 6. DMA Channel 5 Mode Register 7. DMA Channel 6 Mode Register 8. DMA Channel 7 Mode Register 9. DMA Channel Mask Register (bit 0 is channel 0 mask, etc.) 10. DMA Busy Register (bit 0 or 1 means a DMA occurred within last 1 msec, all other bits are 0) Index B9h 7:0 PIC Shadow Register (RO) Reset Value = xxh PIC Shadow (Read Only) — This 8-bit port sequences through the following list of shadowed Interrupt Controller registers. At power on, a pointer starts at the first register in the list and consecutively reads incrementally through it. A write to this register resets the read sequence to the first register. Each shadow register in the sequence contains the last data written to that location. The read sequence for this register is: 1. PIC1 ICW1 2. PIC1 ICW2 3. PIC1 ICW3 4. PIC1 ICW4 - Bits [7:5] of ICW4 are always 0 5. PIC1 OCW2 - Bits [6:3] of OCW2 are always 0 ( See note below.) 6. PIC1 OCW3 - Bits [7, 4] are 0 and bit [6, 3] are 1 7. PIC2 ICW1 8. PIC2 ICW2 9. PIC2 ICW3 10. PIC2 ICW4 - Bits [7:5] of ICW4 are always 0 11. PIC2 OCW2 - Bits [6:3] of OCW2 are always 0 (Note) 12. PIC2 OCW3 - Bits [7, 4] are 0 and bit [6, 3] are 1 Note: To restore OCW2 to shadow register value, write the appropriate address twice. First with the shadow register value, then with the shadow register value ORed with C0h. ZFx86 Data Book 1.0 Rev D Page 225 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index BAh 7:0 PIT Shadow Register (RO) Reset Value = xxh PIT Shadow (Read Only) — This 8-bit port sequences through the following list of shadowed Programmable Interval Timer registers. At power on, a pointer starts at the first register in the list and consecutively reads to increment through it. A write to this register resets the read sequence to the first register. Each shadow register in the sequence contains the last data written to that location. The read sequence for this register is: 1. Counter 0 LSB (least significant byte) 2. Counter 0 MSB 3. Counter 1 LSB 4. Counter 1 MSB 5. Counter 2 LSB 6. Counter 2 MSB 7. Counter 0 Command Word 8. Counter 1 Command Word 9. Counter 2 Command Word Note: The LSB/MSB of the count is the Counter base value, not the current value. Bits [7:6] of the command words are not used. Index BBh 7:0 Reset Value = xxh RTC Index Shadow (Read Only) — The RTC Shadow register contains the last written value of the RTC Index register (I/O Port 070h). Index BCh 7:4 RTC Index Shadow Register (RO) Clock Stop Control Register (R/W) Reset Value = 00h PLL Delay — The programmed value in this field sets the delay (in milliseconds) after a break event occurs before the SUSP# pin is deasserted to the CPU. This delay is designed to allow the clock chip and CPU clock to stabilize before starting execution. This delay is only invoked if the STP_CLK bit was set. The four-bit field allows values from 0 to 15 msec. 0000 = 0 msec 0001 = 1 msec 0010 = 2 msec 0011 = 3 msec 3:1 0 0100 = 4 msec 0101 = 5 msec 0110 = 6 msec 0111 = 7 msec 1000 = 8 msec 1001 = 9 msec 1010 = 10 msec 1011 = 11 msec Reserved CPU Clock Stop — 0 = Normal SUSP#/ SUSPA# handshake; 1 = Full system Suspend. Index BDh-BFh Reserved Index C0h-C3h User Defined Device 1 Base Address Register (R/W) 31:0 Reset Value = 00000000h User Defined Device 1 (UDEF1) Base Address [31:0] — This 32-bit register supports power management (trap and idle timer resources) for a PCMCIA slot or some other device in the system. The value written is used as the address comparator for the device trap/timer logic. The device can be memory or I/O mapped (configured in F0 Index CCh). The South Bridge module can not snoop addresses on the Front-PCI bus unless the South Bridge module actually claims the cycle. Therefore, traps and idle timers can not support power management of devices on the Front-PCI bus. Index C4h-C7h 31:0 1100 = 12 msec 1101 = 13 msec 1110 = 14 msec 1111 = 15 msec User Defined Device 2 Base Address Register (R/W) Reset Value = 00000000h User Defined Device 2 (UDEF2) Base Address [31:0] — This 32-bit register supports power management (trap and idle timer resources) for a PCMCIA slot or some other device in the system. The value written is used as the address comparator for the device trap/timer logic. The device can be memory or I/O mapped (configured in F0 Index CDh). The South Bridge module can not snoop addresses on the Front-PCI bus unless the South Bridge module actually claims the cycle. Therefore, traps and idle timers can not support power management of devices on the Front-PCI bus. ZFx86 Data Book 1.0 Rev D Page 226 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index C8h-CBh 31:0 User Defined Device 3 Base Address Register (R/W) Index CCh 7 6:0 Reset Value = 00000000h User Defined Device 3 (UDEF3) Base Address [31:0] — This 32-bit register supports power management (trap and idle timer resources) for a PCMCIA slot or some other device in the system. The value written is used as the address comparator for the device trap/timer logic. The device can be memory or I/O mapped (configured in F0 Index CEh). The South Bridge module can not snoop addresses on the Front-PCI bus unless the South Bridge module actually claims the cycle. Therefore, traps and idle timers can not support power management of devices on the Front-PCI bus. User Defined Device 1 Control Register (R/W) Reset Value = 00h Memory or I/O Mapped — User Defined Device 1 is: 0 = I/O; 1 = Memory. Mask If bit 7 = 0 (I/O): Bit 6 0 = Disable write cycle tracking 1 = Enable write cycle tracking Bit 5 0 = Disable read cycle tracking 1 = Enable read cycle tracking Bits 4:0 Mask for address bits A[4:0] If bit 7 = 1 (Memory): Bits 6:0 Mask for address memory bits A[15:9] (512 bytes min. and 64 KB max.) A[8:0] are ignored. Note: A "1" in a mask bit means that the address bit is ignored for comparison. Index CDh 7 6:0 User Defined Device 2 Control Register (R/W) Reset Value = 00h Memory or I/O Mapped — User Defined Device 2 is: 0 = I/O; 1 = Memory. Mask If bit 7 = 0 (I/O): Bit 6 0 = Disable write cycle tracking 1 = Enable write cycle tracking Bit 5 0 = Disable read cycle tracking 1 = Enable read cycle tracking Bits 4:0 Mask for address bits A[4:0] If bit 7 = 1 (Memory): Bits 6:0 Mask for address memory bits A[15:9] (512 bytes min. and 64 KB max.) A[8:0] are ignored. Note: A "1" in a mask bit means that the address bit is ignored for comparison. Index CEh 7 6:0 User Defined Device 3 Control Register (R/W) Reset Value = 00h Memory or I/O Mapped — User Defined Device 3 is: 0 = I/O; 1 = Memory. Mask If bit 7 = 0 (I/O): Bit 6 0 = Disable write cycle tracking 1 = Enable write cycle tracking Bit 5 0 = Disable read cycle tracking 1 = Enable read cycle tracking Bits 4:0 Mask for address bits A[4:0] If bit 7 = 1 (Memory): Bits 6:0 Mask for address memory bits A[15:9] (512 bytes min. and 64 KB max.) A[8:0] are ignored. Note: A "1" in a mask bit means that the address bit is ignored for comparison. Index CFh ZFx86 Data Book 1.0 Rev D Reserved Page 227 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit Description Index D0h 7:0 Index D1h-EBh Index ECh 7:0 Software SMI Register (WO) Reset Value = 00h Software SMI (Write Only) — A write to this location generates an SMI. The data written is irrelevant. This register allows software entry into SMM via normal bus access instructions. Reserved Timer Test Register (R/W) Reset Value = 00h Timer Test Value — The Timer Test Register is intended only for test and debug purposes. It is not intended for setting operational timebases. Index EDh-F4h Index F5h Reserved Second Level PME/SMI Status Register 2 (RC, see Note) Reset Value = 00h 7 Reserved 6 User Defined Device3 Idle Timer (UDEF3) SMI Status (Read to Clear) — Was SMI caused by expiration of UDEF3 Idle Timer Count Register (F0 Index A4h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[6] = 1. 5 User Defined Device 2 Idle Timer (UDEF2) SMI Status (Read to Clear) — Was SMI caused by expiration of UDEF2 Idle Timer Count Register (F0 Index A2h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[5] = 1. 4 User Defined Device Idle 1 Timer (UDEF1) SMI Status (Read to Clear) — Was SMI caused by expiration of UDEF1 Idle Timer Count Register (F0 Index A0h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[4] = 1. 3 Keyboard/Mouse SMI Status Idle Timer (Read to Clear) — Was SMI caused by expiration of Keyboard/Mouse Idle Timer Count Register (F0 Index 9Eh)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[3] = 1. 2 Parallel/Serial SMI Status Idle Timer (Read to Clear) — Was SMI caused by expiration of Parallel/Serial Port Idle Timer Count Register (F0 Index 9Ch)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[2] = 1. 1 Floppy Disk SMI Status Idle Timer (Read to Clear) — Was SMI caused by expiration of Floppy Disk Idle Timer Count Register (F0 Index 9Ah)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[1] = 1. 0 Primary Hard Disk SMI Status Idle Timer (Read to Clear) — Was SMI caused by expiration of Primary Hard Disk Idle Timer Count Register (F0 Index 98h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 81h[0] = 1. Note: This is the second level of status reporting. The top level status is reported at F1BAR0+I/O Offset 00h/02h[0]. If any SMI source described in Index F5h occurs, then bit 0 – SMI Source is Power Management Event of F1BAR+I/O Offset 00h/02h sets. Reading register F5h clears the status at both the second and top levels. A read-only “Mirror” version of this register exists at F0 Index 85h. If the value of the register must be read without clearing the SMI source (and consequently deasserting SMI), F0 Index 85h may be read instead. Index F6h 7:6 5 Second Level PME/SMI Status Register 3 (RC, see Note) Reset Value = 00h Reserved Secondary Hard Disk Access Trap SMI Status (Read to Clear) — Was SMI caused by a trapped I/O access to the secondary hard disk? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[6] = 1. 4 Secondary Hard Disk Idle Timer SMI Status (Read to Clear) — Was SMI caused by expiration of Hard Disk Idle Timer Count Register (F0 Index ACh)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[7] = 1. ZFx86 Data Book 1.0 Rev D Page 228 4 Table 4.30 F0 Index xxh: PCI Header and Bridge Configuration Registers (cont.) Bit 3 Description Keyboard/Mouse Access Trap SMI Status (Read to Clear) — Was SMI caused by a trapped I/O access to the keyboard or mouse? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[3] = 1. 2 Parallel/Serial Access Trap SMI Status (Read to Clear) — Was SMI caused by a trapped I/O access to either the serial or parallel ports? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[2] = 1. 1 Floppy Disk Access Trap SMI Status (Read to Clear) — Was SMI caused by a trapped I/O access to the floppy disk? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[1] = 1. 0 Primary Hard Disk Access Trap SMI Status (Read to Clear) — Was SMI caused by a trapped I/O access to the primary hard disk? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[0] = 1. Note: This is the second level of status reporting. The top level status is reported at F1BAR0+I/O Offset 00h/02h[0]. If any SMI source described in Index F6h occurs, then bit 0 – SMI Source is Power Management Event of F1BAR+I/O Offset 00h/02h sets. Reading register F6h clears the status at both the second and top levels. A read-only “Mirror” version of this register exists at F0 Index 86h. If the value of the register must be read without clearing the SMI source (and consequently deasserting SMI), F0 Index 86h may be read instead. Index F7h 7 Second Level PME/SMI Status Register 4 (RO/RC, see Note) Reset Value = 00h GPIO Event SMI Status (Read Only, Read does not Clear) — Was SMI caused by a transition of any of the GPIOs? 0 = No; 1 = Yes. Note that F0BAR0+I/O Offset 08h/18h selects which GPIOs are enabled to generate a PME. In addition, the selected GPIO must be enabled as an input (F0BAR0+I/O Offset 20h and 24h). The next level (third level) of SMI status is at F0BAR0+I/O 0Ch/1Ch. 6:4 3 Reserved SIO PWUREQ SMI Status (Read to Clear) — Was SMI caused by a power-up event from the SIO? 0 = No; 1 = Yes. A power-up event is defined as any of the following events/activity: Modem, Telephone, Keyboard, Mouse, CEIR (Consumer Electronic Infrared). 2 Reserved 1 Reserved 0 Reserved Note: This is the second level of status reporting. Top level status is reported at F1BAR0+I/O Offset 00h/02h[0]. If any SMI source described in Index F7h occurs, then bit 0 – SMI Source is Power Management Event of F1BAR+I/O Offset 00h/02h sets. Reading register F7h clears the status at both the second and top levels except for bit 7 which has a third level of status reporting at F0BAR0+I/O 0Ch/1Ch. A read-only “Mirror” version of this register exists at F0 Index 87h. If the value of the register must be read without clearing the SMI source (and consequently deasserting SMI), F0 Index 87h may be read instead. Index F8h-FFh ZFx86 Data Book 1.0 Rev D Reserved Page 229 4 4.4.3.2. GPIO Support Registers F0 Index 10h, Base Address Register 0 (F0BAR0) points to the base address of where the GPIO runtime and configuration registers are located. Table 4.31 gives the bit formats of the I/O mapped registers accessed through F0BAR0. Table 4.31 F0BAR0+I/O Offset xxh: GPIO Runtime and Configuration Registers Bit Offset 00h GPDO0 — GPIO Data Out 0 Register (R/W) Reset Value = FFFFFFFFh 31:8 Reserved 7:0 GPIO Data Out — Bits [7:0] correspond to GPIO7-GPIO0 pins, respectively. The value of each bit determines the value driven on the corresponding GPIO pin when its output buffer is enabled. Writing to the bit latches the written data unless the bit is locked by the GPIO Configuration Register Lock Bit (F0BAR0+I/O Offset 24h[3]). Reading the bit returns the value, regardless of the pin value and configuration. 0 = Corresponding GPIO pin driven to low when output enabled. 1 = Corresponding GPIO pin driven or released to high (according to buffer type and static pull-up selection) when output enabled. Offset 04h GPDI0 — GPIO Data In 0 Register (RO) Reset Value = FFFFFFFFh 31:8 Reserved 7:0 GPIO Data In (Read Only) — Bits [7:0] correspond to GPI07-GPIO0 pins, respectively. Reading each bit returns the value of the corresponding GPIO pin, regardless of the pin configuration and the GPDO0 Register value. Writes are ignored. 0 = Corresponding GPIO pin level low; 1 = Corresponding GPIO pin level high. Offset 08h GPIEN0 — GPIO Interrupt Enable 0 Register (R/W) Reset Value = 00000000h 31:8 Reserved 7:0 GPIO Power Management Event (PME) Enable — Bits [7:0] correspond to GPIO7-GPIO0 pins, respectively. Each bit allows PME generation by the corresponding GPIO pin. 0 = Disable PME generation; 1 = Enable PME generation. Note: The individually selected GPIO PMEs generate an SMI and the status is reported at F1BAR0+I/O Offset 00h/02h[0]. Offset 0Ch GPST0 — GPIO Status 0 Register (R/W1C) Reset Value = 00000000h 31:8 Reserved 7:0 GPIO Status — Bits [7:0] correspond to GPIO7-GPIO0 pins, respectively. Each bit reports a 1 when the hardware detects the edge (rising/falling on the GPIO pin) programmed in F0BAR0+I/O Offset 24h[5]. If the corresponding bit in F0BAR0+I/O Offset 08h is set, this edge generates a PME. 0 = No active edge detected since last cleared; 1 = Active edge detected. Note: Writing a 1 FOLLOWED by reading the Status bit clears it to 0. This is the third level of SMI status reporting to the second level at F0 Index 87h/F7h[7] and the top level at F1BAR0+I/O Offset 00h/02h[0]. Clearing the third level also clears the second and top levels. Offset 10h-1Fh Offset 20h 31:6 5 Reserved GPIO Pin Configuration Select Register (R/W) Reset Value = 00000000h Reserved Bank Select — Selects the GPIO bank to be configured: 0 = Bank 0 for GPIO0-GPIO7 pins. ZFx86 Data Book 1.0 Rev D Page 230 4 Table 4.31 F0BAR0+I/O Offset xxh: GPIO Runtime and Configuration Registers (cont.) Bit 4:0 Pin Select — Selects the GPIO pin to be configured in the Bank selected via bit 5 setting (that is, Bank 0). If bit 5 = 0; Bank 0 00000 = GPIO0 00001 = GPIO1 00010 = GPIO2 00011 = GPIO3 00100 = GPIO4 00101 = GPIO5 00110 = GPIO6 00111 = GPIO7 Offset 24h 31:7 GPIO Pin Configuration Access Register (R/W) Reset Value = 00000044h Reserved 6 PME Debounce Enable — Enables/disables IRQ debounce (debounce period = 16 ms): 0 = Disable; 1 = Enable. 5 PME Polarity — Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0 = Falling edge or low level input. 1 = Rising edge or high level input. 4 PME Edge/Level Select — Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0 = Edge input; 1 = Level input. 3 Lock — This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0 = No effect (Default); 1 = Direction, output type, pull-up and output value locked. 2 Pull-Up Control — Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports opendrain output signals with internal pull-ups and TTL input signals. 0 = Disable; 1 = Enable (Default). For normal operation always set this bit to 0 (edge input). Erratic system behavior will result if this bit is set to 1. Bits [1:0] must = 01 for this bit to have effect. 1 Output Type — Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0 = Open-drain (Default); 1 = Push-pull Bit 0 must = 1 for this bit to have effect. 0 Output Enable — Indicates the GPIO pin output state. It has no effect on input. 0 = TRI-STATE (Default); 1 = Output enabled. Offset 28h 31:1 0 GPIO Reset Control Register (R/W) Reset Value = 00000000h Reserved GPIO Reset — Reset the GPIO logic: 0 = Disable; 1 = Enable. Write 0 to clear. This bit is level-sensitive and must be cleared after the reset is enabled (normal operation requires this bit to be 0). 4.4.3.3. SMI Status Registers - Function pointing to the register spaces designated for SMI Status, described later in this section. The register space designated as Function 1 (F1) is used to configure the PCI portion of support hardware for the SMI Status Registers. The bit formats for the PCI Header Registers are given in Table 4.32. Located in the PCI Header Registers of F1 is Base Address Register (F1BAR0) used for ZFx86 Data Book 1.0 Rev D Page 231 4 Table 4.32 F1 Index xxh: PCI Header Registers for SMI Status Bit Description Index 00h-01h Vendor Identification Register (RO) Reset Value = 1078h Index 02h-03h Device Identification Register (RO) Reset Value = 0401h Index 04h-05h PCI Command Register (R/W) Reset Value = 0000h 15:1 0 Reserved I/O Space — Allow South Bridge module to respond to I/O cycles from the PCI bus: 0 = Disable; 1 = Enable. This bit must be enabled to access I/O offsets through F1BAR0 (see F1 Index 10h). Index 06h-07h Index 08h PCI Status Register (RO) Device Revision ID Register (RO) Index 09h-0Bh PCI Class Code Register (RO) Reset Value = 0280h Reset Value = 00h Reset Value = 000000h Index 0Ch PCI Cache Line Size Register (RO) Reset Value = 00h Index 0Dh PCI Latency Timer Register (RO) Reset Value = 00h Index 0Eh PCI Header Type (RO) Reset Value = 00h Index 0Fh PCI BIST Register (RO) Reset Value = 00h Index 10h-13h Base Address Register 0 - F1BAR0 (R/W) Reset Value = 00000001h This register allows access to I/O mapped SMI status related registers. Bits [7:0] are read only (0000 0001), indicating a 256-byte I/O address range. Refer to Table 4.33 for the SMI status registers bit formats and reset values. 31:8 SMI Status Base Address 7:0 Address Range (Read Only) Index 14h-2Bh Reserved Index 2Ch-2Dh Subsystem Vendor ID (RO) Reset Value = 1078h Index 2Eh-2Fh Subsystem ID (RO) Reset Value = 0401h Index 30h-FFh Reserved ZFx86 Data Book 1.0 Rev D Page 232 4 4.4.3.4. SMI Status Support Registers F1 Index 10h, Base Address Register 0 (F1BAR0), points to the base address of where the SMI Status Registers are located. Table 4.33 gives the bit formats of I/O mapped SMI Status Registers accessed through F1BAR0. Note: The registers at F1BAR0+I/O Offset 50h-can also be accessed F0 Index 50h-FFh. The preferred method is to program these registers through the F0 register space. Table 4.33 F1BAR0+I/O Offset xxh: SMI Status Registers Bit Description Offset 00h-01h 15 14 Top Level PME/SMI Status Mirror Register (RO, see Note) Reset Value = 0000h Suspend Modulation Enable Mirror (Read Only) — This bit mirrors the Suspend Mode Configuration bit (F0 Index 96h[0]). It is used by the SMI handler to determine if the SMI Speedup Disable Register (F1BAR0+I/O Offset 08h) must be cleared on exit. SMI Source is USB (Read Only) — Was SMI caused by USB activity? 0 = No; 1 = Yes. To enable SMI generation set F5BAR0+I/O Offset 00h[20:19] = 11. 13 SMI Source is Warm Reset Command (Read Only) — Was SMI caused by Warm Reset command? 0 = No; 1 = Yes. 12 Reserved. 11 SMI Source is SIO (Read Only) — Was SMI caused by SIO? 0 = No; 1 = Yes. The next level (second level) of SMI status is reported in the SIO module. 10 SMI Source is EXT_SMI[7:0] (Read Only) — Was SMI caused by a negative-edge event on EXT_SMI[7:0]? 0 = No; 1 = Yes. The next level (second level) of SMI status is at F1BAR0+I/O Offset 24h[23:8]. 9 SMI Source is GP Timer/UDEF/PCI/ISA Function Trap (Read Only) — Was SMI caused by expiration of GP Timer 1/2, trapped access to UDEF3/2/1, and/or trapped access to F1-F3 or ISA Legacy Register Space? 0 = No; 1 = Yes. The next level (second level) of SMI status is at F1BAR0+I/O Offset 04h/06h. 8 SMI Source is Software Generated (Read Only) — Was SMI caused by software? 0 = No; 1 = Yes. 7 SMI on an A20M# Toggle (Read Only) — Was SMI caused by an access to either Port 92h or the keyboard command which initiates an A20M# SMI? 0 = No; 1 = Yes. This method of controlling the internal A20M# in the processor is used instead of a pin. To enable SMI generation set F0 Index 53h[0] = 1. 6:1 0 Reserved SMI Source is Power Management Event (Read Only) — Was SMI caused by one of the power management resources (except for the GP Timers, UDEF, and PCI/ISA Function traps that are reported in bit 9): 0 = No; 1 = Yes. The next level (second level) of SMI status is at F0 Index 84h/F4h and 87h/F7h. Note: Reading this register does not clear the status bits. See F1BAR0+I/O Offset 02h. Offset 02h-03h Top Level PME/SMI Status Register (RO/RC, see Note) Reset Value = 0000h 15 Suspend Modulation Enable Mirror (Read to Clear) — This bit mirrors the Suspend Mode Configuration bit (F0 Index 96h[0]). It is used by the SMI handler to determine if the SMI Speedup Disable Register (F1BAR0+I/O Offset 08h) must be cleared on exit. 14 SMI Source is USB (Read to Clear) — Was SMI caused by USB activity? 0 = No; 1 = Yes. To enable SMI generation set F5BAR0+I/O Offset 00h[20:19] = 11. 13 SMI Source is Warm Reset Command (Read to Clear) — Was SMI caused by Warm Reset command? 0 = No; 1 = Yes. 12 SMI Source is NMI (Read to Clear) — Was SMI caused by NMI activity? 0 = No; 1 = Yes. 11 SMI Source is SIO (Read to Clear) — Was SMI caused by SIO? 0 = No; 1 = Yes. The next level (second level) of SMI status is reported in the SIO module. ZFx86 Data Book 1.0 Rev D Page 233 4 Table 4.33 F1BAR0+I/O Offset xxh: SMI Status Registers (cont.) Bit Description 10 SMI Source is EXT_SMI[7:0] (Read to Clear in Rev A and Read Only, Read does not Clear in Rev B) — Was SMI caused by a negative-edge event on EXT_SMI[7:0]? 0 = No; 1 = Yes. The next level (second level) of SMI status is at F1BAR0+I/O Offset 24h[23:8]. 9 SMI Source is General Timers/Traps (Read Only, Read does not Clear) — Was SMI caused by the expiration of one of the General Purpose Timers or one of the User Defined Traps? 0 = No; 1 = Yes. The next level (second level) of SMI status is at F1BAR0+I/O Offset 04h/06h. 8 SMI Source is Software Generated (Read to Clear) — Was SMI caused by software? 0 = No; 1 = Yes. 7 SMI on an A20M# Toggle (Read to Clear) — Was SMI caused by an access to either Port 92h or the keyboard command which initiates an A20M# SMI? 0 = No; 1 = Yes. This method of controlling the internal A20M# in the processor is used instead of a pin. To enable SMI generation set F0 Index 53h[0] = 1. 6:1 0 Reserved SMI Source is Power Management Event (Read Only, Read does not Clear) — Was SMI caused by one of the power management resources (except for the GP Timers, UDEF, and PCI/ISA Function traps are reported in bit 9): 0 = No; 1 = Yes. The next level (second level) of SMI status is at F0 Index 84h/F4h-87h/F7h. Note: Reading this register clears all the SMI status bits except for the "read only" bits because they have a second level of status reporting. Clearing the second level status bits also clears the top level with the exception of GPIOs. GPIO SMIs have a third level of SMI status reporting at F0BAR0+I/O Offset 0Ch/1Ch. Clearing the third level GPIO status bits also clears the second and top levels. A read-only “Mirror” version of this register exists at F1BAR0+I/O Offset 00h. If the value of the register must be read without clearing the SMI source (and consequently deasserting SMI), F1BAR0+I/O Offset 00h may be read instead. Offset 04h-05h 15:6 5 Second Level General Traps & Timers PME/SMI Status Mirror Register (RO, See Note) Reset Value = 0000h Reserved PCI/ISA Function Trap (Read Only) — Was SMI caused by a trapped PCI/ISA configuration cycle? 0 = No; 1 = Yes. To enable SMI generation for: Trapped access to ISA Legacy I/O register space set F0 Index 41h[0] = 1. Trapped access to F1 register space set F0 Index 41h[1] = 1. Trapped access to F2 register space set F0 Index 41h[2] = 1. Trapped access to F3 register space set F0 Index 41h[3] = 1. 4 SMI Source is Trapped Access to User Defined Device 3 (Read Only) — Was SMI caused by a trapped I/O or memory access to the User Defined Device 3 (F0 Index C8h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[6] = 1. 3 SMI Source is Trapped Access to User Defined Device 2 (Read Only) — Was SMI caused by a trapped I/O or memory access to the User Defined Device 2 (F0 Index C4h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[5] = 1. 2 SMI Source is Trapped Access to User Defined Device 1 (Read Only) — Was SMI caused by a trapped I/O or memory access to the User Defined Device 1 (F0 Index C0h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[4] = 1. 1 SMI Source is Expired General Purpose Timer 2 (Read Only) — Was SMI caused by the expiration of General Purpose Timer 2 (F0 Index 8Ah)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[1] = 1. 0 SMI Source is Expired General Purpose Timer 1 (Read Only) — Was SMI caused by the expiration of General Purpose Timer 1 (F0 Index 88h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[0] = 1. Note: This is the second level of status reporting. The top level status is reported at F1BAR0+I/O Offset 00h/02h[9]. Reading this register does not clear the SMI. See F1BAR0+I/O Offset 06h. ZFx86 Data Book 1.0 Rev D Page 234 4 Table 4.33 F1BAR0+I/O Offset xxh: SMI Status Registers (cont.) Bit Description Offset 06h-07h 15:6 Second Level General Traps & Timers PME/SMI Status Register (RC, see Note) Reset Value = 0000h Reserved 5 PCI/ISA Function Trap (Read to Clear) — Was SMI caused by a trapped PCI/ISA configuration cycle? 0 = No; 1 = Yes. Trapped Access to ISA Legacy I/O register space; to enable SMI generation set F0 Index 41h[0] = 1. Trapped Access to F1 register space; to enable SMI generation set F0 Index 41h[1] = 1. Trapped Access to F2 register space; to enable SMI generation set F0 Index 41h[2] = 1. Trapped Access to F3 register space; to enable SMI generation set F0 Index 41h[3] = 1. 4 SMI Source is Trapped Access to User Defined Device 3 (Read to Clear) — Was SMI caused by a trapped I/O or memory access to the User Defined Device 3 (F0 Index C8h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[6] = 1. 3 SMI Source is Trapped Access to User Defined Device 2 (Read to Clear) — Was SMI caused by a trapped I/O or memory access to the User Defined Device 2 (F0 Index C4h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[5] = 1. 2 SMI Source is Trapped Access to User Defined Device 1 (Read to Clear) — Was SMI caused by a trapped I/O or memory access to the User Defined Device 1 (F0 Index C0h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 82h[4] = 1. 1 SMI Source is Expired General Purpose Timer 2 (Read to Clear) — Was SMI caused by the expiration of General Purpose Timer 2 (F0 Index 8Ah)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[1] = 1. 0 SMI Source is Expired General Purpose Timer 1 (Read to Clear) — Was SMI caused by the expiration of General Purpose Timer 1 (F0 Index 88h)? 0 = No; 1 = Yes. To enable SMI generation set F0 Index 83h[0] = 1. Note: This is the second level of status reporting. The top level status is reported in F1BAR0+I/O Offset 00h/02h[9]. Reading this register clears the status at both the second and top levels. A read-only “Mirror” version of this register exists at F1BAR0+I/O Offset 04h. If the value of the register must be read without clearing the SMI source (and consequently deasserting SMI), F1BAR0+I/O Offset 04h may be read instead. Offset 08h-09h 15:0 SMI Speedup Disable Register (Read to Enable) Reset Value = 0000h SMI Speedup Disable — If bit 1 in the Suspend Configuration Register is set (F0 Index 96h[1] = 1), a read of this register invokes the SMI handler to re-enable Suspend Modulation. The data read from this register can be ignored. If the Suspend Modulation feature is disabled, reading this I/O location has no effect. Offset 0Fh-1Bh Reserved Offset 1Ch-1Fh Reserved Offset 20h-21h Reserved Offset 22h-23h Reserved Offset 24h-27h Reserved Offset 28h-4Fh Not Used Offset 50h-FFh The I/O mapped registers located here (F1BAR0+I/O Offset 50h-FFh) can also be accessed at F0 Index 50h-FFh. The preferred method is to program these register through the F0 register space. ZFx86 Data Book 1.0 Rev D Page 235 4 4.4.3.5. IDE Controller Registers - Function 2 The register space designated as Function 2 (F2) is used to configure Channels 0 and 1 and the PCI portion of support hardware for the IDE controllers. The bit formats for the PCI Header/Channels 0 and 1 Registers are given in Table 4.34. Located in the PCI Header Registers of F2 is a Base Address Register (F2BAR4) used for pointing to the register space designated for support of the IDE controllers, described later in this section. Table 4.34 F2 Index xxh: PCI Header/Channels 0 & 1 Registers for IDE Controller Config Bit Description Index 00h-01h Vendor Identification Register (RO) Reset Value = 1078h Index 02h-03h Device Identification Register (RO) Reset Value = 0402h Index 04h-05h PCI Command Register (R/W) Reset Value = 0000h 15:3 2 Reserved Bus Master — Allow the South Bridge module bus mastering capabilities: 0 = Disable; 1 = Enable (Default). This bit must be set to 1. 1 0 Reserved I/O Space — Allow South Bridge module to respond to I/O cycles from the PCI bus: 0 = Disable; 1 = Enable. This bit must be enabled to access I/O offsets through F2BAR4 (see F2 Index 20h). Index 06h-07h Index 08h Index 09h-0Bh PCI Status Register (RO) Device Revision ID Register (RO) PCI Class Code Register (RO) Reset Value = 0280h Reset Value = 01h Reset Value = 010180h Index 0Ch PCI Cache Line Size Register (RO) Reset Value = 00h Index 0Dh PCI Latency Timer Register (RO) Reset Value = 00h Index 0Eh PCI Header Type (RO) Reset Value = 00h Index 0Fh PCI BIST Register (RO) Reset Value = 00h Index 10h-13h Base Address Register 0 - F2BAR0 (RO) Reset Value = 00000000h Reserved — Reserved for possible future use by the South Bridge module. Index 14h-17h Base Address Register 1 - F2BAR1 (RO) Reset Value = 00000000h Reserved — Reserved for possible future use by the South Bridge module. Index 18h-1Bh Base Address Register 2 - F2BAR2 (RO) Reset Value = 00000000h Reserved — Reserved for possible future use by the South Bridge module. ZFx86 Data Book 1.0 Rev D Page 236 4 Table 4.34 F2 Index xxh: PCI Header/Channels 0 & 1 Registers for IDE Controller Config Bit Description Index 1Ch-1Fh Base Address Register 3 - F2BAR3 (RO) Reset Value = 00000000h Reserved — Reserved for possible future use by the South Bridge module. Index 20h-23h Base Address Register 4 - F2BAR4 (R/W) Reset Value = 00000001h Base Address 0 Register — This register allows access to I/O mapped Bus Mastering IDE registers. Bits [3:0] are read only (0001), indicating a 16-byte I/O address range. Refer to Table 4.35 for the IDE controller registers bit formats and reset values. 31:4 Bus Mastering IDE Base Address 3:0 Address Range (Read Only) Index 24h-2Bh Reserved Index 2Ch-2Dh Subsystem Vendor ID (RO) Reset Value = 1078h Index 2Eh-2Fh Subsystem ID (RO) Reset Value = 0402h Index 30h-3Fh Reserved Index 40h-43h Channel 0 Drive 0 PIO Register (R/W) Reset Value = 00009172h If Index 44h[31] = 0, Format 0 — Selects slowest PIOMODE per channel for commands. Format 0 settings for: PIO Mode 0 = 00009172h PIO Mode 1 = 00012171h PIO Mode 2 = 00020080h PIO Mode 3 = 00032010h PIO Mode 4 = 00040010h 31:20 Reserved 19:16 PIOMODE — PIO mode 15:12 t2I — Recovery time (value + 1 cycle) 11:8 t3 — IDE_IOW# data setup time (value + 1 cycle) 7:4 t2W — IDE_IOW# width minus t3 (value + 1 cycle) 3:0 t1 — Address Setup Time (value + 1 cycle) If Index 44h[31] = 1, Format 1 — Allows independent control of command and data. Format 1 settings for: PIO Mode 0 = 9172D132h PIO Mode 1 = 21717121h PIO Mode 2 = 00803020h PIO Mode 3 = 20102010h PIO Mode 4 = 00100010h 31:28 t2IC — Command cycle recovery time (value + 1 cycle) 27:24 t3C — Command cycle IDE_IOW# data setup (value + 1 cycle) 23:20 t2WC — Command cycle IDE_IOW# pulse width minus t3 (value + 1 cycle) 19:16 t1C — Command cycle address setup time (value + 1 cycle) 15:12 t2ID — Data cycle recovery time (value + 1 cycle) 11:8 t3D — Data cycle IDE_IOW# data setup (value + 1 cycle) 7:4 t2WD — Data cycle IDE_IOW# pulse width minus t3 (value + 1 cycle) 3:0 t1D — Data cycle address Setup Time (value + 1 cycle) ZFx86 Data Book 1.0 Rev D Page 237 4 Table 4.34 F2 Index xxh: PCI Header/Channels 0 & 1 Registers for IDE Controller Config Bit Description Index 44h-47h Channel 0 Drive 0 DMA Control Register (R/W) Reset Value = 00077771h If bit 20 = 0, Multiword DMA Settings for: Multiword DMA Mode 0 = 00077771h Multiword DMA Mode 1 = 00012121h Multiword DMA Mode 2 = 00002020h 31 30:21 20 PIO Mode Format — 0 = Format 0; 1 = Format 1 Reserved DMA Select — DMA operation: 0 = Multiword DMA, 1 = Ultra DMA. 19:16 tKR — IDE_IOR# recovery time (4-bit) (value + 1 cycle) 15:12 tDR — IDE_IOR# pulse width (value + 1 cycle) 11:8 tKW — IDE_IOW# recovery time (4-bit) (value + 1 cycle) 7:4 tDW — IDE_IOW# pulse width (value + 1 cycle) 3:0 tM — IDE_CS0#/CS1# to IDE_IOR#/IOW# setup; IDE_CS0#/CS1# setup to IDE_DACK0#/DACK1# If bit 20 = 1, Ultra DMA Settings for: Ultra DMA Mode 0 = 00921250h Ultra DMA Mode 1 = 00911140h Ultra DMA Mode 2 = 00911030h 31 30:21 20 PIO Mode Format — 0 = Format 0; 1 = Format 1 Reserved DMA Select — DMA operation: 0 = Multiword DMA, 1 = Ultra DMA. 19:16 tCRC — CRC setup UDMA in IDE_DACK# (value + 1 cycle) (for host terminate CRC setup = tMLI + tSS) 15:12 tSS — UDMA out (value + 1 cycle) 11:8 tCYC — Data setup and cycle time UDMA out (value + 2 cycles) 7:4 tRP — Ready to pause time (value + 1 cycle). Note: tRFS + 1 tRP on next clock. 3:0 tACK — IDE_CS0#/CS1# setup to IDE_DACK0#/DACK1# (value + 1 cycle) Index 48h-4Bh Channel 0 Drive 1 PIO Register (R/W) Reset Value = 00009172h Channel 0 Drive 1 Programmed I/O Control Register — Refer to F2 Index 40h for bit descriptions. Index 4Ch-4Fh Channel 0 Drive 1 DMA Control Register (R/W) Reset Value = 00077771h Channel 0 Drive 1 MDMA/UDMA Control Register — See F2 Index 44h for bit descriptions. Note: Once the PIO Mode Format is selected in F2 Index 44h[31], bit 31 of this register is defined as reserved, read only. Index 50h-53h Channel 1 Drive 0 PIO Register (R/W) Reset Value = 00009172h Channel 1 Drive 0 Programmed I/O Control Register — Refer to F2 Index 40h for bit descriptions. Index 54h-57h Channel 1 Drive 0 DMA Control Register (R/W) Reset Value = 00077771h Channel 1 Drive 0 MDMA/UDMA Control Register — See F2 Index 44h for bit descriptions. Note: Once the PIO Mode Format is selected in F2 Index 44h[31], bit 31 of this register is defined as reserved, read only. Index 58h-5Bh Channel 1 Drive 1 PIO Register (R/W) Reset Value = 00009172h Channel 1 Drive 1 Programmed I/O Control Register — Refer to F2 Index 40h for bit descriptions. ZFx86 Data Book 1.0 Rev D Page 238 4 Table 4.34 F2 Index xxh: PCI Header/Channels 0 & 1 Registers for IDE Controller Config Bit Description Index 5Ch-5Fh Channel 1 Drive 1 DMA Control Register (R/W) Reset Value = 00077771h Channel 1 Drive 1 MDMA/UDMA Control Register — See F2 Index 44h for bit descriptions. Note: Once the PIO Mode Format is selected in F2 Index 44h[31], bit 31 of this register is defined as reserved, read only. Index 60h-FFh Reserved 4.4.3.6. IDE Controller Support Registers F2 Index 20h, Base Address Register 4 (F2BAR4), points to the base address of where the registers for IDE controller configuration are located. Table 4.35 gives the bit formats of the I/O mapped IDE Controller Configuration Registers accessed through F2BAR4. Note: For proper operation the register must be read before the Bus Master Control at F2BAR4+0h is cleared, else the status may be lost. Table 4.35 F2BAR4+I/O Offset xxh: IDE Controller Configuration Registers Bit Description Offset 00h 7:4 3 IDE Bus Master 0 Command Register — Primary (R/W) Reset Value = 00h Reserved — Set to 0. Must return 0 on reads. Read or Write Control — Sets the direction of bus master transfers: 0 = PCI reads performed; 1 = PCI writes performed. This bit should not be changed when the bus master is active. 2:1 0 Reserved— Set to 0. Must return 0 on reads. Bus Master Control — Controls the state of the bus master: 0 = Disable master; 1 = Enable master Hault bus master operationsn by setting bit 0 to 0. Once an operation halts, it can not be resumed. If bit 0 is set to 0 while a bus master operation is active, the command aborts and the data transferred from the drive is discarded. This bit should be reset after completion of data transfer. Offset 01h Reserved Offset 02h IDE Bus Master 0 Status Register — Primary (R/W) Reset Value = 00h 7 Simplex Mode (Read Only) — Can both the primary and secondary channel operate independently? 0 = Yes; 1 = No (simplex mode) 6 Drive 1 DMA Capable — Allow Drive 1 to be capable of DMA transfers: 0 = Disable; 1 = Enable. 5 4:3 2 Drive 0 DMA Capable — Allow Drive 0 to be capable of DMA transfers: 0 = Disable; 1 = Enable. Reserved — Set to 0. Must return 0 on reads. Bus Master Interrupt — Has the bus master detected an interrupt? 0 = No; 1 = Yes. Write 1 to clear. 1 Bus Master Error — Has the bus master detected an error during data transfer? 0 = No; 1 = Yes. Write 1 to clear. 0 Bus Master Active — Is the bus master active? 0 = No; 1 = Yes. Offset 03h ZFx86 Data Book 1.0 Rev D Reserved Page 239 4 Table 4.35 F2BAR4+I/O Offset xxh: IDE Controller Configuration Registers Bit Description Offset 04h-07h 31:2 IDE Bus Master 0 PRD Table Address — Primary (R/W) Reset Value = 00000000h Pointer to the Physical Region Descriptor Table — This register is a PRD table pointer for IDE Bus Master 0. When written, this register points to the first entry in a PRD table. Once IDE Bus Master 0 is enabled (Command Register bit 0 = 1], it loads the pointer and updates this register to the next PRD by adding 08h. When read, this register points to the next PRD. Note: Entries in the PRD must be 32 byte aligned. 1:0 Reserved — Set to 0. Offset 08h 7:4 3 IDE Bus Master 1 Command Register — Secondary (R/W) Reset Value = 00h Reserved — Set to 0. Must return 0 on reads. Read or Write Control — Sets the direction of bus master transfers: 0 = PCI reads performed; 1 = PCI writes performed. This bit should not be changed when the bus master is active. 2:1 0 Reserved — Set to 0. Must return 0 on reads. Bus Master Control — Controls the state of the bus master: 0 = Disable master; 1 = Enable master Hault bus master operations by setting bit 0 to 0. Once an operation halts, it can not be resumed. If bit 0 is set to 0 while a bus master operation is active, the command aborts and the data transferred from the drive is discarded. This bit should be reset after completion of data transfer. Offset 09h Reserved Offset 0Ah IDE Bus Master 1 Status Register — Secondary (R/W) Reset Value = 00h 7 Simplex Mode — Can both the primary and secondary channel operate independently? 0 = Yes; 1 = No (simplex mode). 6 Drive 1 DMA Capable — Allow Drive 1 to be capable of DMA transfers: 0 = Disable; 1 = Enable. 5 4:3 2 Drive 0 DMA Capable — Allow Drive 0 to be capable of DMA transfers: 0 = Disable; 1 = Enable. Reserved — Set to 0. Must return 0 on reads. Bus Master Interrupt — Has the bus master detected an interrupt? 0 = No; 1 = Yes. Write 1 to clear. 1 Bus Master Error — Has the bus master detected an error during data transfer? 0 = No; 1 = Yes. Write 1 to clear. 0 Bus Master Active — Is the bus master active? 0 = No; 1 = Yes. Offset 0Bh Reserved Offset 0Ch-0Fh 31:2 IDE Bus Master 1 PRD Table Address — Secondary (R/W) Reset Value = 00000000h Pointer to the Physical Region Descriptor Table — This register is a PRD table pointer for IDE Bus Master 1. When written, this register points to the first entry in a PRD table. Once IDE Bus Master 1 is enabled (Command Register bit 0 = 1], it loads the pointer and updates this register to the next PRD by adding 08h. When read, this register points to the next PRD. Note: Entries in the PRD must be 32 byte aligned. 1:0 Reserved — Set to 0. ZFx86 Data Book 1.0 Rev D Page 240 4 4.4.3.7. XBus Expansion - Function 3 The register space designated as Function 3 (F3) is used to configure the PCI portion of support hardware for accessing the XBus Expansion support registers. The bit formats for the PCI Header Registers are given in Table 4.36. Located in the PCI Header Registers of F3 are five Base Address Registers (F3BARx) used for pointing to the register spaces designated for XBus Expansion, described later in this section. Table 4.36 F3 Index xxh: PCI Header Registers for XBus Expansion Bit Description Index 00h-01h Vendor Identification Register (RO) Reset Value = 1078h Index 02h-03h Device Identification Register (RO) Reset Value = 0403h Index 04h-05h PCI Command Register (R/W) Reset Value = 0000h 15:2 1 Reserved (Read Only) Memory Space — Allow South Bridge module to respond to memory cycles from the PCI bus: 0 = Disable; 1 = Enable. If any of F3BAR1, F3BAR2, F3BAR3, F3BAR4, or F3BAR5 (see F3 Index 10h, 14h, 18h, 1Ch, 20h, 24h) are defined as allowing access to memory mapped registers, this bit must be set to 1. BAR configuration is programmed through the corresponding mask register (see F3 Index 40h, 44h, 48h, 4Ch, 50h, and 54h). 0 I/O Space — Allow South Bridge module to respond to I/O cycles from the PCI bus: 0 = Disable; 1 = Enable. This bit must be enabled to access I/O offsets through F3BAR0 (see F3 Index 10h). If any of F3BAR1, F3BAR2, F3BAR3, F3BAR4, or F3BAR5 (see F3 Index 10h, 14h, 18h, 1Ch, 20h, 24h) are defined as allowing access to I/O mapped registers, this bit must be set to 1. BAR configuration is programmed through the corresponding mask register (see F3 Index 40h, 44h, 48h, 4Ch, 50h, and 54h). Index 06h-07h PCI Status Register (RO) Index 08h Device Revision ID Register (RO) Index 09h-0Bh PCI Class Code Register (RO) Reset Value = 0280h Reset Value = 00h Reset Value = 000000h Index 0Ch PCI Cache Line Size Register (RO) Reset Value = 00h Index 0Dh PCI Latency Timer Register (RO) Reset Value = 00h Index 0Eh PCI Header Type (RO) Reset Value = 00h Index 0Fh PCI BIST Register (RO) Reset Value = 00h Index 10h-13h Base Address Register 0 - F3BAR0 (R/W) Reset Value = 00000000h XBus Expansion Address Space — This register allows PCI access to I/O mapped XBus Expansion registers. Bits [5:0] must be set to 000001, indicating a 64-byte aligned I/O address space. Refer to Table 4.36 for the XBus Expansion configuration registers bit formats and reset values. Note: The size and type of accessed offsets can be re-programmed through F3BAR0 Mask Register (F3 Index 40h). 31:6 XBus Expansion Base Address 5:0 Address Range — These bits must be set to 000001 for this register operate correctly. ZFx86 Data Book 1.0 Rev D Page 241 4 Table 4.36 F3 Index xxh: PCI Header Registers for XBus Expansion Bit Description Index 14h-17h Base Address Register 1 - F3BAR1 (R/W) Reset Value = 00000000h Reserved— Reserved for possible future use by the South Bridge module. Configuration of this register is programmed through the F3BAR1 Mask Register (F3 Index 44h). Index 18h-1Bh Base Address Register 2 - F3BAR2 (R/W) Reset Value = 00000000h Reserved— Reserved for possible future use by the South Bridge module. Configuration of this register is programmed through the F3BAR2 Mask Register (F3 Index 48h). Index 1Ch-1Fh Base Address Register 3 - F3BAR3 (R/W) Reset Value = 00000000h Reserved -- Reserved for possible future use by the South Bridge module. Configuration of this register is programmed through the F3BAR3 Mask Register (F3 Index 4Ch). Index 20h-23h Base Address Register 4 - F3BAR4 (R/W) Reset Value = 00000000h Reserved — Reserved for possible future use by the South Bridge module. Configuration of this register is programmed through the F3BAR4 Mask Register (F3 Index 50h). Index 24h-27h Base Address Register 5 - F3BAR5 (R/W) Reset Value = 00000000h Reserved — Reserved for possible future use by the South Bridge module. Configuration of this register is programmed through the F3BAR5 Mask Register (F3 Index 54h). Index 28h-2Bh Reserved Index 2Ch-2Dh Subsystem Vendor ID (RO) Reset Value = 1078h Index 2Eh-2Fh Subsystem ID (RO) Reset Value = 0405h Index 30h-3Fh Reserved Index 40h-43h F3BAR0 Mask Address Register (R/W) Reset Value = 00000000h To use F3BAR0, the mask register should be programmed first. The mask register defines the size of F3BAR0 and whether the accessed offset registers are memory or I/O mapped. Note that whenever this mask register is written to, F3BAR0 must also be rewritten even if the value of F3BAR0 does not change. Memory Base Address Register (Bit 0 == 0) 31:4 3 2:1 0 Address Mask — Use to determine the size of the BAR. Every bit that is a 1 is programmable in the BAR. Every bit that is a 0 will be fixed 0 in the BAR. Since the address mask goes down to bit 4, the smallest memory region is 16 bytes, however, the PCI Specification suggests not using less than 4 KB address range. Prefetchable Type 00 = Located anywhere in 32-bit address space 01 = Located below 1 MB 10 = Located anywhere in 64-bit address spaced 11 = Reserved Must = 0 for memory ZFx86 Data Book 1.0 Rev D Page 242 4 Table 4.36 F3 Index xxh: PCI Header Registers for XBus Expansion Bit Description I/O Base Address Register (Bit 0 == 1) 31:2 Address Mask — Use to determine in the size of the BAR. Every bit that is a 1 is programmable in the BAR. Every bit that is a 0 will be fixed 0 in the BAR. Since the address mask goes down to bit 2, the smallest I/O region is 4 bytes, however, the PCI Specification suggests not using less than 4 KB address range. 1 Reserved — Must be 0. 0 Must = 1 for I/O Index 44h-47h F3BAR1 Mask Address Register (R/W) Reset Value = 00000000h To use F3BAR1, the mask register should be programmed first. The mask register defines the size of F3BAR1 and whether the accessed offset registers are memory or I/O mapped. Note that whenever this mask register is written to, F3BAR1 must also be rewritten even if the value of F3BAR1 does not change. See F3 Index 40h (F3BAR0 Mask Address Register) for bit descriptions. Index 48h-4Bh F3BAR2 Mask Address Register (R/W) Reset Value = 00000000h To use F3BAR2, the mask register should be programmed first. The mask register defines the size of F3BAR2 and whether the accessed offset registers are memory or I/O mapped. Note that whenever this mask register is written to, F3BAR2 must also be rewritten even if the value of F3BAR2 does not change. See F3 Index 40h (F3BAR0 Mask Address Register) for bit descriptions. Index 4Ch-4Fh F3BAR3 Mask Address Register (R/W) Reset Value = 00000000h To use F3BAR3, the mask register should be programmed first. The mask register defines the size of F3BAR3 and whether the accessed offset registers are memory or I/O mapped. Note that whenever this mask register is written to, F3BAR3 must also be rewritten even if the value of F3BAR3 does not change. See F3 Index 40h (F3BAR0 Mask Address Register) for bit descriptions. Index 50h-53h F3BAR4 Mask Address Register (R/W) Reset Value = 00000000h To use F3BAR4, the mask register should be programmed first. The mask register defines the size of F3BAR4 and whether the accessed offset registers are memory or I/O mapped. Note that whenever this mask register is written to, F3BAR4 must also be rewritten even if the value of F3BAR4 does not change. See F3 Index 40h (F3BAR0 Mask Address Register) for bit descriptions. Index 54h-57h F3BAR5 Mask Address Register (R/W) Reset Value = 00000000h To use F3BAR5, the mask register should be programmed first. The mask register defines the size of F3BAR5 and whether the accessed offset registers are memory or I/O mapped. Note that whenever this mask register is written to, F3BAR5 must also be rewritten even if the value of F3BAR5 does not change. See F3 Index 40h (F3BAR0 Mask Address Register) on page 118 for bit descriptions. Index 58h 7:6 F3BARx Initialized Register (R/W) Reset Value = 00h Reserved — Set to 0. 5 F3BAR5 Initialized — This bit reflects if F3BAR5 (F3 Index 24h) has been initialized. At reset this bit is cleared (0). Writing F3BAR5 sets (1) this bit. If this bit programmed to 0, the decoding of F3BAR5 will be disabled until either this bit is programmed to 1 or F3BAR5 is written. 4 F3BAR4 Initialized — This bit reflects if F3BAR4 (F3 Index 20h) has been initialized. At reset this bit is cleared (0). Writing F3BAR4 sets (1) this bit. If this bit programmed to 0, the decoding of F3BAR4 will be disabled until either this bit is programmed to 1 or F3BAR4 is written. 3 F3BAR3 Initialized — This bit reflects if F3BAR3 (F3 Index 1Ch) has been initialized. At reset this bit is cleared (0). Writing F3BAR3 sets (1) this bit. If this bit is programmed to 0, the decoding of F3BAR3 will be disabled until either this bit is programmed to 1 or F3BAR3 is written. ZFx86 Data Book 1.0 Rev D Page 243 4 Table 4.36 F3 Index xxh: PCI Header Registers for XBus Expansion Bit Description 2 F3BAR2 Initialized — This bit reflects if F3BAR2 (F3 Index 18h) has been initialized. At reset this bit is cleared (0). Writing F3BAR2 sets (1) this bit. If this bit is programmed to 0, the decoding of F3BAR2 will be disabled until either this bit is programmed to 1 or F3BAR2 is written. 1 F3BAR1 Initialized — This bit reflects if F3BAR1 (F3 Index 14h) has been initialized. At reset this bit is cleared (0). Writing F3BAR1 sets (1) this bit. If this bit is programmed to 0, the decoding of F3BAR1 will be disabled until either this bit is programmed to 1 or F3BAR1 is written. 0 F3BAR0 Initialized — This bit reflects if F3BAR0 (F3 Index 10h) has been initialized. At reset this bit is cleared (0). Writing F3BAR0 sets (1) this bit. If this bit is programmed to 0, the decoding of F3BAR0 will be disabled until either this bit is programmed to 1 or F3BAR0 is written. Index 59h-FFh Reserved 4.4.3.8. XBus Expansion Support Registers F3 Index 10h, Base Address Register 0 (F3BAR0) set the base address that allows PCI access to additional I/O Control support registers. Table 4.37 shows the support registers accessed through F3BAR0. Table 4.37 F3BAR0+I/O Offset xxh: XBus Expansion Registers Bit Description Offset 00h-03h 31:28 27 26:25 I/O Control Register 1 (R/W) Reset Value = 010C0007h Reserved Enable Integrated SIO Infrared (IO_ENABLE_SIO_IR) — 0 = Disable; 1 = Enable. Integrated SIO Input Configuration (IO_SIOCFG_IN) — These two bits can be used to disable the integrated SIO totally or limit/control the base address: 00 = Integrated SIO disable 01 = Integrated SIO configuration access disable 10 = Integrated SIO base address 02Eh/02Fh enable 11 = Integrated SIO base address 015Ch/015Dh enable 24 Enable Integrated SIO ISA Bus Control (IO_ENABLE_SIO_DRIVING_ISA_BUS) — Allow the integrated SIO to drive the internal and external ISA bus: 0 = Disable; 1 = Enable (Default). 23 Reserved 22 IO_CLK32K_OE This bit is set to drive 32Khz clock out on to GPIO[0]. Reset to 0. 21 IO_RTC_32K This bit selects which 32K clock source is used. Resets to 0. 0 = use SIO generated 32Khz. Clock is driven by RTC. 1 = use internally generated 32Khz. Clock is derived by dividing the 48Mhz by 1484. Note: bootstrap[6] = 1 can also be used to select internally generated 32Khz clock. 20 USB Internal SMI (IO_USB_SMI_PWM_EN) — Route USB-generated SMI through the Top Level SMI Status Register at F1BAR0+I/O Offset 00h[14]: 0 = Disable; 1 = Enable. Bit 19 must be enabled to allow the USB to generate an SMI for status reporting. 19 USB SMI I/O Configuration (IO_USB_SMI_PIN_EN) — Route USB-generated SMI directly to the SMI# pin: 0 = Disable 1 = Enable, USB-generated SMI pulls SMI# pin active (low) If bits 19 and 20 are enabled, the SMI generated by the USB is reported through the Top Level SMI Status Register at F1BAR0+I/O Offset 00h[14]. If only bit 19 is enabled, the USB can generate an SMI but there is no status reporting. ZFx86 Data Book 1.0 Rev D Page 244 4 Table 4.37 F3BAR0+I/O Offset xxh: XBus Expansion Registers Bit Description 18 USB (IO_USB_PCI_EN) — USB ports: 0 = Disable; 1 = Enable. 17 External KBC -- Must be left at 0. 16 External RTC -- Must be left at 0. 15:0 Reserved Offset 04h-07h 31:8 I/O Control Register 2 (R/W) Reset Value = 00000000h Reserved 7 IO_CLK_14M_OE — Set to drive the internally generated 12Mhz clock out on GPIO[4]. Resets to 0. 6 Reserved 5 IO_ZT_EN Set to enable the ZF-Logic ROM interface. Resets to 0. Note: bootstrap[23] is also used to enable ZF-Logic ROM interface.a 4 IO_ZFL_EN Set to enable the ZF-Logic. Resets to 0. Note: bootstrap[22] is also used to enable the ZF-Logic.a 3 IO_FUNC_ON_SIO — Used in design verification only. Resets to 0. 2 IO_BUR_ON_SIO — Used in design verification only. Resets to 0. 1 IO_IDE_ON_GPIO — Drive IDE channel 2 onto gpio. Must also have gpio conditioned to correct direction corresponding to IDE pin functionality. See also Table 4.6 "IDE Interface Signals" on page 180. 0 = Do not drive IDE onto gpio. (default) 1 = Drive IDE into gpio. gpio[1] is dmackx, gpio must be configured as output. gpio[2] is diowx, gpio must be configured as output. gpio[3] is diorx, gpio must be configured as output. gpio[5] is dreq, gpio must be configured as input. gpio[6] is iordy, gpio must be configured as input. 0 IO_EXT_CLK_14M Select 14.3Mhz clock source. Select either internally or externally generated 14.3Mhz clock source. If internal source is selected the actual clock frequency is 12Mhz (48Mhz / 4). 0 = Select external 14.3Mhz input as source. (default) 1 = Select internally generated 14.3Mhz clock source. Note: bootstrap[5] = 1 can also be used to select internally generated 14.3Mhz clock.a Offset 08h-0Bh I/O Control Register 3 (R/W) Reset Value = 00009000h 31:16 Reserved 15:13 USB Voltage Adjustment Connection (IO_USB_XCVR_VADJ) — These bits connect to the voltage adjustment interface on the three USB transceivers. Default = 100. 12:8 USB Current Adjustment (IO_USB_XCVT_CADJ) — These bits connect to the current adjustment interface on the three USB transceivers. Default value = 10000. 7:0 Reserved. a. See Table 5.42 "Composite BootStrap Register Map" on page 438 ZFx86 Data Book 1.0 Rev D Page 245 4 4.4.4. USB Controller Registers - PCIUSB The registers designated as PCIUSB are 32bit registers decoded from the PCI address bits 7 through 2 and C/BE[3:0]#, when IDSEL is high, AD[10:8] select the appropriate function, and AD[1:0] are '00'. Bytes within a 32-bit address are selected with the valid byte enables. All registers can be accessed via 8-, 16-, or 32-bit cycles (that is, each byte is individually selected by the byte enables.) Regis- ters marked as reserved, and reserved bits within a register are not implemented and should return 0s when read. Writes have no effect for reserved registers. Table 4.38 gives the bit formats for the USB controller’s PCI header registers. For complete register/bit formats, refer to Revision 1.0 of the OpenHCI Specification. Table 4.38 PCIUSB: USB Controller Registers Bit Description Index 00h-01h Vendor Identification Register (RO) Reset Value = 0E11h Index 02h-03h Device Identification Register (RO) Reset Value = A0F8h Index 04h-05h Command Register (R/W) 15:10 Reset Value = 00h Reserved — Set to 0. 9 Fast Back-to-Back Enable (Read Only) — USB only acts as a master to a single device, so this functionality is not needed. It is always disabled (must always be set to 0). 8 SERR# — USB asserts SERR# when it detects an address parity error: 0 = Disable; 1 = Enable. 7 Wait Cycle Control — USB does not need to insert a wait state between the address and data on the AD lines. It is always disabled (bit is set to 0). 6 Parity Error — USB asserts PERR# when it is the agent receiving data, and it detects a data parity error: 0 = Disable; 1 = Enable. 5 VGA Palette Snoop Enable (Read Only) — USB does not support this function. It is always disabled (bit is set to 0). 4 Memory Write and Invalidate — Allow USB to run Memory Write and Invalidate commands: 0 = Disable; 1 = Enable. The Memory Write and Invalidate Command only occurs if the cacheline size is set to 32 bytes and the memory write is exactly one cache line. This bit should be left = 0. 3 Special Cycles — USB does not run special cycles on PCI. It is always disabled (bit is set to 0). 2 PCI Master Enable — Allow USB to run PCI master cycles: 0 = Disable; 1 = Enable. 1 Memory Space — Allow USB to respond as a target to memory cycles: 0 = Disable; 1 = Enable. 0 I/O Space — Allow USB to respond as a target to I/O cycles: 0 = Disable; 1 = Enable. Index 06h-07h Status Register (R/W) Reset Value = 0280h 15 Detected Parity Error — This bit is set whenever the USB detects a parity error, even if the Parity Error (Response) Detection Enable Bit (Command Register, bit 6) is disabled. Write 1 to clear. 14 SERR# Status — This bit is set whenever the USB detects a PCI address error. Write 1 to clear. 13 Received Master Abort Status — This bit is set when the USB, acting as a PCI master, aborts a PCI bus memory cycle. Write 1 to clear. 12 Received Target Abort Status — This bit is set when a USB generated PCI cycle (USB is the PCI master) is aborted by a PCI target. Write 1 to clear. 11 10:9 Signaled Target Abort Status — This bit is set whenever the USB signals a target abort. Write 1 to clear. DEVSEL# Timing (Read Only) — These bits indicate the DEVSEL# timing when performing a positive decode. Since DEVSEL# is asserted to meet the medium timing, these bits are encoded as 01b. ZFx86 Data Book 1.0 Rev D Page 246 4 Table 4.38 PCIUSB: USB Controller Registers Bit Description 8 Data Parity Reported — Set to 1 if the Parity Error Response bit (Command Register bit 6) is set, and USB detects PERR# asserted while acting as PCI master (whether PERR# was driven by USB or not). 7 Fast Back-to-Back Capable — USB does support fast back-to-back transactions when the transactions are not to the same agent. This bit is always 1. 6:0 Reserved — Set to 0. Note: The PCI Specification defines this register to record status information for PCI related events. This is a read/write register. However, writes can only reset bits. A bit is reset whenever the register is written, and the data in the corresponding bit location is a 1. Index 08h Device Revision ID Register (RO) Index 09h-0Bh PCI Class Code Register (RO) Reset Value = 07h Reset Value = 0C0310h This register identifies the generic function of USB the specific register level programming interface. The Base Class is 0Ch (Serial Bus Controller). The Sub Class is 03h (Universal Serial Bus). The Programming Interface is 10h (OpenHCI). Index 0Ch Cache Line Size Register (R/W) Reset Value = 00h This register identifies the system cacheline size in units of 32-bit words. USB will only store the value of bit 3 in this register since the cacheline size of 32 bytes is the only value applicable to the design. Any value other than 08h written to this register will be read back as 00h. Index 0Dh Latency Timer Register (R/W) Reset Value = 00h This register identifies the value of the latency timer in PCI clocks for PCI bus master cycles. Index 0Eh Header Type Register (RO) Reset Value = 00h This register identifies the type of the predefined header in the configuration space. Since USB is a single function device and not a PCI-to-PCI bridge, this byte should be read as 00h. Index 0Fh BIST Register (RO) Reset Value = 00h This register identifies the control and status of Built In Self Test. USB does not implement BIST, so this register is read only. Index 10h-13h 31:12 11:4 3 2:1 0 Base Address Register (R/W) Reset Value = 00000000h Base Address — POST writes the value of the memory base address to this register. Always 0 — Indicates a 4 KB address range is requested. Always 0 — Indicates there is no support for prefetchable memory. Always 0 — Indicates that the base register is 32-bits wide and can be placed anywhere in 32-bit memory space. Always 0 — Indicates that the operational registers are mapped into memory space. Index 14h-2Bh Reserved Index 2Ch-2Dh Subsystem Vendor ID (R/W) Reset Value = 0E11h Index 2Eh-2Fh Subsystem ID (R/W) Reset Value = A0F8h Index 30h-3Bh Reserved Index 3Ch Interrupt Line Register (R/W) Reset Value = 00h This register identifies to which of the system interrupt controllers the devices interrupt pin is connected. The value of this register is used by device drivers and has no direct meaning to USB. ZFx86 Data Book 1.0 Rev D Page 247 4 Table 4.38 PCIUSB: USB Controller Registers Bit Description Index 3Dh Interrupt Pin Register (RO) Reset Value = 01h This register identifies which interrupt pin a device uses. Since USB uses INTA#, this value is set to 01h. Index 3Eh Min. Grant Register (RO) Reset Value = 00h This register specifies the desired settings for how long of a burst USB needs assuming a clock rate of 33 MHz. The value specifies a period of time in units of 1/4 microsecond. Index 3Fh Max. Latency Register (RO) Reset Value = 50h This register specifies the desired settings for how often USB needs access to the PCI bus assuming a clock rate of 33 MHz. The value specifies a period of time in units of 1/4 microsecond. Index 40h-43h ASIC Test Mode Enable Register (R/W) Reset Value = 000F0000h Used for internal debug and test purposes only. Index 44h 7:1 0 ASIC Operational Mode Enable Register (R/W) Reset Value = 00h Write Only — Read as 0s. Data Buffer Region 16 — When set the size of the region for the data buffer is 16 bytes. Otherwise, the size is 32 bytes. Index 45h-FFh Reserved 4.4.5. ISA Legacy Register Space The ISA Legacy registers reside in the ISA I/O address space in the address range from 000h to FFFh and are accessed through typical input/output instructions (that is, CPU direct R/W) with the designated I/O port address and 8-bit data. The bit formats for the ISA Legacy I/O Registers plus two chipset-specific configuration registers used for interrupt mapping in the South Bridge module core logic are given in this section. The ISA Legacy registers are separated into the following categories: • DMA Channel Control Registers, see Table 4.39 • DMA Page Registers, see Table 4.40 • Programmable Interval Timer Registers, see Table 4.41 • Programmable Interrupt Controller Registers, see Table 4.42 • Keyboard Controller Registers, see Table 4.43 • Real Time Clock Registers, see Table 4.44 • Miscellaneous Registers, see Table 4.45 (includes 4D0h and 4D1h Interrupt Edge/Level Select Registers) Table 4.39 DMA Channel Control Registers Bit Description I/O Port 000h (R/W) DMA Channel 0 Address Register Written as two successive bytes, byte 0, 1. I/O Port 001h (R/W) DMA Channel 0 Transfer Count Register Written as two successive bytes, byte 0, 1. ZFx86 Data Book 1.0 Rev D Page 248 4 Table 4.39 DMA Channel Control Registers (cont.) Bit Description I/O Port 002h (R/W) DMA Channel 1 Address Register Written as two successive bytes, byte 0, 1. I/O Port 003h (R/W) DMA Channel 1 Transfer Count Register Written as two successive bytes, byte 0, 1. I/O Port 004h (R/W) DMA Channel 2 Address Register Written as two successive bytes, byte 0, 1. I/O Port 005h (R/W) DMA Channel 2 Transfer Count Register Written as two successive bytes, byte 0, 1. I/O Port 006h (R/W) DMA Channel 3 Address Register Written as two successive bytes, byte 0, 1. I/O Port 007h (R/W) DMA Channel 3 Transfer Count Register Written as two successive bytes, byte 0, 1. I/O Port 008h (R/W) Read DMA Status Register, Channels 3:0 7 Channel 3 Request — Request pending? 0 = No; 1 = Yes. 6 Channel 2 Request — Request pending? 0 = No; 1 = Yes. 5 Channel 1 Request — Request pending? 0 = No; 1 = Yes. 4 Channel 0 Request — Request pending? 0 = No; 1 = Yes. 3 Channel 3 Terminal Count — TC reached? 0 = No; 1 = Yes. 2 Channel 2 Terminal Count — TC reached? 0 = No; 1 = Yes. 1 Channel 1 Terminal Count — TC reached? 0 = No; 1 = Yes. 0 Channel 0 Terminal Count — TC reached? 0 = No; 1 = Yes. Write DMA Command Register, Channels 3:0 7 DACK Sense — 0 = Active high; 1 = Active low. 6 DREQ Sense — 0 = Active high; 1 = Active low. 5 Write Selection — 0 = Late write; 1 = Extended write. 4 Priority Mode — 0 = Fixed; 1 = Rotating. 3 Timing Mode — 0 = Normal; 1 = Compressed. 2 Channels 3:0 — 0 = Disable; 1 = Enable. 1:0 Reserved — Set to 0. I/O Port 009h (W) 7:3 2 1:0 Reserved — Set to 0. Request Type — 0 = Reset; 1 = Set. Channel Number Request Select — 00 = Channel 0; 01 = Channel 1; 10 = Channel 2; 11 = Channel 3. I/O Port 00Ah (R/W) 7:3 2 Software DMA Request Register, Channels 3:0 DMA Channel Mask Register, Channels 3:0 Reserved — Set to 0. Channel Mask — 0 = Not masked; 1 = Masked ZFx86 Data Book 1.0 Rev D Page 249 4 Table 4.39 DMA Channel Control Registers (cont.) Bit Description 1:0 Channel Number Mask Select — 00 = Channel 0; 01 = Channel 1; 10 = Channel 2; 11 = Channel 3 I/O Port 00Bh (W) 7:6 DMA Channel Mode Register, Channels 3:0 Transfer Mode — 00 = Demand; 01 = Single; 10 = Block; 11 = Cascade. 5 Address Direction — 0 = Increment; 1 = Decrement. 4 Auto-initialize — 0 = Disable; 1 = Enable. 3:2 Transfer Type — 00 = Verify; 01 = Memory read; 10 = Memory write; 11 = Reserved. 1:0 Channel Number Mode Select — 00 = Channel 0; 01 = Channel 1; 10 = Channel 2; 11 = Channel 3. I/O Port 00Ch (W) DMA Clear Byte Pointer Command, Channels 3:0 I/O Port 00Dh (W) DMA Master Clear Command, Channels 3:0 I/O Port 00Eh (W) DMA Clear Mask Register Command, Channels 3:0 I/O Port 00Fh (W) DMA Write Mask Register Command, Channels 3:0 I/O Port 0C0h (R/W) DMA Channel 4 Address Register Not used. I/O Port 0C2h (R/W) DMA Channel 4 Transfer Count Register Not used. I/O Port 0C4h (R/W) DMA Channel 5 Address Register Memory address bytes 1 and 0. I/O Port 0C6h (R/W) DMA Channel 5 Transfer Count Register Transfer count bytes 1 and 0 I/O Port 0C8h (R/W) DMA Channel 6 Address Register Memory address bytes 1 and 0. I/O Port 0CAh (R/W) DMA Channel 6 Transfer Count Register Transfer count bytes 1 and 0. I/O Port 0CCh (R/W) DMA Channel 7 Address Register Memory address bytes 1 and 0. I/O Port 0CEh (R/W) DMA Channel 7 Transfer Count Register Transfer count bytes 1 and 0. ZFx86 Data Book 1.0 Rev D Page 250 4 Table 4.39 DMA Channel Control Registers (cont.) Bit Description I/O Port 0D0h (R/W) Read DMA Status Register, Channels 7:4 7 Channel 7 Request — Request pending? 0 = No; 1 = Yes. 6 Channel 6 Request — Request pending? 0 = No; 1 = Yes. 5 Channel 5 Request — Request pending? 0 = No; 1 = Yes. 4 Undefined 3 Channel 7 Terminal Count — TC reached? 0 = No; 1 = Yes. 2 Channel 6 Terminal Count — TC reached? 0 = No; 1 = Yes. 1 Channel 5 Terminal Count — TC reached? 0 = No; 1 = Yes. 0 Undefined Write DMA Command Register, Channels 7:4 7 DACK Sense — 0 = Active high; 1 = Active low. 6 DREQ Sense — 0 = Active high; 1 = Active low. 5 Write Selection — 0 = Late write; 1 = Extended write. 4 Priority Mode — 0 = Fixed; 1 = Rotating. 3 Timing Mode — 0 = Normal; 1 = Compressed. 2 Channels 7:4 — 0 = Disable; 1 = Enable. 1:0 Reserved — Set to 0. I/O Port 0D2h (W) 7:3 2 1:0 Reserved — Set to 0. Request Type — 0 = Reset; 1 = Set. Channel Number Request Select — 00 = Illegal; 01 = Channel 5; 10 = Channel 6; 11 = Channel 7. I/O Port 0D4h (R/W) 7:3 2 1:0 5 4 DMA Channel Mask Register, Channels 7:0 Reserved — Set to 0. Channel Mask — 0 = Not masked; 1 = Masked. Channel Number Mask Select — 00 = Channel 4; 01 = Channel 5; 10 = Channel 6; 11 = Channel 7. I/O Port 0D6h (W) 7:6 Software DMA Request Register, Channels 7:4 DMA Channel Mode Register, Channels 7:4 Transfer Mode — 00 = Demand; 01 = Single; 10 = Block; 11 = Cascade. Address Direction — 0 = Increment; 1 = Decrement. Auto-initialize — 0 = Disabled; 1 = Enable. 3:2 Transfer Type — 00 = Verify; 01 = Memory read; 10 = Memory write; 11 = Reserved. 1:0 Channel Number Mode Select — 00 = Channel 4; 01 = Channel 5; 10 = Channel 6; 11 = Channel 7. Channel 4 must be programmed in cascade mode. This mode is not the default. I/O Port 0D8h (W) DMA Clear Byte Pointer Command, Channels 7:4 I/O Port 0DAh (W) DMA Master Clear Command, Channels 7:4 I/O Port 0DCh (W) DMA Clear Mask Register Command, Channels 7:4 I/O Port 0DEh (W) DMA Write Mask Register Command, Channels 7:4 ZFx86 Data Book 1.0 Rev D Page 251 4 Table 4.40 DMA Page Registers Bit Description I/O Port 081h (R/W) DMA Channel 2 Low Page Register Address bits [23:16] (byte 2). I/O Port 082h (R/W) DMA Channel 3 Low Page Register Address bits [23:16] (byte 2). I/O Port 083h (R/W) DMA Channel 1 Low Page Register Address bits [23:16] (byte 2). I/O Port 087h (R/W) DMA Channel 0 Low Page Register Address bits [23:16] (byte 2). I/O Port 089h (R/W) DMA Channel 6 Low Page Register Address bits [23:16] (byte 2). I/O Port 08Ah (R/W) DMA Channel 7 Low Page Register Address bits [23:16] (byte 2). I/O Port 08Bh (R/W) DMA Channel 5 Low Page Register Address bits [23:16] (byte 2). I/O Port 08Fh (R/W) ISA Refresh Low Page Register Refresh address. I/O Port 481h (R/W) DMA Channel 2 High Page Register Address bits [31:24] (byte 3). Note: This register is reset to 00h on any access to Port 081h. I/O Port 482h (R/W) DMA Channel 3 High Page Register Address bits [31:24] (byte 3). Note: This register is reset to 00h on any access to Port 082h. I/O Port 483h (R/W) DMA Channel 1 High Page Register Address bits [31:24] (byte 3). Note: This register is reset to 00h on any access to Port 083h. I/O Port 487h (R/W) DMA Channel 0 High Page Register Address bits [31:24] (byte 3). Note: This register is reset to 00h on any access to Port 087h. I/O Port 489h (R/W) DMA Channel 6 High Page Register Address bits [31:24] (byte 3). Note: This register is reset to 00h on any access to Port 089h. ZFx86 Data Book 1.0 Rev D Page 252 4 Table 4.40 DMA Page Registers (cont.) Bit Description I/O Port 48Ah (R/W) DMA Channel 7 High Page Register Address bits [31:24] (byte 3). Note: This register is reset to 00h on any access to Port 08Ah. I/O Port 48Bh (R/W) DMA Channel 5 High Page Register Address bits [31:24] (byte 3). Note: This register is reset to 00h on any access to Port 08Bh. Table 4.41 Programmable Interval Timer Registers Bit Description I/O Port 040h Write 7:0 PIT Timer 0 Counter Counter Value Read 7 6 PIT Timer 0 Status Counter Output — State of counter output signal. Counter Loaded — Last count written is loaded? 0 = Yes; 1 = No. 5:4 Current Read/Write Mode — 00 = Counter latch command; 01 = R/W LSB only; 10 = R/W MSB only; 11 = R/W LSB, followed by MSB. 3:1 Current Counter Mode — 0-5. 0 BCD mode — 0 = Binary; 1 = BCD (binary coded decimal). I/O Port 041h Write 7:0 PIT Timer 1 Counter (Refresh) Counter Value Read PIT Timer 1 Status (Refresh) 7 Counter Output — State of counter output signal. 6 Counter Loaded — Last count written is loaded? 0 = Yes; 1 = No. 5:4 Current Read/Write Mode — 00 = Counter latch command; 01 = R/W LSB only; 10 = R/W MSB only; 11 = R/W LSB, followed by MSB. 3:1 Current Counter Mode — 0-5. 0 BCD mode — 0 = Binary; 1 = BCD (binary coded decimal). I/O Port 042h Write 7:0 PIT Timer 2 Counter (Speaker) Counter Value Read 7 6 PIT Timer 2 Status (Speaker) Counter Output — State of counter output signal. Counter Loaded — Last count written is loaded? 0 = Yes; 1 = No. 5:4 Current Read/Write Mode — 00 = Counter latch command; 01 = R/W LSB only; 10 = R/W MSB only; 11 = R/W LSB, followed by MSB. 3:1 Current Counter Mode — 0-5. ZFx86 Data Book 1.0 Rev D Page 253 4 Table 4.41 Programmable Interval Timer Registers (cont.) Bit 0 Description BCD mode — 0 = Binary; 1 = BCD (binary coded decimal) I/O Port 043h (R/W) PIT Mode Control Word Register 7:6 Counter Select — 00 = Counter 0; 01 = Counter 1; 10 = Counter 2; 11 = Read-back command (Note 1). 5:4 Current Read/Write Mode — 00 = Counter latch command (Note 2); 01 = R/W LSB only; 10 = R/W MSB only; 11 = R/W LSB, followed by MSB. 3:1 Current Counter Mode — 0-5. 0 BCD mode — 0 = Binary; 1 = BCD (binary coded decimal). Notes: 1. If bits [7:6] = 11: Register functions as Read Status Command and: Bit 5 = Latch Count Bit 4 = Latch Status Bit 3 = Select Counter 2 Bit 2 = Select Counter 1 Bit 1 = Select Counter 0 Bit 0 = Reserved 2. If bits [5:4] = 00: Register functions as Counter Latch Command and: Bits [7:6] = Selects Counter Bits [3:0] = Don’t care Table 4.42 Programmable Interrupt Controller Registers Bit Description I/O Port 020h / 0A0h (WO) Master / Slave PIC IWC1 7:5 Reserved — Set to 0. 4 Reserved — Set to 1. 3 Trigger Mode — 0 = Edge; 1 = Level. 2 Vector Address Interval — 0 = 8 byte intervals; 1 = 4 byte intervals. 1 Reserved — Set to 0 (cascade mode). 0 Reserved — Set to 1 (ICW4 must be programmed). I/O Port 021h / 0A1h (WO) Master / Slave PIC ICW2 (after ICW1 is written) 7:3 A[7:3] — Address lines 7:3 for base vector for interrupt controller. 2:0 Reserved — Set to 0. I/O Port 021h / 0A1h (WO) Master / Slave PIC ICW3 (after ICW2 is written) Master PIC ICW3 7:0 Cascade IRQ — Must be 04h. Slave PIC ICW3 7:0 Slave ID — Must be 02h. I/O Port 021h / 0A1h (WO) 7:5 4 3:2 1 Master / Slave PIC ICW4 (after ICW3 is written) Reserved — Set to 0. Special Fully Nested Mode — 0 = Disable; 1 = Enable. Reserved — Set to 0. Auto EOI — 0 = Normal EOI; 1 = Auto EOI. ZFx86 Data Book 1.0 Rev D Page 254 4 Table 4.42 Programmable Interrupt Controller Registers (cont.) Bit 0 Description Reserved — Set to 1 (8086/8088 mode). I/O Port 021h / 0A1h (R/W) Master / Slave PIC OCW1 (except immediately after ICW1 is written) 7 IRQ7 / IRQ15 Mask — 0 = Not Masked; 1 = Mask. 6 IRQ6 / IRQ14 Mask — 0 = Not Masked; 1 = Mask. 5 IRQ5 / IRQ13 Mask — 0 = Not Masked; 1 = Mask. 4 IRQ4 / IRQ12 Mask — 0 = Not Masked; 1 = Mask. 3 IRQ3 / IRQ11 Mask — 0 = Not Masked; 1 = Mask. 2 IRQ2 / IRQ10 Mask — 0 = Not Masked; 1 = Mask. 1 IRQ1 / IRQ9 Mask — 0 = Not Masked; 1 = Mask. 0 IRQ0 / IRQ8 Mask — 0 = Not Masked; 1 = Mask. I/O Port 020h / 0A0h (WO) 7:5 Master / Slave PIC OCW2 Rotate/EOI Codes 000 = Clear rotate in Auto EOI mode 001 = Non-specific EOI 010 = No operation 011 = Specific EOI (bits [2:0] must be valid) 4:3 Reserved — Set to 0. 2:0 IRQ number (000-111) I/O Port 020h / 0A0h (WO) 7 6:5 Master / Slave PIC OCW3 Reserved — Set to 0. Special Mask Mode 00 = No operation 01 = No operation 10 = Reset Special Mask Mode 11 = Set Special Mask Mode 4 Reserved — Set to 0. 3 Reserved — Set to 1. 2 Poll Command — 0 = Disable; 1 = Enable. 1:0 100 = Set rotate in Auto EOI mode 101 = Rotate on non-specific EOI command 110 = Set priority command (bits [2:0] must be valid) 111 = Rotate on specific EOI command Register Read Mode 00 = No operation 01 = No operation I/O Port 020h / 0A0h (RO) 10 = Read interrupt request register on next read of Port 20h 11 = Read interrupt service register on next read of Port 20h. Master / Slave PIC Interrupt Request and Service Registers for OCW3 Commands Interrupt Request Register 7 IRQ7 / IRQ15 Pending — 0 = Yes; 1 = No. 6 IRQ6 / IRQ14 Pending — 0 = Yes; 1 = No. 5 IRQ5 / IRQ13 Pending — 0 = Yes; 1 = No. 4 IRQ4 / IRQ12 Pending — 0 = Yes; 1 = No. 3 IRQ3 / IRQ11 Pending — 0 = Yes; 1 = No. 2 IRQ2 / IRQ10 Pending — 0 = Yes; 1 = No. 1 IRQ1 / IRQ9 Pending — 0 = Yes; 1 = No. 0 IRQ0 / IRQ8 Pending — 0 = Yes; 1 = No. ZFx86 Data Book 1.0 Rev D Page 255 4 Table 4.42 Programmable Interrupt Controller Registers (cont.) Bit Description Interrupt Service Register 7 IRQ7 / IRQ15 In-Service — 0 = No; 1 = Yes. 6 IRQ6 / IRQ14 In-Service — 0 = No; 1 = Yes. 5 IRQ5 / IRQ13 In-Service — 0 = No; 1 = Yes. 4 IRQ4 / IRQ12 In-Service — 0 = No; 1 = Yes. 3 IRQ3 / IRQ11 In-Service — 0 = No; 1 = Yes. 2 IRQ2 / IRQ10 In-Service — 0 = No; 1 = Yes. 1 IRQ1 / IRQ9 In-Service — 0 = No; 1 = Yes. 0 IRQ0 / IRQ8 In-Service — 0 = No; 1 = Yes. Note: The function of this register is set with bits 1:0 in a write to 020h. Table 4.43 Keyboard Controller Registers Bit Description I/O Port 060h (R/W) External Keyboard Controller Data Register Keyboard Controller Data Register — All accesses to this port are passed to the ISA bus. If the fast keyboard gate A20 and reset features are enabled through bit 7 of the ROM/AT Logic Control Register (F0 Index 52h[7]), the respective sequences of writes to this port assert the A20M# pin or cause a warm CPU reset. I/O Port 061h (R/W) Port B Control Register Reset Value = 00x01100b 7 PERR#/SERR# Status (Read Only) — Was a PCI bus error (PERR#/ SERR#) asserted by PCI device? 0 = No; 1=Yes. 6 IOCHK# Status (Read Only) — Is an I/O device reporting an error? 0 = No; 1 = Yes. This bit can only be set if ERR_EN is set 0. Set this bit to 0 after a write to ERR_EN with a 1 or after reset. This bit can only be set if IOCHK_EN is set 0. This bit is set 0 after a write to IOCHK_EN with a 1 or after reset. 5 PIT OUT2 State (Read Only) — Reflects the current status of the PIT Timer2-OUT2. 4 Toggle (Read Only) — Toggles on every falling edge of Counter 1 (OUT1). 3 IOCHK Enable 0 = Generates an NMI if IOCHK# is driven low by an I/O device to report an error. Note that NMI is under SMI control. 1 = Ignores the IOCHK# input signal and does not generate NMI. 2 PERR#/ SERR# Enable — Generate an NMI if PERR#/ SERR# is driven active to report an error: 0 = Enable; 1 = Disable 1 PIT Counter2 (SPKR) — 0 = Forces Counter 2 output (OUT2) to zero. 1 = Allows Counter 2 output (OUT2) to pass to the speaker 0 PIT Counter2 Enable — 0 = Sets GATE2 input low. 1 = Sets GATE2 input high. I/O Port 062h (R/W) External Keyboard Controller Mailbox Register Keyboard Controller Mailbox Register — Accesses to this port will assert ROMCS# if the Port 062h/066h decode is enabled through bit 7 of the Decode Control Register 2 (F0 Index 5Bh[7]). I/O Port 064h (R/W) External Keyboard Controller Command Register Keyboard Controller Command Register — All accesses to this port are passed to the ISA bus. If the fast keyboard gate A20 and reset features are enabled through bit 7 of the ROM/AT Logic Control Register (F0 Index 52h[7]), the respective sequences of writes to this port assert the A20M# pin or cause a warm CPU reset. ZFx86 Data Book 1.0 Rev D Page 256 4 Table 4.43 Keyboard Controller Registers (cont.) Bit Description I/O Port 066h (R/W) External Keyboard Controller Mailbox Register Keyboard Controller Mailbox Register — Accesses to this port will assert KBROMCS# if the Port 062h/066h decode is enabled through bit 7 of the Decode Control Register 2 (F0 Index 5Bh[7]). I/O Port 092h (R/W) 7:2 Port A Control Register Reset Value = 02h Reserved — Set to 0. 1 A20M# SMI Assertion — Assert A20# SMI: 0 = Enable; 1 = Disable. 0 Fast CPU Reset — WM_RST SMI is asserted to the BIOS: 0 = Disable; 1 = Enable. Clear this bit before the generation of another reset. Table 4.44 Real-Time Clock Registers Bit Description I/O Port 070h (WO) 7 6:0 RTC Address Register NMI Mask — 0 = Enable; 1 = Mask. RTC Register Index — A write of this register sends the data out on the ISA bus. Note: This register is shadowed within the South Bridge module and is read through the RTC Shadow Register (PCIDV2F1 10h+Memory Offset BBh). I/O Port 071h (R/W) RTC Data Register A read of this register returns the value of the register indexed by the RTC Address Register. A write of this register sets the value into the register indexed by the RTC Address Register. Table 4.45 Miscellaneous Registers Bit Description I/O Port 0F0h, 0F1h Coprocessor Error Register (W) Reset Value = F0h A write to either port when the FERR# signal is asserted causes the South Bridge module to assert IGNNE#. IGNNE# remains asserted until the FERR# deasserts. I/O Ports 170h-177h/376h-377h Secondary IDE Registers (R/W) When the local IDE functions are enabled, reads or writes to these registers cause the local IDE interface signals to operate according to their configuration rather than generating standard ISA bus cycles. I/O Ports 1F0h-1F7h/3F6h-3F7h Primary IDE Registers (R/W) When the local IDE functions are enabled, reads or writes to these registers cause the local IDE interface signals to operate according to their configuration rather than generating standard ISA bus cycles. I/O Port 4D0h 7 Interrupt Edge/Level Select Register 1 (R/W) Reset Value = 00h IRQ7 Edge or Level Sensitive Select — Selects PIC IRQ7 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 6 IRQ6 Edge or Level Sensitive Select — Selects PIC IRQ6 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. ZFx86 Data Book 1.0 Rev D Page 257 4 Table 4.45 Miscellaneous Registers (cont.) Bit 5 Description IRQ5 Edge or Level Sensitive Select — Selects PIC IRQ5 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 4 IRQ4 Edge or Level Sensitive Select — Selects PIC IRQ4 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 3 IRQ3 Edge or Level Sensitive Select — Selects PIC IRQ3 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 2:0 Reserved — Set to 0. Notes: 1. If ICW1 - bit 3 in the PIC is set as level, it overrides this setting. See I/O Port 020h/0A0h. 2. This bit is provided to configure a PCI interrupt mapped to IRQ[x] on the PIC as level-sensitive (shared). I/O Port 4D1h 7 Interrupt Edge/Level Select Register 2 (R/W) Reset Value = 00h IRQ15 Edge or Level Sensitive Select — Selects PIC IRQ15 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 6 IRQ14 Edge or Level Sensitive Select — Selects PIC IRQ14 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 5 Reserved — Set to 0. 4 IRQ12 Edge or Level Sensitive Select — Selects PIC IRQ12 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 3 IRQ11 Edge or Level Sensitive Select — Selects PIC IRQ11 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 2 IRQ10 Edge or Level Sensitive Select — Selects PIC IRQ10 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 1 IRQ9 Edge or Level Sensitive Select — Selects PIC IRQ9 sensitivity configuration: 0 = Edge; 1 = Level. Notes 1 and 2. 0 Reserved — Set to 0. Notes: 1. If ICW1 - bit 3 in the PIC is set as level, it overrides this setting. 2. This bit is provided to configure a PCI interrupt mapped to IRQ[x] on the PIC as level-sensitive (shared). 4.5. SuperI/O - A PC98 Compliant Cell The SuperI/O is a PC98 compliant component that offers a complete solution to the most commonly used ISA peripherals. The SuperI/O incorporates: a Floppy Disk Controller (FDC), two enhanced Serial Ports, an Infrared Communication Port that supports FIR, MIR, HP-SIR, Sharp-IR, and Consumer Electronics-IR, a full IEEE 1284 Parallel Port, an ACCESS.bus Interface (ACB), a Keyboard and Mouse Controller (KBC), System WakeUp Control (SWC), a Real-Time Clock (RTC) that provides both RTC timekeeping and Advanced Power Control (APC) functionality. ZFx86 Data Book 1.0 Rev D 4.5.1. Outstanding Features • System Wake-Up Control generates a power-up request in response to pre programmed keyboard or mouse sequence, modem, telephone ring, and two general-purpose events • Programmable write protect for Floppy Disk Controller • Advanced RTC and APC, Y2K compliant Page 258 4 Serial Interface Serial Interface Infrared Interface Floppy Drive Interface Parallel Port Interface ISA Interface Serial Port 1 Serial Port 2 IR Comunication Port Floppy Disk Controller IEEE 1284 Parallel Port Host Interface VBAT System Wake-Up Control Real-Time Clock ACCESS.bus Wake-Up PWUREQ Events SCL SDA Keyboard and Mouse Controller Keyboard and Ports Mouse Interface Figure 4-4 Super I/O Block Diagram 4.5.2. Features • PC98 Compliant — PnP Configuration Register structure — Flexible resource allocation for all logical devices — Relocatable base address — 9 Parallel IRQ routing options — 3 optional 8-bit DMA channels (where applicable) • Floppy Disk Controller (FDC) — Programmable write protect — FM and MFM mode support — Enhanced mode command for threemode Floppy Disk Drive (FDD) support — Perpendicular recording drive support for 2.88 MB — Burst and non-burst modes — Full support for IBM Tape Drive register (TDR) implementation of AT and PS/2 drive types — 16-byte FIFO ZFx86 Data Book 1.0 Rev D — Software compatible with the PC8477, which contains a superset of the FDC functions in the microDP8473, the NEC microPD765A and the N82077 — High-performance, digital separator — Standard 5.25” and 3.5” FDD support • Parallel Port — Software or hardware control — Enhanced Parallel Port (EPP) compatible with new version EPP 1.9 and IEEE 1284 compliant — EPP support for version EPP 1.7 of the Xircom specification — EPP support as mode 4 of the Extended Capabilities Port (ECP) — IEEE 1284 compliant ECP, including level 2 — Selection of internal pull-up or pull-down resistor for Paper End (PE) pin — PCI bus utilization reduction by supporting a demand DMA mode mechanism and a DMA fairness mechanism Page 259 4 — Protection circuit that prevents damage to the parallel port when a printer connected to it powers up or is operated at high voltages, even if the device is in power-down — Output buffers that can sink and source 14 mA • Serial Ports 1 and 2 — Software compatible with the 16550A and the 16450 — Shadow register support for write-only bit monitoring — UART data rates up to 1.5 Mbps — Asynchronous access to two data registers and one status register during normal operation — Support for both interrupt and polling — 93 instructions — 8-bit timer/counter — Support for binary and BCD arithmetic — Operation at 8 MHz,12 MHz or 16 MHz (programmable option) — Can be customized by using the PC87323, which includes a RAM-based KBC as a development platform for KBC code • System Wake-Up Control (SWC) • Infrared Communication Port — — — — — — — — — — — — Data rate of up to 115.2 Kbps (SIR) Data rate of 1.152 Mbps (MIR) Data rate of 4.0 Mbps (FIR) Selectable internal or external modulation/demodulation (Sharp-IR) Consumer-IR (TV-Remote) mode Software compatible with the 16550A and the 16450 Shadow register support for write-only bit monitoring HP-SIR ASK-IR option of SHARP-IR DASK-IR option of SHARP-IR Consumer Remote Control supports RC-5, RC-6, NEC, RCA and RECS 80 Non-standard DMA support - 1 or 2 channels • Keyboard and Mouse Controller (KBC) — 8-bit microcontroller — Software compatible with the 8042AH and PC87911 microcontrollers — 2 KB custom-designed program ROM — 256 bytes RAM for data — Four programmable dedicated opendrain I/O lines ZFx86 Data Book 1.0 Rev D — Power-up request upon detection of Keyboard, Mouse, RI1, RI2, RING, PME1 and PME2 activity, as follows: — Preprogrammed Keyboard or Mouse sequence — External modem ring on serial ports — Ring pulse or pulse train on the RING input — General-purpose events, PME1 and PME2 — Battery-backed wake-up setup — Power-fail recovery support • Real-Time Clock — A modifiable address that is referenced by a 16-bit programmable register — 13 IRQ options, with programmable polarity — DS1287, MC146818 and PC87911 compatibility — 242 bytes of battery backed up CMOS RAM in two banks — Selective lock mechanisms for the RTC RAM — Battery backed up century calendar in days, day of the week, date of month, months, years and century, with automatic leap-year adjustment Page 260 4 — Battery backed-up time of day in seconds, minutes and hours that allows a 12 or 24 hour format and adjustments for daylight savings time — BCD or binary format for time keeping — Three different maskable interrupt flags: — Periodic interrupts - At intervals from 122 msec to 500 msec — Time-of-Month alarm - At intervals from once per second to once per Month — Updated Ended Interrupt - Once per second upon completion of update — Separate battery pin, 3.0V operation that includes an internal UL protection resistor — 2 mA maximum power consumption during power down — Double-buffer time registers • Clock Sources — 48 MHz clock input — On-chip low frequency clock generator for wake-up — 32.768 KHz crystal with an internal frequency multiplier to generates all required internal frequencies • Y2K Compliant 4.5.3. SIGNAL/PIN Descriptions Table 4.46 ACCESS.bus Interface (ACB) Signal Pin(s) I/O Buffer Type Power Well I/O SCL_N AA4 SDA AB4 INSM/OD6 VDD Description ACCESS.bus Clock Signal An internal pull-up is optional, depending upon the ACCESS.bus configuration register. I/O INSM/OD6 VDD ACCESS.bus Data Signal An internal pull-up is optional, depending upon the ACCESS.bus configuration register. 4.5.4. Device Architecture and Configuration The SuperI/O device comprises a collection of 4.5.4.1. Overview generic functional blocks. Each functional block is described in a separate chapter in this book. However, some parameters in the implementation of each functional block may vary per SuperI/O device. This chapter describes the SuperI/O structure and provides all device specific information, including special implementation of generic blocks, system interface and device configuration. ZFx86 Data Book 1.0 Rev D The SuperI/O is based on 10 logical devices, the host interface, and a central configuration register set, all built around a central, internal 8-bit bus. The host interface serves as a bridge between the external ISA interface and the internal bus. It supports 8-bit I/O read, 8-bit I/O write and 8-bit DMA transactions, as defined in Personal Computer Bus Standard P996. Page 261 4 IRRX2,1 IRSL3-0 configured in, and managed by, the central configuration register set. In addition, some function-specific parameters are configurable through this unit and distributed to the functional blocks through special control signals. IRTX The central configuration registers are structured as a subset of the Plug and Play Standard Registers, defined in Appendix A of the Plug and Play ISA Specification Version 1.0a by Intel and Microsoft. All system resources assigned to the functional blocks (I/O address space, DMA channels, and IRQ lines) are Infrared Communication Port Parallel Port Configuration and Control Registers Serial Port 1 Serial Port 2 Keyboard and Mouse Controller RDATA WDATA SIN1 SOUT1 RTS1 DTR1 CTS1 DSR1 DCD1 RI1 SIN2 SOUT2 RTS2 DTR2 CTS2 DSR2 DCD2 RI2 KBLOCK KBCLK KBDAT MDAT MCLK WGATE WP VBAT VCC_IO X2C X1C/X1 ALARM Real-Time Clock (RTC) Host Interface System Wake-Up SCL SDA TC DACK0-3 DRQ0-3 IRQ1-12,14-15 IOCHRDY ZWS IOWR IORD AEN SIOCFG CLKIN MR D7-0 A15-0 DSKCHG PWUREQ TRK0 INDEX RING S_GPWI01 CHASI S_GPWI02 CHASO FDC STEP ACCESS Bus Control Signals DIR Internal Bus HDSEL Figure 4-5 Detailed SuperI/O Block Diagram ZFx86 Data Book 1.0 Rev D Page 262 4 4.5.4.2. Coinfiguration Structure And Access the configuration register that is currently accessible via the Data Register. Reading the Index Register returns the last value written to the Data Register (or the default of 00h after reset). This section describes the structure of the configuration register file, and the method of accessing the configuration registers. 4.5.4.3. The Index-Data Register Pair The SuperI/O configuration access is performed via an Index-Data register pair, using only two system I/O byte locations. The base address of this register pair is determined according to the state on the SIOCFG input pins. The Data Register is an 8-bit virtual register, used as a data path to any configuration register. Accessing the data register results in a physical access of the configuration register that is currently being pointed to by the index register. The Index Register is an 8-bit R/W register located at the selected base address (Base+0). It is used as a pointer to the configuration register file, and holds the contents of Table 4.47 shows the selected base addresses as a function of SIOCFG. Table 4.47 SuperI/O Configuration Options SIOCFG F3BAR0 Offset 00h-03h [26:25] Settings I/O Address Description Index Register Data Register 00 - - SuperI/O disabled 01 - - Configuration access disabled 10 002Eh 002Fh Base address 1 selected 11 015Ch 015Dh Base address 2 selected 4.5.4.4. Banked Logical Device Registers Each functional block is associated with a Logical Device Number (LDN). The configuration registers are grouped into banks, where each bank holds the standard configuration registers of the corresponding logical device. Table 4.47 shows the LDN values of the device functional blocks. Figure 4-6 shows the structure of the standard configuration register file. The SuperI/O control and configuration registers are not banked and are accessed by the Index-Data register pair only, as described above. However, the device control and device configuration registers are duplicated over 10 banks for 10 logical devices. Therefore, ZFx86 Data Book 1.0 Rev D accessing a specific register in a specific bank is performed by two dimensional indexing, where the LDN register selects the bank (or logical device) and the Index register selects the register within the bank. Accessing the Data register while the Index register holds a value of 30h or higher results in a physical access to the Logical Device Configuration registers currently pointed to by the Index register, within the logical device bank currently selected by the LDN register. Page 263 4 07h Logical Device Number Register 20h 2Fh SuperI/O Configuration Registers 30h Logical Device Control Register 60h 63h 70h 71h 74h 75h F0h FEh Standard Logical Device Standard Registers Special (Vendor-defined) Logical Device Configuration Registers Bank Select Banks (One per Logical Device) Figure 4-6 Structure of the Standard Configuration Register File Table 4.48 Logical Device Number (LDN) Assignments LDN Functional Block 00h Floppy Disk Controller (FDC) 01h Parallel Port (PP) 02h Serial Port 2 (SP2) 03h Serial Port 1 (SP1) 04h System Wake-Up Control (SWC) 05h Keyboard and Mouse Controller (KBC) - Mouse interface 06h Keyboard and Mouse Controller (KBC) - Keyboard interface 07h Infrared Communication Port (IRCP) 08h ACCESS.Bus (ACB) 09h Reserved 0Ah Real-Time Clock (RTC) Write accesses to unimplemented registers (that is accessing the Data register while the Index register points to a non-existing register), are ignored and read returns 00h on all addresses except for 74h and 75h (DMA configuration registers) which returns 04h ZFx86 Data Book 1.0 Rev D (indicating no DMA channel is active). The configuration registers are accessible immediately after reset. Page 264 4 4.5.5. Standard Logical Device Configuration Register Definitions Unless otherwise noted in Table 4.49 through Table 4.54: • All registers are read/write. • All reserved bits return 0 on reads, except where noted otherwise. They must not be modified as it may cause unpredictable results. Use read-modify-write to prevent the values of reserved bits from being changed during write. • Write only registers should not use readmodify-write during updates. Table 4.49 Standard Control Registers Index Register Name Description 07h Logical Device Number This register selects the current logical device. See Table 4.48 for valid numbers. All other values are reserved. 20h - 2Fh SuperI/O Configuration SuperI/O configuration registers and ID registers Table 4.50 Logical Device Activate Register Index 30h Register Name Description Bit 0 - Logical device activation control 0 = Disabled 1 = Enabled Bits 7-1 - Reserved Activate Table 4.51 I/O Space Configuration Registers Index Register Name Description 60h I/O Port Base Indicates selected I/O lower limit address bits 15-8 for I/O Descriptor 0. Address Bits (15-8) Descriptor 0 61h I/O Port Base Indicates selected I/O lower limit address bits 7-0 for I/O Descriptor 0. Address Bits (7-0) Descriptor 0 62h I/O Port Base Indicates selected I/O lower limit address bits 15-8 for I/O Descriptor 1. Address Bits (15-8) Descriptor 1 63h I/O Port Base Indicates selected I/O lower limit address bits 7-0 for I/O Descriptor 1. Address Bits (7-0) Descriptor 1 ZFx86 Data Book 1.0 Rev D Page 265 4 Table 4.52 Interrupt Configuration Registers Index Register Name Description 70h Interrupt Number Bits 3-0 select the interrupt number. A value of 1 selects IRQ1, a value of 2 selects IRQ2, etc. (up to IRQ15). IRQ0 is not a valid interrupt selection. 71h Interrupt Request Indicates the type and level of the interrupt request number selected in the Type Select previous register. Bit 0 - Type of interrupt request selected in previous register 0 = Edge 1 = Level Bit 1 - Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Table 4.53 DMA Configuration Registers Index Register Name Description 74h DMA Channel Select 0 Indicates selected DMA channel for DMA 0 of the logical device (0 - The first DMA channel in the case of using more than one DMA channel). Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. The values 5-7 are reserved. 75h DMA Channel Select 1 Indicates selected DMA channel for DMA 1 of the logical device (1 - The second DMA channel in the case of using more than one DMA channel). Bits 2-0 select the DMA channel for DMA 1. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. The values 5-7 are reserved. Table 4.54 Special Logical Device Configuration Registers Index Register Name Description F0h-FEh Logical Device Configuration Special (vendor-defined) configuration options. ZFx86 Data Book 1.0 Rev D Page 266 4 4.5.6. Standard Configuration Registers Index SuperI/O Control and Configuration Registers Logical Device Control and Configuration Registers one per logical device (some are optional) Register Name 07h Logical Device Number 20h SuperI/O ID 21h SuperI/O Configuration 1 22h SuperI/O Configuration 2 27h SuperI/O Revision ID 2Eh Reserved 30h Logical Device Control (Activate) 60h I/O Port Base Address Descriptor 0 Bits 15-8 61h I/O Port Base Address Descriptor 0 Bits 7-0 62h I/O Port Base Address Descriptor 1 Bits 15-8 63h I/O Port Base Address Descriptor 1 Bits 7-0 70h Interrupt Number Select 71h Interrupt Type Select 74h DMA Channel Select 0 75h DMA Channel Select 1 F0h Device Specific Logical Device Configuration 1 F1h Device Specific Logical Device Configuration 2 F2h Device Specific Logical Device Configuration 3 F3h Device Specific Logical Device Configuration 4 Figure 4-7 Configuration Register Map SuperI/O Control and Configuration Registers (20h/27h) The SuperI/O Configuration registers at indexes 20h to 27h are mainly used for part identification, global power management and the selection of pin multiplexing options. Logical Device Control and Configuration Registers (30h) A subset of these registers is implemented for each logical device. ZFx86 Data Book 1.0 Rev D Control The only implemented logical device control register is the activate register at index 30h. Bit 0 of the activate register, together with the Global Device Enable bit (except for the RTC and the SWC) control the activation of the associated function block. Activation of the block enables access to the block’s registers, and attaches its system resources, which are unused as long as the block is not activated. Other effects may apply, on a function-specific basis (such as clock enable and active pinout signaling). Page 267 4 Standard Configuration The standard configuration registers are used to manage the resource allocation to the functional blocks. The I/O port base address descriptor 0 is a pair of registers at Index 6061, holding the (first or only) 16-bit base address for the register set of the functional block. An optional second base-address (descriptor 1) at index 62-63 is used for devices with more than one continuous register set. Interrupt Number Select (index 70h) and Interrupt Type Select (index 71h) allocate an IRQ line to the block and control its type. DMA Channel Select 0 (index 74h) allocates a DMA channel to the block, where applicable. DMA Channel Select 1 (index 75h) allocates a second DMA channel, where applicable. Special Configuration The vendor identification registers, starting at index F0h are used to control function-specific parameters such as operation modes, power saving modes, pin TRI-STATE, clock rate selection, and non-standard extensions to generic functions. 4.5.6.1. Default Configuration Setup The device has three reset types: • Software Reset Generated by bit 1 of the SIOCF1 register, which resets all logical devices. A software reset also resets most bits in the SuperI/O Configuration and Control registers (see Section 4.6.1 for the bits not affected). This reset does not affect register bits that are locked for write access. • Hardware Reset Activated by the system reset signal. This resets all logical devices, with the exception of the RTC and the SWC, and all SuperI/O Configuration and Control registers, with the exception of the SIOCF2 register. It also resets all SuperI/O control and configuration registers, except for those that are batterybacked. ZFx86 Data Book 1.0 Rev D • VPP Power-Up Reset Activated when VBAT is powered on after both have been off. VPP is an internal voltage which is VBAT. This reset resets all registers whose values are retained by VPP. The SuperI/O wakes up with the default setup, as follows: • In the event of a hardware reset: — The configuration base address is 2Eh, 15Ch or None, according to the SIOCFG pin values, as shown in Table 4.47 on page 263. — The Keyboard Controller (KBC) may be activated and all other logical devices are disabled, with the exception of the RTC and the SWC, which remains functional but whose registers cannot be accessed. • In the event of either a hardware or a software reset: — The legacy devices are assigned with their legacy system resource allocation. — Proprietary functions are not assigned with any default resources and the default values of their base addresses are all 00h. 4.5.6.2. Address Decoding A full 16-bit address decoding is applied when accessing the configuration I/O space, as well as the registers of the functional blocks. However, the number of configurable bits in the base address registers vary for each device. The lower 1, 2, 3 or 4 address bits are decoded within the functional block to determine the offset of the accessed register, within the device’s I/O range of 2, 4, 8 or 16 bytes, respectively. The rest of the bits are matched with the base address register to decode the entire I/O range allocated to the device. Therefore the lower bits of the base address register are forced to 0 (read-only), and the Page 268 4 base address is forced to be 2, 4, 8 or 16 byte aligned, according to the size of the IO range. • The base address of the FDC, RTC, Serial Port 1, Serial Port 2, Infrared Communication Port and KBC are limited to the I/O address range of 00h to 7FXh only (bits 11-15 are forced to 0). • The Parallel Port base address is limited to the I/O address range of 00h to 3F8h. • The addresses of the non-legacy devices are configurable within the full 16-bit address range (up to FFFXh). In some special cases, other address bits are used for internal decoding (such as bit 2 in the KBC and bit 10 in the Parallel Port). The KBC has two I/O descriptors with some implied dependency between them. For more details, please see the detailed description of the base address register for each specific logical device. 4.5.6.3. The Internal Clocks The source of the device internal clocks is a 48 MHz clock signal, which is routed through the CLKIN pin. Wake-up on KBD, Mouse and RING pulse train detection operates on 32 KHz clock. 4.6. SuperI/O Configuration Registers This section describes the SuperI/O configuration and ID registers (those registers with first level indexes in the range of 20h - 2Eh). See Table 4.56 for a summary and directory of these registers. 4.6.1. Register Type Abbreviations The register maps in this chapter use the following abbreviations: Table 4.55 Register Type Abbreviations Symbol Meaning R/W Read/Write R Read from a specific address returns the value of a specific register. Write to the same address is to a different register. W Write RO Read Only R/W1C Read/Write 1 to Clear. Writing 1 to a bit clears it to 0. Writing 0 has no effect. Table 4.56 SuperI/O Configuration Registers Index Mnemonic Register Name Power Well Type Reference 20h SID SuperI/O ID VDD RO Table 4.57 21h SIOCF1 SuperI/O Configuration 1 VDD R/W Table 4.58 22h SIOCF2 SuperI/O Configuration 2 VPP R/W Table 4.59 27h SRID SuperI/O Revision ID VDD RO Table 4.60 2Eh Reserved ZFx86 Data Book 1.0 Rev D Page 269 4 Table 4.57 SuperI/O ID Register (SID) - Index 20H Bit 7 6 5 4 Name 3 2 1 0 0 0 1 1 Chip ID Reset 1 1 1 0 Notes: RO. This register contains the identity number of the chip. The SuperI/O is identified by the value E3H. Table 4.58 SuperI/O Configuration 1 Register (SIOCF1) - Index 21H Bit 7 6 General Purpose Scratch Name Reset 0 0 5 4 3 2 1 0 Lock Scratch PNF Status Reserved Pin Function Lock SW Reset Global Device Enable 0 X 0 0 0 1 This is a read/write register. Bit 7-6 Description General Purpose Scratch When bit 5 is set to 1, these bits are read only. After reset, these bits can be read or write. Once changed to read only, the bits can be changed back to read/write only by a hardware reset. 5 Lock Scratch This bit controls bits 7 and 6 of this register. Once this bit is set to 1 by software, it can only be cleared to 0 by a hardware reset. 0 = Bits 7 and 6 of this register are read/write bits (default). 1 = Bits 7 and 6 of this register are read only bits. 4 Reserved. 3 Reserved 2 Pin Function Lock When bit set to 1, all function selection on the associated pins lock (Bits 0 and 2 of the SIOCF2 register). When set to 1 by software, it can only be cleared to 0 by Master Reset or power-off. 0 = No effect (default) 1 = Pin function locked 1 SW Reset Read always returns 0. 0 = Ignored (default) 1 = Resets all the devices that are reset by MR (with the exception of the lock bits) and the registers of the SWC 0 Global Device Enable This bit controls the function enable of all the logical devices in the SuperI/O, except the SWC and the RTC. It allows them to be disabled simultaneously by writing to a single bit. 0= 1= All logical devices in the SuperI/O disabled, except the SWC and the RTC. Each logical device enabled according to its Activate register at index 30h (default) ZFx86 Data Book 1.0 Rev D Page 270 4 Table 4.59 SuperI/O Configuration 2 Register (SIOCF2) - Index 22H Bit 7 Reserved 6 5 4 General Purpose Scratch Name Reset 1 0 0 3 2 S_GPWI02 Debounce Enable Reserved 1 0 0 1 0 S_GPWI01 S_GPWI01 Debounce Function Enable Select 1 0 This register controls the multiplexing of two pins. Its value is retained by VPP, and is not affected by either hardware or software reset. Bit 7 6-4 Description Reserved General Purpose Scratch Battery-backed. 3 S_GPWI02 Debounce Enable 0= 1= Debounce disabled 16mS debounce enabled (VPP power-up default) 2 Reserved 1 S_GPWI01 Debounce Enable 0= 1= 0 Debounce disabled 16mS debounce enabled (VPP power-up default) S_GPWI01 Function Select 0= 1= RING (VPP power-up default) S_GPWI01 Table 4.60 SuperI/O Revision ID Register (SRID) - Index 27H Bit 7 Name Chassis Intrusion Reset 1 6 5 4 General Purpose Scratch 0 0 0 3 2 1 0 S_GPWI02 S_GPWI02 S_GPWI01 S_GPWI01 Debounce Function Debounce Function Enable Select Enable Select 1 0 1 0 This read only register contains the identity number of the chip revision. SRID is incremented on each revision. ZFx86 Data Book 1.0 Rev D Page 271 4 4.7. Floppy Disk Controller (FDC) Configuration The generic FDC is a standard FDC with a digital data separator, and is DP8473 and N82077 software compatible. The FDC supports 14 of the 17 standard FDC signals including: • FM and MFM modes are supported. To select either mode, set bit 6 of the first command byte when writing to/reading from a diskette, where: 0 = FM mode 1 = MFM mode • A logic 1 is returned for all floating (TRISTATE) FDC register bits upon read cycles. • Exceptions to standard FDC support include: • DRATE1 is not supported. Table 4.61 lists the FDC functional block registers. Table 4.61 FDC Registers Offset Mnemonic 00h SRA Status A RO 01h SRB Status B RO 02h DOR Digital Output R/W 03h TDR Tape Drive R/W 04h MSR Main Status R DSR Data Rate Select W FIFO Data (FIFO) 05h 06h 07h Register Name Type R/W N/A X DIR Digital Input R CCR Configuration Control W All Registers are described in the Programmers Manual ZFx86 Data Book 1.0 Rev D Page 272 4 Table 4.62 Logical Device 0 (FDC) Configuration Index Configuration Register or Action Type Reset 30h Activate. See also bit 0 of the SIOCF1 register. R/W 00h 60h Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. R/W 03h 61h Base Address LSB register. Bits 2 and 0 (for A2 and A0) are read only, 00b. R/W F2h 70h Interrupt Number R/W 06h 71h Interrupt Type. Bit 1 is read/write; other bits are read only. R/W 03h 74h DMA Channel Select R/W 02h 75h Report no second DMA assignment RO 04h F0h FDC Configuration register R/W 24h F1h Drive ID register R/W 00h Table 4.63 FDC Configuration Register - Index F0H Bit 7 6 Name Four Drive Control TDR Register Mode Reset 0 0 5 1 Required 4 3 Reserved Write Protect 0 0 2 1 Reserved 1 0 TRI-STATE Control 0 0 0 RW. This register is reset by hardware to 24h. Bit 7 Description Four Drive Control 0= 1= Two floppy drives directly controlled by DR1-0 and MTR1-0 (default) Four floppy drives controlled with the aid of external logic Only one floppy present in ZFx86. 6 TDR Register Mode 0= 1= PC-AT compatible drive mode; that is, bits 7-2 of the TDR are ignored (default) Enhanced drive mode 5 Reserved 4 Reserved — Must be set to 0. 3 Write Protect This bit allows forcing of write protect by software. When set, write to the floppy disk drive is disabled. This effect is identical to WP when it is active. 0 = Write protected according to WP signal (default) 1 = Write protected regardless of value of WP signal 2-1 Reserved. Reset value of bit 2 is 1. ZFx86 Data Book 1.0 Rev D Page 273 4 Bit 0 Description TRI-STATE Control When enabled and the device is inactive, the logical device output pins are in TRI-STATE. 0 = Disabled (default) 1 = Enabled Table 4.64 Drive ID Register - Index F1H Bit 7 6 5 4 3 2 1 0 Name Reserved Drive 1 ID Drive 0 ID Reset 0 0 0 RW. This read/write register is reset by hardware to 00h. This register controls bits 5 and 4 of the TDR register in the Enhanced mode. Usage Hints: Some BIOS implementations support automatic media sense FDDs, in which case bit 5 of the TDR register in the Enhanced mode is interpreted as valid media sense when it is cleared to 0. If drive 0 and/or drive 1 do not support automatic media sense, bits 1 and/or 3 of the Drive ID register should be set to 1 respectively (to indicate non-valid media sense) when the corresponding drive is selected and the Drive ID bit is reflected on bit 5 of the TDR register in the Enhanced mode. Bit Description 7-4 Reserved 3-2 Drive 1 ID. When drive 1 is accessed, these bits are reflected on bits 5-4 of the TDR register, respectively. 1-0 Drive 0 ID. When drive 0 is accessed, these bits are reflected on bits 5-4 of the TDR register, respectively. 4.8. Parallel Port Configuration The SuperI/O Parallel Port supports all IEEE1284 standard communication modes: • Compatibility (known also as Standard or SPP) • Bidirectional (known also as PS/2) • A group of 21 registers at first level offset, sharing 14 entries. Three of these registers (at offsets 403h, 404h, and 405h) use only the Extended ECP mode. • A group of four registers, used only in the Extended ECP mode, are accessed by a second level offset. • FIFO, EPP (known also as Mode 4) • ECP (with an optional Extended ECP mode). The Parallel Port includes two groups of runtime registers: The desired mode is selected by the ECR runtime register (offset 402h). The selected mode determines which runtime registers are used and which address bits are used for the base address. 4.8.1. Logical Device 1 (PP) Configuration Table 4.65 lists the configuration registers, their offset addresses, and the associated ZFx86 Data Book 1.0 Rev D modes which affect the Parallel Port. Only the last register (F0h) is described here. Page 274 4 Table 4.65 Parallel Port Configuration Registers Index Configuration Register or Action Type Reset 30h Activate. See also bit 0 of the SIOCF1 register. R/W 00h 60h Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. Bit 2 (for A10) should be set to 0b. R/W 02h 61h Base Address LSB register. Bits 1 and 0 (A1 and A0) are read only, 00b. For ECP Mode 4 (EPP) or when using the Extended registers, bit 2 (A2) should be set to 0b. R/W 78h 70h Interrupt Number R/W 07h 71h Interrupt Type Bits 7-2 are read only. Bit 1 is a read/write bit. Bit 0 is read only. It reflects the interrupt type dictated by the Parallel Port operation mode. This bit is set to 1 (level interrupt) in Extended Mode and cleared (edge interrupt) in all other modes. R/W 02h 74h DMA Channel Select R/W 04h 75h Report no second DMA assignment RO 04h F0h Parallel Port Configuration register R/W F2h Table 4.66 Parallel Port Configuration Register - F0H Bit 7 6 5 Reserved 4 3 Extended Register Access Name Reset 1 1 1 Required 1 1 1 1 2 Reserved 0 0 1 0 Power Mode Control TRI-STATE Control 1 0 RW. This read/write register is reset by hardware to F2h. Bit 7-5 4 Description Reserved. Must be 111. Extended Register Access 0= 1= 3-2 Registers at base (address) + 403h, base + 404h and base + 405h are not accessible (reads and writes are ignored). Registers at base (address) + 403h, base + 404h and base + 405h are accessible. This option supports run-time configuration within the Parallel Port address space. Reserved ZFx86 Data Book 1.0 Rev D Page 275 4 Bit 1 Description Power Mode Control When the logical device is active: 0 = Parallel port clock disabled. ECP modes and EPP time-out are not functional when the logical device is active. Registers are maintained. 1 = Parallel port clock enabled. All operation modes are functional when the logical device is active (default). 0 TRI-STATE Control When enabled and the device is inactive, the logical device output pins are in TRI-STATE. 0 = Disabled (default) 1 = Enabled 4.9. System Wake-Up Control (SWC) 4.9.1. Overview The SWC wakes up the system by sending a power-up request to the controller, in response to the following maskable system events: • Modem ring (RI1 and RI2 pins) • Telephone ring (RING input pin) • Keyboard activity or specific programmable key sequence • Mouse activity or specific programmable sequence of clicks and movements • Programmable Consumer Electronics IR (CEIR) address • General purpose events (S_GPWI01 and S_GPWI02). 4.9.2. Functional Description The SWC monitors eight system events or activities. Each one of them is fed into a dedicated detector that decides when this event is active, according to predetermined (either fixed or programmable) criteria. A set of dedicated registers is used to determine the wakeup criteria, including the CEIR address and the Keyboard sequence. (WKCR) hold a Status bit and Enable bit, respectively, for each one of the events. Upon detection of any active event, the corresponding Status bit is set to 1. If the event is enabled (the corresponding Enable bit is set to 1), a power-up request is issued to the controller. In addition, detection of an active wake-up event may be also routed to any arbitrary IRQ. Disabling an event prevents it from issuing power-up requests, but does not affect the Status bits. A power-up reset is issued when both the Status and Enable bits equal 1 for at least one event. The SWC logic is powered by VCC_IO. The SWC control and configuration registers are battery backed, powered by VPP. The setup of the wake-up events, including programmable sequences, is retained throughout power failures (no VCC_IO) as long as the battery is connected. VPP is taken from VCC_IO if VCC_IO is greater than the minimum (Min) value; otherwise, VBAT is used as the VPP source. Hardware reset does not affect these registers. They are reset only by SuperI/O software reset or power-up of VPP. A Wake-Up Events Status Register (WKSR) and a Wake-Up Events Control Register ZFx86 Data Book 1.0 Rev D Page 276 4 4.9.3. Event Detection 4.9.3.1. Modem Ring High to low transitions on RI1 or RI2 indicate the detection of ring in external modem connected to Serial Port 1 or Serial Port 2 respectively and can be used as a wake-up event. 4.9.3.2. Telephone Ring A telephone ring is detected by the SWC by processing the raw signal coming directly from the telephone line into the RING input pin. Detection of a pulse-train with a frequency higher than 16 Hz that lasts at least 0.19 sec, is used as a wake-up event. The RING pulse-train detection is achieved by monitoring the falling edges on RING in time slots of 62.5 msec (a 16 Hz cycle). A positive detection occurs if falling edges of RING are detected in three consecutive time slots, following a time slot in which no RING falling edge is detected. This detection method guarantees the detection of a RING pulse-train with frequencies higher than 16 Hz. It filters out (does not detect) pulses of less than 10 Hz, and may detect pulses between 10 Hz to 16 Hz. 4.9.3.3. Keyboard and Mouse Activity The detection of either any activity or a specific predetermined Keyboard or Mouse activity can be used as a wake-up event. The Keyboard wake-up detection can be programmed to detect: • Any keystroke • A specific programmable sequence of up to eight alphanumeric keystrokes • Any programmable sequence of up to 8 bytes of data received from the keyboard. The Mouse wake-up detection can be programmed to detect either any Mouse click ZFx86 Data Book 1.0 Rev D or movement, or a specific programmable click (left or right) or double-clicks. The keyboard or mouse event detection operates independently of the KBC (which is powered down with the rest of the system). 4.9.3.4. CEIR Address A CEIR transmission received on an IRRX pin in a pre-selected standard (NEC, RCA or RC-5) is matched against a programmable CEIR address. Detection of matching can be used as a wake-up event. Whenever an IR signal is detected, the receiver immediately enters the active state. When this happens, the receiver keeps sampling the IR input signal and generates a bit string where a logic 1 indicates an idle condition and a logic 0 indicates the presence of IR energy. The received bit string is de-serialized and assembled into 8-bit characters. The expected CEIR protocol of the received signal should be configured through bits 5,4 at the CEIR Wake-Up Control register (see Table 4.77 on page 285). The CEIR Wake-Up Address register (IRWAD) holds the unique address to be compared with the address contained in the incoming CEIR message. If CEIR is enabled (bit 0 of the IRWCR register is 1) and an address match occurs, then the CEIR Event Status bit of the WKSR register is set to 1 (see Table 4.70 on page 280). The CEIR Address Shift register holds the received address which is compared with the address contained in the IRWAD. The comparison is affected also by the CEIR Wake-Up Address Mask register (IRWAM) in which each bit determines whether to ignore the corresponding bit in the IRWAD. If CEIR routing to interrupt request is enabled, the assigned SWC interrupt request may be used to indicate that a complete address has been received. To get this interrupt when the Page 277 4 address is completely received, the IRWAM should be written with FFh. Once the interrupt is received, the value of the address can be read from the ADSR register. Another parameter that is used to determine whether a CEIR signal is to be considered valid is the bit cell time width. There are four time ranges for the different protocols and carrier frequencies. Four pairs of registers define the low and high limits of each time range. (See ‘CEIR Wake-Up Range 0 Registers’ on page 286 (and following) for more details regarding the recommended values for each protocol.) The CEIR address detection operates independently of the serial port with the IR (which is powered down with the rest of the system). 4.9.3.5. General-Purpose Events A general-purpose event is defined as the detection of falling edge, rising edge, low level, or high level on a specific signal. Each signal’s event is configurable via software. S_GPWI01 and S_GPWI02 may wake up the system from power-off state, or generate an interrupt if the system is in power-on state. A debouncer of 16 mS is enabled (default) on each event. It may be disabled by software. The SWC registers are organized in two banks. The offsets are related to a base address that is determined by the SWC Base Address Register in the device configuration. The lower three registers are common to the two banks while the upper registers (03-0fh) are divided as follows: • Bank 0 holds the Keyboard/Mouse Control Registers. • Bank 1 holds the CEIR Control Registers. The active bank is selected through the Configuration Bank Select field (bits 1-0) in the Wake-Up Configuration Register (WKCFG). See Table 4.72 on page 282. ZFx86 Data Book 1.0 Rev D Page 278 4 4.9.3.6. SWC Register Map Table 4.67 Banks 0 and 1 - The Common Control and Status Register Map Offset Mnemonic Name Type Reference 00h WKSR Wake-Up Events Status Register R/W Page 280 01h WKCR Wake-Up Events Control Register R/W Page 281 02h WKCFG Wake-Up Configuration Register R/W Page 282 Table 4.68 Bank 0 - PS/2 KBD/MOUSE Wake-Up Config/Control Register Map Offset 03h 04h-05h Mnemonic PS2CTL Name Type Reference PS/2 Protocol Control Register R/W Page 283 Reserved 06h KDSR Keyboard Data Shift Register RO Page 284 07h MDSR Mouse Data Shift Register RO Page 284 R/W Page 285 08h-0Fh PS2KEY0–PS2KEY7 PS/2 Keyboard Key Data Registers Table 4.69 Bank 1 - CEIR Wake-Up Config/Control Register Map Offset Mnemonic Name Type Reference CEIR Wake-Up Control Register R/W Page 285 03h IRWCR 04h Reserved 05h IRWAD CEIR Wake-Up Address Register R/W Page 286 06h IRWAM CEIR Wake-Up Address Mask Register R/W Page 286 07h ADSR CEIR Address Shift Register R/O Page 286 08h IRWTR0L CEIR Wake-Up, Range 0, Low Limit Register R/W Page 287 09h IRWTR0H CEIR Wake-Up, Range 0, High Limit Register R/W Page 287 0Ah IRWTR1L CEIR Wake-Up, Range 1, Low Limit Register R/W Page 287 0Bh IRWTR1H CEIR Wake-Up, Range 1, High Limit Register R/W Page 288 0Ch IRWTR2L CEIR Wake-Up, Range 2, Low Limit Register R/W Page 289 0Dh IRWTR2H CEIR Wake-Up, Range 2, High Limit Register R/W Page 289 0Eh IRWTR3L CEIR Wake-Up, Range 3, Low Limit Register R/W Page 289 0Fh IRWTR3H CEIR Wake-Up, Range 3, High Limit Register R/W Page 290 ZFx86 Data Book 1.0 Rev D Page 279 4 Table 4.70 Wake-Up Events Status Register (WKSR) - 00H Bit Name Reset 7 6 S_GPWI02 S_GPWI01 Event Event Status Status 0 0 5 4 3 2 1 0 CEIR Event Status Mouse Event Status KBD Event Status RING Event Status RI2 Event Status RI1 Event Status 0 0 0 0 0 0 R/W: This register is set to 00h on power-up of VPP or software reset. It indicates which wake-up events occurred. Bit 7 Description S_GPWI02 Event Status This sticky bit shows the status of the S_GPWI02 event detection. 0 = Event not detected (default) 1 = Event detected 6 S_GPWI01 Event Status This sticky bit shows the status of the S_GPWI01 event detection. 0 = Event not detected (default) 1 = Event detected 5 CEIR Event Status This sticky bit shows the status of the CEIR event detection. 0 = Event not detected (default) 1 = Event detected 4 Mouse Event Status This sticky bit shows the status of the Mouse event detection. 0 = Event not detected (default) 1 = Event detected 3 KBD Event Status This sticky bit shows the status of the KBD event detection. 0 = Event not detected (default) 1 = Event detected 2 RING Event Status This sticky bit shows the status of the RING event detection. 0 = Event not detected (default) 1 = Event detected 1 RI2 Event Status This sticky bit shows the status of RI2 event detection. 0 = Event not detected (default) 1 = Event detected 0 RI1 Event Status This sticky bit shows the status of RI1 event detection. 0 = Event not detected (default) 1 = Event detected ZFx86 Data Book 1.0 Rev D Page 280 4 Table 4.71 Wake-Up Events Control Register (WKCR) - 01H Bit 7 6 S_GPWI02 S_GPWI01 Event Event Enable Enable Name Reset 0 0 5 4 3 2 1 0 CEIR Event Enable Mouse Event Enable KBD Event Enable RING Event Enable RI2 Event Enable RI1 Event Enable 0 0 0 1 1 1 R/W: This register is set to 07h on power-up of VPP or software reset. Detected wake-up events that are enabled activate issue a power-up request signal to the controller. Bit 7 Description S_GPWI02 Event Enable 0= 1= 6 S_GPWI01 Event Enable 0= 1= 5 Disabled Enabled (default) RI2 Event Enable 0= 1= 0 Disabled (default) Enabled. RING Event Enable 0= 1= 1 Disabled (default) Enabled KBD Event Enable 0= 1= 2 Disabled (default) Enabled Mouse Event Enable 0= 1= 3 Disabled (default) Enabled CEIR Event Enable 0= 1= 4 Disabled (default) Enabled Disabled Enabled (default) RI1 Event Enable 0= 1= Disabled Enabled (default) ZFx86 Data Book 1.0 Rev D Page 281 4 Table 4.72 Wake-Up Configuration Register (WKCFG) - 02H Bit 7 Name Reserved Reset 0 6 5 4 3 2 S_GPWI02 S_GPWI02 S_GPWI01 S_GPWI01 Swap KBC Event Event Event Event Inputs Type Polarity Type Polarity 0 0 0 0 0 1 0 Configuration Bank Select 0 0 R/W: This register is set to 00h on power-up of VPP or software reset. It enables access to CEIR registers or to Keyboard/Mouse registers. Bit Description 7 Reserved 6 S_GPWI02 Event Type 0= 1= 5 S_GPWI02 Event Polarity 0= 1= 4 Falling edge, low level Rising edge, high level Swap KBC Inputs 0= 1= 1-0 Edge Level S_GPWI01 Event Polarity 0= 1= 2 Falling edge, low level Rising edge, high level S_GPWI01 Event Type 0= 1= 3 Edge Level No swapping (default) KBD (KBCLK, KBDAT) and Mouse (MCLK, MDAT) inputs swapped Configuration Bank Select Bits 1 0 0 0 0 1 1 X Bank Selected Keyboard/Mouse Registers (Bank 0) CEIR Registers (Bank 1) Reserved ZFx86 Data Book 1.0 Rev D Page 282 4 4.9.3.7. PS/2 Keyboard and Mouse Wake-Up Events The SWC can be configured to detect any predetermined PS/2 keyboard or mouse activity. Mouse Wake-Up Events Program the mouse wake-up detection mechanism to detect either any mouse click or movement, or a specific programmable click (left or right) or double-click. The detection mechanisms for keyboard and mouse events are independent. Therefore, they can be operated simultaneously with no interference. Since both mechanisms are implemented by hardware which is independent of the device’s keyboard controller, the keyboard controller itself need not be activated to detect either keyboard or mouse events. See the ZFx86 User’s Guide for more information. To program this mechanism to wake-up on a specific event, set bits 6-4 of the PS2CTL register to the required value, according to the description of these bits in Table 4.73. Table 4.73 PS/2 Protocol Control Register (PS2CTL) (Bank 0 Offset 03H) Bit 7 6 Name Disable Parity Check Reset 0 5 4 3 Mouse Wake-Up Configuration 0 0 0 2 1 0 Keyboard Wake-Up Configuration 0 0 0 0 R/W: This register is set to 00h on power-up of VPP or software reset. It configures the PS/2 Keyboard and Mouse wake-up features Bit 7 6-4 Description Disable Parity Check Mouse Wake-Up Configuration 6 0 0 0 0 1 1 1 1 Bits 5 4 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 Configuration Disable Mouse wake-up detection Wake-up on any Mouse movement or button click Wake-up on left button click Wake-up on left button double-click Wake-up on right button click Wake-up on right button double-click Wake-up on any button single-click (left, right or middle) Wake-up on any button double-click (left, right or middle) ZFx86 Data Book 1.0 Rev D Page 283 4 Bit 3-0 Description Keyboard Wake-Up Configuration Bits 3 2 1 0 0 0 0 0 0 0 0 1 to 0 1 1 1 1 0 0 0 to 1 1 1 1 Configuration Disable Keyboard wake-up detection } } Special key seq 2-8 PS/2 scan codes, “Make” and “Break” (incl Shift, Alt keys) Password enabled with 1-8 keys “Make” code (excluding Shift and Alt keys) Table 4.74 Keyboard Data Shift Register (KDSR) - Bank 0 Offset 06H Bit 7 6 5 4 3 Name Keyboard Data Reset 0 2 1 0 R/O: This register is set to 00h on power-up of VPP or software reset. It stores the Keyboard data shifted in from the Keyboard during transmission, only when Keyboard wake-up detection is enabled. Table 4.75 Mouse Data Shift Register (MDSR) 07H Bit 7 6 5 4 3 2 1 Name Reserved Mouse Data Reset 0 0 0 R/O: This register is set to 00h on power-up of VCC_IO or software reset. It stores the Mouse data shifted in from the Mouse during transmission, only when Mouse wake-up detection is enabled. 4.9.3.8. PS/2 Keyboard Key Data Registers (PS2KEY0 - PS2KEY7) Eight registers (PS2KEY0-PS2KEY7) store the scan codes for the password or key sequence of the keyboard wake-up feature, as follows: • PS2KEY0 register stores the scan code for the first key in the password/key sequence. • PS2KEY1 register stores the scan code for the second key in the password/key sequence. ZFx86 Data Book 1.0 Rev D • PS2KEY2 - PS2KEY7 registers store the scan codes for the third to eighth keys in the password/key sequence. When one of these registers is set to 00h, it indicates that the value of the corresponding scan code byte is ignored (not compared). These registers are set to 00h on power-up of VPP or software reset. Location: Bank 0, Offset 08h-0Fh Type: R/W Page 284 4 Table 4.76 PS/2 Keyboard Key Data Registers (PS2KEY0 - PS2KEY7) Bit 7 6 5 Name 4 3 2 1 0 0 0 0 Scan Code of Keys 0-7 Reset 0 0 0 0 0 Table 4.77 CEIR Wake-Up Control Register (IRWCR) - Bank 1 Offset 3 Bit 7 Name 6 Reserved Reset 0 5 4 CEIR Protocol Select 0 0 3 2 1 0 Select IRRX2 Input Invert IRRXn Input Reserved CEIR Enable 0 0 0 0 0 R/W: This register is set to 00h on power-up of VPP or software reset. Bit Description 7-6 Reserved 5-4 CEIR Protocol Select Bits 5 4 0 0 0 1 1 X 3 Protocol RC5 NEC/RCA Reserved Select IRRX2 Input. This selects the IRRX input. 0 = IRRX1 (default) 1 = IRRX2 2 Invert IRRXn Input 0= 1= Not inverted (default) Inverted 1 Reserved 0 CEIR Enable 0= 1= Disabled (default) Enabled ZFx86 Data Book 1.0 Rev D Page 285 4 Table 4.78 CEIR Wake-Up Address Register (IRWAD) - Bank 1 Offset 05H Bit 7 6 5 4 3 Name CEIR Wake-Up Address Reset 0 2 1 0 R/W: This register defines the station address to be compared with the address contained in the incoming CEIR message. If CEIR is enabled (bit 0 of the IRWCR Register is 1) and an address match occurs, then bit 5 of the WKSR Register is set to 1 (see Table 4.70, “Wake-Up Events Status Register (WKSR) - 00H,” on page 280). This register is set to 00h on power-up of VPP or software reset. Table 4.79 CEIR Wake-Up Address Mask Register (IRWAM) - Bank 1 Offset 6 Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 CEIR Wake-Up Address Mask 1 1 1 0 0 R/W: Each bit in this register determines whether the corresponding bit in the IRWAD Register takes part in the address comparison. Bits 5, 6 and 7 must be set to 1 if the RC-5 protocol is selected. This register is set to E0h on power-up of VPP or software reset. Bit 7-0 Description CEIR Wake-Up Address Mask If the corresponding bit is 0, the address bit is not masked (enabled for compare). If the corresponding bit is 1, the address bit is masked (ignored during compare). Table 4.80 CEIR Address Shift Register (ADSR) - Bank 1 Offset 7 Bit 7 6 5 4 3 Name CEIR Address Reset 0 2 1 0 R/O: This register holds the received address to be compared with the address contained in the IRWAD register. This register is set to 00h on power-up of VPP or software reset. CEIR Wake-Up Range 0 Registers These registers define the low and high limits of time range 0. The values are represented in units of 0.1 msec. For the RC-5 protocol, the bit cell width must fall within this range for the cell to be consid- ZFx86 Data Book 1.0 Rev D ered valid. The nominal cell width is 1.778 msec for a 36 KHz carrier. IRWTR0L and IRWTR0H should be set to 10h and 14h respectively (default). For the NEC protocol, the time distance between two consecutive CEIR pulses that Page 286 4 encodes a bit value of 0 must fall within this range. The nominal distance for a 0 is1.125 msec for a 38 KHz carrier. IRWTR0L and IRWTR0H should be set to 09h and 0Dh respectively. Table 4.81 CEIR Wake-Up Range 0 Registers - IRWTR0L– Bank 1 Offset 8 Bit 7 Name Reset 6 5 4 Reserved 0 0 3 2 1 0 CEIR Pulse Change, Range 0, Low Limit 0 1 0 0 0 0 R/W: This register is set to 10h on power-up of VPP or software reset. Table 4.82 CEIR Wake-Up Range 0 Registers - IRWTR0H – Bank 1 Offset 9 Bit 7 Name Reset 6 5 4 Reserved 0 0 3 2 1 0 CEIR Pulse Change, Range 0, High Limit 0 1 0 1 0 0 R/W: This register is set to 14h on power-up of VPP or software reset. CEIR Wake-Up Range 1 Registers carrier. IRWTR1L and IRWTR1H should be set to 07h and 0Bh respectively (default). These registers define the low and high limits of time range 1. The values are represented in units of 0.1 msec. For the NEC/RCA protocol, the time between two consecutive CEIR pulses that encodes a bit value of 1 must fall within this range. The nominal time for a 1 is 2.25 msec for a 36 KHz carrier. IRWTR1L and IRWTR1H should be set to 14h and 19h respectively. For the RC-5 protocol, the pulse width defining a half-bit cell must fall within this range in order for the cell to be considered valid. The nominal pulse width is 0.889 for a 38 KHz Table 4.83 CEIR Wake-Up Range 1 Registers - IRWTR1L – Bank 1 Offset 0AH Bit 7 6 Name Reserved Reset 0 5 4 3 2 1 0 CEIR Pulse Change, Range 1, Low Limit 0 0 1 1 1 R/W: This register is set to 07h on power-up of VPP or software reset. ZFx86 Data Book 1.0 Rev D Page 287 4 Table 4.84 CEIR Wake-Up Range 1 Registers - IRWTR1H – Bank 1 Offset 0BH Bit 7 6 Name Reserved Reset 0 5 4 3 2 1 0 CEIR Pulse Change, Range 1, High Limit 0 1 0 1 1 R/W: This register is set to 0Bh on power-up of VPP or software reset. ZFx86 Data Book 1.0 Rev D Page 288 4 For the NEC/RCA protocol, the header pulse width must fall within this range in order for the header to be considered valid. The nominal value is 9 msec for a 38 KHz carrier. IRWTR2L and IRWTR2H should be set to 50h and 64h respectively (default). CEIR Wake-Up Range 2 Registers These registers define the low and high limits of time range 2. The values are represented in units of 0.1 msec. These registers are not used when the RC-5 protocol is selected. Table 4.85 CEIR Wake-Up Range 2 Registers - IRWTR2L – Bank 1 0CH) Bit 7 6 Name Reset 5 4 3 2 1 0 0 0 CEIR Pulse Change, Range 2, Low Limit 0 1 0 1 0 0 R/W: This register is set to 50h on power-up of Vpp or software reset. Table 4.86 CEIR Wake-Up Range 2 Registers - IRWTR2H – Bank 1 0DH Bit 7 6 Name Reset 5 4 3 2 1 0 0 0 CEIR Pulse Change, Range 2, High Limit 0 1 1 0 0 1 R/W: This register is set to 64h on power-up of Vpp or software reset. For the NEC protocol, the post header gap width must fall within this range in order for the gap to be considered valid. The nominal value is 4.5 msec for a 36 KHz carrier. IRWTR3L and IRWTR3H should be set to 28h and 32h respectively (default). CEIR Wake-Up Range 3 Registers These registers define the low and high limits of time range 3. The values are represented in units of 0.1 msec. These registers are not used when the RC-5 protocol is selected. Table 4.87 CEIR Wake-Up Range 3 Registers - IRWTR3L – Bank 1 OEH Bit 7 6 Name Reset 5 4 3 2 1 0 0 0 CEIR Pulse Change, Range 3, Low Limit 0 0 1 0 1 0 R/WS: This register is set to 28h on power-up of Vpp or software reset. ZFx86 Data Book 1.0 Rev D Page 289 4 Table 4.88 CEIR Wake-Up Range 3 Registers - IRWTR3H – Bank 1 OFH Bit 7 6 5 Name Reset 4 3 2 1 0 1 0 CEIR Pulse Change, Range 3, High Limit 0 0 1 1 0 0 R/W: This register is set to 32h on power-up of Vpp or software reset. CEIR Recommended Values Table 4.89 lists the recommended time ranges limits for the different protocols and their four applicable ranges. The values are represented in hexadecimal code where the units are of 0.1 msec. Table 4.89 Time Range Limits for CEIR Protocols RC-5 NEC RCA Range Low Limit High Limit Low Limit 0 10h 14h 1 07h 2 3 ZFx86 Data Book 1.0 Rev D High Limit Low Limit High Limit 09h 0Dh 0Ch 12h 0Bh 14h 19h 16h 1Ch - - 50h 64h B4h DCh - - 28h 32h 23h 2Dh Page 290 4 4.9.4. SWC Register Bitmap Table 4.90 Banks 0 and 1 - The Common Three-Register Map Register Bits Offset Mnemonic 7 6 5 4 3 2 1 0 00h WKSR S_GPWI02 Event Status S_GPWI01 Event Status CEIR Event Status Mouse Event Status KBD Event Status RING Event Status RI2 Event Status RI1 Event Status 01h WKCR S_GPWI02 Event Enable S_GPWI01 Event Enable CEIR Event Enable Mouse Event Enable KBD Event Enable RING Event Enable RI2 Event Enable RI1 Event Enable 02h WKCFG Reserved S_GPWI01 S_GPWI02 Swap KBC S_GPWI01 S_GPWI02 Event Event Inputs Event Type Event Type Polarity Polarity Configuration Bank Select Table 4.91 Bank 0 - PS/2 Keyboard/Mouse Wake-Up Config/Ctrl Registers Register Bits Offset Mnemonic 7 03h PS2CTL Disable Parity 6 5 4 3 Mouse Wake-Up Configuration 04-05 2 1 0 Keyboard Wake-Up Configuration Reserved 06h KDSR 07h MDSR 08-0F PS2KEY0PS2KEY7 Keyboard Data Reserved Mouse Data Scan Code of Keys 0-7 Table 4.92 CEIR Wake-Up Configuration and Control Registers Register Offset Mnemonic 03h IRWCR Bits 7 6 Reserved 04h 5 4 CEIR Protocol Select 3 2 1 0 Select IRRX2 Input Invert IRRXn Input Reserved CEIR Enable Reserved 05h IRWAD CEIR Wake-Up Address 06h IRWAM CEIR Wake-Up Address Mask ZFx86 Data Book 1.0 Rev D Page 291 4 Table 4.92 CEIR Wake-Up Configuration and Control Registers 07h ADSR CEIR Address 08h IRWTR0L Reserved CEIR Pulse Change, Range 0, Low Limit 09h IRWTR0H Reserved CEIR Pulse Change, Range 0, High Limit 0Ah IRWTR1L Reserved CEIR Pulse Change, Range 1, Low Limit 0Bh IRWTR1H Reserved CEIR Pulse Change, Range 1, High Limit 0Ch IRWTR2L CEIR Pulse Change, Range 2, Low Limit 0Dh IRWTR2H CEIR Pulse Change, Range 2, High Limit 0Eh IRWTR3L CEIR Pulse Change, Range 3, Low Limit 0Fh IRWTR3H CEIR Pulse Change, Range 3, High Limit 4.9.4.1. Serial Port 1 And Serial Port 2 Configuration Serial Ports 1 and 2 are identical, except for their reset values as shown in Table 4.93 below. Logical Devices 2 and 3 (SP2 and SP1) Configuration Serial Port 1 is designated as logical device 3, and Serial Port 2 as logical device 2. Table 4.93 lists the configuration registers which affect Serial Ports 1 and 2. Only the last register (F0h) is described here. See Sections 4.5.5 and 4.5.6 for descriptions of the others. Table 4.93 Serial Ports 1 and 2 Configuration Registers Type Reset Port 1 Reset Port 2 30h Activate. See also bit 0 of the SIOCF1 register. R/W 00h 00h 60h Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. R/W 03h 02h 61h Base Address LSB register. Bit 2-0 (for A2-0) are read only, 000b. R/W F8h F8h 70h Interrupt Number R/W 04h 03h 71h Interrupt Type. Bit 1 is R/W; other bits are read only. R/W 03h 03h 74h Report no DMA Assignment RO 04h 04h 75h Report no DMA Assignment RO 04h 04h F0h Serial Ports 1 and 2 Configuration register R/W 02h 02h Index Configuration Register or Action ZFx86 Data Book 1.0 Rev D Page 292 4 Table 4.94 Serial Ports 1 and 2 Configuration Register - F0H Bit 7 Name Bank Select Enable Reset 0 6 5 4 3 Reserved 0 0 0 0 2 1 0 Busy Indicator Power Mode Control TRI-STATE Control 0 1 0 RW. This register is reset by hardware to 02 Bit 7 Description Bank Select Enable Enables bank switching for Serial Ports 1 and 2. 0 = Disabled (default). 1 = Enabled 6-3 2 Reserved Busy Indicator Read only bit used by power management software to decide when to power-down Serial Ports 1 and 2 logical devices. 0 = No transfer in progress (default). 1 = Transfer in progress. 1 Power Mode Control When the logical device is active in: 0 = Low power mode Serial Ports 1 and 2 Clock disabled. The output signals are set to their default states. The RI input signal can be programmed to generate an interrupt. Registers are maintained. (Unlike Active bit in Index 30 that also prevents access to Serial Ports 1 or 2 registers.) 1 = Normal power mode Serial Ports 1 and 2 clock enabled. Serial Ports 1 and 2 are functional when the respective logical devices are active (default). 0 TRI-STATE Control Controls the TRI-STATE status of the device output pins when it is inactive (disabled). 0 = Disabled (default) 1 = Enabled when device inactive ZFx86 Data Book 1.0 Rev D Page 293 4 4.9.4.2. System Wake-Up Control (SWC) — Logical Device 4 Table 4.95 System Wake-Up Control (SWC) Configuration Index Configuration Register or Action Type Reset 30h Activate. When bit 0 is cleared, the registers of this logical device are not accessible.a R/W 00h 60h Base Address MSB register R/W 00h 61h Base Address LSB register. Bits 3-0 (for A3-0) are read only, 0000b. R/W 00h 70h Interrupt Number (For routing the internal PWUREQ signal). R/W 00h 71h Interrupt Type. Bit 1 is read/write. Other bits are read only. R/W 03h 74h Report no DMA assignment RO 04h 75h Report no DMA assignment RO 04h a. The logical device registers are maintained, and all wake-up detection mechanisms are functional. 4.9.5. Keyboard/Mouse Control The KBC is implemented physically as a single hardware module and houses two separate logical devices: a Mouse controller (logical device 5) and a Keyboard controller (logical device 6). P10, P11, P13-P16, P22-P27 of the KBC core are not available on dedicated pins; neither are T0 and T1, P10, P11, P22, P23, P26, P27, T0 and T1 are used to implement the Keyboard and Mouse interface. The hardware KBC module is integrated to provide the following pin functions: KBLOCK (P17), KBDAT, KBCLK, MDAT, and MCLK. KBLOCK is implemented as bi-directional, open-drain pins. The Keyboard and Mouse interfaces are implemented as bi-directional, open-drain pins. Their internal connections are shown in Figure 4-8. The KBC executes a program fetched from an on-chip 2Kbyte ROM. The code programmed in this ROM is user-customizable. The KBC has two interrupt request signals: one for the Keyboard and one for the Mouse. The interrupt requests are implemented using ports P24 and P25 of the KBC core. The interrupt requests are controlled exclusively by the KBC firmware, except for the type and number, which are affected by configuration registers. ZFx86 Data Book 1.0 Rev D Page 294 4 The interrupt requests are implemented as bidirectional signals. When an I/O port is read, all unused bits return the value latched in the output registers of the ports. For KBC firmware that implements interrupton-OBF schemes, it is recommended to implement it as follows: • Put the data in DBBOUT. • Set the appropriate port bit to issue an interrupt request.. KBC Internal Interface Bus P17 KBLOCK P26 KBCLK STATUS DBBIN T0 DBBOUT P27 KBDAT P10 P23 MCLK T1 KBD IRQ Plug and Play Matrix P24 Mouse IRQ P22 MDAT P11 P25 Figure 4-8 Keyboard and Mouse Interfaces 4.9.5.1. Logical Devices 5 and 6 (Mouse and Keyboard) Configuration Tables 4.96 and 4.97 list the configuration registers which affect the Mouse and the Keyboard respectively. Only the last register (F0h) is described here. See Sections 4.5.5 and 4.5.6 for descriptions of the others. Table 4.96 Mouse Configuration Registers Index Mouse Configuration Register or Action Type Reset 30h Activate. See also bit 0 of the SIOCF1. When the Mouse of the KBC is inactive, the IRQ selected by the Mouse Interrupt Number register (index 70h) is not asserted. This register has no effect on host KBC commands handling the PS/2 Mouse. R/W 00h 70h Mouse Interrupt Number R/W 0Ch 71h Mouse Interrupt Type. Bits 1,0 are read/write; other bits are read only. R/W 02h 74h Report no DMA assignment RO 04h 75h Report no DMA assignment RO 04h ZFx86 Data Book 1.0 Rev D Page 295 4 Table 4.97 Keyboard Configuration Registers Index Keyboard Configuration Register or Action Type Reset 30h Activate. See also bit 0 of the SIOCF1. R/W 01h 60h Data Port Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. R/W 00h 61h Data Port Base Address LSB register. Bits 2-0 are read only 000b. R/W 60h 62h Command Port Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. R/W 00h 63h Command Port Base Address LSB. Bits 2-0 are read only 100b. R/W 64h 70h KBC Interrupt Number R/W 01h 71h KBC Interrupt Type. Bits 1,0 are read/write; others are read only. R/W 02h 74h Report no DMA assignment RO 04h 75h Report no DMA assignment RO 04h F0h KBC Configuration register R/W 40h Table 4.98 iKBC Configuration Register - F0H Bit 7 6 5 4 KBC Clock Source Name Reset 0 1 3 2 1 Reserved 0 0 0 Required 0 TRI-STATE Control 0 0 0 0 RW. This register is reset by hardware to 40H. To change the clock frequency of the KBC, perform the following: 1. Disable the KBC logical devices. 2. Change the frequency setting. 3. Enable the KBC logical devices. Bit 7-6 Description KBC Clock Source The clock source can be changed only when the KBC is inactive (disabled). Bits 7 6 0 0 1 1 5-1 0 1 0 1 Function 8 MHz 12 MHz (default) 16 MHz Reserved Reserved. Use read-modify-write to change the value of the register. Do not change the value of these bits. Bit 2 must be 0. ZFx86 Data Book 1.0 Rev D Page 296 4 Bit Description 0 TRI-STATE Control If KBD is inactive (disabled) when this bit is set, the KBD pins (KBCLK and KBDAT) are in TRI-STATE. If Mouse is inactive (disabled) when this bit is set, the Mouse pins (MCLK and MDAT) are in TRI-STATE. 0 = Disabled (default) 1 = Enabled 4.9.6. Infrared Communication Port Configuration Table 4.99 lists the configuration registers which affect the Infrared Communication Port. Only the last register (F0h) is described here. See Sections 4.5.5 and 4.5.6 for descriptions of the others. Table 4.99 Infrared Communication Port Configuration Registers Index Configuration Register or Action Type Reset 30h Activate. See also bit 0 of the SIOCF1 register. R/W 00h 60h Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. R/W 03h 61h Base Address LSB register. Bit 2-0 (for A2-0) are read only, 000b. R/W E8h 70h Interrupt Number R/W 00h 71h Interrupt Type. Bit 1 is R/W; other bits are read only. R/W 03h 74h DMA Channel Select 0 (RX_DMA) R/W 04h 75h DMA Channel Select 1 (TX_DMA) R/W 04h F0h Infrared Communication Port Configuration register R/W 02h Table 4.100 Infrared Communication Port Configuration Register - F0H Bit 7 Name Bank Select Enable Reset 0 6 5 4 3 Reserved 0 0 0 2 1 0 Busy Indicator Power Mode Control TRI-STATE Control 0 1 0 0 RW. This register is reset by hardware to 02H Bit 7 Description Bank Select Enable Enables bank switching. 0 = All attempts to access the extended registers are ignored (default). 1 = Enables bank switching. 6-3 Reserved ZFx86 Data Book 1.0 Rev D Page 297 4 Bit 2 Description Busy Indicator This read only bit can be used by power management software to decide when to power-down the device. 0 = No transfer in progress (default). 1 = Transfer in progress. 1 Power Mode Control When the logical device is active in: 0 = Low power mode Clock disabled. The output signals are set to their default states. The RI input signal can be programmed to generate an interrupt. Registers are maintained. (Unlike Active bit in Index 30 that also prevents access to device registers.) 1 = Normal power mode Clock enabled. The device is functional when the logical device is active (default). 0 TRI-STATE Control When enabled and the device is inactive, the logical device output pins are in TRI-STATE. One exception is the IRTX pin, which is driven to 0 when Serial Port 2 is inactive and is not affected by this bit. 0 = Disabled (default) 1 = Enabled 4.10. ACCESS.Bus Interface (ACB) Configuration The ACB is a two-wire synchronous serial interface compatible with the ACCESS.bus physical layer. The ACB uses a 24 MHz internal clock. The six runtime registers are shown below. Table 4.101 ACB Runtime Registers Offset Mnemonic ZFx86 Data Book 1.0 Rev D Register Name Type 00h ACBSDA ACB Serial Data 01h ACBST ACB Status Varies per bit 02h ACBCST ACB Control Status Varies per bit 03h ACBCTL1 ACB Control 1 04h ACBADDR ACB Own Address R/W 05h ACBCTL2 R/W ACB Control 2 R/W R/W Page 298 4 Table 4.102 Access Bus Interface (ACB) Configuration Index Configuration Register or Action Type Reset 30h Activate. See also bit 0 of the SIOCF1 register R/W 00h 60h Base Address MSB register R/W 00h 61h Base Address LSB register. Bits 2-0 (for A2-0) are read only, 000b. R/W 00h 70h Interrupt Number R/W 00h 71h Interrupt Type. Bit 1 is read/write. Other bits are read only. R/W 03h 74h Report no DMA assignment RO 04h 75h Report no DMA assignment RO 04h F0h ACB Configuration register R/W 00h Table 4.103 ACB Configuration Register – F0H Bit 7 6 5 4 3 Reserved 0 0 0 1 Internal Pull-Up Enable Name Reset 2 0 0 0 0 Reserved 0 0 This register is reset by hardware to 00H. Bit 7-3 2 Description Reserved Internal Pull-Up Enable 0= 1= 1-0 No internal pull-up resistors on SCL and SDA (default) Internal pull-up resistors on SCL and SDA Reserved ZFx86 Data Book 1.0 Rev D Page 299 4 4.11. Real-time Clock (RTC) Table 4.104 shows the logical Device A real time clock configuration settings. Table 4.104 Logical Device A (RTC) Configuration Index Configuration Register or Action Type Reset 30h Activate. When bit 0 is cleared, the registers of this logical device are not accessible.a R/W 00h 60h Standard Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. R/W 00h 61h Standard Base Address LSB register. Bit 0 (for A0) is read only, 0b. R/W 70h 62h Extended Base Address MSB register. Bits 7-3 (for A15-11) are read only, 00000b. R/W 00h 63h Extended Base Address LSB register. Bit 0 (for A0) is read only, 0b. R/W 72h 70h Interrupt Number R/W 08h 71h Interrupt Type. Bit 1 is R/W; other bits are read only. R/W 00h 74h Report no DMA Assignment R/W 04h 75h Report no DMA Assignment R/W 04h F0h RAM Lock register (RLR) R/W 00h F1h Date of Month Alarm Offset register (DOMAO) R/W 00h F2h Month Alarm Offset register (MONAO) R/W 00h F3h Century Offset register (CENO) R/W 00h a. The logical device registers are maintained, and all RTC mechanisms are functional. Table 4.105 RAM Lock Register (RLR) - F0H Bit 7 Name Block Standard RAM Reset 0 6 5 4 3 2 Block Block Block Block Extended Extended Extended RAM Write RAM Write RAM Read RAM 0 0 0 0 1 0 Reserved 0 0 0 R/W: When a non-reserved bit is set to 1, it can be cleared only by hardware reset. Bit 7 Description Block Standard RAM 0= 1= No effect on Standard RAM access (default) Read and write to locations 38h-3Fh of the Standard RAM are blocked, writes ignored, and reads return FFh ZFx86 Data Book 1.0 Rev D Page 300 4 Bit 6 Description Block RAM Write 0= 1= 5 No effect on RAM access (default) Writes to RAM (Standard and Extended) are ignored Block Extended RAM Write. This bit controls writes to bytes 00h-1Fh of the Extended RAM. 0 = No effect on the Extended RAM access (default) 1 = Writes to bytes 00h-1Fh of the Extended RAM are ignored 4 Block Extended RAM Read This bit controls read from bytes 00h-1Fh of the Extended RAM. 0 = No effect on Extended RAM access (default) 1 = Reads to bytes 00h-1Fh of the Extended RAM are ignored 3 Block Extended RAM This bit controls access to the Extended RAM 128 bytes. 0 = No effect on Extended RAM access (default) 1 = Read and write to the Extended RAM are blocked: writes are ignored and reads return FFh 2-0 Reserved Table 4.106 Date Of Month Alarm Register Offset (DOMAO) – F1H Bit 7 6 Name Reserved Reset 0 5 4 3 2 1 0 0 0 1 0 0 0 Date of Month Alarm Register Offset Value 0 0 0 0 0 R/W Bit 7 6-0 Description Reserved Date of Month Alarm Register Offset Value Table 4.107 Month Alarm Register Offset (MAO) – F2H Bit 7 Name Reserved Reset 0 6 5 4 3 2 Month Alarm Register Offset Value 0 0 0 0 0 R/W Bit 7 6-0 Description Reserved Month Alarm Register Offset Value ZFx86 Data Book 1.0 Rev D Page 301 4 Table 4.108 Century Register Offset (CENO0) – F3H Bit 7 Name Reserved Reset 0 6 5 4 3 2 1 0 0 0 Century Register Offset Value 0 0 0 0 0 R/W Bit 7 6-0 Description Reserved Century Register Offset Value 4.11.1. RTC Overview The RTC provides timekeeping and calendar management capabilities. The RTC uses a 32.768 KHz signal as the basic clock for timekeeping. It also includes 242 bytes of batterybacked RAM for general-purpose use. The RTC provides the following functions: • Automatic switching from battery to VCC_IO • Internal power monitoring on the VRT bit • Oscillator disabling to save battery during storage • Software compatible with the DS1287 and MC146818 • Accurate timekeeping and calendar management 4.11.2. Functional Description • Alarm at a predetermined time and/or date 4.11.2.1. Bus Interface • Three programmable interrupt sources • Valid timekeeping during power-down, by utilizing external battery backup • 242 bytes of battery-backed RAM The RTC function is initially mapped to the default SuperI/O locations at indexes 70h to 73h (two Index/Data pairs). These locations may be reassigned, in compliance with Plug and Play requirements. • Internal oscillator circuit (the crystal itself is off-chip), or external clock supply for the 32.768KHz clock To access Bank 1, you most set the RAMSEL bit to ONE. RAMSEL bit is located at the general configuration registers, at bit 5 of the KRR (Keyboard and RTC Control Register), at index 0516. • A century counter 4.11.2.2. RTC Clock Generation • RAM lock schemes to protect its content • PnP support • Relocatable index and data registers • Module access enable/disable option The RTC uses a 32.768 KHz clock signal as the basic clock for timekeeping. The 32.768 KHz clock can be supplied by the i48 MHz clock, or by an oscillator (see Section 5.11. ‘System Clocking’ on page 447). • Host interrupt enable/disable option • Additional low-power features such as: ZFx86 Data Book 1.0 Rev D Page 302 4 4.11.2.3. Timing Generation The timing generation function divides the 32.768 KHz clock by 215 to derive a 1 Hz signal, which serves as the input for the seconds counter. This is performed by a divider chain composed of 15 divide-by-two latches, as shown in Figure 4-9. becomes active after half of the programmed period has elapsed, following divider chain activation. See Table 4.126 on page 314 for more details. 4.11.2.4. Timekeeping Data Format DIVIDER CHAIN 1 2 2 2 3 2 13 14 15 2 2 2 1 Hz Note: When changing the above formats, reinitialize all the time registers. Reset DV2 DV1 DV0 6 5 Daylight Saving 4 Control Register A (CRA) 32.768 KHz To other modules X1C Osc Enable X2C Figure 4-9 Divider Chain Control Bits 6-4 (DV2-0) of the CRA Register control the following functions: • Normal operation of the divider chain (counting) • Divider chain reset to 0 • Oscillator activity when only VBAT power is present (backup state). The divider chain can be activated by setting normal operational mode (bits 6-4 of CRA). The first update occurs 500 ms after divider chain activation. Bits 3-0 of the CRA Register select one the of fifteen taps from the divider chain to be used as a periodic interrupt. The periodic flag ZFx86 Data Book 1.0 Rev D Time is kept in BCD or binary format, as determined by bit 2 (DM) of Control Register B (CRB), and in either 12 or 24-hour format, as determined by bit 1 of this register. Daylight saving time exceptions are handled automatically, as described in Table 4.129, “RTC Control Register B (CRB) - 0BH,” on page 316. Leap Years Leap year exceptions are handled automatically by the internal calendar function. Every four years, February is extended to 29 days. Year 2000 is a leap year. 4.11.2.5. Updating The time and calendar registers are updated once per second regardless of bit 7 (SET) of the CRB Register. Since the time and calendar registers are updated serially, unpredictable results may occur if they are accessed during the update. Therefore, you must ensure that reading or writing to the time storage locations does not coincide with a system update of these locations. There are several methods to avoid this contention. Method 1 1. Set bit 7 of the CRB Register to 1. This takes a “snapshot” of the internal time registers and loads them into the user copy registers. The user copy registers are seen when accessing the RTC from outside, and Page 303 4 are part of the double buffering mechanism. You may keep this bit set for up to 1 second, since the time/calendar chain continue to be updated once per second. 2. Read or write the required registers (since bit 1 is set, you access the user copy registers). If you perform a read operation, the information you read is correct from the time when bit 1 was set. If you perform a write operation, you write only to the user copy registers. 3. Reset bit 1 to 0. During the transition, the user copy registers update the internal registers, using the double buffering mechanism to ensure that the update is performed between two time updates. This mechanism enables new time parameters to be loaded in the RTC. Method 2 1. Access the RTC registers after detection of an Update Ended interrupt. This implies that an update has just been completed and 999 ms remain until the next update. 2. To detect an Update Ended interrupt, you may either: a. Poll bit 4 of the CRC Register. b. Use the following interrupt routine: — Set bit 4 of the CRB Register. — Wait for an interrupt from interrupt pin. — Clear the IRQF flag of the CRC Register before exiting the interrupt routine. Method 3 Poll bit 7 of the CRA Register. The update occurs 244 ms after this bit goes high. Therefore, if a 0 is read, the time registers remain stable for at least 244 ms. See Table 4.126 on page 314. 2. Set bit 6 of the CRB Register to enable the interrupt from periodic interrupt. 3. Wait for the periodic interrupt appearance. This indicates that the period represented by the following expression remains until another update occurs: [(Period of periodic interrupt / 2) + 244 ms] 4.11.2.6. Alarms The timekeeping function can be set to generate an alarm when the current time reaches a stored alarm time. After each RTC time update (every 1 second), the seconds, minutes, hours, date of month and month counters are compared with their corresponding registers in the alarm settings. If equal, bit 5 of the CRC Register is set. If the Alarm Interrupt Enable bit was previously set (bit 5 of the CRB Register), interrupt request pin will also be active. Any alarm register may be set to “Unconditional Match” by setting bits 7 and 6 to 11. This combination, not used by any BCD or binary time codes, results in a periodic alarm. The rate of this periodic alarm is determined by the registers that were set to “Unconditional Match”. For example, if all but the seconds and minutes alarm registers are set to “Unconditional Match”, an interrupt generates every hour at the specified minute and second. If all but the seconds, minutes and hours alarm registers are set to “Unconditional Match”, an interrupt generates every day at the specified hour, minute and second. Method 4 Use a periodic interrupt routine to determine if an update cycle is in progress, as follows: 1. Set the periodic interrupt to the desired period. ZFx86 Data Book 1.0 Rev D Page 304 4 4.11.2.7. Power Supply The device is supplied from three supply voltages. • System power supply voltage, VCC. • System power supply voltage, VCC_IO • Backup voltage, from low capacity Lithium battery, VBAT Note: The ZFx86 contains no reverse polarity protection. The RTC is supplied from one of two power supplies, VCC_IO or VBAT, according to their levels. An internal voltage comparator delivers the control signals to a pair of switches. Battery backup voltage VBAT maintains the correct time and saves the CMOS memory when the external voltage is absent, due to power failure or disconnection of the external AC/DC input power supply. To assure that the module uses power from the external source and not from VBAT, the voltage should be maintained above its minimum. The actual voltage point where the module switches from VBAT to VCC_IO is lower than the minimum workable battery voltage, but high enough to guarantee the correct functionality of the oscillator and the CMOS RAM. 4.11.2.8. System Bus Lockout During power on or power off, spurious bus transactions from the host may occur. To protect the RTC internal registers from corruption, all inputs are automatically locked out. The lockout condition is asserted when VCC_IO is lower than VBAT. 4.11.2.9. Power-Up Detection When system power is restored after a power failure or power off state, the lockout condition continues for a delay of 62 ms (minimum) to 125 ms (maximum) after the RTC switches from battery to system power. ZFx86 Data Book 1.0 Rev D The lockout condition is switched off immediately in the following situations: • If the Divider Chain Control bits, DV0-2, (bits 6-4 in the CRA Register) specify a normal operation mode (01X or 100), all input signals are enabled immediately upon detection of system voltage above that of the battery voltage. See Table 4.126 on page 314 • When battery voltage is below 1 Volt and HMR is 1, all input signals are enabled immediately upon detection of system voltage above that of battery voltage. This also initializes registers at offsets 00h through 0Dh in the ZF-Logic See Table 5.2 on page 406. • If bit 7 (VRT) of the CRD Register is 0, all input signals are enabled immediately upon detection of system voltage above VBAT. 4.11.2.10. Oscillator Activity The RTC oscillator is active if: • VCC_IO power supply is higher than its minimum specified at the DC spec, independent of the battery voltage, VBAT • VBAT power supply is higher than VBATMIN, regardless if VCC_IO is present or not. The RTC oscillator is disabled if: • During power-down (VBAT only), the battery voltage drops below VBATMIN. When this occurs, the oscillator may be disabled and its functionality cannot be guaranteed. • Software wrote 00X to DV2-0 bits of the CRA Register (see Table 4.126 on page 314) and VCC_IO is removed. This disables the oscillator and decreases the power consumption from the battery connected to the VBAT pin. When disabling Page 305 4 the oscillator, the CMOS RAM is not affected as long as the battery is present at a correct voltage level. If the RTC oscillator becomes inactive, the following features will be dysfunctional/disabled: • Timekeeping the CRC Register, and then deal with all pending interrupts by referring to this stored status. If an interrupt is not serviced before a second occurrence of the same interrupt condition, the second interrupt event is lost. Figure 4-10 illustrates the interrupt timing in the RTC. • Periodic interrupt • Alarm 4.11.2.11. Interrupt Handling The RTC has a single Interrupt Request line which handles the following three interrupt conditions: Bit 7 of CRA Bit 4 of CRC P • Update end interrupt. The interrupts are generated if the respective enable bits in the CRB Register are set prior to an interrupt event occurrence. Reading the CRC Register clears all interrupt flags. Thus, when multiple interrupts are enabled, the interrupt service routine should first read and store P/2 Bit 6 of CRC B • Periodic interrupt • Alarm interrupt A 244 µs P/2 30.5 µs C Bit 5 of CRC Flags (and IRQ) are reset at the conclusion of CRC read or by reset. A = Update In Progress bit high before update occurs = 244 µs B = Periodic interrupt to update = Period (periodic int) / 2 + 244 µs C = Update to Alarm Interrupt = 30.5 µs P = Period is programmed by RS3-0 of CRA Figure 4-10 Interrupt/Status Timing 4.11.2.12. Battery-Backed RAMs and Registers The RTC has two battery-backed RAMs and 17 registers, used by the logical units themselves. Battery-backup power enables information retention during system power down. The RAMs are: • Standard RAM • Extended RAM Note: The ZFx86 contains no reverse polarity protection. ZFx86 Data Book 1.0 Rev D The memory maps and register content of the RAMs is illustrated in Table 4.136, Table 4.137, and Table 4.138. The first 14 bytes and 3 programmable bytes of the Standard RAM are overlaid by time, alarm data and control registers. The rest 111 bytes are general-purpose memory. Registers with reserved bits should be written in “Read-Modify-Write” method. All register locations within the device are accessed by the RTC Index and Data registers (at base address and base address+1). Page 306 4 4.11.3. RTC Configuration Registers The Index register points to the register location being accessed, and the Data register contains the data to be transferred to or from the location. An additional 128 bytes of battery-backed RAM (also called Extended RAM) may be accessed via a second pair of Index and Data registers. Access the RTC configuration registers at any time during normal operation mode; for example, when VDD and VCC_IO are within the recommended operation range. This access is disabled during battery-backed operation. Access to the two RAMs may be locked. For details see Table 4.105 on page 300. Table 4.109 RTC Configuration Register Map Location Mnemonic Device specific RLR Device specific Name Type Reset Reference RAM Lock Register R/W HW Table 4.110 DOMAO Date of Month Alarm Register Offset R/W HW or SW Table 4.111 Device specific MONAO Month Alarm Register Offset R/W HW or SW Table 4.112 Device specific CENO Century Register Offset R/W HW or SW Table 4.113 Table 4.110 RAM Lock Register (RLR) Bit 7 Name Block Standard RAM Reset 0 6 5 4 3 Block Block Block Block Extended Extended Extended RAM Write RAM Write RAM Read RAM 0 0 0 0 2 1 0 Reserved 0 R/W. The location is device specific. When a non-reserved bit is set to 1, it can be cleared only by hardware reset. Bit 7 Description Block Standard RAM 0= 1= 6 Block RAM Write 0= 1= 5 No effect on Standard RAM access (default) Read and write to locations 38h-3Fh of the Standard RAM are blocked, writes ignored, and reads return FHA No effect on RAM access (default) Writes to RAM (Standard and Extended) are ignored Block Extended RAM Write This bit controls writes to bytes 00h-1Fh of the Extended RAM. 0 = No effect on the Extended RAM access (default) 1 = Writes to bytes 00h-1Fh of the Extended RAM are ignored ZFx86 Data Book 1.0 Rev D Page 307 4 Bit 4 Description Block Extended RAM Read This bit controls read from bytes 00h-1Fh of the Extended RAM. 0 = No effect on Extended RAM access (default) 1 = Reads to bytes 00h-1Fh of the Extended RAM are ignored 3 2-0 Block Extended RAM This bit controls access to the Extended RAM 128 bytes. 0 = No effect on Extended RAM access (default) 1 = Read and write to the Extended RAM are blocked: writes are ignored and reads return FFh Reserved Table 4.111 Date Of Month Alarm Register Offset (DOMAO) Bit 7 Name Reserved Reset 0 6 5 4 3 2 1 0 0 0 1 0 Date of Month Alarm Register Offset Value 0 0 0 0 0 R/W. The location is device specific. Bit 7 6-0 Description Reserved Date of Month Alarm Register Offset Value Table 4.112 Month Alarm Register Offset (DOMAO) Bit 7 6 5 4 3 2 Name Reserved Month Alarm Register Offset Value Reset 0 0 R/W. The location is device specific. Bit 7 6-0 Description Reserved Month Alarm Register Offset Value ZFx86 Data Book 1.0 Rev D Page 308 4 Table 4.113 Century Register Offset (CENO) Bit 7 6 5 4 3 2 Name Reserved Century Register Offset Value Reset 0 0 1 0 R/W. The location is device specific. Bit 7 6-0 Description Reserved Century Register Offset Value Table 4.114 RTC Configuration Register Bitmap Register Bits Location Mnemonic 7 6 5 4 3 Device specific RLR RAM Lock RAM Mask Write RAM Block Write RAM Block Read Upper RAM Block Device specific DOMAO Reserved Date of Month Alarm Register Offset Value Device specific MONAO Reserved Month Alarm Register Offset Value Device specific CENO Reserved Century Register Offset Value 2 1 0 Reserved 4.11.4. RTC Registers The RTC registers can be accessed at any time during normal operation mode; that is when VCC_IO is within the recommended operation range. This access is disabled during battery-backed operation. The write operation to these registers is also disabled if bit 7 of the CRD Register is 0 (see Table 4.131 on page 319). Note: Before attempting to perform any startup procedures, make sure to read about bit 7 (VRT) of the CRD Register. This section describes the RTC Timing and Control Registers that control basic RTC functionality. ZFx86 Data Book 1.0 Rev D Page 309 4 Table 4.115 RTC Register Map Index Mnemonic 00h SEC 01h SECA 02h MIN 03h Name Type Reset Reference Seconds Register R/W VPP PUR Table 4.116 Seconds Alarm Register R/W VPP PUR Table 4.117 Minutes Register R/W VPP PUR Table 4.118 MINA Minutes Alarm Register R/W VPP PUR Table 4.119 04h HOR Hours Register R/W VPP PUR Table 4.120 05h HORA Hours Alarm Register R/W VPP PUR Table 4.121 06h DOW Day Of Week Register R/W VPP PUR Table 4.122 07h DOM Date Of Month Register R/W VPP PUR Table 4.123 08h MON Month Register R/W VPP PUR Table 4.124 09h YER Year Register R/W VPP PUR Table 4.125 0Ah CRA RTC Control Register A R/W Bit specific Table 4.126 0Bh CRB RTC Control Register B R/W Bit specific Table 4.129 0Ch CRC RTC Control Register C R/O Bit specific Table 4.130 0Dh CRD RTC Control Register D R/O VPP PUR Table 4.131 Programmablea DOMA Date of Month Alarm Register R/W VPP PUR Table 4.132 Programmablea MONA Month Alarm Register R/W VPP PUR Table 4.133 Programmablea CEN Century Register R/W VPP PUR Table 4.134 a. Overlaid on RAM bytes in range 0Eh-7Fh. Table 4.116 Seconds Register (SEC)) – Index 00H Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 Seconds Data 0 0 0 0 0 R/W. Bit 7-0 Description Seconds Data Values may be 00 to 59 in BCD format or 00 to 3B in Binary format. ZFx86 Data Book 1.0 Rev D Page 310 4 Table 4.117 Seconds Alarm Register (SECA)) – 01H Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 2 1 0 0 0 0 2 1 0 0 0 0 Seconds Alarm Data 0 0 0 0 0 R/W. Bit 7-0 Description Seconds Alarm Data Values may be 00 to 59 in BCD format or 00 to 3B in Binary format. When bits 7 and 6 are both set to one (“11”), unconditional match is selected. Table 4.118 Minutes Register (MIN)) – 02H Bit 7 6 5 Name Reset 4 3 Minutes Data 0 0 0 0 0 R/W. Bit 7-0 Description Minutes Data Values may be 00 to 59 in BCD format or 00 to 3B in Binary format. Table 4.119 Minutes Alarm Register (MINA) – 03H Bit 7 6 5 Name Reset 4 3 Minutes Alarm Data 0 0 0 0 0 R/W. Bit 7-0 Description Minutes Alarm Data Values may be 00 to 59 in BCD format or 00 to 3B in Binary format. When bits 7 and 6 are both set to one (“11”), unconditional match is selected. ZFx86 Data Book 1.0 Rev D Page 311 4 Table 4.120 Hours Register (HOR) – 04H Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 Hours Data 0 0 0 0 0 R/W. Bit 7-0 Description Hours Data For 12-hour mode, values may be 01 to 12 (AM) and 81 to 92 (PM) in BCD format or 01 to 0C (AM) and 81 to 8C (PM) in Binary format. For 24-hour mode, values may be 0- to 23 in BCD format or 00 to 17 in Binary format. Table 4.121 Hours Alarm Register (HORA) – 05H Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 Hours Alarm Data 0 0 0 0 0 R/W. Bit 7-0 Description Hours Alarm Data For 12-hour mode, values may be 01 to 12 (AM) and 81 to 92 (PM) in BCD format or 01 to 0C (AM) and 81 to 8C (PM) in Binary format. For 24-hour mode, values may be 0- to 23 in BCD format or 00 to 17 in Binary format. When bits 7 and 6 are both set to one (“11”), unconditional match is selected. Table 4.122 Day Of Week Register (DOW) – 06H Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 Day Of Week Data 0 0 0 0 0 R/W. Bit 7-0 Description Day Of Week Data. Values may be 01 to 07 in BCD format or 01 to 07 in Binary format. ZFx86 Data Book 1.0 Rev D Page 312 4 Table 4.123 Date Of Month Register (DOM) – 07H Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 2 1 0 0 0 0 2 1 0 Date Of Month Data 0 0 0 0 0 R/W. Bit 7-0 Description Date Of Month Data Values may be 01 to 31 in BCD format or 01 to 1F in Binary format. Table 4.124 Month Register (MON) - 08H Bit 7 6 5 Name Reset 4 3 Month Data 0 0 0 0 0 R/W. Bit 7-0 Description Month Data Values may be 01 to 12 in BCD format or 01 to 0C in Binary format. Table 4.125 Year Register (YER) - 09H Bit 7 6 5 4 3 Name Year Data Reset 0 R/W. Bit 7-0 Description Year Data Values may be 00 to 99 in BCD format or 00 to 63 in Binary format. ZFx86 Data Book 1.0 Rev D Page 313 4 Table 4.126 RTC Control Register A (CRA) – 0AH Bit 7 6 Name Update in Progress Reset 0 5 4 3 Divider Chain Control 2-0 0 1 2 1 0 Periodic Interrupt Rate Select 3-0 0 0 0 0 0 R/W. This register controls test selection, among other functions. This register cannot be written before reading bit 7 of the CRD Register. Bit 7 Description Update in Progress This RO bit is not affected by reset. This bit reads 0 when bit 7 of the CRB Register is 1. 0 =: Timing registers not updated within 244 ms 1 = Timing registers updated within 244 ms 6-4 Divider Chain Control These R/W bits control the configuration of the divider chain for timing generation and register bank selection. See Table 4.127. They are cleared to 000 as long as bit 7 of the CRD Register is reads 0. 3-0 Periodic Interrupt Rate Select These R/W bits select one of fifteen output taps from the clock divider chain to control the rate of the periodic interrupt. See Table 4.128 and Figure 4-9. They are cleared to 000 as long as bit 7 of the CRD Register is reads 0. Table 4.127 Divider Chain Control and Test Selection DV2 DV1 DV0 CRA 6 CRA 5 CRA 4 0 0 X Oscillator Disabled 0 1 0 Normal Operation 0 1 1 Test 1 0 X 1 1 X Configuration ZFx86 Data Book 1.0 Rev D Divider Chain Reset Page 314 4 Table 4.128 Periodic Interrupt Rate Encoding Rate Select 3210 Periodic Interrupt Rate (ms) 0000 No interrupts 0001 3.906250 7 0010 7.812500 8 0011 0.122070 2 0100 0.244141 3 0101 0.488281 4 0110 0.976562 5 0111 1.953125 6 1000 3.906250 7 1001 7.812500 8 1010 15.625000 9 1011 31.250000 10 1100 62.500000 11 1101 125.000000 12 1110 250.000000 13 1111 500.000000 14 ZFx86 Data Book 1.0 Rev D Divider Chain Output Page 315 4 Table 4.129 RTC Control Register B (CRB) - 0BH Bit 7 6 5 4 3 Name Set Mode Periodic Interrupt Enable Alarm Interrupt Enable Update Ended Interrupt Enable Reserved Reset 0 0 0 0 0 2 Data Mode 0 1 Hour Mode 0 0 Daylight Saving 0 R/W. Bit 7 Description Set Mode.This bit is reset at VPP power-up reset only. 0= 1= 6 Timing updates occur normally User copy of time is “frozen”, allowing the time registers to be accessed whether or not an update occurs Periodic Interrupt Enable Bits 3-0 of the CRA Register page 314 determine the rate at which this interrupt is generated. It is cleared to 0 on RTC reset (that is, hardware or software reset) or when RTC is disabled. 0 = Disabled 1 = Enabled 5 Alarm Interrupt Enable This interrupt is generated immediately after a time update in which the seconds, minutes, hours, date and month time equal their respective alarm counterparts. It is cleared to 0 as long as bit 7 of the CRD Register is reads 0. 0 = Disabled 1 = Enabled 4 Update Ended Interrupt Enable This interrupt is generated when an update occurs. It is cleared to 0 on RTC reset (for example, hardware or software reset) or when the RTC is disable. 0 = Disabled 1 = Enabled 3 Reserved Bit always reads 0. 2 Data Mode This bit is reset at VPP power-up reset only. 0 = BCD format enabled 1 = Binary format enabled 1 Hour Mode This bit is reset at VPP power-up reset only. 0 = 12-hour format enabled 1 = 24-hour format enabled ZFx86 Data Book 1.0 Rev D Page 316 4 Bit 0 Description Daylight Saving This bit is reset at VPP power-up reset only. 0= 1= Disabled Enabled In the spring, time advances from1:59:59 AM to 3:00:00 AM on the first Sunday in April. In the fall, time returns from 1:59:59 AM to 1:00:00 AM on the last Sunday in October. ZFx86 Data Book 1.0 Rev D Page 317 4 Table 4.130 RTC Control Register C (CRC) - 0CH Bit 7 6 5 4 Name IRQ Flag Periodic Interrupt Flag Alarm Interrupt Flag Update Ended Interrupt Flag Reset 0 0 0 0 3 2 1 0 0 0 Reserved 0 0 R/O. Bit 7 Description IRQ Flag This RO bit mirrors the value on the interrupt output signal. When interrupt is active, IRQF is 1. To clear this bit (and deactivate the interrupt pin), read the CRC Register as the flag bits UF, AF and PF are cleared after reading this register. 0 = IRQ inactive 1 = Logic equation is true: (UIE and UF) or (AIE and AF) or (PIE and PF). 6 Periodic Interrupt Flag This RO bit is cleared to 0 on RTC reset (that is, hardware or software reset) or the RTC disabled. In addition, this bit is cleared to 0 when this register is read. 0 = No transition occurred on the selected tap since the last read 1 = Transition occurred on the selected tap of the divider chain 5 Alarm Interrupt Flag This RO bit is cleared to 0 as long as bit 7 of the CRD Register is reads 0. In addition, this bit is cleared to 0 when this register is read. 0 = No alarm detected since the last read 1 = Alarm condition detected 4 Update Ended Interrupt Flag This RO bit is cleared to 0 on RTC reset (for example, hardware or software reset) or the RTC disabled. In addition, this bit is cleared to 0 when this register is read. 0 = No update occurred since the last read 1 = Time registers updated 3-0 Reserved ZFx86 Data Book 1.0 Rev D Page 318 4 Table 4.131 RTC Control Register D (CRD) - 0DH Bit 7 6 5 4 3 Name Valid RAM and Time Reserved Reset 0 0 2 1 0 R/O. Bit Description 7 Valid RAM and Time. This bit senses the voltage that feeds the RTC (VCC_IO or ) and indicates whether or not it was too low since the last time this bit was read. If it was too low, the RTC contents (time/calendar registers and CMOS RAM) is not valid. 0 = The voltage that feeds the RTC was too low. 1 = RTC contents (time/calendar registers and CMOS RAM) valid 6-0 Reserved Table 4.132 Date of Month Alarm Register (DOMA) Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 Date of Month Alarm Data 1 1 0 0 0 R/W.Location is a Programmable Index Bit 7-0 Description Date of Month Alarm Data Values may be 01 to 31 in BCD format or 01 to 1F in Binary format. When bits 7 and 6 are both set to one (“11”), unconditional match is selected (default). Table 4.133 Month Alarm Register (MONA) Bit 7 6 5 Name Reset 4 3 2 1 0 0 0 0 Month Alarm Data 1 1 0 0 0 R/W.Location is a Programmable Index Bit 7-0 Description Month Alarm Data Values may be 01 to 12 in BCD format or 01 to 0C in Binary format. When bits 7 and 6 are both set to one (“11”), unconditional match is selected (default). ZFx86 Data Book 1.0 Rev D Page 319 4 Table 4.134 Century Register (CEN) Bit 7 6 5 4 3 Name Century Data Reset 0 2 1 0 R/W.Location is a Programmable Index Bit 7-0 Description Century Data Values may be 00 to 99 in BCD format or 00 to 63 in Binary format. Table 4.135 BCD and Binary Formats Parameter BCD Format Binary Format Seconds 00 to 59 00 to 3B Minutes 00 to 59 00 to 3B 12-hour mode: 01 to 12 (AM) 81 to 92 (PM) 24-hour mode: 00 to 23 12-hour mode: 01 to 0C (AM) 81 to 8C (PM) 24-hour mode: 00 to 17 Day 01 to 07 (Sunday = 01) 01 to 07 Date 01 to 31 01 to 1F 01 to 12 (January = 01) 01 to 0C Year 00 to 99 00 to 63 Century 00 to 99 00 to 63 Hours Month 4.11.4.1. Usage Hints 1. Read bit 7 of the CRD Register at each system power-up to validate the contents of the RTC registers and the CMOS RAM. When this bit is 0, the contents of these registers and the CMOS RAM are questionable. This bit is reset when the backup battery voltage is too low. The voltage level at which this bit is reset is below the minimum recommended battery voltage, 2.4 V. Although the RTC oscillator may function properly and the register contents may be correct at lower than 2.4 V, this bit is reset since correct functionality cannot be guaranteed. System BIOS may use a checksum method to revalidate the contents of the CMOS-RAM. The checksum byte should be stored in the same CMOS RAM. ZFx86 Data Book 1.0 Rev D 2. Change the backup battery while normal operating power is present, and not in backup mode, to maintain valid time and register information. If a low leakage capacitor is connected to VBAT, the battery may be changed in backup mode. 3. A rechargeable NiCd battery may be used instead of a non-rechargeable Lithium battery. This is a preferred solution for portable systems, where small size components is essential. 4. A supercap capacitor may be used instead of the normal Lithium battery. In a portable system usually the VCC_IO voltage is always present since the power management stops the system before its voltage falls to low. The supercap capacitor Page 320 4 in the range of 0.047-0.47 F should supply the power during the battery replacement. Table 4.136 RTC Register Bitmap Register Bits Index Mnemonic 00h SEC Seconds Data 01h SECA Seconds Alarm Data 02h MIN Minutes Data 02h MINA Minutes Alarm Data 04h HOR Hours Data 05h HORA Hours Alarm Data 06h DOW Day of Week Data 07h DOM Date of Month Data 08h MON Month Data 09h YER Year Data 0Ah CRA Update in Progress 0Bh CRB Set Mode Periodic Interrupt Alarm Interrupt Update Ended Interrupt 0Ch CRC IRQ Flag Periodic Interrupt Flag Alarm Interrupt Flag Update Ended Interrupt Flag 0Dh CRD Valid RAM and Time Prog. DOMA Date of Month Alarm Data Prog. MONA Month Alarm Data Prog. CEN Century Data 7 6 5 4 3 Divider Chain Control 2-0 2 1 0 Periodic Interrupt Rate Select 3-0 Reserved Data Mode Hour Mode Daylight Saving Reserved Reserved 4.11.5. RTC General-purpose RAM Map Table 4.137 Standard RAM Map Index 0Eh - 7Fha Description Battery-backed General-purpose 111-byte RAM a. Battery-backed 111-byte RAM (114 - 3 overlaid registers). Table 4.138 Extended RAM Map Index 00h - 7Fh ZFx86 Data Book 1.0 Rev D Description Battery-backed General-purpose 128-byte RAM. Page 321 4 4.12. ACCESS.bus Interface (ACB) The ACB is a two-wire synchronous serial interface compatible with the ACCESS.bus physical layer. The ACB is also compatible with Intel's SMBus and Philips’ I2C. Configure the ACB as a bus master or slave, and maintain bi-directional communication with both multiple master and slave devices. As a slave device, the ACB may issue a request to become the bus master. The ACB allows easy interfacing to a wide range of low-cost memories and I/O devices, including: EEPROMs, SRAMs, timers, ADC, DAC, clock chips and peripheral drivers. This text describes the general ACB functional block. A device may include a different implementation. For device specific implementation, see Section 4.5.4. ‘Device Architecture and Configuration’ on page 261. 4.12.1. Functional Description The ACCESS.bus protocol uses a two-wire interface for bi-directional communication between the ICs connected to the bus. The two interface lines are the Serial Data Line (SDL) and the Serial Clock Line (SCL). These lines should be connected to a positive supply via an internal or external pull-up resistor, and remain high even when the bus is idle. Each IC has a unique address and can operate as a transmitter or a receiver (though some peripherals are only receivers). During data transactions, the master device initiates the transaction, generates the clock signal and terminates the transaction. For example, when the ACB initiates a data transaction with an attached ACCESS.bus compliant peripheral, the ACB becomes the master. When the peripheral responds and transmits data to the ACB, their master/slave (data transaction initiator and clock generator) relationship is unchanged, even though their transmitter/receiver functions are reversed. ZFx86 Data Book 1.0 Rev D 4.12.1.1. Data Transactions One data bit is transferred during each clock pulse. Data is sampled during the high state of the serial clock (SCL). Consequently, throughout the clock’s high period, the data should remain stable (see Figure 4-11). Any changes on the SDA line during the high state of the SCL and in the middle of a transaction aborts the current transaction. New data should be sent during the low SCL state. This protocol permits a single data line to transfer both command/control information and data, using the synchronous serial clock. Each data transaction is composed of a Start Condition, a number of byte transfers (set by the software) and a Stop Condition to terminate the transaction. Each byte is transferred with the most significant bit first, and after each byte (8 bits), an Acknowledge signal must follow. The following sections provide further details of this process. During each clock cycle, the slave can stall the master while it handles the previous data or prepares new data. This can be done for each bit transferred, or on a byte boundary, by the slave holding SCL low to extend the clock-low period. Typically, slaves extend the first clock cycle of a transfer if a byte read has not yet been stored, or if the next byte to be transmitted is not yet ready. Some microcontrollers, with limited hardware support for ACCESS.bus, extend the access after each bit, thus allowing the software to handle this bit. Page 322 4 In addition to the first Start Condition, a repeated Start Condition can be generated in the middle of a transaction. This allows another device to be accessed, or a change in the direction of data transfer. . SDA SCL Data Line Stable: Data Valid Change of Data Allowed SDA Figure 4-11 Bit Transfer SCL S 4.12.1.2. Start and Stop Conditions The ACCESS.bus master generates Start and Stop Conditions (control codes). After a Start Condition is generated, the bus is considered busy and retains this status for a certain time after a Stop Condition is generated. A high to low transition of the data line (SDA) while the clock (SCL) is high indicates a Start Condition. A low to high transition of the SDA line while the SCL is high indicates a Stop Condition (Figure 4-12). P Start Condition Stop Condition Figure 4-12 Start and Stop Conditions 4.12.1.3. Acknowledge (ACK) Cycle The ACK cycle consists of two signals: the ACK clock pulse sent by the master with each byte transferred, and the ACK signal sent by the receiving device (see Figure 4-13). Acknowledge Signal From Receiver SDA MSB SCL 1 S 2 3-6 7 8 9 ACK 1 2 3-8 9 ACK Start Condition P Stop Condition Byte Complete Interrupt Within Receiver Clock Line Held Low by Receiver While Interrupt is Serviced Figure 4-13 ACCESS.bus Data Transaction ZFx86 Data Book 1.0 Rev D Page 323 4 The master generates the ACK clock pulse on the ninth clock pulse of the byte transfer. The transmitter releases the SDA line (permits it to go high) to allow the receiver to send the ACK signal. The receiver must pull down the SDA line during the ACK clock pulse, signalling that it has correctly received the last data byte and is ready to receive the next byte. Figure 4-14 illustrates the ACK cycle. Data Output by Transmitter Transmitter Stays Off Bus During Acknowledge Clock Data Output by Receiver Acknowledge Signal From Receiver SCL S 1 2 3-6 7 8 9 Start Condition Figure 4-14 ACCESS.bus Acknowledge Cycle 4.12.1.4. Acknowledge after Every Byte Rule According to this rule, the master generates an acknowledge clock pulse after each byte transfer, and the receiver sends an acknowledge signal after every byte received. There are two exceptions to this rule: 1. When the master is the receiver, it must indicate to the transmitter the end of data by not acknowledging (negative acknowledge) the last byte clocked out of the slave. This negative acknowledge still includes the acknowledge clock pulse (generated by the master), but the SDA line is not pulled down. 2. When the receiver is full, otherwise occupied, or a problem has occurred, it sends a negative acknowledge to indicate that it cannot accept additional data bytes. 4.12.1.5. Addressing Transfer Formats Each device on the bus has a unique address. Before any data is transmitted, the master transmits the address of the slave being addressed. The slave device should send an acknowledge signal on the SDA line, once it recognizes its address. ZFx86 Data Book 1.0 Rev D The address consists of the first 7 bits after a Start Condition. The direction of the data transfer (R/W) depends on the bit sent after the address, the eighth bit. A low to high transition during a SCL high period indicates the Stop Condition, and ends the transaction of SDA (see Figure 4-15). When the address is sent, each device in the system compares this address with its own. If there is a match, the device considers itself addressed and sends an acknowledge signal. Depending on the state of the R/W bit (1=read, 0=write), the device acts either as a transmitter or a receiver. The I2C bus protocol allows a general call address to be sent to all slaves connected to the bus. The first byte sent specifies the general call address (00h) and the second byte specifies the meaning of the general call (for example, write slave address by software only). Those slaves that require data acknowledge the call, and become slave receivers; other slaves ignore the call. Page 324 4 SDA SCL S Start Condition 1-7 8 9 Address R/W ACK 1-7 Data 8 9 1-7 ACK Data 8 9 ACK P Stop Condition Figure 4-15 A Complete ACCESS.bus Data Transaction 4.12.1.6. Arbitration on the Bus Multiple master devices on the bus require arbitration between their conflicting bus access demands. Bus control is initially determined according to address bits and clock cycle. If the masters are trying to address the same slave, data comparisons determine the outcome of this arbitration. In master mode, the device immediately aborts a transaction if the value sampled on the SDA line differs from the value driven by the device. (An exception to this rule is SDA while receiving data. The lines may be driven low by the slave without causing an abort.) The SCL signal is monitored for clock synchronization and to allow the slave to stall the bus. The actual clock period is set by the master with the longest clock period, or by the slave stall period. The clock high period is determined by the master with the shortest clock high period. When an abort occurs during the address transmission, a master that identifies the conflict should give up the bus, switch to slave mode and continue to sample SDA to check if it is being addressed by the winning master on the bus. ZFx86 Data Book 1.0 Rev D 4.12.1.7. Master Mode Requesting Bus Mastership An ACCESS.bus transaction starts with a master device requesting bus mastership. It asserts a Start Condition, followed by the address of the device it wants to access. If this transaction is successfully completed, the software may assume that the device has become the bus master. For the device to become the bus master, the software should perform the following steps: 1. Configure the INTEN bit of the ACBCTL1 Register to the desired operation mode (Polling or Interrupt) and set the START bit of this register. This causes the ACB to issue a Start Condition on the ACCESS.bus when the ACCESS.bus becomes free (BB bit of the ACBCST Register is cleared, or other conditions that can delay start). It then stalls the bus by holding SCL low. 2. If a bus conflict is detected (that is, another device pulls down the SCL signal), the BER bit of the ACBST Register set. 3. If there is no bus conflict, the MASTER bit of the ACBST Register and the SCAST of the ACBST Register sets. 4. If the INTEN bit of the ACBCTL1 Register is set and either the BER or SDAST bit of the ACBST Register sets, then an interrupt is issued. Page 325 4 Sending the Address Byte When the device is the active master of the ACCESS.bus (the MASTER bit of the ACBST Register sets), it can send the address on the bus. The address sent should not be the device’s own address, as defined by the ADDR bit of the ACBADDR Register if the SAEN bit of this register is set, nor should it be the global call address if the GCMTCH bit of the ACBCST Register is set. To send the address byte, use the following sequence: 1. For a receive transaction where the software wants only one byte of data, it should set the ACB bit of the ACBCTL1 Register. If only an address needs to be sent or if the device requires stall for some other reason, set the STASTRE bit of the ACBCTL1 Register. 2. Write the address byte (7-bit target device address) and the direction bit to the ACBSDA Register. This causes the ACB to generate a transaction. At the end of this transaction, the acknowledge bit received is copied to the NEGACK bit of the ACBST Register. During the transaction, the SDA and SCL lines are continuously checked for conflict with other devices. If a conflict is detected, the transaction is aborted, the BER bit of the ACBST Register is set and the MASTER bit of this register is cleared. 3. If the STASTRE bit of the ACBCTL1 Register is set and the transaction was successfully completed (that is, both the BER and NEGACK bits of the ACBST Register are cleared), the STASTR bit is set. In this case, the ACB stalls any further ACCESS.bus operations (that is, holds SCL low). If the INTEN bit of the ACBCTL1 Register is set, it also sends an interrupt request to the host. 4. If the requested direction is transmit and the start transaction was completed successfully (that is, neither the NEGACK nor the BER bit of the ACBST Register is set, and no other master has accessed the ZFx86 Data Book 1.0 Rev D device), the SDAST bit of the ACBST Register is set to indicate that the ACB awaits attention. 5. If the requested direction is receive, the start transaction was completed successfully and the STASTRE bit of the ACBCTL1 Register is cleared, the ACB starts receiving the first byte automatically. 6. Check that both the BER and NEGACK bits of the ACBST Register are cleared. If the INTEN bit of the ACBCTL1 Register is set, an interrupt is generated when either the BER or NEGACK bit of the ACBST Register is set. Master Transmit After becoming the bus master, the device can start transmitting data on the ACCESS.bus. To transmit a byte in an interrupt or polling controlled operation, the software should do the following: 1. Check that both the BER and NEGACK bits of the ACBST Register clears, and that the SDAST bit of the ACBST Register sets. If the STASTRE bit of the ACBCTL1 Register sets, also check that the STASTR bit of the ACBST Register clears (and clear it if required). 2. Write the data byte to be transmitted to the ACBSDA Register. When either the NEGACK or BER bit of the ACBST Register sets, an interrupt is generated. When the slave responds with a negative acknowledge, the NEGACK bit of the ACBST Register sets and the SDAST bit of the ACBST Register remains cleared. In this case, if the INTEN bit of the ACBCTL1 Register sets, an interrupt issues. Master Receive After becoming the bus master, the device starts receiving data on the ACCESS.bus. To receive a byte in an interrupt or polling operation, the software should: 1. Check that the SDAST bit of the ACBST Page 326 4 Register is set and that the BER bit is cleared. If the STASTRE bit of the ACBCTL1 Register is set, also check that the STASTRE bit of the ACBST Register is cleared (and clear it if required). 2. Set the ACK bit of the ACBCTL1 Register to 1, if the next byte is the last byte that should be read. This causes a negative acknowledge to be sent. 3. Read the data byte from the ACBSDA Register. Before receiving the last byte of data, set the ACK bit of the ACBCTL1 Register. Master Stop To end a transaction, set the STOP bit of the ACBCTL1 Register before clearing the current stall flag (that is, the SDAST, NEGACK or STASTR bit of the ACBST Register). This causes the ACB to send a Stop Condition immediately, and to clear the STOP bit of the ACBCTL1 Register. A Stop Condition may be issued only when the device is the active bus master (the MASTER bit of the ACBST Register is set). Master Bus Stall The ACB can stall the ACCESS.bus between transfers while waiting for the host response. The ACCESS.bus is stalled by holding the SCL signal low after the acknowledge cycle. Note that this is interpreted as the beginning of the following bus operation. The user must make sure that the next operation is prepared before the flag that causes the bus stall is cleared. The flags that can cause a bus stall in master mode are: • Negative acknowledge after sending a byte (ACBST.NEGACK=1). • ACBST.SDAST bit is set. • ACBCTL1.STASTRE=1, after a successful start (ACBST.STASTR=1). ZFx86 Data Book 1.0 Rev D Repeated Start A repeated start is performed when the device is already the bus master (ACBST.MASTER is set). In this case, the ACCESS.bus is stalled and the ACB awaits host handling due to: negative acknowledge (ACBST.NEGACK=1), empty buffer (ACBST.SDAST=1) and/or a stall after start (ACBST.STASTR=1). For a repeated start: 1. Set (1) ACBCTL1.START. 2. In master receive mode, read the last data item from ACBSDA. 3. Follow the address send sequence, as described in ‘Sending the Address Byte’ on 326. 4. If the ACB was awaiting handling due to ACBST.STASTR=1, clear it only after writing the requested address and direction to ACBSDA. Master Error Detection The ACB detects illegal Start or Stop Conditions (that is, a Start or Stop Condition within the data transfer, or the acknowledge cycle) and a conflict on the data lines of the ACCESS.bus. If an illegal condition is detected, BER is set, and master mode is exited (ACBST.MASTER is cleared). Bus Idle Error Recovery When a request to become the active bus master or a restart operation fails, the ACBST.BER bit is set to indicate the error. In some cases, both the device and the other device may identify the failure and leave the bus idle. In this case, the start sequence may be incomplete and the ACCESS.bus may remain deadlocked. To recover from deadlock, use the following sequence: 1. Clear ACBST.BER bit and the ACBCST.BB bit. 2. Wait for a time-out period to check that there Page 327 4 is no other active master on the bus (that is, ACBCST.BB remains cleared). 3. Disable, and re-enable the ACB to put it in the non-addressed slave mode. This completely resets the functional block. At this point, some of the slaves may not identify the bus error. To recover, the ACB becomes the bus master: it asserts a Start Condition, sends an address byte, then asserts a Stop Condition which synchronizes all the slaves. 4.12.1.8. Slave Mode A slave device waits in idle mode for a master to initiate a bus transaction. Whenever the ACB is enabled and it is not acting as a master (that is, ACBST.MASTER is cleared), it acts as a slave device. Once a Start Condition on the bus is detected, the device checks whether the address sent by the current master matches either: • The ACBADDR.ADDR value if ACBADDR.SAEN=1, or • The general call address if ACBCTL1.GCMEN=1. This match is checked even when ACBST.MASTER is set. If a bus conflict (on SDA or SCL) is detected, ACBST.BER is set, ACBST.MASTER is cleared and the device continues to search the received message for a match. 4. The software then reads the ACBST.XMIT bit to identify the direction requested by the master device. It clears the ACBST.NMATCH bit so future byte transfers are identified as data bytes. Slave Receive and Transmit Perform slave receive and transmit after a match is detected and the data transfer direction is identified. After a byte transfer, the ACB extends the acknowledge clock until the software reads or writes the ACBSDA Register. The receive and transmit sequences are identical to those used in the master routine. Slave Bus Stall When operating as a slave, the device stalls the ACCESS.bus by extending the first clock cycle of a transaction in the following cases: • ACBST.SDAST is set. • ACBST.NMATCH and ACBCTL1.NMINTE are set. Slave Error Detection The ACB detects illegal Start and Stop Conditions on the ACCESS.bus (that is, a Start or Stop Condition within the data transfer or the acknowledge cycle). When this occurs, the BER bit is set and MATCH and GMATCH are cleared, setting the ACB as an unaddressed slave. If an address match or a global match is detected: 4.12.1.9. Configuration 1. The device asserts its SDA pin during the acknowledge cycle 2. The ACBCST.MATCH and ACBST.NMATCH bits are set. If ACBST.XMIT=1 (that is, slave transmit mode) ACBST.SDAST is set to indicate that the buffer is empty. 3. If ACBCTL1.INTEN is set, an interrupt is generated if both the ACBCTL1.INTEN and ACBCTL1.NMINTE bits are set. The SDA and SCL are open-drain signals. The device permits the user to define whether to enable or disable the internal pull-up of each of these signals. ZFx86 Data Book 1.0 Rev D SDA and SCL Signals ACB Clock Frequency The ACB permits the user to set the clock frequency for the ACCESS.bus clock. The clock is set by the ACBCTL2.SCLFRQ field, which determines the SCL clock period used Page 328 4 by the device. This clock low period may be extended by stall periods initiated by the ACB or by another ACCESS.bus device. In case of a conflict with another bus master, a shorter clock high period may be forced by the other bus master until the conflict is resolved. 4.12.2. ACB Registers The register maps in this chapter use abbreviations for Type. See Table 4.55 "Register Type Abbreviations" on page 269 Table 4.139 ACB Register Map Offset Mnemonic Register Name Type Reference R/W Table 4.140 00h ACBSDA ACB Serial Data 01h ACBST ACB Status Varies per bit Table 4.141 02h ACBCST ACB Control Status Varies per bit Table 4.142 03h ACBCTL1 ACB Control 1 R/W Table 4.143 04h ACBADDR ACB Own Address R/W Table 4.144 05h ACBCTL2 ACB Control 2 R/W Table 4.145 Table 4.140 ACB Serial Data Register (ACBSDA) - 00H Bit 7 Name 6 5 4 3 2 1 0 ACB Serial Data Reset R/W: This shift register is used to transmit and receive data. The most significant bit is transmitted (received) first, and the least significant bit is transmitted last. Reading or writing to the ACBSDA Register is allowed only when the SDAST bit of the ACBST Register is set, or for repeated starts after setting the START bit. An attempt to access the register in other cases may produce unpredictable results. ZFx86 Data Book 1.0 Rev D Page 329 4 Table 4.141 ACB Status Register (ACBST) - 01H Bit 7 6 5 4 3 2 1 0 Name SLVSTP SDAST BER NEGACK STASTR NMATCH MASTER XMIT Reset 0 0 0 0 0 0 0 0 Type (R/W, etc.) varies per bit. This is a read register with a special clear. Some of its bits may be cleared by software, as described in the table below. This register maintains the current ACB status. On reset, and when the ACB is disabled, ACBST is cleared (00h). Bit Type 7 R/W1C Description Slave Stop – SLVSTP Writing 0 to SLVSTP is ignored. 0 = Writing 1 or ACB disabled 1 = Stop Condition detected after a slave transfer in which MATCH or GCMATCH was set 6 RO SDA Status – SDAST 0= 1= 5 R/W1C Reading from the ACBSDA Register during a receive, or when writing to it during a transmit. When ACBCTL1.START is set, reading the ACBSDA Register does not clear SDAST. This enables ACB to send a repeated start in master receive mode. SDA Data Register awaiting data (transmit - master or slave) or holds data that should be read (receive - master or slave). Bus Error – BER Writing 0 to BER is ignored. 0 = Writing 1 or ACB disabled 1 = Start or Stop Condition detected during data transfer (that is, Start or Stop Condition during the transfer of bits 2 through 8 and acknowledge cycle), or when an arbitration problem detected. 4 R/W1C Negative Acknowledge – NEGACK Writing 0 to NEGACK is ignored. 0 = Writing 1 or ACB disabled 1 = Transmission not acknowledged on the ninth clock (In this case, SDAST is not set) 3 R/W1C Stall After Start – STASTR Writing 0 to STASTR is ignored. 0 = Writing 1 or ACB disabled 1 = Address sent successfully (that is, a Start Condition sent without a bus error, or Negative Acknowledge), if ACBCTL1.STASTRE is set. This bit is ignored in slave mode. When STASTR is set, it stalls the ACCESS.bus by pulling down the SCL line, and suspends any further action on the bus (e.g., receive of first byte in master receive mode). In addition, if ACBCTL1.INTEN is set, it also causes the ACB to send an interrupt. 2 R/W1C New Match – NMATCH Writing 0 to NMATCH is ignored. If ACBCTL1.INTEN is set, an interrupt is sent when this bit is set. 0 = Software writes 1 to this bit 1 = Address byte follows a Start Condition or a repeated start, causing a match or a global-call match. ZFx86 Data Book 1.0 Rev D Page 330 4 Bit Type 1 RO Description Master 0= 1= 0 Arbitration loss (BER is set) or recognition of a Stop Condition Bus master request succeeded and master mode active Transmit – XMIT RO Direction bit. 0 = Master/slave transmit mode not active 1 = Master/slave transmit mode active Table 4.142 ACB Control Status Register (ACBCST) - 02H Bit 7 Name 6 Reserved Reset 0 5 4 3 2 1 0 TGSCL TSDA GCMTCH MATCH BB BUSY 0 X 0 0 0 0 0 This register configures and controls the ACB functional block. It maintains the current ACB status and controls several ACB functions. On reset and when the ACB is disabled, the non-reserved bits of ACBCST are cleared. Bit Type 7-6 Reserved 5 Toggle SCL Line – TGSCL R/W 4 Enables toggling the SCL line during error recovery. 0 = Clock toggle completed 1 = When the SDA line is low, writing 1 to this bit toggles the SCL line for one cycle. Writing 1 to TGSCL while SDA is high is ignored. Test SDA Line – TSDA RO This bit reads the current value of the SDA line. It can be used while recovering from an error condition in which the SDA line is constantly pulled low by an out-of-sync slave. Data written to this bit is ignored. Global Call Match – GCMTCH 3 RO 0= 1= Start Condition or repeated Start and a Stop Condition (including illegal Start or Stop Condition) In slave mode, ACBCTL1.GCMEN is set and the address byte (the first byte transferred after a Start Condition) is 00h. Address Match – MATCH 2 RO 1 Description 0= 1= Start Condition or repeated Start and a Stop Condition (including illegal Start or Stop Condition) ACBADDR.SAEN is set and the first 7 bits of the address byte (the first byte transferred after a Start Condition) match the 7-bit address in the ACBADDR Register. Bus Busy – BB R/W1C 0 = Writing 1, ACB disabled, or Stop Condition detected 1 = Bus active (a low level on either SDA or SCL), or Start Condition ZFx86 Data Book 1.0 Rev D Page 331 4 Bit Type 0 Description Busy RO This bit should always be written 0. This bit indicates the period between detecting a Start Condition and completing receipt of the address byte. After this, the ACB is either free or enters slave mode. 0 = Completion of any state below or ACB disabled 1 = ACB is in one of the following states: Generating a Start Condition Master mode (ACBST.MASTER is set) Slave mode (ACBCST.MATCH or ACBCST.GCMTCH set). Table 4.143 ACB Control Register 1 (ACBCTL1) - 03H Bit 7 6 5 4 3 2 1 0 Name STASTRE NMINTE GCMEN ACK Reserved INTEN STOP START Reset 0 0 0 0 0 0 0 0 R/W Bit 7 Description Stall After Start Enable – STASTRE 0= 1= 6 New Match Interrupt Enable – NMINTE 0: = 1= 5 No interrupt issued on a new match Interrupt issued on a new match only if ACBCTL1.INTEN set Global Call Match Enable – GCMEN 0= 1= 4 When cleared, ACBST.STASTR can not be set. However, if ACBST.STASTR is set, clearing STASTRE will not clear ACBST.STASTR. Stall after start mechanism enabled, and ACB stalls the bus after the address byte ACB not responding to global call Global call match enabled Receive Acknowledge This stop 0= 1= bit is ignored in transmit mode. When the device acts as a receiver (slave or master), this bit holds the transmitting instruction that is transmitted during the next acknowledge cycle. Cleared after acknowledge cycle Negative acknowledge issued on next received byte 3 Reserved 2 Interrupt Enable 0= 1= ACB interrupt disabled ACB interrupt enabled. An interrupt is generated in response to one of the following events: — — — — — — Detection of an address match (ACBST.NMATCH=1) and NMINTE=1 Receipt of Bus Error (ACBST.BER=1) Receipt of Negative Acknowledge after sending a byte (ACBST.NEGACK=1) Acknowledge of each transaction (same as the hardware set of the ACBST.SDAST bit) In master mode if ACBCTL1.STASTRE=1, after a successful start (ACBST.STASTR=1) Detection of a Stop Condition while in slave mode (ACBST.SLVSTP=1). ZFx86 Data Book 1.0 Rev D Page 332 4 Bit 1 Description Stop 0= 1= 0 Automatically cleared after STOP issued Setting this bit in master mode generates a Stop Condition to complete or abort current message transfer Start Set this bit only when in master mode or when requesting master mode. 0 = Cleared after Start Condition sent or Bus Error (ACBST.BER=1) detected 1 = Single or repeated Start Condition generated on the ACCESS.bus. If the device is not the active master of the bus (ACBST.MASTER=0), setting START generates a Start Condition when the ACCESS.bus becomes free (ACBCST.BB=0). An address transmission sequence should then be performed. If the device is the active master of the bus (ACBST.MASTER=1), setting START and then writing to the ACBSDA Register generates a Start Condition. If a transmission is already in progress, a repeated Start Condition is generated. Use this condition to switch the direction of the data flow between the master and the slave, or to choose another slave device without separating them with a Stop Condition. Table 4.144 ACB Own Address Register (ACBADDR) - 04H Bit 7 Name 6 SAEN 5 4 3 2 1 0 ADDR Reset R/W: This is a byte-wide register that holds the ACB ACCESS.bus address. The reset value of this register is undefined. Bit 7 Description Slave Address Enable – SAEN 0= 1= 6-0 ACB does not check for an address match with ADDR field ADDR field holds a valid address and enables the match of ADDR to an incoming address byte Own Address These bits hold the 7-bit device address. When in slave mode, the first 7 bits received after a Start Condition are compared with this field (first bit received is compared with bit 6, and the last bit with bit 0). If the address field matches the received data and ACBADDR.SAEN is 1, a match is declared. ZFx86 Data Book 1.0 Rev D Page 333 4 Table 4.145 ACB Control Register 2 (ACBCTL2) - 05H Bit 7 6 5 4 3 2 1 0 Name SCLFRQ ENABLE Reset 0 0 R/W: This register enables/disables the functional block and determines the ACB clock rate. Bit Description 7-1 SCL Frequency – SCLFRQ This field defines the SCL period (low and high time) when the device serves as a bus master. The clock low and high times are defined as follows: tSCLl = tSCLh = 2*SCLFRQ*tCLK where tCLK is the module input clock cycle,. Program SCLFRQ to values in the range of 00010002 (810) through 11111112 (12710). Using any other value has unpredictable results. 0 Enable 0= 1= ACB disabled, ACBCTL1, ACBST and ACBCST cleared, and clocks halted ACB enabled Table 4.146 ACB Register Bitmap Register Bits Offset Mnemonic 7 6 00h ACBSDA 01h ACBST 02h ACBCST 03h ACBCTL1 STASTRE 04h ACBADDR SAEN 05h ACBCTL2 5 4 3 2 1 0 ACB Serial Data SLVSTP SDAST Reserved ZFx86 Data Book 1.0 Rev D NMINTE BER NEGACK STASTR NMATCH MASTER XMIT TGSCL TSDA GCMTCH MATCH BB BUSY GCMEN ACK Reserved INTEN STOP START ADDR SCLFRQ ENABLE Page 334 4 4.13. Legacy Functional Blocks This chapter briefly describes the following blocks that provide legacy device functions: • Keyboard and Mouse Controller (KBC) The register maps in this chapter use abbreviations for Type. See Table 4.55 "Register Type Abbreviations" on page 269. • Floppy Disk Controller (FDC) 4.13.1. Keyboard and Mouse Controller (KBC) • Parallel Port • Serial Port 1 and Serial Port 2(SP1 and SP2), UART Functionality for both Serial Port 1 and Serial Port 2 • Infrared Communication Port Functionality The description of each Legacy block includes the sections listed below. • General Description The KBC is implemented physically as a single hardware module and houses two separate logical devices: a Mouse controller and a Keyboard controller. The KBC is functionally equivalent to the industry standard 8042A Keyboard controller, which may serve as a detailed technical reference for the KBC. • Register Map table(s) • Bitmap table(s) Table 4.147 KBC Register Map Offset 00h 04h Mnemonic Register Name Type DBBOUT Read KBC Data R DBBIN Write KBC Data W STATUS Read Status R DBBIN Write KBC Command W Table 4.148 KBC Bitmap Summary Register Offset Mnemonic Bits 7 6 5 4 3 2 DBBOUT KBC Data Bits (For Read cycles) DBBIN KBC Data Bits (For Write cycles) 1 0 IBF OBF 00h STATUS General Purpose Flags F1 F0 04h DBBIN ZFx86 Data Book 1.0 Rev D KBC Command Bits (For Write cycles) Page 335 4 4.13.2. Floppy Disk Controller (FDC) The generic FDC is a standard FDC with a digital data separator, and is DP8473 and N82077 software compatible. The FDC is implemented in this device as follows: • FM and MFM modes are supported. To select either mode, set bit 6 of the first command byte when writing to/reading from a diskette, where: 0 = FM mode 1 = MFM mode • Automatic media sense is supported on the Parallel Port pins. • A logic 1 is returned for all floating (TRISTATE) FDC register bits upon LPC I/O read cycles. Table 4.149 FDC Register Map Offset Mnemonic Register Name Type 00h SRA Status A RO 01h SRB Status B RO 02h DOR Digital Output R/W 03h TDR Tape Drive R/W 04h MSR Main Status R DSR Data Rate Select W FIFO Data (FIFO) 05h 06h 07h R/W Reserved DIR Digital Input R CCR Configuration Control W 4.13.2.1. FDC Bitmap Summary The FDC supports two system operation modes: PC-AT mode and PS/2 mode (MicroChannel systems). Unless specifically indicated otherwise, all fields in all registers are valid in both drive modes. ZFx86 Data Book 1.0 Rev D Page 336 4 Table 4.150 FDC Bitmap Summary Register Offset Mnemonic 00h SRAa 01h SRBa 02h DOR Bits 7 6 5 4 3 2 1 0 IRQ Pending Reserved Step TRK0 Head Select INDEX WP Head Direction Drive Select 0 Status WDATA RDATA WGATE Reserved MTR0 Motor Enable 0 DMAEN Reset Controller Reserved Reserved TDR 03h TDRb Reserved Reserved 05h Tape Drive Select 1,0 Logical Drive Exchange Drive ID Information MSR RQM Data I/O Direction Non-DMA Execution Command Drive 3 in Busy Progress DSR Software Reset Low Power Reserved Precompensation Delay Select 04h FIFO Drive 2 Busy Tape Drive Select 1,0 Drive 1 Busy Drive 0 Busy Data Transfer Rate Select Data Bits DIRc DSKCHG DIRa DSKCHG Reserved 07h 07h Drive Select CCR Reserved High Density Reserved a. Applicable only in PS/2 Mode b. Applicable only in Enhanced TDR Mode c. Applicable only in PC-AT Compatible Mode 4.13.3. Parallel Port The Parallel Port supports all IEEE1284 standard communication modes: • Compatibility (known also as Standard or SPP) • Bidirectional (known also as PS/2) • FIFO, EPP (known also as Mode 4) • ECP (with an optional Extended ECP mode) ZFx86 Data Book 1.0 Rev D Page 337 4 4.13.3.1. Parallel Port Register Map offset registers are available only when base address is 8-byte aligned. The Parallel Port functional block register maps are grouped according to first and second level offsets. EPP and second level Table 4.151 Parallel Port Register Map for First Level Offset First Level Offset Mnemonic Register Name Modes (ECR Bits) 7 6 5 Type 000h DATAR PP Data 000 001 R/W 000h AFIFO ECP Address FIFO 011 W 001h DSR Status All Modes RO 002h DCR Control All Modes R/W 003h ADDR EPP Address 100 R/W 004h DATA0 EPP Data Port 0 100 R/W 005h DATA1 EPP Data Port 1 100 R/W 006h DATA2 EPP Data Port 2 100 R/W 007h DATA3 EPP Data Port 3 100 R/W 400h CFIFO PP Data FIFO 010 W 400h DFIFO ECP Data FIFO 011 R/W 400h TFIFO Test FIFO 110 R/W 400h CNFGA Configuration A 111 RO 401h CNFGB Configuration B 111 RO 402h ECR Extended Control All Modes R/W 403h EIR Extended Index All Modes R/W 404h EDR Extended Data All Modes R/W 405h EAR Extended Auxiliary Status All Modes R/W Table 4.152 Parallel Port Register Map for Second Level Offset Second Level Offset Register Name Type 00h Control0 R/W 02h Control2 R/W 04h Control4 R/W 05h PP Confg0 R/W ZFx86 Data Book 1.0 Rev D Page 338 4 4.13.3.2. Parallel Port Bitmap Summary The Parallel Port functional block bitmaps are grouped according to first and second level offsets. Table 4.153 Parallel Port Bitmap Summary for First Level Offset Register Offset Mnemonic Bits 7 6 5 4 3 DATAR Data Bits AFIFO Address Bits 2 1 0 000h Printer Status ACK Status PE Status SLCT Status ERR Status Reserved EPP Time-out Status Direction Control Interrupt Enable PP Input Control Printer Automatic Initialization Line Feed Control Control Data Strobe Control 001h DSR 002h DCR 003h ADDR EPP Device or Register Selection Address Bits 004h DATA0 EPP Device or R/W Data 005h DATA1 EPP Device or R/W Data 006h DATA2 EPP Device or R/W Data 007h DATA3 EPP Device or R/W Data 400h CFIFO Data Bits 400h DFIFO Data Bits 400h TFIFO Data Bits 400h CNFGA 401h CNFGB 402h ECR 403h EIR 404h EDR 405h EAR Reserved Bit 7 of PP Confg0 Reserved Reserved Interrupt Request Value Interrupt Select Reserved DMA Channel Select ECP Mode Control ECP Interrupt Mask ECP Interrupt Service FIFO Full Reserved ECP DMA Enable Reserved FIFO Empty Second Level Offset Data Bits FIFO Tag ZFx86 Data Book 1.0 Rev D Reserved Page 339 4 Table 4.154 Parallel Port Bitmap Summary for Second Level Offset Register Second Level Offset Mnemonic Bits 7 6 00h Control0 02h Control2 SPP Compatibility 04h Control4 Reserved PP Confg0 Bit 3 of CNFGA 05h Reserved Channel Address Enable 5 DCR Register Live Freeze Bit Reserved Revision 1.7 or 1.9 Select PP DMA Request Inactive Time Demand DMA Enable 3 Both Serial Port 1 and 2 provide UART functionality with remote peripheral devices or a modem using a wired interface. The UART functions as a standard 16450, 16550, or as an Extended UART. 2 1 0 EPP Time-out Interrupt Mask Reserved Reserved Reserved ECP IRQ Channel Number 4.13.4. UART Functionality (SP1/SP2) ZFx86 Data Book 1.0 Rev D 4 PP DMA Request Active Time PE Internal Pull-up or Pull-down ECP DMA Channel Number 4.13.4.1. UART Mode Register Bank Overview Four register banks, each containing eight registers, control UART operation. All registers use the same 8-byte address space to indicate offsets 00h through 07h. The BSR register selects the active bank and is common to all banks. See Figure 4-16. Page 340 4 BANK 3 BANK 2 BANK 1 Common Register Throughout All Banks BANK 0 Offset 07h Offset 06h Offset 05h Offset 04h LCR/BSR Offset 02h Offset 01h Offset 00h 16550 Banks Figure 4-16 UART Mode Register Bank Architecture 4.13.4.2. SP1 and SP2 Register Maps for UART Functionality Table 4.155 Bank 0 Register Map Offset Mnemonic 00h RXD Receiver Data Port RO 00h TXD Transmitter Data Port W 01h IER Interrupt Enable R/W 02h EIR Event Identification (Read Cycles) RO FCR FIFO Control (Write Cycles) W LCRa Line Control BSRa Bank Select 04h MCR Modem/Mode Control R/W 05h LSR Link Status RO 06h MSR Modem Status RO 03h 07h Register Name SPR/ASCR Scratch pad/Auxiliary Status and Control Type R/W R/W a. When bit 7 of this Register is set to 1, bits 6-0 of BSR select the bank, as shown in Table 4.156. ZFx86 Data Book 1.0 Rev D Page 341 4 Table 4.156 Bank Selection Encoding BSR Bits Bank Selected 7 6 5 4 3 2 1 0 0 x x x x x x x 1 0 x x x x x x 1 1 1 x x x x 1 x 1 1 1 x x x x x 1 1 1 1 1 0 0 0 0 0 2 1 1 1 0 0 1 0 0 3 0 Table 4.157 Bank 1 Register Map Offset Mnemonic Register Name Type 00h LBGD(L) Legacy Baud Generator Divisor Port (Low Byte) R/W 01h LBGD(H) Legacy Baud Generator Divisor Port (High Byte) R/W 02h Reserved 03h LCR/BSR Line Control/Bank Select 04h - 07h R/W Reserved Table 4.158 Bank 2 Register Map Offset Mnemonic Register Name 00h BGD(L) Baud Generator Divisor Port (Low Byte) R/W 01h BGD(H) Baud Generator Divisor Port (High Byte) R/W 02h EXCR1 Extended Control1 R/W 03h LCR/BSR Line Control/Bank Select R/W 04h EXCR2 Extended Control 2 R/W 05h Type Reserved 06h TXFLV TX_FIFO Level R/W 07h RXFLV RX_FIFO Level R/W Table 4.159 Bank 3 Register Map Offset Mnemonic 00h MRID 01h Register Name Type Module Revision ID RO SH_LCR Shadow of LCR (Read Only) RO 02h SH_FCR Shadow of FIFO Control (Read Only) RO 03h LCR/BSR Line Control/Bank Select R/W 04h-07h ZFx86 Data Book 1.0 Rev D Reserved Page 342 4 4.13.4.3. SP1 and SP2 Bitmap Summary for UART Functionality Table 4.160 Bank 0 Bitmap Register Offset Mnemonic Bits 7 6 5 4 3 RXD Receiver Data Bits TXD Transmitter Data Bits 2 1 0 00h IERa Reserved 01h IERb EIRa 02h EIRb Reserved FEN1 TXEMP_IE FEN0 Reserved Reservedc or DMA_IEd Reserved MS_IE LS_IE TXLDL_IE RXHDL_IE MS_IE LS_IE TXLDL_IE RXHDL_IE RXFT IPR1 TXEMP_EV Reservedc or DMA_EVd MS_EV IPR0 IPF LS_EV or TXLDL_EV RXHDL_EV TXHLT_EV FCR RXFTH1 RXFTH0 TXFTH1 TXFTH0 Reserved TXSR RXSR FIFO_EN LCRe BKSE SBRK STKP EPS PEN STB WLS1 WLS0 BSRe BKSE ISEN or DCDLP RILP RTS DTR TX_DFR Reserved RTS DTR 03h MCRa Bank Select Reserved LOOP 04h MCRb Reserved 05h LSR ER_INF TXEMP TXRDY BRK FE PE OE RXDA 06h MSR DCD RI DSR CTS DDCD TERI DDSR DCTS SPRa Scratch Data 07h ASCRb a. b. c. d. e. Reserved TXURd RXACTd RXWDGd Reserved S_OETd Reserved RXF_TOUT Non-Extended Mode Extended Mode In SP2 only. In SP1 only When bit 7 of this register is set to 1, bits 6-0 of BSR select the bank, as shown in Table 4.156. ZFx86 Data Book 1.0 Rev D Page 343 4 Table 4.161 Bank 1 Bitmap Register Bits Offset Mnemonic 7 6 5 4 3 2 1 00h LBGD(L) Legacy Baud Generator Divisor (Least Significant Bits) 01h LBGD(H) Legacy Baud Generator Divisor (Most Significant Bits) 0 Reserved 02h 03h LCR/BSR Same as Bank 0 Reserved 04h-07h Table 4.162 Bank 2 Bitmap Register Offset Mnemonic Bits 7 6 5 4 3 2 1 00h BGD(L) Baud Generator Divisor Low (Least Significant Bits) 01h BGD(H) Baud Generator Divisor High (Most Significant Bits) 02h EXCR1 03h LCR/BSR 04h EXCR2 BTEST Reserved ETDLBK LOOP 0 Reserved EXT_SL Same as Bank 0 LOCK Reserved PRESL1 PRESL0 Reserved Reserved 05h 06h TXFLV Reserved TFL4 TFL3 TFL2 TFL1 TFL0 07h RXFLV Reserved RFL4 RFL3 RFL2 RFL1 RFL0 Table 4.163 Bank 3 Bitmap Register Bits Offset Mnemonic 7 6 5 4 3 00h MRID 01h SH_LCR BKSE SBRK STKP EPS PEN STB WLS1 WLS0 02h SH_FCR RXFTH1 RXFTH0 TXFHT1 TXFTH0 Reserved TXSR RXSR FIFO_EN 03h LCR/BSR Module ID (MID 7-4) 04h-07h ZFx86 Data Book 1.0 Rev D 2 1 0 Revision ID(RID 3-0) Same as Bank 0 Reserved Page 344 4 4.13.5. IR Communication Port (IRCP) Functionality This section describes the IR support registers. The IR functional block provides advanced, versatile serial communications features with IR capabilities. The IRCP also supports two DMA channels; the functional block uses either one or both of them. One channel required for IR-based applications, since IR communication works in half duplex fashion. Two channels would normally be needed to handle high-speed full duplex IR based applications. Section Quick Reference 4.13.5.1. "Functional Overview Of IR Modes" on page 346 "UART Mode" on page 346. "SHARP-IR Mode" on page 346. "SIR Mode" on page 347. "Consumer Electronic IR (CEIR) Mode" on page 347. "IrDA 1.1 MIR and FIR Modes" on page 349. "High Speed Infrared Transmit Operation" on page 350. "High Speed Infrared Receive Operation" on page 351. 4.13.5.2. "Special Features Description" on page 352 "FIFO Timeouts" on page 352. "Transmit Deferral" on page 352. "Automatic Fallback to 16550 Compatibility Mode" on page 353. "Optical Transceiver Interface" on page 354. 4.13.5.3. "IR Mode Register Bank Overview" on page 354 4.13.5.4. "IRCP Register Map" on page 356 "BANK 0" on page 356. "BANK 1" on page 373. "BANK 2" on page 375. "BANK 3" on page 380. "BANK 4" on page 382. "BANK 5" on page 385. "BANK 6" on page 388. "BANK 7" on page 393. ZFx86 Data Book 1.0 Rev D Page 345 4 4.13.5.1. Functional Overview Of IR Modes This section describes all operation modes. Although each mode is unique, certain system resources and features are common. UART Mode UART mode supports serial data communication with a remote peripheral device or modem using a wired interface. The functional block provides receive and transmit channels that operate concurrently in full-duplex mode. This functional block performs all functions required to conduct parallel data interchange with the system and composite serial data exchange with the external data channel. Use this mode to support serial data communications with a remote peripheral module or modem using a wired interface. It provides transmit and receive channels that operate concurrently to handle full-duplex operation. They perform parallel-to-serial conversion on data characters received from the CPU or a DMA controller, and serial-to-parallel conversion on data characters received from the serial interface. The format of the serial data stream is shown in Figure 4-17. A data character contains 5 to 8 data bits, preceded by a start bit and followed by an optional parity bit and a stop bit. Data is transferred in Little Endian order (least significant bit first). START -LSB- DATA 5-8 -MSB- PARITY STOP tional features include: transmitter FIFO (TX_FIFO) thresholding, DMA capability, and interrupts on transmitter empty and DMA event. The clock for both transmit and receive channels is provided by an internal baud generator that divides its input clock by any divisor value from 1 to 216 -1. This output clock frequency must be programmed to be sixteen times the baud rate value. The baud generator input clock is derived from a 24 MHz clock through a programmable prescaler. The prescaler value is determined by the PRESL bits in the EXCR2 register. Its default value is 13. This allows all the standard baud rates, up to 115.2 Kbaud, to be obtained. Smaller prescaler values allow baud rates up to 921.6 Kbaud (standard) and 1.5 Mbaud (non-standard). Before operation begins, both the communications format and baud rate must be programmed by the software. Program the communications format by loading a control byte into the LCR register, select the baud rate by loading an appropriate value into the baud generator divisor register. The software reads the status of the functional block at any time during operation. The status information includes FULL/EMPTY state for both transmit and receive channels, and any other condition detected on the received data stream, such as parity error, framing error, data overrun, or break event. Figure 4-17 Composite Serial Data SHARP-IR Mode Implement UART mode in standard 16450 and 16550 compatibility (Non-Extended) and Extended mode. UART 16450 compatibility mode is the default after power-up or reset. When you select Extended mode, the functional block architecture changes slightly and a variety of additional features are available. The interrupt sources are no longer prioritized, and an auxiliary status and control register replaces the scratch pad register. The addi- ZFx86 Data Book 1.0 Rev D This mode supports bidirectional data communication with a remote device using IR radiation as the transmission medium. Sharp-IR uses Digital Amplitude Shift Keying (DASK) and allows serial communication at baud rates up to 38.4 Kbaud. The format of the serial data is similar to the UART data format. Each data word is sent serially beginning with a 0 value start bit, followed by up to eight data bits (LSB first), an optional parity bit, and ending with at Page 346 4 least one stop bit with a binary value of one. A logical 0 is signalled by sending a 500 KHz continuous pulse train of IR radiation. A logical 1 is signalled by the absence of any IR signal. This functional block performs the modulation and demodulation operations internally, or relies on the external optical module to perform them. Sharp-IR device operation is similar to operation in UART mode; the main difference being that data transfer operations normally performed in half duplex fashion, and the modem control and status signals are not used. Selection of the Sharp-IR mode is controlled by the Mode Select (MDSL) bits in the MCR register when the functional block is in Extended mode, or by the IR_SL bits in the IRCR1 register when the functional block is in Non-Extended mode. This prevents legacy software, running in Non-Extended mode, from spuriously switching the functional block to UART mode when the software writes to the MCR register. SIR Mode SIR mode supports bidirectional data communication with a remote device using IR radiation as the transmit medium. SIR allows serial communication at baud rates up to 115.2 Kbaud. The serial data format is similar to the UART data format. Each data word is sent serially beginning with a 0 value start bit, followed by eight data bits (LSB first), an optional parity bit, and ending with at least one stop bit with a binary value of 1. A 0 value is signalled by sending a single IR pulse. A 1 value is signalled by not sending any pulse. The width of each pulse can be either 1.6 msec or 3/16 of the time required to transmit a single bit. (1.6 msec equals 3/16 of the time required to transmit a single bit at 115.2 Kbps.) This way, each word begins with a pulse for the start bit. Operation in SIR is similar to the operation in UART mode, the main difference being that data transfer operations are normally ZFx86 Data Book 1.0 Rev D performed in half duplex fashion. Selection of the IrDA 1.0 SIR mode is controlled by the MDSL bits in the MCR register when the UART is in Extended mode, or by the IR_SL bits in the IRCR1 register when the UART is in Non-Extended mode. This prevents legacy software, running in Non-Extended mode, from spuriously switching the functional block to UART mode when the software writes to the MCR register. Consumer Electronic IR (CEIR) Mode The CEIR circuitry is designed to optimally support all major protocols presently used in remote controlled home entertainment equipment: RC-5, RC-6, RECS 80, NEC and RCA. This module, in conjunction with an external optical device, provides the physical layer functions necessary to support these protocols. These functions include: modulation, demodulation, serialization, deserialization, data buffering, status reporting, interrupt generation, and so on. The software is responsible for the generation of the IR code to be transmitted, and for the interpretation of the received code. CEIR Transmit Operation The code to be transmitted consists of a sequence of bytes that represent either a bit string or a set of run-length codes. The number of bits or run-length codes usually needed to represent each IR code bit depends on the IR protocol to be used. The RC-5 protocol, for example, needs two bits or between one and two run-length codes to represent each IR code bit. Transmission is initiated when the CPU or DMA module writes code bytes into the empty TX_FIFO. Transmission is normally completed when the CPU sets the S_EOT bit of the ASCR register (see ‘ASCR Register, Extended Mode’ on 371), before writing the last byte, or when the DMA controller activates the terminal count (TC). Transmission also terminates if the CPU simply stops transferring data Page 347 4 and the transmitter becomes empty. However, in this case, a transmitter-underrun condition generates, which must be cleared in order to begin the next transmission. The transmission bytes are either de-serialized or run-length encoded, and the resulting bit string modulates a carrier signal and is sent to the transmitter LED. The transfer rate of this bit string, like in UART mode, is determined by the value programmed in the Baud Generator Divisor registers. Unlike a UART transmission, start, stop and parity bits are not included in the transmitted data stream. A logic 1 in the bit string keeps the LED off, so no IR signal is transmitted. A logic 0 generates a sequence of modulating pulses which lights the transmitter LED. Frequency and pulse width of the modulating pulses are programmed by the MCFR and MCPW fields in the IRTXMC register, as well as the TXHSC bit of the RCCFG register. The RC_MMD field selects the transmitter modulation mode. If the C_PLS mode is selected, modulating pulses generate continuously for the entire logic 0 bit time. If 6_PLS or 8_PLS mode is selected, six or eight pulses generate each time a logic 0 bit is transmitted following a logic 1 bit. C_PLS modulation mode is used for RC-5, RC-6, NEC and RCA protocols. 8_PLS or 6_PLS modulation mode is used for the RECS 80 protocol. The 8_PLS or 6_PLS mode allows minimization of the number of bits needed to represent the RECS 80 IR code sequence. The current transmitter implementation supports only the modulated modes of the RECS 80 protocol. It does not support the Flash mode. Note: The total transmission time for the logic 0 bits must be equal to or greater than 6 or 8 times the period of the modulation subcarrier, otherwise fewer pulses will be transmitted. ZFx86 Data Book 1.0 Rev D CEIR Receive Operation The CEIR receiver is significantly different from a UART receiver in two ways. Firstly, the incoming IR signals are DASK modulated, therefore, demodulation may be necessary. Secondly, there are no start bits in the incoming data stream. The operations performed by the receiver, whenever an IR signal is detected, are slightly different, depending on whether or not receiver demodulation is enabled. If demodulation is disabled, the receiver immediately becomes active. If demodulation is enabled, the receiver checks the carrier frequency of the incoming signal and becomes active only if the frequency is within the programmed range. Otherwise, the signal is ignored and no other action is taken. When the receiver enters the active state, the RXACT bit of the ASCR register is set to 1. Once in the active state, the receiver keeps sampling the IR input signal and generates a bit string, where a logic 1 indicates an idle condition and a logic 0 indicates the presence of IR energy. The IR input is sampled regardless of the presence of IR pulses at a rate determined by the value loaded into the Baud Generator Divisor registers. The received bit string is either de-serialized and assembled into 8 bit characters, or it is converted to runlength encoded values. The resulting data bytes are then transferred into the receiver FIFO (RX_FIFO). The receiver also sets the RXWDG bit of the ASCR register each time an IR pulse signal is detected. This bit is automatically cleared when the ASCR register is read. It is intended to assist the software in determining when the IR link has been idle for a certain time. The software can then stop data from being received by writing a 1 into the RXACT bit to clear it and return the receiver to the inactive state. Page 348 4 The frequency bandwidth for the incoming modulated IR signal is selected by the DFR and DBW fields in the IRRXDC register. There are two CEIR receive data modes: Oversampled and Programmed T Period. For either mode, the sampling rate is determined by the setting of the Baud Generator Divisor registers. Oversampled mode can be used with the receiver demodulator either enabled or disabled. It should be used with the demodulator disabled when a detailed snapshot of the incoming signal is needed; for example, to determine the period of the carrier signal. If the demodulator is enabled, the stream of samples can be used to reconstruct the incoming bit string. To obtain good resolution, a fairly high sampling rate should be selected. Programmed T Period mode should be used with the receiver demodulator enabled. The T Period represents one-half bit time for protocols using biphase encoding, or the basic unit of pulse distance for protocols using pulse distance encoding. The baud is usually programmed to match the T Period. For long periods of logic low or high, the receiver samples the demodulated signal at the programmed sampling rate. IrDA 1.1 MIR and FIR Modes The functional block supports both IrDA 1.1 MIR and FIR modes, with data rates of 576 kbps, 1.152 Mbps and 4.0 Mbps. Details on the frame format, encoding schemes, CRC sequences, etc. are provided in the appropriate IrDA documents. The MIR transmitter front end section performs bit stuffing on the outbound data stream and places the Start and Stop flags at the beginning and end of MIR frames. The MIR receiver front end section removes flags and “de-stuffs” the inbound bit stream, and checks for abort conditions. The FIR transmitter front end section adds the Preamble as well as Start and Stop flags to each frame, and encodes the transmit data into a 4 Pulse Position Modulation (PPM) data stream. The FIR receiver front end section strips the Preamble and flags from the inbound data stream and decodes the 4 PPM data while also checking for coding violations. Both MIR and FIR front ends also automatically append CRC sequences to transmitted frames and check for CRC errors on received frames. Whenever a new IR energy pulse is detected, the receiver synchronizes the sampling process to the incoming signal timing. This reduces timing related errors and eliminates the possibility of missing short IR pulse sequences, especially with the RECS 80 protocol. In addition, the Programmed T Period sampling minimizes the amount of data used to represent the incoming IR signal, therefore reducing the processing overhead in the host CPU. ZFx86 Data Book 1.0 Rev D Page 349 4 High Speed Infrared Transmit Operation When the transmitter is empty, if either the CPU or the DMA controller writes data into the TX_FIFO, transmission of a frame begins. Frame transmission can be normally completed by using one of the following methods: • S_EOT bit (Set End of Transmission). This method is used when data transfers are performed in Programmed Input/Output (PIO) mode. When the CPU sets the S_EOT bit before writing the last byte into the TX_FIFO, the byte will be tagged with an EOF indication. When this byte reaches the TX_FIFO bottom and is read by the transmitter front end, a CRC is appended to the transmitted DATA and the frame is normally terminated. • DMA TC Signal (DMA Terminal Count). This method is used when data transfers are performed in DMA mode. It works similarly to the previous method except that the tagging of the last byte of a frame occurs when the DMA controller asserts the TC signal during the write of the last byte to the TX_FIFO. Frame Length Counter. This method can be used when data transfers are performed in either PIO or DMA mode. The value of the FEND_MD bit of the IRCR2 register determines whether the Frame Length Counter is effective in the PIO or DMA mode. The counter is loaded from the Frame Length register (TFRL) at the beginning of each frame, and it is decremented as each byte is transmitted. An EOF is generated when the counter reaches 0. When used in DMA mode with an 8237 type DMA controller, this method allows a large data block to be automatically split into equal-size back-to-back frames, plus a shorter frame that is terminated by the DMA TC signal, if the block size is not an exact multiple of the frame size. ZFx86 Data Book 1.0 Rev D An option is also provided to stop transmission at the end of each frame. This happens when the transmitter Frame End stop mode is enabled (TX_MS bit of the IRCR2 register set to 1). By using this option, the software can send frames of different sizes without re-initializing the DMA controller for each frame. After transmission of each frame, the transmitter stops and generates an interrupt. The software loads the length of the next frame into the TFRL register and restarts the transmitter by clearing the TXHFE bit of the ASCR register. Note: PIO or DMA mode is only controlled by setting the DMA_EN bit of the Extended mode MCR register. The functional block treats CPU and DMA access cycles the same except that DMA cycles always access the TX or RX_FIFO, regardless of the selected bank. When DMA_EN is set to 1, the CPU can still access the TX_FIFO and RX_FIFO. The CPU accesses will, however, be treated as DMA accesses as far as the function of the FEND_MD bit is concerned. While a frame is being transmitted, data must be written to the TX_FIFO at a rate dictated by the transmission speed. If the CPU or DMA controller fails to meet this requirement, a transmitter underrun occurs, an inverted CRC is appended to the frame being transmitted, and the frame is terminated with a Stop flag. Data transmission then stops. Transmission of the inverted CRC guarantees that the remote receiving module receives the frame with a CRC error and discards it. Following an underrun condition, data transmission always stops at the next frame boundary. The frame bytes from the point where the underrun occurred to the end of the frame are not sent out to the external infrared interface. Nonetheless, they are removed from the TX_FIFO by the transmitter and discarded. The underrun indication is reported only when the transmitter detects the end of frame via Page 350 4 one of the methods described above. The software can do various things to recover from an underrun condition. For example, it can simply clear the underrun condition by writing a 1 into bit 6 of ASCR and retransmit the underrun frame later, or it can retransmit it immediately, before transmitting other frames. If it chooses to retransmit the frame immediately, it needs to perform the following steps: 1. Disable DMA controller, if DMA mode was selected. 2. Read the TXFLV register to determine the number of bytes in the TX_FIFO. (This is needed to determine the exact point where the underrun occurred, and whether or not the first byte of a new frame is in the TX_FIFO.) 3. Reset TX_FIFO. 4. Backup DMA controller registers. 5. Clear Transmitter underrun bit. 6. Re-enable DMA controller. High Speed Infrared Receive Operation When the receiver front end detects an incoming frame, it starts de-serializing the infrared bit stream and loading the resulting data bytes into the RX_FIFO. When the EOF is detected, two or four CRC bytes are appended to the received data, and an EOF flag is written into the tag section of the RX_FIFO, along with the last byte. In the present implementation, the CRC bytes are always transferred to the RX_FIFO following the data. Additional status information, related to the received frame, is also written into the RX_FIFO tag section at this time. The status information is loaded into the LSR register when the last frame byte reaches the RX_FIFO bottom. The receiver keeps track of the number of received bytes from the beginning of the current frame. It only transfers to the RX_FIFO a number of bytes not exceeding the maximum frame length value which is programmed via the RFRML register in bank ZFx86 Data Book 1.0 Rev D Any additional frame bytes are discarded. When the maximum frame length value is exceeded, the MAX_LEN error flag is set. Although data transfers from the RX_FIFO to memory can be performed either in PIO or DMA mode, DMA mode should be used due to the high data rates. In order to handle back-to-back incoming frames, when DMA mode is selected and an 8237 type DMA controller is used, an 8-level Status FIFO (ST_FIFO) is provided. When an EOF is detected, in 8237 DMA mode, the status and byte count information for the frame is written into the ST_FIFO. An interrupt is generated when the ST_FIFO level reaches a programmed threshold or an ST_FIFO timeout occurs. The CPU uses this information to locate the frame boundaries in the memory buffer where the data, belonging to the received frames, has been transferred by the 8237 type DMA controller. During reception of multiple frames, if the RX_FIFO and/or the ST_FIFO fills up due to the DMA controller or CPU not serving them in time, one or more frames can be crushed and lost. This means that no bytes belonging to these frames were written to the RX_FIFO. In fact, a frame is lost in 8237 mode when the ST_FIFO is full for the entire time during which the frame is being received, even though there were empty locations in the RX_FIFO. This is because no data bytes can be loaded into the RX_FIFO and then transferred to memory by the DMA controller, unless there is at least one available entry in the ST_FIFO to store the number of received bytes. This information, as mentioned before, is needed by the software to locate the frame boundaries in the DMA memory buffer. In the event that a number of frames is lost for any of the reasons mentioned above, one or more lost-frame indications including the Page 351 4 number of lost frames, are loaded into the ST_FIFO. Frames can also be lost in PIO mode, but only when the RX_FIFO is full, since in these cases, the ST_FIFO is only used to store lostframe indications. It does not store frame status and byte count. 4.13.5.2. Special Features Description FIFO Timeouts Timeout mechanisms are provided to prevent received data from remaining in the RX_FIFO indefinitely in case the programmed interrupt or DMA thresholds are not reached. An RX_FIFO timeout generates a Receiver Data Ready interrupt and/or a receiver DMA request if bit 0 of the IER register and/or bit 2 of the MCR register (in Extended mode) are set to 1 respectively. An RX_FIFO timeout also sets bit 0 of the ASCR register to 1 if the RX_FIFO is below the threshold. When a Receiver Data Ready interrupt occurs, this bit is tested by the software to determine whether a number of bytes indicated by the RX_FIFO threshold can be read without checking bit 0 of the LSR register. A Status FIFO (ST_FIFO) timeout is enabled only in MIR and FIR modes, and generates an interrupt if bit 6 of IER is set to 1. The conditions that must exist for a timeout to occur in the various modes of operation are described below. When a timeout has occurred, it can only be reset when the FIFO is read by the CPU or DMA controller. Timeout Conditions for MIR and FIR Modes RX_FIFO Timeout Conditions: 1. At least one byte is in the RX_FIFO, and 2. More than 64 ms have elapsed since the last byte was loaded into the RX_FIFO from the receiver logic, and 3. More than 64 ms have elapsed since the last byte was read from the RX_FIFO by the ZFx86 Data Book 1.0 Rev D CPU or DMA controller. ST_FIFO Timeout Conditions: 1. At least one entry is in the ST_FIFO, and 2. More than 1 ms has elapsed since the last byte was loaded into the RX_FIFO by the receiver logic, and 3. More than 1 ms has elapsed since the last entry was read from the ST_FIFO by the CPU. RX_FIFO Timeout Conditions for UART, SIR and Sharp-IR Modes 1. At least one byte is in the RX_FIFO, and 2. More than four character times have elapsed since the last byte was loaded into the RX_FIFO from the receiver logic, and 3. More than four character times have elapsed since the last byte was read from the RX_FIFO by the CPU or DMA controller. Timeout Conditions for CEIR Mode The RX_FIFO Timeout, in CEIR mode, is disabled while the receiver is active. The conditions for this timeout to occur are as follows: 1. At least one byte has been in the RX_FIFO for 64 ms or more, and 2. The receiver has been inactive (RXACT=0) for 64 ms or more, and 3. More than 64 ms have elapsed since the last byte was read from the RX_FIFO by the CPU or DMA controller. Transmit Deferral This feature allows software to send short high-speed data frames in PIO mode without the risk of generating a transmitter underrun. Even though this feature is available and works the same way in all modes, it is most likely to be used in MIR and FIR modes to support high-speed negotiations. This is because in other modes, either the transmit data rate is relatively low and thus the CPU can keep up with it without letting an underrun occur, as in the case of CEIR mode, or Page 352 4 transmit underruns are allowed and are not considered to be error conditions. Transmit deferral is available only in Extended mode and when the TX_FIFO is enabled. When transmit deferral is enabled (TX_DFR bit of the MCR register set to 1) and the transmitter becomes empty, an internal flag is set and locks the transmitter. If the CPU now writes data into the TX_FIFO, the transmitter does not start sending the data until the TX_FIFO level reaches 14, at which time the internal flag is cleared. The internal flag is also cleared and the transmitter starts transmitting when a timeout condition is reached. This prevents some bytes from being in the TX_FIFO indefinitely if the threshold is not reached. The timeout mechanism is implemented by a timer that is enabled when the internal flag is set and there is at least one byte in the TX_FIFO. Whenever a byte is loaded into the TX_FIFO, the timer is reloaded with the initial value. If no byte is loaded for a 64-msec time, the timer times out and the internal flag is cleared, thus enabling the transmitter. Automatic Fallback to 16550 Compatibility Mode This feature is designed to support existing legacy software packages using the 16550 Serial Port. For proper operation, many of these software packages require that the module look identical to a plain 16550, since they access the Serial Port registers directly. Due to the fact that several extended features, as well as new operational modes are provided, make sure that the module is in the proper state before executing a legacy program. The fallback mechanism eliminates the need to change the state when a legacy program is executed following completion of a program that used extended features. It automatically switches the module to 16550 compatibility mode and turns off any extended features, ZFx86 Data Book 1.0 Rev D whenever the Baud Generator Divisor Register is accessed through the LBGD(L) or LBGD(H) ports in register bank 1. In order to avoid spurious fallbacks, baud generator divisor ports are provided in bank 2. Baud generator divisor access through these ports changes the baud rate setting but does not cause fallback. New programs designed to take advantage of the extended features should not use LBGD(L) and LBGD(H) to change the baud rate. Instead, they should use BGD(L) and BGD(H). A fallback can occur from either Extended or Non-Extended modes. If Extended mode is selected, fallback is always enabled. In this case, when a fallback occurs, the following happens: 1. TX_FIFO and RX_FIFO switch to 16 levels. 2. A value of 13 is selected for the baud generator prescaler. 3. ETDLBK and BTEST of the EXCR1 register are cleared. 4. UART mode is selected. 5. The functional block switches to NonExtended mode. When fallback occurs from Non-Extended mode, only the first three of the above actions occur. No switching to UART mode occurs if either Sharp_IR or SIR infrared modes were selected. This prevents spurious switching to UART mode when a legacy program, running in Infrared mode, accesses the baud rate generator divisor register from bank 1. Fallback from Non-Extended mode can be disabled by setting LOCK in the EXCR2 register to 1. When LOCK is set and the functional block is in Non-Extended mode, two scratchpad registers overlaid with LBGD(L) and LBGD(H) are enabled. Any attempted CPU access of the baud generator divisor register through LBGD(L) and LBGD(H) Page 353 4 accesses the scratchpad registers, without affecting the baud rate setting. This feature allows existing legacy programs to run faster than 115.2 Kbaud, without realizing they are running at this speed. Optical Transceiver Interface This module implements a very flexible interface for the external infrared transceiver. Several signals are provided for this purpose. A transceiver module with one or two receive signals can be directly interfaced without any additional logic. Since various operational modes are supported, the transmitter power as well as the receiver filter in the transceiver module must be configured according to the selected mode. The register bank organization enables access to the banks as required for activation of all module modes, while maintaining transparent compatibility with 16450 or 16550 software, which activates only the registers and specific bits used in those devices. For details, see “UART Mode” on page 346. The Bank Selection register (BSR) selects the active bank and is common to all banks. See Figure 4-18. Therefore, each bank defines seven new registers. Four special interface pins (ID/IRSL2-0 and ID3) are used to control the operational mode of the infrared transceiver. The logic levels of the ID/IRSL2-0 pins are directly controlled by the software (through the setting of bits 2-0 in the IRCFG1 register). The ID/IRSL2-0 pins power up as inputs and can be driven by an external source. When in input mode, they can be used to read the identification data of infrared adapters. The ID3 pin is input only and is also used for this purpose. The ID0/IRSL0/IRRX2 pin can also function as an input to support an additional infrared receive signal. In this case, however, only one configuration pin will be available. The IRSL0_DS and IRSL1_DS bits in the IRCFG4 register determine the direction of the ID/IRSL2-0 pins. 4.13.5.3. IR Mode Register Bank Overview Eight register banks, each containing eight registers, control UART operation. All registers use the same 8-byte address space to indicate offsets 00h through 07h. The active bank must be selected by the software. ZFx86 Data Book 1.0 Rev D Page 354 4 BANK 7 BANK 6 Common Register Throughout All Banks BANK 5 BANK 4 BANK 3 BANK 2 BANK 1 BANK 0 Offset 07h Offset 06h Offset 05h Offset 04h LCR/BSR Offset 02h Offset 01h Offset 00h Figure 4-18 IRCP Register Bank Architecture The default bank selection after system reset is 0, which places the module in UART 16550 mode. Additionally, setting the baud in bank 1 (as required to initialize the 16550 UART) switches the module to Non-Extended UART mode. This ensures that running existing 16550 software switches the system to the 16550 configuration without software modification. Table 4.164 shows the main functions of the registers in each bank. Banks 0-3 control both UART and IR modes of operation; banks 4-7 control and configure the IR modes only. Table 4.164 Register Bank Summary Bank UART IR Mode Main Functions Reference 0 3 3 Global Control and Status “BANK 0” on page 356 1 3 3 Legacy Bank “BANK 1” on page 373 2 3 3 Alternative Baud Generator Divisor, Extended Control and Status “BANK 2” on page 375 3 3 3 Module Revision ID and Shadow registers “BANK 3” on page 380 4 3 IR mode setup “BANK 4” on page 382 5 3 IR Control and Status FIFO “BANK 5” on page 385 6 3 IR Physical Layer Configuration “BANK 6” on page 388 7 3 CEIR and Optical Transceiver Configuration “BANK 7” on page 393 ZFx86 Data Book 1.0 Rev D Page 355 4 The register maps in this section use the following abbreviations for Type: • R/W = Read/Write • R = Read from a specific address returns the value of a specific register. Write to the same address is to a different register. • W = Write • RO = Read Only 4.13.5.4. IRCP Register Map BANK 0 In Non-Extended modes of operation, bank 0 is compatible with both the 16450 and the 16550. Upon reset, this functional block defaults to the 16450 mode. In Extended mode, all the registers (except RXD/ TXD) offer additional features. • R/W1C = Read/Write 1 to Clear. Writing 1 to a bit clears it to 0. Writing 0 has no effect. Table 4.165 Bank 0 Register Map Offset Mnemonic 00h Register Name Type Section “Receiver Data Port (RXD) or the Transmitter Data Port (TXD)” on page 356 RXD Receiver Data Port RO TXD Transmitter Data Port W 01h IER Interrupt Enable R/W “Interrupt Enable Register (IER)” on page 356 02h EIR Event Identification RO “Event Identification Register (EIR) and FIFO Control Register (FCR)” on page 359 FCR FIFO Control R/W LCR Link Control W BSR Bank Select R/W 04h MCR Modem/Mode Control R/W “Modem/Mode Control Register (MCR)” on page 366 05h LSR Link Status R/W “Link Status Register (LSR)” on page 368 06h MSR Modem Status R/W “Modem Status Register (MSR)” on page 370 07h SPR Scratchpad R/W “SPR Register, Non-Extended Mode” on page 371 Varies per bit “ASCR Register, Extended Mode” on page 371 03h ASCR Auxiliary Status and Control “Link Control Register (LCR) and Bank Select Register (BSR)” on page 363 Receiver Data Port (RXD) or the Transmitter Data Port (TXD) These ports share the same address. RXD is accessed during CPU read cycles. It is used to read data from the Receiver Holding register when the FIFOs are disabled, or from the bottom of the RX_FIFO when the FIFOs are enabled. TXD is accessed during CPU write cycles. It is used to write data to the Transmitter Holding register when the FIFOs are disabled, or to the TX_FIFO when the FIFOs are enabled. ZFx86 Data Book 1.0 Rev D DMA cycles always access the TXD and RXD ports, regardless of the selected bank. Interrupt Enable Register (IER) This register controls the enabling of various interrupts. Some interrupts are common to all operating modes of the functional block, while others are mode specific. Bits 4 to 7 can be set in Extended mode only. They are cleared in Non-Extended mode. When a bit is set to 1, an interrupt is generated when the corre- Page 356 4 sponding event occurs. In Non-Extended mode, most events can be identified by reading the LSR and MSR registers. The receiver high-data-level event can only be identified by reading the EIR register after the corresponding interrupt has been generated. In Extended mode, events are identified by event flags in the EIR register. performed outside the interrupt service routine, but with the CPU interrupt disabled. Note 3: If the LSR, MSR or EIR registers are to be polled, the interrupt sources which are identified via self-clearing bits should have their corresponding IER bits set to 0. This prevents spurious pulses on the interrupt output pin. The bitmap of this register is defined differently, depending on the operating mode of the functional block. The different modes can be divided into the following groups: • UART, Sharp-IR and SIR in Non-Extended mode (EXT_SL of the EXCR1 register is set to 0) • UART, Sharp-IR, SIR and CEIR in Extended mode (EXT_SL of the EXCR1 register is set to 1) • MIR and FIR modes The following sections describe the bits in this register for each of these modes. Note 1: If the interrupt signal drives an edgesensitive interrupt controller input, it is advisable to disable all interrupts by clearing all the IER bits upon entering the interrupt routine, and re-enable them just before exiting it. This guarantees proper interrupt triggering in the interrupt controller in case one or more interrupt events occurs during execution of the interrupt routine. Note 2: If an interrupt source must be disabled, the CPU can do so by clearing the corresponding bit of the IER register. However, if an interrupt event occurs just before the corresponding enable bit of the IER register is cleared, a spurious interrupt may be generated. To avoid this problem, clearing any IER bit should be done during execution of the interrupt service routine. If the interrupt controller is programmed for level-sensitive interrupts, clearing IER bits can also be ZFx86 Data Book 1.0 Rev D Page 357 4 IER, Non-Extended Mode (UART, SIR or Sharp-IR in Non-Extended Mode) Upon reset, the IER supports UART, SIR and Sharp-IR in Non-Extended modes. Location: Offset 01h Type: R/W Table 4.166 Interrupt Enable Register (IER, Non-Extended Mode) Bit 7 6 Mnemonic 5 Reserved Reset 0 0 0 Bit 7-4 3 4 3 2 MS_IE LS_IE 0 0 0 1 0 TXLDL_IE RXHDL_IE 0 0 Description Reserved Modem Status Interrupt Enable – MS_IE Setting this bit to 1 enables the interrupts on Modem Status events. (EIR bits 3-0 are 0000. See Table 4.167.) 2 Link Status Interrupt Enable – LS_IE Setting this bit to 1 enables interrupts on Link Status events. (EIR bits 3-0 are 0110. See Table 4.167.) 1 Transmitter Low Data Level Interrupt Enable – TXLDL_IE Setting this bit to 1 enables interrupts on Transmitter Low Data Level events (EIR bits 3-0 are 0010. See Table 4.167.) 0 Receiver High Data Level Interrupt Enable – RXHDL_IE Setting this bit to 1 enables interrupts on Receiver High Data Level, or RX_FIFO Timeout events (EIR bits 3-0 are 0100 or 1100. See Table 4.167.) IER, Extended Mode (UART, SIR, Sharp-IR and CEIR in Extended Mode) Location: Offset 01h Type: R/W Bit Mnemonic Reset 7 6 5 4 3 2 TMR_IE SFIF_IE TXEMP_IE/ PLD_IE DMA_IE MS_IE LS_IE/ TXHLT_IE 0 0 0 0 0 0 Bit 1 0 TXLDL_IE RXHDL_IE 0 0 Description 7 Timer Interrupt Enable– TMR_IE 6 SFIF_IE (ST_FIFO Interrupt Enable) 5 TXEMP_IE/PLD_IE (Transmitter Empty Interrupt Enable/Pipeline Load Interrupt Enable). Setting this bit to 1 enables Transmitter Empty interrupts (in all modes) and Pipeline Load Interrupts (in SIR, MIR and FIR). 4 DMA_IE (DMA Interrupt Enable). Setting this bit to 1 enables the interrupt on terminal count when the DMA is enabled. ZFx86 Data Book 1.0 Rev D Page 358 4 Bit 3 Description Modem Status Interrupt Enable – MS_IE Setting this bit to 1 enables the interrupts on Modem Status events. 2 Link Status Interrupt Enable/Transmitter Halted Interrupt Enable – LS_IE/TXHLT_IE Setting this bit enables Link Status Interrupts, TX_FIFO underrun interrupts in MIR and FIR and Transmitter Halted interrupts in CEIR. 1 Transmitter Low-Data-Level Interrupt Enable – TXLDL_IE Setting this bit to 1 enables interrupts when the TX_FIFO is below the threshold level or the Transmitter Holding register is empty. 0 Receiver High-Data-Level Interrupt Enable – RXHDL_IE Setting this bit to 1 enables interrupts when the RX_FIFO is equal to or above the RX_FIFO threshold level, or an RX_FIFO timeout occurs. Event Identification Register (EIR) and FIFO Control Register (FCR) The EIR register, a read only register, shares the same address as the FCR register, which is a write only register. The EIR indicates the interrupt source, and operates in two modes: Non-Extended Mode (EXT_SL of the EXCR1 register is set to 0), and Extended (EXT_SL of the EXCR1 register is set to 1). EIR, Non-Extended Mode In Non-Extended UART mode, the functional block prioritizes interrupts into four levels. The EIR indicates the highest level of interrupt that is pending. See Table 4.167 for the encoding of these interrupts When in Non-Extended mode (default), this register functions the same as in the 16550 mode. Location: Offset 02h Type: RO Bit 7 Mnemonic Reset 6 5 0 0 FEN1, 0 0 4 Reserved Bit 7-6 3 2 RXFT 0 0 1 IPR1, 0 0 0 IPF 0 1 Description FEN1, 0 (FIFOs Enabled) 0= 1= 5-4 3 No FIFO enabled (default) FIFOs enabled (bit 0 of FCR is set to 1) Reserved – Set to 0. RX_FIFO Timeout) – RXFT In the 16450 mode, this bit is always 0. In the 16550 mode (FIFOs enabled), this bit is set to 1 when an RX_FIFO read timeout occurred and the associated interrupt is currently the highest priority pending interrupt. 2-1 Interrupt Priority – IPR1, 0 When bit 0 (IPF) is 0, these bits indicate the pending interrupt with the highest priority. See Table 4.167. Default value is 0. ZFx86 Data Book 1.0 Rev D Page 359 4 Bit 0 Description Interrupt Pending Flag – IPF 0= 1= Interrupt pending No interrupt pending (default) Table 4.167 Non-Extended Mode Interrupt Priorities EIR Bits 3210 Priority Interrupt Type Level 0001 N/A None 0110 Highest Link Status 0100 Second 1100 Second RX_FIFO Timeout 0010 Third Transmitter Low Data Level Event 0000 Fourth Interrupt Source Interrupt Reset Control None N/A Parity error, framing error, data overrun Read Link Status Register (LSR) or break event Receiver High Receiver Holding Register (RXD) full, or Reading the RXD or RX_FIFO level Data Level RX_FIFO level equal to or above drops below threshold Event threshold At least one character is in the RX_FIFO, and no character has been Reading the RXD port. input to or read from the RX_FIFO for 4 character times. Reading the EIR register if this Transmitter Holding register or TX_FIFO interrupt is currently the highest empty priority pending interrupt, or writing into the TXD port Modem Status Any transition on CTS, DSR or DCD or Reading the Modem Status register a low to high transition on RI (MSR) register bit setting. When this register is read the DMA event (bit 4) is cleared if an 8237 type DMA is used. All other bits are cleared when the corresponding interrupts are acknowledged by reading the relevant register (e.g. reading the MSR register clears MS_EV). EIR, Extended Mode In Extended mode, each of the previously prioritized and encoded interrupt sources is broken down into individual bits. Each bit in this register acts as an interrupt pending flag, and is set to 1 when the corresponding event occurred or is pending, regardless of the IER Location: Offset 02h Type: RO Bit Mnemonic Reset 7 6 5 4 3 TMR_EV SFIF_EV TXEMP_EV DMA_EV MS_EV 0 0 0 0 0 Bit 7 2 1 0 LS_EV/ TXLDL_EV RXHDL_EV TXHLT_EV 0 0 1 Description Timer Event – TMR_EV Set to 1 when the timer reaches 0. Cleared by writing 1 into bit 7 of the ASCR register. ZFx86 Data Book 1.0 Rev D Page 360 4 Bit 6 Description ST_FIFO Event – SFIF_EV Set to 1 when the ST_FIFO level is equal to or above the threshold, or an ST_FIFO timeout occurs. This bit is cleared when the CPU reads the ST_FIFO and its level drops below the threshold. 5 Transmitter Empty Interrupt Enable – TXEMP_EV This bit is the same as bit 6 of the LSR register. It is set to 1 when the transmitter is empty. 4 DMA Event – DMA_EV This bit is set to 1 when a DMA terminal count (TC) is activated. It is cleared upon read. 3 Modem Status Event – MS_EV UART mode: This bit is set to 1 when any of the 0 to 3 bits in the MSR register is set to 1. Any IR mode: The function of this bit depends on the setting of IRMSSL of the IRCR2 register (see ‘IR Control Register 2 (IRCR2)’ on 385). When IRMSSL is 0, the bit functions as Modern Status Interrupt event; when IRMSSL is set to 1, the bit is forced to 0. 2 Link Status Event – LS_EV ( In UART, Sharp-IR and SIR: Set to 1 when a receiver error or break condition is reported. When FIFOs are enabled, the Parity Error), Frame Error and Break conditions are only reported when the associated character reaches the bottom of the RX_FIFO. An Overrun Error is reported as soon as it occurs. LS_EV/TXHLT_EV (Link Status Event or Transmitter Halted Event) - In MIR and FIR: Set to 1 when any of the following conditions occur: 1. Last byte of received frame reaches the bottom of the RX_FIFO 2. Receiver overrun 3. Transmitter underrun 4. Transmitter halted on frame end in CEIR mode Link Status Event or Transmitter Halted Event – LS_EV/TXHLT_EV In CEIR: Set to 1 when the receiver is overrun or the transmitter underrun. Note: A high speed CPU can service the interrupt generated by the last frame byte reaching the RX_FIFO bottom before that byte is transferred to memory by the DMA controller. This can happen when the CPU interrupt latency is shorter than the RX_FIFO Timeout (Refer to the “FIFO Timeouts” section). A DMA request is generated only when the RX_FIFO level reaches the DMA threshold or when a FIFO timeout occurs, in order to minimize the performance degradation due to DMA signal handshake sequences. If the DMA controller must be set up before receiving each frame, the software in the interrupt routine should make sure that the last byte of the frame just received has been transferred to memory before re-initializing the DMA controller, otherwise that byte could appear as the first byte of the next received frame. 1 Transmitter Low-Data-Level Event – TXLDL_EV FIFOs disabled: Set to 1 when the Transmitter Holding register is empty. FIFOs enabled: Set to 1 when the TX_FIFO level is below the threshold level. 0 Receiver High-Data-Level Event – RXHDL_EV FIFOs disabled: Set to 1 when a character is in the Receiver Holding register. FIFOs enabled: Set to 1 when the RX_FIFO is above threshold or an RX_FIFO timeout has occurred. ZFx86 Data Book 1.0 Rev D Page 361 4 FIFO Control Register (FCR) The FCR register is a write only register which shares the same address as the EIR (see "Event Identification Register (EIR) and FIFO Control Register (FCR)" on page 359) which is a read only register. FCR is used to enable the FIFOs, clear the FIFOs and set the interrupt thresholds levels for the RX_FIFO and TX_FIFO. FCR may be read through SH_FCR register in bank 3 (see ‘Shadow of FIFO Control Register (SH_FCR)’ on 381). Location: Offset 02h Type: W Bit 7 Mnemonic 6 5 RXFTH1, 0 Reset 0 4 TXFTH1, 0 0 0 Bit 7-6 3 2 1 0 Reserved TXSR RXSR FIFO_EN 0 0 0 0 0 Description RX_FIFO Interrupt Threshold Level – RXFTH1, 0 These bits select the RX_FIFO interrupt threshold level. An interrupt is generated when the level of the data in the RX_FIFO is equal to or above the encoded threshold. Bits 5-4 RX_FIF0 Interrupt Threshold Level 7 6 (16-Level FIFO) (32-Level FIFO) 0 0 1 1 0 1 0 1 1(Default) 4 8 14 1(Default) 8 16 26 Transmitter Empty – TXFTH1, 0 In Non-Extended modes, these bits have no effect. In Extended modes, these bits select the TX_FIFO interrupt threshold level. An interrupt is generated when the level of the data in the TX_FIFO drops below the encoded threshold. Bits TX_FIF0 Interrupt Threshold Level 5 4 (16-Level FIFO) (32-Level FIFO) 0 0 1 1 0 1 0 1 1(Default) 3 9 13 1(Default) 7 17 25 3 Reserved. Write 0. 2 Transmitter Soft Reset – TXSR Writing a 1 to this bit generates a transmitter soft reset, which clears the TX_FIFO and the transmitter logic. This bit is automatically cleared by the hardware. 1 Receiver Soft Reset – RXSR Writing a 1 to this bit generates a receiver soft reset, which clears the RX_FIFO and the receiver logic. This bit is automatically cleared by the hardware. 0 FIFO Enable – FIFO_EN When set to 1, enables both the TX_FIFO and RX_FIFOs. Resetting this bit clears both FIFOs. In MIR, FIR and CEIR modes, the FIFOs are always enabled and the setting of this bit is ignored. ZFx86 Data Book 1.0 Rev D Page 362 4 Link Control Register (LCR) and Bank Select Register (BSR) These registers share the same address. Bank Select Enable (BKSE, bit 7) determines the register to be accessed, as follows: The Link Control register (LCR) selects the communications format for data transfers in UART, SIR and Sharp-IR modes. • If bit 7 is 0, both LCR and BSR are written into. The Bank select register (BSR) is used to select the register bank to be accessed next. • If bit 7 is 1, only BSR is written into, and LCR remains unchanged. This prevents the communications format from being spuriously affected when a bank other than bank 0 or bank 1 is accessed. Reading the register at this address location returns the content of the BSR. The content of LCR may be read from the Shadow of Link Control register (SH_LCR) in bank 3 (see ‘Shadow of Link Control Register (SH_LCR)’ on 381). During a write operation to this register at this address location, setting of LCR Register Bits 6-0 are only effective in UART, Sharp-IR and SIR modes. They are ignored in CEIR, MIR and FIR modes. Location: Offset 03h Type: W Bit Mnemonic Reset 7 6 5 4 3 2 BKSE SBRK STKP EPS PEN STB 0 0 0 0 0 0 Bit 7 1 0 WLS1, 0 0 0 Description Bank Select Enable – BKSE 0: Register functions as the Link Control register (LCR). 1: Register functions as the Bank Select register (BSR). 6 Set Break – SBRK Enables or disables a break. During the break, the transmitter can be used as a character timer to accurately establish the break duration. This bit acts only on the transmitter front end and has no effect on the rest of the transmitter logic.When set to 1 the following occurs: If a UART mode is selected, the SOUT pin is forced to a logic 0 state. If SIR mode is selected, pulses are issued continuously on the IRTX pin. If Sharp-IR mode is selected and internal modulation is enabled, pulses are issued continuously on the IRTX pin. If Sharp-IR mode is selected and internal modulation is disabled, the IRTX pin is forced to a logic 1 state. To avoid transmission of erroneous characters as a result of the break, use the following procedure to set SBRK: • Wait for the transmitter to be empty. (TXEMP = 1). • Set SBRK to 1. • Wait for the transmitter to be empty, and clear SBRK when normal transmission must be restored. 5 Stick Parity – STKP When parity is enabled (PEN is 1), this bit and EPS (bit 4) control the parity bit as shown in Table 4.168 ZFx86 Data Book 1.0 Rev D Page 363 4 Bit 4 Description Even Parity Select – EPS When parity is enabled (PEN is 1), this bit and STKP (bit 5) control the parity bit, as shown in Table 4.168. 0: If parity enabled, an odd number of logic 1’s is transmitted or checked in the data word bits and parity bit. (default) 1: If parity enabled, an even number of logic 1’s is transmitted or checked 3 Parity Enable – PEN This bit enables the parity bit. See Table 4.168. The parity enable bit is used to produce an even or odd number of 1’s when the data bits and parity bit are summed, as an error detection device. 0: No parity bit used (default) 1: A parity bit is generated by the transmitter and checked by the receiver 2 Stop Bits – STB This bit specifies the number of stop bits transmitted with each serial character. 0: 1 stop bit generated (default) 1: If the data length is set to 5 bits via bits 1,0 (WLS1,0), 1.5 stop bits are generated. For 6, 7 or 8 bit word lengths, 2 stop bits are transmitted. The receiver checks for 1 stop bit only, regardless of the number of stop bits selected. 1-0 Character Length Select – WLS1, 0 These bits specify the number of data bits in each transmitted or received serial character and are encoded as follows: Bits 1 0 Character Length 0 0 1 1 5 (Default) 6 7 8 0 1 0 1 Table 4.168 Bit Settings for Parity Control PEN ZFx86 Data Book 1.0 Rev D EPS STKP Selected Parity Bit 0 x x None 1 0 0 Odd 1 1 0 Even 1 0 1 Logic 1 1 1 1 Logic 0 Page 364 4 access this register, see the description of BKSE (bit 7) of the LCR register. BSR Register, All Banks The BSR register selects which register bank is to be accessed next. For details on how to Location: Offset 03h Type: R/W Bits 7 Mnemonic Reset 6 5 4 BKSE 0 1 0 0 0 0 0 0 0 0 Description Bank Select Enable – BKSE 0= 1= 6-0 2 BSR6-0 Bit 7 3 Bank 0 selected Bits 6-0 specify the selected bank Bank Select When BKSE (bit 7) is set to 1, these bits select the bank, as shown in Table 4.169. Table 4.169 Bank Selection Encoding BSR Bits Bank Selected 7 6 5 4 3 2 1 0 0 x x x x x x x 0 1 0 x x x x x x 1 1 1 x x x x 1 x 1 1 1 x x x x x 1 1 1 1 1 0 0 0 0 0 2 1 1 1 0 0 1 0 0 3 1 1 1 0 1 0 0 0 4 1 1 1 0 1 1 0 0 5 1 1 1 1 0 0 0 0 6 1 1 1 1 0 1 0 0 7 1 1 1 1 1 x 0 0 Reserved 1 1 0 x x x 0 0 Reserved ZFx86 Data Book 1.0 Rev D Page 365 4 Modem/Mode Control Register (MCR) This register controls the interface with the modem or data communications set, and the device operational mode when the device is in the Extended mode. The register function differs for Extended and Non-Extended modes. MCR, Non-Extended Mode Location: Offset 04h Type: R/W Bit 7 6 5 Reserved Mnemonic Reset 0 0 0 Required 0 0 0 Bit 7-5 4 4 3 2 1 0 LOOP ISEN or DCDLP RILP RTS DTR 0 0 0 0 0 Description Reserved Loopback Enable – LOOP This bit accesses the same internal register as LOOP (bit 4) of the EXCR1 register (See ‘Extended Control Register 1 (EXCR1)’ on 375 for more information on Loopback mode). 0 = Loopback disabled (default) 1 = Loopback enabled 3 Interrupt Signal Enable or DCD Loopback – ISEN or DCDLP In normal operation (standard 16450 or 16550) mode, this bit controls the interrupt signal and must be set to 1 in order to enable the interrupt request signal. When loopback is enabled, the interrupt output signal is always enabled, and this bit internally drives DCD. New programs should always keep this bit set to 1 during normal operation. The interrupt signal should be controlled through the Plug and Play logic. 2 Request Interrupt in Loopback – RILP When loopback is enabled, this bit internally drives RI. Otherwise, it is unused. 1 Request To Send – RTS This bit controls the RTS signal output. When set to 1, RTS is driven low. When loopback is enabled, this bit drives CTS internally. 0 Data Terminal Ready – DTR Controls the DTR signal output. When set to 1, DTR is driven low. When loopback is enabled, this bit internally drives DSR. MCR, Extended Mode In Extended mode, this register is used to select the operation mode (IrDA, Sharp, etc.) of the device and to enable the DMA interface. In these modes, the interrupt output signal is always enabled, and loopback can be enabled by setting bit 4 of the EXCR1 register. ZFx86 Data Book 1.0 Rev D Page 366 4 Location: Offset 04h Type: R/W Bit 7 Mnemonic 6 5 MDSL2-0 Reset 0 0 0 Bit 7-5 4 3 2 1 0 IR_PLS TX_DFR DMA_EN RTS DTR 0 0 0 0 0 Description Mode Select – MDSL2-0 These bits select the operation mode of the functional block when in Extended mode. When the mode is changed, the TX_FIFO and RX_FIFOs are flushed, Link Status and Modem Status Interrupts are cleared, and all of the bits in the auxiliary status and control register are cleared. Bits 7 6 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 4 5 0 1 0 1 0 1 0 1 Operation Mode UART (Default) Reserved Sharp-IR SIR MIR FIR CEIR Reserved Infrared Interaction Pulse – IR_PLS This bit is effective only in MIR and FIR modes. It is set to 1 by writing 1 into it. Writing 0 into it has no effect. When set to 1, a 2 ms infrared interaction pulse is transmitted at the end of the frame and the bit is automatically cleared by the hardware.This bit is also cleared when the transmitter is soft reset. The interaction pulse must be emitted at least once every 500 ms, as long as the high-speed connection lasts, in order to quiet slower (115.2 kbps or below) systems that might otherwise interfere with the link. 3 Transmit Deferral – TX_DFR For a detailed description of the transmit deferral see ‘Transmit Deferral’ on 352. This bit is effective only if the TX_FIFOs is enabled. 0: No transmit deferral enabled (default) 1: Transmit deferral enabled. 2 DMA Enable – DMA_EN When set to1, DMA mode of operation is enabled. When DMA is selected, transmit and/or receive interrupts should be disabled to avoid spurious interrupts. DMA cycles always address the Data Holding registers or FIFOs, regardless of the selected bank. 0: DMA mode disabled (default) 1: DMA mode enabled 1 Request To Send – RTS This bit controls the RTS signal output. When set to1, RTS is driven low. When loopback is enabled, this bit internally drives both CTS and DCD 0 Data Terminal Ready – DTR This bit controls the DTR signal output. When set to 1, DTR is driven low. When loopback is enabled, this bit internally drives both DSR and RI. ZFx86 Data Book 1.0 Rev D Page 367 4 Link Status Register (LSR) register was read). They are cleared when one of the following events occur: This register provides status information concerning data transfer.Upon reset, this register assumes the value of 0x60h. The bit definitions change depending upon the operation mode of the functional block. • Hardware reset • Receiver soft reset • LSR register read Bits 1 through 4 of the LSR indicate link status events. These bits are sticky (accumulate any conditions occurred since the last time the The LSR is intended for read operations only. Writing to the LSR is not permitted. Location: Offset 05h Type: RO Bit Mnemonic Reset 7 6 5 4 ER_INF/ FR_END TXEMP TXRDY BRK/ MAX_LEN 0 1 1 0 Bit 7 3 2 FE/ PE/ PHY_ERR BAD_CRC 0 0 1 0 OE RXDA 0 0 Description Error in RX_FIFO – ER_INF/ FR_END In UART, Sharp-IR and SIR modes, this bit is set to 1 if there is at least one framing error, parity error or break indication in the RX_FIFO. This bit is always 0 in 16450 mode. It is cleared upon read or upon reset, if there is no faulted byte in RX_FIFO. Frame End – FR_END In MIR and FIR modes, set to 1 when the last byte (Frame End Byte) of a received frame reaches the bottom of the RX_FIFO. Cleared upon read. 6 Transmitter Empty – TXEMP This bit is set to 1 when the Transmitter Holding register or the TX_FIFO is empty, and the transmitter front end is idle. 5 Transmitter Ready – TXRDY This bit is set to 1 when the Transmitter Holding register or the TX_FIFO is empty. It is cleared when a data character is written to the TXD register. 4 Break Event Detected – BRK In UART, Sharp-IR and SIR modes, this bit is set to 1 when a break event is detected (that is, when a sequence of logic 0 bits, equal or longer than a full character transmission, is received). If the FIFOs are enabled, the break condition is associated with the particular character in the RX_FIFO to which it applies. In this case, the BRK bit is set when the character reaches the bottom of the RX_FIFO. When a break event occurs, only one 0 character is transferred to the Receiver Holding register or to the RX_FIFO. The next character transfer takes place after at least one logic 1 bit is received followed by a valid start bit. This bit is cleared upon read. Maximum Length – MAX_LEN In MIR and FIR modes, set to 1 when a frame exceeding the maximum length is received, and the last byte of the frame has reached the bottom of the RX_FIFO. Cleared upon read. ZFx86 Data Book 1.0 Rev D Page 368 4 Bit 3 Description Framing Error – FE In UART, Sharp-IR and SIR modes, this bit is set to 1 when the received data character does not have a valid stop bit (that is, the stop bit following the last data bit or parity bit is a 0). If the FIFOs are enabled, this Framing Error is associated with the particular character in the FIFO that it applies to. This error is revealed to the CPU when its associated character is at the bottom of the RX_FIFO. After a framing error is detected, the receiver will try to resynchronize. If the bit following the erroneous stop bit is 0, the receiver assumes it to be a valid start bit and shifts in the new character. If that bit is a 1, the receiver enters the idle state and awaits the next start bit. This bit is cleared upon read. Physical Layer Error – PHY_ERR In MIR and FIR modes, set to 1 when an abort condition is detected during the reception of a frame, and the last byte of the frame has reached the bottom of the RX_FIFO. Cleared upon read. 2 Parity Error – PE In UART, Sharp-IR and SIR modes, this bit is set to 1 if the received data character does not have the correct parity, even or odd as selected by the parity control bits of the LCR register. If the FIFOs are enabled, this error is associated with the particular character in the FIFO that it applies to. This error is revealed to the CPU when its associated character is at the bottom of the RX_FIFO. This bit is cleared upon read. CRC Error – BAD_CRC In MIR and FIR modes, set to 1 when a mismatch between the received CRC and the receiver-generated CRC is detected, and the last byte of the received frame has reached the bottom of the RX_FIFO. Cleared upon read. 1 Overrun Error – OE In UART, Sharp-IR and SIR modes, set to 1 as soon as an overrun condition is detected by the receiver. Cleared upon read. FIFOs Disabled: An overrun occurs when a new character is completely received into the receiver front end section and the CPU has not yet read the previous character in the receiver holding register. The new character is discarded, and the receiver holding register is not affected. FIFOs Enabled: An overrun occurs when a new character is completely received into the receiver front end section and the RX_FIFO is full. The new character is discarded, and the RX_FIFO is not affected. Overrun Error – OE In MIR and FIR modes, an overrun occurs when a new character is completely received into the receiver front end section and the RX_FIFO or the ST_FIFO is full. The new character is discarded, and the RX_FIFO is not affected. Cleared upon read. 0 Receiver Data Available – RXDA Set to 1 when the Receiver Holding register is full. If the FIFOs are enabled, this bit is set when at least one character is in the RX_FIFO. It is cleared when the CPU reads all the data in the Holding register or in the RX_FIFO. ZFx86 Data Book 1.0 Rev D Page 369 4 Modem Status Register (MSR) 3-0 in MCR (‘Modem/Mode Control Register (MCR)’ on 366) and to the LOOP & ETDLBK bits at the EXCR1 (‘Extended Control Register 1 (EXCR1)’ on 375) for more information. A Modem Status Event (MS_EV) is generated if the MS_IE bit in IER is enabled and any of the bits 0, 1, 2 or 3 in this register is set to 1. Bits 0 to 3 are set to 0 as a result of any of the following events: • A hardware reset occurs. • The operational mode is changed and the IRMSSL bit is 0. • The MSR register is read. In the reset state, bits 4 through 7 are indeterminate as they reflect their corresponding input signals. Note: The modem status lines can be used as general purpose inputs. They have no effect on the transmitter or receiver operation The function of this register depends on the selected operational mode. When a UART mode is selected, this register provides the current-state as well as state-change information of the status lines from the modem or data transmission module. When any of the IR modes is selected, the register function is controlled by the setting of the IRMSSL bit of the IRCR2 (‘IR Control Register 2 (IRCR2)’ on 385). If IRMSSL is 0, the MSR register works as in UART mode. If IRMSSL is 1, the MSR register returns the value 30 hex, regardless of the state of the modem input lines. When loopback is enabled, the MSR register works similarly except that its status input signals are internally driven by appropriate bits in the MCR register since the modem input lines are internally disconnected. Refer to bits Location: Offset 06h Type: RO Bit Mnemonic Reset 7 6 5 4 3 2 1 0 DCD RI DSR CTS DDCD TERI DDSR DCTS X X X X 0 0 0 0 Bit 7 Description Data Carrier Detect – DCD This bit returns the inverse of the DCD input signal. 6 Ring Indicate – RI 5 Data Set Ready – DSR This bit returns the inverse of the RI input signal. This bit returns the inverse of the DSR input signal. 4 Clear To Send – CTS This bit returns the inverse of the CTS input signal. 3 Delta Data Carrier Detect – DDCD Set to 1, when the DCD input signal changes state. 1: DCD signal state changed. 2 Trailing Edge Ring Indicate – TERI Set to 1, when the RI input signal changes state from low to high. This bit is cleared upon read. 1 Delta Data Set Ready – DDSR Set to 1, when the DSR input signal changes state. This bit is cleared upon read. ZFx86 Data Book 1.0 Rev D Page 370 4 Bit 0 Description Delta Clear to Send – DCTS Set to 1, when the CTS input signal changes state. This bit is cleared upon read. SPR Register, Non-Extended Mode This register is accessed when the Extended mode of operation is selected. The definition of the bits in this case is dependent upon the mode selected in the MCR register, bits 7 through 5. This register is cleared upon hardware reset Bit 2 is cleared also when the transmitter is “soft reset” or after S-EOT byte is transmitted. Bit 6 is cleared also when the transmitter is “soft reset” or by writing 1 into it. Bits 0,1,4 and 5 are cleared also when the receiver is “soft reset”. The SPR shares the same address as ASCR (see ‘ASCR Register, Extended Mode’ on 371). In Non-Extended mode, this is a Scratchpad register (as in the 16550) for temporary data storage. ASCR Register, Extended Mode The ASCR shares the same address as SPR (see ‘SPR Register, Non-Extended Mode’ on 371). Location: Offset 07h Type: Varies per bit Bit Mnemonic Reset 7 6 5 4 3 2 CTE TXUR RXACT/ RXBSY RXWDG/ LOST_FR TXHFE S_OET 0 0 0 0 0 0 Bit 7 1 0 FEND_INF RXF_TOUT 0 0 Description Clear Timer Event – CTE In SIR, MIR and FIR modes, writing 1 to this bit position clears the TMR_EV bit of the EIR register. Writing 0 has no effect. 6 IR Transmitter Underrun – TXUR In MIR, FIR and CEIR, this is the Transmitter Underrun flag. This bit is set to 1 when a transmitter underrun occurs. It is always cleared when a mode other than CEIR is selected. This bit must be cleared, by writing 1 into it, to re-enable transmission. 5 Receiver Active – RXACT In CEIR, set to 1 when an IR pulse or pulse-train is received. If a 1 is written into this bit position, the bit is cleared and the receiver is deactivated. When this bit is set, the receiver samples the IR input continuously at the programmed baud and transfers the data to the RX_FIFO. Receiver Busy – RXBSY In MIR and FIR, this bit is read only, and returns a 1 when reception of a frame is in progress. 4 Reception WATCHDOG – RXWDG In CEIR, set to 1 each time a pulse or pulse-train (modulated pulse) is detected by the receiver. It can be used by the software to detect a receiver idle condition. Cleared upon read. Lost Frame Flag – LOST_FR In MIR and FIR, this bit is read only, and reflects the setting of the lost-frame indicator flag at the bottom of the ST_FIFO. ZFx86 Data Book 1.0 Rev D Page 371 4 Bit Description 3 Transmitter Halted on Frame End – TXHFE In MIR and FIR, this bit is used only when the transmitter frame-end stop mode is selected (TX_MS bit in IRCR2 set to 1). It is set to 1 by the hardware when transmission of a frame is complete and the end-offrame condition was generated by the TFRCC counter reaching 0. This bit must be cleared, by writing 1 into it, to re-enable transmission. 2 Set End of Transmission – S_OET In CEIR, when a 1 is written into this bit position before writing the last character into the TX_FIFO, data transmission is properly completed. In this mode, if the CPU simply stops writing data into the TX_FIFO at the end of the data stream, a transmitter underrun is generated and the transmitter stops. In this case this is not an error, but the software must clear the underrun before the next transmission can occur. This bit is automatically cleared by hardware when a character is written to the TX_FIFO. Set End of Frame – S_OET In MIR and FIR, when a 1 is written into this bit position before writing the last character into the TX_FIFO, frame transmission is completed and a CRC + EOF is sent. This bit can be used as an alternative to the Transmitter Frame Length register. If this method is to be used, the FEND_MD bit of the IRCR2 register should be set to 1, or the Transmitter Frame Length register should be set to maximum count. 1 Transmitter Halted on Frame End – FEND_INF In MIR and FIR, this bit is read only, and is set to 1 when one or more Frame End bytes are in the RX_FIFO. Cleared when no Frame End byte is in the RX_FIFO. 0 RX_FIFO Timeout – RXF_TOUT This bit is read only and set to 1 when an RX_FIFO timeout occurs. It is cleared when a character is read from the RX_FIFO. Table 4.170 Bank 0 Bitmap Register Bits Offset Mnemonic 7 6 5 4 3 2 1 0 00h RXD RXD7 RXD6 RXD5 RXD4 RXD3 RXD2 RXD1 RXD0 00h TXD TXD7 TXD6 TXD5 TXD4 TXD3 TXD2 TXD1 TXD0 01h a MS_IE LS_IE TXLDL_IE RXHDL_IE MS_IE LS_IE TXLDL_IE RXHDL_IE IER IERb 02h Reserved TMR_IE FEN1, 0 EIRa EIRb TMR_EV FCR 03h 04h SFIF_IE BKSE BSR BKSE DMA_IE Reserved SFIF_EV RXFTH1, 0 LCR TXEMP_IE/ PLD_IE SBRK TXEMP_EV/ PLD_EV DMA_EV TXFTH1, 0 STKP EPS RXFT IPR1, 0 IPF MS_EV LS_EV/ TXLDL_EV TXHLT_EV RXHDL_IE Reserved TXSR RXSR FIFO_EN PEN STB WLS1 WLS0 BSR6-0 MCRa Reserved LOOP ISEN or DCDLP RILP RTS DTR MCRb MDSL2-0 IR_PLS TX_DFR DMA_EN RTS DTR 05h LSR ER_INF/ FR_END TXEMP TXRDY BRK/ MAX_LEN FE/ PHY_ERR PE/ BAD_CRC OE RXDA 06h MSR DCD RI DSR CTS DDCD TERI DDSR DCTS 07h a S_OET FEND_INF RXF_TOU T Scratch Data SPR ASCRb CTE/PLD TXUR RXACT/ RXBSY RXWDG/ LOST_FR TXHFE a. Non-Extended mode b. Extended mode ZFx86 Data Book 1.0 Rev D Page 372 4 BANK 1 Table 4.171 Bank 1 Register Map Offset Mnemonic Register Name Type Reference page 373 00h LBGD(L) Legacy Baud Generator Divisor Port (Low Byte) R/W 01h LBGD(H) Legacy Baud Generator Divisor Port (High Byte) R/W 02h 03h Reserved LCR/BSR Link Control/Bank Select 04h - 07h Legacy Baud Generator Divisor Ports LSB (LBGD(L)) and MSB (LBGD(H)) The Legacy Baud Generator Divisor (LBGD) port provides an alternate data path to the Baud Divisor Generator register. This port is implemented to maintain compatibility with 16550 standard and to support existing legacy software packages. In case of using legacy software, the addresses 0 and 1 are shared with the data ports RXD/TXD (see ‘Receiver Data Port (RXD) or the Transmitter Data Port (TXD)’ on 356). The selection between them is controlled by the value of the BKSE bit (see ‘Link Control Register (LCR) and Bank Select Register (BSR)’ on 363, LCR bit 7). See ‘Automatic Fallback to 16550 Compatibility Mode’ on 353 for more information regarding the fallback mechanism. The programmable baud rates in the NonExtended mode are achieved by dividing a 24 MHz clock by a prescale value of 13, 1.625 or 1. This prescale value is selected by the PRESL field of EXCR2 (‘Extended Control and Status Register 2 (EXCR2)’ on 378). This clock is subdivided by the two Baud Generator Divisor buffers, which output a clock at 16 times the desired baud (this clock is the BOUT clock). This clock is used by I/O circuitry, and after a last division by 16 produces the output baud. R/W Reserved Generator counter is immediately loaded. Table 4.173 shows typical baud divisors. After reset the divisor register contents are indeterminate. Any access to the LBGD(L) or LBGD(H) ports causes a reset to the default Non-Extended mode, that is, 16550 mode (‘Automatic Fallback to 16550 Compatibility Mode’ on 353). To access a Baud Generator Divisor when in Extended mode, use the port pair in bank 2 (see ‘Baud Generator Divisor Ports, LSB (BGD(L)) and MSB (BGD(H))’ on 375). Table 4.172 shows the bits which are cleared when fallback occurs during Extended or NonExtended modes. If the UART is in NonExtended mode and the LOCK bit is 1, the content of the divisor (BGD) ports will not be affected and no other action is taken. When programming the baud, the new divisor is loaded upon writing into LBGD(L) and LBGD(H). After reset, the contents of these registers are indeterminate. Divisor values between 1 and 216-1 can be used (zero is forbidden). Table 4.173 shows typical baud divisors. Divisor values between 1 and 216-1 can be used (zero is forbidden). The Baud Generator Divisor must be loaded during initialization to ensure proper operation of the Baud Generator. Upon loading either part of it, the Baud ZFx86 Data Book 1.0 Rev D Page 373 4 Table 4.172 Bits Cleared on Fallback Register Mnemonic UART Mode and LOCK Bit before Fallback Extended Mode LOCK = x Non-Extended Mode LOCK = 0 Non-Extended Mode LOCK = 1 MCR 2 to 7 None None EXCR1 0, 5 and 7 5 and 7 None EXCR2 0 to 5 0 to 5 None Table 4.173 Baud Generator Divisor Settings Prescaler Value 13 1.625 1 Baud Divisor % Error Divisor % Error Divisor % Error 50 75 110 134.5 150 300 600 1200 1800 2000 2400 3600 4800 7200 9600 14400 19200 28800 38400 57600 115200 230400 460800 750000 921600 1500000 2304 1536 1047 857 768 384 192 96 64 58 48 32 24 16 12 8 6 4 3 2 1 ----------- 0.16% 0.16% 0.19% 0.10% 0.16% 0.16% 0.16% 0.16% 0.16% 0.53% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% ----------- 18461 12307 8391 6863 6153 3076 1538 769 512 461 384 256 192 128 96 64 48 32 24 16 8 4 2 --1 --- 0.00% 0.01% 0.01% 0.00% 0.01% 0.03% 0.03% 0.03% 0.16% 0.12% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% --0.16% --- 30000 20000 13636 11150 10000 5000 2500 1250 833 750 625 416 312 208 156 104 78 52 39 26 13 ----2 --1 0.00% 0.00% 0.00% 0.02% 0.00% 0.00% 0.00% 0.00% 0.04% 0.00% 0.00% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% 0.16% ----0.00% --0.00% ZFx86 Data Book 1.0 Rev D Page 374 4 Link Control Register (LCR) and Bank Select Register (BSR) These registers are the same as the registers at offset 03h in bank 0. Table 4.174 Bank 1 Bitmap Register Bits Offset Mnemonic 00h LBGD(L) LBGD7-0 01h LBGD(H) LBGD15-8 7 6 5 4 3 2 1 0 PEN STB WLS1 WLS0 Register Name Type Section 02h 03h Reserved LCR BKSE BSR BKSE SBRK STKP EPS BSR6-0 04-07h Reserved BANK 2 Table 4.175 Bank 2 Register Map Offset Mnemonic 00h BGD(L) Baud Generator Divisor Port (Low Byte) R/W 01h BGD(H) Baud Generator Divisor Port (High Byte) R/W 02h EXCR1 Extended Control1 R/W 03h BSR Bank Select R/W 04h EXCR2 Extended Control 2 R/W 06h TXFLV TX_FIFO Level RO 07h RXFLV RX_FIFO Level RO 05h Reserved Baud Generator Divisor Ports, LSB (BGD(L)) and MSB (BGD(H)) These ports perform the same function as the Legacy Baud Divisor Ports in Bank 1 and are accessed identically, but do not change the operation mode of the functional block when accessed. See ‘Legacy Baud Generator Divisor Ports LSB (LBGD(L)) and MSB (LBGD(H))’ on 373 for more details. writing to BGDH causes the baud to change immediately. Extended Control Register 1 (EXCR1) Use this register to control operation in the Extended mode. Upon reset all bits are set to 0 Use these ports to set the baud when operating in Extended mode to avoid fallback to a Non-Extended operation mode, that is, 16550 compatible. When programming the baud, ZFx86 Data Book 1.0 Rev D Page 375 4 Location: Offset 02h Type: R/W Bits Mnemonic Reset 7 6 5 4 3 2 1 0 BTEST Reserved EDTLBK LOOP DMASWP DMATH DMANF EXT_SL 0 1 0 0 0 0 0 0 0 0 0 Required 1 Bit 7 Description Baud Generator Test – BTEST When set, this bit routes the Baud Generator output to the DTR pin for testing purposes. 6 Reserved. Write 1. 5 Enable Transmitter During Loopback – EDTLBK When this bit is set to 1, the transmitter serial output is enabled and functions normally when loopback is enabled 4 Loopback Enable – LOOP During loopback, the transmitter output is connected internally to the receiver input, to enable system selftest of serial communications. In addition to the data signal, all additional signals within the UART are interconnected to enable real transmission and reception using the UART mechanisms. When this bit is set to 1, loopback is selected. This bit accesses the same internal register as bit 4 in the MCR register, when the UART is in a Non-Extended mode. Loopback behaves similarly in both Non-Extended and Extended modes. When Extended mode is selected, the DTR bit of the MCR register internally drives both DSR and RI, and the RTS bit drives CTS and DCD. During loopback, the following actions occur: — The transmitter and receiver interrupts are fully operational. The Modem Status Interrupts are also fully operational, but the interrupt sources are now the lower bits of the MCR register. Modem interrupts in IR modes are disabled unless the IRMSSL bit of the IRCR2 register is 0. Individual interrupts are still controlled by the IER register bits. — The DMA control signals are fully operational. — UART and IR receiver serial input signals are disconnected. The internal receiver input signals are connected to the corresponding internal transmitter output signals. — The UART transmitter serial output is forced high and the IR transmitter serial output is forced low, unless the ETDLBK bit is set to 1 in which case they function normally. — The modem status input pins (DSR, CTS, RI and DCD) are disconnected. The internal modem status signals are driven by the lower bits of the MCR register. 3 DMA Swap – DMASWP This bit selects the routing of the DMA control signals between the internal DMA logic and the configuration module of the chip. When this bit is 0, the transmitter and receiver DMA control signals are not swapped. When it is 1, they are swapped. A block diagram illustrating the control signals routing is given in Figure 419. The swap feature is particularly useful when only one 8237 DMA channel is used to serve both transmitter and receiver. In this case only one external DMA Request/DMA Acknowledge pair will be interconnected to the swap logic by the configuration module. Routing the external DMA channel to either the transmitter or the receiver DMA logic is then simply controlled by the DMASWP bit. This way, the IR device drivers do not need to know the details of the configuration module. ZFx86 Data Book 1.0 Rev D Page 376 4 Bit 2 Description DMA FIFO Threshold – DMATH This bit selects the TX_FIFO and RX_FIFO threshold levels used by the DMA request logic to support demand transfer mode. A transmission DMA request is generated when the TX_FIFO level is below the threshold. A reception DMA request is generated when the RX_FIFO level reaches the threshold or when a DMA timeout occurs. Table 4.176 lists the threshold levels for each FIFO. 1 DMA Fairness Control – DMANF This bit controls the maximum duration of DMA burst transfers. 0 = DMA requests forced inactive after approximately 10.5 msec of continuous transmitter and/or receiver DMA operation (default) 1 = TX-DMA request deactivated when the TX_FIFO is full. An RX DMA request is deactivated when the RX_FIFO is empty. 0 Extended Mode Select – EXT_SL When set to 1, Extended mode is selected. Table 4.176 DMA Threshold Levels DMA Threshold for FIFO Type Bit Value TX_FIFO RX_FIFO 16 Levels 32 Levels 0 4 13 29 1 10 7 23 . DMA Swap Logic RX-Channel DMA Logic Configuration Module RX_DMA Routing Logic Routing Logic TX-Channel DMA Logic DMA Handshake Signals TX_DMA DMASWP Figure 4-19 DMA Control Signals Routing Bank Select Register (BSR) These register is the same as the BSR register at offset 03h in bank 0. ZFx86 Data Book 1.0 Rev D Page 377 4 Extended Control and Status Register 2 (EXCR2) This register configures the RX_FIFO and TX_FIFO sizes and the value of the Prescaler and controls the Baud Divisor register Lock. Upon reset all bits are set to 0. Location: Offset 04h Type: R/W Bit Mnemonic 7 6 LOCK Reserved 0 0 Reset 5 3 0 0 PRESL1, 0 0 Bit 7 4 2 1 0 0 RF_SIZ1, 0 0 TF_SIZ1, 0 0 Description Baud Divisor Register Lock – LOCK When set to 1, accesses to the Baud Generator Divisor register through LBGD(L) and LBGD(H) as well as fallback are disabled from non-extended mode. In this case two scratchpad registers overlaid with LBGD(L) and LBGD(H) are enabled, and any attempted CPU access of the Baud Generator Divisor register through LBGD(L) and LBGD(H) will access the ScratchPad registers instead. This bit must be set to 0 when extended mode is selected. 6 5-4 Reserved Prescaler Select – PRESL1, 0 The prescaler divides the 24 MHz input clock frequency to provide the clock for the Baud Generator. 3-2 Bits 5 4 Prescaler Value 0 0 1 1 13 (Default) 1.625 Reserved 1.0 0 1 0 1 RX_FIFO Levels Select – RF_SIZ 1, 0 These bits select the number of levels for the RX_FIFO. They are effective only when the FIFOs are enabled. 1-0 Bits 3 2 RX_FIFO Levels 0 0 0 1 1 X 16 (Default) 32 Reserved TX_FIFO Levels Select – TF_SIZ1, 0 These bits select the number of levels for the TX_FIFO. They are effective only when the FIFOs are enabled. Bits 3 2 TX_FIFO Levels 0 0 0 1 1 X 16 (Default) 32 Reserved Reserved Register Upon reset, all bits in bank 2 register with offset 05h are set to 0. ZFx86 Data Book 1.0 Rev D Page 378 4 TX_FIFO Current Level Register (TXFLV) This register returns the number of bytes in the TX_FIFO. It can be used to facilitate programmed I/O modes during recovery from transmitter underrun in one of the fast IR modes. Location: Offset 06h Type: RO Bit 7 Mnemonic Reset 6 5 4 3 Reserved 0 2 1 0 0 0 0 TFL5-0 0 0 Bit 0 0 Description 7-6 Reserved 5-0 Number of Bytes in TX_FIFO – TFL5-0 These bits specify the number of bytes in the TX_FIFO. Note: The contents of TXFLV and RXFLV are not frozen during CPU reads. Therefore, invalid data could be returned if the CPU reads these registers during normal transmitter and receiver operation. To obtain correct data, the software should perform three consecutive reads and then take the data from the second read, if first and second read yield the same result, or from the third read, if first and second read yield different results. RX_FIFO Current Level Register (RXFLV) This register returns the number of bytes in the RX_FIFO. It can be used for software debugging. Location: Offset 07 Type: RO Bit 7 Mnemonic Reset 6 5 4 3 0 0 0 0 Reserved 0 2 1 0 0 0 0 RFL5-0 Bit Description 7-6 Reserved 5-0 Number of Bytes in RX_FIFO – RFL5-0 These bits specify the number of bytes in the RX_FIFO. Note: The contents of TXFLV and RXFLV are not frozen during CPU reads. Therefore, invalid data could be returned if the CPU reads these registers during normal transmitter and receiver operation. To obtain correct data, the software should perform three consecutive reads and then take the data from the second read, if first and second read yield the same result, or from the third read, if first and second read yield different results. ZFx86 Data Book 1.0 Rev D Page 379 4 Table 4.177 Bank 2 Bitmap Register Bits Offset Mnemonic 00h BGD(L) BGD7-0 01h BGD(H) BGD15-8 02h EXCR1 BTEST 03h BSR BKSE 04h EXCR2 LOCK 7 6 5 Reserved 4 EDTLBK LOOP 3 2 1 0 DMASWP DMATH DMANF EXT_SL BSR6-0 Reserved PRESL1, 0 05h RF_SIZ1, 0 TF_SIZ1, 0 Reserved 06h TXFLV Reserved TFL5-0 07h RXFLV Reserved RFL5-0 BANK 3 Table 4.178 Bank 3 Register Map Offset Mnemonic Register Name Type 00h MRID Module Identification and Revision ID RO 01h SH_LCR Shadow of LCR RO 02h SH_FCR Shadow of FIFO Control RO 03h BSR Bank Select R/W 04h-07h Section Reserved Module Identification and Revision ID Register (MRID) This register identifies the revision of the module. When read, it returns the module ID and revision level in the format 2xh, where x indicates the revision number. Location: Offset 00h Type: RO Bit 7 6 Mnemonic Reset 4 3 2 MID3-0 0 Bit 7-4 5 0 1 0 X X RID3-0 1 0 X X Description Module ID – MID3-0 The value in these bits identifies the module type. 3-0 Revision ID – RID3-0 The value in these bits identifies the revision level. ZFx86 Data Book 1.0 Rev D Page 380 4 Shadow of Link Control Register (SH_LCR) This register returns the value of the LCR register. The LCR register is written into when a byte value, according to bits 1,0 of the LCR register in ‘Link Control Register (LCR) and Bank Select Register (BSR)’ on 363, is written to the LCR/BSR registers location (at offset 03h) from any bank. Location: Offset 01h Type: RO Bit Mnemonic 7 6 5 4 3 2 1 0 Reserved SBRK STKP EPS PEN STB WLS1 WLS0 0 0 0 0 0 0 0 0 3 2 1 0 Reserved TXSR RXSR FIFO_EN 0 0 0 0 Reset See ‘Link Control Register (LCR) and Bank Select Register (BSR)’ on 363 for bit descriptions. Shadow of FIFO Control Register (SH_FCR) This register returns the contents of the FCR register in bank 0 Location: Offset 02h Type: RO Bit 7 Mnemonic 6 5 RXFTH1, 0 Reset 0 4 TXFTH1, 0 0 0 0 Bank Select Register (BSR) This register is the same as the BSR register at offset 03h in bank 0. Reserved Registers Bank 3 registers with offsets 04h to 07h are reserved. Table 4.179 Bank 3 Bitmap Register Offset Mnemonic 00h MRID 01h SH_LCR 02h SH_FCR 03h BSR Bits 7 6 5 4 3 2 MID3-0 Reserved SBRK RXFTH1, 0 ZFx86 Data Book 1.0 Rev D 0 RID3-0 STKP EPS TXFTH1, 0 BKSE 04h-07h 1 PEN STB WLS1 WLS0 Reserved TXSR RXSR FIFO_EN BSR6-0 Reserved Page 381 4 BANK 4 Table 4.180 Bank 4 Register Map Offset Mnemonic Register Name Type Page page 382 00h TMR(L) Timer (Low Byte) RO 01h TMR(H) Timer (High Byte) RO 02h IRCR1 IR Control 1 page 383 03h BSR Bank Select 04h TFRL(L)/ TFRCC(L) Transmitter Frame Length (Low Byte)/ Transmitter Frame Current Count (Low Byte) R/W 05h TFRL(H)/ TFRCC(H) Transmitter Frame Length (High Byte)/ Transmitter Frame Current Count (High Byte) R/W 06h RFRML(L)/ RFRCC(L) Receiver Frame Maximum Length (Low Byte)/ Receiver Frame Current Count (Low Byte) R/W 07h RFRML(H)/ RFRCC(H) Receiver Frame Maximum Length (High Byte)/ Receiver Frame Current Count (High Byte) R/W Timer Registers (TMR) The Timer registers at offsets 00h, 01h are used to program the reload value for the internal down-counter as well as to read the current counter value. TMR is 12 bits wide and is split into two independently accessible parts occupying consecutive address locations. TMR(L) is located at the lower address and accesses the least significant 8 bits, whereas TMR(H) is located at the higher address and accesses the most significant 4 bits. Values from 1 to 212 –1 can be used. The 0value is reserved and must not be used. The upper 4 bits of TMR(H) are reserved and must be written with 0's. ZFx86 Data Book 1.0 Rev D page 383 page 383 page 384 The timer resolution is 125 ms, providing a maximum timeout interval of approximately 0.5 seconds. To properly program the timer, the CPU must always write the lower value into TMR(L) first, and then the upper value into TMR(H). Writing into TMR(H) causes the counter to be loaded. A read of TMR returns the current counter value if the CTEST bit is 0, or the programmed reload value if CTEST is 1. In order for a read access to return an accurate value, the CPU should always read TMR(L) first, and then TMR(H). This is because a read of TMR(H) returns the content of an internal latch that is loaded with the 4 most significant bits of the current counter value when TMR(L) is read. After reset, the content of this register is indeterminate. Page 382 4 IR Control Register 1 (IRCR1) Enables the Sharp-IR or SIR IR mode in NonExtended mode of operation. Upon reset, all bits are set to 0. Location: Offset 02h Type: R/W Bit 7 6 0 0 Mnemonic 5 4 3 0 0 0 Reserved Reset 2 IR_SL1, 0 Bit 0 1 0 CTEST TMR_EN 0 0 Description 7-4 Reserved 3-2 Sharp-IR or SIR Mode Select – IR_SL1, 0 Non-Extended mode only. These bits enable Sharp-IR and SIR modes in Non-Extended mode. They allow selection of the appropriate IR interface when Extended mode is not selected. These bits are ignored when Extended mode is selected. Bits 1 1 0 Selected Mode 0 0 1 1 UART (Default) Reserved Sharp-IR SIR 0 1 0 1 Counters Test – CTEST When this bit is set to 1, the TMR register reload value, as well as the TFRL and RFRML register contents, are returned during CPU reads. 0 Timer Enable – TMR_EN Extended mode only. When this bit is 1, the timer is enabled. When it is 0, the timer is frozen. Bank Select Register (BSR) These register is the same as the BSR register at offset 03h in bank 0. Transmitter Frame Length/Current Count (TFRL/TFRCC) These registers share the same addresses. TFRL is always accessed during write cycles and is used to program the frame length, in bytes, for the frames to be transmitted. The frame length value does not include any appended CRC bytes. TFRL is accessed during read cycles if the CTEST bit is set to 1, and returns the previously programmed value. Values from 1 to 213 –1 can be used. The 0value is reserved and must not be used. ZFx86 Data Book 1.0 Rev D TFRCC is loaded with the content of TFRL when transmission of a frame begins, and decrements after each byte is transmitted. It is read only and is accessed during CPU read cycles when the CTEST bit is 0. It returns the number of currently remaining bytes of the frame being transmitted. These registers are 13 bits wide and are split into two independently accessible parts occupying consecutive address locations. TFRL(L) and TFRCC(L) are located at the lower address and access the least significant 8 bits, whereas TFRL(H) and TFRCC(H) are located at the higher address and access the most significant 5 bits. To properly program TFRL, the CPU must always write the lower value into TFRL(L) first, and Page 383 4 then the upper value into TFRL (H). The upper 3 bits of TFRL(H) are reserved and must be written with 0's. In order for a read access of TFRCC to return an accurate value, the CPU should always read TFRCC(L) first, and then TFRCC(H). After reset, the content of the TFRL register is 800h. Receiver Frame Maximum Length/Current Count (RFRML/RFRCC) These registers share the same addresses. RFRML is always accessed during write cycles and is used to program the maximum frame length, in bytes, for the frames to be received. The maximum frame length value includes the CRC bytes. RFRML is accessed during read cycles if the CTEST bit is set to 1, and returns the previously programmed value. Values from 4 to 213 –1 can be used. The values from 0 to 3 are reserved and must not be used. RFRCC holds the current byte count of the incoming frame, and increments after each byte is received. It is read only and is accessed during CPU read cycles when the CTEST bit is 0. These registers are 13 bits wide and are split into two independently accessible parts occupying consecutive address locations. RFRML(L) and RFRCC(L) are located at the lower address and access the least significant 8 bits, whereas RFRML(H) and RFRCC(H) are located at the higher address and access the most significant 5 bits. To properly program RFRML, the CPU must always write the lower value into RFRML(L) first, and then the upper value into RFRML(H). The upper 3 bits of RFRML(H) are reserved and must be written with 0's. In order for a read access of RFRCC to return an accurate value, the CPU should always read RFRCC(L) first, and then RFRCC(H). After reset, the content of the RFRML register is 800h. Note: TFRCC and RFRCC are intended for testing purposes only. Use of these registers for any other purpose is not recommended. Table 4.181 Bank 4 Bitmap Register Bits Offset Mnemonic 00h TMR(L) 01h TMR(H) Reserved 02h IRCR1 Reserved 03h BSR 04h TFRL(L)/ TFRCC(L) 05h TFRL(H)/ TFRCC(H) 06h RFRML(L)/ RFRCC(L) 07h RFRML(H)/ RFRCC(H) 7 6 5 4 3 2 1 0 CTEST TMR_EN TMR7-0 BKSE ZFx86 Data Book 1.0 Rev D TMR11-8 IR_SL1,0 BSR6-0 TFRL7-0/TFRCC7-0 Reserved TFRL12-8/TFRCC12-8 RFRML7-0/RFRCC7-0 Reserved RFRML12-8/RFRCC12-8 Page 384 4 BANK 5 Table 4.182 Bank 5 Register Map Offset Mnemonic Register Name Type Reference 00h SPR2 Scratchpad 2 R/W Page 385 01h SPR3 Scratchpad 3 R/W 02h Reserved 03h BSR Bank Select R/W Page 385 04h IRCR2 IR Control 2 R/W Page 385 05h FRM_ST Frame Status RO 06h RFRL(L)/LSTFRC Received Frame Length (Low Byte) / Lost Frame Count RO 07h RFRL(H) Received Frame Length (High Byte) RO Scratchpad Registers Reserved Register These registers are to be used by the programmer to contain data temporarily. They have no control over the device operation. The reset value of SPR2 is 01h; the reset value of SPR3 is 00h. Bank 5 register with offset 02h is reserved. Bank Select Register (BSR) This register is the same as the BSR register at offset 03h in bank 0. IR Control Register 2 (IRCR2) This register controls the basic settings of the IR modes. Upon reset, the content of this register is 02h Location: Offset 04h Type: R/W Bit Mnemonic 7 6 Reserved SFTSL 0 0 Reset 5 4 FEND_MD AUX_IRRX 0 Bit 3 2 1 0 TX_MS MDRS IRMSSL IR_FDPLX 0 0 1 0 0 Description 7 Reserved 6 ST_FIFO Threshold Select – SFTSL An interrupt request is generated when the ST_FIFO level reaches the threshold or when an ST_FIFO timeout occurs. 0: Threshold level 2 (default) 1: Threshold level 4 5 Frame End Control – FEND_MD This bit selects whether a terminal-count condition from the TFRCC register generates an EOF in PIO mode or DMA mode. 0: TFRCC terminal count effective in PIO mode (default) 1: TFRCC terminal count effective in DMA mode ZFx86 Data Book 1.0 Rev D Page 385 4 Bit 4 Description Auxiliary IR Input Select – AUX_IRRX When set to 1, the IR signal is received from the auxiliary input. (Separate input signals may be desired for different front end circuits). See Table 4.195. 3 Transmitter Mode Select – TX_MS This bit is used in MIR and FIR modes only. When it is set to 1, transmitter frame-end stop mode is selected. In this case the transmitter stops after transmission of a frame is complete, if the end-of-frame condition was generated by the TFRCC counter reaching 0. The transmitter can be restarted by clearing the TXHFE bit of the ASCR register. 2 MIR Data Rate Select – MDRS This bit determines the data rate in MIR mode. 0 = 1.152 Mbps 1 = 0.576 Mbps 1 MSR Register Function Select in IR Mode – IRMSSL This bit selects the behavior of the Modem Status register (MSR) and the Modem Status Interrupt (MS_EV) when any IR mode is selected. When a UART mode is selected, the Modem Status register and the Modem Status Interrupt function normally, and this bit is ignored. 0 = MSR register and modem status interrupt work in the IR modes as in the UART mode (Enables external circuitry to perform carrier detection and provide wake-up events). 1 = MSR register returns 30h, and Modem Status Interrupt disabled (default) 0 Enable IR Full Duplex Mode – IR_FDPLX When set to 1, the IR receiver is not masked during transmission. The Status FIFO The ST_FIFO is used in MIR and FIR Modes. It is an 8-level FIFO and is intended to support back-to-back incoming frames in DMA mode, when an 8237-type DMA controller is used. Each ST_FIFO entry contains either status information and frame length for a single frame, or the number of lost frames. The bottom entry spans three address locations, and is accessed via the FRMST, RFRL(L)/LSTFRC and RFRL(H) registers. The ST_FIFO is flushed when a hardware reset occurs or when the receiver is soft reset. ZFx86 Data Book 1.0 Rev D Note: The status and length information of received frames is loaded into the ST_FIFO whenever the DMA_EN bit of the extendedmode MCR register is set to 1 and an 8237 type DMA controller is used, regardless of whether the CPU or the DMA controller is transferring the data from the RX_FIFO to memory. This implies that, during testing, if full duplex is enabled and a DMA channel is servicing the transmitter while the CPU is servicing the receiver, the CPU must still read the ST_FIFO. Otherwise, it fills up and incoming frames will be rejected. Page 386 4 Frame Status (FRM_ST) This register returns the status byte at the bottom of the ST_FIFO. If the LOSTFR bit is 0, bits 0 to 4 indicate if any error condition occurred during reception of the corresponding frame. Error conditions also affect the error flags in the LSR register. Location: Offset 05h Type: RO Bit Mnemonic 7 6 5 4 3 2 1 0 VLD LOST_FR Reserved MAX_LEN PHY_ERR BAD_CRC OVR1 OVR2 0 0 0 0 0 0 1 0 Reset Bit 7 Description ST_FIFO Entry Valid – VLD When set to 1, the bottom ST_FIFO entry contains valid data. 6 Lost Frame Flag – LOST_FR Indicates the type of information provided by this ST_FIFO entry. 0 = Entry provides status information and length for a received frame 1 = Entry provides overrun indications and number of lost frames 5 Reserved 4 Maximum Frame Length Exceeded – MAX_LEN Set to 1 when a frame exceeding the maximum length has been received. 3 Physical Layer Error – PHY_ERR Set to 1 when an encoding error or the sequence BOF-data-BOF is detected in FIR mode, or an abort condition is detected in MIR mode. 2 CRC Error – BAD_CRC Set to 1 when a mismatch between the received CRC and the receiver-generated CRC is detected. 1 Overrun Error 1 – OVR1 This bit is set to 1 when incoming characters or entire frames have been discarded due to the RX_FIFO being full. 0 Overrun Error 2 – OVR2 This bit is set to 1 when incoming characters or entire frames have been discarded due to the ST_FIFO being full. Received Frame Length Low Byte (RFRL(L)) / Lost Frame Count (LSTFRC) This read only register should be read only when the VLD bit in FRM_ST is 1. The information returned depends on the setting of the LOST_FR bit. Upon reset, all bits are set to 0. LOST_FR = 0: Least significant 8 bits of the received frame length. LOST_FR = 1: Number of lost frames Received Frame Length High Byte (RFRL(H)) This read only register should be read only when the VLD bit in FRM_ST is 1. The information returned depends on the setting of the LOST_FR bit. Upon reset, all bits are set to 0. ZFx86 Data Book 1.0 Rev D LOST_FR = 0: Most significant 5 bits of the received frame length. LOST_FR = 1: Reading this register removes the bottom ST_FIFO entry. Page 387 4 Table 4.183 Bank 5 Bitmap Register Bits Offset Mnemonic 00h SPR2 Scratchpad 2 01h SPR3 Scratchpad 3 7 6 5 02h 4 3 2 1 0 MDRS IRMSSL IR_FDPLX OVR1 OVR2 Reserved 03h BSR BKSE BSR6-0 04h IRCR2 Reserved 05h FRM_ST VLD 06h RFRL(L)/ LSTFRC RFRL7-0/LSTFRC7-0 07h RFRL(H) RFRL15-8 SFTSL FEND_MD AUX_IRRX TX_MS LOST_FR Reserved MAX_LEN PHY_ERR BAD_CRC BANK 6 Table 4.184 Bank 6 Register Map Offset Mnemonic Register Name Type Page 00h IRCR3 IR Control 3 R/W Page 389 01h MIR_PW MIR Pulse Width Control R/W Page 391 02h SIR_PW SIR Pulse Width Control R/W Page 391 03h BSR Bank Select R/W Page 391 04h BFPL Beginning Flags/ Preamble Length R/W Page 391 05h-07h ZFx86 Data Book 1.0 Rev D Reserved Page 388 4 IR Control Register 3 (IRCR3) This register is used to select the operating mode of the infrared interface. Location: Offset 00h Type: R/W. Bit 7 Mnemonic Reset 6 SHDM_DS SHMD_DS 0 5 4 3 FIR_CRC MIR_CRC Reserved 1 0 0 0 Bit 7 0 TXCRC_INV TXCRC_DS Reserved 0 0 0 Sharp-IR Demodulation Disable – SHDM_DS Internal 500 KHz receiver demodulation enabled (default) Internal demodulation disabledþ Sharp-IR Modulation Disable – SHMD_DS 0= 1= 5 1 Description 0= 1= 6 2 Internal 500 KHz transmitter modulation enabled (default) Internal modulation disabled FIR Mode CRC Select – FIR_CRC Determines the length of the CRC in FIR mode. 0 = 16-bit CRC 1 = 32-bit CRC 4 MIR Mode CRC Select – MIR_CRC Determines the length of the CRC in MIR mode. 0 = 16-bit CRC 1 = 32-bit CRC 3 Reserved 2 Invert Transmitter CRC – TXCRC_INV When set to 1, an inverted CRC is transmitted.This bit can be used to force a bad CRC for testing purposes. 1 Disable Transmitter CRC – TXCRC_DS When set to 1, a CRC is not transmitted. 0 Reserved ZFx86 Data Book 1.0 Rev D Page 389 4 MIR Pulse Width Register (MIR_PW) This register is used to program the width of the transmitted MIR infrared pulses in increments of either 20.833 ns or 41.666 ns depending on the setting of the MDSR bit of the IRCR2 register. The programmed value has no effect on the MIR receiver. After reset, the content of this register is 0Ah. Location: Offset 01h Type: R/W Bit 7 6 Mnemonic Reset 5 4 3 2 Reserved 0 0 1 0 1 0 MPW3-0 0 Bit 0 1 0 Description 7-4 Reserved 3-0 MIR Pulse Width – MPW 3-0 The settings of the pulse width are given in Table 4.185. Table 4.185 IMIR Pulse Width Settings Encoding Pulse Width MDRS = 0 Pulse Width MDRS = 1 00XX 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Reserved 83.33 ns 104.16 ns 125 ns 145.83 ns 166.66 ns 187.50 ns 208.33 ns 229.16 ns 250 ns 270.83 ns 291.66 ns 312.5 ns Reserved 166.66 ns 208.33 ns 250 ns 291.66 ns 333.33 ns 374.99 ns 416.66 ns 458.33 500 ns 541.66 ns 583.32 ns 625 ns ZFx86 Data Book 1.0 Rev D Page 390 4 SIR Pulse Width Register (SIR_PW) This register sets the pulse width for transmitted pulses in SIR operation mode. These settings do not affect the receiver. Upon reset, the content of this register is 00h, which defaults to a pulse width of 3/16 of the baud Location: Offset 02h Type: R/W. Bit 7 6 Mnemonic Reset 5 4 3 2 Reserved 0 0 1 0 0 0 SPW3-0 0 Bit 0 0 0 Description 7-4 Reserved 3-0 SIR Pulse Width – SPW 3-0 Two codes for setting the pulse width are available. All other values for this field are reserved. 0000: Pulse width = 3/16 of bit period (default) 1101: Pulse width = 1.6 msec Bank Select Register (BSR) These register is the same as the BSR register at offset 03h in bank 0. Beginning Flags/Preamble Length Register (BFPL) Used to program the number of beginning flags and preamble symbols for MIR and FIR modes respectively. After reset, the content of this register is 2Ah, selecting 2 beginning flags and 16 preamble symbols. Location: Offset 04h Type: R/W Bit 7 6 0 0 Mnemonic Reset 4 3 2 1 0 1 0 MBF7-4 Bit 7-4 5 1 0 1 0 FPL3-0 Description MIR Beginning Flags– MBF7-4 Selects the number of beginning flags for MIR frames.The settings of the are given in Table 4.186. 3-0 FIR Preamble Length – FPL3-0 Selects the number of preamble symbols for FIR frames.The settings of the are given in Table 4.187. ZFx86 Data Book 1.0 Rev D Page 391 4 Table 4.187 FIR Preamble Length Table 4.186 MIR Beginning Flags Encoding Beginning Flags Encoding Preamble Length 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Reserved 1 2 (Default) 3 4 5 6 8 10 12 16 20 24 28 32 Reserved 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Reserved 1 2 3 4 5 6 8 10 12 16 (Default) 20 24 28 32 Reserved Reserved Registers Bank 6 registers with offsets 05h-07h are reserved. Table 4.188 Bank 6 Bitmap Register Bits Offset Mnemonic 00h IRCR3 01h MIR_PW Reserved 02h SIR_PW Reserved 03h BSR 04h BFPL 7 6 5 4 3 2 1 0 TXCRC_ INV TXCRC_ DS Reserved MPW3 MPW2 MPW1 MPW0 SPW3 SPW2 SPW1 SPW0 SHDM_DS SHDM_DS FIR_CRC MIR_CRC Reserved BKSE 05h-07h ZFx86 Data Book 1.0 Rev D BSR6-0 MBF7-4 FPL3-0 Reserved Page 392 4 BANK 7 Table 4.189 Bank 7 Register Map Offset Mnemonic Register Name Type 00h IRRXDC IR Receiver Demodulator Control R/W 01h IRTXMC IR Transmitter Modulator Control R/W 02h RCCFG CEIR Configuration R/W 03h BSR Bank Select R/W 04h IRCFG1 IR Interface Configuration 1 Varies per bit 05h Reserved 06h Reserved 07h IRCFG4 IR Interface Configuration 4 Section R/W The CEIR utilizes two carrier frequency ranges (see also Table 4.194): • Low range which spans from 30 KHz to 56 KHz, in 1 KHz increments, and • High range which includes three frequencies: 400 KHz, 450 KHz or 480 KHz. High and low frequencies are specified independently to allow separate transmission and reception modulation settings. The transmitter uses the carrier frequency settings in Table 4.194. The four registers at offsets 04h through 07h (the IR transceiver configuration registers) are provided to configure the IR Interface (the transceiver). The transceiver mode is selected by up to three special output signals (IRSL20). When programmed as outputs these signals are forced to low when a UART mode is selected. ZFx86 Data Book 1.0 Rev D Page 393 4 IR Receiver Demodulator Control Register (IRRXDC) mode. The value of this register is ignored in both modes if the receiver demodulator is disabled (see bit 4 at ‘CEIR Configuration Register (RCCFG)’ on 397). The available frequency ranges for CEIR and Sharp-IR modes are given in Tables 4.190 through 4.192. This register controls settings for Sharp-IR and CEIR reception. After reset, the content of this register is 29h. This setting selects a subcarrier frequency in a range between 34.61 KHz and 38.26 KHz for the CEIR mode, and from 480.0 to 533.3 KHz for the Sharp-IR Location: Offset 00h Type: R/W Bit 7 6 Mnemonic 5 4 2 DBW2-0 Reset 0 1 0 0 1 DFR4-0 0 1 0 Bit 7-5 3 1 0 Description Demodulator Bandwidth – DBW2-0 These bits set the demodulator bandwidth for the selected frequency range. The subcarrier signal frequency must fall within the specified frequency range in order to be accepted. Used for both Sharp-IR and CEIR modes. 4-0 Demodulator Frequency – DFR4-0 These bits select the subcarrier’s center frequency for the CEIR mode. Table 4.190 CEIR, Low Speed Demodulator (RXHSC = 0) DFR Bits 43210 DBW2-0 Bits (Bits 7-5 of IRRXDC) 001 010 011 100 101 110 Freq. min max min max min max min max min max min max 00011 28.6 31.6 27.3 33.3 26.1 35.3 25.0 37.5 24.0 40.0 23.1 42.9 KHz 00100 29.3 32.4 28.0 34.2 26.7 36.2 25.6 38.4 24.6 41.0 23.7 43.9 KHz 00101 30.1 33.2 28.7 35.1 27.4 37.1 26.3 39.4 25.2 42.1 24.3 45.1 KHz 00110 31.7 35.1 30.3 37.0 29.0 39.2 27.8 41.7 26.7 44.4 25.6 47.6 KHz 00111 32.6 36.0 31.1 38.1 29.8 40.3 28.5 42.8 27.4 45.7 26.3 48.9 KHz 01000 33.6 37.1 32.0 39.2 30.7 41.5 29.4 44.1 28.2 47.0 27.1 50.4 KHz 01001 34.6 38.3 33.0 40.4 31.6 42.8 30.3 45.4 29.1 48.5 28.0 51.9 KHz 01011 35.7 39.5 34.1 41.7 32.6 44.1 31.3 46.9 30.0 50.0 28.8 53.6 KHz 01100 36.9 40.7 35.2 43.0 33.7 45.5 32.3 48.4 31.0 51.6 29.8 55.3 KHz 01101 38.1 42.1 36.4 44.4 34.8 47.1 33.3 50.0 32.0 53.3 30.8 57.1 KHz 01111 39.4 43.6 37.6 45.9 36.0 48.6 34.5 51.7 33.1 55.1 31.8 59.1 KHz 10000 40.8 45.1 39.0 47.6 37.3 50.4 35.7 53.6 34.3 57.1 33.0 61.2 KHz 10010 42.3 46.8 40.4 49.4 38.6 52.3 37.0 55.6 35.6 59.3 34.2 63.5 KHz 10011 44.0 48.6 42.0 51.3 40.1 54.3 38.5 57.7 36.9 61.5 35.5 65.9 KHz ZFx86 Data Book 1.0 Rev D Page 394 4 Table 4.190 CEIR, Low Speed Demodulator (RXHSC = 0) DFR Bits 43210 DBW2-0 Bits (Bits 7-5 of IRRXDC) 001 010 011 100 101 110 Freq. min max min max min max min max min max min max 10101 45.7 50.5 43.6 53.3 41.7 56.5 40.0 60.0 38.4 64.0 36.9 68.6 KHz 10111 47.6 52.6 45.5 55.6 43.5 58.8 41.7 62.5 40.0 66.7 38.5 71.4 KHz 11010 49.7 54.9 47.4 57.9 45.3 61.4 43.5 65.2 41.7 69.5 40.1 74.5 KHz 11011 51.9 57.4 49.5 60.6 47.4 64.1 45.4 68.1 43.6 72.7 41.9 77.9 KHz 11101 54.4 60.1 51.9 63.4 49.7 67.2 47.6 71.4 45.7 76.1 43.9 81.6 KHz Table 4.191 Consumer IR High Speed Demodulator (RXHSC = 1) DFR Bits 43210 DBW2-0 Bits (Bits 7-5 of IRRXDC) 001 010 011 100 101 110 Freq. min max min max min max min max min max min max 00011 381.0 421.1 363.6 444.4 347.8 470.6 333.3 500.0 320.0 533.3 307.7 571.4 KHz 01000 436.4 480.0 417.4 505.3 400.0 533.3 384.0 564.7 369.2 600.0 355.6 640.0 KHz 01011 457.7 505.3 436.4 533.3 417.4 564.7 400.0 600.0 384.0 640.0 369.9 685.6 KHz Table 4.192 Sharp-IR Demodulator DFR Bits 4321 0 xxxxx DBW2-0 Bits (Bits 7-5 of IRRXDC) 001 010 011 100 101 110 Freq. min max min max min max min max min max min max 480.0 533.3 457.1 564.7 436.4 600.0 417.4 640.0 400.0 685.6 384.0 738.5 ZFx86 Data Book 1.0 Rev D KHz Page 395 4 IR Transmitter Modulator Control Register (IRTXMC) This register selects the modulation subcarrier parameters for CEIR and Sharp-IR mode transmission. For Sharp-IR, only the subcarrier pulse width is controlled by this register - the subcarrier frequency is fixed at 500 KHz. Type: R/W Location: Offset 01 Bit 7 Mnemonic Reset 6 5 4 3 MCPW2-0 0 1 2 1 0 0 1 MCFR4-0 1 Bit 7-5 After reset, the value of this register is 69h, selecting a carrier frequency of 36 KHz and an IR pulse width of 7 msec for CEIR, or a pulse width of 0.8 msec for Sharp-IR. 0 1 0 Description Modulation Subcarrier Pulse Width – MCPW2-0 Specify the pulse width of the subcarrier clock as shown in Table 4.193. 4-0 Modulation Subcarrier Frequency – MCFR4-0 These bits set the frequency for the CEIR modulation subcarrier. The encoding is defined in Table 4.194. Table 4.193 Carrier Clock Pulse Width Options (Frequency Ranges in KHz) Encoding MCPW Bits 765 Low Frequency (TXHSC = 0) High Frequency (TXHSC = 1) Encoding MCPW Bits 765 Low Frequency (TXHSC = 0) High Frequency (TXHSC = 1) 000 Reserved Reserved 100 9 msec 0.9 msec 001 Reserved Reserved 101 10.6 msec Reserved 010 6 msec 0.7 msec 110 Reserved Reserved 011 7 msec 0.8 msec 111 Reserved Reserved ) Table 4.194 CEIR Carrier Frequency Encoding (Frequency Ranges in KHz) Encoding MCFR Bits 43210 Low Frequency (TXHSC = 0) High Frequency (TXHSC = 1) Encoding MCFR Bits 43210 Low Frequency (TXHSC = 0) High Frequency (TXHSC = 1) 00000 Reserved Reserved 01011 38 KHz 480 KHz 00001 Reserved Reserved 01100 39 KHz Reserved 00010 Reserved Reserved 01101 40 KHz Reserved 00011 30 KHz 400 KHz 01110 41 KHz Reserved 00100 31 KHz Reserved --- --- --- 00101 32 KHz Reserved 11010 53 KHz Reserved 00110 33 KHz Reserved 11011 54 KHz Reserved 00111 34 KHz Reserved 11100 55 KHz Reserved ZFx86 Data Book 1.0 Rev D Page 396 4 Table 4.194 CEIR Carrier Frequency Encoding (Frequency Ranges in KHz) (cont.) Encoding MCFR Bits 43210 Low Frequency (TXHSC = 0) 01000 01001 01010 High Frequency (TXHSC = 1) Encoding MCFR Bits 43210 35 KHz 450 KHz 11101 56 KHz Reserved 36 KHz Reserved 11110 56.9 KHz Reserved 37 KHz Reserved 11111 Reserved Reserved Low Frequency (TXHSC = 0) High Frequency (TXHSC = 1) CEIR Configuration Register (RCCFG) This register control the basic operation of the CEIR mode. Location: Offset 02h Type: R/W Bit Mnemonic 7 6 5 4 3 2 R_LEN T_OV RXHSC RCDM_DS Reserved TXHSC 0 0 0 0 0 0 Reset Bit 7 1 0 RC_MMD1, 0 0 0 Description Run Length Control – R_LEN When set to 1 enables or disables run length encoding/decoding. The format of a run length code is: YXXXXXXX where Y is the bit value and XXXXXXX is the number of bits minus 1 (Selects from 1 to 128 bits). 6 Receiver Sampling Mode – T_OV 0= 1= 5 Receiver Carrier Frequency Select – RXHSC This bit selects the receiver demodulator frequency range. 0= 1= 4 Programmed T period sampling Oversampling mode Low frequency: 30-56.9 KHz High frequency: 400-480 KHz Receiver Demodulation Disable – RCDM_DS When this bit is 1, the internal demodulator is disabled. The internal demodulator, when enabled, performs carrier frequency checking and envelope detection. This bit must be set to 1 (disabled), when the demodulation is performed externally, or when oversampling mode is selected to determine the carrier frequency. 3 Reserved 2 Transmitter Subcarrier Frequency Select – TXHSC This bit selects the modulation carrier frequency range. 0 = Low frequency: 30-56.9 KHz 1 = High frequency: 400-480 KHz ZFx86 Data Book 1.0 Rev D Page 397 4 Bit Description 1-0 Transmitter Modulator Mode – RC_MMD1,0 Determine how IR pulses are generated from the transmitted bit string. Bits Mode Description 00 C_PLS Modulation Mode. Pulses are generated continuously for the entire logic 0 bit time. 01 8_PLS Modulation Mode. 8 pulses are generated each time one or more logic 0 bits are transmitted following a logic 1 bit. 10 6_PLS Modulation Mode. 6 pulses are generated each time one or more logic 0 bits are transmitted following a logic 1 bit. 11 Reserved. Result is indeterminate. Bank Select Register (BSR) This register is the same as the BSR register at offset 03h in bank 0. IR Interface Configuration Register 1 (IRCFG1) This register holds the transceiver configuration data for Sharp-IR and SIR modes. It is also used to directly control the transceiver operation mode when automatic configuration is not Location: Offset 04h Type: Varies per bit Bit Mnemonic enabled. The four least significant bits are also used to read the identification data of a Plug and Play IR interface adapter. 7 6 5 4 3 STRV_MS Reserved Set IRTXa IRRX1 Levela IRID3 0 0 0 0 0 Reset 2 1 0 IRIC2-0 0 0 X a. The values shown for bits 5-4 are valid when the value of the MRID register, bank 3, is 24h or higher. If the MRID register value is lower than 24h, bits 5-4 are reserved. Bit 7 Description Special Transceiver Mode Selection – STRV_MS When this R/W bit is set to 1, the IRTX output signal is forced to active high and a timer is started. The timer times out after 64 msec, at which time the bit is reset and the IRTX output signal becomes low again. The timer is restarted every time a 1 is written to this bit. Although it is possible to extend the period during which IRTX remains high beyond 64 msec, this should be avoided to prevent damage to the transmitter LED. Writing a 0 to this bit has no effect. 6 Reserved 5 Set IRTX When this R/W bit is set to 1, it forces the IRTX signal high. 4 IRRX1 Level This RO bit reflects the value of the IRRX1 input signal, either 0 or 1. 3 Transceiver Identification – IRID3 ( Upon read, this RO bit returns the logic level of the IRSL3 pin. Data written to this bit is ignored. ZFx86 Data Book 1.0 Rev D Page 398 4 Bit 2-1 Description Transceiver Identification/Control – IRIC2-1 The function of these R/W bits depends on whether IRSL2-1 pins are programmed as inputs or outputs. If IRSL(2-1) are programmed as input (IRSL21_DS = 0) then: • Upon read, these bits return the logic level of the pins (allowing external devices to identify themselves). • Data written to these bit positions is ignored. If IRSL(2-1) are programmed as output (IRSL21_DS = 1) then: • If AMCFG (bit 7 of IRCFG4) is set to 1, these bits drive the IRSL(2-1) pins when Sharp-IR mode is selected. • If AMCFG is 0, these bits drive the IRSL(2-1) pins, regardless of the selected mode. Upon read, these bits return the values previously written. 0 IRIC0 (Transceiver Identification/Control). The function of this R/W bit depends on whether IRSL0/IRRX2 pin is programmed as an input or an output. If IRSL0/IRRX2 is programmed as an input (IRSL0_DS = 0) then: • Upon read, this bit returns the logic level of the pin (allowing external devices to identify themselves). • Data written to this bit position is ignored. If IRSL0/IRRX2 is programmed as an output (IRSL0_DS = 1), then: • If AMCFG (bit 7 of IRCFG4) is set to 1, this bit drives the IRSL0/IRRX2 pin when Sharp-IR mode is selected. • If AMCFG is 0, this bit drive the IRSL0/IRRX2 pin, regardless of the selected mode. Upon read, this bit returns the value previously written. Reserved Registers Bank 7 registers with offset 05h and 06h are reserved. ZFx86 Data Book 1.0 Rev D Page 399 4 IR Interface Configuration Register 4 (IRCFG4) This register configures the receiver data path and enables the automatic selection of the configuration pins. Location: Offset 07h Type: R/W Bit Mnemonic After reset, this register contains 00h. 7 6 5 4 3 Reserved IRRX_MD IRSL0_DS RXINV IRSL21_DS 0 0 0 0 0 Reset Bit 2 1 0 Reserved 0 0 0 Description 7 Reserved. This bit must be written with 0. 6 IRRX Mode Select – IRRX_MD Determines whether a single input or two separate inputs are used for Low-Speed and High-Speed IrDA modes. Table 4.195 shows the IRRXn pins used for the low-speed and high-speed infrared modes, and for the various combinations of IRSL0_DS, IRRX_MD and AUX_IRRX. 0 = One input is used for both SIR and MIR/FIR. 1 = Separate inputs are used for SIR and MIR/FIR. 5 IRSL0/IRRX2 Pin Direction Select – IRSL0_DS This bit determines the direction of the IRSL0/IRRX2 pin. See Table 4.195. 0 = Pin direction input 1 = Pin direction output 4 IRRX Signal Invert – RXINV This bit supports optical transceivers with receive signals of opposite polarity (active high instead of active low). When set to 1, an inverter is placed on the receiver input signal path. 3 IRSL2-1 Pin Direction Select – IRSL21_DS This bit determines the direction of the IRSL2 and IRSL1 pins. 0 = Pin direction input 1 = Pin direction output 2-0 Reserved Table 4.195 Infrared Receiver Input Selection IRSL0_DSa IRRX_MDb AUX_IRRXc HIS_IRd IRRXn 0 0 0 x IRRX1 0 0 1 x IRRX2 0 1 x 0 IRRX1 0 1 x 1 IRRX2 1 0 0 x IRRX1 1 0 1 x Reserved 1 1 x 0 IRRX1 1 1 x 1 Reserved a. b. c. d. IRSL0_DS (bit 5 of IRCF4) in ‘IR Interface Configuration Register 4 (IRCFG4)’ on 400. IRRX_MD (bit 6 of IRCF4) in ‘IR Interface Configuration Register 4 (IRCFG4)’ on 400. AUX_IRRX (bit 4 of IRCR2) in ‘IR Control Register 2 (IRCR2)’ on 385. HIS_IR = 1 When the selected mode is MIR or FIR. ZFx86 Data Book 1.0 Rev D Page 400 4 Table 4.196 Bank 7 Bitmap Register Bits Offset Mnemonic 00h IRRXDC DBW2-0 DFR4-0 01h IRTXMC MCPW2-0 MCFR4-0 02h RCCFG R_LEN 03h BSR BKSE 04h IRCFG1 STRV_MS 7 6 T_OV 5 4 RXHSC RCDM_DS SIRC2-0 Reserved 06h Reserved IRCFG4 Reserved ZFx86 Data Book 1.0 Rev D 2 Reserved TXHSC 1 0 RC_MMD1, 0 BSR6-0 05h 07h 3 IRRX_MD IRSL0_DS RXINV IRID3 IRIC2-0 IRSL12_DS Reserved Page 401 4 ZFx86 Data Book 1.0 Rev D Page 402 5 5. ZF-Logic and Clocking The ZF-Logic module (ZFL) is a collection of additional functions for the ZFx86. ZFL is connected internally to ISA bus. ZFL uses dedicated IO pads on ZFx86 to control external devices. There is interconnect between the bootstrap register bits and the system clocking setup. Chapter Quick Reference 5.2. "ZFL Register Space Summary" on page 404 5.3. "ISA Memory Mapper for Flash/SRAM" on page 410 5.1. Features The features of the ZFL is shown in Figure 5-1 ZF-Logic Features. These features include: • ZFL Register Set in ISA I/O Space • Programmable PWM generator • Programmable Watchdog timer • ISA Memory Mapper for Flash/SRAM • ISA I/O Mapper General Purpose Chip Select (GPCS) • Programmable Z-tag Interface 5.4. "GPCS I/O mapper" on page 422 5.5. "Watchdog Timer" on page 424 5.6. "PWM generator" on page 430 5.7. "Z-tag Overview" on page 434 • Bootstrap Register (DIP switches/PullUps) External Control of Boot Process • User and BIOS Scratch Registers 5.8. "Boot Parameters Register" on page 437 5.9. "Data registers (F0H to FEH)" on page 444 5.10. "BUR Base Register" on page 445 5.11. "System Clocking" on page 447 ZFx86 Data Book 1.0 Rev D Page 403 5 System FDD Lines Internal ISA Bus FDD MUX ZFx86 Internal Boot Up ROM (BUR) FDD Lines Z-tag CS io_cs* IO/Mapper PWM ISA Interface to the ZFL Register Set Ports 218-21A wdi, wdo Watchdog NMI, SCI, SMI, or reset ISA Memory Mapper Scratch Registers Bootstrap Registers mem_cs* Read 24-Bits on Reset Clocking Control Address MUX ISA Address Figure 5-1 ZF-Logic Features 5.2. ZFL Register Space Summary The ZFL register space is accessed from a 8bit index register and 8, 16, or 32-bit data pathway located in ISA IO space. The addresses are: ZFL data registers are accessed in one of the the following ways: A. 8-bit data transfer: Works with all indexes. Indexes single 8-bit register at index. 1. Write register number to port 218H. 2. Write the register value using data register 219H. Table 5.1 Access to ZFL Item I/O Address 8-bit Index 218h 8-bit Data at index 219h 16-bit Data at index 21Ah 32-bit Data at index 21Ah ZFx86 Data Book 1.0 Rev D Page 404 5 B. 16 and 32 bit access. Works only with even indexes. Indexes two or four consecutive data registers with single IO instruction. 1. Write register number to port 218H. 2. Read or write the register value using data register 21AH. Example: Read the 16-Bit Data at Index 02 to pick up the ZF-Logic Revision: The current revision, and thus the revision of this specification, is 1234H. mov mov out mov in al,02h dx,218h dx,al dx,21Ah ax,dx ; ; ; ; ; even (word aligned) address to do a 16-bit transfer (into AX), and we used index port 21A. This is the correct way to do it Accessing the ZF-Logic Registers A complete index of the ZF-Logic registers is shown in the tables below. While all registers can be accessed as single bytes, sometimes it is convenient to access them as 16-bit words (see the example on the previous page). You may also access them as 32-bit words when appropriate. See the example in ‘Fields in 32-bit memory settings register’ on page 416. Index Index Address Set Index read value: AX=1234H Programming Caution: 16 bit access has two opportunities for the programmer to get wrong results: make attempt to use 16 bit access for odd addresses and use wrong data IO address. In the example above, we used an ZFx86 Data Book 1.0 Rev D Page 405 5 Table 5.2 ZF-Logic Complete Index 8-Bit Data at Index 8-Bit Data at Index + 1 02 ZF-Logic Revision (LSB) -- (02H) ZF- Logic Revision (MSB) -- (03H) 04 PWM Prescaler Low Byte -- (04H) PWM Prescaler High Byte - (05H) 06 PWM duty cycle -- (06H) 08 PWM I/O Control -- (08H) 0A PWM Read Output -- (0AH) 0C Watchdog 1 Count Low Byte -- (0CH) Watchdog 1 Count High Byte -- (0DH) 0E Watchdog 2 Count Value -- (0EH) Watchdog Reset Pulse Length -- (0FH) 10 Watchdog Control Low -- (10H) Watchdog Control High -- (11H) 12 Watchdog Status -- (12H) Index 8-Bit Data at Index 8-Bit Data at Index + 1 14 I/O Window 0 Base Low (14H) I/O Window 0 Base High (15H) 16 I/O Window 0 Control (16H) 18 I/O Window 1 Base Low (18H) 1A I/O Window 1 Control (1AH) 1C I/O Window 2 Base Low (1CH) 1E I/O Window 2 Control (1EH) 20 I/O Window 3 Base Low (20H) 22 I/O Window 3 Control (22EH) I/O Window 2 Base High (1DH) I/O Window I/O Window 1 Base High (19H) W/D PWM Index I/O Window 3 Base High (21H) 24 ZFx86 Data Book 1.0 Rev D Page 406 5 Table 5.2 ZF-Logic Complete Index (cont.) Index 8-Bit Data at Index 8-Bit Data at Index + 1 26 Memory Window 0 Base Bits 7-0 MW0 Base 15-12 28 Memory Window 0 Base Bits 23-16 Memory Window 0 Base Bits 31-24 2A Memory Window 0 Size Bits 7-0 MW0 Size 15-12 2C Memory Window 0 Size Bits 23-16 Memory Window 0 Size Bits 31-24 2E Memory Window 0 Page Bits 7-0 MW0 Page 15-12 30 Memory WIndow 0 Page Bits 23-16 Memory Window 0 Page Bits 31-24 32 Memory Window 1 Base Bits 7-0 MW1 Base 15-12 34 Memory Window 1 Base Bits 23-16 Memory Window 1 Base Bits 31-24 36 Memory Window 1 Size Bits 7-0 MW1 Size 15-12 38 Memory Window 1 Size Bits 23-16 Memory Window 1 Size Bits 31-24 3A Memory Window 1 Page Bits 7-0 MW1 Page 15-12 3C Memory Window 1 Page Bits 23-16 Memory Window 1 Page Bits 31-24 3E Memory Window 2 Base Bits 7-0 MW2 Base 15-12 40 Memory Window 2 Base Bits 23-16 Memory Window 2 Base Bits 31-24 42 Memory Window 2 Size Bits 7-0 MW2 Size 15-12 44 Memory Window 2 Size Bits 23-16 Memory Window 2 Size Bits 31-24 46 Memory Window 2 Page Bits 7-0 MW2 Page 15-12 48 Memory Window 2 Page Bits 23-16 Memory Window 2 Page Bits 31-24 4A Memory Window 3 Base Bits 7-0 MW3 Base 15-12 4C Memory Window 3 Base Bits 23-16 Memory Window 3 Base Bits 31-24 4E Memory Window 3 Size Bits 7-0 MW3 Size 15-12 50 Memory Window 3 Size Bits 23-16 Memory Window 3 Size Bits 31-24 52 Memory Window 3 Page Bits 7-0 MW3 Page 15-12 54 Memory Window 3 Page Bits 23-16 Memory Window 3 Page Bits 31-24 ZFx86 Data Book 1.0 Rev D MW0 Base 11-8 MW0 Size 11-8 MW0 Page 11-8 MW1 Size 11-8 MW1 Page 11-8 Memory Window MW1 Base 11-8 MW2 Base 11-8 MW2 Size 11-8 MW2 Page 11-8 MW3 Base 11-8 MW3 Size 11-8 MW3 Page 11-8 Page 407 5 Table 5.2 ZF-Logic Complete Index (cont.) Index 8-Bit Data at Index 56 8-Bit Data at Index + 1 BUR Base Low (57H) 58 BUR Base High (58H) 5A Memory Control Low (5AH) Memory Control High (5BH) 5C 5E Z-tag Data Write Register (5EH) 60 Z-tag Data Read Register (60H) 62 Bootstrap Bits 7-0 (62H) 64 Bootstrap Bits 23-16 (64H) 66 I/O+Memory Window Map Events 66H 68 Scratch Register 0 Low (68H) Scratch Register 0 High (69H) 6A Scratch Register 1 Low (6AH) Scratch Register 1 High (6BH) 6C Scratch Register 2 Low (6CH) Scratch Register 2 High (6CH) 6E Scratch Register 3 Low (6EH) Scratch Register 3 High (6FH) 70 Scratch Register 4 Low (70H) Scratch Register 4 High (70H) 72 Scratch Register 5 Low (72H) Scratch Register 5 High (73H) 74 Scratch Register 6 Low (74H) Scratch Register 6 High (75H) 76 Scratch Register 7 Low (76H) Scratch Register 7 High (77H) 78 Scratch Register 8 Low (78H) Scratch Register 8 High (79H) 7A Scratch Register 9 Low (7AH) Scratch Register 9 High (7BH) 7C Z-tag control register (7CH) Z-tag Sequencer Divisor Register (7DH) 7E Z-tag Sequencer Waveform (7EH) Z-tag Sequencer Strobe Points (7FH) 80 Z-tag Sequencer Data (80H) Z-tag Sequencer Status (81H) 5.2.1. Pins Associated with ZF-Logic Listed below (for a complete reference) are all of the electrical pins associated with the ZFLogic. ZFx86 Data Book 1.0 Rev D Scratch Registers Bootstrap Bits 15-8 (63H) You may cross refererence to ‘Pin Descriptions Sorted by Pin’ on page 545. Page 408 5 Table 5.3 ZF-Logic Pin List B03 io_cs0 ZF-Logic I/O Mapper GPCS 0 A02 io_cs1 ZF-Logic I/O Mapper GPCS 1 A01 io_cs2 ZF-Logic I/O Mapper GPCS 2 C03 io_cs3 ZF-Logic I/O Mapper GPCS 3 B04 Mem_cs0 ZF-Logic Memory Mapper CS 0a D05 Mem_cs1 ZF-Logic Memory Mapper CS 1a. A03 Mem_cs2 ZF-Logic Memory Mapper CS 2a. C04 Mem_cs3 ZF-Logic Memory Mapper CS 3a. B05 Pwm ZF-Logic PWM Output AC01 sa[00] ISA Address/Bootstrap Register In AB02 sa[01] ISA Address/Bootstrap Register In AB01 sa[02] ISA Address/Bootstrap Register In AA03 sa[03] ISA Address/Bootstrap Register In AA02 sa[04] ISA Address/Bootstrap Register In Y04 sa[05] ISA Address/Bootstrap Register In AA01 sa[06] ISA Address/Bootstrap Register In Y02 sa[07] ISA Address/Bootstrap Register In Y03 sa[08] ISA Address/Bootstrap Register In Y01 sa[09] ISA Address/Bootstrap Register In W03 sa[10] ISA Address/Bootstrap Register In W02 sa[11] ISA Address/Bootstrap Register In W01 sa[12] ISA Address/Bootstrap Register In V03 sa[13] ISA Address/Bootstrap Register In V04 sa[14] ISA Address/Bootstrap Register In V02 sa[15] ISA Address/Bootstrap Register In V01 sa[16] ISA Address/Bootstrap Register In U02 sa[17] ISA Address/Bootstrap Register In U03 sa[18] ISA Address/Bootstrap Register In U01 sa[19] ISA Address/Bootstrap Register In ZFx86 Data Book 1.0 Rev D Page 409 5 Table 5.3 ZF-Logic Pin List T04 sa[20] ISA Address/Bootstrap Register In T03 sa[21] ISA Address/Bootstrap Register In T02 sa[22] ISA Address/Bootstrap Register In R03 sa[23] ISA Address/Bootstrap Register In A04 Wdi ZF Logic - Watch Dog Timer C05 Wdo ZF Logic - Watch Dog Timer a. When the ZF-Logic is disabled, the MEM_CS* pins remain active. However, their functions changes. Generally there is never a reason to disable the ZF-Lgoic. See ‘Composite BootStrap Register Map’ on page 438. 5.3. ISA Memory Mapper for Flash/SRAM The ZFL allows the ZFx86 to control up to four external memory devices on the ISA bus. These devices can be mapped into the system memory address space. Typically, this feature is used to map external Flash memory into the ISA address space without external address decoding logic. ISA Memory Mapper Mem_cs* Translated ISA Address ISA Address Address MUX ISA Address Table 5.4 Memory Mapper Pins These devices are connected externally to ISA BUS address, data and memr/memw signals. Each device has a dedicated chip select signal generated by ZFL. Each device can occupy up to 16 Megabytes (occupying all 24 ISA address lines). The minimum window size is 8Kbyte. These devices are mapped into the system memory space and accessed through windows (memory view ports) in the memory space. In DOS mode these windows can be up to 256K bytes and reside only in upper 1 Mbyte DOS ROM area (C0000-FFFFF). In protected mode the windows can occupy all 24 ISA address lines (000000 - FFFFFF). This area is accessed in protected mode through memory space above system SDRAM. If the address is not in the system memory and no PCI device claims it then it is forwarded to the ISA bus. This makes the ISA bus appear multiple times in the upper memory area. PKG Name Description B04 Mem_cs0 ZF-Logic Memory Mapper CS 0 D05 Mem_cs1 ZF-Logic Memory Mapper CS 1 A03 Mem_cs2 ZF-Logic Memory Mapper CS 2 • Window Size C04 Mem_cs3 ZF-Logic Memory Mapper CS 3 • Base address A separate window (memory viewport) can be defined for each device with the following parameters: • Page ZFx86 Data Book 1.0 Rev D Page 410 5 All parameters are aligned with 4 KB increments in system memory.Access mode (rd_only / wr) can be changed from the window control register (see Table 5.12, ‘Memory Control Low -- Index 5AH,’ on page 413). The Memory Chip Select lines (Mem_cs*) are always active low. lines. The ISA address lines in ZFx86 are stable during entire memory cycle and thus FLASH can be directly connected to ISA bus signals. A memory windows overlap event is generated if two or more mem_cs* signals are active at the same time, i.e. when memory windows do overlap in memory space. This event can be routed to NMI, SCI or SMI. Access to overlapping area will not cause any of the mem_cs* to became active. The BASE and SIZE are the window in the ZFx86 ISA address space, and the PAGE is a relative value (+ or - from BASE) used to calculate the target address in the flash. Memory page registers are translated on-thefly using ISA bus address lines. If an active mapping window is accessed then the FLASH page register is added to ISA upper address Window 0 has special power up initialization. Table 5.5 Indices For Memory Windows Function 0 1 2 3 Base Low 27H 33H 3FH 4BH Table 5.6 on p. 411 base bits 15:12 (nibble 3) Base High 28H 34H 40H 4CH Table 5.7 on p. 412 base bits 23:16 (nibbles 5-4) Size Low 2BH 37H 43H 4FH Table 5.8 on p. 412 page size nibble 3 Size High 2CH 38H 44H 50H Table 5.9 on p. 412 page size nibbles 5 - 4 Page Low 2FH 3BH 47H 53H Table 5.10 on p. 412 page nibble 3 Page High 30H 3CH 48H 54H Table 5.11 on p. 412 page nibbles 5 - 4 Reference Description Control Low 5AH Table 5.12 on p. 413 read/write control Control High 5BH Table 5.13 on p. 413 address decoding for boot Status 66H Table 5.14 on p. 414 Memory (and I/O) Status Table 5.6 Memory Window “N” Base Low - Bits 15:12 (nibble 3) Bit Function Default R/W 7 6 5 4 d15 d14 d13 d12 reserved 0 0 0 0 0 R/W R/W R/W R/W R/O ZFx86 Data Book 1.0 Rev D 3 2 1 0 Page 411 5 Table 5.7 Memory Window “N” Base High - Bits 23:16 (nibbles 5-4) Bit Function Default R/W 7 6 5 4 3 2 1 0 d23 d22 d21 d20 d19 d18 d17 d16 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W Table 5.8 Memory Window “N” Size Low - (nibble 3) Bit Function Default R/W 7 6 5 4 3 2 1 0 d15 d14 d13 d12 reserved reserved reserved reserved 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/O R/O R/O R/O Programming Notes for Memory Window Size: Setting the memory window size to zero disables the memory window. Table 5.9 Memory Window “N” Size High - (nibbles 5-4) Bit Function Default R/W 7 6 5 4 3 2 1 0 d23 d22 d21 d20 d19 d18 d17 d16 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W Table 5.10 Memory Window “N' Page Low - (nibble 3) Bit Function Default R/W 7 6 5 4 3 2 1 0 d15 d14 d13 d12 reserved reserved reserved reserved 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/O R/O R/O R/O Table 5.11 Memory Window “N” Page High - (nibbles 5-4) Bit Function Default R/W 7 6 5 4 3 2 1 0 d23 d22 d21 d20 d19 d18 d17 d16 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ZFx86 Data Book 1.0 Rev D Page 412 5 Table 5.12 Memory Control Low -- Index 5AH Bit Function Default R/W 7 6 5 4 3 2 1 0 w3_ro w2_ro w1_ro w0_ro w3_8 w2_8 w1_8 w0_8 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W Note: The default value for this register bit 0 is dependent on bootstrap jumper setting, connected to the ZFx86 SA12 line. This can be overridden writing new value to the memory window control register. Setting the memory window to read-only mode disables both, the MEMW_N and SMEMW_N signals on ISA bus for the according memory window region. Bit Name 7:4 Function wn_ro Window n Read-write Control 0: Window N Is Read-write 1: Window N Is Read-only 3:0 wn_8 Window n Data Bus Width 0= Window N Uses 16-bit Data Access 1= Window N Uses 8-bit Data Access Table 5.13 Memory Control High -- Index 5BH Bit 7 6 Function Default R/W Bit Name 7:1 Reserved 0 full ISA ZFx86 Data Book 1.0 Rev D 5 4 3 2 1 0 reserved full ISA 0 0 R/O R/W Function Masks address bits 23:20 out of comparison. This is used for boot to fetch data from ROM 0= Enable only bits 19:0 in address calculations 1= Enable full ISA 23:0 in address calculations Page 413 5 Table 5.14 I/O and Memory Window Mapper Events -- Index 66H Bit 7 6 Reserved 5 4 Event Type Function 3 2 1 0 Memory I/O memory I/O Overlap Overlap window window change change Default R/W Bit 0 0 0 0 0 0 R/O R/W R/W R/W R/W R/W Name 7:6 Reserved 5:4 Event Type Function Generated event type 00 = 01 = 10 = 11 = 3 Memory Overlap Enable resolve event on memory overlap 0= 1= 2 I/O Overlap Memory Access I/O Access Disable event on I/O window overlap Enable event on I/O window overlap Enable event on memory window change 0= 1= 0 Disable event on memory overlap Enable event on memory overlap Enable event on I/O window overlap 0= 1= 1 No event SCI NMI SMI Disable event Enable event Enable event on I/O window change 0= 1= Disable event Enable event It is only possible to boot from these sources: • External 8 bit ROM/FLASH , mem_cs0 • External 16-bit ROM/FLASH, mem_cs0, bootstrap 12 = 0 • External BUR, always 8-bit, gpio0, bootstrap 11 = 0. See BS11 in Table 5.42. • Internal BUR, always 8-bit The selection between BUR and ROM/FLASH is done according to bootstrap bit 23: 1 = boot from BUR The boot starts from the first code fetch at address FFFFFFF0 which is translated to ISA space FFFFF0 (upper 8 bits truncated). The internal decoder sees only the first megabyte of it (the FULL_ISA bit in ZF reg space ) -FFFF0. The chip select is programmed to respond to the addesses in the range F0000 – FFFFF or the last 64 Kbytes. 0 = boot from ROM/FLASH ZFx86 Data Book 1.0 Rev D Page 414 5 16 MB Window Size Window Page + Base Base Address 0 External Address Space (Flash, etc.) 0 MB ISA Address Space Figure 5-2 Memory Window Mapping 5.3.1. Window settings registers The starting address, window size and page define the mapping for each of the four external memory devices. The mapping is disabled when window size is zero. The register map of Memory decode area is shown in Table 5.5, ‘Indices For Memory Windows,’ on page 411 Window 0 has special power up initialization. See "Initialization of mem_cs0" on page 418., The starting address, window size and page registers are each 32-bit registers. Each of these consumes four 8-bit registers in ZFL register space. Window size, location and FLASH page can be set in 4KB increments (as the last 12 bits are implicitly 0). ISA BUS limits ZFx86 Data Book 1.0 Rev D the address space to 24 bits, so the top 8 bits are implicitly 0. The layout of the memory settings register is shown below. The lower 12 bits must be zero to comply with 4KB increments and the upper 8 bits are 0 because the ISA bus has only 24 address lines. When determining whether or not an addresses emitted by the processor should generate a mem_cs*, the upper 8-bits of the 32-bit memory address are ignored. Thus a memory page can appear (alias) many places in the (CPU’s) 4 GB address space. 5.3.1.1. Page Register Calculations Note, that page addresses are always ADDED Page 415 5 to the actual address, so in order to access flash chip at address smaller than memory window location, the page register value must cause roll-over at 16Mbyte boundary. The simple rule of the thumb for calculating desired page register value is: Page_register = (16M-memory_window_base) + desired_flash_offset Therefore, in order to map flash offset 0000h for memory window, located at E0000h, the correct formula is: Page_register = (1000000h-E0000h)+0 = F20000h For another example, see 5.3.5. "Sample Code for Memory Window Calculation" on page 421. 5.3.1.2. Size Register The right-most 12 bits of the Size Register are implicitly 1’s. So F000H is really FFFFH. The size actually represents the maximum address from memory window base that will be decoded as window, so the window size 0FFFFH (actually 0FxxxH) will result 64 Kbyte window, and 10000H (actually 10xxxH) will result in a 68 Kbyte window. 5.3.1.3. Base Register The memory window content is visible using two different access methods: a) Memory window can be located in upper portion of the first 1MB of the address space at addresses (C0000-FFFFF). This window is directly visible as far as shadow memory is not mapped to that area. (See Memory Holes following). b) Because of the ISA-PCI address mapping, the same memory window will roll over at every 16Mbyte on entire 4 Gbyte PCI memory space as far as there is no SDRAM at this area and no PCI device claims it. For example, if 5 Mbyte memory window is created in memory area 100000h-600000h, the same memory window content can be seen and accessed at regions 1100000h-1600000h, 2100000h-2600000h etc. This allows the access of the memory window content despite of the SDRAM presence, since memory window accesses can always happen above first 256 Mbyte. There are two 8-bit registers each for Window Size, Base and Page. In each case, the two 8-bit registers supply bits 15-12 and bits 23-16 respectively. You may access these registers as a 32-bit operand. That is, you do a 32-bit in or out to the lowest of the 4 addresses. See the programming example following. Bits 15-12 Bits 23-16 12 bits 8 bits 12 bits 24|23 31 00H 12|11 0 00H User Defined 32 bits Figure 5-3 Fields in 32-bit memory settings register 5.3.1.4. Viewing Memory Holes ZFx86 Data Book 1.0 Rev D The DRAM address space is potentially the first 265 MB of the address space (depending Page 416 5 upon the size of the DRAM). Table 3.20, ‘Shadow RAM Read Enable Control Register (SHADRC),’ on page 149, and Table 3.21, ‘Shadow RAM Write Enable Control Register,’ on page 150, describe the allocation of DRAM memory between C0000 and F0000. DRAM which not enabled for write and not enabled for read represent a memory hole. DRAM addresses in that range propagate to the ISA address bus and can be “intercepted” by #define NBIndex #define NBData #define RID #define SHADRC #define SHADWC 0x24 0x26 0x100 0x200 0X201 memory windows.The printout below is from a DOS application program run on ZFx86 Integrated Development System after boot using the Phoenix BIOS. This tells you which addresses in the range C0000 to FFFFF are available for windows. In this case addresses from C0000 to C7FFF (32K) are taken up by the video BIOS on the Video Card. // North Bridge Configuration Index Register // North Bridge Configuration Data Register // North Bridge RevisionID Register // Shadow RAM Read Enable Control Register // Shadow RAM Write Enable Control Register void displayNBConfiguration (void) { unsigned long uii; printf ("North Bridge RevisionID Register = %04XH\r\n", uiGetNB (RID)); printf ("North Bridge Shadow RAM Read Enable Control Register = %04XH\r\n", uiGetNB (SHADRC)); printf ("North Bridge Shadow RAM Write Enable Control Register = %04XH\r\n", uiGetNB (SHADWC)); // figure out which pages are available for memory mapping we need 0 in both -uii = uiGetNB (SHADRC) | uiGetNB (SHADWC); uii = uii ^ 0xFFFF; // toggle all the bits - 1 means that both RD and WR disabled if ( (uii & BIT0 ) == BIT0 ) printf ("Window OK at C0000-C3FFFH \r\n"); if ( (uii & BIT1 ) == BIT1 ) printf ("Window OK at C4000-C7FFFH \r\n"); if ( (uii & BIT2 ) == BIT2 ) printf ("Window OK at C8000-CBFFFH \r\n"); if ( (uii & BIT3 ) == BIT3 ) printf ("Window OK at CC000-CFFFFH \r\n"); if ( (uii & BIT4 ) == BIT4 ) printf ("Window OK at D0000-D3FFFH \r\n"); if ( (uii & BIT5 ) == BIT5 ) printf ("Window OK at D4000-D7FFFH \r\n"); if ( (uii & BIT6 ) == BIT6 ) printf ("Window OK at D8000-DBFFFH \r\n"); if ( (uii & BIT7 ) == BIT7 ) printf ("Window OK at DC000-DFFFFH \r\n"); if ( (uii & BIT8 ) == BIT8 ) printf ("Window OK at E0000-E3FFFH \r\n"); if ( (uii & BIT9 ) == BIT9 ) printf ("Window OK at E4000-E7FFFH \r\n"); if ( (uii & BIT10 ) == BIT10 ) printf ("Window OK at E8000-EBFFFHWindow \r\n"); if ( (uii & BIT11 ) == BIT11 ) printf ("Window OK at EC000-EFFFFH \r\n"); if ( (uii & BIT12 ) == BIT12 ) printf ("Window OK at F0000-F3FFFHWindow \r\n"); if ( (uii & BIT13 ) == BIT13 ) printf ("Window OK at F4000-F7FFFH \r\n"); if ( (uii & BIT14 ) == BIT14 ) printf ("Window OK at F8000-FBFFFHWindow \r\n"); if ( (uii & BIT15 ) == BIT15 ) printf ("Window OK at FC000-FFFFFH \r\n"); Window } unsigned int uiGetNB (unsigned int uiNBItem) { Window outpw (NBIndex, uiNBItem); return inpw (NBData); } Window ZFx86 Data Book 1.0 Rev D OK at C8000-CBFFFH OK at CC000-CFFFFH OK at D0000-D3FFFH OK at D4000-D7FFFH OK at D8000-DBFFFH OK at DC000-DFFFFH Page 417 5 5.3.2. Control (R/W, 8/16) The control register is common for all four memory devices. The first four bits control the data width of external memory device. The lower four bits set the write enable mask to write protect memory. See Table 5.13, ‘Memory Control High -- Index 5BH,’ on page 413. The default initialization provides a 64K window starting at F000H in the ZFx86. Default Power-Up Initialization of mem_cs0 (window 0) is done by the ZFx86 hardware to boot from flash using window 0: • Base address = F0000H 5.3.3. Events (SMI, etc.) • Window size = 64K-1 (F000H) The mem_cs* is asserted when it does not overlap with others in system RAM. This runtime test is executed every time the memory mapping registers are accessed. The events register (Table 5.14, ‘I/O and Memory Window Mapper Events -- Index 66H,’ on page 414) allows control of the generated event (SCI, NMI, etc.) based on Window Change or Window Overlap. • Width = dependent on bootstrap at SA12 5.3.4. Initialization of mem_cs0 The ZFx86 is designed to boot from an external ROM/FLASH chip using mem_cs0. In order to do this, the ZFx86 pre-loads the Base, Size and Page registers for mem_cs0 on power up. It also sets the width bit based on your setting of SA12 (see ‘Boot Parameters Register’ on page 437). The mem_cs0 registers are set up such that the top 64K of the external Flash Chip will be accessed. • Page = 00000h It's essential to set the mem_cs0 page to 00F00000h before the first FAR jump in BIOS. Otherwise the boot fails with flash chips bigger than 1MB, since upper addresses are cleared from the ISA bus after a far jump and the next memory reads (instruction fetches) go to the last 64K of the first 1M of the flash chip. Mem_cs0 Programming Example NOTE: It’s essential to set the mem_cs0 page address to 00F00000h before the first FAR jump in BIOS for flash chips larger than 1 Mbyte. Otherwise the POST fails, since upper addresses are cleared from the ISA bus after the first far jump and subsequent memory reads appear at the first megabyte of the chip, instead of the last megabyte. The exact boot up sequence of an X86 processor is well known -- but the addition of the ZFx86 ISA Memory Mapper makes the process a bit tricky. ZFx86 Data Book 1.0 Rev D Page 418 5 ; set page address to access last MB inside flash mov mov out add mov out al, 2Eh ; Memwindow 0 page register 32-bit access dx, 218h ; ZFL IDX register dx, al ; Select memwin 0 base dx, 2 ; seek to 32-bit data register eax, 00F00000h ; set page to be 16Mbyte-1Mbyte dx, eax ; set page (not needed see below) ; Following near jump is mandatory jmp $+2 ; refill CPU pipeline comment * Thanks to code already fetched into CPU pipeline we do not crash after next OUT instruction. However, after that we can not make another code fetch from ISA device until we make the first FAR jump that clears upper address bits bus. * out dx,eax ; Nothing must come between OUT and FAR JMP or we don’t fit ; inside pipeline (16 bytes) any more. db 0EAh ; JMP FAR absolute dw offset FirstFarJmp dw 0F000h FirstFarJmp: comment * We are all right now for whatever chip size, because we always see the last megabyte of the chip from now on. If we need a bigger window to flash (because of the 256K BIOS image perhaps), we can enable it here and now, before proceeding with actual POST * IF (WINDOW_256K) ; set window size to 256K now mov dec dec out inc inc mov out al, 2Ah dx dx dx, al dx dx eax, 40000h-1 ; window size to 256K dx, eax ; drop window base address to C0000h mov dec dec out inc inc mov out al, 26h dx dx dx, al dx dx eax, 0C0000h dx, eax ENDIF ;(WINDOW_256K) ; Jump now whenever it was necessary in a first place db 0EAh ; JMP FAR absolute FJum_Offset dw 0h ; offset into BIOS ZFx86 Data Book 1.0 Rev D Page 419 5 FJump_Segment dw 0h ; segment into BIOS ZFx86 Data Book 1.0 Rev D Page 420 5 5.3.5. Sample Code for Memory Window Calculation Here we will create a 32K window starting at D0000 in the ZFx86 address space. The window initially point to offset 2000H within the flash chip. Example: You would have to set the Page register to 00F32000H (or F32 in the ZFx86 Phoenix BIOS Memory Window Setup Screen). Phoenix ZFx86 BIOS Memory Window Setup Calculator Helper: Enter Window Size between 8 and 16384K: 32 Recommended Value for Size = 007000H Enter Desired Window Base in Hex (example DC000) D0000 Enter Desired Window Size in Hex (example 1000 = 8K, FFF000 = 16 MB 7000 unsigned long ulBase, ulSize, ulTarget, ulPage, ulDesiredK; printf ("\r\n\n\nPhoenix ZFx86 BIOS Memory Window Setup Calculator \r\n", uiWorkingCS); printf ("\r\nHelper: Enter Window Size between 8 and 16384K: "); ulDesiredK = uiScanInDecimal(0); if ((ulDesiredK >= 8) && (ulDesiredK <= 16384)) printf ("\r\n Recommended Value for ""Size"" = %06lXH\r\n", (ulDesiredK-4) * 1024 ); printf ("\r\nEnter Desired Window Base in Hex (example DC000) "); ulBase = ulScanInHex (); printf ("\r\nEnter Desired Window Size in Hex (example 1000 = 8K, FFF000 = 16 MB "); ulSize = ulScanInHex (); printf ("\r\nEnter Flash Target Address in Hex (example 2000 = 8K) "); ulTarget = ulScanInHex (); ulBase = ulBase & 0xFFF000; ulSize = ulSize & 0xFFF000 ; ulTarget = ulTarget & 0xFFF000; printf ("\r\nBase = %08lXH or %03lXH or %04ld decimal", ulBase, ulBase >> 12, ulBase >>12); if (ulSize == 0) printf ("\r\nWindow Disabled Size == 0"); else printf ("\r\nSize = %08lXH or %03lXH or %04ld decimal for Size = %dK", ulSize, ulSize >> 12, ulSize >>12, ((ulSize >> 12) + 1) * 4); ulPage = (0x1000000 - ulBase + ulTarget) & 0xFFF000; printf ("\r\nPage = %08lXH or %03lXH or %04ld decimal for Flash Off set = %08lXH\r\n\n", ulPage, ulPage >> 12, ulPage >>12, ulTarget); ZFx86 Data Book 1.0 Rev D Page 421 5 5.4. GPCS I/O mapper ZFx86 has four GPCS (General Purpose Chip Select) signals mapped to io_cs* pins. GPCS signals can be used to connect external devices to ISA I/O space without external address decode logic. Each io_cs* signal is assigned an address (or a set of consecutive addresses) in the ISA I/O space. This address, or set of consecutive addresses, is called the “window”. The window can cover 16 byte ports or 8 word ports. I/O ranges of different GPCS signals can not overlap. An internal check is done to assure that this condition is satisfied before enabling the io_cs* lines. For example, if the chip you wish to connect to the ZFx86 using one of the io_cs pins has four ports (such as the old 8255 chip), you would want the chip select to be asserted for four consecutive addresses. The chip itself would differentiate between the addresses by looking at the low two bits of the ISA address bus. The base address register is 16-bits wide. This allows the window to be defined anywhere in the 16-bit IO space. . The io_cs* signal can be programmed for either 8-bit or 16-bit wide bus access: on an aligned 16 bit I/O transfer, a 16-bit wide bus would generate one I/O cycle, and an 8-bit wide bus would generate two I/O cycles. The GPCS register set is shown below, and also in Table 5.16. 1. GPCS 0 settings • 15H-14H:io_cs0 base address I/O Mapper io_cs* Table 5.15 GPCS Pins • 16H: io_cs0 control 2. GPCS 1 settings • 19H-18H:io_cs0 base address • 1AH: io_cs0 control PKG Name Description B03 io_cs0 ZF-Logic I/O Mapper GPCS 0 A02 io_cs1 ZF-Logic I/O Mapper GPCS 1 • 1DH-1CH:io_cs0 base address A01 io_cs2 ZF-Logic I/O Mapper GPCS 2 • 1EH: io_cs0 control C03 io_cs3 ZF-Logic I/O Mapper GPCS 3 3. GPCS 2 settings 4. GPCS 3 settings • 21H-20H:io_cs0 base address • 22H: io_cs0 control 5. Events Register (66H) (NMI, etc.) ZFx86 Data Book 1.0 Rev D Page 422 5 Table 5.16 ZF-Logic Indices For I/O Windows Function 0 1 2 3 Reference Description Base Low 14H 18H 1CH 20H Table 5.18 on page 423 base bits 7-0 Base High 15H 19H 1DH 21H Table 5.19 on page 424 base bits 15-8 Control 16H 1AH 1EH 22H Table 5.20 on page 426 Table 5.17 ZF-Logic Index for I/O Windows I/O Window 0 Base Low (14H) 16 I/O Window 0 Control (16H) 18 I/O Window 1 Base Low (18H) 1A I/O Window 1 Control (1AH) 1C I/O Window 2 Base Low (1CH) 1E I/O Window 2 Control (1EH) 20 I/O Window 3 Base Low (20H) 22 I/O Window 3 Control (22H) I/O Window 0 Base High (15H) I/O Window 14 I/O Window 1 Base High (19H) I/O Window 2 Base High (1DH) I/O Window 3 Base High (21H) ... Note: see Table 5.14, ‘I/O and Memory Window Mapper Events -- Index 66H,’ on page 414 66 I/O+Memory Window Map Events (66H) Events Register Table 5.18 I/O Window “N” Base Low Format Bit 7 Function Default R/W ZFx86 Data Book 1.0 Rev D 6 5 4 3 2 1 0 I/O Window 0 Base Low 0 R/W Page 423 5 Table 5.19 I/O Window “N” Base High Format Bit 7 6 5 Function 4 2 1 0 I/O Window 0 Base High Default 0 R/W R/W Bit 7 3 Name win_ro Function I/O window read/write control 0: = Access is read-write 1: = Access is read-only Setting window to read-only mode disables IOW_N signal on ISA bus for IO window address range. 6 16_bit I/O window datapath width 0= 1= 5 act_lvl io_cs active level 0= 1= 4 win_en win_siz io_cs is active low io_cs is active high I/O window enable in I/O space 0= 1= 3:0 8-bit wide access 16-bit wide access I/O window is disabled I/O window is enabled Number of consecutive 8-bit I/O addresses to decode starting from I/O window base. The number of consecutive addresses decoded is win_siz + 1. For example, setting the window size to 0 enables one I/O address at I/O window base. Setting size to 0Fh will enable I/O window of 16 addresses starting from I/O window base. You can access a maximum of 16 byte ports or 8 word ports. 5.4.1. GPCS control 5.4.3. GPCS base high byte The Active Level (act_lvl) selects the active level of io_cs* line. The Window Enable (win_en) enables the decoder. The Write Enable (win_ro) masks the ISA I/O write signal making the window read-only. The Window Size (win_siz) determines the window size in the ISA IO space. This byte is located at GPCS base + 1 in ZFL register map. It determines the high byte of window start address in ISA IO space. 5.4.2. GPCS base low byte 5.5. Watchdog Timer This byte is located at GPCS base in ZFL register map. It determines the low byte of the window start address in the ISA IO space. The watchdog timer is used to stabilize and recover the system in case possible failures and bugs in a program make the ZFx86 uncontrollable. Whenever the watchdog timer ZFx86 Data Book 1.0 Rev D 5.4.4. GPCS Events See Table 5.14, ‘I/O and Memory Window Mapper Events -- Index 66H,’ on page 414. Page 424 5 is not reloaded during a pre programmed interval it generates an event to notify the system of an error condition. It works like this: The first watchdog timer is initialized to a 16-bit time-out value through registers 0Ch and 0Dh. After enabling through control register (10h) it starts the countdown to zero. The first watchdog timer can be reloaded to an initial value by writing into control register (10h) or asserting the watchdog external control pin on ZFx86 (WDI). Whenever the first watchdog is not reloaded during the time-out value it generates an event to notify the system of an error condition and outputs the logical “1” to a watchdog output pin on ZFx86 (WDO). The notification event can be routed to NMI, SMI, SCI or it can reset the system immediately. The watchdog in ZFL consists of two timers - WD#1 and WD#2. Both timers are driven by 32 KHz clock. The maximum period for WD#1 is 2 seconds and for WD#2 7.2 ms. After WD#1 has expired it can generate NMI, SMI, SCI or RESET and start timer WD#2. The second watchdog timer 8-bit time-out value is initialized through register 0Eh and starts counting down after WD#1 time-out. When the WD#2 counter reaches zero, it will unconditionally cause system reset. DMX NMI SCI SMI RESET WD0 WDI WD#1 16-bit counter 2 sec. max WD#2 8-bit counter 7.2 ms max RESET 32 KHz Figure 5-4 Watchdog Block Diagram There is a WDO and WDI pin -- the WDI can be programmed to reload WD#1. If you toggle WDI (falling or rising) you can prevent the WD from ever expiring. The benefit of this is that so long as an external square wave is coming in, the WD never expires. You are thus using an EXTERNAL way of keeping the ZFx86 from resetting -- you are watching for an external “dead man” switch. nect WDO to WDI with an OR gate or AND gate to that external signal. If you set it up this way, then you set wdo-1 to generate event 1 pulse before expiring. If you did not do this, it would expire. See wdo-1 in Table 5.6 "Memory Window “N” Base Low Bits 15:12 (nibble 3)" on page 411 To do this, you need to have an outside event generator. Let’s assume that all you have is a logic signal which shows you if the external system is working or not. You can then con- ZFx86 Data Book 1.0 Rev D Page 425 5 5.5.1. Watchdog Registers 0C Watchdog 1 Count Low Byte -- (0CH) Watchdog 1 Count High Byte -- (0DH) 0E Watchdog 2 Count Value -- (0EH) Watchdog Reset Pulse Length -- (0FH) 10 Watchdog Control Low -- (10H) Watchdog Control High -- (11H) 12 Watchdog Status -- (12H) W/D Table 5.20 ZF-Logic Index for the Watchdog Timers Table 5.21 Watchdog 1 Count Low Byte -- Index 0CH Bit 7 6 5 4 Function 3 2 1 0 1 0 Watchdog 1 count low byte Default 0 R/W R/W Table 5.22 Watchdog 1 Count High Byte -- Index 0DH Bit 7 Function 6 5 4 3 2 Watchdog 1 Count High Byte Default 0 R/W R/W Example: This example illustrates reading the counter as a single 16-bit register, and writing back an incremented value: MOV AL, 0CH MOV DX, 218H OUT DX, AL MOV IN INC OUT DX, 21AH AX, DX ; Get Counter Value DX ; Increment Data DX, AX ; Write Back ZFx86 Data Book 1.0 Rev D Page 426 5 Table 5.23 Watchdog Generated Reset Pulse Length -- Index 0FH Bit 7 6 5 Function 4 3 2 1 0 Reset Pulse Length Default 0 R/W R/W Programming Notes: When WD#1 is programmed to cause system reset or when WD#2 resets the system, this register is used to determine the number of 32kHz ticks to hold the system reset signal low. Table 5.24 Watchdog Control Low -- Index 10H Bit 7 Function Default R/W Bit 6 5 4 3 reserved wd2 load wd1 load reserved 0 0 0 0 0 0 R/O R/W R/W R/O R/W R/W Name 7:6 Reserved 5 wd2 load 2 1 0 wd2 enable wd1 enable Function Reload WD#2 counter. Active event for this bit is transition from 0 to 1 4 wd1 load 3:2 Reserved Reload WD#1 counter. Active event for this bit is transition from 0 to 1 1 wd2 enable Enable WD#2 0= 1= 0 wd1 enable Enable WD#1 0= 1= ZFx86 Data Book 1.0 Rev D WD#2 is disabled WD#2 is enabled WD#1 is disabled WD#1 is enabled Page 427 5 Table 5.25 Watchdog Control High -- Index 11H Bit Function Default R/W Bit 7 6 5 4 3 2 1 0 reserved wdi_en wdo_-1 wdi edge wd1 reset wd1 wd1 NMI wd1 SCI SMI 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W Name 7 Reserved 6 wdi_en Function Enable the assertion of WDI input pin on ZFx86 to reload the watchdog 1 counter 0= 1= 5 wdo_-1 Create output on WDO output pin on ZFx86 at WD#1 time-out or one 32kHz clock tick before 0= 1= 4 wdi edge wd1 reset wd1 SMI wd1 NMI wd1 SCI WD#1 will not generate NMI on time-out WD#1 generates NMI on time-out WD#1 generates SCI on time-out 0= 1= ZFx86 Data Book 1.0 Rev D WD#1 will not generate SMI WD#1 generates SMI on time-out WD#1 generates NMI on time-out 0= 1= 0 WD#1 will not generate system reset WD#1 will generate system reset on time-out WD#1 generates SMI on time-out 0= 1= 1 WDI is asserted on 0->1 transition WDI is asserted on 1->0 transition WD#1 generates System Reset on time-out 0= 1= 2 WDO signal will be set high on WD#1 expiration WDO signal is set high one clock tick before WD#1 expires. WD#1 events will always occur at WD#1 time-out and are not affected of wdo_-1 bit setting. This feature allows automatic reload of WD#1 when WDO is wired to WDI. Active front of WDI input 0= 1= 3 WDI input ignored WDI assertion reloads watchdog 1 counter WD#1 will not generate SCI on time-out WD#1 generates SCI on time-out Page 428 5 Table 5.26 Watchdog Status -- Index 12H Bit Function Default R/W 7 6 5 4 3 2 1 0 wd1_gn wd1_gc wd1_gs wd1 reset wd2 reset wd1_ev reserved reserved 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/O R/O Bit Name 7 wd1_gn Function WD#1 generated NMI 0: WD#1 did not generate NMI 1: WD#1 did generate NMI 6 wd1_gc WD#1 generated SCI 0: WD#1 did not generate SCI 1: WD#1 did generate SCI 5 wd1_gs WD#1 generated SMI 0: WD#1 did not generate SMI 1: WD#1 did generate SMI 4 wd1 reset WD#1 caused system reset 0: WD#1 did not reset the system 1: WD#1 did reset the system 3 wd2 reset WD#2 caused system reset 0: WD#2 did not reset the system 1: WD#2 did reset the system 2 wd1_ev WDI input pin asserted 0: WDI input has not been asserted 1: WDI input has been asserted 1:0 Reserved Programming Notes: This register is set each time any of the watchdog events occurs. The register is NOT reset by POR (Power On Reset) signal of ZFx86. The register can be cleared by writing anything into it. Any write to watchdog status register (12h) will reset all the register bits to default values (00h). ZFx86 Data Book 1.0 Rev D Page 429 5 5.6. PWM generator The PWM (Pulse Width Modulation) output may be used to create DC control voltage for an LCD backlight or any other device that requires this feature. The conversion is done by integrating variable duty cycle signal externally. At higher frequencies it may be used to control external transformer for DC/DC conversion. The clock signal derives the first timer. This 16-bit timer (prescaler) sets PWM period. The input clock can be set to the (generally) 8MHz ISA bus clock (see "ISACLK_N" on page 183) or 32kHz clock. The prescaler resets the PWM output to low and clocks second 8-bit timer 32kHz/8MHz 16-bit Prescaler what starts counting from zero. When it reaches the reference count given in 8-bit PWM duty cycle register (06h), the comparator sets PWM output value to high. This process repeats forever. By changing the comparator reference value it is possible to generate different duty cycles. From the control register it is also possible to control the signal value on PWM output pin directly. The precision is 1/(2^8)=1/256 or approximately 0.5% The pulse width generator (PWM) generator is controlled using four 8-bit registers in ZFL. PWM Out 8-bit counter Comparator 16-PWM duty cycle value Figure 5-5 PWM Control Unit Table 5.27 ZF-Logic Index for the PWM Generator PWM Prescaler Low Byte -- (04H) 06 PWM duty cycle -- (06H) 08 PWM I/O Control -- (08H) 0A PWM Read Output -- (0AH) ZFx86 Data Book 1.0 Rev D PWM Prescaler High Byte - (05H) PWM 04 Page 430 5 Table 5.28 PWM Prescaler Low Byte - Index 04H Bit 7 6 5 4 Function 3 2 1 0 PWM Master Prescaler Low Byte Default 0 R/W R/W 16-bit PWM prescaler divisor word low byte. Divides ISACLK_N or 32kHz input clock selected at PWM control register. Actual divisor is 16-bit PWM divisor word (combined of registers 04h and 05h) + 1 Table 5.29 PWM Prescaler High Byte - Index 05h Bit 7 6 5 Function 4 3 2 1 0 PWM Master Prescaler High Byte Default 0 R/W R/W 16-bit PWM prescaler divisor word high byte. Divides ISACLK_N or 32kHz input clock selected at PWM control register. Actual divisor is 16-bit PWM divisor word (combined of registers 04h and 05h) + 1 Table 5.30 PWM duty cycle - Index 06h Bit 7 6 5 Function Default R/W 4 3 2 1 0 This is the duty cycle of the PWM 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W Programming Notes: This sets the% of the cycle to be low. 0 = 100% 255 = 0% PWM period defined by registers 04h, 05h and 08h % from cycle to be LOW defined by register 06h Figure 5-6 PWM Period and Duty Cycle ZFx86 Data Book 1.0 Rev D Page 431 5 Table 5.31 PWM I/O Control -- Index 08H Bit 7 6 5 4 enable direct direct output reserved 0 0 0 0 0 0 R/O R/W R/W R/O R/W R/W reserved Function Default R/W Bit 3 2 1 0 slow-fast Enable PWM clksrc Name Function 7:6 Reserved 5 enable direct Enables direct control of PWM output by bit 4 0: PWM drives the output 1: Bit 4 of register 08H drives the PWM output pin 4 direct output The value of PWM output when bit of register 08h is set to 1 3:2 Reserved 1 slow-fast (clksrc) Selects the PWM prescaler input clock 1: PWM is clocked by 32kHz clock 0: PWM is clocked by 8 MHz ISA clock (ISACLK_N) 0 Enable/Disable PWM Enable/Disable PWM output 0: PWM is disabled 1: PWM is enabled Table 5.32 PWM Read Output -- Index 0AH Bit 7 6 Function Default R/W Bit 5 4 Reserved 0 pwmval ZFx86 Data Book 1.0 Rev D 2 1 0 reserved pwmval 0 0 R/O R/O Name 7:1 3 Function Value at PWM output pin Page 432 5 Example: ; initialize PWM as: ; prescaler = 0 ; duty cycle = 50% ; ISA clocked, enabled ; ; This setup will cause PWM generator to produce output frequency ; 4.078kHz ; 0124 0126 0129 012A 012D 0130 B0 BA EE BA B8 EF 04 0218 0131 0133 0136 0137 013A 013C B0 BA EE BA B0 EE 06 0218 013D 013F 0142 0143 0146 0148 B0 BA EE BA B0 EE 08 0218 021A 0000 0219 80 0219 03 ZFLWritew mov mov out mov mov out 04h,0 al,04h dx,ZFLINDEX dx,al dx,ZFLDATA16 ax,0 dx,ax ZFLWriteb mov mov out mov mov out 06h,80h al,06h dx,ZFLINDEX dx,al dx,ZFLDATA8 al,80h dx,al ZFLWriteb mov mov out mov mov out 08h,03 al,08h dx,ZFLINDEX dx,al dx,ZFLDATA8 al,03 dx,al ; Now change duty cycle to 90%. As result of this PWM output ; waveform will be "mostly" HIGH 0149 014B 014E 014F 0152 0154 B0 BA EE BA B0 EE 06 0218 0219 E8 ZFx86 Data Book 1.0 Rev D ZFLWriteb mov mov out mov mov out 06h,0E8h al,06h dx,ZFLINDEX dx,al dx,ZFLDATA8 al,0E8h dx,al Page 433 5 5.7. Z-tag Overview The Z-tag interface is used to read data for programming FLASH devices in system maintenance mode. Maintenance mode is entered from the internal boot ROM. • Improves speed over using serial interface • Frees legacy ports from system FLASH update function • Creates a dedicated and simple interface for system upgrading The Z-tag interface shares pins with FDD bus. The Floppy device will ignore Z-tag data when MTR0 and SEL0 signals are inactive. These lines are probed by the Z-tag dongle to enable the output buffers. Shared floppy lines in Z-tag mode are multiplexed to ZFL block. Four inputs and four outputs are used to connect external flash updating device (Z-tag dongle or other source) to the ZFx86. These lines can be accessed through dedicated register in ZFL. System FDD Lines FDD Lines FDD MUX Z-tag Figure 5-7 Dongle (w/o Cover) . Table 5.33 ZF-Logic Index for the Z-tag 5E Z-tag Data Write Register (5EH) 60 Z-tag Data Read Register (60H) Z-tag ... 7C Z-tag control register (7CH) Z-tag Sequencer Divisor Register (7DH) 7E Z-tag Sequencer Waveform (7EH) Z-tag Sequencer Strobe Points (7FH) 80 Z-tag Sequencer Data (80H) Z-tag Sequencer Status (81H) ZFx86 Data Book 1.0 Rev D Z-tag Page 434 5 Table 5.34 Z-tag Data Write Register -- Index 5EH Bit 7 6 Function Default R/W Bit 5 4 3 2 1 0 reserved write hdsel write data write step write dir 0 0 0 0 0 R/O R/W R/W R/W R/W Name Function 7:4 Reserved 3 write hdsel controls the HDSEL line on FDD interface 2 write data controls the DATA line on FDD interface 1 write step controls the STEP line on FDD interface 0 write dir controls the DIR line on FDD interface Programming Notes: These bits control FDD lines if ZT_CTRL (7CH) reg bit 4 is 1 Table 5.35 Z-tag Data Read Register -- Index 60H Bit 7 Function 6 reserved Default 5 4 3 2 1 0 read drv0 read mtr0 read disc read rdata read wrprt read trk0 R/O R/O R/O R/O R/O R/O 0 R/W R/O Bit Name Function 7:6 Reserved 5 read drv0 Monitors DRV0 line on FDD interface 4 read mtr0 Monitors MTR0 line on FDD interface 3 read dskch Monitors DSKCH line on FDD interface 2 read rdata Monitors RDATA line on FDD interface 1 read wrprt Monitors WRPRT line on FDD interface 0 read trk0 Monitors TRK0 line on FDD interface ZFx86 Data Book 1.0 Rev D Page 435 5 Table 5.36 Z-tag Control Register -- Index 7CH Bit 7 6 Function Default R/W Bit 5 4 3 2 1 0 reserved Z-tag enable accel enable snoop ahead reg select 0 0 0 0 0 R/O R/W R/W R/W R/W 1 0 1 0 Name Function 7:4 Reserved 3 Z-tag enable Muxes the FDD lines 0: normal operation 1: Z-tag signals on FDD lines 2 Accel enable 0: Z-tag normal operation 1: Z-tag accelerator active 1 Snoop ahead 0: Clear ready flag on accel reg read 1: Do not change the ready flag on accel read 0 Reg select 0: Select the output buffer for read 1: Select the accumulator register for read Table 5.37 Z-tag Sequencer Divisor -- Index 7DH Bit 7 6 5 4 Function 3 2 ISA Divider Default 0 R/W R/W Programming Notes: ISA Divider Divides the ISA clock for sequencer input Table 5.38 Z-tag Sequencer Waveform -- Index 7EH Bit 7 Function Default R/W 6 5 4 3 2 Waveform programming register 0 R/W Programming Notes: This register is clocked with ISA clock divided by DIVIDER register. The cyclic sequencer outputs the bits as the clock signal to Z-tag interface starting from lower bit. ZFx86 Data Book 1.0 Rev D Page 436 5 Table 5.39 Z-tag Sequencer Strobe Points -- Index 7FH Bit 7 6 5 Function 4 3 2 1 0 1 0 Z-tag strobe Default 0 R/W R/W Programming Notes: 0->1 transition marks the data strobe point in Z-tag accelerator Table 5.40 Z-tag Sequencer Data -- Index 80H Bit 7 6 5 Function 2 0 R/W R/O data is the data byte from Z-tag sequencer. The Z-tag interface has two operating modes selected from control register: 1. Direct software control of IO pins. The CPU is responsible for checking the status and data bits and controlling the clock. Slow because single bit input demands at least 4 ISA IO instructions. 2. Internal FSM Serial input device with bit-level handshaking and waveform control. This device collects the serial data from the Dongle and stores it into read buffer. It waits for acknowledge from Dongle and when the read buffer is full. With standard 8 MHz input clock it can read as much as 4 Mbit/sec. For additional information on Z-tag, see Chapter 6. Z-tag, BUR, and The ZFiX Console. ZFx86 Data Book 1.0 Rev D 3 sequencer data Default Programming Notes: The sequencer 4 5.8. Boot Parameters Register When power-on reset is asserted 24 signals are read into the Boot Parameters Register (configuration register) from the ISA Address Bus. External hardware is responsible to place data on the external ISA Address bus during the time that the power on reset line is asserted. Typically the user will provide this data via DIP switches or pull-up/pull-downs. These 24 inputs are stored into the internal power-up Boot Parameters Register (configuration register). This 24 bit register is loaded off the ISA address pins when the ZFx86 is reset. During normal operation, these pins are output only but during reset, they are tri-state and allow an external device to drive them. During reset, these pins are also driven by weak internal pull-ups or pull-downs. If a pin is not driven externally during reset, then these pull the pin to the indicated default. In a typical design, the DIP switches will be connected such that an ON is a pull-up if the default is low, and that an OFF is a pull-down if the default is high. Page 437 5 When the ZFx86 receives the reset pulse, it samples the ISA address bus. The 24 bits read in are stored in the boot parameters register. The ISA address bus (pins SA0-SA23) is tristated during the reset pulse. It contains onchip weak (about 20K) pull-ups and pulldowns to set the default state of the bootstrap register. To override this, we use a 2.2K pullup or pull down and a DIP switch or jumper. Once the reset pulse is done, the ISA bus has sufficient drive to overcome the effect of these 2.2K resistors. the data in the bootstrap registers. In a typical design, DIP switches or jumpers are used (with appropriate resistors) set to the bits in the BootStrap Register. DIP SWS DIP SWS These bits are latched on reset and are read only. Example: Thus, conceptually the ISA address bus has three “modes”: (1) the weak on-chip pullups/pull-downs which are operative during the tri-state; (2) the 2.2K pull-ups/pull-downs which may be activated via DIP switches; and (3) the normal execution time mode where the drive of the ISA address bus will override these resistors. ; read bootstrap registers as 32-bit value into EAX Since the Boot Parameters Register is read only, the values sampled on the ISA bus on the trailing edge of reset are “permanent” until the next hardware reset. Software can read the data which is latched, but cannot change 0102 B0 62 mov 0104 BA 0218mov dx, ZFLINDEX 0107 EE dx, al 0108 BA 021Ain eax, dx 010D 66| 25 00FFFFFFandeax,0FFFFFFh out al, 62h Table 5.41 ZF-Logic Index for the Boot Parameters Register 62 Bootstrap Bits 7-0 (62H) 64 Bootstrap Bits 23-16 (64H) Bootstrap Bits 15-8 (63H) Table 5.42 Composite BootStrap Register Map ISA BIT ZFL Index BS Bit 0-3 62H 0-3 4 62H 4 Name Default Function User Defined 0 User Defined Reserved 0 South Bridge scan enableda. BIOS / BUR Mapping to ZFx86 I/O Control Register (or notes) 1 = enable scan in operational mode. ZFx86 Data Book 1.0 Rev D Page 438 5 Table 5.42 Composite BootStrap Register Map (cont.) ISA BIT ZFL Index BS Bit 5 62H 5 6 62H 6 Name Default 14 Mhz clock source 0 32 KHz 0 Function 14MHz Clock Source If 1, derive from 48Mhz. If 0, use mhz14_c pin. [AF16] 32KHz Clock Source If 1, derive from 48MHz. If 0, use 32KHZC [AF01] 7 62H 7 Reserved 1 BIOS / BUR Mapping to ZFx86 I/O Control Register (or notes) See "IO_EXT_CLK_14M" on page 245 See "IO_RTC_32K" on page 244 486 DLL modea 1 = DLL mode enabled 8 63H 0 Reserved 1 486 raw clock modea. 1 = raw clock disable. 9 63H 1 3rd PCI Request 0 Third PCI Request/Grant 1 = drq1 = req2_n and dack1_n = gnt2_n 10 63H 2 Reserved 0 SIO Test Mode a. 11 63H 3 Reserved 1 Internal / External BUR Sourcea. 0 = External BUR 1 = Internal BUR 12 13 63H 63H 4 5 ISA Boot ROM Width 1 Reserved 0 0 = 16 bit 1 = 8 bit 14 6 1 15 7 0 16 64H 17 18 0 2 11 00 - Sys Clk * 1 01 - Sys Clk * 2 11 - Sys Clk * 3 (default) 10 - Sys Clk * 4 FPCI divide 0 Frontside PCI Clock Divide. 0- SysClk 1 - SysClk / 2. Note: SYSCLK_C is pin A20 ZFx86 Data Book 1.0 Rev D External BUR uses GPIO0 as chip select.b This is ignored for External BUR (Bit 11). CPU Delaya. CLK MODE 1 64H ISA Boot ROM Width Shared I/O Pins switched to DMA or PCI. See 5.8.1.1. "Multiplexing of Pins A14 - B14" on page 440. Note: Frontside is the on chip PCI devices such as the IDE controller and the USB controller. See ZFx86 Fail-Safe PC-on-a-Chip Block Diagram. Page 439 5 Table 5.42 Composite BootStrap Register Map (cont.) ISA BIT ZFL Index BS Bit 19 64H 3 Name BPCI divide Default 0 Function Backside PCI Clock Divide. 0- SysClk 1 - SysClk / 2. Note: No effect if bit 20 is 0 20 64H 4 BPCI Select 1 BIOS / BUR Mapping to ZFx86 I/O Control Register (or notes) Note: Backside PCI is the slots or off-chip PCI devices. See ZFx86 FailSafe PC-on-a-Chip Block Diagram. Backside PCI Clock Select. 0 - External clock. 1- Internal clock. 21 64H 5 Reserved 0 0 = USB normal operationa. 1 = USB test mode 22 64H 6 Reserved 1 ZF-Logic Enable. a. Disables 23 64H 7 Z-tag enable 0 allc ZF-Logic if low. See "IO_ZT_EN" on page 245 Causes BUR Boot. Enables the See "IO_ZFL_EN" on Z-tag Interface and BUR if high. See page 245 5.10. "BUR Base Register" on page 445 a. This is a reserved bit used in testing. It should be left in its default state in user-designed systems. b. If you select BUR boot (BS23) and external BUR (BS11) - in that case GPIO0 becomes the chip select for the external BUR. BS12 is ignored in this case, and the width of the external ROM/FLASH is forced to 8-bits. External BUR allows ZF to produce custom BUR chips for special applications. c. When the ZF Logic is disabled, the MEM_CS* pins remain active. 5.8.1. Special Notes of Interest The bootstrap registers or boot parameters register, as it is sometimes called, highlights a number of options and points of interest. decision was made to share one set of I/O pins (A14 and B14 - see 8.2. "Pin Descriptions (Sorted by Pin)" on page 545) between the following functions: 1) DMA Request/Acknowledge #1 5.8.1.1. Multiplexing of Pins A14 - B14 While designing the ZFx86 “System on a Chip”, every attempt was made to include all of the standard features and services used by current PCs, plus as many extras as we could squeeze in. In order to accomplish this, a few trade-offs had to be made. The number of available I/O pins on the ZFx86 do not allow all functions to operate simultaneously. We assumed that designers would tend to user either PCI or ISA devices, but not a large number of both types on the same board. The ZFx86 Data Book 1.0 Rev D These signals are used (primarily) by ISA cards. Specifically, ISA Sound Boards tend to use these as one of the default DMA channels. It is often possible to select a different DMA channel, and avoid using these signals. 2) PCI Request/Grant on Slot #3 These signals are needed for any card installed into the third PCI slot. The ZFx86 Integrated Development System, and any other design built around the ZFx86 Chip, can use either of these sets of signals, but only Page 440 5 ONE of the two functions can be used on a given board. A more detailed disussion of this occurs in the Quick Start Guide for the Integrated Development System, where BS9 is changed in conjunciton with another jumper to route pins A14-B14 to their appropriate ISA or PCI destination. 5.8.2. Design Example Table 5.43 Sample DIP Switch Settings SW Function 1 ON - USER DEFINED 2 ON - USER DEFINED 3 ON - USER DEFINED 4 ON - USER DEFINED 5 ON - EXT ROM when Z-tag enableda 6 System Clock Speed 7 System Clock Speed 8 ON - BUR Boot (and thus Z-tag enabled) a. This bit should NOT be used in real designs. It is for testing only. A sample hardware design is shown below. Note that DIP Switch 8 controls SA23 (Boot Parameters Register Bit 23). When the dongle is plugged in to the board, the dongle connects CLK to ACK and also pulls up SA23. See 6.3.2. "Z-tag Data Transfer Protocol" on page 460. Compare this table (and the drawing below) with the Boot Parameters Register. For example, note that SW 6-7 go to SA16-17. ZFx86 Data Book 1.0 Rev D Page 441 5 Note: This schematic is a sample. Refer to ZF’s reference designs for a "real world" DIP switch application. Figure 5-8 Sample DIP Switch Schematic ISA BIT ZFL Index BS Bit 23 64H 7 Name Boot from BUR (sometimes called Z-tag_EN) Default 0 Function Boot from BUR 1 = Boot from BUR 0 = Boot from Flash ZFx86 Data Book 1.0 Rev D Page 442 5 NB IDX 11Ch bits 5:3 SDRAMCLK_SKEW SDRAM clock output pins NB IDX 3FFHh bit 2 EN_STOP_SDRAM_CLK NB IDX 3FFh bit 3 EN_STOP_CORE_CLK NB IDX 3FFh bit 0 EN_STOP_CPU_CLK BS@SA7 DLL/OLD CPU SUSP SUSP SUSP DELAY BS@SA17-16 (from register) SysClk Multiplier CPU INTERFACE CORE BS@ SA8 RAWCLK DLL SUSP MX NB IDX 239H bits 14..0 NB IDX 239H bit 15 DATA_BUS_HOLD SLEW OLD PCI INTERFACE MX HOLD SDRAM INTERFACE φ1 North Bridge ∆ CORE φ2 /2 BS@ SA18 (from register) Frontside PCI Clock Divide. 0- SYSCLK, 1 - SYSCLK / 2 BS@ SA15…13 DLY= ∆(φ1 − φ2 ) SYSCLK [A20] 48 MHz /2 CLK_48MHZ [AE15] BS@ SA19 (from register) Backside PCI Clock Divide. 0- SYSCLK , 1 - SYSCLK / 2. /4 /1484 12 MHz 32.345 kHz MUX 14.318 MHz mhz14_c [AF16] Mux2 ISA clock ISACLK_C [AC02] SB F0 offset 50h bits 2:0 ISA clock divisor 8.33 MHz /n MUX IDE PCI CORE Mux1 USB SIO 8254 TIMER REFRESH APM 32.768 kHz 32KHz [AF01] MUX GPIO4/14 MHz OUT Omux2 MUX RTC PCI clock CLK pin U25 BS@SA20 (from Register) Backside PCI Clock Select. 0 - External clock. 1- Internal clock. + MUX South Bridge Super I/O RTC and CMOS backup battery [AD03] VBAT GPIO0/32kHz OUT Omux1 (a) (b) (c) (d) (e) (f) (a) GPIO4 pin [AF10] (b) Ioc2[7] IO_CLK_14M_OE (c) BS@SA5 / Ioc2[0] IO_EXT_CLK_14M (d) GPIO0 pin [AD12] (e) Ioc1[22] IO_CLK32K_OE (f) BS@SA6 32KHz Clock Source IO_RTC_32K Figure 5-9 System Clocking and Control 5.8.3. Clocking and Control Overview ZF Micro Solutions Inc. has not attempted to hide some of the complexity of the chip; this manual instead illustrates internal functionality which is controlled by the bootstrap bits (even though many of these bits are reserved for testing).These bits rely on jumpers and/or DIP switches which appear on the demonstration and evaluation boards available from ZF. See Chapter 9. Design Example - Evaluation 1 Board and the "Evaluation 1 Board Quick Start Guide". other control bits related to the SDRAM and CPU core options. The four clocks which may all be present are: • CLK_48MHZ - USB Clock • 32KHz - Refresh Generator / APM / RTC • SYSCLK (typically 66 MHz) • mhz14_c - Used for the 8254 PIT In general, the chart above illustrates clocking control bits, APM/suspend control bits, and ZFx86 Data Book 1.0 Rev D Page 443 5 5.8.3.1. Clocking Options 5.9. Data registers (F0H to FEH) The ZFx86 has various clocking options. These options represent different trade-offs that the designer must investigate to come to the best solution for the application being considered. Essentially, the chip can be clocked using as many as four clocks or as few as one. These 20 bytes of register space are used to store the ZFx86 BIOS specific data. • The first 5 registers are reset during cold boot ( registers 68H to 71H). • The second 5 keep their values (registers 72H to 7BH). Various combinations of bootstrap registers allow the ZFx86 to be used with fewer clocks in the system. Examples are shown in "System Clocking" on page 447. These registers do not interfere with other device functions and are used by BIOS as a scratch area. 68 Scratch Register 0 Low (68H) Scratch Register 0 High (69H) 6A Scratch Register 1 Low (6AH) Scratch Register 1 High (6BH) 6C Scratch Register 2 Low (6CH) Scratch Register 2 High (6DH) 6E Scratch Register 3 Low (6EH) Scratch Register 3 High (6FH) 70 Scratch Register 4 Low (70H) Scratch Register 4 High (71H) 72 Scratch Register 5 Low (72H) Scratch Register 5 High (73H) 74 Scratch Register 6 Low (74H) Scratch Register 6 High (75H) 76 Scratch Register 7 Low (76H) Scratch Register 7 High (77H) 78 Scratch Register 8 Low (78H) Scratch Register 8 High (79H) 7A Scratch Register 9 Low (7AH) Scratch Register 9 High (7BH) Scratch Registers Table 5.44 ZF-Logic Index for the Scratch Register Table 5.45 Indices for Scratch Registers Function 0 1 2 3 4 5 6 7 8 9 Description Low 68H 6AH 6CH 6EH 70H 72H 74H 76H 78H 7AH Scratch Register “N” Low High 69H 6BH 6DH 6FH 71H 73H 75H 77H 79H 7BH Scratch Register “N” High Temporary Scratch Registers ZFx86 Data Book 1.0 Rev D Persistent Scratch Registers Page 444 5 Table 5.46 Scratch Register “N” High or Low Bit 7 6 5 4 Function 3 2 1 0 Temporary Data Register Default 0 R/W R/W 5.10. BUR Base Register Table 5.47 ZF-Logic Index for BUR Base Index 8-Bit Data at Index 8-Bit Data at Index + 1 56 58 BUR Base Low (57H) BUR Base High (58H) Table 5.48 BUR Base Bits 15-12 Bit Function 7 6 5 4 3 2 1 0 d15 d14 d13 d12 fixed fixed fixed fixed 0 0 0 0 0 0 0 0 R/W R/W R/W R/W N/A N/A N/A N/A Default R/W Bit Name Function 7:4 d15..d12 BUR base address bits 15..12 3-0 fixed Fixed in Hardware Programming Notes: The BUR base register defines the beginning address of the on-chip BUR software in system memory space. Normally this register is initialized to zero and BUR does not appear anywhere in memory. However, if BUR is requested by bootstrap at SA23 on system reset, the BUR base register is initialized to 000FC000H and BUR becomes visible at BIOS ROM area. Writing zero to that register instantly disables the BUR window. The BUR is actually 12Kbyte software inside the chip, however the base register enables a 16K byte window for it. Therefore, the actual data begins at BASE+4Kbyte. The BUR base register is 32-bit register, accessible through 218h/21Ah. The middle two bytes can be accessed through 8-bit accesses at 218h/219h ZFx86 Data Book 1.0 Rev D Page 445 5 Table 5.49 BUR Base Bits 23-16 Bit Function 7 6 5 4 3 2 1 0 d23 d22 d21 d20 d19 d18 d17 d16 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W Default R/W Bit 7:0 Name Function d23-16 BUR base address bits 23..16 Programming Notes: .BUR base register are internally 32-bit register, that can be accessed through 218h/21Ah. The bits 32..24 and 7..0 of the BUR base address register are fixed and can not be modified. The register is also accessible as 8-bit registers through 218h/219h. Using the 32-bit access at 218h/21Ah allows to write the direct 32-bit value to a register BUR base address. 32-bit access through 218h/21Ah 8-bit access through 218h/219h 8-bit access through 218h/219h +3 Fixed to 0 +2 BUR base bits 23..16 ZFx86 Data Book 1.0 Rev D +1 BUR base bits 15..12 +0 Fixed to 0 IDX 56h Page 446 5 5.11. System Clocking Table 5.50 System Clocking Functional block System clock Type Pin Name Frequencies allowed SYSCLK_C 1 to 66MHz a Input A20 Real-time clock Crystal AE01 32KHZ_C 32768Hz Real-time clock Crystal AF01 32KHZC_C 32768Hz 8254 timer Input AC14 14MHz_C 14.318MHz b Super-IO Input AE15 USB_48MHz_C 48MHz c ISA bus Output AC02 ISACLK_C Derived from the Backside PCI Clock Backside PCI Output U25 PCICLK_C SYSCLK or SYSCLK/2 SDRAM Output B22 SDRAM_CLK[0] SYSCLK SDRAM Output A22 SDRAM_CLK[1] SYSCLK SDRAM Output B21 SDRAM_CLK[2] SYSCLK SDRAM Output A21 SDRAM_CLK[3] SYSCLK Optional 32 KHz Output AD12 GPIO[0]d Program GPIO[0] pin to output this frequency. Optional 14 MHz Output AF10 GPIO[4] d. Program GPIO[4] pin to output this frequency. a. The System clock drives the North bridge (including the SDRAM interface), the CPU and the South bridge PCI interface. It is possible to use any frequency up to 66 MHz. The CPU also has a multiplier that allows it to be clocked at 1, 2, 3 or 4 times the system clock. b. 8254 timer (PIT, Programmable Interval Timer) clock drives the 8254 timer circuit. It provides the timer interrupt and Legacy system time-base. If this clock is any other value than 14.318 MHz (ISA bus OSC signal) it is necessary to reprogram PIT to create the correct time-base. c. Super-IO clock synchronizes all Super-IO devices. It must be EXACTLY 48 MHz to create the correct USB and RS232 timings. It is possible to run ZFx86 from only this source. d. See Table 4.8 "GPIO Interface Signals" on page 182, and see Figure 5-9 "System Clocking and Control" on page 443 (and the figures following in this section). Various combinations of bootstrap registers allow the ZFx86 to be used with fewer clocks in the system. Mode 1: Mode 2: Two clock sources: USB and Real Time clocks. • Compatible with legacy PC systems • 14 MHz ISA clock derived from the USB clock, this will generate a clocking error. It also requires the Programmable Interval Timer (PIT divider) to be changed. • Most flexible in both speed, features, and software • PCI clocks need to be either 24MHz (SYSCLK divided by two) or 48MHz. • Most expensive HW cost • Less expensive HW. All clock sources present. System, Real Time, USB and 8254 Timer clocks. • No change to SW/HW ZFx86 Data Book 1.0 Rev D Page 447 5 Mode 3: • Will lose the clock (Date and Time) if the power is removed from the system. One clock source: USB clock only with GPIO[0] pin fed back to RTC. Connect the USB clock input to the SYSCLK input., • Legacy SW/HW may need to be changed if dependent on legacy timers. • Incompatible with legacy PC systems. • Least expensive HW solution. Table 5.51 Formal Clock Names and Clocking Modes Name Reference Nominal Mode 1a Mode 2 Mode 3 System Clock (generates PCI and CPU Clock) "SYSCLK_C [A20]" on page 450 33-66 MHz yes b b. Real Time Clock ‘32KHZC_C [AF01]’ on page 449 32KHz yes yes c USB Clock ‘USB_48MHz_C [AE15]’ on page 453 48 MHz yes yes yes 8254 Timer ‘mhz_14c [AF16]’ on page 448 14 MHz yes d d. a. In mode 1 all clocks are present. b. Drive both the USB Clock and the SYSCLK with a 48 MHz signal., c. Drive the 32KHz Real Time Clock with GPIO[0] output which is USB_48MHz/1484. See Figure 5-11 "32KHZC_C [AF01] Clocking Control Circuitry" on page 450. d. Get the 8254 Timer the USB Clock/4 or 12 MHz. See Figure 5-13 "USB_48MHz_C [AE15] Clocking Control Circuitry" on page 453. 5.11.1. mhz_14c [AF16] This clock generates the timer interrupt from the 8254 PIT. The sources for this signal are from mux2. The default is to use the 14.318 MHz input pin, but you can use an internally generated 12 MHz clock by asserting either IO_EXT_CLK_14M or SA5.The 12 MHz clock comes from CLK_48MHz. Z which is a reguired clock. See IO_EXT_CLK_14M on page 245). The output of Mux2 (14.318 or 12 MHz) may be driven out on GPIO[4] . See IO_CLK_14M_OE on page 245. 1 If you use the 12 MHz source, the input frequency to the 8254 PIT is lower, but it is possi1. ble to compensate for it by using different divisors in the PIT. The clock input to the 8254 PIT drives all 3 PIT channels. The clock input is divided by 12 (not shown in the schematic). The legacy PIT Channel 0 is used to create refresh DMA cycles. As the memory controller has moved to North Bridge this is obsolete. The legacy PIT Channel 1 creates PC speaker tones. The higher tones (10 KHz) differ by (12/14 ) / 1000 = 0.8 mHz. The lower tones differ in µHz areas. This change is not noticeable in a PC-Speaker. In order to GPIO[4] to work as a clock output, you must program a "0" (or at least not program a "1" to the GPIO[4] output pin. See Table 4.33 on page 233. ZFx86 Data Book 1.0 Rev D Page 448 5 The legacy PIT Channel 3 creates a timer interrupt. by dividing the input signal by 0xFFFF. The legacy result is 18.206268 Hz or 54.926138 ms. In our case the timer runs at 1 µs therefore, the divisor must be 54926 (decimal) resulting in a frequency of 18.206313 Hz (54.926002 ms). This creates an error of 2.47x10-4 % or one timer tick less in 398014 ticks. If not corrected this produces one second delay every four days. 48 MHz CLK_48MHZ [AE15] register) k Divide. SCLK / 2. /4 /1484 12 MHz 32.345 kHz MUX 14.318 MHz mhz14_c [AF16] ? Mux2 MUX Mux1 8254 TIMER REFRESH APM 32.768 kHz 32KHz [AF01] MUX GPIO4/14 MHz OUT Omux2 RTC MUX South Bridge Super I/O GPIO0/32kHz OUT Omux1 (a) (b) (c) (d) (e) (f) (a) GPIO4 (b) Ioc2[7] IO_CLK_14M_OE (c) BS@SA5 / Ioc2[0] IO_EXT_CLK_14M (d) GPIO0 (e) Ioc1[22] IO_CLK32K_OE (f) BS@SA6 32KHz Clock Source IO_RTC_32K Figure 5-10 mhz_14c[AF16] Clocking Control Circuitry 5.11.2. 32KHZC_C [AF01] This signal generates the refresh for SDRAM and drives power management logic. It also synchronizes the Watchdog timers and PWM in ZF-logic. The two sources are from MUX1. MUX1 selects between the 32.768 kHz input in pin AF01, or the 48 MHz clock divided by 1484. If you do not have a 32.768 kHz input, you may use the 48 MHz clock. To use the 48MHz clock to emulate the 32 KHz clock, assert SA6 using a DIP switch or resistor pack (see Table 5.42) or use software to assert IO_RTC_32K (see page 244). ZFx86 Data Book 1.0 Rev D The real time clock 32 Khz crystal is required to keep the clock running from battery. If time loss is not important, then the RTC can be driven from the internal 32 KHz by first outputting it to GPIO0 and then connecting it externally to crystal input pin. If you do not have a 32.768 kHz clock, and use the 48 MHz SIO clock divided by 1484, you will get an RTC error of approximately 1.29% (32345 vs. 32768). This 32 kHz (actual or derived) clock may be driven out on GPIO[0] by setting IO_CLK32K_OE (see page 244). Page 449 5 If you are using the derived clock (the 48 MHz clock /1484 option), please note that the 32 kHZ clock does not go to the RTC as there is no interconnect along that pathway. In that case, you can use GPIO0 in its 32kHz output mode and run that output back around into the 32KHz input. That is somewhat roundabout, but it works. Compare 9.2.5. "Schematic Page 2 JP9 - Real Time Clock (32KHz)" on page 595. 48 MHz CLK_48MHZ [AE15] BS@ SA19 (from register) Backside PCI Clock Divide. 0- SYSCLK , 1 - SYSCLK / 2. /4 /1484 12 MHz 32.345 kHz MUX 14.318 MHz mhz14_c [AF16] Mux2 MUX Mux1 USB SIO 8254 TIMER REFRESH APM 32.768 kHz 32KHz [AF01] MUX GPIO4/14 MHz OUT Omux2 RTC GPIO0/32kHz OUT Omux1 (a) RTC and CMOS backup battery [AD03] VBAT + MUX South Bridge Super I/O (b) (c) (d) (e) (f) (a) GPIO4 pin [AF10] (b) Ioc2[7] IO_CLK_14M_OE (c) BS@SA5 / Ioc2[0] IO_EXT_CLK_14M (d) GPIO0 pin [AD12] (e) Ioc1[22] IO_CLK32K_OE (f) BS@SA6 32KHz Clock Source IO_RTC_32K Figure 5-11 32KHZC_C [AF01] Clocking Control Circuitry 5.11.3. SYSCLK_C [A20] This clock drives the Processor, the North Bridge and both South Bridge PCI interfaces. The signal has a single source - the SYSCLK input pin. This clock is limited by following considerations: 1. The backside PCI bus implies a limit of 33 MHz for external devices. Although internally it can be higher each external device has to be checked separately. It is possible to divide the SB PCI frequency separately by two and run the SDRAM and CPU interfaces at a higher frequency. A very key component of the performance of the system is the clock ZFx86 Data Book 1.0 Rev D speed at which the SDRAM gets accessed. Therefore, pushing the system clock up significantly enhances the system performance. 2. Front side PCI core frequency must always be greater than or equal to the backside PCI bus. It's recommended not to exceed 33 MHz. This clock can also be divided by two. 3. The memory controller can run at a maximum speed of 66 MHz. These conditions are summarized in Table 5.52. Page 450 5 Table 5.52 CORE frequencies (MHz). Functional Block Min. Freq. Typical Freq. 1 33 33 (dependent on device) 1 33 33 (greater than or equal to the backside PCI) 1 33 66 4 (4x) 99 (3x) Backside PCI Frontside PCI SDRAM controller and CPU interface CPU clock (multiplier) Max. Freq. 132 (2x) CPU clock Suspend logic The CPU clock can be programmed to be 1, 2, 3 or 4 times the SYSCLK. As the CPU core will work only up to 100 MHz it is necessary to select the proper multiplier based on the selected SYSCLK frequency. Suspend logic is present in the device to allow for stopping the clock to the CPU if the North bridge receives a suspend request from the South bridge. The suspend logic allows the clocks to be turned off when a suspend request is active. The system suspend has the following hierarchy: 1. South bridge suspend request -> North bridge 2. North bridge suspend request -> CPU 3. CPU suspended 4. CPU suspend acknowledge -> North bridge 5. North bridge suspended 6. North bridge suspend acknowledge -> South bridge 7. South bridge suspended SDRAM clock SDRAM clock is exactly the same as SYSCLK input. It has a skew control register, however, all measurements taken during the development cycle indicate that the skew register should be left at zero. Front and Back side PCI clock These clocks can be selected to run at the system clock frequency or half the system clock frequency. ISA Clock See ISACLK in Table 4.9 "Full ISA Interface" on page 183. ISACLK is derived from PCICLK and is typically programmed for 8.33MHz. F0 Index 50h[2:0] is used to program the ISA clock divisor. These bits determine the divisor of the PCI clock used to make the 8.33MHz ISA bus clock. See "F0 Index xxh: PCI Header and Bridge Configuration Registers" on page 207. ZFx86 Data Book 1.0 Rev D Page 451 5 The wakeup follows the opposite scheme: SB -> NB -> CPU. It is possible to switch off the SDRAM, CPU and NB core clocks when the system is suspended. The PCI and ISA clocks will always run and the system will keep the last value on the output pins when suspended. The South bridge is responsible for generating suspend and wakeup events. NB IDX 11Ch bits 5:3 SDRAMCLK_SKEW SDRAM clock output pins NB IDX 3FFHh bit 2 EN_STOP_SDRAM_CLK NB IDX 3FFh bit 3 EN_STOP_CORE_CLK NB IDX 3FFh bit 0 EN_STOP_CPU_CLK BS@SA17-16 (from register) SysClk Multiplier BS@SA7 DLL/OLD CPU SUSP SUSP SUSP DELAY Refer to the South Bridge spec for a detailed description of all possible wakeup events. The CPU can suspend itself until the next interrupt following HLT command. This must be enabled in the CPU control register. CPU INTERFACE CORE BS@ SA8 RAWCLK DLL SUSP MX NB IDX 239H bits 14..0 NB IDX 239H bit 15 DATA_BUS_HOLD SLEW OLD PCI INTERFACE MX HOLD SDRAM INTERFACE φ1 North Bridge ∆ CORE φ2 /2 BS@ SA18 (from register) Frontside PCI Clock Divide. 0- SYSCLK, 1 - SYSCLK / 2 BS@ SA15…13 DLY= ∆(φ1 − φ2 ) SYSCLK [A20] 48 MHz /2 CLK_48MHZ [AE15] BS@ SA19 (from register) Backside PCI Clock Divide. 0- SYSCLK , 1 - SYSCLK / 2. /4 /1484 12 MHz 32.345 kHz MUX 14.318 MHz mhz14_c [AF16] Mux2 ISA clock ISACLK_C [AC02] SB F0 offset 50h bits 2:0 ISA clock divisor 8.33 MHz /n MUX IDE Mux1 USB SIO PCI CORE 8254 TIMER REFRESH APM 32.768 kHz 32KHz [AF01] MUX GPIO4/14 MHz OUT Omux2 MUX RTC PCI clock CLK pin U25 BS@SA20 (from Register) Backside PCI Clock Select. 0 - External clock. 1- Internal clock. + MUX South Bridge Super I/O RTC and CMOS backup battery [AD03] VBAT GPIO0/32kHz OUT Omux1 (a) (b) (c) (d) (e) (f) (a) GPIO4 pin [AF10] (b) Ioc2[7] IO_CLK_14M_OE (c) BS@SA5 / Ioc2[0] IO_EXT_CLK_14M (d) GPIO0 pin [AD12] (e) Ioc1[22] IO_CLK32K_OE (f) BS@SA6 32KHz Clock Source IO_RTC_32K Figure 5-12 SYSCLK_C [A20] Clocking Control Circuitry ZFx86 Data Book 1.0 Rev D Page 452 5 5.11.4. USB_48MHz_C [AE15] is therefore not reasonable to set the system clock below 33 MHz when using it. Note that the USB and SIO (Super I/O) get their timing from a fixed 48 MHz clock and do not depend from other clocks. However the USB is a BUS master device and requires certain bandwith to operate at high speeds. It Note that when using only one clock for the entire system, you need to provide this clock. See ‘Mode 3:’ on page 448. SYSCLK [A20] 48 MHz CLK_48MHZ [AE15] BS@ SA19 (from register) Backside PCI Clock Divide. 0- SYSCLK , 1 - SYSCLK / 2. /4 /1484 12 MHz 32.345 kHz MUX 14.318 MHz mhz14_c [AF16] Mux2 MUX Mux1 USB SIO 8254 TIMER REFRESH APM 32.768 kHz 32KHz [AF01] MUX GPIO4/14 MHz OUT Omux2 RTC + MUX South Bridge Super I/O RTC and CMOS backup battery [AD03] VBAT GPIO0/32kHz OUT Omux1 (a) (b) (c) (d) (e) (f) (a) GPIO4 pin [AF10] (b) Ioc2[7] IO_CLK_14M_OE (c) BS@SA5 / Ioc2[0] IO_EXT_CLK_14M (d) GPIO0 pin [AD12] (e) Ioc1[22] IO_CLK32K_OE (f) BS@SA6 32KHz Clock Source IO_RTC_32K Figure 5-13 USB_48MHz_C [AE15] Clocking Control Circuitry ZFx86 Data Book 1.0 Rev D Page 453 5 5.11.5. PCI Clocking As an example, you could set SYSCLK to 66 MHz. Then use a clock multiplier of 2 to run the CPU at 132 MHz. You can use SA18 to control the frequency of the Frontside PCI Bus. The frontside bus should be running at a clock greater than or equal to the backside PCI Bus. The frontside PCI clock controls the internal IDE devices. NB IDX 11Ch bits 5:3 SDRAMCLK_SKEW NB IDX 3FFh bit 3 EN_STOP_CORE_CLK NB IDX 3FFh bit 0 EN_STOP_CPU_CLK CPU INTERFACE CORE NB IDX 3FFHh bit 2 EN_STOP_SDRAM_CLK TO CPU SUSP SUSP SUSP DELAY SDRAM clock output pins If you use the internal IDE controllers, they are validated at 33 MHz and thus the FrontSide PCI bus should not be set to a speed higher than that. In that case, you would enable both /2 divisors and use 33 MHz for the FrontSide and BackSide PCI Clocks. The PCI Core circuitry inside of the South Bridge drives the external PCI buses. SUSP NB IDX 239H bits 14..0 SLEW NB IDX 239H bit 15 DATA_BUS_HOLD HOLD SYSCLK PCI INTERFACE SDRAM INTERFACE North Bridge /2 BS@ SA18 (from register) Frontside PCI Clock Divide. 0- SYSCLK, 1 - SYSCLK / 2 SYSCLK frontside PCI Clock /2 BS@ SA19 (from register) Backside PCI Clock Divide. 0- SYSCLK , 1 - SYSCLK / 2. backside PCI Clock ISA clock ISACLK_C [AC02] SB F0 offset 50h bits 2:0 ISA clock divisor 8.33 MHz /n IDE PCI CORE USB SIO 8254 TIMER REFRESH APM MUX RTC PCI clock CLK pin U25 BS@SA20 (from Register) Backside PCI Clock Select. 0 - External clock. 1- Internal clock. + South Bridge Super I/O RTC and CMOS backup battery [AD03] VBAT Figure 5-14 PCI Clocking Control Circuitry ZFx86 Data Book 1.0 Rev D Page 454 6 6. Z-tag, BUR, and The ZFiX Console The ZFx86 introduces a solution to resolve the situation created by having a high integration CPU connected to flash device that has not been initialized. During the manufacturing process the on board flash device must be initialized with the system startup code (BIOS) and/or application software. This implies that the ZFx86 chip is in a situation where there is no boot code that can be read from the flash device to allow the update. For that purpose, the ZFx86 contains a special Boot Up ROM (BUR), that when executed updates the flash memory. The BUR contains the minimal code necessary to read data into the ZFx86 chip. In order to update the flash, flash component specific software must also be downloaded and executed. The connection between the ZFx86 chip and the flash data source can be made in two ways: by a ZF proprietary Z-tag Dongle interface or by using a serial port. 6.1. Serial Port Connection The serial connection utilizes the ZFx86 embedded standard COM1 (base address 0x3f8), allowing a remote PC with special host software or a terminal to access the ZFx86 flash device and use the update process. This solution can be used in ZFx86 applications where the serial port is not hardwired to an external device and access to the serial port is physically possible. 6.2. Z-Tag Dongles ZF provides two dongles types: PassThrough and Memory 6.2.1. PassThrough Dongle Use the ZFx86 PassThrough Dongle, supplied with the ZFx86 IDS system, to make a physical connection from the PC running Z-tag Manager to the target system. ZFx86 Data Book 1.0 Rev D The PassThrough Dongle contains three LEDs (two green and one yellow) that indicate power, busy, and status. 6.2.2. Memory Dongle An optional ZFx86 “Memory" Dongle contains 256Kbytes of memory, two LEDs (green and red) that indicate status, and two configuration jumpers. • Jumper JP1 sets write protection for the Dongle’s onboard SEEPROM(s), when set in position 2-3. • Jumper JP2 enables PassThrough or Normal operation mode. Jumpering 2-and-3 enables the Z-tag software PassThrough mode, while jumpering 1-and-2 selects Normal Mode. On hardware reset the ZFx86 samples the ISA address bit 32 (bootstrap bit 32). If it is pulled high, the BUR is executed. If it is pulled low, the boot is attempted from the external Flash memory. Page 455 6 Note that the PassThrough dongle requires a Printer cable connected from the Host system to the Z-tag dongle for proper operation. 6.2.3. Using the Dongle Primarilary, you use the dongle and the Z-tag Manager interface to download programs (like BIOS) into your designs external Flash memory. You need not power down the design system to do this. You simply plug in the Dongle, press the system’s reset button, and wait for the BIOS to download. When it completes, the Status LED appears solid yellow. Since you can replace the entire Flash memory "almost instantly", you can also put manufacturing test programs into the dongle, load them, run them, and when finished simply replace the memory. How is this done? The on-chip BUR code has the capability to read commands and data buckets from the dongle – thus the intelligence to do the transfer (similar to the ZFx86 FailSafe Mechanism) is already on chip. Create the command set in a host PC running 32-bit Windows using a ZF Windows application called the Z-tag Manager. This application allows you to drag and drop commands into a command list. One of the commands contains an embedded (attached) ROM image. The ROM image is contained within a “basket” or as an attachment. ZFx86 Data Book 1.0 Rev D 6.2.3.1. Using the PassThrough Dongle The PassThrough Dongle serves as an adapter that connects the Host PC to your target board. The Z-tag Manager software manages the transfer of data directly to the target system, emulating the behavior of the SEEPROM(s) on the “Memory” Dongle but from within the software. An advantage of PassThrough dongle is that it handles largersized transfer images. Because the data is not written into the Dongle’s SEEPROM(s), it instead transfers directly to the target system’s memory chip(s). See the Z-tag Manager User’s Manual for more information. 6.2.3.2. Using the Memory Dongle In the figure following, the Memory dongle is being programmed while attached to the Printer port of the host system. Then the dongle is plugged into the target system, and the program download into the ZFx86. See Page 456 6 6.2.3.3. "Carrying the Command Set in The Memory Dongle". create a command set which includes carrying a ROM image in a “basket”. This command sequence, which includes a file image as part of a transfer command, is stored in the SEEPROM in the dongle. There are two SEEPROMs on the Memory dongle, so you can load a program with a total size of 256K Bytes. Note: If your program exceeds 256KBytes, use the ZF designed PassThrough dongle. It is also possible to bypass the SEEPROMS on the Memory dongle, and use it in "PassThrough" mode where a cable from the host system is connected to the dongle, and the dongle is left plugged into the target board Enable the PassThrough mode in software using the Z-tag Manager. • In “normal mode” you load the software and command set directly into the dongle’s SEEPROM memory chips. • In “passthrough mode” you directly connect the ZFx86 board (through the dongle) to the host PC. In both cases, you use the Z-tag manager to transfer the information into the dongle or throught the dongle directly to the target board. The Z-tag manager is available at no cost on the ZF web site and on the ZF CD ROM. Note: Additional Flash chip-specific software is required to program a specific flash device. See 6.7. "Flash Programming Example" on page 470. 6.2.3.3. Carrying the Command Set in The Memory Dongle Connect the Memory dongle directly to the printer port of a personal computer running Windows. Then, using the Z-tag manager, ZFx86 Data Book 1.0 Rev D After using the Z-tag manager to load the Memory dongle, unplug the dongle from your PC printer port, and plug it into the ZFx86 board using the Z-tag header. Use a a 2514-6002UB 3M DIP-14 Header, or equivalent, to create the Z-tag header on your board. If you have the dongle connected, the dongle jumpers CLK to ACK and pulls up SA23. When there is a reset-pulse with the Memory dongle plugged in, the BUR starts [SA23] and reads from the dongle. If the BUR finds no Z-tag commands, it switchs to COM1 and looks for Z-tag commands. If none are found there, then the BUR starts the ZFix Console on COM1. Note: To use the BUR with no dongle connected, use the DIP switch to pull up SA23. The speed of the transfer from the dongle into the ZFx86 is limited by the software (that is, the clock frequency) of the BUR. Typically we would expect about 1.5 Mbps. The Z-tag interface is designed (from electrical waveform point of view) to match the signals set of an SEEPROM. That is, the BUR puts out a CLK signal and reads in data. The basic protocol is that when CLK goes high the SEEPROM (or data source) puts new data on the data pin. The data is read when CLK goes low. When CLK goes high again the data source puts fresh data on the data pin. Page 457 6 This transfer method works just fine if the Z-tag interface is directly connected to the dongle or to an SEEPROM. However, if the data source is a host computer and the dongle is being used in PassThrough mode, then the host computer (which is generating waveforms on its printer port) may not be able to send the data out quick enough. Therefore, another signal was added called acknowledge (ACK). When the dongle is plugged into the ZFx86 (in the dongle “normal” mode of operation), the dongle connects ACK to CLK. 6.2.3.4. Memory Dongle Jumper Settings The Memory dongle contains two jumpers (see Table 6.1). The Mode jumper sets the dongle to “PassThrough” mode or “normal” mode. • In “PassThrough” mode, the Z-tag interface simply passes through the dongle to the printer connection; and you must run a cable from the printer port on your personal computer to the dongle (which then passes through to the Z-tag interface). In this case, CLK is not hardwired to ACK, allowing the host informationprovider to provide the ACK signal after it places the data bit on the data pin. Thus, in “PassThrough” mode, the host computer watchs the CLK signal. When CLK goes high, the host computer places data on the data pin and raises the ACK signal. When the BUR sees the ACK signal go high, it drops CLK low and reads the data. See 6.3.2. "Z-tag Data Transfer Protocol" on page 460. • In “normal” mode, the dongle directly connects the CLK output to the ACK output, allowing a maximum speed transfer. Note that this is totally transparent to the BUR, as BUR simply watches for ACK and then drops CLK. The second jumper on the Memory dongle simply write protects the SEEPROMs on the dongle. Table 6.1 Memory Dongle Jumper Settings Name Location Function Comments JP2 Dongle PassThrough or Normal Normal Connects CLK to ACK when Dongle Plugged In JP1 Dongle Protect SEEPROM’s memory Bootstrap SA23 Host Board Cause BUR Boot Automatically set by Dongle — add DIP switch to provide BUR boot w/o Dongle CLK to ACK Host Board Reads Host Board SEEPROM Not Needed if SEEPROM in the Dongle is providing Data 6.2.3.5. Using the Memory Dongle in “PassThrough” Mode If you connect the host computer printer port through a cable to the dongle which in turn is plugged into the ZFx86 board, the operation is similar in that you use the software Z-tag manager to create your command set. When you have created the command set, you can ZFx86 Data Book 1.0 Rev D then push the reset button on the ZFx86 board and the BUR will read from the Z-tag interface and get the same command set that you would have loaded into the dongle. The benefit of this mode is that you do not have to program the SEEPROM(s) in the dongle, but you can go directly to the desired operation. See Table 6.2. Page 458 6 Table 6.2 Z-tag and ZFiX Summary Hardware Software Function Dongle + Host Mode Z-tag Manager Windows Application Programs the Dongle Dongle + Board Normal BUR Read/execute commands from the dongle. Host + Dongle + PassThrough Z-tag Manager Windows Application Board and BUR Read/execute commands from the host. Host + COM1 Z-tag Manager Windows Application and BUR ZFix Read and Execute Commands from the Host. Host + COM1 Windows Terminal Emulator and BUR ZFix Console Commands 6.3. Z-tag Manager Software The Z-tag Manager program is a Windows Application provided by ZF Linux Devices. The program is used to create Z-tag command sequences and transfer them to the dongle or directly to the ZFx86 PC board. See the Z-tag Manager Manual and also see Chapter 4 in the ZFx86 Integrated Development System Quick Start Guide. 6.3.1. Z-tag Summary Z-tag is ZF proprietary connection interface that does not interfere with any PC legacy devices and can be accessed even if all of the ZFx86 external peripheral interfaces are allocated. Physically, the Z-tag signals share the pins with the FDD interface and appear when the FDD MTR0 and DRV0 signals are not active. The communication protocol is compatible with standard serial EEPROM devices, thus allowing a direct connection of the serial EEPROM to the Z-tag interface as a source media. A second possibility for a data source is a remote PC emulating the Z-tag protocol with the parallel port. An adapter, called “the dongle”, converts the FDD pins (generally a header on the ZFx86 circuit board) to a Parallel Printer port interface. Z-tag Hardware Interface. ZFx86 Data Book 1.0 Rev D The Z-tag manufacturing connector layout has the following pinout. • CLK, RST and DATA are asynchronous serial interface signals used on serial EEPROM’s. The use of these signals can be determined from the timing diagram of the Z-tag communication protocol. • ACK input to ZFx86 is a loopback from CLK signal and is useful in situations where the source media response speed is unknown (i.e. emulation through PC parallel interface). The ACK signal can be either the CLK if the source media speed is considered to be faster than the ZFx86 clocking (i.e. the data bit will be set fast enough after the CLK rising edge appears) or specially created after the data bit is set by the source media. • LED1 and LED2 are general purpose output bits, that are used to provide progress or status information when Boot Up ROM is updating the flash. Page 459 6 Table 6.3 Pins for the FLOPPY / Z-tag Logic Pin Pin Name Pin Description Cell Type ORCAD Name G03 DIR _N, Z-tagOut3 FLOPPY, Z-tag m_fdc_p DIR F01 DR0_N FLOPPY m_fdc_p DR0 J02 DSKCHG_N, Z-tagIn0 FLOPPY, Z-tag m_fdc_p DSKCHG H01 HDSEL_N, Z-tagOut0 FLOPPY, Z-tag m_fdc_p HDSEL F03 INDEX_N FLOPPY m_fdc_p INDEX F02 MTR0_N FLOPPY m_fdc_p MTR0 J04 RDATA_N, Z-tagIn1 FLOPPY, Z-tag m_fdc_p RDATA G04 STEP_N, Z-tagOut2 FLOPPY, Z-tag m_fdc_p STEP H03 TRK0_N, Z-tagin3 FLOPPY, Z-tag m_fdc_p TRK0 G02 WDATA_N, Z-tagOut1 FLOPPY, Z-tag m_fdc_p WDATA G01 WGATE_N FLOPPY m_fdc_p WGATE H02 WRPRT_N, Z-tagin2 FLOPPY, Z-tag m_fdc_p WRPRT 6.3.2. Z-tag Data Transfer Protocol The hardware component of the data transfer is illustrated by following the timing diagram shown in Figure 6-1 "Data Transfer Protocol". The data bit latching (see blue arrows) must happen at a rising edge of the CLK signal. In those cases when the source device speed is unknown, the ACK signal is used to determine when the bit is ready for reading at DATA input (ACK=High) and when source device is ready to accept the new rising edge of CLK signal (ACK=Low). RST In this case, the source (host) device sets the ACK signal when it has received the CLK edge and latched the data to the DATA input. The target (ZFx86) then reads a bit and resets the CLK signal. After that, the target/ZFx86 starts reading the ACK signal again, waiting for it to become low. When ACK goes low, the cycle will be repeated for next data bit. The bit stream following the reset deactivation is a continuous 8-bit character bit stream with no control bits, byte separators or addressing information. The software must implement a special packet header for determining the addressing and other control information. CLK RST DATA CLK ACK DATA BITS 1 0 0 1 0 1 ACK Figure 6-1 Data Transfer Protocol BITS DATA input shown in figure Figure 6-2 "Data Input". ZFx86 Data Book 1.0 Rev D 1 0 0 1 0 1 Figure 6-2 Data Input Page 460 6 6.3.3. Z-tag Port Interface The Z-tag interface access is done via 8-bit ZF registers Z-tag Data Write Register (5EH), and Z-tag Data Read Register (60H). See ‘Z-Logic Index for the Z-tag” BIT Name Description 6.4. Z-tag Register Descriptions 7 Z-tagIn3 Z-tag in 3, (TRK0) 6.4.1. Z-tag Data (D1h) 6 Z-tagIn2 Z-tag in 2, (WRPRT) Z-tag interface is used to update ROM devices in BIOS upgrade mode. FDD interface signals are connected to the Z-tag data register when MTR0 and DRV0 are not asserted. FDD MUX is controlled using a bit in Z-tag control register. This process is transparent to the user. 5 Z-tagIn1 Z-tag in 1, (RDATA) 4 Z-tagIn0 Z-tag in 0, (DSKCHG) 3 Z-tagOut3 Z-tag out 3, (DIR) 2 Z-tagOut2 Z-tag out 2, (STEP) 1 Z-tagOut1 Z-tag out 1, (WDATA) 0 Z-tagOut0 Z-tag out 0, (HDSEL) The Z-tag has four inputs and four outputs. Each Z-tag line is connected to FDD line. In Table 6.4 "Z-tag Data Lines" the FDD lines are shown in parenthesis. Table 6.4 Z-tag Data Lines Table 6.5 Z-Logic Index for the Z-tag 5E Z-tag Data Write Register (5EH) Z-tag 60 Z-tag Data Read Register (60H) 7C Z-tag control register (7CH) Z-tag Sequencer Divisor Register (7DH) 7E Z-tag Sequencer Waveform (7EH) Z-tag Sequencer Strobe Points (7FH) 80 Z-tag Sequencer Data (80H) Z-tag Sequencer Status (81H) Z-tag 6.4.2. Z-tag Control (7Ch) The Z-tag enable bit of the Z-tag Control Register switches the FDD pins between FDD and Z-tag. These pins are listed in Table 6.4 "Z-tag Data Lines" on page 461. The four FDD output signals are taken from Z-tag data write register. The FDD WGATE, MTR0 and DRV0 signal are put to logical '1'. This ensures that the FDD is not interfering with the Z-tag data. System FDD Lines FDD MUX FDD Lines Z-tag ZFx86 Data Book 1.0 Rev D Page 461 6 Table 6.6 Z-tag Control Register -- Index 7CH Bit 7 6 5 4 3 2 1 0 Function Reserved Z-tag enable accel enable snoop ahead reg select Default 0 0 0 0 0 R/W R/O R/W R/W R/W R/W Bit Name Function 7:4 Reserved 3 Z-tag enable Muxes the FDD lines 0: normal operation 1: Z-tag signals on FDD lines 2 Accel enable 0: Z-tag normal operation 1: Z-tag accelerator active 1 Snoop ahead 0: Clear ready flag on accel reg read 1: Do not change the ready flag on accel read 0 Reg select 0: Select the output buffer for read 1: Select the accumulator register for read 6.5. BUR (Boot Up ROM) BUR is a ZFx86 built-in software that serves as a prototype debug tool and Flash update utility. BUR is a 12K binary image residing inside ZFx86 as ROM memory. On startup, the BUR performs basic component initialization functions and tests the ZF internal Static RAM. The Static RAM is used as an 8K scratch pad Area for performing BUR tasks. See ‘On-Chip RAM Assignment in BUR” on page 470. After initialization, following system components are active: • • • • • • • • North Bridge South Bridge ISA Bus Internal Static RAM IRQ controller Timer (8259) COM1 Z-tag interface ZFx86 Data Book 1.0 Rev D The 32-entry interrupt table is built and vectors are assigned for IRQ0-15. And INT0-8. (Additional 8 remaining interrupt table entries are used for internal service vectors by BUR code). No DRAM is initialized or used by BUR code. The functionality of BUR code can be divided into four categories: • Basic component initialization • Elementary debugger console functionality through COM1 • Data fetch and execution through Z-tag interface • Basic OS functionality for user code When BUR is executed after system reset, the component initialization occurs first. After component initialization, BUR will probe the Ztag interface for dongle present (see Page 462 6 Figure 5-7 "Dongle (w/o Cover)" on page 434). If the dongle is found, the BUR will start fetching command records from the dongle and perform accordingly. When the dongle cannot be found using the Z-tag interface, BUR will initialize COM1 and start ZFiX debugger console on COM1. An example of downloading a small test program via the COM1 port into the scratch pad RAM is shown in ‘BUR COM1 Download Examples” on page 466. 6.5.1. ZFiX Console Functions The ZFiX console is an ordinary TTY command-line interpreter that can receive typed commands and performs tasks requested by the operator. See Table 6.7 for the supported commands. Table 6.7 ZFix Console Commands Command Action i[n[b]]/inw/indread 8/16/32-bit value from port o[ut[b]]/outw/outd write 8/16/32-bit value to port zfr read 8-bit value from ZFLogic register zfw write 8-bit value to ZFLogic register db/dw/dd display memory in byte/word/dword mode d display next memory page in previous mode poke[b]/pokew/poked - linear use linear mode addressing real use real mode addressing h[elp]/? show help ver display verson information speed <96/19/38/56/115> serial speed. Set hs to 1 for RTS/CTSa ztreset reset Z-tag device ztdir show Z-tag device content within given size ztload load bytes to location from Z-tag ztexec [range] fetch and exec command from Z-tag if in range ztseek [range] seek Z-tag device to record number if in range ztseekl seek Z-tag device to byte offset ztremote [record] start automatic fetch-exec procedure yload load data through YModem to address ysend [filename] send data through YModem from address g[o] start executing from address dls Display available download segment address a. The default speed on power up is 9600. The handshake bit is currently not working. You may try higher speeds, but you may lose data. ZFx86 Data Book 1.0 Rev D Page 463 6 The information in the table above is from the actual ZFiX console help screen (displayed in response to the “help” command). Most of help line descriptions are self-explanatory, however, some of these do need a second look: “real/linear” - allows to use 16-bit or 32-bit memory addressing for db, dw, dd and poke* commands. If “linear” is selected, the whole 4Gb memory range can be examined and addressed. “real” command will drop back into real mode, when SEG:OFFSET notation should be used and only first megabyte of memory is accessible. “zt*” - These commands are used for operating the Z-tag dongle as a block device. They give you access like to normal data storage device and allow executing and loading data from dongle manually or request automatic fetch and execution procedure from dongle. The optional range parameter on some commands is used to prevent infinite seek when requested command record is not found, since there is no way for determining serial data stream length and without specified range BUR tries to load more and more bytes from the dongle until the specified record number is found. “ysend/yload” - these are YModem data transfer functions. Data transfers are protected by 16-bit CRC and are compatible with popular terminals like Term95, Hyperterm, Telix etc. ZFx86 Data Book 1.0 Rev D The console command line parser handles all entered numeric values as hexadecimal and uses extensive data type checking to catch user errors like entering a double word in place of a word. The command line is also cleared up before parsing, i.e. all lowercase is converted to uppercase and extra spaces removed between tokens. 6.5.2. Z-tag Functionality If Z-tag dongle is detected at BUR startup, the command records will be fetched from the dongle and executed. The Z-tag dongle is serial stream device, so the execution will be done on record-by-record basis starting from offset0 and new records are fetched and executed until STOP record (type 05) is reached. The Z-tag dongle data is divided into records. Each record has its own header and CRC. The header structure for Z-tag dongle data record is seen in Figure 6-3. There are 6 different type of commands which the BUR understands and executes: 00 - Start/Resume BUR console. After this command BUR will drop into console mode and no more data from Z-tag dongle is fetched nor processed. Note, that by default there is no Serial output defined for BUR, so command 02 (Serial Console Mode) must be executed before or after command 00. Page 464 6 ;db ;db ;db ;db ;db ;db ;db ;dd ;db ;dw 07Fh,0F0h,055h 001h 019h,099h,010h,021h 023h,059h 006h 'Sample' 001h,030h 00000100 body_length dup (?) E2FC ; command start ID ; command code ; BCD date = 1999.10.21 ; BCD time = 23:59 ; description string length ; description string (23 bytes max!) ; BCD version = 1.30 ; body length ; body ; 16-bit CRC of body Figure 6-3 Dongle Data Record 01 - Upload and execute code. This function finds “best fit” available memory location and uploads code specified in command body from Z-tag dongle there. It executes the data after loading and when the executable returns with RETF (x86 RETurn Far from a procedure) instruction, resumes data fetch from Z-tag. 02 - Serial console mode. When fetching data from Z-tag, there can or can not be data display to serial port. By default, the output is disabled. This command allows to enable the data outputting. The console setting remains selected until next execution of this command, so this command should be executed only for changing/disabling the output device. Note, that there is a special serial console mode, what enables data redirection to Z-tag LED pins. This way the terminal console can be used without COM1 port usage. 03 - Execute console command line. This may be useful, if some kind of command scripting is used at board debugging. You can specify the command line and BUR goes and executes it on ZFiX console. If command results should be displayed through serial port, the command 02 must be executed first. 04 - Add command to a console. This function creates the internal command for BUR console, so users can specify new commands they need at the debugging process and upload them using Z-tag dongle. If you type ZFx86 Data Book 1.0 Rev D “help”, the new command definition can be seen as well (the help line is defined at command definition data). 05 - Stop. This will just light up the GREEN LED on Z-tag dongle and freeze BUR. May be useful to place after everything else to notify operator, that everything is done and prevent infinite execution of data fetch/exec procedure. FF - Basket. The command code 0FFh is reserved by developers and dedicated for generic payload data, if needed (like BIOS images etc.). Any other command code is ignored and BUR execution continues without interruption. 6.5.3. Internal Functionality There is some support for programmers, who implement the BUR Extensions (for example the flash programming routines. At the end of BUR, there is 80-byte area with the pointers to useful functions and tables inside BUR what can be re-used by BUR Extension code to perform checksum calculations, serial I/O, timer and various other tasks. Between all BUR versions, this table location and structure remains same to maintain future compatibility. The detailed descriptions about this functionality can be found in ‘BUR API’ on page 587 Page 465 6 6.6. BUR COM1 Download Examples The two examples following show how to download a test program using Procomm or HyperTerminal via COM1. These little test programs which run entirely on the ZFx86 space are called the BUR Extensions. 6.6.1. Procomm: Download a Test Program 1. Connect Null Modem Cable 2. Set Procomm 2.4.2 to the following: 3. 4. • 9600 baud • 8 bits • no parity • 1 stop bit Press the reset push button on the board. 5. Use the yload command to download. In order to do the file transfer, see Figure 6-4 "Using Procomm YMODEM Batch" 6. Run the program using the “g” command. Use DLS to find available memory. Reference Table 6.7 "ZFix Console Commands". See also Table 6.8 "OnChip RAM Assignment in BUR" ZFx86 Data Book 1.0 Rev D Page 466 6 ZFiX - ZFx86 PCe Internal Console (c)2002 ZF Micro Devices, Inc. : DLS // Display available segment for downloads 0070 : yload 70:0 Please start YModem transmission now or press ... Figure 6-4 "Using Procomm // see CCCCCCCCCCCC ← waiting for xfr YMODEM Batch" on page 467 YModem data transfer succeeded. : g 70:0 Press PgUp in Procomm to bring up the "UPLOAD" dialog. Select YMODEM Batch. Then enter the name of the .com file to download: Figure 6-4 Using Procomm YMODEM Batch ZFx86 Data Book 1.0 Rev D Page 467 6 6.6.2. HyperTerminal: Download a Test Program 1. Connect Null Modem Cable 2. Set HyperTerminal to the following: 3. • 9600 baud • 8 bits • no parity • 1 stop bit Press the reset push button on the board 4. Use DLS to find available memory. Reference Table 6.7 "ZFix Console Commands". 5. Use the yload command to download. In order to do the file transfer, see Figure 6-5 "Using HyperTerminal - Send File Ymodem" 6. Run the program using the “g” command. Figure 6-5 Using HyperTerminal - Send File Ymodem ZFx86 Data Book 1.0 Rev D Page 468 6 6.6.3. BUR Version Test Program Source Code ;; Copyright 2002 ZF Micro Devices, Inc. All rights reserved. title ZFx86 Bur Extension Code sample Obtains BUR Version Number .486 burrom segment ; Services table. These ; uploaded code use. org Bur_Version db CRLF SerOut16 SerSend burrom CODE org label org label org label ends USE16 at 0f000h are the function pointers for 0ff00h ? 0ff0ah far 0ff22h far 0ff3ah far ; f000:ff00 in BUR ROM ; call ff00:ff0a --> CR/LF to COM1 ; call ff00:ff22 --> AX to COM1 as decimal ; call ff00:ff3a --> Charout to COM1 segment USE16 ’CODE’ assume cs:code START: push pop mov xor call cs es di,offset VerText cx,cx SerSend les mov bx,psBur_Version ax,es:[bx] ; es:bx --> Bur_Version String call SerOut16 ; display AX to COM1 as call CRLF ; CR/LF to COM1 ; ES:DI - text to show ; display until 0 reached decimal retf ; resume with BUR psBur_Version VerText dd db Bur_Version ’BUR Version: ’,0 CODE ends end START ZFx86 Data Book 1.0 Rev D ; define string pointer Page 469 6 6.6.4. BUR/BET Memory Map Table 6.8 On-Chip RAM Assignment in BUR Address Range Assignment 00000h-0007Fh (000h:0000h-0000h:007Fh) IRQ vector space (128 bytes) 00080h-002FFh (000h:0080h-0000h:02FFh) System variables (640 bytes) -- Reserved for BUR 00300h-006FFh (030h:0000h-0030h:03FFh) stack (1024 bytes) 00700h-01FFFh (070h:0000h-0070h:18FFh) generic code/data space (6400 bytes) 6.7. Flash Programming Example ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; On-board flash programmer on ZFx86 BUR environment for AT49F516 chip (c)2002 ZF Micro Devices, Inc. Target Chip:Atmel AT49F516 Size: 64K Chipselect:ms_cs0 Mode: 16-bit Chip page:00000000h Window base:E0000h Window size:10000h (64K) This code executes as BUR "Load and execute" function. It will fetch payload code following to the executable code in dongle. .MODEL TINY .CODE .486p org 0 push pop cs es mov xor call call call di, offset HelloText; ES:DI - text to show cx, cx ; display until 0 reached SerSend CRLF ZTPrepareRead START: ZFx86 Data Book 1.0 Rev D Page 470 6 ; Fetch header now mov cx, 4 shl call loop eax, 8 ZTRead GetSig cmp jz mov xor call call jmp eax, 7FF055FFh; is that a basket? @f di, offset NoPayloadText cx, cx SerSend CRLF ExitPgmrFail GetSig: @@: ; Loose date and time mov cx, 6 call loop ZTRead DiscardTime DiscardTime: ; Output basket name mov xor call di, offset WritingText cx, cx SerSend call xor mov ZTRead cx, cx cl, al call call loop ZTRead SerSend2 ShowDesc ; string length ShowDesc: ; Show version mov call mov call call call mov call call call al, ' ' SerSend2 al, 'V' SerSend2 ZTRead SerOut8 al, '.' SerSend2 ZTRead SerOut8 ZFx86 Data Book 1.0 Rev D Page 471 6 ; Show size mov xor call di, offset SizeText cx, cx SerSend mov cx, 4 shl call loop eax, 8 ZTRead ReadSize ReadSize: bswap eax push eax ; convert bytes to double ; save basket byte count call SerOut32 mov xor call call di, offset BytesText cx, cx SerSend CRLF ; OK, bells and whistles are there. Do programming now. ; Create Memory window 0 from E0000 to FFFFF mov mov out mov mov out dx, 218h al, 26h dx, al dx, 21Ah eax, 0E0000h; set window base to E0000h dx, eax ; Set memwin0 size to 64K mov mov out mov mov out dx, 218h al, 2Ah dx, al dx, 21Ah eax, 10000h-1; create 64K window dx, eax ; Set chip page to 0 mov mov out mov mov out dx, 218h al, 2Eh dx, al dx, 21Ah eax, 0h; set page to the beginning of dx, eax; the chip ZFx86 Data Book 1.0 Rev D Page 472 6 ; Set chip width to 16-bit and read-write mode mov mov out mov in and out dx, al, dx, dx, al, al, dx, 218h 5Ah al 219h dx 11101110b al ; Turn ISA bus speed as slow as possible, since we do not know what the ; SYSCLK is and we can not program device well if we do it too fast pushf cli mov mov out mov in or out popf eax, 80009050h; PIT Control/ISA Clock divider dx, 0CF8h dx, eax dx, 0CFCh al, dx al, 00000111b; divide by 8 dx, al ; Now we have chip layed out from E000:0 to E000:FFFF ; Time to program some flash. ; Check, whenever or not we have AT49F516 part on-board mov call al, 90h FlashCMD16 push pop xor mov 0E000h ds si, si eax, ds:[si]; get chip ID to EAX mov ebx, eax mov xor call call mov xor call shr call call di, offset MfgText cx, cx SerSend SerOut8 di, offset DevIDText cx, cx SerSend eax, 16 SerOut8 CRLF mov al, 0F0h ZFx86 Data Book 1.0 Rev D ; get ID ; save ID Page 473 6 call FlashCMD16; end identification mode pop ecx and the minor version cmp jz mov xor call call jmp ; restore bytes count (was EAX originally) ebx, 0FFFCFFFFh ; strip ID two low bits, since this may be code ebx, 00084001Fh ; check, if it's AT49F516 @f di, offset WrongDevText cx, cx SerSend CRLF ExitPgmrFail @@: ; We have right chip. Erase device now push ecx mov xor call di, offset ErasingText cx, cx SerSend mov call mov call al, 80h ; chip erase command part 1 FlashCmd16 al, 10h; chip erase command part 2 FlashCmd16 ; Erase is now in progress. Check, when we are ready. push pop xor call mov mov 0E000h fs si, si DSBX2Var ax, 182 ds:[bx.CountDown], ax; gives 10sec. timeout mov mov out inc in and out call dx, 218h al, 05Eh ;ZT_SIG_OUT dx, al dx al, dx al, 11110101b ; disable LED's dx, al ZTPrepareRead ; ZFLogic back to track cmp jz cmp jnz word ptr ds:[bx.CountDown], 0 @f dword ptr fs:[si], 0FFFFFFFFh @b ; loop until erase completes @@: @@: ZFx86 Data Book 1.0 Rev D Page 474 6 ; reset timer, so we will not loose our blinking LED's mov cmp jz word ptr ds:[bx.CountDown], 0 dword ptr fs:[si], 0FFFFFFFFh @f mov xor call jmp di, offset FailedText cx, cx SerSend ExitPgmrFail mov xor call di, offset OkText cx, cx SerSend @@: ; All set. Programming ... call ResetCRC mov xor call di, offset PgmText cx, cx SerSend pop cmp jz ecx ; restore byte count in basket ecx, 0; don’t do anything PgmDone; if basket size is 0 shr ecx, 1; divide by two to get word count push pop xor 0E000h ds si, si mov call call shl call xchg mov mov al, 0A0h; "program word" command FlashCmd16 ZTRead ax, 8 ZTRead al, ah; byte order for 16-bit writing to memory ds:[si], ax bx, ax ProgramLoop: ; in the extreme case we can have PCI backside clock 80Mhz. ISA ; divider is 8, so we have 10M ISA bus clock. Programming cycle can be max. ; 50us, so we need to wait here about 500 ISA cycles to kill that time. push mov cx cx, 500 in al, 80h; create one ISA cycle WaitWriting: ZFx86 Data Book 1.0 Rev D Page 475 6 cmp ds:[si], bx; see, if we have byte ready loopnzWaitWriting pop cx mov int ax, ds:[si]; read back the word we 17h ; programmed ; update CRC shr ax, 8 int 17h add si, 2 cmp ds:[si-2], bx loopz ProgramLoop PgmDone: cmp jz ds:[si-2], bx; see, why we exited @f ; Last byte is OK, so it's because all is mov xor call jmp di, offset FailedText cx, cx SerSend ExitPgmrFail mov xor call di, offset OkText cx, cx SerSend done @@: ; Get original checksum call shl call xchg ZTRead ax, 8 ZTRead al, ah call cmp jz DSBX2Var; get variables block to DS:BX word ptr ds:[bx.YModemCRChi_C], ax CRCOK mov xor call di, offset CRCFailedText cx, cx SerSend call mov call mov call call jmp SerOut16 al, ' ' SerSend2 ax, word ptr ds:[bx.YModemCRChi_C] SerOut16 CRLF ExitPgmrFail mov xor di, offset CRCOkText cx, cx CRCOK: ZFx86 Data Book 1.0 Rev D Page 476 6 call call SerSend CRLF jmp ExitPgmrOk ExitPgmrFail: ; Lit up RED LED and do not do anything else! mov mov out inc in and or out dx, al, dx, dx al, al, al, dx, 218h 05Eh ;ZT_SIG_OUT al jmp $ ; Lit mov mov out inc in and or out up GREEN LED and continue with BUR dx, 218h al, 05Eh ;ZT_SIG_OUT dx, al dx al, dx al, 11110101b al, ZT_LED_GREEN;00000010b dx, al call CRLF dx 11110101b ZT_LED_RED;00001000b al ExitPgmrOk: ExitPgmr: ; Set timer to maximum value. This is useful to prevent ; BUR from blinking with LED's when loading next commands. ; This way we maintain our RED or GREEN LED setting call mov DSBX2Var word ptr ds:[bx.CountDown], 0FFFFh ; Always exit with ZFL registers prepared for accelerated read! call ZTPrepareRead retf ; resume with BUR include ..\BURAPI.ASM HelloTextdb 0Dh, 0Ah db 'PGM - ZFx86 AT49F516 Flash Programmer V0.80', 0Dh, 0Ah db '---------------------------------------------', 0 NoPayloadTextdb'No Payload. Exiting.', 0 WritingTextdb'Source: ', 0 SizeTextdb ' (0x', 0 ZFx86 Data Book 1.0 Rev D Page 477 6 BytesTextdb ' bytes)', 0 MfgText db 'Device: Mfg=',0 DevIDTextdb ' DevID=',0 WrongDevTextdb'This is not Atmel AT49F516', 0 OkText db 'OK!', 0Dh, 0Ah, 0 FailedTextdb'FAILED!', 0Dh, 0Ah, 0 ErasingTextdb'Erasing .. ', 0 PgmText db 'Programming .. ', 0 CRCFailedTextdb'Data CRC failure: ', 0 CRCOkTextdb 'Data CRC was OK!', 0 ; ; ; ; ; ; ; ; ; Execute flash device command Entry: AL - command code Exit: none Uses: none FlashCMD16proc push push ds si push ax push pop 0e000h ds ; we have address bits shifted by one in 16-bit socket. It means, ; that control bytes should actually go one bit shifted to left, in ; order to get A0 right mov mov shl mov al, 0AAh; CMD sequence part 1 si, 05555h si, 1 ds:[si], al mov mov shl mov al, 055h; CMD sequence part 2 si, 0AAAAh si, 1 ds:[si], al pop ax mov shl mov si, 05555h si, 1 ds:[si], al ZFx86 Data Book 1.0 Rev D ; restore command code Page 478 6 pop pop ret FlashCMD16endp si di END START ENDS ZFx86 Data Book 1.0 Rev D Page 479 6 ZFx86 Data Book 1.0 Rev D Page 480 7 7. Electrical Specifications This chapter provides information about: • General electrical specifications 7.1.2. Power/Ground Connections and Decoupling When testing and operating the ZFx86 device, use standard high frequency techniques to reduce parasitic effects. For example: • DC characteristics • AC characteristics All voltage values in this chapter are with respect to VSS unless otherwise noted. • Filter the DC power leads with low-inductance decoupling capacitors. 7.1. General Specifications • Use low-impedance wiring. 7.1.1. MTTF and FIT Specifications The ZFx86’s Mean Time To Failure (MTTF) and Failures In Time (FIT – Failures per billion operating device-hours) specifications are as follows. Parameter ZFx86 Technology CMOS 8 ° Dynamic Op Life Temperature 125 C Dynamic Op Life Voltage 3.2V Typical Use Temperature and Voltage 60 C; 2.5V Mean Time To Failure 21,129,173.19 hours ° • Utilize the POWER and GND pins. Absolute Maximum Ratings Stresses beyond those indicated in the following table may cause permanent damage to the ZFx86 device, reduce device reliability and result in premature failure, even when there is no immediately apparent sign of failure. Prolonged exposure to conditions at or near the absolute maximum ratings may also result in reduced device life span and reduced reliability. Note: The values in the following table are stress ratings only. They do not imply that operation under other conditions is impossible. Table 7.1 Absolute Maximum Ratings Parameter Min Max Operating case temperature1, 2 -40 85oC Storage temperature3 -45 125oC Supply voltage Maximum supply voltage is as indicated. See Table 7.2. Voltage on: -5V tolerance pins -others -0.5 6.0V -0.5 4.2V Input clamp current, IIK1 10mA Output clamp current, IOK1 25mA 1. Power applied 2. Temperature range industrial 3. No bias ZFx86 Data Book 1.0 Rev D Page 481 7 Table 7.2 Recommended Operating Conditions Symbol TC Parameter Conditions Min Typ Max Extended Temperature Range ZFx86 33/66/100 MHz1 –40oC — 85oC Standard ZFx86 100 MHz2 –0oC — 70oC Operating Case Temperature VBAT Battery Supply Voltage. Powers RTC — 2.85V 3.0V 3.15V Vdd–Core Core Processor (CPU) Power Supply — 2.09V 2.20V 2.31V I/O Buffer Power Supply — 3.14V 3.30V 3.46V Vdd–I/O 1. Temperature range industrial 2. Temperature range commercial Table 7.3 Current Consumption Symbol Parameter Conditions Max Idd–Core Core Supply Current 33 MHz sysclk with 3X CPU 380mA Idd–Core Core Supply Current Suspend mode with external clocks running 120mA Idd–Core Core Supply Current Suspend mode with external clocks off 45mA VBAT Battery Supply Current VBAT = 3V other supplies at 0V 2.0µA Idd–I/O Vdd–I/O Power Supply Current Suspend mode 51TBDmA Idd–I/O Vdd–I/O Power Supply Current Generic OS 18TBDmA IBAT Table 7.4 Pin Capacitance and Inductance Symbol Parameter Min Typ Max CIN1 Input Pin Capacitance TBD pF TBD pF TBD pF CIN1 Clock Input Capacitance TBD pF TBD pF TBD pF CI/O1 I/O Pin Capacitance TBD pF TBD pF TBD pF CO1 Output Pin Capacitance TBD pF TBD pF TBD pF LPIN2 Pin Inductance TBD nH TBD nH TBD nH 1. TA = 25°C, f = 1 MHz. All capacitances not 100% tested. 2. Not 100% tested. ZFx86 Data Book 1.0 Rev D Page 482 7 7.2. Signal I/O Buffer Type Directory The table shown below describes the various buffer types which are used for signals of the ZFx86 device. Immediately following this table is another table which lists all the signals according to logical group, and the buffer types which are relevant for each signal. Table 7.5 I/O Cell Characteristics TYPE Generic2 I/O, OE, IE MIDE I/O, OE, IE MAC97 I/O, OE, IE MPCI I/O, OE, IE IOH -8ma -3ma -2ma -1ma MPCI_CLK I/O, OE, IE — AC L=>H AC H=>L 10ma 10ns buf delay .4/2.4 V 50pf 10ns buf delay 2.4/.4 V 50pf RENU (160mic amps) REND (036mic amps) input hysteresis 250mv. For ISA Bus. 5ma 15/28ns buf delay .4/2.4 V 75pf / 150pf 15/28ns buf delay 2./.4 V 75pf / 150pf No RENU or REND Input hysteresis 200mv For IDE interface 8ma 10ns buf delay .4/2.4 V 50pf 10ns buf delay 2.4/.4 V 50pf RENU only input hysteresis For AC97 and Open Drain 1.5ma 5ns buf delay 50pf 32ma peak 5ns buf delay 50pf 38ma peak RENU only Designed to meet PCI specification 5ns 5ns RENU only For PCI CLK 10ns buf delay 2.4/.4 V 50pf RENU & REND. input hysteresis. floppy, parallel, and open drain IOL — -14ma 14ma 10ns buf delay .4/2.4 V 50pf MVBAT ~ a wire — — — — MUSB I/O, OE, IE — — — — MWUSB just a wire — — — — 2ma 5ma 2v/ns 60pf load 2v/ns 60pf load M_FDC_PP I/O, OE, IE MMC_D I/O, OE, IE Slew cntrl JTAG Bound support ZFx86 Data Book 1.0 Rev D COMMENT For vbat. Wire with poly resis No RENU or REND USB power enable and over current Connects pad to USB hard Macro No RENU or REND No hysteresis For SDRAM data and address Page 483 7 Table 7.5 I/O Cell Characteristics (cont.) TYPE IOH MMC_SDCLK Out & OE No slew. JTAG Bound support IOL 2ma 5ma — — MMC_SDCLKIN Input only. No IE. JTAG Bound support AC L=>H AC H=>L 1.7v/ns 60pf load 1.7v/ns 60pf load — — COMMENT No RENU or REND For SDRAM output clocks No RENU or REND No hysteresis SDRAM or other high speed clock input Note: See further information in the Cell Types in 7.3. "Detailed DC Characteristics of Cells" on page 484. 7.3. Detailed DC Characteristics of Cells Table 7.6 Input, MPCi Symbol Parameter Conditions Min Max VIH Input High Voltage — 0.5VIO VIO+0.5V1 VIL Input Low Voltage — -0.5V1 0.3VIO — 0.7VIO — 0 < VIN < VIO — +/-10µA VIPU lIL Input Pull-up Voltage2 Input Leakage Current 2, 3 1. Not 100% tested. 2. Not 100% tested. This parameter indicates the minimum voltage to which we calculate the pull-up resistors in order to pull a floated network. 3. Input leakage currents include hi-Z output leakage for all bidirectional buffers with TRI-STATE outputs. Table 7.7 Input, Generic2 Symbol Parameter Conditions Min Max VIH Input High Voltage — 2.0V VIO+0.5V VIL Input Low Voltage — −0.5V 0.8V IIL Input Leakage Current VIN = VIO — 10µA VIN = VSS — −10µA — 250mV — VH Input Hysteresis ZFx86 Data Book 1.0 Rev D Page 484 7 Table 7.8 Input, MUSB Symbol Parameter Conditions Min Max VIH Input High Voltage — 0.5VIO VIO+0.5V VIL Input Low Voltage — −0.5V 0.3VIO IIL Input Leakage Current VIN = VI/O — 10µA VIN = VSS — −10µA VHIS Input Hysteresis 200mV Table 7.9 Input, MIDE Symbol Parameter Conditions Min Max VIH Input High Voltage — 0.5VI/O VIO+0.5V VIL Input Low Voltage — −0.5V 0.3VI/O IIL Input Leakage Current VIN = VI/O — 10µA VIN = VSS — −10µA — 200mV — Conditions Min Max VHIS Input Hysteresis Table 7.10 Input, M-FDCP Symbol Parameter VIH Input High Voltage — 0.5VI/O VI/O+0.5V VIL Input Low Voltage — −0.5V 0.3VI/O IIL Input Leakage Current VIN = VI/O — 10µA VIN = VSS — −10µA — 200mV — Conditions Min Max VHIS Input Hysteresis Table 7.11 Input, MMC-D Symbol Parameter VIH Input High Voltage — 0.5VI/O VI/O+0.5V VIL Input Low Voltage — −0.5V 0.3VI/O IIL Input Leakage Current VIN = VI/O — 10µA VIN = VSS — −10µA — 200mV — VHIS Input Hysteresis ZFx86 Data Book 1.0 Rev D Page 485 7 Table 7.12 Input, MWUSB Symbol Parameter Conditions Min Max VIH Input High Voltage — 0.5VI/O VI/O+0.5V1 VIL Input Low Voltage — −0.5V1 0.3VI/O IIL Input Leakage Current VIN = VI/O — 10µA VIN = VSS — −10µA — 200mV — |(D+)−(D−)| and Figure 7-1 0.2V — VHIS Input Hysteresis1 VDI Differential Input Sensitivity VCM Differential Common Mode Range Includes VDI Range 0.8V 2.5V VSE Single Ended Receiver Threshold — 0.8V 2.0V 1. Not 100% tested. Minimum Differential Sensitivity (volts) 1.0 0.8 0.6 0.4 0.2 0.0 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2 Common Mode Input Voltage (volts) Figure 7-1 Differential Input Sensitivity for Common Mode Range Table 7.13 Input, MAC971 Symbol VIH Parameter Input High Voltage VIL Input Low Voltage IIL Input Leakage Current VHIS Input hysteresis Conditions Min Max — 1.4V — — -0.5V2 0.8V VIN=VI/O — 10µA VIN=VSS — −10µA — 200mV — 1. Buffer Type: INAB 2. Not 100% tested. ZFx86 Data Book 1.0 Rev D Page 486 7 Table 7.14 Output, PCI TRI-STATE Buffer Symbol Parameter Conditions Min Max VOH Output High Voltage lOH = -500 µA 0.9VI/O — VOL Output Low Voltage lOL =1500 µA — 0.1VIO I PU Pull-up current Output short to ground mA mA Table 7.15 Output, GENERIC 21 Symbol Parameter Conditions Min Max VOH Output High Voltage lOH = -8 mA 2.4V — VOL Output Low Voltage lOL = 10 mA — 0.4V I PU Pull-up current Output short to ground mA mA I PD Pull-down current Output short to VI/O mA mA 1. Output, TRI-STATE buffer capable of sourcing I/OH mA and sinking I/OL mA Table 7.16 Output, MIDE Symbol Parameter Conditions Min Max VOH Output High Voltage lOH = -3 mA 2.4V — VOL Output Low Voltage lOL = 5 mA — 0.4V Conditions Min Max Table 7.17 Output, MUSB Symbol Parameter VOH Output High Voltage lOH = -? mA 2.4V — VOL Output Low Voltage lOL = ? mA — 0.4V Table 7.18 Output, M-FDC_PP Symbol Parameter Conditions Min Max VOH Output High Voltage IOH = -14 mA 2.4V — VOL Output Low Voltage IOL = 14 mA — 0.4V I PU Pull-up current Output short to ground mA mA I PD Pull-down current Output short to V I/O mA mA ZFx86 Data Book 1.0 Rev D Page 487 7 Table 7.19 Output, MMC_D Symbol Parameter Conditions Min Max VOH Output High Voltage lOH = -2 mA 2.4V — VOL Output Low Voltage lOL = 5 mA — 0.4V . Table 7.20 Output, MWUSB1 Symbol Parameter Conditions Min Max VUSB_OH High-level output voltage IOH = -0.25 mA RL = 15 KΩ to GND 2.8V 3.6V2 VUSB_OL Low-level output voltage IOL = 2.5 mA RL = 1.5 KΩ to 3.6V — 0.3V tUSB_CRS Output signal crossover voltage — 1.3V 2.0V 1. Buffer Type: OUSB 2. Tested by characterization. Table 7.21 Output, MAC971 Symbol Parameter Conditions Min Max VOH Output High Voltage lOH = - 2 mA 0.9VI/O — VOL Output Low Voltage lOL = 8 mA — 0.1VI/O I PU Pull-up current Output short to ground mA mA 1. Buffer Type: OMAC97I ZFx86 Data Book 1.0 Rev D Page 488 7 7.4. AC Characteristics The tables in this section list the following AC characteristics: • Output delays • Input setup requirements • Input hold requirements • Output float delays The default levels for measurement of the rising clock edge reference voltage (VREF), and other voltages are shown in the Table below. Input or output signals must cross these levels during testing. Unless otherwise specified, all measurement points in this section conform to these default levels. Note: The following naming conventions are used in this section: name1,2 = name1 or name2 name1/name2 = name1 or name2 namex1,2/namey1,2 = namex1, namex2, namey1, or namey2 Table 7.22 Default Levels for Measurement of Switching Parameters Symbol Parameter Value Reference VREF Reference voltage 1.5V VIHD Input High Drive voltage 2.4V Figure 7-2 VILD Input Low Drive voltage 0.4V Figure 7-2 VOHD Output High Drive voltage 2.4V VOLD Output Low Drive voltage 0.4V 7.4.1. System Interface Table 7.23 sysclk_c Clock Parameters Symbol t CYC t HIGH t LOW ZFx86 Data Book 1.0 Rev D Parameter Min Max Clock Cycle Time 500nS 15nS Clock High Time 14nS 7nS Clock Low Time 14nS 7nS Clock Slew Rate 1V/nS 4V/ns Page 489 7 V IHD sysclk_c V ILD t HIGH t LOW t CYC Figure 7-2 sysclk_c Timing and Measurement Points reset_n V ILD T LOW reset_n may be asserted and de-asserted asynchronous to clock. T LOW must be at least 15 nano seconds. Figure 7-3 reset_n timing ZFx86 Data Book 1.0 Rev D Page 490 7 sysclk_c reset_n res_out pcirtst_n has the same timing as res_out but opposite in sign. Both res_out and pcirst_n are asserted when reset_n is asserted without regards to clock.Both de-assert on the high to low edge of clock. Figure 7-4 res_out timing sysclk_c cpu_trig Figure 7-5 CPU_trig timing ZFx86 Data Book 1.0 Rev D Page 491 7 7.4.2. Memory Interface All AC tests are as follows unless otherwise specified: The Minimum Input setup and hold times described in Figure 7-6 (legend C and D) define the smallest acceptable sampling window during which a synchronous input signal must be stable to ensure correct operation. VOH • VI/O = 3.0V to 3.6V (3.3V nominal) • TC = 0 oC to 70 oC • CL = 50 pF VOHD dr_clk[3:0]_c VREF VOLD VOL A B Max Min VOH Valid Output n OUTPUTS Valid Output n+1 VREF VOL tx tx VIH VIHD VREF dr_clk[3:0]_c VILD VIL C D VIH VREF INPUTS VIL Legend: A = Maximum Output Delay B = Minimum Output Delay C = Minimum Input Setup D = Minimum Input Hold Figure 7-6 Drive Level and Measurement Points for Switching Characters ZFx86 Data Book 1.0 Rev D Page 492 7 Table 7.24 SDRAM Interface Signals Symbol t1 t2 t3 t4 t5 t6 t7 Parameter Min Max Control Output 1 Valid from dr_clk 2.3nS 5.5nS ma[3:0], Output Valid from dr_clk 2.0nS 4.4nS d[31:0] Output Valid from dr_clk 2.4nS 5.9nS d[31:0] Read Data in Setup to dr_clk 3.1nS 6.6nS d[31:0] Read Data Hold to dr_clk 2.0nS 3.0nS dr_clk cycle time Same as sysclk_c dr_clk fall/rise time between (VOLD-VOHD) 2.5nS 2.5nS 1. Control output includes all the following signals: dr_cs[3:0]_n, dr_msk[3:0]_n, dr_we0_n, dr_ras0_n,dr_cas0_n Load = 50pF, VCORE = 2.5, VI/O = 3.3V, @25oC. t6 t1, t2, t3 VOHD VREF VOLD dr_clk[3:0]_c t7 t7 Control Output, ma[13:0] d[31:0] VREF Figure 7-7 Output Valid Timing VIHD VREF VILD dr_clk[3:0]_c t4 d[31:0] Data Valid t5 t5 t4 Data Valid Read Data In ZFx86 Data Book 1.0 Rev D Page 493 7 Figure 7-8 Setup and Hold Timing - Read Data In 7.4.3. ACCESS.bus Interface 1. All ACCESS.bus timing is not 100% tested. Timing is guaranteed by design. Table 7.25 ACCESS.bus Interface Symbol tSCLfi tSCLri tSDAfi tSDAri SDAT Parameter Min Max Reference SCLK signal fall time 300nS Figure 7-9 SCLK signal rise time 1µs Figure 7-9 SDAT signal fall time 300nS Figure 7-9 SDAT signal rise time 1µs Figure 7-9 0.7VIO 0.7VIO 0.3VIO 0.3VIO tSDAr SCLK tSDAf 0.7VIO 0.7VIO 0.3VIO 0.3VIO tSCLr tSCLf Figure 7-9 ACB Signals (SDAT AND SCLK) Rising and Falling times ZFx86 Data Book 1.0 Rev D Page 494 7 7.4.4. PCI Bus The SC1400B device is compliant with PCI Bus Rev. 2.1 specifications. Relevant information from the PCI Bus specifications is provided below. The PME signal is compliant with PCI Bus Revision 2.2. All parameters in the following table are not 100% tested. Table 7.26 PCI Bus - AC Specifications Symbol Min Max Unit -12VI/O — mA -17.1(VI/O-VOUT) — mA 0.7VI/O VOUT>01, 2 — Equation B Test Point VOUT-=0.18VI/O — 38VI/O mA ICL Low Clamp Current -3 VIN>VI/O+1 25+(VIN-VI/O-1)/0.015 — mA SLEWR3 Output Rise Slew Rate 0.2VI/O - 0.6 VI/O Load 1V/nS 4V/nS V/nS SLEWF3 Output Fall Slew Rate 0.6VI/O - 0.2 VI/O Load 1V/nS 4V/nS V/nS IOH(AC)1, 2 Parameter Switching Current High Test IOL(AC)1 Point2 Switching Current Low 2 Condition 0 VOUTŠ≥0.6VI/O 0.6VI/O>VOUT>0.1VI/O1 1. Refer to the V/I curves in Figure 7-11 This specification does not apply to PCICLK0, PCICLK1, and PCIRST which are system outputs. 2. Maximum current requirements are met when drivers pull beyond the first step voltage. Equations which define these maximum values (A and B) are provided with relevant diagrams in Figure 7-11. These maximum values are guaranteed by design. 3. Rise slew rate does not apply to open-drain outputs. This parameter is interpreted as the cumulative edge rate across the specified range. According to the test circuit Figure 7-10. ZFx86 Data Book 1.0 Rev D Page 495 7 Pin 0.5" max. Output Buffer 1KΩ 10pF VCC 1KΩ Figure 7-10 Testing Setup for Slew Rate and Minimum Timing Output Voltage Volts Output Voltage Volts Pull-Up VIO Test Point 0.9 VIO AC Drive Point 0.6 VIO DC Drive Point DC Drive Point 0.3 VIO Pull-Down AC Drive Point -0.5 0.5VI 0.1 VIO -12VIO -48VIO Equation A IOH mA Test Point 1.5 16VIO 64VIO IOL mA Equation B Ioh=(98.0/VIO)*(VOUT-VIO)*(VOUT+0.4VIO) for VIO>VOUT>0.7VIO IOL=(256/VIO)*VOUT*(VIO-VOUT) for 0V on the selected terminal output. This function will output bytes 0Dh 0Ah to the currently selected serial device. Entry: none Exit: none Uses: flags Page 587 9 Delay Do uncalibrated but sufficiently long delay. The delay is blocking (no execution will return to caller before delay is expired) but does not switch off interrupts. The actual delay is performed by following code: mov cx, 20 in loop al, 80h DlyLoop Depending on value in AL the type checking is done for parameter as well. This means that if the byte value is desired (AL = 0) and parser finds larger numeric value than 0FFh at specific parameter position, it will automatically return with the carry flag cleared (NC). The parser will ignore extra spaces and extra zeros (CHR(0x30)) at the beginning of the numbers. DlyLoop: Entry: The I/O port 80h read is done for wasting reasonably longer amount of time than “NOP” would have been. Entry: none Exit: none Uses: flags Parm2EDX AL – parse type code: 0h – byte (range 0-FFh) 1h – word (range 0-FFFFh) 2h – dword (range 0-FFFFFFFFh) 3h – address (depending on flag “Addressing” at Variables area (see below)): If Addressing = 0 (real mode), then checks for type WORD:WORD (0-FFFFh:0-FFFFh) If Addressing = 1 (linear mode), then checks for doubleword (0-FFFFFFFFh)) CL – parameter number to parse (1 = first parameter etc.) Exit: EDX – Parsed value if CF is set to CY CF – CY = value parsed successfully – NC = failed parsing the value Uses: EDX, flags This function will parse the data placed at BUR variables area “CmdLine” position (see below) according to the parse type notification supplied as a parameter in AL. This function is used internally by BUR as ZfiX console command line parameters parser and made available for the user application when interaction through the console is performed. This function is also useful when user is implementing the new command for the console, since it helps to gather all necessary parameters without implementing the parser. ResetCRC The data at CmdLine area must be zero-terminated and parameter parsing starts after first space (CHR(0x20)) encountered in command line string. This Interrupt will automatically update the CRC value at BUR internal variables area, named “YModemCRChi_C” and “YModemCRClo_C”, for upper and lower byte of 16-bit CRC respectively. The parser is parsing only hexadecimal numeric values, so running the parser for the first parameter in string “command 1234” returns 1234h as a return. ZFx86 Data Book 1.0 Rev D BUR has internal 16-bit CRC calculation routines. This routine is mapped as interrupt service, so the CRC calculation will be performed by setting the byte value to AL and then calling INT 17h. ResetCRC function is used for helping to reset that data area to zeros. This function is equivalent of manually resetting “YModemCRChi_C” and “YModemCRClo_C” to 00h. Page 588 9 Entry: none Exit: none Uses: flags to the first non-space character of the parameter. The returned value in SI is pointer inside “CmdLine” field at BUR variables area, so the actual string location in memory is: INT 17h (Interrupt Vector) Although being an interrupt vector, it is a place to describe it’s behavior, since this is the only interrupt vector provided by BUR as functional service to user application. This interrupt is used for CRC updating at BUR variables data area, located at “YModemCRChi_C” and “YModemCRClo_C”. For more information see description of BUR API function “ResetCRC”. The reason why CRC calculation algorithm is interrupt vector rather than callable service was the fact that all BUR functions are residing inside ROM area. Code fetch from ROM area is very slow and since the CRC calculation is done for each byte received, it will slow down the entire data processing significally. To avoid that, BUR is caching CRC calculation (and some aggressively used internal functions) from ROM to RAM and mapping them as interrupts. Entry: AL – byte to include for CRC calculation Exit: none Uses: none SeekParm It is desired sometimes to use non-numeric parameters for command line parsing. To process those, it is necessary to determine the start offset of string tokens inside the command line. SeekParm provides that functionality, allowing search within the command line string located at “CmdLine” at BUR internal variables area by parameter number. This function will skip all trailing spaces from command line string tokens, so pointer returned is actually pointing ZFx86 Data Book 1.0 Rev D 0000:[Variables.CmdLine + SI] Entry: CL – parameter number (1 = first parameter etc.) Exit: SI – offset to parameter within CmdLine when CF is CY CF – CY = parameter seeked successfully – NC = parse error Uses: SI, flags SerOut8 Displays 8-bit hexadecimal numeric value on active serial console. The active serial console is selected at BUR variables area at position “SerMode” where 0 = no serial output 1 = COM1 2 = Z-tag LED pins. The number is displayed in hexadecimal format “as is”, so no leading zeros or type identifiers are added. Value 1Ah therefore appears “1A” on serial console. Entry: AL Exit: none Uses: flags – value to display SerOut16 Displays 16-bit hexadecimal numeric value on active serial console. See comments for the function “SerOut8”. Value 12ABh appears as “12AB” on console. Entry: AX Exit: none Uses: flags – value to display Page 589 9 SerOut32 Displays 32-bit hexadecimal numeric value on active serial console. See comments for the function “SerOut8”. Value 1234ABCDh appears as “1234ABCD” on console. Entry: EAX Exit: none Uses: flags – value to display SerOutBits Displays 8-bit numeric value on active serial console as bit pattern, starting from MSB. See comments for the function “SerOut8”. Value 5Ah appears as “01011010” on console. Entry: AL Exit: none Uses: flags – value to display SerSend Transmits string to the active serial console. See comments for the function “SerOut8”. Entry: AL Exit: none Uses: flags SerRec Receive character from active serial console input with no character waiting. The active serial console is selected at BUR variables area at position “SerMode” where: 0 = no serial output 1 = COM1 2 = Z-tag interface. The serial communication on BUR is interruptdriven, so the SerRec function returns byte from the receive buffer located at BUR variables area position “CircBuf”. When buffer is empty, this function will return with ZF set to Z. Otherwise ZF is set to NZ and character is moved from receive buffer to AL. Receive buffer is 128 bytes long, so host can send 128 symbols without loss before BUR application starts receiving. Entry: none Exit: AL – symbol received if ZF is NZ The string can be either zero-terminated or with the specified length. Entry: ES:DI – string to display CX – string length (CX = 0 if string is 0terminated) Exit: none Uses: flags – character to display ZF – NZ = character received – Z = no character received Uses: AX, flags SerSend2 Transmit character to active serial console. See comments for the function “SerOut8”. The symbol can be any ASCII character between 0 and 255. No character translation is performed, all data will be transmitted to serial port “as is”. ZFx86 Data Book 1.0 Rev D Page 590 9 SerRecWait YModemGetHeader SerRecWait is functionally identical to the SerRec but waits for character to appear into receive buffer for 220ms if receive buffer is empty. BUR has built-in Ymodem transmission protocol for transferring files over serial link. This functionality is also made available as public function for using at BUR applications. Entry: none Exit: AL – symbol received if ZF is NZ ZF – NZ = character received – Z = no character received Uses: AX, flags Addr2Linear Helper function for converting real-mode address to linear address. The function behaves differently depending on flag “Addressing” at BUR variables area. When flag indicates 1h (linear addressing), the function will simply pass EDX to EDI. When flag indicates 0h (real mode translation), the address translation is performed. The actual translation is performed by following routine: mov edi, edx cmp byte ptr ds:[bx.Addressing], 1 ; EDX was linear? jz Converted xor di, di shr edi, 12 shl edx, 16 shr edx, 16 ; clear high 16 bits in EDX add edi, edx ; edi is now 20-bit address Converted: Entry: EDX – value to convert. Bits 31..16 = realmode segment address Bits 15..0 = real-mode offset address Exit: EDI – linear memory location (20-bit if converted from real mode) Uses: EDI, flags ZFx86 Data Book 1.0 Rev D Ymodem support functions are made of two parts: YmodemGetHeader and YmodemGetData. YmodemGetHeader initiates the receive procedure by sending poll characters (‘C’) to the serial line. After each character it will check for response symbol for about 1.5 seconds and re-send the poll character if no response from host is received. If host sends escape character (0x1B), the YmodemGetHeader function will cancel and exit with error (CF is set to NC). When host responds to poll character with either STX (0x2) or SOH (0x1), the transmission procedure continues with receiving the packet header information from host. During the header receive YmodemGetHeader will automatically, according to transmitted header, fill in the values at BUR variables area for fields YmodemHdrByte, YmodemFileSize, YModemCRChi, and YModemCRClo. Entry: none Exit: CF – CY = header information received OK – NC = error receiving header (error or cancelled by user) Uses: flags Page 591 9 YModemGetData This function is second of Ymodem data receiveing functions. It pairs with YmodemGetHeader and can be called only after YmodemGetHeader has been executed successfully. This function will receive all the actual data records of the file transferred by Ymodem. Data is received as “bit-bucket”, so all the fetched data is simply stored in memory starting from specified start address. No filenames are processed and can not be retrieved by BUR application. After receiving is complete, YmodemGetHeader must be executed again to check for batch transfers. If YmodemGetHeader returns with no-error condition, YModemGetData must be re-executed to receive next transmission in batch. Note also that YModemGetData takes linear address as pointer to a receive buffer. This is originated from the fact that YModemGetData is able to store data anywhere within 4 Gb memory range because data storing to memory is always performed in linear mode. For using this function with real-mode addressing, addresses can be converted using the function “Addr2Linear” (see definition above). Entry: EDI – linear (32-bit) memory address for destination buffer Exit: EDI – points to the next byte after received data end CF – CY = data received OK – NC = error during transmission Uses: EDI, flags The example skeleton of the receiving program utilizing the YModemGetXXXX functions is: . . Determine address for store buffer into EDX (See definition of “Addr2Linear” function for EDX layout) . . ymodem_tryagain: call YmodemGetHeader jnc yload_err ; initiate transmission ; header error, so quit cmp jz byte ptr ds:[bx.YModemHdrByte], 0 ymodem_tryagain ; if empty header, try again call Addr2Linear ; convert EDX to linear EDI xor cx, cx ; reset batch transmissions counter yload_nextfile: call jc YModemGetData NextHeader ; Header was OK, get data ; data was ok, go check if ; it is a batch transfer and there ; is more to come.. ; if we are here, there was error on receiving ZFx86 Data Book 1.0 Rev D Page 592 9 cmp jz jmp NextHeader: inc call jnc cx, 0 yload_err yload_suspicious ; anything successfully received? ; nothing was received ; broken batch transmission cx ; indicate that we had successful ; transmission already YmodemGetHeader ; request for next header yload_ok ; no header found, so we quit ; if we are here, then we have batch transmission. However, ; some Ymodem terminals like to send empty batch packet ; as terminator, so exit batch if received header was empty. cmp jz byte ptr ds:[bx.YModemHdrByte], 0 yload_ok cmp jz dword ptr ds:[bx.YModemFileSize], 0 yload_ok ; it IS a valid batch transmission. Go get next part. jmp yload_nextfile yload_err: . . Do something for error condition . . jmp yload_quit yload_ok: . . Do something for OK condition . . jmp yload_quit yload_suspicious: . . Do something for incorrect batch transmission (may be protocol incompatibility or something else, the fact is that some files (count is in CX) did come through OK). . . jmp yload_quit yload_quit: ZFx86 Data Book 1.0 Rev D Page 593 9 YmodemSendHeader YmodemSendHeader and YmodemSendData are complements to the YModemGetXXXX functions but are used for transmitting data from ZFx86 side to the host. The usage and operation logic is close to receiving functions but transmitting functionality does not support batch transmissions. The YmodemSendHeader function can take optional destination filename as parameter. This parameter is fetched from the BUR variables area “CmdLine” entry as third parameter on command line. The first parameters are not important for YmodemSendHeader functionality, so in order to specify filename, CmdLine buffer may look as follows: db tion for console command “ysend [filename]” , in which case we have optional destination filename at command line buffer third position. This function will wait for ‘C’ characters appear from host side and if received, send header packet. After header it will wait for ACK and receive additional 'C' between packet 0 and 1. Entry: EDI – linear address for data source (see notes on YModemGetData). Used for automatic destination filename creation only. EAX – length of the data to transmit Exit: CF – CY = header transmitted OK – NC = error transmitting header Uses: flags YmodemSendData ‘x x x FILENAME.DAT’, 0 If the command line buffer does not contain third parameter (terminating zero is reached before third parameter parse), an automatic filename will be created based on the linear address of data source address in form of XXXXXXXX.DAT where XXXXXXXX represents the hexadecimal source address in linear mode, padded with leading zeros (i.e. ‘0001FAE8.DAT’). A kind of awkward processing of user-defined filename is originated from the fact that YmodemSendHeader function is used internally by BUR as immediate processing func- Actual data transmission function for executing after YmodemSendHeader. This function transmits all the data packets to the host. Entry: EDI – linear address for data source (see notes on YModemGetData) EAX – length of the data to transmit Exit: CF – CY = data transmitted successfully – NC = transmission failed Uses: flags The example skeleton for transmitting data from ZFx86 side to host is very simple: . . Determine address of source buffer into EDX (Seedefinition of “Addr2Linear” function for EDX layout) and set filename to BUR internal variables CmdLine area if specific filename is desired. . . call Addr2Linear ; EDX -> linear EDI call jnc YModemSendHeader ysend_failed ; header transmission error, so quit ZFx86 Data Book 1.0 Rev D Page 594 9 call jnc YModemSendData ysend_failed ; data tranismission error, so quit . . OK condition handling here . . jmp ysend_quit ysend_failed: . . Failure condition handling here . . ysend_quit: ZTCMDExec Z-tag Command processor. This routine fetches and executes single record from Z-Tag dongle. The executable code is always placed starting from DownloadSegment (defined in BUR Variables area) offset 0. The routine fetches command data out from dongle but assumes that Z-tag dongle is seeked past proper record signature, i.e. next byte fetched will be the command code (means that 7F F0 55 must be read before this function is called). NOTE: This is a function used internally by BUR and is useful ONLY when there is a need for application program to take over the Z-tag records executing from dongle for some reason. Normally this is done by BUR itself and user programs do not have a need to modify this behavior. Entry: none Exit: none Uses: flags ZFx86 Data Book 1.0 Rev D ZT_Init Initialize Z-tag interface. This function will perform Z-tag interface init together with checking the CLK to ACK loop and performs reset on Z-tag device. The function will exit with Z-tag device released from Reset condition (i.e. in a condition when reset is not active). Note that after executing this function the connected Z-tag device will start delivering the data from offset 0, so this function must be used only when it is desired to fetch data from the beginning of the device. Use ZTPrepareRead when Z-tag interface initialization is needed without resetting the device and loosing the track of the data. Entry: none Exit: none Uses: flags Page 595 9 ZTPrepareRead ZTRead Prepare Z-tag read accelerator for data reading. Unlike other commands defined in BURAPI, ZTRead is a function implemented inside BUR API itself, not as a pointer into BUR binary code. The ZTRead function allows data fetching from Z-tag interface utilizing ZFx86 internal Z-tag read accelerator. This simple accelerator fetches data bits automatically from Z-tag interface, speeding significally up the data transfer speed between Z-tag device and BUR application. After Z-tag interface initialization with ZT_Init the Z-tag interface is ready to fetch data. The data reading procedure is performed by accessing the register 80h in ZF-logic address space through index and data I/O-ports 218h/21Ah. The data read from Z-tag by accelerator is always appearing at the byte read form register 21Ah/80h. It is, however, unnecessary to update the index register each time, so the read can be done in the following way (pseudo-code): out in in 218h, 80h; select register 80h 21Ah ; get first byte 21Ah ; get second byte etc… The read process can therefore be possibly speeded up by writing index only once and then performing the multiple reads. ZTPrepareRead is a function which selects the register 80h from ZF-logic space. The code that does the work for this function is: mov mov dx, 218h al, 80h out dx, al It is necessary to call this function before starting to use ZTRead function (see below) and each time after the ZF-logic registers are accessed between ZTRead calls. This function does not affect the behavior of the Z-tag device nor does it reset the data pointers at Z-Tag device. Entry: none Exit: none Uses: none ZFx86 Data Book 1.0 Rev D The read accelerator is essentially a two stage serial to parallel converter with read ahead. For more information about accelerated Z-tag interface usage refer ZFx86 datasheet(s). The ZTRead function will blink both LED signals on Z-tag interface (LED1 and LED2) with 1 sec period if continuous receive is performed. Note that this function waits until the character is received, so it will block the operation of the BUR application when there is no data to receive. The actual transfer rate is depending on the device connected to a Z-tag interface but up to 1.2 Mbit transfer rates are possible to achieve. For more information about the behavior of ZTRead function please refer the BURAPI.ASM where the actual function code resides. Entry: none Exit: AL Uses: flags – character received Page 596 10 10. Signal Status After POST Default control signal setting of various I/O devices are found in the following tables. 10.1. Access Bus Table 10.1 Access Busa Settings Signal Name Pin No. Status After POST Comment scl_c B12 Input with internal pull-up enabled ACCESS BUS sda D13 Input with internal pull-up enabled* ACCESS BUS a. Not all pull ups are implemented. 10.2. Floppy Disk Tables 10.2 and 10.3 contain Floppy Disk signal settings for the Floppy Disk in FFD active or Z-tag active operation mode. 10.2.1. FDD Active Table 10.2 Floppy Disk (FDD) Settings Signal Name Pin No. Status After POST Comment DSKCHG_N J02 Input Floppy Disk change. Door open. INDEX_N F03 Input Floppy disk index pulse DIR_N G03 Output high Floppy Head Direction. Low - in, High - out. HDSEL_N H01 Output high Floppy Head select. Low indicates side zero. RDATA_N J04 Input Floppy Read data. DRV_N F01 Output high Floppy Selects floppy disk 0 MTR_N F02 Output high Floppy Selects motor driver 0 STEP_N G04 Output high Floppy Step head TRK0_N H03 Input Floppy Track 0 indicator WDATA_N G02 Output high Floppy Write Data (gated internally with wgate_n) WGATE_N G01 Output high Floppy Write Enable Gate WRPRT_N H02 Input Floppy Write protect ZFx86 Data Book 1.0 Rev D Page 597 10 10.2.2. Z-tag Active Table 10.3 Floppy Disk (Z-tag) Settings Signal Name Pin No. Status After POST Comment J02 Input Z-tag general-purpose input. This can also be used as secondary chip enable for daisychained on-board FailSafe PROM programming. F03 Input NOT USED for the Z-tag interface. (Floppy disk index pulse) G03 Output high Must connect to Z-tag dongle through 1K ohm resistor. This pin serves as RESET output for external device connected to a Z-tag. H01 Output high The Z-tag interface has two LED outputs capable of driving the status LED’s of the device connected. J04 Input Z-tag data input (referred in a document mostly as DATA) F01 Output high NOT USED for the Z-tag interface. (Floppy Selects floppy disk 0) F02 Output high NOT USED for the Z-tag interface. (Floppy Selects motor driver 0) G04 Output high The Z-tag interface has two LED outputs capable of driving the status LED’s of the device connected. H03 Input Z-tag general-purpose input G02 Output high Must connect to Z-tag dongle through 470 ohn resistor. This pin serves as CLK output when BUR fetches a code through Z-tag interface. G01 Output high NOT USED for the Z-tag interface. (Floppy Write Enable Gate) Input Acknowledge input ZPGPI1/CEN2_N INDEX_N ZRST ZLED1 ZDIN DRV_N MTR_N ZLED2 ZGPI0 ZCLK WGATE_N ZACK H2 ZFx86 Data Book 1.0 Rev D Page 598 10 10.3. GPIO Use the GPIO1, 2, 3, 5, and 6 as the secondary IDE control signals when enabled in BIOS. Table 10.4 GPIOa Settings Signal Name Pin No. Status After POST Comment GPIO[0] AD12 Input with internal pull-up enabled GPIO (32KHz out) GPIO[1] AE11 Input with internal pull-up enabled or 2nd IDE DACK GPIO / IDE_DACK1_N GPIO[2] AF11 Input with internal pull-up enabled or 2nd IDE IOW GPIO / IDE_DIOW1_N GPIO[3] AD11 Input with internal pull-up enabled or 2nd IDE IOR GPIO / IDE_DIOR1_N GPIO[4] AF10 Input with internal pull-up enabled GPIO GPIO[5] AE10 Input with internal pull-up enabled or 2nd IDE DREQ GPIO / IDE_DREG1 GPIO[6] AD10 Input with internal pull-up enabled or 2nd IDE IORDY GPIO / IDE_IORDY1 GPIO[7] AF09 Input with internal pull-up enabled GPIO a. Not all pull-ups are implemented. 10.4. ISA Table 10.5 ISA Pin Settings Signal Name Pin No. Status After POST Comment DACK1_N A14 output/bi-dir ISA DACK1_N/ PCI GRNT2_N (BS9) DRQ1 B14 Input/bi-dir ISA DRQ1/ PCI REQ2_N (BS9) ISA_ERR_N AB3 input ISA Fatal bus error 10.5. PS/2 Table 10.6 PS/2 Pin Settings Signal Name Pin No. Status After POST Comment KCLOCK_C C12 bi-dir with internal pull-up Keyboard Clock KDATA A11 bi-dir with internal pull-up Keyboard Data KBLOCK_N B11 bi-dir with internal pull-up Keyboard Lock. Blocks keyboard input. MCLK_C D11 bi-dir with internal pull-up Mouse Clock MDAT C11 bi-dir with internal pull-up Mouse Data ZFx86 Data Book 1.0 Rev D Page 599 10 10.6. PCI Table 10.7 PCI Settings Signal Name Pin No. Status After POST Comment PCICLK_C U25 Input/output PCI CLOCK (BS20) IRQ9 D02 Input with internal pull-up PCI_INT_ A IRQ10 E04 Input with internal pull-up PCI_INT_ B IRQ11 D01 Input with internal pull-up PCI_INT_ C IRQ12 E03 Input with internal pull-up PCI_INT_ D 10.7. LPT Refer to BIOS settings. Table 10.8 LPT Settings Signal Name Pin No. Status After POST Comment ACK_N K02 bi-dir-u Printer acknowledge. AUTOFD_N L02 bi-dir-u Printer auto-linefeed. BUSY K03 bi-dir-d Printer busy. STRB_N M03 bi-dir-u Printer Data valid strobe. PD[0] P03 bi-dir Printer Data. PD[1] P01 bi-dir Printer Data. PD[2] P02 bi-dir Printer Data. PD[3] N01 bi-dir Printer Data. PD[4] N02 bi-dir Printer Data. PD[5] M01 bi-dir Printer Data. PD[6] N03 bi-dir Printer Data. PD[7] M02 bi-dir Printer Data. ERR_N L01 bi-dir-u Printer error. INIT_N L03 bi-dir-u Printer Initialize printer. SLCK J03 bi-dir-d Printer is selected. PE_N J01 bi-dir-ud Printer Port paper end. SLCTIN_N K01 bi-dir-u Printer Port select printer. ZFx86 Data Book 1.0 Rev D Page 600 10 10.8. IR Control (COM2) Table 10.9 IR Control Settings Signal Name Pin No. Status After POST Comment CTS2_N A06 Input CTS2_N / IR control 3 – input DCD2_N B08 Input DCD2_N / IR control 2 –output DSR2_N C08 Input DSR2_N / IR control 1 – output RTS2_N C07 Output high RTS2_N / IR control 0 – output 10.9. ZF Logic Table 10.10 ZF Logic Settings Signal Name Pin No. Status After POST Comment IO_CS0 B03 Output high ZFLogic IO chip select. IO_CS1 A02 Output high ZFLogic IO chip select. IO_CS2 A01 Output high ZFLogic IO chip select. IO_CS3 C03 Output high ZFLogic IO chip select. MEM_CS1 D05 Output high ZFLogic Memory chip select * MEM_CS2 A03 Output high ZFLogic Memory chip select * MEM_CS3 C04 Output high ZFLogic Memory chip select * MEM_CS0 B04 Output ZFLogic Memory chip select * # PWM B05 Output low ZFLogic Pulse width modulation WDI A04 Input with internal pull-up ZFLogic Watchdog timer input. Re-start timer. WDO C05 Output low ZFLogic Watchdog timer output. Time-out. ZFx86 Data Book 1.0 Rev D Page 601 10 ZFx86 Data Book 1.0 Rev D Page 602 11 11. Phoenix BIOS Register Settings This chapter contains Phoenix BIOS register settings, brief comments that may apply, and all bits extracted from the registers. It contains an overview of the North Bridge, and South Bridge registers discussed in detail in Chapters 3 and 4 of this manual. The Phoenix BIOS version 1.03 was booted with default settings (CMOS cleared), except both IDE channels were enabled. For booting MS Windows 98, default installation was used with BootGUI=0 modification in MSDOS.SYS. 11.1. North Bridge 11.1.1. Reset, Sampling, and Misc North Bridge Registers Table 12.1 Reset, Sampling, and Misc North Bridge Registers Register/ Bit 100H 3:0 15:4 110H 2:0 15:3 111H 2:0 15:3 112H 2:0 15:3 Name RID Lambda ID Reserved PR1 PREG1S<2:0> PREG1A<27:15> PR2 PREG2S<2:0> PREG2A<27:15> PR3 PREG3S<2:0> PREG3A<27:15> ZFx86 Data Book 1.0 Rev D Function NB Revision ID Register Lambda version ID. Programmable Region 1 Register Programmable region 1 block size: Bit <2:0> Block size Bit<2:0> Block size 000 32KB 100 512KB 001 64KB 1011 MB 010 128KB 11X Reserved 011 256KB Programmable region 1 starting address: The programmable region starting address must be a multiple of the block size. Programmable Region 2 Register Programmable region 2 block size: Bit <2:0> Block size Bit<2:0> Block size 000 32KB 100 512KB 001 64KB 101 1MB 010 128KB 11X Reserved 0112 56KB Programmable region 2 starting address: The programmable region starting address must be a multiple of the block size. Programmable Region 3 Register Programmable region 3 block size: Bit <2:0> Block size Bit<2:0> Block size 000 32KB 100 512KB 001 64KB 101 1MB 010 128KB 11X Reserved 011 256KB Programmable region 3 starting address: The programmable region starting address must be a multiple of the block size. Value 0002h 2H All 0s 0000h 0h 000h 0000h 0h 000h 0000h 0h 000h Page 603 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 113H 2:0 15:3 114H 1:0 3:2 5:4 7:6 Name Function PR4 PREG4S<2:0> Programmable Region 4 Register Programmable region 4 block size: PREG4A<27:15> PRC PRGREG1_SEL<1:0> Bit <2:0> Block size Bit<2:0> Block size 000 32KB 100 512KB 001 64KB 1011 MB 010 128KB 11X Reserved 011 256KB Programmable region 4 starting address: The programmable region starting address must be a multiple of the block size Programmable Region Control Register Programmable region 1 select<1:0>: PRGREG2_SEL<1:0> Bits<1:0> Function Bits<1:0> Function 00 Disable 10 non-cacheable 01 Reserved 11 Reserved Programmable region 2 select<1:0>: 00b PRGREG3_SEL<1:0> Bits<1:0> Function Bits<1:0> Function 00 Disable 10 non-cacheable 01 Reserved 11 Reserved Programmable region 3 select<1:0>: 00b PRGREG4_SEL<1:0> Bits<1:0> Function Bits<1:0> Function 00 Disable 10 non-cacheable 01 Reserved 11 Reserved Programmable region 4 select<1:0>: 00b Bits<1:0> Function 00 Disable 01 Reserved 15:8 115H 0 Value Reserved COR CACHE_OVR_A24 1 CACHE_OVR_A25 2 CACHE_OVR_A26 3 CACHE_OVR_A27 ZFx86 Data Book 1.0 Rev D 0000 0h 000h 0000h 0h Bits<1:0> Function 10 non-cacheable 11 Reserved Cacheability Override Register Cacheability Override A24: When set, all address with A<24> high is marked non-cacheable.This corresponds to addresses in the range X1000000h–X1FFFFFFh. Cacheability Override A25: When set, all address with A<25> high is marked non-cacheable. This corresponds to addresses in the range X2000000h–X3FFFFFFh. Cacheability Override A26: When set, all address with A<26> high is marked non-cacheable. This corresponds to addresses in the range X4000000h–X7FFFFFFh. Cacheability Override A27: When set, all address with A<27> high is marked non-cacheable. This corresponds to addresses in the range X8000000h–XFFFFFFFh. All “0”s 0000h 0b 0b 0b 0b Page 604 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit Name 4 CACHE_OVR_A28 5 CACHE_OVR_A29 6 CACHE_OVR_A30 7 CACHE_OVR_A31 15:8 117H 1:0 2 3 5:4 Reserved BCR NONPOST_RETRY_CNT<1:0> NONPOST_RETRY_DIS Reserved POST_RETRY_CNCT<1:0> 6 POST_RETRYCNT_DIS 7 8 Reserved RESET_CNT_ON_GNT RESET 9 HLD_RETRY_ON_REQ 15:10 Reserved ZFx86 Data Book 1.0 Rev D Function Cacheability Override A28: When set, all address with A<28> high is marked non-cacheable. This corresponds to addresses in the range 10000000h–1FFFFFFFh. Cacheability Override A29: When set, all address with A<29> high is marked non-cacheable. This corresponds to addresses in the range 20000000h–3FFFFFFFh. Cacheability Override A30: When set, all address with A<30> high is marked non-cacheable. This corresponds to addresses in the range 40000000h–7FFFFFFFh. Cacheability Override A31: When set, all address with A<31> high is marked non-cacheable. This corresponds to addresses in the range 80000000h–FFFFFFFFh. Back-off Control Register Non-posted PCI cycle retry count<1:0> Bits<1:0> count Bits<1:0> count 00 3 10 11 01 7 11 15 These count are effective only when another PCI master is requestor is requesting the bus.Otherwise the cycles will continue to be retried forever Disable PCI retry counter for non-posted cycle: 0= Enable 1= Disable Posted PCI cycle retry count<1:0> Bits<1:0> count Bits<1:0> count 00 3 10 11 01 7 11 15 Just like Bit[1:0], these bits are effective only when a PCI request is active. Disable PCI retry counter for posted cycle: 0= Enable 1= Disable. retry counter on any bus master grant: 0= not reset on grant 1= reset on grant. Hold retry on any PCI Bus Master Request: 0= initiate retry once been backoff 1= initiate retry only after all pending PCI Bus Master requests have been serviced Value 0b 0b 0b 0b All “0”s 0000h 00b 0b 0b 00b 0b 0b 0b 0b All ‘0’s Page 605 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 118H Name 0 1 SMMC Reserved KDISSMMRAM 2 DIS23RMAP 3 5:4 FRCREMAP SMM_DL_SEL[1:0] Function SMM Control Register SMM RAM KEN disable: 1= KEN# will be inactive(high) during access to SMM RAM 0= KEN# will function normally within SMM RAM. Should always be set a ‘1’, to disallow caching. Disable 20000h-3FFFFh remap to A0000h–BFFFFh physical memory in SMM mode: 0= Enabled 1= Disabled. Note: This bit can only be used while both L1 and L2 are disabled. Enables the SMM remapped address to be used in a non-SMM cycle. This is used during loading of the SMM code to the memory. It works in conjunction with bit 14 and 15 of this register, and they need to be in the correct state to allow the loading. SMM D0000h–D7FFFh select<1:0>: Value 00A6h 0b 1b 1b 0b 10b Bits<1:0> Function 00 01 10 11 7:6 SMM_DH_SEL[1:0] XXXD0000h–XXXD7FFFh is not used as SMM space. reserved 000D0000h–000D7FFFh is used as SMM space. (Remap to 000A000h–-000A7FFFh in physical DRAM space.) 1DFD0000h–-1DFD7FFFh is used as SMM space. (Remap to 000A0000h–-000A7FFFh in physical DRAM space.) Note: When programmed to 10, 000D0000h–000D7FFFh will be automatically be set to noncacheable. SMM D8000h-DFFFFh select<1:0>: 10b Bits<1:0> Function 00 01 10 11 XXXD8000h–-XXXDFFFFh is not used as SMM space. reserved 000D8000h–-000DFFFFh is used as SMM space. (remap to 000A8000h-000AFFFFh in physical DRAM space.) 1DFD8000h–-1DFDFFFFh is used as SMM space. (remap to 000A8000h–-000AFFFFh in physical DRAM space.) Note: When programmed to 10, 000D8000h–000DFFFFh will be automatically bet set to noncacheable. ZFx86 Data Book 1.0 Rev D Page 606 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 9:8 Name SMM_EL_SEL[1:0] Function SMM E0000h–-E7FFFh select<1:0>: Value 00b Bits<1:0> Function 00 01 10 11 11:10 SMM_EH_SEL[1:0] XXXE000h–--XXXE7FFFh is not used as SMM space. reserved 000E0000h–-000E7FFFh is used as SMM space. (remap to 000B0000h-000B7FFFh in physical DRAM space.) 1DFE0000h–-1DFE7FFFh is used as SMM space. (remap to 000B0000h–-000B7FFFh in physical DRAM space.) Note: When programmed to 10, 000E0000h–000E7FFFh will be automatically bet set to noncacheable SMM E8000h–-EFFFFh select<1:0>: 00b Bits<1:0> Function 00 01 10 11 12 13 14 SWAP_23_MAP SWAP_DE_MAP LDSMIHLDER Note: When programmed to 10, 000E8000h–000EFFFFh will be automatically bet set to noncacheable. Swap SMM 2/3 mapping: 0= 2/3 will be mapped to A/B 1= 2/3 will be mapped to B/A. Here 2/3 and A/B refer to the address bits 19-16. When 0 = 2XXXX access will be mapped to AXXXX and 3XXXX to BXXXX. When 1 = 2XXXX access will be mapped to BXXXX and 3XXXX to AXXXX Swap SMM D/E mapping: 0= D/E will be mapped to A/B 1= D/E will be mapped to B/A. Here again D/E and A/B refer to the address bits 19-16. When 0 = DXXXX access will be mapped to AXXXX and EXXXX to BXXXX. When 1 = DXXXX access will be mapped to BXXXX and EXXXX to AXXXX Load SMI handler into SMM RAM: 1= 0= ZFx86 Data Book 1.0 Rev D XXXE8000h–-XXXEFFFFh is not used as SMM space. reserved 000E8000h–-000EFFFFh is used as SMM space. (remap to 000B8000h-000BFFFFh in physical DRAM space.) 1DFE8000h–-1DFEFFFFh is used as SMM space. (remap to 000B8000h–-000BFFFFh in physical DRAM space.) 0b 0b 0b Enable access to SMM RAM during normal cycle Disable access to SMM RAM during normal cycle. Page 607 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit Name 15 SMIHLDERLOCK 0 PROC KENEN 1 L1WBEN 2 3 Reserved LINEARBURST 119H Function SMM RAM access in normal mode lock: This bit provides an option to lock bit 14 in a disabled state, thereby prohibiting any further access to SMM RAM from normal mode. This bit can only be written once. Reading a 0 from this bit indicates that bit 14 above is not locked. Reading a 1 from this bit indicates that bit 14 above is locked to disable state. Processor Control Register KEN enable: When low, KEN# will be de-asserted for all cycles. When high, KEN# will be asserted for all local memory cycles, except for cycles to local space which has been explicitly marked as non-cacheable via PRC and COR registers, or implied non-cacheable via SMMC register or SHADRC/SHADWC registers L1 write-back enable: This bit should normally reflect the state of the L1 cache inside the processor. This bit to determine how an access to shadow ROM is handled. If it is a ‘0’, i.e. write-through state, a read to shadow ROM is allowed to be cached (KENEN =1) and a write to shadow ROM causes an invalidation cycle back to the 486. If it is a ‘1’, i.e. write-back state, during a read KENnn is returned HIGH, non-cacheable, and on a write no Invalidation takes place, as data cannot be in the L1 cache. Enable linear burst: 0 = Toggle burst, 1 = Linear burst. This bit should be set to the correct value before the L1 and L2 cache is turn on. This bit determines L2 as well as S/DRAM burst sequencing. Value 006Bh 1b 1b 0b 1b Only Linear will be supported (Fixed to a ‘1’ in hardware) 4 5 Reserved WRFIFO_EN 6 DIS_PSLOCK 7 FLUSH 8 DIS_FPUCLR_BY_F0 ZFx86 Data Book 1.0 Rev D Enable write FIFO: 0 = Disable, 1 = Enable. This bit controls buffer depth of CPU-PCI write buffer and CPUSDRAM write buffer.When disabled, CPU-PCI depth = 2 CPU-SDRAM depth = 1 When enabled, CPU-PCI depth is controlled by PCIWFIFOC register CPUSDRAM depth is controlled by WFIFOC registers Note this bit affects the depth of the write buffer only, other characteristics of the write buffers are still controlled by the respective bits in the WFIFOC and PCIWFIFOC. Disable PSLOCK – When set to ‘1’, will disable the PSLOCK signal from being used. Setting this bit from 0->1, will cause the core to set FLUSHnn pin to the 486 to go LOW for 1 clock. To do another flush this bit should be reset to ‘0’ and then set to a ‘1’. Disable clearing of FPU error by writing to IO port F0h: 0= Enable clearing 1= Disable clearing. 0b 1b 1b 0b 0b Page 608 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit Name 9 DIS_FPUCLR_BY_F1 10 WRM_RST 11 15:12 11AH 2:0 3 A20M Reserved WFIFOC FIFOD<2:0> DRMRDREODEREN Function Value Disable clearing of FPU error by writing to IO port F1H: 0= Enable clearing 1= Disable clearing. Warm Reset – When a ‘1’ is written to this bit, a warm reset sequence will be initiated. It works same as FLUSH bit i.e. to do another warm reset, this bit should be cleared to ‘0’ and then set to a ‘1’ Address 20 Mask – Used for DOS compatibility. 0b Write FIFO Control Register Write FIFO depth Bits<2:0> FIFO depth Bits<2:0> 000 8 dwords 100 001 7 dwords 101 010 6 dwords 110 011 5 dwords 111 DRAM read re-ordering enable: 0b 0b All 0’s 0220h 000b FIFO depth 4 dwords 3 dwords 2 dwords 1 dword 0b 0= Disable 1= Enable. When this bit is set and when there’s pending DRAM write cycle, a DRAM read operation will be performed before a DRAM write operation. 4 5 7:6 11:8 Reserved CPU&EM_DRAM_ARBITRATION Reserved RD2WR_LAT<3:0> CPU/External Master DRAM Arbitration Priority Scheme: Bits5 Function 0 = CPU has NO Write Buffer access while Ext. Master is accessing DRAM 1 = CPU has Write Buffer access while Ext. Master is writing to DRAM Read to write pending latency<3:0>: These bits indicate the number of clocks to delay before switching from a read cycle back to pending cycles in the write buffer.. Bits<3:0> 0H 1H 2H 3H 4H 5H 6H 7H 13:12 15:14 Reserved WR_LATENCY<1:0> ZFx86 Data Book 1.0 Rev D # of CPUCLKs reserved 1 2 3 4 5 6 7 Bits<3:0> 8H 9H AH BH CH DH EH FH 1b 00b 2h # of CPUCLKs 8 9 10 11 12 13 14 15 DRAM write latency<1:0>: These bits indicate the number of processor clocks write are stalled before being issued to DRAM controller. Bits<1:0> number of clocks Bits<1:0> number of clocks 00 01 1 2 10 11 3 4 00b 00b Page 609 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 11BH Name 0 PCIC CPU2PCI_BURST_EN 1 PCIM2DRM_BRST_EN 2 BM_BURSTRD_ALWYS Function Value PCI Control Register CPU to PCI burst enable: When 0, Lambda will only do single PCI transfer when CPU is accessing PCI bus. When 1, Lambda will try to burst to PCI when CPU is master. PCI master to DRAM burst enable: When 0, Lambda will only do single DRAM transfer when PCI master is accessing DRAM. When 1, Lambda will try to do a burst to DRAM when PCI master is accessing. PCI master read prefetch always: When 0, only PCI read line or PCI read multiple will start a burst read request. For PCI single read, a burst read request will be initiated only after the first data phase is completed and PCI master indicated that it wants a burst access. 0217h 1b 1b 1b When 1, any PCI read cycle will initiate a burst read request. 3 DISC_ON_LN_BOUNDARY 4 EN_PCI_FAST_DECDE 5 EN_ADCBE_FLT_IDLE 6 DIS_RESOURCE_LOCK Note: In order to enable this feature, bit[1] must be enabled. Disconnect from PCI master on CACHE line boundary: 0= No disconnect 1= Disconnect. Enable PCI fast decode when accessing DRAM: 0= Disable 1= Enable. Enable AD/CBE/PAR float when PCI is idle and CPU is the bus master: 0= Disable float 1= Enable float. Disable Resource Lock: 0b 1b 0b 0b 0= Enable 1= Disable. If set, a LOCK cycle on the PCI bus will not cause LNB to lock itself. 7 EN_BUS_LOCK Note: When EN_BUS_LOCK(bit 7) is set to 1, this bit is ignored. Enable Bus Lock: 0b 0= Disable 1= Enable. When enabled, GNT# to a particular PCI master remains asserted until LOCK# is deasserted. Note: When this bit is set to 1, DIS_RESOURCE_LOCK(BIT 6) is ignored. ZFx86 Data Book 1.0 Rev D Page 610 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 8 Name LCK_RDBURST_EN Function Value Enable the locking of PCI bus during a 64-bit processor read access to the PCI bus. 0b 0= 1= 9 10 CNFCY_AD_STEP_DIS BM_DONE_DIS Disable Enable. Note: Bit not used as CPU cannot do a burst read on PCI. Refer to issue 14 in the Issues section. PCI configuration cycle address stepping disable: 0= Enable, 1= Disable. Disable the waiting of PCI master cycle is done before starting processor initiated PCI cycle. 1b 0b 0= Enable 1= Disable. When enabled, Lambda’s PCI master controller will not start until, 1) PCI master initiated cycle is done, 2) PCI master write buffer is empty, and 3) PCI master read prefetch is done. 11 12 15:12 11CH 2:0 5:3 Reserved Reserved Reserved CSA Reserved SDRAMCLK_SKEW Clock Skew Adjust Register There three bits control the skew between the core clock and the SDRAM clock. 000 = 001 = 010 = 100 = 101 = Rest = 15:6 11DH 0 1 0b 0b All 0’s 0000h 000b 000b Nominal Minus 1 nS Minus 2 nS Plus 1 nS Plus 2 nS Default to Nominal Reserved SNOOPCTRL DIS_SNOOP BUS MASTER And Snooping Control Register Disable Snooping: DIS_CHK_HITM 0= Enable snoop 1= Disable snoop. Disable the check of HITM#: 0b 0= 3:2 CK_HITM_WS<1:0> Enable the checking of HITM# during snooping. 1= Disable the checking of HITM# during snooping. In either case, the L1 cache may be invalidated with INVAL signal Check HITM# wait state: All 0’s 23D0h 0b 00b Bits<1:0> Check HITM# wait state 00 2 clock after EADS# is deasserted. Others – Reserved ZFx86 Data Book 1.0 Rev D Page 611 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 4 Name ADP_PREF_DIS Function Adaptive Prefetch Disable: Value 1b 0= Enable 1= Disable When enabled, Lambda monitors the average burst transfer length of a master access and then controls the number of speculative prefetches accordingly. 5 6 Reserved DIS_WB_MERGE 7 DIS_EM_PREFETCH 8 DIS_CONCURRENCY 9 FAST_TRDY 10 DIS_BUS_SNARF 11 FORCE_DRM_PM_PCIM 0= Merge CPU/L2 Write-back data with External Master writes. The External Master’s valid bytes overwrite the data castout from the CPU/L2 and subsequently limit the bandwidth requirements to the s/dram. 1= Do not merge External Master write data bytes with CPU/L2 write-back cycle. 0= Prefetch next “cache” line on EM accesses, and store in prefetch buffer 1= Disable prefetch logic for External Masters (CPU clock based) CPU/PCI master concurrency disable: 0= 1= 0= 1= Enable Disable Normal TRDY# timings Enable Fast TRDY# timings to EM. Improves path from prefetch data ready (from CPU write-back, yes we snarf-see bit 10, or from DRAM) 0= Snarf CPU write-back data and return it to the requesting External Master (read), concurrent with it’s retirement into DRAM. 1= Disable bus snarfing and create 2nd cycle to get data after the write-back has retired it to DRAM. Force DRAM page miss in bus master cycle: 0= 1= 12 13 Reserved DISPCIM_ELY_DRM_CY 14 15 Reserved ENPCIM_SHADOWRAM 1= 0= 1b 1b 1b 0b 0b Disable force page miss mode Enable force page miss mode. Speculatively start DRAM cycle for PCI External Master Request and restart it in the event of an L1 or L2 writeback: 0= 1= 0b 1b 0b 1b Enable Disable. Claim cycle for PCI Master access to 000C0000-000F0000 region. Do not Claim cycle for PCI Master access to ROM space (shadowed RAM). 0b 0b Note: All DRAM Write/Read protect bits are still applicable ZFx86 Data Book 1.0 Rev D Page 612 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 11EH Name ARBCTRL 0 REQa_slot0 1 REQa_slot1 2 REQb_slot2 3 REQa_slot3 4 REQpci_slot4 5 PC98_support 6 SIO_HIPRI 7 15:8 11FH 0 Reserved CPU_BUSY_TIMER DOCKC TS_DOCK_SIGS Function Value Arbiter Control Register See also PCI register section REG 41H 0= Disable Slot 0 for REQa 1= Enable Slot 0 for REQa 0= Disable Slot 1 for REQa 1= Enable Slot 1 for REQa 0= Disable Slot 2 for REQb 1= Enable Slot 2 for REQb 0= Disable Slot 3 for REQa 1= Enable Slot 3 for REQa 0= Disable Slot 1 for 2nd Arbitration of PCI 1= Enable Slot 1 for 2nd Arbitration of PCI 0= V4REQ#/V4GNT# pair treated as such. 1= The V4REQ#/V4GNT# pair is treated as PHOLD#/PHLDA# 0= Fair Arbitration between V3 & V4 REQ# pins 1= Always give priority to V3 REQ# 0000h Number of PCI clocks that the CPU can own the PCI bus before it is preempted by any other active requesters. 00h = Never preempt the CPU 01h = 4 clks 02h = 8 clks ...FFh = 1024 clks Docking Control Register Tri-state DOCK_PCIRST# and DOCK_PCICLK in normal operating mode. 0= 1= 1 2 Reserved DOCK_RST_DASSERT 0b 0b 0b 0b 0b 0b 0b 0b 00h 0000h 0b drive out DOCK_PCIRST# and DOCK_PCICLK. tri-state DOCK_PCIRST# and DOCK_PCICLK. Deassert DOCK_PCIRST#: 0= 1= 3 DOCK_CLK_EN assert DOCK_PCIRST# in a low state. DOCK_PCIRST# will follow the state of PCIRST#. Enable DOCK_PCICLK to toggle: 0b 0b 0= 1= 4 force DOCK_PCICLK low. Enable DOCK_PCICLK to follow the state of PCICLK. DISBSERCK_DOCK_HOLD_ACK Disable the checking of the bser bit ‘DOCK_HOLD_ACK’ 0b 0= 1= 14:5 Reserved ZFx86 Data Book 1.0 Rev D 0b Enable checking Disable. All 0’s Page 613 11 Table 12.1 Reset, Sampling, and Misc North Bridge Registers (cont.) Register/ Bit 15 120H 2:0 Name DOCKED PCIWFIFOC FIFOD[2:0] Function Value System DOCKed indication: This bit is used when the PCI floating method is used. This bit is set to 1 by SMI handler when the system is docked. This bit will be reset to 0 when it’s previously set to 1 and DOCK_REQ# is deasserted to indicate the completion of the un-dock procedure. PCI Write FIFO Control Register PCI Write FIFO depth. This FIFO is for CPU-PCI write transfers. 0b Bits<2:0> 000 001 010 011 3 4 5 Reserved Reserved PCI_BM_FREERUNMODE 6 PCI_BM_SLOWRUNMODE Reserved Reserved Reserved ZFx86 Data Book 1.0 Rev D Bits<2:0> 100 101 110 111 FIFO depth 8 dwords 6 dwords 4 dwords 2 dword PCI master write buffer PCI entry count free running mode bit. Transfer loop which copies CPU clocked write buffer entry count to PCI clocked entry count normally operates in an on-demand mode. This forces a free running mode which update the PCI every 6 or 8 CPU clocks (see slow transfer bit below). PCI master write buffer PCI entry count slow transfer mode. Increases transfer loop period from 6 CPU clocks to 8 CPU clocks. Transfer loop period is how often the PCI side entry count is updated from the CPU entry count. 0= 1= 8:7 11:9 15:12 FIFO depth 16 dwords 14 dwords 12 dwords 10 dwords 0000h 000b 0b 0b 0b 0b 6 CPU clocks. 8 CPU clocks. 00b All 0’s 0000b Page 614 11 11.1.2. DRAM Registers Table 12.2 DRAM Registers Register/ Bit 200H Name 0 SHADRC LMEMRDEN0 1 LMEMRDEN1 2 LMEMRDEN2 3 LMEMRDEN3 4 LMEMRDEN4 5 MEMRDEN5 6 LMEMRDEN6 7 LMEMRDEN7 8 LMEMRDEN8 9 LMEMRDEN9 10 LMEMRDEN10 11 LMEMRDEN11 12 LMEMRDEN12 13 LMEMRDEN13 14 LMEMRDEN14 15 LMEMRDEN15 0 SHADWC LMEMWREN0 1 LMEMWREN1 2 LMEMWREN2 3 LMEMWREN3 4 LMEMWREN4 201H ZFx86 Data Book 1.0 Rev D Function Shadow RAM Read Enable Control Register Local memory C0000h-C3FFFh read enable: 0 = Disable, 1 = Enable. Local memory C4000h-C7FFFh read enable: 0 = Disable, 1 = Enable. Local memory C8000h-CBFFFh read enable: 0 = Disable, 1 = Enable. Local memory CC000h-CFFFFh read enable: 0 = Disable, 1 = Enable. Local memory D0000h-D3FFFh read enable: 0 = Disable, 1 = Enable. Local memory D4000h-D7FFFh read enable: 0 = Disable, 1 = Enable. Local memory D8000h-DBFFFh read enable: 0 = Disable, 1 = Enable Local memory DC000h-DFFFFh read enable: 0 = Disable, 1 = Enable. Local memory E0000h-E3FFFh read enable: 0 = Disable, 1 = Enable. Local memory E4000h-E7FFFh read enable: 0 = Disable, 1 = Enable. Local memory E8000h-EBFFFh read enable: 0 = Disable, 1 = Enable. Local memory EC000h-EFFFFh read enable: 0 = Disable, 1 = Enable Local memory F0000h-F3FFFh read enable: 0 = Disable, 1 = Enable. Local memory F4000h-F7FFFh read enable: 0 = Disable, 1 = Enable. Local memory F8000h-FBFFFh read enable: 0 = Disable, 1 = Enable. Local memory FC000h-FFFFFh read enable: 0 = Disable, 1 = Enable. Shadow RAM Write Enable Control Register Local memory C0000h-C3FFFh write enable: 0 = Disable, 1 = Enable. Local memory C4000h-C7FFFh write enable: 0 = Disable, 1 = Enable. Local memory C8000h-CBFFFh write enable: 0 = Disable, 1 = Enable. Local memory CC000h-CFFFFh write enable: 0 = Disable, 1 = Enable. Local memory D0000h-D3FFFh write enable: 0 = Disable, 1 = Enable. Value 0FF03h 1b 1b 0b 0b 0b 0b 0b 0b 1b 1b 1b 1b 1b 1b 1b 1b 0000h 0b 0b 0b 0b 0b Page 615 11 Table 12.2 DRAM Registers (cont.) Register/ Bit Name 5 LMEMWREN5 6 LMEMWREN6 7 LMEMWREN7 8 LMEMWREN8 9 LMEMWREN9 10 LMEMWREN10 11 LMEMWREN11 12 LMEMWREN12 13 LMEMWREN13 14 LMEMWREN14 15 LMEMWREN15 202H 7:0 8 11:9 N_B0C B0A<27:20> Reserved B0S<2:0> Function Local memory D4000h-D7FFFh write enable: 0 = Disable, 1 = Enable. Local memory D8000h-DBFFFh write enable: 0 = Disable, 1 = Enable. Local memory DC000h-DFFFFh write enable: 0 = Disable, 1 = Enable. Local memory E0000h-E3FFFh write enable: 0 = Disable, 1 = Enable. Local memory E4000h-E7FFFh write enable: 0 = Disable, 1 = Enable. Local memory E8000h-EBFFFh write enable: 0 = Disable, 1 = Enable. Local memory EC000h-EFFFFh write enable: 0 = Disable, 1 = Enable. Local memory F0000h-F3FFFh write enable: 0 = Disable, 1 = Enable. Local memory F4000h-F7FFFh write enable: 0 = Disable, 1 = Enable. Local memory F8000h-FBFFFh write enable: 0 = Disable, 1 = Enable. Local memory FC000h-FFFFFh write enable: 0 = Disable, 1 = Enable. Bank 0 Control Register Bank 0 starting address <27:20> Bank 0 DRAM size Bits<2:0> 14:12 15 204H 1:0 3:2 COLADR0<2:0> Value DRAM bank size Bits<2:0> 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0b 0000h 00h 0b 000b DRAM bank size 000 2MB 100 32MB 001 4MB 101 64MB 010 8MB 110 Reserved 011 16MB 111 Reserved Number of column address bits for Bank 0<2:0> Bits<2:0> Column address Bits<2:0> 000 0101 8 bits 0 bits 001 9 bits all others Reserved 000b Column address Reserved N_B0TC B0_TRP Bank 0Timing Control Register SDRAM Pre-charge cmd to ACT cmd B0_TRC Bits<1:0> Time Bits<1:0> Time 00 Reserved 10 3T 01 2T 11 4T SDRAM ACT cmd to ACT cmd (same bank) 0b 0FC71h 01b 00b Bits<3:2> Addr. hold time Bits<3:2> Addr. hold time 00 6T 10 8T 01 7T 11 9T This field is actually not used by the hardware. TRC is fixed to 9T. ZFx86 Data Book 1.0 Rev D Page 616 11 Table 12.2 DRAM Registers (cont.) Register/ Bit 6:4 7 8 9 15:10 205H 7:0 8 11:9 Name Reserved B0_CAS_LATCY B0_TRCD B0_TCCD Reserved N_B1C B1A<27:20> Reserved B1S<2:0> Function SDRAM CAS Latency: 0 = 2T, 1 = 3T Should be same as what is programmed in SDRAM via SDRAMMPR. SDRAM ACT cmd to R/W cmd delay: 0 = 2T, 1 = 3T SDRAM R/W cmd to R/W cmd: 0 = 1T, 1 = 2T Bank 1 Control Register Bank 1 starting address <27:20> Bank 21DRAM size Bits<2:0> 14:12 15 207H 1:0 3:2 COLADR1<2:0> Value DRAM bank size Bits<2:0> 111b 0b 0b 0b All ‘1’s 0000h 00h 0b 000b DRAM bank size 000 2MB 100 32MB 001 4MB 101 64MB 010 8MB 110 Reserved 011 16MB 111 Reserved Number of column address bits for Bank 2<2:0> Bits<2:0> Column address Bits<2:0> 000 010 8 bits 10 bits 001 9 bits all others Reserved 000b Column address Reserved N_B1TC B1_TRP Bank 1 Timing Control Register SDRAM Pre-charge cmd to ACT cmd B1_TRC Bits<1:0> Time Bits<1:0> Time 00 Reserved 10 3T 01 2T 11 4T SDRAM ACT cmd to ACT cmd (same bank) 0b 0FC71h 01b 00b Bits<3:2> Addr. hold time Bits<3:2> Addr. hold time 00 6T 10 8T 01 7T 11 9T This field is actually not used by the hardware. TRC is fixed to 9T. 6:4 7 Reserved B1_CAS_LATCY 8 B1_TRCD 9 B1_TCCD 15:10 208H 7:0 8 Reserved N_B2C B2A<27:20> Reserved ZFx86 Data Book 1.0 Rev D SDRAM CAS Latency: 0 = 2T, 1 = 3T Should be same as what is programmed in SDRAM via SDRAMMPR. SDRAM ACT cmd to R/W cmd delay: 0 = 2T 1 = 3T SDRAM R/W cmd to R/W cmd: 0 = 1T 1 = 2T Bank 2 Control Register Bank 2 starting address <27:20> 111b 0b 0b 0b All ‘1’s 1800h 00h 0b Page 617 11 Table 12.2 DRAM Registers (cont.) Register/ Bit 11:9 Name B2S<2:0> Function Bank 2 DRAM size Bits<2:0> 14:12 15 20AH 1:0 3:2 COLADR2<2:0> Value DRAM bank size 100b Bits<2:0> DRAM bank size 000 2MB 100 32MB 001 4MB 101 64MB 010 8MB 110 Reserved 011 16MB 111 Reserved Number of column address bits for Bank 4<2:0> Bits<2:0> Column address Bits<2:0> 000 010 8 bits 10 bits 001 9 bits all others Reserved 001b Column address Reserved N_B2TC B2_TRP 0 0FC71h 01b Bank 2 Timing Control Register SDRAM Pre-charge cmd to ACT cmd B2_TRC Bits<1:0> Time Bits<1:0> Time 00 Reserved 10 3T 01 2T 11 4T SDRAM ACT cmd to ACT cmd (same bank) 00b Bits<3:2> Addr. hold time Bits<3:2> Addr. hold time 00 6T 10 8T 01 7T 11 9T This field is actually not used by the hardware. TRC is fixed to 9T. 6:4 7 8 9 Reserved B2_CAS_LATCY B2_TRCD SDRAM CAS Latency: 0 = 2T, 1 = 3T Should be same as what is programmed in SDRAM via SDRAMMPR. SDRAM ACT cmd to R/W cmd delay: B2_TCCD 0 = 2T 1 = 3T SDRAM R/W cmd to R/W cmd: 111b 0b 0b 0b 0 = 1T 1 = 2T 15:10 20BH 7:0 8 11:9 Reserved N_B3C B3A<27:20> Reserved B3S<2:0> Bank 3 DRAM size Bits<2:0> 14:12 15 COLADR3<2:0> Reserved ZFx86 Data Book 1.0 Rev D All ‘1’s 1820h 20h 0b 100b Bank 3 Control Register Bank 3 starting address <27:20> DRAM bank size Bits<2:0> DRAM bank size 000 2MB 100 32MB 00 14MB 101 64MB 010 8MB 110 Reserved 01 116MB 111 Reserved Number of column address bits for Bank 6<2:0> Bits<2:0> Column address Bits<2:0> 000 010 8 bits 10 bits 001 9 bits all others Reserved 001b Column address 0b Page 618 11 Table 12.2 DRAM Registers (cont.) Register/ Bit 20DH 1:0 3:2 Name Function B_B3TC B3_TRP Bank 3 Timing Control Register SDRAM Pre-charge cmd to ACT cmd B3_TRC Bits<1:0> Time Bits<1:0> Time 00 Reserved 10 3T 01 2T 11 4T SDRAM ACT cmd to ACT cmd (same bank) Value 0FC71h 01b 00b Bits<3:2> Addr. hold time Bits<3:2> Addr. hold time 00 6T 10 8T 01 7T 11 9T This field is actually not used by the hardware. TRC is fixed to 9T. 6:4 7 8 9 15:10 20EH 2:0 5:3 Reserved B3_CAS_LATCY SDRAM CAS Latency: B3_TRCD 0= 2T 1= 3T Should be same as what is programmed in SDRAM via SDRAMMPR. SDRAM ACT cmd to R/W cmd delay: B3_TCCD Reserved DCONF1 Reserved DRAM_INAT_TO 0= 2T 1= 3T SDRAM R/W cmd to R/W cmd: 0 = 1T, 1 = 2T DRAM Configuration Register 1 DRAM inactive time-out<2:0> 111b 0b 0b 0b All ‘1’s 0000h 000b 000b Bits<2:0> Page size Bits<2:0> Page size 000 never 100 512T 00 18T 101 reserved 010 32T 110 reserved 011 128T 111 immediate If SDRAM interface is inactive for the set amount of time, a Pre-charge cycle is generated at the end of timeout. Pre-charge cycle would de-activate the DRAM row which may be in “ACTIVE” state. Doing a Pre-charge cycle when SDRAM is in-active for a while will save power. But next memory cycle may be to the row which was just closed, will take a hit of running a RAS cycle causing lower performance. 7:6 8 9 10 Reserved Reserved Reserved. Reserved. ZFx86 Data Book 1.0 Rev D Fixed to ‘0’ in hardware. 00b 0b 0b 0b Page 619 11 Table 12.2 DRAM Registers (cont.) Register/ Bit 11 Name SDRAM_CMD_PIPELINE Function SDRAM command pipeline enable: 0b 0= 12 13 EN_RELAX_SDRM_CMD_T MING EN_SDRM_PWRDN Disable the pipelining of SDRAM command cycle. 1= Enable the pipelining of SDRAM command cycle. If enabled this bit would allow a new command to be sampled from the Writebuffer as son as the present cycle has been started. Since 486 does not pipeline cycles, there may not be much difference in cycle times whether this bit is a 1 or 0. Enable relax timing for SDRAM command cycle. Value 0b 0= 1= Ddisable Enable relax timing to the SDRAM command cycle. =1 MA, RAS, CAS and WE are asserted 1 clk before CS is asserted. Note: setting this bit to 1 will not affect performance but at the same time, allow the potential of not buffering MA, SDRAM_RAS, SDRAM_CAS, and WE# externally. Enable SDRAM power-down mode during mix DRAM type configuration: 0= 1= 14 FST_SDRM_RD_L2_EN 15 0 Reserved DCONF2 BANK0_16EN 1 BANK1_16EN 2 BANK2_16EN 3 BANK3_16EN 4 5 6 7 8 Reserved Reserved Reserved Reserved BANK0_32EN 20FH ZFx86 Data Book 1.0 Rev D Disable Enable SDRAM to get into power-down mode during mix DRAM type configuration and when access is to anywhere other than SDRAM. FW should always set this bit to ‘0’ Enable fast SDRAM read access when L2 is on: 0= Disable 1= Enable. FW should always set this bit to ‘0’ 0b DRAM Configuration Register 2 Bank 0 enable: 0 = Disable, 1 = Enable. When enabled, bank 0 will operate as a 16bit bank. Bank 1 enable: 0 = Disable, 1 = Enable. When enabled, bank 1 will operate as a 16bit bank. Bank 2 enable: 0 = Disable, 1 = Enable. When enabled, bank 2 will operate as a 16 bit bank. Bank 3 enable: 0 = Disable, 1 = Enable. When enabled, bank 3 will operate as a 32 bit bank. 0 = Bank 0 disabled (bit0 overides this) 1 = Bank 1 enabled as 32 bit bank (this bit overides bit 0) 0b 0b 0C00h 0b 0b 0b 0b 0b 0b 0b 0b 0b Page 620 11 Table 12.2 DRAM Registers (cont.) Register/ Bit Name 9 BANK1_32EN 10 BANK2_32EN 11 BANK3_32EN 15:12 211H 0 2:1 4:3 7:5 Reserved DRFSHC Reserved Reserved Reserved REFRPRD<2:0> Function Value 0 = Bank 0 disabled (bit1 overides this) 1 = Bank 1 enabled as 32 bit bank (this bit overides bit 1) 0 = Bank 0 disabled (bit2 overides this) 1 = Bank 1 enabled as 32 bit bank (this bit overides bit 2) 0 = Bank 0 disabled (bit3 overides this) 1 = Bank 1 enabled as 32 bit bank (this bit overides bit 3) 0b DRAM Refresh Control Register Refresh period: These bits determine the refresh period for local DRAM. Bits<2:0> 000 010 011 9:8 10 11 13:12 15:14 213H 0 2:1 4:3 Reserved Reserved MANUAL_REFRESH Refresh period 15us 15us 30us 1b 0h 0000h 0b 00b 00b 000b Bits<2:0> Refresh period 001 15us all others stopped Manual refresh control: A 1-> 0->1 will generate a refresh cycle after 128 process clocks. Also, this bit will force normal refresh disabled while left at the 1 setting. Reserved Reserved SDRAMMPR EN_SDRAM_CONFIG SDRAM Mode Program Register Enable SDRAM MRS configuration cycle: 0 = Disable, 1 = Enable. SDRAM_BANK_CONFIG[1:0 SDRAM bank configuration select<1:0>: ] SDRAM bank configuration select <1:0> programming options as follows: POWERON_SEQ[1:0] 1b Bits<1:0> DRAM bank 00 Bank 0 01 Bank 1 10 Bank 2 11 Bank 3 SDRAM Power-on initialization sequence bits<1:0> 00b 0b 0b 00b 00b 0226h 0b 11b 00b Bits<1:0> Function 00 Normal 01 Pre-charge SDRAM bank specified by BANK_CONFIG[1:0] 10 Trigger Mode Program Register Command 11 Trigger CBR refresh cycle ZFx86 Data Book 1.0 Rev D Page 621 11 Table 12.2 DRAM Registers (cont.) Register/ Bit 15:5 Name WCBR_MA[11:1] Function MA[0] comes from the SDRAMMPEX register as it is needed to handle 16 bit banks to do 8 burst cycles [2:0] [3] [6:4] 214H 0 15:1 218H 239H 2:0 SDRAMMPREX WCBR_MA[0] Reserved Reserved SDRAMSLEW MD_DQM_SLEW 5:3 MA_SLEW 8:6 RAS_CAS_SLEW 11:9 14:12 15 WE_SLEW CS_SLEW DATA_BUS_HOLD ZFx86 Data Book 1.0 Rev D Value 11h set to ‘010’ corresponding to burst length of 4 for 32 bit banks set to ‘011’ corresponding to burst length of 8 for 16 bit banks always set to 0 = linear burst type (Fixed in hardware) 010=CAS Latency=2, 011=CAS Latency=3, Others Reserved [11:7]Always leave at ‘00000’ Note: MA[13:12] will be forced to 0 always during SDRAM configuration cycle SDRAM Mode Program Register SDRAM Mode Register bit 0 used together with bits 11:1 defined earlier. 0000h 0b 0h SDRAM Slew Control Register 32 Bit Data and 4 Bit Mask Bus: MD[31:0], DQM[3:0] 000 = Force Tri-State 001 = 2*N-ch + 4*P-ch 010 = 3*N-ch + 6*P-ch 011 = 5*N-ch + 10*P-ch 100 = 4*N-ch + 8*P-ch 101 = 6*N-ch + 12*P-ch 110 = 7*N-ch + 14*P-ch 111 = 8*N-ch + 16*P-ch 14 Bit Address Bus: BA[1:0], MA[11:0] Encoding same as for 2:0 bits RAS and CAS Controls: RASnn and CASnn Encoding same as for 2:0 bits Write Enable: Wenn Encoding same as for 2:0 bits 4 Chip Select: Csnn[3:0] Encoding same as for 2:0 bits Data Bus Holder enabled when LOW 1249h 001b 001b 001b 001b 001b 0b Page 622 11 11.1.3. Power Management Registers Table 12.3 Power Management Registers Register/ Bit 300H 15:0 3FFH 0 Name CC Reserved CC2 EN_STOP_CPU_CLK 1 EN_SDRAM_CKE_RST 2 EN_STOP_SDRAM_CLK 3 EN_STOP_CORE_CLK 15:4 Reserved ZFx86 Data Book 1.0 Rev D Function Value Clock Control Register 0000h Clock Control2 Register Enables stopping of CPU clock during Suspend mode. Stopping the clock conserve much more power than mere putting CPU in Suspend mode. This bit is provided to let the BIOS decide to do that or not. For this bit to function bit1 should also be set. Enables resetting of SDRAM CKE input during Suspend mode. Enables stopping of SDRAM CLK during Suspend mode. This different from SDRAMCLK disable bit in CSA, which disables the clock always. Whereas this bit is used only during Suspend mode. For this bit to function bit1 should also be set. Enable stopping of core clock during Suspend mode. When set to ‘1’, it will stop clocks to most of the cores except clocks needed to detect end of suspend mode. For this bit to function bit1 should also be set. 0000h 0b 0b 0b 0b All "0"s Page 623 11 11.1.4. PCI Configuration Registers Table 12.4 PCI Configuration Registers Register/ Bit 00H 15:0 02h 31:16 04H 0 1 Name VID VENDOR_ID DID DEVICE_ID COMMD Reserved MEM_RESPOND Function Vendor ID Register Vendor ID number. These bits are hard-wired. Device ID Register Device ID number. These bits are hard-wired. Command Register Memory space enable: Value 100Bh 100BH 0023h 0023H 0006h 0 1b When 0, PCI master access to main memory is disabled. When 1, PCI master access to main memory is enabled. 5:2 6 Reserved PARERR_REP Parity Error Respond: 0001b 0b When 1, Lambda will assert PERR# when a PCI parity error is detected. When 0, Lambda will not assert PERR# when a PCI parity error is detected. 8:7 15:9 22:16 23 Reserved Reserved STAT Reserved FAST_B2B_STAT 24 DATA_PAR_DET 06H 26:25 DEVSEL_TIM Status Register Fast Back-to-Back status – This bit is when EN_PCI_FAST_DCD bit in the PCIC register is set. This bit indicates that LNB as a target can accept fast back-to-back cycles from another master. Data Parity Detected: This bit will be set when operating as a bus master and either the PERR# output is driven low by Lambda or the target asserts PERR# and bit 6 of the Device Control Register is set. This bit can be reset by writing a 1. DEVSEL Timing: These bits indicate the slowest time that LNB will return DEVSEL#. 00b 0h 2280h All ‘0’s 1b 0b 01b 00 = fast, 01 = medium 10 = slow 11 = reserved. These bits are hard-wired to 01 27 28 Reserved REC_TAG_ABRT 29 REC_MST_ABRT 30 31 Reserved DET_PAR_ERR ZFx86 Data Book 1.0 Rev D Receive Target Abort: Reading a 1 indicates receiving a target abort condition. This bit can be reset by writing a 1. Receive Master Abort: Reading a 1 indicates receiving a master abort condition(not including master abort generated from a special cycle). This bit can be reset by writing a 1. Detect parity error: When Lambda detect a PCI parity error, this bit will be set to 1. This bit can be reset by writing a 1. 0b 0b 1b 0b 0b Page 624 11 Table 12.4 PCI Configuration Registers (cont.) Register/ Bit 08H Name 15:8 RID REVISION_ID CLASS CLASS_CODE LTMR LAT_TIM 2:0 ARB_ROUTE REQa_MAP 7:0 09h 31:8 0DH 40H 3 6:4 7 10:8 11 14:12 15 REQa_PREEMPT REQb_MAP REQb_PREEMPT REQc_MAP REQc_PREEMPT REQd_MAP REQd_PREEMPT 18:16 19 22:20 Reserved Reserved V3_REQ_MAP 23 V3_PREEMPT 26:24 27 28 Reserved Reserved MASKALLREQ 31:29 Reserved ZFx86 Data Book 1.0 Rev D Function Revision ID Register Revision ID number. These bits are hard wired. Class Register Class Code. These bits are hard-wired. Latency Timer Register Latency Timer: Maximum Number of PCI clocks for Lambda initiated Burst cycles. PCI Arbiter Routing Register 000 = REQ0#/GNT0# 001 = REQ1#/GNT1# 010 = REQ2#/GNT2# 011 = REQ3#/GNT3# 0= REQa is non-preemtable 1= REQa is pre-emptable 000 = REQ1#/GNT1# 001 = REQ2#/GNT2# 010 = REQ3#/GNT3# 101 = REQ0#/GNT0# 0= REQc is non-preemtable 1= REQb is preemptable 000 = REQ2#/GNT2# 001 = REQ3#/GNT3# 100 = REQ0#/GNT0# 101 = REQ1#/GNT1# 0= REQc is non-preemtable 1= REQc is preemptable 000 = REQ3#/GNT3# 011 = REQ0#/GNT0# 100 = REQ1#/GNT1# 101 = REQ2#/GNT2# 0= REQd is non-preemtable 1= REQd is preemptable 000 = 001 = 010 = 011 = 100 = 0= 1= 1= 0= SB_REQ#/SB_GNT# REQ0#/GNT0# REQ1#/GNT1# REQ2#/GNT2# REQ3#/GNT3# V3 REQ# is non-preemptable V3 REQ is preemptable mask all REQ’s (for dram initialization) unmask all REQ’s Value 00h 00h 060000h 060000h 0000h 00h 0000h 000b 0b 000b 0b 000b 0b 000b 0b 000b 0b 000b 0b 000b 0b 0b 000b Page 625 11 11.2. South Bridge 11.2.1. Floppy Disk Controller (SIO LDN 00h) Table 12.5 Floppy Disk Controller Registers Register/ Bit 30H 60H 61H 7Hh 71H Name Function Value LDN activate Bit 0: 01h LDN Base addr MSB LDN Base addr LSB LDN IRQ LDN IRQ type select 1= device enabled 0= device disabled Bits 7-3 (for A15-11) are read only, 00000b. Bits 2 and 0 (for A2 and A0) are read only, 00b. Interrupt Number R/W Bit 1 is read/write; other bits are read only. Indicates the type and level of the interrupt request number selected in the previous register. 03h F0h 06h 03h Bit 0 – 74H LDN DMA Select 0 Type of interrupt request selected in previous register 0 = Edge 1 = Level Bit 1 – Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 02h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 75H LDN DMA Select 1 The values 5-7 are reserved. Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. F0H 0 2:1 LDN Config TRI-STATE Control Reserved ZFx86 Data Book 1.0 Rev D The values 5-7 are reserved. FDC Configuration register R/W When enabled and the device is inactive, the logical device output pins are in TRI-STATE. 0 = Disabled (Default) 1 = Enabled Reset value of bit 2 is 1. 24h 0b 10b Page 626 11 Table 12.5 Floppy Disk Controller Registers (cont.) Register/ Bit 3 Name Write Protect 4 5 Reserved DENSEL Polarity Control 6 TDR Register Mode 7 Four Drive Control F1H 1:0 LDN Drive ID Drive 0 ID 3:2 Drive 1 ID 7:4 Reserved Function This bit allows forcing of write protect by software. When set, write to the floppy disk drive is disabled. This effect is identical to WP when it is active. 0 = Write protected according to WP signal (Default) 1 = Write protected regardless of value of WP signal Must be 0 0 = Active low for 500 Kbps or 1 Mbps data rates 1 = Active high for 500 Kbps or 1 Mbps data rates (Default) 0 = PC-AT compatible drive mode; i.e., bits 7-2 of the TDR are ignored (Default) 1 = Enhanced drive mode 0 = Two floppy drives directly controlled by DR1-0 and MTR1-0 (Default) 1 = Four floppy drives controlled with the aid of external logic (One floppy only present in ZFx86) Drive ID register When drive 0 is accessed, these bits are reflected on bits 5-4 of the TDR register, respectively. When drive 1 is accessed, these bits are reflected on bits 5-4 of the TDR register, respectively. Value 0b 0b 1b 0b 0b 00h 00b 00b 0000b 12.2.1.1. Floppy Disk Controller Bitmap Summary Table 12.6 Floppy Disk Controller Bitmap Summary Register/ Bit 00H1 Name SRA 0 1 2 3 4 5 6 7 01H1 SRB 0 1 2 3 4 5 7:6 ZFx86 Data Book 1.0 Rev D Function Status A Head Direction WP# INDEX# Head Select TRK0# Step Reserved IRQ pending Status B MTR0# Reserved WGATE# RDATA# WDATA# Drive Select 0 status Reserved Value 0FFh 1b 1b 1b 1b 1b 1b 1b 1b 0FFh 1b 1b 1b 1b 1b 1b 10b Page 627 11 Table 12.6 Floppy Disk Controller Bitmap Summary (cont.) Register/ Bit 02H Name DOR 1:0 2 3 4 7:5 03H TDR 1:0 3:22 5:42 7:6 04H MSR 0 1 2 3 4 5 6 7 05H FIFO 7:0 06H DIR 6:0 7 07H DIR 6:0 7 Function Digital Output Drive select Reset controller DMAEN Motor Enable 0 Reserved Tape Drive Tape Drive select 1,0 Logical Drive exchange Drive ID information Reserved Main Status Drive 0 busy Drive 1 busy Drive 2 busy Drive 3 busy Command in progress Non-DMA execution Data I/O direction RQM Data (FIFO) Data bits Digital Input Reserved DSKCHG# Digital Input Reserved DSKCHG# Value 0Ch 00b 1b 1b 0b 000b 0FCh 00b 11b 11b 11b 80h 0b 0b 0b 0b 0b 0b 0b 1b 02h 2h 7Fh 1111111b 0b 7Fh 1111111b 0b 1. Applicable only in PS/2 Mode 2. Applicable only in Enhanced TDR Mode ZFx86 Data Book 1.0 Rev D Page 628 11 11.2.2. Parallel Port SIO LDN 01 Table 12.7 Parallel Port Registers Register/ Bit 30H Name LDN Activate 60H LDN Base addr MSB 61H LDN Base addr LSB 70H 71H LDN IRQ LDN IRQ Type Select Function Bit 0: 1= device enabled 0= device disabled Bits 7-3 (for A15-11) are read only, 00000b. Bit 2 (for A10) should be 0b. Bits 1 and 0 (A1 and A0) are read only, 00b. For ECP Mode 4 (EPP) or when using the Extended registers, bit 2 (A2) should also be 0b. Interrupt number Indicates the type and level of the interrupt request number selected in the previous register. 00h 03h 78h 00h 02h Bit 0 = 74H LDN DMA Select 0 Type of interrupt request selected in previous register 0 = Edge 1 = Level Bit 1 = Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). Value 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 75H LDN DMA Select 1 The values 5-7 are reserved. Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. The values 5–7 are reserved. ZFx86 Data Book 1.0 Rev D Page 629 11 Table 12.7 Parallel Port Registers (cont.) Register/ Bit 0F0H 0 1 Name Function LDN Config TRI-STATE Control Parallel port configuration register When enabled and the device is inactive, the logical device output pins are in TRI-STATE. Power Mode Control 0= Disabled (Default) 1= Enabled When the logical device is active: 0= 1= 3:2 4 Reserved Extended Register Access 7:5. Reserved Value 0E2h 0b 1b Parallel port clock disabled. ECP modes and EPP time-out are not functional when the logical device is active. Registers are maintained. Parallel port clock enabled. All operation modes are functional when the logical device is active (Default). 0= Registers at base (address) + 403h, base + 404h and base + 405h are not accessible (reads and writes are ignored). 1= Registers at base (address) + 403h, base + 404h and base + 405h are accessible. This option supports run-time configuration within the Parallel Port address space. Must be 111 00b 0b 111b 11.2.3. Serial Port 1 SIO LDN 02 Table 12.8 Serial Port 1 Registers Register/ Bit 30H 60H 61H 70H 71H Name LDN Activate LDN Base addr MSB LDN Base addr LSB LDN IRQ LDN IRQ Type Select Function Bit 0: Bit 1 = ZFx86 Data Book 1.0 Rev D 01h 1= device enabled 0= device disabled Bits 7-3 (for A15-11) are read only, 00000b. Bits 2:0 (for A2:0) are read only, 000b. Interrupt number Indicates the type and level of the interrupt request number selected in the previous register. Bit 0 = Value 02h 0F8h 03h 03h Type of interrupt request selected in previous register 0 = Edge 1 = Level Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Page 630 11 Table 12.8 Serial Port 1 Registers (cont.) Register/ Bit 74H Name LDN DMA Select 0 Function Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). Value 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 75H LDN DMA Select 1 The values 5-7 are reserved. Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 0F0H 0 1 LDN Config TRI-STATE Control Power Mode Control The values 5-7 are reserved. Serial port configuration register This bit controls the TRI-STATE status of the device output pins when it is inactive (disabled). 0= Disabled (Default) 1= Enabled when device inactive When the logical device is active in: 0= 82h 0b 1b Low power mode. Serial Ports 1 and 2 clock disabled. The output signals are set to their default states. The RI input signal can be programmed to generate an interrupt. Registers are maintained. (Unlike Active bit in Index 30 that also prevents access to Serial Ports 1 or 2 registers.) 1= 2 BUSY Normal power mode. Serial Ports 1 and 2 clock enabled. Serial Ports 1 and 2 are functional when the respective logical devices are active (Default). This read only bit can be used by power management software to decide when to powerdown 0b Serial Ports 1 and 2 logical devices. 0 = No transfer in progress (Default). 1 = Transfer in progress. 6:3 7 Reserved Bank select Enables bank switching for Serial Ports 1 and 2. 0000b 1b 0 = Disabled (Default). 1 = Enabled ZFx86 Data Book 1.0 Rev D Page 631 11 11.2.4. Serial Port 2 SIO LDN 03 Table 12.9 Serial Port 2 Registers Register/ Bit 30H Name LDN Activate 60H 61H 70H 71H LDN Base addr MSB LDN Base addr LSB LDN IRQ LDN IRQ Type Select Function Bit 0: Value 00h 1= Device enabled 0= Device disabled Bits 7-3 (for A15-11) are read only, 00000b. Bits 2:0 (for A2:0) are read only, 000b. Interrupt number Indicates the type and level of the interrupt request number selected in the previous register. Bit 0 = 74H LDN DMA Select 0 Type of interrupt request selected in previous register 0 = Edge 1 = Level Bit 1 = Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Indicates selected DMA channel for DMA 0 of the logical device (0 – The first DMA channel when using more than one DMA channel). 03h 0F8h 04h 03h 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 75H LDN DMA Select 1 The values 5-7 are reserved. Indicates selected DMA channel for DMA 0 of the logical device (0 – The first DMA channel when using more than one DMA channel). 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 0F0H 0 LDN Config TRI-STATE Control The values 5-7 are reserved. Serial port configuration register This bit controls the TRI-STATE status of the device output pins when it is inactive (disabled). 0= 1= ZFx86 Data Book 1.0 Rev D 02h 0b Disabled (Default) Enabled when device inactive Page 632 11 Table 12.9 Serial Port 2 Registers (cont.) Register/ Bit 1 Name Power Mode Control Function Value When the logical device is active in: 0= 1b Low power mode. Serial Ports 1 and 2 clock disabled. The output signals are set to their default states. The RI input signal can be programmed to generate an interrupt. Registers are maintained. (Unlike Active bit in Index 30 that also prevents access to Serial Ports 1 or 2 registers.) 1= 2 Normal power mode. Serial Ports 1 and 2 clock enabled. Serial Ports 1 and 2 are functional when the respective logical devices are active (Default). This read only bit can be used by power management software to decide when to power-down BUSY 0b Serial Ports 1 and 2 logical devices. 0= No transfer in progress (Default). 1= Transfer in progress. 6:3 7 Reserved Bank select Enables bank switching for Serial Ports 1 and 2. 0= 1= 0000b 0b Disabled (Default). Enabled 11.2.5. PS/2 Mouse/Keyboard SIO LDN 05 and 06 Note: The following table contains only LDN 06 register information. Table 12.10 PS/2 Mouse/Keyboard Registers Register/ Bit 30H 60H 61H 62H 63H 70H Name Function Value LDN Activate Bit 0: 01h LDN Base addr MSB LDN Base addr LSB LNB Port base MSB LNB Port base LSB LDN IRQ 1= Device enabled 0= Device disabled Activate. See also bit 0 of the SIOCF1. When the Mouse of the KBC is inactive, the IRQ selected by the Mouse Interrupt Number register (index 70h) is not asserted. This register has no effect on host KBC commands handling the PS/2 Mouse. Bits 7-3 (for A15-11) are read only, 00000b. Bits 2:0 (for A2:0) are read only, 000b. Bits 7:3 (for A15:11) are read only, 00000b Bits 2:0 rea read only 100b KBC Interrupt number 00h 60h 00h 64h 01h ZFx86 Data Book 1.0 Rev D Page 633 11 Table 12.10 PS/2 Mouse/Keyboard Registers (cont.) Register/ Bit 71H Name LDN IRQ Type Select Function KBC interrupt type. Indicates the type and level of the interrupt request number selected in the previous register. 02h Bit 0 = 74H LDN DMA Select 0 Type of interrupt request selected in previous register 0 = Edge 1 = Level Bit 1 = Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). Value 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 75H LDN DMA Select 1 The values 5-7 are reserved. Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 0F0H 0 LDN Config TRI-STATE Control 5:1 Reserved 7:6 Clock Source The values 5-7 are reserved. KBC configuration register If KBD is inactive (disabled) when this bit is set, the KBD pins (KBCLK and KBDAT) are in TRI-STATE. If Mouse is inactive (disabled) when this bit is set, the Mouse pins (MCLK and MDAT) are in TRI-STATE. 0= Disabled (Default) 1= Enabled Use read-modify-write to change the value of the register. Do not change the value of these bits. Bit 2 must be 0. The clock source can be changed only when the KBC is inactive (disabled). Bits7 6 00 01 10 11 ZFx86 Data Book 1.0 Rev D 40h 0b 00000b 01b Function 8 MHz 12 MHz (Default) 16 MHz Reserved Page 634 11 11.2.6. Infrared Communication Port Configuration (SIO LDN 07) Table 12.11 Infrared Communication Port Configuration Registers Register/ Bit Name 30H LDN Activate 60H 61H 70H 71H LDN Base addr MSB LDN Base addr LSB LDN IRQ LDN IRQ Type Select Function Bit 0: 1= device enabled 0= device disabled Bits 7-3 (for A15-11) are read only, 00000b. Bits 2:0 (for A2:0) are read only, 000b. Interrupt number Indicates the type and level of the interrupt request number selected in the previous register. 00h 03h 0E8h 00h 03h Bit 0 = 74H LDN DMA Select 0 Type of interrupt request selected in previous register 0 = Edge 1 = Level Bit 1 = Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). Value 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 75H LDN DMA Select 1 The values 5-7 are reserved. Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 0F0H 0 LDN Config TRI-STATE Control The values 5-7 are reserved. Infrared configuration register When enabled and the device is inactive, the logical device output pins are in TRI-STATE. 02h 0b One exception is the IRTX pin, which is driven to 0 when Serial Port 2 is inactive and is not affected by this bit. 0= 1= ZFx86 Data Book 1.0 Rev D Disabled (Default) Enabled Page 635 11 Table 12.11 Infrared Communication Port Configuration Registers (cont.) Register/ Bit 1 Name Function Power Mode Control When the logical device is active in: 1b 0= 2 Low power mode Clock disabled. The output signals are set to their default states. The RI input signal can be programmed to generate an interrupt. Registers are maintained. (Unlike Active bit in Index 30 that also prevents access to device registers.) 1= Normal power mode Clock enabled. The device is functional when the logical device is active (Default). This read only bit can be used by power management software to decide when to power-down the device. Value BUSY 0= 1= 6:3 7 Reserved Bank select No transfer in progress (Default). Transfer in progress. 0000b 0b Enables bank switching. 0= 1= 0b All attempts to access the extended registers are ignored (Default). Enables bank switching. 11.2.7. Access Bus (SIO LDN 08) Table 12.12 Access Bus Registers Register/ Bit 30H Name LDN Activate 60H 61H LDN Base addr_ MSB LDN Base addr LSB 70H 71H LDN IRQ LDN IRQ Type Select Function Bit 0: Bit 1 = ZFx86 Data Book 1.0 Rev D 00h 1= device enabled 0= device disabled Base address MSB Base address LSB. Bits 2-0 (for A2-0) are read only, 000b. Interrupt number Indicates the type and level of the interrupt request number selected in the previous register. Bit 0 = Value 00h 00h 00h 03h Type of interrupt request selected in previous register 0 = Edge 1 = Level Level of interrupt request selected in previous register 0 = Low polarity 1 = High polarity Page 636 11 Table 12.12 Access Bus Registers (cont.) Register/ Bit 74H Name Function LDN DMA Select 0 Value Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 04h Bits 2–0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 75H LDN DMA Select 1 The values 5-7 are reserved. Indicates selected DMA channel for DMA 0 of the logical device (0 = The first DMA channel when using more than one DMA channel). 04h Bits 2-0 select the DMA channel for DMA 0. The valid choices are 0-3, where a value of 0 selects DMA channel 0, 1 selects channel 1, etc. A value of 4 indicates that no DMA channel is active. 0F0H 1:0 2 LDN ACBCNF Reserved Internal Pullup Enable The values 5-7 are reserved. ACB configuration register 0= 1= 7:3 No internal pull-up resistors on SCL and SDA (Default) Internal pull-up resistors on SCL and SDA Reserved 04h 00b 1b 00000b 11.2.8. Pin Multiplexor Registers Table 12.13 Pin Multiplexor Registers Register/ Bit F3BAR0+00H 15:0 Name Function I/O Control register 1 Value 05040000h Reserved 0000h 16 External RTC Must be left at 0 0b 17 External KBC Must be left at 0 0b 18 IO_USB_PCI_EN USB ports 1b 0= 1= 19 IO_USB_SMI_PIN_EN Disable Enable USB SMI I/O Configuration — Route USB-generated SMI directly to the SMI# pin: 0b 0= 1= Disable Enable, USB-generated SMI pulls SMI# pin active (low) If bits 19 and 20 are enabled, the SMI generated by the USB is reported through the Top Level SMI Status Register at F1BAR0+I/O Offset 00h[14]. If only bit 19 is enabled, the USB can generate an SMI but there is no status reporting. ZFx86 Data Book 1.0 Rev D Page 637 11 Table 12.13 Pin Multiplexor Registers (cont.) Register/ Bit 20 Name IO_USB_SMI_PWM_EN Function USB Internal SMI — Route USB-generated SMI through the Top Level SMI Status Register at F1BAR0+I/O Offset 00h[14]: Value 0b 0= Disable 1= Enable Bit 19 must be enabled to allow the USB to generate an SMI for status reporting. 21 IO_RTC_32K This bit selects which 32K clock source is used. Resets to 0. 0= 1= 0b Use SIO generated 32Khz. Clock is driven by RTC. Use internally generated 32Khz. Clock is derived by dividing the 48Mhz by 1484. Note: Bootstrap[6] = 1 can also be used to select internally generated 32Khz clock. 22 IO_CLK32K_OE This bit is set to drive 32Khz clock out on to GPIO[0]. Reset to 0. 23 Reserved 0b 24 IO_ENABLE_SIO_DRIVING_ Enable Integrated SIO ISA Bus Control — Allow the ISA_BUS integrated SIO to drive the internal and external ISA bus: 1b 0= 1= 26:25 IO_SIOCFG_IN 11 = 27 IO_ENABLE_SIO_IR 31:28 Reserved I/O Control register 2 ZFx86 Data Book 1.0 Rev D 10b Integrated SIO disable Integrated SIO configuration access disable Integrated SIO base address 02Eh/02Fh enable Integrated SIO base address 015Ch/015Dh enable Enable integrated SIO infrared 0= 1= F3BAR0+04H Disable Enable (Default). Integrated SIO Input Configuration. These two bits can be used to disable the integrated SIO totally or limit/control the base address: 00 = 01 = 10 = 0b 0b Disable Enable 0h 00000032 Page 638 11 Table 12.13 Pin Multiplexor Registers (cont.) Register/ Bit 0 Name IO_EXT_CLK_14M Function Select 14.3Mhz clock source. Select either internally or externally generated 14.3Mhz clock source. If internal source is selected the actual clock frequency is 12Mhz (48Mhz / 4). 0= 1= Value 0b Select external 14.3Mhz input as source. (Default) Select internally generated 14.3Mhz clock source. Note: Bootstrap[5] = 1 can also be used to select internally generated 14.3Mhz clock 1 IO_IDE_ON_GPIO Drive IDE channel 2 onto gpio. Must also have gpio conditioned to correct direction corresponding to IDE pin functionality. 1b 0= do not drive IDE onto gpio. (Default) 1= drive IDE into gpio. gpio[1] is dmackx, gpio must be configured as output. gpio[2] is diowx, gpio must be configured as output. gpio[3] is diorx, gpio must be configured as output. gpio[5] is dreq, gpio must be configured as input. gpio[6] is iordy, gpio must be configured as input. 2 IO_BUR_ON_SIO This bit is used in design verification only. Resets to 0. 0b 3 IO_FUNC_ON_SIO This bit is used in design verification only. Resets to 0. 0b 4 IO_ZFL_EN This bit is set to enable the ZF-Logic. Resets to 0. 1b Note: Bootstrap[22] also used to enable the ZF-Logic. 5 IO_ZT_EN This bit is set to enable the ZF-Logic ROM interface. Resets to 0. 1b Note: Bootstrap[23] also used to enable ZF–Logic ROM interface. 6 Reserved 7 IO_CLK_14M_OE 31:8 Reserved ZFx86 Data Book 1.0 Rev D 0b This bit is set to drive the internally generated 12Mhz clock out on GPIO[4]. Resets to 0. 0b 0000000h Page 639 11 11.2.9. GPIO Configuration Pins 12.2.9.1. GPIO 0 Table 12.14 GPIO0 Registers Register/ Bit F0BAR0+24H 0 1 Name Function Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control Lock 0b Open-drain (Default Push-pull Note: Bit 0 must = 1 for this bit to have effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= 3 Value GPIO Pin Configuration Access Register 44H Indicates the GPIO pin output state. It has no effect on input. Output Enable 0b 1b Disable Enable (Default). Note: Bits [1:0] must = 01 for this bit to have effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 5 PME Edge/Level Select PME Polarity No effect (Default) Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= Edge input 1= Level input. For normal operation always set this bit to 0 (edge input). Erratic system behavior results if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0= 1= 6 PME Debounce Enable 31:7 Reserved ZFx86 Data Book 1.0 Rev D 0b Falling edge or low level input. Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms) 0= 1= 0b 1b Disable Enable. 0h Page 640 11 12.2.9.2. GPIO 1 Table 12.15 GPIO1 Registers Register/ Bit F0BAR0+24H 0 1 Name Function GPIO Pin Configuration Access Register Output Enable Indicates the GPIO pin output state. It has no effect on input. Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control 3 Lock 03H 1b 1b Open-drain (Default) Push-pull Note: Bit 0 must = 1 for this bit to have effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= Value 0b Disable; Enable (Default). Note: Bits [1:0] must = 01 for this bit to have effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 PME Edge/Level Select No effect (Default); Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= 1= 5 PME Polarity 6 PME Debounce Enable Reserved ZFx86 Data Book 1.0 Rev D 0b Falling edge or low level input. Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms): 0= 1= 31:7 Edge input; Level input. Note: For normal operation always set this bit to 0 (edge input). Erratic system behavior will result if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high). 0= 1= 0b 0b Disable; Enable. 0h Page 641 11 12.2.9.3. GPIO 2 Table 12.16 GPIO2 Registers Register/ Bit F0BAR0+24H 0 1 Name Function GPIO Pin Configuration Access Register Output Enable Indicates the GPIO pin output state. It has no effect on input. Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control 3 Lock 03H 1b 1b Open-drain (Default) Push-pull Note: Bit 0 must = 1 for this bit to have effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= Value 0b Disable; Enable (Default). Note: Bits [1:0] must = 01 for this bit to have effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 PME Edge/Level Select No effect (Default); Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= 1= 5 6 PME Polarity PME Debounce Enable 31:7 Reserved ZFx86 Data Book 1.0 Rev D Edge input; Level input. Note: For normal operation always set this bit to 0 (edge input). Erratic system behavior results if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0= Falling edge or low level input. 1= Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms): 0= 1= 0b 0b 0b Disable Enable. 0h Page 642 11 12.2.9.4. GPIO 3 Table 12.17 GPIO3 Registers Register/ Bit F0BAR0+24H 0 1 Name Function GPIO Pin Configuration Access Register Output Enable Indicates the GPIO pin output state. It has no effect on input. Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control 3 Lock 03H 1b 1b Open-drain (Default) Push-pull Note: Bit 0 must = 1 for this bit to have effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= Value 0b Disable Enable (Default). Note: Bits [1:0] must = 01 for this bit to have effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 PME Edge/Level Select No effect (Default); Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= 1= 5 6 PME Polarity PME Debounce Enable 31:7 Reserved ZFx86 Data Book 1.0 Rev D Edge input; Level input. Note: For normal operation always set this bit to 0 (edge input). Erratic system behavior results if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0= Falling edge or low level input. 1= Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms): 0= 1= 0b 0b 0b Disable Enable. 0h Page 643 11 12.2.9.5. GPIO 4 Table 12.18 GPIO4 Registers Register/ Bit F0BAR0+24H 0 1 Name Function GPIO Pin Configuration Access Register Output Enable Indicates the GPIO pin output state. It has no effect on input. Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control 3 Lock 44H 0b 0b Open-drain (Default) Push-pull Note: Bit 0 must = 1 for this bit to have an effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= Value 1b Disable Enable (Default). Note: Bits [1:0] must = 01 for this bit to have an effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 PME Edge/Level Select No effect (Default) Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= 1= 5 6 PME Polarity PME Debounce Enable 31:7 Reserved ZFx86 Data Book 1.0 Rev D Edge input; Level input. Note: For normal operation always set this bit to 0 (edge input). Erratic system behavior results if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0= Falling edge or low level input. 1= Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms): 0= 1= 0b 0b 1b Disable Enable. 0h Page 644 11 12.2.9.6. GPIO 5 Table 12.19 GPIO5 Registers Register/ Bit F0BAR0+24H 0 1 Name Function GPIO Pin Configuration Access Register Output Enable Indicates the GPIO pin output state. It has no effect on input. Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control 3 Lock 00H 0b 0b Open-drain (Default) Push-pull Note: Bit 0 must = 1 for this bit to have effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= Value 0b Disable Enable (Default). Note: Bits [1:0] must = 01 for this bit to have effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 PME Edge/Level Select No effect (Default); Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= 1= 5 6 PME Polarity PME Debounce Enable 31:7 Reserved ZFx86 Data Book 1.0 Rev D Edge input; Level input. Note: For normal operation, always set this bit to 0 (edge input). Erratic system behavior results if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0= Falling edge or low level input. 1= Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms): 0= 1= 0b 0b 0b Disable Enable. 0h Page 645 11 12.2.9.7. GPIO 6 Table 12.20 GPIO6 Registers Register/ Bit F0BAR0+24H 0 1 Name Function GPIO Pin Configuration Access Register Output Enable Indicates the GPIO pin output state. It has no effect on input. Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control 3 Lock 00h 0b 0b Open-drain (Default) Push-pull Note: Bit 0 must = 1 for this bit to have effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= Value 0b Disable Enable (Default). Note: Bits [1:0] must = 01 for this bit to have effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 PME Edge/Level Select No effect (Default) Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= 1= 5 6 PME Polarity PME Debounce Enable 31:7 Reserved ZFx86 Data Book 1.0 Rev D Edge input; Level input. Note: For normal operation always set this bit to 0 (edge input). Erratic system behavior results if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0= Falling edge or low level input. 1= Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms): 0= 1= 0b 0b 0b Disable Enable. 0h Page 646 11 12.2.9.8. GPIO 7 Table 12.21 GPIO7 Registers Register/ Bit F0BAR0+24H 0 1 Name Function GPIO Pin Configuration Access Register Output Enable Indicates the GPIO pin output state. It has no effect on input. Output Type 0= TRI-STATE (Default) 1= Output enabled. Controls the output buffer type (open-drain or push-pull) of the corresponding GPIO pin. 0= 1= 2 Pull-Up Control 3 Lock 44H 0b 0b Open-drain (Default) Push-pull Note: Bit 0 must = 1 for this bit to have effect. Enables/disables the internal pull-up capability of the corresponding GPIO pin. It supports open-drain output signals with internal pull-ups and TTL input signals. 0= 1= Value 1b Disable Enable (Default). Note: Bits [1:0] must = 01 for this bit to have effect. This bit locks the corresponding GPIO pin. Once this bit is set to 1 by software, it can only be cleared to 0 by system reset or power-off. 0= 1= 4 PME Edge/Level Select No effect (Default); Direction, output type, pull-up and output value locked. Selects the type (edge or level) of the signal that issues a PME from the corresponding GPIO pin: 0b 0= 1= 5 6 PME Polarity PME Debounce Enable 31:7 Reserved ZFx86 Data Book 1.0 Rev D Edge input; Level input. Note: For normal operation always set this bit to 0 (edge input). Erratic system behavior will result if this bit is set to 1. Selects the polarity of the signal that issues a PME from the corresponding GPIO pin (falling/low or rising/high): 0= Falling edge or low level input. 1= Rising edge or high level input. Enables/disables IRQ debounce (debounce period = 16 ms): 0= 1= 0b 0b 1b Disable Enable. 0h Page 647 11 12.2.9.9. ZF–LOGIC Registers Table 12.22 ZF–Logic Registers Register/ Bit 06H 7:0 08H 0 1 Name PWM Duty Cycle Duty Function 00h = 0FFh = 5 00h Enable/Disable PWM output 0b Clksrc 0= PWM is disabled 1= PWM is enabled Selects the PWM prescaler input clock 0b Reserved Dlevel Direct 7:6 0 1 5 00b 0b 0b PWM drives the PWM output pin bit4 of register 08h drives the PWM output pin Reserved Watchdog control 1 wd1_en 00b Enable watchdog 1 0b wd2_en 0= WD1 is disabled 1= WD1 is enabled Enable watchdog 2 0b 00h 0= 1= 3:2 4 PWM is clocked from 32kHz clock PWM is clocked from 8MHz ISA clock Value to be set at PWM output pin when bit5 of register 08h is set to 1 Enables direct control of PWM output by bit 4 0= 1= 10H 00h 00h PWM Control PWMEN 0= 1= 3:2 4 100% low 0% low Value WD2 is disabled WD2 is enabled Reserved wd1_ld Reload WD1 counter 00b 0b wd2_ld Active event for this bit is transition from 0 to 1 Reload WD2 counter. 0b Active event for this bit is transition from 0 to 1 7:6 11H 0 1 2 Reserved Watchdog control 2 wd1_c 00b Enable SCI on WD1 expiry 0b wd1_n 0= WD1 will not generate SCI 1= WD1 will generate SCI event on expiry Enable NMI on WD1 expiry 0b wd1_s 0= WD1 will not generate NMI 1= WD1 will generate NMI on expiry Enable SMI event on WD1 expiry 0b 00h 0= 1= ZFx86 Data Book 1.0 Rev D WD1 will not generate SMI WD1 will generate SMI event on expiry Page 648 11 Table 12.22 ZF–Logic Registers (cont.) Register/ Bit 3 4 5 Name Function wd1_rs Enable RESET on WD1 expiry 0b wdi_ed 0= WD1 will not generate system reset 1= WD1 will generate system reset on expiry Active front of WDI input 0b Wdo_-1 0= WDI is asserted on 0->1 transition 1WDI is asserted on 1->0 transition Create output on WDO output pin on ZFx86 at WD1 expiry or one 32kHz clock tick before 0= 1= 6 Value wdi_en 0b WDO signal will be set high on WD1 expiery WDO signal is set high one clock tick before WD1 expires. WD1 events will always occur at WD1 expiry and are not affected of wdo_-1 bit setting. Note: This feature gives possibility to cause automatic reload of WD1 when WDO is wired to WDI. Enable the assertion of WDI input pin on ZFx86 to to 0b reload the watchdog 1 counter 0= 1= 7 16H 3:0 4 5 6 7 Reserved IO Window 0 control Win_siz WDI input ignored WDI assertion reloads watchdog 1 counter Number of consecutive 8-bit I/O addresses to decode starting from I/O window base. 0b 00h 0000b win_en The number of addresses decoded is win_siz + 1. For example, setting the window size to 0 enables one I/O address at I/O window base. Setting size to 0Fh will enable I/O window of 16 addresses starting from I/O window base. I/O window enable in I/O space 0b act_lvl 0= I/O window is disabled 1= I/O window is enabled io_cs active level 0b 16_bit 0= io_cs is active low 1= io_cs is active high I/O window datapath width 0b win_ro 0= 8-bit wide access 1= 16-bit wide access I/O window wead/write control 0b 0= 1= Access is read-write Access is read-only Note: Setting window to read-only mode disables IOW_N signal on ISA bus for IO window address range. ZFx86 Data Book 1.0 Rev D Page 649 11 Table 12.22 ZF–Logic Registers (cont.) Register/ Bit 1AH 3:0 4 5 6 7 Name IO Window 1 control Win_siz Function Number of consecutive 8-bit I/O addresses to decode starting from I/O window base. Value 00h 0000b win_en The number of addresses decoded is win_siz + 1. For example, setting the window size to 0 enables one I/O address at I/O window base. Setting size to 0Fh will enable I/O window of 16 addresses starting from I/O window base. I/O window enable in I/O space 0b act_lvl 0= I/O window is disabled 1= I/O window is enabled io_cs active level 0b 16_bit 0= io_cs is active low 1= io_cs is active high I/O window datapath width 0b win_ro 0= 8-bit wide access 1= 16-bit wide access I/O window wead/write control 0b 0= 1= Access is read-write Access is read-only Note: Setting window to read-only mode disables IOW_N signal on ISA bus for IO window address range. 1EH 3:0 IO Window 2 control Win_siz Number of consecutive 8-bit I/O addresses to decode 00h 0000b starting from I/O window base. 4 5 6 7 win_en The number of addresses decoded is win_siz + 1. For example, setting the window size to 0 enables one I/O address at I/O window base. Setting size to 0Fh will enable I/O window of 16 addresses starting from I/O window base. I/O window enable in I/O space 0b act_lvl 0= I/O window is disabled 1= I/O window is enabled io_cs active level 0b 16_bit 0= io_cs is active low 1= io_cs is active high I/O window datapath width 0b win_ro 0= 8-bit wide access 1= 16-bit wide access I/O window wead/write control 0b 0= 1= Access is read-write Access is read-only Note: Setting window to read-only mode disables IOW_N signal on ISA bus for IO window address range. ZFx86 Data Book 1.0 Rev D Page 650 11 Table 12.22 ZF–Logic Registers (cont.) Register/ Bit 22H 3:0 4 5 6 7 Name IO Window 3 control Win_siz Function Number of consecutive 8-bit I/O addresses to decode starting from I/O window base. 00h 0000b win_en The number of addresses decoded is win_siz + 1. For example, setting the window size to 0 enables one I/O address at I/O window base. Setting size to 0Fh will enable I/O window of 16 addresses starting from I/O window base. I/O window enable in I/O space 0b act_lvl 0= I/O window is disabled 1= I/O window is enabled io_cs active level 0b 16_bit 0= io_cs is active low 1= io_cs is active high I/O window datapath width 0b win_ro 0= 8-bit wide access 1= 16-bit wide access I/O window wead/write control 0b 0= 1= 27H 28H 2BH 2CH 2FH 30H 33H 34H 37H 38H 3BH 3CH 3FH 40H 43H 44H 47H 48H 4BH 4CH 4FH 50H 53H 54H Value Memory window 0 base 1 Memory window 0 base 2 Memory window0 size 1 Memory window 0 size 2 Memory window 0 page 1 Memory window 0 page 2 Memory window 1 base 1 Memory window 1 base 2 Memory window 1 size 1 Memory window 1 size 2 Memory window 1 page 1 Memory window 1 page 2 Memory window 2 base 1 Memory window 2 base 2 Memory window 2 size 1 Memory window 2 size 2 Memory window 2 page 1 Memory window 2 page 2 Memory window 3 base 1 Memory window 3 base 2 Memory window 3 size 1 Memory window 3 size 2 Memory window 3 page 1 Memory window 3 page 2 ZFx86 Data Book 1.0 Rev D Access is read-write Access is read-only Note: Setting window to read-only mode disables IOW_N signal on ISA bus for IO window address range. Memory window base address bits 15..12 Memory window base address bits 23..16 Memory window size bits 15..12 Memory window size bits 23..16 Memory window page bits 15..12 Memory window page bits 23..16 Memory window base address bits 15..12 Memory window base address bits 23..16 Memory window size bits 15..12 Memory window size bits 23..16 Memory window page bits 15..12 Memory window page bits 23..16 Memory window base address bits 15..12 Memory window base address bits 23..16 Memory window size bits 15..12 Memory window size bits 23..16 Memory window page bits 15..12 Memory window page bits 23..16 Memory window base address bits 15..12 Memory window base address bits 23..16 Memory window size bits 15..12 Memory window size bits 23..16 Memory window page bits 15..12 Memory window page bits 23..16 00h 0F0h 0F0h 01h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h Page 651 11 ZFx86 Data Book 1.0 Rev D Page 652 Index Index Numerics 0 Wait States 186 00H PCI Vendor ID Register 624 Seconds Register (RTC) 310 Serial Data Register (ACB) 329 Vendor ID Register 162 Wake-Up Events Status Register 280 01H Seconds Alarm Register (RTC) 311 Status Register (ACB) 330 Wake-Up Events Control Register 281 02H Control Status Register (ACB) 331 Minutes Register (RTC) 311 Wake-Up Config Register 282 03H Control Register 1 (ACB) 332 Minutes Alarm Register (RTC) 311 04H Command Register 162 Hours Register (RTC) 312 Own Addresss Register (ACB) 333 PCI Command Register 624 05H Control Register 2 (ACB) 334 Hours Alarm Register (RTC) 312 06H Day of Week Register (RTC) 312 PCI Status Register 624 PWM Duty Cycle Register 648 Status Register 163 07H, Mouse Data Shift Register 284 08H Month Register (RTC) 313 PCI Revision ID Register 625 PWM Control Register 648 Revision ID Register 163 09H Class Register 163 Year Register (RTC) 313 0BH, Control Register B (RTC) 316 0DH, Control Register D (RTC) 319 0DH, PCI Latency Timer Register 625 100H, NB Revision ID Register 137, 603 10H Watchdog Control 1 Register 648 Watchdog Control Low 427 110H, Programmable Region 1 Register 137, 603 111H, Programmable Region 2 Register 137, 603 ZFx86 Data Book 1.0 Rev D I 112H, Programmable Region 3 Register 138, 603 113H, Programmable Region 4 Register 138, 604 114H, Programmable Region Control Register 138, 604 115H, Cacheability Override Register 139, 604 117H, Back-off Control Register 140, 605 118H, SMM Control Register 140, 606 119H, Processor Control Register 142, 608 11AH, Write FIFO Control Register 143, 609 11BH, PCI Control Register 145, 610 11CH, Clock Skew Adjust Register 146, 611 11DH Bus Master 146 Bus Master Register 611 Snoop Control Register 146, 611 11EH, Arbiter Control Register 148, 613 11FH, Docking Control Register 613 11H Watchdog Control 2 Register 648 Watchdog Control High 428 120H, PCI Write FIFO Control Register 148, 614 12H, Watchdog Status 429 14H, ZF-Logic Index for I/O Windows 423 14MHz Clock 173 16H, I/O Window 0 Control Register 649 1AH, I/O Window 1 Control Register 650 1EH, I/O Window 2 Control Register 650 200H, Shadow RAM Read Enable Control Register 149, 615 201H, Shadow RAM Write Enable 150, 615 202H Bank 0 Control Register 151 Bank 0 Starting Address 616 204H, Bank 0 Timing Register 152, 616 205H, Bank 1 Control Register 152, 617 207H, Bank 1 Timing Register 617 207H, Bank 1Timing Register 153 208H, Bank 2 Control Register 153, 617 20AH, Bank 2 Timing Register 154, 618 20BH, Bank 3 Control Register 155, 618 20DH, Bank 3 Timing Register 155, 619 20EH, DRAM Configuration Register 1 156, 619 20FH, DRAM Configuration Register 2 157, 620 20H, SuperI/O ID Register 270 211H, DRAM Refresh Control Register 158, 621 213H, SDRAM Mode Program Register 158, 621 214H, SDRAM Mode Program Register 159, 622 21H, SuperI/O Config 1Register 270 22H I/O Window 3 Control Register 651 SuperI/O Config 2 Register 271 Page 653 Index 238H, CPU-SYNC Register 162 239H, SDRAM Slew Control Register 159, 622 24H, NB Config Index Register 119 26H, NB Configuration Data Registers 119 27H 651 27H, SuperI/O Revision ID Register 271 27H, ZF-Logic 411 28H 651 2BH 651 2CH 651 2FH 651 3.3V Power Supply 193 300H, Clock Control Register 160, 623 30H 651 32KHz Clock Connection 173 Crystal Oscillator Connection 173 32KHZ_C , AF01 449 33H 651 34H 651 37H 651 38H 651 3BH 651 3CH 651 3FFH, Clock Control 2 Register 161, 623 3FH 651 40H 651 PCI Arbiter Routing Register 625 43H 651 44H 651 47H 651 48 MHz Clock pin 173 48H 651 4BH 651 4CH 651 4FH 651 50H 651 53H 651 54H 651 7CH, Z-tag Control Register 462 A A20, SYSCLCK, ZF-Logic 450 A20M 143 AC Characteristics 489–540 ACB Configuration Register, F0H 299 Control Register 1, 03H 332 Control Register 2, 05H 334 Control Status Register, 02H 331 ZFx86 Data Book 1.0 Rev D I Own Address Register, 04H 333 Register Bitmap Table 334 Register Map Table 329 Runtime Registers 298 Serial Data Register, 00H 329 Status Register, 01H 330 ACBADDR 334 ACBCST 334 ACBCTL1 334 ACBCTL2 334 ACBSDA 334 ACBST 334 ACCESS.bus 322–334 Clock Signal 189, 261 Data Signa 189 Data Signal 261 Electrical Specifications 494 Register Table 636 Runtime Register Table 298 VDD 261 Accessing the ZF-Logic Registers 405 ACK_N 192, 600 Acknowledge, SB 192 Addr2Linear 591 Address Enable 183 Map, NB 118 Strobe, SB 193 Translation 121 ADF 192 ADP_PREF_DIS 146 ADRAM_CAS 117 ADSR 292 AE01, 32 KHz Crystal Oscillator Connect pin 173 AEN 183 AF01 32KHz clock Connection pin 173 32kHz clock 449 AF16, 14MHz clock pin 173 Alternate CPU Support Register 212 ARB_ROUTE 625 Arbiter Control Register, 11EH 148, 613 Architecture North Bridge 113 South Bridge 166 AT compatibility Logic, SB 170 AUTOFD_N 600 Automatic Feed, SB 192 Page 654 Index B B04, Memory Chip Select pin 173 B0A 151 B0S 151 B1A 152 B1S 152 B2A 153 B2S 154 B3A 155 B3S 155 Back-off Control Register, 117H 140, 605 BALE 183 BANK 157 Bank 0 Control Register 202H 151 Offset 03H, PS/2 Protocol Control Register 283 Offset 06H, Keyboard Data Shift Register 284 Starting Address, 202H 616 Timing Control, 204H 616 Timing Register 204H 152 Bank 1 Control Register 205H 152 Control Register, 205H 617 Timing Control Register, 207H 617 Timing Register 207H 153 Bank 2 Control Register 208H 153 Control Register, 208H 617 Timing Control Register, 20AH 618 Timing Register 20AH 154 Bank 3 Control Register 20BH 155 Control Register, 20BH 618 Timing Control Register, 20DH 619 Timing Register 20DH 155 Base Address Register 0 208 SMM 134 Battery Power Supply, SB 193 Battery Supply Current 482 Baud Output, SB 194 BCD and Binary Formats Table 320 BCR 605 BIST Register, USB 247 BM_BURSTRD_ALWYS 145 BM_DONE_DIS 145 boot from these sources 414 BootStrap Register, ZF-Logic 438 Buffered Address Latch Enable 183 BUR 462–470 ZFx86 Data Book 1.0 Rev D I Base Register, ZF-Logic 445 On-Chip RAM Assignments 470 Z-tag 455 Burst sequence, NB 120 Bus Master, 11DH 146, 611 Bus Timing Parameters, PIC 498 BUSY 600 Busy, SB 192 C C/BE, PCI Bus Command and Byte Enables 177 C19, POR# system reset pin 173 CACHE_OVR 139 Cacheability Override Register, 115H 139, 604 CAS_LATCY 152, 153, 154, 155 CEIR Address Shift Register, Bank 1 Offset 7 286 Carrier Frequency EncodingTable 396 Mode, SB 347 Receive Operation, SB 348 Transmit Operation, SB 347 CEIR Wake-Up Address Mask Register, Bank 1 Offset 6 286 Config/Control Register Map 279 Control Register, Bank 1 Offset 3 285 CEIR Wake-Up Range 0 Registers Bank 1 Offset 9 287 1 Registers Bank 1 Offset 0AH 287 Bank 1 Offset 0BH 288 3 Registers Bank 1 OEH 289 Bank 1 OFH 290 Century Register 320 Offset (RTC) 309 Offset, F3H 302 CF8H, NB PCI Config Cycle Address Register 119 CFCH, NB PCI Config Cycle Data Register 119 CK_HITM_WS 146 Class Register 09H 163 Clear to Send, SB 194 CLK_14MHZ 173 CLK_48MHZ 173 CLKIN 189 CLKRUN 175 Clock Control Register 300H 160, 623 3FFH 161, 623 Clock In, SB 189 Clock Parameters, PCI 497 Page 655 Index Clock Skew Adjust, 11CH 146, 611 Clock Stop Control Register 226 Clocking Options, ZF-Logic 444 CNFCY_AD_STEP_DIS 145 COLADR 151, 153, 154, 155 Command Register 04H 162 USB 246 COMMD 624 Common Control and Status Register Map 279 Three-Register Map, Banks 0 and 1 291 Composite BootStrap Register Table 438 Configuration Access disabled 263 Register table, NB 137 Control Register, Z-tag 462 Coprocessor Error Register 257 COR 604 Core Supply Current 482 CPU bus cycle conversion, NB 133 busses, NB 120 Clock management, NB 136 Interrupt Request internal pin 174 reset internal pin 174 Suspend Acknowledge, SUSPA 174 Suspend Command Register 225 Suspend, SUSP 175 CPU&EM_DRAM 144 CPU_BUSY_TIMER 148, 613 CPU_RST 174 CPU_SYNC 118 CPU_trig timing 491 CPU2PCI_BURST_EN 145 CPU-SYNC Register 238H 162 CRLF 587 CS_SLEW 160 CTS1 194 CTS2_N 601 D DACK 186 DACK1_N 599 Data Carrier Detected, SB 194 Data Set Ready, SB 194 Data Strobe, SB 192, 193 Data Terminal Ready, SB 194 DATA_BUS_HOLD 160 DATA_PAR_DET 163 ZFx86 Data Book 1.0 Rev D I Date Of Month Alarm Register 319 Offset (RTC) 308 Offset, F1H 301 Day Of Week Register, 06H 312 DBBIN 335 DBBOUT 335 DCD 194 DCD2_N 601 DCONF1 619 DCONF2 620 Decode Control Register 212 Delay 588 DET_PAR_ERR 163 Device ID Register 162, 207 Device Revision ID Register 208 DEVSEL_N 179 DEVSEL_TIM 163 DIR 189 DIR _N 460 DIR_N 597 Direction 189 DIS_BUS_SNARF 147 DIS_CHK_HITM 146 DIS_CONCURRENCY 147 DIS_EM_PREFETCH 147 DIS_FPUCLR_BY 143 DIS_PSLOCK 143 DIS_RESOURCE_LOCK 145 DIS_SNOOP 146 DIS_WB_MERGE 147 DIS23RMAP 140 DISC_ON_LN_BOUNDARY 145 Disk Change, SB 189 DISPCIM_ELY_DRM_CY 147 DISPCIM_SHADOWRAM 147 DMA Acknowledge 186 Acknowledge Channels, SB 180 Channel Address Register 248 Channel Mask Register, 249 Channel Mode Register 250 Channel Transfer Count Register 248 Control, Channel 0 Drive 0 238 Control, Channel 0 Drive 1 238 Control, Channel 1 Drive 0 238 Control, Channel 1 Drive 1 239 Controller, SB 170 Request 185 Request Channels, SB 180 Shadow Register 225 Software Request Register 249 Page 656 Index TC Signal 350 Ultra DMA Data Burst Timing Req 511 DOCCS# Base Address Register 215 Control Register 215 DOCKC 613 Docking Control Register, 11FH 613 Dongle Jumpers 458 Pass-through Mode 458 Z-tag 456 DR0 189 DRAM architecture 122 Configuration Register 1, 20EH 156, 619 Configuration Register 2, 20FH 157, 620 maximum local 119 memory map 123 Refresh Control Register, 211H 158, 621 DRAM_INAT_TO 156 DRFSHC 621 Drive Select 0, SB 189 DRMRDREODEREN 143 DRQ 185 DRQ1 599 DRV_N 597, 598 DSBX2Var 587 DSKCHG 189, 460 DSKCHG_N 597 DSR 194 DSR2_N 601 DSTRB 192 DTR1_N 194 E Edge/Level Select, Interrupt Register 1 257 Register 2 258 Electrical Specifications 481–540 EN_ADCBE_FLT_IDLE 145 EN_BUS_LOCK 145 EN_PCI_FAST_DECDE 145 EN_RELAX_SDRM_CMD_TMING 157 EN_SDRAM_CKE_RST 161 EN_SDRAM_CONFIG 158 EN_SDRM_PWRDN 157 EN_STOP_CORE_CLK 161 EN_STOP_CPU_CLK 161 EN_STOP_SDRAM_CLK 161 ERR_N 192, 600 ZFx86 Data Book 1.0 Rev D I Errata 147, 211 Error, SB 192 Extended RAM Map 321 External Keyboard Controller Command Register 256 Mailbox Register 256, 257 External Memory Devices 410 F F0 Index 47h 184 F0 Index 4Ah 183, 184 F0 Index 53H 174 F0BAR0 197 F0BAR0+24H GPIO Pin Config Access Registers 640–647 F0H ABC Config Register 299 Data Registers, ZF-Logic 444 Floppy Disk Control Config Register 273 IKBC Config Register 296 Infrared Comm Port Config Register 297 Parallel Port Config Register 275 RAM Lock Register 300 Serial Ports 1/2 Config Registers 293 F1BAR0 SMI Status Register Table 200 F1H Date of Month Alarm Register 301 Floppy Drive ID Register 274 F2H, Month Alarm Register Offset 301 F3BAR0+00H I/O Control Register 1 637 F3BAR0+04H, I/O Control Register 2 638 F3BARx Initialized Register 243 F3H, Century Register Offset 302 Fast IR Port Timing, Electrical Specifications 528 FAST_B2B_STAT 163 FAST_TRDY 147 FDC Bitmap Summary Table 337 Configuration Register, F0H 273 FEH, Data Registers, ZF-Logic 444 FERR, FO Index 53H 174 FIFO Control Register 362 PCI Write Control Register, 120H 614 Timeouts, SB 352 Write Control Register, 11AH 609 FIFOD 143, 148 Floating Point Error Interrupt 174 IRQ13 174 Floating Point Interrupt 118 Page 657 I Index Floppy Disk Controller 272–274 Controller Bitmap Summary Table 627 Controller Register Table 626 Controller, SB 336 Drive Control Timing 532 Electrical Specifications 531 ID Register, F1H 274 Idle Timer Count Register 223 Idle Timer Enable 217 Port Select 222 Reset Timing 531 Trap 218 Write Data Timing 531 Z-tag Pins 460 FLUSH 143 FORCE_DRM_PM_PCIM 147 FRAME_N 178 FRCREMAP 141 FST_SDRM_RD_L2_EN 157 Function Name 587 Support Registers Summary Table 199 Timing, Electrical Specifications 530 Ground 193 H HDSEL 189 HDSEL_N 460, 597 Head Select, SB 189 High Speed Infrared Receive Operation 351 Transmit Operation 350 HLD_RETRY_ON_REQ 140 Hours Alarm Register, 05H 312 Register, 04H 312 I I/O Channel Ready, SB 187 Chip Select 16, SB 186 Control Register 244, 245 Control Register 1, F3BAR0+00H 637 Control Register 2, F3BAR0+04H 638 Port 0D0h 251 Read, SB 187 Ready Channel, SB 180 Window 0 Control Register, 16H 649 Window 1 Control Register, 1AH 650 Window 2 Control Register, 1EH 650 Window 3 Control Register, 22H 651 Write, SB 187 G General Purpose Timer 1 Control Register 220 Count Register 220 Generic 2 Input Table 484 Output Table 487 Generic2 483 GND 193 GNT1 177 GPCS I/O mapper 422 GPIO 599 Config Register Summary Table 197 Data In 230 Data Out 230 Event SMI Status 220 Interface 171 Signal Table 182 Signals 182 Interface, SB 171 Pin Config Access Registers, F0BAR0+24H 640–647 Pin Configuration Access Register 231 Select Register 230 Power Management Event 230 Reset Control Register 231 Status 230 ZFx86 Data Book 1.0 Rev D IDE Address Bits, SB 181 Bus Master 0 Command Register 239 PRD Table Address 240 Status Register 239 Bus Master 1 Command Register 240 PRD Table Address 240 Status Register 240 Chip Select, SB 180 Controller Support Summary Table 201 DACK 599 Data Lines, SB 181 DREQ 599 I/O Read, SB 180 I/O Write, SB 180 Interface Timing Table 504 Page 658 Index IOR 599 IORDY 599 IOW 599 Multiword DMA Data Transfer 509 PIO Data Transfer To/From Device 507 Register Transfer To/From Device Table 505 Reset Timing Figure 504 Reset, SB 181 IDE_ADDR 181 IDE_CS 180 IDE_D 180 IDE_DATA 181 IDE_DIOR1_N 182 IDE_DIOW0 180 IDE_DIOW1_N 182 IDE_DMA_ACK 180 IDE_DMA_ACK1 182 IDE_DMA_REQ 180 IDE_DMA_REQ1_N 182 IDE_IORDY 180 IDE_IORDY1 182 IDE_RST 181 Idle Timers 216 IER, Extended Mode 358 iKBC Configuration Register, F0H 296 Index, SB 189 INDEX_N 189, 460, 597, 598 Infrared Comm Port Configuration Register, F0H 297 Table 297 Receive, High Speed 351 Transmit, High Speed 350 Infrared Comm Port Config Table 635 INIT 192 INIT_N 600 Initialize, SB 192 Input Generic 2 484 MAC97 486 M-FDC_PP 485 MIDE 485 MMC-D 485 MPCi 484 MUSB 485 MWUSB 486 Pin Capacitance 482 Timing Measurement Figure 500 INT 17h 589 INT9 177 Integrated Super I/O, SB 169 ZFx86 Data Book 1.0 Rev D I Interrupt Edge/Level Select Register 257 Interrupt Request IRQ1 184 IRQ10 600 IRQ11 600 IRQ12 600 IRQ13 118, 174 IRQ14 181 IRQ15 181 IRQ3 185 IRQ9 600 INTR 174 IO_CS0 422, 601 IO_RTC_32K 244, 449 IOCHRDY 187 IOCS0# Base Address Register 215 Control Register 215 IOCS1# Base Address Registe 214 Control Register 214 IOCS16 186 IOR 187 IOW 187 IR Communication Port, SB 345 Mode Register Bank Overview 354 Port Timing Parameters Table 528 Reception, SB 195 Select, SB 195 Transmit, SB 195 Transmitter Modulator Control Register 396 IrDA 1.1 MIR and FIR Modes 349 IRDY_N 178 IRQ Speedup 216 Timer Count Register 222 IRQ1 184 IRQ10 600 IRQ11 600 IRQ12 118, 600 IRQ13 174 IRQ14 181 IRQ15 181 IRQ3 185 IRQ9 600 IRR 195 IRSL 195 IRTX 195 IRWAD 291 IRWCR 291 IRWTR0L 292 Page 659 Index ISA Bus Clock, SB 183 Bus interface, SB 169 Electrical Specifications 501 I/O Recovery Control Registe 211 Legacy Register 248 Master Cycles, SB 168 Memory Mapper, ZF-Logic 410 Output Signals Table 501 Read Operation Figure 503 Write Operation Figure 503 ISA_ERR_N 599 ISACLK_N 183 J JTAG Timing, Electrical Specifications 529 Jumpers on the Z-tag 458 K KBC Bitmap Summary Table 335 Register Map Table 335 KBCLK 190 KBDAT 191 KBLOCK 191 KBLOCK_N 599 KCLOCK_C 599 KDATA 599 KDISSMMRAM 140 KDSR 291 KENEN 142 Keyboard Clock, SB 190 Data Shift Register, Bank 0 Offset 06H 284 Data, SB 191 Lock, SB 191 Keyboard/Mouse Controller 335 Idle Timer Count Register 224 Enable 216 Interface Electrical Specifications 533 Trap 217 KHZ32_C 173 KHZZ32 173 L L1 ROM regions 120 L1WBEN 142 ZFx86 Data Book 1.0 Rev D I LBN Revision ID Register, 100H 603 LCK_RDBURST_EN 145 LDSMIHLDER 142 Legacy I/O Register Summary Table 204 Llockout Condition 305 LMEMRDEN 149 LMEMWREN 150 LOCK_N 178 LTMR 625 M M_FDC_PP 483 MA, Memory Address 116 MA_SLEW 159 MAC97 483 Input Table 486 Output Table 488 Main 3.3V Power Supply 193 Manager Software, Z-tag 459 MANUAL_REFRESH 158 Mask Address Register F3BAR0 242 F3BAR1 243 F3BAR2 243 F3BAR3 243 F3BAR4 243 F3BAR5 243 Master input assert 183 Master Reset, SB 187 MASTER_N 183 MCLK 191 MCLK_C 599 MCPI MPCI_CLK 483 MD_DQM_SLEW 159 MDAT 191, 599 MDSR 291 Measurement Condition Parameters 499 IDE Reset Timing Figure 504 Input Timing Figure 500 ISA Read Operation Figure 503 ISA Write Operation Figure 503 Output Timing Figure 499 ResetTiming Figure 500 MEM_CS 173, 410, 601 MEM_RESPOND 162 MEMCS16 186 Memory address is not cacheable 121 Memory Chip Select 173 Page 660 I Index Select 16 186 Memory Data Bus 117 Memory Interface 492 Memory Read, SB 187 Memory Write, SB 187 MEMR 187 MEMW 187 M-FDC_PP Input Table 485 Output Table 487 MIDE 483 Input 485 Output Table 487 Minutes Alarm Register, 03H 311 Register, 02H 311 Miscellaneous Device Control Register 222 Enable Register 210 MMC_D 483 MMC_SDCLK 484 MMC_SDCLKIN 484 MMC-D, Input Table 485 Modem Status Register, SB 370 Month Alarm Register 319 Offset (RTC) 308 Offset, F2H 301 Month Register, 08H 313 Motor Select, SB 190 Mouse Clock, SB 191 Configuration Register Table 295 Data Shift Register, 07H 284 Data, SB 191 On Serial Enable 222 Port Select 222 MPCI 483 Input 484 MR 187 MTR_N 597, 598 MTR0 190 Multiword DMA Data Transfer, IDE 509 MUSB 483 Input 485 Output Table 487 MVBAT 483 MWUSB 483 Input Table 486 Output Table 488 ZFx86 Data Book 1.0 Rev D N N_B0C 616 N_B0TC 616 N_B1C 617 N_B1TC 617 N_B2TC 618 N_B3C 618 NMI, Non-Maskable Interrupt 174 No Write-Posting to PCI Buffer 121 Non-Maskable Interrupt 174 NONPOST_RETRY_CNT 140 NONPOST_RETRY_DIS 140 North Bridge Address Map 118 Address Translation 121 Burst sequence 120 clock management, NB 136 Concurrent CPU and PCI busses 120 Configuration register table 137 CPU to PCI bus cycle conversion 133 CPU_SYNC 118 D signal 117 Deadlock 120 DRAM architecture 122 DRAM memory map 123 features 113 interface signals 116 IRQ13 118 MA 116 maximum local DRAM 119 PCI arbiter 127 PCI Config Address/Data Registers 130 PCI Memory Space 119 PCI Reads 134 PCI Registers 127 PCI Write Buffer and Bursts 129 Power Management 136 Processor Interface 118 Register programming 126 Register Set 136 Revision ID Register 100H 137 ROM Regions 120 SB_GNT 118 SB_PCICLK 118 SB_REQ 118 SCAN_EN 118 SCAN_MODE 118 SDRAM_CAS 117 SDRAM_CKE 117 SDRAM_CS 116 SDRAM_DQM 116 Page 661 Index SDRAM_RA 117 SDRAM_WE 116 SDRAMCLK 117 SMM Space 119 Special cycles 120 System Management Mode 134 Test Signals 162 TEST_SI1 118 TEST_SO1 118 TESTMODE 118 Upper ROM 119 Write buffer architecture 134 WRM_RESET 118 O OAH, Control Register A (RTC) 314 OCH, Control Register C (RTC) 318 On-Chip RAM Assignments 470 Operating case temperature 481 Optical Transceiver Interface 354 Output Generic 2 487 ISA Signals Table 501 MAC97 488 M-FDC_PP 487 MIDE 487 MMC_D 488 MUSB 487 MWUSB 488 PCI TRI-STATE Buffer 487 Timing Measurement Figure 499 Valid Timing Figure 493 Over Current, SB 182 OVER_CUR 182 P Pad Assignments 541 Paper End, SB 192 PAR 179 Parallel / Serial Idle Timer Count Register 223 Parallel Port 274–276 Configuration Register F0H 275 Data, SB 192 Electrical Specifications 534 Register Map Table 338 Register Table 629 Timing 534 Parallel/Serial Idle Timer Enable 217 PARERR_REP 162 ZFx86 Data Book 1.0 Rev D I Parm2EDX 588 PC98 148, 613 PCI Address/Data signals, SB 176 Arbiter Routing Register, 40H 625 arbiter, NB 127 Back-side, SB 168 BIST Register 208 BM_FREERUNMODE 149 Bus Command and Byte Enables, SB 177 bus cycle conversion, NB 133 Bus Grants, SB 177 Bus Requests, SB 177 Bus Timing Parameters 498 Bus, Electrical Specifications 495 busses, NB 120 Cache Line Size Register 208 Class Code Register 208 Class Code Register, USB 247 Clock management, NB 136 clock management, NB 136 Clock Parameters Table 497 Clock Run, SB 175 Clock SB 175 Clock, U25 pin 175 Command Register 207 Index 04h-05h 236 XBus Expansion 241 Command Register, 04H 624 Config Address/Data Registers, NB 130 Config Cycle Address Register 119 Configuration Address Register table 196 Control Register 11BH 145 Control Register, 11BH 610 Cycle Frame, SB 178 Deadlock 120 Device Select, SB 179 Function Control Registe 209 Functions Enable Register 210 Header Type 208 Header/Bridge Summary Table 197 Initiator Ready, SB 178 Interrupt Pins, SB 177 Interrupt Steering Register 213 Latency Timer Register 208 Latency Timer Register, 0DH 625 Lock, SB 178 Master Cycles, SB 168 Memory Space 119 NB Config Cycle Data Register 119 Parity Error, SB 179 Page 662 Index Parity, SB 179 reads, NB 134 registers, NB 127 Reset SB pin, U26 175 Revision Register, 08H 625 SMI Status Register Summary Table 200 Status Register 207 Status Register, 06H 624 Stop, SB 178 System Error, SB 180 Target Ready, SB 178 Tri-State Output 487 Vendor ID Register, 00H 624 Write buffer and bursts 129 Write FIFO Control Register 120H 148 Write FIFO Control Register, 120H 614 PCI_BM_SLOWRUNMODE 149 PCI_INT 177 PCI_RST_N 175 PCIC 610 PCICLK Figure 497 PCICLK_C 175, 600 PCIM2DRM_BRST_EN 145 PD 192, 600 PE 192 PE_N 600 PERR_N 179 PIC Master / Slave 254 Shadow Register 225 Pin Capacitance 482 Pin Descriptions Sorted by Pin Description 572 Sorted by Pin Name 558 Sorted by Pin Number 545 Pin List, ZF-Logic 409 Pin Multiplexor Register Table 637 Pinout Summary 541 PIO Data Transfer To/From Device, IDE 507 PIO Register Channel 0 Drive 0 237 Channel 0 Drive 1 238 Channel 1 Drive 0 238 Channel 1 Drive 1 238 PIT Control/ISA CLK Divider 211 Delayed Transactions Register 210 Shadow Registe 226 Timer Counter 253 POR_N 173 Port 22h 48 Port 23h 48 ZFx86 Data Book 1.0 Rev D I Port A Control Register 257 PORT1_M 182 PORT1_P 182 PORT2_M 182 PORT2_P 182 POST_RETRY_CNCT 140 POST_RETRYCNT_DIS 140 Power Enable, SB 182 Power Management Enable Register 216 NB 136 SB 170 POWER_EN 182 POWERON_SEQ 158 PR1 603 PR2 603 PR3 603 PR4 604 PRC 604 PREG1S 137 PRGREG1_SEL 138 Primary Hard Disk Idle Timer Count Register 223 Enable 217 Trap 218 Primary IDE Registers 257 PROC 608 Processor Control Register, 119H 142, 608 Processor interface 118 Programmable Interrupt Controller, SB 170 Programmable Interval Timer, SB 170 Programmable Region 1 Register, 110H 137, 603 2 Register 111H 137, 603 3 Register 112H 138, 603 4 Register 113H 138 Control Register 114H 138 Control Register, 114H 604 Programmable Region 4 Register, 113H 604 PS/2 KBD/MOUSE Wake-Up Config/Control Register Map 279, 291 Mouse/Keyboard Register Table 633 Protocol Ctrl Reg Bank 0 Offset 03h 283 PS2CTL 291 PS2KEY 291 PWM 601 Control Register, 08H 648 Duty Cycle Register, 06H 648 Generator, ZF-Logic 430 Page 663 Index R RAM Lock Register F0H 300 Table 307 RAM, On-Chip Assignments 470 RAS_CAS_SLEW 159 RD2WR_LAT 144 RDATA 190 RDATA_N 597 Read Data, SB 190 Real Time Clock 300–322 Config Register Table 300 REC_MST_ABRT 163 REC_TAG_ABRT 163 REFRPRD 158 Register Bitmap (RTC) 321 Programming, NB 126 Transfer To/From Device Table, IDE 505 Register Descriptions 195–257 REND 483 RENU 483 REQ1 177 REQa 148, 613 REQb 148 REQpci 148, 613 Request to Send, SB 194 res_out timing 491 Reset Control Register 210 CRC 588 RESET_CNT_ON_GNT 140 reset_n timing 490 Timing Measurement Figure 500 Revision ID Register 08H 163 RI 194 RID 603, 625 Ring Indicators (Modem), SB 194 ROM location of upper 119 Mask Register 214 ROM/AT Logic Control Register 211 RTC Address Register 257 Configuration 300 Configuration Register Bitmap Table 309 Configuration Register Map Table 307 Control Register A, 0AH 314 Register B, 0BH 316 Register C, 0CH 318 ZFx86 Data Book 1.0 Rev D I Register D, 0DH 319 Data Register 257 Index Shadow Register 226 Register Bitmap 321 Register Map Table 310 ZF-Logic, System Clock 447 RTS 194 RTS2_N 601 RX 194 RX_FIFO 352 S S_EOT 350 SA, System Address Bus Lines 184 SB_GNT 118 SB_PCICLK 118 SB_REQ 118 SBHE_N 186 SCAN_EN 118 SCAN_MODE 118 SCL Frequency 334 SCL_C 189 SCL_N 261 Scratch Register Index 444 SD, System Data Bus 184 SDA 189, 261 SDRAM Interface Signals Table 493 Mode Program Register 213H 158 Mode Program Register 214H 159 Mode Program Register, 213H 621 Mode Program Register, 214H 622 Power management, NB 136 Slew Control Register 239H 159 Slew Control Register, 239H 622 SDRAM_BANK_CONFIG 158 SDRAM_CKE 117 SDRAM_CMD_PIPELINE 156 SDRAM_CS 116 SDRAM_DQM 116 SDRAM_RA 117 SDRAM_WE 116 SDRAMCLK 117 SDRAMCLK_SKEW 146 SDRAMMPR 621 SDRAMSLEW 622 Second Level General Traps & Timers 234 PME/SMI Status Mirror Register 219 PME/SMI Status Registe 228 Secondary IDE Registers 257 Page 664 I Index Seconds Alarm Register, 01H 311 Register, Index 00H 310 SeekParm 589 Select Input, SB 193 Select, SB 192 Serial Input, SB 194 Serial Output, SB 194 Serial Port 1 Register Table 630 Serial Port 1/2 Configuration Register, F0H 293 Serial Port 2, Register Table 632 Serial Port Electrical Specifications 527 SerOut16 589 SerOut32 590 SerOut8 589 SerOutBits 590 SERR_N 180 SerRec 590 SerRecWait 591 SerSend 590 SerSend2 590 Shadow RAM Read Enable Control Register, 200H 149 Read Enable Register, 200H 615 Write Enable Control Register, 201H 150 Write Enable Register, 201H 615 SHADRC 615 SHADWC 615 SHARP-IR Mode, SB 346 Signal Descriptions 172–194 Clock Interface Signals 173 CPU Interface Signals 174 IDE Interface Signals 180 Reset Interface Signals 173 USB Interface Signals 182 SIO PWUREQ SMI Status 220 SIO_HIPRI 148, 613 SIOCFG 263 SIR Mode, SB 347 Slave Address Enable 333 SLCK 600 SLCT 192 SLCTIN_N 600 SLIN_N 193 SMEMR 186 SMEMW 187 SMI Speedup Disable Register 235 Status Register Summary Table 200 System Management Interrupt 174 ZFx86 Data Book 1.0 Rev D SMIHLDERLOCK 142 SMM base address 134 Control Register, 118H 606 memory space 119 North Bridge 134 SMM_DH_SEL 141 SMM_DL_SEL 141 SMM_EH_SEL 141 SMM_EL_SEL 141 SMMC 606 Snoop Control Register, 11DH 146, 611 SNOOPCTRL 611 Software SMI Register 228 South Bridge ACCESS.Bus Interface 298, 322 Architecture 166 AT Compatibility Logic 170 Back-Side PCI Bus 168 Banked Logical Device Registers 263 Battery-Backed RAMs and Registers 306 Bus Arbitration 325 CEIR Mode 347 Receive Operation 348 Transmit Operation 347 Chipset Register Space 206 DMA Controller 170 FDC Bitmap Summary 336 Features 165 FIFO Control Register 362 Timeouts 352 Floppy Disk Controller 272, 336 GPIO Interface 171 Support Registers 230 High Speed Infrared Receive 351 Transmit 350 IDE Controller 168 Registers 236 Support Registers 239 IER, Extended Mode 358 Infrared Comm Port Config 297 Integrated SuperI/O 169 IR Communication Port 345 Mode Register Bank 354 IrDA Mode 349 Page 665 I Index ISA Bus Interface 169 Legacy Register Space 248 Keyboard/Mouse Control 294, 335 Master Mode 325 Modem Status Register 370 Mouse Wake-Up Events 283 Mouse/Keyboard Config 295 Optical Transceiver I/F 354 Parallel Port Bitmap Summary Table 339 Register Map 338 Parallel Port Config 274–276 PCI Address/Data 176 Power Management 170 Power Supply 305 Programmable Interrupt Controller 170 Programmable Interval Timer 170 PS/2 Keyboard Registers 284 Keyboard/Mouse Wake-Up Events 283 RTC Configuration Registers 307 Overview 302 Registers 309 Serial Port 1 and 2 Config 292 SHARP-IR Mode 346 SIR Mode 347 SMI Status Support Registers 233 SuperI/O 258–271 Configuration Registers 269 System Wake-Up Control 276, 294 Timekeeping 303 Timer Registers 382 Timing Generation 303 UART Functionality 340 USB 168 Controller Registers 246 Special cycles, NB 120 ST_FIFO 352 STALL_PCI_BM_POST 149 Standard RAM Map 321 STAT 624 Status FIFO, SB 386 Status Register 06H 163 USB 246 STB_N 193 Step, SB 190 STEP_N 597 STOP_N 178 ZFx86 Data Book 1.0 Rev D STRB_N 600 Subsystem ID 209 Vendor ID 209 SuperI/O 258–271 Configuration 1 Register, 21H 270 Configuration 2 Register 22H 271 Configuration Options Table 263 disabled 263 General Purpose Scratch 270 Global Device Enable 270 ID Register, 20H 270 Lock Scratch 270 Pin Function Lock 270 Revision ID Register 27H 271 SW Reset 270 SUSP, CPU Suspend 175 SUSPA, CPU Suspend Acknowledge 174 Suspend Configuration Register 223 Suspend Logic 451 Suspend Modulation OFF Count Register 222 ON Count Registe 222 Suspend Notebook Command Register 225 SWAP_23_MAP 142 SWAP_DE_MAP 142 SYNC_OUT 162 SYSCLK, A20 450 sysclk_c 490 System Address Bus Lines 184 Bus High Enable, SB 186 Clocking, ZF-Logic 447 Data Bus, SB 184 System Management Interrupt 174 Mode 134 System Memory Read 186 Write 187 System Wake-Up Control 276–298 T TC 183 TCCD 152, 153, 154, 156 Temperature Absolute Maximum Ratings 481 Recommended Operating Conditions 482 Terminal Count 183 Test signals, NB 162 Page 666 Index TEST_SI1 118 TEST_SO1 118 TESTMODE 118 Timer Registers 382 Timer Test Register 228 Timing Fast IR Port 528 Floppy Disk Drive Control Timing 532 Reset 531 Write Data 531 GPIO 530 JTAG 529 Parallel Port 534 ZF-Logic 540 Top Level PME/SMI Status Mirror Register 233 Register 233 Top of System Memory 211 Track 0, SB 190 Traps 216 TRC 152, 153, 154, 155 TRCD 152, 153, 154, 156 TRDY_N 178 TRK0 190 TRK0_N 597 TRP 152, 153, 154, 155 TX 194 U UART Functionality 340 SP1/SP2 Bitmap 343 Mode, SB 346 Serial Port Electrical Specifications 527 Ultra DMA Data Burst Timing Requirements 511 USB ASIC Operational Mode Enable Register 248 Test Mode Enable Register 248 BIST Register 247 Cache Line Size Register 247 Command Register 246 Controller Register Summary Table 203 Electrical Specifications Table 523 Header Type Register ( 247 Interrupt Line Register 247 Interrupt Pin Register 248 Latency Timer Register 247 Max. Latency Register 248 Min. Grant Register 248 ZFx86 Data Book 1.0 Rev D I Port Data Minus, SB 182 Port Data Positive, SB 182 South Bridge 168 Status Register 246 Subsystem ID 247 Subsystem Vendor ID 247 User Defined Device 216 Base Address Register 226 Control Register 227 Idle Timer Count Register 224 Using the Dongle 456 V VBAT 193, 482 VDD 193 Vdd Core 482 I/O 482 Vendor ID Register 207 00H 162 VENDOR_ID 162 VID 624 VIH 484 W Wait, SB 192 Wake-Up 452 Configuration Register, 02H 282 Events Control Register, 01H 281 Status Register 00H 280 Warm reset 118 Watchdog Control 1 Register, 10H 648 Control 2 Register, 11H 648 Control High, 11H 428 Control Low, 10H 427 Generated Reset Pulse Length 427 Registers 426 Status, 12H 429 Timer 424 WCBR_MA 159 WDATA 190 WDATA_N 597 WDI 601 WDO 601 WE_SLEW 160 WFIFOC 609 WGATE 190 WGATE_N 597, 598 Page 667 Index WKCFG 291 WKCR 291 WKSR 291 WR_LATENCY 144 WRFIFO_EN 143 Write buffer architecture, NB 134 Write data, SB 190 Write FIFO Control Register, 11AH 143, 609 Write Gate, SB 190 Write Protected, SB 190 Write Strobe, SB 193 WRM_RESET 118 WRM_RST 143 WRPRT 190 WRPRT_N 597 X XBus Expansion Summary Table 202 Y Year Register, 09H 313 YModemGetData 592 YModemGetHeader 591 YModemSendData 594 YModemSendHeader 594 Z ZACK 598 ZCLK 598 ZDIN 598 Zero Wait States, SB 186 ZFiX 459 ZF-Logic BUR Base Register 445 Clocking 403 Options 444 Composit BootStrap Register 438 Data Registers, F0H to FEH 444 GPCS I/O mapper 422 Indices For Memory Windows 411 io_cs 422 ISA Memory Mapper for Flash/SRAM 410 Mem_cs 410 Pin List Table 409 Pins Associated 408 PWM Duty Cycle Index 406 Generator 430 I/O Control index 406 ZFx86 Data Book 1.0 Rev D I Prescaler Low Byte Index 406 Read Output Index 406 Register Space Summary 404 Register Summary Table 204 Revision Index 406 Scratch Register Index 444 System Clocking 447 Timing 540 Watchdog Control High 428 Generated Reset Pulse 427 Registers 426 Status, 12H 429 Timer 424 ZGPI0 598 ZLED1 598 ZLED2 598 ZPGPI1/CEN2_N 598 ZRST 598 ZT_Init 595 Z-tag Control Register 462 Dongle Jumpers 458 Floppy Disk Pins 460 Jumpers 458 Manager Software 459 Pass-through Mode 458 Using the dongle 456 ZFiX 459 ZTCMDExec 595 ZTPrepareRead 596 ZTRead 596 ZWS_N 186 Page 668 ZF Micro Solutions, Inc. 1000 Elwell Court - Suite 134 Palo Alto, California 94303 (650) 965-3800 · Fax 965-4050 www.zfmicro.com ZFx86 Data Book 1.0 Rev D Page 670
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : Yes Page Count : 670 Page Mode : UseOutlines XMP Toolkit : XMP toolkit 2.9.1-13, framework 1.6 About : uuid:13111205-dd64-4464-93eb-9dbe26baa015 Producer : Acrobat Distiller 6.0 (Windows) Creator Tool : FrameMaker 7.2 Modify Date : 2006:06:05 11:28:46Z Create Date : 2006:06:05 11:28:46Z Document ID : uuid:e6359556-5c3c-4078-b3bb-46784b04755a Format : application/pdf Description : 9100-0044-01 Rev C Title : ZFx86 Data Book Creator : ZF Micro Devices, Inc. Tagged PDF : Yes Author : ZF Micro Devices, Inc. Subject : 9100-0044-01 Rev CEXIF Metadata provided by EXIF.tools