MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Doc. No. 100723A June 21, 2000 Ordering Information Marketing Name Device Set Order No. MFC2000 xxx-xxx-xxx Part No. Package Part No. Package xxxxx Revision History Revision Date Comments A 04/07/00 Initial, internal, preliminary release of document. A 06/21/00 Second internal, preliminary release with revisions tracked. © 2000, Conexant Systems, Inc. All Rights Reserved. Information in this document is provided in connection with Conexant Systems, Inc. ("Conexant") products. These materials are provided by Conexant as a service to its customers and may be used for informational purposes only. Conexant assumes no responsibility for errors or omissions in these materials. Conexant may make changes to specifications and product descriptions at any time, without notice. Conexant makes no commitment to update the information contained herein. Conexant shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to its specifications and product descriptions. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted by this document. Except as provided in Conexant’s Terms and Conditions of Sale for such products, Conexant assumes no liability whatsoever. THESE MATERIALS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, RELATING TO SALE AND/OR USE OF CONEXANT PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Conexant further does not warrant the accuracy or completeness of the information, text, graphics or other items contained within these materials. Conexant shall not be liable for any special, indirect, incidental, or consequential damages, including without limitation, lost revenues or lost profits, which may result from the use of these materials. Conexant products are not intended for use in medical, life saving or life sustaining applications. Conexant customers using or selling Conexant products for use in such applications do so at their own risk and agree to fully indemnify Conexant for any damages resulting from such improper use or sale. The following are trademarks of Conexant Systems, Inc.: Conexant, the Conexant C symbol, “What’s Next in Communications Technologies”, and SmartDAA. Product names or services listed in this publication are for identification purposes only, and may be trademarks of third parties. Third-party brands and names are the property of their respective owners. Reader Response: Conexant strives to produce quality documentation and welcomes your feedback. Please send comments and suggestions to [email protected]. For technical questions, contact your local Conexant sales office or field applications engineer. ii Conexant 100723A Contents 1. INTRODUCTION .............................................................................................................................................. 1-1 1.1 SCOPE ...................................................................................................................................................... 1-1 1.2 SYSTEM OVERVIEW ................................................................................................................................ 1-1 1.3 REFERENCE DOCUMENTATION............................................................................................................ 1-5 2. MFC2000 SUMMARY ...................................................................................................................................... 2-1 2.1 MFC2000 DEVICE FAMILY....................................................................................................................... 2-1 2.2 MFC2000 SYSTEM BLOCK DIAGRAM .................................................................................................... 2-1 3. HARDWARE INTERFACE............................................................................................................................... 3-1 3.1 PIN DESCRIPTION ................................................................................................................................... 3-1 3.2 MAXIMUM RATINGS................................................................................................................................. 3-7 3.3 ELECTRICAL CHARACTERISTICS.......................................................................................................... 3-8 3.4 PIN LAYOUT............................................................................................................................................ 3-10 4. CPU AND BUS INTERFACE ........................................................................................................................... 4-1 4.1 MEMORY MAP AND CHIP SELECT DESCRIPTION ............................................................................... 4-1 4.2 CACHE MEMORY CONTROLLER.......................................................................................................... 4-19 4.3 SIU………. ............................................................................................................................................... 4-24 4.4 INTERRUPT CONTROLLER................................................................................................................... 4-46 4.5 DRAM CONTROLLER (INCLUDING BATTERY DRAM) ........................................................................ 4-54 4.6 FLASH MEMORY CONTROLLER........................................................................................................... 4-72 4.7 DMA CONTROLLER ............................................................................................................................... 4-76 5. RESET LOGIC/BATTERY BACKUP/WATCH DOG TIMER........................................................................... 5-1 5.1 RESET LOGIC/BATTERY BACKUP ......................................................................................................... 5-1 5.2 WATCHDOG TIMER ............................................................................................................................... 5-11 6. FAX TIMING CONTROL INTERFACE ............................................................................................................ 6-1 6.1 PLL………….. ............................................................................................................................................ 6-1 6.2 FAX TIMING LOGIC .................................................................................................................................. 6-2 6.3 MFC2000 TIMING CHAIN ......................................................................................................................... 6-3 6.4 SCAN CONTROL TIMING......................................................................................................................... 6-4 6.5 FAX TIMING REGISTERS......................................................................................................................... 6-5 7. VIDEO/SCANNER CONTROLLER ................................................................................................................. 7-1 7.1 SCANNER CONTROLLER........................................................................................................................ 7-2 7.2 SERIAL PROGRAMMING INTERFACE.................................................................................................. 7-41 7.3 VIDEO CONTROLLER ............................................................................................................................ 7-50 8. ADC……........................................................................................................................................................... 8-1 8.1 PADC AND SCAN ANALOG FRONT END ............................................................................................... 8-1 8.2 TADC……………………. ........................................................................................................................... 8-5 100723A Conexant iii 9. BI-LEVEL RESOLUTION CONVERSION ....................................................................................................... 9-1 9.1 FUNCTIONAL DESCRIPTION .................................................................................................................. 9-1 9.2 REGISTER DESCRIPTION ....................................................................................................................... 9-6 9.3 RESOLUTION CONVERSION PROGRAMMING EXAMPLES............................................................... 9-15 10. EXTERNAL PRINT ASIC INTERFACE ......................................................................................................... 10-1 10.1 INTERFACE BETWEEN THE MFC2000 AND EXTERNAL PRINT ASIC .......................................... 10-1 11. BIT ROTATION LOGIC.................................................................................................................................. 11-1 11.1 FUNCTIONAL DESCRIPTION ............................................................................................................ 11-1 11.2 BLOCK DIAGRAM............................................................................................................................... 11-3 11.3 REGISTER DESCRIPTION................................................................................................................. 11-6 11.4 FIRMWARE OPERATION................................................................................................................. 11-10 12. PRINTER AND SCANNER STEPPER MOTOR INTERFACE ...................................................................... 12-1 12.1 VERTICAL PRINT STEPPER MOTOR INTERFACE ......................................................................... 12-1 12.2 SCANNER STEPPER MOTOR INTERFACE ..................................................................................... 12-5 13. GENERAL PURPOSE INPUTS/OUTPUTS (GPIO) ...................................................................................... 13-1 13.1 GPIO SIGNALS ................................................................................................................................... 13-1 13.2 GPO/GPI SIGNALS............................................................................................................................. 13-5 13.3 GPIO CONTROL AND DATA REGISTERS........................................................................................ 13-6 14. COMPRESSOR AND DECOMPRESSOR..................................................................................................... 14-1 14.1 FUNCTIONAL DESCRIPTION ............................................................................................................ 14-1 14.2 REGISTER DESCRIPTION................................................................................................................. 14-2 15. SYNCHRONOUS/ASYNCHRONOUS SERIAL INTERFACE (SASIF) ......................................................... 15-1 15.1 FUNCTIONAL DESCRIPTION ............................................................................................................ 15-1 15.2 REGISTER DESCRIPTION................................................................................................................. 15-3 15.3 SASIF TIMING................................................................................................................................... 15-12 15.4 FIRMWARE OPERATION................................................................................................................. 15-16 16. USB INTERFACE .......................................................................................................................................... 16-1 16.1 FUNCTION DESCRIPTION ................................................................................................................ 16-1 16.2 REGISTER DESCRIPTION................................................................................................................. 16-1 16.3 FIRMWARE OPERATION................................................................................................................. 16-23 17. BI-DIRECTIONAL PARALLEL PERIPHERAL INTERFACE........................................................................ 17-1 iv 17.1 OPERATIONAL MODES..................................................................................................................... 17-1 17.2 ADDITIONAL FEATURES................................................................................................................... 17-2 17.3 FUNCTIONAL DESCRIPTION ............................................................................................................ 17-3 17.4 REGISTER DESCRIPTION................................................................................................................. 17-4 17.5 TIMING .............................................................................................................................................. 17-16 17.6 FIRMWARE OPERATION................................................................................................................. 17-22 Conexant 100723A 18. REAL-TIME CLOCK ...................................................................................................................................... 18-1 18.1 DESCRIPTION .................................................................................................................................... 18-1 18.2 REAL-TIME CLOCK (RTC) REGISTERS ........................................................................................... 18-2 18.3 RTC OPERATIONS............................................................................................................................. 18-3 19. SYNCHRONOUS SERIAL INTERFACE (SSIF)............................................................................................ 19-1 19.1 INTRODUCTION AND FEATURES .................................................................................................... 19-1 19.2 REGISTER DESCRIPTION................................................................................................................. 19-2 19.3 SSIF TIMING ....................................................................................................................................... 19-7 20. PROGRAMMABLE TONE GENERATORS .................................................................................................. 20-1 20.1 INTRODUCTION ................................................................................................................................. 20-1 20.2 BELL/RINGER GENERATOR ............................................................................................................. 20-1 20.3 TONE GENERATOR........................................................................................................................... 20-6 21. PWM LOGIC .................................................................................................................................................. 21-1 21.1 FUNCTIONAL DESCRIPTION ............................................................................................................ 21-1 21.2 REGISTER DESCRIPTION................................................................................................................. 21-2 22. CALLING PARTY CONTROL (CPC) ............................................................................................................ 22-1 22.1 REGISTERS DESCRIPTION .............................................................................................................. 22-5 23. SSD_P80 ........................................................................................................................................................ 23-1 23.1 FUNCTION DESCRIPTION ................................................................................................................ 23-1 23.2 REGISTER DESCRIPTION................................................................................................................. 23-3 23.3 FIRMWARE OPERATION................................................................................................................... 23-6 24. COUNTACH IMAGING DSP BUS SUBSYSTEM ......................................................................................... 24-1 24.1 COUNTACH IMAGING DSP SUBSYSTEM........................................................................................ 24-3 24.2 COUNTACH IMAGING DSP BUS UNIT ............................................................................................. 24-4 24.3 ARM BUS INTERFACE....................................................................................................................... 24-8 24.4 COUNTACH IMAGING DSP SUBSYSTEM INTERFACE ................................................................ 24-11 24.5 COUNTACH DMA CONTROLLER.................................................................................................... 24-12 24.6 VIDEO/SCANNER INTERFACE ....................................................................................................... 24-22 24.7 (S)DRAM CONTROLLER ((S)DRAMC) ............................................................................................ 24-23 24.8 REGISTER DESCRIPTION............................................................................................................... 24-28 25. CONFIGURATION ......................................................................................................................................... 25-1 25.1 HARDWARE VERSION ...................................................................................................................... 25-1 25.2 PRODUCT CODE ............................................................................................................................... 25-1 100723A Conexant v Figures Figure 1-1. MFP System Diagram Using MFC2000 .............................................................................................................. 1-1 Figure 1-2: MFC2000 Function Diagram ............................................................................................................................... 1-4 Figure 2-1. MFC2000 Organization ....................................................................................................................................... 2-2 Figure 3-1. MFC2000 BGA Bottom View ............................................................................................................................. 3-10 Figure 4-1. MFC2000 Memory Map....................................................................................................................................... 4-6 Figure 4-2. MFC2000 Internal Memory Map.......................................................................................................................... 4-7 Figure 4-3. MFC2000 Cache Organization .......................................................................................................................... 4-19 Figure 4-4. 2-Way Interleave ROM Connection................................................................................................................... 4-26 Figure 4-5. Zero Wait State, Single Access, Normal Read, Normal Write ........................................................................... 4-36 Figure 4-6. One Wait State, Single Access, One Read, One Write ..................................................................................... 4-37 Figure 4-7. Two Wait States, Single Access, Read On Delayed (CS1n), Write Early Off (CS2n)........................................ 4-38 Figure 4-8. Zero Wait State, Burst Access, Normal Read, Normal Write............................................................................. 4-39 Figure 4-9. Fast Page Mode ROM Access1,0,0 Read Access Followed by 1,1,1,1, Write Access.................................. 4-40 Figure 4-10. System Bus TimingRead/Write with Wait States ......................................................................................... 4-41 Figure 4-11. System Bus TimingZero-Wait-State Read/Write.......................................................................................... 4-42 Figure 4-12. System Bus Timing2-Way Interleave Read Timing (S = 1).......................................................................... 4-43 Figure 4-13. System Bus Timing2-Way Interleave Write Timing (S = 0 or 1)................................................................... 4-44 Figure 4-14. External Interrupt Request Timing................................................................................................................... 4-54 Figure 4-15. DRAM Bank/Address Map............................................................................................................................... 4-56 Figure 4-16. Simplified DRAM Controller Block Diagram .................................................................................................... 4-59 Figure 4-17. DRAM Interface Example ................................................................................................................................ 4-60 Figure 4-18. 8-bit Memory Data Bus.................................................................................................................................... 4-65 Figure 4-19. 16-bit Memory Data Bus.................................................................................................................................. 4-65 Figure 4-20. CASn Non-Interleaved 8-bit DRAM Read........................................................................................................ 4-66 Figure 4-21. 2-Way Interleaved Memory with Halfword Bursts of Data ............................................................................... 4-66 Figure 4-22. 2-Way Interleaved DRAM Read (3 words) ...................................................................................................... 4-67 Figure 4-23. 2-Way Interleaved DRAM Write ...................................................................................................................... 4-67 Figure 4-24. Refresh Cycle.................................................................................................................................................. 4-68 Figure 4-25. DRAM TimingRead, Write and Wait States for Non-interleave Mode .......................................................... 4-68 Figure 4-26. DRAM Timing for 2-way Interleave Write ........................................................................................................ 4-69 Figure 4-27. DRAM TimingRead for 2-way interleave mode............................................................................................ 4-69 Figure 4-28. DRAM Refresh Timing .................................................................................................................................... 4-70 Figure 4-29. DRAM Battery Refresh Timing ........................................................................................................................ 4-70 Figure 4-30. Flash Control Block Diagram........................................................................................................................... 4-73 Figure 4-31. NAND-Type Flash Memory Access with Two Wait States .............................................................................. 4-75 Figure 4-32: External DMA Read Timing (Single Access, One Wait State) ......................................................................... 4-80 Figure 4-33. External DMA Write Timing (Single Access, One Wait State) ......................................................................... 4-81 Figure 4-34. USB Logical Channels Block Diagram ............................................................................................................ 4-82 Figure 5-1. Power Reset Block Diagram................................................................................................................................ 5-2 vi Conexant 100723A Figure 5-2. Power-down Select Logic .................................................................................................................................... 5-3 Figure 5-3. Power Reset Timing Diagram.............................................................................................................................. 5-5 Figure 5-4. +5v Prime Power Signal and VGG ...................................................................................................................... 5-6 Figure 5-5. Internal Power Detection ................................................................................................................................... 5-10 Figure 5-6. Figure Caption Required ................................................................................................................................... 5-10 Figure 5-7. Voltage Divider Circuit....................................................................................................................................... 5-11 Figure 5-8. Watchdog Timer Block Diagram........................................................................................................................ 5-12 Figure 5-9. Watchdog Time-Out Timing Diagram ................................................................................................................ 5-13 Figure 6-1. Fax Timing Control Logic Block Diagram ............................................................................................................ 6-2 Figure 6-2. MFC2000 Timing Chain ...................................................................................................................................... 6-3 Figure 6-3. Scan Control Timing............................................................................................................................................ 6-4 Figure 7-1. Video/Scanner Controller Block Diagram ............................................................................................................ 7-1 Figure 7-2. Untitled Timing Diagram .................................................................................................................................... 7-19 Figure 7-3. Untitled Timing Diagram .................................................................................................................................... 7-20 Figure 7-4. Untitled Timing Diagram .................................................................................................................................... 7-20 Figure 7-5. Untitled Timing Diagram .................................................................................................................................... 7-21 Figure 7-6. Untitled Timing Diagram .................................................................................................................................... 7-22 Figure 7-7. Untitled Timing Diagram .................................................................................................................................... 7-23 Figure 7-8. Untitled Timing Diagram .................................................................................................................................... 7-23 Figure 7-9. Untitled Timing Diagram .................................................................................................................................... 7-24 Figure 7-10. Untitled Timing Diagram .................................................................................................................................. 7-24 Figure 7-11. Untitled Timing Diagram .................................................................................................................................. 7-24 Figure 7-12. Untitled Timing Diagram .................................................................................................................................. 7-25 Figure 7-13. Untitled Timing Diagram .................................................................................................................................. 7-25 Figure 7-14. Untitled Timing Diagram .................................................................................................................................. 7-26 Figure 7-15. Untitled Timing Diagram .................................................................................................................................. 7-28 Figure 7-16. Untitled Timing Diagram .................................................................................................................................. 7-30 Figure 7-17. Untitled Timing Diagram .................................................................................................................................. 7-32 Figure 7-18. Untitled Timing Diagram .................................................................................................................................. 7-34 Figure 7-19. Untitled Timing Diagram .................................................................................................................................. 7-36 Figure 7-20. Untitled Timing Diagram .................................................................................................................................. 7-38 Figure 7-21. External circuit required for SONY–ILX516K interface .................................................................................... 7-40 Figure 7-22. LED timing for SONY–ILX516K....................................................................................................................... 7-40 Figure 7-23. Serial Programming Interface, Physical Connection ....................................................................................... 7-41 Figure 7-24. Bus Protocol .................................................................................................................................................... 7-42 Figure 7-25. Serial Programming Interface, Timing Diagram............................................................................................... 7-42 Figure 7-26. Stretching the Low Period of the Clock ........................................................................................................... 7-44 Figure 7-27. Firmware OperationTransmission................................................................................................................ 7-48 Figure 7-28. Firmware OperationReception ..................................................................................................................... 7-49 Figure 7-29. Connection to External Video Capture Device ................................................................................................ 7-51 Figure 7-30. Untitled Timing Diagram .................................................................................................................................. 7-54 100723A Conexant vii Figure 7-31. DMA Operation................................................................................................................................................ 7-55 Figure 8-1. Untitled Figure ..................................................................................................................................................... 8-1 Figure 9-1: Bi-level Resolution Conversion Block Diagram ................................................................................................... 9-2 Figure 9-2. The Physical Nozzle Diagram for Typical Inkjet Heads ....................................................................................... 9-5 Figure 9-3. Untitled Figure ..................................................................................................................................................... 9-5 Figure 9-4: Resolution Conversion Programming................................................................................................................ 9-15 Figure 10-1. Print ASIC Interface......................................................................................................................................... 10-2 Figure 11-1. Nozzle Diagram of a Typical Programmable Inkjet Head ................................................................................ 11-1 Figure 11-2. Examples of Nozzle Head Configurations ....................................................................................................... 11-2 Figure 11-3. Nozzle Configuration by Bit Rotation Block (Regardless of Physical Nozzle Configuration) ........................... 11-2 Figure 11-4. MFC2000 Bit Rotation Block Diagram............................................................................................................. 11-3 Figure 11-5. Fetcher DMA Channel Fetch Order................................................................................................................. 11-4 Figure 11-6. CPU Background Print Data Preparation ...................................................................................................... 11-12 Figure 11-7. MFC2000 Little-Endian Format ..................................................................................................................... 11-13 Figure 12-1. Vertical Printer Motor Control Block Diagram .................................................................................................. 12-1 Figure 12-2. Stepping Timing .............................................................................................................................................. 12-2 Figure 12-3. Scan Motor Control Diagram ........................................................................................................................... 12-5 Figure 12-4. Stepping Timing .............................................................................................................................................. 12-7 Figure 12-5: Current Control Diagram ................................................................................................................................. 12-9 Figure 14-1. Data Flow for Compression/Decompression ................................................................................................... 14-1 Figure 14-2. Compressor/Decompressor FIFO Structure .................................................................................................... 14-2 Figure 15-1. SASIF Block Diagram...................................................................................................................................... 15-2 Figure 15-2. SASSCLK Timing Diagram............................................................................................................................ 15-12 Figure 15-3. Synchronous Mode Timing............................................................................................................................ 15-13 Figure 15-4. Asynchronous Transmitter Timing................................................................................................................. 15-14 Figure 17-1. Parallel Port Interface Controller Block Diagram ............................................................................................. 17-3 Figure 17-2. Compatibility Mode Timing Diagram.............................................................................................................. 17-16 Figure 17-3. Nibble Mode Data Transfer Cycle ................................................................................................................. 17-17 Figure 17-4. BYTE Mode Data Transfer Cycle .................................................................................................................. 17-18 Figure 17-5. ECP Mode Timing Diagram........................................................................................................................... 17-19 Figure 17-6. Reverse ECP Transfer Timing....................................................................................................................... 17-20 Figure 17-7. Error Cycle Timing Diagram .......................................................................................................................... 17-21 Figure 18-1. RTC Block Diagram......................................................................................................................................... 18-1 Figure 19-1. SSIF Block Diagram ........................................................................................................................................ 19-1 Figure 19-2. SSCLK1 Diagram ............................................................................................................................................ 19-3 Figure 19-3. SSCLK2 Diagram ............................................................................................................................................ 19-6 Figure 19-4. Timing Diagram ............................................................................................................................................... 19-8 Figure 20-1. Bell/Ringer Timing ........................................................................................................................................... 20-1 Figure 20-2. Bell/Ringer Block Diagram .............................................................................................................................. 20-2 Figure 20-3. Bell/Ringer Generator Waveform .................................................................................................................... 20-3 Figure 20-4. Tone Generator Frequency Change................................................................................................................ 20-6 viii Conexant 100723A Figure 22-1: CPC Signal...................................................................................................................................................... 22-1 Figure 22-2. CPC Operation Flowchart ............................................................................................................................... 22-2 Figure 22-3: CPC Operation (with CPCThreshold = 4)........................................................................................................ 22-3 Figure 22-4: CPC Block Diagram ........................................................................................................................................ 22-4 Figure 23-1. System Configuration One .............................................................................................................................. 23-1 Figure 23-2. System Configuration Two .............................................................................................................................. 23-2 Figure 23-3. System Configuration Three............................................................................................................................ 23-2 Figure 24-1. The ARM Bus System Block Diagram............................................................................................................. 24-2 Figure 24-2. SDRAM Setup and Hold Timing .................................................................................................................... 24-29 Figure 24-3. SDRAM Read or Write Timing....................................................................................................................... 24-30 Figure 24-4. SDRAM Mode Timing.................................................................................................................................... 24-30 Figure 24-5. SDRAM Refresh Timing ................................................................................................................................ 24-30 Figure 24-6. FPDRAM Timing (Read or Write) .................................................................................................................. 24-31 Figure 24-7. FPDRAM Timing (Refresh)............................................................................................................................ 24-33 100723A Conexant ix Tables Table 1-1. Reference Documentation.................................................................................................................................... 1-5 Table 2-1. MFC2000 Device Family ...................................................................................................................................... 2-1 Table 3-1. Pin Description (1 of 6) ......................................................................................................................................... 3-1 Table 3-2. Maximum Ratings................................................................................................................................................. 3-7 Table 3-3. Digital Input Characteristics .................................................................................................................................. 3-8 Table 3-4. Output Characteristics .......................................................................................................................................... 3-8 Table 3-5. Power Supply Requirements ................................................................................................................................ 3-9 Table 3-6. Battery Power Supply Current Requirements....................................................................................................... 3-9 Table 4-1. Fixed-Location and Size Chip Selects .................................................................................................................. 4-4 Table 4-2. Operation Register Map (1 of 9) ........................................................................................................................... 4-8 Table 4-3. Setup Registers (1 of 2)...................................................................................................................................... 4-17 Table 4-4. Cache Tag Data Format (for Test Mode Read/Write Operation) ........................................................................ 4-20 Table 4-5. Access Modes for Reading ROM ....................................................................................................................... 4-27 Table 4-6. Read Operation (Internal Peripheral Gets Data From Memory) ......................................................................... 4-29 Table 4-7. Write Operation (Internal Peripheral Puts Data Into Memory) ............................................................................ 4-29 Table 4-8. Read/Write with Wait States Timing Parameters................................................................................................ 4-45 Table 4-9. MFC2000 Interrupt and Reset Signals ............................................................................................................... 4-46 Table 4-10. Programmable Resolution of Timer1 and Timer2 ............................................................................................. 4-53 Table 4-11. DRAM Wait State Configurations ..................................................................................................................... 4-55 Table 4-12. Address MultiplexingPart 1 ........................................................................................................................... 4-57 Table 4-13. Address MultiplexingPart 2 ........................................................................................................................... 4-57 Table 4-14. DRAM Row/Column Configuration ................................................................................................................... 4-58 Table 4-15. DRAM Timing Parameters................................................................................................................................ 4-71 Table 4-16. Feature Matrix .................................................................................................................................................. 4-77 Table 4-17. DMA Channel Functions and Characteristics ................................................................................................... 4-78 Table 4-18 DMA Channel 3 Control Bit Sssignment............................................................................................................ 4-79 Table 6-1. Operation Mode Frequencies ............................................................................................................................... 6-1 Table 7-1. Register setup for Rohm–IA3008–ZE22............................................................................................................. 7-27 Table 7-2. Register setup for Dyna–DL507–07UAH............................................................................................................ 7-29 Table 7-3. Register setup for Mitsubishi-GT3R216.............................................................................................................. 7-31 Table 7-4. Register Setup for Toshiba–CIPS218MC300 ..................................................................................................... 7-33 Table 7-5. Register Setup for NEC – µPD3724 ................................................................................................................... 7-35 Table 7-6. Register setup for NEC – µPD3794.................................................................................................................... 7-37 Table 7-7. Register Setup for SONY – ILX516K.................................................................................................................. 7-39 Table 8-1. Untitled Table ....................................................................................................................................................... 8-2 Table 8-2. Untitled Table ....................................................................................................................................................... 8-2 Table 8-3. Offset Adjustment on DAC ................................................................................................................................... 8-2 Table 8-4. Programmable Gain Amplifier (PGA).................................................................................................................... 8-3 Table 8-5. Pipelined ADC (PADC)......................................................................................................................................... 8-4 x Conexant 100723A Table 8-6. PADC Timing Diagram ......................................................................................................................................... 8-4 Table 8-7. TADC Block Diagram ........................................................................................................................................... 8-5 Table 9-1. Untitled Table ....................................................................................................................................................... 9-2 Table 9-2: Procedure to determine Pixels to remove........................................................................................................... 9-17 Table 9-3: Resolution Conversion Examples....................................................................................................................... 9-17 Table 12-1. Full Step/Single Phase Excitation..................................................................................................................... 12-3 Table 12-2. Full Step/Two Phase Excitation ........................................................................................................................ 12-3 Table 12-3. Half-Step Excitation .......................................................................................................................................... 12-3 Table 12-4. Full Step/Single Phase Excitation..................................................................................................................... 12-7 Table 12-5. Full Step/Two Phase Excitation ........................................................................................................................ 12-7 Table 12-6. Half-Step Excitation .......................................................................................................................................... 12-8 Table 18-1. RTC Crystal Specifications for 32.768 kHz....................................................................................................... 18-4 Table 20-1. Bell/Ringer Setting............................................................................................................................................ 20-2 Table 23-1. SSD Registers .................................................................................................................................................. 23-4 Table 23-2. P80 CORE Registers........................................................................................................................................ 23-5 Table 24-1. Needs a title.................................................................................................................................................... 24-11 Table 24-2. DMA Channels: Functionality and Priorities ................................................................................................... 24-12 Table 24-3. DMA Parameters Scratch Pad Addresses...................................................................................................... 24-13 Table 24-4: Supported FPDRAM Chip Characteristics...................................................................................................... 24-23 Table 24-5: Supported SDRAM Chip Characteristics ........................................................................................................ 24-23 Table 24-6. Untitled table................................................................................................................................................... 24-25 Table 24-7. Untitled table................................................................................................................................................... 24-26 Table 24-8. Untitled table................................................................................................................................................... 24-26 Table 24-9. SDRAM Setup and Hold Timing ..................................................................................................................... 24-29 Table 24-10. Timing Parameters for 16-bit SDRAM Read and Write ................................................................................ 24-31 Table 24-11. Timing Parameters for 8-bit SDRAM Read and Write .................................................................................. 24-31 Table 24-12. 60ns Timing .................................................................................................................................................. 24-32 Table 24-13. 50ns Timing .................................................................................................................................................. 24-32 Table 24-14. FPDRAM Timing (Refresh)........................................................................................................................... 24-33 100723A Conexant xi This page is intentionally blank xii Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 1. Introduction 1.1 Scope This document defines and describes all hardware functions of the MFC2000 chip. The MFC2000 design is based on the MFC1000 design with many minor modifications/enhancements. It has several new key functions to accomplish the following: • • • • 1.2 Support a full color MFP Enhance connectivity to the PC Provide an internal Fax Modem Connect to external Conexant video chips System Overview The Conexant Multi-Functional Peripheral Controller 2000 (MFC2000) device set hardware, core code, application code, and evaluation system comprise a full color Multi-Functional Peripheral (MFP) system−needing only a power supply, scanner, printer mechanism, and paper path components to complete the machine. The standard device set hardware includes Conexant’s MFC2000 chip, Conexant’s SmartDAA or IA chip, and a Printer Interface chip. Optionally, a Conexant video chip with VIP interface can be used to support the video capture function. If V.17 or V.34 faxing without voice is required, the internal V.17/V.34 Fax Modem in the MFC2000 chip is used and the MFC2000 is connected to the external Conexant SmartDAA or IA chip. If the voice/speech function is required, the external Voice Fax Modem device from Conexant will be needed. Any other external interface device can be supported by using the external ARM for CPU and DMA accesses or by using the internal serial interface. An MFP system-level block diagram using the MFC 2000 is illustrated in Figure 1-1. Prime power/ Battery power hybrid and power down circuit Operator Panel module VDD Battery Serial Interface (sync.) PC NTSC /PAL SPI and VIP Interface USB Interface or P1284 Interface Video Chip (Conexant) MFC2000 Video Camera (Conexant) Color Scanner module Conexant Proprietary Interface Scanner Interface SmartDAA (Conexant) Telephone Line (Color Faxing) Video/Scan SDRAM/DRAM Program ROM/Flash Memory External ARM Bus Data DRAM/SRAM/Flash Memory Printer IF (Conexant) Color Inkjet Printer Figure 1-1. MFP System Diagram Using MFC2000 100723A Conexant 1-1 MFC2000 Multifunctional Peripheral Controller 2000 1.2.1 Hardware Description Integrated Full Color MFP Controller (MFC2000) The MFC2000 provides the majority of the electronics necessary to build a color scan and color inkjet printer based MFP whose electronics are integrated into a one-chip solution including one CPU (ARM7TDMI) and two DSPs (Countach Imaging DSP subsystem and P80 core). Full printer and copier functionality is provided by the following: • • • • • • • • • 1284 parallel port interface USB serial port interface Color scanner interface/controller Countach Imaging DSP subsystem for video/scan/compression process Flash memory controller SDRAM/DRAM controllers Resolution conversion logic Inkjet data formatter External inkjet printing In addition, the MFC2000 performs facsimile control/monitoring, compression/decompression, and 33.6 Kbps Fax Modem functions (P80 core). The MFC2000 interfaces with major MFP machine components like external modems, SmartDAA, external Fax IA, motors, sensors, external video chip, and operator control panel. The ARM7TDMI-embedded processor provides an external 48-MB direct memory access capability. An integrated 12-bit Pipeline ADC (PADC) and countach subsystem (DSP subsystem, combined with an advanced Conexant proprietary color image processing algorithm, provides state of the art image processing performance on any type of images, including text/half-tone and color images. The full color MFP Engine provides the hardware and software necessary to develop a full-color Multifunctional Peripheral including an architecture for color printing, color faxing, color scanning, video capturing, and color copying. It also supports many of these operations concurrently. 1.2.1.1 Printing The MFC2000 Controller supports color inkjet printing. Print speed throughput capabilities are inversely proportional to resolution and also depend on the external printer interface. For host printing, the host sends the image data with the print resolution; the MFC2000 performs no resolution conversion. If host printing and faxing need to be performed for the same image, the printing image data must be sent to the MFP. The MFC2000 converts the printing image data to the faxing image data locally and then faxes it out. An external printer interface chip is designed to support inkjet print mechanism/head subsystems. Different external printer interface chips can be designed and used to support other inkjet mechanisms and heads according to customer requirements. 1.2.1.2 Faxing Both host-based color faxing and standalone color faxing are supported in addition to monochrome faxing. Hostbased faxing can take place by using a Class One connection via the USB serial port or the P1284 parallel port. For host faxing, the host sends the image data with the fax resolution; the MFC2000 performs no resolution conversion. For standalone faxing, the resolution conversion is supported by the MFC2000. The standalone color scan-to-fax function is supported using the advanced Conexant proprietary color image processing technology: • • • • • • • 1-2 Shading correction Gamma correction Pixel-based dark-level correction Color/monochrome image processing Color conversion JPEG Multi-level resolution conversion. Conexant 100723A Hardware Description 1.2.1.3 MFC 2000 Multifunctional Peripheral Controller 2000 Scanning For the color scan-to-PC function, up to 8 bits of scan data per pixel can be sent to the host. JPEG compression can be used to reduce the PC upload speed. 1.2.1.4 Copying The MFC2000 and associated firmware supports several modes of copying including standard, fine, superfine, and photo. Multiple copies of a single image can be made with a single pass. The standalone color/monochrome copy function is supported by using MFC2000’s Inkjet print formatter, the external printer interface, and the advanced Conexant proprietary color image processing system. 1.2.2 MFC2000 Evaluation System The Conexant MFC2000 Evaluation System provides demonstration, prototype development, and evaluation capabilities to full color MFP developers using the MFC2000 Engine device set. The MFC2000 Evaluation system provides flexibility for visibility and access, i.e., plug-on board for the modem, sockets for programmable parts, and connectors for an emulator (refer to Figure 1-2). Jumper options and test points are provided throughout the MFC2000 evaluation Main Board. The MFC2000 Evaluation System is the most convenient environment for the developer needing to experiment with the several interfaces encountered in the full color MFP, for example, color printer functions. 1.2.3 • • • • • • • • • • • New Function Highlights PLL Clock Generation for several different clocks needed for ARM CPU, Countach Imaging DSP, Fax Modem core, and USB Interface 4 KB 2-way Set Associative Instruction Cache USB Interface (including USB Transceiver) to PC Video/ Color Scan Controller (up to 600 dpi) (including programmable ADC sampling rate) Countach Imaging DSP Subsystem for pixel-based dark level correction, shading correction, gamma correction, video/color scan image processing, color science and JPEG Countach Bus System which includes Countach Subsystem Interface, ARM Bus Interface, Video/Scan Interface, Countach Bus Unit, Countach DMA Controller, and SDRAM Controller. SmartDAA/IA Interface P80 Core + ARM IPB interface logic (V.34 Fax Modem core) Two Sync. Serial Interfaces Color Scan IA which includes Color Scan analog Front End, 12-bit PADC, Power-down Voltage Detection Circuit, and TADC reference voltage. SPI and VIP interface to the external Conexant video chip 100723A Conexant 1-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description MFC2000 32 ARM7TDMI 30 MHz, 37.5 MHz, or 40 MHz PLL DMA Controller Cache Controller and Memory (4KB) External ARM Bus 16 32 SIU 100 MHz or 85.7 MHz Internal Peripheral Bus All logic blocks on the internal system bus from MFC1000 28.224 MHz 28.224 MHz for Modem 48 MHz for USB 16 P80 Core Countach Bus System ARM IPB IF Countach Subsystem (for Video/Scan Image Processing) Mono and Color CIS/ CCD Control Video/Scan Controller Scanner In Analog Frontend 12-bit PADC Countach Subsystem IF Video Countach A R M /Scan Bus Unit Bus IF IF CDMAC SDRAMC NTSC/ PAL Signal External Conexant Video Chip External System Memory Smart DAA IF P1284 IF USB IF 2 DMA channels for the ARM Bus System 16 or 8 SPI VIP External Local (S)DRAM Figure 1-2: MFC2000 Function Diagram 1-4 Conexant 100723A Hardware Description 1.3 MFC 2000 Multifunctional Peripheral Controller 2000 Reference Documentation Table 1-1. Reference Documentation Document MFC2000 Data Sheet 100723A Number 100505 MFC2000 Firmware Architecture 100972 MFC2000 Hardware Description (this document) 100723 MFC2000 Programmer’s Reference Manual 100971 Conexant 1-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank 1-6 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 2. MFC2000 Summary 2.1 MFC2000 Device Family The MFC2000 contains an internal 32-bit RISC Processor with 64-MB address space, the Countach Imaging DSP (Conexant’s DSP) subsystem including embedded data and program memory, and dedicated circuitry optimized for color scanning, color faxing, color copying, color printing, and multifunctional control and monitoring. The device family with relevant features is described in Table 2-1. Table 2-1. MFC2000 Device Family Device No. 2.2 Product Code Data Modem Function Voice Codec/Speaker Phone Functions Smart DAA Support CX0720X-11 BFH Yes Yes Yes CX0720X-12 BDH Yes No Yes CX0720X -13 BBH No Yes Yes CX0720X -14 B9H No No Yes CX0720X-15 B8H No No No MFC2000 System Block Diagram The MFC2000 contains the ARM7TDMI RISC Processor (described separately in ARM7TDMI Manuals), Countach Imaging DSP, Modem DSP, and specialized hardware needed for the Multifunctional machine control and scanner and fax signal processing. The Countach Imaging DSP subsystem is on a separate data bus. Therefore, the ARM system data bus can operate in parallel with the Countach Imaging DSP subsystem data bus for most operations except the interaction time between two buses. The two-bus architecture is very important to provide enough bandwidth for full color MFP products. Figure 2-1 shows the MFP2000’s two-bus architecture. The ARM Bus System (ABS) has two mastersARM CPU and DMA Controller. They provide accesses to all specialized hardware functions including the Countach Imaging DSP subsystem as a peripheral on the ARM Bus System. ABS has several sections. The System Interface Unit (SIU) is the control center. The ARM CPU and Cache Controller are on the Internal System Bus (ISB). The Cache Memory is on the Internal Cache Bus (ICB). The DMA Controller is on the DMA Bus (DAB). All internal peripherals are on the Internal Peripheral Bus (IPB). The SmartDAA/IA Interface and P80 core are on the IPB of the ARM Bus System. The ARM7TDMI runs at a clock rate 40 MHz, 37.5 MHz, or 30 MHz. All external peripherals are on the ARM External Bus (AEB). There is a separate bus system for the Countach Imaging DSP subsystem called Countach Bus System (CBS). There are three sections, the Video/Scan Interface, the ARM Bus Interface, and the countach subsystem interface. The external SDRAM/DRAM is on the Countach External Bus (CEB). 100723A Conexant 2-1 MFC2000 Multifunctional Peripheral Controller 2000 CPU Core (ARM7TDMI) PLL Clock Generator Timing Control 32-bit ISB Prime/Battery Power and Reset Control ICB Cache Memory Controller 16-bit DAB DMA Controller Hardware Description 1Kx32bit (2Kx16bit) Cache Memory 32-bit ISB 16-bit and/or 8-bit AEB Bus IF (including DRAM/ Flash Controller) ROM/Flash SRAM/Flash IRQ/CPU Access 16-bit IPB Motor Drivers Scan/Print IRQ/ Motor CPU Controller Access CPU Access Serial Operator Panel IF CPU Access Bi-level DMA/ Resolution CPU Access Conversion DMA/ IRQ/ CPU Access CPU Access Video/Scan Controller ARM Bus Interface Countach Subsystem IRQ/ Fax CPU Modem Access (Optional) P1284 or USB Host IF Host GPIOs CPU and Access PWM Channels IRQ/ Watchdog CPU Timer Access RTC Inkjet DMA/ Engine (including CPU Access Inkjet Print ASIC) DMA/ Bit Rotation CPU Access Sync/ IRQ/ Async CPU Serial Port Access Sync Serial Panel IF DRAM/Flash CPU Interrupt Access Controller Countach Subsystem Interface Video/Scan Interface Countach Bus Unit Video/Color Scan IA Color Scanner Conexant Video Chip DRAM/ SDRAM Controller NTSC /PAL Video 16-bit and/or 8-bit CEB DRAM/ SDRAM Countach DMA Controller Figure 2-1. MFC2000 Organization 2-2 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 3. Hardware Interface 3.1 Pin Description Table 3-1. Pin Description (1 of 6) Pin Name Pin No. I/O Input Type Output Type Pin Description PRTIRQn U14 I HU5VT - AUXCLK K20 O - 2XT3V A[11:0]/A[23:12] A20,B20,B19,B 18,B17,C20,C1 9,C18,C17,D20, D19,D18 I/O 5VT 3XT5VT Address bus (12-bit), A[23:12] and A[11:0] are muxed out through same pins. ALE C16 O - 2XT5VT Address Latch output signal for latching A[23:12] externally AE[2]/GPO[14]/SSTXD2/ A19 I/O D5VT 2XT5VT (Pull down) Address bit for external ROM mux in the ROM interleave access mode or GPO[14] or TX data output for SSIF2 (ROM_CONFIG[0] input during the reset period) AO[2]/GPO[15]/SSSTAT2/RO M_CONFIG[1] A18 I/O D5VT 2XT5VT (Pull down) Address bit for external ROM mux in the ROM interleave access mode or GPO[15] or Status input for SSIF2 (ROM_CONFIG[1] input during the reset period) AE[3]/GPO[16]/ A17 I/O D5VT 2XT5VT (Pull down) Address bit for external ROM mux in the ROM interleave access mode or GPO[16] (CLK_CONFIG[0] input during the reset period) D16 I/O D5VT 2XT5VT (Pull down) Address bit for external ROM mux in the ROM interleave access mode or GPO[17] (CLK_CONFIG[1] input during the reset period) D[15:0] A12,B12,C12,A 13,B13,C13,D1 3,A14,B14,C14, A15,B15,C15,D 15,A16,B16 I/O 5VT 2XT5VT Data bus (16-bit) RDn D12 O - 3XT5VT Read strobe (active low) WREn/DOEEn B9 O - 4XT5VT Write strobe for the lower byte (active low) or DRAM output enables selects used for noninterleave mode and interleave modes. DOEEn is used for reading the even address bank (active low). WROn/DOEOn C9 O - 4XT5VT Write strobe for the higher byte (active low) or DRAM output enables selects used for noninterleave mode and interleave modes. DOEOn is used for reading the odd address bank (active low). ROMCSn D10 O - 2XT5VT ROM chip select (active low) CS[1]n A9 O - 2XT5VT I/O chip select (active low). CS[0]n G18 O 3V 2XT3V SRAM chip select (active low) (VRTC powered) RASn[1:0] F19,F18 O - 2XT3V DRAM row Address select for bank 0 and 1(active low) (VDRAM powered) CASOn[1:0] E17,F20 O - 2XT3V DRAM column odd address selects used for noninterleave mode and interleave mode. (VDRAM powered) ROM_CONFIG[0] CLK_CONFIG[0] AO[3]/GPO[17]/ CLK_CONFIG[1] 100723A Conexant (Hysteresis, Pull up) Interrupt from the external printing ASIC (active low) Auxiliary clock output for using as the master clock for external devices 3-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 3-1. Pin Description (2 of 6) Pin Name Pin No. I/O Input Type Output Type Pin Description 2XT3V DRAM column even address selects used for noninterleave mode and interleave mode. (VDRAM powered) DRAM write. (VDRAM powered) CASEn[1:0] E20,E19 O - DWRn D17 O - 2XT3V DMAACK2 K19 O - 1XT5VT DMAREQ2 F4 I H5VT - FCS0n/PWM[1] D9 O - 2XT5VT Flash memory chip select 0 or PWM channel 1 output FCS1n/PWM[2] A8 O - 2XT5VT Flash memory chip select 1 or PWM channel 2 output signal. RESETn K18 I/O HU5VT 2XT5VT (Hysteresis, Pull up) MFC2000 Reset input/output XIN G20 I OSC - XOUT H20 O - OSC Crystal oscillator output pin for RTC. (VRTC powered) PWRDWNn H18 I H3V - (Hysteresis) Indicate the loss of prime power (result in SYSIRQ). (VRTC powered) WPROTn H19 O - 1XT3V BATRSTn G17 I H3V - (Hysteresis) Battery power reset input. (VRTC powered) EXT_PWRDWN_SELn G19 I H3V - (Hysteresis) External power-down detector select input (active low)(VRTC powered) SC_START[0] V8 O - 1XT3V Scanner shift gate control 0 SC_CLK1/SC_CLK2A U9 O - 1XT3V Scanner clock. SC_LEDCTRL[0] U7 O - 1XT3V Scanner LED control 0 SC_LEDCTRL[1]/ SC_START[1] Y8 O - 1XT3V Scanner LED control 1 or Scanner shift gate control 1 SC_LEDCTRL[2]/ SC_START[2] W8 O - 1XT3V Scanner LED control 2 or Scanner shift gate control 2 SSTXD1 J19 O - 2XT3V TX data for SSIF1 SSRXD1 H17 I HU5VT - SSCLK1 J20 I/O H5VT 2XT5VT (Hysteresis) Clock input or output for SSIF1 GPIO[0]/FWRn/CLAMP J4 I/O H5VT 2XT5VT (Hysteresis) GPIO[0] or flash write enable signal for NAND-type flash memory or scanner clamp control output GPIO[1]/FRDn M3 I/O H5VT 2XT5VT (Hysteresis) GPIO[1] or flash read enable signal for NAND-type flash memory. GPIO[2]/DMAREQ1/ SSCLK2 V1 I/O H5VT 2XT5VT (Hysteresis) GPIO[2] or DMA channel 1 request input or clock input/output for SSIF2. GPIO[3]/DMAACK1/ SSRXD2 U4 I/O H5VT 2XT5VT (Hysteresis) GPIO[3] or DMA channel 1 acknowledge or RX data for SSIF2 GPIO[4]/CS[2]n U3 I/O H5VT 2XT5VT (Hysteresis) GPIO[4] or I/O chip select [2] (active low) GPIO[5]/CS[3]n/PWM[3] U2 I/O H5VT 2XT5VT (Hysteresis) GPIO[5]or I/O chip select [3] (active low) or PWM channel 3 output 3-2 Conexant External DMA acknowledge output (channel 2). (Hysteresis) External DMA request input (channel 2). Crystal oscillator input pin for RTC. (VRTC powered) Write Protect during loss of VDD power. Note: The functional logic is powered by RTC battery power, but the output drive is powered by DRAM battery power. (VRTC powered) (Hysteresis, Pull up) RX data for SSIF1 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 3-1. Pin Description (3 of 6) Pin Name Pin No. I/O Input Type Output Type Pin Description GPIO[6]/CS[4]n/ EADC_D[3] U1 I/O H5VT 2XT5VT (Hysteresis) GPIO[6] or I/O chip select [4] (active low) or external ADC data [3] input GPIO[7]/CS[5]n/ T4 I/O H5VT 2XT5VT (Hysteresis) GPIO[7] or I/O chip select [5] (active low). GPIO[8]/IRQ[11]/ SSSTAT1/SC_CLK1/2B T3 I/O H5VT 2XT5VT (Hysteresis) GPIO[8] or external interrupt [11] or status input for SSIF1 or scan clock output GPIO[9]/IRQ[13]/ EADC_D[2] T2 I/O H5VT 2XT5VT (Hysteresis) GPIO[9] or external interrupt [13] or external ADC data [2] input GPIO[10]/RING_DETECT/PW M[4] T1 I/O H5VT 2XT5VT (Hysteresis) GPIO[10] or ring detection input or PWM channel 4 output GPIO[11]/CPCIN/PWM[0]/ALT TONE R4 I/O H5VT 2XT5VT (Hysteresis) GPIO[11] or calling party control input or ALTTONE output GPIO[12]/SASCLK/ SMPWRCTRL R3 I/O H5VT 2XT5VT (Hysteresis) GPIO[12] or clock input/output for SASIF or Scan Motor Power Control output GPIO[13]/SASTXD/ PMPWRCTRL R2 I/O H5VT 2XT5VT (Hysteresis) GPIO[13] or TX data output for SASIF or Print Motor Power Control output GPIO[14]/SASRXD/ RINGER R1 I/O H5VT 2XT5VT (Hysteresis) GPIO[14] or RX data input for SASIF or ringer output GPIO[15]/IRQ[16]/ SC_CLK1/2C P4 I/O H5VT 2XT5VT (Hysteresis) GPIO[15] or external interrupt [16] or scan clock output GPIO[16]/M_TXSIN P3 I/O H5VT 2XT5VT (Hysteresis) GPIO[16] or internal modem GPIO[17]/M_CLKIN P2 I/O H5VT 2XT5VT (Hysteresis) GPIO[17] or internal modem GPIO[18]/M_RXOUT P1 I/O H5VT 2XT5VT (Hysteresis) GPIO[18] or internal modem GPIO[19]/M_SCK/MIRQn N4 I/O H5VT 2XT5VT (Hysteresis) GPIO[19] or internal modem or external modem interrupt input GPIO[20]/M_STROBE/ MCSn N3 I/O H5VT 2XT5VT (Hysteresis) GPIO[20] or internal modem or external modem chip select GPIO[21]/M_CNTRL_SIN N2 I/O H5VT 2XT5VT (Hysteresis) GPIO[21] or internal modem GPIO[22]/EADC_Sample N1 I/O H5VT 2XT5VT (Hysteresis) GPIO[22] or external ADC sample signal output SM[3:0]/ V7,W7,Y7,U6 O - 1XT3V Scan motor control [3:0] pins or GPO[7:4] pins. PM[0]/SPI_SID/ EADC_D[0]/GPO[0] U8 I/O 5VT 1XT5VT Print motor control [0] output or GPO[0] output or data output for SPI or external ADC data [0] input PM[1]/SPI_SIC/ EADC_D[1]/GPO[1] W9 I/O 5VT 1XT5VT Print motor control [1] output or GPO[1] output or clock output for SPI or external ADC data [1] input PM[2]/SMI0/GPO[2] Y9 O - 1XT3V Print motor control [2] output or GPO[2] output or scan motor current control 0. PM[3]/SMI1/GPO[3] Y12 O - 2XT3V Print motor control [3] output or GPO[3] output or scan motor current control 1. TONE V9 I/O H5VT 1XT5VT PIODIR C1 O - 2XT3V STROBEn A2 I H5VT - (Hysteresis) Input from PC (active low) AUTOFDn G3 I H5VT - (Hysteresis) Input from PC (active low) SLCTINn G2 I H5VT - (Hysteresis) Input from PC (active low) INITn G1 I H5VT - (Hysteresis) Input from PC (active low) BUSY A1 O - 2XT3V PIO Returned status to PC ACKn D3 O - 2XT3V PIO Returned status to PC (active low) GPO[7:4] 100723A Conexant (Hysteresis) Tone output signal. PIOD[7:0] is output when PIODIR is high and PIOD[7:0] is input when PIODIR is low. 3-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 3-1. Pin Description (4 of 6) Pin Name Pin No. I/O Input Type Output Type Pin Description SLCTOUT C3 O - 2XT3V PIO Returned status to PC PE B2 O - 2XT3V PIO Returned status to PC FAULTn B1 O - 2XT3V PIO Returned status to PC (active low) PIOD[7:0] D2,D1,C2,H4,H 3,H2,H1,G4 I/O H5VT 2XT5VT TESTER_MODE J2 I HD5VT - ADCREFp Y3 I Positive reference voltage for the scan PADC ADCREFn Y2 I Negative reference voltage for the scan PADC POWER1 Y1 I Voltage input for power-down detection circuit 1 POWER2 W4 I Voltage input for power-down detection circuit 2 ADGA Y5 - Scan PADC analog ground ADVA V5 - Scan PADC analog Power ADGD U5 - Scan PADC digital ground SDAA_SPKR V12 O Analog telephone line monitoring output from SSD ADCV Y4 - Scan PADC internal ground SCIN W5 I Analog scan input signal SENIN[2:0] V6,W6,Y6 I TCK W3 I HD5VT - (Hysteresis, Pull down) Test clock input for JTAG. It is positive edge-triggered. TMS W2 I HU5VT - (Hysteresis, Pull up) Test mode select input for JTAG. Selects the next state in the TAP state machine. TRSTn W1 I HD5VT - (Hysteresis, Pull down) Suggestion by Lauterbach for JTAG: connect this signal to RESETn in normal mode and disconnect in debug mode. TDI V4 I HU5VT - (Hysteresis, Pull up) Test data input for JTAG. Serial data input to the JTAG shift register. TDO V3 O - 1XT5VT TEST V2 I HD5VT - (Hysteresis, Pull down) For test only, It must be ‘low’ for the normal operation. SCANMOD J1 I HD5VT - (Hysteresis, Pull down) For the scan test only, It must be ‘low’ for normal operations. P80_SEL J3 I H3V - P80 DSP test and DFT scan mode select, This pin is only used for the test mode. PLLREF_XIN Y15 I OSC - Crystal input pin for PLL PLLREF_XOUT W15 O - OSC PLLVDD U15 - PLLVSS U16 SDDATA[15:0] N20,P17,P18,P 19,P20,R17,R1 8,R19,R20,T17, T18,T19,T20,U1 7,U18,U19 3-4 (Hysteresis) For test only, It must be ‘low’ for the normal operation Analog sensor inputs for TADC Test data output for JTAG. Serial data output from the JTAG shift register. Crystal output pin for PLL +3.3V digital power for PLL I/O (Hysteresis) Driven by PC or MFC2000 and used to send data or address depending on which mode is used +3.3V digital ground for PLL 5VT 2XT5VT Conexant Countach (S)DRAM data bus (16 bits) 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 3-1. Pin Description (5 of 6) Pin Name Pin No. I/O Input Type Output Type SDADDR[12:0] V20,W20,Y20, W19,Y19,W18, Y18,W17,Y17,V 16,W16,Y16,V1 5 O - 2XT3V Countach (S)DRAM address bus (13 pins) SDCASn U20 O - 2XT3V Countach (S)DRAM column address strobe (active low) SDRASn V19 O - 2XT3V Countach (S)DRAM row address strobe (active low) SDWRn V18 O - 2XT3V Countach (S)DRAM write strobe (active low) SDCSn V17 O - 2XT3V Countach (S)DRAM chip select SDCLK100MHz M19 O 5VT 2XT5VT USB_Dp B8 I/O Positive data input/output pin for USB USB_Dn C8 I/O Negative data input/output pin for USB SDAA_PWRCLK E1 I/O Positive power/clock output from SSD SDAA_PWRCLKn E2 I/O Negative power/clock output from SSD SDAA_DIBp E4 I/O Positive data input/output pin for SDAA SDAA_DIBn E3 I/O EV_VD[0]/EADC_D[4]/ MREQn W12 I/O 3V 2XT3V External video data [0] input for VIP or external ADC data [4] input or Memory Request (active low)-indicates that the following cycle is a memory access. EV_VD[1]/EADC_D[5] U12 I/O 3V 2XT3V External video data [1] input for VIP or external ADC data [5] input EV_VD[2]/EADC_D[6]/ OPCn Y13 I/O 3V 2XT3V External video data [2] input for VIP or external ADC data [6] input or Op Code fetch (active low)LOW indicates that the processor is fetching an instruction from memory. EV_VD[3]/EADC_D[7] W13 I/O 3V 2XT3V External video data [3] input for VIP or external ADC data [7] input EV_VD[4]/EADC_D[8]/ MAS[0] U13 I/O 3V 2XT3V External video data [4] input for VIP or external ADC data [8] input or Memory access size MAS[1:0]: 00 - byte, 01 - halfword, 10 - word, 11 Reserved during the normal operation EV_VD[5]/EADC_D[9]/ MAS[1] Y14 I/O 3V 2XT3V External video data [5] input for VIP or external ADC data [9] input or Memory access size MAS[1:0]: 00 - byte, 01 - halfword, 10 - word, 11 Reserved during the normal operation EV_VD[6]/EADC_D[10] W14 I/O 3V 2XT3V External video data [6] input for VIP or external ADC data [10] input EV_VD[7]/EADC_D11]/ ABORT V14 I/O 3V 2XT3V External video data [7] input for VIP or external ADC data [11] input or aborted bus cycle-the address selected is outside of CS’s address ranges. EV_CLK V13 I H3V - W_Rn N19 O D5VT 2XT5VT (Pull down) The bus access is a read operation when W_Rn is LOW and write when W_Rn is HIGH. XAKn N18 O U5VT 2XT5VT (Pull up) SIU Transaction Acknowledge. The D[15:0] data will be transferred during this MCLK cycle. 100723A Pin Description Countach (S)DRAM clock Negative data input/output pin for SDAA Conexant (Hysteresis) External video clock input 3-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 3-1. Pin Description (6 of 6) Pin Name Pin No. I/O Input Type Output Type Pin Description DMACYC/ CLK_CONFIG[2] M18 I/O U5VT 2XT5VT (Pull up) DMA Cycle-the DMA logic has control of the external bus. (CLK_CONFIG[2] input during the reset period) WAITn J17 O U5VT 2XT5VT (Pull up) Wait (active low)-reflects the wait states being used by the ARM processor. CACHEHIT/ JTAG_MODE_SEL J18 I/O U5VT 2XT5VT (Pull up) Cache hit-the ARM is retrieving data from the cache memory (JTAG_MODE_SEL during the reset period, “1” – ARM JTAG selected SEQ N17 O D5VT 2XT5VT (Pull down) Sequential Address Access. (Used with nMREQ to indicate memory access type. Only required if using co-processor cycles) SSD_DIBRX F3 O Internal test pin. Leave it open. TX_DATA F2 O Internal test pin. Leave it open. SDAA_GPIO_INT F1 O Internal test pin. Leave it open. VSS L1,L2,L3,L4,U1 0,V10,W10,Y10, L17,L18,L19,L2 0,A11,B11,C11, D11 - Digital ground (16 pins) VDD A10,B10,C10,K 1,K2,K3,K4,U11 ,V11,W11,Y11, K17,M20 - +3.3V digital power (13 pins) P80VSS M1 - Digital ground for P80 DSP P80VDD M2 - +3.3V digital power for P80 DSP VGG1 M17 - +5V Power for the +5V tolerant pads VGG2 D14 - +5V Power for the +5V tolerant pads VGG3 D5 - +5V Power for the +5V tolerant pads VGG4 M4 - +5V Power for the +5V tolerant pads VDRAM E18 - Battery Power for DRAM refresh. VRTC F17 - Battery Power for RTC (NC) A3,B3,A4,B4,C4 ,D4,A5,B5,C5,A 6,B6,C6,D6,A7, B7,C7,D7,D8 - 18 RESERVED pins 3-6 Conexant 100723A Hardware Description 3.2 MFC 2000 Multifunctional Peripheral Controller 2000 Maximum Ratings Table 3-2. Maximum Ratings Parameter Symbol Limits Unit VDD Digital Power VDD -0.5 to +4.6 V Battery Power VRTC -0.5 to +4.6 V VDRAM -0.5 to +4.6 V VGG Digital Power VGG -0.5 to +6.0 V Digital GND GND -0.5 to +0.5 V Digital Input (3V) VI -0.5 to +4.6 V Digital Input (5VT) VI -0.5 to +6.0 Operating Temperature Range V T 0 to 70 o Tstg -40 to 80 o VHz -0.5 to 4.6 V VHz -0.5 to 6.0 V C (Commercial) Storage Temperature Range C Voltage Applied to Outputs in High Z State (3V) Voltage Applied to Outputs in High Z State (5VT) Static Discharge Voltage o ( 25 C) o Latch-up Current ( 25 C) 100723A ESD +2500 V Itrig +400 mA Conexant 3-7 MFC2000 Multifunctional Peripheral Controller 2000 3.3 Hardware Description Electrical Characteristics Table 3-3. Digital Input Characteristics Symbol Description VIL VIH Hysteresis Pullup/Pulldown Resistance (V min.) (V max.) (V min.) (V max.) (V min.) (K ohms) 3V 3V CMOS input 0 0.8 2.0 VDD -- -- U3V 3V CMOS input w/pullup 0 0.8 2.0 VDD -- 50-200 H3V 3V CMOS input w/hysteresis 0 0.3*VDD 0.7*VDD VDD .5 -- HD3V 3V CMOS input w/hysteresis and pull down 0 0.3*VDD 0.7*VDD VDD .5 -- HU3V 3V CMOS input w/hysteresis and pullup 0 0.3*VDD 0.7*VDD VDD .5 50-200 H5VT 5V tolerant CMOS input w/hysteresis 0 0.3*VDD 0.7*VDD 5.25 .3 -- U5VT 5V tolerant CMOS input w/pullup 0 0.3*VDD 0.7*VDD 5.25 -- 50-200 D5VT 5V tolerant CMOS input w/pulldown 0 0.3*VDD 0.7*VDD 5.25 -- 50-200 HU5VT 5V tolerant CMOS input w/hysteresis and pullup 0 0.3*VDD 0.7*VDD 5.25 .3 50-200 HD5VT 5V tolerant CMOS input w/hysteresis and pulldown 0 0.3*VDD 0.7*VDD 5.25 .3 50-200 5VT 5V tolerant CMOS input 0 0.8 2.0 5.25 -- -- OSC** 3V CMOS input 0 0.3*VDD 0.7*VDD VDD -- -- ** These parameters can only be tested under low speed XIN clock. Table 3-4. Output Characteristics Output Type Description VOL (V max) IOL (mA) VOH (V min) IOH (mA) 1X3V 1X CMOS Output, 3V 0.4 -2.0 2.4 2.0 1X5VT 1X CMOS Output, 5V tolerant 0.4 -2.0 2.4 2.0 1XT5VT 1X CMOS Output, tristatable, 5V tolerant 0.4 -2.0 2.4 2.0 2X3V 2X CMOS Output, 3V 0.4 -4.0 2.4 4.0 2XT3V 2X CMOS output, tristatable, 3V 0.4 -4.0 2.4 4.0 2X5VT 2X CMOS output, 5V tolerant 0.4 -4.0 2.4 4.0 2XT5VT 2X CMOS output, tristatable, 5V tolerant 0.4 -4.0 2.4 4.0 3XT3V 3X CMOS output, 3V 0.4 -8.0 2.4 8.0 3XT5VT 3X CMOS output, tristatable, 5V tolerant 0.4 -8.0 2.4 8.0 4XT5VT 4X CMOS output, tristatable, 5V tolerant 0.4 -12.0 2.4 12.0 3-8 Conexant CL (pF) 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 3-5. Power Supply Requirements Symbol Description Operating Voltage Min. (V) Max. (V) VGG Digital Power for 5VT 4.75 5.25 VDD Digital Power 3.0 3.6 GND Digital GND 0 0 IDD Total Digital Current VBAT Battery Power 2.7 3.6 VDRAM Battery Power 2.7 3.6 Current* Typ. @ 25 °C(mA) Max.@ 0°°C (mA) (TBD) (TBD) Note: * Maximum power supply current is measured at 3.6V. Table 3-6. Battery Power Supply Current Requirements Operating Voltage (V) VBAT VDRAM Typ.@25°°C (µ µa) Max.@70°°C (µ µa) Typ.@25°°C (µ µa) Max.@70°°C (µ µa) 2.7 4 tbd 100 tbd 3.0 tbd tbd tbd tbd 3.3 6 tbd tbd tbd 3.6 tbd tbd tbd tbd Note: Battery power supply current is measured when a 32KHz crystal is used. The DRAM battery currents that are listed are somewhat dependent on the type of DRAM used. This particular configuration had 1 interleaved DRAM bank in backup mode. 100723A Conexant 3-9 MFC2000 Multifunctional Peripheral Controller 2000 3.4 Hardware Description Pin Layout A B C D E F G H J K L M N P R T U V W Y 1 2 3 4 5 6 7 8 9 10 11 MFC2000 Chip Bottom View 12 13 14 15 16 17 18 19 20 Figure 3-1. MFC2000 BGA Bottom View 3-10 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 4. CPU and Bus Interface 4.1 Memory Map and Chip Select Description 4.1.1 Memory Map The ARM7TDMI Core is capable of directly accessing 4 GB of memory (A31-A0). The MFC2000 is designed to directly access 64-MB of memory composed of internal and external memory spaces by means of the 26-bit system address bus (A25-A0). The MFC2000 internally decodes address range 00000000H-03FFFFFFH (64 M). Address range 01000000H-01FFFFFFH (16 M) is arranged for the internal registers/memory and external Countach Imaging DSP Subsystem memory. Address range 00000000H-00FFFFFFH (16 M) and Address range 02000000H-03FFFFFFH (32 M) are arranged for the external device/memory use on the ARM Bus. Only 24 address lines (A23-A0) are brought out of the MFC2000 chip, and the lower half and the higher half are multiplexed through the same 12 pins. The 16 MB address range (maximum) can be decoded externally, if necessary. Figure 4-1 and Figure 4-2 show the MFC2000 memory map with memory type designations and locations and provides memory segmentation into select signal ranges. 4.1.1.1 Internal Memory Space The MFC2000 internal memory occupies 128 kB of the address range from 01FE0000h through 01FFFFFh). Internal memory space includes the following: Cache memory space (64 kB) (Reserved space) (32 kB) Internal register space (4 kB) Internal RAM space (28 kB) (01FE0000h-01FEFFFFh) (01FF0000h-01FF7FFFh) (01FF8000h-01FF8FFFh) (01FF9000h-01FFFFFFh) The cache memory space includes the following: 1. The cache memory (4096 bytes) 2. The Tag memory (4096 bytes) 3. (Reserved) (56 kB) (01FE0000h-01FE0FFFh) (01FE1000h-01FE1FFFh) (01FE2000h-01FEFFFFh) The internal register address range consists of 3 sections: 1. The first (lowest) section (01FF8000h to 01FF87FFh, 2 kB), is reserved for operational registers, i.e., those that are modified during normal operation, but which are not intended to require firmware initialization after reset. 2. The second section (01FF8800h to 01FF8DFFh, 1.5 kB) contains the setup registers, i.e., those that are generally written only once for system initialization after reset. 3. The third section (01FF8E00h to 01FF8FFFh, 512 bytes) is reserved for testing purposes. Note: 100723A All internal register accesses are two CPUCLK-cycle operations. Conexant 4-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The internal RAM space includes the following: 1. Bit rotation RAM area Bit rotation RAM: 512 halfwords (1 kB) (Reserved) (3072 bytes) (01FF9000h-01FF93FFh) (01FF9400h-01FF9FFFh) 2. Countach Subsystem memory area Countach Scratch Pad (512 bytes) (256 halfwords)(01FFA000h-01FFA1FFh) Countach Data DMA Channel 0 (1 halfword) (01FFA200h-01FFA201h) Countach Data DMA Channel 1 (1 halfword) (01FFA202h-01FFA203h) Countach Data DMA Channel 2 (1 halfword) (01FFA204h-01FFA205h) Countach Data DMA Channel 3 (1 halfword) (01FFA206h-01FFA207h) Reserved (344 bytes) (01FFA208h-01FFA35Fh) Countach Program DMA Address (5 bytes) (01FFA360h-01FFA364h) Reserved (155 bytes) (01FFA365h-01FFA3FFh) VSI Buffer (256 bytes) (2x64 halfwords) (01FFA400h-01FFA4FFh) (Reserved) (23296 bytes) (01FFA500h-01FFFFFFh) 4.1.1.2 External Countach Imaging DSP Subsystem Memory Space The external memory space (8 MB) is allocated to the external DRAM/SDRAM on the Countach Imaging DSP Bus Subsystem. Countach Imaging DSP Subsystem SDRAM/DRAM (8 M) 4-2 Conexant (01000000h-017FFFFFh) 100723A Hardware Description 4.1.1.3 MFC 2000 Multifunctional Peripheral Controller 2000 External Memory Space The external memory space (up to 48 M) consists of ROM, DRAM/ARAM, Flash memory, SRAM, modem, and variable-use spaces with assigned chip selects. Most external chip selects have programmable address ranges, start locations, wait states, and read and write strobe timing. SRAM and DRAM/ARAM chip select controls are battery-backed up. Refer to Figure 4-1 for the MFC2000 memory map and to Figure 4-2 for the internal memory map. External memory spaces include the following: ROMCSn, ROM (4 M) CS5n, general (4 M) FCS0n, NOR type Flash memory (2 M) FCS1n, NOR type Flash memory (2 M) Address location for generating FWRn and FRDn for the NAND type Flash memory (Reserved) MCSn, modem (128 K) P80_CSn SDAA_CSn CS4n, optional general (128 K) CS3n, optional general (128 K) CS2n, optional general (512 K) CS1n, general (1 M) CS0n, SRAM or general (2 M) SDRAM (For internal and Countach Imaging DSP Subsystem) (16 M) RAS0n, DRAM or ARAM (16 M) RAS1n, DRAM or ARAM (16 M) 100723A Conexant (00000000h-003FFFFFh) (00400000h-007FFFFFh) (00800000h-009FFFFFh) (00A00000h-00BFFFFFh) (00C00000h-00C0003Fh) (00C00002h-00C1FFFFh) (00C20000h-00C2FFFFh) (00C30000h - 00C37FFFh) (00C38000h - 00C3FFFFh) (00C40000h-00C5FFFFh) (00C60000h-00C7FFFFh) (00C80000h-00CFFFFFh) (00D00000h-00DFFFFFh) (00E00000h-00FFFFFFh) (01000000h-01FFFFFFh) (02000000h-02FFFFFFh) (03000000h-03FFFFFFh) 4-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-1. Fixed-Location and Size Chip Selects Chip Select Device ROMCSn ROM FCS1n/FCS0n NAND- or NOR-type Flash Memory CS0n SRAM, or other CS1n (Optional) General Use Optional MCSn (Optional) External Fax Modem (optional) CS2n I/O Devices, or other CS3n (Optional) General Use CS4n (OptionaL0 General Use CS5n 4 MB ROM, SRAM, or other DRAM/ARAM chip selects can also be programmed to 1 of 4 sizes (from 512 k to 16 M). ROM Chip Select (ROMCSn) ROMCSn selects external ROM located in 4-MB address space 00000000h-003FFFFFh, and is active for read and write accesses. The ROMCtrl register can be used to select 0 to 7 (default) wait states, and 0 or 1 (default) read and write strobe on delays. For customers that choose to use NOR-type flash memory in the ROM address area, the write operation is also allowed in the ROM address area. Chip Select 5 (CS5n) CS5n is an active Read/Write select signal for the 4 MB address range (00400000h to 007FFFFFh) directly below the ROMCSn address range. The CS5Ctrl register can be used to select 0 to 7 (default) wait states, and 0 or 1 (default) read and write strobe on delays. GPIO[7] (default) can be configured as CS5n using the GPIO[7]/CS5n bit of the GPIOConfig register. SRAM Chip Select 0 (CS0n) CS0n is designed for use in selecting external SRAM, but can also be used for other purposes. It has 2 MB address range (00E00000h to 00FFFFFFh). The CS0n can also be programmed for 0 (default) to 7 wait states, 0 (default) or 1 read and write strobe on delays, and normal (default) or early write strobe off times using the CS0Ctrl register. DRAM Chip Select (RASn[1:0], CASOn[1:0] and CASEn[1:0]) DRAM address space can be selected in 2 separate memory blocks (Bank 0: RASn[0] and Bank 1: RASn[1]). Separate control bits are provided in the Backup Configuration register to enable and disable each of the memory banks (Default: Bank0 is enabled and 8-bit DRAM is selected). Non-interleaved DRAM accesses and 2-way interleaved DRAM accesses are supported. CASOn[1:0] and CASEn[1:0] are used differently for different access modes. RASn is asserted before CASn for normal read and write operations. Also, RAS can be kept active and CASn is toggled to do burst mode operations. CASn-Before-RASn refresh mode is the only refresh mode for MFC2K (For more DRAM information, see the DRAM Controller section.) The address ranges of the two memory banks (RAS0n and RAS1n) are continuous around the midpoint of the DRAM memory bank. The RASn[1] starting address is 03000000h and grows larger based on the size of the memory. The end of the RASn[0] bank ends at 03000000h and grows smaller from that point. Each bank has separate configuration controls. The memory range is programmed through the address multiplexer selections for bank 0 and bank 1 in the DRAMCtrl register. 4-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Flash Memory Chip Selects (FCS1n and FCS2n) FCS0n and FCS1n are multiplexed with PWM[1] and PWM[2] and output through FCS0n/PWM[1] and FCS1n/PWM[2] pins. After reset, the Flash disable bit (bit 0) of the FlashCtrl register is 0 and the FCS0n/PWM[1] and FCS1n/PWM[2] pins are used as FCS0n and FCS1n. FCS0n and FCS1n can access either NOR-type (default) or NAND-type flash memory, selectable with the NANDFlashEnb bit (bit 6) of the FlashCtrl register. When enabled for NOR-type flash memory (default), FCS1n can be activated by accessing the 2-MB (00A00000h-00BFFFFFh) flash memory address area. FCS0n can be activated by accessing the 2-MB (00800000h - 009FFFFFh) flash memory address area. Firmware controls the flash memory access block size. If enabled for NAND-type flash memory, FCS0n and FCS1n revert to the GPO function and output bit 9 and bit 8 values of the FlashCtrl register . 0 to 7 (default) wait states and normal (default) or early off of the write strobe can be chosen using the FlashCtrl register described in the SIU section. Modem Chip Select (MCSn) The 128 kB address space from 00C20000h to 00C2FFFFh is reserved for the external modem and selected with MCSn. It is muxed with the M_STROBE signal of the modem IA on the pin. M_STROBE is usually used to interface the embedded DSP to the external modem IA if the embedded V.34 modem DSP is used. MCSn can be selected and muxed out for the external modem if the embedded modem DSP is not used. MCSn can be programmed for 0 to 7 (default) wait states, 0 (default) or 1 read and write strobe on delays, and normal (default) or early write strobe off times using the MCSCtrl register. P80 Chip Select (P80_CSn) Address space form 00C3000 to 00C7FFF has been reserved for the P80 functions. Smart Data Access Arraignment (SDAA_CSn) Address space form 00C3800 to 00CFFFF has been reserved for the SDAA functions. 4.1.1.4 External I/O Chip Selects Chip Select [2] (CS2n) The 512 kB address space from 00C80000h to 00CFFFFFh is selected using the external I/O chip selects CS2n. GPIO[4] (default) can be configured as CS2n using the GPIO[4]/CS2n bit of the GPIOConfig register. CS2n can be programmed for 0 (default) to 7 wait states, 0 (default) to 3 read and write strobe delays, and normal (default) or early write strobe off times using the CS2Ctrl register. Chip Select [4:3] (CS4n-CS3n)(optional) The 256 kB address space from 00C40000h to 00C7FFFFh can optionally be selected using the two external I/O chip selects CS4n and CS3n. These chip selects are configured identically to CS2n. GPIO[6] (default) can be configured as CS4n using the GPIO[6]/CS4n bit of the GPIOConfig register. Likewise, GPIO[5] (default) can be configured as CS3n by using the GPIO[5]/CS3n bit in the GPIOconfig1 register. The top 128 kB (00C40000h to 00C5FFFFh) are addressed by CS4n. CS4n is active for read-access only (internally gated with the read strobe) when the CS4nReadOnly bit (bit 8) of the SIUConfig register is 1. CS4n is active for both read and write access when the CS4nReadOnly bit (bit 8) of the SIUConfig register is 0. The next 128 kB (00C60000h to 00C7FFFFh) is addressed by CS3n. CS3n is active for write-access only (internally gated with the write even strobe) when the CS3nWriteOnly bit (bit 7) of the SIUConfig register is 1. If the external I/O device using CS3n is a 16-bit device, 16-bit access must be done. No high-byte or low-byte access can be done. CS3n is active for both read and write access when the CS3nWriteOnly bit (bit 7) of the SIUConfig register is 0. Chip Select 1 (CS1n) The next address range below those of CS4n-CS2n is the 1-MB range (00D00000h to 00DFFFFFh) selected by CS1n. CS1n can be programmed for 0 (default) to 7 wait states, 0 (default) to 3 read and write strobe delays, and normal (default) or early write strobe off times using the CS1Ctrl register. 100723A Conexant 4-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 00000000 romcsn 003FFFFF csn[5] 007FFFFF fcs0n 009FFFFF fcs1n 00BFFFFF NAND Flash Registers 00C0003F (reserved) 00C1FFFF 00C3FFFF 00C5FFFF 00C7FFFF 00CFFFFF 00DFFFFF 00FFFFFF mcsn csn[4] csn[3] (reserved) 01FDFFFF cachecs csn[2] 01FEFFFF csn[1] (reserved) csn[0] 01FF7FFF ics iiocs SDRAM 01FF8FFF 017FFFFF (reserved) imemcs 01FDFFFF 01FFFFFF 01FFFFFF RASn[0] RASn[0] 02FFFFFF RASn[1] 03FFFFFF Figure 4-1. MFC2000 Memory Map 4-6 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 (reserved) 01FDFFFF (reserved) 01FF7FFF cache memory 01FF87FF iiocs 01FE0FFF cachecs C 01FF8DFF Tag memory 01FF8FFF (reserved) 01FE1FFF (reserved) iiocs 01FF8FFF Bit Rotation Buffer 01FF93FF 01FFA000 Countach ScratchPad 01FFA3FF imemcs VSI Buffer 01FFA4FF 01FFFFFF RASn[0] Figure 4-2. MFC2000 Internal Memory Map 100723A Conexant 4-7 MFC2000 Multifunctional Peripheral Controller 2000 4.1.2 Hardware Description Register Map Table 4-2. Operation Register Map (1 of 9) Operation registers are located from 01FF8000H to 01FF87FFH. Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 4-8 01FF8000-01 TADCCtrl TADC R/W 01FF8002-03 TADCInsData TADC R 01FF8004-05 TADCCh0Data TADC R 01FF8006-07 TADCCh1Data TADC R 01FF8008-09 TADCCh2Data TADC R 01FF800A-1F (Not Used) 01FF8020-21 IRQFIQEvent1 Interrupt Controller R 01FF8022-23 IRQFIQEvent2 Interrupt Controller R(Bit[6:2], Bit[0]) R/W(Bit[1]) 01FF8024-25 IRQEnable1 Interrupt Controller R/W 01FF8026-27 IRQEnable2 Interrupt Controller R/W 01FF8028-29 FIQEnable1 Interrupt Controller R/W 01FF802A-2B FIQEnable2 Interrupt Controller R/W 01FF802C-2D EIRQConfigClr Interrupt Controller R/W 01FF802E-2F IRQTimer1 Interrupt Controller R/W 01FF8030-31 IRQTimer2 Interrupt Controller R/W 01FF8032-3F (Not Used) 01FF8040 WatchdogEnRetrigger Watchdog Timer W 01FF8042 WatchdogInterval Watchdog Timer R/W 01FF8044 HWVersion Watchdog Timer R 01FF8046 ProductCode Watchdog Timer R 01FF8048-4B (Not Used) 01FF804C-4D SSCurTimer1 Scan/Print Motor Controller R/W 01FF804E-4F SSCurTimer2 Scan/Print Motor Controller R/W 01FF8050-51 SStepCtrl Scan/Print Motor Controller R/W 01FF8052-53 SStepTimer Scan/Print Motor Controller R/W 01FF8054-55 SSDelayTimer Scan/Print Motor Controller R/W 01FF8056-57 SMPattern/GPO Scan/Print Motor Controller R/W 01FF8058-59 VPStepCtrl Scan/Print Motor Controller R/W 01FF805A-5B VPStepTimer Scan/Print Motor Controller R/W 01FF805C-5D VPMPattern/GPO Scan/Print Motor Controller R/W 01FF805E-5F (Not Used) 01FF8060-61 RotCtrl Bit Rotation Block R/W 01FF8062-63 RotPackeddata Bit Rotation Block R/W 01FF8064-67 (Not Used) 01FF8069-6B TotalBinDatCntr Bi-level Resolution Conversion R 01FF806C-6D FirstBlkDatCnt Bi-level Resolution Conversion R 01FF806E-6F LastBlkDatCnt Bi-level Resolution Conversion R 01FF8070-71 BiRCInFIFO0 Bi-level Resolution Conversion R/W Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-2. Operation Register Map (2 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 01FF8072-73 BiRCInFIFO1 Bi-level Resolution Conversion R/W 01FF8074-75 BiRCInFIFO2 Bi-level Resolution Conversion R/W 01FF8076-77 BiRCInFIFO3 Bi-level Resolution Conversion R/W 01FF8078-79 BiRCInHold Bi-level Resolution Conversion R/W 01FF807A-7B BiRCInFIFOCtrl Bi-level Resolution Conversion R/W 01FF807C-7D BiResConRatio Bi-level Resolution Conversion R/W 01FF807E-7F BiResConCtrl Bi-level Resolution Conversion R/W 01FF8080-81 BiRCOutFIFO0 Bi-level Resolution Conversion R/W 01FF8082-83 BiRCOutFIFO1 Bi-level Resolution Conversion R/W 01FF8084-85 BiRCOutFIFO2 Bi-level Resolution Conversion R/W 01FF8086-87 BiRCOutFIFO3 Bi-level Resolution Conversion R/W 01FF8088-89 BiRCOutHold Bi-level Resolution Conversion R/W 01FF808A-8B BiRCOutFIFOCtrl Bi-level Resolution Conversion R/W 01FF808C-8D SinglingMask Bi-level Resolution Conversion R/W 01FF808E-8F HSZeroNo Bi-level Resolution Conversion R/W 01FF8090-1 Sec_Min Battery RTC R(bit[7]), R/DW(bit[5:0]) R(bit[15]), R/DW(bit[13:8]) 01FF8092-3 Hour_Day Battery RTC R(bit[7]), R/DW(bit[4:0]) R(bit[15]), R/DW(bit[12:8]) 01FF8094-5 Month_Year Battery RTC R(bit[7]), R/DW(bit[3:0]) R(bit[15]), R/DW(bit[12:8]) 01FF8096-7 RTCCtrl Battery RTC DR/DW 01FF8098-9 BackupConfig Battery RTC R/W 01FF809A-F (Not Used) 01FF80A0-1 LockEnb Prime Power Reset Logic DW 01FF80A2-7 (Not Used) 01FF80A8-9 CPCThreshold CPC Logic R/W 01FF80AA-B CPCStatCtrl CPC Logic R/W 01FF80AC-F (Not Used) 01FF80B0-1 ToneGenF1 ToneGen Block R/W 01FF80B2-3 ALTToneGen ToneGen Block R/W 01FF80B4-5 BellCtrl Bell Ringer R/W 01FF80B6-7 BellPeriod Bell Ringer R/W 01FF80B8-9 BellPhase Bell Ringer R/W 01FF80BA-B ToneGenF2 ToneGen Block R/W 01FF80BC-D ToneGenSwitch ToneGen Block R/W 01FF80BE-F ToneGenTotal ToneGen Block R/W 01FF80C0-C1 PWMCh0Ctrl PWM Logic R/W 01FF80C2-C3 PWMCh1Ctrl PWM Logic R/W 01FF80C4-C5 PWMCh2Ctrl PWM Logic R/W 01FF80C6-C7 PWMCh3Ctrl PWM Logic R/W 100723A Conexant 4-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-2. Operation Register Map (3 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 4-10 01FF80C8-C9 PWMCh4Ctrl PWM Logic R/W 01FF80CA-CF (Not Used) 01FF80D0-DF (Not Used) 01FF80E0-EF (Reserved) 01FF80F0-1 SASCmd SASIF R/W 01FF80F2-3 SASData SASIF R/W 01FF80F4-5 SASDiv SASIF R/W 01FF80F6-7 (Not Used) 01FF80F8-9 SASIRQSTS SASIF R/W 01FF80FA-FF (Not Used) 01FF8100 SSCmd SSIF R/W 01FF8102 SSData SSIF R/W 01FF8104 SSDiv SSIF R/W 01FF8106-07 (Not Used) 01FF8108-09 SSCmd2 SSIF2 R/W 01FF810A-0B SSData2 SSIF2 R/W 01FF810C-0D SSDiv2 SSIF2 R/W 01FF810E-0F (Not Used) 01FF8110-11 T4DataFIFO0 T4/T6 Block R/W 01FF8112-13 T4DataFIFO1 T4/T6 Block R/W 01FF8114-15 T4DataFIFO2 T4/T6 Block R/W 01FF8116-17 T4DataFIFO3 T4/T6 Block R/W 01FF8118-19 T4DataHold T4/T6 Block R/W 01FF811A-1B T4DataFIFOCtrl T4/T6 Block R/W 01FF811C-1D T4DataPort T4/T6 Block R/W 01FF811E-1F T4DataPortTfr T4/T6 Block R/W 01FF8120-4F (Not Used) 01FF8150-51 T4RefDataFIFO0 T4/T6 Block R/W 01FF8152-53 T4RefDataFIFO1 T4/T6 Block R/W 01FF8154-55 T4RefDataFIFO2 T4/T6 Block R/W 01FF8156-57 T4RefDataFIFO3 T4/T6 Block R/W 01FF8158-59 T4RefDataHold T4/T6 Block R/W 01FF815A-5B T4RefDataFIFOCtrl T4/T6 Block R/W 01FF815C-5D T4RefDataPort T4/T6 Block R/W Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-2. Operation Register Map (4 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 01FF815E-5F T4RefDataPortTfr T4/T6 Block R/W 01FF8160-61 T4CurDataFIFO0 T4/T6 Block R/W 01FF8162-63 T4CurDataFIFO1 T4/T6 Block R/W 01FF8164-65 T4CurDataFIFO2 T4/T6 Block R/W 01FF8166-67 T4CurDataFIFO3 T4/T6 Block R/W 01FF8168-69 T4CurDataHold T4/T6 Block R/W 01FF816A-6B T4CurDataFIFOCtrl T4/T6 Block R/W 01FF816C-6D T4CurDataPort T4/T6 Block R/W 01FF816E-6F T4CurDataPortTfr T4/T6 Block R/W 01FF8170-71 T4Config T4/T6 Block R/W 01FF8172-73 T4Control T4/T6 Block R/W 01FF8174-75 T4 Status T4/T6 Block R 01FF8176-77 T4IntMask T4/T6 Block R/W 01FF8178-79 T4Bytes T4/T6 Block R/W 01FF817A-7B T4FIFOBitRem T4/T6 Block R/W 01FF817C-7F (Not Used) 01FF8180-81 (Not Used) 01FF8182-83 DMA1Config DMA Controller R/W 01FF8184-85 DMA1CntLo DMA Controller R/W 01FF8186-87 DMA1CntHi DMA Controller R/W 01FF8188-89 DMA2CntLo DMA Controller R/W 01FF818A-8B DMA2CntHi DMA Controller R/W 01FF818C-8D DMA2BufCntLo DMA Controller R/W 01FF818E-8F DMA2BufCntHi DMA Controller R/W 01FF8190-91 DMA3CntLo DMA Controller R/W 01FF8192-93 DMA3CntHi DMA Controller R/W 01FF8194-95 DMA4CntLo DMA Controller R/W 01FF8196-97 DMA4CntHi DMA Controller R/W 01FF8198-99 DMA5CntLo DMA Controller R/W 01FF819A-9B DMA5CntHi DMA Controller R/W 01FF819C-9D DMA6CntLo DMA Controller R/W 01FF819E-9F DMA6CntHi DMA Controller R/W 01FF81A0-A1 DMA7CntLo DMA Controller R/W 01FF81A2-A3 DMA7CntHi DMA Controller R/W 01FF81A4-A5 DMA8CntLo DMA Controller R/W 01FF81A6-A7 DMA8CntHi DMA Controller R/W 01FF81A8-A9 DMA9CntLo DMA Controller R/W 01FF81AA-AB DMA9CntHi DMA Controller R/W 01FF81AC-AD DMA10CntLo DMA Controller R/W 01FF81AE-AF DMA10CntHi DMA Controller R/W 100723A Conexant 4-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-2. Operation Register Map (5 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 4-12 01FF81B0-B1 DMA0Config DMA Controller R/W 01FF81B2-B3 DMA2Config DMA Controller R/W 01FF81B4-B5 DMA2BlkSize DMA Controller R/W 01FF81B6-B7 DMA2BufBlkSize DMA Controller R/W 01FF81B8-B9 (Not Used) 01FF81BA-BB DMA5BlkSize DMA Controller R/W 01FF81BC-BD DMA6/10Throttle DMA Controller R/W 01FF81BE-BF DMA9BlkSize DMA Controller R/W 01FF81C0-C1 DMA10BlkSize DMA Controller R/W 01FF81C2-C3 DMAIncConfig DMA Controller R/W 01FF81C4-C5 DMACntEnbConfig DMA Controller R/W 01FF81C6-C7 DMAEndian DMA Controller R/W 01FF81C8-C9 DMAUSB0CntLo DMA Controller R/W 01FF81CA-CB DMAUSB0CntHi DMA Controller R/W 01FF81CC-CD DMAUSB0BlkSiz DMA Controller R/W 01FF81CE-CF DMAUSB1CntLo DMA Controller R/W 01FF81D0-D1 DMAUSB1CntHi DMA Controller R/W 01FF81D2-D3 DMAUSB1BlkSiz DMA Controller R/W 01FF81D4-D5 DMAUSB2CntLo DMA Controller R/W 01FF81D6-D7 DMAUSB2CntHi DMA Controller R/W 01FF81D8-D9 DMAUSB2BlkSiz DMA Controller R/W 01FF81DA-DB DMAUSB3CntLo DMA Controller R/W 01FF81DC-DD DMAUSB3CntHi DMA Controller R/W 01FF81DE-DF DMAUSB3BlkSiz DMA Controller R/W 01FF81E0-E1 DMA11CntLo DMA Controller R/W 01FF81E2-E3 DMA11CntHi DMA Controller R/W 01FF81E4-E5 DMA11BlkSiz DMA Controller R/W 01FF81E6-E7 DMA12CntLo DMA Controller R/W 01FF81E8-E9 DMA12CntHi DMA Controller R/W 01FF81EA-EB DMA12BlkSiz DMA Controller R/W 01FF81EC-FF (Not Used) 01FF8200-01 PIOCtrl PIO R/W 01FF8202-03 PIOIF PIO R/W 01FF8204-05 PIOData PIO R/W 01FF8206-07 PIOAckPW PIO R/W 01FF8208-09 PIORevDataSTS PIO R/W 01FF820A-0B PIODataBusSTS PIO R/W 01FF820C-0D PIOHostTimeOut PIO R/W 01FF820E-0F PIOIRQSTS PIO R/W 01FF8210-11 PIOIRQMask PIO R/W Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-2. Operation Register Map (6 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 01FF8212-13 PIOFIFOIF PIO R/W 01FF8214-1F (Not Used) 01FF8220-21 PIOOutFIFO0 PIO R/W 01FF8222-23 PIOOutFIFO1 PIO R/W 01FF8224-25 PIOOutFIFO2 PIO R/W 01FF8226-27 PIOOutFIFO3 PIO R/W 01FF8228-29 PIOOutHold PIO R/W 01FF822A-2B PIOOutFIFOCtrl PIO R/W 01FF822C-2F (Not Used) 01FF8230-31 PIOInFIFO0 PIO R/W 01FF8232-33 PIOInFIFO1 PIO R/W 01FF8234-35 PIOInFIFO2 PIO R/W 01FF8236-37 PIOInFIFO3 PIO R/W 01FF8238-39 PIOInHold PIO R/W 01FF823A-3B PIOInFIFOCtrl PIO R/W 01FF823C-4F (Not Used) 01FF8250-5B (Not Used) 01FF825C-5D VSHiAddr1 Countach Bus System - CDMAC R/W 01FF825E-5F VSLoAddr1 Countach Bus System - CDMAC R/W 01FF8260-61 VSHiAddr2 Countach Bus System - CDMAC R/W 01FF8262-63 VSLoAddr2 Countach Bus System - CDMAC R/W 01FF8264-65 VSHiAddrStep Countach Bus System - CDMAC R/W 01FF8266-67 VSLoAddrStep Countach Bus System - CDMAC R/W 01FF8268-69 VSMode Countach Bus System - CDMAC R/W 01FF826A-6B ABc2aBlkSiz Countach Bus System - CDMAC R/W 01FF826C-6D ABa2cHiAddr Countach Bus System - CDMAC R/W 01FF826E-6F ABa2cLoAddr Countach Bus System - CDMAC R/W 01FF8270-71 ABc2aHiAddr Countach Bus System - CDMAC R/W 01FF8272-73 ABc2aLoAddr Countach Bus System - CDMAC R/W 01FF8274-75 ABa2cThrottle Countach Bus System - CDMAC R/W 01FF8276-77 ABc2aThrottle Countach Bus System - CDMAC R/W 01FF8278-7F (Not Used) 01FF8280-81 DRAMConfig Countach Bus System - SDRAMC R/W 01FF8282-83 ABIIrqStat Countach Bus System - ABI R/W 01FF8284-85 ABIIrqEnable Countach Bus System - ABI R/W 01FF8286-87 ABICountachCtrl Countach Bus System - ABI R/W 01FF8288-89 VSIMode Countach Bus System - VSI R/W 01FF828A-A7 (Not Used) 01FF82A8-A9 DefRdHiAddr Countach Bus System - CBU R/W 01FF82AA-AB DefRdLoAddr Countach Bus System - CBU R/W 100723A Conexant 4-13 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-2. Operation Register Map (7 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 4-14 01FF82AC-AD DefWrHiAddr Countach Bus System – CBU R/W 01FF82AE-AF DefWrLoAddr Countach Bus System – CBU R/W 01FF82B0-B1 DefRdData Countach Bus System – CBU R/W 01FF82B2-B3 DefWrData Countach Bus System – CBU R/W 01FF82B4-FF (Not Used) 01FF8300-01 ABIA2Cbuff1 Countach Bus System – ABI R/W 01FF8302-03 ABIA2Cbuff2 Countach Bus System – ABI R/W 01FF8304-05 ABIA2Cbuff3 Countach Bus System – ABI R/W 01FF8306-07 ABIA2Cbuff4 Countach Bus System – ABI R/W 01FF8308-09 ABIC2Abuff1 Countach Bus System – ABI R/W 01FF830A-0B ABIC2Abuff2 Countach Bus System – ABI R/W 01FF830C-0D ABIC2Abuff3 Countach Bus System – ABI R/W 01FF830E-0F ABIC2Abuff4 Countach Bus System – ABI R/W 01FF8310-11 CSIDMABuff1 Countach Bus System – CSI R/W 01FF8312-13 CSIDMABuff2 Countach Bus System – CSI R/W 01FF8314-15 CSIDMABuff3 Countach Bus System – CSI R/W 01FF8316-17 CSIDMABuff4 Countach Bus System – CSI R/W 01FF8318-FF (Not Used) 01FF8400-FF (Not Used) 01FF8500-3F (Not Used) 01FF8540-41 ScanCtrl Video/Scan Controller R/W 01FF8542-43 ScanCtrlStat Video/Scan Controller R only 01FF8544-45 VSCIRQStatus Video/Scan Controller R/W 01FF8546-47 VSCCtrl Video/Scan Controller R/W 01FF8548-49 VidCaptureCtrl Video/Scan Controller R/W (Bit[8] - R only) 01FF854A-4B SPI_Ctrl Video/Scan Controller R/W (Bit[8] - R only) 01FF854C-4D SPI_Stat Video/Scan Controller R only 01FF854E-7F (Not Used) 01FF8580-81 USBEP1FIFO1 USB Interface R/W 01FF8582-83 USBEP1FIFO2 USB Interface R/W 01FF8584-85 USBEP1FIFO3 USB Interface R/W 01FF8586-87 USBEP1FIFO4 USB Interface R/W 01FF8588-89 USBEP1Hold USB Interface R/W 01FF858A-8B USBEP1Ctrl USB Interface R/W 01FF858C-8D USBEP1Data USB Interface R/W 01FF858E-8F USBEP1Tran USB Interface R/W 01FF8590-9F (Not Used) 01FF85A0-A1 USBEP2FIFO1 USB Interface R/W 01FF85A2-A3 USBEP2FIFO2 USB Interface R/W 01FF85A4-A5 USBEP2FIFO3 USB Interface R/W 01FF85A6-A7 USBEP2FIFO4 USB Interface R/W 01FF85A8-A9 USBEP2Hold USB Interface R/W Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-2. Operation Register Map (8 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 01FF85AA-AB USBEP2Ctrl USB Interface R/W 01FF85AC-AD USBEP2Data USB Interface R/W 01FF85AE-AF USBEP2Tran USB Interface R/W 01FF85B0-B1 USBEP3FIFO1 USB Interface R/W 01FF85B2-B3 USBEP3FIFO2 USB Interface R/W 01FF85B4-B5 USBEP3FIFO3 USB Interface R/W 01FF85B6-B7 USBEP3FIFO4 USB Interface R/W 01FF85B8-B9 USBEP3Hold USB Interface R/W 01FF85BA-BB USBEP3Ctrl USB Interface R/W 01FF85BC-BD USBEP3Data USB Interface R/W 01FF85BE-BF USBEP3Tran USB Interface R/W 01FF85C0-C1 USBEP4FIFO1 USB Interface R/W 01FF85C2-C3 USBEP4FIFO2 USB Interface R/W 01FF85C4-C5 USBEP4FIFO3 USB Interface R/W 01FF85C6-C7 USBEP4FIFO4 USB Interface R/W 01FF85C8-C9 USBEP4Hold USB Interface R/W 01FF85CA-CB USBEP4Ctrl USB Interface R/W 01FF85CC-CD USBEP4Data USB Interface R/W 01FF85CE-CF USBEP4Tran USB Interface R/W 01FF85D0-D1 USBEP0Buf12 USB Interface R/W 01FF85D2-D3 USBEP0Buf34 USB Interface R/W 01FF85D4-D5 USBEP0Buf56 USB Interface R/W 01FF85D6-D7 USBEP0Buf78 USB Interface R/W 01FF85D8-D9 USBVenBuf12 USB Interface R/W 01FF85DA-DB USBVenBuf34 USB Interface R/W 01FF85DC-DD USBVenBuf56 USB Interface R/W 01FF85DE-DF USBVenBuf78 USB Interface R/W 01FF85E0-E1 USBVenStDat12 USB Interface R/W 01FF85E2-E3 USBVenStDat34 USB Interface R/W 01FF85E4-E5 USBVenStDat56 USB Interface R/W 01FF85E6-E7 USBVenStDat78 USB Interface R/W 01FF85E8-E9 USBDesAdr USB Interface R/W 01FF85EA-EB USBIRQ USB Interface R/W 01FF85EC-ED USBSoftReset USB Interface W 01FF85EE-EF USBStall USB Interface W 01FF85F0-F1 USBPOSTDat1/2 USB Interface R 01FF85F2-F3 USBPOSTDat3/4 USB Interface R 01FF85F4-F5 USBPOSTDat5/6 USB Interface R 01FF85F6-F7 USBPOSTDat7/8 USB Interface R 01FF85F8-FF (Not Used) USB Interface 01FF85EC-FF (Not Used) 100723A Conexant 4-15 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-2. Operation Register Map (9 of 9) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 4-16 01FF8600-01 SASTxFIFOHW0 SASIF R/W 01FF8602-03 SASTxFIFOHW1 SASIF R/W 01FF8604-05 SASTxFIFOHW2 SASIF R/W 01FF8606-07 SASTxFIFOHW3 SASIF R/W 01FF8608-09 SASTxFIFOHW4 SASIF R/W 01FF860A-0B SASTxFIFOHW5 SASIF R/W 01FF860C-0D SASTxFIFOHW6 SASIF R/W 01FF860E-0F SASTxFIFOHW7 SASIF R/W 01FF8610-11 SASRxFIFOHW0 SASIF R/W 01FF8612-13 SASRxFIFOHW1 SASIF R/W 01FF8614-15 SASRxFIFOHW2 SASIF R/W 01FF8616-17 SASRxFIFOHW3 SASIF R/W 01FF8618-19 SASRxFIFOHW4 SASIF R/W 01FF861A-1B SASRxFIFOHW5 SASIF R/W 01FF861C-1D SASRxFIFOHW6 SASIF R/W 01FF861E-1F SASRxFIFOHW7 SASIF R/W 01FF8620-7FF (Not Used) Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-3. Setup Registers (1 of 2) Setup Registers are located from 01FF8800H to 01FF8DFFH. Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 01FF8800-01 SIUConfig SIU R/W 01FF8802-03 ROMCtrl SIU R/W 01FF8804-05 CS0/CS5Ctrl SIU R/W 01FF8806-07 CS1/2Ctrl SIU R/W R/W 01FF8808-09 MCSCtrl SIU 01FF880A-0B FlashCtrl SIU R/W 01FF880C-0D RotPackCtrl SIU R/W 01FF880E-0F CS3/4Ctrl SIU R/W 01FF8820-21 DRAMCtrl DRAM/Flash Memory Controller R/W 01FF8822-2F (Not Used) 01FF8830-31 GPIOConfig GPIO Block R/W 01FF8832-33 GPIOData GPIO Block R/W 01FF8834-35 GPIODir GPIO Block R/W 01FF8836-4F (Not Used) 01FF8850-51 SstepClk Scan/Print Motor Control R/W 01FF8852-53 VPStepClk Scan/Print Motor Control R/W 01FF8854-5F (Not Used) 01FF8860-6F (Not Used) 01FF8870-71 RotNN Bit Rotation Block R/W 01FF8872-73 BRBWarp Bit Rotation Block 01FF8874-75 RotLineLength Bit Rotation Block R/W 01FF8876-8F (Not Used) 01FF8880-1 125µSprescaler Fax Timing Block R/W 01FF8882-3 ICLKPeriod Fax Timing Block R/W 01FF8884-5 MSINTPeriod Fax Timing Block R/W 01FF8886-7 INTClear Fax Timing Block W 01FF8888-8F (Not Used) 01FF8890-91 ScanCycle Video/Scan Controller R/W 01FF8892-93 ScanConfig Video/Scan Controller R/W 01FF8894-95 ScanDotCtrl Video/Scan Controller R/W 01FF8896-97 ScanLength Video/Scan Controller R/W 01FF8898-99 ScanStartDelay Video/Scan Controller R/W 01FF889A-9B StartEdges Video/Scan Controller R/W 01FF889C-9D StartConfig Video/Scan Controller R/W 01FF889E-9F Clk2aEdges Video/Scan Controller R/W 01FF88A0-A1 Clk2bEdges Video/Scan Controller R/W 01FF88A2-A3 Clk2cEdges Video/Scan Controller R/W 01FF88A4-A5 ADCSampleCfg Video/Scan Controller R/W 100723A Conexant 4-17 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-3. Setup Registers (2 of 2) Address Register Name Block Name R, DR (Dummy Read), W, DW (Dummy Write) 4-18 01FF88A6-A7 ClampCtrl Video/Scan Controller R/W 01FF88A8-A9 ClampDelay Video/Scan Controller R/W R/W 01FF88AA-AB ClampEdges Video/Scan Controller 01FF88AC-AD LED0Edges Video/Scan Controller R/W 01FF88AE-AF LED1Edges Video/Scan Controller R/W 01FF88B0-B1 LED2Edges Video/Scan Controller R/W 01FF88B2-B3 LED0PWM Video/Scan Controller R/W 01FF88B4-B5 LED1PWM Video/Scan Controller R/W 01FF88B6-B7 LED2PWM Video/Scan Controller R/W 01FF88B8-B9 LEDConfig Video/Scan Controller R/W 01FF88BA-BB ScanIAConfig Video/Scan Controller R/W 01FF88BC-BD ScanCtrlDelay Video/Scan Controller R/W 01FF88BE-BF ADCConfig Video/Scan Controller R/W 01FF88C0-C1 SPIConfig Video/Scan Controller R/W 01FF88C2-C3 SPIData Video/Scan Controller R/W (Bit[15:8] – R only) 01FF88C4-C5 (Not Used) 01FF88C6-C7 VidLineCfg Video/Scan Controller R/W 01FF88C8-C9 VidLLStat Video/Scan Controller R only 01FF88CA-CB VidOddFLStat Video/Scan Controller R only 01FF88CC-CD VidEvenFLStat Video/Scan Controller R only 01FF88CE-CF (Not Used) 01FF88D0-DF (Not Used) 01FF88E0-FF Reserved 01FF88900-FFF (Not Used) Conexant 100723A Hardware Description 4.2 Cache Memory Controller 4.2.1 4.2.1.1 • • • • • • • • MFC 2000 Multifunctional Peripheral Controller 2000 Functional Description Cache Summary 4 kB instruction cache RAM with expansion capability Physical address cache access and cache tags Two Way Set Associative with LRU algorithm 16 bytes cache line size with 128 cache lines in each way Supports both ARM and thumb mode instructions Cache memory can be enabled or disabled Provides lock function and flush function Interfaces between ARM7TDMI and SIU (System Interface Unit) 4.2.1.2 Cache Overview The Cache Controller is an instruction only cache; a level 1 cache for ARM7TDMI. The cache, when enabled, will support zero wait state sequential instruction access from ARM provided the instruction is in the cache and valid (Cache hit). If an instruction is not found in the cache memory (Cache miss), the Cache Controller will activate the LRU (Least Recently Used) replacement algorithm. In this case, the ARM will incur a number of wait states depending on the memory speed. The 4 kB Cache Memory is divided into two Ways, which means 2 kB per Way. Each Way is further divided into 128 Cache Lines with 16 bytes of instructions in each Line. If a Cache miss is detected and Cache Line fill is required, the Cache Controller will replace the least recently used (LRU) Cache line, the Cache Line fill operation is done in burst (sequential), minimizing the overhead. The ability for the software to lock the entire Cache or individual line and to flush the entire Cache Memory contents are provided. In addition, the Cache Memory and Cache Tags can be placed in Test Mode for power-up verification and system diagnoses. The entire Cache Memory and Cache Controller can also be disabled allowing the ARM to bypass the Cache Controller unit. Way 1 Way 0 16 bytes 1 bit 1 bit 1 bit a[31 : 11] 32 bits W3 32 bits W2 Cache Tag Cache (128 Sets) ( 2K 32 bits W1 32 bits W0 RAM Bytes ) LRU 128 Sets v L 21 bits Figure 4-3. MFC2000 Cache Organization 100723A Conexant 4-19 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-4. Cache Tag Data Format (for Test Mode Read/Write Operation) Cache Tag Data Format Bits 4.2.1.3 Description 31 LRU bit, accessible only through Way 0 Tag Read 30:23 Unused Bits 22 Lock 21 Valid 20:0 A[31:11] Cache RAM The Cache RAM consists of four 512 X 16 Asynchronous Static RAM modules, and they are organized into two 512 words (32 bit/word) to support two way set associative. The memory map for direct accesses while in Test Mode or Lock Mode is as follows: WAY 0: $01FE0000-$01FE07FF WAY 1: $01FE0800-$01FE0FFF 4.2.1.4 Cache Tags The Cache Tags are defined as follows: Valid (1 bit): A 1 in this bit indicates that the Tags and data at the addressed Cache Line are both valid. Neither Tags nor data have meaning if this bit is 0. Upon power up, the tag memories will undergo an automatic flush operation that requires 128 clocks. During the flush operation, the cache is disabled. Lock (1 bit): A 1 in this bit indicates that the Tags and data at the addressed Cache Line are both valid and locked and should not be replaced when a Cache miss is detected. LRU (1 bit): Indicates that the Tags and data at the addressed Cache line (if not locked) at Way 0 can be replaced if this bit is 0. If this bit is a 1, the Cache Line and Tags in Way 1 should be chosen for replacement. Unused (8 bits): Unused bits are undefined. A[31:11]: Address Tag bits which together with Cache address (A[10:4]), uniquely identify a Cache Line in the entire 32-bit physical address space. The Cache Tags are memory mapped to the following address space (not fully utilized) when in the Test Mode or Lock Mode : WAY 0: $01FE1000-$01FE17FF WAY 1: $01FE1800-$01FE1FFF It should be noted that bits 2-3 of the addresses are not decoded during the Tag entry accesses, i.e., $sa+00, $sa+04, $sa+08, and $sa+0C all access the same Tag entry. 4.2.1.5 Accessing the Cache To access the Cache during an instruction fetch, the Cache Controller performs the normal cache operation. If accesses are performed during Test mode or Lock mode, the Tag RAM and Cache RAM are treated as regular memories. If the Cache is enabled, regardless of cache hit or miss, the Cache Controller asserts one wait state for every non-sequential cycle to start the instruction fetch cycle. 4-20 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 If the access results in a hit, the wait state is de-asserted and a 32-bit Cache data is output to the ARM. Subsequent Sequential (S-cycles) access(es) require zero wait state if they are found in the same Cache Line. If the access crosses Cache Line boundary, the Cache Controller will add one wait state for the first S cycle that crosses the boundary, and then add additional wait states if it results in a cache miss. If the access misses the Cache, the Cache Controller extends the wait states until the corresponding cache data or cache line is received from external memory through SIU. The number of wait states inserted is affected by the status of the lock bit for the corresponding Cache Line. If the Line is not locked, then the Cache Line fill operation will be performed and the required wait state will depend on the speed and the data width of the external devices. If the Cache Line is locked, the Cache Controller will re-generate the ARM cycle and forward the cycle to SIU. The required wait states in this case will be much less than that of Cache Line fill, but still a few cycles more than a simple pass-through operation when the Cache is disabled. This is due to the time required for the tag comparison. It should be noted that, in the case of Cache Line fill, the requested data is not transferred to the ARM until the Cache Line fill operation is completed. 4.2.1.6 Definition of a Cache Hit There are two requirements for a Cache hit. First the ARM A[31:11] must match the Cache Address Tags accessed by A[10 :4] in an instruction fetch cycle. Second, the addressed Cache Line must be Valid. 4.2.1.7 LRU Algorithm The LRU (Least Recently Used) algorithm is applied when a Cache miss is detected. This algorithm first looks for a non-valid Line in the Set for a replacement. The order that is used for this checking is Way 0 first, then Way 1. If both lines associated with the Set are valid, then the Lock bit check is followed. If both are not locked, then the LRU bit (one bit only) associated with the Set is tested. If it is a zero, the Cache Line in Way 0 is replaced; otherwise, Way 1. If both are locked, no replacement can be performed and the Cache Controller will convert the cycle from instruction fetch to data fetch and forward the cycle to SIU for the requested instruction. If only one of the two lines is locked, the unlocked line will be chosen for the replacement. 4.2.1.8 SIU interface The ARM to SIU interface behaves differently depending on whether the Cache is enabled or not. If the Cache is disabled, the only affect that the Cache Controller adds to the ARM/SIU interface is a small propagation delay for those signals that pass through the Cache Controller (refer to the block diagram for the pass-through signals). On the other hand, if the Cache is enabled, the Cache controller will response to an instruction cycle by either providing data to the ARM in a cache hit, or, converting the instruction cycle to a series of burst data cycle(s) and forwarding them to SIU in a cache miss. 100723A Conexant 4-21 MFC2000 Multifunctional Peripheral Controller 2000 4.2.2 Hardware Description Register Description Name/Address Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default Cache Control Register N/A Flush Cache Global Lock Lock Mode Test Mode Cache Enable N/A N/A Rst Value 00h $01FF8800 This register resides in the SIU block. The SIU, upon detecting the set condition for a given bit(s) in this register, asserts the corresponding control signal(s) to the Cache controller. Bit 7 Reserved Bit 6 Flush Cache Read/writable bit. Writing a 1 to this bit flushes all Valid bits, LRU bits, and Lock bits in the Cache Tag to zero. It requires 128 cycles to flush the entire Tag memory area. This bit will be automatically reset upon completion of the flush operation. Flush does not reset Global Lock or Cache Enable condition if present. Bit 5 Global Lock Read Writable bit. Writing a 1 to this bit locks the entire Cache memory; a 0 unlocks the Cache. This bit provides a quick way to lock the entire cache memory. Bit 4 Lock Mode Read/writable bit. Writing a 1 to this bit and a 0 to the Cache Enable bit places the Cache in the Lock Mode. The Cache stays in Lock Mode until a 0 is written to this bit. Bit 3 Test Mode Read/writable bit. Writing a 1 to this bit and a 0 to the Cache Enable bit sets the Cache into test mode. In test mode, the Cache RAMs and Tags can be accessed in the same manner as regular memory. Certain Tag bits are readable only. The Cache stays in Test Mode until a 0 is written to this bit. Bit 2 Cache Enable Read/writable bit. Writing a 1 enables the Cache and the Cache stays enabled until a 0 is written or a reset is received. Power-up resets to 0 and disables the Cache. Bit 1 Reserved Bit 0 Reserved 4-22 Conexant 100723A Hardware Description 4.2.3 Firmware Operation 4.2.3.1 Enabling the Cache MFC 2000 Multifunctional Peripheral Controller 2000 The Cache Enable bit in the SIU Cache Control register determines if the Cache is enabled or not. In power-up reset state, the Cache is disabled. If disabled, all CPU accesses go directly to the SIU and the Cache Controller passes through all signals from ARM to SIU. After the power-up reset, all Cache Tag entries are flushed after 128 clocks. If the Cache is enabled after power-up, the Cache Controller starts to update the Cache memory and Cache tag after the flush operation is completed. 4.2.3.2 Locking the Cache The system can lock the entire cache memory by setting GLOBAL LOCK bit to 1 in Cache Control register. The Cache remains locked until the bit is reset. Setting and resetting the Global _Lock bit has no effect on the individual lock bit set during the Lock mode, the individual lock bit can be cleared by setting Flush_Cache bit to 1. The system can also lock an individual Cache Line by placing the Cache in the Lock Mode. Once in the Lock mode, the system can access the Cache RAM and Tag RAM as if they were regular memory. A write to the Tag entry sets both the Lock bit and Valid bit for the corresponding Tag. The software is responsible for properly mapping the instructions from ROM (‘where to be cached in’) into Cache RAM and Tag RAM (‘where to be locked down’) based on the modular of 2048 bytes. In other words, the A10-A2 of address lines used for the ROM code and Cache/Tag RAM’s entry must be identical, and the A31-A11used for the ROM code becomes the data entry for the corresponding Tag entry. Caching is disabled during lock mode; the system must exit the lock mode before enabling the Cache. Once a Cache line is locked, LRU replacement policy prevents the replacement of the locked Cache Line. If both Cache Lines in a Set (two Ways) are locked, the LRU algorithm is not able to replace either Line; thus, no Cache Line fill is performed; instead, a data fetch N (non-sequential) cycle is generated by the Cache Controller and sent to the SIU. A minimum of 5 wait states is expected. 4.2.3.3 Flushing the Cache The system can clear the Cache by activating the Flush input. This signal is generated by the SIU when the Flush bit in the Cache Control register is set by the system. Upon receiving the Flush input, the Cache Controller starts the flush operation. The operation takes 128 clocks to resets all the Tag Valid bits, LRU bit, and Lock bit. During the operation the cache, if enabled, is temporarily disabled until the flush is completed. The Flush bit is cleared automatically at the end of the flush operation. 4.2.3.4 Testing the Cache and Tag Memories The system can access the Cache memory and Tag RAM as regular memory does when in Test mode. Test mode is entered after setting the Test bit in the Cache Control register. In Test mode, the Tag RAM and Cache RAM behave like an ordinary memory for read/write cycles. This test feature is not only required for the power-up self test, but also is important for diagnostics when a system problem develops. The contents of the TAG and Cache RAM are essential to the investigation of the problem. Note: The Valid bit, Lock bit, and LRU bit can only be read, not written, and LRU is only available through Way 0 access. Note: 100723A It is important to flush the Cache upon completion of the Test Mode. Conexant 4-23 MFC2000 Multifunctional Peripheral Controller 2000 4.3 Hardware Description SIU 4.3.1 Functional Description The System Integration Unit (SIU) is responsible for interfacing between the ARM7TDMI core, the Cache Memory Controller, the Internal Peripheral Bus (IPB), and the External Bus (EB). The ARM7TDMI core and the Cache Memory Controller are on the Internal System Bus (ISB). The ISB data bus is 32-bits wide and the IPB and EB data buses are 16-bits wide. The SIU generates the external chip selects along with chip selects to all the internal peripherals. It provides the following functions: 1. Interfaces between the Internal Peripheral Bus (IPB), the Internal System Bus (ISB) and the External Bus (EB). The SIU allows bus master devices on the IPB and ISB. 2. Control the chip selects to devices on the IPB, the ISB, and the EB. 3. Address multiplexing for DRAM access. 4. ROM interleave control (including wait state control for the interleave mode): no interleave and 2-way interleave with external Q-switch. 5. Fast page mode ROM operation. 6. Even though ARM7TDMI is fixed to the little endian in this MFC2000 chip, the SIU can support the little endian or big endian for the DMA operation. 7. Support Arm and Thumb mode operations. 4.3.1.1 IPB, ISB and External Bus IPB Bus The IPB Bus supports both 8-bit and 16-bit peripherals. The ARM or an internal bus master such as DMA can access a device residing on the IPB bus. The SIU provides the chip selects to each of the internal peripheral devices. The chip selects are driven in the second clock cycle of an IPB bus cycle. The peripheral device needs to decode only the address lines required to access the specific registers within the block. Transactions on the IPB bus only occur when a device on the IPB bus is being accessed. All accesses on the IPB bus require two peripheral bus clock cycles (2 SIUCLK’s). During the first cycle, the address is decoded and determined if an access to an internal peripheral is occurring. During the second cycle the peripheral chip select is asserted, and the access occurs. During Write operations to peripherals, signals BS[1:0] are used to signal which bytes are valid on the data bus. 8-bit peripherals can ignored these signals. 16-bit peripherals MUST use these signals to allow each 8-bit half of the peripheral registers to be written independently. This is due to the fact that the ARM compiler may generate two byte transactions when accessing a 16-bite register on the IPB instead of a single halfword transaction. During Read operations, the peripherals must fill the 16-bit IPB data bus. If the peripheral is less than 16-bit wide, it should fill the empty bits with 0. 4-24 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 ISB Bus The ISB Bus is used for connecting ARM and Cache Controller to the highest performance. The 32-bit ISB bus directly interfaces with the ARM core 32-bit data bus. The cache memory controller resides on this bus. All control signals to and from the ARM, and its address bus go through the cache memory controller regardless of the cache enable bit. The cache controller control register resides in the SIU. When the ARM is fetching instructions, and it is a cache hit situation, the ARM gets the instructions from the cache. The SIU lets the other bus masters have the bus. When the ARM is fetching instructions, and it is a cache miss situation, the SIU must perform a burst read of eight halfwords (4 words) to fill up the cache line if the cache line is not locked. If the cache line is locked, then the SIU reads in two halfwords (one word) of instruction. When the ARM is fetching data, data is passed directly from the SIU to the ARM. EB Bus The EB Bus is used for connecting external memories and devices. The width of the selected slave device is programmable in the chip select configuration register. The external A[23:12] and A[11:0] addresses are multiplexed through A[11:0] pins. The ALE signal is provided to latch A[23:12] addresses externally. External Chip Selects The SIU provides programmable external chip selects. Each chip select is programmable through the chip select configuration register. • • • • • • Each chip select can be configured to be: enabled or disabled (default = enabled). programmable from 0 up to 7 wait states. programmable read/write delay-on (write strobe activated one or two SIUCLK cycles later). programmable write early-off (read or write strobe deactivated one SIUCLK cycle earlier). programmable to allow for 8 or 16 bit devices. The SIU will automatically perform the necessary transaction to access any size data as long as the source of the transaction is internal. Note: The RD/WR-delay-on and WR-early-off settings should be disabled for zero wait state access. For other wait state settings (> 1wait state), the delay-on and early-off will shorten the width of read/write strobe. Firmware has the responsibility to set RD/WR-delay-on and WRearly-off bits correctly. Otherwise, read or write strobes may disappear. For example, if 1 wait state and 1 RD/WR-delay-on are set for a chip select, the read strobe is not suppressed when firmware tries to do a read operation. If 2 wait states, 1 WR-early-off and 1 RD/WR-delay-on are set for a chip select, the write strobe is not suppressed when firmware try to do a write operation. ROM Interface The SIU supports non-interleave, 2-way interleave and fast page mode access to ROM, depending on the ROM Access Configuration pins (AE[2]/ROM_CFG[0] and AO[2]/ROM_CFG[1] pins). Following are the four configurations supported by the SIU. ROM Access Configuration[1:0] 100723A ROM Mode 00 8-bit non-interleave 01 16-bit non-interleave 10 16-bit 2-way interleave 11 16-bit fast page mode Conexant 4-25 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The MFC2000 assigns 4 multi-function pins (AE[2], AO[2], AE[3], and AO[3]) to facilitate the interleave access. SIU generates 4 signals on these 4 pins to control ROMs for the following types of interleave accesses. • In 2-way interleave mode, MFC2000 pins AE[2] ,AO[2], AE[3], and AO[3] are connected to pin A[1:0] of the even and odd external ROMs. MFC2000 pins A[1:0] are used to enable the ROM’s data busses. ROMCSn RDn A[25] A23 CS EVEN OE A[25] A23 DD A[4] A2 A[4] A2 AE[3] A1 A0 AO[3] AO[2] A1 AE[2] A[0] EN D EN OE ODD A0 A[1] Q-SW CS D Q-SW D Figure 4-4. 2-Way Interleave ROM Connection • • • • The ROMCSn can be programmed to have up to 7 wait states for the initial access, and up to 1 wait state for the sub-sequential access. The write access to the ROM chip select area (ROMCSn) is allowed. It is customer’s choice to use it or not. To use NOR-type flash memory in the ROM chip select area, WREn and WROn are designed to be used as the write strobes for the different banks in the interleave mode (not for the higher and lower bytes). Therefore, the 16-bit wide flash memory should be used in order to avoid the extra glue logic. For non-interleave mode flash memory in the ROM chip select area, the WROn is used to access the higher byte of the 16-bit data bus and the WREn is used to access the lower byte of the 16-bit data bus. Assume that W wait states are needed for the initial access to ROM and S wait states (S = 0 or 1) for the subsequential access according to the CPU clock frequency and the ROM speed. For a burst of 8 half-words interleave access, the wait state of each half-word access, assuming the starting address’s A[3:1]=000. We can have the following table show all different access modes for reading from ROM. 4-26 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-5. Access Modes for Reading ROM ROM Access Mode Data Type Cache Memory Wait States 8-bit noninterleave instruction Cache enabled and Cache miss 16-bit noninterleave instruction Cache enabled and Cache miss w,w,w,w,w,w,w,w 8-bit noninterleave instruction Cache disabled w If the sequential access occurs, save the address decoding cycle for all accesses except the first access. 16-bit noninterleave instruction Cache disabled w If the sequential access occurs, save the address decoding cycle for all accesses except the first access. 8-bit noninterleave data Not applied w If the sequential access occurs, save the address decoding cycle for all accesses except the first access. 16-bit noninterleave data Not applied w If the sequential access occurs, save the address decoding cycle for all accesses except the first access. 16-bit 2-way interleave instruction Cache enabled and Cache miss w, s, This is cache burst access. 0 or 1 wait state is programmable and depends on the CPU clock frequency and the ROM speed. If ‘w-s-1’ is less than 1, it will be forced to 1. w,w,w,w,w,w,w,w w,w,w,w,w,w,w,w Notes This is cache burst access. Save the address decoding cycle for all accesses except the first access. (16 sequential accesses) (8 sequential accesses) w-s-1, s, w-s-1, s, This is cache burst access. Save the address decoding cycle for all accesses except the first access. w-s-1, s (8 sequential accesses) 16-bit 2-way interleave instruction Cache disabled w, s, w-s-1, s, w-s-1, s, w-s-1, s (one interleave access sequence) The actual sequential access length is dynamic. 16-bit 2-way interleave data Cache enabled and Cache miss w, s, w-s-1, s, w-s-1, s, w-s-1, s (one interleave access sequence) The actual sequential access length is dynamic. 100723A Conexant 0 or 1 wait state is programmable and depends on the CPU clock frequency and the ROM speed. If the starting address of the sequential access is not lined up with the octal address boundary of the interleave access, the partial interleave access sequence should be done. Then, restart the interleave access sequence at the octal address boundary of the interleave access. Even if the stopping address of the sequential access is not lined up with the octal address boundary of the interleave access, the access sequence must be stopped immediately at anywhere. If ‘ws-1’ is less than s, it will be forced to s. 0 or 1 wait state is programmable and depends on the CPU clock frequency and the ROM speed. If the starting address of the sequential access is not lined up with the octal address boundary of the interleave access, the partial interleave access sequence should be done. Then, restart the interleave access sequence at the octal address boundary of the interleave access. Even if the stopping address of the sequential access is not lined up with the address boundary of the interleave access, the access sequence must be stopped immediately at anywhere. If ‘ws-1’ is less than s, it will be forced to s. 4-27 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description If the ROM write access (Flash memory in the ROM address range) is performed in the interleave access mode, the SIU still generates those signals to control ROMs and external multiplexes to perform the interleave access. But, all the access (no matter if it is the sequential access or not) have W wait states. External DRAM Interface When the decoded address from any bus master matches external DRAM address, the SIU will issue a DRAM request to the DRAM controller and start the transaction . First, it routes the DRAM row address to the address bus. After receiving the column enable signal from the DRAM controller, the SIU multiplexes the DRAM column address to the same address bus according to the size of the DRAM . The SIU will perform the next transaction after receiving the DRAM ready back from the DRAM controller signaling the DRAM transaction is complete. The SIU also looks at the burst request signals from the bus master who owns the bus to generate the BURST signal to the DRAM Controller indicating a burst access. Bus Arbitration The bus arbitrator block arbitrates control of the internal and external busses between the ARM7TDMI core and any bus master devices (such as DMA) residing on the IPB or ISB. The ARM core is the default bus master and has control of the bus whenever no other bus master requests it . In arbitrating control of the bus, the arbitrator gives highest priority to the DMA Controller and then, the ARM core. In burst mode access (both DMA and CPU), the bus is not arbitrated within the burst access. In order to prevent a bus master from hogging the bus. The maximum burst length allowed is eight halfword access. The DMA of internal peripherals only bursts a maximum of five halfwords. A bus master requests the bus by asserting request. The arbitrator grants the bus to the requesting bus master by asserting grant. The requesting bus master must continue to assert request for as long a bus ownership is required and release the bus by de-asserting request. The arbitrator always inserts a single dead cycle before granting the bus to another bus master. Little Endian and Big Endian The little endian and big endian control is only for internal DMA (The DMA request is from an internal peripheral). When a DMA access requires different endian format. the corresponding bit of the DMAEndian register needs to be set. The SIU will transform the endian format; from little endian DMA address and data into big endian format or from big endian DMA address and data into little endian format. The even and odd write signals (WREn, WROn) also change accordingly. The following tables show the final addresses and data at the ASIC pins, and the resulting DMA read or write data. Internal DMA data size is always 16 bits (a halfword). 4-28 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-6. Read Operation (Internal Peripheral Gets Data From Memory) BIG ENDIAN DMA SIZE MEM SIZE LITTLE ENDIAN DMA_AD DMA DATA MEM ADDR MEM DATA (output) (input) Half Word Byte 0000 Byte 2, Byte 3 0011,0010 Byte 3, Byte 2 Half Word Byte 0010 Byte 0, Byte 1 0001,0000 Byte 1, Byte 0 Half Word Half Word 0000 Byte 2, Byte 3 0010 Byte 3, Byte 2 Half Word Half Word 0010 Byte 0, Byte 1 0000 Byte 1, Byte 0 Table 4-7. Write Operation (Internal Peripheral Puts Data Into Memory) LITTLE ENDIAN DMA SIZE MEM SIZE DMA_AD BIG ENDIAN DMA DATA MEM ADDR (input) 100723A MEM DATA WRON WREN (output) Half Word Byte 0000 B1,B0 0011,0010 B0,B1 0 0 Half Word Byte 0010 B3,B2 0001,0000 B2,B3 0 0 Half Word Half Word 0000 B1,B0 0010 B0,B1 0 0 Half Word Half Word 0010 B3,B2 0000 B2,B3 0 0 Conexant 4-29 MFC2000 Multifunctional Peripheral Controller 2000 4.3.2 Hardware Description Register Description SIU Control Address Bit 15 SIU Configuration (Not Used) (SIUConfig) 01FF8801 Address Bit 14 (Not Used) Bit 7 SIU Configuration CS3n Write Only (SIUConfig) 01FF8800 Bit 6 Flush Cache Bit 13 (Not Used) Bit 5 Bit 12 (Not Used) Bit 4 Bit 11 (Not Used) Bit 3 Global Lock Cache Lock Cache Test Mode Mode Bit 10 (Not Used) Bit 2 Cache Enable Bit 9 (Not Used) Bit 1 Disable Force External Bit 8 CS4n Read Only Bit 0 Disable Abort Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value 00h Read Value 00h Bit 8 CS4n Read only Writing a 1 makes CS4n a read only CS. Default is 0. Bit 7 CS3n Write only Writing a 1 makes CS3n a write only CS. Default is 0. Bit 6 Flush: Write only bit. Writing a 1 generates a pulse which flushes all Valid bits, LRU bits and Lock bits in the Cache Tag. Default is 0 Bit 5 Global_Lock: Read/writable bit Writing a 1 locks the whole Cache. The Cache stays in Lock Mode until a 0 is written. Default is 0. Bit 4 Cache_Lock: Read/writable bit Writing a 1 places the Cache in the Lock Mode and the Cache stays in Lock Mode until a 0 is written. Each cache line is locked individually . Default is 0 Bit 3 Cache_Test: Read/writable bit Bit 2 Cache_Enable: Read/writable bit Writing a 1 enables the Cache and the Cache stays enabled until a 0 is written or a reset is received. Power-up resets to 0, so the Cache is disabled. Bit 1 Force_external This signal will disable the forcing of all accesses to be visible on the external bus regardless of destination. If this signal is enabled, only external transactions will be visible on the external bus. 1 is disabled, 0 is enabled. Default is 0. Bit 0 Disable_abort: This signal disables abort generation for internal and external access. If this signal is a 1, all transactions to internal and external address space will be allowed to occur regardless of if an valid internal or external peripheral exists. If this signal is 0, then accesses must be to valid peripheral locations or an abort signal will be generated. Default is 0. 4-30 Writing a 1 sets the Cache into Test Mode and the Cache RAM and Tags can be accesses as regular memory. Note that certain Tag bit only readable . The Cache stays in Test Mode until a 0 is written to this bit. Default is 0. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 External Chip Select Control Registers Associated with each external chip select pin is a register to control automatic functions that will be executed when a location within the chip select range is accessed. All bits default to 0 unless otherwise specified. Several control functions are common between the various chip select register. A chip select is enable when the enable bit is set to 1. Wait states defines the number of wait states that are added to the associated bus cycle, in increments of SIUCLK cycle. A bus cycle is 1 SIUCLK. Size is the width of the external devices peripherals using the chip select. The allowable widths are 8 and 16 bits. Size are coded : 0=byte, 1 = half-word. If the size of the data is larger than the size of the peripheral, the SIU will automatically perform multiples accesses to complete the transaction. Default to 0. Where applicable, Strobe Delay On = 1 delays the activation of RDn or WRn by 1 clk. Write Early Off deactivates the WRn strobe by 1 clk earlier. Address ROMCS Control (ROMCtrl) 01FF8803 Bit 15 (Not Used) Address ROMCS Control (ROMCtrl) 01FF8802 Bit 7 Bit 7 Bit 14 (Not Used) Bit 6 Read/Write Mode[1] Strobe (read only) Delay On Bit 13 (Not Used) Bit 5 (Not Used) Bit 4 Mode[0] (read only) Read/Write strobe Delay On Bits 6-5 Bit 12 Bit 11 (Not Used) Bit 10 (Not Used) Bit 3 Subsequent Wait[2] Wait Bit 2 Wait[1] Bit 9 (Not Used) Bit 1 Wait[0] Bit 8 (Not Used) Bit 0 Enable Default Rst. Value xxh Read Value 00h Default Rst. Value 1??11111b Read Value 1??11111b (default = 1) Mode[1:0] ROM interface mode (read only). These 2 bits are read in directly from 2 pins (the AE[2]/ROM_CFG[0] pin and the AO[2]/ROM_CFG[1] pin during reset). 00: 8-bit Non Interleave 01: 16-bit Non interleave 10: 16-bit 2way interleave 11: 16-bit fast page mode Bit 4 Subsequent access wait states in interleave mode (default = 1) Bits 3-1 Wait states or initial access wait states in interleave mode (default = 7) Bit 0 ROMCSn Enable. Note: 100723A (default = 1) These controls are also applicable to the optional CS5n. Conexant 4-31 MFC2000 Multifunctional Peripheral Controller 2000 Address Bit 15 CS5 Control (CS5Ctrl) 01FF8805 Bit 13 Bit 12 Write Strobe Read/Write Read/Write Size Early Off Strobe Strobe Delay Delay On[1] On[0] Address Bit 7 CS0 Control (CS0Ctrl) 01FF8804 Bit 7,15 Bit 14 Hardware Description Bit 6 Bit 5 Bit 4 Write Strobe Read/Write (Not Used) Early Off Strobe Delay On Write Strobe Early Off Size Bit 3 Wait[2] Bit 10 Wait[1] Bit 2 Wait[1] Bit 9 Wait[0] Bit 8 Enable Bit 1 Wait[0] Bit 0 0 Default Rst. Value xxh Read Value 00h Default Rst. Value 00x00000b Read Value 00h (default =0) Bit 6,14-13 Read/Write Strobe Delay On (default = 0) Bit 5 (Not used) Bit 4,12 Bit 11 Wait[2] Size (default = 0 . Byte ) Mode = 0: 8-bit access 1: 16-bit access Bit 3-1, 11-9 Wait states Bit 8 (default =0) CS5n Enable Note: The enable control for CS0 is set by the Battery Control Logic. Address CS2 Control (CS2Ctrl) 01FF8807 Bit 15 Bit 14 Write Strobe Early Off Read/Write Strobe Delay On[1] Bit 13 Bit 12 Read/Write Size Strobe Delay On[0] Bit 11 Wait[2] Bit 10 Wait[1] Bit 9 Wait[0] Bit 8 Enable Default Rst. Value 01h Read Value 01h Address CS1 Control (CS1Ctrl) 01FF8806 Bit 7 Bit 6 Write Strobe Early Off Read/Write Strobe Delay On[1] Bit 5 Bit 4 Read/Write Size Strobe Delay On[0] Bit 3 Wait[2] Bit 2 Wait[1] Bit 1 Wait[0] Bit 0 Enable Default Rst. Value 01h Read Value 01h Bit 15 Write Early Off strobe (default =0 ) Bit[14:13] Read/Write strobe Delay On (default = 00) Bit 12 Size (default = 0. Byte ) 0: 8-bit access 1: 16-bit access Bit[11:9] Wait states (default =0) Bit 8 CS2n Enable (default = 1) . Bit 7 Write Early Off strobe (default =0) Bit[6:5] Read/Write strobe Delay On (default = 00) 4-32 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bit 4 Size (default = 0. Byte) 0: 8-bit access 1: 16-bit access Bit[3:1] Wait states (default =0) Bit 0 CS1n Enable (default = 1) Address CS4 Control (CS4Ctrl) 01FF880F Bit 15 Bit 14 Write Strobe Early Off Read/Write Strobe Delay On[1] Bit 13 Bit 12 Read/Write Size Strobe Delay On[0] Bit 11 Wait[2] Bit 10 Wait[1] Bit 9 Wait[0] Bit 8 Enable Default Rst. Value 01h Read Value 01h Address CS3 Control (CS3Ctrl) 01FF880E Bit 7 Bit 6 Write Strobe Early Off Read/Write Strobe Delay On[1] Bit 5 Bit 4 Read/Write Size Strobe Delay On[0] Bit 3 Wait[2] Bit 2 Wait[1] Bit 1 Wait[0] Bit 0 Enable Default Rst. Value 01h Read Value 01h Bit 15 Write Early Off strobe (default =0 ) Bit[14:13] Read/Write strobe Delay On (default = 00) Bit 12 Size (default = 0. Byte) 0: 8-bit access 1: 16-bit access Bit[11:9] Wait states (default =0) Bit 8 CS4n Enable (default = 1) Bit 7 Write Early Off strobe (default =0) Bit[6:5] Read/Write strobe Delay On (default = 00) Bit 4 Size (default = 0. Byte) 0: 8-bit access 1: 16-bit access Bit[3:1] Wait states (default =0) Bit 0 CS3n Enable (default = 1) Address Modem CS Control (MCSCtrl) 01FF8809 Address Modem CS Control (MCSCtrl) 01FF8808 Bit 15 (Not Used) Bit 7 Bit 14 (Not Used) Bit 6 Bit 13 Bit 12 (Not Used) Bit 5 (Not Used) Bit 4 Write Strobe Read/Write (Not Used) Strobe Early Off Delay On Size Bit 11 (Not Used) Bit 3 Wait[2] Bit 10 (Not Used) Bit 2 Wait[1] Bit 7 Select P80 or external MIRQn interrupt ( default =0, select P80 ) Bit 7 Write Early Off strobe (default =0 ) Bit 6 Read/Write strobe Delay On (default = 00) Bit 5 100723A Bit 9 (Not Used) Bit 1 Wait[0] Bit 8 Modem Interrupt Select Bit 0 Enable Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value 00x00001b Read Value 01h (Not Used) Conexant 4-33 MFC2000 Multifunctional Peripheral Controller 2000 Bit 4 Size Hardware Description (default = 0 . Byte) 0: 8-bit access 1: 16-bit access Bit 3,2&1 Wait states (default =0) Bit 0 MCSn Enable. (default = 1) Address: Bit 15 Flash Memory Control (FlashCtrl) (Not Used) Bit 14 Bit 13 (Not Used) (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 10 Bit 9 Bit 8 FCS1n value FCS0n value FCS1n disable for NAND for NAND type type 01FF880B Default: Rst. Value x8h Read Value 08h Address: Bit 7 Flash Memory Control (FlashCtrl) Bit 6 Bit 5 Write Strobe FCSn (Not Used) Early Off NAND-type Bit 4 Size Bit 3 Wait[2] Bit 2 Wait[1] Bit 1 Wait[0] Bit 0 FCS0n disable Default: Rst. Value 00x00000b Read Value 01FF880A 00h Bit 10 Output value of FCS1n when NAND-type memory is used. Not applicable for NOR-type memory. Bit 9 Output value of FCS0n when NAND-type memory is used. Not applicable for NOR-type memory. Bit 8 1= Disable FCS1n (default = 0: Enable) When this bit is set to 1, pin PWM2/FCS1n is used as PWM2. Bit 7 Write Early Off strobe (default =0) Bit 6 NAND-type memory is used when this bit is set to 1. (default =0 . NOR type). Bit 4 Size (default = 0 . Byte) 0: 8-bit access 1: 16-bit access Bit[3:1] Wait states (default =0) Bit 0 1= Disable FCS0n (default = 0: Enable) When this bit is set to 1, pin PWM0/FCS0n is used as PWM0. 4-34 Conexant 100723A Hardware Description Address Bit 15 RotPacked Data register Access Control MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value (RotPackCtrl) 00h 01FF880D Address RotPacked Data register Access Control Bit 7 Bit 6 Write Strobe Early Off Read/Write Strobe Delay On[1] Bit 5 Bit 4 Read/Write Size Strobe Delay On[0] Bit 3 Wait[2] Bit 2 Wait[1] Bit 1 Wait[0] Bit 0 Enable Default Rst. Value 01h Read Value (RotPackCtrl) 01h 01FF880C Bit 7 Write Early Off strobe (default =0 ) Bit[6:5] Read/Write strobe Delay On (default = 00) Bit 4 Size (default = 0. Byte) 0: 8-bit access 1: 16-bit access Bit[3:1] Wait states (default =0) Bit 0 RotPackedData register access enable. (default = 1) Note: This register is used to set up the access timing for the DMA read from RotPackedData register to the external PIF device. It provides the control of wait states and RDn width when accessing the RotPackedData. 100723A Conexant 4-35 MFC2000 Multifunctional Peripheral Controller 2000 4.3.3 Hardware Description Timing SIUCLK (internal clock) A ARM_A[31:0] B C Internal internal D ALE EXT_AD[11:0] A[23:12] A[11:0] A[11:0]+2 B[23:12] B[11:0] B[11:0]+1 B[11:0]+2 B[11:0]+3 C[23:12] C C[11:0] D[23:12] D[11:0] "+1 CSn RDn WRn Read Data Write Data Byte0 B1 B2 B3 Figure 4-5. Zero Wait State, Single Access, Normal Read, Normal Write 4-36 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 SIUCLK (internal clock) A ARM_A[31:0] Internal B C ALE EXT_AD[11:0] A[23:12] A[11:0] A[11:0]+2 B[23:12] B[11:0] B[11:0]+1 B[11:0]+2 B[11:0]+3 C[23:12] CSn RDn WRn Read Data Write Data Byte0 Byte1 Byte2 Byte3 Figure 4-6. One Wait State, Single Access, One Read, One Write 100723A Conexant 4-37 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description SIUCLK (internal clock) A ARM_A[31:0] B C ALE EXT_AD[11:0] A[23:12] A[11:0] A[11:0]+2 B[23:12] B[11:0] B[11:0]+2 C[23:12] C[11:0] CS1n CS2n RDn WRn Read Data Write Data Byte0 Byte1 Figure 4-7. Two Wait States, Single Access, Read On Delayed (CS1n), Write Early Off (CS2n) 4-38 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 SIUCLK (internal clock) A1 ARM_A[31:0] A2 A3 A4 A5 A6 A7 A8 ALE EXT_AD[11:0] A1[23:12] A1[11:0] A2[11:0] A3[11:0] A4[11:0] A5[11:0] A6[23:12] A6[11:0] A7[11:0] A8[11:0] CSn RDn WRn Read Data Write Data OCTAL BOUNDARY Figure 4-8. Zero Wait State, Burst Access, Normal Read, Normal Write 100723A Conexant 4-39 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description SIUCLK (internal clock) A ARM_A[31:0] A+2 A+4 C B B+2 B+4 B+6 B[11:0]+2 B[11:0]+4 B[11:0]+6 ALE EXT_AD[11:0] A[23:12] A[11:0] A[11:0]+2 A[11:0]+4 B[23:12] B[11:0] ROMCSn RDn WREn/WROn Figure 4-9. Fast Page Mode ROM Access 1,0,0 Read Access Followed by 1,1,1,1, Write Access 4-40 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Detail External Bus Timing 3 wait states SIUCLK (internal clock) A[11:0] upper address t AD t AAD lower address t AAH ALE t ALD Ext. CS's (romcsn, gpio21(mcsn),gpio74(cs5,2n), cs1n,cs0n) t CSD RDn t RD t RD WREn, WROn t WD t WD t WD t WD GPIO[5] (CS3n), GPIO[6] (CS4n) t CGD D[15:0] (read) t DIS t DIH D[15:0] (write) t DOD t DOH Figure 4-10. System Bus Timing Read/Write with Wait States 100723A Conexant 4-41 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description zero wait state SIUCLK (internal clock) A[11:0] lower address upper address t AD t AS t AH Ext. CS's t CSD RDn t R0D t R0D WREn, WROn t W0D t W0D GPIO[5] (CS3n), GPIO[6] (CS4n) t CG0D D[15:0] (read) tDI0S t DI0H t DH D[15:0] (write) t DO0H t DO0D Figure 4-11. System Bus Timing Zero-Wait-State Read/Write 4-42 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 4 wait states (w=4) s= 1 2 wait states s= 1 SIUCLK (internal clock) A[11:0] t AD ROMCS, CS5n tCSD AE[2] t iAD AE[3] t iAD AO[2] t iAD AO[3] t iAD RDn t RD D[15:0] (read) t DIS t DIH Figure 4-12. System Bus Timing 2-Way Interleave Read Timing (S = 1) 100723A Conexant 4-43 MFC2000 Multifunctional Peripheral Controller 2000 3 wait states (w=3) Hardware Description 3 wait states 3 wait states 3 wait states SIUCLK (internal clock) A[11:0] t AD ROMCS, CS5n t CSD AE[2] AE[3] t iAD AO[2] t iAD AO[3] t iAD WREn, WROn t WD t WD D[15:0] (write) t DOS t DOH Figure 4-13. System Bus Timing 2-Way Interleave Write Timing (S = 0 or 1) 4-44 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-8. Read/Write with Wait States Timing Parameters Symbol Parameter Min. Max. Units Address delay time tAD 5 20 ns Chip select delay time tCSD - 20 ns Read delay time for the normal case and delay-on) tRD 5 18 ns Write delay time (the normal case, delay-on, and early-off) tWD 5 12 ns CS[4:3] delay time (gated with read or write strobe) tCGD - 18 ns Data input setup time tDIS 8 - ns Data input hold time tDIH 0 - ns Data output delay time tDOD - 21 ns Data output hold time tDOH 5 21 ns Read delay time (for zero wait state) tR0D 5 11 ns Write delay time (for zero wait state) tW0D 5 11 ns CS[4:3] delay time (gated with read or write strobe for zero wait state) tCG0D - 20 ns Data input setup time (for zero wait state) tDI0S 8 - ns Data input hold time (for zero wait state) tDI0H 0 - ns Data output delay time (for zero wait state) tDO0D - 21 ns Data output hold time (for zero wait state) tDO0H - 21 ns 2-way interleave address delay time tIAD - 11 ns ALE address setup time tAAD 10 ALE address hold time tAAH 2 ALE delay time tIald - 10 ns Address setup time (read and write) tIAS 3 - ns Address hold time (read and write) tIAH 2 - ns Data hold time (write) tIDH 2 - ns ns ns Note: SIUCLK is the internal system interface clock. These values are for SIUCLK = 30 MHz. When S=0 in the 2-way interleave read operation, tIAD parameter is still same. 4.3.4 Firmware Operation Caution Only word or half-word accesses that happen on their respective boundaries are valid. If the access is to a non-boundary address, the SIU ignores the last 2 LSBs (word access) or 1 LSB (half word access) and reset the address to the appropriate boundaries. For 16-bit register, writing a byte to the even address (register address) will update the lower 8-bits of the register. Writing a byte to the odd address (register address + 1) will update the upper 8 bits of the register. BS[1:0] indicate which byte is written. Writing a halfword to either the even or odd address will update all 16-bits. 100723A Conexant 4-45 MFC2000 Multifunctional Peripheral Controller 2000 4.4 4.4.1 Hardware Description Interrupt Controller Function Description Table 4-9. MFC2000 Interrupt and Reset Signals Description Modem Interrupt External Source MIRQn IRQ Number P80 Core IRQ0 Countach Imaging DSP Bus System IRQ1 IRQ2 Scan Step Interrupt (irqsstep) Motor Control Block IRQ3 Vertical Print Step Interrupt (irqvpstep) Motor Control Block IRQ4 Countach Bus System Interrupt (irqcbs) Print subsystem Interrupt 4-46 Internal Source PRTIRQn SASIF Interrupt (irqsasif) SASIF Block IRQ5 DMA ch.2 Interrupt (irqdma2) DMA Control Block IRQ6 Bi-level Resolution Conversion Interrupt (irqbrc) Bi-level Resolution Conversion Block IRQ7 DMA ch.10 Interrupt (irqdma10) DMA Control Block IRQ8 Reset BATRSTn RESETn Watchdog Timer & power-down lockout N/A VSC IF Interrupt (irqvsc) VSC IF Block IRQ9 Timer Interrupt 1 (irqtimer1) Interrupt Controller IRQ10 External Interrupt 1 IRQ11 IRQ11 PIO Interrupt (irqpio) PIO Block IRQ12 External Interrupt 2 IRQ13 IRQ13 T.4/T.6 Interrupt (irqt4) T.4/T.6 Block IRQ14 SOPIF Interrupt (irqsopif) SOPIF Block IRQ15 System Interrupt (irqsys) IRQ16 Power Down Block IRQ16 Software Interrupt (irqsw) Interrupt Controller IRQ17 SSIF Interrupt (irqssif) SSIF IRQ18 DMA ch.5 Interrupt (irqdma5) DMA Controller IRQ19 SmartDAA IF Interrupt (irqsdaa) SmartDAA IF IRQ20 Timer Interrupt 2 (irqtimer2) Interrupt Controller IRQ21 USB Interrupt (irqusb) USB Block IRQ22 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 This section describes the three methods of interrupting the CPU program flow, which are: • • • Reset Interrupts for the normal functions (IRQs) Interrupt for the development system (through the IRQ16 pin)/Power Down (through the Power Down block) The reset signal is controlled by the Prime Power Reset block. IRQs and SYSIRQn are managed by the Interrupt Controller and are sent to the ARM as either an IRQ or a FIQ if enabled. Table 4-9 summarizes the interrupts and their sources. 4.4.1.1 Reset An active level on the CPU Reset input halts program execution and resets the CPU's internal registers. When the CPU's Reset input is released, the CPU begins program execution at the address located in the reset vector. This signal can be activated externally by putting low levels on the BATRSTn or RESETn pins, or internally by the Watchdog Timer or the Battery Power Control logic Lockout circuitry. (For more information, see Section 5-1.) 4.4.1.2 System Interrupt The system interrupt can be activated externally by the programmable interrupt IRQ16 or by the power down signal from the Power Down Block. This interrupt is treated the same as other interrupts in the interrupt controller. Firmware has the responsibility to make it the highest priority and to use it as the NMI function which is provided by many other CPUs. The input from the Power Down Block is detected and OR’ed with the programmable external IRQ16 pin. This combined signal is then synchronized to the rising edge of SIUCLK, and then clocked to the falling edge of SIUCLK before an interrupt will be operated in the interrupt controller. For normal system operation, the system interrupt represents a loss of system power, indicated by Power Down signal going low. The system interrupt control firmware performs the necessary power-down maintenance operations, and then writes to the Lockout Enable register (LockEnn) to protect the battery backed-up registers during loss of power. (Note that activating lockout also generates a reset). 4.4.1.3 Interrupts for Normal Functions The level-mode interrupt is provided for internal and external interrupts. All internal interrupts are high-level interrupts. The external Modem interrupt is a low-level interrupt. All other external interrupts are programmable to be either high/low/level/edge interrupts. There are only two kinds of registers needed for the interrupt controller; one is the interrupt enable register and another is the interrupt event register. The interrupt controller DOES NOT prioritize the multiple sources of interrupts and DOES NOT generate the interrupt addresses. It only provides interrupt masking for all of interrupts including the system interrupt (i.e., enable/disable control), and generates the interrupt request for the CPU. When the bit corresponding to an interrupt in the interrupt enable register is set, it enables the interrupt request to cause an interrupt. When the bit is cleared, it masks the interrupt. When the event corresponding to an interrupt bit in the interrupt event register occurs, this bit needs to be set on the rising edge of SIUCLK whether it is enabled or not. On the falling edge of SIUCLK, the interrupt controller generates the interrupt (IRQn and FIQn) to CPU. This interrupt controller has two identical sets of interrupt logic and registers for IRQn and FIQn. Firmware needs to decide which interrupts trigger IRQn and which interrupts trigger FIQn. In the interrupt subroutine, the CPU needs to clear the interrupt event from the interrupt source. Then, this bit will be reset at the following rising edge of SIUCLK. For the software interrupt, the interrupt source is the interrupt bit in the interrupt event register itself. Therefore, the CPU needs to write a 1 to generate the software interrupt and write a 0 to clear the software interrupt. The source of the IRQ is required to latch the interrupt signal and hold the signal active until the CPU processes the IRQ. The CPU firmware clears the source of the IRQ before exiting the IRQ's service routine. If any IRQ's are pending when new IRQ's are enabled by either setting the interrupt enable registers or the Interrupt Disable bit in the CPU Processor Status register, the enabled IRQ causes an almost immediate CPU interrupt [the CPU only acknowledges interrupts during the op code fetch of an instruction]. 100723A Conexant 4-47 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description External Interrupts The optional IRQ13 and IRQ11 external interrupt requests share pins with GPIO9 and GPIO8, respectively, and these interrupts are enabled by setting the corresponding bits in the IRQ ENABLE registers to 1. These interrupt enable bits must be set to 0 when using GPIO[9:8] as GPIO to prevent these pins from causing interrupts. If an external interrupt source is connected to GPIO8 and/or GPIO9, the corresponding GPIO direction control register must remain set to 0 (GPI) [default] to avoid bi-directional conflicts with the GPIO output. Dedicated external interrupt pins are provided for an active low modem interrupt (MIRQn). All other external interrupts (IRQ2, IRQ11, IRQ13, and IRQ16) are programmable to be either active low or high, edge or level triggered. All external interrupts are resynchronized in the ASIC. Internal Interrupts Internal interrupts are provided for the Countach Imaging DSP Bus System (irqcbs), the T.4/T.6 logic (irqt4), the vertical printer stepper motor (irqvpstep), the scan stepper motor (irqsstep), the parallel IO block (irqpio), USB interface (irqusb), the 50ms timer1 and timer2 (irqtimer1, irqtimer2), DMA Channel 2 (irqdma2), Bi-level Resolution Conversion (irqbrc), DMA Channel 10 (irqdma10), Scanner IF (irqvsc), SOPIF (irqsopif ), SASIF (irqsasif), software interrupt (irqsw), SSIF (irqssif), DMA Channel 5 interrupt (irqdma5), and the SDAA Interface interrupt (irqsdaa). 4-48 Conexant 100723A Hardware Description 4.4.2 4.4.2.1 MFC 2000 Multifunctional Peripheral Controller 2000 Register Description IRQ/FIQ Event1 Register Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: IRQFIQEvent1 IRQ15 irqsopif IRQ14 irqt4 IRQ13 irqext2 IRQ12 irqpio IRQ11 irqext1 IRQ10 irqtimer1 IRQ9 irqvsc IRQ8 irqdma10 Rst Value Event Status Event Status Event Status Event Status Event Status Event Status Event Status Event Status 00h 0x01FF8021 Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: IRQFIQEvent1 IRQ7 irqbrc IRQ6 irqdma2 IRQ5 irqsasif IRQ4 irqvpstep IRQ3 irqsstep IRQ2 irqprt IRQ1 irqcbs IRQ0 MIRQ Rst Value Event Status Event Status Event Status Event Status Event Status Event Status Event Status Event Status 00h Read Value 0x01FF8020 00h Bit 15 Internal interrupt from SOPIF block. Read only. Bit 14 Internal interrupt from T4/T6 block. Read only. Bit 13 External interrupt 2. Programmable. Read only. Bit 12 Internal PIO interrupt from PIO block. Read only. Bit 11 External interrupt 1. Programmable. Read only. Bit 10 Internal timer 1 interrupt up to 50 ms. Read only. Bit 9 Internal video scan controller interrupt from VSC IF block. Read only. Bit 8 Internal DMA channel 10 interrupt from DMA controller block. Read only. Bit 7 Internal bi-level resolution conversion interrupt from BLRC block. Read only. Bit 6 Internal DMA channel 2 interrupt from DMA controller block. Read only. Bit 5 Internal SASIF interrupt from SASIF block. Read only. Bit 4 Internal vertical print step interrupt from motor control block. Read only. Bit 3 Internal scan step interrupt from motor control block. Read only. Bit 2 External print subsystem interrupt. Programmable. Read only. Bit 1 Internal Countach bus system interrupt from Countach Bus System. Read only. Bit 0 External modem interrupt (active low) or the internal P80 core interrupt. Read only. 100723A Conexant 4-49 MFC2000 Multifunctional Peripheral Controller 2000 4.4.2.2 Hardware Description IRQ/FIQ Event2 Register Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: IRQFIQEvent2 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst Value xxh Read Value 00h Default: (Not Used) IRQ22 irqusb Event Status IRQ21 irqtimer2 Event Status IRQ20 irqsdaa Event Status IRQ19 irqdma5 Event Status IRQ18 irqssif Event Status IRQ17 irqsw Event Status IRQ16 irqsys Event Status 0x01FF8023 Address: IRQFIQEvent2 0x01FF8022 Rst Value x0000000b Read Value 00h Bit 6 Internal USB interrupt from USB block. Read only. Bit 5 Internal timer 2 interrupt up to 50 ms. Read only. Bit 4 Internal SmartDAA interface interrupt from SmartDAA IF block. Read only. Bit 3 Internal DMA channel 5 interrupt from DMA controller block. Read only. Bit 2 Internal SSIF from SSIF block. Read only. Bit 1 Internal Software interrupt. When CPU writes a 1, the software interrupt is issued. When CPU writes a 0, the software interrupt is cleared. R/W. Bit 0 Internal system interrupt from programmable external interrupt 16 or power down circuit Read only. 4.4.2.3 IRQ Enable1 Register Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: IRQEnable1 Enable IRQ15 irqsopif Enable IRQ14 irqt4 Enable IRQ13 irqext2 Enable IRQ12 irqpio Enable IRQ11 irqext1 Enable IRQ10 irqtimer1 Enable IRQ9 irqvsc Enable IRQ8 irqdma10 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst Value 00h Read Value 00h Default: Enable IRQ7 irqbrc Enable IRQ6 irqdma2 Enable IRQ5 irqsasif Enable IRQ4 irqvpstep Enable IRQ3 irqsstep Enable IRQ2 irqprt Enable IRQ1 irqcbs Enable IRQ0 MIRQ 0x01FF8025 Address: IRQEnable1 0x01FF8024 Bit 15 – 0: 4-50 Rst Value 00h Read Value 00h When 1 will enable the corresponding interrupt and when 0 will mask that interrupt out. R/W. Conexant 100723A Hardware Description 4.4.2.4 MFC 2000 Multifunctional Peripheral Controller 2000 IRQ Enable2 Register Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: IRQEnable2 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) 0x01FF8027 Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst Value xxh Read Value 00h Default: IRQEnable2 (Not Used) Enable IRQ22 irqusb Enable IRQ21 irqtimer2 Enable IRQ20 irqsdaa Enable IRQ19 irqdma5 Enable IRQ18 irqssif Enable IRQ17 irqsw Enable IRQ16 irqsys 0x01FF8026 Bit 3 – 0: 4.4.2.5 Rst Value x0000000b Read Value 00h When 1 will enable the corresponding interrupt and when 0 will mask that interrupt out. R/W. FIQ Enable1 Register Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: FIQEnable1 Enable IRQ15 irqsopif Enable IRQ14 irqt4 Enable IRQ13 irqext2 Enable IRQ12 irqpio Enable IRQ11 irqext1 Enable IRQ10 irqtimer1 Enable IRQ9 irqvsc Enable IRQ8 irqdma10 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst Value 00h Read Value 00h Default: Enable IRQ7 irqbrc Enable IRQ6 irqdma2 Enable IRQ5 irqsasif Enable IRQ4 irqvpstep Enable IRQ3 irqsstep Enable IRQ2 irqprt Enable IRQ1 irqcss Enable IRQ0 MIRQ 0x01FF8029 Address: FIQEnable1 0x01FF8028 Bit 15 – 0: 4.4.2.6 Rst Value 00h Read Value 00h When 1 will enable the corresponding interrupt and when 0 will mask that interrupt out. R/W. FIQ Enable2 Register Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: FIQEnable2 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) 0x01FF802B Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst Value xxh Read Value 00h Default: FIQEnable2 (Not Used) Enable IRQ22 irqusb Enable IRQ21 irqtimer2 Enable IRQ20 irqsdaa Enable IRQ19 irqdma5 Enable IRQ18 irqssif Enable IRQ17 irqsw Enable IRQ16 irqsys 0x01FF802A Bit 3 – 0: 100723A Rst Value x0000000b Read Value 00h When 1 will enable the corresponding interrupt and when 0 will mask that interrupt out. R/W. Conexant 4-51 MFC2000 Multifunctional Peripheral Controller 2000 4.4.2.7 Hardware Description External Interrupt Configuration Register Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default EIRQConfig irq16edge irq13edge irq11edge irq2edge irq16actlo irq13actlo irq11actlo irq2actlo Rst Value 00h Read Value 00h 0x01FF802C Bit 7 – 4: Write a 1 will configure the corresponding external interrupt to be edge triggered and write a 0 will configure it to be level triggered. Bit 3 – 0: Write a 1 will configure the corresponding external interrupt to be active low and write a 0 will configure it to be active high. 4.4.2.8 External Interrupt Clear Register Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: EIRQClear (Not Used) (Not Used) irq21clr irq10clr eirq16clr eirq13clr eirq11clr eirq2clr Rst Value xx000000b Read Value 00h 0x01FF802D Bit 3 – 0: Firmware uses these bits to clear the corresponding edge triggered external interrupt which is latched in the interrupt controller. After writing a 1 to clear the interrupts, the bits reset themselves to 0. Bit 5 – 4: Firmware uses these bits to clear the corresponding internal timer interrupts. After writing a 1 to clear the interrupts, the bits reset themselves to 0. 4.4.2.9 Timer1 Register Address: Bit 15 Bit 14 Bit 13 Timer1 0x01FF802F Address: Timer1 Bit 12 Bit 11 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Timer 1 Value LSB 0x01FF802E Bit 15 – 0: 4-52 Bit 10 Bit 9 Bit 8 Default: Bit 0 Rst Value 00h Read Value 00h Default: Timer 1 Value MSB Bit 2 Bit 1 Rst Value 00h Read Value 00h This is the timer value for the timer1 interrupt. This value will be loaded in a counter when the timer interrupt bit is enabled. The value loaded in this register is dependent on the SIUCLK frequency. This interrupt period can be programmed up to 50 ms with a programmable resolution. To write a new timer value into the register, the enable bit in the IRQ/FIQ Enable register must be disabled first; the new timer value is then written into the register and the enable bit is set to load the new timer value into the counter. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 4.4.2.10 Timer2 Register Address: Bit 15 Bit 14 Bit 13 Timer2 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Timer 2 Value MSB Rst Value 00h Read Value 00h 0x01FF8031 Address: Bit 7 Bit 6 Bit 5 Timer1 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Timer 2 Value LSB Default: Rst Value 00h Read Value 00h 0x01FF8030 Bit 15 – 0: Default: This is the timer value for the timer2 interrupt. This value will be loaded in a counter when the timer interrupt bit is enable. The value loaded in this register is dependent on the SIUCLK frequency. This interrupt period can be programmed up to 50 ms with a programmable resolution (see Table 4-10). To write new timer value into the register, the enable bit in the IRQ/FIQ Enable register has to be disabled first; the new timer value is then written into the register and the enable bit is then set to load the new timer value into the counter. The resolution of the timer1 and timer2 is dependent on SIUCLK and can be calculated as follows: TMRCLK = (SIUCLK/B)/8 = ICLK/8 (value of B is programmable) Table 4-10. Programmable Resolution of Timer1 and Timer2 SIUCLK (MHz) 100723A B ICLK (MHz) TMRCLK (MHz) TMRCLK (uSec) 30 3 10 1.25 0.8 30 4 7.5 0.9375 1.067 37.5 4 9.375 1.171875 0.833 40 4 10 1.25 0.8 Conexant 4-53 MFC2000 Multifunctional Peripheral Controller 2000 4.4.3 Hardware Description Timing SIUCLK (internal) MIRQn PRTIRQn(IRQ2) or GPIO[8](IRQ11) or GPIO[9](IRQ13) or IRQ16(SYSIRQ) Figure 4-14. External Interrupt Request Timing The MFP2000 chip resynchronizes MIRQn, PRTIRQn, GPIO[8], GPIO[9], and IRQ16 signals internally. There are no setup time and hold time requirements for MIRQn, PRTIRQn, GPIO[8], GPIO[9], MIRQn, and IRQ16 signals with respect to SYSCLK. The four Note: external interrupts PRTIRQn, GPIO[8], GPIO[9], and IRQ16 can also be programmed as edge triggered interrupts. In this case, the interrupt signals are implemented as clock into flip-flops with D-input either tied to high or low; again there is no setup and hold time requirements either. 4.5 4.5.1 DRAM Controller (Including Battery DRAM) Functional Description The DRAM Controller interfaces to external memory devices and to the internal ARM7 SIU block. The DRAM memory space can be divided into two banks of memory which can be independently configured. The system clock rate that is supported can be up to 40MHz and can support the DRAM characteristics that are listed in the following tables Addressing Size: 512K, 1M, 4M, 16M Organization: 4 bits, 8 bits, or 16 bits Access Speed: 50, 60, 70, 80 ns The maximum memory size that is supported for two memory banks is 32M. The DRAM Chip sizes that are supported go up to 16M, but are limited to the row/column configurations that can be accommodated from the address multiplexing table (Table 4-12) and the DRAM row/column configuration Table 4-14). The number of DRAM access and refresh cycle wait states can be programmed from the DRAMCtrl register. Specifically, options to control the RAS precharge width, RAS low time, and CAS low time are provided. The drive capability of the DRAM control signals can support a maximum of 50pF of loading capacitance. Several types of external DRAM configurations can be supported: non-interleaved (8-bit or 16-bit data bus) and 2way interleaved (16-bit data bus) (See Table 4-11). Memory bank 0 can be configured independently from memory bank 1. 4-54 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 If a burst of data is sent to the DRAM, the DRAM Controller will run in page mode once the initial access is completed. The maximum burst length is limited to 8 halfwords (i.e., the maximum burst length coincides with the CACHE line length) and is controlled by a burst signal that is generated from the SIU. If a burst of data is being sent to the DRAM, but an octal address boundary occurs, the burst signal will turn off causing a RASn precharge. It is impossible to go across a page boundary without precharging the RASn signal. Note: If a 16-bit wide memory structure is implemented, bursts of data must be 16-bit halfword bursts. 8-bit byte bursts are only allowed for an 8-bit wide memory structure. Table 4-11. DRAM Wait State Configurations Non-Interleaved Modes (8 or 16 bit interfaces) 1 Cycle CASn 30 MHz -50, -60 3 wait state, PG = 1 wait state 2 Cycle CASn 30 MHz -50, -60, -70, -80 3 wait state, PG = 2 wait state (read) 2 wait state, PG = 1 wait state (write) 37.5 MHz and 40 MHz -50, -60 5 wait state, PG = 2 wait state (read) 37.5 MHz -70 5 wait state, PG = 2 wait state (read) 4 wait state, PG = 1 wait state (write) 4 wait state, PG = 1 wait state (write) Interleaved Mode (16-bit interface) 30 MHz -50, -60, -70, -80 3 wait state, PG = 0,1,0 wait state (read)-Even starting address, non octal boundary 4 wait state, PG=1,0,1 wait state (read)- Odd starting address, non octal boundary 2 wait state, PG = 1 wait state (write) 37.5 MHz and 40 MHz -50, -60 5 wait state, PG = 0,1,0 wait state (read) 37.5 MHz -70 5 wait state, PG = 0,1,0 wait state (read) 4 wait state, PG = 1 wait state (write) 4 wait state, PG = 1 wait state (write) Note: PG = page mode 4.5.1.1 Memory Bank Structure DRAM address space can be selected in 2 separate memory blocks (Bank 0: RASn[0] and CASOn[0] (8-bit) or CASOn[1:0] (16-bit) or CASOn[1:0] and CASEn[1:0] (interleaved), Bank 1: RASn[1] and CASOn[0] (8-bit) or CASOn[1:0] (16-bit) or CASOn[1:0] and CASEn[1:0] (interleaved). Separate control bits are provided in the Backup Configuration register to enable and disable (default) each of the memory banks. Each bank has separate configuration controls and the address ranges of the two memory banks is continuous around the midpoint of the DRAM memory bank. The RASn[1] starting address is 03000000h and grows larger based on the size of the memory. The end of the RASn[0] bank ends at 03000000h and grows smaller from that point. The memory range is programmed through the address multiplexer selections for bank 0 and bank 1 in the DRAMCtrl register. 100723A Conexant 4-55 MFC2000 Multifunctional Peripheral Controller 2000 4.5.1.2 Hardware Description Non-Interleaved DRAM Accesses Non-interleaved DRAM accesses are available for 8-bit or 16-bit data bus. Byte access is available for both 8-bit and 16-bit data bus and 16-bit halfword access is available for 16-bit data bus. DRAM early-write mode, normal read mode and page mode are supported. Read-modify-write is not supported. Note: 16-bit DRAMs must have upper and lower CAS’s in order to work with the DRAM controller. 8-bit bursts of data will not work with a 16-bit wide memory structure. 02000000h Bank 0 02800000h RASn[0] 03000000h RASn[1] 03400000h Bank 1 04000000h NOTE: In this example, Bank 0 is 8M and Bank 1 is 4M. Figure 4-15. DRAM Bank/Address Map 4.5.1.3 2-way Interleaved DRAM Accesses The two-way interleaved DRAM interface can support up to four 16-bit wide devices a maximum of 8M deep. Bank 0 is selected with RASn[0] and bank 1 is selected with RASn[1]. CASEn[1:0], CASOn[1:0], DWRn, DOEOn, DOEEn, ADDR, and DATA are common between the two banks. 2-way interleaving is limited to a 16-bit wide databus. 8-bit or 16-bit wide devices can be used. The ARM CPU can write 32-bit words, 16-bit halfwords or bytes to the memory banks. The addressing to the interleaved DRAMs starts with address bit 2. Bits 1 and 0 are used internally to generate the proper CASOn[1:0] and CASEn[1:0] signals. When the memory structure is configured for two-way interleaving, byte bursts are not allowed. Only bursts of 32-bit words or 16-bit halfwords are allowed. The maximum burst length is eight 16-bit halfwords. The burst length is controlled by the DRAMBURST signal that is sent from the SIU. The external memory structure can use the output enables directly to the memory device or for increased speed can use external bus transceivers. Bus contention must be considered when the output enables are tied directly to a DRAM memory. 4-56 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-12. Address Multiplexing Part 1 Address Multiplexing Select Option 000 Select Option 001 Select Option 010 Select Option 011 ROW ROW ROW ROW Register Physical Address COL. COL. COL. COL. A[13] A[22] A[13] A[23] A[13] A[24] A[13] A[25] A[13] A[12] A[21] A[12] A[22] A[12] A[23] A[12] A[24] A[12] A[11] A[20] A[11] A[21] A[11] A[22] A[11] A[23] A[11] A[10] A[19] A[10] A[20] A[10] A[21] A[10] A[22] A[10] A[9] A[18] A[9] A[19] A[9] A[20] A[9] A[21] A[9] A[8] A[17] A[8] A[18] A[8] A[19] A[8] A[20] A[8] A[7] A[16] A[7] A[17] A[7] A[18] A[7] A[19] A[7] A[6] A[15] A[6] A[16] A[6] A[17] A[6] A[18] A[6] A[5] A[14] A[5] A[15] A[5] A[16] A[5] A[17] A[5] A[4] A[13] A[4] A[14] A[4] A[15] A[4] A[16] A[4] A[3] A[12] A[3] A[13] A[3] A[14] A[3] A[15] A[3] A[2] A[11] A[2] A[12] A[2] A[13] A[2] A[14] A[2] A[1] A[10] A[1] A[11] A[1] A[12] A[1] A[13] A[1] A[0] A[9] A[0] A[10] A[0] A[11] A[0] A[12] A[0] Table 4-13. Address Multiplexing Part 2 Address Multiplexing Select Option 100 Select Option 101 Select Option 110 Select Option 111 Register Physical Address ROW COL. ROW COL. ROW COL. ROW COL. A[11] A[24] A[13] A[23] A[13] A[24] A[12] A[22] A[12] A[10] A[23] A[12] A[22] A[12] A[23] A[11] A[21] A[11] A[9] A[22] A[11] A[21] A[11] A[22] A[10] A[20] A[10] A[8] A[21] A[10] A[20] A[10] A[21] A[9] A[19] A[9] A[7] A[20] A[9] A[19] A[9] A[20] A[8] A[18] A[8] A[6] A[19] A[8] A[18] A[8] A[19] A[7] A[17] A[7] A[5] A[18] A[7] A[17] A[7] A[18] A[6] A[16] A[6] A[4] A[17] A[6] A[16] A[6] A[17] A[5] A[15] A[5] A[3] A[16] A[5] A[15] A[5] A[16] A[4] A[14] A[4] A[2] A[15] A[4] A[14] A[4] A[15] A[3] A[13] A[3] A[1] A[14] A[3] A[13] A[3] A[14] A[2] A[12] A[2] A[0] A[13] A[2] A[12] A[2] A[13] A[1] A[11] A[1] 100723A Conexant 4-57 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 4-14. DRAM Row/Column Configuration Memory Size Address Multiplex Setting 8-bit 16-bit 2-wy intrl. Supported/Not Supported Row/Column Configuration Row Column 256K x 8 000 000 000 Supported 9 9 256K x 16 DRAMs 000 000 000 Supported 9 9 --- --- --- Not Supported 10 8 512K x 8 000 000 000 Supported 10 9 1M x 8 001 001 001 Supported 10 10 1M x 16 DRAMs 001 001 001 Supported 10 10 --- --- --- Not Supported 12 8 4M x 8 010 010 100 Supported 11 11 4M x 16 DRAMs 001 111 101 Supported 12 10 --- --- --- Not Supported 13 9 011 110 --- Supported 12 12 --- --- --- Not Supported 13 11 16M x 8 4.5.1.4 Refresh Operation DRAM Refresh is performed automatically using the CAS-before-RAS method. Three different refresh speeds are supported: slow, normal and fast. These speeds are selected by bits in the backup configuration register. The refresh time is based on the crystal oscillator frequency and the refresh rate that is selected. During prime power when it is time to refresh the DRAM, a CAS-before-RAS refresh cycle will be inserted. If the DRAM is being accessed when a DRAM refresh is requested, the refresh cycle is not inserted until the access is complete. The maximum burst length that the DRAM Controller will see is 8 halfwords (i.e., the maximum burst length coincides with the CACHE line size). The maximum burst length is controlled by the SIU with the DRAMBURST signal that is sent to the DRAM Controller. 4-58 Conexant 100723A Hardware Description 4.5.1.5 MFC 2000 Multifunctional Peripheral Controller 2000 Power Down Mode When the ASIC is powered down, the DRAMs cannot be accessed. Only DRAM refresh will continue on battery power (VDRAM). Refresh timing is generated from a one shot and an internal gate delay circuit during battery powered operation. To ensure a smooth transition from VDD refresh to battery powered refresh, a control signal from the power reset block allows the DRAM controller to switch from VDD refresh to battery refresh when power is down. When the prime power is reapplied, the refresh logic switches back to VDD refresh. The refresh speed selected using the BackupConfig register remains in force during the battery backed up mode. The DRAM Backup time duration is defined by the two DRAM Backup time bits in the BackupConfig register. No backup, 1-2 days, 2-3 days, and infinite are the backup options. Note: The AMFPC ASIC uses a 3V process; therefore, if the DRAM memory structure is to be backed up, for the lowest power consumption 3 DRAMs should be used. Also, any external circuitry must also be battery powered. The output pads of the AMFPC are only 5V tolerant during high Z. The simplified block diagram for the DRAM controller is illustrated in Figure 4-16. EXTERNAL ADDRESS DATABUS SIU DRAM CONTROLLER DOEOn SIUCLK DRAMREQ DRAM CONTROL REGISTER DRAM STATE H TI NEE D R A MM ASC TA DOEEn MACHINE DRAMRDY BANK 0 BANK 1 DRAM CNTL. RASn[1:0] BATTERY BACKED UP LOGIC DRAM ADDR CASOn[1:0] BATTERY BACKUP REGISTER CASEn[1:0] DWRn REFRESH SPEED ONESHOT SWITCH MUX SIU CNTL RTC Battery OSCCLK, CO_1DAY DRAM Battery Figure 4-16. Simplified DRAM Controller Block Diagram 100723A Conexant 4-59 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description addr[u:0] data[7:0] RASn[1] DRAM CASOn[0] DWRn DOEOn (Wron) Bank 1 (8-bit Non-interleaved) WEn OEn DOEOn (WRon) data[15:0] QSwitch addr[11:0] RASn[0] ASIC DRAM CASOn[0] CASOn[1] OEn DWRn WEn Bank 0 (Interleaved) DOEen (WRen) data[15:0] QSwitch addr[11:0] RASn[0] CASEn[0] CASEn[1] DRAM OEn DWRn WEn Figure 4-17. DRAM Interface Example Figure 4-17 gives an example of how each bank of DRAMs might be setup for non-battery back-up DRAM system. In this example, Bank 0 is setup for an 8-bit non-interleaved memory bank and Bank 1 is setup with a 16bit 2-way interleaved DRAM bank. Note: 1. DWRn is a battery backed-up signal and is ‘high’ during the battery back-up mode. All inputs of the prime powered logic will have ‘no power’ or ‘low’ during the battery back-up mode. Therefore, all external logic, which uses DWRn, should be battery backed-up logic and should be gated with WRPROTn to ensure that outputs are ‘low’ when the prime power is off for the battery back-up DRAM operation. 2. DWRn, CASO[1:0]n and CASE[1:0]n are shared by both DRAM banks (RAS[0]n and RAS[1]n). If you only want to back up one bank by battery power, all shared signals should be separated by the external logic and should follow the rule in note 2. 4-60 Conexant 100723A Hardware Description 4.5.2 MFC 2000 Multifunctional Peripheral Controller 2000 Register Description Address DRAM Control Register (DRAMCtrl1) $01FF8821 Address DRAM Control Register (DRAMCtrl1) $01FF8820 Bit 15 Bit 14 Bit 13 Bit 12 Bank 1 Address Multiplexing Bit 7 Bit 6 Bank 1 Increase RAS Cycle Time Bit 5 Bit 11 Bank 1 2-cycle RAS Precharge Bit 4 Bank 0 Address Multiplexing Bank 0 Increase RAS Cycle Time Bit 10 Bank 1 1-cycle RAH Bit 3 Bank 0 2-cycle RAS Precharge Bit 9 Bit 2 Bank 0 1-cycle RAH Bit 8 Bank 1 Non-interleaved Speed Control 00 = Fast Mode 01 = Normal Mode 10 = Slow Mode 11 = N/A Bit 1 Default Rst. Value x0000000b Read Value 00h Bit 0 Bank 0 Non-interleaved Speed Control 00 = Fast Mode 01 = Normal Mode 10 = Slow Mode 11 = N/A Default Rst. Value x0000000b Read Value 00h Register Description: The DRAM Control register is used to program the two DRAM banks for the type of operation that is desired. Bits 15-13: Bank 1 Address Multiplexing This register controls the addressing multiplexing for Bank 1 Bit 12: Bank 1 Increase RAS Cycle Time This register will add one cycle after the refresh cycle prior to RAS precharge to meet TRC (RASn cycle time). This is needed in order to use 70 ns DRAMs while running at 39MHz. Bit 11: Bank 1 2-cycle RAS Precharge This register will increase the RASn[1] Precharge time from 1 to 2 clock cycles. Bit 10: Bank 1 1-cycle RAH This register will increase the RASn[1] address hold time. When this bit is set, the address will be multiplexed 1 clock cycle after the falling edge of RAS[1]n. The default setting will multiplex the row/column address ½ clock cycle after the falling edge of RAS[1]n. Bit 9-8: Bank 1 Speed Control These registers will control the speed of the DRAM interface for bank 1 when in the non-interleaved mode. This register controls the width of the CASn signal. These bits are ignored in interleaved mode. Bits 7-5: Bit 9 Bit 8 Non-Interleaved Operation: 0 0 CASn is ½ clock cycle wide. 0 1 CASn is 1 clock cycle wide. 1 0 CASn is 2 clock cycles wide for Read and 1 clock cycle wide for write. 1 1 N/A Bank 0 Addressing Multiplexing: This register controls the addressing multiplexing for Bank 0 (Table 4-12). 100723A Conexant 4-61 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bit 4: Bank 0 Increase RAS Cycle Time This register will add one cycle after the refresh cycle prior to RAS precharge to meet TRC (RASn cycle time). This is needed in order to use 70 ns DRAMs while running at 39MHz. Bit 3: Bank 0 2-cycle RAS Precharge This register will increase the RASn[0] Precharge time from 1 to 2 clock cycles. Bit 2: Bank 0 1-cycle RAH This register will increase the RASn[0] address hold time. When this bit is set, the address will be multiplexed 1 clock cycle after the falling edge of RAS[0]n. The default setting will multiplex the row/column address ½ clock cycle after the falling edge of RAS[1]n. Bits 1-0: Bank 0 Speed Control These registers will control the speed of the DRAM interface for bank 0 when in the non-interleaved mode. This register controls the width of the CASn signal. These bits are ignored in interleaved mode. Address Bit 15 Backup Configuration Register (BackupConfig) $01FF8099 Address (Not Used) Bit 7 Backup Configuration Register (BackupConfig) $01FF8098 Bit 1 Bit 0 Non-Interleaved Operation 0 0 CASn is ½ clock cycle wide. 0 1 CASn is 1 clock cycle wide. 1 0 CASn is 2 clock cycles wide for Read and 1 clock cycle wide for write. 1 1 N/A Bit 14 (Not Used) Bit 13 Bit 6 DRAM Backup Time 0 = no backup 1 = 1-2 days 2 = 2-3 days 3 = infinite days Bit 12 Internal Batrstn Power Down Detected Select Bit 5 Refresh Rate 0 = normal 1 = slow Bit 11 Lockenn Timeout Detected Bit 4 Oscillator Speed 0= 32.768 kHz 1= 65.536 kHz Bit 3 Bank 1 Enable 0 = disable 1 = enable Bit 10 SRAM Enable 0 = disable 1 = enable Bit 2 Bank 0 Enable 0 = disable 1 = enable Bit 9 Bank 1 Data interface size: 0 = 8-bit 1 = 16-bit Bit 1 Bank 1 Interleave Enable 0 = non interleaved 1 = 2 way interleaved Bit 8 Bank 0 Data interface size: 0 = 8-bit 1 = 16-bit Bit 0 Bank 0 Interleave Enable 0 = non interleaved 1 = 2 way interleaved Default Rst. Value xxxxx000b Read Value 00h Default Rst. Value 00h Read Value 00h Register Description: This register is set to all zeros when first powered up and is battery backed up with the RTC Battery during power down. When a time out condition occurs, the RASn and CASn signals are tri-stated. When prime power has returned from a power down sequence, the user will have to perform a checksum on the DRAM data to know if a time out has occurred since there is no indication that the DRAM battery has lost power. The user will have to wait 1ms before accessing the DRAM after prime power has returned. Bits 15-14: Bit 13: Not used Internal Power Down Select 0 = PWRDWNn is generated by or-ing power_down1 with power_down2 1= PWRDWNn is generated by and-ing power_down1 with power_down2 4-62 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Note: Power_down1 and power_down2 are output signals from the power-down detection circuit 1 and 2. Bit12: Betrstn Detected This bit indicates that a betrstn occurred. To clear this bit, a 1 must be written to this bit. Bit11: Bit10: This bit indicates that a power down occurred, but no lockout was set within the 1-2 second period. The lockout timer initiated the lockenn to create the lockout condition. Once the lockout condition occurs, if the power down signal is high, the chip will come out of reset after a pud1 delay. To clear this bit a 1 must be written to this bit. SRAM Chip Select Enable This bit enables the SRAM chip select CSN0. Bit 9: Bank 1 Interface Size This register defines whether the data bus to the bank 1 DRAMs is 8 bits wide or 16 bits wide. An 8-bit wide DRAM interface uses RASn[1] and CASOn[0]. A 16-bit wide non-interleaved DRAM interface uses RASn[1] and CASOn[1:0]. A 16-bit wide interleaved DRAM interface uses RASn[1], CASEn[1:0], and CASOn[1:0]. Bit 8: Bank 0 Interface Size This register defines whether the data bus to the bank 0 DRAMs is 8 bits wide or 16 bits wide. An 8-bit wide DRAM interface uses RASn[0] and CASOn[0]. A 16-bit wide non-interleaved DRAM interface uses RASn[0] and CASOn[1:0]. A 16-bit wide interleaved DRAM interface uses RASn[0], CASEn[1:0], and CASOn[1:0]. Bits 7-6: DRAM Battery Backup Time These bits control the amount of time that the DRAM controller will spend refreshing the DRAMs when in the battery backup mode. After reset when the CPU is being released to run, the CPU will not be able to write data to bits 7 and 6 of the BackupConfig register immediately since the immediate write will not take effect. The CPU must wait at least one oscillator clock cycle before writing data into bits 7 and 6. Bit 7 Bit 5-4: Bit 6 Battery Backup Duration: 0 0 No battery backup (default) 0 1 1-2 days 1 0 2-3 days 1 1 Infinite DRAM Refresh Rate These bits are used to set up the DRAM refresh rate. See the following table: 100723A Conexant 4-63 MFC2000 Multifunctional Peripheral Controller 2000 0 Refresh Speed: Oscillator Speed: (bit 5) (bit 4) 0 Hardware Description Refresh Speed: normal Description: RTC crystal frequency = 32.768 kHz, Refresh clock = the crystal frequency = 32.768 kHz, The refresh cycle time = 15.625 ms/1024 cycles. 0 1 fast RTC crystal frequency = 65.536 kHz, Refresh clock = the crystal frequency = 65.536 kHz, Refresh cycle time = 7.8125 ms/1024 cycles. 1 0 slow RTC crystal frequency = 32.768 kHz, Refresh clock = the crystal frequency/8 = 4.096 kHz Refresh cycle time = 125 ms/1024 cycles. 1 1 slow RTC crystal frequency = 65.536 kHz, Refresh clock = the crystal frequency/16 = 4.096 kHz Refresh cycle time = 125 ms/1024 cycles. Bits 3: Bank 1 Enable This bit controls whether or not the Bank 1 DRAMs will be enabled. The Enable signal will allow CAS before RAS refresh to occur based on the non-interleave or interleave setting. If the bank setting indicates a non-interleaved mode, RASn[1] and CASOn[0] (8-bit mode) or CASOn[1:0] (16-bit mode) will refresh the DRAM. If the bank setting indicates an interleaved mode, RASn[1], CASOn[1:0] and CASEn[1:0] will refresh the DRAM. DWRn will be high during refresh. If bank 1 is disabled, RAS[1]n will be tri-stated and all appropriate CASn’s will be tri-stated based on mode settings. Bit 2: Bank 0 Enable This bit controls whether or not the Bank 0 DRAMs will be enabled. The Enable signal will allow CAS before RAS refresh to occur based on the non-interleave or interleave setting. If the bank setting indicates a non-interleaved mode, RASn[0] and CASOn[0] (8-bit mode) or CASOn[1:0] (16-bit mode) will refresh the DRAM. If the bank setting indicates an interleaved mode, RASn[0], CASOn[1:0] and CASEn[1:0] will refresh the DRAM. DWRn will be high during refresh. If bank 0 is disabled, RAS[0]n will be tri-stated and all appropriate CASn’s will be tri-stated based on mode settings. Bit 1: Bank 1 Interleave Enable This register defines whether the bank 1 DRAMs are to be accessed using 2-way interleave or non interleaved access. 2-way interleaved access is only valid with a 16-bit interface (the 16 bit vs. 8 bit interface size bit for bank 1 is ignored by the DRAM controller, but is used by the SIU to output the data correctly). Bit 0: Bank 0 Interleave Enable This register defines whether the bank 0 DRAMs are to be accessed using 2-way interleave or non interleaved access. 2-way interleaved access is only valid with a 16-bit interface (the 16 bit vs. 8 bit interface size bit for bank 1 is ignored by the DRAM controller, but is used by the SIU to output the data correctly). 4-64 Conexant 100723A Hardware Description 4.5.3 MFC 2000 Multifunctional Peripheral Controller 2000 Brief Timing No matter which mode you use and which address you access, the DRAM access timing is lined up with the octal halfword boundary. SIUCLK RASn[0] CASEn[0] DOEEn DWRn ARM ADDR or DMA ADDR a SIUADDR EXTADDR a ROW COL a+2 a+4 a+1 a+2 a+3 COL COL COL a+4 ROW a+5 COL COL OCTAL BOUNDARY DATA NOTE: In this example, a =...01010, a+2=...01110, a+4=...10000 Figure 4-18. 8-bit Memory Data Bus The timing diagram illustrates an 8-bit memory data bus, a burst of halfword transfers (3 halfwords) from the ARM7 or DMA, for ½ cycle CASn and PG = zero wait states (non-interleaved). It also illustrates the octal halfword boundary that will cause the SIU to terminate the burst and cause the DRAM Controller to regenerate the RASn precharge time. This interface speed can only be used at slow frequencies. SIUCLK RASn[1] CASOn[1:0] DOEOn DWRn a+4 a ARMADDR a SIUADDR a+2 a+4 a+6 DATA EXTADDR ROW COL COL COL COL Figure 4-19. 16-bit Memory Data Bus 100723A Conexant 4-65 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The timing diagram illustrates a 16-bit memory data bus, a burst of word transfers (2 words) from the ARM7 for full clock width CASn and PG = one wait state (non-interleaved). It also illustrates that the octal halfword boundary doesn’t occur in the middle of the burst of word transfers. SIUCLK RASn[0] CASEn[0] DOEEn DWRn ARM ADDR or DMA ADDR a a SIU ADDR data DATA ROW COL EXT ADDR Figure 4-20. CASn Non-Interleaved 8-bit DRAM Read The timing diagram illustrates a two clock cycle CASn non-interleaved 8-bit DRAM read (Non burst mode). This configuration illustrates the row/column address multiplex occurring 1 cycle after RASn. SIUCLK RASn[0] CASEn[1:0] CASOn[1:0] DOEEn DOEOn DWRn ARM ADDR or DMA ADDR a +2 +4 +6 +8 +10 SIU ADDR a +2 +4 +6 +8 +10 a SIU P_ADDR +2 +4 +6 +8 +10 DATA EXT ADDR ROW COL COL COL NOTE: In this example, a[2:0] = 00x. Also, the external address is created from the pipelined SIU address; however, address pins a1 and a0 are not connected to the external memories. Figure 4-21. 2-Way Interleaved Memory with Halfword Bursts of Data 4-66 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 This example illustrates a read of two-way interleaved memory with halfword bursts of data (6 halfwords). It also illustrates that the octal halfword boundary doesn’t occur in the middle of the burst of halfword transfers. It assumes external drivers to minimize the data bus contention and to insure that the data has enough setup time to CLK. This waveform also illustrates, increased RASn precharge time and increased address multiplexing time. Byte bursts of data are not allowed when a 16-bit memory structure is used. SIUCLK RASn[0] CASEn[1:0] CASOn[1:0] DOEEn DOEOn DWRn a ARM ADDR a+4 a SIU ADDR a SIU P_ADDR +4 +2 +2 +4 a+8 +6 +6 +8 +8 +10 +10 DATA EXT ADDR ROW COL COL COL Figure 4-22. 2-Way Interleaved DRAM Read (3 words) The timing diagram illustrates a two-way interleaved DRAM read (3 words). It assumes external drivers to minimize the data bus contention and to insure that the data has enough setup time to CLK. This waveform also illustrates, increased RASn precharge time and increased address multiplexing time. SIUCLK RASn[1] CASEn[1:0] CASOn[1:0] DOEEn DOEOn DWRn a ARM ADDR a+4 a SIU ADDR a+2 a+8 a+6 a+4 a+8 a+10 DATA EXT ADDR ROW COL COL COL Figure 4-23. 2-Way Interleaved DRAM Write 100723A Conexant 4-67 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The timing diagram illustrates two-way interleaved DRAM write. This configuration assumes that the data bus is available to the DRAM with enough setup time to the CASn falling edge. In addition, this configuration has a 2cycle wide RASn and allows one cycle after the falling edge of RASn before the row/column address mux. tRAS tCP tRP SIUCLK RASn[1] CASEn[1:0] CASOn[1:0] a refresh cycle DWRn Figure 4-24. Refresh Cycle The timing diagram illustrates a refresh cycle. tRAS is three cycles wide to accommodate frequency ranges up to 40 MHz. This timing is used during prime power refresh. During battery backup, a custom refresh circuit is used to generate refreshed timing based on the oscillator clock. 4.5.4 Detailed Timing Measurements SIUCLK tR D RASN[1:0] tR D tC D O tC D tC D 0 tC D CASEN[1:0], CASON[1:0] Note:1 Note:2 Access with 1 or 2 wait states Access with 0 wait states DWRN (read) tD W tD W DWRN (write) tC S U 0 tR A H 1 A[x:0] (option 1) tC S U ROW COL COL COL COL COL tR A H 2 A[x:0] (option 2) ROW COL Figure 4-25. DRAM Timing Read, Write and Wait States for Non-interleave Mode 4-68 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 SIUCLK tR D RASN[1:0] tR D tC D CASEN[1:0] tC D Note:1 tC D tC D CASON[1:0] DOEN[1:0] (WRen/WRon) tD W tD W DWRN Figure 4-26. DRAM Timing for 2-way Interleave Write SIUCLK tR D RASN[1:0] tR D tC D CASEN[1:0] tC D tC D tC D Note:1 tC D tC D CASON[1:0] tO E D tO E D DOEN[1] (WRon) tO E D tO E D DOEN[0] (WRen) tO E D tO E D Figure 4-27. DRAM Timing Read for 2-way interleave mode 100723A Conexant 4-69 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description SIUCLK tR R A S RASN[1:0] tC R D CASEN[1:0], CASON[1:0] tR C A S DWRN Figure 4-28. DRAM Refresh Timing XIN t RRAS RASN[1:0] t CRD t CRD CASEN[1:0], CASON[1:0] t R CAS DWRN Figure 4-29. DRAM Battery Refresh Timing 4-70 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 4-15. DRAM Timing Parameters Parameter Symbol Min. Max. Units RASN delay tRD 20 ns CASN delay (0 wait state) tCD0 20 ns CASN delay tCD 20 ns CASN address setup (0 wait state) (10Mhz) tCSU0 7 ns CASN address setup (30 MHz) tCSU 7 ns RASN address hold 1 tRAH1 3 ns RASN address hold 2 tRAH2 3 DWRN delay tDW OE delay tOED CASN pulse width tRCAS 30 RASN pulse width tRRAS CASN to RASN delay tCRD ns 20 ns 20 ns 500 ns 30 500 ns 5 200 ns Notes: 1. Bit 2 of the DRAM Control Register sets this time to ½ or 1 clock cycle. 2. Bit 8 and 9 of the DRAM Control Register sets this time to 1 or 2 clock cycles. 4.5.5 Software Operation Special Cautions • • • • • The Backup Configuration register is set to 0000h the initial power up only. This register is backed up during battery power mode. DRAM control signals are tri-stated during battery power if the backup timer is set to 0 or the backup time expires, regardless of how the enable bits are set. After a reset occurs and the CPU is released to run, the CPU cannot write to the Backup Configuration register until one OSCCLK cycle has passed. During power-up, the firmware must pay attention to the power up DRAM requirements specified in the DRAM data books. Typically, DRAMs cannot be accessed for 200µs and then must have 8 CASn before RASn refreshes occur before accessing the DRAMs. Within the DRAM Memory address space memory bank mirroring is allowed. Firmware will have to determine the memory size. 100723A Conexant 4-71 MFC2000 Multifunctional Peripheral Controller 2000 4.6 Hardware Description Flash Memory Controller The Flash memory controller provides an interface for both NAND and NOR type flash memory devices. Up to two NOR type Flash memory devices or two NAND type devices can be connected to the ASIC. FCS0n and FCS1n pins are the flash memory control pins. FWRn and FRDn are the flash read and write signals for NAND type devices. Additional pins are required to interface to NAND type flash memory devices. GPIO pins can be used as NAND type flash memory control signals. Figure 4-30 shows the structure of the flash controller. It consists of an address and chip select generator block and a read/write control block. The address and chip select generator block provides up to 21 address lines and 2 chip select signals for the flash memory devices. The read/write control block provides read and write strobes for NAND type devices. 4.6.1 Supported Flash Memory The flash memory controller supports the following types of Flash memory and their equivalents: Flash Memory INTEL Size Type 28F400BL/28F004BL-150 512 kB NOR type 28F400BX/28F004BX-80, -120 512 kB NOR type AMD Am29F040-70, -90, -120, -150 512 kB NOR type Samsung KM29N040/080-150 512 kB/1 MB NAND type Note: This ASIC also supports 1MB and 2MB NOR-type flash memory if the specified timing can be matched. 4.6.2 4.6.2.1 Functional Description Interfacing Flash Memory The two types of flash memory that are supported require separate interface control options. NOR type devices are bus oriented and can be connected to the CPU bus. The ASIC provides address signals to access the memory space and provides the chip select signals. NAND type devices are special purpose peripherals with a specialized interface requiring no address bus signals. The ASIC will use dedicated pins and GPIO pins to interface with the NAND flash control and status lines. 4.6.2.2 NOR Type Flash Memory NOR type devices can be used for both firmware code memory and for data memory. Accesses are performed using normal bus operations. Reading data is performed with a bus read. Programming bytes or erasing sectors requires multiple bus cycles. The CPU writes the command sequences required by the flash memory; then it polls the flash memory’s status until the operation is complete. The data address space is available in two separate blocks; the first block of memory is from 00800000h to 009FFFFFh (2Mbyte block) and the other is from 00A00000h to 00BFFFFFh (2Mbyte block). When the CPU accesses the address range 00800000h - 009FFFFFh, FCS0n is activated. When the CPU accesses the address range 00A00000h - 00BFFFFFh, FCS1n is activated. When using FCS0n and FCS1n for NOR-type flash memory, the NAND-type bit (bit 6) of the FlashCtrl register must be set to 0. The FlashCtrl register is described in the SIU section of the Hardware Description. The NOR type flash interface consists of: • • • • 4-72 FCSn[1:0]: The two flash device selection signals. To use FCSn[1:0], bit 6 of the FlashCtrl register must be set to 0. A[20:0]: The external address bus for 2MB address range. RDn and WREn/WROn: The external bus read and write strobes. D[15:0]: The external data bus. Conexant 100723A Hardware Description 4.6.2.3 MFC 2000 Multifunctional Peripheral Controller 2000 NAND-Type Flash Memory NAND type devices can only be used for data memory. NAND type flash devices have no address bus. Command, address and data are passed through the external data bus. Accesses are accomplished by first setting the appropriate flash CS and control signals through the FCSn[1:0] and GPIO pins. The actual bus transfer is performed by accessing the NANDFLSH register. When accessing the NANDFLSH register, the appropriate flash data strobe is activated, FRDn for read operations and FWRn for write. FRDn and FWRn are also controlled by the wait state setting in the FlashCtrl register. The NAND-type bit in the FlashCtrl register must be 1. • FCSn[1:0]: The device selection signals for the NAND type flash devices. FCS0n and FCS1n pins act as GPO pins. FCSn[1:0] pins output values which are set to bit 8 and bit 9 of the FlashCtrl register. Note: If FCS0n/PWM[1] and FCS1n/PWM[2] pins are programmed as PWM, any two available GPO’s or GPIO’s can be used to generate FCS[1:0]n for NAND-type flash memory. • • • • • • • FCLE: The Flash Command Latch Enable. It is programmable via a GPIO pin. FCLE activates the commands sent to the command register. FALE: The Flash Address Latch Enable. It is programmable via a GPIO pin. FALE activates the controls for address or data to the internal address or data registers of the flash device. FRDY: The Flash Ready signal. It can be read from a GPIO pin. FRDY indicates the status of the flash device operation. FRDn: The Flash Read Enable signal. It is a hardware generated signal. It is multiplexed on GPIO[1] and configured in the GPIOConfig register. FRDn enables the data from the flash memory device onto its I/O bus. This signal is active when the CPU reads the NAND flash location of 01FF8824h. FWRn: The Flash Write Enable signal. It is a hardware generated signal. It is multiplexed on GPIO[0] and configured in the GPIOConfig register. FWRn controls writes to the I/O bus. This signal is active when the CPU writes to the NAND flash location of 01FF8824h. WRPROTn: The write protect signal is driven low to protect the flash devices from inadvertent writes during power transitions. It is also controlled by writing to the ‘Prime Power write protect’ bit (bit 11) of the FlashCtrl register. D[15:0]: The external data bus. ADDR[25:0] FADD[20:0] Flash Address & Chip Select Generator (in SIU Block) FCSn[1:0] FRDn SIUCLK Flash Read/Write Control FWRn RWn Figure 4-30. Flash Control Block Diagram 100723A Conexant 4-73 MFC2000 Multifunctional Peripheral Controller 2000 4.6.3 Hardware Description Timing All accesses can be performed from zero to seven wait states. The number of wait states is programmable in the FlashCtrl register. During write operations, if one to seven wait states is used, the EarlyOff option must be set in the FlashCtrl register. The EarlyOff option is ignored with zero wait state. Wait states are generated to accommodate slow memory devices, for more details of how the control signals are changed with an inserted wait state, refer to the timing diagram Figure 4-31. • NAND-Type flash For this type of flash, addresses and data are passed through the external data bus. During read operations, the device selection is one of the two Flash Chip Select signals FCSn[1:0], FRDn is the Flash Read Enable signal from the bus interface. FCLE and FALE must be low (inactive) during reads. For zero wait state access, FWRn and FRDn are only half SIUCLK cycle (like RDn and WRn of the normal bus operation). During program/erase operations, the device selection is one of the FCSn[1:0] signals. Command, address and data are all written through the external data bus. The Flash Command Latch Enable (FCLE ) and the Flash Address Latch Enable (FALE) signals are the controls for writing to the Command or the Address register respectively. FCLE and FALE must be low (inactive) during a data write to the flash devices. • NOR-Type Flash Accesses are performed using normal bus operations. During program/erase operations, the device selections are the two Flash Chip Select signals FCSn[1:0], addresses are latched on the falling edge of the Flash Write Enable signal WREn/WROn, and data is latched on the rising edge of WREn/WROn. 4-74 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 SYSCLK tF C S D tF C S D FCSN[1:0] tA L D FALE (GPIO) tA L D tC L D tC L D FCLE (GPIO) tF D GPIO[0] (FWRN) tF D tF D GPIO[1] (FRDN) tF D tF D S U D[15:0] (read) in tW D H tW D D D[15:0] (write) out Figure 4-31. NAND-Type Flash Memory Access with Two Wait States Parameter Symbol Min. Max. Units FCSN delay tFCSD Flash read/write delay tFD Flash read data setup tFDSU Flash write data delay tWDD Flash write data hold tWDH Flash address latch delay tALD 16 ns Flash command latch delay tCLD 16 ns 100723A 16 ns 16 ns 8 ns 21 0 Conexant ns ns 4-75 MFC2000 Multifunctional Peripheral Controller 2000 4.6.4 Hardware Description Register Description Address: Bit 7 NANDFlash (NANDFLSH) 00C00001h Address: Bit 7 NANDFlash (NANDFLSH) 00C00000h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Bit 0 Rst. Value xxh Read Value 00h Default: (Not Used) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Reading this location activates the FRDn signal. Writing to this location activates the FWRn signal. No physical register exists for this location. Rst. Value xxh Read Value 00h Register description: This register is the IO address space for the NAND type flash. Reading this register activates the FRDn signal. Writing to this register activates the FWRn signal. FCLE, FALE, and FRDY must be setup through the GPIO pins and FCSn[1:0] must be setup through the FlashCtrl register prior to accessing the NANDFlash register. FCLE, FALE, and FRDY must be cleared through the GPIO pins and FCSn[1:0] must be cleared through the FlashCtrl register after the register access. Data written to this register is output on the data bus. When reading this register the flash memory data is placed on the internal CPU bus. The NANDFlash register is only an address location; no register actually exists. 4.7 DMA Controller 4.7.1 • • • • • • General Description The AMFPC is equipped with thirteen physically arbitrated DMA Channels assigned to either internal or external requests. Each channel provides its own 26-bit address for data access The DMA channel address registers are made up of two programmable half word read/write registers, making up a 26-bit counter (64MB). Minimum DMA acknowledge delay is 2 System Clocks. Maximum DMA acknowledge delay depends on the number of pending higher priority DMA requests and the length of associated bus cycles including wait states and halt states due to DMA/DRAM refresh cycle collisions. Channel Specific Unique Features ⇒ Double Buffered Address and Block Size This channel is equipped with a double buffered DMA address counter and Block Size register. This allows firmware to set up the DMA address and Block Size values for the next block access while the current one is active. When the DMA channel reaches it’s Block Size limit it issues an interrupt, and if a new value has been written into the buffers (Buffer Loaded Flag is set), this value is transferred to the address counter and/or Block Size register. The interrupt is cleared upon writing to the Block Size Buffer register. ⇒ DMA Block Size An Access Block Size Counter is available to limit the number of DMA access in a given block. Once this counter is set, it will keep track of the number of DMA access. Once the limit has been reached a CPU interrupt will be set and no further accesses will be allowed until the register is reset. The IRQDMA is activated at the falling edge of DMAACK. 4-76 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 ⇒ Addressing Modes All of the DMA Channels increment by 2 after each access. The external channels 1 and 2, can be set to increment by 1 for byte wide peripherals. The count enable register allows the user to select which address will increment after each access. However, Channels 2 and 3 have the additional functionality allowing them to Increment or Decrement by a specified amount. Channel 2 is controlled by the values in it’s control register. Channel 3 is controlled by control signals generated in the Bit Rotation Logic. ⇒ Priority Shows the overall channel priority in the DMA request arbitrator, with 1 as the highest. ⇒ Uninterrupted Burst mode Allows the requesting device to hold the Burst DMA Request active (PSEQ), to transfer multiple bytes of uninterrupted data. If higher priority requests occur during the burst operation they will be ignored. This operation is mainly for high speed DRAM access. Also during this mode, the read/write control and the count controls must remain static. ⇒ Throttle Control A Throttle Value can be set to allow 1 DMA access per a given time period. The throttle time period is a product of the value set and the system clock. ⇒ Logical Channels This single physical DMA channel is equipped with multiple logical channels that operate independent of each other. Only one logical can be active at any time. 4.7.1 DMA Mode Summary Table 4-16. Feature Matrix Features Channel 0 Double Buffered Control Block Size Limit √ √ √ √ 3 Address Jump Priority U-I Burst √ √ 1 √ √ √ 2 √ √ √ √ 3 √ √ √ 4 4 √ √ √ 5 Other Features √ 7 √ √ √ 8 √ √ √ 9 √ 7 √ √ 10 √ √ √ 11 √ 9 √ √ √ 12 √ 10 √ √ √ 13 √ 11 √ √ √ 5 √ 12 √ √ √ 6 √ Conexant Logical Byte 6 8 100723A Address Decrement Mode 1 2 Address Increment Throttle Throttle Throttle 4-77 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Each of the DMA channels, its function, and its characteristics are provided in Table 4-17. Table 4-17. DMA Channel Functions and Characteristics DMA Channel Function 1 0 Characteristics USB data to/from memory for PC print, PC fax TX, PC Fax RX, PC scan DMA Block Size Limit with CPU Interrupt via PIO/USB Interrupt, 1 External DMA access only. Normal and delayed ACK, Read/Write selectable, byte and halfword DMA data access selectable. 2 External DMA Request only Address Jump Control, DMA Block Size Limit with Interrupt to IRQ Controller, Burst Mode, Double Buffered Control Registers Bit Rotation Access (Output) 4 logical DMA Channels, DMA address and Block Size double buffered, each Read/Write selectable, halfword DMA data access only. Read/Write, External Request (Generates a DisDrive to disable the Bus IF output drivers to for external memory writes.) External Request to the DMA controller may be delayed from 1 to 2 clocks for synchronization. 3 Bit Rotation Access (Input) Address Jump Control (Controlled by Bit Rotation Block see table4.8.2-1) 4 Countach to ARM Memory (c2a) Data write only, halfword DMA data access only 5 ARM Memory to Countach (a2c) Data read only, DMA Block Size Limit (16 kB), Interrupt to IRQ Controller Read/Write T4 Uncoded data from/to Line Buffer to/from T4 Logic Throttle Control Read Only, Internal Request. (MAS is always set to ½ word) 6 halfword DMA data access only. Read/Write, Internal Request (MAS is always set to ½ word) 7 8 Read T.4 Reference Line from the Line Buffer to T.4 logic Read Only, Internal Request T4 Resolution Converted data, Line Buffer Access Disable Address Count for read modify write (MAS is always set to ½ word) Read/Write, Internal Request, Read Modify Write Control (MAS is always set to ½ word) 9 10 Bi-level resolution conversion logic DMA Block Size Limit. Interrupt to IRQ Controller Read/Write T4 Coded data from/to Page Memory to/from T4 Logic Throttle control (MAS is always set to ½ word) Address Block Size Limit, Interrupt to IRQ Controller Read/Write, Internal Request (MAS is always set to ½ word) 11 P1284 to Memory DMA Block Size Limit with CPU Interrupt via PIO Interrupt, Read/Write (Control Bit), Internal Request 12 Memory to P1284 DMA Block Size Limit with CPU Interrupt via PIO Interrupt, Read/Write (Control Bit), Internal Request (MAS is always set to ½ word) Notes: 4-78 1. DMA Channel 0 has the highest priority. 2. "AD" means address. Conexant 100723A Hardware Description 4.7.2 MFC 2000 Multifunctional Peripheral Controller 2000 DMA Operation and Timing The DMA controller arbitrates DMA requests from all sources (internal and external), and then acknowledges the request of the source with the highest priority at the start of the next bus cycle. After each request has been issued, the associated acknowledge signal is activated with a minimum delay of 2 internal clock cycles. The maximum delay is dependent on both the number of pending higher priority DMA requests, and the length of the associated bus cycles (including wait states and halt states due to DMA to DRAM and refresh cycle collisions). The DMA controller informs the bus control logic (SIU), and provides the address and read/write signal prior to the next bus cycle. At the time of the next bus cycle, the SIU routes the address and data onto the proper bus. If the external bus is required to complete the DMA transfer, the DMA controller notifies the external bus control logic, which in turn halts the CPU. After the completion of a DMA cycle, the DMA controller increments or decrements the DMA address counter. A non-maskable interrupt (SYSIRQ) to the CPU allows the active DMA to be completed, but locks-out all other DMA acknowledge signals in the event of a power down condition. DMA Channel 3 address progression is controlled by the Bit Rotation logic and is not effected by the DMA acknowledges like other channels. The Bit Rotation Logic provides an address progression value, an increment/ decrement (add/subtract) control and a count strobe. When the strobe is held active during the rising edge of the siuclk, the progression value is either added or subtracted from the current address value. Below is a table showing the control bit assignments. Table 4-18 DMA Channel 3 Control Bit Assignment Count Control Assignments 4.7.3 4.7.3.1 countcntl(11) Count Strobe NA countcntl(10) Dec_Incn NA countcntl(9) Cnt_By_32k Add_value(15) countcntl(8) Cnt_By_16k Add_value(14) countcntl(7) Cnt_By_8192 Add_value(13) countcntl(6) Cnt_By_4096 Add_value(12) countcntl(5) Cnt_By_2048 Add_value(11) countcntl(4) Cnt_By_1024 Add_value(10) countcntl(3) Cnt_By_512 Add_value(9) countcntl(2) Cnt_By_4 Add_value(2) countcntl(1) Cnt_By_2 Add_value(1) countcntl(0) Cnt_By_1 Add_value(0) Timing Internal DMA Requests DMA requests are sourced by sub-blocks or peripherals within the ASIC or by an external device (Ch 0 or 1). Some logic blocks may source multiple DMA request lines. For example, the T4 Logic requires 3 request lines: input data, reference data and output data. These sources will issue DMA request signals, and the sequential access indicator, synchronized to the rising edge of SIUCLK. During the bus cycle that the requests are received, the controller will inform the SIU that the next bus cycle will be a DMA cycle. The DMA controller also provides the address, the sequencial access, and read/write control information to the SIU. The SIU will then activate the DMA bus acknowledge signal when the DMA controller becomes the bus master. On the first rising edge of the SIUCLK after the DMA bus acknowledge signal becomes active, the peripheral DMA acknowledge to the requesting peripheral will be set high indicating the start of the DMA cycle. For a DMA single cycle write, the requesting device must drive data onto the bus during activation of the peripheral DMA acknowledge signal. And for a single 100723A Conexant 4-79 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description cycle DMA read the requesting device must capture the data on the falling edge of the peripheral DMA acknowledge. If a sequential DMA access burst is desired, the peripheral must also activate the sequential access indicator at the time of the initial request and must be cleared at the end of the next to the last DMA cycle. The DMA request st must be deactivated during the final DMA cycle, on the 1 rising edge of the SIUCLK. The peripheral must also capture (read), or drive the next datum onto the data bus on each rising edge of the SIUCLK when the DMA acknowledge is active. During sequential burst accesses the Read/Write control and DMA address count controls must remain static. 4.7.3.2 External DMA requests The external device activates the DMA request signal (DMAREQ) at any time when it wants to do the single DMA access operation. The MFC2000 chip double synchronizes the DMAREQ signal internally to avoid the metastable case. After external DMA request has been issued, the associated acknowledge signal is activated with a minimum delay of 5 internal SIUCLK cycles. The external device must deactivate DMAREQ after the associated acknowledge signal is activated and before the end of this DMA cycle. If the DMA request continues to be activated by the external DMA requesting device, the external DMA requesting device will get the second DMAACK signal for the next single data transfer, when system bus is ready. The MFC2000 chip continues to perform single DMA access as long as the DMAREQ is kept active by the external DMA requesting device. DMAACK is used similarly as chip select to indicate the DMA access cycle is ready for the external DMA requesting device. The delay path within the MFC2000 is longer for DMAACK than for RDn; however, the actual amount of skew between the two signals is dependent on their relative loading at the system board level. If RDn has excessive delay, the DMAACK can be programmed to extend it an extra half SIUCLK cycle. DMA Cycle tDRS SIUCLK tDADN Ext. DMAREQ tDADF Ext. DMAACK tAD Ext. address bus DMA address tDIH Ext. data bus DMA data tRD tRD RDn Figure 4-32: External DMA Read Timing (Single Access, One Wait State) 4-80 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 DMA Cycle tDRS SIUCLK tDADN Ext. DMAREQ tDADF Ext. DMAACK tAD Ext. address bus DMA address tDOH Ext. data bus DMA data tWD tWD WREn Figure 4-33. External DMA Write Timing (Single Access, One Wait State) Parameter Symbol Min Max Units RDn delay (ext. load = 50pF) tRD 25 ns WRn delay (ext. load = 50pF) tWD 25 ns Address delay (ext. load = 50pF) tAD 24 ns DMAACK on delay time (ext. load = 15pF) tDADN 10 ns DMAACK off delay time (ext. load = 15pF) tDADF 5 ns DMA Input Data Hold tDIH 8 ns DMA Output Data Hold (ext. load = 50pF) tDOH 8 25 ns RASn delay (ext. load = 40pF) tRASD 25 ns CASn delay (ext. load = 40pF) tCASD 20 ns DWRn delay (ext. load = 40pF) tDWD - 20 ns Notes: 1. SIUCLK is the internal system interface clock. These values is for SIUCLK = 30 MHz. 2. The external DMA request set-up time (tDRS) is not required because this input is double synchronized internally for the meta-stable case. 100723A Conexant 4-81 MFC2000 Multifunctional Peripheral Controller 2000 4.7.4 Hardware Description USB Block Diagrams Below is a block diagram depicting the four USB logical channels. Each logical channel shows the double buffering of the address and block registers. The right side of the diagram shows the common counters for the block and address. Also shown is the feedback path from the counters to the registers used upon USB ACKs. The select signal for the logical channels are shown at the bottom of the diagram. IPB Data Address 1 Adr_Out Address 2 Block 1 To IPB Data Out Blk_Out Block 2 LCH1 Address 1 Address 2 Addr Counter Block 1 Block 2 LCH2 Address 1 Address 2 Block Counter Block 1 Block 2 LCH3 Address 1 Address 2 Block 1 Block 2 LCH4 Block Feedback Address Feedback Channel Select Note: Selecting Channel Will Load current registers to counter Figure 4-34. USB Logical Channels Block Diagram 4.7.4.1 • • • • 4-82 USB Logical Channel Assignments Ch1: Scan Ch2: Print Ch3: FAX Rx Ch4: FAX Tx Mem to PC, PC to Mem, Mem to PC, PC to Mem, DMA Read only DMA Write only DMA Read only DMA Write only Conexant 100723A Hardware Description 4.7.5 MFC 2000 Multifunctional Peripheral Controller 2000 DMA Controller Registers USB Logical Channel Assignments DMA Channels 112 addressing is controlled by the following registers. Note: If the DMA address counter points to an invalid location, invalid data is read or written Address: chcsl[10:0] DMA Low Counter Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA0-12 Addr. DMA0-12 DMA0-12 DMA0-12 DMA0-12 DMA0-12 Addr. DMA0-12 DMA0-12 Addr. Rst. Value Addr. Addr. Addr. Addr. (DMAiCntlo) Bit 15 Address: chcsl[10:0] DMA Low Counter Addr. Bit 10 00h Bit 8 Bit 14 Bit 13 Bit 12 Bit 11 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA0-12 Addr. DMA0-12 DMA0-12 DMA0-12 DMA0-12 DMA0-12 Addr. DMA0-12 DMA0-12 Addr. Rst. Value Addr. Addr. Addr. Addr. (DMAiCntlo) Bit 7 Bit 9 Addr. Bit 2 Bit 6 Bit 5 Bit 4 Bit 3 Read Value 00h 00h Bit 0 Bit 1 Read Value 00h DMA Channel 012 Lower Address Counter Value 100723A DMAUSB0CntLo 01FF81C8-C9 DMAUSB1CntLo 01FF81CE-CF DMAUSB2CntLo 01FF81D4-D5 DMAUSB3CntLo 01FF81DA-DB DMA1CntLo 01FF8184-85 DMA2CntLo 01FF8188-89 DMA3CntLo 01FF8190-91 DMA4CntLo 01FF8194-95 DMA5CntLo 01FF8198-99 DMA6CntLo 01FF819C-9D DMA7CntLo 01FF81A0-A1 DMA8CntLo 01FF81A4-A5 DMA9CntLo 01FF81A8-A9 DMA10CntLo 01FF81AC-AD DMA11CntLo 01FF81E0-E1 DMA12CntLo 01FF81E6-E7 Conexant 4-83 MFC2000 Multifunctional Peripheral Controller 2000 Address: chcsh[10:0] DMA Hi Counter Hardware Description Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Not Used Not Used Not Used Not Used Not Used Not Used DMA0-12 Addr. DMA0-12 Addr. Rst. Value Bit 25 Bit 24 (DMAiCnthi) 00h Read Value 00h Address:chcsh[10: Bit 7 0] DMA Hi Counter DMA0-12 Addr. (DMAiCnthi) Bit 23 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA0-12 DMA0-12 DMA0-12 DMA0-12 DMA0-12 Addr. DMA0-12 DMA0-12 Addr. Rst. Value Addr. Addr. Addr. Addr. Addr. Bit 18 Bit 22 Bit 21 Bit 20 Bit 19 00h Bit 16 Bit 17 Read Value 00h DMA Channel 012 Upper Address Counter Value 4-84 DMAUSB0CntHi 01FF81CA-CB DMAUSB1CntHi 01FF81D0-D1 DMAUSB2CntHi 01FF81D6-D7 DMAUSB3CntHi 01FF81DC-DD DMA1CntHi 01FF8186-87 DMA2CntHi 01FF818A-8B DMA3CntHi 01FF8192-93 DMA4CntHi 01FF8196-97 DMA5CntHi 01FF819A-9B DMA6CntHi 01FF819E-9F DMA7CntHi 01FF81A2-A3 DMA8CntHi 01FF81A6-A7 DMA9CntHi 01FF81AA-AB DMA10CntHi 01FF81AE-AF DMA11CntHi 01FF81E2-E3 DMA12CntHi 01FF81E8-E9 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address:ch0cscntl Bit 15 DMA 0 Configuration Channel Enable (DMA0config) LC3 $xx81B1 Bit 14 Channel Enable Bit 13 Channel Enable Bit 12 Channel Enable LC2 LC1 LC0 Address:ch0cscntl Bit 7 DMA 0 Configuration Not Used Bit 6 Not Used (DMA0config) Bit 11 Read/Write Bit 10 Read/Write Bit 9 Read/Write Bit 8 Read/Write Default: Rst. Value Mode Mode Mode Mode 00h LC3 LC2 LC1 LC0 Read Value 00h Bit 1 Not Used Bit 0 DMA0 Enable Default: Rst. Value Bit 5 IRQ Bit 4 IRQ Bit 3 IRQ Bit 2 IRQ LC3 LC3 LC3 LC3 00h $xx81B0 Read Value 00h Bit 15-12: Logical Channel Enable Setting the bit to 1 will allow operation of the logical channel, setting the bit to 0 will disable the channel and clear it’s registers. Bit 11-8: Read/Write Mode Select. Selects the data direction. Read = 1, Write = 0 Bit 5-2: Interrupts from the individual Logical Channels. Clear by writing to the block size register. Bit 0: Setting this bit to 1 will enable DMA Channel 0. Setting this bit to 0 will fore all of the logical channels into their reset state. Address: chcsl[10:0] DMAUSB Low Counter Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA0-10 Addr. DMA0-10 DMA0-10 DMA0-10 DMA0-10 DMA0-10 Addr. DMA0-10 DMA0-10 Addr. Rst. Value Addr. Addr. Addr. Addr. (DMAiCntlo) Bit 15 Addr. Bit 10 Bit 14 Bit 13 Bit 12 Bit 11 00h Bit 8 Bit 9 Read Value 00h Address: chcsl[10:0] DMAUSB Low Counter Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA0-10 Addr. DMA0-10 DMA0-10 DMA0-10 DMA0-10 DMA0-10 Addr. DMA0-10 DMA0-10 Addr. Rst. Value Addr. Addr. Addr. Addr. (DMAiCntlo) Bit 7 Bit 6 • • Addr. Bit 2 Bit 5 Bit 4 Bit 3 00h Bit 0 Bit 1 Read Value 00h DMAUSB Channel 0-3 Lower Address Counter Value. Address will only count by 2. Reading this register will return the active Address value when the last USBACK occurred. Note: This register is double buffered. Writing to this location twice will load the active register as well as the buffer register. Upon a block limit interrupt, the buffer value will be activated therefor a new buffered value should be written to this register. 100723A DMAUSB0CntLo 01FF81C8-C9 DMAUSB1CntLo 01FF81CE-CF DMAUSB2CntLo 01FF81D4-D5 DMAUSB3CntLo 01FF81DA-DB Conexant 4-85 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 chcsh[10:0] DMAUSB Hi Counter Not Used Hardware Description Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Not Used Not Used Not Used Not Used Not Used Not Used Not Used Rst. Value (DMAiCnthi) 00h Read Value 00h Address:chcsh[10: Bit 7 0] DMAUSB Hi Counter DMA0-10 Addr. (DMAiCnthi) Bit 23 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA0-10 DMA0-10 DMA0-10 DMA0-10 DMA0-10 Addr. DMA0-10 DMA0-10 Addr. Rst. Value Addr. Addr. Addr. Addr. Bit 22 • • Addr. Bit 18 Bit 21 Bit 20 Bit 19 00h Bit 16 Bit 17 Read Value 00h DMAUSB Channel 0-3 Upper Address Counter Value. Address will only count by 2. Reading this register will return the active Address value when the last USBACK occurred. Note: This register is double buffered. Writing to this location twice will load the active register as well as the buffer register. Upon a block limit interrupt, the buffer value will be activated therefor a new buffered value should be written to this register. 4-86 DMAUSB0CntHi 01FF81CA-CB DMAUSB1CntHi 01FF81D0-D1 DMAUSB2CntHi 01FF81D6-D7 DMAUSB3CntHi 01FF81DC-DD Conexant 100723A Hardware Description Address:ch4csbs Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 DMAUSB Transfer USB Channel Stop At Block Size Reg. Block Enable = 1 (DMAUSBBlockSize ) Address:ch4csbs Bit 7 Bit 6 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bit 0 Rst. Value 00h Read Value 00h Default: Upper six bits of the Block Size Counter Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 DMAUSBTransfer Low Byte Value for USB Memory Block Size Counter Block Size Reg. (DMAUSBBlockSize ) Rst. Value 00h Read Value 00h Block Size data written to this register will be placed into the inactive Block Size register. This register will become active once the prior block has completed (USB IRQ). Reading this register will return the Block Size value when the last USBACK occurred. Writing to this will initialize the logical channel. Therefore, when setting up a logical channel, this register should be written to last. Note: This register is double buffered. Writing to this location twice will load the active register as well as the buffer register. Upon a block limit interrupt, the buffer value will be activated therefor a new buffered value should be written to this register. • DMA USB Channel Block Size Limit Counter DMAUSB0 BlkSiz 01FF81CC-CD DMAUSB1 BlkSiz 01FF81D2-D3 DMAUSB2 BlkSiz 01FF81D8-D9 DMAUSB3 BlkSiz 01FF81DE-DF Bits [13:0] DMAUSB Memory Block Size The block size of DMA channel can range from 1 – 16383 DMA transfers. The Block Size counter will decrement regardless of the DMA Address counter’s activity. The block size register content is 0000h when the block size limit is reached. When the block size reaches its limit, an IRQ will be generated upon the next Channel ACK. Writing To this register will clear the IRQ. Bit 14 Note: is entered. When this bit is set, the DMA channel will disable it’s self until a new block size If this bit is 0, when a block limit is reached the next block size will be downloaded into the counter along with the next DMA address and transfers will continue within the new block. Upon the next channel ACK, an IRQ will be generated. Bit 15: 100723A This bit must be set at all times to enable the channel and is not part of the double buffering process. Conexant 4-87 MFC2000 Multifunctional Peripheral Controller 2000 Address:ch1cscntl Bit 15 DMA 1 Configuration DMAACK1 Bit 14 Not Used Hardware Description Bit 13 Not Used Bit 12 Not Used Bit 11 Not Used Bit 10 Not Used Bit 9 Not Used Bit 8 Not Used Default: Rst. Value (DMA0config) Delay-off 00h $xx8183 0=normal Read Value 00h 1=delay ½ SIUCLK cycle Address:ch1cscntl Bit 7 DMA 1 Configuration Read = 1 Bit 6 Enable (DMA0config) Write = 0 $xx8182 Bit 5 Not Used Bit 4 Not Used Bit 3 Not Used Bit 2 Not Used Bit 1 Not Used Bit 0 Count By Default: Rst. Value 0 = disable 0=byte 00h 1 = enable 1=halfword Read Value 00h Bit 0: Sets byte or halfword data access to match external devices. Bit 6: This bit controls the channel enable Bit 7: This bit controls the external data direction Bit 15: Setting this bit to a 1 will extend the external DMAACK ½ SIUCLK cycle so that it may be used as a chip select. Address:ch2cscnt Bit 15 Bit 14 DMA 2 Configuration DMAACK2 Not Used Delay-off (DMA2config) 0 = normal $xx81B3 1 = delay half SIUCLK cycle (Write Only) Bit 13 Not Used Bit 12 Not Used Bit 11 Not Used Bit 10 Not Used Bit 9 BRB to Memory, Data Transfer Address:ch2cscnt Bit 7 DMA 2 Configuration Read = 1 Bit 5 0 = Inc Bit 4 Count By 1024 Bit 3 Count By Bit 2 Count By Bit 1 Count By Bit 0 Count By Default: Rst. Value 512 256 2 1 00H (DMA2config) Bit 6 Requested Device Write = 0 1 = Dec Bit 8 Default: Byte Mode = Rst. Value 0 00h ½ Word Read Mode = 1 Value 00h (Write Only) 0=Bit Rot. $xx81B2 Read Value 00h 1= Ext Mem DMA channel 2 Address Jump, Increment, and Decrement Control. The Count By control bits allows the user to select how the address is progressed after each DMA access. Only one Count By Bit can be set at a time. If there are no Count By control bits selected the address will remain fixed. Bit 15: If DMAACK2 is used as a select signal (like a chip select), the extended DMAACK2 may be needed. This ‘DMAACK2 delay-off’ bit needs to be set to ‘1’ for extending DMAACK2 half SIUCLK cycle. Bit 9: This bit controls the source of the DMA Request. If this bit is set to 0 and bit 6 is set to 0, a external support chip must be used to provide an external DMA Request for transferring printer data. If an external device is not used, the Bit Rotation Block can directly transfer print data to memory. To operate in this mode bit 9 should be set to 1, bit 6 set to 0, and bit 7 set to 0 for DMA writes to memory. If bit 6 is set to 1, bit 9 must be set to 0. 4-88 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bit 8: If the Bit Rotation Block is selected (bit 6 = 0), and the external data bus for the Print ASIC is byte wide, this bit needs to be ‘0’. If the Bit Rotation Block is selected (bit 6 = 0), and the external data bus for the Print ASIC is halfword wide, this bit needs to be ‘1’. If external memory is selected (bit 6 = 1), the external bus data width for the Print ASIC and external memory need to be matched (this bit is not used). Bit 7: Control bit definition is with reference to the DMA requested device and controls the read/write signals during the DMA cycle. If it is set to write, the write strobe will be active during the DMA cycle. Bit 6: If the Bit Rotation Block is selected ( bit 6 = 0), the DMA Request will be held off when the Bit Rotation Block output register is not ready. The ASIC output bus drivers will be disabled during external DMA request write (bit 6 = 1 and bit 7 = 0). Bit 5: Controls the address count direction performed after each DMA cycle. Bit 4-0: These bits control how the address registers will count after each DMA cycle. Note: If byte mode is set, the Count By 1 should be set. Note: Requests to this channel are delayed by two clocks for synchronization. Address:ch2csbs Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 DMA 2 Transfer Block Size Reg. (DMA2BlockSize) $xx81B5 Channel 2 Enable = 1 Not Used Not Used Not Used Not Used Not Used Upper two bits of the Block Rst. Value Size counter 00h Read Value 00h Address:ch2csbs Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 DMA2 Transfer Low Byte Value for the External DMA Block Size Counter Block Size Low Byte Reg. (DMA2BlockSizeLo) $xx81B4 • • Bit 8 Bit 0 Default: Default: Rst. Value 00h Read Value 00h DMA Channel 2 Block Size Limit Counter block size of DMA channel 2 (halfwords) − Unlimited block size (block size = ∞ ): bit[7:0] of the DMA2BlockSize register = 00h bit[9:8] of the DMA2BlockSize register = 00b. • • • − Limited block size (block size = 1 - 1023) The Block Size counter will decrement regardless of the DMA Address counter’s activity. The block size register content is 0000h when the block size limit is reached. Please see the operation description of DMA2BlkSize and DMA2BufBlkSize registers below (in the DMA2BufBlkSize register section). Writing to this register will also clear the DMA channel 2 interrupt. Bit 15: 100723A Channel 2 Enable is cleared when the block size limit is reached, and must be set, (enabled) after a new block size is entered. The block size can only be written into the DMA2Blksize register when this bit is 0. Conexant 4-89 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address:ch2csbbs Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 DMA Ch2 Buffered Transfer Block Size Reg. (DMA2BfBlockSize) $xx81B7 Ch2 Enable = 1 Not Used Not Used Not Used Not Used Not Used Upper two bits of the Block Rst. Value Size counter 00h Read Value 00h Bit 8 Address:ch2csbbs Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 DMA Ch2 Buffered Low Byte Value for the External DMA Block Size Counter Transfer Block Size Low Byte Reg. (DMA2BfBlockSizeLo) $xx81B6 • • • • Default: Rst. Value 00h Read Value 00h DMA Channel 2 Buffered Block Size Limit Counter block size of DMA channel 2 (1/2 Words) − Unlimited block size (block size = ∞ ): − • Default: bit[7:0] of the DMA2BlockSize register = 00h bit[9:8] of the DMA2BlockSize register = 00b. Limited block size (block size = 1 - 1023) The first transfer block size and the starting address must be set up in the DMA2BlkSize and DMA2 address registers. The second transfer block size and the starting address must be set up in the DMA2BufBlkSize and DMA2 buffered address registers. Then, Firmware only needs to update the DMA2BufBlkSize and DMA2 buffered address registers when the DMA channel 2 interrupt occurs. This allows preloading of the next block size and starting address before the DMA operation for the current block has completed. The Buffered Block Size will be down loaded into the Block Size Counter when the current Block Size is reached and a new value has been written into this buffered block size register. Writing to this register will also clear the DMA channel 2 interrupt. The block size can be written into the DMA2BufBlkSize register only when the value of bit 15 in the DMA2BlkSize register is set to 0. Address: chcsbl[2] Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA Ch2 Buffered Low Counter (DMA2Cntblo) $xx818D DMAB2 Addr. Bit 14 DMAB2 Addr. Bit 13 DMAB2 Addr. Bit 12 DMAB2 Addr. Bit 11 DMAB2 Addr. Bit 10 DMAB2 Addr. Bit 9 DMAB2 Addr. Bit 8 Rst. Value 00h Read Value 00h Address: chcsbl[2] Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA Ch2 Buffered Low Counter (DMA2Cntblo) $xx818C DMAB2 Addr. Bit 6 DMAB2 Addr. Bit 5 DMAB2 Addr. Bit 4 DMAB2 Addr. Bit 3 DMAB2 Addr. Bit 2 DMAB2 Addr. Bit 1 DMAB2 Addr. Bit 0 Rst. Value 00h Read Value 00h • • 4-90 DMAB2 Addr. Bit 15 DMAB2 Addr. Bit 7 DMA Channel 2 Lower Buffered Address Counter Value The Buffered Address Counter Value will be down loaded into the Address Counter when the current Block Size is reached and a new value has been written into this register. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: chcsbh[2] Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA Ch2 Buffered Hi Counter (DMA2Cntbhi) $xx818F Not Used Not Used Not Used Not Used Not Used Not Used Not Used Address:chcsbh[2] Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst. Value 00h Read Value 00h Default: DMA Ch2 Buffered Hi Counter (DMA2Cntbhi) $xx818E DMAB2 Addr. Bit 22 DMAB2 Addr. Bit 21 DMAB2 Addr. Bit 20 DMAB2 Addr. Bit 19 DMAB2 Addr. Bit 18 DMAB2 Addr. Bit 17 DMAB2 Addr. Bit 16 • • Not Used DMAB2 Addr. Bit 23 DMA Channel 2 Upper Buffered Address Counter Value The Buffered Address Counter Value will be down loaded into the Address Counter when the current Block Size is reached and a new value has been written into the Buffered Block Size register. Address:ch5csbs Bit 15 Bit 14 Bit 13 DMA5 Transfer Block Size Reg. (DMA4BlockSize) $xx81BB Channel 5 Enable = 1 Not Used Upper six bits of the Block Size counter Address:ch5csbs Bit 7 Bit 6 Bit 5 DMA5Transfer Block Size Reg. (DMA4BlockSize) $xx81BA Low Byte Value for the PIO to Memory Block Size Counter • • • Rst. Value 00h Read Value 00h Bit 12 Bit 4 Bit 11 Bit 3 Bit 10 Bit 2 Bit 9 Bit 1 Bit 8 Default: Bit 0 Rst. Value 00h Read Value 00h Default: Rst. Value 00h Read Value 00h DMA Channel 5 Block Size Limit Counter block size of DMA channel 5 (bytes) − Unlimited block size (block size = ∞ ): bit[13:0] of the DMA5BlockSize register = 0000h Limited block size (block size = 1 - 16380) The Block Size counter will increment regardless of the DMA Address counter’s activity Bit 15: 100723A Channel 5 Enable is cleared when the block size limit is reached, and must be set, (enabled) after a new block size is entered. This bit is also inverted and sent to the PIO as MaxDmaCnt. The new block size can only be written when this bit is 0. Conexant 4-91 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address:ch9csbs Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 DMA9 Transfer Block Size Reg. (DMA9BlockSize) $xx81BF Channel 9 Enable = 1 Not Used Not Used Not Used Upper four bits of the Block Size counter Address:ch9csbs Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 DMA9Transfer Block Size Reg. (DMA9BlockSize) $xx81BE Low Byte Value for the Bi-level resolution conversion logic Block Size Counter • • • • Bit 10 Bit 2 Bit 9 Bit 1 Bit 8 Default: Bit 0 Rst. Value 00h Read Value 00h Default: Rst. Value 00h Read Value 00h DMA Channel 9 Block Size Limit Counter block size of DMA channel 9 (bytes) − Unlimited block size (block size = ∞ ): bit[11:0] of the DMA9BlockSize register = 000h Limited block size (block size = 1 - 4095) The Block Size counter will decrement regardless of the DMA Address counter’s activity. The block size register content is 0000h when the block size limit is reached. Writing to this register will also clear the bi-level resolution conversion interrupt. Bit 15: Channel 9 Enable is cleared when the block size limit is reached, and must be set, (enabled) after a new block size is entered. The new block size can only be written when this bit is 0. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA6/10 Throttle (DMA6/10Throttle) $01FF81BD Throttle Value bit 14 Throttle Value bit 13 Throttle Value bit 12 Throttle Value bit 11 Throttle Value bit 10 Throttle Value bit 9 Throttle Value bit 8 Rst. Value 00h Read Value 00h Address: Throttle Ch. Select 0= Ch. 6 1= Ch. 10 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA6/10 Throttle (DMA6/10Throttle) $01FF81BC Throttle Value bit 7 Throttle Value bit 6 Throttle Value bit 5 Throttle Value bit 4 Throttle Value bit 3 Throttle Value bit 2 Throttle Value bit 1 Throttle Value bit 0 Rst. Value 00h Read Value 00h • Throttle Value (TV) = 1-32767 (TV= 0; disables Throttle Function) Throttle Value (TV) allows 1 DMA access every “TV*SIUCLK” time period. • 4-92 DMA Channel 6 OR 10 Throttle Control: This register is loadable while the DMA is active. Write to this register will reset the throttle timer. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address:ch10csbs Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 DMA10 Transfer Block Size Reg. (DMA10BlockSize) $xx81C1 Not Used Not Used Not Used Upper four bits of the Block Size counter Bit 6 Bit 5 Bit 4 Bit 3 Channel 10 Enable = 1 Address:ch10csbs Bit 7 DMA10Transfer Block Size Reg. (DMA10BlockSize) $xx81C0 • • Bit 10 Bit 2 Bit 9 Bit 1 Bit 8 Default: Bit 0 Rst. Value 00h Read Value 00h Default: Low Byte Value for the PIO to Memory Block Size Counter Rst. Value 00h Read Value 00h DMA Channel 10 Block Size Limit Counter block size of DMA channel 10 (bytes) − Unlimited block size (block size = ∞ ): bit[11:0] of the DMA10BlockSize register = 000h − • • Limited block size (block size = 1 - 4095) The Block Size counter will decrement regardless of the DMA Address counter’s activity. The block size register content is 0001h when the block size limit is reached. Writing to this register will also clear the DMA channel 10 interrupt. Bit 15: Channel 10 Enable is cleared when the block size limit is reached, and must be set, (enabled) after a new block size is entered. The new block size can only be written when this bit is 0. Address: csincconf Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA Increment Configuration (DMAIncConfig) $xx81C3 USB3 Inc = 0 Dec = 1 USB2 Inc = 0 Dec = 1 USB1 Inc = 0 Dec = 1 USB0 Inc = 0 Dec = 1 DMA 12 Inc = 0 Dec = 1 DMA 11 Inc = 0 Dec = 1 DMA 10 Inc = 0 Dec = 1 Rst. Value 00h Read Value 00h Address: csincconf Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA Increment Configuration (DMAIncConfig) $xx81C2 DMA 8 Inc = 0 Dec = 1 DMA 7 Inc = 0 Dec = 1 DMA 6 Inc = 0 Dec = 1 DMA 5 Inc = 0 Dec = 1 DMA 4 Inc = 0 Dec = 1 DMA 1 Inc = 0 Dec = 1 Not Used Rst. Value 00h Read Value 00h • Not Used DMA 9 Inc = 0 Dec = 1 DMA Address Increment Configuration. The Increment Configuration control bit allows the user to Select where the DMA channel Increments or Decrements after each access. 100723A Conexant 4-93 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address: cscontenb Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA Count Enable (DMACntConfig) $xx81C5 Not Used Not Used Not Used Not Used Not Used DMA 12 Count Enable DMA 11 Count Enable DMA 10 Count Enable Rst. Value 07h Read Value 07h Address:cscontenb Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: DMA Count Enable (DMACntConfig) $xx81C4 DMA 8 Count Enable DMA 7 Count Enable DMA 6 Count Enable DMA 5 Count Enable DMA 4 Count Enable DMA 1 Count Enable Not Used Rst. Value FEH Read Value FEH • DMA 9 Count Enable DMA Address Count Enable Control. The Count Enable control bit allows the user to enable address Count after each DMA access. If the Count Enable control bit is not set the address will remain fixed. Address: cscontenb Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: DMA Endian Control Not Used (DMAEndian) $xx81C7 Not Used Not Used DMA 12 Endian Control DMA 11 Endian Control DMA 10 Endian Control DMA 9 Endian Control DMA 8 Endian Control Address:cscontenb Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst. Value 00h Read Value 00h Default: DMA Endian Control DMA 7 (DMAEndian) Endian $xx81C6 Control DMA 6 Endian Control DMA 5 Endian Control DMA 4 Endian Control DMA 3 Endian Control DMA 2 Endian Control DMA 1 Endian Control Not Used • Bit 15 Rst. Value 00H Read Value 00H DMA Address Endian Control. If the Endian Control Bit is set to a 1, the data structure will be changed between the Little Endian mode and the Big Endian mode. The current data structure The changed data structure address 00: Byte 0 !" address 11: Byte 0 address 01: Byte 1 !" address 10: Byte 1 address 02: Byte 2 !" address 01: Byte 2 address 03: Byte 3 !" address 00: Byte 3 For DMA 1 (the external DMA channel) and DMA 2 (programmed as external DMA channel), this endian control can’t be used for accessing external memory (the associated bit needs to be set to 0). If the external I/O device tries to get/put data from/to internal memory or registers, this endian control can be used with no problem. For example, if the external print ASIC tries to get data from the internal bit rotation block through DMA 2, this endian control can be used with no problem. If the external print ASIC tries to get data from the external memory through DMA 2, this endian control can’t be used. In this case, the right endian structure should be prepared when the data is put into the external memory through the other process and DMA channels. 4-94 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 This page is intentionally blank 100723A Conexant 4-95 Multifunctional Peripheral Controller 2000 MFC2000 5. RESET Logic/Battery Backup/Watch Dog Timer 5.1 Reset Logic/Battery Backup The MFC2000 has two power resets, Battery Power Reset and Prime Power Reset. The Battery Power Reset is the primary reset used to initialize battery-powered logic when battery power is first applied. Prime Power Reset initializes all non-battery powered logic whenever system power is applied. A third reset is generated by the watchdog timer or by the RESETn pin. The major logic blocks and associated MFC2000 signals are illustrated in Figure 5-1. Note: 100723A Reset logic operation requires use of the RTC Crystal (connected to XIN and XOUT). Conexant 5-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description MCLK for ARM7 CPU SYSCLK Fax Timing Block RESET Sync local_clk RESETn SIUCLK Power up Delay 2 & Retime to local_clk RESn Battrtc_RESn Prime Power Battery Power Divider XOUT pwrdwn_padn Pwrdwn select logic clock enable pwrdwn Power up Delay 1 ext_pdsel battery refresh inactive SYSIRQ for power down DRAM refresh control Vdd refresh enable clear SYSIRQ routine lockout Lockout Logic to battery register reset BATRSTn Tristate Control CS0n RASn[1:0] CASOn[1:0] CASEn[1:0] DWRn Figure 5-1. Power Reset Block Diagram 5-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 ext_pdsel_padn pwrdwn_padn 0 sia_pwr_down1 1 1 0 sia_pwr_down2 int_pwrdwn_sel Figure 5-2. Power-down Select Logic 5.1.1 Battery Power Reset Battery Power Reset is generated when BATRSTn (as shown at lower left in Figure 5-1) is driven low, and initializes the MFC2000 when battery power is first applied, as well as forcing a Prime Power Reset if VDD is present. As long as battery power is maintained, there is no need to reactivate this reset. If the system design does not utilize the MFC2000's battery power features, this reset should be tied to PWRDWNn and be activated upon system power initialization. Battery backup system requirements are undefined when battery power is first applied. Consequently, BATRSTn disables the battery backup control for DRAM and disables SRAM by resetting the BackupConfig register, and inhibits CPU access to this register via the (internal) lockout signal. The disabling of battery backup controls tristates the associated output control signals (i.e., CS[0]n for SRAM, and CASOn[1:0]n, CASEn[1:0], RASn[1:0], and DWRn for DRAM, as shown at lower right in Figure 5-1. Note: The proper off-state logic level for battery backed-up devices external to the MFC2000 must be maintained by external pull-up/pull-down resistors on the appropriate MFC2000 pins. BATRSTn has a Schmitt trigger input buffer to allow the use of an external RC circuit to generate a reset. 5.1.2 Prime Power Reset Prime Power Reset occurs when PWRDWNn (shown at upper left in Figure 5-1) is driven low while prime power is applied. There are two Prime Power Reset operating modes, one for VDD power on and one for VDD power off. 100723A Conexant 5-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description VDD Power On VDD power on occurs when VDD power reaches it's normal operating level and PWRDWNn is driven high, resulting in “Power-Up Delay 1” (PUD1) initiation (shown at upper left in Figure 5-1). PUD1 has a duration of one or two Reset clocks (internal signal), depending on when PWRDWNn is driven high with respect to the Reset clock rising edge. Once PUD1 times out, the internal signal Battrtc_RESn is released. The internal Reset clock signal (RESn) duration is equal to approximately 125 ms for XOUT = 32.768 kHz. Reset clock = XOUT/4096 “Power-Up Delay 2” (PUD2) is a time delay whose duration is approximately 8 periods of SIUCLK (6 SIUCLK periods + time for retiming to AUXCLK). This delay allows CPU pre-operation initialization. Once PUD2 times out, RESETn gets resynchronized to AUXCLK and then, changes from an active low state to a high impedance state. After RESETn goes to the high impedance state, RESn goes high approximately after 8 periods of SIUCLK. After the internal RESn signal goes high, all internal logic gets reset and the battery back-up lockout is removed on the next XOUT rising edge. VDD Power Off VDD power off occurs when PWRDWNn is driven low while VDD is at a normal operating level. As an MFC2000 battery backed up feature, PWRDWNn has been designed to work with an early warning power loss detector. This allows the firmware to backup sensitive variables, and the MFC2000 to protect nonvolatile data from erroneous logic operations while prime power transitions through low voltage levels (i.e., < 3.135V). When PWRDWNn is driven low, an SYSIRQ is issued to the CPU, and the CPU SYSIRQ routine then performs necessary system house cleaning tasks before power loss. The final SYSIRQ routine task is to write to the LockEnn register, which enables the battery lockout logic. The battery lockout logic forces an immediate lockout if battery DRAM operation is not enabled. If DRAM operation is enabled, the battery lockout logic waits for the absence of a VDD refresh cycle before performing the lockout. While in lockout, battery refresh mode commences, Battrtc_RESn becomes active, and the MFC2000 is inactive until the next VDD power on cycle. Time-out Logic for the power-down lockout There is a 1-2 second time-out on lockenn, if power down goes low enough to get latched into the battery logic, but a lockenn doesn’t get generated by software. This will guarantee that a reset will occur if power down ever gets set and software doesn’t set lockenn so that a reset gets generated. There are two status bits to the backup configuration register. Bit 12 indicates that a battery reset (from the pin batrstn) has been detected. Bit 11 indicates that a lock enable has occurred and was caused by the time-out circuitry or a software write. To reset either of these bits a 1 must be written to the appropriate bit. 5-4 Conexant 100723A Hardware Description 5.1.3 MFC 2000 Multifunctional Peripheral Controller 2000 External Reset (RESETn) and Watchdog Reset A driver on the AMPFC's RESETn pin provides a reset signal to external devices whenever the internal Battrtc_RESn or watchdog reset is active (low). This pin also includes an input driver that allows external control circuitry to reset the CPU and all VDD powered registers (including a power-down SYSIRQ condition). The external RESETn and internal RESn are also activated when the watchdog timer times out (refer to the watchdog timer section that follows). An externally generated reset does not affect the battery powered registers nor DRAM refresh operation. [CAUTION] Don’t drive the RESETn pin ‘high’ from external. Only drive the RESETn pin ‘low’ to generate the reset from external and don’t drive the RESETn pin when external reset is not needed. 5.1.4 Power Reset Timing Diagram The battery and VDD power on reset timing is illustrated in Figure 5-1. The first event shown is the battery voltage and lockout rising together as battery voltage is applied, followed by BATRSTn going high, and the start up of XOUT. On the second falling edge of Reset clock after VDD has been applied and PWRDWNn has been driven high, Battrtc_RESn goes high and approximately eight SIUCLKs are counted as Power-Up Delay 2. At the completion of eight SIUCLKs, battery lockout is removed allowing access to the BackupConfig register. Internal clock on (internal) SIUCLK (internal) Reset Clock - 125ms Battery Voltage Lockout BATRSTn VDD PWRDWNn (internal) Battrtc_RESn Power up Delay 1 (125-250ms) (internal) clock enable RESETn Power up Delay 2 (8 SIUCLKs) 8 SIUCLKs) (internal) RESn Figure 5-3. Power Reset Timing Diagram 100723A Conexant 5-5 MFC2000 Multifunctional Peripheral Controller 2000 5.1.5 5.1.5.1 Hardware Description Power on/off Sequence Power Type +3.3V prime power signal • Connect to VDD pins on the MFC2000 chip to supply prime power to the MFC2000 die in the MFC2000 chip. +5V prime power signal • Connect to ADVA and ADVD pins on the MFC2000 chip to supply prime power to the ADC die in the MFC2000 chip. • Connect to VGG pins on the MFC2000 chip to supply +5v prime power to all +5v tolerant pads in the MFC2000 chip. +3V battery power signal • Connect to the VBAT pin on the MFC2000 chip to supply battery power to the battery backup RTC in the MFC2000 chip and external SRAM. • Connect to the VDRAM pin on the MFC2000 chip to supply battery power to the battery backup DRAM refresh logic in the MFC2000 chip and external DRAM. 5.1.5.2 Prime Power Sequence It is recommended that +3.3v prime power signal is supplied first and then, supply +5v prime power signal for the prime power-on sequence. In other words, The voltage level of +5v prime power signal must be lower than the voltage level of +3.3v prime power signal before +3.3v prime power signal reaches the stable level. V+5 is turned off first and then, turn off V+3.3 for the prime power-off sequence. In other words, The voltage level of +5v prime power signal must be always lower than the voltage level of +3.3v prime power signal during the power-off sequence. The recommended connection between +5v prime power signal and VGG is shown: +5V 1Kohm .1uF VGG Figure 5-4. +5v Prime Power Signal and VGG 5-6 Conexant 100723A Hardware Description 5.1.6 MFC 2000 Multifunctional Peripheral Controller 2000 Register Description Battery Backup and Prime Power Reset Registers Name/Address Backup Configuration Register (BackupConfig) Bit 15 Bit 14 Bit 13 (Not Used) (Not Used) Internal Power Down Select Bit 12 Battery Bit 11 Reset Lockout Time-out Flag Flag $01FF8099 Bit 10 SRAM Bit 9 Bank 1 Enable Data 0 = disable interface size: 1 = enable 0 = 8-bit 1 = 16-bit Name/Address Backup Configuration Register (BackupConfig) $01FF8098 Bit 7 Bit 6 Bit 5 DRAM Backup Time 0 = no backup Refresh Rate 1 = 1-2 days 0 = normal 0 = 2 = 2-3 days 1 = slow 3 = infinite days Bit 4 Oscillator Speed 32.768 KHz 1= 65.536 KHz Bit 3 Bank 1 Bit 2 Bank 0 Bit 1 Bit 8 Bank 0 Data interface size: 0 = 8-bit Default Rst. Value xxx00000b Read Value 00h 1 = 16-bit Bit 0 Default Bank 1 Interleave Enable Bank 0 Rst. Value Interleave Enable Enable 00h Enable 0 = disable 0 = disable Read Value 0 = non 0 = non 1 = enable 1 = enable interleaved interleave 00h 1 = 2 way d interleaved 1 = 2 way interleave d Register Description: This register is set to all zeros when first powered up and is battery backed up with the RTC Battery during power down. When a time out condition occurs, the RASn and CASn signals are tristated. When prime power has returned from a power down sequence, the user will have to perform a checksum on the DRAM data to know if a time out has occurred since there is no indication that the DRAM battery has lost power. The user will have to wait 1ms before accessing the DRAM after prime power has returned. Bits 15-14:Not used Bits 13: Internal Power Down Select 0 = PWRDWNn is generated by or-ing power_down1 with power_down2 1= PWRDWNn is generated by and-ing power_down1 with power_down2 Note: Power_down1 and power_down2 are output signals from the power-down detection circuit 1 and 2. Bit12: Battery Reset Flag This bit indicates that a BATRSTn occurred. To clear this bit, a 1 must be written to this bit. Bit11: Lockout Time-out Flag This bit indicates that a power down occurred, but no lockout was set with in the 1-2 second period. The lockout timer initiated the LOCKENn to create the lockout condition. Once the lockout condition occurs, if the power down signal is high, the chip will come out of reset after a PUD1 delay. To clear this bit, a 1 must be written to this bit. Bit10: SRAM Chip Select Enable This bit enables the SRAM chip select CSN0. Bit 9: Bank 1 Interface Size This register defines whether the databus to the bank 1 DRAMs is 8 bits wide or 16 bits wide. An 8-bit wide DRAM interface uses RASn[1] and CASOn[0]. A 16-bit wide non-interleaved DRAM interface uses RASn[1] and CASOn[1:0]. A 16-bit wide interleaved DRAM interface uses RASn[1], CASEn[1:0], and CASOn[1:0]. 100723A Conexant 5-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bit 8: Bank 0 Interface Size This register defines whether the databus to the bank 0 DRAMs is 8 bits wide or 16 bits wide. An 8-bit wide DRAM interface uses RASn[0] and CASOn[0]. A 16-bit wide non-interleaved DRAM interface uses RASn[0] and CASOn[1:0]. A 16-bit wide interleaved DRAM interface uses RASn[0], CASEn[1:0], and CASOn[1:0]. Bits 7-6: DRAM Battery Backup Time These bits control the amount of time that the DRAM controller will spend refreshing the DRAMs when in the battery backup mode. After reset when the CPU is being released to run, the CPU will not be able to write data to bits 7 and 6 of the BackupConfiguration register immediately since the immediate write will not take effect. The CPU must wait at least one oscillator clock cycle before writing data into bits 7 and 6. Bit 6 Battery Backup Duration: 0 0 No battery backup 0 1 1-2 days 1 0 2-3 days 1 1 Infinite Bit 7 Bit 5-4: DRAM Refresh Rate Refresh Speed: Oscillator Speed: (bit 5) (bit 4) 0 0 These bits are used to set up the DRAM refresh rate. See the following table: Refresh Speed: normal Description: RTC crystal frequency = 32.768 kHz, Refresh clock = the crystal frequency= 32.768 kHz, The refresh cycle time = 15.625 ms/1024 cycles. 0 1 fast RTC crystal frequency = 65.536 kHz, Refresh clock = the crystal frequency = 65.536 kHz, Refresh cycle time = 7.8125 ms/1024 cycles. 1 0 slow RTC crystal frequency = 32.768 kHz, Refresh clock = the crystal frequency/8 = 4.096 kHz Refresh cycle time = 125 ms/1024 cycles. 1 1 slow RTC crystal frequency = 65.536 kHz, Refresh clock = the crystal frequency/16 = 4.096 kHz Refresh cycle time = 125 ms/1024 cycles. Bits 3: 5-8 Bank 1 Enable This bit controls whether or not the Bank 1 DRAMs will be enabled. The Enable signal will allow CAS before RAS refresh to occur based on the non-interleave or interleave setting. If the bank setting indicates a non-interleaved mode, RASn[1] and CASOn[0] (8-bit mode) or CASOn[1:0] (16-bit mode) will refresh the DRAM. If the bank setting indicates an interleaved mode, RASn[1], CASOn[1:0] and CASEn[1:0] will refresh the DRAM. DWRn will be high during refresh. CASEn[1:0] will be tristated if Bank 0 is in non-interleaved mode. If this bit is set to a zero, RASn[1] will be tristated. Default disabled. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bit 2: Bank 0 Enable This bit controls whether or not the Bank 0 DRAMs will be enabled. The Enable signal will allow CAS before RAS refresh to occur based on the non-interleave or interleave setting. If the bank setting indicates a non-interleaved mode, RASn[0] and CASOn[0] (8-bit mode) or CASOn[1:0] (16-bit mode) will refresh the DRAM. If the bank setting indicates an interleaved mode, RASn[0], CASOn[1:0] and CASEn[1:0] will refresh the DRAM. DWRn will be high during refresh. CASEn[1:0] will be tristated if Bank 1 is in non-interleaved mode. If this bit is set to a zero, RASn[0] will be tristated. Default disabled. Bit 1: Bank 1 Interleave Enable This register defines whether the bank 1 DRAMs are to be accessed using 2-way interleave or non-interleaved access. 2-way interleaved access is only valid with a 16-bit interface (the 16 bit vs. 8 bit interface size bit for bank 1 is not used by the DRAM controller in the interleave mode, but is used by the SIU to output the data correctly). Bit 0: Bank 0 Interleave Enable This register defines whether the bank 0 DRAMs are to be accessed using 2-way interleave or non-interleaved access. 2-way interleaved access is only valid with a 16-bit interface (the 16 bit vs. 8 bit interface size bit for bank 1 is not used by the DRAM controller in the interleave mode, but is used by the SIU to output the data correctly). Address Lock Enable (LockEnn) Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 A Dummy write to the Lock Enable register will enable the battery/prime power lockout sequence for a power down condition. Read Value xxh 01FF80A1(DW) Address Lock Enable (LockEnn) Default Rst. Value xxh Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 A Dummy write to the Lock Enable register will enable the battery/prime power lockout sequence for a power down condition. Default Rst. Value xxh Read Value xxh 01FF80A0 (DW) • A write to this register enables the battery power lockout sequence for a power down condition. Lockout can only be cleared by resn. • This is not a battery backed-up register. 100723A Conexant 5-9 MFC2000 Multifunctional Peripheral Controller 2000 5.1.7 Hardware Description POWER DOWN DETECTION The power down detection circuit was only external for the MFC1000 chip. The PWRDWNn input signal to MFC1000 is the output of the external power down detection circuit. The MFC2000 has two internal power down detectors. The PWRDWNn is configurable either from internal power down detectors or from external power down detector. The EXT_PWRDWN_SELn is used to select internal or external power down detector. The external power down detector is selected when the EXT_PWRDWN_SELn pin is low. If the internal power detectors are selected, the combination of two power down detector can be further selected through the internal register. The purpose of having internal power down detector is to automatically generate reset after voltage drop on the power supply without having external power down detector. The power supply voltage is compared with internally generated threshold voltages. In order to prevent erratic resets, the comparator is designed with hysteresis feature. During the power up, the output of the comparator will be low when the power supply voltage is at least Von. Then as the voltage continues to increase and becomes larger than Von, the comparator output will be high. If at any time, the supply voltage drops below the threshold voltage level of Voff, then the comparator output will be low. POWER1 + pwr_down1 POWER2 + pwr_down2 Voltage Detector Reference Voltage Figure 5-5. Internal Power Detection V off V hys Output Voltage (V) ADVA ADGA Input Voltage (V) [Sia2k-comp-tf.vcd] Figure 5-6. Figure Caption Required 5-10 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Voltage Threshold Margin Voff TADCREF ±30 mV Vhys 20 mV ±2 mV Note: The output voltage to represent logic 0 must be guaranteed to be at ADGA (typically ADGA = GND = 0V). The input resistance to the voltage detector is specified as follows: Min Input Resistance Rin 10 M Ω A voltage divider circuit will be used externally in order to obtain the desired voltage to monitor the power. 5V or 3.3V MFC2K ADVA R1 power1 R2 Voltage Detector power_down1 R in Figure 5-7. Voltage Divider Circuit 5.2 Watchdog Timer The Watchdog Timer is intended to guard against firmware lockup on the part of either Executive-controlled background tasks or Interrupt-driven tasks, and can only be enabled by a sequence of events under control of the Watchdog Control Logic. Once the Watchdog Timer has been enabled, it can not be disabled (inactivated) unless a system reset occurs. The watchdog timer block diagram is provided in Figure 5-8, and the Watchdog Time-Out Timing Diagram is provided in Figure 5-9. The Watchdog Timer is enabled by the following sequence of events, which MUST occur in the order described. 1. Write the value of the desired Time-out interval to the Watchdog Interval register. The first write to this register disables subsequent writes, and enables the next event in the enable sequence. 2. Write $0F followed by $F0 to the WatchdogEnRetrigger register. The data written to this register MUST be in the order specified or it is ignored. 3. After the operations are completed, the value in the Watchdog Interval register is loaded into the Time-out Down Counter. 100723A Conexant 5-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 4. As soon as the Watchdog Timer is enabled, the Time-out Down Counter begins counting. The Time-out Down Counter is decremented based on a 1 ms pulse which is derived from (125 µs prescaler period /8); the count occurs on the rising edge of SIUCLK. After the Time-out Down Counter reaches 'zero', the (internal) watchdog reset signal becomes active at the next 1 ms pulse. The watchdog reset immediately activates the internal resn and external RESETn signals. These resets are deactivated when the Power Up Delay 2 timer times out (i.e., 8 SIUCLK's). In order to prevent the Watchdog Timer from timing-out and generating a reset pulse, it must be retriggered by writing $0F followed by $F0 to the WatchdogEnRetrigger register. This action causes the value in the WatchdogInterval register to be re-loaded into the Time-out Down Counter. Note: The 125us prescaler must be initialized before activating the watchdog timer. RESETn 1 DATA BUS WATCHDOG INTERVAL REGISTER BLOCK 1, 2, 3, 4, and 5 2 3 DATA BUS WATCHDOG ENRETRIGGER REGISTER WATCHDOG TIMER CONTROL 5 TIME-OUT DOWN COUNTER 4 WATCHDOG RESET GENERATOR SIUCLK 1ms pulse WDRE S Figure 5-8. Watchdog Timer Block Diagram 5-12 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 N-1 0 SIUCLK 1ms (N-1)ms 1ms T1msCI Counter Enable WDRES Figure 5-9. Watchdog Time-Out Timing Diagram 5.2.1 Watchdog Timer Registers Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Watchdog Enable (Not Used) Retrig. (WatchdogEnRetrigger) 01FF8041 Address: Bit 7 Rst. Value xxh Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Watchdog Enable Writing 0Fh followed by F0h to this register after setting the Watchdog Interval register will enable the Retrig. Watchdog timer. (WatchdogEnRetrigger) (The 125µsPrescaler must be initialized before activating the Watchdog timer.) Always reads back ‘00h’. 01FF8040 (W) 100723A Default: Conexant Default: Rst. Value 00h Read Value 00h 5-13 MFC2000 Multifunctional Peripheral Controller 2000 Address: Watchdog Interval (WatchdogInterval) 01FF8043 Address: Watchdog Interval (WatchdogInterval) 01FF8042 Bit 15 Bit 14 Bit 13 Hardware Description Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 (Not Used) Bit 7 Default: Rst. Value xxh Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Watchdog Interval (n = 0-255) (n*1ms) Default: Rst. Value 00h Read Value 00h • Once enabled, the Watchdog Timer can only be disabled by reset. • On reset, the Watchdog Timer is disabled until it is enabled by writing to the WatchdogInterval register followed by writing $0F and $F0 to the WatchdogEnRetrigger register. • The basic Watchdog time-out unit (1 ms) is based on the internal 125 µsec timer. Therefore, the 125µsPrescaler and MSINTPeriod registers (used to activate the timer) must be set in order to operate the Watchdog Timer. • The accuracy of the time-out period is equal to the accuracy of the 125 µsec timer with an additional error of up to 1 msec (i.e., the amount of error is dependent on the relationship of the trigger point to the internal 1 msec timer). • If N is programmed into the WatchdogInterval register, the Watchdog Timer time-out period is "N * 1 ms" (N = 0 - 255). • Reading the address of the WatchdogInterval register returns the value of N that was programmed into the WatchdogInterval register. • The following conditions do not enable the watchdog timer: Only the first write to the WatchdogInterval register is valid. The subsequent writes to this register are ignored. Any other data written to the WatchdogEnRetrigger register between the times $0F and $F0 are written is ignored. Once enabled, the Watchdog Timer is retriggered on the writing of alternate $0F and $F0. (Writing of any other data, and the writing of repetitive $0F or $F0 is ignored.) 5-14 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 This page is intentionally blank. 100723A Conexant 5-15 Multifunctional Peripheral Controller 2000 MFC2000 6. Fax Timing Control Interface 6.1 PLL 6.1.1 Description The MFC2000 is an ASIC that provides multifunctional control for color fax, color scan and color printing. The ASIC includes an ARM microprocessor running at 30 MHz, 37.5 MHz or 40 MHz and a Countach Imaging DSP running at 100 MHz or 85.7 MHz. Additionally, the ASIC also supports the USB interface running at 48 MHz and the AUXCLK at 10 MHz. The PLL for the ASIC is designed to provide all the above frequencies in six operating modes based on the combination of ARM frequency select and Countach Imaging DSP frequency select. The six operating modes are defined in the following table. 6.1.2 Frequency Requirement The frequencies for the six operation modes are defined as follows: Table 6-1. Operation Mode Frequencies CLKConfig[1:0] CLKConfig[2] ARM (SIUCLK) Countach USB AUXCLK 00 1 30 MHz 85.7 MHz 48 MHz 10 MHz 01 1 37.5 MHz 85.7 MHz 48 MHz 10 MHz 10 1 40 MHz 85.7 MHz 48 MHz 10 MHz 00 0 30 MHz 100 MHz 48 MHz 10 MHz 01 0 37.5 MHz 100 MHz 48 MHz 10 MHz 10 0 40 MHz 100 MHz 48 MHz 10 MHz 11 Don’t Care The MFC2000 can only operate in one mode at a time. The mode selection is made during the reset through clock configuration pins (CLKConfig[2:0]). The input reference frequency is 28.224 MHz, which is generated by a crystal oscillator pad. 28.224MHz is also used for the internal P80 modem DSP. 100723A Conexant 6-1 MFC2000 Multifunctional Peripheral Controller 2000 6.2 Hardware Description Fax Timing Logic The fax timing logic block generates all of the time bases needed by the MFC2000. The fax timing logic block diagram is provided in Figure 6-1. A= [IHSCLK period]+1 A is from 1 to 2 SIUCLK IHSCLK IHSCK1X_SELn IHS_LCLPHI Divide By A I_LCLPHI ICLKand AUXCLK Divide By B Divide By 8 MMCLK B= [ICLK period]+1 B is from 2 to 4 C= [Prescaler]+1 C is from 1 to 256 Divide By C Divide By 8 WATCHDOG TIMING GENERATOR TIM_8MS TIM_1MS_SIUCLK TIM_125US_ICLK TIM_125US_SIUCLK Divide By D ONEMSCLK (from RTC) D= [MSINT perild]+1 D is from 1 to 64 1MS/2MSIRQ GENERATOR TIM_MSINT TIM_1MS/2MSIRQ Notes: (1) I_LCLPHI is only used internally to indicate the SIUCLK cycle before the last SIUCLK cycle in one ICLK time period. (2) IHS_LCLPHI is only used internally to indicate the SIUCLK cycle before the last SIUCLK cycle in one IHSCLK time period. (3) ICLK is the base clock for internal peripherals and is only used internally to synchronize all the internal logic. The frequency of ICLK must be equal to or less than 10MHz. ICLK duty cycle is 33% when ICLK = SIUCLK/3. (4) IHSCLK is the high speed base clock for the PIO and Bit Rotation blocks and is only used internally to synchronize all the internal logic. The frequency of IHSCLK must be equal to or less than 20MHz. (5) AUXCLK has the same frequency as ICLK and is output to the external world through a pin. AUXCLK is used to synchronize external peripherals. AUXCLK duty cycle is always 50% no matter what is the relationship between ICLK and SIUCLK. (6) MMCLK is the base clock for the motor control logic. (7) TIM_8MS is used by the PIO Block. (8) TIM_1MS is the base clock for the the watchdog timer. (9) TIM_MSINT is used to synchronize the scanning and motor stepping. (10) TIM_1MS/2MSIRQ is used to generate an interrupt every 1ms or 2ms (selectable). The actual period of the 1MSIRQ = 1.00708 ms and 2MSIRQ = 2.01416ms Figure 6-1. Fax Timing Control Logic Block Diagram 6-2 Conexant 100723A Hardware Description 6.3 MFC 2000 Multifunctional Peripheral Controller 2000 MFC2000 Timing Chain The MFC2000 timing chain is illustrated in Figure 6-2. SIUCLK IHSCLK Divide by A A = [IHSCLK Period] + 1 for Tone Generator 125us synchronized to SIUCLK Divide by B B = [ICLK Period] + 1 for Watchdog Timer and bell/ring generator about 1ms Divide by 8 for Watchdog Timer Divide by C Divide by 8 ICLK (AUXCLK) Divide by 8 C = [125us Prescaler] + 1 about 8ms Divide by D for PIO MSINT for scanning and motor stepping synchronization D = [MSINT Period] + 1 Divide by E Scan Cycle E = [ Scan Cycle] + 1 Divide by F MMCLK STEPCLK for vertical print motor stepping and scan motor stepping F = [ Step Clock ] + 1 ADCLK on/off Control ADCLK for ADC die H = [ScanDotPeriod] + 1 Divide by G Divide by H Divide by 8 VC1Pos, VC1Neg ScanBytes(2-512 bytes) G = [ScanDotScaler] +1 Divide by 2 CLK1, CLK1N CLK2Pos, CLK2Neg StartPos, StartNeg ADCSamplePos VC0Pos, VC0Neg ONEMSCLK(from RTC) 1MS/2MSIRQ Gen. 1MS/2MSIRQ* Figure 6-2. MFC2000 Timing Chain 100723A Conexant 6-3 MFC2000 Multifunctional Peripheral Controller 2000 6.4 Hardware Description Scan Control Timing In this example, the scan motor has the constant speed. The scan motor stepping is synchronized to the MSINT. The scan IRQ is used to disable motor stepping when we want to finish scanning. If the delay time for the scan motor is long enough, the last step will occur after the scan IRQ. Then, we need to use the scan step IRQ (sstepirq) for disabling motor stepping. The detail description for the motor stepping is described in Section 12. Scan IRQs (Last MSINT) MSINT-0 Tics Dela y Time Step Time Step Time Scan Line 2 Shift Out Line 1 Scan Line 1 Step - Enable Scan Video Signals - Set GPO mode for SM[3:0] - Step - Set DMA for Line 1 - Scan Once (Line 1) Step Step - Set DMA for Line 2 - Scan Once (Line 2) Scan Line 3 Shift Out Line 2 Step Shift Out Line 3 Step - Disable Step - Set DMA for Line 3 - Scan Once (Line 3) Disable Scan IRQ Load Delay timer register for scan motor Load Step Timer register for scan motor Set Stepping mode and dir for scan motor Load the initial step pattern Set scan motor mode for SM[3:0] Enable Step Enable Scan IRQ Figure 6-3. Scan Control Timing 6-4 Conexant 100723A Hardware Description 6.5 MFC 2000 Multifunctional Peripheral Controller 2000 Fax Timing Registers Address: 125 uS Prescaler (125usPrescaler) 01FF8881 Address: 125 uS Prescaler (125usPrescaler) 01FF8880 Address: ICLK(AUXCLK) Period (ICLKPeriod) 01FF8883 Address: ICLK(AUXCLK) Period (ICLKPeriod) 01FF8882 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bit 0 Rst Value xxh Read Value 00h Default: (Not Used) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 n (8 bits) as applied in the equation: (n+1)*(ICLK period *8) Bit 15 (Not Used) Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Rst Value 00h Read Value 00h Bit 3 (Not Used) Bit 10 Bit 9 (Not Used) (Not Used) Bit 2 IHSCLK Period Bit 1 Bit 8 (Not Used) Bit 0 ICLK (AUXCLK) Period ICLK= SIUCLK/(ICLKPeriod + 1) Default: Rst Value xxh Read Value 00h Default: Rst Value xxxxx111b Read Value 07h IHSCLK = MCLK/(IHSCLKPeriod + 1) Address: Mechanical Subsystem (MS) Period (MSINTPeriod) 01FF8885 Address: Mechanical Subsystem (MS) Period (MSINTPeriod) 01FF8884 Bit 15 (Not Used) Bit 7 2MSIRQ Select 0=1MSIRQ 1=2MSIRQ Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 (Not Used) Bit 5 Default: Rst Value xxh Read Value 00h Bit 4 Bit 3 Bit 2 Bit 1 n (6 bits) as applied in the equation: (n+1)*125 uS Prescaler period) Bit 0 Default: Rst Value 0x000000b Read Value 0x000000b On Reset, the 125usPrescaler, 1-ms Timer, and MSINT counters are disabled. Writing to the MSINTPeriod register enables these timers and counters. In addition, the 125usPrescaler must be set to the appropriate value in order for the WatchDog and timing chains to operate correctly. If a new value is written into the MSINTPeriod register while the MSINT counter is running, the new value is not loaded into the counter until it counts down to 0. 1MS/2MSIRQ is a programmable interrupt source. If the ‘2MSIRQ Select’ bit (bit7) of the MSINTPeriod register is set to 0, the interrupt is generated every 1ms (1.00708ms). If the ‘2MSIRQ Select’ bit (bit7) of the MSINTPeriod register is set to 1, the interrupt is generated every 2ms (2.01416ms). 100723A Conexant 6-5 MFC2000 Multifunctional Peripheral Controller 2000 Address: Interrupt Clear (IntClear) 01FF8887 Address: Interrupt Clear (IntClear) 01FF8886 (W) 6-6 Bit 15 (Not Used) Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Hardware Description Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) Conexant Bit 10 Bit 9 (Not Used) (Not Used) Bit 2 Bit 1 (Not Used) (Not Used) Bit 8 (Not Used) Bit 0 Default: Rst Value xxh Read Value 00h Default: 1=clear Rst Value 1MS/2MSIRQ xxxxxxx0b Read Value 00h 100723A Multifunctional Peripheral Controller 2000 MFC2000 7. VIDEO/SCANNER CONTROLLER The video/scanner controller consists of three main blocks: • • • Scanner controller Industry standard two-wire serial programming interface Video decoder interface The following diagram shows the block diagram of VSC. MFC2000 Video/Scan Controller Two-wire Serial Interface Video Decoder chip Registers system interface msint counter & irq generator msintcy vsc_irq data and clock mux vsc_adc_start vsc_adc_stop vsc_adc_drdy vsc_adc_dclk vsc_adc_data[7:0] Video Decoder Interface video Scanner Controller LED (s) LEDCtrl sensor sensorCtrl SIACtrl scanin Scan Analog Frontend clamp PGA PADC Figure 7-1. Video/Scanner Controller Block Diagram 100723A Conexant 7-1 MFC2000 Multifunctional Peripheral Controller 2000 7.1 Hardware Description Scanner Controller The function of scanner controller can be divided into three areas: 1. Scanner sensor controller 2. Scanner light controller 3. Scan integrated analog controller Pins related to scanner and external ADC # Scanner related SC_START[0] SC_LEDCTRL[0] SC_LEDCTRL[1]/SC_START[1] SC_LEDCTRL[2]/SC_START[2] SC_CLK1/SC_CLK2A GPIO[0]/EXT_CLAMP GPIO[8]/SC_CLK1/SC_CLK2B GPIO[15]/SC_CLK1/SC_CLK2C GPIO[22]/EADC_SAMPLE/SC_CLK2D EV_VD[5]/ScanIAConfig[5] as GPO EV_VD[4]/ScanIAConfig[4] as GPO EV_VD[3]/SAMPLE/CLK2D EV_VD[2]/CLK1/CLK2C EV_VD[1]/CLK1/CLK2B EV_VD[0]/CLAMP # Ext ADC related 12-bit ADC clock clk data[11:0] data[0] data[1] data[2] data[3] data[11:4] MFC2000 GPIO[22]/ EADC_Sample PM[0]/GPO[0]/SPI_SID/ EADC_D[0] PM[1]/GPO[1]/SPI_SIC/ EADC_D[1] GPIO[9]/ EADC_D[2] GPIO[6]/ EADC_D[3] EV_VD[7:0]/ EADC_D[11:4] # Related GPIO Configuration: Configuration 7-2 Bit on GPIOConfig2 ($01FF8832) EXT_CLAMP on GPIO[0] set bit 4 SC_CLK1/2B on GPIO[8] set bit 2 SC_CLK1/2C on GPIO[15] set bit 3 EADC_SAMPLE/SC_CLK2D on GPIO[22] set bit 6 Conexant 100723A Hardware Description 7.1.1 MFC 2000 Multifunctional Peripheral Controller 2000 Function Description Features for scanner controller: • • • • • • supports wide variety of CIS and linear CCD scanners (color or monochrome) 13 supports up to 8192 (= 2 ) pixels/line programmable pulse width modulation for light control (up to 3 LEDs) programmable clamping signal (mode, delay, width, length) programmable sampling location (mode, location) supports external 12-bit ADC with programmable latency and programmable data transfer position MFC2000 Pin function Alias sc_led0 LEDCtrl[0] scctrl[0] sc_st0 start[0] scctrl[1] sc_led0st1 LEDCtrl[1]/start[1] scctrl[2] sc_led2st2 LEDCtrl[2]/start[2] scctrl[3] sc_clk12a clk1/clk2a scctrl[4] sc_clk12b clk1/clk2b scctrl[5] sc_clk12c clk1/clk2c scctrl[6] A brief description of signal functionality: start Sensor control signal which is only active at the beginning of a scan cycle in order to initiate the transfer of sensor data clk1 Sensor control signal which toggles at pixel boundary; thus the frequency of this signal is half of pixel frequency clk2 Sensor control signal whose rising and falling edges are programmable within a pixel period; thus the frequency of this signal is the same as the pixel frequency LEDCtrl Light control signal which can either be the envelope or the modulation signal. The rising and falling edge of the envelope and the duty cycle of the modulation are programmable. 7.1.2 Register Description Name/Address Scan Control (ScanCtrl) $01FF8541 Name/Address Scan Control (ScanCtrl) $01FF8540 Bit 15 (Not Used) Bit 14 (Not Used) Bit 7 (Not Used) Bit 6 (Not Used) Bit 13 LEDCtrl[2] enable Bit 5 (Not Used) Bit 12 LEDCtrl[1] enable Bit 11 LEDCtrl[0] enable Bit 4 (Not Used) Bit 3 (Not Used) Bit 10 start[2] enable Bit 2 (Not Used) Bit 9 start[1] enable Bit 1 (Not Used) Bit 8 start[0] enable Default Rst. Value xx000000b Read Value 00h Bit 0 Scan Once Default Rst. Value xxxxxxx0b Read Value 00h Bit 13-11 LEDCtrl[2:0] enable This bit will be synchronized with “cycle_start”, and it is not auto cleared. Bit 10-8 start[2:0] enable This bit will be synchronized with “cycle_start”, and it is not auto cleared. Bit 0 ScanOnce Writing 1 to this bit will initiate an image line scanning operation. This bit will be cleared automatically once the operation has been completed. 100723A Conexant 7-3 MFC2000 Multifunctional Peripheral Controller 2000 Name/Address Scan Control Status (ScanCtrlStat) $01FF8543 Bit 15 (Not Used) Name/Address Scan Control Status (ScanCtrlStat) $01FF8542 Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Hardware Description Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default LEDCtrl[2] LEDCtrl[1] LEDCtrl[0] start[2] start[1] start[0] Rst. Value enable enable enable enable enable enable xx000000b (Read only) (Read only) (Read only) (Read only) (Read only) (Read only) Read Value 00h Bit 5 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) Bit 2 (Not Used) Bit 1 (Not Used) Bit 0 Default Scan Once Rst. Value (Read only) xxxxxxx0b Read Value 00h This register is read only. The value written in ScanCtrl register will be transferred to this register at the beginning of scan cycle. Name/Address VSC IRQ Status (VSCIRQStatus) $01FF8545 Bit 15 (Not Used) Name/Address VSC IRQ Status (VSCIRQStatus) $01FF8544 Bit 1 Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) SPI IRQ Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 10 (Not Used) Bit 3 (Not Used) Bit 2 (Not Used) Bit 9 (Not Used) Bit 1 SPI IRQ Bit 8 (Not Used) Bit 0 MSINT IRQ Default Rst. Value xxh Read Value 00h Default Rst. Value xxxxxx00b Read Value 00h This is the interrupt status which comes from SPI block. The enable for this interrupt can be found in SPI_Config register. Writing 1 to the status bit will clear the interrupt. Bit 0 MSINT IRQ The scanenable must be set in order to have this interrupt active. The timing of this interrupt is programmable within a scan cycle. Writing 1 to the status bit will clear the interrupt. Name/Address Bit 15 Bit 14 Bit 13 VSC Control Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Shift Enable[7:0] Default Rst. Value (VSCCtrl) xxh $01FF8547 Read Value 00h Name/Address VSC Control Bit 7 (Not Used) Bit 6 (Not Used) Bit 5 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) (VSCCtrl) $01FF8546 7-4 Bit 2 Bit 1 VSC on EV ihsclk bus period Bit 0 VSC Mode Default Rst. Value xxxxxxx0b Read Value 01h Conexant 100723A Hardware Description Bit 15-8 MFC 2000 Multifunctional Peripheral Controller 2000 Shift Enable[7:0] These bits are used to shift scanner controller signals by ½ ihsclk. By default, all scanner controller signals are synchronized to the rising edge of ihsclk. By setting this bit, the corresponding scanner controller signal will be shifted by ½ ihsclk, i.e., it will be synchronized to the falling edge of ihsclk. ShiftEnb[7]: to shift ‘sample’ signal ShiftEnb[6:1]: to shift ‘scctrl[6:1]’ signals ShiftEnb[0]: to shift ‘clamp’ signal Bit 2 VSC on EV bus When this bit is set, the “EV_VD[5:0]” bus will be turned into output with the following signals on the bus: EV_VD[5:0] Bit 1 Output signals 5 ScanIAConfig[5] as GPO 4 ScanIAConfig[4] as GPO 3 sample/clk2d 2 clk1/clk2c 1 clk1/clk2b 0 clamp ihsclk period 0: ihsclk period = sysclk period 1: ihsclk period = sysclk period/2) This bit determines the period of ihsclk (the primary clock of VSC). Bit 0 VSC Mode 0: scanner 1: video This mode will determine the source of data. Name/Address Scan Cycle (ScanCycle) Bit 15 Bit 14 (Not Used) (Not Used) Name/Address Bit 7 (Not Used) Scan Cycle (ScanCycle) (Not Used) Bit 13 (Not Used) Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 MSINT IRQ location $01FF8891 Bit 6 Bit 5 Bit 4 (Not Used) Bit 3 Default Rst. Value xxx11111h Read Value 1Fh Bit 2 Bit 1 Scan Cycle (n) MSINTs per Scan Cycle = (n+1) $01FF8890 Bit 0 Default Rst. Value xxx00000b Read Value 00h Bits 12-8 MSINT IRQ location The value written here is double-bufferred. At the beginning of a scan cycle, the value will be transferred into another buffer which is compared to a scan cycle counter. If the value in the buffer matches the value in the counter, then an interrupt will be generated (if it is enabled) at the beginning of the count. Bits 4-0 (n, n = 0-31; MSINTs per scan cycle = n+1) Scan Cycle The value written here is double-buffered. At the beginning of a scan cycle, the value will be transferred into another buffer. 100723A Conexant 7-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Notes 1. Bits [4:0] of this register specify the number of MSINTs (1-32) per Scan Cycle. Total Scan Cycle Period = [MSINT period * (ScanCycle register value + 1)]. 2. The transition from maximum count to 0 determines the start of a scan cycle. 3. Reading bits [4:0] of this register returns the current scan cycle MSINT count. 4. This register must be set up prior to enabling the scan (i.e., setting the “scanenable” bit in ScanConfig register). Name/Address Scan Configuration (ScanConfig) $01FF8893 Bit 15 MSINT IRQ Enable Bit 14 scctrl[6] invert Name/Address Bit 7 (Not Used) Scan Configuration (ScanConfig) $01FF8892 Bit 6 External ADC Enable Bit 13 scctrl[5] invert Bit 5 scctrl[6] select 0: clk1 1: clk2c Bit 12 scctrl[4] invert Bit 11 scctrl[3] invert Bit 4 scctrl[5] select 0: clk1 1: clk2b Bit 3 scctrl[4] select 0: clk1 1: clk2a Bit 10 scctrl[2] invert Bit 2 scctrl[3] select 0: led2 1: start Bit 9 scctrl[1] invert Bit 1 scctrl[2] select 0: led1 1: start Bit 8 scctrl[0] invert Bit 0 Scan Enable Default Rst. Value 00h Read Value 00h Default Rst. Value xx000000b Read Value 00h Bit 15 MSINT IRQ Enable When this bit and ScanEnable bit are set, an interrupt will be generated based on the MSINT IRQ location defined in ScanCycle register. Bit 14-8 scctrl[6:0] invert These bits are used to invert the polarity of the corresponding control signal. Bits 6 External ADC Enable 0 = internal ADC as the source of adc data 1 = external ADC as the source of adc data Bit 5-1 scctrl[6:0] select These bits are used to configure which scanner controller signals should be connected to the pins. Bit 0 Scan Enable This bit must be set in order to activate the scanner controller logic. Name/Address Scan Dot Control (ScanDotCtrl) $01FF8895 Bit 15 Name/Address Scan Dot Control (ScanDotCtrl) $01FF8894 Bit 7 Bit 14 Bit 13 Bit 12 Bit 11 (Not Used) Bit 6 Bit 5 Bit 4 Scan Dot Scaler Value (0-15) n as used in the following equation: (n+1)*IHSCLK Bit 10 Bit 8 Default Rst. Value xxh Read Value 00h Bit 2 Bit 1 Bit 0 Scan Dot Period (1-15) n as used in the following equation: (n+1)*ScanDotScaler Default Rst Value 00h Read Value 00h Bit 3 Bits 7-4 ScanDotScaler (n: 0-15), (n+1) * IHSCLK period Bits 3-0 ScanDotPeriod (n: 1-15), (n+1) * ScanDotScaler Bit 9 Note: ScanDotPeriod = 0 is not allowed. 7-6 Conexant 100723A Hardware Description Name/Address Scan Length (ScanLength) $01FF8897 Name/Address Scan Length (ScanLength) $01FF8896 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 (Not Used) (Not Used) (Not Used) Bit 7 Bit 6 Bit 10 Bit 9 Bit 8 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default Rst. Value 00h Read Value 00h ScanLength[7:0] Bits 12-0 ScanLength[12:0] Default Rst. Value xxx00000b Read Value 00h ScanLength[12:8] This register specifies the number of valid pixels in one scan line. The amount of data stored in a line is ScanLength * 2 bytes. Each pixel is represented by 12-bit data, and it is stored in memory as 2 bytes of data. Note: The internal pixel counter is 14-bit wide. The extra bit is used to match the maximum value of clamp delay and LED edges. It is guaranteed that this counter will not roll-over once it reaches its maximum count. Name/Address Scan Start Delay (ScanStartDelay) $01FF8899 Name/Address Scan Start Delay (ScanStartDelay) $01FF8898 Bit 15 Bit 14 Bit 13 (Not Used) (Not Used) (Not Used) Bit 7 Bit 6 Bits 12-0 Delay[12:0] Bit 12 Bit 5 Bit 11 Bit 4 Bit 3 Delay [7:0] Bit 10 Delay [12:8] Bit 9 Bit 8 Default Rst Value xxx00000b Read Value 00h Bit 2 Bit 1 Bit 0 Default Rst Value 00h Read Value 00h 1.) The ScanStartDelay register control the number of scan dots (pixels) that are to be skipped before valid scanner data is available. For example, if ScanStartDelay = 1, the first valid scanner pixel is dot number 2, the second dot after the beginning of the START pulse. 2.) ScanStart Delay Time = (Delay[12:0] +1) * (ScanDotPeriod). Name/Address Start Edges (StartEdges) $01FF889B Name/Address Start Edges (StartEdges) $01FF889A 100723A Bit 15 (Not Used) Bit 7 Bit 14 (Not Used) Bit 6 Bit 13 (Not Used) Bit 12 (Not Used) Bit 5 Bit 11 (Not Used) Bit 4 Bit 3 Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 8 (Not Used) Bit 1 StartNeg Value (0-15) Start trailing edge position = StartPos Value (0-15) Start leading edge position = (StartNeg+1)*(ScanDotScalerPeriod) (StartPos+1)*(ScanDotScalerPeriod) Conexant Bit 0 Default Rst Value xxh Read Value 00h Default Rst Value 00h Read Value 00h 7-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bits 7-4 StartNeg (0-15) StartNeg establishes the location of the START signal trailing edge. Bits 3-0 StartPos (0-15) StartNeg establishes the location of the START signal leading edge. Name/Address Start Config (StartConfig) $01FF889D Name/Address Bit 15 Bit 14 Bit 13 Guardband Enable for scctrl[6] Guardband Enable for scctrl[5] Guardband Enable for scctrl[4] Bit 7 Bit 6 Bit 5 Bit 12 Bit 11 Bit 4 Bit 3 Offset[3:0] (in terms of pixel period) Start Config (StartConfig) $01FF889C Bit 10 Bit 9 Bit 8 Guardband[4:0] (in terms of pixel period) Bit 2 Bit 1 Default Rst. Value 00h Read Value 00h Bit 0 Length[3:0] (in terms of pixel period) Default Rst. Value xxxxxxx0b Read Value 00h Bit 15-13 Guardband Enable for scctrl[6:4] When a guardband is enabled, then the corresponding control signal will not change (will be “frozen”) for the duration specified by “guardband” in bit 12-8. Bit 12-8 Guardband[4:0] Some scanner requires a quiet period while start pulse is active. Within this quiet period, only the start pulse will be toggling while other control signals are prevented from toggling. The duration of this period is determined by guardband * pixelperiod. Bit 7-4 Offset[3:0] The start pulse can be moved with respect to the start of scan cycle by this offset value which is expressed in terms of pixel period. Bit 3-0 Length[3:0] The duration of the start pulse is programmable according to this “Length” value. Start pulse duration is [length + 1] * pixel_period Name/Address Clk2a Edges (Clk2aEdges) $01FF889F Name/Address Clk2a Edges (Clk2aEdges) $01FF889E Bit 15 (Not Used) Bit 7 Bit 14 (Not Used) Bit 6 Bit 13 (Not Used) Bit 5 Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 Clk2aNeg Value (0-15) Bit 3 Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Clk2aPos Value (0-15) Bit 8 (Not Used) Bit 0 Default Rst Value xxh Read Value 00h Default Rst Value 00h Read Value 00h Bits 7-4 Clk2aNeg Clk2aNeg establishes the trailing edge of the Clk2a signal relative to the start of each dot period, and is specified in ScanDotScaler Clock periods. Bits 3-0 Clk2aPos Clk2aPos establishes the leading edge of the Clk2a signal relative to the start of each dot period, and is specified in ScanDotScaler Clock periods. 7-8 Conexant 100723A Hardware Description Name/Address Clk2b Edges (Clk2bEdges) $01FF88A1 Name/Address Clk2b Edges (Clk2bEdges) $01FF88A0 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 (Not Used) Bit 7 Bit 14 (Not Used) Bit 6 Bit 13 (Not Used) Bit 12 (Not Used) Bit 5 Bit 11 (Not Used) Bit 4 Bit 3 Clk2bNeg Value (0-15) Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Clk2bPos Value (0-15) Default Rst Value xxh Read Value 00h Default Rst Value 00h Read Value 00h Bits 7-4 Clk2bNeg Clk2bNeg establishes the trailing edge of the Clk2b signal relative to the start of each dot period, and is specified in ScanDotScaler Clock periods. Bits 3-0 Clk2bPos Clk2bPos establishes the leading edge of the Clk2b signal relative to the start of each dot period, and is specified in ScanDotScaler Clock periods. Name/Address Clk2c Edges (Clk2cEdges) $01FF88A3 Name/Address Clk2c Edges (Clk2cEdges) $01FF88A2 Bit 15 (Not Used) Bit 7 Bit 14 (Not Used) Bit 6 Bit 13 (Not Used) Bit 12 (Not Used) Bit 5 Bit 11 (Not Used) Bit 4 Bit 3 Clk2cNeg Value (0-15) Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Clk2cPos Value (0-15) Default Rst Value xxh Read Value 00h Default Rst Value 00h Read Value 00h Bits 7-4 Clk2cNeg Clk2cNeg establishes the trailing edge of the Clk2c signal relative to the start of each dot period, and is specified in ScanDotScaler Clock periods. Bits 3-0 Clk2cPos Clk2cPos establishes the leading edge of the Clk2c signal relative to the start of each dot period, and is specified in ScanDotScaler Clock periods. Name/Address ADCSample Configuration Bit 15 Mode Bit 14 (Not Used) Bit 13 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 10 (Not Used) Bit 9 (Not Used) Bit 8 00xxxxxxb Read Value 00h (ADCSampleCfg) $01FF88A5 Name/Address ADC Sample Configuration Bit 7 Bit 6 Bit 5 SampleNeg Value (0-15) Bit 4 (ADCSampleCfg) $01FF88A4 100723A Default (Not Used) Rst Value Conexant Bit 3 Bit 2 Bit 1 SamplePos Value (0-15) Bit 0 Default Rst Value 00h Read Value 00h 7-9 MFC2000 Multifunctional Peripheral Controller 2000 Bits 15 Mode Hardware Description This mode will only affect the number of sample pulses and not the number of sampled data to be stored into memory. 0 = sampling continuously as long as ScanEnable = 1 1 = sampling valid pixels only Bits 7-4 SampleNeg SampleNeg establishes the trailing edge of the Sample signal relative to the start of each dot period, and is specified in ScanDotScaler clock periods. Bits 3-0 SamplePos SamplePos establishes the leading edge of the Sample signal relative to the start of each dot period, and is specified in ScanDotScaler clock periods. Name/Address Clamp Control (ClampCtrl) Bit 15 Clamp Mode $01FF88A7 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 (Not Used) Bit 9 (Not Used) Bit 8 (Not Used) External External External Clamp Clamp Clamp Clamp 0xxxxxxxb Enable Enable Guardband Invert Read Value Enable Name/Address Clamp Control (ClampCtrl) $01FF88A6 Bit 15 Default Rst Value Internal Bit 7 Bit 6 Bit 5 00h Bit 4 (Not Used) Bit 3 Bit 2 Bit 1 Bit 0 ClampLengh[6:0] Default Rst Value x0000000b Read Value 00h ClampMode (1 = line–based, 0 = pixel–based) Setting the ClampMode bit causes line-based clamping to be used. Clearing this bit causes pixel-based clamping to be used. For line–based clamping, the clamp signal is enabled for the number of dots specified in ClampLength register, and can occur either before or after the valid pixel data, as selected by the ClampDelay register. For pixel–based clamping, the clamp signal runs continuously throughout the entire scanline. Bits 6-0 ClampLength[6:0] This value specifies the number of pixels to be used for line–based clamping. Note: Both internal and external clamp share the same control signals for ‘shift’ and ‘delay’. Name/Address Bit 15 Clamp Delay Clamp (ClampDelay) Position $01FF88A9 Name/Address Clamp Delay (ClampDelay) $01FF88A8 7-10 Bit 7 Bit 14 (Not Used) Bit 13 Bit 6 Bit 5 Bit 12 Bit 11 Bit 10 Clamp Delay[13:8] Bit 9 Bit 8 Bit 4 Bit 3 Bit 1 Bit 0 Clamp Delay [7:0] Conexant Bit 2 Default Rst Value 0x000000b Read Value 00h Default Rst Value 00h Read Value 00h 100723A Hardware Description Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Clamp Position (only valid for line–based clamping) Setting the ClampPosition bit causes the ClampDelay value to be applied from the start of the scanline (i.e., during the ScanStartDelay time). Clearing this bit causes the ClampDelay value to be applied from the first valid pixel of the scanline (i.e., after the ScanStartDelay has been accounted for). Bits 13-0 Clamp Delay[13:0] (only valid for line–based clamping) The ClampDelay register control the number of scan dots (pixels) that are to be skipped before enabling the clamp signal for the number of pixels specified in ClampLength register. Note: If ClampPosition bit = 0 and a new scanline is started before the ClampDelay value has been satisfied, the clamp signal will not activate. The same is true if ClampPosition bit = 1 and the ScanStartDelay value is less than the ClampDelay value. Name/Address Clamp Edges (ClampEdges) $01FF88AB Name/Address Clamp Edges (ClampEdges) $01FF88AA Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Bit 8 Default (Not Used) Rst Value xxh Read Value 00h Bit 7 Bit 6 Bit 5 Bit 4 ClampNeg Value (0-15) Bit 3 Bit 2 Bit 1 ClampPos Value (0-15) Bit 0 Default Rst Value 00h Read Value 00h Bits 7-4 ClampNeg ClampNeg establishes the trailing edge of the Clamp signal relative to the start of each dot period, and is specified in ScanDotScaler clock periods. Bits 3-0 ClampPos ClampPos establishes the leading edge of the Clamp signal relative to the start of each dot period, and is specified in ScanDotScaler clock periods. 100723A Conexant 7-11 MFC2000 Multifunctional Peripheral Controller 2000 Name/Address Clk2d Control Hardware Description Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Select (Not Used) (Not Used) Shift Delay[1] Delay[0] Invert (Clk2dCtrl) Bit 8 Default Guardband Rst. Value Enable $01FF88C5 xxx00000b Read Value 00h Name/Address Bit 7 Bit 6 Clk2d Control Bit 5 Bit 4 Bit 3 Negedge[3:0] Bit 2 Bit 1 Bit 0 PosEdge[3:0] Default Rst. Value (Clk2dCtrl) x0h $01FF88C4 Read Value 00h Bit 15 Select 0 = selecting sample signal 1 = clk2d Bit 12 Shift 0 = clk2d synchronous to the rising edge of ihsclk 1 = to the falling edge of ihsclk Bit 11-10 Delay programmable delay amount 0 = no delay 1 = 1 unit delay 2 = 2 unit delay 3 = 3 unit delay Bit 9 Invert 0 = normal 1 = invert) Bit 8 Guardband Enable 0 = no guardband 1 = apply guardband Bit 7-4 NegEdge position Bit 3-0 PosEdge position Name/Address Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 NegEdge[7:0] Trailing edge position = (NegEdge[7:0] * 64) pixels before/after scan start delay LEDCtrl[0] Edges (LED0Edges) 01FF88AD Bit 7 LEDCtrl[0] Edges (LED0Edges) 01FF88AC Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 PosEdge[7:0] Leading edge position = (PosEdge[7:0] * 64) pixels before/after scan start delay Default Rst. Value 00h Read Value 00h Bit 0 Default Rst. Value 00h Read Value 00h Bits 15-8 NegEdge[7:0] NegEdge establishes the trailing edge of the envelope for LEDCtrl signal and is specified in 64 pixel clock periods. Bits 7-0 PosEdge establishes the leading edge of the envelope for LEDCtrl signal and is specified in 64 pixel clock periods. 7-12 PosEdge[7:0] Conexant 100723A Hardware Description Name/Address MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 NegEdge[7:0] Trailing edge position = (NegEdge[7:0] * 64) pixels before/after scan start delay LEDCtrl[1] Edges (LED1Edges) 01FF88AF Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PosEdge[7:0] Leading edge position = (PosEdge[7:0] * 64) pixels before/after scan start delay LEDCtrl[1] Edges (LED1Edges) 01FF88AE Default Rst. Value 00h Read Value 00h Default Rst. Value 00h Read Value 00h Bits 15-8 NegEdge[7:0] NegEdge establishes the trailing edge of the envelope for LEDCtrl signal and is specified in 64 pixel clock periods. Bits 7-0 PosEdge establishes the leading edge of the envelope for LEDCtrl signal and is specified in 64 pixel clock periods. PosEdge[7:0] Name/Address Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 NegEdge[7:0] Trailing edge position = (NegEdge[7:0] * 64) pixels before/after scan start delay LEDCtrl[2] Edges (LED2Edges) 01FF88B1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PosEdge[7:0] Leading edge position = (PosEdge[7:0] * 64) pixels before/after scan start delay LEDCtrl[2] Edges (LED2Edges) 01FF88B0 Default Rst. Value 00h Read Value 00h Default Rst. Value 00h Read Value 00h Bits 15-8 NegEdge[7:0] NegEdge establishes the trailing edge of the envelope for LEDCtrl signal and is specified in 64 pixel clock periods. Bits 7-0 PosEdge establishes the leading edge of the envelope for LEDCtrl signal and is specified in 64 pixel clock periods. PosEdge[7:0] Name/Address Bit 15 LED0 PWM Config (Not Used) (LED0PWM) $01FF88B3 Name/Address LED0 PWM Config (LED0PWM) $01FF88B2 100723A Bit 7 Bit 14 Bit 13 Bit 12 Bit 11 (Not Used) (Not Used) (Not Used) (Not Used) Bit 6 Bit 5 Bit 4 Bit 3 duty cycle[7:0] Conexant Bit 10 Bit 9 Bit 8 clock divider[2:0] Bit 2 Bit 1 Default Rst. Value xxxxx000b Read Value 00h Bit 0 Default Rst. Value 00h Read Value 00h 7-13 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bits 10-8 clock divider[2:0] The clock used for PWM is scaled according to “clock divider” setting. Bits 7-0 The period of PWM is divided into 256. The high time of PWM is determined by “duty cycle”. duty cycle[7:0] Min frequency (clk_div = 7) ihsclk = 50 ns pwm clk = T(ihsclk ) * (clk_div + 1) = 50 ns * (7 + 1) = 400 ns pwm period = 400 ns * 256 = 102,400 ns = 102.4 us (9.8 KHz) Max frequency (clk_div = 0) ihsclk = 50 ns pwm clk = ihsclk = 50 ns pwm period = 50 ns * 256 = 12.8 us (78.1 KHz) Note: In order to have a non-modulated signal, the duty cycle must be set to 0xFF. Name/Address Bit 15 LED1 PWM Config (Not Used) (LED1PWM) $01FF88B5 Name/Address Bit 7 Bit 14 Bit 13 Bit 12 Bit 11 (Not Used) (Not Used) (Not Used) (Not Used) Bit 6 Bit 5 Bit 4 Bit 3 LED1 PWM Config (LED1PWM) $01FF88B4 Bit 10 Bit 9 Bit 8 clock divider[2:0] Bit 2 Bit 1 Default Rst. Value xxxxx000b Read Value 00h Bit 0 duty cycle[7:0] Default Rst. Value 00h Read Value 00h Bits 10-8 clock divider[2:0] The clock used for PWM is scaled according to “clock divider” setting. Bits 7-0 The period of PWM is divided into 256. The high time of PWM is determined by “duty cycle”. duty cycle[7:0] Note: In order to have a non-modulated signal, the duty cycle must be set to 0xFF. Name/Address Bit 15 LED2 PWM Config (Not Used) (LED2PWM) $01FF88B7 Name/Address LED2 PWM Config (LED2PWM) $01FF88B6 7-14 Bit 7 Bit 14 Bit 13 Bit 12 Bit 11 (Not Used) (Not Used) (Not Used) (Not Used) Bit 6 Bit 5 Bit 4 Bit 3 duty cycle[7:0] Conexant Bit 10 Bit 9 Bit 8 clock divider[2:0] Bit 2 Bit 1 Default Rst. Value xxxxx000b Read Value 00h Bit 0 Default Rst. Value 00h Read Value 00h 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bits 10-8 clock divider[2:0] The clock used for PWM is scaled according to “clock divider” setting. Bits 7-0 The period of PWM is divided into 256. The high time of PWM is determined by “duty cycle”. duty cycle[7:0] Note: In order to have a non-modulated signal, the duty cycle must be set to 0xFF. Name/Address LEDCtrl Config Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Bit 8 Default (Not Used) Rst. Value (LEDConfig) xx000111b $01FF88B9 Read Value 07h Name/Address LEDCtrl Config (LEDConfig) $01FF88B8 Bits 5-3 Bit 7 (Not Used) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 (Not Used) LEDCtrl[2] LEDCtrl[1] LEDCtrl[0] LEDCtrl[2] sync_select sync_select sync_select position LEDCtrl[2:0] sync_select Bit 1 LEDCtrl[1] position Bit 0 LEDCtrl[0] position Default Rst. Value xx000000b Read Value 00h 1 = sync is selected, ignoring LED PWM config & LED Edges settings 0 = normal LEDCtrl When sync_select bit is set and the LED is enabled (by setting the corresponding bit in ScanCtrl register), then the LEDCtrl will be active from the beginning of scancycle until the end of scancycle. In this mode of operation, the corresponding LED PWM & LED Edges settings are ignored. Once the LED is disabled, then at the end of scancycle, the LEDCtrl will not be active anymore. In other words, by setting sync_select bit, the LEDCtrl is outputing the LED enabled which is synchronized with the cyclestart. When sync_select bit is clear and the LED is enabled, then the LEDCtrl operates in normal mode, which depends on the LED PWM & LED Edges settings. Bits 2-0 LEDCtrl[2:0] position 1 = before ScanStartDelay 0 = after ScanStartDelay This position setting only affects the leading edge of LEDCtrl envelope. If the place bit is reset, then the LEDCtrl will be activated after valid pixel. Otherwise, if the place bit is set, then LEDCtrl can be activated right after scancycle. Bit 15 Bit 14 Scan IA Config Name/Address ADC (Not Used) (ScanIAConfig) enable Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 xxx00000b $01FF88BB Name/Address Scan IA Config (ScanIAConfig) $01FF88BA 100723A Default OffsetSel[5] OffsetSel[4] OffsetSel[3] OffsetSel[2] OffsetSel[1] OffsetSel[0] Rst. Value Read Value 00h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 (Not Used) (Not Used) GPO GPO GainSel[3] GainSel[2] GainSel[1] GainSel[0] on on EV_VD[5] EV_VD[4] Conexant Default Rst. Value x0h Read Value 00h 7-15 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description In order to apply the content of this register to the analog die, the content must be sent serially by writing to the ‘ADCSerialCmd’ register. Please refer to the ‘ADCSerialCmd’ register description for more information. Bit 15 ADC enable This bit is used to enable the internal adc. The ADC circuit by default is disabled. Bit 12-8 OffsetSel[4:0] An analog subtracter is used in conjunction with OffsetSel in order to remove the DC offset from scanner signal. Bit 5 GPO on EV_VD[5] When ‘VSC on EV bus’ bit, i.e., bit 2 of VSCCtrl register, is set, then EV_VD[7:0] bus will function as output.. EV_VD[5] output is connected to this bit to function as general purpose output (GPO). Bit 4 GPO on EV_VD[4] When ‘VSC on EV bus’ bit, i.e., bit 2 of VSCCtrl register, is set, then EV_VD[7:0] bus will function as output.. EV_VD[4] output is connected to this bit to function as general purpose output (GPO). Bit 3-0 GainSel[3:0] GainSel is connected to a programmable gain amplifier to adjust the gain of the scanner signal. Note: This register is double-buffered. The value written into this register will not be applied to SIA immediately. Rather, the value will be applied after the start of scancycle. Reading this register reflects the value applied to SIA. Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 ADCSerialCmd Name/Address Send (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Bit 8 (ADCSerialCmd) Status xxh $01FF854F (read Read Value 00h only) Name/Address ADCSerialCmd Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 (Not Used) (Not Used) (Not Used) (Not Used) (reserved) Command Transmit Transmit Rst. Value ‘0’ Type Mode[1] Mode[0] xxxx0000b (ADCSerialCmd) $01FF854E Bit 15 Default (Not Used) Rst. Value Default Read Value 00h Send Status (read only) This bit indicates one of the following statuses: waiting for an event to occur, as selected by ‘transmit mode[1:0]’, prior to sending the serial command sending serial command is in progress. The wait for the event can be aborted by clearing ‘scanenable’ bit on ‘ScanConfig’ register, and the command will not be sent. Bit 15 reserved It is important to always write ‘0’ to this bit. Bit 2 Command Type Command Type Function 0 To send ‘offset’ and ‘gain’ settings as stored in ‘ScanIAConfig’ register 1 To send ‘ADC enable’ bit as stored in ‘ScanIAConfig’ register 7-16 Conexant 100723A Hardware Description Bit 1-0 MFC 2000 Multifunctional Peripheral Controller 2000 Transmit Mode[1:0] Prior to writing to this register, check the ‘Send Status’ bit, and make sure that this bit is clear. If this bit is set, then writing to this register will be ignored. If this bit is clear, then writing to this register will cause the following action based on the ‘Transmit Mode’: Transmit Mode Time to send the serial data 0 right away 1 at the beginning of a scan cycle; no ‘scanonce’ operation is involved 2 at the end of valid pixel (i.e. the last valid pixel in a line); ‘scanonce’ operation is involved 3 at the next msint Name/Address Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default Scan Control sample Scctrl[6] scctrl[5] scctrl[4] Rst. Value Delay delay[1:0] Delay[1:0] delay[1:0] delay[1:0] xx000000b (ScanCtrlDelay) Read Value 00h $01FF88BD Name/Address Scan Control Delay Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default scctrl[3] Scctrl[2] scctrl[1] clamp Rst. Value delay[1:0] Delay[1:0] delay[1:0] delay[1:0] 00h (ScanCtrlDelay) Read Value 00h $01FF88BC Bit 15-14 sample delay This setting controls the delay for ‘sample’ signal. Bit 13-12 scctrl[6] delay This setting controls the delay for ‘scctrl[6]’ signal. Bit 11-10 scctrl[5] delay This setting controls the delay for ‘scctrl[5]’ signal. Bit 9-8 scctrl[4] delay This setting controls the delay for ‘scctrl[4]’ signal. Bit 7-6 scctrl[3] delay This setting controls the delay for ‘scctrl[3]’ signal. Bit 5-4 scctrl[2] delay This setting controls the delay for ‘scctrl[2]’ signal. Bit 3-2 scctrl[1] delay This setting controls the delay for ‘scctrl[1]’ signal. Bit 1-0 clamp delay This setting controls the delay for ‘clamp’ signal. Name/Address ADC Config (ADCConfig) $01FF88BF Bit 15 Bit 12 Bit 11 Bit 10 Bit 9 AdclkPos Value (0-15) Bit 8 Default Rst. Value 00h Read Value 00h Name/Address ADC Config (ADCConfig) $01FF88BE Bit 7 Bit 6 Bit 5 Bit 4 Digital Data Capture Position [3:0] (0-15) Bit 3 Bit 2 Bit 1 Data Latency[3:0] (0-15) Bit 0 Default Rst. Value 00h Read Value 00h 100723A Bit 14 Bit 13 AdclkNeg Value (0-15) Conexant 7-17 MFC2000 Multifunctional Peripheral Controller 2000 Bit 15-12 AdclkNeg Hardware Description (only valid when internal ADC is selected) AdclkNeg establishes the trailing edge of the adclk signal relative to the start of each dot period, and is specified in terms of ScanDotScaler clock periods. Bit 11-8 AdclkPos (only valid when internal ADC is selected) AdclkPos establishes the leading edge of the adclk signal relative to the start of each dot period, and is specified in terms of ScanDotScaler clock periods. Bit 7-4 Digital Data Capture Position (valid for external ADC only) This setting indicates where the digital data from ADC should be captured within a pixel period, and is specified in terms of ScanDotScaler clock periods. Bit 3-0 Data Latency (valid with either internal or external ADC) This setting indicates the latency or pipeline delay as required by ADC, and is expressed in the number of pixel clocks. Important note on how to program adclk & adsample when an internal ADC is selected: 1. The location and the width of adsample must be established first according to the scanner requirement (the analog signal is being sampled while adsample = 1, and at the falling edge of adsample, the signal is stored into an internal capacitor. While adsample = 0, the signal value is being held in the capacitor.) 2. Once adsample has been programmed properly, the adclk must be configured according to the following rule: a) adclk must be low while adsample is high 7-18 Conexant 100723A Hardware Description 7.1.3 MFC 2000 Multifunctional Peripheral Controller 2000 Timing msintcy scanenb write '1' to EnableScan bit in ScanConfig1 register current cycle 0 1 2 3 0 scancycle = 3 cycle_start indicates the beginning of a scan cycle start[0] enb write '1' to Start[0]enable bit in ScanCtrl register (write to ScanCtrl reg) start[0] enb_status synchonized to cycle_start (read from ScanCtrl Status reg) startposedge startnegedge start[0] startoffset clamp mode = 1 place = 1 clamp mode = 1 place = 0 startlength clampposedge clampnegedge ClampDelay ScanStartDelay clamp ClampLength clampposedge clampnegedge ClampDelay ClampLength mode = 0 place = x clampposedge clampnegedge sampleposedge samplenegedge a d s a m p l e mode = 0 ScanStartDelay ScanLength pixels sampleposedge samplenegedge a d s a m p l e mode = 1 clk1 clk2aposedge clk2anegedge clk2a Figure 7-2. Untitled Timing Diagram 100723A Conexant 7-19 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description firmware change the number of msint in a scancycle 4 setup.scancycles 3 4 scancycles_sync sccyc_nxt 2 1 sccyc_ctr 3 3 2 1 4 3 0 4 0 sccyc_count one msint period sccyc_reset firmware change the location of msint irq 3 setup.msintirqloc 2 3 msintirqloc_sync 2 scanirq_set (assuming scanirqenb = '1') scanirq_cur set by hardware clear by firmware (writing to bit 0 of VSCIRQStatus register) Figure 7-3. Untitled Timing Diagram msintcy F/W writes to ScanCycle register Scan Cycle (1 st buffer) 3 2 H/W synchonizes the 1st and 2 nd buffer at the beginning of a scan cycle Scan Cycle (2 nd buffer) 3 2 The beginning of a scan cycle cycle_start Scan Cycle (counter) 2 3 0 1 2 0 1 Figure 7-4. Untitled Timing Diagram 7-20 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 ihsclk 50 ns dotscaler_ctr 0 1 0 1 0 1 0 1 0 1 0 1 scan dot scaler =1 dotperiod_ctr 2 0 1 2 0 1 scan dot period = 2 pixaddr_ctr 99 100 101 one pixel clk1 toggling every pixel clk2a clk2apos = 1 clk2aneg = 2 Figure 7-5. Untitled Timing Diagram Note: The rising and falling edges timing of clk2a also applies to clk2b, clk2c, start, clamp, and adsample. 100723A Conexant 7-21 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description cycle_start write '1' write '0' LEDCtrl[0]enb (write to ScanCtrl reg) synchronized to cycle_start LEDCtrl[0]enb_status (read from ScanCtrl Status reg) LED0PWMClkDiv[2:0] LED0PWMDutyCycle[7:0] LEDCtrl[0] (place = 0) LED0PosEdge ScanStartDelay LED0NegEdge write '1' write '0' LEDCtrl[1]enb (write to ScanCtrl reg) synchronized to cycle_start LEDCtrl[1]enb_status (read from ScanCtrl Status reg) LED1PWMClkDiv[2:0] LED1PWMDutyCycle[7:0] LEDCtrl[1] (place = 0) LED1PosEdge ScanStartDelay LED1NegEdge write '1' write '0' LEDCtrl[2]enb (write to ScanCtrl reg) synchronized to cycle_start LEDCtrl[2]enb_status (read from ScanCtrl Status reg) LED2PWMDutyCycle[7:0] LED2PWMClkDiv[2:0] LEDCtrl[2] (place = 0) LED2PosEdge ScanStartDelay LED2NegEdge vsc_irq time write to vsc_irq clear register write ScanCtrl[13:11] with 001b vsc_irq comes write to vsc_irq clear register write ScanCtrl[13:11] with 010b vsc_irq comes write to vsc_irq clear register write ScanCtrl[13:11] with 100b vsc_irq comes [led-time.vsd] Figure 7-6. Untitled Timing Diagram 7-22 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 ScanCycle[4:0] = 4 (determines the time for scanning a line) msint scCycCur[4:0] 0 0 2 4 3 0 start pixeladr[13:0] 0 1 ScanStartDelay[13:0] (in pixel unit) HiZ LEDCtrl[0] t=0 3 0 1 2047 2048 LED0Pos[7:0] xxxx * 64 LED0Neg[7:0] 0 * 64 LED on-time (no pwm) * 64 LED0Neg[7:0] LED0pad_en = 1 (default value from reset) 4048 LED0Pos[7:0] ScanLength[12:0] (Number of valid pixels) LED0pad_en = 0 2049 * 64 Figure 7-7. Untitled Timing Diagram Notes: 1. MSInt_period = (msintPeriod + 1) * 125 us msintPeriod[5:0] is set in MSINTPeriod register (assuming that value in 125usPrescaler register has been adjusted to obtain 125 us period) 2. ScanCycle_period = (ScanCycle + 1) * MSInt_period 3. ScanCycle in conjunction with MSIntPeriod must be selected so that: ihsclk pwmclk clk_div = 1 programmable pwmpr_ctr 255 0 1 253 254 255 0 pwm duty_cycle = 253 * pwmclk_period programmable fixed period = 256 * pwmclk_period Figure 7-8. Untitled Timing Diagram 100723A Conexant 7-23 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description msintcy MSINT IRQ loc 3 current cycle 3 0 1 2 3 0 ScanCycle = 3 scan_irq generated here because MSINT IRQ location = 3 & current cycle = 3 cleared by writing '1' to bit 0 of VSCIRQStatus register Figure 7-9. Untitled Timing Diagram The scanner controller will issue adc_start, adc_drdy, and adc_stop as follows: 1 adc_dclk wide adc_start adc_drdy 1 adc_dclk wide adc_stop 1 adc_dclk or more Figure 7-10. Untitled Timing Diagram External ADC timing summary National: ADC 12662 Vin S/H min = 5 ns max = 400 ns Data[11:0] t conv = 510 - 660 ns pipeline delay (latency) = 1 cycles [adc-national-adc12662.vsd] Figure 7-11. Untitled Timing Diagram 7-24 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Analog: AD 9220 S1 S4 S2 Vin S3 min = 45 ns CLK min = 45 ns hold sample min = 100 ns Data[11:0] Data 1 8 ns pipeline delay (latency) = 3 clk cycles Figure 7-12. Untitled Timing Diagram Linear: LTC 1412 Vin CONVST min = 20 ns Data[11:0] t conv = 240-283 ns pipeline delay (latency) = 1 cycles Figure 7-13. Untitled Timing Diagram 7.1.4 Firmware Operation In order to obtain the optimal digital data, the dynamic range of analog signal must be maximized. In order to maximize the dynamic range of scanner signal, the duration of the light exposure on the sensor must be just right. If it is too short, then the signal will be too low; and if it is too long, then the signal will be saturated. The amount of light exposure can be controlled by having programmable pulse width modulation on the LED control. Typically, the signal from the sensor has a dc offset. This offset must be removed, and the resulting signal can be amplified to restore the dynamic range. Examples of how to setup the registers for various scanners are shown below. These setups are configured for the fastest scanning operation. (only setup, not operation registers are shown) Notes: 1.) The value for scan cycle depends on how msint signal is configured. 2.) The LED setting may need adjustment according to the proper light intensity for different color. 100723A Conexant 7-25 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Manufacturer ROHM Interface: Part # IA3008 – ZE22 Scanner Type CIS RGND Red LED control LEDCtrl[0] Resolution 300 dpi GGND Green LED control LEDCtrl[1] Pixels/line 2560 BGND Blue LED control LEDCtrl[2] Scan time (color) 9 ms/line SI Start pulse start[0] Scan time (B/W) 1.8~4.5 ms/line CLK Main clock clk2a Data Rate 1.5 MHz (max) Ao Scanner signal vin Main clock ‘H’ duty 25 – 50 % Description MFC2000 Timing: 50 ns ihsclk 0 dotscaler_ctr dotperiod_ctr 13 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 clk2a start[0] PixelTime = 700 ns LineTime = 3 ms start[0] no delay scanin envelope of analog signal SigTime = 1.792 ms ExpTime =1.12 ms LEDCtrl[0] can be modulated 0 2560 2624 4224 pixel counter 4285 [Rohm–IA3008–ZE22.vsd] Figure 7-14. Untitled Timing Diagram 7-26 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 7-1. Register setup for Rohm–IA3008–ZE22 Register Name ScanConfig ScanDotControl StartConfig StartEdges Bits Name Value scctrl[6:0] invert 0 scctrl[6:2] select xx100b Scan Dot Scaler[3:0] 0 Scan Dot Period[3:0] 13 GuardbandEnb[6:4] 0 Guardband[4:0] n/a Offset[3:0] 0 Length[3:0] 0 StartPos[3:0] 0 StartNeg[3:0] 13 ScanStartDelay Delay[12:0] 0 Clk2aEdges Clk2aPos[3:0] 7 Clk2aNeg[3:0] 12 Clk2bEdges Clk2cEdges ADCSampleCfg ADCConfig Clk2bPos[3:0] n/a Clk2bNeg[3:0] n/a Clk2cPos[3:0] n/a Clk2cNeg[3:0] n/a SamplePos[3:0] 9 SampleNeg[3:0] 11 AdclkPos[3:0] 0 AdclkNeg[3:0] 6 DataPlace[3:0] 10 DataLatency[3:0] ClampCtrl ClampDelay 100723A ClampMode n/a ClampEnb 0 ClampLength[6:0] n/a ClampPosition n/a ClampDelay[13:0] n/a ClampEdges ClampPos[3:0] n/a ClampNeg[3:0] n/a LEDConfig LEDCtrl sync_sel[2:0] 0 LEDCtrl place[2:0] 0 LED0Edges LED0Pos[7:0] 41 LED0Neg[7:0] 66 LED1Edges LED1Pos[7:0] 41 LED1Neg[7:0] 66 LED2Edges LED2Pos[7:0] 41 LED2Neg[7:0] 66 ScanLength ScanLength[12:0] 2560 ScanCyles ScanCycle[4:0] 3 ms Conexant 7-27 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Manufacturer DYNA Interface: Part # DL507–07UAH Scanner Type CIS LEDR Red LED control LEDCtrl[0] Resolution 300 dpi LEDG Green LED control LEDCtrl[1] Pixels/line 2552 LEDB Blue LED control LEDCtrl[2] Scan time (color) 7.5 ms/line SI Start pulse start[0] CLK Main clock clk2a SIG Scanner signal vin Scan time (B/W) Data Rate 2.0 MHz (typ) Main clock ‘H’ duty 25 % (typ) Description MFC2000 Timing: 50 ns ihsclk 0 dotscaler_ctr dotperiod_ctr 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 clk2a start[0] PixelTime = 500 ns LineTime = 2.5 ms start[0] delay of 2 pixels scanin envelope of analog signal SigTime = 1.276 ms ExpTime =1.12 ms LEDCtrl[0] can be modulated 0 2552 2560 4992 pixel counter 5000 Figure 7-15. Untitled Timing Diagram 7-28 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 7-2. Register setup for Dyna–DL507–07UAH Register Name ScanConfig ScanDotControl StartConfig Bits Name Value scctrl[6:0] invert 0 scctrl[6:2] select xx100b Scan Dot Scaler[3:0] 0 Scan Dot Period[3:0] 9 GuardbandEnb[6:4] 0 Guardband[4:0] n/a Offset[3:0] 0 Length[3:0] 0 StartEdges StartPos[3:0] 0 StartNeg[3:0] 9 ScanStartDelay Delay[12:0] 0 Clk2aEdges Clk2aPos[3:0] 6 Clk2aNeg[3:0] 8 Clk2bEdges Clk2bPos[3:0] n/a Clk2bNeg[3:0] n/a Clk2cEdges Clk2cPos[3:0] n/a Clk2cNeg[3:0] n/a ADCSampleCfg SamplePos[3:0] ADCConfig AdclkPos[3:0] SampleNeg[3:0] AdclkNeg[3:0] DataPlace[3:0] DataLatency[3:0] ClampCtrl n/a 0 ClampLength[6:0] n/a ClampDelay ClampPosition n/a ClampDelay[13:0] n/a ClampEdges ClampPos[3:0] n/a ClampNeg[3:0] n/a LEDConfig LED0Edges LED1Edges 100723A ClampMode ClampEnb LEDCtrl sync_sel[2:0] 0 LEDCtrl place[2:0] 0 LED0Pos[7:0] 40 LED0Neg[7:0] 78 LED1Pos[7:0] 40 LED1Neg[7:0] 78 LED2Edges LED2Pos[7:0] 40 LED2Neg[7:0] 78 ScanLength ScanLength[12:0] 2552 ScanCyles ScanCycle[4:0] 2.5 ms Conexant 7-29 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Manufacturer Mitsubishi Interface: Part # GT3R216 Scanner Type CIS LEDr Red LED control LEDCtrl[0] Resolution 300 dpi LEDg Green LED control LEDCtrl[1] Pixels/line 2552 LEDb Blue LED control LEDCtrl[2] Scan time (color) 7.5 ms/line SI Start pulse start[0] Scan time (B/W) 1.5 ms/line CLK Main clock clk2a Data Rate 3 – 4 MHz SIG Scanner signal vin Main clock ‘H’ duty 20 – 30 % Description MFC2000 Timing: 50 ns ihsclk 0 dotscaler_ctr dotperiod_ctr 4 0 1 2 3 4 0 1 2 3 4 clk2a start[0] PixelTime = 250 ns LineTime = 2.5 ms start[0] delay of 1 pixel envelope of analog signal scanin SigTime = 638 µs LEDCtrl[0] can be modulated pixel counter 0 2552 2560 9920 Figure 7-16. Untitled Timing Diagram 7-30 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 7-3. Register setup for Mitsubishi-GT3R216 Register Name ScanConfig ScanDotControl StartConfig StartEdges ScanStartDelay Clk2aEdges Clk2bEdges Clk2cEdges ADCSampleCfg Bits Name Value scctrl[6:0] invert 0 scctrl[6:2] select xx100b Scan Dot Scaler[3:0] 0 Scan Dot Period[3:0] 4 GuardbandEnb[6:4] 0 Guardband[4:0] n/a Offset[3:0] 0 Length[3:0] 0 StartPos[3:0] 0 StartNeg[3:0] 4 Delay[12:0] Clk2aPos[3:0] 4 Clk2aNeg[3:0] 4 Clk2bPos[3:0] n/a Clk2bNeg[3:0] n/a Clk2cPos[3:0] n/a Clk2cNeg[3:0] n/a SamplePos[3:0] SampleNeg[3:0] ADCConfig AdclkPos[3:0] AdclkNeg[3:0] DataPlace[3:0] DataLatency[3:0] ClampCtrl ClampDelay 100723A ClampMode n/a ClampEnb 0 ClampLength[6:0] n/a ClampPosition n/a ClampDelay[13:0] n/a ClampEdges ClampPos[3:0] n/a ClampNeg[3:0] n/a LEDConfig LEDCtrl sync_sel[2:0] 0 LEDCtrl place[2:0] 0 LED0Edges LED0Pos[7:0] 40 LED0Neg[7:0] 155 LED1Edges LED1Pos[7:0] 40 LED1Neg[7:0] 155 LED2Edges LED2Pos[7:0] 40 LED2Neg[7:0] 155 ScanLength ScanLength[12:0] 2552 ScanCyles ScanCycle[4:0] 2.5 ms Conexant 7-31 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Manufacturer TOSHIBA Interface: Part # CIPS218MC300 Scanner Type CIS pkg w/ CCD •LEDR Red LED control LEDCtrl[0] Resolution 300 dpi •LEDG Green LED control LEDCtrl[1] Pixels/line 2576 •LEDB Blue LED control LEDCtrl[2] Scan time (color) •TR Start pulse start[0] Scan time (B/W) •M Main clock clk2a Description MFC2000 Data Rate 0.1 – 2.5 MHz •RS Clock clk2b Main clock ‘H’ duty 50 % •RNC Clock clk2c Timing: 50 ns ihsclk 0 dotscaler_ctr dotperiod_ctr 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 clk2a clk2b clk2c PixelTime = 400 ns clk2a 50 ns start[0] 50 ns 4 clocks (min) LineTime =2 ms start[0] 17 dummy pixels scanin envelope of analog signal S i g T i m e = 1 . 0 3 0 4 ms ExpTime = 1.48 ms LEDCtrl[0] can be modulated 0 2576 4992 pixel counter 5000 Figure 7-17. Untitled Timing Diagram 7-32 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 7-4. Register Setup for Toshiba–CIPS218MC300 Register Name ScanConfig ScanDotControl StartConfig StartEdges ScanStartDelay Clk2aEdges Clk2bEdges Clk2cEdges Bits Name Value scctrl[6:0] invert 0000000b scctrl[6:2] select 11100b Scan Dot Scaler[3:0] 0 Scan Dot Period[3:0] 7 GuardbandEnb[6:4] 0 Guardband[4:0] n/a Offset[3:0] 1 Length[3:0] 4 StartPos[3:0] 0 StartNeg[3:0] 1 Delay[12:0] 16 Clk2aPos[3:0] 1 Clk2aNeg[3:0] 4 Clk2bPos[3:0] 2 Clk2bNeg[3:0] 2 Clk2cPos[3:0] 3 Clk2cNeg[3:0] 0 ADCSampleCfg SamplePos[3:0] ADCConfig AdclkPos[3:0] SampleNeg[3:0] AdclkNeg[3:0] DataPlace[3:0] DataLatency[3:0] ClampCtrl ClampMode 1 ClampEnb 1 ClampLength[6:0] 16 ClampDelay ClampPosition 1 ClampDelay[13:0] 0 ClampEdges ClampPos[3:0] 7 ClampNeg[3:0] 7 LEDConfig LEDCtrl sync_sel[2:0] 0 LEDCtrl place[2:0] 0 LED0Edges LED0Pos[7:0] 0 LED0Neg[7:0] 78 LED1Edges LED1Pos[7:0] 0 LED1Neg[7:0] 78 LED2Pos[7:0] 0 LED2Neg[7:0] 78 ScanLength ScanLength[12:0] 2576 ScanCyles ScanCycle[4:0] 2 ms LED2Edges 100723A Conexant 7-33 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Manufacturer NEC Interface: Part # •PD3724 Scanner Type CCD LED control LEDCtrl[0] Resolution 300 dpi •TG[3:1] Start pulse start[0] Pixels 2700 x 3 SEL1 Color selector1 LEDCtrl[1] Scan time (color) SEL2 Color selector2 LEDCtrl[2] Scan time (B/W) •RB Reset clock clk2a Description MFC2000 Data Rate 3 MHz (max) •1, •1L Shift register clock 1 clk1 Main clock ‘H’ duty 50 % •2•••2L Shift register clock 2 clk1 Timing: 50 ns ihsclk 0 dotscaler_ctr dotperiod_ctr 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 clk1 PixelTime = 350 ns inv(clk1) clk2a clk1 3150 ns (guardband) 350 ns start[0] 1050 ns (offset) 1050 ns (length) 1050 ns LineTime =1.5 ms start[0] LEDCtrl[2:1] 3 2 1 14 dummy + 49 black + 2 invalid pixels scanin envelope of analog signal SigTime = 0.945 ms ExpTime = 1.48 ms LEDCtrl[0] can be modulated 0 2700 4224 pixel counter 4285 Figure 7-18. Untitled Timing Diagram 7-34 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 7-5. Register Setup for NEC – µPD3724 Register Name ScanConfig ScanDotControl StartConfig StartEdges Bits Name Value scctrl[6:0] invert 0100000b scctrl[6:2] select 00100b Scan Dot Scaler[3:0] 0 Scan Dot Period[3:0] 6 GuardbandEnb[6:4] 7 Guardband[4:0] 8 Offset[3:0] 2 Length[3:0] 2 StartPos[3:0] 0 StartNeg[3:0] 6 ScanStartDelay Delay[12:0] 65 + 9 = 74 Clk2aEdges Clk2aPos[3:0] 4 Clk2bEdges Clk2cEdges ADCSampleCfg ADCConfig Clk2aNeg[3:0] 2 Clk2bPos[3:0] n/a Clk2bNeg[3:0] n/a Clk2cPos[3:0] n/a Clk2cNeg[3:0] n/a SamplePos[3:0] 0 SampleNeg[3:0] 1 AdclkPos[3:0] AdclkNeg[3:0] DataPlace[3:0] DataLatency[3:0] ClampCtrl ClampMode 1 ClampEnb 1 ClampLength[6:0] 49 ClampPosition 1 ClampDelay[13:0] 13 + 9 = 22 ClampPos[3:0] 0 ClampNeg[3:0] 1 LEDConfig LEDCtrl sync_sel[2:0] 6 LEDCtrl place[2:0] 1 LED0Edges LED0Pos[7:0] 0 LED0Neg[7:0] 66 LED1Edges LED1Pos[7:0] n/a LED1Neg[7:0] n/a LED2Edges LED2Pos[7:0] n/a LED2Neg[7:0] n/a ScanLength ScanLength[12:0] 2700 ScanCyles ScanCyle[4:0] 1.5 ms ClampDelay ClampEdges 100723A Conexant 7-35 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Manufacturer NEC Interface: Part # •PD3794 Scanner Type CCD LED control LEDCtrl[0] Resolution 300 dpi •TG[3:1] Start pulse start[0] Pixels 2700 x 3 SEL1 Color selector1 LEDCtrl[1] Scan time (color) SEL2 Color selector2 LEDCtrl[2] Scan time (B/W) •RB Reset clock clk2a •1 Shift register clock 1 clk2b •2 Shift register clock 2 clk2c 4 MHz (max) Data Rate Main clock ‘H’ duty Description MFC2000 Timing: 50 ns ihsclk 0 dotscaler_ctr dotperiod_ctr 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 clk2a clk2b PixelTime = 250 ns clk2c clk1 5000 ns (guardband) 250 ns start[0] 1000 ns (offset) 3000 ns (length) 1000 ns LineTime =1 ms start[0] LEDCtrl[2:1] 3 2 1 14 dummy + 48 black + 2 invalid pixels scanin envelope of analog signal SigTime = 0.675 ms ExpTime = ~1 ms LEDCtrl[0] can be modulated 0 2700 3904 pixel counter 3936 Figure 7-19. Untitled Timing Diagram 7-36 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 7-6. Register setup for NEC – µPD3794 Register Name ScanConfig ScanDotControl StartConfig StartEdges Bits Name Value scctrl[6:0] invert 0000000b scctrl[6:2] select 11000b Scan Dot Scaler[3:0] 0 Scan Dot Period[3:0] 4 GuardbandEnb[6:4] 6 Guardband[4:0] 19 Offset[3:0] 3 Length[3:0] 11 StartPos[3:0] 0 StartNeg[3:0] 4 ScanStartDelay Delay[12:0] 83 Clk2aEdges Clk2aPos[3:0] 4 Clk2bEdges Clk2cEdges ADCSampleCfg ADCConfig Clk2aNeg[3:0] 1 Clk2bPos[3:0] 3 Clk2bNeg[3:0] 0 Clk2cPos[3:0] 4 Clk2cNeg[3:0] 4 SamplePos[3:0] 4 SampleNeg[3:0] 4 AdclkPos[3:0] AdclkNeg[3:0] DataPlace[3:0] DataLatency[3:0] ClampCtrl ClampMode 1 ClampEnb 1 ClampLength[6:0] 47 ClampPosition 1 ClampDelay[13:0] 33 ClampPos[3:0] 2 ClampNeg[3:0] 2 LEDConfig LEDCtrl sync_sel[2:0] 6 LEDCtrl place[2:0] 1 LED0Edges LED0Pos[7:0] 0 LED0Neg[7:0] 60 LED1Edges LED1Pos[7:0] n/a LED1Neg[7:0] n/a LED2Edges LED2Pos[7:0] n/a LED2Neg[7:0] n/a ScanLength ScanLength[12:0] 2700 ScanCyles ScanCycle[4:0] 0 ClampDelay ClampEdges 100723A Conexant 7-37 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Manufacturer SONY Interface: Part # ILX516K Scanner Type CCD LED control LEDCtrl[0] Resolution 400 dpi •ROG (3) Start pulse start[0] Pixels 3648 x 3 SEL1 Color selector1 LEDCtrl[1] Scan time (color) SEL2 Color selector2 LEDCtrl[2] Scan time (B/W) •RS Reset clock clk2a Description MFC2000 Data Rate 5 MHz (max) •1, •LH Shift register clock 1 clk2b Main clock ‘H’ duty 50 % •2 Shift register clock 2 clk2c Timing: 50 ns ihsclk 0 dotscaler_ctr dotperiod_ctr 3 0 1 clk2a 2 3 0 min = 45 ns 1 2 3 0 min = 45 ns 1 2 3 0 1 2 valid output clk2b clk2c PixelTime = 200 ns (min) typ = 10 ns typ = 10 ns clk2b 800 ns (min) 200 ns start[0] 200 ns (min = 50 ns) 800 ns (min) LineTime =1.5 ms start[0] LEDCtrl[2:1] 0 1 2 63 dummy pixels scanin envelope of analog signal SigTime = 0.7296 ms ExpTime = 1.4976 ms LEDCtrl[0] can be modulated 0 3648 7488 pixel counter 7500 Figure 7-20. Untitled Timing Diagram 7-38 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 7-7. Register Setup for SONY – ILX516K Register Name ScanConfig ScanDotControl StartConfig StartEdges ScanStartDelay Clk2aEdges Clk2bEdges Clk2cEdges ADCSampleCfg ADCConfig Bits Name Value scctrl[6:0] invert 0110000b scctrl[6:2] select 11100b Scan Dot Scaler[3:0] 0 Scan Dot Period[3:0] 3 Guardband[6:4] 7 Guardband[4:0] 9 Offset[3:0] 0 Length[3:0] 3 StartPos[3:0] 1 StartNeg[3:0] 3 Delay[12:0] 63 + 10 = 73 Clk2aPos[3:0] 1 Clk2aNeg[3:0] 3 Clk2bPos[3:0] 2 Clk2bNeg[3:0] 3 Clk2cPos[3:0] 2 Clk2cNeg[3:0] 3 SamplePos[3:0] 3 SampleNeg[3:0] 3 AdclkPos[3:0] AdclkNeg[3:0] DataPlace[3:0] DataLatency[3:0] ClampCtrl ClampMode 1 ClampEnb 1 ClampLength[6:0] 49 ClampDelay ClampPosition 1 ClampDelay[13:0] 10 + 14 = 24 ClampEdges ClampPos[3:0] 1 ClampNeg[3:0] 1 LEDConfig LEDCtrl sync_sel[2:0] 6 LEDCtrl place[2:0] 1 LED0Edges LED0Pos[7:0] 0 LED0Neg[7:0] 117 LED1Edges LED1Pos[7:0] n/a LED1Neg[7:0] n/a LED2Pos[7:0] n/a LED2Neg[7:0] n/a ScanLength ScanLength[12:0] 3648 ScanCyles ScanCyle[4:0] 1.5 ms LED2Edges 100723A Conexant 7-39 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description External circuit required for SONY–ILX516K interface: +12 V Analog Inverter 100Ω 5.1K Ω +12 V Vout R Vout G Vout B SONY - ILX516K 100Ω LEDCtrl[2] LEDCtrl[1] MFC2000 scanin 5.1K Ω +12 V Analog MUX 100Ω 5.1K Ω Figure 7-21. External circuit required for SONY–ILX516K interface LED timing for SONY–ILX516K start[0] LEDCtrl[0] expsoure time as required by RED sensor expsoure time as required by GREEN sensor select Red LEDCtrl[2:1] expsoure time as required by BLUE sensor select Green select Blue Used as selectors for analog MUX Figure 7-22. LED timing for SONY–ILX516K 7-40 Conexant 100723A Hardware Description 7.2 MFC 2000 Multifunctional Peripheral Controller 2000 Serial Programming Interface The serial programming interface is a two-wire bidirectional serial bus, which provides a simple and efficient way for data exchange between devices. Main Features: • • • • • • • Only two bus lines are required; a serial interface data (SID) and a serial interface clock (SIC) Master–transmitter & master–receiver Schmitt trigger on SID input Synchronization capability (allowing slave to add wait state by pulling the clock low) Optional interrupt or polling operation Optional firmware operation for manual control of the SPI bus Soft reset 7.2.1 Function Description Physical Connection PM[0]/GPO[0]/ SPI_SID / E A D C _ D [ 9 ] / T _ E X T _ B R E Q MFC2K (Master) SID SID in SID_n out (serial interface data) SIC in SIC_n out (serial interface clock) SIC Slave SID in SID_n out SIC in SIC_n out PM[1]/GPO[1]/ SPI_SIC / E A D C _ D [ 8 ] / T _ E X T _ B A C K Figure 7-23. Serial Programming Interface, Physical Connection Notes: 1. Master is the device that initiates a transaction, generates clock signal, and terminates the transaction. 2. Data and clock can only be driven low, and cannot be driven high. The pull-up resistors are responsible to create a logic 1. This configuration forms wire – AND connection. 3. Slave can only drive the clock signal to add wait state. 4. There is no minimum requirement for clock frequency. 100723A Conexant 7-41 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bus Protocol 7-bit START Slave Address 1-bit R/W 8-bit ACK Data Data transfer (n bytes + acknowledge) 8-bit ACK Data ACK STOP Figure 7-24. Bus Protocol b7 SID b6 b1 b0 b7 b6 b1 b0 A/A SIC Slave Address R/W A n x (8-bit DATA) n x (A/A) Start Stop [spi_timing.vsd] Figure 7-25. Serial Programming Interface, Timing Diagram 7-42 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 START condition Data is pulled low while clock is still high, followed by pulling the clock low. Clock and data will be held low. SID SIC STOP condition Clock is released to high, followed by releasing data to high. SID SIC Bit transfer Address/data bit must be valid while SIC is high. SID SIC Getting ACK This is the condition after master transmitted data to slave, which will be referred as WAC (write acknowlege). SID master 'z' LSB 'z' slave wire '0' 'H' LSB 'z' '0' 'H' Slave is giving acknowledge by driving the data line low. Master is getting the acknowledge by generating a clock pulse to capture the acknowledge. SIC end of write Giving ACK WAC SID master 'z' '0' 'z' Master is giving acknowledge to the slave by driving data line low and by generating a clock pulse. 'z' slave LSB wire LSB 'H' This is the condition after master received data from slave, which will be referred as RAC (read acknowledge). '0' 'H' Slave is receiving the acknowledge from master. SIC end of read 100723A RAC Conexant 7-43 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Clock Stretching Slave can add wait state as needed by stretching the low period of the clock. This will slow down the bus as shown below. Master's SIC Slave's SIC SIC wait state Figure 7-26. Stretching the Low Period of the Clock 7.2.2 Register Description Name/Address SPI Control (SPICtrl) $01FF854B Name/Address SPI Control (SPICtrl) $01FF854A Bit 15 (Not Used) Bit 7 RST Bit 14 (Not Used) Bit 6 REA Bit 13 (Not Used) Bit 5 STA Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 STO Bit 3 RAC Bit 10 (Not Used) Bit 9 (Not Used) Bit 2 WAC Bit 8 WRI (read only) Bit 1 SID Bit 0 SIC Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value 00h Read Value 00h Bit 8 WRI – Writing This is a read only bit which indicates the writing operation. Reading a 1 means the SPI is in the process of sending/writing data to slave. Bit 7 RST – Reset Writing a 1 to this bit will cause the SPI logic controller to be resetted. If SPI is in operation while RST bit is set, then the operation will be terminated. Reading a 1 from this bit indicates that RST operation is active. After the reset, both SID and SIC lines will be released. Bit 6 REA – Read Writing a 1 to this bit will generate 8 clocks to read data from slave, and SPI will capture serial data into the upper byte of ‘SPI_data’ register. Reading a 1 from this bit indicates that REA operation is active. Bit 5 STA – Start Writing a 1 to this bit will generate START condition. Reading a 1 from this bit indicates STA operation is active. Bit 4 STO – Stop Writing a 1 to this bit will generate STOP condition. Reading a 1 from this bit indicates STO operation is active. Bit 3 RAC – Read Acknowledge Writing a 1 to this bit will generate ACKNOWLEDGE condition after read operation in which the master will: 1. generate clock pulse 2. drive SID low Reading a 1 from this bit indicates RAC operation is active. 7-44 Conexant 100723A Hardware Description Bit 2 WAC – Write Acknowledge MFC 2000 Multifunctional Peripheral Controller 2000 Writing a 1 to this bit will generate ACKNOWLEDGE condition after write operation in which the master will: 1. generate clock pulse 2. NOT drive SID but will capture acknowledge bit from slave and store it into bit 8 of ‘SPI_Stat’ register Reading a 1 from this bit indicates WAC operation is active. Bit 1 SID – Serial Input Data This bit is used to control the SID line directly, and it is only valid if the “Manual Operation” bit in SPI_Config is equal to 1. When SID = 1, then SPI is not driving the SID line. When SID = 0, then SPI will drive SID line low. Bit 0 SIC – Serial Input Clock This bit is used to control the SIC line directly, and it is only valid if the “Manual Operation” bit in SPI_Config is equal to 1. When SIC = 1, then SPI is not driving the SIC line. When SIC = 0, then SPI will drive SIC line low. Note: In normal case, only one of bit [7:2] should be set. However, if for some reasons, more than one bits are set, then the hardware will respond according to the following priority. Other bit(s) that are set will be ignored. 100723A Priority Operation 1 RST 2 STO 3 STA 4 REA 5 RAC 6 WAC 7 WRI Conexant 7-45 MFC2000 Multifunctional Peripheral Controller 2000 Name/Address SPI Status (SPIStat) $01FF854D Bit 15 (Not Used) Name/Address SPI Status (SPIStat) $01FF854C Bit 14 (Not Used) Bit 7 (Not Used) Bit 13 (Not Used) Bit 6 (Not Used) Hardware Description Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) Bit 10 (Not Used) Bit 2 (Not Used) Bit 9 (Not Used) Bit 1 SID line (read only) Bit 8 Received ACK (read only) Bit 0 SIC line (read only) Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value xxxxxx00b Read Value 00h Bit 8 Received ACK This is a read only bit which is only valid after writing a 1 to “WAC” bit and after verifying that WAC operation is completed, i.e., WAC bit is 0. After master sends data to slave, master must check if slave has received the data properly. This checking is done by requesting acknowledge from slave. In this situation, master is sending a clock pulse, and capture the acknowledge on SID line while SIC is high. This is the acknowledge stored in bit 8. Bit 1 SID – Serial Input Data line This is a read only bit which comes directly from the SID pin. Bit 0 SIC – Serial Input Clock line This is a read only bit which comes directly from the SIC pin. Name/Address SPI Configuration (SPIConfig) $01FF88C1 Name/Address SPI Configuration (SPIConfig) $01FF88C0 Bit 15 (Not Used) Bit 14 (Not Used) Bit 7 Manual Operation Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 3 SPI Interrupt Enable Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Clock Mode Clk Divider[1] Bit 8 (Not Used) Bit 0 Clk Divider[0] Default Rst. Value xxh Read Value 00h Default Rst. Value 0xxx0000b Read Value 00h Bit 7 Manual Operation By setting this bit, firmware can control the SID and SIC directly by writing to bit 1 and bit 0 of SPI_Ctrl register. Bit 3 SPI Interrupt Enable By setting this bit, the interrupt from SPI is enabled. At the end of REA, STA, STO, RAC, WAC, or WRI operation, the interrupt will be active in order to indicate the completion of operation. Once the firmware has serviced this interrupt, it can be cleared by writing a 1 to bit 1 of ‘VSCIRQStatus’ register. Bit 2 Clock Mode Bit 1-0 Clock Divider[1:0] 7-46 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Clock Mode = 0 Clock Mode = 1 Div[1:0] SIC Freq Div[1:0] SIC Freq 0 1.2 KHz 0 104 KHz 1 9.8 KHz 1 156 KHz 2 39 KHz 2 208 KHz 3 78 KHz 3 312 KHz Note: The freqencies specified above are based on iclk = 10MHz. Name/Address Name/Address SPI Data (SPIData) $01FF88C2 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default Read Read Read Read Read Read Read Read Rst. Value Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Data[7] 00h (Read only) (Read only) (Read only) (Read only) (Read only) (Read only) (Read only) (Read only) Read Value 00h SPI Data (SPIData) $01FF88C3 Bit 7 Write Data[7] Bit 6 Write Data[6] Bit 5 Write Data[5] Bit 4 Write Data[4] Bit 3 Write Data[3] Bit 2 Write Data[2] Bit 1 Write Data[1] Bit 15-8 Read Data[15:8] The data received is stored in this location. Bit 7-0 Write Data[7:0] The data transmitted comes from this location. Bit 0 Write Data[0] Default Rst. Value 00h Read Value 00h Writing to SPIData register will initiate the transmission of bit[7:0]. It should be noted that if the writing occurs while ACT = 1, then the current transmission will be corrupted. 100723A Conexant 7-47 MFC2000 Multifunctional Peripheral Controller 2000 7.2.3 Hardware Description Firmware Operation Initialization: select the desired frequency for SIC by writing the appropriate value to “SPI_Config” register Transmission: START no write 0x0020 to 'SPI_Ctrl' reg Generate START condition receive & clear spi_irq write to 'SPI_Data' reg Send the 7-bit slave address + "W" bit receive & clear spi_irq write 0x0004 to 'SPI_Ctrl' reg Generate WAC condition receive & clear spi_irq write to 'SPI_Data' reg yes Send more data? no write 0x0010 to 'SPI_Ctrl' reg Generate STOP condition END [spi_fw_tx.vsd] Figure 7-27. Firmware Operation Transmission 7-48 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Reception: START no Generate START condition write 0x0020 to 'SPI_Ctrl' reg receive & clear spi irq Send the 7-bit slave address + "R" bit write to 'SPI_Data' reg receive & clear spi irq Generate WAC condition write 0x0004 to 'SPI_Ctrl' reg receive & clear spi irq Initiate READ operation of sending clock pulses & capturing serial data write 0x0040 to 'SPI_Ctrl' reg receive & clear spi irq read 'SPI_Data' reg no Expect more data? yes write 0x0080 to 'SPI_Ctrl' reg Generate RAC condition write 0x0010 to 'SPI_Ctrl' reg Generate STOP condition; END [spi_fw_rx.vsd] Figure 7-28. Firmware Operation Reception 100723A Conexant 7-49 MFC2000 Multifunctional Peripheral Controller 2000 7.3 Hardware Description Video Controller Main features: • • • • Capture a frame from an external video decoder device Support ITU–R BT.656 or VESA Video Interface Port (VIP) format of YCrCb 4:2:2 Store captured frame into memory in a non-interlace format Software interrupt at the end of a frame capture ITU–R BT.656 • Data format: CB, Y, CR, Y, etc Y Y CB CR • Control structure: FF, 00, 00, XY XY contains the video timing reference code XY = {1, F, V, H, P3, P2, P1, P0}, where F = Field V = Vertical H = Horizontal (0 = SAV, 1 = EAV) P3, P2, P1, P0 = error protection bits, with P3 = V xor H, P2 = F xor H, P1= F xor V, P0 = F xor V xor H XY 80 9D AB B6 C7 DA EC F1 F 0 0 0 0 1 1 1 1 V 0 0 1 1 0 0 1 1 H 0 1 0 1 0 1 0 1 type SAV EAV SAV EAV SAV EAV SAV EAV • Control insertion: 1. at the beginning of a line: SAV (start of active video) 2. at the end of a line: EAV (end of active video) • Number of pixels per line is 720. • The following control codes are inserted for every valid line: Field 0 1 7-50 Start Line FF, 00, 00, 80 FF, 00, 00, C7 End Line FF, 00, 00, 9D FF, 00, 00, DA Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 VESA VIP • Dummy byte/ invalid pixel code: 00 (between SAV and EAV) • Number of pixels per line is not restricted to 720 • The most significant bit of XY byte is called task bit (T-bit), which can be 1 or 0. Convention • F = 0 (Field = 1) is an odd field • F = 1 (Field = 2) is an even field • Odd field is the top field • Even field is the bottom field 7.3.1 Function Description Pins connection to external video capture device: Video Capture MFC2000 EV_CLK clk EV_VD[7:0] /EADC_D[11:4] data[7:0] Figure 7-29. Connection to External Video Capture Device 7.3.2 Register Description Name/Address Video Capture Control (VidCaptureCtrl) $01FF8549 Name/Address Video Capture Control (VidCaptureCtrl) $01FF8548 Bit 8 Bit 15 (Not Used) Bit 7 (Not Used) Video Error Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) Bit 10 (Not Used) Bit 2 (Not Used) Bit 9 (Not Used) Bit 1 (Not Used) Bit 8 Video Error (read only) Bit 0 Start Capture Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value xxxxxxx0b Read Value 00h This status bit indicates that error has been detected in capturing the video signal. The error is detected based on the line length comparison between the specified number of bytes per line (i.e., the value in VideoLineCfg register) to the actual number of bytes captured. If any line within a frame does not match VideoLineCfg register, this bit will be set. At the beginning of the next video capture, this error bit will be cleared. Bit 0 100723A Start Capture By setting this bit, the hardware will start the process of capturing a frame of video data. Once a complete frame has been captured, the hardware will clear this bit. The status of capturing process can be known by reading this bit. Reading a 1 indicates that the hardware is busy. Conexant 7-51 MFC2000 Multifunctional Peripheral Controller 2000 Name/Address Video Line Config (VidLineCfg) $01FF88C7 Name/Address Video Line Config (VidLineCfg) $01FF88C6 Bit 10-1 Bit 15 (Not Used) Bit 7 LineSize[7] LineSize[10:1] Bit 14 (Not Used) Bit 6 LineSize[6] Hardware Description Bit 13 (Not Used) Bit 5 LineSize[5] Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 LineSize[4] Bit 3 LineSize[3] Bit 10 Bit 9 LineSize[10] LineSize[9] Bit 2 LineSize[2] Bit 1 LineSize[1] Bit 8 LineSize[8] Bit 0 0 Default Rst. Value xxxxx000b Read Value 00h Default Rst. Value 00h Read Value 00h This register defines the maximum number of bytes to be captured per line. The value in this register must be written prior to initiating the video capture. Bit 0 is a constant zero in order to ensure that line size is an even number, i.e., on the word boundary. If the number of actual data is more than this value, then the actual data will be truncated. It should be noted that at the end of every line, one or two byte of zeros will be added in order to indicate the end of line, and at the same time the additional zeros will guarantee that the line length is on the word boundary. Whenever the actual data does not match the LineSize, the “Video Error” bit in “Video Capture Config” register will be set to 1. Note: The jump or skip parameter in DMA setting must be at least 1 halfword bigger than the “LineSizeCfg” in order to take into account the additional zeros at the end of line. Example of line too short VidLineCfg = 10 bytes Number of actual data from video decoder = 9 bytes Number of actual data stored into memory = 9 bytes Number of zeros inserted into memory = 1 byte Final line size = 10 bytes Example of line too long VidLineCfg = 10 bytes Number of actual data from video decoder = 11 bytes Number of actual data stored into memory = 10 bytes Number of zeros inserted into memory = 2 byte Final line size = 12 bytes Example of line is just right VidLineCfg = 10 bytes Number of actual data from video decoder = 10 bytes Number of actual data stored into memory = 10 bytes Number of zeros inserted into memory = 2 byte Final line size = 12 bytes 7-52 Conexant 100723A Hardware Description Name/Address MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 Video Line Length (Not Used) Status (VidLLStat) $01FF88C9 Name/Address Bit 7 Video Line Length VidLL[7] Status (read only) (VidLLStat) $01FF88C8 Bit 10-0 Name/Address Name/Address Video Odd Field Length Status (VidOddFLStat) $01FF88CA Name/Address Name/Address Video Even Field Length Status (VidEvenFLStat) $01FF88CC 100723A Bit 15 (Not Used) Bit 7 VidOddFL [7] (read only) Bit 15 (Not Used) Bit 7 VidEvenFL [7] (read only) VidEvenFL [8:0] Bit 13 (Not Used) Bit 5 VidLL[5] (read only) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 VidLL[4] (read only) Bit 3 VidLL[3] (read only) Bit 10 VidLL[10] (read only) Bit 2 VidLL[2] (read only) Bit 9 VidLL[9] (read only) Bit 1 VidLL[1] (read only) Bit 8 VidLL[8] (read only) Default Rst. Value xxxxx000b Read Value 00h Bit 0 VidLL[0] (read only) Default Rst. Value 00h Read Value 00h This register indicates the number of bytes per line and not the number of pixels per line. The value in this register is updated continuously at the end of every line. Bit 14 (Not Used) Bit 6 VidOddFL [6] (read only) VidOddFL [8:0] Video Even Field Length Status (VidEvenFLStat) $01FF88CD Bit 8-0 Bit 6 VidLL[6] (read only) VidLL[10:0] Video Odd Field Length Status (VidOddFLStat) $01FF88CB Bit 8-0 Bit 14 (Not Used) Bit 13 (Not Used) Bit 5 VidOddFL [5] (read only) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 VidOddFL [4] (read only) Bit 3 VidOddFL [3] (read only) Bit 10 (Not Used) Bit 2 VidOddFL [2] (read only) Bit 9 (Not Used) Bit 1 VidOddFL [1] (read only) Bit 8 VidOddFL [8] (read only) Bit 0 VidOddFL [0] (read only) Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value 00h Read Value 00h This register indicates the number of lines in odd field. The value in this register is updated continuously at the end of every odd field. Bit 14 (Not Used) Bit 6 VidEvenFL [6] (read only) Bit 13 (Not Used) Bit 5 VidEvenFL [5] (read only) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 VidEvenFL [4] (read only) Bit 3 VidEvenFL [3] (read only) Bit 10 (Not Used) Bit 2 VidEvenFL [2] (read only) Bit 9 (Not Used) Bit 1 VidEvenFL [1] (read only) Bit 8 VidEvenFL [8] (read only) Bit 0 VidEvenFL [0] (read only) Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value 00h Read Value 00h This register indicates the number of lines in even field. The value in this register is updated continuously at the end of every even field. Conexant 7-53 MFC2000 Multifunctional Peripheral Controller 2000 7.3.3 Hardware Description Timing Data is sampled at the rising edge. The control codes indicate the beginning and the end of a valid line, with invalid pixels inserted. Field = 0 Clk Data FF 00 00 80 CB Y CR Y CB Y 00 FF 00 00 9D valid Start of line for Field = 0 End of line for Field = 0 One line Field = 1 Clk Data FF 00 00 C7 CB Y CR Y CB Y 00 FF 00 00 DA valid Start of line for Field = 1 One line End of line for Field = 1 Figure 7-30. Untitled Timing Diagram 7-54 Conexant 100723A Hardware Description 7.3.4 MFC 2000 Multifunctional Peripheral Controller 2000 Firmware Operation Firmware sequence of operations: 1. Setup the external video capture device via two-wire serial interface 2. Poll the status register in external video capture device via two-wire serial interface 3. Read VidLLStat and VidOddFLStat registers if video signal is detected 4. Setup DMA based on the values stored in VidLLStat and VidOddFLStat registers 5. Write to VidLineSizeCfg register based on the VidLLStat 6. Start the video capture by writing to VidCaptureCtrl register DMA operation: Odd Field Address Start 0 Even Field Address n+1 Step/Jump 1 n+2 2 signal from video decoder device, indicating the end of the odd field n Stop signal from video decoder device, indicating the end of frame capture Figure 7-31. DMA Operation DMA features: • • clear internal counter after address/other registers are written selection bit (scan/video) − scan: 1 address will be used, and operation is simple − video: 2 addresses will be used, and operation is complex as shown above 100723A Conexant 7-55 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank. 7-56 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 8. ADC 8.1 PADC AND SCAN ANALOG FRONT END 8.1.1 General description TADCREF adcout[11:0] adclk sample clamp gain[3:0] ADVD ADGD ADVA offset[5:0] Symbols: ext interface (pad & pin) int interface Signal names: adclk Offset Adjustment gain[3:0] sample lowercase : digital uppercase: ANALOG ADGA ADCVC ADCREFP ADCREFN 3 V adcout[11:0] _ DAC -0.1 V Reference ADCVC 1.9 V ADC PGA ADCREFN offset[5:0] clamp 0 V + ADCREFP + SCIN ADCVC ADCREFP ADCREFN TADCREF Figure 8-1. Untitled Figure 100723A Conexant 8-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 8-1. Untitled Table Name adclk Description Clock for ADC circuit The maximum frequency of this clock is 5 MHz. This clock is guaranteed to be low while “sample” is high. clamp Clock for clamping circuit gain[3:0] Selector for gain adjustment on PGA circuit offset[5:0] Selector for offset adjustment on DAC circuit The maximum frequency of this clock is 5 MHz. sample Clock for sampling circuit The maximum frequency of this clock is 5 MHz. The minimum (high) pulse width is 50 ns. adcout[11:0] Digital data from ADC circuit TADCREF Analog signal as a reference voltage for TADC Table 8-2. Untitled Table Name ADCREFN 8.1.2 Description An internally generated reference voltage ADCREFP An internally generated reference voltage ADGA Ground return from analog circuits ADGD Ground return from digital circuits ADVA +3.3V power supply for analog circuits ADVC An internally generated reference voltage ADVD +3.3V power supply for digital circuits SCIN Analog input for scanner signal Offset Adjustment This offset adjustment contains DAC which takes digital input to configure the DAC and analog subtraction to subtract the incoming scanner signal with the analog signal from the DAC. This adjustment is used to remove/reduce the dark level offset on the scanner signal. The adjustment on DAC value is described below: Table 8-3. Offset Adjustment on DAC Parameter Min Typ Max Units offset[5:0] 8-2 000000 -0.1 V 11111 1.9 V Conexant 100723A Hardware Description 8.1.3 MFC 2000 Multifunctional Peripheral Controller 2000 Programmable Gain Amplifier (PGA) Table 8-4. Programmable Gain Amplifier (PGA) Parameter Input Voltage Range (Gain = 1) Min Typ 0 Max Units 3 V Gain[3:0] (in hex) 0 -1.25 -1 -0.75 dB 1 -0.25 0 0.25 dB 2 0.75 1 1.25 dB 3 1.75 2 2.25 dB 4 2.75 3 3.25 dB 5 3.75 4 4.25 dB 6 4.75 5 5.25 dB 7 5.75 6 6.25 dB 8 6.75 7 7.25 dB 9 7.75 8 8.25 dB A 8.75 9 9.25 dB B 9.75 10 10.25 dB C 10.75 11 11.25 dB D 11.75 12 12.25 dB E 12.75 13 13.25 dB F 13.75 14 14.25 dB Note: Scanner output will be sampled at the falling edge of the “sample” signal 100723A Conexant 8-3 MFC2000 Multifunctional Peripheral Controller 2000 8.1.4 Hardware Description Pipelined Analog-to-Digital Converter (PADC) Table 8-5. Pipelined ADC (PADC) Parameter Min RESOLUTION Typ Max Units 5 MSPS LSB 12 Bits SPEED ACCURACY Differential Nonlinearity (DNL) -1 ±0.5 +1 Integral Nonlinearity (INL) -2 ±1 +2 LSB POWER SUPPLY REJECTION ±1 mV/V OUTPUT FORMAT $ Binary unsigned LATENCY 8.1.5 16 ADCLK Timing Diagram a pixel period SCIN (scanner output) s1 programmable sample position within pixel period (min width = 50 ns) s2 sample adclk D1 adcout[11:0] guarantees to be low while sample is high D2 latency Table 8-6. PADC Timing Diagram 8.1.6 ADCVREFP, ADCVREFN, and ADCVC The ADCVREFP and ADCVREFN voltages provide positive and negative references for ADCs while VC is used as common mode voltage in the design of ADC and PGA. These voltages are decoupled with external capacitors (0.1µF) to reduce thermal noise and also to provide high frequency ac current for sampling. 8.1.7 TADCREF Parameter TADCREF 8-4 Min Typ Max Units 2.370 2.390 2.410 V Conexant 100723A Hardware Description 8.2 MFC 2000 Multifunctional Peripheral Controller 2000 TADC 8.2.1 Function Description Thermal ADC provides the analog to digital functionality for low speed analog signals. A simplified block diagram of TADC is shown below. senin[0],[1],[2], or TADCREF - 9-bit up/down Counter + 6 MSBs 6-bit DAC +/- 1/2 bit AD[5:0] [tadc-simple.vsd] Table 8-7. TADC Block Diagram The TADC includes a 6-bit DAC, a comparator and a 9-bit self tracking up/down counter. The up/down counter is incremented or decremented based on the polarity of the comparator output. The most significant 6 bits of the counter are used to generate the DAC reference signal to the comparator. The comparator compares this reference voltage to the external analog input signals, SENIN[2:0], or TADCREF. After settling, the counter value (and thus the DAC digital value) represents the A-to-D conversion of the input signal. The least significant bits of the counter are used to average out the comparator fluctuations which occurs at the settling point. The counter is set to a mid-point value on the power-on reset so that it settles more quickly. The frequency of updating the counter is programmable. The TADC can be operated in two modes. By default, the manual mode will be selected. In this mode, the firmware will select the analog input. Then, the firmware must wait for at least for 256 * tadcclk period to allow the TADC to settle prior to reading the data. In the automatic mode, the hardware will do the selection for each analog input in rotation. Each analog input will be selected periodically, and the data from each channel will be stored in different register at the same rate as channel selection. 100723A Conexant 8-5 MFC2000 Multifunctional Peripheral Controller 2000 8.2.2 Register Description Name/Address TADC Control (TADCCtrl) $01FF8001 Bit 15 Bit 14 (Not Used) Name/Address TADC Control (TADCCtrl) $01FF8000 Bit 6-5 Hardware Description (Not Used) Bit 7 (Not Used) Bit 13 (Not Used) Bit 12 (Not Used) Bit 11 Bit 10 (Not Used) (Not Used) Bit 9 (Not Used) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Tadcclk Select[1] Tadcclk Select[0] Update Select[1] Update Select[0] Channel Select[1] Channel Select[0] Tadcclk Select[1:0] Bit 8 (Not Used) Bit 0 Mode Default Rst. Value xxh Read Value 00h Default Rst. Value x0000000b Read Value 00h The frequency for tadc counter is programmable according to the following table. Tadcclk Select[1:0] Tadcclk Frequency Tadcclk Frequency (assuming iclk = 10MHz) Bit 4-3 0 freq(iclk)/64 156 KHz 1 freq(iclk)/16 625 KHz 2 freq(iclk)/8 1.25 MHz 3 freq(iclk)/4 2.5 MHz Update Select[1:0] Update Select[1:0] In the auto mode, the frequency of updating each register is determined by the setting on these bits. Update Frequency Update Frequency (with tadcclk = 156 KHz) Bit 2-1 8-6 (with tadcclk = 5 MHz) 0 freq(tadcclk)/2048 76 Hz 2.4 KHz 1 freq(tadcclk)/1024 152 Hz 4.8 KHz 2 freq(tadcclk)/512 304 Hz 9.8 KHz 3 freq(tadcclk)/256 609 Hz 19.5 KHz Channel Select [1:0] This channel selection is only valid for manual mode (i.e., Mode = 0). Channel Select[1:0] Bit 0 Update Frequency Mode Selected Channel 0 senin[0] 1 senin[1] 2 senin[2] 3 TADCREF When mode = 0, then the manual mode is selected. In this manual mode, the channel selected must be done by the firmware, by setting the desired channel selection in bit 2 & bit1. When mode = 1, then the automatic mode is selected. In this auto mode, the selection for the analog mux will be performed automatically by the hardware, and the data on three registers corresponding to each channel will be updated accordingly. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Note: In automatic mode, only channel 0, 1, and 2 will be automatically selected. Thus, in order to obtain the value for TADCREF, manual mode must be used, and “Channel Select” must be set to 3. Name/Address Bit 15 TADC Instant Data (Not Used) (TADCInsData) $01FF8003 Name/Address Bit 7 TADC Instant Data (Not Used) (TADCInsData) $01FF8002 Bit 5-0 Name/Address Name/Address TADC Ch 0 Data (TADCCh0Data) $01FF8004 Name/Address Name/Address TADC Ch 1 Data (TADCCh1Data) $01FF8006 100723A Data Bit 13 (Not Used) Bit 5 Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 Bit 3 Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Default Rst. Value xxh Read Value 00h Default Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Rst. Value (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) xx000000b Read Value 00h The data in this register comes directly from TADC. Thus, it gives the instant value from TADC regardless of the TADC operation mode. Bit 15 (Not Used) Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Data TADC Ch 1 Data (TADCCh1Data) $01FF8007 Bit 5-0 Bit 6 (Not Used) Data TADC Ch 0 Data (TADCCh0Data) $01FF8005 Bit 5-0 Bit 14 (Not Used) Bit 13 (Not Used) Bit 5 Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 Bit 3 Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Default Rst. Value xxh Read Value 00h Default Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Rst. Value (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) xx000000b Read Value 00h This data is only valid when the auto mode is selected. Bit 15 (Not Used) Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 Bit 3 Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Default Rst. Value xxh Read Value 00h Default Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Rst. Value (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) xx000000b Read Value 00h This data is only valid when the auto mode is selected. Conexant 8-7 MFC2000 Multifunctional Peripheral Controller 2000 Name/Address TADC Ch 2 Data (TADCCh2Data) $01FF8009 Bit 15 (Not Used) Name/Address TADC Ch 2 Data (TADCCh2Data) $01FF8008 Bit 5-0 8.2.3 Bit 7 (Not Used) Bit 14 (Not Used) Bit 13 (Not Used) Bit 6 (Not Used) Hardware Description Bit 5 Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 Bit 3 Bit 10 (Not Used) Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Default Rst. Value xxh Read Value 00h Default Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Rst. Value (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) (Read Only) xx000000b Read Value 00h Data This data is only valid when the auto mode is selected. Firmware Operation General setup: 1. Select the desired tadclk frequency 2. Select the desired mode of operation In manual mode: 3mm. Select the right channel (“TADCCtrl[2:1]”) 4mm. Wait for at least “tadclk” period * 256 for TADC output to be stable 5mm. Read TADC data from “TADCInsData” register. (Then, go to step 3mm to select other channel) In automatic mode: 3am. Select the desired update frequency (“TADCCtrl[4:3]”) 4am. Wait for at least TADC update period * 3 (only need to wait once after the above step. This wait guarantees each channel has been selected and its value has been stored in the corresponding register) 5am. Read TADC data from “TADCCh1Data”, “TADCCh2Data”, “TADCCh3Data” at any time for latest data. 8-8 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 9. BI-LEVEL RESOLUTION CONVERSION 9.1 Functional Description The bi-level resolution conversion logic in the MFC2000 performs expansion (converting from lower to higher resolution) and reduction (converting from higher to lower resolution) of horizontal image data. Vertical line ORing can also be performed for image reduction in the vertical direction. There are two data sources that can be selected for this bi-level resolution conversion block. One is T4/T6 Decompressor and another is the external memory. The data from the T4/T6 Decompressor is serially input to this bi-level resolution conversion logic. The data from the external memory is input to this bi-level resolution conversion logic through the DMA operation. The DMA operation for the data from the external memory uses the DMA channel 9. If the T4/T6 Decompressor is selected as the data source, the DMA channel 9 request is blocked. The data from this resolution conversion logic is output to the external memory also through the DMA operation. The DMA operation for the output data uses the DMA channel 8 (See Figure 9-1). The MFC2K adds the following features to the BRC Block: 1. A first and last black data detector to indicate the first and last halfword out of the BRC that contains printable data. 2. The ability the change the ORing algorithm for hoizontal reduction. Because the bi-level resolution conversion is a slave logic, the DMA channel 9 for inputting data from memory has the block size control function. Once the block size limit is reached during the DMA operation. The DMA Controller gives a signal to the bi-level resolution conversion logic that indicates the end of process. Then, the bilevel resolution conversion logic will deactivate the DMA request, disable the FIFO, and start the flush operation. After the flush operation the bi-level resolution conversion interrupt will be generated to the Interrupt Controller. Before CPU gets out of the interrupt routine, CPU needs to write the new block size into the DMA9BlockSize register of the DMA Controller (even the same block size) to clear the interrupt. Then, CPU needs to write a 1 and then, immediately write a 0 to bit 1 of the BiResConvCtrl register to tell hardware to convert a new line (Reset the Resolution Conversion Logic). If the data from the T4/T6 Decompressor is serially input to this bi-level resolution conversion logic, this bi-level resolution conversion logic is treated as a part of T.4/T6 logic. The T.4 line length (instead of block size of DMA channel 9) and T.4 interrupt (instead of the bi-level resolution conversion interrupt) are used. Furthermore,, this bilevel resolution conversion logic is enabled by setting bit 5 in the ‘T4Config’ register in the T4/T6 Compression/Decompression Logic. The flush operation depends on the FIFO direction. If the FIFO is being read by the local side and written by the system side, a flush will simply reset all of the internal FIFO pointers, thereby removing the data. If the FIFO is being written by the local side and read by the system side, a flush will cause a DMA request to be generated. In addition, if there is a single byte in the holding register, it will be treated as a halfword (the contents of the msbyte of the halfword are indeterminate). Because of this, it is important for firmware to first check for the presence of a single byte in the holding register (via the Byte Present bit in the FIFO Control register). Each FIFO is composed of 4 halfwords, a holding register, and a control register. Firmware can randomly access all the FIFO registers under the following restrictions: • • • When the FIFO is enabled - reads may return invalid data, writes are blocked When the FIFO is disabled - read/write operations are properly performed Random access of the FIFO registers is useful in saving and restoring the state of the FIFO. This should only be done when the FIFO is disabled. 100723A Conexant 9-1 MFC2000 Multifunctional Peripheral Controller 2000 9.1.1 Hardware Description Horizontal Conversion Conversion in the horizontal direction is performed in this logic block by adding or removing a programmable number of pixels at the position which decided by the bi-level resolution conversion algorithm. Pixels are added based on a programmable 7-bit Base-3 counter and the expansion mode bits (2 bits). Input pixel number needs to be a multiple of 16. The output pixel number of this block is also a multiple of 16. Table 9-1. Untitled Table The expected expansion ratio the expansion mode the programmed expansion ratio 100% ≤ X < 200% 0 X 200% ≤ X < 300% 1 X - 100% 300% ≤ X < 400% 2 X - 200% the expansion result ≈X ≈X ≈X Pixels are removed based on the same programmable 7-bit Base-3 counter used for the expansion. Data can be reduced down to 0.0457% (1/2187 x) and expanded up to 399.95% (~4x). To preserve image quality, it is recommended that an input line be reduced by no more than 2/3 times (66.67%) it's original resolution (this will ensure that 2 consecutive input pixels will never be removed). The following block diagram depicts the BRC block diagram. The functions are broken up into the blocks that represent the imdividule VHDL that make up the BRC design. Note that the two blocks, Vertical ORING and BRC Out FIFO, outputs are tied together. This represents the fact that only one of these output modes are operational at time. Resolution Converter DMA Data In BRC In FIFO DMA Req 9 Parallel to Serial BRC Counters In Mux ORING Algo. Filter, ORing Shingle T4 Serial Data In DMA Data Out Horizontal Shifter Serial To Parallel Vertical ORING DMA Req 8 BRC Out FIFO Figure 9-1: Bi-level Resolution Conversion Block Diagram 9-2 Conexant 100723A Hardware Description 9.1.2 MFC 2000 Multifunctional Peripheral Controller 2000 Vertical Conversion Expansion in the vertical direction is accomplished by the processor duplicating lines as needed to achieve the desired expansion ratio. Reduction in the vertical direction is accomplished by the processor either deleting lines or ORing lines together as needed to achieve the vertical reduction ratio. ORing of lines is also done by the resolution conversion logic. When ORing is enabled, each byte of the current line's line buffer data is ORed with the corresponding byte from the previous line. The DMA channel associated with the Resolution Conversion Block performs a read-modify (OR) -write operation. The DMA read and write accesses do not occur on consecutive bus cycles. The firmware should set the DMA channel start address for the line to be ORed equal to the address for the previous line. The threshold of the ORing function is selectable. If the threshold value is 0, all the black pixels in the current line will be used for the ORing function. In order to reduce the background image noise, the threshold value can be set from 1 to 7. If the threshold value is set to 2, the single black pixels and 2 contiguous black pixels in the current line will not be used for the ORing function. 9.1.3 Shingling Shingling is a process in which color intensity was built up in the course of several passes of the head for the inkjet printing. The objective is to print a portion of the data on each of the passes, using a checkerboard mask to decide which pixels to print on each pass and which pixels to mask out. This allows time for dots of ink printed on one pass to dry somewhat before adjacent ink dots are printed on subsequent passes, thereby improving quality. The checkerboard varies with the level of shingling in use. This level is described as a percentage, with 50, 33, and 25 percent shingling levels having been discussed to date. Briefly: 50 percent shingling requires two passes of the head. The matrix below shows a section of the pixels on the page, with the number being the pass of the head on which the pixel in printed: 1212121212121212121212 2121212121212121212121 1212121212121212121212 2121212121212121212121 33 percent shingling requires three passes to build up full intensity: 123123123123123123123123 312312312312312312312312 231231231231231231231231 123123123123123123123123 25 percent shingling requires four passes: 132413241324132413241324 241324132413241324132413 132413241324132413241324 241324132413241324132413 Paper moves a portion of the height of the nozzle array between passes of the head, so different nozzles print different dots on a scanline. In this situation, the data for the scanline must be moved from the band buffers to the print buffers several times, with a mask applied along the way so that only part of the data gets through on each move. Note that printing is slower when shingling is in use, so bandwidth is not significantly affected. Also note that the mask changes between scanlines. 100723A Conexant 9-3 MFC2000 Multifunctional Peripheral Controller 2000 9.1.4 Hardware Description Horizontal Shift Function Assume that the color inkjet head is used. There are 3 color groups. There are 16 nozzles for each color group on the inkjet head. The image data is usually line-based. For the inkjet printing, we can’t feed the line based data right into the inkjet head. The line-based image data needs to be rearranged to match the inkjet head firing order and will be no longer line-based. As you can see from the diagram at the next page, if nozzle 1 in the top nozzle group needs the 1st pixel of line 1, nozzle 2 in the top nozzle group needs the (NP)th pixel of line 2. If there is a total of 48 nozzles, we will need to group 3 halfwords (48 pixels) of data from different lines, different columns, and different color planes. Then, another 3 half-word group for the next firing cycle. These 3 half-word groups will be sent to the external print ASIC. The external print ASIC will map these 48 pixels to the right nozzle location and control the fire sequence and timing within one firing cycle. In order to do inkjet printing, the line-based printing data from different color planes for each printing swath need to be prepared by Firmware. Under the assumption above, 48 lines (16 lines/color group) of data need to be prepared for one printing swath by Firmware. The vertical pitch (VP) in the diagram below is taken care of by the Firmware and the DMA operation. Then, Bi-level Resolution Conversion block fetches the line-based printing data through DMA operation. The linebased printing data is serially processed in the Bi-level Resolution Conversion block. The process order is bi-level resolution conversion -> singling -> horizontal shift -> oring (optional). After these processes, the shifted linebased print data will be put back to the printing buffer by the DMA operation. The nozzle pitch (NP) and horizontal pitch (HP) in the diagram below are taken care of by the horizontal shifter in the Bi-level Resolution Conversion block. For example, the NP is 8 pixels and HP is 18 pixels. We want to prepare the shifted line-based printing data for nozzle 1 of the top group in the diagram below, the horizontal shifter will insert (8+18) zeros in the beginning of this line. If we want to prepare the shifted line-based printing data for nozzle 2 of the top group in the diagram below, the horizontal shifter will insert 18 zeros in the beginning of this line. If we want to prepare the shifted line-based printing data for nozzle 1 of the middle group in the diagram below, the horizontal shifter will insert 8 zeros in the beginning of this line. If we want to prepare the shifted line-based printing data for nozzle 2 of the middle group in the diagram below, the horizontal shifter will insert nothing in the beginning of this line. The actual shifting amount for each line needs to be changed according to the inkjet head which you are using and the mechanical orientation. All the pixels needed for one firing cycle will be at the same column after the horizontal shift process. The number of zeros inserted in the beginning of lines is programmable from 0 to 63. If extra zeros (>63 ) are needed, multiple of 16 zeros need to be prepared into memory by firmware. Finally, the Bit Rotation block gets the shifted line-based printing data through the DMA operation. The Bit Rotation block groups 48 pixels at different lines and at the same column to 3-halfword data for one firing cycle (See the Bit Rotation section for details). 9-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 NP 1 3 5 7 2 lines NG-3 NG-1 1 line 2 4 6 8 NP - Nozzle pitch in pels VP - Vertical pitch between nozzle groups in pels HP - Horizontal pitch between nozzle groups in pels. NG - Number of nozzles in nozzle group. NG-2 NG VP Note: Odd Nozzle Columns are located on the left in this figure. HP Figure 9-2. The Physical Nozzle Diagram for Typical Inkjet Heads The boundary condition also needs to be considered. The line length (pixels/line) of the bi-level resolution conversion input and output data is a multiple of 16 (See the bi-level resolution conversion section for details). If we insert different number of zeros in the beginning of lines, all the lines will end at different columns (not end at the same halfword boundary). Therefore, control bits need to be used. It indicates the total number of halfwords of zeros that needs to be added either at the beginning and at the end of each line (See the diagram below). 0 - 4 halfwords can be set in the register. The register for the total zeros (halfwords) = 2, set for all lines The register for zeros in front (pixels) =26, 18, 8, or 0, set for each line Example: line1 line2 line17 26 zeros 18 zeros 8 zeros line33 324 halfwords / line line34 26 zeros 18 zeros 14 zeros 324 halfwords / line 324 halfwords / line line18 6 zeros 324 halfwords / line 324 halfwords / line 324 halfwords / line 24 zeros 32 zeros 6 zeros 14 zeros Figure 9-3. Untitled Figure 100723A Conexant 9-5 MFC2000 Multifunctional Peripheral Controller 2000 9.1.5 Hardware Description First and Last Black Data Detector Design Below is a schematic representation of the Black Data Detector. The counter and registers get cleared at the start of each line. On the left side of the diagram is the half word counter that is incremented each time a half word is pushed into the FIFO (lcl_nxt). When the line starts, each time a lcl_nxt or lcl_wr shifts data into the output FIFO holding register, the serial data is checked for black data. If black data is detected, the End Of White flag is set. Once set, the logic waits until the counter is incremented, (the holding register is pushed into the FIFO data register). Then the new count value is loaded into the First Black Data Register. As data continues to be shifted into the FIFO, the logic at the bottom of the Figure 1-2-2 continues to check for black data. Each time black data is detected the Blk Data Det flag is set. After that half word is loaded into the FIFO data register (counter counts), the counter value is loaded into the Last Black Data Register. 9.2 Register Description External memory setup • • • • The external memory is selected as the data source by setting bit 2 in the BiResConvCtrl register to one in the Bi-level Resolution Conversion block. The block size of the data in the external memory for the Bi-level resolution conversion is set in the DMA9BlockSize register of the DMA Controller. Vertical Line ORing for the resolution converted data is enabled by setting bit 0 in the BiResConvCtrl register in the Bi-level Resolution Conversion block. The Bi-level resolution conversion is initiated by setting bit 1 (first to 1 and then, to 0) in the BiResConvCtrl register in the Bi-level Resolution Conversion block. T4/T6 Control • • T4/T6 Decoder Bi-level resolution conversion is enabled by setting bit 5 in the ‘T4Config’ register in the T4/T6 Compression/Decompression Logic. Vertical Line ORing for the T4 Decoded data is enabled by setting bit 3 in the ‘T4Control’ register in the T4/T6 Compression/Decompression Logic. Vertical ORing for T4 decoded data is only valid if resolution conversion is also enabled. Programming the Expansion/reduction Ratio The Bi-level Resolution Conversion Ratio register (BiResConRatio) controls the horizontal resolution conversion expansion or reduction ratio. The BiResConRatio register is cleared on Reset. The value programmed into the register is the number of pixels to add or remove per 2187 pixels (expressed as a 7 digit base-3 number). 9-6 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Input data FIFO Control register for the data from the external memory (for DMA channel 9): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bi-level Resolution Conversion Input Data FIFO Control (BiRCInFIFOCtrl) $01FF807B FIFO Enabled (R) Data Request (R) FIFO Ready (R) FIFO DMA Threshold Address: Bit 7 Bit 6 Bit 5 Bit 4 Bi-level Resolution Conversion Input Data FIFO Control (BiRCInFIFOCtrl) $01FF807A (Not Used) Holding (Not Used) Register Full Bit 3 FIFO Data Quantity Bit 10 Bit 2 Bit 9 Bit 8 Default: FIFO Output Pointer Rst Value 00h Read Value 00h Bit 1 Default: Bit 0 FIFO Input Pointer Rst Value x0x00000b Read Value 00h Bit 15 This bit indicates that the FIFO is active and capable of generating DMA requests. Bit 14 This bit is essentially a copy of the DMA Request output signal and indicates that the FIFO wishes to transfer data. Bit 13 This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10 This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 0 to 4. Values greater than 4 are treated as 4. Bit 9-8 This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 6 This bit indicates that there is a full word in the holding register Bit 4-2 This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0 This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Note: It is strongly recommended that the FIFO be disabled before firmware writes to the FIFO Control register. The FIFO Control register contains data that is essential to the FIFO’s operation. If this data is changed while the FIFO is operating, unpredictable operation will result. 100723A Conexant 9-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Input data Holding Register for the data from the external memory (for DMA channel 9): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bi-level Resolution Conversion Input Data Holding Register (BiRCInHold) $01FF8079 data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Bi-level Resolution Conversion Input Data Holding Register (BiRCInHold) $01FF8078 data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h Input data FIFO halfword[3:0] for the data from the external memory (for DMA channel 9): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bi-level Resolution Conversion Input Data FIFO (BiRCInFIFOx) data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Bi-level Resolution Conversion Input Data FIFO (BiRCInFIFOx) data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h Address assignment for input FIFO halfword[3:0] The Input FIFO halfword The register name Address Input FIFO halfword 3 BiRCInFIFO3 01FF8077-76 Input FIFO halfword 2 BiRCInFIFO2 01FF8075-74 Input FIFO halfword 1 BiRCInFIFO1 01FF8073-72 Input FIFO halfword 0 BiRCInFIFO0 01FF8071-70 Output data FIFO Control register for the data to the external memory (for DMA channel 8): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bi-level Resolution Conversion Output Data FIFO Control (BiRCOutFIFOCtrl) $01FF808B FIFO Enabled (R) Data Request (R) FIFO Ready (R) FIFO DMA Threshold Bit 5 Address: Bit 7 Bit 6 Bi-level Resolution Conversion Output Data FIFO Control (BiRCOutFIFOCtrl) $01FF808A (Not Used) Holding (Not Used) Register Full 9-8 Bit 4 Bit 11 Bit 3 FIFO Data Quantity Conexant Bit 10 Bit 9 Bit 8 FIFO Output Pointer Bit 2 Bit 1 Bit 0 FIFO Input Pointer Default: Rst Value 00h Read Value 00h Default: Rst Value x0x00000b Read Value 00h 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 This bit indicates that the FIFO is active and capable of generating DMA requests. Bit 14 This bit is essentially a copy of the DMA Request output signal and indicates that the FIFO wishes to transfer data. Bit 13 This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10 This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 0 to 4. Values greater than 4 are treated as 4. Bit 9-8 This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 6 This bit indicates that there is a full word in the holding register Bit 4-2 This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0 This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Note: It is strongly recommended that the FIFO be disabled before firmware writes to the FIFO Control register. The FIFO Control register contains data that is essential to the FIFO’s operation. If this data is changed while the FIFO is operating, unpredictable operation will result. Output data Holding Register for the data to the external memory (for DMA channel 8): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bi-level Resolution Conversion Output Data Holding Register (BiRCOutHold) $01FF8089 data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Bi-level Resolution Conversion Output Data Holding Register (BiRCOutHold) $01FF8088 data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h 100723A Conexant 9-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Output data FIFO halfword[3:0] for the data to the external memory (for DMA channel 8): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bi-level Resolution Conversion Output Data FIFO (BiRCOutFIFOx) data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Bi-level Resolution Conversion Output Data FIFO (BiRCOutFIFOx) data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h Bit 8 Default: Address assignment for output FIFO halfword[3:0] The output FIFO halfword The register name Address Output FIFO halfword 3 BiRCOutFIFO3 01FF8087-86 Output FIFO halfword 2 BiRCOutFIFO2 01FF8085-84 Output FIFO halfword 1 BiRCOutFIFO1 01FF8083-82 Output FIFO halfword 0 BiRCOutFIFO0 01FF8081-80 Bi-level Resolution Converter Ratio Registers: Address: Bit 15 Bi-level Resolution Conversion Ratio (BiResConRatio) 00FF807D Add/Delete 729 or 1458 pixels per 2187 input pixels 0:= 0 pixels 1:= Not allowed 2:= 729 pixels 3:= 1458 pixels Bit 14 Add/Delete 243 or 486 pixels per 2187 input pixels 0:= 0 pixels 1:= Not allowed 2:= 243 pixels 3:= 486 pixels Add/Delete 81 or 162 pixels per 2187 input pixels 0:= 0 pixels 1:= Not allowed 2:= 81 pixels 3:= 162 pixels Add/Delete 27 or 54 pixels per 2187 input pixels 0:= 0 pixels 1:= Not allowed 2:= 27 pixels 3:= 54pixels Rst Value 00h Read Value 00h Address: Bit 7 Bit 5 Bit 3 Bit 1 Default: Bi-level Resolution Conversion Ratio Control (BiResConRatio) 01FF807C Add/Delete 9 or 18 pixels per 2187 input pixels 0:= 0 pixels 1:= Not allowed 2:= 9 pixels 3:= 18 pixels Bit 6 Bit 13 Bit 12 Bit 4 Add/Delete 3 or 6 pixels per 2187 input pixels 0:= 0 pixels 1:= Not allowed 2:= 3 pixels 3:= 6 pixels Bit 11 Bit 10 Bit 2 Add/Delete 1or 2 pixels per 2187 input pixels 0:= 0 pixels 1:= Not allowed 2:= 1pixels 3:= 2 pixels Bit 9 Bit 0 Expansion/R Simple OR eduction Enable Mode 0=Exp. 1=Red. Bit 15-2 Sets Ratio for Reduction/Expansion of image data Bit 1 Sets Expansion or Reduction mode Bit 0 Turns on simple oring mode of 2 pixels for horizontal reduction 9-10 Conexant Rst Value 00h Read Value 00000000 b 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bi-level Resolution Conversion Control Register: Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bi-level Res. Conversion Control (BiResConCtrl) 01FF807F (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Flush FIFO (W) Flush Status (R) Rst Value xxxxxxx0b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Bi-level Res. Conversion Control (BiResConCtrl) 01FF807E Expansion Mode Data Source Selection 0=T4/T6 1=Ext. Mem. New line Write 1 and then, 0 " convert a new line Enable Or of orig. line buffer with current scan line Rst Value 00h Read Value 00h 0 = 100% ≤ X < 200% 1 = 200% ≤ X < 300% ORing Threshold Setting 0= no threshold 1-7= threshold value 1-7 2 = 300% ≤ X < 400% Bit 8 For write, 1 " flush FIFO. For read, 1 " flush needed. Bit 7-6 These two bits sets the resolution conversion hardware’s expansion range. If the value of these two bits is ‘n’ and the expected expansion ratio is X, the ratio ‘X-(n* 100%)’ needs to be set into the BiResConRatio register. Bit 5-3 n = the threshold value for the ORing function, n = 0-7. It means that Oring is done to (n+1) contiguous 1’s only when bit 0 is set to 1. Bit 2 Data Source selection When this bit is set to 0, data is serially from the T4/T6 decompressor. When this bit is set to 1, data is from the external memory through the DMA operation (DMA channel 9). Bit 1 Convert a new line Resolution Conversion Logic is reset. Firmware needs to write a 1 and then, immediately write a 0 to tell hardware to convert a new line. Bit 0 Enable OR of orig. line buffer with current scan line (ScanOrEnb) (This bit is only used when the external scan device is selected as the data source of the resolution conversion). 1 = enable Bi-level Vertical OR'ing of the scanner line buffer data. This bit can be used to accomplish normal mode OR'ing and vertical reduction. Note: If you don’t want to do image expansion or image reduction, the resolution conversion ratio is 100%. You need to program bits[7:6] of the BiResConCtrl register to ‘00b’ and program the BiResConRatio register to ‘0000h’. 100723A Conexant 9-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Shingling Mask Register: Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Shingling Mask Register (ShinglingMask) $01FF808D (Not Used) (Not Used) (Not Used) (Not Used) Mask bit 11 Mask bit 10 Mask bit 9 Mask bit 8 Rst Value xxxx1111h Read Value 0Fh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Shingling Mask Register (ShinglingMask) $01FF808C Mask bit 7 Mask bit 6 Mask bit 5 Mask bit 4 Mask bit 3 Mask bit 2 Mask bit 1 Mask bit 0 Rst Value FFh Read Value FFh This is a loadable circular right-shift register which firmware can load a mask. A 1 in a mask bit means to let that pixel pass through and A 0 in a mask bit means to block that pixel and output 0 for that pixel. The output of this shift register (LSB) gates with the serial data from the resolution convertor on each bi-level resolution conversion clock. The shift register is clocked in sync with the serial to parallel converter so that the mask rotates in sync with the serial data. This 12-bit shingling mask register supports 50, 33, and 25 percent shingling. For example, for the 33 percent shingling, firmware should load 001001001001, 010010010010, or 100100100100, depending on the scanline and pass in question. The number of zeros inserted in a line for the Horizontal Shifter: Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: The Number of Zeros in a line (HSZeroNo) $01FF808F (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) data bit 2 data bit 1 data bit 0 Rst Value xxxxx000b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: The Number of Zeros in a line (HSZeroNo) $01FF808E (Not Used) (Not Used) data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xx000000b Read Value 00h Bit 10-8 The total number of zeros (halfwords) in a line 0 = nothing is added 1 = 1 halfword (16 zeros) 2 = 2 halfwords (32 zeros) 3 = 3 halfwords (48 zeros) 4 = 4 halfwords (64 zeros) 5-7 = not used Bit 5-0 The number of zeros (pixels) in the beginning of a line, from 0 to 63 zeros Note: If value 5, 6, or 7 is put into this register, 4 halfword (64 zeros) will be used. 9-12 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 First Black Data: Address: Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: The First Black Data (Not Used) Location Count (FirstBlkDatCnt) $01FF806D (Not Used) (Not Used) (Not Used) data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxxx0000b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: The First Black Data data Location Count bit 7 (FirstBlkDatCnt) $01FF806C data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00000000b Read Value 00h Bit 11-0 Bit 15 The First Black Data Location Gives the half word count that black data first appeared in output of the BRC. If the first half word contains black data the register will remain at 000H. If the second half word contains data the register will contain 0001H Etc. If black data in not present in the entire line (all white line), register will be equal to the line length. First Half Word Location = Register Value + 1. Note: Starting a new line will reset the counter Last Black Data: Address: Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: The Last Black Data (Not Used) Location Count (LastBlkDatCnt) $01FF806F (Not Used) (Not Used) (Not Used) data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxxx0000b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: The Last Black Data data Location Count bit 7 (LastBlkDatCnt) $01FF806E data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00000000b Read Value 00h Bit 11-0 Bit 15 The Last Black Data Location Gives the half word count that black data last appeared in output of the BRC. If black data in not present in the entire line (all white line), register will read 000H. If only the first half word contains black data the register will read 001H. If the second half word contains data the register will contain 0002H Etc. If the last half word contains black data the register will be equal to the total number of half words out of the BRC for that line. Last Half Word Location = Register Value. Note: Starting a new line will reset the counter 100723A Conexant 9-13 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Total Colored Pixel Counter: Address: Bit 15 Total Colored Pixels (Not Used) Printer Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: (Not Used) data data data data data data Rst Value bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 xxxx0000b (TotalBlkDatCntr) Read Value 00h $01FF806B Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Total Colored Pixels data Printer (TotalBlkDatCntr) bit 7 data data data data data data data Rst Value bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 00000000b Read Value 00h $01FF806A Bit 13-0 9-14 Total Colored Pixel Counter Reading this register will return the total number of colored pixels printed since the last time the register was cleared. Writing to this register will clear it. Conexant 100723A Hardware Description 9.3 MFC 2000 Multifunctional Peripheral Controller 2000 Resolution Conversion Programming Examples Figure 9-4 is a flowchart that shows the procedure for determining the resolution conversion register values for both expansion and reduction modes: Expand Compute pixels to add per 2187 input pixels: Int{[(Output-(m+1)*Input)/Input] * 2187 + 2/3} m: expansion mode Represent pixels to add as a sum of numbers: (3**n) and ( 2 * (3**n) ) where n=0, 1, ... 6 Fill in both registers according to sum and register definition Reduce Expand or Reduce ? Compute pixels to remove per 2187 input pixels: Int{[(Output-Input)/Input] * 2187} Represent pixels to remove as a sum of numbers: (3**n) and (2 * (3**n)) where n = 0, 1, ...6 Fill in both registers according to sum and register definition Notes: 1) Input = Input Resolution (number of pixels/input line) 2) Output = Output Resolution (number of pixels/output line) 3) For expansion, Output < (4*Input) 4) For reduction, Output < Input 5) For best results in reduction, (Input-Output)/Input <= 1/3 Figure 9-4: Resolution Conversion Programming The number of pixels to add in expansion mode is determined from the integer portion of: Pixels to add per 2187 input pixels = {[ (Output pixels per line - (m+1) * Input pixels per line)/input pixels per line ] * 2187 +2/3} m: the expansion mode Note: 2/3 is added in this equation in order to guarantee that the truncated result will be greater than or equal to the desired number of output pixels per line. The number of pixels to remove in reduction mode is determined from the integer portion of: Pixels to remove per 2187 input pixels = {[(Input pixels per line - Output pixels per line)/input pixels per line] * 2187} Note: For best results, the number of pixels removed (per 2187 pixels) in reduction mode should be less than or equal to 729. {i.e., [(Input Pixels - Output pixels)/Input pixels] < = 1/3} 100723A Conexant 9-15 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The number of pixels to add or remove per 2187 pixels is next converted to a 7 digit base-3 number. Each digit in the Base-3 number is weighted as: MSD LSD Digit n 0 1 2 3 4 5 6 Weight 1/3 1/9 1/27 1/81 1/243 1/729 1/2187 Note: MSD = most significant digit, LSD = lease significant digit. Each digit can take on 3 possible values: 0, 1, or 2; corresponding to adding or removing (0, 1 or 2) * 3(6-n) pixels for every 37 input pixels or, equivalently, adding or removing 0,1, or 2 pixels for every 3(n+1) pixels. Note: The actual number of pixels output from the resolution conversion block will always be a multiple of 16 pixels. Example: Reduction of 2048 pixel/line to 1728 pixel/line (B4 to A4 Reduction) Given: Input Resolution = 2048 pixel/line Output Resolution = 1728 pixel/line Notes: 1. Output Resolution must be a multiple of 16. 2. (Input Resolution - Output Resolution)/Input Resolution < = 1/3 for best results (i.e., consecutive pixels will not be removed)) In this case, (Input Resolution - Output Resolution)/Input Resolution = 320/2048 = 5/32. Therefore, ideally 5 pixels will be removed for every 32 input pixels. Compute the number of pixels to remove per 2187 input pixels: Int{ [(Input-Output)/Input]*(2187) } = Int{ [(2048-1728)/2048]*(3**7) } = Int { [320/2048]*2187 } = Int { 341.71875 } = 341 Therefore, 341 pixels will be removed for every 2187 input pixels. Represent the number of pixels to add per 2187 input pixels using powers of 3: Using Figure 9-1 determine which combination of powers of 3 digits are required to represent 341. The table should be filled from top to bottom. The sum of the enabled digits should equal 341 as illustrated below: 341 = 243 + 81 + 9 + 6 + 2 Therefore, digits 243, 81, 9, 6, and 2 should be enabled in the table. 9-16 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 9-2: Procedure to determine Pixels to remove Pixels to Remove per 2187 Input Pixels Yes/No 1458 N 729 N 486 N 243 Y 162 N 81 Y 54 N 27 N 18 N 9 Y 6 N 2 Y 1 N Table 9-3 lists common resolution conversion values. Table 9-3: Resolution Conversion Examples Conversion dots/inch Input dots/line Output dots/line Ideal # of pixels/line to insert (remove) Pixels to insert (remove) per 2187 ResConMSD (hex value) 200 to 300 1728 2456 728 922 $8E $28 200 to 300 1728 2400 672 851 $8A $AC 200 to 360 1728 2952 1224 1549 $C8 $88 200 to 600 1728 3280 1552 1964 $F0 $CC 200 to 720 1728 3280 1552 1964 $F0 $CC 200 to 300 2048 2456 408 436 $2E $28 200 to 360 2048 2952 924 966 $8F $E0 200 to 600 2048 3280 1232 1316 $B8 $CC 200 to 720 2048 3280 1232 1316 $B8 $CC 200 to 200 2048 1728 (320) (341) $28 $BE 100723A Conexant ResConLSD (hex value) 9-17 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank 9-18 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 10. External Print ASIC Interface The interface signals used between the MFC2000 and the external Print ASIC are described in this section. They are basically the external ARM system bus interface signals. Conexant’s Alcore chip is an external Print ASIC and it has the P1284 master port to talk to the P1284 slave port in the Printer. 10.1 Interface Between the MFC2000 and External Print ASIC The MFC2000 ASIC is the master that controls the system bus and all other control signals. The MFC2000 firmware configures and controls the external Print ASIC by setting registers in the external Print ASIC through the system bus. See Figure 10-1. AUXCLK can be used as the clock base for the external Print ASIC. No matter AUXCLK or external OSC is used for the external Print ASIC, the external Print ASIC needs to resynchronize all the signals and accesses for the metastable problems caused by different clocks. The MFC2000 internally uses SIUCLK and ICLK which are different from the external Print ASIC. The interrupt PRTIRQn is used to tell the MFC2000 that further settings or actions are needed for the external Print ASIC. The register bits in the external Print ASIC may be used to indicate which settings or actions need to be performed. If the extra interrupt channel is required, the external IRQ13n and IRQ11 can be also used for the external Print ASIC. These three interrupt input signals are resynchronized twice for the metastable issues. The external Print ASIC needs to be designed with the compatible CPU read/write bus timing and DMA bus timing used in the MFC2000 ASIC. The external DMA channel between the MFC2000 ASIC and the external Print ASIC is DMA channel 2. The external Print ASIC may get the print data from the bit rotation block if the bit rotation block is used or get the print data from the external memory if the bit rotation is done by host or the external Print ASIC. 1. The external Print ASIC gets the print data from the external memory. When the external Print ASIC generates the DMA request (DMAREQ2) to request the printing data, the MFC2000 will respond with the DMA acknowledge (DMAACK2) at the valid access cycle. At the same cycle, the MFC2000 will generate the read strobe, address, and the external chip select signals to read one byte or halfword of print data out of the external memory and put on the data bus. At the rising edge of the read strobe when DMAACK2 is high (DMAACK acts as a chip select), the external Print ASIC latches this one byte or halfword printing data in. If additional data bytes or halfwords are required by the external ASIC, it may leave the DMAREQ2 active. If no additional data is required, the ASIC should pull the DMAREQ2 inactive immediately after DMAACK goes low. DMA address will be incremented, decremented, or jumped during the DMA operation according to the fetch order of the print data in the external memory (See the DMA Controller Section). Note: No matter the data bus is byte or halfword wide, the memory data bus size must match with the data bus size of the external Print ASIC. The Endian control bit for the DMA2 needs to be 0. The Endian mode can’t be changed during the DMA operation. 2. The external Print ASIC gets the print data from the bit rotation block. When the external Print ASIC generates the DMA request (DMAREQ2) to request the printing data, the MFC2000 will respond with the DMA acknowledge (DMAACK2) at the valid access cycle after the print data ready in the output register of the Bit Rotation Block. At the same cycle, the MFC2000 will generate the read strobe, address, and internal chip select signals to read one halfword of print data out of the output register of the Bit Rotation block and put on the data bus. The MFC2000’s SIU may generate two access cycles for the byte-wide external data bus (the bit 8 of the DMA2Config register needs to be set to 0) or one access cycle for the halfword-wide external data bus (the bit 8 of the DMA2Config register needs to be set to 1). At the rising edge of the each read strobe when DMAACK2 is high (DMAACK acts as a chip select), the external Print ASIC latches this one byte or halfword printing data in. If additional data bytes or halfwords are required by the external ASIC, it may leave the DMAREQ2 active. If no additional data is required, the ASIC should pull the DMAREQ2 inactive immediately after DMAACK goes low. The DMA address is fixed during the DMA operation (See the DMA Controller section and the Bit Rotation section). 100723A Conexant 10-1 MFC2000 Multifunctional Peripheral Controller 2000 • Hardware Description CS4n, CS3n, or CS2n may be used as the chip select signal for accessing registers in the external Print ASIC (See Memory Map Section) AMFPC AUXCLK Print ASIC PRTIRQn DMAREQ2 DMAACK2 System Data Bus System Address Bus CS Figure 10-1. Print ASIC Interface 10.1.1 Examples 10.1.2 Motor Control Examples of the Inkjet Print Head Module Vertical Movement The vertical motor stepping control logic in the MFC2000 may be used for the Inkjet printing (See Section 12.1). For Laser printing, this internal vertical motor stepping control logic is not used. Horizontal Movement The horizontal stepper motor control logic or the horizontal DC motor control logic should be in the external print ASIC. Whenever the external print ASIC needs the new timer value(s) or the PWM value(s) which is used to control the time interval between steps or the DC motor speed, the external print ASIC generates the interrupt (PRTIRQn) to the MFC2000 ASIC. Then, the MFC2000 CPU will write the new timer value(s) to the register(s) in the external print ASIC in the interrupt subroutine. 10-2 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 11. Bit Rotation Logic 11.1 Functional Description Bit Rotation Logic is responsible for preparing line-based image data to be used for a color or mono inkjet head. It is designed to be completely universal, so that any inkjet head may be supported regardless of nozzle configuration, provided there is only one nozzle per line of the printed image. An example of a typical 3-color inkjet head is shown. NP 1 3 5 7 2 lines Color1 NG-3 NG-1 1 line 2 4 6 8 NP - Nozzle pitch in pels VP - Vertical pitch between nozzle groups in pels HP - Horizontal pitch between nozzle groups in pels. NG - Number of nozzles in nozzle group. NG-2 NG VP Color2 Color3 HP Figure 11-1. Nozzle Diagram of a Typical Programmable Inkjet Head The inkjet head shown is only an example. There are many other configurations that may be supported. The BiLevel Resolution Conversion block works in conjunction with firmware to ensure that all parameters that correspond to nozzle shifts are removed before the image data is deposited in the swath buffer for removal by the Bit Rotation Block. In addition, the Bit Rotation block does not need to distinguish the difference between mono or inkjet color modes. A few examples of nozzle configurations that can be supported are shown in the figures. These are only to show examples of the universal design. 100723A Conexant 11-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Line 1 Line 2 Line 3 etc... Nozzle Example A Nozzle Example B Figure 11-2. Examples of Nozzle Head Configurations Because the firmware and Bi-Level Resolution Conversion block work in conjunction to remove all nozzle shift parameters, the Bit Rotation Block may always view the data in such a way that it views the nozzles as always being one column of N nozzles, where N corresponds to the number of nozzles on the inkjet head itself. In fact, the only configuration information that the Bit Rotation block needs to know is the number of nozzles on the inkjet head, the shuttle direction, the width of the line being printed, and the warp. The figure shows how the Bit Rotation Block views the swath regardless of the actual physical nozzle configuration. Line 1 Line 2 Line 3 N = Number of nozzles in inkjet head Line N Figure 11-3. Nozzle Configuration by Bit Rotation Block (Regardless of Physical Nozzle Configuration) The BRB works in conjunction with 2 DMA channels of the DMA controller. Within the MFC2000, the DMA channels used are channels 2 and 3. Channel 3 is used to “fetch” data from the external swath buffer that resides in the system’s image memory, and is referred to as the Swath Fetcher DMA channel from here on. DMA Channel 2 is used to transfer “packed” or rotated image data to the External Print ASIC, and will be referred to as the Bit Packer DMA channel from here on. The BRB uses a local memory (in the BRB block) to perform its rotation operation. Words are “fetched into the local memory, and then bits are picked out of the halfword and then “packed” or shifted into an output register, in effect, rotating the swath image data by 90 degrees. The internal buffer size within the Bit Rotation Block is 512 x 1 halfword (16 bits). This buffer is further subdivided into two separate 256 x 16 bit “banks” for reasons of system performance. While one 256 x 16-bit buffer is being operated upon, the other 256x16-bit buffer may be filled by the Fetcher DMA channel. Because of this, the system only needs to keep up with the print rate, which in the worst case scenario, is 256 bits every fire cycle if 256 nozzles are used. 11-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Once the data is prepared for output by the Bit Rotation Block, it may be retrieved by the External Print ASIC via the Bit Packer DMA channel. The BRB issues the ready signal to indicate that a halfword of data is ready for retrieval to the DMA Controller. Then, the DMA Controller will grant the DMA channel 2 access cycle by activating the DMAACK2 when system bus is available if DMAREQ2 is active and BRB output ready signal is active. 11.2 Block Diagram A high-level block diagram of the Bit Rotation Block is shown. Note that the internal RAM is double-banked, so that these operations of fetching and packing can occur simultaneously (however, they are not allowed to occur to/from the same bank at the same time). brb_regsThis block is used to hold the internal registers of the BRB. The registers are split into setup registers, operation registers, and test registers. Each group has a separate chip select sent by the SIU. brb_memifThis block has three separate interfaces: the SIU, the Swath Fetcher, and the Bit Packer. If a bit rotation operation is in progress (rotateStart = 1 in the RotCtrl register), SIU local memory access is locked out, and only the swath Fetcher and Bit Packer blocks may access the memory at this time. If the rotateStart bit is not set, then the SIU has access to the 1 kB memory through locations 01FF9000h-01FF93FFh. Swath FetcherThis block works in conjunction with channel 3 of the DMA Controller to transfer image data from the swath buffer to the local SRAM for Bit Rotation. Bit PackerThis block is responsible for the actual rotation of image data. It performs this rotation by picking bits out the local SRAM and constructing the final rotated output data for the External Print ASIC. brbsyncThe brb_regs and Swath Fetcher blocks operate at the SIUCLK frequencies, while the Bit Packer and the brb_memif blocks operate at IHSCLK frequencies. The purpose of this block is to synchronize communications between the internal blocks of the BRB. ihsclk siuclk resn DMA control and handshaking signals Bit Packer Swath Fetcher brbsync BRB Control and register rd/wr signals Control, Status , and Data Registers BRB Local SRAM Memory Controller BRB local memory access control signals ipb_di[15:0] ipb_do[15:0] Data Mux BRB Block 512 x 16 Local SRAM Figure 11-4. MFC2000 Bit Rotation Block Diagram 100723A Conexant 11-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 11.2.1 Swath Fetcher The Swath Fetcher block is responsible for initiating as well as controlling the order of the transfer of data from the swath buffer to the internal RAM of the Bit Rotation Block. There are several control signals provided to the Swath Fetcher DMA channel for controlling what order the channel will read data out of image memory. The Fetcher DMA will not support burst mode. This is due to the fact that in order to use burst mode, the DRAM that comprises the image memory must be accessed using page mode. When accessing DRAM for the Bit Rotation block, the sequential data stream rarely contains elements out of the same page of DRAM. Because of this, in most cases, only single-access cycles can be realized when reading data out of the image memory for the Bit Rotation Block. The order in which data is fetched out of the swath buffer depends on shuttle direction only. The way data is fetched out of the swath buffer is best described pictorially. In the figure, each cell corresponds to a halfword (16 bits) in memory. The gray portion represents the printable image region, and a full line corresponds to the warp of the swath buffer. The general order in which halfwords are fetched from the swath buffer is indicated by the arrows. The starting address value that the firmware must program into the Swath Fetcher DMA channel depends on the shuttle direction. While printing in a left-to-right fashion (when viewing the print on the page), the value must correspond to the halfword of the upper left-hand corner of the image in the swath buffer (in the example shown, this address would be base+6H. While printing in a right-to-left fashion, the value must correspond to the upper right-hand corner of the image (in the figure, this would be base+AH). The value that would be programmed in the Rotation Line Length (RotLine) register in this example would be 0005H (one less than the actual number of bytes that comprise the image). base+2H base+4H base+6H base+8H base+AH base+CH base+warp-2H base base+warp base+2*warp base+3*warp base+4*warp base+5*warp Left-to-Right Shuttle Direction Fetch Order base+(NG-1)*warp base+2H base+4H base+6H base+8H base+AH base+CH base+warp-2H base base+warp base+2*warp base+3*warp base+4*warp base+5*warp Right-to-Left Shuttle Direction Fetch Order base+(NG-1)*warp Figure 11-5. Fetcher DMA Channel Fetch Order 11-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 11.2.2 Bit Packer The Bit Packer block is responsible for performing the actual rotation of the image data. It accomplishes this task by “picking” the bits out of the internal Bit Rotation RAM one bit at a time and packing them into the appropriate format such that the final output image is rotated 90 degrees. The Bit Packer circuits also contain the bit counter that describes the total number of printable bytes contained in the swath. The overall control of the print operation is controlled by this block. The parameters that are required by this block are: the Line Length (LL), the Nozzle Number (NN), the shuttle direction, and the packing order. In addition, this circuit also detects when there is an underrun condition. An underrun condition occurs when the system is not able to keep up with the print rate. Finally, the interface to the External Print ASIC is provided by this block. 11.2.3 Local Bit Rotation RAM This memory is 512x16. Functionally, this memory consists of 2 banks of 256x16 memories, and only one of these buffers is used at a time for rotating image memory data. The double-buffering is used for reasons of system performance. When using the double-buffering mechanism, the system only needs to transfer the data at a rate that corresponds to the print rate. This is due to the fact that while one bank is being loaded with swath data, the other bank is being operated upon, or rotated and shipped to the External Print ASIC. This memory is accessible by three resources: the SIU, the Swath Fetcher, and the Bit Packer. When a bit rotation operation is in progress (when rotateStart in the ROTCTRL register is set to 1), then the SIU may not access this memory. During this time, both the Swath Fetcher and the Bit Packer may access this memory, but not the same bank simultaneously. When no bit rotation operation is in progress (the rotateStart bit is set to 0), then only the SIU has access to this memory through address locations 01FF9000h-01FF93FFh. 11.2.4 BRB Local SRAM Memory Controller (brb_memif) The brb_memif block is responsible for controlling all accesses to Local BRB SRAM. During Bit Rotation operation, it will lock out all SIU accesses. At this time, it will allow both the Bit Packer and the Swath Fetcher blocks to access the SRAM. The Swath Fetcher block is a write-only resource, and the Bit Packer is a read-only resource. Arbitration to the SRAM by each of these resources is controlled with a rotating priority to ensure that neither the Swath Fetcher or the Bit Packer get locked out for any length of time. 11.2.5 Control, Status, and Data Registers (brb_regs) This block provides all required registers used in Bit Rotation operation. These registers are described in detail later in section 11.3. The functional registers are spilt into two separate areas: Operation registers, and Setup registers. The Operation registers are those registers that are meant for access during Bit Rotation. The Setup registers are those register that are intended to be used once to set up the next print swath for printing. The Operation registers for the Bit Rotation block are located at 01FF8060h-01FF806Fh, however, only locations 01FF8060h-01FF8063h are used. The Setup Registers are located at 01FF8870h-01FF888Fh, however, only locations 01FF8870h-01FF8875h are used. The registers are summarized. Register Address 100723A Register Name Summarized Description 01FF8060h Rotation Control - RotCtl Provides programmability of parameters, initiates Rotation, and provides status. 01FF8874h Rotation Line Length - RotLine Contains the value of the line length in terms of bytes. 01FF8870h Nozzle Number - RotNN Provides programmability of number of nozzles on inkjet head. 01FF8872h BRB Warp - BRBWarp Provides programmability of swath warp in increments of 32 bytes, up to 4096 bytes. 01FF8062h Packing Register - RotPack Provides the data for the External Print ASIC Conexant 11-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 11.2.6 BRB Synchronization The Swath Fetcher and the brb_regs blocks operate at SIUCLK frequencies, while the brb_memif, and the Bit Packer circuits operate at ihsclk frequencies. The reason for this is to control power consumption and noise, as the higher SIUCLK frequency is not required for operation of the Bit Packer and the BRB Local SRAM Controller. Because of these different frequencies, a synchronization block is required to allow these blocks to communicate in a reliable fashion. 11.3 Register Description Rotation Control Register Address Rotation Control Register (RotCtrl) 01FF8061 Address Rotation Control Register (RotCtrl) 01FF8060 Bit 15 Bit 14 Bit 13 Rotate Start (Not Used) (W) Rotate Status (R), 1:busy Bit 7 (Not Used) (Not Used) Bit 6 Bit 12 (Not Used) Bit 5 (Not Used) (Not Used) Bit 11 Bit 10 (Not Used) Bit 4 Bit 3 (Not Used) Bit 9 (Not Used) Bit 2 Packing Order 0: odd then even 1: even then odd Bit 8 (Not Used) Underrun 0: No underrun 1: Underrun occurred. Default (Not Used) Rst. Value 0xxxxxxxb Read Value 00h Bit 1 Bit 0 Packed-byte status 0: not ready 1: ready Shuttle Direction 0: Left to Right 1: Right to left Default Rst. Value xxxx0000b Read Value 00h Bit 15 To start the bit rotation function, the CPU should write a 1 to this bit location. Reading this bit location indicates the status of the block rotation function. 0 = Not busy, 1 = busy. This bit will be set to 0 at the end of a print swath, and all bit rotation circuits will be reset with the exception of the BRB registers. If an unrecoverable error condition occurs within the system, then the BRB block may be reset by creating a falling edge on the RotateStart bit. Bit 14-4 Not used Bit 3 The packing order allows the order of the groups of odd and even bits to be switched. Bit 3 = 0 => Odd bit is output first. 18 nozzles Bit 15 Bit 0 2nd DMA Ch2 halfword n17 n18 x x x x x x x x x x x x x x 1st DMA Ch2 halfword n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14 n15 n16 Bit 3 = 1 => Even bit is output first 11-6 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 18 nozzles Bit 15 Bit 0 2nd DMA Ch2 halfword n18 n17 x x x x x x x x x x x x x x 1st DMA Ch2 halfword n2 n1 n4 n3 n6 n5 n8 n7 n10 n9 n12 n11 n14 n13 n16 n15 Bit2 This bit indicates whether a print underrun condition has occurred. Basically, an underrun condition exists if the system is not able to keep up with the print rate. Bit 1 Once a halfword has been packed and is ready for output to DMA channel 2, a 1 will be indicated in this bit of the register. This bit directly reflects the state of the output signal brb_ch2rdy, and is intended only for status purposes. Once the data has been read, the bit is cleared automatically. The bit is also reset by creating a falling edge on the RotateStart bit. Bit 0 This bit is written by the CPU and indicates which direction the print head is moving as viewed when looking at the print on the page. 0 = left to right shuttle motion 1 = right to left shuttle motion Rotation Line Length Register Address Rotation Line Length Register (RotLineLength) 01FF8875 Bit 15 (Not Used) Address Rotation Line Length Register (RotLineLength) 01FF8874 Bit 7 LL7 Bit 14 (Not Used) Bit 6 LL6 Bit 13 (Not Used) Bit 5 LL5 Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 LL4 Bit 10 LL10 Bit 3 LL3 Bit 9 LL9 Bit 2 LL2 LL8 Bit 1 LL1 Bit 8 Bit 0 LL0 Default Rst. Value xxxxx000b Read Value 00h Default Rst. Value 00h Read Value 00h Bits 15-11 Not used Bits 10-0 The value in this field indicates the length in bytes of the actual printable data. The value programmed into this register is one less than the actual value in bytes. The printable data in a swath can be between 1 and 2048 bytes. 100723A Conexant 11-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Rotation Nozzle Number Register Address Rotation Nozzle Number Register (RotNN) 01FF8871 Address Rotation Nozzle Number Register (RotNN) 01FF8870 Bit 15 (Not Used) Bit 7 NN7 Bit 14 (Not Used) Bit 6 NN6 Bit 13 (Not Used) Bit 5 NN5 Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 NN4 Bit 3 NN3 Bit 10 (Not Used) Bit 2 NN2 Bit 9 (Not Used) Bit 1 NN1 Bit 8 Default (Not Used) Rst. Value xxh Read Value 00h Bit 0 NN0 Default Rst. Value 00h Read Value 00h Bits 15-8 Not used Bits 7-0 This value describes the total number of nozzles on the inkjet head. The value written into this register is one less than the actual number of physical nozzles. The total number of nozzles that can be supported is between 1 and 256. BRB Warp Address BRB Warp Register (BRBWarp) 01FF8873 Address BRB Warp Register (BRBWarp) 01FF8872 Bit 15 (Not Used) Bit 7 BW7 Bit 14 (Not Used) Bit 6 BW6 Bit 13 (Not Used) Bit 5 BW5 Bit 12 (Not Used) Bit 11 BW11 Bit 4 (Not Used) Bit 3 (Not Used) Bit 10 BW10 Bit 2 (Not Used) Bit 9 BW9 Bit 1 (Not Used) Bit 8 BW8 Bit 0 Default Rst. Value xxxx0000b Read Value 00h Default (Not Used) Rst. Value 000xxxxxb Read Value 00h Bits 15-12 Not used Bits 11-5 These bits are used to define the warp of the swath, or the actual jump line size. The smallest resolution of the warp is 32 bytes. The value that is written into this register is the actual value that will be used in the jump. The warp value can range from 0000h to 0FE0h. Bits 4-0 Not used 11-8 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Packing Register Address Rotation Packed Data Register (RotPackedData) 01FF8063 Address Rotation Packed Data Register (RotPackedData) 01FF8062 Bits 15-0 100723A Bit 15 RP15 Bit 7 RP7 Bit 14 RP14 Bit 6 RP6 Bit 13 RP13 RP12 Bit 5 RP5 Bit 12 Bit 11 RP11 Bit 4 RP4 Bit 3 RP3 Bit 10 RP10 Bit 2 RP2 Bit 9 RP9 Bit 1 RP1 Bit 8 RP8 Bit 0 RP0 Default Rst. Value 00h Read Value 00h Default Rst. Value 00h Read Value 00h This register shows the contents of the halfword content that will be sent to the External Print ASIC via the Bit Packer DMA controller channel. Conexant 11-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 11.4 Firmware Operation 11.4.1 Bit Rotation Setup and Operation The following describes how to setup and operate the Bit Rotation Block for printing of image swaths. The following example assumes that there is a 8Mbyte DRAM residing in bank 0 of the system in question. It is also assumed that the swath buffer that resides in this DRAM is located at the base address of this device and grows up. Since the memory grows down from address 03000000h, the base address for the DRAM is at 02800000. In addition, I am assuming that the image that is to be printed is 72 bytes wide, has a warp of 96 bytes, shuttle direction is right-to-left, and the number of nozzles is 56. Program the DMA Controller - Channel 2 and 3 1. Program the address of the Bit Rotation Packing Register (01FF8062h) into the DMA High Address Counter (01FF818Ah) and the DMACNT2LO (01FF8188h) and the DMA2CNTHI (01FF818Ah) registers: (DMACNT2LO) <= 8062h; (DMACNT2HI) <= 01ffh; 2. Program the DMA2CONFIG register (01FF81B2h). It must know that it is being used for Bit Rotation as well as for reads and halfword mode: (DMA2CONFIG) <= 0180h; 3. Program the DMA Channel 2 block size. Here, we set up for unlimited block size. Bit 15 is the enable bit for this channel. (DMA2BLKSIZE) <= 8000h; 4. The only registers that you need to program the DMA Channel 3 controller with is the address of the image memory: Since the shuttle direction is right-to-left, we must initialize these registers with the upper right-hand corner of the swath buffer. (DMA3CNTLO) <= 0046h; (DMACNT3HI) <= 0280h; Program the BRB 1. First, load the Rotation Line Length Register (ROTLINE - 01FF8874h) with one less than the length of the image which would be 72 bytes - 1 = 71 = 47h. (ROTLINE) <= 0047h; 2. Program the BRBWARP (01FF8872h) register with the actual warp value. Here, the warp is 96 bytes = 60h. (BRBWARP) <= 0060h; 3. Program the Nozzle Number into ROTNN (01FF8870h) with the number of nozzles -1. In this case, the actual number of nozzles is 56. So, we need to program the ROTNN with 56 - 1 = 55 = 37h. (ROTNN) <= 0037h; 4. Program the ROTCTRL (01FF8060h) with the proper value. In this case, the shuttle direction is right-to-left. (ROTCTRL) <= 8001h; Once the Rotation bit has been set, then Bit Rotation starts. The status bit (bit 15 of ROTCTRL) may then be polled to determine when the swath is completed with printing. On the next shuttle stroke, Only the address in channel 3 of the DMA controller needs to be changed as well as the shuttle direction bit within the ROTCTRL register. These should be the only parameters that need to change, once the initial parameters have been set up. 11-10 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 11.4.2 Swath Loader Requirements (Software Issues) Due to the fact that the color nozzles are staggered as well as the fact that there is a physical separation VP of the color groups themselves, there are very special requirements imposed on the swath loader. In a situation where the mode is black only, then a minimum of two block buffers within image memory are required. This is due to the fact that while one block buffer is being printed, the other buffer may be simultaneously filled by the image loader. Color mode is quite different from black-only print mode. In color mode, three separate colors are used: yellow, magenta, and cyan. The order of these colors may differ from one printhead to another. This is why the colors have been assigned simply as “Color1”, “Color2”, and “Color3” in Figure 11-1. On the first print swath of a page, Color3 is printed. On the next print block, Color3, and NG-VP + 1 nozzles of Color2 are printed. On the third pass, Color3, Color2, and NG-(2*VP) + 1 nozzles of Color1 are fired. In looking at this pattern, we see that two buffers are required to deal with printing Color3 (one block history required), three buffers are required in printing Color2 (two block history required), and four buffers are required in printing Color1 (three block history required). Peerless PCL has a limitation that the color blocks that comprise the image data cannot be easily split up in order to take into account the VP parameter. The color data must be contiguous within the blocks. Due to this fact (along with the fact that the CPU may need to perform some preprocessing of the image prior to printing), the color buffers that are provided for use by the Bit Rotation Block are prepared by the CPU in the background. The figure shows the typical preparation of these buffers in the background by the CPU. Note: Before scanning starts, the two prepared color buffers must be zero-filled by the CPU for reasons of top-of-page boundary conditions. If, at the end of the printed page, there are fewer lines than the number in the prepared buffers, then the remainder of the prepared buffers must be zero-filled to account for bottom-of-page boundary conditions. 100723A Conexant 11-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Note: Each Buffer is NG Lines deep Data Buffers Dynamically Allocated by CPU Note: This example shows what these buffers should look like if printing swaths 3 and 4 starting with swath 1. Two buffers prepared in background by CPU Color 3, Buffer 0, lines 0 to NG Color 2, Buffer 0 Lines NG-VP+1 to NG Color3, Buffer 0 Color3, Buffer 1 Color 2, Buffer 1 Lines 0 to NG-VP for swath 3 Color2, Buffer 0 lines 0 to (2*VP) - 1 are zero-filled. Color 1, Buffer 0, lines 0 to NG - (2*VP) . Color2, Buffer 1 Color 2, Buffer 2 for swath 4 Color 3, Buffer 1, lines 0 to NG Color 2, Buffer 1, lines NG - (VP+1) to NG. Color 2, Buffer 2, lines 0 to NG-VP. Color1, Buffer 0 Color1, Buffer 1 Color1, Buffer 2 Color1, Buffer 3 Note: NG is one less than the physical number of nozzles in the color group. VP is the vertical distance between nozzle groups Color 1, Buffer 0, lines NG - (2*VP) + 1 to NG. Color 1, Buffer 1, lines 0 to NG - (2*VP) . Figure 11-6. CPU Background Print Data Preparation During black-only printing, the two buffers that are prepared for color printing simply become the two buffers that are used for the black-only print mode. Each of these buffers will contain as many lines as there are nozzles on the printhead. Image Format The data that is presented to the Bit Rotation Block is always in little-endian format. The data within the system is in 2 separate formats: big-endian and little-endian. However, if the data in image memory is in big-endian format, then the SIU will translate that data to a little-endian format during the DMA operation with the endian conversion bit enabled, to ensure that the Bit Rotation Block only needs to deal with little-endian formatted data. The little endian format that the Bit Rotation Block expects to see is shown in the following illustration: 11-12 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Image Memory Increasing Addresses b 7 Byte 0 b 0 b 7 Byte 1 b 0 b 7 Byte 2 b 0 b 7 Byte 3 b 0 b 7 Byte 4 b 0 P15 P16 P23 P24 P31 P32 P7 P8 P47 0 P0 byte lineSize byte lineSize*2 AMFC LittleEndian Format Figure 11-7. MFC2000 Little-Endian Format 100723A Conexant 11-13 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank 11-14 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 12. Printer and Scanner Stepper Motor Interface 12.1 Vertical Print Stepper Motor Interface 12.1.1 Vertical Print Stepper Motor Control Description The stepper motor can be controlled by this block to run at constant speed, increasing speed (acceleration), or decreasing speed (deceleration). The control logic is based on a loadable step timer and a step timer register. A pulse and interrupt are generated when the step timer expires (timed-out) and at the same time, the content of the step timer register is automatically loaded into the step timer. The pulse is used to change the phase pattern to the next one in the Motor Pattern Control Sub-block and the interrupt is used to inform CPU to load the new step timer value to the step timer register if necessary for the step after the next step (See Figure 12-1). MFC2000 Chip External Circuit The Vertical Printer Motor Control Block Internal Bus Interface and VPM Logic Control motor moving clock (MMCLK) Motor Timer STEPCLK divider stepping clock (STEPCLK) VPM_PWRCTRL Motor Pattern Control stepping pulse (STEPPULSE) External Motor Driver Motor vertical print stepping interrupt (VPSTEPIRQ) Figure 12-1. Vertical Printer Motor Control Block Diagram The printer motor control lines are the four pins PM[3:0]/GPO[3:0]. These pins are selected as printer motor control lines when bit 0 in the GPIOconfig register is set to 0 (default), and are selected as GPO's when this bit is set to 1. The printer pattern or GPO data is output on pins PM[3:0]/GPO[3:0] from bits [3:0] (VPMF[3:0]) of the VPMPattern register. When selected as GPO's, data written by CPU to the VPMPattern register is immediately output on the GPO pins and output data are not changed unless CPU writes another new data to the VPMPattern register. When selected as printer motor control lines, data is not allowed to be written to the VPMPattern register no matter whether the motor stepping is disabled or enabled. At the beginning of the motor moving process, CPU needs to write the stepping mode and the stepping direction to the VPStepCtrl register, the initial vertical print motor pattern to the VPMPattern register, and the 1st step timer value to the VPStepTimer register (used to define the time interval between enabling stepping and the 1st step). 100723A Conexant 12-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Caution: The vertical print motor pattern register (VPMPattern register) can only be written when it is used as the GPO function. In other words, bit 0 of the GPIOConfig register is set to 1. Then, CPU sets bit 0 of the GPIOConfig register to 0 and enables the vertical print motor stepping. The content (the 1st step timer value) of the step timer register is automatically loaded into the step timer and at the same time an interrupt is generated (the step pulse is blocked at this time). CPU writes the 2nd step timer value into the step timer register in the stepping interrupt routine. When the step timer expires (timed-out), A pulse is generated to change the phase pattern to the next one (the 1st step) and the content (the 2nd step timer value) of the step timer register is automatically loaded into the step timer and an interrupt is generated to inform CPU to load the 3rd step timer value to the step timer register. At the near end of the motor stepping, a pulse is generated to change the phase pattern to the next one (the ‘n-2’ step, n: the last step) and the content of the step timer register (the time interval between the ‘n-2’ and ‘n-1 steps) is automatically loaded into the step timer and an interrupt is generated to inform CPU to load the last step timer value to the step timer register when the step timer expires (timed-out). When the step timer expires again (timedout), A pulse is generated to change the phase pattern to the next one (the ‘n-1’ step) and the content (the last step timer value) of the step timer register is automatically loaded into the step timer and an interrupt is generated to inform CPU to load the large dummy timer value to the step timer register. Finally, a pulse is generated to change the phase pattern to the next one (the last step) and the content (the large dummy timer value) of the step timer register is automatically loaded into the step timer and an interrupt is generated to inform CPU to disable the motor stepping. The step timer is cleared to 0 and the stepping pulse is blocked immediately after CPU disables the motor stepping. The step enable bit in the VPStepCtrl register only controls if the motor pattern is allowed to change to the next one. The motor pattern in the VPMPattern register always goes out. CPU has the responsibility to write value ‘00h’ to the VPMPattern register or set bit 4 of the VPStepCtrl register to a proper value according to the external power control circuit for not driving the vertical print motor. Bit 4 value of the VPStepCtrl register directly goes out of the MFC2000 chip through the GPIO[13]/SASTXD/PMPWRCTRL pin. Caution: The GPIO[13]/SASTXD/PMPWRCTRL pin can only be used as the PMPWRCTRL pin when bit11 of the GPIOConfig1 register is ‘0’ and bit 12 of the GPIOConfig1 register is ‘1’. The time interval between two adjacent stepping pulses (for example, t1 and t2) is determined by the timer value. The min. time difference between two adjacent stepping pulses (It is called the timer resolution, for example, ∆ t = | t2-t1|.) is determined by the frequency of the stepping clock (See Figure 12-2). (in the speed-up period) STEPPULSE t1 t2 time is controlled by the step timer Figure 12-2. Stepping Timing 12-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 The change sequence of the phase pattern in the Motor Pattern Control Sub-block is as follows: after the CPU gives the initial phase pattern (any column in the following tables), the phase pattern will automatically change to the next one after getting the time-out pulse of the timer (the stepping pulse) according to the clockwise (CW) or counterclockwise (CCW) rotation in the following tables. Table 12-1. Full Step/Single Phase Excitation -------------------------> CW rotation Step pattern 1 Step pattern 2 Step pattern 3 Step pattern 4 Step pattern 1 1 0 0 0 1 VPM [0](phase A) VPM [1](phase B) 0 1 0 0 0 VPM [2](phase C) 0 0 1 0 0 VPM [3](phase D) 0 0 0 1 0 <------------------------ CCW rotation Table 12-2. Full Step/Two Phase Excitation -------------------------> CW rotation Step pattern 1 Step pattern 2 Step pattern 3 Step pattern 4 Step pattern 1 1 0 0 1 1 VPM [0](phase A) VPM [1](phase B) 1 1 0 0 1 VPM [2](phase C) 0 1 1 0 0 VPM [3](phase D) 0 0 1 1 0 <------------------------ CCW rotation Table 12-3. Half-Step Excitation -------------------------> CW rotation Step FP1 Step HP2 Step FP3 Step HP4 Step FP5 Step HP6 Step FP7 Step HP8 VPM [0] 1 0 0 0 0 0 1 1 VPM [1] 1 1 1 0 0 0 0 0 VPM [2] 0 0 1 1 1 0 0 0 VPM [3] 0 0 0 0 1 1 1 0 <------------------------ CCW rotation Note: FPx: full step pattern and x: 1-4, HPx: half step pattern and x:1-4 Programmability: • • • • • • The frequency of STEPCLK is programmable (around 1.25 MHz39 KHz) if the ICLK (internal) frequency is 10 MHz. The step timer value is programmable (around 1us400ms) if the ICLK (internal) frequency is 10 MHz. The Motor moving direction (clockwise or counterclockwise) and the stepping mode (full step or half step) is programmable. The motor phase pattern is programmable. Control bits for clearing the stepping interrupt and enabling the stepping logic are included. A control bit for the vertical print motor power on/off. 100723A Conexant 12-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 12.1.2 Register Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Vertical Printer Motor Pattern Register (VPMPattern) 01FF805D (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Vertical Printer Motor Pattern Register (VPMPattern) 01FF805C VPMH[3] VPMH[2] VPMH[1] VPMH[0] VPMF[3] VPMF[2] VPMF[1] VPMF[0] Rst. Value 00h Read Value 00h For the full step excitation, the phase pattern VPM[3:0] (See Table 12-1 and Table 12-2) needs to be put into VPMF[3:0] of this VPMPattern register. Bit[7:4] of this register are ‘don’t care’. For the half step excitation, two adjacent phase patterns (See Table 12-3) need to be put into the VPMPattern register: VPM[3:0] at FP[x] column needs to be put into VPMF[3:0] and VPM[3:0] at HP[x] column needs to be put into VPMH[3:0]. The current output at PM[3:0] is VPMF[3:0]. Address: Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Step Clock Register (Not Used) (VPStepClk) 01FF8853 Bit 15 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: (Not Used) (Not Used) bit 4 of the step clock divider bit 3 of the step clock divider bit 2 of the step clock divider bit 1 of the step clock divider bit 0 of the step clock divider Rst. Value xxx00000b Read Value 00h Bit 7 Step Clock Register (Not Used) (VPStepClk) 01FF8852 • STEPCLK = ICLK/(8 * (n+1)), n (bit[4:0] of the step clock divider): from 0 to 31 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Step Control Register (VPStepCtrl) 01FF8059 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Step Control Register (VPStepCtrl) 01FF8058 (Not Used) (Not Used) (Not Used) Vertical Print Stepping Motor Power Mode Control 0: full step 1: half step Motor Direction 0: CW 1: CCW Step Enable STEPIRQ Clear 0: disable 1: enable 1:clear 12-4 Conexant Rst. Value xxx00000b Read Value 00h 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Step Timer Register (Not Used) (VPStepTimer) 01FF805B (Not Used) Address: Bit 7 Step Timer Register bit 7 of the step timer (VPStepTimer) 01FF805A • Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: bit 13 of the bit 12 of the bit 11 of the bit 10 of the bit 9 of the step timer step timer step timer step timer step timer bit 8 of the step timer Rst. Value xx000000b Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: bit 6 of the step timer bit 5 of the step timer bit 4 of the step timer bit 3 of the step timer bit 2 of the step timer bit 1 of the step timer bit 0 of the step timer Rst. Value 00h Read Value 00h The Time interval between two adjacent step pulses = (n+1)/STEPCLK, n (bit[13:0] of the step timer): from 0 to 16383 12.2 Scanner Stepper Motor Interface 12.2.1 Scanner Stepper Motor Control Description The stepper motor can be controlled by this block to run at constant speed, increasing speed (acceleration), or decreasing speed (deceleration). The Motor Timer Sub-block contains two sets of loadable timers and timer registers. One is used for the step control logic and the other is used for the delay control logic. The step control logic is based on a loadable step timer and a step timer register. A pulse and interrupt are generated when the step timer expires (timed-out) and at the same time, the content of the step timer register is automatically loaded into the step timer. The pulse is used to change the phase pattern to the next one in the Motor Pattern Control Sub-block and the interrupt is used to inform CPU to load the new step timer value to the timer register if necessary for the step after the next step (See Figure 12-3). MFC2000 Chip External Circuit The Scan Motor Control Block MSINT0 motor moving clock (MMCLK) Internal Bus Interface and SM Logic Control Motor Pattern Control Motor Timer STEPCLK divider stepping clock (STEPCLK) SM_PWRCTRL stepping pulse (STEPPULSE) External Motor Driver Motor vertical print stepping interrupt (SSTEPIRQ) Figure 12-3. Scan Motor Control Diagram 100723A Conexant 12-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The scan motor stepping needs to synchronize to the scan cycle during scanning. Signal MSINT0 is used to indicate the beginning of the scan cycle. MSINT0 synchronization can be enabled or disabled through the register setting. This is the main difference between the Vertical Print Motor Control block and the Scan Motor Control block. The delay control logic is based on a loadable delay timer and a delay timer register. The MSINT0 and the delay timer control when the Motor Timer Sub-block sends out the first stepping pulse after CPU enables the scan motor stepping. Once, CPU enables the scan motor stepping, the Motor Timer Sub-block waits for the MSINT0 pulse to load the delay timer value from the delay timer register and activate the delay timer if the MSINT0 synchronization is enabled. Otherwise, the Motor Timer Sub-block loads the new timer value from the delay timer register and activates the delay timer immediately. The first stepping pulse will be sent to the Motor Pattern Control Sub-block when the delay timer expires (timed-out). The delay timer only works once after CPU enables the scan motor stepping for the first step. The scan motor control lines are the four pins SM[3:0]/GPO[7:4]. These pins are selected as scanner motor control lines when bit 1 in the GPIOconfig register is set to 0 (default), and are selected as GPO's when this bit is set to 1. The scanner motor pattern or GPO data is output on pins SM[3:0]/GPO[7:4] from bits [3:0] of the SMPattern register. When selected as GPO's, data written by CPU to the SMPattern register is immediately output on the GPO pins and output data are not changed unless CPU writes another new data to the SMPattern register. When selected as scanner motor control lines, data is not allowed to be written to the SMPattern register no matter whether the motor stepping is disabled or enabled. Caution: The vertical print motor pattern register (SMPattern register) can only be written when it is used as the GPO function. In other words, bit 1 of the GPIOConfig register is set to 1. At the beginning of the motor moving process, CPU needs to write the stepping mode and the stepping direction to the SStepCtrl register, the initial scan motor pattern to the SMPattern register, the delay timer value to the SDelayTimer register, and the 1st step timer value to the SStepTimer register (used to define the time interval between the 1st and 2nd steps). Then, CPU sets bit 1 of the GPIOConfig register to 0 and enables the scan motor stepping. If the MSINT0 synchronization is disabled, the content of the delay timer register is immediately loaded into the step timer. If the MSINT0 synchronization is enabled, the delay timer loading will be delayed until the beginning of the scan (seeing the MSINT0 pulse). After Motor Timer Sub-block loads the new timer value from the delay timer register, It activates the delay timer immediately. The first stepping pulse will be sent to the Motor Pattern Control Sub-block when the delay timer expires (timed-out). At the same time, the content (the 1st step timer value) of the step timer register is automatically loaded into the step timer and an interrupt is generated. CPU writes the 2nd step timer value into the step timer register in the stepping interrupt routine. When the step timer expires (timed-out), A pulse is generated to change the phase pattern to the next one (the 2nd step) and the content (the 2nd step timer value) of the step timer register is automatically loaded into the step timer and an interrupt is generated to inform CPU to load the 3rd step timer value to the step timer register. At the end of the motor stepping, a pulse is generated to change the phase pattern to the next one (the ‘n-2’ step, n: the last step) and the content of the step timer register (the time interval between the ‘n-2’ and ‘n-1 steps) is automatically loaded into the step timer and an interrupt is generated to inform CPU to load the last step timer value to the step timer register when the step timer expires (timed-out). When the step timer expires again (timedout), A pulse is generated to change the phase pattern to the next one (the ‘n-1’ step) and the content (the last step timer value) of the step timer register is automatically loaded into the step timer and an interrupt is generated an interrupt is generated to inform CPU to load the large dummy timer value to the step timer register. Finally, a pulse is generated to change the phase pattern to the next one (the last step) and the content (the large dummy timer value) of the step timer register is automatically loaded into the step timer and an interrupt is generated to inform CPU to disable the motor stepping. The step and delay timers are cleared to 0 and the stepping pulse is blocked immediately after CPU disables the motor stepping. 12-6 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 The step enable bit in the SStepCtrl register only controls if the motor pattern is allowed to change to the next one. The motor pattern in the SMPattern register always goes out. CPU has the responsibility to write value ‘00h’ to the SMPattern register or set the bit 5 of the SStepCtrl register to a proper value according to the external motor power control circuit for not driving the scan motor. Bit 5 value of the SStepCtrl register directly goes out of the MFC2000 chip through the GPIO[12]/SASCLK/SMPWRCTRL pin. Caution: The GPIO[12]/SASCLK/SMPWRCTRL pin can only be used as the SMPWRCTRL pin when bit 9 of the GPIOConfig1 register is ‘0’ and bit 10 of the GPIOConfig1 register is ‘1’. The step time interval between two adjacent stepping pulses (for example, t1 and t2) is determined by the timer value. The min. time difference between two adjacent stepping pulses (It is called the timer resolution, for example, ∆ t = | t2-t1|.) is determined by the frequency of the stepping clock (See Figure 12-4). (in the speed-up period) STEPPULSE t1 t2 time is controlled by the step timer Figure 12-4. Stepping Timing The change sequence of the phase pattern in the Motor Pattern Control Sub-block is as follows: after the CPU gives the initial phase pattern (any column in the following tables), the phase pattern will automatically change to the next one after getting the time-out pulse of the timer (the stepping pulse) according to the clockwise (CW) or counterclockwise (CCW) rotation in the following tables. Table 12-4. Full Step/Single Phase Excitation -------------------------> CW rotation Step pattern 1 Step pattern 2 Step pattern 3 Step pattern 4 Step pattern 1 SM [0](phase A) 1 0 0 0 1 SM [1](phase B) 0 1 0 0 0 SM [2](phase C) 0 0 1 0 0 SM [3](phase D) 0 0 0 1 0 <------------------------ CCW rotation Table 12-5. Full Step/Two Phase Excitation -------------------------> CW rotation Step pattern 1 Step pattern 2 Step pattern 3 Step pattern 4 Step pattern 1 SM [0](phase A) 1 0 0 1 1 SM [1](phase B) 1 1 0 0 1 SM [2](phase C) 0 1 1 0 0 SM [3](phase D) 0 0 1 1 0 <------------------------ CCW rotation 100723A Conexant 12-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 12-6. Half-Step Excitation -------------------------> CW rotation Step Step Step Step Step Step Step Step FP1 HP2 FP3 HP4 FP5 HP6 FP7 HP8 SM [0] 1 0 0 0 0 0 1 1 SM [1] 1 1 1 0 0 0 0 0 SM [2] 0 0 1 1 1 0 0 0 SM [3] 0 0 0 0 1 1 1 0 <------------------------ CCW rotation Note: FPx: full step pattern and x: 1-4, HPx: half step pattern and x:1-4 Programmability: • • • • • • • • 12-8 The frequency of STEPCLK is programmable (around 1.25 MHz39 KHz) if the ICLK (internal) frequency is 10 MHz. The step timer value is programmable (around 1us400ms) if the ICLK (internal) frequency is 10 MHz. The delay timer value is programmable (around 1us400ms). The Motor moving direction (clockwise or counterclockwise) and the stepping mode (full step or half step) is programmable. The motor phase pattern is programmable. Control bits for clearing the stepping interrupt and enabling the stepping logic are included. The MSINT0 synchronization can be enabled and disabled. A control bit for the scan motor power on/off. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 12.2.2 Scan Motor Current Control The current control logic is added to this block. Two current control output signals (SMI[1:0]) are needed to control 4 different current modes. Three different current modes can be used within the time period of one step (See Figure 12-5). T1 and T2 are programmable in one step period. The current mode in each current period of one step period is programmable. CPU can load T1 and T2 values and current modes of three current periods within one step for the next step at the same time when CPU loads the next step timer value by using the scan step interrupt (SSTEPIRQ). In other words, T1, T2, and current modes are double buffered. SMI[0] output value is 1 and SMI[1] output value is 1 after reset and when SM[3:0] pins are used as GPO’s. The default current mode is also programmable when SM[3:0] pins are used as motor control pins and motor stepping is disabled. one step period one step period one step period different current modes different current modes different current modes T1 T2 T1 T2 T1 T2 changing step pattern (stepping to the next step) Figure 12-5: Current Control Diagram Two current control signals (SMI1 and SMI0) share same pins with PM[3]/GPO[3] and PM[2]/GPO[2]. There is a SMI[1:0] output select bit in the SStepCtrl Register to select which signals output on PM[3:2] pins. 12.2.3 Register Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Scanner Motor Pattern Register (SMPattern) 01FF8057 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Scanner Motor Pattern Register (SMPattern) 01FF8056 SMH[3] SMH[2] SMH[1] SMH[0] SMF[3] SMF[2] SMF[1] SMF[0] Rst. Value 00h Read Value 00h For the full step excitation, the phase pattern SM[3:0] (See Table 12-4 and Table 12-5) needs to be put into SMF[3:0] of this SMPattern register. Bit[7:4] of this register are ‘don’t care’. For the half step excitation, two adjacent phase patterns (See Table 12-6) need to be put into the SMPattern register: SM[3:0] at FP[x] column needs to be put into SMF[3:0] and SM[3:0] at HP[x] column needs to be put into SMH[7:4]. The current output at PM[3:0] is SMF[3:0]. 100723A Conexant 12-9 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Hardware Description Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Step Clock Register (Not Used) (SStepClk) 01FF8851 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: (Not Used) (Not Used) bit 4 of the step clock divider bit 3 of the step clock divider bit 2 of the step clock divider bit 1 of the step clock divider bit 0 of the step clock divider Rst. Value xxx00000b Read Value 00h Bit 7 Step Clock Register (Not Used) (SStepClk) 01FF8850 • STEPCLK = ICLK/(8 * (n+1)), n (bit[4:0] of the step clock divider): from 0 to 31 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Step Control Register (SStepCtrl) 01FF8051 I31 I30 I21 I20 I11 I10 DI1 DI0 Rst. Value FFh Read Value FFh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Step Control Register (SStepCtrl) 01FF8050 (Not Used) SMI Output Select Scan Motor MSINT0 Power Sync Control 0: disabled 1: enabled Stepping Mode 0: full step 1: half step Motor Direction 0: CW 1: CCW Step Enable STEPIRQ Clear 0: disable 1:clear 1: enable Rst. Value x0000000b Read Value 00h Bits 15-14 The third current control values go out to the scan current control pins (SMI1 and SMI0) within one step time period. Bits 13-12 The second current control values go out to the scan current control pins (SMI1 and SMI0) within one step time period. Bits 11-10 The first current control values go out to the scan current control pins (SMI1 and SMI0) within one step time period. Bits 9-8 The default current control values go out to the scan current control pins (SMI1 and SMI0) when the motor stepping is disabled and SM[3:0] is used for motor control. Bits 6 Control which signal output to PM[3:2] pins (SMI[1:0] output signals or PM[3]/GPO[3] and PM[2]/GPO[2] output signals). 0: Output PM[3]/GPO[3] and PM[2]/GPO[2] signals, 1: Output SMI[1:0] signals. Address: Bit 14 Bit 13 Bit 8 Default: Step Timer Register (Not Used) (SStepTimer) 01FF8053 Bit 15 (Not Used) bit 13 of the bit 12 of the bit 11 of the bit 10 of the bit 9 of the step timer step timer step timer step timer step timer bit 8 of the step timer Rst. Value 00h Read Value 00h Address: Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: bit 6 of the step timer bit 5 of the step timer bit 4 of the step timer bit 3 of the step timer bit 2 of the step timer bit 1 of the step timer bit 0 of the step timer Rst. Value 00h Read Value 00h Bit 7 Step Timer Register bit 7 of the step timer (SStepTimer) 01FF8052 • Bit 12 Bit 11 Bit 10 Bit 9 The Time interval between two adjacent step pulses = (n+1)/STEPCLK, n (bit[13:0] of the step timer): from 0 to 16383 12-10 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Step Delay Timer Register (SSDelayTimer) 01FF8055 (Not Used) (Not Used) Address: Bit 7 Step Delay Timer Register (SSDelayTimer) 01FF8054 bit 7 of the delay timer • Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: bit 13 of the bit 12 of the bit 11 of the bit 10 of the bit 9 of the delay timer delay timer delay timer delay timer delay timer bit 8 of the delay timer Rst. Value 00h Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: bit 6 of the delay timer bit 5 of the delay timer bit 4 of the delay timer bit 3 of the delay timer bit 2 of the delay timer bit 1 of the delay timer bit 0 of the delay timer Rst. Value 00h Read Value 00h The delay time interval before stepping = (n+1)/STEPCLK, n (bit[13:0] of the step delay timer): from 0 to 16383 Address: Bit 15 Bit 14 Bit 13 Current Timer 1 Register (SSCurTimer1) 01FF804D (Not Used) (Not Used) Address: Bit 7 Bit 6 bit 13 of the bit 12 of the bit 11 of the bit 10 of the bit 9 of the bit 8 of the Rst. Value current timer current timer current timer current timer current timer current timer xx000000b Read Value 00h Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Current Timer 1 Register (SSCurTimer1) 01FF804C bit 7 of the bit 6 of the bit 5 of the bit 4 of the bit 3 of the bit 2 of the bit 1 of the bit 0 of the Rst. Value current timer current timer current timer current timer current timer current timer current timer current timer 00h Read Value 00h • Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: This register defines when to change the first driving current to the second driving current within one step time period. The current timer 1 value in this register must be less than the step timer value set in the SStepTimer register for the same step and greater than 0. Otherwise, the current will not be changed. Once the step timer counts down to the current timer 1 value, the current control signals changes to I20 and I21 from I10 and I11 in the SStepCtrl register. I10 and I11 are the initial values of the current control signals within a step. Address: Bit 15 Bit 14 Bit 13 Current Timer 2 Register (SSCurTimer2) 01FF804F (Not Used) (Not Used) bit 13 of the bit 12 of the bit 11 of the bit 10 of the bit 9 of the bit 8 of the Rst. Value current timer current timer current timer current timer current timer current timer xx000000b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Current Timer 2 Register (SSCurTimer2) 01FF804E bit 7 of the bit 6 of the bit 5 of the bit 4 of the bit 3 of the bit 2 of the bit 1 of the bit 0 of the Rst. Value current timer current timer current timer current timer current timer current timer current timer current timer 00h Read Value 00h • Bit 12 Bit 4 Bit 11 Bit 3 Bit 10 Bit 2 Bit 9 Bit 1 Bit 8 Bit 0 Default: Default: This register defines when to change the second driving current to the third driving current within one step time period. The current timer 2 value in this register must be less than the current timer 1 value set in the SSCurTimer1 register for the same step and greater than 0. Otherwise, the current will not be changed. Once the step timer counts down to the current timer 2 value, the current control signals changes to I30 and I31 from I20 and I21 in the SStepCtrl register. 100723A Conexant 12-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank 12-12 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 13. General Purpose Inputs/Outputs (GPIO) 13.1 GPIO Signals The AMFPC provides 31 GPIO lines (GPIO[30:0]) typically used for I/O control, each of which is multiplexed with other signals. The direction of each GPIO line (input or output) is programmable using the hardware registers shown in Section 13.3. GPIO0 GPIO0 is multiplexed with the flash memory write enable signal (FWRn) for the NAND-type flash memory, this GPIO0 pin is also multiplexed with W_Rn. This pin is selected as a GPIO when bit 2 of the GPIOConfig1 register is set to 0 and Emulator signals are not enabled, in this case, the direction of this pin is controlled by bit 0 of the GPIODir register. If GPIODir[0] is set to one, this pin will ouput the value of the bit 0 from GPIOData register, and, if GPIODir[0] is set to zero, the value of the GPIO0 can be read back by reading GPIOdata[0]. This pin is selected as FWRn when the GPIOConfig1 bit is set to 1, in this case, this pin becomes an output pin regardless of the value in the GPIODir[0]. This pin is selected as W_Rn when EMUSIG_EN is set to 1, refer to Testmgr section for EMUSIG_EN signal definition. GPIO1 GPIO1 is multiplexed with the flash memory read enable signal (FRDn) for the NAND-type flash memory, this GPIO1 pin is also multiplexed with XAKn. This pin is selected as a GPIO when bit 2 of the GPIOConfig1register is set to 0 and, in this case, the direction of this pin is controlled by bit 1 of the GPIODir register. If GPIODir[1] is set to one, this pin will ouput the value of the bit 1 from GPIOData register, and, if GPIODir[1] is set to zero, the value of the GPIO1 can be read back by reading GPIOdata[1]. This pin is selected as FWRn when the GPIOConfig1 bit is set to 1, in this case, this pin becomes an output pin regardless of the value in the GPIODir[1]. This pin is selecetd as XAKn when EMUSIG_EN is set to 1, refer to Testmgr section for EMUSIG_EN signal definition. GPIO2 GPIO2 is multiplexed with SSCLK2, this pin is also used for the DMA request input from DMA channel 1 (DMAREQ1). If this pin is used as DMAREQ1, the direction of this pin needs to be set as input. If SSCLK2 function is used, the bit 0 of GPIOConfig2 register needs to be set to 1. If this pin is used as SSCLK2, the GPIO2 direction and data setting for this pin is no longer valid. When bit 16 of GPIOCofig register is set to 0, this pin can be used as GPIO2, in this case, the direction of this pin is controlled by bit 2 of the GPIODir register. The GPIO2 input/output value is controlled by bit 2 of the GPIOData register. 100723A Conexant 13-1 MFC2000 Multifunctional Peripheral Controller 2000 GPIO3 Hardware Description GPIO3 is multiplexed with the DMA acknowledge of the DMA channel 1 (DMAACK1), it is also used as SSRXD2 input. If this pin is used as SSRXD2, the direction of this pin needs to be set as input and the DMAACK1 function must be disabled. If this pin is used as DMAACK1, the GPIO direction and data setting for this pin is no longer valid. This function is enabled by setting EXTDMA1SEL to 1. If this pin is used as GPIO, the direction of this pin is controlled by bit 3 of the GPIODir register. The GPIO3 input/output value is controlled by bit 3 of the GPIOData register. GPIO[7:4] GPIO[7:4] are multiplexed with general chip selects on pins GPIO7/CS5n, GPIO6/CS4n, GPIO5/CS3n, and GPIO4/CS2n. These pins are selected as GPIO when the corresponding bits in the GPIOConfig1 register are set to 0. The direction of these pins is controlled by the bits 7-4 in the GPIODir register. The GPIO[7:4] input/output values are controlled by the bits 7-4, respectively, of the GPIOData register. In addition, the GPIO[5]/CS3n pin is also multiplexed with the PWM3 signal. See the register description in the PWM section for settings. GPIO6 can also used as input pin for EV_CLK and EADC_D[3], if this function is selected, the direction control for GPIO6 must be set to 0. GPIO8 GPIO8 is multiplexed with SSSTA1 and SC_CLK1/2B, this pin is also used as the interrupt request 11 (IRQ11) input. If this pin is used as IRQ11, the direction of this pin needs to be set as input. If this pin is not used as IRQ11, the interrupt channel 11 needs to be disabled by setting the IRQEnable register in the Interrupt Controller. If SSSTA1 function is selected, the bit 15 of GPIOConfig1 register must be set to 1. To enable SC_CLK1/2B function, bit 15 of GPIOConfig1 must be set to 0 and bit 18 of this register set to 1. Only when both bit15 and bit2 of the GPIOConfig2 register are set to 0, the GPIO8 pin is enabled as GPIO. When GPIO function is enabled, the direction of this pin is controlled by bit 8 of the GPIODir register. The GPIO8 input/output value is controlled by bit 8 of the GPIOData register. GPIO9 GPIO9 is also used as the interrupt request 13 (IRQ13n) input or EADC_D[2] input. If this pin is used as IRQ13n or EADC_D[2], the direction of this pin needs to be set as input. If this pin is not used as IRQ13n, the interrupt channel 13 needs to be disabled by setting the IRQEnable register in the Interrupt Controller. The direction of this pin is controlled by bit 9 of the GPIODir register. The GPIO9 input/output value is controlled by bit 9 of the GPIOData register. 13-2 Conexant 100723A Hardware Description GPIO10 MFC 2000 Multifunctional Peripheral Controller 2000 GPIO10 is multiplexed with the PWM[4] signal, this pin is also used for P80_PB3 as input. When P80_PB3 function is used, the direction of this pin needs to be set as input. This pin is selected as a GPIO when bit 7 of the GPIOConfig1 register is set to 0. The direction of this pin is controlled by bit 10 of the GPIODir register, and the input/output value is controlled by bit 10 of the GPIOData register. The PWM[4] function is enabled by setting bit 7 of the GPIOConfig1 register to 1, additional control is required to use PWM[4], refer to PWM section for detail. GPIO11 GPIO11 is also used for the Calling Party Control Input (CPCIN) pin and multiplexed with the ALTTONE output signal on pin GPIO11/CPCIN/ALTTONE. This pin is selected as a GPIO by setting bit 8 of the GPIOConfig1 register to 0. The direction of this pin is controlled by bit 11 in the GPIODir register, and the input/output value is controlled by bit 11 in the GPIOData register. The ALTTONE output signal is selected by setting bit 8 of the GPIOConfig1 register to 1 and setting bit 11 of the GPIODir register to 1. If this pin is used as the CPCIN signal input pin, the bit 11 of the GPIODir register is set to 0. In addition, the GPIO11/CPCIN/ALTTONE pin is also multiplexed with the PWM0 signal. See the register description in the PWM section for settings. GPIO[14:12] GPIO[14:12] are multiplexed with the scan/print motor power control output signals, the RINGER output signal, and the SASIF signals on pin GPIO14/SASRXD/RINGER, GPIO13/SASTXD/PMPWRCTRL, and GPIO12/SASCLK/SMPWRCTRL. These pins are selected as a GPIO by setting bit[12:9] in the GPIOConfig1 register to zero. The direction of these pins are controlled by bit[14:12] of the GPIODir register, and the input/output value is controlled by bit[14:12] of the GPIOData register. These pins are selected as the SASIF signals or RINGER/PMPWRCTRL/SMPWRCTRL signals by setting bit[14:9] in the GPIOConfig1 register (refer to GPIOConfig1 register description). Firmware needs to program GPIO[14:12] pins to use SASRXD, SASTXD, and SASCLK for the sync mode. If the async mode of SASIF is used, firmware only needs to program GPIO[14:13] pins to use SASRXD and SASTXD. GPIO[12] can be still used as GPIO. GPIO15 GPIO15 is multiplexed with SC_CLK1/2C signals, this pin is also used as IRQ16 input. If this pin is used as IRQ16, the direction of this pin needs to be set as input. If this pin is not used as IRQ16, the interrupt channel 16 needs to be disabled by setting the IRQEnable register in the Interrupt Controller. If SC_CLK1/2C function is selected, the bit 3 of GPIOConfig2 register must be set to 1. To enable GPIO15 function, bit 3 of GPIOConfig2 must be set to 0. When GPIO function is enabled, the direction of this pin is controlled by bit 15 of the GPIODir register. The GPIO15 input/output value is controlled by bit 15 of the GPIOData register. 100723A Conexant 13-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description GPIO[21:16] GPIO[21:16] are multiplexed with six P80 modem IA signals; in addition, GPIO19 can be used for MIRQn input signal, and GPIO20 is further multiplexed with MCSn. Six P80 modem IA signals are M_TXSIN, M_CLKIN, M_RXOUT, M_SCK, M_STROBE and M_CNTRL_SIN, they are multiplexed with GPIO16 through GPIO21 respectively. The control signals of this multiplexing are EXTIA_MODE and EXTIA_SEL, they are generated from SSD_P80. When EXTIA_MODE is 1, the six P80Modem signals will appear on the GPIO pins, these signals can be used to either interface to Data IA (when EXTIA_SEL is 0) or Voice IA (when EXTIA_SEL is 1). When EXTIA_MODE is 0, the GPIO[21:16] become GPIO and they are controlled by GPIODir and GPIOData registers as usual except GPIO20 can become MCSn if bit 5 GPIOConfig2 is set to 1 and GPIO19 can be used as MIRQn input. GPIO22 GPIO22 is multiplexed with EADC_Sample signals. If EADC_Sample function is selected, the bit 6 of GPIOConfig2 register must be set to 1. To enable GPIO22 function, bit 6 of GPIOConfig2 must be set to 0. When GPIO function is enabled, the direction of this pin is controlled by bit 22 of the GPIODir register. The GPIO22 input/output value is controlled by bit 22 of the GPIOData register. GPIO[30:23] GPIO[30:23] are multiplexed with PIOD[7:0] signals respectively; If GPIO function is selected, bit 8 of GPIOConfig2 register must be set to 1, else, PIOD function is selected. When GPIO function is enabled, the direction of this pin is controlled by bit 30-23 of the GPIODir register. The GPIO[30:23] input/output value is controlled by bit 30-23 of the GPIOData register. 13-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 13.2 GPO/GPI Signals The MFC2000 also provides eight GPO lines (GPO[7:0]), which are multiplexed with printer and scanner motor control signals. GPO[3:0] GPO[3:0] are multiplexed with the printer motor control lines on the four pins PM[3:0]/GPO[3:0]. These pins are selected as GPO's when bit 0 in the GPIOConfig1 register is set to 1, and are selected as printer motor control lines when this bit is set to 0. When these pins are selected as GPO's, the GPO[3:0] output values are controlled by the lowest 4 bits in the VPMPattern register, and appear on the output pins immediately. GPO[7:4] GPO[7:4] are multiplexed with the scanner motor control lines on the four pins SM[3:0]/GPO[7:4]. These pins are selected as GPO's when bit 1 in the GPIOConfig1 register is set to 1, and are selected as scanner motor control lines when this bit is set to 0. When these pins are selected as GPO's, the GPO[7:4] output values are controlled by the lowest 4 bits in the SMPattern register, and appear on the output pins immediately. GPO[13:8] If the PIO Interface is not enabled, the pins for PIODIR, BUSY, ACKn, SLCTOUT, PE and FAULTn will become GPIO8-GPIO13 respectively. These pins are selected as GPO function when bit8 of GPIOConfig2 register is set to 1, otherwise, PIO interface will be selected. The GPO[13:8] data is controlled by bit 5-0 of GPOData register. GPO[17:14] GPO[17:14] are multiplexed with AO3, AE3, AO2 and AE2 respectively, in addition, GPO14 is multiplexed with SSTXD2 and GPO15 is with SSSTA2. The multiplexing selection is controlled by bit 0 and bit 1 of the GPIOConfig2 register. When bit0 of the GPIOConfig2 register is 1, the SSTXD2/SSSTA2 function is selected, when bit 0 is 0 and bit 1 is 1, the GPO[17:14] function is enabled and the output value of the GPO[17:14] is controlled by bit 9-6 of GPOData register. To select AO[3:2]/AE[3:2], both bit 0 and bit 1 of the GPIOConfig2 register must be 0. GPI[3:0] Four PIO Interface input pins can be used as GPI when PIO interface is not used, the value on these GPI pins can be read from bit 15-12 of the GPOData register. 100723A Conexant 13-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 13.3 GPIO Control and Data Registers Address: GPIO Configuration 1 (GPIOConfig1) 01FF8831 Address: GPIO Configuration 1 (GPIOConfig1) 01FF8830 Bit 15 0=GPIO[8] 1=SSSTAT1 Bit 7 Bit 14 Bit 13 GPIO[14] Select bits Bit 12 Bit 11 GPIO[13] Select bits Bit 6 Bit 5 Bit 4 Bit 3 0=GPIO10 1= 0=GPIO7 PWM4 1=CS5n Enable 0=GPIO6 1=CS4n 0=GPIO5 1=CS3n 0=GPIO4 1=CS2n Bit 10 Bit 9 GPIO[12] Select bits Bit 2 Bit 1 0=GPIO[1:0] 0=scan mot. 1=FRDn and SM[3:0] FWRn 1= GPO[7:4] Select Bit 8 Default: 0=GPIO11 Rst Value 1=ALTTONE xxx00000b Read Value 00h Bit 0 0=Prt Mot. PM[3:0] 1= GPO[3:0] Select Default: Rst Value 00h Read Value 00h Register Description: GPIO Configuration1 Register Bit 14-13: GPIO[14] or ringer or SASRXD is selected. Bit 14 Bit 13 0 0 GPIO[14] 0 1 SASRXD 1 0 Ringer 1 1 (Not used) Bit 12-11: GPIO[13] or PMPWRCTRL or SASTXD is selected. Bit 12 Bit 11 0 0 GPIO[13] 0 1 SASTXD 1 0 PMPWRCTRL 1 1 (Not used) Bit 10-9: 13-6 the GPIO[14]/Ringer/SASRXD pin the GPIO[13]/PMPWRCTRL/SASTXD pin GPIO[12] or SMPWRCTRL or SASCLK is selected. Bit 10 Bit 9 0 0 GPIO[12] the GPIO[12]/SMPWRCTRL/SASCLK pin 0 1 SASCLK 1 0 SMPWRCTRL 1 1 (Not used) Conexant 100723A Hardware Description Address: GPIO Configuration 2 (GPIOConfig2) 01FF8833 Address: GPIO Configuration 2 (GPIOConfig2) 01FF8832 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 Bit 14 Not Used Not Used Bit 7 Bit 6 Bit 13 Bit 12 Bit 11 Not Used Bit 5 Bit 4 0=PM[1:0] 0=GPIO22 0=GPIO2 Not Used 1= 1=EADC_S 0 SPI_SIC/SPI ample 1=MCSn _SID Bit 10 Bit 9 Not Used Bit 3 Bit 2 Bit 1 Bit 8 Default: 0=PIO Select 1=GPO[13:8 ]/GPIO[30:2 3] Rst Value xxx00000b Read Value 00h Bit 0 Default: 0=GPIO15 0=GPIO8 0=AE[3:2]/AO 0=GPIO[3:2 ] 1=SC_CLK1/ 1=SC_CLK1/ [3:2] 2C 2B 1=GPO[17:14 1= SS2 ] Select Select Rst Value 00h Read Value 00h Register Description: GPIO Configuration2 Register Address: GPI/GPO Data (GPOData) 01FF883D Address: GPI/GPO Data (GPOData) 01FF883C Bit 15 GPI3 Bit 14 Data GPI2 Data Bit 7 GPO15 Data Bit 6 GPO14 Data Bit 13 GPI1 Data Bit 5 GPO13 Data Bit 12 GPI0 Data Bit 11 Not Used Bit 4 GPO12 Data Bit 3 GPO11 Data Bit 10 Not Used Bit 2 GPO10 Data Bit 9 GPO17 Data Bit 1 GPO9 Data Bit 8 GPO16 Data Bit 0 GPO8 Data Default: Rst Value 00000000b Read Value xxxx00xxb Default: Rst Value 00h Read Value xxh Register Description: GPO Data Register Address: GPIO Data 1 (GPIOData1) 01FF8835 Address: GPIO Data 1 (GPIOData1) 01FF8834 Address: GPIO Data 2 (GPIOData2) 01FF8837 Address: GPIO Data 2 (GPIOData2) 01FF8836 Bit 15 GPIO15 Data Bit 7 GPIO7 Data Bit 15 (Not Used) Bit 7 GPIO23 Data Bit 14 GPIO14 Data Bit 6 GPIO6 Data Bit 14 GPIO30 Data Bit 6 GPIO22 Data Bit 13 GPIO13 Data Bit 5 GPIO5 Data Bit 13 GPIO29 Data Bit 5 GPIO21 Data Bit 12 GPIO12 Data Bit 11 GPIO11 Data Bit 4 GPIO4 Data Bit 3 GPIO3 Data Bit 12 GPIO28 Data Bit 11 GPIO27 Data Bit 4 GPIO20 Data Bit 3 GPIO19 Data Bit 10 GPIO10 Data Bit 2 GPIO2 Data Bit 10 GPIO26 Data Bit 2 GPIO18 Data Bit 9 GPIO9 Data Bit 1 GPIO1 Data Bit 9 GPIO25 Data Bit 1 GPIO17 Data Bit 8 GPIO8 Data Bit 0 GPIO0 Data Bit 8 GPIO24 Data Bit 0 GPIO016 Data Default: Rst Value x0000000b Read Value 0xxxxxxxb Default: Rst Value 00h Read Value xxh Default: Rst Value x0000000b Read Value 0xxxxxxxb Default: Rst Value 00h Read Value xxh Register Description: GPIO Data 1/2 Register 100723A Conexant 13-7 MFC2000 Multifunctional Peripheral Controller 2000 Address: GPIO Direction 1 (GPIODi1) 01FF8839 Address: GPIO Direction 1 (GPIODir1) 01FF8838 Address: GPIO Direction 2 (GPIODir2) 01FF883B Address: GPIO Direction 2 (GPIODir2) 01FF883A Bit 15 Bit 14 GPIO15 GPIO14 0=in 1=out 0=in 1=out Bit 7 GPIO7 0=in 1=out Bit 15 (Not Used) Bit 7 GPIO23 0=in 1=out Bit 6 Bit 13 GPIO13 0=in 1=out Bit 14 Bit 6 GPIO22 0=in 1=out Bit 12 GPIO12 0=in 1=out Bit 5 GPIO6 GPIO5 0=in 0=in 1=out 1=out (Must be set to 0 if sartsel=1) GPIO30 0=in 1=out Hardware Description Bit 13 GPIO29 0=in 1=out Bit 4 GPIO4 0=in 1=out Bit 3 GPIO3 0=in 1=out Bit 12 GPIO28 0=in 1=out Bit 5 GPIO21 0=in 1=out Bit 11 GPIO11 0=in 1=out Bit 11 GPIO27 0=in 1=out Bit 4 GPIO20 0=in 1=out Bit 3 GPIO19 0=in 1=out Bit 10 GPIO10 0=in 1=out Bit 2 GPIO2 0=in 1=out Bit 10 GPIO126 0=in 1=out Bit 2 GPIO18 0=in 1=out Bit 9 GPIO9 0=in 1=out Bit 1 GPIO1 0=in 1=out Bit 9 GPIO25 0=in 1=out Bit 1 GPIO17 0=in 1=out Bit 8 GPIO8 0=in 1=out Bit 0 GPIO0 0=in 1=out Bit 8 GPIO24 0=in 1=out Bit 0 GPIO16 0=in 1=out Default: Rst Value x0000000b Read Value 00h Default: Rst Value 00h Read Value 00h Default: Rst Value x0000000b Read Value 00h Default: Rst Value 00h Read Value 00h Register Description: GPIO Direction 1/2 Register 13-8 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 14. Compressor and Decompressor 14.1 Functional Description The T.4 data compression/decompression process is primarily implemented in hardware within the MFC2000 (see Figure 14-2). Hardware provides compression and decompression of data within a line, and adds fill bits at the end of a line to cause the number of bits (coded plus fill) to be a multiple of 16 (halfword justified) for T.4 MH and MR. For coding (compression), firmware (T.4 subsystem task) appends end-of-line characters and, if required, fill bits to support the minimum line times of CCITT T.4. On the receive side, firmware passes the coded line to the T.4 hardware. Data flow control, to prevent buffer overflow/underflow, is also the responsibility of the firmware. Line times less than 5 msec per line are supported by the MFC2000s' T.4 hardware; the line time supported by the overall system depends on other system factors (e.g. resolution, concurrency, etc). T4 line lengths up to 2046 bytes are supported. There are three FIFOs contained in the compressor/decompressor block. All FIFOs operate identically from both a hardware and firmware standpoint. The FIFO structure is illustrated in Figure 14-2. The FIFOs consist of a quad halfword FIFO structure and a single halfword holding register. The quad FIFO structure is emptied and filled by either DMA or CPU operations. The holding register is emptied and filled by the compressor/decompressor logic. All locations within the FIFO can also be arbitrarily read and written by firmware. This allows firmware to save the entire FIFO state and restore it at a later point in time, thereby permitting an unlimited number of data streams to be concurrently processed. T4/T6 Compression/Decompression CPU Data Mux DMA Ch 10 Data T4Data FIFO3 T4 (MH, MR), T6(MMR) Code or Decode Line T4 Bi-Level Resolution Conversion Reference Line Buffer Data (Uncoded Data) DMA Ch 7 Current Line Buffer Data (Uncoded Data) DMA Ch 6 DMA Ch 8 Figure 14-1. Data Flow for Compression/Decompression 100723A Conexant 14-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description S yste m D a ta B u s Q u a d H a lfw o rd 0 Q u a d H a lfw o rd 1 Q u a d H a lfw o rd 2 Q u a d H a lfw o rd 3 H o ld in g R e g iste r FIFO C o n tro l L o ca l D a ta B u s Figure 14-2. Compressor/Decompressor FIFO Structure 14.2 Register Description Address Bit 15 T4 Configuration (T4Config) $01FF8171 Address Bit 7 T4 Configuration (T4Config) $01FF8170 Bit 15-11: (Not Used) (Not Used) Bit 14 (Not Used) Bit 6 Enable smart EOL operation Bit 13 (Not Used) Bit 5 Enable noninverted flush (zero fill) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 Compressed data src./dest. 00=T4Data0 01=T4Data1 10=T4Data2 11=T4Data3 Bit 3 Bit 10 Disable Hardware DMA CH10 Bit 2 Bit 9 Disable Hardware DMA CH6 Bit 1 Bit 8 Disable Hardware DMA CH7 Bit 0 Enable T4 Coding/Decoding Mode Decompressi 00=MH on 01=MR 1-dimensional 10-MR 2-dimensional 11=MMR Default Rst. Value xxxxx000b Read Value: 00000000b Default Rst. Value x0000000b Read Value: 00000000b Not used Bit 10: Disable coded hardware DMA. Setting this bit to 1 disables hardware DMA accesses to the coded data FIFOs (DMA CH10). Clearing this bit allows hardware DMA to the coded data FIFOs. This bit should be set when firmware DMA is to be carried out to the coded data FIFO. Bit 9: Disable uncoded hardware DMA. Setting this bit to 1 disables hardware DMA accesses to the uncoded data FIFO (DMA CH6). Clearing this bit allows hardware DMA to the uncoded data FIFO. This bit should be set when firmware DMA is to be carried out to the uncoded data FIFO. 14-2 Conexant 100723A Hardware Description Bit 8: MFC 2000 Multifunctional Peripheral Controller 2000 Disable reference hardware DMA. Setting this bit to 1 disables hardware DMA accesses to the reference data FIFO (DMA CH7). Clearing this bit allows hardware DMA to the reference data FIFO. This bit should be set when firmware DMA is to be carried out to the reference data FIFO. Bit 7: Not used Bit 6: Enable smart EOL operation. Setting the smart EOL operation bit causes the posting of an EOL in the T4 Status register to be delayed until the selected T4Data FIFO has transferred all of its data. Clearing the bit causes EOL to be set as soon as the EOL has been processed, regardless of the condition of the FIFO. Bit 5: Enable Non-inverted flush. Setting the non-inverted flush bit causes the flush operation to use zero as fill bits rather than the inverted value of the last CW bit. Inverted fill allows the user to determine the number of fill bits added to halfword align the last CW. Bit 4-3: Compressed data source/destination. 00=T4Data0 (default) 01=T4Data1 10=T4Data2 11=T4Data3 Warning: No distinction is made between FIFO accesses by either the DMA channel or the CPU. This means it is possible for both sources to modify the FIFO contents, resulting in unpredictable operation of the compressor/decompressor. Firmware must ensure that the CPU does not modify the FIFO contents without first disabling the DMA channel. Bit 2: Enable Decompression Bits 1-0: T4 Coding/Decoding Mode 00=MH01=MR 1-d 10=MR 2-d11=MMR When MMR compression is selected, 2-d coding will occur (similar to MR 2-d), however, the last CW in the line will not be halfword aligned by adding fill bits. Code words from the next compressed line will be concatenated to whatever is already in the selected T4Data FIFO. MMR decompression is similar to MR 2-d decoding, except that the end-of-line condition is based on the number of decoded bits rather than an EOL code word. 100723A Conexant 14-3 MFC2000 Multifunctional Peripheral Controller 2000 Address T4 Control (T4Control) $01FF8173 Address T4 Control (T4Control) $01FF8172 Bit 15 (Not Used) Bit 7 Reset T4 Block (w) Bit 14 (Not Used) Bit 6 Hardware Description Bit 13 (Not Used) Bit 12 (Not Used) Bit 5 Terminating Enable BiCode Error level Resolution Conversion Bit 11 (Not Used) Bit 4 Decode Output Enable Bit 3 Bit 10 (Not Used) Bit 2 Vertical OR Reset/Halt enable Coding or (decompress decoding mode only) Bit 9 (Not Used) Bit 1 Start coding or decoding Bit 8 (Not Used) Bit 0 Flush CW (completes byte) Default Rst. Value xxh Read Value: 00h Default Rst. Value x0000000b Read Value 00h Bit 15-8: Not used Bit 7: Writing a 1 to this bit causes the T4 logic to be reset, including all internal state machines and FIFOs. This bit is useful when switching between compression and decompression modes. Bit 6: A Terminating Code Error is indicated when a run length = 0 code is expected but not received at the end of a line, and the Terminating Code Error also sets the Line error bit Bit 5: Enable Bi-level Resolution Conversion. Bi-level resolution conversion is only valid in decompression mode. When this bit is set, horizontal resolution conversion will be performed on the decoder output. Both the unconverted line and the converted line will be output to the line buffer. The converted line will be written to the line buffer via DMA channel 8. Bit 4: Decode output enable. Decode Output Enable allows decoded data to be output to the line buffers. This bit should not be set in MH or MR decoding until the first EOL has been found. The decoder output should also be disabled after an error line until the next EOL is found. This bit should always be set for the MMR decoder. Bit 3: Vertical OR enable. The Vertical OR bit is only valid in decompression mode when the bilevel resolution conversion bit in the T4Config register is also set. When the Vertical OR bit is set, the resolution converted decoded output data is ORed with the corresponding byte from the previous line before storing. Bit 2: Reset or halt the coding or decoding. Setting the Reset/Halt bit immediately halts coding or decoding of a line, resets all the T4 Status bits, and clears the active T4Data FIFO. All other bits in this register are ignored if the Reset/Halt bit is set. When coding or decoding is in progress, writing to any bit in this register except Reset/Halt is ignored. Bit 1: 14-4 Start coding or decoding. The Start bit begins the coding or decoding of the line according to the configuration selected per the T4Config register. Conexant 100723A Hardware Description Bit 0: Address T4 Status (T4Status) $01FF8174 (R) MFC 2000 Multifunctional Peripheral Controller 2000 Flush the code word. Bit 15 T4 Datax DMA Page Boundary Address Bit 7 T4 Status (T4Status) $01FF8175 (R) EOL Condition Bit 14 The Flush CW bit is only valid during MMR compression mode. Writes to this bit are ignored when coding/decoding is in progress, or when decompression is selected. When the Flush CW bit is set at the end of coding a line, it causes any data in the active T4Data FIFO to be filled in order to make a complete halfword which can then be read by the CPU or DMA controller. The fill bits are the opposite value of the last CW bit, unless the non-inverted flush bit in the T4Config register is set. In this case, the data is flushed with zeros. One halfword is always output when the flush bit is set even if the last CW is already halfword aligned. Bit 13 T4 Datax T4 Datax FIFO DMA FIFO DMA Acknowledge Request Bit 6 Tag Bit Bit 5 Bit 12 Bit 11 Bit 10 Bit 9 Write Read Write Read T4Datax T4Datax Uncoded Uncoded FIFO Ready FIFO Ready FIFO Ready FIFO Ready Bit 4 Line Error nonConsecutive EOL/ MMREOL Bit 3 Line Error Type Bit 2 Bit 1 Bit 8 Write Reference FIFO Ready Bit 0 All White Line Default Rst. Value 00h Read Value 00h Default Rst. Value 00h Read Value 00h Bit 15: This a copy of the hardware signal from the DMA channel indicating when the DMA block size has been reached and is used by the FIFO to prevent its DMA request from being asserted if Smart EOL Operation has been enabled via the T4 Configuration register. Bit 14: This is a copy of the hardware signal from the DMA channel indicating a DMA transfer is in progress. Bit 13: This is a copy of the hardware signal to the DMA channel indicating the desire to initiate a DMA transfer. Bit 12: The WrT4DataFIFORdy bit is set during decompression mode when the active T4Data FIFO is not full and is cleared when the FIFO is full. Bit 11: The RdT4DataFIFORdy bit is set when compressed data is available in the active T4Data FIFO. This bit is cleared when there is no data available. Bit 10: The WrUncodedFIFORdy bit is set during compression mode when the Uncoded Line FIFO is not full and is cleared when the FIFO is full. Bit 9: The RdUncodedFIFORdy bit is set when uncompressed data is available in the Uncoded Line FIFO. This bit is cleared when there is no data available. Bit 8: The WrRefFIFORdy bit is set during either MR/MMr compression or decompression mode when the Reference Line FIFO is not full and is cleared when the FIFO is full. 100723A Conexant 14-5 MFC2000 Multifunctional Peripheral Controller 2000 Bit 7: End of Line Conditions. Hardware Description For coding, the End-of-line Condition occurs when all data in the line has been compressed and the last codeword has been written to the T4Data FIFO. For decoding, the End-of-line Condition occurs when the decoding of a line is complete, and all decoded data has been written to the line buffer. For MH and MR modes, decoding is complete when the EOL codeword (and Tag bit if in MR mode) have been decoded. For MMR mode, decoding is complete when the number of bytes specified by the T4Bytes register have been decoded. Bit 6: The Tag bit is only valid when the End-of-line Condition bit is also set. Bit 5: The NonConsecutiveEOL/MMREOL is only valid when the End-of-line Condition bit is also set. Bit 4: Line Error. Line errors apply to the decoding mode only. If a line error occurs while decoding a line, the T.4 hardware will set the LineError bit. Decoding will continue until an EOL code is found (MH and MR modes only), but data decoded following the error will not be output to the line buffer.. The type of line error can be determined by examing the Line Error Type bit field. Bit 3-1: Line Error Type. When a line error occurs, the type of line error is placed in this bit field. The following line errors are detected by the T.4 hardware: LineError Code: Error: Description: 000b No error 001b RTC (Return to Control) Error Fill bits occurred between consecutive EOL codewords. 010b Terminating Code Error Codewords for white or black run lengths equal to zero which occur at the end of a line are missing. When this error occurs the TC error bit (T4Status register) is set as well as the normal error bit; this is to allow the user to ignore these errors if desired. 011b Reserved 100b Line Too Short EOL code found before the number of bytes specified in the T4Bytes register have been decoded. 101b Line Too Long The number of data bytes decoded before the EOL code is received exceeds the line length specified in the T4Bytes register. 110b Code Word Error An invalid code word was decoded. 111b Reserved Bit 0: Indicate the decoded line is all white when this bit is set. This bit is reset when the decoding of a line is started. Notes: 1. An IRQ is generated whenever any of the shaded bits shown in the T4 Status register (bits 4, 7–9) and their associated bits in the T4IntMask register are both set. 2. Bits 0–6, and 9 only apply to decompression mode. 3. Bits 0–7 are cleared at the start of a new line. 14-6 Conexant 100723A Hardware Description Address MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 T4 Line Length (T4Halfwords) $01FF8179 (Not Used) Address Bit 7 T4 Line Length (T4Halfwords) $01FF8178 Bit 14 (Not Used) Bit 13 (Not Used) Bit 6 Bit 5 Bit 3 Bit 2 Bit 9 Bit 8 Line Length bits 9-8 Bit 1 Bit 0 Default Rst. Value xxxxxx00b Read Value 00h Default Rst. Value 00h Read Value 00h Line Length Address Bit 15 Address (Not Used) Bit 7 T4 Interrupt Mask (T4IntMask) $01FF8176 Enable End of Line The T4 Line Length register defines the number of bytes in the line to be coded or decoded. Line length values from 001h through 3ffh correspond to 1 through 1023 halfwords of data. Bit 14 (Not Used) Bit 13 (Not Used) Bit 6 (Not Used) Bit 5 (Not Used) Bit 15-13: Bit 12 Enable Wr T4Data FIFO Rdy Bit 11 Bit 10 Enable Rd Enable Wr T4Data FIFO Uncoded Rdy FIFO Rdy Bit 4 Bit 3 Enable Line (Not Used) Error Bit 2 (Not Used) Bit 9 Enable Rd Uncoded FIFO Rdy Bit 1 (Not Used) Bit 8 Enable Wr Ref FIFO Rdy Bit 0 (Not Used) Default Rst. Value xxx00000b Read Value: 00h Default Rst. Value 0xx0xxxxb Read Value 00h Not used Bit 12: WrT4DataFIFORdy Enable Interrupt Bit 11: RdT4DataFIFORdy Enable Interrupt Bit 10: WrUncodedFIFORdy Enable Interrupt Bit 9: RdUncodedFIFORdy Enable Interrupt Bit 8: WrRefFIFORdy Enable Interrupt Bit 7: End of Line Enable Interrupt. Bit 6-5: Bit 3-0: Bit 4 Bit 10 (Not Used) Not used T4 Interrupt Mask (T4IntMask) $01FF8177 Bit 4: Bit 11 (Not Used) Line Length bits 7-0 Bit 15-10: Bit 9-0: Bit 12 (Not Used) Not used Line Error Enable Interrupt. Not used The four interrupt enable bits correspond to bits in the T4 Status register. The position of each interrupt enable bit is in the same place as its corresponding bit in the T4 Status register (bit 7 – End of Line Enable Interrupt corresponds to bit 7 – EOL Condition). 100723A Conexant 14-7 MFC2000 Multifunctional Peripheral Controller 2000 Address T4 FIFO Bits Remaining Register (T4FIFOBitRem) $01FF817B Address T4 FIFO Bits Remaining Register (T4FIFOBitRem) $01FF817A Bit 15 (Not Used) Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Hardware Description Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 10 (Not Used) Bit 3 Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Bits remaining Default Rst. Value xxh Read Value: 00h Default Rst. Value xxxx0000b Read Value x0000000b Bit 15-4: Not used Bit 3-0: Number of bits remaining in FIFO (holding register), with values ranging from 0 to 15. The interpretation of bits remaining depends on the direction of data flow. If the compressor/decompressor is emptying the FIFO, bit remaining is the number of that contain data that have yet to be processed. If the compressor/decompressor is filling the FIFO, bits remaining is the number of bits that are empty. T.4 data FIFO halfword[3:0] for the coded data to/from the external memory (for DMA channel 10): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Data FIFO (T4Data1FIFOx) data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Data FIFO (T4Data1FIFOx) data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh • 14-8 Address assignment for T.4 Data FIFO halfword[3:0] FIFO halfword The register name Address FIFO halfword 3 T4DataFIFO3 01FF8117-16 FIFO halfword 2 T4DataFIFO2 01FF8115-14 FIFO halfword 1 T4DataFIFO1 01FF8113-12 FIFO halfword 0 T4DataFIFO0 01FF8111-10 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 T.4 Ref. line Data FIFO halfword[3:0] for the uncoded data to/from the external memory (for DMA channel 7): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Reference Line Data FIFO (T4RefDataFIFOx) data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Reference Line Data FIFO (T4RefDataFIFOx) data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh • Address assignment for T.4 Ref. Line Data FIFO halfword[3:0] FIFO halfword The register name Address FIFO halfword 3 T4RefDataFIFO3 01FF8157-56 FIFO halfword 2 T4RefDataFIFO2 01FF8155-54 FIFO halfword 1 T4RefDataFIFO1 01FF8153-52 FIFO halfword 0 T4RefDataFIFO0 01FF8151-50 T.4 Current line Data FIFO halfword[3:0] for the uncoded data to/from the external memory (for DMA channel 6): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Current Line Data FIFO (T4CurDataFIFOx) data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Reference Line Data FIFO (T4CurDataFIFOx) data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh • Address assignment for T.4 Current Line Data FIFO halfword[3:0] 100723A FIFO halfword The register name Address FIFO halfword 3 T4CurDataFIFO3 01FF8167-66 FIFO halfword 2 T4CurDataFIFO2 01FF8165-64 FIFO halfword 1 T4CurDataFIFO1 01FF8163-62 FIFO halfword 0 T4CurDataFIFO0 01FF8161-60 Conexant 14-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description T.4 Data FIFO Holding Register for the coded data to/from the external memory (for DMA channel 10): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Data FIFO Holding Register (T4Data1Hold) $01FF8119 data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Data FIFO Holding Register (T4Data1Hold) $01FF8118 data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh T.4 Ref. Line Data FIFO Holding Register for the Uncoded data to/from the external memory (for DMA channel 7): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Ref. Line Data FIFO Holding Register (T4RefDataHold) $01FF8159 data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Ref. Line Data FIFO Holding Register (T4RefDataHold) $01FF8158 data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh T.4 Current Line Data FIFO Holding Register for the Uncoded data to/from the external memory (for DMA channel 6): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Current Line Data FIFO Holding Register (T4CurDataHold) $01FF8169 data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Current Line Data FIFO Holding Register (T4CurDataHold) $01FF8168 data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh 14-10 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 T.4 Data FIFO Control register for the coded data to/from the external memory (for DMA channel 10): Address: Bit 15 Bit 14 Bit 13 Bit 12 T.4 Data FIFO Control Register (T4Data1FIFOCtrl) $01FF811B FIFO Enabled (R) Data Request (R) FIFO Ready (R) FIFO DMA Threshold Bit 5 Address: Bit 7 Bit 6 T.4 Data FIFO Control Register (T4Data1FIFOCtrl) $01FF811A (Not Used) Holding (Not Used) Register Full Bit 4 Bit 11 Bit 3 FIFO Data Quantity Bit 10 Bit 9 Bit 8 FIFO Output Pointer Bit 2 Bit 1 Bit 0 FIFO Input Pointer Default: Rst Value 00h Read Value 00h Default: Rst Value x0x00000b Read Value 00h Bit 15 This bit indicates that the FIFO is active and capable of generating DMA requests. Bit 14 This bit is essentially a copy of the DMA Request output signal and indicates that the FIFO wishes to transfer data. Bit 13 This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10 This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 0 to 4. Values greater than 4 are treated as 4. Bit 9-8 This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 6 This bit indicates that there is a full word in the holding register Bit 4-2 This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0 This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Note: It is strongly recommended that the FIFO be disabled before firmware writes to the FIFO Control register. The FIFO Control register contains data that is essential to the FIFO’s operation. If this data is changed while the FIFO is operating, unpredictable operation will result. 100723A Conexant 14-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description T.4 Ref. Line Data FIFO Control register for the Uncoded data to/from the external memory (for DMA channel 7): Address: Bit 15 Bit 14 Bit 13 Bit 12 T.4 Ref. Line Data FIFO FIFO Control Enabled Register (R) (T4RefDataFIFOCtrl) $01FF815B Data Request (R) FIFO Ready (R) FIFO DMA Threshold Address: Bit 6 Bit 5 Bit 4 Bit 7 T.4 Ref. Line Data (Not Used) FIFO Control Register (T4RefDataFIFOCtrl) $01FF815A Holding (Not Used) Register Full Bit 11 Bit 3 Bit 10 Bit 2 FIFO Data Quantity Bit 9 Bit 8 Default: FIFO Output Pointer Rst Value 00h Read Value 00h Bit 1 Default: Bit 0 FIFO Input Pointer Rst Value x0x00000b Read Value 00h T.4 Current Line Data FIFO Control register for the Uncoded data to/from the external memory (for DMA channel 6): Address: Bit 14 Bit 13 Bit 12 T.4 Current Line FIFO Data FIFO Control Enabled Register (R) (T4CurDataFIFOCtrl) $01FF816B Bit 15 Data Request (R) FIFO Ready (R) FIFO DMA Threshold Address: Bit 6 Bit 5 Bit 4 Bit 7 T.4 Current Line (Not Used) Data FIFO Control Register (T4CurDataFIFOCtrl) $01FF816A Holding (Not Used) Register Full Bit 11 Bit 3 Bit 10 Bit 2 FIFO Data Quantity Bit 9 Bit 8 Default: FIFO Output Pointer Rst Value 00h Read Value 00h Bit 1 Default: Bit 0 FIFO Input Pointer Rst Value x0x00000b Read Value 00h T.4 Data FIFO Data Port for the coded data to/from the external memory: Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Data FIFO Data Port (T4Data1Port) $01FF811D data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Data FIFO Data Port (T4Data1Port) $01FF811C data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh 14-12 Conexant 100723A Hardware Description Address T4 Data FIFO Data Port Transfer (T4Data1PortTfr) $01FF814F (DW) Address T4 Data FIFO Data Port Transfer (T4Data1PortTfr) $01FF814E (DW) MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 (Not Used) Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 15-0: Not used. Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) Bit 10 (Not Used) Bit 2 (Not Used) Bit 9 (Not Used) Bit 1 (Not Used) Bit 8 (Not Used) Bit 0 (Not Used) Default Rst. Value xxh Read Value: xxh Default Rst. Value xxh Read Value xxh Writing any value to this register causes the data in FIFO to push or pop data through the FIFO data port and the FIFO Quad Halfword 1-4 registers. The FIFO operation depends on the direction of data flow. If the compressor/decompressor is emptying the FIFO, data is transferred from the FIFO data port register to the FIFO Quad Halfword 1 register, simultaneously with data transfer from Quad Halfword 1 to Quad Halfword 2, Quad Halfword 2 to Quad Halfword 3, and Quad Halfword 3 to Quad Halfword 4, with the original data of Quad Halfword 4 being lost. If the compressor/decompressor is filling the FIFO, data is transferred from the FIFO Quad Halfword 1 register to the FIFO data port register, simultaneously with data transfer from Quad Halfword 2 to Quad Halfword 1, Quad Halfword 3 to Quad Halfword 2, and Quad Halfword 4 to Quad Halfword 3, with the contents of Quad Halfword 4 becoming indeterminate. T.4 Ref. Line Data FIFO Data Port for the Uncoded data to/from the external memory: Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Ref. Line Data FIFO Data Port (T4RefDataPort) $01FF815D data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Ref. Line Data FIFO Data Port (T4RefDataPort) $01FF815C data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh Address T4 Ref. Line Data FIFO Data Port Transfer (T4RefDataPortTfr) $01FF815F (DW) Address T4 Ref. Line Data FIFO Data Port Transfer (T4RefDataPorTfrt) $01FF815E (DW) 100723A Bit 15 (Not Used) Bit 7 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) Conexant Bit 10 (Not Used) Bit 2 (Not Used) Bit 9 (Not Used) Bit 1 (Not Used) Bit 8 (Not Used) Bit 0 (Not Used) Default Rst. Value xxh Read Value: xxh Default Rst. Value xxh Read Value xxh 14-13 MFC2000 Multifunctional Peripheral Controller 2000 Bit 15-0: Not used Hardware Description Writing any value to this register causes the data in FIFO to push or pop data through the FIFO data port and the FIFO Quad Halfword 1-4 registers. The FIFO operation depends on the direction of data flow. If the compressor/decompressor is emptying the FIFO, data is transferred from the FIFO data port register to the FIFO Quad Halfword 1 register, simultaneously with data transfer from Quad Halfword 1 to Quad Halfword 2, Quad Halfword 2 to Quad Halfword 3, and Quad Halfword 3 to Quad Halfword 4, with the original data of Quad Halfword 4 being lost. If the compressor/decompressor is filling the FIFO, data is transferred from the FIFO Quad Halfword 1 register to the FIFO data port register, simultaneously with data transfer from Quad Halfword 2 to Quad Halfword 1, Quad Halfword 3 to Quad Halfword 2, and Quad Halfword 4 to Quad Halfword 3, with the contents of Quad Halfword 4 becoming indeterminate. T.4 Current Line Data FIFO Data Port for the Uncoded data to/from the external memory: Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: T.4 Current Line data Data FIFO Data Port bit 15 (T4CurDataPort) $01FF816D data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: T.4 Current Line data Data FIFO Data Port bit 7 (T4CurDataPort) $01FF816C data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value xxh Read Value xxh Address Bit 15 T4 Current Line Data (Not Used) FIFO Data Port Transfer (T4CurDataPortTfr) $01FF816F (DW) Address Bit 7 T4 Current Line Data (Not Used) FIFO Data Port Transfer (T4CurDataPortTfr) $01FF816E (DW) Bit 15-0: Not used 14-14 Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 (Not Used) Bit 3 (Not Used) Bit 10 (Not Used) Bit 2 (Not Used) Bit 9 (Not Used) Bit 1 (Not Used) Bit 8 (Not Used) Bit 0 (Not Used) Default Rst. Value xxh Read Value: xxh Default Rst. Value xxh Read Value xxh Writing any value to this register causes the data in FIFO to push or pop data through the FIFO data port and the FIFO Quad Halfword 1-4 registers. The FIFO operation depends on the direction of data flow. If the compressor/decompressor is emptying the FIFO, data is transferred from the FIFO data port register to the FIFO Quad Halfword 1 register, simultaneously with data transfer from Quad Halfword 1 to Quad Halfword 2, Quad Halfword 2 to Quad Halfword 3, and Quad Halfword 3 to Quad Halfword 4, with the original data of Quad Halfword 4 being lost. If the compressor/decompressor is filling the FIFO, data is transferred from the FIFO Quad Halfword 1 register to the FIFO data port register, simultaneously with data transfer from Quad Halfword 2 to Quad Halfword 1, Quad Halfword 3 to Quad Halfword 2, and Quad Halfword 4 to Quad Halfword 3, with the contents of Quad Halfword 4 becoming indeterminate. Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 15. Synchronous/Asynchronous Serial Interface (SASif) 15.1 Functional Description The SASIF is a Synchronous/Asynchronous Receiver/Transmitter which performs serial-parallel conversion on data received from a peripheral device, and parallel-to-serial conversion of data for transmission to a peripheral device. The interface consists of serial transmit data (SASTXD), serial receive data (SASRXD), and a serial clock (SASSCLK) signals. Figure 15-1 is a block diagram of the SASIF. The SASIF includes a programmable baud rate generator for asynchronous and synchronous operations. Four interrupts can be generated for the ARM. These are Transmit Shift Register empty, Transmit Buffer Register Empty, or Receive Buffer Register full, and Receive FIFO Timeout. These interrupts can each be uniquely enabled or disabled. The SASIF can also be set to FIFO mode. In this mode, the ARM will be relieved of excessive interrupt handling and will allow for an overall faster transmit and receive speed. A FIFO mode can be enabled for either the receive portion or the transmit portion of the SASIF. When the transmit FIFO is enabled, a 16-byte FIFO will be used to hold up to 16 bytes of data to be transmitted. The Transmit Buffer Empty interrupt will only be generated if the transmit FIFO has no new data to transmit (it is empty). When the receive FIFO is enabled, a 16-byte FIFO will be used to store up to 16 bytes of data which are received from the receive shift register. The Receive Buffer Full interrupt will only be generated if the receive FIFO has no room left for incoming data (it is full). The receive FIFO also includes a timeout function. If the receive FIFO is not full, but the last newly received byte was longer than four byte times ago (based on the programmed baud rate), then a timeout interrupt will be generated. A “byte time” is the time in which it takes to receive one byte of data. The receive and transmit data is double buffered to provide more time for the ARM to process receive data. The data shifting order, MSB to LSB or LSB to MSB, and the SASCLK polarity are programmable. The synchronous communication mode enables the ARM to transmit and receive data synchronous referencing to the serial clock. The ARM can read the status of the SASIF at any time during operation. Status includes IRQ source (SASTXD or SASRXD) and operation mode (synchronous or asynchronous). During the Input/Output mode the SASTXD, SASRXD, and SASSCLK values can also be read or written by the ARM. The contents of each byte within the transmit and receive fifo can be read any time during operation, as well as the input and output pointers to both fifos. Following is the feature summary of the Serial Interface: • • • • • • • • • • • Full duplex, three wire system: SASSCLK (serial clock), SASTXD (Transmit data), SASRXD (Receive data) Independent transmit data shift register and receive data shift register Double buffered receive and transmit data register Programmable 7 or 8 data bit asynchronous serial-interface with a start bit, a stop bit and no parity 8 data bit synchronous serial-interface with programmable data shifting order Programmable baud rate generator supports up to 14400 baud asynchronous transmit and receive (when in fifo mode is not on), and up to 2 ICLK synchronous transmit and receive Supports up to 115.2 Kbaud asynchronous transmit and receive when in FIFO mode Single interrupt generation for Transmit Data Shift Register empty, Transmit Data Buffer Register empty, Receive Data Buffer Register full, and Receive FIFO Timeout In the FIFO mode, transmitter and receiver are each buffered with 16 byte FIFO’s to reduce the number of interrupts to the ARM. Maximum ±1% SASTXD Async transmit baud rate error Maximum ±2.5% SASRXD Async receive baud rate allowable error 100723A Conexant 15-1 MFC2000 Multifunctional Peripheral Controller 2000 SclkCtrlLo SclkCtrlHi Hardware Description SASIrqCtrl IRQSASIf ClockGen TxRxControl IOControl SASIRQ Control SASTXD SASRXD SASSCLK SASCommand Reg TxBuffer Reg (SASData) TxShift Reg RxBuffer Reg (SASData) RxShift Reg CPU Bus Figure 15-1. SASIF Block Diagram 15-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 15.2 Register Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: SASCmd 01FF80F1 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst. Value xxh Read Value 00h Default: SASCmd 01FF80F0 (Not Used) TxFIFOEnb RxFIFOEnb L2MSB SASSCLKPo DataLen l SASMode Rst. Value X0000000b Read Value 00h Register Description: SASIF Command Register Bit 15-7: Not used Bit 6: TxFIFOEnbRead/Write bit. This bit controls whether or not the 16-byte transmit FIFO is to be used. When the TxFIFOEnb is cleared (default), the transmit FIFO will not be used and an interrupt will be generated each time a byte is sent. If TxFIFOEnb is set, the transmit FIFO will be used and an interrupt will be generated only when the FIFO is completely emptied. This should ONLY be written to during setup and not after the SASIF has started sending or receiving data, as data loss could occur. Bit 5: RxFIFOEnbRead/Write bit. This bit controls whether or not the 16-byte receive FIFO is to be used. When the RxFIFOEnb is cleared (default), the receive FIFO will not be used and an interrupt will be generated for each byte received. If RxFIFOEnb is set, then the receive FIFO will be used and an interrupt will only be generated if the FIFO is full or a receive FIFO timeout occurs. This should ONLY be written to during setup and not after the SASIF has started sending or receiving data, as data loss could occur. Bit 4: L2MSBRead/Write bit. This bit controls the shifting order of the transmit and receive registers. When the L2MSB bit is cleared (default) and the SASIF is set to the AsyncMode or SyncMode, the transmit and receive shift register will shift from the MSB to the LSB. When the L2MSB bit is set, the transmit and receive register will shift from the LSB to MSB. Bit 3: SASSCLKPolRead/Write bit. This bit controls the polarity of the SASSCLK pin for the sync mode. When the SASSCLKPol bit is cleared (default) and the SASIF is set to AsyncMode or SyncMode, the SASSCLK polarity will be non-inverted, which will enable the external logic to clock the SASTXD pin on the rising edge of the SASSCLK pin. When the SASSCLKPol bit is set and the SASIF is set to AsyncMode or SyncMode, the SASSCLK polarity will be inverted, which will enable the external logic to clock the SASTXD pin on the falling edge of the SASSCLK pin. Bit 2: 100723A DataLenRead/Write bit. This bit controls the number of bit for AsyncMode transmit. This bit is not effective for the SyncMode. When the DataLen is cleared (default) and the SASIF is set to the AsyncMode, the TxBuffer register bit 7 will be the MSB and bit 0 will be the LSB for asynchronous transmit. The transmit shifting order is controlled by the L2MSB bit. When the DataLen is set and the SASIF is set to the AsyncMode, the TxBuffer register bit 6 will be the MSB and bit 0 will be the LSB for asynchronous transmit. Conexant 15-3 MFC2000 Multifunctional Peripheral Controller 2000 Bit1-0: SASModeRead/Write bits. Hardware Description These two bits control the SASIF operation modes. 00: AsyncMode (default) 01: SyncMode 10 & 11: Reserved Note: The TxFIFO enable and the RxFIFO enable should either be set or cleared once in the setup of the SASIF device. Enabling or disabling the FIFOs once the MFC is up and running could have unpredicted results if data is being received or sent by the shift registers. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: SASRxData 01FF80F3 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst. Value xxh Read Value 00h Default: SASRxData 01FF80F2 SASRx Data(7) SASRx Data(6) SASRx Data(5) SASRx Data(4) SASRx Data(3) SASRx Data(2) SASRx Data(1) SASRx Data(0) Rst. Value 00h Read Value 00h Register Description: SASIF Rx Data Buffer Register Note: This is the Receive buffer data register. Reading from this register will return the data in the Rxbuffer (for fifo disabled) or the oldest valid received data (for fifo enabled). However, after a read, a write MUST be done to this register in order to let the SASIF know that data has been read. This was done to help with emulation testing. Writing to the SASData Register will clear the RxBufFull or RxFifoThresh status bits. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: SASTxData 01FF80FB (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Rst. Value xxh Read Value 00h Default: SASTxData 01FF80FA SASTx Data(7) SASTx Data(6) SASTx Data(5) SASTx Data(4) SASTx Data(3) SASTx Data(2) SASTx Data(1) SASTx Data(0) Rst. Value 00h Read Value 00h Register Description: SASIF Tx Data Buffer Register (write only) Note: This is the Transmit buffer data register. It is a write only register. Writing to this register placed data into the transmit buffer register (or the transmit fifo if TxFifo is enabled). Writing to the SASTxData Register will clear the TxBufEmpty or TxFifoThresh status bits. 15-4 Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 SASFifoPtr 01FF80F7 Address: Bit 13 Bit 12 Bit 11 Tx Input Pointer Bit 7 Bit 6 SASFifoPtr 01FF80F6 Bit 5 Bit 10 Bit 9 Bit 8 Default: Bit 0 Rst. Value 00h Read Value 00h Default: Tx Output Pointer Bit 4 Bit 3 Rx Input Pointer Bit 2 Bit 1 Rst. Value 00h Read Value 00h Rx Output Pointer Register Description: SASIF Fifo Pointer Register Bit 15-12: Transmit FIFO input pointer (Read Only bit) Bit 11-8: Transmit FIFO output pointer (Read Only bit) Bit 7-4: Receiver FIFO input pointer (Read Only bit) Bit 3-0: Receiver FIFO output pointer (Read Only bit) Address: Bit 15 SASFifoQty 01FF80FD (Not Used) Address: Bit 7 SASFifoQty 01FF80FC (Not Used) Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Tx FIFO Quantity Bit 6 Bit 5 Bit 4 Bit 8 TxFIFOThreshVal Bit 3 Bit 2 Bit 1 Rx FIFO Quantity Bit 0 RxFIFOThreshVal Default: Rst. Value X0000011b Read Value 00000011b Default: Rst. Value X0000011b Read Value 00000011h Register Description: SASFifoQty Register Bit 15: Not Used Bit 14-10: TxFIFOQty (Transmit FIFO Quantity)Read Only bits. These five bits hold the value of the amount of bytes stored within the transmit FIFO. As data is written to or removed from the TxFIFO, the quantity will be adjusted accordingly. Bit 9-8: TxFIFOThreshVal (Transmit FIFO Threshhold value)Read/Write bits. Depending on how these two bits are set, will affect when the transmit FIFO considers itself empty enough to cause an interrupt. Bit 7: 100723A Bit Value # of bytes left in TxFIFO which should cause interrupt “00” 12 “01” 8 “10” 4 “11” 2 Not Used Conexant 15-5 MFC2000 Multifunctional Peripheral Controller 2000 Bit 6-2: Hardware Description RxFIFOQty (Receive FIFO Quantity)Read Only bits. These five bits hold the value of the amount of bytes stored within the receive FIFO. As data is written to or removed from the RxFIFO, the quantity will be adjusted accordingly. Bit 1-0: RxFIFOThreshVal (Receive FIFO Threshhold value)Read/Write bits. Depending on how these two bits are set, will affect when the receive FIFO considers itself full enough to cause an interrupt. Bit Value # of bytes filled in RxFIFO which should cause interrupt “00” 4 “01” 8 “10” 12 “11” 14 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 SASIrqSts 01FF80F9 (Not Used) (Not Used) (Not Used) RxFifo Overrun (Read only) TxFifoFull (Read only) TxFifoEmpty RxFifoFull (Read only) (Read only) Bit 9 Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 SASIrqSts 01FF80F8 RxTimeout Elapsed (Read only) RxTimeout Enb TxBufIrqEnb TxShfIrqEnb RxBufIrqEn TxBufEmpty TxShfEmpty RxBufFull b (Read only) Or Or RxFifoThres TxFifoThres h h (Read only) (Read only) Bit 1 Bit 8 Default: RxFifoEmpt Rst. Value y XXh (Read only) Read Value 05h Bit 0 Default: Rst. Value X0XXX000b Read Value 30h Register Description: SerSASIrqCtrl Register Bit 15-13: Bit 12: Not Used RxFifoOverrun(Receive FIFO data loss)Read only bit. This bit goes high when the receive FIFO is completely full, but an extra byte has just been received by the RxShiftReg. This will not cause an interrupt, but the RxFifoThresh should already have done so. Bit 11: TxFifoFull(Transmit FIFO full)Read only bit. This bit goes high when the transmit FIFO is completely full. Data cannot be written to the transmit FIFO after this point. This will not cause an interrupt. This is helpful when trying to figure out if more bytes can be written to the transmit FIFO. Bit 10: TxFifoEmpty(Transmit FIFO empty)Read only bit. This bit goes high when the transmit FIFO is completely empty. This will not cause an interrupt, but the TxFifoThresh should have already done so. 15-6 Conexant 100723A Hardware Description Bit 9: MFC 2000 Multifunctional Peripheral Controller 2000 RxFifoFull(Receive FIFO full)Read only bit. This bit goes high when the receive FIFO is completely full. New received data received from the RxShiftReg will be thrown away. This will not cause an interrupt, but the RxFifoThresh should have already done so. Bit 8: RxFifoEmpty(Receive FIFO empty)Read only bit. This bit goes high when the receive FIFO is completely empty. This will not cause an interrupt. This can be helpful in trying to figure out if more data can be read from the receive FIFO. Bit 7: RxTimoutElapsed (Receive FIFO Timeout occurred)Read only bit. The RxTimoutElapsed shows the status of the Timeout function of the receive FIFO. When the RxTimoutElapsed is set, the Timer has timed out which means that the FIFO has not received any new data for too long of a time, but the FIFO is not full. When this bit is cleared, the receive FIFO is running properly. This will cause an interrupt in conjunction with RxTimeoutEnb Bit 6: RxTimeoutEnb (Receive Timeout Interrupt Enable)Read/Write bit. When the RxTimerEnb is cleared (default), the RxTimeoutIRQ signal will be disabled. When the RxTimerEnb bit is set, the RxTimeoutIRQ will be enabled. Bit 5: TxBufEmpty/TxFifoThresh (Transmit Data Buffer Register Empty or Transmit FIFO Threshhold met)Read only bit. The TxBufEmpty bit shows the status of the transmit buffer register when TxFIFO is disabled. The transmit buffer register is empty when this bit is set. The transmit buffer register is when this bit is cleared. When TxFIFO is enabled, the transmit FIFO has met its threshhold limit when this bit is set, and is not yet emptied to its threshhold when this bit is cleared. This bit will cause an interrupt in conjunction with TxBufIRQEnb. Bit 4: TxShfEmpty (Transmit Shift Data Register Empty)Read only bit. The TxShfEmpty bit shows the status of the transmit shift register. The transmit shift register is empty when this bit is set. The transmit shift register is full when this bit is cleared. Bit 3: RxBufFull/RxFifoThresh (Receive Buffer Register Full or Receive FIFO Threshhold met)Read only bit. The RxBufFull bit show the status of the receive buffer register (when RxFIFO is disabled). The receive buffer register is empty when this bit is cleared. The receive buffer register is when this bit is set. When RxFIFO is enabled, the receive FIFO has met its threshhold when this bit is set, and is not yet filled to its threshhold limit when this bit is cleared. This bit will cause an interrupt in conjunction with RxBufIRQEnb. 100723A Conexant 15-7 MFC2000 Multifunctional Peripheral Controller 2000 Bit 2: Hardware Description TxBufIrqEnb (Transmit Buffer IRQ Enable)Read/Write bit. When the TxBufIrqEnb bit is cleared (default), the TxBufIRQ signal is disabled. The TxBufIRQ will be activated, when the TxBufIrqEnb control bit and the TxBufEmpty status bit are set. Bit 1: TxShfIrqEnb (Transmit Shift Empty IRQ Enable)Read/Write bit. When the TxShfIrqEnb bit is cleared (default), the TxShfIRQ signal will be disabled. The TxShfIRQ will be activated, when the TxShfIrqEnb control bit and the TxShfEmpty status bit are set. Bit 0: RxBufIrq (Receive Buffer IRQ Enable)Read/Write bit. When the RxBufIrqEnb bit is cleared (default), the RxBufIRQ signal will be disabled. The RxBufIRQ will be activated, when the RxBufIrqEnb control bit and the RxBufFull status bit are set. For monitoring the TxBuffer, TxShift, and RxBuffer Register status, the SASIF has four status bits. They are TxBufEmpty, TxShfEmpty, RxBufFull, and RxTimerElapsed status bits. Following are the conditions when the status bits are set and cleared: TxBufEmpty Set when Cleared when RxBufFull1 TxShfEmpty 1. the system resets, or 1. the system resets, or 2. the last bit of the TxShift Register is sent to the SASTXD pin 2. the TxBufEmpty status bit is set and the last bit of the TxShift Register is sent to the SASTXD pin. 1. the CPU writes to the SASData Register, and 1. the CPU writes to the SASData Register, and 2. the TxShfEmpty status bit is cleared. 2. the TxBufEmpty status bit is set. 1. the stop bit is received by the SASRXD pin. 1. the system reset, or 2. the CPU reads the SASData Register. RxTimerElapsed Set when When all of these are true for the time it would take to receive 4 bytes into the Rx buffer. The RxFIFO is not full, No start bit has been received, the SASRxData Register has not been read and written back to. Cleared when 15-8 1. the system resets 2. the CPU writes to the SASRxData Register Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 For keeping track of the transmit and receive activities, the SASIF has four separate interrupts -- the TxBufIRQ, TxShfIRQ, RxBufIRQ, and RxTimeoutIRQ. Any of these interrupt activate will turn on the IRQSASIF. Following are the conditions when they are set and cleared: TxBufIRQ Activated when Deactivated when TxShfIRQ 1. the TxBufEmpty status bit is set, and RxBufIRQ1 1. the TxShEmpty status bit is set, and 1. the RxBufFull status bit is set, and 2. the TxShfIrqEnb control bit is set, and 2. the RxBufIrqEnb control bit is set. 2. the TxBufIrqEnb control bit is set. 1. the TxBufEmpty status bit is cleared, or 1. the TxShEmpty status bit is cleared, or 1. the RxBufFull status bit is cleared, or 2. the TxBufIrqEnb control bit is cleared. 2. the TxShfIrqEnb control bit is cleared. 2. the RxBufIrqEnb control bit is cleared. RxTimeoutIRQ Activated when Deactivated when 1. the RxTimerElapsed status bit is set, and 2. the RxTimerEnb control bit is set. 1. the RxTimerElapsed status bit is cleared, or 2. the RxTimerEnb control bit is cleared. Note: The RxBufFull status bit and the RxBufIRQ is valid in the AsyncMode only. During the SyncMode, data receive to the SASIF is synchronous with the transmit data, therefore, the RxBufFull status bit and the RxBufIRQ signal is not used in the SyncMode. 100723A Conexant 15-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address: Bit 15 Bit 14 Bit 13 Bit 12 SASDiv 01FF80F5 SASRXD Early 1 - Early (Not Used) SASSCLK Divisor Upper Bits (13-8) Address: Bit 7 Bit 6 Bit 5 SASDiv 01FF80F4 SASSCLK Divisor Lower Bits (7-0) Bit 4 Bit 11 Bit 3 Bit 10 Bit 2 Bit 9 Bit 1 Bit 8 Default: Bit 0 Rst. Value 0x000000b Read Value 00h Default: Rst. Value 00h Read Value 00h Register Description: This register controls bits of the SASSCLK Divisor. Bit 15: SASRXDEarly (Receive Data Early)Read/Write Bit. If this bit is set to one (default = 0), the input data will be sampled 1/2 shift clock early from what is illustrated in Figure 15-2. This is only for the sync mode. Bit 14: Not used Bit 13-8: DivHi (Divisor High Register)Read/Write bits. The DivHi Register is the higher bits (bit 13-8) of the SASSCLKDivisor Register, which defines the SASSCLK frequency. Bit 7-0: DivLo (Divisor Low Register)Read/Write bits. The DivLo Register is the lower bits (bit 7-0) of the SASSCLKDivisor Register, which defines the SASSCLK frequency. Writing the DivLo register will cause the SASIF logic to load the DivHi and DivLo to the internal counter. Firmware can transmit data with the right speed immediately after the SASSCLK setup. The SASSCLK Divisor Register defines the SASSCLK frequency, which depends on the AUXCLK frequency (fTstClk). The SASSCLKDivisor Register has a fourteen bit divisor region. The SASSCLK frequency (fSClk)and Divisor relationship is: 15-10 For the sync mode, f SClk = INT ( fAUXCLK ) 2 * Divisor + 2 For the async mode, f SClk = INT ( fAUXCLK ) 8 * Divisor + 8 Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bit 0 Rst. Value 00h Read Value 00h Default: SASTxFIFOn SASIF Tx FIFO Byte (2n + 1) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 SASTxFIFOn Rst. Value 00h Read Value 00h SASIF Tx FIFO Byte (2n) Register Description: SASTxFIFO Register Address: Bit 15 Bit 14 SASTxFIFO0 – Byte 0, 1 0x01FF8600-01 SASTxFIFO1 – Byte 2, 3 0x01FF8602-03 SASTxFIFO2 – Byte 4, 5 0x01FF8604-05 SASTxFIFO3 – Byte 6, 7 0x01FF8606-07 SASTxFIFO4 – Byte 8, 9 0x01FF8608-09 SASTxFIFO5 – Byte A, B 0x01FF860A-0B SASTxFIFO6 – Byte C, D 0x01FF860C-0D SASTxFIFO7 – Byte E, F 0x01FF860E-0F Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bit 0 Rst. Value 00h Read Value 00h Default: SASRxFIFOn SASIF Rx FIFO Byte (2n + 1) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 SASRxFIFOn SASIF Rx FIFO Byte (2n) Bit 1 Rst. Value 00h Read Value 00h Register Description: SASRxFIFO Register (Read Only Register) 100723A SASRxFIFO0 – Byte 0, 1 0x01FF8610-01 SASRxFIFO1 – Byte 2, 3 0x01FF8612-03 SASRxFIFO2 – Byte 4, 5 0x01FF8614-05 SASRxFIFO3 – Byte 6, 7 0x01FF8616-07 SASRxFIFO4 – Byte 8, 9 0x01FF8618-09 SASRxFIFO5 – Byte A, B 0x01FF861A-0B SASRxFIFO6 – Byte C, D 0x01FF861C-0D SASRxFIFO7 – Byte E, F 0x01FF861E-0F Conexant 15-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 15.3 SASIF Timing 15.3.1 SASSCLK Timing When SASSCLK is on (Figure 15-2), the duty cycle of SASSCLK is always 50%. AUXCLK Tserd SASSCLK Tserd SASTXD Tserd SASRXD Tserd applies to SASSCLK, SASTXD, and SASRXD when they are in output configuration Figure 15-2. SASSCLK Timing Diagram In Figure 15-2, TSERd is the AUXCLK to SASSCLK, SASRXD and SASTXD delay. TSERd applies to SASSCLK, SASTXD, and SASRXD when they are in output configuration. The SASSCLK polarity is controlled by the SAS Command Register SASSCLKPol Bit. When the SASSCLKPol bit is cleared (default), the SASTXD signal transition is on the SASSCLK falling edge. External logic can latch the SASTXD signal on the SASSCLK rising edge. When the SASSCLKPol bit is set, the SASTXD signal transition is on the rising edge of the SASSCLK. External logic can latch the SASTXD signal on the SASSCLK falling edge. When configured in the SyncMode, the SASSCLK will be active for eight cycles for each write to the empty SASData Register. Continuous SASSCLK can be achieved by keeping the transmit buffer register full. When there is no data on the SASTXD pin, the SASSCLK will stay in idle state, which is logic zero as the SASSCLKPol bit is clear and logic one as the SASSCLKPol bit is set. When configured in the AsyncMode, the SASSCLK is a free running signal at the SASSCLKDivisor pre-defined clock rate. 15.3.2 Synchronous Mode Timing When the SASIF is configured to the SyncMode, the SASIF generates the SASSCLK signal to synchronize data transmit and receive. Therefore, only the transmitter related status bit and IRQ signals are used, and the RxBufFull status bit and the RxBufIRQ signal are not used. 15.3.2.1 FIFOs Disabled The TxBufEmpty and TxShfEmpty status bits are both set on system reset. When the FIFOs are disabled and both the TxBuffer and TxShift Register are empty, writing to the SASData Register will clear the TxShfEmpty status bit, and will fill the TxShift Register with the TxBuffer Register content. When the TxBuffer is empty and the TxShift Register is non-empty, writing to the TxBuffer Register will clear the TxBufEmpty status bit, and the TxShift Register is unaffected. When the TxBuffer is full and the TxShift Register is empty, the TxBuffer Register value will be loaded into the TxShift Register. The TxBufEmpty status bit will be set, and the TxShfEmpty flag is unaffected. 15-12 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 When both the TxBuffer Register and TxShift register are empty, the TxShfEmpty status bit will be set when the last bit of the data is shifted to the SASTXD pin. 15.3.2.2 FIFOs Enabled When FIFOs are enabled and the transmit FIFO is completely empty and TxShift Register is empty, writing to the SASData Register will clear the TxShfEmpty status bit, keep the TxBufEmpty bit set and will fill the TxShift Register with the contents of the first FIFO location written to. When the transmit FIFO is completely empty and the TxShift Register is non-empty, writing to the transmit FIFO (accomplished by writing SASData) will clear the TxBufEmpty status bit and the TxShift Register is unaffected (it will stay filled and the TxShfEnpty will stay cleared). When the transmit FIFO is not empty and the TxShift Register is empty, the value of the oldest valid FIFO location will be loaded into the TxShift Register. The TxBufEmpty status bit will be set only if the last valid FIFO location was just transferred to the TxShift Register. The TxShfEmpty flag is unaffected. When the transmit FIFO is completely empty and TxShift register are empty, the TxShfEmpty status bit will be set when the last bit of the data is shifted to the SASTXD pin. 15.3.2.3 Transmiting and Sampling The SASRXD signal is sampled on the falling edge of the SASSCLK when the SASSCLKPol bit is cleared. SASRXD signal is sampled on the rising edge of the SASSCLK when the SASSCLKPol bit is set. If the SASRXDEarly bit is set the SASRXD signal will be sampled 1/2 SASSCLK early. When the L2MSB control bit is cleared, the MSB to the LSB of the TxShift Register will be shifted to the SASTXD pin, and the SASRXD signal will be shifted into the MSB of the RxShift Register. If the L2MSB bit is set, the LSB to the MSB of the TxShift Register will be shifted to the SASTXD pin, and the SASRXD signal will be shift into the LSB of the RxShift Register. The DataLen bit is not used in the SyncMode, eight data bits will be transmitted or received regardless of setting. SASSCLK SASTXD MSB LSB D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 MSB SASRXD SASCs LSB D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 Wr SerData TxBufEmpty TxShfEmpty Figure 15-3. Synchronous Mode Timing 15.3.3 Asynchronous Mode Transmitter Timing Once AsyncMode is set, the transmitter logic will set SASTXD to logic one and will stay in the transmitter idle state. After the ARM writes to the SASData Register, SASTXD will output the Start bit (logic 0) on the next SASSCLK falling edge. Starting from LSB of the TxShift Register (when L2MSB is set), a total of 7 or 8 bits of data (depending on the DataLen bit) will be sent. The bit next to the last data bit is the Stop bit. Similarly to the SyncMode transmit timing, the TxBufEmpty, TxShfEmpty status bits, and the TxBufIRQ, TxShfIRQ has the same timing sequence. See Figure 15-4. 100723A Conexant 15-13 MFC2000 Multifunctional Peripheral Controller 2000 SASTXD Hardware Description LSB Start Stop SASSCLK Wr SerData SASCs TxBufEmpty TxShfEmpty Figure 15-4. Asynchronous Transmitter Timing The bit capture timing above is identical whether FIFO mode is enabled or disabled. At the end of each transmitted byte, a new byte will be loaded from the TxBuffer Register when FIFO mode is disabled, or from the oldest valid location with the FIFO when FIFO mode is enabled. Following are the timing sequence for the interrupt control and byte loading control for both FIFO enabled and FIFO disabled modes: SAS DATA WR SAS DATA WR SASCSn bytes 1 SASTXD TxFIFOEnb Txload TxBufEmpty TxShfEmpty 2 3 15 16 1 Figure 15-5. Asynchronous Transmitter byte Timing FIFO Mode Enabled 15.3.3.1 Asynchronous Mode Receiver Timing Once AsyncMode is set, the receiver logic will look for a falling edge in the SASRXD signal and will stay in the receiver idle state. While SASRXD stays high, the receiver idles. When the Start bit comes, the SASIF EdgeDetector is triggered by the falling edge. Until the next internal 8X baud rate clock arrives, the beginning of this character is defined. Each bit has 8 8X baud rate clock pulses in it. Data is sampled on the fourth Baud8X clock from the receiving bit boundary. See Figure 15-6. If the sampling value of the Start bit is a logic 1, that start bit is regarded as a glitch or an invalid character, no RxBufIRQ will be generated. Start bit Baud8X Sampling SASRXD LSB Figure 15-6. Asynchronous Receiver Bit Timing 15-14 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 After receiving the Stop bit, when FIFO mode is disabled, the SERIRQ and the RxBufFull will both rise to a logic 1. RxBufFull and the SERIRQ will be cleared by reading of the SASData Register. SASRXD Stop Bit Start Bit LSB MSB Rd SerData SASCs RxBufFull Figure 15-7. Asynchronous Receiver Byte Timing – FIFO mode disabled When FIFO-mode is enabled, after receiving the stop bit, the SERIRQ and the RxBufFull will change to a logic 1 only if the receive FIFO becomes full as a result of adding that last byte. Both the interrupt and RxBufFull bit will be cleared when the SASData Register is read. SAS DATA RD SASCSn bytes 1 SASRXD 2 3 15 16 RxFIFOEnb Rxload RxBufFull Figure 15-8. Asynchronous Receiver Byte Timing – FIFO mode enabled The last feature of the FIFO mode is the timeout interrupt. In normal cases, the receive FIFO only causes an interrupt when it is completely full. However, in the case where less than 16 bytes were received and no more bytes are being sent to the SASIF, the timeout function tells the ARM that no data has been received within the required amount of time, so a RxTimeoutIRQ occurs. The time required to cause this interrupt is based on the baud rate and is 4 times the ammount of time that it would take to send one byte of data into the RxShift Register. So if no byte is transferred from the RxShift Register to the receive FIFO, nor is any bit shifted onto the RxShift Register in that time, then the RxTimeoutIRQ will occur. Here is an example of that: SAS DATA RD SASCSn SASRXD RxFIFOEnb Rxload TxBaudend RxTimerElapsed 1 2 3 4 32 beats without a Rxload Figure 15-9. Asynchronous Receiver FIFO Timeout FIFO Mode Enabled 100723A Conexant 15-15 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 15.4 Firmware Operation 15.4.1 SASIF SyncMode Operation SyncMode Setup 1. 2. 3. 4. Set the SASSCLKDivisor Register for proper transmission rate. Set the L2MSB bit for proper shifting order. Set the SASSCLKPol bit for proper SASSCLK polarity. Set the transmit FIFO or receiver FIFO to be enabled if lower system overhead or faster transfer rate is required. By default, the two FIFO’s are disabled. 5. Clear the TxBufIrqEnb bit and/or the TxShfIrqEnb bit if continuous transmitting is not required (lower CPU interrupt overhead and lower transfer rate), or set the TxBufIrqEnb bit and the TxShfIrqEnb bit if continuous transmission is needed (higher CPU interrupt overhead and higher transfer rate). 6. Set the SASMode bit to select SyncMode operations. Note: Steps 1 through 5 can be done in a setup-table load. Data Transmit and Receive Example – FIFO mode disabled Case when the TxBufIRQ and the TxShfIRQ are enabled: 1. The ARM writes first data to the SASData Register, and sets the TxBufIrqEnb and the TxShfIrqEnb bits. 2. The SASIF loads the TxBuffer Register (SASData Register ) to the TxShift Register and clears the TxShfEmpty status bit. 3. The SASIF transmits, and receives bits 7 through bit 0 (if the L2MSB bit is cleared) or bit 0 through bit 7 (if the L2MSB bit is set). 4. By the end of the step 3 data shifting, the ARM gets the TxBufIRQ, which indicates that the TxBuffer is ready for next transmit and the RxBuffer is full. 5. The ARM reads the SASData Register for the RxBuffer Register data, and clears the TxBufIRQ by writing to the TxBuffer Register with the next data. If no more data, the ARM clears the TxBufIrqEnb bit. If only transmit is desired, the ARM can ignore the data in the RxBuffer Register. 6. If the TxBufEmpty status bit is cleared at the end of the data shifting, the SASIF will set the TxBufEmpty bit and goto step 2. However, if the TxBufEmpty bit is set, the SASIF will set the TxShfEmpty status bit and generates the TxShfIRQ. 7. The ARM gets the TxShfIRQ, which indicates the end of all data shifting. If no data is wished to be sent or received, the ARM can then clear the TxShfIrqEnb bit. Data Transmit and Receive Example – FIFO mode (both FIFO’s enabled) Case when the TxBufIRQ and the TxShfIRQ are enabled: Note: When using FIFO mode in synchonous mode, both FIFO’s must be enabled. This ensures that the RxFIFO will contain the same number of bytes of data by the time the TxBufIRQ occurs that were originally written to the TxFIFO. Otherwise, since only Tx interrupts are used, it will be impossible to grab the received data if no received FIFO is used, and data will be lost if no TxFIFO is used when an RxFIFO is used. 1. The ARM writes first data to the SASData Register up to sixteen times in a row, filling up the TxFIFO as much as desired, and sets the TxBufIrqEnb and the TxShfIrqEnb bits. 15-16 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 2. The SASIF loads the oldest unused byte from the Tx FIFO to the TxShift Register and clears the TxShfEmpty status bit. If this is the last byte held within the FIFO, then a TxBufIRQ and TxBufEmpty status bit will be set, which indicates that the Tx FIFO is ready for next data to be loaded into it. 3. The SASIF transmits, and receives bits 7 through bit 0 (if the L2MSB bit is cleared) or bit 0 through bit 7 (if the L2MSB bit is set). 4. By the end of the step 3 data shifting, if the Tx FIFO is empty then the ARM will receive the TxBufIRQ and TxBuffEmpty status bit will be set, 5. If the TxBufEmpty is cleared at the end of the data shifting (meaning there was leftover data in the TxFIFO), the SASIF will set go back to step 2. However, if the TxBufEmpty bit is set, the SASIF will set the TxShfEmpty status bit and generate the TxShfIRQ. 6. The ARM gets the TxShfIRQ, which indicates the end of all data shifting. The ARM reads the SASData Register as many times as it wrote to the SASData Register when filling up the Tx FIFO. After this, the next batch of data can be written to the Tx FIFO by writing up to sixteen times to SASData. This clears the TxBufEmpty bit and the TxShfEmpty bit. If no more data needs to be sent, the ARM clears the TxBufIrqEnb and TxShfIrqEnb bit. If only transmit is desired, the ARM can ignore the data in the Rx FIFO. 15.4.2 SASIF AsyncMode Operations AsyncMode Setup 1. 2. 3. 4. 5. 6. Set the SASSCLKDivisor Register for proper transmission rate. Set the L2MSB bit for proper shifting order. Set the SASSCLKPol bit for proper SASSCLK polarity. Set the DataLen bit for proper data length. Choose whether to use the transmit fifo or the receive fifo. Either, both, or neither can be used. Clear the TxBufIrqEnb bit, the TxShfIrqEnb, and the RxBufEnb bit for lower CPU interrupt overhead and lower transfer rate, or set the TxBufIrqEnb bit, the TxShfIrqEnb, and the RxBufEnb bit for higher CPU interrupt overhead and higher transfer rate. 7. Set the SASMode bit to select AsyncMode operations. Note: Steps 1 through 7 can be done in a setup-table load. Asynchronous Transmitter – FIFO mode disabled Case when the TxBufIRQ and the TxShfIRQ are enabled: 1. The CPU writes data to the SASData Register (TxBuffer Register). This data is written at that time to the TxBuffer Register. 2. This data will automatically be transferred to the TxShift Register. 3. The SASIF automatically transmits the start bit. 4. The SASIF automatically clears the TxShfEmpty status bit in the SerCmd Register or the TxBufEmpty bit will be cleared if the TxShfEmpty was already cleared. 5. The SASIF automatically sends bits 0 through bit 6 (if 7 bit data is selected) or bit 7 (if 8 bit data is selected). 6. The SASIF transmits the stop bit, sets the TxBufEmpty bit only if the TxBuffer Register contains data (which will soon be transferred to the TxShift Register), or sets the TxBufEmpty and the TxShfEmpty bit if the TxBuffer Register is empty. If the TxBufEmpty status bit is set and the TxBufEnb is set, the the ARM will receive a TxBufIRQ. If the TxShfEmpty status bit is set and the TxShfEnb is set, the the ARM will receive a TxShfIRQ. 7. Upon receiving these interrupts, the TxShfEnb or TxBufEnb can be cleared if no more data is wished to be sent, or a new byte of data can be written to the SASData Register. In the latter case, the TxShfIRQ will be cleared and steps 2 through 6 will be repeated. 100723A Conexant 15-17 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Asynchronous Transmitter – FIFO mode disabled Case when the TxBufIRQ and the TxShfIRQ are enabled: 1. The CPU writes up to 16 bytes in a row of data to the SASData Register (TxBuffer Register). This data will be written to the most current empty locations within the transmit fifo. 2. Upon first writing to the transmit fifo, the data will automatically be transferred to the TxShift Register if the TxShift Register is currently empty. 3. The SASIF automatically transmits the start bit. 4. The SASIF automatically clears the TxShfEmpty status bit in the SerCmd Register. 5. SASIF automatically sends bits 0 through bit 6 (if 7 bit data is selected) or bit 7 (if 8 bit data is selected). 6. The SASIF transmits the stop bit, sets the TxBufEmpty bit only if the Tx FIFO is out of data (or is transfering its last byte to the TxShift Register), or sets the TxBufEmpty and the TxShfEmpty bit if the Tx FIFO is empty and has no data to give to the TxShift Register. If the TxBufEmpty status bit is set and the TxBufEnb is set, the the ARM will receive a TxBufIRQ. If the TxShfEmpty status bit is set and the TxShfEnb is set, the the ARM will receive a TxShfIRQ. 7. Upon receiving these interrupts, the TxShfEnb or TxBufEnb can be cleared if no more data is wished to be sent, or steps 1 through 6 can be repeated. Asynchronous Receiver – FIFO mode disabled 1. The receiver is in idle state (SASRXD high) when the SASIF receiver is waiting for falling a edge of the SASRXD (start bit) 2. The start bit activates the SASIF receiver. 3. After receiving 7 or 8 data bits, SASIF receiver looks for stop bit. 4. After receiving the stop bit, the SASIF receiver will set the RxBufFull bit, and will generate a RxBufIRQ if the RxBufEnb interrupt enable bit is set. 5. This serially received data is automatically transferred to the RxBuffer Register. 6. An ARM Read of the SASData Register will retreive the data from the Rx Buffer Register and will clear the RxBufFull status bit and the RxBufIRQ. Asynchronous Receiver – FIFO mode enabled 1. The receiver is in idle state (SASRXD high) when the SASIF receiver is waiting for falling a edge of the SASRXD (start bit) 2. The start bit activates the SASIF receiver. 3. After receiving 7 or 8 data bits, SASIF receiver looks for stop bit. 4. After receiving the stop bit, the SASIF receiver will set the RxBufFull bit, and will generate a RxBufIRQ if the RxBufEnb interrupt enable bit is set. 5. This serially received data is automatically transferred to the current open location in the Rx FIFO. If the addition of this data makes the Rx FIFO full, then the RxBufIRQ will be activated (if the RxBufEnb is set). When an interrupt is received, 16 bytes have been stored in the Rx FIFO. 6. An ARM Read of the Rx FIFO Register (SASData Register) will clear the RxBufFull status bit and the RxBufIRQ, however it is advised that 16 consecutives reads take place at this time to fully empty out the Rx FIFO. 7. In the case that less than 16 bytes reside in the Rx FIFO but no more will be sent, if the RxTimerEnb is set, then after the Rx Timer times out, then a RxTimeoutIRQ will be sent to the ARM. Note: Each mention in the above descritions of RxTimeoutIRQ, RxBufIRQ, TxShfEmpty, and TxBufEmpty are actually all received by the ARM as a single interrupt: SERIRQ. In order to figure out which interrupt was received, the SASIrqStatus Register must be read, and then the appropriate action be taken. 15-18 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 16. USB INTERFACE 16.1 Function Description The USBIF interface block interfaces to the PC, IPB bus and the DMA block. It bridges print and scan data between the MFC2000 and the PC. It is compliant with USB protocol revision 1.1 and supports device remotewakeup feature. There are six endpoints in the MFC2000, two control endpoints (including endpoint 0), two BULK IN endpoints and two BULK OUT endpoints. The MaxPacketSize for both the control endpoints are 8 byte and the MaxPacketSize for the four bulk transfer pipes are 64 byte. Endpoint 0 supports the Get_Descriptor and USB Vendor/Class commands. The USBIF contains in-silicon USB device controller core, four uni-directional FIFOs and two bi-directional buffers. Description of USB device controller core can be found in UDC specification document. 16.2 Register Description Address: Bit 15 Bit 14 Bit 13 USBEP1Fifo1 (R/W) $01FF8581 Address: Bit 7 Bit 6 Bit 5 Bit 15 Bit 14 Bit 13 Bit 7 Bit 6 Bit 5 100723A Bit 3 Bit 2 Bit 1 Bit 0 Default: Reset. Value 00h Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 4 Bit 3 Default: Reset. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 Default: Reset. Value 00h Read Value 00h Endpoint 1 FIFO Quad Half word 2 Bit 15 Bit 14 Bit 13 USBEP1Fifo3 (R/W) $01FF8585 Bits 15-0: Bit 4 Default: Reset. Value 00h EP1 Bulkin Half Word 2 Bits 15-0: USBEP1Fifo3 (R/W) $01FF8584 Bit 8 EP1 Bulkin FIFO 2 USBEP1Fifo2 (R/W) $01FF8582 Address: Bit 9 Endpoint 1 FIFO Quad Half word 1 USBEP1Fifo2 (R/W) $01FF8583 Address: Bit 10 EP1 Bulkin Half Word 1 Bits 15-0: Address: Bit 11 EP1 Bulkin Half Word 1 USBEP1Fifo1 (R/W) $01FF8580 Address: Bit 12 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP1 Bulkin Half Word 3 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Default: Reset. Value 00h Read Value 00h Bit 2 EP1 Bulkin Half Word 3 Bit 1 Bit 0 Default: Reset. Value 00h Read Value 00h Endpoint 1 FIFO Quad Half word 3 Conexant 16-1 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Hardware Description Bit 13 Bit 12 USBEP1Fifo4 (R/W) $01FF8587 Address: Bit 7 Bit 6 Bit 5 Bit 9 Bit 8 Bit 4 Bit 3 Default: Reset. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 EP1 Bulkin Half Word 4 Bits 15-0: Default: Reset. Value 00h Read Value 00h Endpoint 1 FIFO Quad Half word 4 Bit 15 Bit 14 Bit 13 Bit 12 USBEP1Hold (R/W) $01FF8589 Address: Bit 10 EP1 Bulkin Half Word 4 USBEP1Fifo4 (R/W) $01FF8586 Address: Bit 11 Bit 11 Bit 10 Bit 9 Bit 8 EP1 Bulkin Holding Register Bit 7 Bit 6 Bit 5 Bit 4 USBEP1Hold (R/W) $01FF8588 Bit 3 Reset. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 EP1 Bulkin Holding Register Bits 15-0: Default: Default: Reset. Value 00h Read Value 00h Endpoint 1 FIFO Quad Holding Register Address: Bit 15 USBEP1Ctrl (R/W) $01FF858B Bit 14 Bit 13 Bit 12 Bit 11 Fifo Enabled Data (Read Only) Request (Read Only) Fifo Ready Fifo DMA Threshold Address: Bit 7 Bit 6 Bit 5 Bit 4 USBEP1Ctrl (R/W) $01FF858A unused Holding Reg Byte Present Fifo Data Quantity Full Bit 3 Bit 10 Bit 2 Bit 9 Bit 8 Default: Fifo Output Pointer Rst. Value 00h Read Value 00h Bit 1 Default: Bit 0 Fifo Input Pointer Rst. Value x0000000b Read Value 00h Bit 15: This bit indicates that the FIFO is active and capable of generating DMA requests. This bit generally follows the setting of the LCL_ENB input signal except the FIFO Enabled register bit will remain asserted if the LCL_ENB input signal is set to false while the FIFO is executing a DMA transfer. In this case, the register bit will remain set for the duration of the DMA transfer and then become cleared. Bit 14: This bit is similar to the DMA_REQ signal except that it is not blocked when DMA_TC0 is set. It indicates that the programmed threshold has been met or exceeded and that the FIFO requires data transfers either by enabling hardware DMA through DMA_TC0 or by executing software DMA cycles. 16-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bit 13: This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10: This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 1 to 4. A value of zero causes no data transfers to occur. Values greater than 4 are treated as 4. Bit 9-8: This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 7: Not used Bit 6: This bit indicates that there is a full word in the holding register. Bit 5: This bit indicates that there is a single byte in the holding register. Bit 4-2: This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0: This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Address: Bit 15 Bit 14 Bit 13 USBEP1Data (R/W) $01FF858D Address: Bit 7 Bit 6 Bit 5 100723A Bit 9 Bit 8 Bit 4 Bit 3 Bit 2 Default: Reset Value 00h Read Value 00h Bit 1 Bit 0 Default: Reset Value 00h Read Value 00h Endpoint 1 FIFO Dataport Register Bit 15 Bit 14 Bit 13 USBEP1Tran (W) $01FF858F USBEP1Tran (W) $01FF858E Bit 10 EP1 Bulkin Dataport Register Bits 15-0: Address: Bit 11 EP1 Bulkin Dataport Register USBEP1Data (R/W) $01FF858C Address: Bit 12 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP1 Transition Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 EP1 Transition Register Conexant Default: Reset. Value xxh Bit 2 Bit 1 Bit 0 Default: Reset. Value xxh 16-3 MFC2000 Multifunctional Peripheral Controller 2000 Bit 15-0: Hardware Description Not used Writing any value to this register causes a push or pop of data through the FIFO data port and the FIFO Quad Halfword 1-4 registers. The FIFO operation depends on the direction of data flow. If system bus (CPU or DMA) is writing (filling) the FIFO, data is transferred from the FIFO data port register to the FIFO Quad Halfword 1 register, simultaneously with data transfer from Quad Halfword 1 to Quad Halfword 2, Quad Halfword 2 to Quad Halfword 3, and Quad Halfword 3 to Quad Halfword 4, with the original data of Quad Halfword 4 being lost. If the system bus is reading (emptying) the FIFO, data is transferred from the FIFO Quad Halfword 1 register to the FIFO data port register, simultaneously with data transfer from Quad Halfword 2 to Quad Halfword 1, Quad Halfword 3 to Quad Halfword 2, and Quad Halfword 4 to Quad Halfword 3, with the contents of Quad Halfword 4 becoming indeterminate. Address: Bit 15 Bit 14 Bit 13 USBEP2Fifo1 (R/W) $01FF85A1 Address: Bit 7 Bit 6 Bit 5 Bits 15-0: 16-4 Bit 9 Bit 8 Bit 4 Bit 3 Default: Rst. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 2 FIFO Quad Half word 1 Bit 15 Bit 14 Bit 13 USBEP2Fifo2 (R/W) $01FF85A3 USBEP2Fifo2 (R/W) $01FF85A2 Bit 10 EP2 Bulkout Half Word 1 Bits 15-0: Address: Bit 11 EP2 Bulkout Half Word 1 USBEP2Fifo1 (R/W) $01FF85A0 Address: Bit 12 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP2 Bulkout Half Word 2 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Default: Rst. Value 00h Read Value 00h Bit 2 EP2 Bulkout Half Word 2 Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 2 FIFO Quad Half word 2 Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 USBEP2Fifo3 (R/W) $01FF85A5 Address: Bit 7 Bit 6 Bit 5 Bit 15 Bit 14 Bit 13 Bit 7 Bit 6 Bit 5 100723A Bit 3 Bit 2 Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 4 Bit 3 Default: Rst. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 2 FIFO Quad Half word 4 Bit 15 Bit 14 Bit 13 USBEP2Hold (R/W) $01FF85A9 Bits 15-0: Bit 4 Default: Rst. Value 00h Read Value 00h EP2 Bulkout Half Word 4 Bits 15-0: USBEP2Hold (R/W) $01FF85A8 Bit 8 EP2 Bulkout Half Word 4 USBEP2Fifo4 (R/W) $01FF85A6 Address: Bit 9 Endpoint 2 FIFO Quad Half word 3 USBEP2Fifo4 (R/W) $01FF85A7 Address: Bit 10 EP2 Bulkout Half Word 3 Bits 15-0: Address: Bit 11 EP2 Bulkout Half Word 3 USBEP2Fifo3 (R/W) $01FF85A4 Address: Bit 12 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP2 Bulkout Holding Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 EP2 Bulkout Holding Register Default: Rst. Value 00h Read Value 00h Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 2 FIFO Holding Register Conexant 16-5 MFC2000 Multifunctional Peripheral Controller 2000 Bit 14 Hardware Description Address: Bit 15 Bit 13 Bit 12 USBEP2Ctrl (R/W) $01FF85AB Fifo Enabled Data (Read Only) Request (Read Only) Fifo Ready Fifo DMA Threshold Bit 11 Address: Bit 7 Bit 6 Bit 5 Bit 4 USBEP2Ctrl (R/W) $01FF85AA unused Holding Reg Byte Present Fifo Data Quantity Full Bit 3 Bit 10 Bit 2 Bit 9 Bit 8 Default: Fifo Output Pointer Rst. Value 00h Read Value 00h Bit 1 Default: Bit 0 Fifo Input Pointer Rst. Value x0000000b Read Value 00h Bit 15: This bit indicates that the FIFO is active and capable of generating DMA requests. This bit generally follows the setting of the LCL_ENB input signal except the FIFO Enabled register bit will remain asserted if the LCL_ENB input signal is set to false while the FIFO is executing a DMA transfer. In this case, the register bit will remain set for the duration of the DMA transfer and then become cleared. Bit 14: This bit is similar to the DMA_REQ signal except that it is not blocked when DMA_TC0 is set. It indicates that the programmed threshold has been met or exceeded and that the FIFO requires data transfers either by enabling hardware DMA through DMA_TC0 or by executing software DMA cycles. Bit 13: This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10: This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 1 to 4. A value of zero causes no data transfers to occur. Values greater than 4 are treated as 4. Bit 9-8: This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 7: Not used Bit 6: This bit indicates that there is a full word in the holding register. Bit 5: This bit indicates that there is a single byte in the holding register. Bit 4-2: This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0: This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. 16-6 Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 USBEP2Data (R/W) $01FF85AD Address: Bit 7 Bit 6 Bit 5 Bit 9 Bit 8 Bit 4 Bit 3 Bit 2 Default: Rst. Value 00h Read Value 00h Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 2 FIFO Data Port Register Bit 15 Bit 14 Bit 13 USBEP2Tran (W) $01FF85AF Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Endpoint 2 Tran Bit 7 USBEP2Tran (W) $01FF85AE Bit 15-0: Not used 100723A Bit 10 EP2 Bulkout Dataport Register Bits 15-0: Address: Bit 11 EP2 Bulkout Dataport Register USBEP2Data (R/W) $01FF85AC Address: Bit 12 Bit 6 Bit 5 Bit 4 Bit 3 Endpoint 2 Tran Default: Rst. Value xxh Bit 2 Bit 1 Bit 0 Default: Rst. Value xxh Writing any value to this register causes a push or pop of data through the FIFO data port and the FIFO Quad Halfword 1-4 registers. The FIFO operation depends on the direction of data flow. If system bus (CPU or DMA) is writing (filling) the FIFO, data is transferred from the FIFO data port register to the FIFO Quad Halfword 1 register, simultaneously with data transfer from Quad Halfword 1 to Quad Halfword 2, Quad Halfword 2 to Quad Halfword 3, and Quad Halfword 3 to Quad Halfword 4, with the original data of Quad Halfword 4 being lost. If the system bus is reading (emptying) the FIFO, data is transferred from the FIFO Quad Halfword 1 register to the FIFO data port register, simultaneously with data transfer from Quad Halfword 2 to Quad Halfword 1, Quad Halfword 3 to Quad Halfword 2, and Quad Halfword 4 to Quad Halfword 3, with the contents of Quad Halfword 4 becoming indeterminate. Conexant 16-7 MFC2000 Multifunctional Peripheral Controller 2000 Bit 15 Bit 14 Bit 13 Hardware Description Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Address: USBEP3Fifo1 (R/W) $01FF85B1 Address: EP3 bulk-in Half Word 1 Bit 7 Bit 6 Bit 5 USBEP3Fifo1 (R/W) $01FF85B0 Bit 2 Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 3 FIFO Quad Half word 1 Bit 15 Bit 14 Bit 13 USBEP3Fifo2 (R/W) $01FF85B3 Address: Bit 3 EP3 bulk-in Half Word 1 Bits 15-0: Address: Bit 4 Rst. Value 00h Read Value 00h Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP3 Bulk-in Half Word 2 Bit 7 Bit 6 Bit 5 USBEP3Fifo2 (R/W) $01FF85B2 Bit 4 Bit 3 Rst. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 EP3 Bulk-in Half Word 2 Bits 15-0: Default: Default: Rst. Value 00h Read Value 00h Endpoint 3 FIFO Quad Half word 2 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Address: USBEP3Fifo3 (R/W) $01FF85B5 Address: USBEP3Fifo3 (R/W) $01FF85B4 Bits 15-0: 16-8 EP3 Bulk-in Half Word 3 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Rst. Value 00h Read Value 00h Bit 2 EP3 Bulk-in Half Word 3 Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 3 FIFO Quad Half word 3 Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Bit 12 USBEP3Fifo4 (R/W) $01FF85B7 Address: Bit 7 Bit 6 Bit 5 Bit 9 Bit 8 Bit 4 Bit 3 Default: Rst. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 EP3 Bulk-in Half Word 4 Bits 15-0: Default: Rst. Value 00h Read Value 00h IsocIn FIFO Quad Half word 4 Bit 15 Bit 14 Bit 13 Bit 12 USBEP3Hold (R/W) $01FF85B9 Address: Bit 10 EP3 Bulk-in Half Word 4 USBEP3Fifo4 (R/W) $01FF85B6 Address: Bit 11 Bit 11 Bit 10 Bit 9 Bit 8 EP3 bulk-in Holding Register Bit 7 Bit 6 Bit 5 Bit 4 USBEP3Hold (R/W) $01FF85B8 Bit 3 Rst. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 EP3 bulk-in Holding Register Bits 15-0: Default: Default: Rst. Value 00h Read Value 00h Endpoint 3 FIFO Holding Register Address: Bit 15 USBEP3Ctrl (R/W) $01FF85BB Bit 14 Bit 13 Bit 12 Bit 11 Fifo Enabled Data (Read Only) Request (Read Only) Fifo Ready Fifo DMA Threshold Address: Bit 7 Bit 6 Bit 5 Bit 4 USBEP3Ctrl (R/W) $01FF85BA unused Holding Reg Byte Present Fifo Data Quantity Full Bit 3 Bit 10 Bit 2 Bit 9 Bit 8 Default: Fifo Output Pointer Rst. Value 00h Read Value 00h Bit 1 Default: Bit 0 Fifo Input Pointer Rst. Value x0000000b Read Value 00h Bit 15: This bit indicates that the FIFO is active and capable of generating DMA requests. This bit generally follows the setting of the LCL_ENB input signal except the FIFO Enabled register bit will remain asserted if the LCL_ENB input signal is set to false while the FIFO is executing a DMA transfer. In this case, the register bit will remain set for the duration of the DMA transfer and then become cleared. Bit 14: This bit is similar to the DMA_REQ signal except that it is not blocked when DMA_TC0 is set. It indicates that the programmed threshold has been met or exceeded and that the FIFO requires data transfers either by enabling hardware DMA through DMA_TC0 or by executing software DMA cycles. 100723A Conexant 16-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bit 13: This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10: This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 1 to 4. A value of zero causes no data transfers to occur. Values greater than 4 are treated as 4. Bit 9-8: This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 7: Not used Bit 6: This bit indicates that there is a full word in the holding register. Bit 5: This bit indicates that there is a single byte in the holding register. Bit 4-2: This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0: This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Address: Bit 15 Bit 14 Bit 13 USBEP3Data (R/W) $01FF85BD Address: USBEP3Data (R/W) $01FF85BC Bits 15-0: 16-10 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP3 Dataport Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Default: Rst. Value 00h Read Value 00h Bit 2 EP3 Dataport Register Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h Endpoint 3 FIFO Data Port Register Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 USBEP3Tran (W) $01FF85BF Address: Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bit 2 Bit 1 Bit 0 Default: Ep3 Transition Register Bit 7 Bit 6 Bit 5 USBEP3Tran (W) $01FF85BE Bit 4 Bit 3 Ep3 Transition Register Bit 15-0: Not used Writing any value to this register causes a push or pop of data through the FIFO data port and the FIFO Quad Halfword 1-4 registers. The FIFO operation depends on the direction of data flow. If system bus (CPU or DMA) is writing (filling) the FIFO, data is transferred from the FIFO data port register to the FIFO Quad Halfword 1 register, simultaneously with data transfer from Quad Halfword 1 to Quad Halfword 2, Quad Halfword 2 to Quad Halfword 3, and Quad Halfword 3 to Quad Halfword 4, with the original data of Quad Halfword 4 being lost. If the system bus is reading (emptying) the FIFO, data is transferred from the FIFO Quad Halfword 1 register to the FIFO data port register, simultaneously with data transfer from Quad Halfword 2 to Quad Halfword 1, Quad Halfword 3 to Quad Halfword 2, and Quad Halfword 4 to Quad Halfword 3, with the contents of Quad Halfword 4 becoming indeterminate. Address: Bit 15 Bit 14 Bit 13 USBEP4Fifo1 (R) $01FF85C1 Address: USBEP4Fifo1 (R) $01FF85C0 Bits 15-0: 100723A Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP4 Fifo Half Word 1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Default: Reset. Value 00h Read Value 00h Bit 2 EP4 Fifo Half Word 1 Bit 1 Bit 0 Default: Reset. Value 00h Read Value 00h Endpoint 4 FIFO Quad Half word 1 Conexant 16-11 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 USBEP4Fifo2 (R) $01FF85C3 Address: Bit 7 Bit 6 Bit 5 Bit 15 Bit 14 Bit 13 Bit 7 Bit 6 Bit 5 16-12 Bit 4 Bit 3 Default: Reset. Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 Default: Reset. Value 00h Read Value 00h Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 4 Bit 3 Default: Reset Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 Default: Reset. Value 00h Read Value 00h Endpoint 4 FIFO Quad Half word 3 Bit 15 Bit 14 Bit 13 USBEP4Fifo4 (R) $01FF85C7 Bits 15-0: Bit 8 EP4 Fifo Half Word 3 Bits 15-0: USBEP4Fifo4 (R) $01FF85C6 Bit 9 EP4 Fifo Half Word 3 USBEP4Fifo3 (R) $01FF85C4 Address: Bit 10 Endpoint 4 FIFO Quad Half word 2 USBEP4Fifo3 (R) $01FF85C5 Address: Bit 11 EP4 Fifo Half Word 2 Bits 15-0: Address: Bit 12 EP4 Fifo Half Word 2 USBEP4Fifo2 (R) $01FF85C2 Address: Hardware Description Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP4 Fifo Half Word 4 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Default: Reset Value 00h Read Value 00h Bit 2 EP4 Fifo Half Word 4 Bit 1 Bit 0 Default: Reset Value 00h Read Value 00h Endpoint 4 FIFO Quad Half word 4 Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Bit 12 USBEP4Hold (R) $01FF85C9 Address: Bit 11 Bit 10 Bit 9 Bit 8 EP4 Fifo Holding Register Bit 7 Bit 6 Bit 5 Bit 4 USBEP4Hold (R) $01FF85C8 Bit 3 Default: Reset Value 00h Read Value 00h Bit 2 Bit 1 Bit 0 EP4 Fifo Holding Register Default: Reset Value 00h Read Value 00h Bits 15-0: Endpoint FIFO Holding Register Address: Bit 15 USBEP4Ctrl (R/W) $01FF85CB Bit 14 Bit 13 Bit 12 Bit 11 Fifo Enabled Data (Read Only) Request (Read Only) Fifo Ready Fifo DMA Threshold Address: Bit 7 Bit 6 Bit 5 Bit 4 USBEP4Ctrl (R/W) $01FF85CA unused Holding Byte Present Fifo Data Quantity Register Full Bit 3 Bit 10 Bit 2 Bit 9 Bit 8 Default: Fifo Output Pointer Reset Value 00h Read Value 00h Bit 1 Default: Bit 0 Fifo Input Pointer Reset Value 00h Read Value 00h Bit 15: This bit indicates that the FIFO is active and capable of generating DMA requests. This bit generally follows the setting of the LCL_ENB input signal except the FIFO Enabled register bit will remain asserted if the LCL_ENB input signal is set to false while the FIFO is executing a DMA transfer. In this case, the register bit will remain set for the duration of the DMA transfer and then become cleared. Bit 14: This bit is similar to the DMA_REQ signal except that it is not blocked when DMA_TC0 is set. It indicates that the programmed threshold has been met or exceeded and that the FIFO requires data transfers either by enabling hardware DMA through DMA_TC0 or by executing software DMA cycles. Bit 13: This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10: This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 1 to 4. A value of zero causes no data transfers to occur. Values greater than 4 are treated as 4. Bit 9-8: This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 7: Not used Bit 6: This bit indicates that there is a full word in the holding register. 100723A Conexant 16-13 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bit 5: This bit indicates that there is a single byte in the holding register. Bit 4-2: This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0: This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Address: Bit 15 Bit 14 Bit 13 USBEP4Data (R/W) $01FF85CD Address: Bit 7 Bit 6 Bit 5 Bit 9 Bit 8 Bit 4 Bit 3 Bit 2 Default: Reset Value 00h Read Value 00h Bit 1 Bit 0 Default: Reset Value 00h Read Value 00h Endpoint 4 FIFO Data Port Register Bit 15 Bit 14 Bit 13 USBEP4Tran (W) $01FF85CF Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Bit 2 Bit 1 Bit 0 Default: EP4 Transition Register Bit 7 USBEP4Tran (W) $01FF85CE Bit 15-0: Not used 16-14 Bit 10 EP4 Endpoint Dataport Register Bits 15-0: Address: Bit 11 EP4 Endpoint Dataport Register USBEP4Data (R/W) $01FF85CC Address: Bit 12 Bit 6 Bit 5 Bit 4 Bit 3 EP4 Transition Register Writing any value to this register causes a push or pop of data through the FIFO data port and the FIFO Quad Halfword 1-4 registers. The FIFO operation depends on the direction of data flow. If system bus (CPU or DMA) is writing (filling) the FIFO, data is transferred from the FIFO data port register to the FIFO Quad Halfword 1 register, simultaneously with data transfer from Quad Halfword 1 to Quad Halfword 2, Quad Halfword 2 to Quad Halfword 3, and Quad Halfword 3 to Quad Halfword 4, with the original data of Quad Halfword 4 being lost. If the system bus is reading (emptying) the FIFO, data is transferred from the FIFO Quad Halfword 1 register to the FIFO data port register, simultaneously with data transfer from Quad Halfword 2 to Quad Halfword 1, Quad Halfword 3 to Quad Halfword 2, and Quad Halfword 4 to Quad Halfword 3, with the contents of Quad Halfword 4 becoming indeterminate. Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Bit 12 USBEP0Buf2 (R/W) $01FF85D1 Address: Bit 11 Bit 10 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 st Bit 15 Bit 14 Bit 13 Bit 12 USBEP0Buf4 (R/W) $01FF85D3 Bit 11 Bit 10 Bit 9 Bit 8 EP0 Buffer 4 Bit 7 Bit 6 Bit 5 Bit 4 USBEP0Buf3 (R/W) $01FF85D2 Bit 3 Bit 2 Bit 1 Bit 0 EP0 Buffer 3 Bits 7- 0: 3rd data byte of endpoint 0 buffer Bit 14 Bit 13 Bit 12 USBEP0Buf6 (R/W) $01FF85D5 Bit 11 Bit 10 Bit 9 Bit 8 EP0 Buffer 6 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Default: Rst. Value 00h Bit 2 EP0 Buffer 5 Bits 15-8: 6th data byte of endpoint 0 buffer Bits 7- 0: 5th data byte of endpoint 0 buffer Conexant Default: Rst. Value 00h 4th data byte of endpoint 0 buffer Bit 15 Default: Rst. Value 00h Bits 15-8: 100723A Default: nd 1 data byte of endpoint 0 buffer USBEP0Buf 5 (R/W) $01FF85D4 Bit 0 Rst. Value 00h Bits 7-0: Address: Bit 1 EP0 Buffer 1 2 data byte of endpoint 0 buffer Address: Default: Rst. Value 00h Bits 15-8: Address: Bit 8 EP0 Buffer 2 USBEP0Buf1 (R/W) $01FF85D0 Address: Bit 9 Bit 1 Bit 0 Default: Rst. Value 00h 16-15 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Hardware Description Bit 13 Bit 12 USBEP0Buf8 (R/W) $01FF85D7 Address: Bit 11 Bit 10 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bits 7- 0: 7th data byte of endpoint 0 buffer Bit 14 Bit 13 Bit 12 USBEP5Buf2 (R/W) $01FF85D9 Bit 11 Bit 10 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Default: Bit 8 Default: Rst. Value 00h Bit 2 Bit 1 Bit 0 EP5 Buffer 1 Default: Rst. Value 00h nd Bits 15-8: 2 data byte of endpoint 5 buffer Bits 7- 0: 1 data byte of endpoint 5 buffer st Bit 15 Bit 14 Bit 13 Bit 12 USBEP5Buf4 (R/W) $01FF85DB Bit 11 Bit 10 Bit 9 Bit 8 EP5 Buffer 4 Bit 7 Bit 6 Bit 5 Bit 4 USBEP5Buf3 (R/W) $01FF85DA Bit 3 Default: Rst. Value 00h Bit 2 EP5 Buffer 3 Bit 1 Bit 0 Default: Rst. Value 00h th Bits 15-8: 4 byte of the endpoint 5 buffer Bits 7-0: 3 byte of the endpoint 5 buffer 16-16 Bit 9 EP5 Buffer 2 USBEP5Buf1 (R/W) $01FF85D8 Address: Bit 0 Rst. Value 00h 8th data byte of endpoint 0 buffer address: Bit 1 EP0 Buffer 7 Bit 15 Default: Rst. Value 00h Bits 15-8: Address: Bit 8 EP0 Buffer 8 USBEP0Buf7 (R/W) $01FF85D6 Address: Bit 9 rd Conexant 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Bit 12 USBEP5Buf6 (R/W) $01FF85DD Address: Bit 11 Bit 10 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 th Bit 15 Bit 14 Bit 13 Bit 12 USBEP5Buf8 (R/W) $01FF85DF Bit 11 Bit 10 Bit 9 Bit 8 EP5 Buffer 8 Bit 7 Bit 6 Bit 5 Bit 4 USBEP5Buf7 (R/W) $01FF85DE Bit 3 Default: Rst. Value 00h Bit 2 Bit 1 Bit 0 EP5 Buffer 7 Default: Rst. Value 00h th Bits 15-8: 8 byte of the endpoint 5 buffer Bits 7-0: 7 byte of the endpoint 5 buffer th Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP5 Setup Packet Data 2nd byte USBEP5StDat2 (R) $01FF85E1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Default: Rst. Value 00h Read Value 00h Bit 1 EP5 Setup Packet Data 1st byte Bit 0 Default: Rst. Value 00h Read Value 00h nd Bits 15-8: 2 data byte of the setup packet for EP5 Bits 7:0: 1 data byte of the setup packet for EP5 100723A Default: th 5 byte of the endpoint 5 buffer USBEP5StDat1 (R) $01FF85E0 Bit 0 Rst. Value 00h Bits 7-0: Address: Bit 1 EP5 Buffer 5 6 byte of the endpoint 5 buffer Address: Default: Rst. Value 00h Bits 15-8: Address: Bit 8 EP5 Buffer 6 USBEP5Buf5 (R/W) $01FF85DC Address: Bit 9 st Conexant 16-17 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bits 7:0: 3 data byte of the setup packet for EP5 rd Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Rst. Value 00h Read Value 00h th Bits 15-8: 6 data byte of the setup packet for EP5 Bits 7:0: 5 data byte of the setup packet for EP5 th Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP5 Setup Packet Data 8th byte USBEP5StDat8 (R) $01FF85E7 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Default: Rst. Value 00h Read Value 00h Bit 1 EP5 Setup Packet Data 7th byte Bit 0 Default: Rst. Value 00h Read Value 00h th Bits 15-8: 8 data byte of the setup packet for EP5 Bits 7:0: 7 data byte of the setup packet for EP5 16-18 Default: Rst. Value 00h Read Value 00h EP5 Setup Packet Data 5th byte USBEP5StDat5 (R) $01FF85E4 USBEP5StDat7 (R) $01FF85E6 Bit 8 EP5 Setup Packet Data 6th byte USBEP5StDat6 (R) $01FF85E5 Address: Default: th 4 data byte of the setup packet for EP5 Address: Bit 0 Rst. Value 00h Read Value 00h Bits 15-8: Address: Default: Rst. Value 00h Read Value 00h EP5 Setup Packet Data 3rd byte USBEP5StDat3 (R) $01FF85E2 Address: Bit 8 EP5 Setup Packet Data 4th byte USBEP5StDat4 (R) $01FF85E3 Address: Hardware Description th Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 USBIRQ (R) $01FF85E9 Ep4 Interrupt Address: USBIRQ (R) $01FF85E8 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Ep2 Interrupt Suspend status EP5 Write Ack EP5 Read Ack EP0 Write Ack EP0 Read Ack USB Reset Interrupt Rst. Value 00h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Suspend Interrupt DMA Interrupt EP5 Write Interrupt EP5 Read Interrupt EP5 Setup Interrupt EP0 Write Interrupt EP0 Read Interrupt EP0 Setup Interrupt Rst. Value 00h Bit 15: This bit indicates that an odd packet is received at endpoint 4. Bit 14: This bit indicates that an odd packet is received at endpoint 2. Bit 13: When it is “1”, it indicates that the device is in suspend mode. If the PC does a global wake up, this bit will be reset to “0”. The firmware can reset this bit to ”0” by performing a device remote wakeup (setting the resume bit to be “1” in USBClrIRQ register). Bit 12: This bit indicates that if the control write on endpoint 5 is successful. “1” – Ack. “0” – Nack. Bit 11: This bit indicates that if the control read on endpoint 5 is successful. “1” – Ack. “0” – Nack. Bit 10: This bit indicates that if the control write on endpoint 0 is successful. “1” – Ack. “0” – Nack. Bit 9: This bit indicates that if the control read on endpoint 0 is successful. “1” – Ack. “0” – Nack. Bit 8: This bit indicates that a USB reset is detected on the bus. Bit 7: This bit indicates a suspend is detected on the bus. Bit 6: This bit indicates the DMA has reached its block size. Bit 5: This bit indicates that the endpoint 5 data buffer is full. Bit 4: This bit indicates that the data in endpoint 5 buffer has been send. Bit 3: This bit indicates that a set up packet has been send to endpoint 5 and the endpoint 5 setup data buffer is full. Bit 2: This bit indicates that the endpoint 0 data buffer is full. Bit 1: This bit indicates that the data in endpoint 0 buffer has been send. Bit 0: This bit indicates that a set up packet has been send to endpoint 5 and the endpoint 5 setup data buffer is full. 100723A Conexant 16-19 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 USBClrIRQ (R/W) $01FF85EB unused Clear EP4 Interrupt Clear EP2 Interrupt Clear USB Reset Interrupt Address: Bit 7 Bit 6 Bit 5 USBClrIRQ (R/W) $01FF85EA Clear Suspend Interrupt Resume Device Clear EP5 Write Interrupt Bit 10 Bit 9 Bit 8 Default: EP5 Write EP5 Read Buffer Read Buffer Written EP0 Write Buffer Read EP0 Read Buffer Written Rst. Value 00h Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Clear EP5 Read Interrupt Clear EP5 Setup Interrupt Clear EP0 Write Interrupt Clear EP0 Read Interrupt Clear EP0 Setup Interrupt Rst. Value 00h Bit 15: Unused Bit 14: Set this bit to “1” to clear the endpoint 4 interrupt. Bit 13: Set this bit to “1” to clear the endpoint 2 interrupt. Bit 12: Set this bit to “1” to clear the usb reset interrupt. Bit 11: Set this bit to “1” to indicate that the endpoint 5 buffer is empty. Bit 10: Set this bit to “1” to indicate that the endpoint 5 buffer is full. Bit 9: Set this bit to “1” to indicate that the endpoint 0 buffer is empty. Bit 8 Set this bit to “1” to indicate that the endpoint 0 buffer is full. Bit 7: Set this bit to “1” to clear the suspend interrupt. Bit 6: Set this bit to “1” to perform device remote wake-up. Bit 5: Set this bit to “1” to clear endpoint 5 write interrupt. Bit 4: Set this bit to “1” to clear endpoint 5 read interrupt. Bit 3: Set this bit to “1” to clear endpoint 5 setup interrupt. Bit 2: Set this bit to “1” to clear endpoint 0 write interrupt. Bit 1: Set this bit to “1” to clear endpoint 0 read interrupt. Bit 0: Set this bit to “1” to clear endpoint 0 setup interrupt. Address: Bit 15 USBSofReset (W) $01FF85ED Unused Address: Bit 7 USBSofReset (W) $01FF85EC Unused Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Default: Rst. Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 15:1: Not used Bit 0: Set this bit to “1” reset usb interface block. 16-20 Bit 8 Conexant Bit 0 Default: Software Reset Rst. Value 01h 100723A Hardware Description Address: Bit 15 MFC 2000 Multifunctional Peripheral Controller 2000 Bit 14 Bit 13 Bit 12 USBStall (R/W) $01FF85EF Bit 11 Bit 10 Bit 9 Bit 8 Unused Address: Bit 7 USBStall(R/W) $01FF85EE Unused Bit 6 Rst. Value 00h Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 EP5 Stalled EP4 Stalled EP3 Stalled EP2 Stalled EP1 Stalled EP0 Stalled Rst. Value 01h Bit 15:6: Not used Bit5: Set this bit to “1” to indicate that the endpoint 5 is stalled. Bit4: Set this bit to “1” to indicate that the endpoint 4 is stalled. Bit3: Set this bit to “1” to indicate that the endpoint 3 is stalled. Bit2: Set this bit to “1” to indicate that the endpoint 2 is stalled. Bit1: Set this bit to “1” to indicate that the endpoint 1 is stalled. Bit0: Set this bit to “1” to indicate that the endpoint 0 is stalled. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bits 7:0: 1 data byte of the setup packet for EP0 Default: st Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP0 Setup Packet Data 4th byte USBEP0StDat4 (R) $01FF85F3 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Default: Rst. Value 00h Bit 1 EP0 Setup Packet Data 3rd byte Bit 0 Default: Rst. Value 00h th Bits 15-8: 4 data byte of the setup packet for EP0 Bits 7:0: 3 data byte of the setup packet for EP0 100723A Bit 0 nd 2 data byte of the setup packet for EP0 USBEP0StDat3 (R) $01FF85F2 Default: Rst. Value 00h Bits 15-8: Address: Default: Rst. Value 00h Read Value 00h EP0 Setup Packet Data 1st byte USBEP0StDat1 (R) $01FF85F0 Address: Bit 8 EP0 Setup Packet Data 2nd byte USBEP0StDat2 (R) $01FF85F1 Address: Default: rd Conexant 16-21 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bits 7:0: 5 data byte of the setup packet for EP0 th Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 EP0 Setup Packet Data 8th byte USBEP0StDat8 (R) $01FF85F7 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Default: Rst. Value 00h Bit 1 EP0 Setup Packet Data 7th byte Bit 0 Default: Rst. Value 00h th Bits 15-8: 8 data byte of the setup packet for EP0 Bits 7:0: 7 data byte of the setup packet for EP0 16-22 Default: th 6 data byte of the setup packet for EP0 USBEP0StDat7 (R) $01FF85F6 Bit 0 Rst. Value 00h Bits 15-8: Address: Default: Rst. Value 00h EP0 Setup Packet Data 5th byte USBEP0StDat5 (R) $01FF85F4 Address: Bit 8 EP0 Setup Packet Data 6th byte USBEP0StDat6 (R) $01FF85F5 Address: Hardware Description th Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 16.3 Firmware Operation 16.3.1 Setup Transfer During the setup transfer, a setup interrupt will be generated to the ARM. ARM can determine it is a setup interrupte by reading the interrupt register and clear the interrupt by setting the clear endpoint 0 or 5 setup interrupt bit of the USBClrIrq register. The 8 bytes of setup packet data can be read from the endpoint 0 or 5 setup buffer. 16.3.1.1 USB Standard Commands Since the UDC core decodes and acts upon the USB standard commands except Get_Descriptor, the setup packet data of all standard commands (except Get_Descriptor ) will not be stored in the setup buffers neither the setup interrupt will be generated during a starndard command transfer. 16.3.1.2 Get_Descriptor Command The Get_Descriptor command is supported by endpoint 0. The ARM needs to decode the setup packet and load the descriptor data into the endpoint 0 buffer then set the ep0 read buffer written bit. 16.3.2 Control Read Transfer During a control read transfer, an interrupt will be generated along with read status bit after the data in the ep0/ep5 buffer are send to the host. ARM can determine the type of interrupt by reading the interrupt register and clear the interrupt by setting the corresboing bit in the clear interrupt register. ARM needs to check the ep0/ep5 read status bit to find out if the control read is successful or not. 16.3.3 Control Write Transfer During a control write transfer, the data from the PC will be written to an internal buffer first. After the control write transfer finished, an interrupt along with write status bit will be generated. ARM can determine the interrupt by reading the interrupt register and clear the interrupt by writing to the corresbonding bit in the clear_interrupt register. Then ARM can read data from the endpoint 0 or endpoint 5 data buffers. After all the data have been read , ARM will set the endpoint 0 or endpoint 5 write_buffer_read bit in the endpoint status register. 16.3.4 BULK_IN Transfer The MaxPacketSize for both bulk in pipes are 64 bytes. DMA channel 0 is assigned to USB and it has four logic channels. Endpoint 1 and 3, which are bulk in endpoints, are assigned to logic channel 0 and 2. The procedures of programming the registers are: 1. Enable DMA channel 0 by writing 1 to bit[0] of DMA 0 configuration register. 2. Enable logic channel 0 or 2 and set logic channel 0 or 2 to be read mode by setting the corresbonding bits in DMA 0 configuration register. 3. Set memory address in DMAUSB0CntLo and DMAUSB0CntHi or DMAUSB2CntLo and DMAUSB2CntHi. 4. Define block size in DMAUSB0BlkSiz or DMAUSB2BlkSiz. 5. If more than one memory block is needed, repeat step 3 and 4 to set desired memory blocks. 6. Load 4 half words into endpoint 1 or 3 internal fifo by writing to endpoint 1 or 3 data port register and transition register OR by writing to the endpoint 1 or 3 halfword fifos. 7. Set endpoint 1 or 3 control register. 100723A Conexant 16-23 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description If the PC has read all the data in the memory blocks successfully, an interrupt will be generated. ARM can read the USBIRQ register to determine that it is DMA channel 0 interrupt. By reading DMA 0 configuration register can determine it is a logic channel 0 or 2 interrupt. Then ARM can repeat step 3 and 4 to set more memory blocks. 1.1.516.3.5 BULK_OUT Transfer The MaxPacketSize for both bulk in pipes are 64 bytes. DMA channel 0 is assigned to USB and it has four logic channels. Endpoint 2 and 4, which are bulk out endpoints, are assigned to logic channel 1 and 3. The procedures of programming the registers are: 1. Enable DMA channel 0 by writing 1 to bit[0] of DMA 0 configuration register. 2. Enable logic channel 1 or 3 and set logic channel 1 or 3 to be write mode by setting the corresbonding bits in DMA 0 configuration register. 3. Set memory address in DMAUSB1CntLo and DMAUSB1CntHi or DMAUSB3CntLo and DMAUSB3CntHi. 4. Define block size in DMAUSB1BlkSiz or DMAUSB3BlkSiz. 5. If more than one memory block is needed, repeat step 3 and 4 to set desired memory blocks. 6. Set endpoint 2 or 4 control register. If the PC has write to all the memory blocks successfully, an interrupt will be generated. ARM can read the USBIRQ register to determine that it is DMA channel 0 interrupt. By reading DMA 0 configuration register can determine it is a logic channel 1 or 3 interrupt. Then ARM can repeat step 3 and 4 to set more memory blocks. If the PC send an odd byte count packet in the middle of a bulkout transaction, an interrupt will be generated to indicate that an single byte has been send to the memory location. 1.1.616.3.6 USB Suspend and Device Remote Wake-up The MFC2000 supports device remote wake-up. If the UDC core detected the USB bus being idle for 3 ms, it will generated a suspend signal and an interrupt will be generated. ARM can determine that it is a suspend interrupt by reading the usb interrupt register then clear the interrupt by setting the clear_suspend_int bit in the clear interrupt register. The suspend status bit will remain high until the PC performs a global wake up or the ARM performs a device remote wake up. The ARM performs a device remote wake up by setting the resume_device bit in the endpoint status register to be “1”. 1.1.716.3.7 USB Reset An interrupt will be generated if a USB reset is detected on the USB bus. ARM can determine that it is a usb_reset_interrupt by reading the usb interrupt register then clear the interrupt by setting the clear_usb_reset_int bit in the clear interrupt register. 1.1.816.3.8 Software Reset The ARM can reset the UDC core and related logic by setting the bit 0 in USBSofReset register. 16-24 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 17. Bi-directional Parallel Peripheral Interface The Parallel Peripheral Interface(PPI) controller incorporates the IEEE-1284 Compatibility/Nibble/ Byte/ ECP protocols to offer flexible high-speed parallel data transfer. Furthermore, the PPI fully supports all variants of these modes, including device ID requests and run-length encoded data compression. All protocols are signalcompatible with classic parallel interfaces. The default protocol for the PPI is the Compatibility mode. The PPI contains specific hardware to support automatic handshaking during host to peripheral,or forward, data transfers in compatible and ECP modes, and run-length detection. The PPI also supports automatic handshaking during peripheral to host, or reverse, data transfers in the Nibble, Byte and ECP modes. The hardware handshaking can also be completely disabled to allow software to directly control the peripheral port interface signals and to support new protocols as they arise in the future. 17.1 Operational Modes The PPI supports three hardware handshaking modes for host to peripheral, or forward, data transfers. Each mode can be enabled or disabled by software. One mode supports forward data transfers during compatibility mode, and the other two modes support forward data transfers during ECP mode. Only one of the three modes can be enabled at a time, or all modes can be disabled. When disabled, software must assume full responsibility for handshaking, and use the Parallel Port Interface Register and the Parallel Port Data Register to read and control the logic levels on all parallel port pins. The hardware handshaking modes for peripheral to host, or reverse, data transfers are provided for Nibble, Byte and ECP modes explained. 17.1.1 Compatibility Mode The interface is always initialized to the compatibility Mode, a conventional, unidirectional host-to peripheral interface. From the compatibility Mode the host may transmit data to peripheral or direct the interface to a mode capable of transmitting data to the host. Compatibility mode hardware handshaking is enabled by setting the MODE field to 1 in the Parallel Port Control Register. When compatibility mode is selected, the PPI interacts with host using STROBEn, BUSY and ACKn signals. 17.1.2 P1284 Negotiation The negotiation phase is performed under firmware control. During the negotiation, the firmware will respond to the host stimulus by setting ACKn low, FAULTn high, SLCTOUT(XFlag) high, PE high as defined in the IEEE 1284 Specification. After the host responds to the prior signal setting, the firmware will respond with a PE low and a FAULTn low if data to the host is available. The SLCTOUT is set to it’s appropriate value corresponding to the extensibility feature requested by the host. (Refer to the IEEE 1284 Specification for a more complete definition of this phase). 17.1.3 Nibble Mode Provides an asynchronous, reverse (peripheral-to-host) channel, under control of the host. Data bytes are transmitted as two sequential, four bit nibbles using four peripheral-to-host status lines. In Nibble Mode(MODE=4), one byte of status data can be put to the PPI data register by CPU or DMA operation. The PPI Logic will separate the one byte data into two nibbles and send them in sequence. The signals used in the Nibble mode are AUTOFDn and ACKn for handshake and FAULTn, SLCTOUT, PE and BUSY for data transfer. 17.1.4 Byte Mode Provides an asynchronous, byte-wide reverse peripheral-to-host channel using eight data lines of the interface for data and the control/status lines for handshaking. The PPI hardware can control the handshake of the reverse data transfer. The CPU must provide the status to send the next byte or to terminate the protocol. The MODE=5 for the Byte mode which enables a peripheral to send an entire byte of data to the PC in one data transfer cycle using the 8 data lines, rather than the two cycles using the Nibble mode.The handshake signals are AUTOFDn, ACKn and STROBEn. 100723A Conexant 17-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 17.1.5 ECP Forward Extended Capabilities Port (ECP) Mode provides an asynchronous, byte-wide, bi-directional channel. The data can be received by DMA mode or CPU mode as described in the Compatibility Mode section. The ECP protocol provides the Data and command cycles types in both forward and reverse directions. The MODE = 2 and 3 for the forward mode with RLE . When MODE is set to 2, ECP mode hardware handshaking is enabled during forward data transfers, without RLE support. When mode 2 is programmed, the PPI responds to a high to low transition on STROBEn (HostClk), and automatically sets and clears the BUSY bit in the Parallel Port Interface Register and the BUSY to handshake with the host.. MODE may be reprogrammed at any time, but if an ECP cycle is currently in progress, it completes as normal. 17.1.6 ECP Reverse After a successful Forward to Reverse phase switch, the ECP changes into the reverse phase in MODE = 6. When the 1284 interface is idle, this is the desired mode of operation. This mode will allow the MFC2000 ASIC to inform the host of incoming fax data. The ECP Reverse mode can operate under CPU interrupt driven control or automated DMA control. In CPU control, the software writes the outgoing byte into the output buffer and then sets ACKn low to send the data. After the host completes the data transfer, the ACKn is automatically set high and the CPU is free to respond to any PPI interrupts that have been enabled or to initiate an additional data transfer if needed. The handshake signals are INITn, PE, ACKn, AUTOFDn and BUSY. 17.1.7 The Non-standard Dribble Mode The dribble mode was used for the slower PC before P1284 is standardized. Dribble mode is similar to ECP in that the channel can be reversed without having to go through a negotiation phase to turn the channel around. It sends two bits at a time on the nPeriphRequest and XFlag signals rather than using the PIO data bus. In this respect, it is similar to nibble mode's data transfer phase in that it uses HostBusy and PtrClk to transfer each portion of the data byte. The dribble mode can only operate under CPU interrupt-driven control (no DMA mode). Note: This is not an IEEE-1284 mode but is useful to support certain product interfaces created prior to the IEEE-1284 specification. 17.2 Additional Features 17.2.1 Filter A digital filter is provided for incoming host control and data signals. SLCTINn, STROBEn, AUTOFDn, and INITn are provided with digital filter circuits which are collectively controlled by software. IF DFIL =0, then no digital filtering is selected. Note that synchronization plus digital filtering adds up to four CLK periods of delay before a level change at one of the host inputs appears in the Parallel Port Control Register, and five periods of delay before an output responds to an input (e.g., before BUSY responds to STROBEn). Likewise, synchronization and digital filtering of STROBEn affect the point at which ippid[7-0] and AUTOFDn are latched into the parallel Port Data Register. Without a DFIL=3, ippid[7-0] and AUTOFDn are sampled an the fourth rising edge of CLK after STROBEn is sampled. With digital filtering, ippid7-0 and AUTOFDn are sampled on the fifth rising edge of CLK after STROBEn is sampled. 17-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 17.3 Functional Description The PPI contains an interface controller, which consists of: a data receive and transmit latch, run-length encoding decompression logic, input conditioning logic, and edge detector logic. The RLE decompression is accomplished through a state machine and additional control logic. There is input conditioning logic to filter the incoming control signals. The peripheral interface block supports four IEEE 1284 communication modes: compatibility, nibble, byte, and enhanced capabilities port (ECP) mode. The interface with the DMA controller requires storing data into 8 bit bytes before transferring to the four half word FIFO for burst operation. There will be a counter within the FIFO that keeps track of the bytes transferred to the FIFO. There is a control bit allowing FIFO flush to be done. If firmware detects the end of transfer to the PPI, it can flush the FIFO by forcing the flush bit. The timing of the F/W flush is based on a fixed time from the last DMA access and the FIFO not empty status and there will be a busy status bit set by F/W to stop further transmission from the host. The DMA or the interrupt operations are enabled under the control of the F/W. The PPI has fifteen sources of interrupt that can each be individually enabled or disabled and they are all ORed together to generate one PPI IRQ interrupt for the CPU. RPPD(7:0) oppid(7:0) DATA TRANSMIT LATCH ippid(7:0) DATA RECEIVE LATCH FPPD(7:0) BUSY ACKn FAULTn SLCTOUTn PE CONTROL REGISTERS IP_BUS Freq INITn AUTOFDn STROBEn SLCTINn inib DIGITAL FILTER afdb strb IP_BUS Fack STATE MACHINE Rreq DMA FIFOs sinb DMAREQ DMARWN DMAACK DMA_TC Rack Figure 17-1. Parallel Port Interface Controller Block Diagram 100723A Conexant 17-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 17.4 Register Description Parallel Port Control Register Address Bit 15 Parallel Port Control (Not Used) Reg. (PIOCtrl) $01FF8201 Address Parallel Port Control Reg. (PIOCtrl) $01FF8200 Bit 14 (Not Used) Bit 7 RLD (R) Bit 6 ABRT Bit 13 TRIZN Bit 12 PPIRSTN Bit 5 Bit 11 MODE Bit 4 PDOE (R) ERRC Bit 10 MODE Bit 3 MODE Bit 2 MODE Bit 9 RFULL (R) Bit 1 DFIL Bit 8 FFULL (R) Bit 0 DFIL Default Rst. Value xx000000b Read Value 00h Default Rst. Value 00h Read Value 00h DFIL Digital Filter This 2 bit field controls the number of clocks of digital filtering to be applied on the four host control signal inputs, SLCTINn, STROBEn, AUTOFDn, and INITn. From 0 to 3 clocks of digital filtering may be selected. MODE Mode This 4 bit field(bits 11,10,3,2) selects and enables a hardware handshaking mode for forward data transfers. MODE Direction 0 17-4 Disable 1 Fwd 2 Fwd ECP-fwd without RLE mode 3 Fwd ECP-fwd with RLE mode 4 Rev Nibble mode 5 Rev Byte mode 6 Rev ECP-rev mode 7 Rev Dribble mode 8-15 Error Cycles Function Compatibility mode Reserved This bit is used to execute an error cycle when in compatibility mode (mode 1). When set, ERRC immediately forces the BUSY pin high. If ERRC is set when a compatibility mode handshake sequence is in process, the BUSY remains high beyond the end of the cycle. ERRC does not affect an ACKn pulse that is already active, but does prevent an ACKn pulse if it is about to be generated. While ERRC is set, software may set or clear SEL, PERR, and NFLT in the Parallel Port Interface Register. When ERRC is cleared, the PPI generated an ACKn pulse and tries to lower BUSY to conclude the error cycle. If, however, FBSY is set, BUSY remains high until FBSY is cleared. When MODE is set to any value except 1, setting ERRC has no effect. Setting MODE to 1 when ERRC is already set causes the handshake controller to immediately begin an error cycle. Conexant 100723A Hardware Description PDOE Parallel Data Output Enable MFC 2000 Multifunctional Peripheral Controller 2000 This bit performs two functions. It controls the state of the PD bus three-state output drives, and it qualifies the latching of data from the PD bus into the Parallel Port Data Register. When set, PDOE enables the PD bus output pin drivers, and prevents data from being latched into the Parallel Port Register. Setting ABRT affects the operation of PDOE. IF ABRT is set, SLCTINn (1284ACTIVE) must remain high to allow PDOE to be set or remain set. If ABRT is set and SLCTINn (1284Active) goes low, PDOE is cleared, and setting PDOE has no effect. ABRT Abort This causes the PPI to use SLCTINn (1284Active) to detect when the host suddenly aborts a reverse transfer and returns to compatibility mode. If ABRT is set, a low level on SLCTINn (1284 Active) causes PDOE to be cleared and the PD bus output drivers to be three-stated. In fact, if ABRT is set and SLCTINn (1284Active) is low, setting PDOE has no effect. This protection logic, as all internal logic, operates from a synchronized and optionally digitally filtered SLCTINn (1284Active) that is latched into the parallel Port Interface Register. RLD Run Length Decompression This is a read-only status bit which indicates when run-length decompression is taking place during ECP forward data transfers. RLD is set when a run-length count is received and loaded into the internal counter, and cleared when the last read of the Parallel Port Data Register takes place. This bit can only be set when ECP with RLE (mode 3) is enabled. If MODE is reprogrammed during a decompression, decompression continues and RLD remains set until the operation is completed. RLD is cleared when RST is issued. FFULL Forward Data Register Full This is a read-only status bit that indicates when parallel port data from the host is latched in the Parallel Port Data Register. FFULL is cleared when the Parallel Port Data Register is read. When handshaking and DMA is enabled, FFULL sets and clears as data is latched and read during forward data transfers. FFULL is also cleared when RST is issued. RFULL Reverse Data Register Full This is a read-only status bits indicates when parallel port data to the host is latched in the Parallel Port Data Register. RFULL is cleared when the Parallel Port Data Register is sent. When handshaking and DMA is enabled, RFULL sets and clears as data is latched and sent during reverse data transfers. RFULL is also cleared when RST is issued. PPIRSTN Parallel port software reset Active low resets all the state machines and is programmable using this register bit. During the normal operation this bit needs to be set to allow the state machine to start. TRIZN Active low to enable tri-state input during the forward(PC to printer) transfers. 100723A Tri-state output enable Conexant 17-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Parallel Port Interface Register The Parallel Port Interface Register is a read/write register that contains eleven bits to control the parallel port interface signals. Four read-only bits are used to read the logic level of host input pins, two read-only bits are used to read the logic level on the BUSY and ACKn printer output pins, and five read/write bits control the logic levels on the printer output pins. When hardware handshaking is enabled(mode 1,2,3) BUSY and ACKn are controlled by the PPI state machine. When hardware handshaking is disabled (mode 0) and the PPI state machine is idle BUSY and ACKn may be controlled by the software using the FBSY and FACK bits. Note: NFLT,SEL,PERR and FBSY are arranged as register bits 0, 1, 2, and 3, respectively, to correspond to their use as parallel data lines during nibble mode reverse data transfers. Address Parallel Port Interface Reg. (PIOIF) $01FF8203 Address Parallel Port Interface Reg. (PIOIF) $01FF8202 Bit 15 (Not Used) Bit 7 NSIN (R) Bit 14 FRDA Bit 6 NACK (R) Bit 13 SPER (R) Bit 5 BUSY (R) Bit 12 SSEL (R) Bit 11 SNFL (R) Bit 4 FACK Bit 3 FBSY Bit 10 NINI (R) Bit 2 PERR Bit 9 NAFD (R) Bit 1 SEL Bit 8 NSTR (R) Bit 0 NFLT Default Rst. Value x0000000b Read Value 07h Default Rst. Value 08h Read Value 08h NFLT FAULTn This bit controls the logic level driven on FAULTn output pin. Setting NFLT drives a high level and clearing SEL drives a low level. SEL SLCTOUT This controls the logic level driven on the SLCTOUT output pin. Setting SEL drives a high level and clearing SEL drives a low level. PERR Paper Error This bit controls the logic level driven on the PE output pin. Setting PERR drives a high level and clearing PERR drives a low level. FBSY Force Busy This bit force a high level to be driven on the BUSY output pin. Normally this is done when hardware handshaking is disabled(mode 0), and the PPI state machine is idle. The FBSY bit is OR’ed with the BUSY output from the PPI state machine before driving the BUSY output pin. IF FBSY is set, then the BUSY output pin is forced high, and the BUSY bit is read high. This bit is set on reset. FACK Force Ack This bit forces a low level to be driven on the ACKn output pin. Normally this is done when hardware handshaking is disabled (mode 0), and the PPI state machine is idle. The FACK bit is NOR’ed with the ACKn output from the PPI state machine before driving the ACKn output pin. If FACK is set, then the ACKn output pin is forced low, and the NACK bit is to be read low. BUSY 17-6 This status bit indicates the level driven on the BUSY output pin. This bit is the FBSY bit OR’ed with BUSY output from the PPI state machine. Since FBSY is set on reset, this bit will appear set on reset. This is a read-only status bit. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 NACK ACKn This status bit indicates the level driven on the ACKn output pin. This bit is the FACK bit NOR’ed with the ACKn output from the PPI state machine. Since FACK is cleared on reset, this bit will appear set on reset. This is read-only status bit. NSIN SLCTINn This status bit indicates the level read on the SLCTINn* input pin after synchronization and optional digital filtering. This is a read-only status bit. NSTR Strobe* This status bit indicates the level read on the STROBE* input pin after synchronization and optional digital filtering. This is a read-only status bit. NAFD AUTOFDn This status bit indicates the level read on the AUTOFDn input pin after synchronization and optional digital filtering. This is a read-only status bit. NINI INITn This status bit indicates the level read on the INITn input after synchronization and optional digital filtering. This is a read-only status bit. SNFL FAULTn Status This status bit indicates the level read on the FAULTn output pin. This is a read-only status bit. SSEL SLCTOUT Status This status bit indicated the level read on the SLCTOUT output pin. This is a read-only status bit. SPER Paper Error Status This status bit indicated the level read on the PE output pin. This is a read-only status bit. FRDA Force Reverse Data Available This bit controls the RDA status during Nibble Mode and Byte Mode when DMA is not used. Parallel Port Data Register The parallel Port Data Register is a 9-bit read/write register that is used to control the parallel port data bus. Reading this register provides the latched logic levels at PD7-0 and AUTOFDn pin. Data is latched on every high to low transition of STROBEn (HostClk), when PDOE is clear in the Parallel Port Control Register. If PDOE is set, the Parallel Port Data Register is frozen, and unaffected by the transitions on STROBEn. Reading this register clears the FULL bit, and clears the PDMA request. This register should not be read while the PDMA channel is enabled. Address Bit 15 Parallel Port Data Reg. (PIOData) $01FF8205 Address Parallel Port Data Reg. (PIOData) $01FF8204 DATA 100723A Data (Not Used) Bit 14 (Not Used) Bit 13 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 10 (Not Used) Bit 9 (Not Used) Bit 8 NCMD Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 DATA(7) DATA(6) DATA(5) DATA(4) DATA(3) DATA(2) DATA(1) DATA(0) Default Rst. Value xxxxxxx0b Read Value 00h Default Rst. Value 00h Read Value 00h This field is an 8-bit read/write field. When used, DATA provides the latched logic levels on PD7-0 when STROBEn (HostCLk) last transmitted from high to low with PDOE clear. When written, the DATA value defines the logic levels to be driven by the QP1700 when PD7-0 is enabled by the PDOE bit. The most significant bit of the DATA field corresponds to PD7 and the least significant bit to PD0. Conexant 17-7 MFC2000 Multifunctional Peripheral Controller 2000 NCMD Command Hardware Description When read, this bit provides the logic level of the AUTOFDn pin when STROBEn (hostClk) transitioned from high to low with PDOE clear. If set, AUTOFDn was latched high. If low, AUTOFDn was latched low. This is a read-only data bit. Writing NCMD has no effect. Parallel Port ACK Pulse Width Register The Parallel Port ACK Pulse Width Register is an 8-bit read/write register that defines the pulse width of ACKn during compatibility mode (MODE = 1), and setup timing relative to ACKn during reverse transfer modes (MODE=4,4,6). The Parallel Port ACKn Pulse Width Register can be written and rewritten to program different timing values as transitions are made to new transfer modes. An ACKn pulse width can be programmed to be 0 to 255 IHSCLK periods wide. At 20MHZ, this allows software to set pulse widths anywhere in the range of 0 to 12.75us. If ACKW is set to zero, no ACKn pulse is generated at the end of compatibility mode cycles. Setup timing relative to ACKn during reverse transfer modes can be programmed to be 1 to 256 IHSCLK periods. During nibble or byte modes(MODE=4,5), ACKW defines the setup timing from nibble or byte data (event 8 or 15) and the falling edge of ACKn (event 9), or from peripheral status (event 13) to the rising edge of ACKn (event 11). During ECP reverse transfers (MODE = 6), ACKW defines the setup timing from reverse data (event 42) to the falling edge of ACKn (event 43). Address Bit 15 Parallel Port ACK Pulse Width Reg. (PIOAckPW) $01FF8207 Address Parallel Port ACK Pulse Width Reg. (PIOAckPW) $01FF8206 ACKW (Not Used) Bit 14 (Not Used) Bit 13 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 10 (Not Used) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 ACKW(7) ACKW(6) ACKW(5) ACKW(4) ACKW(3) ACKW(2) ACKn Pulse Width Bit 9 (Not Used) Bit 1 ACKW(1) Bit 8 (Not Used) Bit 0 ACKW(0) Default Rst. Value xxh Read Value 00h Default Rst. Value 00h Read Value 00h This 8 bit field defines the pulse width of ACKn during compatibility mode transfers (MODE = 1), and the setup relationship relative to ACKn during reverse transfer modes (MODE=4,5,6). A pulse width from 0 to 255 IHSCLK periods can be programmed. Parallel Port Reverse Data Status Register Address Bit 15 Parallel Port Reverse (Not Used) Data Status Reg. (PIORevDataSTS) $01FF8209 (R) Address Bit 7 Parallel Port Reverse RVDAT(7) Data Status Reg. (PIORevDataSTS) $01FF8208 (R) REVDATA Reverse Data 17-8 Bit 14 (Not Used) Bit 6 RVDAT(6) Bit 13 (Not Used) Bit 5 RVDAT(5) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 RVDAT(4) Bit 3 RVDAT(3) Bit 10 (Not Used) Bit 2 RVDAT(2) Bit 9 (Not Used) Bit 1 RVDAT(1) Bit 8 (Not Used) Bit 0 RVDAT(0) Default Rst. Value xxh Read Value 00h Default Rst. Value 00h Read Value 00h This 8-bit field is the status of the reverse data that was written into the Parallel Port Data Register oppid[7:0]. This normally is needed only for diagnostic purposes. This is a read-only status register. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Parallel Port Data Bus Status Register Address Bit 15 Parallel Port Data Bus Status Reg. (PIODataBusSTS) $01FF820B (R) Address (Not Used) Bit 7 Parallel Port Data Bus Status Reg. (PIODataBusSTS) $01FF820A (R) PDBUS(7) Bit 14 (Not Used) Bit 13 (Not Used) Bit 6 PDBUS(6) Bit 5 PDBUS(5) PPDBUS Data Bus Status Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 PDBUS(4) Bit 3 PDBUS(3) Bit 10 (Not Used) Bit 2 PDBUS(2) Bit 9 (Not Used) Bit 1 PDBUS(1) Bit 8 (Not Used) Bit 0 PDBUS(0) Default Rst. Value xxh Read Value 00h Default Rst. Value 00h Read Value 00h This 8 bit field is the status of the parallel port data bus ippid[7:0]. This normally is needed only for diagnostic purposes. This is a read-only status register. Parallel Port Host Timeout Register Address Bit 15 Parallel Port Host Timeout Reg. (PIOHostTimeOut) $01FF820D Address Bit 7 Parallel Port Host Timeout Reg. (PIOHostTimeOut) $01FF820C HTIM 100723A (Not Used) HTIM(7) Host Timeout Bit 14 (Not Used) Bit 6 HTIM(6) Bit 13 (Not Used) Bit 5 HTIM(5) Bit 12 (Not Used) Bit 11 (Not Used) Bit 4 HTIM(4) Bit 3 HTIM(3) Bit 10 (Not Used) Bit 2 HTIM(2) Bit 9 (Not Used) Bit 1 HTIM(1) Bit 8 (Not Used) Bit 0 HTIM(0) Default Rst. Value xxh Read Value 00h Default Rst. Value 00h Read Value 00h This 8 bit field controls the timer for the host timeout error interrupt HTE. The timer counts from the system timer which is usually programmed to count every 8 msec. HTTM is usually programmed with a value of 0x7d (125) so that a host timeout interrupt occurs after 1 sec. If the host timeout error interrupt HTE is not desired, then interrupt enable should be false. Conexant 17-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Interrupt Status Register Address Bit 15 Parallel Port Interrupt (Not Used) Status (PIOIRQSTS) $01FF820F Address Bit 7 Parallel Port Interrupt INIL Status (PIOIRQSTS) $01FF820E Bit 14 DMARIRQ Bit 13 DMAFIRQ Bit 6 INIH Bit 5 AFDL Bit 12 HTE Bit 11 RDX Bit 4 AFDH SINH SLCTINn high edge interrupt. SINL SLCTINn low edge interrupt. STRH STROBEn high edge interrupt. STRL STROBEn low edge interrupt. AFDH AUTOFDn high edge interrupt. AFDL AUTOFDn low edge interrupt. INIH INITn high edge interrupt. INIL INITn low edge interrupt. DRX data received interrupt. CRX command received interrupt. IVT invalid transition interrupt. RDX rev data sent interrupt. THE host timeout interrupt. FDM AIRQ Forward transfer DMA end of block interrupt Bit 3 STRL Bit 10 IVT Bit 2 STRH Bit 9 CRX Bit 1 SINL Bit 8 DRX Bit 0 SINH Default Rst. Value x0000000b Read Value 00h Default Rst. Value 00h Read Value 00h RDM AIRQ Reverse transfer DMA end of block interrupt Clearing any interrupt requires writing a 1 to the corresponding bit in the interrupt status register. 17-10 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Interrupt Mask Register Address Bit 15 Parallel Port Interrupt (Not Used) Mask. (PIOIRQMask) $01FF8211 Address Bit 14 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 DMAFIRQ HTE RDX IVT CRX DRX MASK MASK MASK MASK MASK MASK MASK Bit 7 Parallel Port Interrupt INIL Mask (PIOIRQMask) MASK $01FF8210 Bit 13 DMARIRQ Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INIH AFDL AFDH STRL STRH SINL SINH MASK MASK MASK MASK MASK MASK MASK Default Rst. Value x0000000b Read Value 00h Default Rst. Value 00h Read Value 00h The mask register will be used to enable the interrupts when writing one to each corresponding bit and disable the interrupts when writing zero to the corresponding bit. FIFO Interface Register Address Parallel Port FIFO Interface PIOFIFOIF 01FF8213 Address Parallel Port FIFO Interface PIOFIFOIF 01FF8212 Bit 15 (Not Used) Bit 14 (Not Used) Bit 7 REVFIFO_ LCLCLR Bit 6 REVFIFO_TC0EN FWDFIFO_FLUSH FWDFIFO_ENABLE FWDFIFO_TC0ENA FWDFIFO_LCLCLR REVFIFO_LCLCLR FWDFIFO_LCLREQ FWDFIFO_LCLFLUSHING FWDFIFO_LCLCLEARING REVFIFO_LCLFLUSHING REVFIFO_LCLCLEARING 100723A Bit 5 FWDFIFO_ FWDFIFO_ LCLCLR TC0EN REVFIFO_FLUSH REVFIFO_ENABLE REVFIFO_LCLREQ Bit 13 Bit 12 Bit 11 REVFIFO_ REVFIFO_ REVFIFO_ LCLCLEARI LCLFLUSHI LCLREQ NG NG (RD) (RD) (RD) Bit 4 FWDFIFO_ ENABLE Bit 3 FWDFIFO_ FLUSH Bit 10 Bit 9 FWDFIFO_ FWDFIFO_ LCLCLEARI LCLFLUSHI NG NG (RD) (RD) Bit 2 REVFIFO_ TC0EN Bit 1 REVFIFO_ ENABLE Bit 8 Default FWDFIFO_ Rst. Value LCLREQ xx000000b Read Value 00h (RD) Bit 0 REVFIFO_ FLUSH Default Rst. Value 00h Read Value 00h causes the reverse FIFO to execute a flush of its contents. enables the reverse FIFO operation. When false, any pending DMA requests are first completed before the reverse FIFO becomes disabled. When low it enables the reverse FIFO DMA operation. causes the forward FIFO to execute a flush of its contents. enables the forward FIFO operation. When false, any pending DMA requests are first completed before the forward FIFO becomes disabled. When low it enables the forward FIFO DMA operation. FWD FIFO local asynchronous clear except waits for any pending DMA requests to finish before reset. REV FIFO local asynchronous clear except waits for any pending DMA requests to finish before reset. FWD FIFO local request is similar to dmareq but ignores dmaEq0 input. Used for firmware DMA as a status signal. high when lclFlush is pulsed high and stays high until the FIFO is flushed. high when lclClr is pulsed and stays high until the clear can be done(no dmaReq). REV FIFO local request is similar to dmareq but ignores dmaEq0 input. Used for firmware DMA as a status signal. high when lclFlush is pulsed high and stays high until the FIFO is flushed. high when lclClr is pulsed and stays high until the clear can be done (no dmaReq). Conexant 17-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description DMA FIFO Registers There will be two 4 half word FIFOs used for forward and reverse DMA transfers. The FIFO locations will be accessed from CPU as well as DMA. The address locations for the forward DMA FIFO will be 01FF8220 to 01FF822F. The address locations for the reverse FIFO will be 01FF8230 to 01FF823F. Output data FIFO halfword[3:0] for the data to the external memory (the forward direction) (for DMA channel 11): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Parallel Port Output Data FIFO (PIOOutFIFOx) data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Parallel Port Output Data FIFO (PIOOutFIFOx) data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h • Address assignment for Output FIFO halfword[3:0] The Input FIFO halfword The register name Address Output FIFO halfword 3 PIOOutFIFO3 01FF8227-26 Output FIFO halfword 2 PIOOutFIFO2 01FF8225-24 Output FIFO halfword 1 PIOOutFIFO1 01FF8223-22 Output FIFO halfword 0 PIOOutFIFO0 01FF8221-20 Output data FIFO Holding Register for the data to the external memory (the forward direction) (for DMA channel 11): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Parallel Port Output Data FIFO Holding Register (PIOOutHold) $01FF8229 data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value xxh Read Value xxh Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Parallel Port Output Data FIFO Holding Register (PIOOutHold) $01FF8228 data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h 17-12 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Output data FIFO Control Register for the data to the external memory (the forward direction) (for DMA channel 11): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Parallel Port Output Data FIFO Control Register (PIOOutFIFOCtrl) $01FF822B FIFO Enabled (R) Data Request (R) FIFO Ready (R) FIFO DMA Threshold Bit 5 Bit 4 Address: Bit 7 Bit 6 Parallel Port Output Data FIFO Control Register (PIOOutFIFOCtrl) $01FF822A (Not Used) Holding Byte Present FIFO Data Quantity Register Full Bit 3 Bit 10 Bit 9 Bit 8 FIFO Output Pointer Bit 2 Bit 1 Bit 0 FIFO Input Pointer Default: Rst Value 00h Read Value 00h Default: Rst Value x0000000b Read Value 00h Bit 15: This bit indicates that the FIFO is active and capable of generating DMA requests. This bit generally follows the setting of the LCL_ENB input signal except the FIFO Enabled register bit will remain asserted if the LCL_ENB input signal is set to false while the FIFO is executing a DMA transfer. In this case, the register bit will remain set for the duration of the DMA transfer and then become cleared. Bit 14: This bit is similar to the DMA_REQ signal except that it is not blocked when DMA_TC0 is set. It indicates that the programmed threshold has been met or exceeded and that the FIFO requires data transfers either by enabling hardware DMA through DMA_TC0 or by executing software DMA cycles. Bit 13: This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10: This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 1 to 4. A value of zero causes no data transfers to occur. Values greater than 4 are treated as 4. Bit 9-8: This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 7: Not used Bit 6: This bit indicates that there is a full word in the holding register. Bit 5: This bit indicates that there is a single byte in the holding register. Bit 4-2: This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0: This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Note: It is strongly recommended that the FIFO be disabled before firmware writes to the FIFO Control register. The FIFO Control register contains data that is essential to the FIFO’s operation. If this data is changed while the FIFO is operating, unpredictable operation will result. 100723A Conexant 17-13 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Input data FIFO halfword[3:0] for the data from the external memory (the reverse direction) (for DMA channel 12): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Parallel Port Input Data FIFO (PIOInFIFOx) data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Parallel Port Input Data FIFO (PIOInFIFOx) data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h • Address assignment for Input FIFO halfword[3:0] The Input FIFO halfword The register name Address Input FIFO halfword 3 PIOInFIFO3 01FF8237-36 Input FIFO halfword 2 PIOInFIFO2 01FF8235-34 Input FIFO halfword 1 PIOInFIFO1 01FF8233-32 Input FIFO halfword 0 PIOInFIFO0 01FF8231-30 Input data FIFO Holding Register for the data from the external memory (the reverse direction) (for DMA channel 12): Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Parallel Port Input Data FIFO Holding Register (PIOInHold) $01FF8239 data bit 15 data bit 14 data bit 13 data bit 12 data bit 11 data bit 10 data bit 9 data bit 8 Rst Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Parallel Port Input Data FIFO Holding Register (PIOInHold) $01FF8238 data bit 7 data bit 6 data bit 5 data bit 4 data bit 3 data bit 2 data bit 1 data bit 0 Rst Value 00h Read Value 00h 17-14 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Input data FIFO Control Register for the data from the external memory (the Reverse direction) (for DMA channel 12): Address: Bit 15 Bit 14 Bit 13 Bit 12 Parallel Port Input Data FIFO Control Register (PIOInFIFOCtrl) $01FF823B FIFO Enabled (R) Data Request (R) FIFO Ready (R) FIFO DMA Threshold Bit 11 Address: Bit 7 Bit 6 Bit 5 Bit 4 Parallel Port Input Data FIFO Control Register (PIOInFIFOCtrl) $01FF823A (Not Used) Holding Byte Present FIFO Data Quantity Register Full Bit 3 Bit 10 Bit 2 Bit 9 Bit 8 Default: FIFO Output Pointer Rst Value 00h Read Value 00h Bit 1 Default: Bit 0 FIFO Input Pointer Rst Value x0000000b Read Value 00h Bit 15: This bit indicates that the FIFO is active and capable of generating DMA requests. This bit generally follows the setting of the LCL_ENB input signal except the FIFO Enabled register bit will remain asserted if the LCL_ENB input signal is set to false while the FIFO is executing a DMA transfer. In this case, the register bit will remain set for the duration of the DMA transfer and then become cleared. Bit 14: This bit is similar to the DMA_REQ signal except that it is not blocked when DMA_TC0 is set. It indicates that the programmed threshold has been met or exceeded and that the FIFO requires data transfers either by enabling hardware DMA through DMA_TC0 or by executing software DMA cycles. Bit 13: This bit indicates that the FIFO can accept data transfers to/from the local logic. This bit is low when the data direction is into the local logic and the FIFO is empty or when the data direction is out of the local logic and the FIFO is full. Bit 12-10: This bit field indicates at which point the FIFO should issue a DMA request. It is compared with the FIFO Data Quantity bit field to determine when this should occur. Legal values are from 1 to 4. A value of zero causes no data transfers to occur. Values greater than 4 are treated as 4. Bit 9-8: This bit field indicates which byte of the FIFO quad halfword structure is the next to be used as output data. Bit 7: Not used Bit 6: This bit indicates that there is a full word in the holding register. Bit 5: This bit indicates that there is a single byte in the holding register. Bit 4-2: This bit field indicates the number of quad halfwords that contain data. Valid values are from 0 to 4. Bit 1-0: This bit field indicates which byte of the FIFO quad halfword structure is the next to receive input data. Note: It is strongly recommended that the FIFO be disabled before firmware writes to the FIFO Control register. The FIFO Control register contains data that is essential to the FIFO’s operation. If this data is changed while the FIFO is operating, unpredictable operation will result. 100723A Conexant 17-15 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 17.5 Timing 17.5.1 Compatibility Timing When this mode of handshaking is enabled, the PPI automatically generates BUSY upon reception of the leading edge of STROBEn from the host, and latches the logic levels to the ippid bus and AUTOFDn in the Parallel Port Data Register. The PPI then waits for the STROBEn to de-assert and the Parallel Port Data Register to be read. After the later of these events occurs, the PPI asserts ACKn for the duration specified in the Parallel Port ACK Pulse Width Register and then de-asserts ACKn and BUSY to conclude the data transfer. When data is latched into the Parallel Port Data Register, the PPI controller generates two events: an internal parallel port DMA request, and a processor interrupt request. Software may alternate between DMA and interrupt based data transfers. The DMA request remain active until the data is read by either the DMA channel, or the processor in response to the interrupt request. If the Forward DMA FIFO has been enabled, the Forward DMA FIFO generates fdmareq after reading the Parallel Port Data Register and writing the data to its internal half word quad registers. When the fdmack is generated the DMA channel reads the Forward FIFO internal Registers, ACKn is pulsed, BUSY is deserted, and the fdmack is cleared. 17.5.1.1 Compatibility Mode Timing Diagram 1. 2. 3. 4. 5. Host writes data to the data bus If obusy is not active, the host will assert the istroben low. Peripheral will assert obusy high to indicate data transfer cycle. Host will set the istroben and at the rising edge, the peripheral will latch the data . Peripheral asserts oackn low to acknowledge the transfer and drops the obusy. IPPID[7:0] STROBEn BUSY ACKn Latch data Request Interrupt Read data Make ACK pulse Figure 17-2. Compatibility Mode Timing Diagram 17-16 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 17.5.2 Nibble Mode Timing The Nibble mode is the most common way to get reverse channel from printer or peripheral. This mode is usually combined with the compatibility mode or a proprietary forward channel mode to create a complete bi-direction channel. The Nibble Mode Phase transitions: 1. 2. 3. 4. 5. Host signal ability to take data by asserting AUTOFDn low Peripheral responses by placing first nibble on status lines(FAULTn,SLCTOUT,PE and BUSY) Peripheral signals valid nibble by asserting ACKn low Host sets AUTOFDn high to indicate that it has received the nibble and is not ready for another nibble. Peripheral set ACKn high for the second nibble. AUTOFDn ACKn FAULTn SLCTOUT PE BUSY BITS[1:4] BITS[5:8] Figure 17-3. Nibble Mode Data Transfer Cycle 100723A Conexant 17-17 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 17.5.3 Byte Mode Timing Byte mode is a reverse channel data transfer used to provide data rates into the PC approaching that of compatibility mode. The byte mode signal handshaking is as follows: 1. 2. 3. 4. 5. 6. Host signals ability to take data by asserting AUTOFDn low Peripheral responds by placing first byte on data lines Peripheral signals valid byte by asserting ACKn low Host sets AUTOFDn high to indicate it has received data Peripheral sets ACKn high to acknowledge host Host pulses STROBEn as an acknowledge to the peripheral. AUTOFDn ACKn OPPID[7:0] STROBEn Figure 17-4. BYTE Mode Data Transfer Cycle 17-18 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 17.5.4 ECP Mode Timing Two modes of hardware handshaking are offered for ECP forward transfers. ECP mode hardware handshaking is enabled by setting the MODE field in the Parallel Port Control Register to 2. The ECP mode hardware handshaking with RLE is enabled by setting MODE to 3. When either mode is enabled, the PPI automatically responds to STROBEn (HostClk) by latching the logic levels on the PD bus and AUTOFDn in the Parallel Data Register. When the Parallel Port Data Register is read, the PPI drives BUSY high,waits for STROBEn to high, and then drives BUSY (periphAck) low to conclude the cycle. The BUSY signal is controlled by the PPI automatically if the data is received using DMA mode. Note that since no ACKn pulse is generated, the pulse width duration specified in the Parallel Port ACK Pulse Width Register is not used in any manner. As in the compatibility handshake mode, data is latched at the leading edge of STROBEn. This then causes a DMA request and posting of DRX (data received) interrupt event. DMA and interrupt operation is the same as explained in the compatibility mode. In mode 2, reception of both run-length counts and channel addresses causes a CRX interrupt event to be posted. Software is responsible for responding to channel addresses and performing data decompression. When MODE is set to 3, ECP mode hardware handshaking is enabled during forward data transfers, with Run Length Encoding(RLE) data compression support. If MODE is reprogrammed when decompression is taking place, that is, when RLD is set, the decompression continues unhindered to completion. 17.5.4.1 Forward ECP Transfer Handshake: The host places data on the data lines and indicates a data cycle by setting AUTOFDn high. 1. 2. 3. 4. 5. Host asserts STROBEn low to indicate valid data. Peripheral acknowledges host by setting BUSY high. Host sets STROBEn high and the data is clocked in to the peripheral. Peripheral sets BUSY low to indicate that it is ready for the next byte. The cycle repeats, but this time it is a command cycle because AUTOFDn is low. DATA STROBEn BUSY Latch data Request Interrupt Read data Figure 17-5. ECP Mode Timing Diagram 100723A Conexant 17-19 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 17.5.4.2 Reverse ECP Transfer Handshake 1. 2. 3. 4. 5. 6. 7. 8. The host requests a reverse channel transfer by setting INITn low. The peripheral signals that it is OK to proceed by setting PE low. The peripheral places data on the data lines and indicates a data cycle by setting BUSY high. The peripheral asserts ACKn low to indicate valid data. The host acknowledges by setting AUTOFDn high. The peripheral sets ACKn high to clock the data in to the host. The host sets AUTOFDn low to indicate that it is ready for the next byte. The cycle repeats, but this time it is a command cycle because ACKn is low. INITn PE OPPID[7:0] DATA ACKn AUTOFDn BUSY Figure 17-6. Reverse ECP Transfer Timing 17-20 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 17.5.5 Error Cycle Timing Error cycles are performed by a printer to alert the host of a change in the operational status of the printer. Error cycles include such events as the user taking the printer off-line, the occurrence of a paper jam, or the printer running out of paper. An error cycle consists of raising BUSY, and then changing the state of any one or more of the three status lines, SLCTOUT, PE and FAULTn to reflect the error condition. The ERRC bit in the control register prevents handshake logic from generating ACKn and BUSY in the compatibility mode. ERRC SLCTOUT PE FAULTn BUSY ACKn Figure 17-7. Error Cycle Timing Diagram 100723A Conexant 17-21 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 17.6 Firmware Operation All the Parallel Port negotiations will be done in firmware. 17.6.1 Disabling All Hardware Handshaking When hardware handshaking is disabled(MODE=0), software is then responsible for controlling the parallel port interface. Software can control all parallel port operations including negotiation and termination phases, as well as reverse channel transfers. This provides flexibility to adapt to existing protocols as they are revised and to new protocols as they are created. Software can control the BUSY and ACKn interface pins with the FBSY (force BUSY) and FACK (force ACKn) bits in the Parallel Port Interface Register. The FBSY bit is OR’ed with the BUSY output from the PPI state machine before driving the BUSY interface pin, and the FACK bit is NOR’ed with the ACKn output from the PPI state machine before driving the ACKn interface pin. Normally the PPI state machine should be idle when using FBSY and FACK. Even with all hardware handshaking disabled, the Parallel port register continues to latch parallel port data on the leading edge of the STROBEn. Software can issue a RST in the Parallel Port Control Register to immediately force the PPI state machine to idle. 17.6.2 Software Interrupts The following is a list of P1284 signal transition interrupts provided for ease of use: SLCTINn Rising and Falling STROBEn Rising and Falling (remains high until data is fetched from PPI) INITn Rising and Falling AUTOFDn Rising and Falling DRX Data Received CRX Command Received IVT Invalid Transition RDX Reverse Data Transmitted HTE Host Time-out Error 17.6.3 Interrupt Operation There will be a bit corresponding to each interrupt in the interrupt enable register that enables the interrupt. When the event corresponding to an interrupt occurs, this bit needs to be set at the following rising edge of the SIU clock. The PPI Interface possesses 15 sources of interrupts. Each source can post an event in the interrupt status register and each event can be individually enabled or disabled in the interrupt mask register. The fifteen interrupts have been in Section 17. The first eight interrupt events signal level changes that occur at the host control signal input pins. Note that these events are detected after the host inputs are synchronized, digitally filtered, and recorded in the parallel Port Interface Register. 17-22 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 18. Real-Time Clock 18.1 Description The Real-Time Clock (RTC) circuit is required to maintain current time information under MFC2000 primary power and battery backup conditions. The RTC Circuit consists of six binary counters that track seconds, minutes, hours, days, months, and years elapsed since the reference year, 1992. Each counter can be read from the appropriate register described. The tracking range of the RTC is up to 32 years, and automatic compensation is made for leap years. A 32768 Hz signal is required to operate RTC counters and logic. A 32768 Hz (watch) crystal should be used. The RTC block diagram is illustrated in Figure 18-1. 32 768 H z 15 B IT PR E SC A L ER B U S Y F LA G C LE AR 5 B IT DA YS 1 Hz 6 B IT SECOND S BU SY DE TEC T CO=60 6 B IT M IN U T ES C O = 60 5 B IT HOURS C O = 24 BU S Y F L AG C O = 28,29 , 30, or 30 4 B IT MO NTHS C O = 12 5 BIT YE AR S M O NT H D E CO D ER L EA P YE A R D E C O D ER 3 S TA TE D R IV E R Figure 18-1. RTC Block Diagram 100723A Conexant 18-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 18.2 Real-Time Clock (RTC) Registers Note: All RTC registers are cleared only by battery power-on reset or a write to the RTC control register. As you can see, second and minute are in the same 16-bit register. Hour_Day, and Month_Year registers have the same arrangement. If CPU does a 16-bit write to the Hour_Day register, both hour and day will increment. If CPU only writes to the lower 8-bit or the upper 8-bit, only hour or only day will increment. The Month_Year register operates in the same manner. The Sec_Min register operates differently. If CPU does a 16-bit write or a lower 8-bit write to the Sec_Min register, year, month, day, hour, and minute will increment once. If CPU only writes to the upper 8-bit, only minute will increment. Address: Second and Minute (Sec_Min) 01FF8091 Address: Second and Minute (Sec_Min) 01FF8090 Bit 15 Busy Flag (R) Bit 7 Busy Flag (R) Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Read: Data Range 000000 - 111011 Write: increment minute, (data is a don’t care) Bit 5 Bit 4 Bit 3 Default: Rst. Value 0x000000b Read Value 00h Bit 2 Bit 1 Bit 0 Read: Data Range 000000 - 111011 Write: increment all - year,month,day,hour and minute registers, (data is a don’t care) Default: Rst. Value 0x000000b Read Value 00h Increment all will increment the year, month, day, hour, and minute registers by one. Address: Hour and day (Hour_Day) 01FF8093 Address: Hour and Day (Hour_Day) 01FF8092 Address: Month and Year (Month_Year) 01FF8095 Address: Month and Year (Month_Year) 01FF8094 18-2 Bit 15 Busy Flag (R) Bit 7 Busy Flag (R) Bit 15 Busy Flag (R) Bit 7 Busy Flag (R) Bit 14 (Not Used) Bit 6 (Not Used) Bit 14 (Not Used) Bit 6 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 13 (Not Used) Bit 5 (Not Used) Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Read: Data Range 00000 - 11110 Write: increment day (data is a don’t care) Bit 4 Bit 3 Bit 2 Rst. Value 0xx00000b Read Value 00h Bit 1 Bit 0 Read: Data Range 00000 - 10111 Write: increment hour (data is a don’t care) Bit 12 Bit 11 Bit 10 (Not Used) Bit 3 Bit 2 Bit 9 Bit 8 Default: Rst. Value 0xx00000b Read Value 00h Bit 1 Read: Data Range 0000 - 1011 Write: increment month, (data is a don’t care) Conexant Default: Rst. Value 0xx00000b Read Value 00h Read: Data Range 00000 - 11111 Write: increment year (data is a don’t care) Bit 4 Default: Bit 0 Default: Rst.Value 0xxx0000b Read Value 00h 100723A Hardware Description Address: MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 Real Time Clock Ctrl (Not Used) (RTC) 01FF8097 Address: Bit 7 Bit 14 (Not Used) Bit 6 Bit 13 Bit 12 Bit 11 Bit 10 (Not Used) (Not Used) (Not Used) (Not Used) Bit 5 Bit 4 Bit 3 Bit 2 Bit 9 (Not Used) Bit 1 Bit 8 (Not Used) Bit 0 Real Time Clock Ctrl Read: Clears the busy flag (data is undefined) (RTC) Write: Resets the Real Time Clock (RTC), (data is a don't care) 01FF8096 Default: Rst. Value xxh Read Value 00h Default: Rst. Value xxh Read Value 00h Read: clear BUSY flag, data is undefined. Write: reset the RTC, data is 'don't care'. 18.3 RTC Operations 18.3.1 Power-Up/Power-Down Operation When prime power is applied to the MFPC and battery reset (BATRSTn) is generated, all counters in the RTC are reset to 0 and the RTC becomes accessible after a delay of from 125 to 250 ms, provided that the crystal clock is running. (Note: The RTC is also software resetable.) When prime power drops below a level where the power-down input (PWRDWNn) becomes active, an internal lockout signal prevents read and write access of the RTC, and RTC operation switches to battery power. Inactivation of the PWRDWNn pin (when prime power is restored) removes the lockout condition, and the RTC is again accessible. (Note: activation of external reset, RESETn, does not affect RTC operation.) 18.3.2 Setting Time The first step in setting the time is to reset the time counters by writing to the RTC Control register. The user can then set the current year (number of years elapsed since the reference year, 1992) into the upper 8bit of the month_year register. Each write to the year register increments the year counter by one. The month is then set by writing to the lower 8-bit of the month_year register, and each write increments the month counter by one. The same procedure should then be used to set the correct day, hour, and minute by writing to the corresponding registers. Writing to month_year, hour_day, or sec_min register resets the seconds counter to all zeros. Note that the RTC updates the second counter once per second independent of read or write operations to RTC registers. 18.3.3 Reading Time Each 8-bit (upper or lower) of the time interval registers can be independently read. The upper most bit of each 8bit section is a Busy Flag, which when set, indicates that a one second clock edge has occurred, and that the time is being updated in all registers. If the Busy Flag is set when reading any of the time registers, the user must issue a read to the RTC Control register to clear the Busy Flag, and then re-read all of the time registers until all Busy Flags are 0. 100723A Conexant 18-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 18.3.4 Crystal Oscillator Specifications for the clock crystal, a crystal oscillator schematic and circuit board layout recommendations follow. 18.3.5 RTC Crystal Specifications Table 18-1. RTC Crystal Specifications for 32.768 kHz Characteristic Value for 32.768 kHz Nominal Frequency @25°C (F) 32.768 kHz ± 20 ppm Turnover Temperature (To) 25°C ± 5°C Temperature Characteristic (K)* -0.038 ppm/°C2 Typ Temperature Stability -160 ppm, Typ @ -40°C -137 ppm, Typ @ +85°C Quality Factor 100,000 Typ Load Capacitance 12.5 pF ±2% Series Resistance 30 K Ω Max Motional Capacitance 3.5 pF Typ Shunt Capacitance 1.7 pF Typ Maximum Drive Level 1.0 µW Aging ( ∆ F/f) 5.0 ppm, First Year Operating Temperature -10°C to +60°C *( ∆ F/f) = K(To-T)2 where T= point of temperature comparison Recommended RTC Crystal Interface Circuit Typical Values Fc 32.768 kHz R1 10 M Ω R2 0 KΩ C1 22 pf C2 22 pf C1 A M F PC X IN Fc R1 X O UT R2 C2 Note: Adjustment to the values of C1 and C2 may be required to obtain the correct operating frequency due to stray capacitance on the Developer’s circuit board. 18-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Circuit Layout Criteria For best performance the following design steps should be followed: 1. 2. 3. 4. 5. Keep stray capacitance and resistance to a minimum. Run XIN and XOUT traces as far apart as possible. Clear the ground plane from under the interface circuit. Keep digital signals away from this interface. This is a high impedance circuit; residual contamination (e.g., water soluble flux) of this circuit may cause unreliable operation. 100723A Conexant 18-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank. 18-6 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 19. Synchronous Serial Interface (SsIF) 19.1 Introduction and Features 19.1.1 Introduction There are two identical SSIFs in the MFC2000. The common signal and block names are used in the functional and timing descriptions without indicating which SSIF. Two SSIFs are distinguished as SSIF1 and SSIF2 only in the register description. The SSIF built into the MFC2000, allows system peripherals to communicate with the MFC2000. The SSIF provides separate signals for Data (SSTXD, SSRXD), Clock (SSCLK), and optional (SSREQ) and Data Acknowledge (SSACK). The SSIF may be configured to operate as either a master or slave interface. After reset, SSTXD is 0 and SSSTAT is 1. The following describes the operation of this synchronous only serial interface. 19.1.2 Features • • • • • • • Full duplex, three wire system Master or slave operation (Bi-directional Clock) Programmable bit rates with maximum frequency = AUXCLK/2 and minimum = AUXCLK/32 with a 50% duty cycle. Programmable clock polarity and phase Internal interrupt for Receive Register Full (mask-able at the Interrupt Controller) Optional data request/acknowledge interface during slave mode 8 data bit synchronous serial-interface with programmable data shifting order S eria l C lk D ev id er5 b it A U X C LK C arry C lo ck D r iv er & C on tro l D ata B u s S SC LK Ser l C lk IR Q S SIf R d/W r A ddr W rite C on tro l R eg ister S er ia l O u t SSTX D R ead CS C nt = 8, IR Q D iv 8 R st C ou nter S er ia l In Set SSRX D S S ST A T A ck L atch C lr W r & Slav e M o d e Figure 19-1. SSIF Block Diagram 100723A Conexant 19-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 19.2 Register Description 19.2.1 The 1st SSIF (SSIF1) Address: Bit 15 Bit 14 SSData1 01FF8103 (Not Used) Address: Bit 7 SSData1 01FF8102 SSData1 (7-0) Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Rst. Value xxh Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Rst. Value xxh Read Value xxh Register Description: SSIF1 Data Register Note: The SSData1 Register serves as Transmit Shift Register (TxBuffer1) during CPU write, or as Receive Shift Register (RxBuffer1) during CPU read. Reading the SSData1 Register will clear the SSInFull1 Interrupt bit. Writing to the SSData1 Register will reset the shift bit counter, overwrite the output register and initiate an 8 bit serial shift while in serial mode. A bit called SSSTATOut1 is added into the SSCmd1 register. The SSSTATOut1 value will be output to the SSSTAT1/GPIO[8] pin as the GPIO[8] data when the SSSTAT1/GPIO[8] pin is programmed as GPIO[8] through the GPIOConfig register. Address: SSCmd1 Bit 15 (Not Used) Bit 14 (Not Used) Bit 13 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 10 (Not Used) Bit 9 (Not Used) Bit 8 Default: SSSTATOut Rst. Value 1 xxxxxxx0b 01FF8101 Read Value 00h Address: SSCmd1 Bit 7 (Not Used) Bit 6 (Not Used) Bit 5 (Not Used) Bit 4 L2MSB1 Bit 3 Bit 2 Bit 1 SSCLKPol1 SSCLKPhas (Not Used) 1 01FF8100 Bit 0 Mode11 Default: Rst. Value xxx000x0b 0 - Master 1 - Slave Read Value 00h Register Description: SSIF1 Command Register Bit 8: Bit 4: 19-2 The SSSTATOut1 bit is used only when the SSSTAT1/GPIO[8] pin is programmed as GPIO[8] through the GPIOConfig register. The data value in the SSSTATOut1 bit is the GPIO[8] data value. L2MSB1, Read/Write bit. This bit controls the shifting order of the transmit and receive registers. When the L2MSB1 bit is cleared (default), the transmit and receive shift register will shift from the MSB to the LSB. When the L2MSB1 bit is set, the transmit and receive register will shift from the LSB to MSB. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Bit 3: SSCLKPol 1, Read/Write bit. This bit controls the polarity of the SSCLK1 pin. The default value is zero. When the SSMode1 is configured at the IOMode1, the SSCLKPol1 bit will not affect the SSCLK1 pin value. Bit 2: SSCLKPhas1, Read/Write bit. The default value is zero. SSCLKPol1 SSCLKPhas1 Description (used for both master and slave modes) 0 0 Enable the external logic to clock the SSTXD1 pin on the rising edge of the SSCLK1 pin. The SSCLK1 pin’s first transition will be in the middle of the first bit. 0 1 Enable the external logic to clock the SSTXD1 pin on the falling edge of the SSCLK1 pin. The SSCLK1 pin’s first transition will occur at the beginning of the first bit. 1 0 Enable the external logic to clock the SSTXD1 pin on the falling edge of the SSCLK1 pin. The SSCLK1 pin’s first transition will be in the middle of the first bit. 1 1 Enable the external logic to clock the SSTXD1 pin on the rising edge of the SSCLK1 pin. The SSCLK1 pin’s first transition will occur at the beginning of the first bit. SSCLK1 (SSCLKPol1=0, SSCLKPhas1=0) SSCLK1 (SSCLKPol1=0, SSCLKPhas1=1) SSCLK1 (SSCLKPol1=1, SSCLKPhas1=0) SSCLK1 (SSCLKPol1=1, SSCLKPhas1=1) SSTXD1 MSB 6 5 4 3 2 1 LSB Internal strobe for data capture(all modes) Figure 19-2. SSCLK1 Diagram Note: SSCLK1 is used to synchronize the movement of data both in and out of device through SSRXD1 and SSTXD1 pins. The master and slave devices are capable of exchanging a data byte of information during a sequence of eight clock pulses. Both master and slave devices must be operated in the same timing mode as controlled by SSCLKPol1 and SSCLKPhas1 signals. Bit 0: Mode11, Read/Write bit. This bit controls the SSIF1 master/slave modes. 0: Master (default) 1: Slave When in the Master Mode, the SSCLK1 pin is configured as an output pin. When in the Slave Mode, SSCLK1 signal is an input to the SSIF1. 100723A Conexant 19-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 SSDiv1 01FF8105 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Default: Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 SSDiv1 01FF8104 SSInFull1 (Not Used) (Not Used) (Not Used) SSCLK1 Divisor Default: Rst. Value 0xxx0000b Read Value 00h Register Description: This register controls the bits of the SSCLK1 Divisor. Bit 7: SSInFull1, Read bit. This bit indicates the status of the input register. 0: Empty (default) 1: Full This bit allows the Firmware to poll the status of the serial interface when the use of the interrupt is not desired and is cleared by reading the in SSIF1 Data Register. SSInFull1 is active on the falling edge of AUXCLK1 and is used by Interrupt controller where it masked. Bit 6-4: Bit 3-0: Not used DivReg (Divisor Register), Read/Write bits. The Div Register is the SSCLK1 Divisor Register, which defines the SSCLK1 frequency. Writing the DivReg register will cause the SSIF1 logic to load the internal counter. Firmware can transmit data with the right speed immediately after the SSCLK1 setup. The SSCLK1 Divisor Register defines the SSCLK1 frequency, which depends on the AUXCLK frequency. The SSCLK1 Divisor Register is a five bit register. The SSCLK1 frequency (fSCK)and Divisor relationship is: FSCK = 19-4 AUXCLK 2 * ( Divisor + 1) Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 19.2.2 The 2nd SSIF (SSIF2) Address: Bit 15 Bit 14 SSData2 01FF810B (Not Used) Address: Bit 7 SSData2 01FF810A SSData2 (7-0) Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Rst. Value xxh Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Rst. Value xxh Read Value xxh Register Description: SSIF2 Data Register Note: The SSData2 Register serves as Transmit Shift Register (TxBuffer2) during CPU write, or as Receive Shift Register (RxBuffer2) during CPU read. Reading the SSData2 Register will clear the SSInFull2 Interrupt bit. Writing to the SSData2 Register will reset the shift bit counter, overwrite the output register and initiate an 8 bit serial shift while in serial mode. A bit called SSSTATOut2 is added into the SSCmd2 register. The SSSTATOut2 value will be output to the SSSTAT2/AO[2]/GPO[15] pin as the GPO[15] data when the SSSTAT2/GPO[15] pin is programmed as GPO[15]. Address: SSCmd2 01FF8109 Bit 15 (Not Used) Bit 14 (Not Used) Bit 13 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 10 (Not Used) Bit 9 (Not Used) Address: SSCmd2 01FF8108 Bit 7 (Not Used) Bit 6 (Not Used) Bit 5 (Not Used) Bit 4 L2MSB2 Bit 3 Bit 2 Bit 1 SSCLKPol2 SSCLKPhas (Not Used) 2 Bit 8 Default: SSSTATOut Rst. Value 2 xxxxxxx0b Read Value 00h Bit 0 Default: Rst. Value Mode12 xxx000x0b 0 - Master Read 1 - Slave Value 00h Register Description: SSIF2 Command Register Bit 8: The SSSTATOut2 bit is used only when the SSSTAT2/AO[2]/GPO[15] pin is programmed as GPO[15]. The data value in the SSSTATOut2 bit is the GPO[15] data value. Bit 4: L2MSB2, Read/Write bit. This bit controls the shifting order of the transmit and receive registers. When the L2MSB2 bit is cleared (default), the transmit and receive shift register will shift from the MSB to the LSB. When the L2MSB2 bit is set, the transmit and receive register will shift from the LSB to MSB. Bit 3: SSCLKPol2, Read/Write bit. This bit controls the polarity of the SSCLK2 pin. The default value is zero. When the SSMode2 is configured at the IOMode2, the SSCLKPol2 bit will not affect the SSCLK2 pin value. Bit 2: SSCLKPhas2, Read/Write bit. The default value is zero. 100723A Conexant 19-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description SSCLKPol2 SSCLKPhas2 Description (used for both master and slave modes) 0 0 Enable the external logic to clock the SSTXD2 pin on the rising edge of the SSCLK2 pin. The SSCLK2 pin’s first transition will be in the middle of the first bit. 0 1 Enable the external logic to clock the SSTXD2 pin on the falling edge of the SSCLK2 pin. The SSCLK2 pin’s first transition will occur at the beginning of the first bit. 1 0 Enable the external logic to clock the SSTXD2 pin on the falling edge of the SSCLK2 pin. The SSCLK2 pin’s first transition will be in the middle of the first bit. 1 1 Enable the external logic to clock the SSTXD2 pin on the rising edge of the SSCLK2 pin. The SSCLK2 pin’s first transition will occur at the beginning of the first bit. SSCLK2 (SSCLKPol2=0, SSCLKPhas2=0) SSCLK2 (SSCLKPol2=0, SSCLKPhas2=1) SSCLK2 (SSCLKPol2=1, SSCLKPhas2=0) SSCLK2 (SSCLKPol2=1, SSCLKPhas2=1) SSTXD2 MSB 6 5 4 3 2 1 LSB Internal strobe for data capture(all modes) Figure 19-3. SSCLK2 Diagram Note: SSCLK2 is used to synchronize the movement of data both in and out of device through SSRXD2 and SSTXD2 pins. The master and slave devices are capable of exchanging a data byte of information during a sequence of eight clock pulses. Both master and slave devices must be operated in the same timing mode as controlled by SSCLKPol2 and SSCLKPhas2 signals. Bit 0: Mode12, Read/Write bit. This bit controls the SSIF2 master/slave modes. 0: Master (default) 1: Slave When in the Master Mode, the SSCLK2 pin is configured as an output pin. When in the Slave Mode, SSCLK2 signal is an input to the SSIF2. 19-6 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: SSDiv2 01FF810D (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 SSDiv2 01FF810C SSInFull2 (Not Used) (Not Used) (Not Used) SSCLK2 Divisor Default: Rst. Value 0xxx0000b Read Value 00h Register Description: This register controls the bits of the SSCLK2 Divisor. Bit 7: SSInFull2, Read bit. This bit indicates the status of the input register. 0: Empty (default) 1: Full This bit allows the Firmware to poll the status of the serial interface when the use of the interrupt is not desired and is cleared by reading the in SSIF2 Data Register. SSInFull2 is active on the falling edge of AUXCLK and is used by Interrupt controller where it masked. Bit 6-4: Bit 3-0: Not used DivReg (Divisor Register), Read/Write bits. The Div Register is the SSCLK2 Divisor Register, which defines the SSCLK frequency. Writing the DivReg register will cause the SSIF logic to load the internal counter. Firmware can transmit data with the right speed immediately after the SSCLK2 setup. The SSCLK2 Divisor Register defines the SSCLK2 frequency, which depends on the AUXCLK frequency. The SSCLK2 Divisor Register is a 5-bit register. The SSCLK2 frequency (fSCK)and Divisor relationship is: TO BE ADDED 19.3 SSIF Timing 19.3.1 SSCLK Timing When SSCLK is on (Figure 19-4), the duty cycle of SSCLK is always 50%. The SSCLK polarity is controlled by the SSIF Command Register SSCLKPol Bit. When the SSCLKPol bit and the phase control is cleared (default), the SSTXD signal transition is on the SSCLK falling edge. External logic can latch the SSTXD signal on the SSCLK rising edge. When the SSCLKPol bit is set, the SSTXD signal transition is on the rising edge of the SSCLK. External logic can latch the SSTXD signal on the SSCLK falling edge. For each write to the empty SSIF Data Register, the SSCLK will be active for eight cycles. When there is no data on the SSTXD pin, the SSCLK will stay in idle state, (logic zero when SSCLKPol bit is clear, and logic one when the SSCLKPol bit is set). 100723A Conexant 19-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 19.3.2 Request/Acknowledge Timing Request/Acknowledge handshaking may be used while the SSIF is operating in the slave mode. While in this mode the peripheral (master) may initiate a data transfer by driving the SSACK signal low. The SSACK signal from the external peripheral is connected to any GPIO pin (used as GPI). Firmware will in turn write SSTXD data to the data register. This will cause the SSIF hardware to drive the SSREQ(SSSTAT) signal low. Once the SSREQ is low the peripheral may start the SSCLK to transfer the data. Upon completion of the 8 bit transfer, the peripheral must drive the SSACK high. The IFC will then read the serial data out of the input register which will in turn drive the SSREQ high and complete the transfer. If the IFC wishes to initiate a transfer in this mode it must write to the SSIF output register which will in turn set the SSREQ low. The peripheral must then provide 8 clocks on the SSCLK line to receive the data from the MFC2000’s SSIF. P reip h er al In itiated Tran sfer Tr an sfer C om p lete A M F P C In itiate s Tran sfer S SA C K n S SR E Q n 1 7 8 1 S S C LK S er ial in F u ll R ead W r ite Figure 19-4. Timing Diagram 19-8 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 20. Programmable Tone Generators 20.1 Introduction The AMFPC provides three programmable clock generator outputs. Two of the generators are to be used as tone generators and the third as a bell or ring driver. 20.2 Bell/Ringer Generator The frequency of this bell/ringer generator is programmable, ranging from 500 Hz to 15.6 Hz. This frequency is derived from the AMFPC’s internal 125µs period Clock, and it is calculated based on the following formula: OutputFrequency = 1 , where BellPeriod is ranging from 0 to 31. 125µs × ( BellPeriod + 1) × 16 Each bell/ringer period is divided into 16 phases, as shown in the following figure. The phase number may be used by the firmware to determine when to turn off bell signal. period 50% x period Phase: 1 0 Hi-Z F E D C B A 50% x period 9 8 7 6 5 4 Hi-Z 3 2 1 0 F E Hi-Z Bell Mode: Ringer Mode: Modulated by ALTTone Generator Figure 20-1. Bell/Ringer Timing The mode of operation for this bell/ringer generator is selected by RingerEnb bit in BellControl register. Figure 20-2 shows the block diagram of this bell/ringer generator. Table 20-1shows the relationship between BellPeriod value and output frequency. 100723A Conexant 20-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description D [3 :0] 12 5 µsC lk resn B ell/R in g er B ell P h a se L o g ic A [3 :0 ] A d dre ss D eco d er C S ,R /W D [4 :0 ] B ellP eriod R eg D [3 :0 ] B ellCtrl R eg A L T To n e A L T T on eE n b T o A L T T on eG en fr om A L T T on e G en Figure 20-2. Bell/Ringer Block Diagram Table 20-1. Bell/Ringer Setting 20-2 BellPeriod+1 Bell/Ringer Freq(Hz) BellPeriod+1 Bell/Ringer Freq(Hz) 1 500 17 29.4 2 250 18 27.8 3 166.7 19 26.3 4 125 20 25 5 100 21 23.8 6 83.3 22 22.7 7 71.4 23 21.7 8 62.5 24 20.8 9 55.6 25 20 10 50 26 19.2 11 45.5 27 18.5 12 41.7 28 17.9 13 38.5 29 17.2 14 35.7 30 16.7 15 33.3 31 16.1 16 31.2 32 15.6 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 20.2.1 Bell Mode Firmware operation The firmware needs to control Bell/Ringer generator to issue the following waveform: ~ 1s H i-Z ~ 2s B ell Q u iet ... Hi-Z ~ 1s B ell ... In order to setup for Bell mode, the following steps must be taken. Initialize: 1. Write the desired frequency of bell in BellPeriod register (see Table 20-1) 2. Allow Hi-Z on output (BellDriveEnb = 0) 3. Disable ringer mode (RingerEnb = 0) Start bell signal: 1. Enable Bell generator (BellEnb = 1) 2. (This setting will start the counter to run) Create “Bell-Quiet-Bell” signal: 1. Once the bell signal has been generated, the firmware will read BellPeriod register. On every Phase A or 9, the off-hook signal is checked. If it is detected, then the bell signal is disabled by having BellEnb = 0. This will ensure the bell signal is terminated on the high to high-Z transition. 2. If after about 1s, the off-hook signal is not detected, then the firmware will disable the bell signal by having BellEnb = 0 when the phase is on 9. When BellEnb is reset to 0, then the bell signal will stop at the Hi-Z, and the phase will be in zero. After about 2 s of quiet, the bell signal can be activated again by setting BellEnb to 1. 20.2.2 Ringer Mode The Ringer mode of operation requires the use of both the Bell/Ringer generator as well as the ALTTone generator. The fundamental frequency of this ringer signal is the same as the bell signal. The ringer signal works in conjunction with the ALTTone Generator to modulated it’s output. The active window for the ring pulses (bell period high), will automatically shift so that the modulating waveform is not truncated at the beginning or end. Note: The firmware needs to control Bell/Ringer generator to issue the following waveformn: ~ 1s ~ 2s R in g Q u iet ... ~ 1s R in g ... Figure 20-3. Bell/Ringer Generator Waveform 100723A Conexant 20-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description To setup for Ringer mode, the following steps must be taken: Initialize: 1. 2. 3. 4. 5. Write the desired frequency of bell in BellPeriod register (see Table 20-1) Enable output drive (BellDriveEnb = 1, will over-ride Hi Z control) Enable ringer mode (RingerEnb = 1) Write the desired frequency of tone1 in ALTToneGen register If ALTTone signal is not desired on the ALTTone pin, then disable ALTTone signal to the pin (ALTToneEnb = 0). Note: ALTToneEnb is only to enable the ALTTone signal to the ALTTone pin. If ALTToneEnb = 0, ALTTone signal will be blocked to ALTTone pin, but ALTTone signal is still available to Bell/Ringer generator for modulation purpose. Start ringer signal: 1. Enable Bell generator (BellEnb = 1) 2. (This setting will start the counter to run) Create “Ring-Quiet-Ring” signal: 1. The firmware can generate the signal by switching the BellEnb setting. 20.2.3 Registers Description The following is a description of the registers used to control the Bell/Ringer Function. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: BellPeriod 01FF80B7 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: BellPeriod 01FF80B6 (Not Used) (Not Used) (Not Used) Bell Period (0 - 31), bell period = (BellPeriod+1)*2ms Rst. Value xxx00000b Read Value 00h Register Description: Bell Period Register Bit 15-5: Not Used Bit 4-0: Writing to this register will set the Bell Period. Reading this register will return that value. 20-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: BellPhase 01FF80B9 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 BellPhase 01FF80B8 (R ) (Not Used) (Not Used) (Not Used) (Not Used) Bell Phase Default: Rst. Value xxxx0000b Read Value 00h Register Description: Bell Phase Register Bit 15-4: Not Used Bit 3-0: Read only register returns current phase of the bell signal. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: BellCtrl 01FF80B5 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: (Not Used) ModToneEn RingerEnb b BellCtrl 01FF80B4 (Not Used) (Not Used) (Not Used) 1=Ring 1 = Enabled Mode 0=Bell Mode BellDrvEnb BellEnb 1 = Enabled 1 = Enabled 0 = Allow Hi Z out Rst. Value xxxx0000b Read Value 00h Register Description: Bell Control Register Bit 15-4: Not Used Bit 3: Enables the ALTTone output to external pin but has no effect on the Ringer Mode. If this signal is set to 0 the ALTTone output will be at 0. Bit 2: Sets the generator into Bell Mode or Ringer Mode (Ringer Mode overrides bit 1 and does not allow the tristate condition.) Bit 1: In Bell Mode, it Controls weighter the output pin is always driven or tristated during bell phases 0, F, 8, and 7. Bit 0: Enables the Bell/Ringer counters to run. When this bit is set to 0, the counters are held at the start of phase “F”. Note: 100723A After reset the Bell/Ringer pin will be tristated with the counters held at bell phase “0”. Conexant 20-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 20.3 Tone Generator There are two tone generators which can be operated independently, namely ALTTone and Tone. ALTTone can be used alone or with the bell/ringer generator for modulation purpose. The duty cycle of the tone signal is 50%. Frequency modulation on the tone signal can be controlled by the firmware. While the tone generator is running, the firmware may write a new value to the frequency register which will take effect on the start of the next tone cycle. The tone signal is guaranteed to have a smooth transition to the new frequency Figure 20-4 shows an example of increasing frequency with smooth transition on the tone signal. G litch free T o ne: 255 C o unter O u tp u t: 1 w ritin g a n ew valu e to T on e G en reg ister Figure 20-4. Tone Generator Frequency Change 20.3.1 Tone/AltTone The signal generator called Tone, has the ability to generate a dual-tone output. The output frequency switch time and total cycle time are both programmable from 0 to 104.8mS with a step resolution of 102.4uS. Figure 1-5 is a block diagram of the Tone signal generator. Frequency Register 1 and 2 hold the value of the two alternating frequencies. Switch time specifies the time at which the output frequency stitches from Freq1 to Freq2. The total time register sets the total time of the repeating pattern. Figure 1-6 shows the timing diagram of when the output frequency counter switches between Freq1 and Freq2. Figure 1-7 depicts a waveform of a dual-tone output pattern showing what settings effect what portion of the output. Figure 1-8 is a block diagram of the AltTone frequency generator. 6.4uS Frequency Register1 10 Frequency Register 2 10 Bits Switch Time Register ICLK/8 102.4uS Sw Time Cnter 0 - 104.8mS 10 Bits 10 Bits Frequency Counter PSF Div 8 Select 10 Bits IPB_DI Reset Total Time Register PST Div 16 Carry Out Freq Out Div 2 Tot Time Cnter 0 - 104.8mS 10 Bits Figure 20-5. Dual-Tone Tone Generator Block Diagram 20-6 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Dual-Tone Out Counter Load Counter Use Freq 2 Figure 20-6. Dual-Tone Tone Generator Counter Operation Frequency 1 Frequency 2 Switch Time Total Time Figure 20-7. Dual-Tone Tone Generator output To Bell/Ringer Generator From BellCtrl Register AltTone Enb ICLK/8 PSF Div 8 AltTone Frequency AltTone Figure 20-8. AltTone Generator Block Diagram 100723A Conexant 20-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The frequency of the tone generators can be set according to the following formula: ToneFrequency = AUXCLK ( ToneGenValue) * 8 * 8 * 2 Note: ToneGenValue is the value in ALTToneGen or ToneGen Freq1 and Freq2 registers. When ToneGenValue is zero, then the tone generator is disabled, and the output is low. 20.3.2 Registers Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 ALTToneGen 01FF80B3 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 ALTToneGen 01FF80B2 Bit 9 Bit 8 ALTTone Frequency Register Bit 1 Bit 0 ALTTone Frequency Register Default: Rst. Value xxxxxx00b Read Value 00h Default: Rst. Value 00h Read Value 00h Register Description: ALTTone Generator Register. Read/Write register sets the frequency of ModTone. Bit 9-0: ALTTone frequency Note: When ALTToneGen = 0, then ALTTone is disabled and the ALTTone output to pin is 0. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 ToneGenF1 01FF80B1 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 ToneGenF1 01FF80B0 Bit 10 Bit 9 Bit 8 (Not Used) Tone Frequency 1 Register Bit 2 Tone Frequency 1 Register Bit 1 Bit 0 Default: Rst. Value xxxxxx00b Read Value 00h Default: Rst. Value 00h Read Value 00h Register Description: Tone Generator Register. Read/Write register sets the frequency of Tone Frequency 1. Bit 9-0: Tone frequency 1 Note: 20-8 When Tone = 0, then tone is disabled and the tone output to pin is 0. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 ToneGenF2 01FF80BB (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 ToneGenF2 01FF80BA Bit 9 Bit 8 Tone Frequency 2 Register Bit 1 Bit 0 Tone Frequency 2 Register Default: Rst. Value xxxxxx00b Read Value 00h Default: Rst. Value 00h Read Value 00h Register Description: Tone Generator Register. Read/Write register sets the frequency of Tone Frequency 2. Bit 9-0: Tone frequency 2 Note: When Tone = 0, then tone is disabled and the tone output to pin is 0. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 ToneGenSwitch 01FF80BD (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 ToneGenSwitch 01FF80BC Bit 9 Bit 8 Tone Frequency Switch Time Bit 1 Bit 0 Tone Frequency Switch Time Default: Rst. Value xxxxxx00b Read Value 00h Default: Rst. Value 00h Read Value 00h Register Description: Tone Generator Frequency Switch Register. Read/Write register sets the time of Frequency 1 duration. Bit 9-0: Tone Frequency Switch Time (0 to 104.8 mS in 102.4 uS steps) If this register is set to 000h, the output frequency will = Freq2 for the Total Time. If the register value is >= the Total Time, the output frequency will = Freq1 for the Total Time. 100723A Conexant 20-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 ToneGenTotal 01FF80BF (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Tone Frequency Total Time Rst. Value xxxxxx00b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Default: ToneGenTotal 01FF80BE Tone Frequency Total Time Bit 0 Default: Rst. Value 00h Read Value 00h Register Description: Tone Generator Total Time Register. Read/Write register sets the time of Frequency 1 plus Frequency 2 duration. When set to 000’h, The tone output will remain low or will be held low once the output switches to it’s low state, and all counters will be held in reset (000’h). When this register is set to a non zero value, the counters will be released alowing generation of the tone signal. The the end of the total time will not take effect until the output of the tone is low, preventing truncation of the ouput signal when high. Bit 9-0: 20-10 Tone Frequency Total Time (0 to 104.8 mS in 102.4 uS steps) Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 21. Pwm Logic 21.1 Functional Description There are five PWM channels, each channel having separate logic and control. PWM channel 0 outputs from the GPIO[11]/CPCIN pin. There is a PWMCh0 select bit in the PWMCh0Duty Register. The PWMCh0 select bit goes to the GPIO block where the signal selection and the prioritization for the GPIO[11]/CPCIN/PWM0 pin is done. PWM channel 1 and PWM channel 2 share pins with FCS[0]n and FCS[1]n. There is a PWMCh1 select bit in the PWMCh1Duty Register. There is a PWMCh2 select bit in the PWMCh2Duty Register. PWM channel 3 shares the pin with GPIO[5]/CS[3]n. There is a PWMCh3 select bit in the PWMCh3Duty Register. The PWMCh3 select bit goes to the GPIO block where the signal selection and the prioritization for the GPIO[5]/CS[3]n/PWM3 pin is done. PWM channel 4 shares the pin with GPIO[10]/P80_PB3. There is a PWMCh4 select bit in the PWMCh4Duty Register. The PWMCh4 select bit goes to the GPIO block. The GPIO logic does the signal selection and the prioritization for the GPIO[10]/P80_PB3/PWM4 pin. The PWM function requirements are as follows. • • • Signal frequency range " AUXCLK/256 or AUXCLK/(2*256) Duty cycle " high level: 1/256 to 256/256 8-bit counter for duty cycle programmability 100723A Conexant 21-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 21.2 Register Description Name/Address PWM Channel 0 Control (PWMCh0Ctrl) 01FF80C1h Name/Address PWM Channel 0 Control (PWMCh0Ctrl) 01FF80C0h Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 ALTTONE/ PWMCh0 Output Select 0=ALTTONE 1=PWMCh0 (not used) (not used) (not used) (not used) (not used) (not used) Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 of PWMCh0 Duty Cycle Control Bit 6 of PWMCh0 Duty Cycle Control Bit 5 of PWMCh0 Duty Cycle Control Bit 4 of PWMCh0 Duty Cycle Control Bit 3 of PWMCh0 Duty Cycle Control Bit 2 of PWMCh0 Duty Cycle Control Bit 1 of PWMCh0 Duty Cycle Control Bit 0 of PWMCh0 Duty Cycle Control Bit 15 Default PWMCh0 Rst. Value Clock 0xxxxxx0b Divider Read Value 0xxxxxx0b Default Rst. Value 00h Read Value 00h Controls which signal is output to the GPIO[11]/CPCIN/GPIO[11] pin (PWM channel 0 output signal, CPCIN input signal, or GPIO input/output signal). Bit 8/GPIOConfig1 Register Bit 15/PWMCh0Ctrl Register GPIO[11]/CPCIN/PWM0 Pin 0 0 GPIO[11] 0 1 GPIO[11] 1 0 CPCIN 1 1 PWM0 Bit 8 PWMCh0 clock divider (n = 0-1) PWMCh0 clock = Bits 7-0 AUXCLK (n + 1) Duty cycle control (n = 0 - 255) PWMCh0 signal frequency = PWMCh0clock 256 PWMCh0 signal ‘high’ period = PWMCh0 signal ‘low’ period = n +1 * PWMCh0 signal cycle time 256 256 − (n + 1) * PWMCh0 signal 256 cycle time 21-2 Conexant 100723A Hardware Description Name/Address PWM Channel 1 Control (PWMCh1Ctrl) 01FF80C3h MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 PWMCh1 Output Select (not used) (not used) (not used) (not used) (not used) (not used) Name/Address PWM Channel 1 Control (PWMCh1Ctrl) 01FF80C2h Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 of PWMCh1 Duty Cycle Control Bit 6 of PWMCh1 Duty Cycle Control Bit 5 of PWMCh1 Duty Cycle Control Bit 4 of PWMCh1 Duty Cycle Control Bit 3 of PWMCh1 Duty Cycle Control Bit 2 of PWMCh1 Duty Cycle Control Bit 1 of PWMCh1 Duty Cycle Control Bit 0 of PWMCh1 Duty Cycle Control Bit 15 Default PWMCh1 Rst. Value Clock 0xxxxxx0b Divider Read Value 0xxxxxx0b Default Rst. Value 00h Read Value 00h Controls which signal is output to the FCS[0]n pin (PWM channel 1 output signal or the other output signal). Bit 8/FlashCtrl Register Bit 15/PWMCh1Ctrl Register FCS[0]n/PWM1 Pin 0 0 FCS[0] 0 1 FCS[0] 1 0 FCS[0] for NAND-type Flash Mem 1 1 PWM1 Bit 8 PWMCh1 clock divider (n = 0-1) PWMCh1 clock = Bits 7-0 AUXCLK (n + 1) Duty cycle control (n = 0 - 255) PWMCh1 signal frequency = PWMCh1clock 256 PWMCh1 signal ‘high’ period = PWMCh1 signal ‘low’ period = n +1 * PWMCh1 signal cycle time 256 256 − (n + 1) * PWMCh1 signal 256 cycle time 100723A Conexant 21-3 MFC2000 Multifunctional Peripheral Controller 2000 Name/Address PWM Channel 2 Control (PWMCh2Ctrl) 01FF80C5h Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 PWMCh2 Output Select (not used) (not used) (not used) (not used) (not used) (not used) Name/Address PWM Channel 2 Control (PWMCh2Ctrl) 01FF80C4h Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 6 of PWMCh2 Duty Cycle Control Bit 5 of PWMCh2 Duty Cycle Control Bit 4 of PWMCh2 Duty Cycle Control Bit 3 of PWMCh2 Duty Cycle Control Bit 2 of PWMCh2 Duty Cycle Control Bit 1 of PWMCh2 Duty Cycle Control Bit 0 of PWMCh2 Duty Cycle Control Default Default Rst. Value 00h Read Value 00h Controls which signal is output to the FCS[1]n pin (PWM channel 2 output signal or the other output signal). Bit 9/FlashCtrl Register Bit 15/PWMCh2Ctrl Register FCS[1]n/PWM2 Pin 0 0 FCS[1] 0 1 FCS[1] 1 0 FCS[1] for NAND-type Flash Mem 1 1 PWM2 PWMCh2 clock divider (n = 0-1) PWMCh2 clock = Bits 7-0 Bit 8 PWMCh2 Rst. Value Clock 0xxxxxx0b Divider Read Value 0xxxxxx0b Bit 7 of PWMCh2 Duty Cycle Control Bit 15 Bit 8 Hardware Description AUXCLK (n + 1) Duty cycle control (n = 0 - 255) PWMCh2 signal frequency = PWMCh2clock 256 PWMCh2 signal ‘high’ period = PWMCh2 signal ‘low’ period = n +1 * PWMCh2 signal cycle time 256 256 − (n + 1) * PWMCh2 signal 256 cycle time 21-4 Conexant 100723A Hardware Description Name/Address PWM Channel 3 Control (PWMCh3Ctrl) 01FF80C7h Name/Address PWM Channel 3 Control (PWMCh3Ctrl) 01FF80C6h MFC 2000 Multifunctional Peripheral Controller 2000 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 PWMCh3 Output Select (not used) (not used) (not used) (not used) (not used) (not used) Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 of PWMCh3 Duty Cycle Control Bit 6 of PWMCh3 Duty Cycle Control Bit 5 of PWMCh3 Duty Cycle Control Bit 4 of PWMCh3 Duty Cycle Control Bit 3 of PWMCh3 Duty Cycle Control Bit 2 of PWMCh3 Duty Cycle Control Bit 1 of PWMCh3 Duty Cycle Control Bit 0 of PWMCh3 Duty Cycle Control Bit 15 Default PWMCh3 Rst. Value Clock 0xxxxxx0b Divider Read Value 0xxxxxx0b Default Rst. Value 00h Read Value 00h Controls which signal is output to the GPIO[5] pin (PWM channel 3 output signal or the other output signal). Bit 4/GPIOConfig1 Register Bit 15/PWMCh3Ctrl Register GPIO[5]/CS[3]n/PWM3 Pin 0 0 GPIO[5] 0 1 GPIO[5] 1 0 CS[3]n 1 1 PWM3 Bit 8 PWMCh3 clock divider (n = 0-1) PWMCh3 clock = Bits 7-0 AUXCLK (n + 1) Duty cycle control (n = 0 - 255) PWMCh3 signal frequency = PWMCh3clock 256 PWMCh3 signal ‘high’ period = PWMCh3 signal ‘low’ period = n +1 * PWMCh3 signal cycle time 256 256 − (n + 1) * PWMCh3 signal 256 cycle time 100723A Conexant 21-5 MFC2000 Multifunctional Peripheral Controller 2000 Name/Address PWM Channel 4 Control (PWMCh4Ctrl) 01FF80C9h Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 PWMCh4 Output Select (not used) (not used) (not used) (not used) (not used) (not used) Name/Address PWM Channel 4 Control (PWMCh4Ctrl) 01FF80C8h Hardware Description Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 of PWMCh4 Duty Cycle Control Bit 6 of PWMCh4 Duty Cycle Control Bit 5 of PWMCh4 Duty Cycle Control Bit 4 of PWMCh4 Duty Cycle Control Bit 3 of PWMCh4 Duty Cycle Control Bit 2 of PWMCh4 Duty Cycle Control Bit 1 of PWMCh4 Duty Cycle Control Bit 0 of PWMCh4 Duty Cycle Control Bit 15 Default PWMCh4 Rst. Value Clock 0xxxxxx0b Divider Read Value 0xxxxxx0b Default Rst. Value 00h Read Value 00h Controls which signal is output to the GPIO[10] pin (PWM channel 4 output signal or the other output signal). Bit 7/GPIOConfig1 Register Bit 15/PWMCh4Ctrl Register GPIO[10]/P80_PB3/PWM4 Pin 0 0 GPIO[10] 0 1 GPIO[10] 1 0 P80_PB3 1 1 PWM4 Bit 8 PWMCh4 clock divider (n = 0-1) PWMCh4 clock = Bits 7-0 AUXCLK (n + 1) Duty cycle control (n = 0 - 255) PWMCh4 signal frequency = PWMCh 4clock 256 PWMCh4 signal ‘high’ period = PWMCh4 signal ‘low’ period = n +1 * PWMCh4 signal cycle time 256 256 − (n + 1) * PWMCh4 signal 256 cycle time 21-6 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 22. Calling Party Control (CPC) In some countries, after the called party is on hook, a pulse is sent to the caller party by stopping the line current of the caller party for a short time to indicate that the called party is on hook, as seen in Figure 22-1. The duration of this pulse varies widely for different countries. The purpose of having Calling Party Control (CPC) circuit is to detect the on-hook signal by sampling CPC signal. . O ff-H ook C aller P arty O n -H o ok O ff-H ook C alled P arty O n -H o ok L in e C u rr en t (o f C aller P arty ) O n -H o ok S ign al C P C S ign al . Figure 22-1: CPC Signal Firmware Note: In order to setup CPC circuit, the following initialization procedure must be done in the given order after both parties are off hook: 1. Write the desired threshold in CPCThreshold register 2. Select the sampling period in CPCStatCtrl register (This will clear the CPCflag and reset CPC counter to zero) Once CPC has been set up, the firmware can periodically check CPCflag by reading CPCStatCtrl register. 100723A Conexant 22-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Tthe following flowchart illustrates the CPC operation: C hec k C P C signal on ev e ry sa m pling c lock C P C signal lev el ? Increm en t c ounter F la g ? F lag ? Is there write sig nal to CP CStatCtrl ? F lag = L ow C om pare count v alu e with thresh old R eset co unter C ou nt = threshold ? F lag = H ig h Figure 22-2. CPC Operation Flowchart 22-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Figure 22-3 illustrates an example of the CPC operation with CPCThreshold containing a value of 4. T h is n oise w ill b e filtered ou t. F a ls e O n -H o o k S ig n a l C PC sign al Sam p lin g C PC C PC cou n t 0 1 2 0 1 2 C ou n tE Q T h r 2 3 4 3 0 4 C PC Flag C PC S tatC trlR D n 1 C PC S tatC trlW R n Figure 22-3: CPC Operation (with CPCThreshold = 4) Note: 1. Writing to CPCStatCtrl register will clear CPC Flag. 2. Whenever both CPC signal and CPC Flag are low, the counter is reset in order to restart the counting sequence. The previous counter value is regarded as the result from a noise signal. This condition is only checked at every sampling time. In other words, if it happens between the sampling time, then the noise will be filtered out. 3. As soon as the counter value is equal to the threshold value, CPC Flag is raised. 4. Once CPC Flag has been raised, the counter will be clear on the next sampling clock. Figure 22-4 illustrates the CPC block diagram. 100723A Conexant 22-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description C P C S ta tC trlR d n A [3 :0 ] C S ,R /W C P C S ta tC trlW rn A d dre ss D ec ode r C PC StatC trl R eg ister 1 25 µsC lk C lock D ivide r C PC Th reshold R eg ister 8 -bit C ou n te r B A C om p ara tor A= B C on trol L og ic C P C S ig n al Figure 22-4: CPC Block Diagram 22-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 22.1 Registers Description Name/Address Bit 15 Bit 14 Bit 13 Bit 12 CPC Threshold Bit 11 Bit 10 Bit 9 Bit 8 (Not Used) Default Rst Value (CPCThreshold) xxh 01FF80A9 Read Value 00h Name/Address Bit 7 Bit 6 Bit 5 Bit 4 CPC Threshold Bit 3 Bit 2 Bit 1 Bit 0 CPC Threshold Default Rst Value (CPCThreshold) FFh 01FF80A8 Read Value FFh Bit 15–8 Bit 7–0 Not Used CPC Threshold Name/Address CPC Status & Bit 15 (Not Used) Bit 14 (Not Used) Bit 13 (Not Used) Bit 12 (Not Used) Bit 11 (Not Used) Bit 10 (Not Used) Bit 9 (Not Used) Bit 8 (Not Used) Default Rst Value Control xxh (CPCStatCtrl) Read Value 01FF80AB 00h Name/Address CPC Status & Control Bit 7 Bit 6 Bit 5 CPC Flag CPC Signal (Not Used) (R) (R) Bit 4 (Not Used) Bit 3 (Not Used) Bit 2 (Not Used) Bit 1 Bit 0 Default Sampling Clock Select: Rst Value 0: 125 µs xxxxxx11b (CPCStatCtrl) 1: 500 µs Read Value 01FF80AA 2: 2 ms 00000011b 3: 8 ms Bit 15–8 Not Used Bit 7 CPC Flag Bit 6 CPC Signal Bit 5–2 Bit 1–0 100723A Not Used Sampling Clock Selection Conexant 22-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank 22-6 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 23. SSD_P80 23.1 Function Description A 56K/33.6K data/fax modem core is integrated into the MFC2000 chip. It is called the P80 core. Furthermore, Conexant’s SmartDAA technology is put into the MFC2000 chip. The P80 core can be connected to the phone line through either the modem IA/traditional DAA or the SmartDAA System Side Device (SSD) logic/the SmartDAA Line Side Device (LSD). The SSD logic is integrated into the MFC2000 chip. The SSD_P80 block includes the SSD logic, P80 core, and interface logic to the internal ARM bus system. 23.1.1 System Configurations The SSD_P80 can be configured in the following ways. • • • Configuration one: data acquisition is done only via SSD. Configuration two: data acquisition is done via SSD and voice acquisition is done via External IA. Configuration three: data acquisition is done only via External IA. MFC2000 SIU Interface EXTERNAL P80 CORE m_txssd m_strobe m_rxssd m_clk IA interface LSD SSD LSD_REG. CONFIGURATION ONE Figure 23-1. System Configuration One 100723A Conexant 23-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description MFC2000 EXTERNAL External IA P80 CORE iaclk SIU Interface IA interface ia1clk m_control m_strobe m_tx m_rx CONFIGURATION TWO Figure 23-2. System Configuration Two MFC2000 EXTERNAL v_sclk P80 CORE m_txssd m_strobe External IA v_strobe v_txsin v_rx m_rxssd m_clk Primary IA interface v_ctrl Secondary IA interface SIU Interface LSD SSD LSD_REG. CONFIGURATION THREE Figure 23-3. System Configuration Three 23-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 23.2 Register Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: P80CONTROL (not used) (not used) (not used) (not used) (not used) (not used) (not used) (not used) Rst Value xxh Read Value 00h 0x01FF88E1 Address: Bit 7 P80CONTROL (not used) Bit 6 SSD Ringwaken Bit 5 SSD Raw_ringn Bit 4 Ext Raw_ringn Bit 3 Ring_Sel[1:0] Bit 2 Bit 1 Bit 0 Default: EXTIA_ MODE IA_SEL Rst Value xxxx0000b Read Value 00h 0x01FF88E0 Bit 15:7 Not used Bit 6 This is read only bit which indicates status of ring envelope from SSD. Bit 5 This is a read only bit which indicates raw ring signals from SSD. Bit 4 This is a read only bit which indicates raw ring signals from external DAA. Bit 3:2 This control bits are used to select types of ring signals to be connected to P80_CORE to perform ring detection. “00” : No selection, logic ‘high’ will be driven to PB[3]_C of P80_CORE. “01” : SSD Raw_ringn is selected. “10” : SSD Ringwaken is selected. “11” : External DAA Raw_ringn is selected. Bit 1 This bit controls muxing of output I/O pins. When asserted to high, selected P80 core pins will be directed to external pin. Bit 0 This bit controls muxing of primary and secondary I/O pins in P80 core. When asserted to high, secondary I/O will be selected. 100723A Conexant 23-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 23.2.1 SSD Registers Note: For detailed desciption on register contents, refer to SSD Spec. Table 23-1. SSD Registers Register Name MFC2K Address Bit Positions R/W # Bits SSD Register 00 00C30050 7:0 R/W 8 SSD Register 01 00C30052 7:0 R/W 8 SSD Register 02 00C30054 7:0 R/W 8 SSD Register 03 00C30056 7:0 R/W 8 SSD Register 04 00C30058 7:0 R/W 8 SSD Register 05 00C3005A 7:0 R/W 8 SSD Register 06 00C3005C 7:0 R/W 8 SSD Register 07 00C3005E 7:0 R/W 8 SSD Register 08 00C30060 7:0 R/W 8 SSD Register 09 00C30062 7:0 R/W 8 SSD Register 0A 00C30064 7:0 R/W 8 SSD Register 0B 00C30066 7:0 R/W 8 SSD Register 0C 00C30068 7:0 R/W 8 SSD Register 0D 00C3006A 7:0 R/W 8 SSD Register 0E 00C3006C 7:0 R/W 8 SSD Register 0F 00C3006E 7:0 R/W 8 SSD Register 10 00C30070 7:0 R/W 8 SSD Register 11 00C30072 7:0 R/W 8 SSD Register 12 00C30074 7:0 R/W 8 SSD Register 13 00C30076 7:0 R/W 8 SSD Register 14 00C30078 7:0 R/W 8 SSD Register 15 00C3007A 7:0 R/W 8 SSD Register 16 00C3007C 7:0 R/W 8 SSD Register 17 00C3007E 7:0 R/W 8 SSD Register 18 00C30080 7:0 R/W 8 SSD Register 19 00C30082 7:0 R/W 8 SSD Register 1A 00C30084 7:0 R/W 8 SSD Register 1B 00C30086 7:0 R/W 8 SSD Register 1C 00C3008E 7:0 R/W 8 23-4 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 23.2.2 P80 CORE Registers Note: For detailed description on register contents, refer to FM336 hardware spec. Table 23-2. P80 CORE Registers Register Name MFC2K Address Bit Positions R/W # Bits P80 Register 00 00C30000 7:0 R/W 8 P80 Register 01 00C30002 7:0 R/W 8 P80 Register 02 00C30004 7:0 R/W 8 P80 Register 03 00C30006 7:0 R/W 8 P80 Register 04 00C30008 7:0 R/W 8 P80 Register 05 00C3000A 7:0 R/W 8 P80 Register 06 00C3000C 7:0 R/W 8 P80 Register 07 00C3000E 7:0 R/W 8 P80 Register 08 00C30010 7:0 R/W 8 P80 Register 09 00C30012 7:0 R/W 8 P80 Register 0A 00C30014 7:0 R/W 8 P80 Register 0B 00C30016 7:0 R/W 8 P80 Register 0C 00C30018 7:0 R/W 8 P80 Register 0D 00C3001A 7:0 R/W 8 P80 Register 0E 00C3001C 7:0 R/W 8 P80 Register 0F 00C3001E 7:0 R/W 8 P80 Register 10 00C30020 7:0 R/W 8 P80 Register 11 00C30022 7:0 R/W 8 P80 Register 12 00C30024 7:0 R/W 8 P80 Register 13 00C30026 7:0 R/W 8 P80 Register 14 00C30028 7:0 R/W 8 P80 Register 15 00C3002A 7:0 R/W 8 P80 Register 16 00C3002C 7:0 R/W 8 P80 Register 17 00C3002E 7:0 R/W 8 P80 Register 18 00C30030 7:0 R/W 8 P80 Register 19 00C30032 7:0 R/W 8 P80 Register 1A 00C30034 7:0 R/W 8 P80 Register 1B 00C30036 7:0 R/W 8 P80 Register 1C 00C30038 7:0 R/W 8 P80 Register 1D 00C3003A 7:0 R/W 8 P80 Register 1E 00C3003C 7:0 R/W 8 P80 Register 1F 00C3003E 7:0 R/W 8 100723A Conexant 23-5 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 23.3 Firmware Operation Note: ALL SSD and P80 CORE registers are 8-Bit registers. 23-6 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 24. Countach Imaging DSP Bus Subsystem The Countach Imaging DSP Bus Subsystem contains the Countach Imaging DSP subsystem for video/scan image signal processing and all peripherals/memory needed for the whole operations. The main memory for image data storage is the external DRAM/SDRAM. These peripherals are Countach Subsystem Interface, Scan IA, Video/Scan Controller, SDRAM Controller, Video/Scan Interface, ARM Bus Interface, CDMA Controller, and Countach Bus Unit. The Countach Imaging DSP subsystem should operate at 100 MHz or 85.7MHz. This is the separate bus system from the ARM bus system and runs in parallel with the ARM bus system to get maximum performance out of the MFC2000. ARM Bus Interface logic is the bridge between the ARM bus system and the Countach Imaging DSP Bus Subsystem. Both CPU access and DMA access mastered by the ARM side are supported to coordinate the entire system operation. Several blocks are used to complete the connection between these peripherals: 1. 2. 3. 4. ARM Bus Interfaceconnects the ARM subsystem to the internal busses. Countach Subsystem Interfaceconnects the Countach core to the internal busses. Sync. DRAM Controllerconnects the external DRAM/SDRAM to the internal busses. Video/Scan Interfaceconnects the Video/Scan Controller to the internal busses. Several blocks are used for internal functions: 1. Countach Bus Unitconnects all internal blocks in the Countach Bus Subsystem together. 2. Countach DMA Controllerpaces all DMA transaction between the Video/Scan Interface for video capture and scanner, ARM Bus Interface for ARM bus system, and the Countach Subsystem Interface for the Countach subsystem to and from the SDRAM. Several I/O accesses on the Countach Bus Subsystem are planned: 1. ARM accesses the scratch pad of the Countach subsystem through ARM Bus Interface, Countach Bus Unit, and Countach Subsystem IF. Note: ARM will be able to access all registers in the sub-block of the Countach Bus Subsystem through the IPB bus of the ARM bus system. The ARM must not access the scratchpad while DMA to or from the Countach Imaging DSP Subsystem is in progress. Failure to do so can result in corruption and/or loss of DMA data. The ARM may access the scratchpad during all other DMA transfers, including video/scanner data to SDRAM and SDRAM to and from ARM DRAM. 2. Put the DMA setting data to the Countach DMA Controller from the scratch pad of the Countach subsystem through Countach Bus Unit, and Countach Subsystem IF after the Countach Bus Unit is informed by the GPO signal from Countach Subsystem. Several DMA accesses on the Countach Bus Subsystem are planned: 1. The DMA operation to send video and scan image data to the external SDRAM/DRAM from the Video/Scan Controller through the Video/Scan Interface. 2. The DMA operation to send/receive data from/to memory on the ARM bus system through ARM Bus Interface. 3. The DMA operation to send/receive data from/to the scratch pad of the Countach subsystem through Countach Subsystem Interface. 100723A Conexant 24-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Countach Subsystem Scanner Video Capture Chip Scan Integrated Analog Video/ Scan Controller Countach Subsystem IF Video/ Scan IF Countach Bus Unit Video DMA Controller ARM Bus IF ARM Bus System Sync. DRAM Controller (S)DRAM device Figure 24-1. The ARM Bus System Block Diagram 24-2 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 24.1 Countach Imaging DSP Subsystem 24.1.1 Description The Countach Imaging DSP Subsystem is mainly responsible for monochrome and color image processing and JPEG compression and decompression. The Countach Imaging DSP subsystem contains the Countach core, data RAM and ROM, program RAM and program ROM, scratch pad, and DMA channels. 24.1.2 Countach Imaging DSP Subsystem Memory Program Memory: • • 2K × 40 RAM ROM for program initialization Data RAM: • • • • 1K × 16 register file RAM 4K × 16 DMA-accessible RAM 4K × 16 RAM 8K x 16 ROM 24.1.3 Countach Imaging DSP Subsystem DMA Data DMA: • • • • 4 channels DMA accesses are made via the scratch pad interface Countach Imaging DSP controls which bank DMA transfers occur in – DMA channel does not automatically switch after completion of a block transfer Consecutive DMA cycles must be able to occur at a minimum rate of 6 Countach clocks per transfer Program DMA: • • • • Minimum of 1 channel DMA accesses are made via the scratch pad interface Consecutive DMA cycles must be able to occur at a minimum rate of 6 Countach clocks per transfer An entire instruction is formed by transferring it in three 16-bit segments to scratch pad addresses 0x1b0, 0x1b1, and 0x1b2 24.1.4 Running Frequency The Countach Imaging DSP Subsystem operates at either 87.5MHz or 100 MHz. It is configurable through the CLK_CONFIG[2] signal which is muxed on the ROMCSn pin. 100723A Conexant 24-3 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.2 COUNTACH IMAGING DSP BUS UNIT 24.2.1 Function Description The Countach Bus Unit is the conduit for all data and address between the various block of the Countach Bus System. It also decides which blocks become master of these busses. There are four busses in the Countach Bus System: • • • • CPBaddress and data to and from the Countach Subsystem Interface DPBaddress and data to and from the Synchronous DRAM Interface IPBaddress and data to and from the ARM Bus Interface VPBdata from the Video/Scan Interface Because of these separate busses (as opposed to a single tri-state muxed bus), it is possible to have multiple bus masters. The possible connections between these busses are: • • • IPB ↔ CPB, VPB ↔ DPB: ARM Bus Interface makes discrete I/O accesses to Countach Subsystem scratch pad while Video/Scan Interface makes DMA accesses to Synchronous DRAM Interface. CPB ↔ DPB: Countach Subsystem Interface makes DMA accesses to Synchronous DRAM Interface. IPB ↔ DPB, {Countach DMA Controller} ↔ cpb: ARM Bus Interface makes either discrete I/O accesses or DMA accesses to Synchronous DRAM Interface while Countach DMA Controller fetches DMA parameters from Countach Subsystem scratch pad. 24.2.2 Register Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Deferred Read High Address (DefRdHiAddr) $01FF82A9 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Deferred Read High Address (DefRdHiAddr) $01FF82A8 (Not Used) Deferred Deferred Deferred Deferred Deferred Deferred Deferred Rst Value Read Read Read Read Read Read Read x0000000b Address [22] Address [21] Address [20] Address [19] Address [18] Address [17] Address [16] Read Value 00h Bit 15-7 Bit 6-0 24-4 Not used Deferred Read Address [22:16] These seven bits, in conjunction with the sixteen bits of the Deferred Read Low Address register, make up the deferred read address. It is a halfword address, not a byte address. Conexant 100723A Hardware Description Address: Bit 15 Deferred Read Low Address (DefRdLoAddr) $01FF82AB MFC 2000 Multifunctional Peripheral Controller 2000 Bit 8 Default: Deferred Deferred Deferred Deferred Deferred Deferred Deferred Read Read Read Read Read Read Read Address [15] Address [14] Address [13] Address [12] Address [11] Address [10] Address [9] Deferred Read Address [8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Deferred Read Low Address (DefRdLoAddr) $01FF82AA Deferred Read Address [7] Deferred Read Address [6] Deferred Read Address [5] Deferred Read Address [4] Deferred Read Address [3] Deferred Read Address [2] Deferred Read Address [1] Deferred Read Address [0] Rst Value 00h Read Value 00h Bit 15-0 Bit 14 Bit 13 Deferred Read Address [15:0] Bit 12 Bit 11 Bit 10 Bit 9 These sixteen bits, in conjunction with the seven bits of the Deferred Read High Address register, make up the deferred read address. It is a halfword address, not a byte address. Notes: 1. The deferred read address is a halfword address in the Countach Bus Subsystem address space. Countach DRAM address space is $000000–$3FFFFF and Countach Subsystem scratch pad address space is $400000–$4001FF. 2. Writing this register begins the deferred access operation. This register must be the last one written when initiating a deferred read access. 3. During a deferred read access, all deferred registers are locked out from ARM writes. 4. When the deferred read access completes, an interrupt is generated via the Countach DMA Done bit in the ARM Bus Interface Interrupt Status register. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Deferred Write High Address (DefWrHiAddr) $01FF82AD (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Deferred Write High Address (DefWrHiAddr) $01FF82AC (Not Used) Deferred Deferred Deferred Deferred Deferred Deferred Deferred Rst Value Write Write Write Write Write Write Write x0000000b Address [22] Address [21] Address [20] Address [19] Address [18] Address [17] Address [16] Read Value 00h Bit 15-7 Bit 6-0 100723A Not used Deferred Write Address [22:16] These seven bits, in conjunction with the sixteen bits of the Deferred Write Low Address register, make up the deferred write address. It is a halfword address, not a byte address. Conexant 24-5 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 8 Default: Deferred Write Low Address (DefWrLoAddr) $01FF82AF Deferred Deferred Deferred Deferred Deferred Deferred Deferred Write Write Write Write Write Write Write Address [15] Address [14] Address [13] Address [12] Address [11] Address [10] Address [9] Deferred Write Address [8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Deferred Write Low Address (DefWrLoAddr) $01FF82AE Deferred Write Address [7] Deferred Write Address [6] Deferred Write Address [5] Deferred Write Address [4] Deferred Write Address [3] Deferred Write Address [2] Deferred Write Address [1] Deferred Write Address [0] Rst Value 00h Read Value 00h Bit 15-0 Bit 14 Hardware Description Bit 13 Deferred Write Address [15:0] Bit 12 Bit 11 Bit 10 Bit 9 These sixteen bits, in conjunction with the seven bits of the Deferred Write High Address register, make up the deferred write address. It is a halfword address, not a byte address. Notes: 3. The deferred write address is a halfword address in the Countach Bus Subsystem address space. Countach DRAM address space is $000000–$3FFFFF and Countach Subsystem scratch pad address space is $400000–$4001FF. 4. Writing this register begins the deferred access operation. This register must be the last one written when initiating a deferred write access. 5. During a deferred write access, all deferred registers are locked out from ARM writes. 6. When the deferred write access completes, an interrupt is generated via the Countach DMA Done bit in the ARM Bus Interface Interrupt Status register. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Deferred Read Data (R) (DefRdData) $01FF82B1 Deferred Read Data [15] (R) Deferred Read Data [14] (R) Deferred Read Data [13] (R) Deferred Read Data [12] (R) Deferred Read Data [11] (R) Deferred Read Data [10] (R) Deferred Read Data [9] (R) Deferred Read Data [8] (R) Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Deferred Read Data (R) (DefRdData) $01FF82B0 Deferred Read Data [7] (R) Deferred Read Data [6] (R) Deferred Read Data [5] (R) Deferred Read Data [4] (R) Deferred Read Data [3] (R) Deferred Read Data [2] (R) Deferred Read Data [1] (R) Deferred Read Data [0] (R) Rst Value 00h Read Value 00h Bit 15-0 24-6 Deferred Read Data This read-only register contains the deferred read data at the completion of a deferred read access operation. Its contents are valid when the Countach DMA Done bit in the ARM Bus Interface Interrupt Status register is set. Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Deferred Write Data (DefWrData) $01FF82B3 Deferred Write Data [15] Deferred Write Data [14] Deferred Write Data [13] Deferred Write Data [12] Deferred Write Data [11] Deferred Write Data [10] Deferred Write Data [9] Deferred Write Data [8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Deferred Write Data (DefWrData) $01FF82B2 Deferred Write Data [7] Deferred Write Data [6] Deferred Write Data [5] Deferred Write Data [4] Deferred Write Data [3] Deferred Write Data [2] Deferred Write Data [1] Deferred Write Data [0] Rst Value 00h Read Value 00h Bit 15-0 Deferred Write Data This register contains the data to be written during a deferred write access operation. Notes: This register must be written before beginning the deferred write access via a write to the Deferred Write Low Address register. During a deferred write access, all deferred registers are locked out from ARM writes. 100723A Conexant 24-7 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.3 ARM BUS INTERFACE 24.3.1 Function Description The Arm Bus interface block attaches the Countach Bus Subsystem to the ARM Bus System. The ARM can directly access the various registers of the Countach Bus Subsystem. It can access the Countach Bus Subsystem’s SDRAM and the Countach Imaging DSP subsystem’s scratch pad memory and the SDRAM with discrete I/O accesses with some wait state penalty. It can also access the SDRAM via DMA accesses. To accommodate the ARM DMA interchange, two channels are provided: one for transfers into the SDRAM and one for transfers out of the SDRAM. In addition, two handshaking signals are provided for interrupting of each processor and allow the ARM to interrupt the Countach core. It is implemented through a register in the Countach Subsystem Interface. The arm_attn signal comes directly from the Countach core and is an input to the ARM interrupt controller. 24.3.2 Register Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus Interface Interrupt Status (ABIIrqStat) $01FF8283 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus Interface Interrupt Status (Not Used) (Not Used) Countach Subsystem Interrupt VSI Overrrun Deferred Access Done C2A DMA Done Countach Video/ Rst Value Scan DMA Done xx000000b (ABIIrqStat) DMA Done Read Value $01FF8282 00h Bit 15-6 Not used Bit 5 Countach Subsystem Interrupt Countach Subsystem has interrupted the ARM either in IRQP or IRQP2, depending on the setting of the Countach Interrupt Source bit of the ABICountachCtrl register. Bit 4 VSI Overrun The second VSI ping-pong buffer has been filled before the first has been emptied, resulting in loss of data. Bit 3 Deferred Access Done A deferred access to/from scratch pad or SDRAM has completed. If a deferred read was requested, the data in the Deferred Read Access Data register is now valid. Bit 2 C2A DMA Done C2A (SDRAM to Arm Bus System) block size has been reached. Bit 1 Countach DMA Done DMA operation specified by Countach scratch pad parameters has completed. Bit 0 Video/Scan DMA Done Two-dimensional DMA from Video/Scan Interface to SDRAM has completed (two fields) or one scan line has completed. Note: Each of these bits are cleared by writing it to a one. This allows individual interrupts to be cleared without affecting the others. 24-8 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus Interface Interrupt Enable (ABIIrqEnable) $01FF8285 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus Interface Interrupt Enable (ABIIrqEnable) $01FF8284 (Not Used) (Not Used) Countach VSI Overrrun Interrupt Enable Deferred Access Interrupt Enable C2A DMA Interrupt Enable Countach Video/ Scan Rst Value DMA xx000000b Interrupt Read Value Enable 00h Interrupt Enable Bit 15-6 DMA Interrupt Enable Not used Bit 5 Countach Interrupt Enable Enables interrupt when the Countach has interrupted the ARM Bus via the IRQP or IRQP2 signals. Bit 4 VSI Overrun Interrupt Enable Enables interrupt when the second VSI ping-pong buffer has been filled before the first has been emptied, indicating in loss of data. Bit 3 Deferred Access Interrupt Enable Enables interrupt when a deferred access to/from scratch pad or SDRAM has completed. Bit 2 C2A DMA Interrupt Enable Enables interrupt when C2A (SDRAM to Arm Bus System) block size has been reached. Bit 1 Countach DMA Interrupt Enable Enables interrupt when DMA operation specified by Countach scratch pad parameters has completed. Bit 0 Address: Video/Scan DMA Interrupt Bit 15 Enables interrupt when two-dimensional DMA from Video/Scan Interface to SDRAM has completed (two fields) or one scan line has been completed. Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus Interface (Not Used) Countach Control (W) (ABICountachCtrl) $01FF8287 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: (Not Used) Countach Reset Countach Bus Subsystem (W) Start Countach DMA (W) Abort Countach DMA (W) Reset Countach Subsystem (W) Interrupt Countach Subsystem (W) Rst Value xxxx0000b Read Value 00h Bit 7 ARM Bus Interface (Not Used) Countach Control (W) (ABICountachCtrl) $01FF8286 Interrupt Source Bit 15-6 Not used Bit 5 Countach Interrupt Source Bit 4 Reset Countach Bus Subsystem This bit selects which interrupt output from the Countach DSP Subsystem is used to interrupt the ARM via the Countach Interrupt bit in the ARM Bus Interface Interrupt Status Register. A value of 0 selects the IRQP signal and a value of 1 selects the IRQP2 signal. Writing a one to this bit resets the entire Countach Bus Subsystem (CBSS.) 100723A Conexant 24-9 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Bit 3 Start Countach DMA Writing a one to this bit causes the Countach DMA controller to fetch parameters from scratch pad and begin a DMA transfer. Bit 2 Abort Countach DMA Writing a one to this bit causes any Countach DMA operation (CDMA channel 1) to be aborted. The Countach receives the Countach DMA Done interrupt after the DMA has aborted (EXTIRQ2). Bit 1 Reset Countach Subsystem Writing a one to this bit resets the Countach Subsystem and the Countach Subsystem Interface which contains the DMA FIFOs. Bit 0 Interrupt Countach Subsystem Writing a one to this bit generates an interrupt to the Countach Subsystem (EXTIRQ). 24.3.3 Internal Memory The ARM Bus Interface contains two 4 × 16 buffers for DMA transfers between memory attached to the ARM Bus Subsystem and the Countach SDRAM. These buffers can be accessed by the ARM as either bytes or halfwords. The two buffers are located at the following addresses: Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM to Countach DMA Buffer (A2CDmaBuf) $01FF830x A2C Buffer Data [15] A2C Buffer Data [14] A2C Buffer Data [13] A2C Buffer Data [12] A2C Buffer Data [11] A2C Buffer Data [10] A2C Buffer Data [9] A2C Buffer Data [8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM to Countach DMA Buffer (A2CDmaBuf) $01FF830x A2C Buffer Data [7] A2C Buffer Data [6] A2C Buffer Data [5] A2C Buffer Data [4] A2C Buffer Data [3] A2C Buffer Data [2] A2C Buffer Data [1] A2C Buffer Data [0] Rst Value 00h Read Value 00h $01FF8300-01 A2C DMA Buffer halfword 0 $01FF8302-03 A2C DMA Buffer halfword 1 $01FF8304-05 A2C DMA Buffer halfword 2 $01FF8306-07 A2C DMA Buffer halfword 3 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Countach to ARM DMA Buffer (C2ADmaBuf) $01FF830x C2A Buffer Data [15] C2A Buffer Data [14] C2A Buffer Data [13] C2A Buffer Data [12] C2A Buffer Data [11] C2A Buffer Data [10] C2A Buffer Data [9] C2A Buffer Data [8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Countach to ARM DMA Buffer (C2ADmaBuf) $01FF830x C2A Buffer Data [7] C2A Buffer Data [6] C2A Buffer Data [5] C2A Buffer Data [4] C2A Buffer Data [3] C2A Buffer Data [2] C2A Buffer Data [1] C2A Buffer Data [0] Rst Value 00h Read Value 00h 24-10 $01FF8308-09 C2A DMA Buffer halfword 0 $01FF830A-0B C2A DMA Buffer halfword 1 $01FF830C-0D C2A DMA Buffer halfword 2 $01FF830E-0F C2A DMA Buffer halfword 3 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 ARM access to the ABI buffers are provided for diagnostic purposes only and should not be used as part of normal operation. When the ARM makes an access to these buffers, the ARM is held off and clock domain synchronization occurs before the access is completed. As a result, a significant wait state penalty is incurred. This penalty will be even longer if a local DMA operation is in progress when the access is made as the ARM is held off for both the clock domain synchronization and the completion of the local DMA transfer. There is a risk of data corruption when the ARM makes write accesses to these buffers while a DMA transfer is in progress. This can occur because the buffers alternate betweeen a DMA transfer sequence in the ARM Bus Subsystem domain and a DMA transfer sequence in the Countach Bus Subsystem domain. If the write operation occurs between these DMA transfers, the DMA data in the buffer will be replaced with the ARM data. 24.4 Countach Imaging DSP Subsystem Interface ARM as either bytes or halfwords. The buffer is located at the following addresses: Address: Countach DMA Buffer Bit 15 CSI Buffer Data [15] Bit 14 CSI Buffer Data [14] Bit 13 CSI Buffer Data [13] Bit 12 CSI Buffer Data [12] Bit 11 CSI Buffer Data [11] Bit 10 CSI Buffer Data [10] Bit 9 CSI Buffer Data [9] Bit 8 CSI Buffer Data [8] (CSIDmaBuf) Countach DMA Buffer Rst. Value 00h Read Value 00h $01FF830x Address: Default: Bit 7 CSI Buffer Data [7] Bit 6 CSI Buffer Data [6] Bit 5 CSI Buffer Data [5] Bit 4 CSI Buffer Data [4] Bit 3 CSI Buffer Data [3] (CSIDmaBuf) Bit 2 CSI Buffer Data [2] Bit 1 CSI Buffer Data [1] Bit 0 CSI Buffer Data [0] Default: Rst Value 00h Read Value $01FF830x 00h Table 24-1. Needs a title $01FF8300-01 CSI DMA Buffer halfword 0 $01FF8302-03 CSI DMA Buffer halfword 1 $01FF8304-05 CSI DMA Buffer halfword 2 $01FF8306-07 CSI DMA Buffer halfword 3 $01FF8306-07 CSI DMA Buffer halfword 4 $01FF8306-07 CSI DMA Buffer halfword 5 $01FF8306-07 CSI DMA Buffer halfword 6 $01FF8306-07 CSI DMA Buffer halfword 7 ARM access to the CSI buffers are provided for diagnostic purposes only and should not be used as part of normal operation. When the ARM makes an access to these buffers, the ARM is held off and clock domain synchronization occurs before the access is completed. As a result, a significant wait state penalty is incurred. This penalty will be even longer if a local DMA operation is in progress when the access is made as the ARM is held off for both the clock domain synchronization and the completion of the local DMA transfer. There is a risk of data corruption when the ARM makes write accesses to this buffer while a DMA transfer is in progress. It is also possible that an access to this buffer can cause spurious writes to the scratchpad space while a DMA transfer is in progress. 100723A Conexant 24-11 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.5 COUNTACH DMA CONTROLLER 24.5.1 Function Description This block handles data transfers between several of the blocks of the Countach subsystem. It has three potential bus masters: the Video/Scan Interface, the Arm Bus interface, and the Countach subsystem. The VDMA employs a hierarchical round-robin arbitration scheme, with the Video/Scan Interface block at the highest priority and the Countach subsystem and Arm Bus interface in a round-robin scheme at the lowest priority. A round-robin arbitration scheme is one in which no requestor can be serviced until all other requestors at the same priority have been serviced if they are also requesting. A hierarchical arbitration scheme is one in which if a higher priority group is requesting service it is given priority over a lower priority group, after which the lower priority group is handled in its predetermined manner. Below is a table of the four DMA channels, their functionality, and priorities. Table 24-2. DMA Channels: Functionality and Priorities −− 2D ⇒ " " " " " Chan Usage ++ Th 0 VSI " 1 CSI I/O " 2 ABI in " " " 3 ABI out " " " ! " " Priority Description A-1 Scan/video data to (S)DRAM B-1 Countach scratch pad data to/from (S)DRAM B-2 ARM data to (S)DRAM B-3 ARM data from (S)DRAM Legend: Chan DMA channel VSI Video/Scanner Interface CSI Countach Subsystem Interface ABI ARM Bus Interface ++ Incrementing address −− Decrementing address 2D Address Jumping at boundaries. ⇒ Burst cycles Th Throttle: Limits number of DMA Cycles per CBSS clocks ! Block limit Notes: (1) To be supplied. Channels 0,2, and 3 operate in a similar fashion as existing channels in the ARM DMA logic. These channels are programmed by ARM-accessible registers and contain address registers and, for channel 3, a block limit and enable register. Channel 1 is very different in its operation. It contains no ARM-accessible registers. It is controlled by the Countach Subsystem. However, since the Countach Subsystem cannot be a bus master and program the registers directly, the Countach DMA logic must fetch the register values from the Countach Subsystem scratch pad. The Countach Subsystem has no DMA handshaking signals as it is able to accept data at a fixed rate. DMA data is transferred to and from the Countach Subsystem via the scratch pad at fixed addresses. Thus, it appears as memory (SDRAM) to I/O (scratch pad) transfers. Channel 1 is shared by five logical DMA channels within the Countach Subsystem, but they operate consecutively, not concurrently (i.e., DMA for one logical channel is completely before DMA for another logical channel is begun. Finally, logical DMA channel 4 (of physical DMA channel 1) is used for program DMA. Because 24-12 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Countach instructions are 40 bits wide, they must be transferred in sections. This is accomplished by DMA transfers to three consecutive scratch pad addresses. Each of the five logical channels is started by the Countach Subsystem by a high-going pulse on the Countach GPIO signal sp_gpio[0]. When the pulse is detected, the Countach DMA Controller fetches the parameters from the scratch pad, executes the desired DMA operation, and interrupts the Countach Subsystem at the completion. The scratch pad addresses for the various DMA parameters are shown below: Table 24-3. DMA Parameters Scratch Pad Addresses Parameter Scratch pad address Countach Subsystem DMA Channel Parameters 0xF9 ENB – Enables the DMA operation 0xFA BAH – most significant bits of base address and DMA control bits 0xFB BAL – least significant bits of base address 0xFC SZ – number of halfwords to transfer 0xFD NSR – number of sub ranges 0xFE AST – address step between sub ranges Function Scratch pad address 0x100 Countach Subsystem DMA channel 0 data port 0x101 Countach Subsystem DMA channel 1 data port 0x102 Countach Subsystem DMA channel 2 data port 0x103 Countach Subsystem DMA channel 3 data port 0x1B0 Countach Subsystem DMA channel 4 program data port (bits 15:0) 0x1B1 Countach Subsystem DMA channel 4 program data port (bits 31:16) 0x1B2 Countach Subsystem DMA channel 4 program data port (bits 39:32) To program and initiate a DMA transfer, firmware must first setup the parameter registers shown above. The process of reading the ENB register will cause hardware to generate either an ARM IRQ or start a DMA transfer. If the LSB of the ENB Register is 1 an ARM IRQ is generated. If the value of the LSB is 0, a DMA transfer is initiated. Block Size Sub Range Value Memory This diagram depicts how the SZ, NSR and AST register all work together. The block size is controlled by the SZ register and defines the number of DMA accesses before the Sub Range Jump occurs. At the end of the block, the last DMA address + one is added to the AST register, and is used as the starting address for the next block. This process continues for the number of cycles specified by the NSR register. Once the NSR value is met, an IRQ is generated. 100723A Conexant 24-13 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description The meaning of the ENB, BAH, BAL, SZ, NSR, and AST parameters are shown below: Bit 15 Bit 14 Bit 13 Not used Bit 7 Bit 6 Bit 12 Program Bit 5 Bit 11 Bit 10 /Data Logical Data Channel Number Bit 4 Bit 3 Not used Bit 2 Bit 9 Bit 8 Address direction Data direction Bit 1 Bit 0 Base address (21:16) Parameter Description: BAH parameter Bit 15-13 Not used Bit 12 When high, logical channel 4 is requested (program DMA.) When low, one of logical channels 0-3 is requested as specified by the Logical Channel Number field (data DMA.) Bit 11-10 Logical Data Channel Number When bit 12 is low, this field indicates which logical channel of 0-3 is to be used (data DMA.) When bit 12 is high, this field is not used. Bit 9 Address direction When low, the DMA address should be incremented after each halfword is transferred. When high, the DMA address should be decremented after each halfword is transferred. Bit 8 Data direction When low, DMA data is read from Countach scratch pad space. When high, DMA data is written to Countach scratch pad space. Bit 7-6 Not used Bit 5-0 Upper bits of DMA base address Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 2 Bit 1 Bit 0 Base address (15:8) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Base address (7:0) Parameter Description: BAL parameter Bit 15-8 Lower bits of DMA base address This parameter should only be fetched if the Enable channel bit of the BAH parameter is high. Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 2 Bit 1 Bit 0 Block size (15:8) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Block size (7:0) Parameter Description: SZ parameter (Refer to the above diagram) 24-14 Conexant 100723A Hardware Description Bit 15-0 MFC 2000 Multifunctional Peripheral Controller 2000 Block size in halfwords Block size = Block Size Register + 1. If this parameter is zero, the channel should be considered improperly configured and not enabled. Also, no further parameters need to be fetched in this circumstance. This register programs the data block size (number of DMA accesses) between address steps, AST. Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 2 Bit 1 Bit 0 Number of sub ranges (15:8) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Number of sub ranges (7:0) Parameter Description: NSR parameter (Refer to the above diagram) Bit 15-0 Number of sub ranges Bit 15 Bit 14 Total number of sub ranges = register value + 1; When this register is set to $0000, one block will be transferred before the IRQ occurs. This register controls the number of number of sub ranges (NSR), or address steps that occur in the complete DMA transfer. Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 1 Bit 0 Address step between sub ranges (15:8) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Address step between sub ranges (7:0) Parameter Description: AST parameter (Refer to the above diagram) Bit 15-0 Address step between sub ranges This parameter should only be fetched if the Enable channel bit of the BAH parameter is high. This register controls the address step size between data blocks. The register value is added to the last DMA address accessed in a block plus 1. 100723A Conexant 24-15 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.5.2 Register Description Address: Video/Scan High Address One Bit 15 (Not Used) Bit 14 (Not Used) Bit 13 (Not Used) Bit 12 Bit 11 (Not Used) (Not Used) Bit 10 (Not Used) Bit 9 (Not Used) Bit 8 (Not Used) (VsHiAddr1) Read Value 00h $01FF828D Address: Video/Scan High Address One Bit 7 (Not Used) (VsHiAddr1) Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 • Default: Video Video Video Video Video Video Video Rst Value /Scan /Scan /Scan /Scan /Scan /Scan /Scan x0000000b Addr[22] Addr[21] Addr[20] Addr[19] Addr[18] Addr[17] Addr[16] Read Value $01FF828C • Default: Rst. Value xxh 00h The value written to this register will not take effect until the lower address value is written. Therefore this value should be set first. Reading this register will return the Address Counter status, not the value written to this register. Bit 15-7 Bit 6-0 Not Used Video/Scan Interface High Address One [22:16] Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Video/Scan Low Address One (VsLoAddr1) $01FF828F Video /Scan Addr[15] Video /Scan Addr[14] Video /Scan Addr[13] Video /Scan Addr[12] Video /Scan Addr[11] Video /Scan Addr[10] Video /Scan Addr[9] Video /Scan Addr[8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Video/Scan Low Address One (VsLoAddr1) $01FF828E Video /Scan Addr[7] Video /Scan Addr[6] Video /Scan Addr[5] Video /Scan Addr[4] Video /Scan Addr[3] Video /Scan Addr[2] Video /Scan Addr[1] (Not Used) Rst Value 0000000xb Read Value 00h • • Writing to the Video/Scan Low Address Register will load the address counter. Therefore the upper address value should be set first. Reading this register will return the Address Counter status, and not the value written to this register. Bit 15-1 Bit 0 24-16 Video/Scan Interface Low Address One [15:1] Not Used Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Video/Scan High Address Two (VsHiAddr2) $01FF8291 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Video/Scan High Address Two (VsHiAddr2) $01FF8290 (Not Used) Video /Scan Addr[22] Video /Scan Addr[21] Video /Scan Addr[20] Video /Scan Addr[19] Video /Scan Addr[18] Video /Scan Addr[17] Video /Scan Addr[16] Rst Value x0000000b Read Value 00h Bit 15-7 Bit 6-0 Not Used Video/Scan Interface High Address Two [22:16] Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Video/Scan Low Address Two (VsLoAddr2) $01FF8293 Video /Scan Addr[15] Video /Scan Addr[14] Video /Scan Addr[13] Video /Scan Addr[12] Video /Scan Addr[11] Video /Scan Addr[10] Video /Scan Addr[9] Video /Scan Addr[8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Video/Scan Low Address Two (VsLoAddr2) $01FF8292 Video /Scan Addr[7] Video /Scan Addr[6] Video /Scan Addr[5] Video /Scan Addr[4] Video /Scan Addr[3] Video /Scan Addr[2] Video /Scan Addr[1] (Not Used) Rst Value 0000000xb Read Value 00h Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Video/Scan High Address Step (VSHiAddrStep) $01FF8295 (Not used) (Not used) (Not used) (Not used) (Not used) (Not used) (Not used) (Not used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Video/Scan High Address Step (VSHiAddrStep) $01FF8294 (Not used) Video /Scan Step [22] Video /Scan Step [21] Video /Scan Step [20] Video /Scan Step [19] Video /Scan Step [18] Video /Scan Step [17] Video /Scan Step [16] Rst Value x0000000b Read Value 00h Bit 15-5 Bit 6-0 100723A Not Used Video/Scan Interface High Address Step [22:16] Conexant 24-17 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Video/Scan Low Address Step (VSLoAddrStep) $01FF8297 Video /Scan Step[15] Video /Scan Step[14] Video /Scan Step [13] Video /Scan Step [12] Video /Scan Step [11] Video /Scan Step [10] Video /Scan Step [9] Video /Scan Step [8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Video/Scan Low Address Step (VSLoAddrStep) $01FF8296 Video /Scan Step [7] Video /Scan Step [6] Video /Scan Step [5] Video /Scan Step [4] Video /Scan Step [3] Video /Scan Step [2] Video /Scan Step [1] (Not used) Rst Value 0000000xb Read Value 00h Bit 15-1 Video/Scan Interface Low Address Step [15:1] Bit 0 Not Used Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Video/Scan Mode (VSMode) $01FF8299 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Video/Scan Mode (VSMode) $01FF8298 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Video /Scan Select Rst Value xxxxxxx0b Read Value 00h Bit 15-1 Bit 0 Address: Not Used Video/Scan select Bit 15 A zero selects video capture mode and a one selects scan mode. Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus A2C High (Not Used) Address (Aba2cHiAddr) $01FF829D (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus Input Addr[22] ARM Bus Input Addr[21] ARM Bus Input Addr[20] ARM Bus Input Addr[19] ARM Bus Input Addr[18] ARM Bus Input Addr[17] ARM Bus Input Addr[16] Rst Value x0000000b Read Value 00h Bit 7 ARM Bus A2C High (Not Used) Address (Aba2cHiAddr) $01FF829C Bit 15-7 Bit 6-0 24-18 Not Used ARM Bus Interface Input (A2C) Data High Address [22:16] Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus A2C Low Address (Aba2cLoAddr) $01FF829F ARM Bus Input Addr[15] ARM Bus Input Addr[14] ARM Bus Input Addr[13] ARM Bus Input Addr[12] ARM Bus Input Addr[11] ARM Bus Input Addr[10] ARM Bus Input Addr[9] ARM Bus Input Addr[8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus A2C Low Address (Aba2cLoAddr) $01FF829E ARM Bus Input Addr[7] ARM Bus Input Addr[6] ARM Bus Input Addr[5] ARM Bus Input Addr[4] ARM Bus Input Addr[3] ARM Bus Input Addr[2] ARM Bus Input Addr[1] (Not Used) Rst Value 0000000xb Read Value 00h Bit 15-1 ARM Bus Interface Input (A2C) Data Low Address [15:1]. Bit 0 Not Used Address: Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus C2A High (Not Used) Address (Abc2aHiAddr) $01FF82A1 Bit 15 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus Output Addr[22] ARM Bus Output Addr[21] ARM Bus Output Addr[20] ARM Bus Output Addr[19] ARM Bus Output Addr[18] ARM Bus Output Addr[17] ARM Bus Output Addr[16] Rst Value x0000000b Read Value 00h Bit 7 ARM Bus C2A High (Not Used) Address (Abc2aHiAddr) $01FF82A0 Bit 15-7 Bit 6-0 Not Used ARM Bus Interface Output (C2A) Data High Address [22:16] Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus C2A Low Address (Abc2aLoAddr) $01FF82A3 ARM Bus Output Addr[15] ARM Bus Output Addr[14] ARM Bus Output Addr[13] ARM Bus Output Addr[12] ARM Bus Output Addr[11] ARM Bus Output Addr[10] ARM Bus Output Addr[9] ARM Bus Output Addr[8] Rst. Value 00h Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus C2A Low Address (Abc2aLoAddr) $01FF82A2 ARM Bus Output Addr[7] ARM Bus Output Addr[6] ARM Bus Output Addr[5] ARM Bus Output Addr[4] ARM Bus Output Addr[3] ARM Bus Output Addr[2] ARM Bus Output Addr[1] (Not Used) Rst Value 0000000xb Read Value 00h Bit 15-1 Bit 0 100723A ARM Bus Interface Output (C2A) Data Low Address [15:1] Not Used Conexant 24-19 MFC2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Hardware Description Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus C2A Block ARM Bus Size Output (Abc2aBlkSiz) Enable $01FF829B ARM Bus ARM Bus ARM Bus ARM Bus ARM Bus ARM Bus ARM Bus Rst. Value Output Block Output Block Output Block Output Block Output Block Output Block Output Block 00h Size [14] Size [13] Size [12] Size [11] Size [10] Size [9] Size [8] Read Value 00h Address: Bit 6 Bit 7 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus C2A Block ARM Bus ARM Bus ARM Bus ARM Bus ARM Bus ARM Bus ARM Bus ARM Bus Rst. Value Size (Abc2aBlkSiz) Output Block Output Block Output Block Output Block Output Block Output Block Output Block Output Block 00h Size [7] Size [6] Size [5] Size [4] Size [3] Size [2] Size [1] Size [0] $01FF829A Read Value 00h Bit 15 ARM Bus Interface Output (C2A) Data DMA Enable (1 = enabled) Bit 14-0 ARM Bus Interface Output Data Block Size Note: Writes to bits 14-0 are ignored when the channel is enabled. To write a new block size, the channel must first be disabled by writing a “0” to bit 15 of this register. Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus A2C Throttle (Aba2cThrottle) $01FF82A5 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) ARM Bus Input Throttle[10] ARM Bus Input Throttle[9] ARM Bus Input Throttle[8] Rst. Value xxxxx000b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus A2C Throttle (Aba2cThrottle) $01FF82A4 ARM Bus Input Throttle[7] ARM Bus Input Throttle[6] ARM Bus Input Throttle[5] ARM Bus Input Throttle[4] ARM Bus Input Throttle[3] ARM Bus Input Throttle[2] ARM Bus Input Throttle[1] ARM Bus Input Throttle[0] Rst Value 00h Read Value 00h Bit 15-11 Bit 10-0 Not used ARM Bus Interface Input (A2C) DMA Throttle value A value of zero indicates no throttle. A value of 3FFh indicates 2047 Countach Bus Subsystem clocks (25 MHz) between successive DMA acknowledges. 24-20 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: ARM Bus C2A Throttle (Abc2aThrottle) $01FF82A7 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) ARM Bus Output Throttle[10] ARM Bus Output Throttle[9] ARM Bus Output Throttle[8] Rst. Value xxxxx000b Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: ARM Bus C2A Throttle (Abc2aThrottle) $01FF82A6 ARM Bus Output Throttle[7] ARM Bus Output Throttle[6] ARM Bus Output Throttle[5] ARM Bus Output Throttle[4] ARM Bus Output Throttle[3] ARM Bus Output Throttle[2] ARM Bus Output Throttle[1] ARM Bus Output Throttle[0] Rst Value 00h Read Value 00h Bit 15-11 Bit 10-0 Not used ARM Bus Interface Output (C2A) DMA Throttle value A value of zero indicates no throttle. A value of 3FFh indicates 2047 Countach Bus Subsystem clocks (25 MHz) between successive DMA acknowledges. 24.5.3 Firmware Operation CDMA Channel 0 Setup and Operation 1. Program the DMA Controller • • • • Select Mode For Video Mode set up Address Register 2 Write Jump Value Write Address Register 1. This will also initialize the channel by setting up the Address Holder and Address Counter. 2. Operation • • • 100723A At the end of each line of data the vsi_eol will pulse, causing the holder value to be added to the jump value and placed back into the Address Holder. st For Video Mode, multiple vsi_eols will occur, then a vsi_eof. Upon the 1 vsi_eof, the Address Register2 will be loaded into the holder and counter. nd st Additional vsi_eols will occur and then a 2 vsi_eof. Upon the 2 vsi_eof the IRQ will be asserted. Conexant 24-21 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.6 VIDEO/SCANNER INTERFACE 24.6.1 Function Description The Video/Scan Interface connects the Video/Scan Controller to the SDRAM via DMA cycles. This interface has a unidirectional data flow: Video/Scan Controller to SDRAM. It consists of two 64 halfword buffers that ping-pong, address counters for Video/Scan Controller input, and CDRAM output and byte to halfword assembly. The Video/Scan Controller transmits a single line when attached to the scanner input or a single frame when attached to the video input. In either case, the Video/Scan Controller data flow is as follows: 1. The Video/Scan Controller initiates a transfer by a single high-going pulse on the start signal to VSI . 2. As each analog sample becomes available, it is placed on the VSC output bus and the data ready signal is pulsed high to VSI. In the case of video capture, it is expected that the data ready signal will remain high for long periods of time as video data is available at each rising edge of the data clock. In the case of scanner capture, it is expected that the data ready signal will be inactive for several data clocks between successive pixels. 3. As the Video/Scan Interface receives data from the Video/Scan Controller, it is assembled into halfwords and then stored into one of the two ping-pong buffers. When the buffer is filled, data storing is switched to the remaining buffer and a signal is passed to the opposite side of the interface indicating a buffer is available for transfer. 4. The Video/Scan Controller terminates the transfer by a single high-going pulse on the stop signal. 5. On the Countach Bus Subsystem side of the Video/Scan Interface, the data flow is as follows: 6. A pulse is received from the Video/Scan Controller side of the Video/Scan Interface indicating a buffer is available for transfer. 7. VSI asserts the DMA request signal to CBU. The sequencial DMA signal is also asserted if the buffer contains more than one halfword of data. 8. Once the DMA acknowledge signal is detected, transfer begins, one data being transferred for each SDRAM ready pulse. 24.6.2 Register Description Address: Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Default: Video/Scanner Interface Mode (VSIMode) $01FF8289 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Rst. Value xxh Read Value 00h Address: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default: Video/Scanner Interface Mode (VSIMode) $01FF8288 (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) (Not Used) Video/Scanner Video/Scanner Rst Value DMA Hog DMA Hog xxxxxx00b Mode[1] Mode[0] Read Value 00h Bit 15-2 Not used Bit 1-0 The Video/Scanner DMA Hog Mode field is used to throttle and/or disable other DMA masters during video capture. It has the following settings: 24-22 Hog Mode Countach Subsystem Interface Arm Bus Interface 0 Burst and single DMA allowed Burst and single DMA allowed 1 No burst – single DMA only No burst – single DMA only 2 No DMA allowed No burst – single DMA only 3 No DMA allowed No DMA allowed Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 24.6.3 Internal Memory The Video/Scanner Interface contains two 64x16 buffers for DMA transfers from the Video/Scanner Controller and the Countach SDRAM. The buffers can be accessed by the ARM as halfwords only. The two buffers are located at the following address: Ping pong buffer 1: $01FFA400$01FFA47F Ping pong buffer 2: $01FFA480$01FFA4FF ARM access to the VSI buffers is provided for diagnostic purposes only and should not be used as part of normal operation. When the ARM makes an access to the buffers, the ARM is held off and clock domain synchronization occurs before the access is completed. As a result, a significant wait state penalty is incurred. 24.7 (S)DRAM Controller ((S)DRAMC) 24.7.1 Function Description The (S)DRAM Controller is used to communicate between the Countach Bus Unit (CBU) and external FPDRAM or SDRAM memory. This memory will primarily be used for reading and writing large amounts of sequential data necessary for carrying out the programs running on the Countach Imaging DSP core. Whether DRAM or SDRAM is used is an option, but only one memory unit is accessible to the memory controller. The (S)DRAMC state machine uses a 100Mhz or 87.5Mhz clock to control the SDRAM and DRAM. The CBU will communicate with (S)DRAMC at 25 Mhz or 21.875Mhz, so all data received from either RAM type must be synchronized to this speed before sent to the CBU. A third clock, an inverted version of the 100Mhz or 87.5Mhz clock, will be sent to the SDRAM memory. In this document, 100Mhz clock will be used for all descriptions. From the timing point of view, 87.5Mhz will be covered if it meets 100Mhz requirements. The supported DRAM characteristics are listed in the following table: Table 24-4: Supported FPDRAM Chip Characteristics Addressing Size: 2 MB, 8 MB Organization: 16 bits Access Speed: 50 ns, 60 ns Table 24-5: Supported SDRAM Chip Characteristics Addressing Size: 2 MB, 8 MB Organization: 8 bits or 16 bits Access Speed: 10 ns The maximum memory size that is supported for either memory type is 8MB. Six possible row/column pinouts types are supported. A more detailed description can be found in the address multiplexing table. SDRAM will always be used in burst mode, with one access per burst. The CAS latency will be set to 3 cycles which is normal for SDRAM running at 100MHz. The two possible sizes and two possible organizations are programmable in the (S)DRAMC control register. Fast page mode DRAMs (50ns and 60ns) are supported. The speed requirement is due to the bandwidth requirements of the Countach Imaging DSP. The DRAMS will be used in both fast page burst mode and single access mode. The two possible densities which are supported are programmable in the (S)DRAMC control register. 100723A Conexant 24-23 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.7.1.1 Memory Bank Structure There will only be one bank of memory allowed. Accesses to those banks must be done as halfword (16 bit) accesses. SDRAM with 8-bit data bus will not be byte addressable as far as the system in concerned. Instead, each 16-bit access will write or read two consecutive bytes of data to/from the 8-bit SDRAM. For instance, a request to access to byte location 0x100 or 0x101 in 8-bit SDRAM will both access the same halfword (16-bit) location. Hardware does NOT support byte access to external memory connected to (S)DRAM. 24.7.1.2 Wait State Profile 50 ns FPDRAM read requests will have two 25Mhz wait states for the first read access and zero wait states for each successive read. So the FPDRAM read wait state profile is considered to be 2-0-0-0. For example, a burst of four reads will take six cycles to complete; three for the first read, and three total for the next three reads. For 60ns FPDRAM, the read wait state profile is 2-0-1-0-1-0, etc. The write wait state profile for 50ns FPDRAM is 1-0-0-0. The write wait state profile for 60 ns FPDRAM is 1-0-1-0-, etc. SDRAMs will have an identical wait state profile regardless of whether they use a 16 bit data bus or 8 bit data bus. Writes will have a profile of 1-0-0-0. Reads will have a wait state profile of 2-0-0-0. In either case when the burst or single access is finished, there will be a 1 cycle penalty in order to satisfy Trc. 24.7.1.3 Address Multiplexing When reading chart, note that the address bits and data bit on the leftmost column correspond to the actual bits which are output of the (S)DRAMC block (also outputs of ASIC), whereas the address bits in the row/col columns correspond to the input addresses to the (S)DRAMC block (which are aligned to halfword boundary). In other words, the address requested by CBU will be a halfword address, not a byte address. As a result, the CBU and (S)DRAMC will communicate via a 22-bit address bus. In the following charts, MA[x] refers to the memory address pin located on the MFC2000 ASIC (i.e.,. cdao[x]). MD[x] refers to the memory data pin located on the MFC2000 ASIC (i.e.,cddo[x]). BA[x] refers to the bank pin on the SDRAM part. EA[x] refers to the external address pin located on the RAM part. So the External address column of the chart shows the actual connection between the MFC2000 and the RAM. (i.e., looking at the first row of the chart, there will be a wire connecting MA[12] of the MFC2000 to the BA1 of the SDRAM). A[x], within the ROW/COL columns of the chart, refers to the 22-bit address bus within the chip 24-24 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 24-6. Untitled table Address Multiplexing Register External Address SDRAM 64 Mb (16 bit data bus) (14 x 8) SDRAM 64 Mb (8-bit data bus) (14 x 9) SDRAM 16 Mb (16 bit data bus) (12 x 8) SDRAM 16 Mb (8 bit data bus) (12 x 9) ROW COL. ROW COL. ROW COL. ROW COL. MA[12]/BA[1] A[21] A[21] A[21] A[21] 0 0 0 0 MA[11]/BA[0] A[20] A[20] A[20] A[20] 0 0 0 0 MA[10]/EA[11] A[19] 0 A[19] 0 A[19] A[19] A[19] A[19] MA[9]/EA[10] A[18] 01 A[18] 01 A[18] 01 A[18] 01 3 3 3 MD[0]/EA[9] A[17] NC A[17] NC A[17] NC A[17] NC3 MA[8]/EA[8] A[16] 0 A[16] (0 or 1)2 A[16] 0 A[16] (0 or 1)2 MA[7]/EA[7] A[15] A[7] A[15] A[7] A[15] A[7] A[15] A[7] MA[6]/EA[6] A[14] A[6] A[14] A[6] A[14] A[6] A[14] A[6] MA[5]/EA[5] A[13] A[5] A[13] A[5] A[13] A[5] A[13] A[5] MA[4]/EA[4] A[12] A[4] A[12] A[4] A[12] A[4] A[12] A[4] MA[3]/EA[3] A[11] A[3] A[11] A[3] A[11] A[3] A[11] A[3] MA[2]/EA[2] A[10] A[2] A[10] A[2] A[10] A[2] A[10] A[2] MA[1]/EA[1] A[9] A[1] A[9] A[1] A[9] A[1] A[9] A[1] MA[0]/EA[0] A[8] A[0] A[8] A[0] A[8] A[0] A[8] A[0] 1. EA[10] is used on SDRAMs for auto-precharge during column access. Auto-precharge will not be utilized by CDRAM so EA[10] will always be set to 0 during column access. 2. EA[8] will be used as the byte control bit for 8-bit SDRAMs. Addresses sent to CDRAM from the CBU will always be halfword addressable. In order to communicate with 8-bit SDRAMs, CDRAM toggles EA[8] and obtains two sequential pieces of 8-bit data and sends it back to the system as one 16-bit data chunk. 3. Since MD[0] is used both as a data pin and an address pin, during the column portion of a SDRAM access, the SDRAM will not read from the EA[9] pin. So EA[9] is no-care [NC] during this time. Although at that time, MD[0] may very well be carrying valid data to the data bus. 100723A Conexant 24-25 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 24-7. Untitled table Address Multiplexing Register Physical Address 1. DRAM 16 or 64 Mb (16 bit data bus) 12 x 10 or 10 x 101 DRAM 16 Mb (16 bit data bus) 12 x 8 ROW COL. ROW COL. MA[12]/EA[11] A[21] 0 A[19] 0 MA[11]/EA[10] A[20] 0 A[18] 0 MA[10]/EA[9] A[19] A[9] A[17] 0 MA[8]/EA[8] A[18] A[8] A[16] 0 MA[7]/EA[7] A[17] A[7] A[15] A[7] MA[6]/EA[6] A[16] A[6] A[14] A[6] MA[5]/EA[5] A[15] A[5] A[13] A[5] MA[4]/EA[4] A[14] A[4] A[12] A[4] MA[3]/EA[3] A[13] A[3] A[11] A[3] MA[2]/EA[2] A[12] A[2] A[10] A[2] MA[1]/EA[1] A[11] A[1] A[9] A[1] MA[0]/EA[0] A[10] A[0] A[8] A[0] In the 10x10 version, MA[11] and MA[12] will be left unconnected Table 24-8. Untitled table Memory Size/Type Supported/Not Supported 512K x 16 x 2 bank SDRAM (16 Mb) Supported 1M x 8 x 2 bank SDRAM (16 Mb) Supported 1M x 16 x 4 bank Supported 8 11 12 Supported 9 8 12 9 4 banks (2 bits) Supported 13 8 2 banks (1 bit) Supported SDRAM (64 Mb) 24-26 11 4 banks (2 bits) SDRAM (64 Mb) 4M x 8 x 2 bank Column 2 banks (1 bit) SDRAM (64 Mb) 2M x 16 x 2 bank Row 2 banks (1 bit) SDRAM (64 Mb) 2M x 8 x 4 bank Row/Column Configuration 13 9 2 banks (1 bit) 1M x 16 DRAM Supported 12 8 (16 Mb) Supported 10 10 4M x 16 DRAM Supported 12 10 (64 Mb) Not Supported 13 9 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 As seen in the preceding tables, special care must be taken when connecting a FPDRAM or SDRAM to the MFC2000 for use with (S)DRAMC. In summary, when using FPDRAMs, A[8:0] of the DRAM should be connected to MA[8:0] of the (S)DRAMC. A[11:9] of the DRAM should be connected to MA[12:10] of the (S)DRAMC. When using SDRAMs, for 64 Mb type, A[8:0] of the SDRAM should be connected to MA[8:0] of the (S)DRAMC. A[9] of the SDRAM should be connected to MD0 of the (S)DRAMC. A[13:10] of the SDRAM should be connected to MA[12:9] of the (S)DRAMC. Consequently, the MD0 pin out of the (S)DRAMC is time multiplexed with address information during the row address portion of a SDRAM access and contains data information during the column address portion of a SDRAM access. This was done to conserve pin usage of the MFC2000. For the same reason, any DQM pins of an SDRAM should be connected to ground. The CKE pin of the SDRAM should be connected high. Also, if two bank 64Mb SDRAM is being used (the chart describes four bank), MA[11] should be connected to EA[12] since there will only be one bank pin (as compared to the four bank SDRAM in which there are two bank pins). For board layout: In order to maintain low delay and minimized crosstalk, the SDRAM should be placed no farther than 0.5 inch from the MFC2000. 100723A Conexant 24-27 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.8 Register Description Name/Address DRAM Configuration 0x01FF8281 Bit 15 NA Name/Address DRAM Configuration 0x01FF8280 Bit 14 NA Bit 7 NA Bit 13 Bit 12 NA Bit 6 NA NA Bit 5 Bit 4 NA Bit 11 NA Bit 10 NA Bit 3 CDRAM Clock Enable Bit 9 NA Bit 2 Bit 8 NA Bit 1 Configuration Code Default Rst. Value ‘h00 Read Value ‘h00 Bit 0 Default Rst. Value ‘h00 Read Value ‘h00 This register contains the information necessary to decide whether DRAM or SDRAM is being used, the size of memory being used, and whether an 8- or 16-bit DRAM is being used. This register should be written to ONCE and only once as the CDRAM may not work properly if this is written to a second or more times. In addition, most RAMs require a minimum of 100us delay before use in order for the RAM to stabilize, but some others require more time. To properly use the RAM, this register should be written to ONLY after the appropriate delay for that particular RAM is met. Writing to this register will cause the CDRAM to perform the proper ammount of refreshes, the precharge, and mode set necessary for correct startup of DRAM or SDRAM. Bit 15-5 Bit 4 CDRAM Clock Enable This bit enables or disables the CDRAM external clock. When using FPDRAM, the clock does not need to be enabled. 0: Enable 1: Disable Bit 3-0 DRAM Type 24-28 Configuration Code SDRAM 8-bit 16 Mb 0010 SDRAM 8-bit 64 Mb 0110 SDRAM 16-bit 16 Mb 0000 SDRAM 16-bit 64 Mb 0100 FPDRAM 60ns 16 Mb (10x10) 0111 FPDRAM 60ns 16 Mb (12x8) 0011 FPDRAM 60ns 64 Mb (12x10) 0111 FPDRAM 50ns 16 Mb (10x10) 1111 FPDRAM 50ns 16 Mb (12x8) 1011 FPDRAM 50ns 64 Mb (12x10) 1111 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 24.8.1 Timing 24.8.1.1 Detailed Timing Measurements sdclk100 sdrasn, sdcasn, sdcsn, sdrwn tC M H tC M S sdaddr tA H tA S tD H tD S sddata Figure 24-2. SDRAM Setup and Hold Timing Table 24-9. SDRAM Setup and Hold Timing Parameter Symbol Min. Command setup time (includes rasn, casn, wen, csn) tCMS 4 ns Command hold time tCMH 3 ns Address setup time tAS 4 ns Address hold time tAH 3 ns Data setup time tDS 4 ns Data hold time tDH 3 ns 100723A Conexant Max. Units 24-29 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description sdclk100 Command ACT RD/WR Trcd RD/WR RD/WR PRE Tdpl Trp Trc Addr R C Row address Column address ACT C C Column address Column Bank address Row address Figure 24-3. SDRAM Read or Write Timing sdclk100 Trp Command PRE Trsc MODE REF sdaddr Figure 24-4. SDRAM Mode Timing Note: In the above SDRAM timing waveforms “Command” is a combination of rasn, casn, wen, and csn. sdclk100 sdcsn sdrasn sdcasn sdwrn REFRESH ACTIVE Trc ROW sdaddr sddata Figure 24-5. SDRAM Refresh Timing 24-30 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 Table 24-10. Timing Parameters for 16-bit SDRAM Read and Write Parameter Symbol Min. TCLK 10 ns Ras precharge time TRP 3 (5 for single access) TCLK Mode register set to Active delay TRSC 4 TCLK Ras cycle time TRC 12 TCLK Ras-to-cas delay TRCD 3 TCLK Data-in to Pre command period TDPL 2 (4 for single access) TCLK Clock Period Max. Units Table 24-11. Timing Parameters for 8-bit SDRAM Read and Write Parameter Symbol Min. TCLK 10 ns Ras precharge time TRP 5 (5 for single access) TCLK Mode register set to Active delay TRSC 4 TCLK Ras cycle time TRC 12 TCLK Ras-to-cas delay TRCD 3 TCLK Data-in to Pre command period TDPL 3 (3 for single access) TCLK Clock Period Max. Units sdrasn Tras Trp Trc Trcd sdcasn Tcas Tpc Tcp sdwrn (write cycle) Tasr Trah Tcah Tasc sdaddr[12:0] ROW COL1 COL2 COL3 COL4 D2 D3 D4 Tds Tdh sddata[15:0] (write cycle) D1 Figure 24-6. FPDRAM Timing (Read or Write) 100723A Conexant 24-31 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description Table 24-12. 60ns Timing Symbol Min. Ras pulse width Parameter TRAS 70 Max. Units ns Cas pulse width TCAS 20(30 for read) ns Ras-to-cas delay TRCD 40 ns Ras precharge TRP 50 ns Cas precharge TCP 40 ns Column address setup TASC 10 ns Column address hold TCAH 30 ns Row address setup TASR 10 ns Row address hold TRAH 20 ns Fast page mode cycle TPC 60 ns Ras-to-ras delay TRC 120 ns Data setup time TDS 20 ns Data hold time TDH 30 ns Table 24-13. 50ns Timing Parameter Symbol Min. Max. Units Ras pulse width TRAS 70 ns Cas pulse width TCAS 20(30 for read) ns Ras-to-cas delay TRCD 30 ns Ras precharge TRP 50 ns Cas precharge TCP 20(10 for read) ns Column address setup TASC 10 ns Column address hold TCAH 20(30 for read) ns Row address setup TASR 10 ns Row address hold TRAH 20 ns Fast page mode cycle TPC 40 ns Ras-to-ras delay TRC 120 ns Data setup time TDS 20 ns Data hold time TDH 30 ns Note: The most notable difference between the 50ns and 60ns timing is the Tpc parameter. During bursts, 50ns is able to perform much faster. 24-32 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 sdclk100 t RRAS sdrasn t CRD sdcasn t RCAS sdwrn Figure 24-7. FPDRAM Timing (Refresh) Table 24-14. FPDRAM Timing (Refresh) Parameter Symbol Min. Max. Units 6 ns OE delay tOED CASN pulse width tRCAS 28 ns RASN pulse width tRRAS 60 ns CASN to RASN delay tCRD 9 ns 100723A Conexant 24-33 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description 24.8.2 Firmware Operation There is only one operation in which firmware need be concerned with the CDRAM block. That operation is the powerup operation. During startup, DRAM and SDRAM both have a specific sequence which needs to be performed on them in order for them to function properly. In order to assure that this sequence is properly performed the following must be done: 1. Wait a minumum of 200us. Some memories require as little as 100us, while a few others require as great as 500us. Waiting 200us will assure that MOST memories will work correctly. 2. Write to the CDRAM configuration register. This register should be written to ONCE and ONLY ONCE. Unless this register is written to, CDRAM will not know what type of RAM is being used. 3. That’s it. After about a 1 us delay the startup procedure should be finished and the memory ready to be accessed. An access request can be made after the startup procedure is done and before it is finished, but the access will not occur until the complete startup procedure is finished. 24-34 Conexant 100723A Hardware Description MFC 2000 Multifunctional Peripheral Controller 2000 This page is intentionally blank 100723A Conexant 24-35 Multifunctional Peripheral Controller 2000 MFC2000 25. Configuration 25.1 Hardware Version Address Hardware Version (HWVer) $01FF8045 (R) Address Hardware Version (HWVer) $01FF8044 (R) Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 (Not Used) Bit 7 Default Rst. Value xxh Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0:= First release 1-FF:= other releases Default Rst. Value 00h Read Value 00h This register is used to content the hardware version number. The value in this register is 0 for first release of a product. Whenever the hardware design is modified, this register value is incremented. This register is not effected by any reset. 00hMFC2000_x1 (the PQFP package) 25.2 Product Code Address Product Code (ProductCode) $01FF8047 (R) Address Product Code (ProductCode) $01FF8046 (R) Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 (Not Used) Bit 7 Default Rst. Value xxh Read Value 00h Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Product Code: BFh: 11626-11, with Data Modem Function, with Voice Codec/Speaker Phone Function, and with SmartDAA support BDh: 11626-12, with Data Modem Function, without Voice Codec/Speaker Phone Function, and with SmartDAA support BBh: 11626-13, without Data Modem Function, with Voice Codec/Speaker Phone Function, and with SmartDAA support B9h: 11626-14, without Data Modem Function, without Voice Codec/Speaker Phone Function, and with SmartDAA support B8h: 11626-15, without Data Modem Function, without Voice Codec/Speaker Phone Function, and without SmartDAA support Default Rst. Value (must match with the product code) This register is not affected by any reset. 100723A Conexant 25-1 MFC2000 Multifunctional Peripheral Controller 2000 Hardware Description This page is intentionally blank 25-2 Conexant 100723A Multifunctional Peripheral Controller 2000 MFC2000 INSIDE BACK COVER NOTES Doc. No. 100723A Conexant 0.0 Sales Offices Further Information [email protected] (800) 854-8099 (North America) (949) 483-6996 (International) Printed in USA World Headquarters Conexant Systems, Inc. 4311 Jamboree Road Newport Beach, CA 92660-3007 Phone: (949) 483-4600 Fax 1: (949) 483-4078 Fax 2: (949) 483-4391 Europe North – England Phone: +44 1344 486444 Fax: +44 1344 486555 Europe – Israel/Greece Phone: +972 9 9524000 Fax: +972 9 9573732 Europe South – France Phone: +33 1 41 44 36 51 Fax: +33 1 41 44 36 90 Europe Mediterranean – Italy Phone: +39 02 93179911 Fax: +39 02 93179913 Americas U.S. Northwest/ Pacific Northwest – Santa Clara Phone: (408) 249-9696 Fax: (408) 249-7113 U.S. Southwest – Los Angeles Phone: (805) 376-0559 Fax: (805) 376-8180 Europe – Sweden Phone: +46 (0) 8 5091 4319 Fax: +46 (0) 8 590 041 10 Europe – Finland Phone: +358 (0) 9 85 666 435 Fax: +358 (0) 9 85 666 220 Asia – Pacific U.S. Southwest – Orange County Phone: (949) 483-9119 Fax: (949) 483-9090 Taiwan Phone: (886-2) 2-720-0282 Fax: (886-2) 2-757-6760 U.S. Southwest – San Diego Phone: (858) 713-3374 Fax: (858) 713-4001 Australia Phone: (61-2) 9869 4088 Fax: (61-2) 9869 4077 U.S. North Central – Illinois Phone: (630) 773-3454 Fax: (630) 773-3907 China – Central Phone: 86-21-6361-2515 Fax: 86-21-6361-2516 U.S. South Central – Texas Phone: (972) 733-0723 Fax: (972) 407-0639 China – South Phone: (852) 2 827-0181 Fax: (852) 2 827-6488 U.S. Northeast – Massachusetts Phone: (978) 367-3200 Fax: (978) 256-6868 China – South (Satellite) Phone: (86) 755-518-2495 U.S. Southeast – North Carolina Phone: (919) 858-9110 Fax: (919) 858-8669 U.S. Southeast – Florida/ South America Phone: (727) 799-8406 Fax: (727) 799-8306 U.S. Mid-Atlantic – Pennsylvania Phone: (215) 244-6784 Fax: (215) 244-9292 Canada – Ontario Phone: (613) 271-2358 Fax: (613) 271-2359 China – North Phone: (86-10) 8529-9777 Fax: (86-10) 8529-9778 India Phone: (91-11) 692-4789 Fax: (91-11) 692-4712 Korea Phone: (82-2) 565-2880 Fax: (82-2) 565-1440 Korea (Satellite) Phone: (82-53) 745-2880 Fax: (82-53) 745-1440 Singapore Phone: (65) 737 7355 Fax: (65) 737 9077 Europe Europe Central – Germany Phone: +49 89 829-1320 Fax: +49 89 834-2734 Japan Phone: (81-3) 5371 1520 Fax: (81-3) 5371 1501 www.conexant.com