1989_Microprocessor_and_Peripheral_Handbook_Volume_2 1989 Microprocessor And Peripheral Handbook Volume 2
User Manual: 1989_Microprocessor_and_Peripheral_Handbook_Volume_2
Open the PDF directly: View PDF .
Page Count: 1137
Download | |
Open PDF In Browser | View PDF |
Intel LITERATURE To order Intel Literature or obtain literature pricing information in the U.S. and Canada call or write Intel Literature Sales. In Europe and other international locations, please contact your local sales office or distributor. INTEL LITERATURE SALES P.O. BOX 58130 SANT A CLARA, CA 95052-8130 In the U.S. and Canada call toll free (800) 548-4725 CURRENT HANDBOOKS Product line handbooks contain data sheets, application notes, article reprints and other design information. TITLE LITERATURE ORDER NUMBER COMPLETE SET OF HANDBOOKS 231003 AUTOMOTIVE PRODUCTS HANDBOOK 231792 (Available in U.S. and Canada only) (Not included in handbook set) COMPONENTS QUALITY IRElIABllITY HANDBOOK EMBEDDED CONTROL APPLICATIONS HANDBOOK 8·BIT EMBEDDED CONTROLLER HANDBOOK 16·BIT EMBEDDED CONTROLLER HANDBOOK 32-BIT EMBEDDED CONTROLLER HANDBOOK MEMORY COMPONENTS HANDBOOK MICROCOMMUNICATIONS HANDBOOK MICROCOMPUTER PROGRAMMABLE LOGIC HANDBOOK MICROPROCESSOR AND PERIPHERAL HANDBOOK (2 volume set) MILITARY PRODUCTS HANDBOOK 210997 270648 270645 270646 270647 210830 231658 296083 230843 210461 (2 volume set. Not included in handbook set) OEM BOARDS AND SYSTEMS HANDBOOK PRODUCT GUIDE (Overview of Intel's complete product lines) SYSTEMS QUALITY IRElIABllITY HANDBOOK INTEL PACKAGING OUTLINES AND DIMENSIONS (Packaging types, number of leads, etc.) LITERATURE PRICE LIST (U.S. and Canada) (Comprehensive list of current Intel Literature) INTERNATIONAL LITERATURE GUIDE 280407 210846 231762 231369 210620 E00029 . CG/LiT/l001BB About Our Cover: The microprocessor has been the integral device in translating unlimited ideas into solid reality. Our microprocessors work in close conjunction with our family of peripherals to form complete microcomputer chip set solutions that will help you develop and build tomorrow's electronic systems. inter u.s. and CANADA LITERATURE ORDER FORM NAME: __________________________________________________________ COMPANY: ____________________________________________________ ADDRESS: _____________________________________________________ CITY: _________________________________ STATE: ____ ZIP: _ _ __ COUNTRY: _____________________________________________ PHONE NO.: """"'---_----''--_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ ORDER NO. TITLE QTY. PRICE TOTAL ____ X _____ = ______ ____ X _____ = ______ ____ X _____ = _____ ____ X _____ = _ _ ___ ____ X _____ = _ ___ _ _ X ____ = _ ___ __' __ X _ _ _ = ______ ____ X _____ = _ ___ ___ X_____ - _____ ___ X_____ = _____ Subtotal _______ Must Add Your Local Sales Tax ________ Postage: add 10% of subtotal --------,....--........ Postage _ _ ___ Total ________ Pay by check, money order, or include company purchase order with this form ($100 minimum).We also accept VISA, MasterCard or American Express. Make payment to Intel Literature Sales. Allow 2-4 weeks for delivery. o VISA 0 MasterCard 0 American Express Expiration Date __________ Account No. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ___ Signature _ _ _ _ _ _ _ _ _ _ _ _ _ _--'-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ Mail To: Intel Literature Sales P.O. Box 58130 Santa Clara, CA 95052-8130 International Customers outside the U.S. and Canada should use the International order form or contact their local Sales Office or Distributor. For phone orders in the U.S. and Canada Call Toll Free: (800) 548-4725 Prices good until 12/31/89. Source HB CG/LSOF1100188 INTERNATIONAL LITERATURE ORDER FORM NAME: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ ~ COMPANY: __________________________________________ ~ ADDRESS: __________________________________ ~------- ~ ___ CITY: _ _ _ _ _ _ _ _--'--_________ STATE: _______ ZIP: ______ COUNTRY: __~____________________~--------------------------PHONENO.:~(____~_____________________________._____________ ORDER NO TITLE QTY. PRICE TOTAL _ _ X _ _ _ = _ __ '_ _ X ___ = _ __ _ _ X ___ = _ __ _ _ X ___ = _ __ _ _ X ___ = _ __ _ _ X ___ = _ __ _ _ X _ _ _ = _ __ _ _ X_"_ _ = _ __ _ _ X _ _ _ =_..,..-_ __ . _X ___ = _ __ Subtotal _ _ ___ Must Add Your Local Sales Tax _ _ __ Total _ _ ___ PAYMENT Cheques should be made payable to your local Intel Sales Office (see inside back cover.) Other forms of payment may be available in your country. Please contact the Literature Coordinator at your local Intel Sales Office for details. The completed form should be marked to the attention of the LITERATURE COORDINATOR and returned to your iocal Intel Sales Office. CG/LSOF/1001B8 intJ Intel the Microcomputer Company: When Intel invented the microprocessor in 1971, it created the era of microcomputers. Whether used as microcontrol/ers in automobiles or microwave ovens, or as personal computers or supercomputers, Intel's microcomputers have always offered leading-edge technology. In the second half of the 1980s, Intel architectures have held at least a 75% market share of microprocessors at 16 bits and above. Intel continues to strive for the highest standards in memory, microcomputer components, modules, and systems to give its customers the best possible competitive advantages. MICROPROCESSOR AND PERIPHERAL HANDBOOK VOLUME'll PERIPHERAL 1989 Intel Corporation makes no warranty for the use of its products and assumes no responsibility for any errors which may appear in this document nor does it make a commitment to update the information contained herein. Intel retains the right to make changes to these specifications at any time, without notice. Contact your local sales office to obtain the latest specifications before placing your order. The following are trademarks of Intel Corporation and may only be used to identify Intel Products: Above, BITBUS, COMMputer, CREDIT, Data Pipeline, ETOX, FASTPATH, Genius, i, t, ICE, iCEL, iCS, iDBP, iDIS, 12 1CE, iLBX, im, iMDDX, iMMX, Inboard, Insite, Intel, intel, Inte1376, Inte1386, Inte1486, intelBOS, Intel Certified, Intelevision, inteligent Identifier, inteligent Programming, Intellec, Intellink, iOSP, iPDS, iPSC, iRMK, iRMX, iSBC, iSBX, iSDM, iSXM, KEPROM, Library Manager, MAPNET, MCS, Megachassis, MICROMAINFRAME, MULTIBUS, MULTICHANNEL, MULTlMODULE, ONCE, OpenNET, OTP, PC BUBBLE, Plug-A-Bubble, PROMPT, Promware, QUEST, QueX, Quick-Erase, Quick-Pulse Programming, Ripplemode, RMX/80, RUPI, Seamless, SLD, SugarCube, UPI, and VLSiCEL, and the combination of ICE, iCS, iRMX, iSBC, iSBX, iSXM, MCS, or UPI and a numerical suffix, 4-SITE, 376, 386, 486. MDS is an ordering code only and is not used as a product name or trademark. MDS® is a register.ed trademark of Mohawk Data Sciences Corporation. *MULTIBUS is a patented Intel bus. Additional copies of this manual or other Intel literature may be obtained from: Intel Corporation Literature Sales P.O. Box 58130 Santa Clara, CA 95052-8130 @INTELCORPORATION 1988 CUSTOMER SUPPORT INTEL'S COMPLETE SUPPORT SOLUTION WORLDWIDE Customer Support is I ntel's complete support service that provides Intel customers with hardware support, software support, customer training, consulting services and network management services. For detailed information contact your local sales offices. After a customer purchases any system hardware or software product, service and support become major factors in determining whether that product will continue to meet a customer's expectations. Such support requires an international support organization and a breadth of programs to meet a variety of customer needs. As you might expect, Intel's customer support is quite extensive. It can start with assistance during your development effort to network management. 100 Intel sales and service offices are located worldwide - in the U.S., Canada, Europe and the Far East. So wherever you're using Intel technology, our professional staff is within close reach. HARDW ARE SUPPORT SERVICES Intel's hardware maintenance service, starting with complete on-site installation will boost your productivity from the start and keep you running at maximum efficiency. Support for system or board level products can be tailored to match your needs, from complete on-site repair and maintenance support economical carry-in or mail-in factory service. Intel can provide support service for not only Intel systems and emulators, but also support for equipment in your development lab or provide service on your product to your end-user/customer. SOFTWARE SUPPORT SERVICES Software products are supported by our Technical Information Phone Service (TIPS) that has a special toll free number to provide you with direct, ready information on known, documented problel~' and deficiencies, as well as work-arounds, patches and other solutions. Intel's software support consists of two levels of contracts. Standard support includes TIPS (Technical Information Phone Service), updates and subscription service (product-specific troubleshooting guides and; COMMENTS Magazine). Basic support consists of updates and the subscription service. Contracts are sold in environments which represent product groupings (e.g., iRMX® environment). CONSULTING SERVICES Intel provides field system engineering consulting services for any phase of your development or application effort. You can use our system engineers in a variety of ways ranging from assistance in using a new product, developing an application, personalizing training and customizing an Intel product to providing technical and management consulting. Systems Engineers are well versed in technical areas such as microcommunications, real-time applications, embedded microcontrollers, and network services. You know your application needs; we know our products. Working together we can help you get a successful product to market in the least possible time. CUSTOMER TRAINING Intel offers a wide range of instructional programs covering various aspects of system design and implementation. In just three to ten days a limited number of individuals learn more in a single workshop than in weeks of self-study. For optimum convenience, workshops are scheduled regularly at Training Centers worldwide or we can take our workshops to you for on-site instruction. Covering a wide variety of topics, Intel's major course categories include: architecture and assembly language, programming and operating systems, BITBUS™ and LAN applications. NETWORK MANAGEMENT SERVICES Today's networking products are powerful and extremely flexible. The return they can provide on your investment via increased productivity and reduced costs can be very substantial. Intel offers complete network support, from definition of your network's physical and functional design, to i ... ,:.iementation, installation and maintenance. Whether installing your first network or adding to an existing one, Intel's Networking Specialists can optimize network performance for you. CG/CUST1100188 Table of Contents Alphanumeric Index '" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CHAPTER 1 Overview ix , Introduction ................................ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 CHAPTER 2 8086 Microprocessor Family DATA SHEETS 808616-Bit HMOS Microprocessor............. .................. ........... 80C86A 16-Bit CHMOS Microprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80C86AL 16-Bit CHMOS Microprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8088 8-Bit HMOS Microprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80C88A 8-Bit CHMOS Microprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 80C88AL 8-Bit CHMOS Microprocessor ..................................... , 8087/8087 -2/8087 -1 Numeric Data Coprocessor ............................. 82C84A CHMOS Clock Generator and Driver for 80C86, 80C88 Processors ...... 82C88 CHMOS Bus Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8237 A High Performance Programmable DMA Controller (8237A, 8237 A-4, 8237 A-5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82C37A-5 CHMOS High Performance Programmable DMA Controller............ 8259A18259A-2/8259A-8 Programmable Interrupt Controller. . . . .. . . . . . . . . . . . .. 82C59A-2 CHMOS Programmable Interrupt Controller . . . . . . . . . . . . . . . . . . . . . . . .. 2-1 2-31 2-60 2-89 2-119 2-151 2c 183 2-205 2-214 2-222 2-241 2-259 2-283 CHAPTER 3 80286 Microprocessor Family DATA SHEETS 80286 High Performance Microprocessor with Memory Management and Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 80287 80-Bit HMOS Numeric Processor Extention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-56 82258 Advanced Direct Memory Access Coprocessor ......................... 3-82 82288 Bus Controller for 80286 Processor (82288-12,82288-10,82288-8) ........................................... 3-141 82C288 Bus Controller for 80286 Processors (82C288-12, 82C288-1 0, 82C288-8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-161 82C284 Clock Generator and Ready Interface for 80286 Processors (82C284-12, 82C284-10, 82C284-8) ....................................... 3-182 CHAPTER 4 INTEL386™ Family DATA SHEETS 386™ High Performance Microprocessor with Integrated Memory Management. . . 80387 80-Bit CHMOS III Numeric Processor Extension. . . . . . . . . . . . . . . . . . . . . . . .. 82380 High Performance 32-Bit DMA Controller wi Integrated System Support Peripherals..................................................... 82385 High Performance 32-Bit Cache Controller ............................. 386SXTM Microprocessor ...................... . . . . . . . . . . . . . . . . . . . . . . . . . . .. 80387SX 80-Bit Numeric Processor Extension ................................ 82310/82311 Micro Channel Compatible Peripheral Family. . . . . . . . . . . . . . . . . . . .. 82303 110 Support Chip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82304110 Support Chip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82306 Local Channel Support Chip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82307 DMAIMicro Channel Arbitration Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82308 Micro Channel Bus Controller (BC) ................................... , 82309 Address Bus Controller (ABC) ........................................ 82077 Floppy Disk Controller ...... , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •. . . . . . . .. 4-1 4-133 4-171 4-292 4-354 4-450 4-488 4-509 4-519 4-534 4-545 4-557 4-588 4-617 Table of Contents (Continued) 82706 Intel Video Graphics Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82335 High Integration Interface Device for 386SX™ Microprocessor Based PC-AT System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82230/82231 High Integration AT*-Compatible Chip Set. . . . . . . . . . . . . . . . .. . . . .. 376™ High Performance 32-Bit Embedded Processor. . . . . . . . . . . . . . . . . . . . . . . .. 82370 Integrated System Peripheral. . . . . . . .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. 4-618 4-636 4-667 4-705 4-796 CHAPTERS Memory Controllers DATA SHEETS 8203 64K Dynamic RAM Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 8206 Error Detection and Correction Unit. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-17 8207 Dual-Port Dynamic RAM Controller ....... :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-39 82C08 CHMOS Dynamic RAM Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-86 APPLICATION NOTES Interfacing the 8207 Dynamic RAM Controller to the 80186 AP-167 ...... , . . . . . .. 5-115 Interfacing the 8207 Advanced Dynamic RAM Controller to the 80286 AP-168 5-121 CHAPTER 6 Support Peripherals DATA SHEETS 8231A Arithmetic Processing Unit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. . . . . 6-1 8253/8253-5 Programmable IntervalTimer . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 6-14 8254 Programmable Interval Timer . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-25 82C54 CHMOS Programmable Interval Timer..................... ............ 6-46 8255A18255A-5 Programmable Peripheral Interface : . . . . . . . . . . . . . . . . . . . . . . . . . . 6-63 82C55A CHMOS Programmable Peripheral Interface .......................... 6-87 8256AH Multifunction Microprocessor Support Controller. . . . . . . . . . . . . . . . . . . . . .. 6-110 8279/8279-5 Programmable Keyboard/Display Interface. . . . . . . . . . . . . . . . . . . . . .. 6-134 82389 Message Passing Coprocessor, A MULTIBUSTM II Bus Interface Controller; 6-150 CHAPTER 7 Floppy Disk Controllers DATA SHEETS 8272A Single/Double Density Floppy Disk Controller. . . .. . . . . . . . .. . . . . . . . . . .. . 7-1 82077 Single Chip Floppy Disk Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-32 APPLICATION NOTES An Intelligent Data Base System Using the 8272 AP-116 ....................... 7-87 Software Design and Implementation of Floppy Disk Systems AP-121 ............ 7-128 CHAPTERS Hard Disk Controllers DATA SHEET 82064 CHMOS Winchester Disk Controller with On-Chip Error Detection and Correction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . APPLICATION NOTE Multimode™ Winchester Controller Using the CHMOS 82064 AP-402............ 8-1 8-33 CHAPTER 9 Universal Peripheral Interface Slave Microcontrollers DATA SHEETS UPITM-452 CHMOS Programmable I/O Processor (80/83/87452) .. . . . . . . . . . . . . . UPITM-41, 42: 8041 AH/8042AH/8741 AH/8742AH Universal Peripheral Interface 8-Bit Slave Microcontroller ............................................... 9-1 9-54 Table of Contents (Continued) 8243 MCS®-48 Input/Output Expander .. . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . APPLICATION NOTES Applications Using the 8042 UPITM Microco,ntroUer . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complex Peripheral Control with the UPITM-42 AP-161 ;........................ An 8741 AH/8041 A Digital Cassette Controller AP-90 . . . . .. . . ... . .. . .. • . . . .. ... UPITM-452 Accelerates iAPX 286 Bus Performance AP-281 .. ... . . .. . .. . ... .. ... SYSTEM SUPPORT ICETM-42 8042 In-Circuit Emulator .... 0' • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ~ • • • • • iUP-200AliUP-201A Universal PROM Programmers .........•...... :.......... 9-73 9-79 9-83 9-138 9-145 9-165 9-173 CHAPTER 10 Graphics Coprocessor Family DATA SHEETS 82706 Intel Video Graphics Array ........................................... . 82716IVSDD Video Storage and Display Device ............................. . 82786 CHMOS Graphics Coprocessor .................. : ... ; ............... . APPLICATION NOTES A Low Cost and High I'ltegration Graphics System Using 82716 AP-268 . . . . . . . . .. 82786 Hardware Configuration AP-270 ....................................... An Introduction to Programming the 82786 Graphics Coprocessor AP-408 ........ 82786 Design Example Interfacing to the IBM PCI AT Computer AP-409 ..•. : ..... 10-1 10-2 10-4 10-49 10-101 10-162 10-222 CHAPTER 11 . . . Development Tools for the 8051, 8096, 8086/186/188, 80286, an.d 80386 LANGUAGES AND SOFTWARE DEVELOPMENT TOOLS 8051 Software Packages Fact Sheet ........................................ . 8096 Software Development Packages Fact Sheet ........................... . VAXIVMS Resident Software Development Packages Data Sheet .............. . 8086/80186 SOftware Development Packages Fact Sheet .................... . 8087 Support Library Data Sheet ........................................... . PSCOPE-86 for DOS High-Level Application Program Debugger Data Sheet •..... iC-86 C Compiler Fact Sheet ............................................... . 286 Software Development Packages Data Sheet ............................ . Ada-386 Cross Development for the 386™ Fact Sheet ........................ . Intel386TM Development Support Family Fact Sheet .......................... . AEDIT Source Code and Text Editor Fact Sheet ..•............................ iPATTM Performance Analysis Tool Fact Sheet. .................•.............. IN-CIRCUIT EMULATORS ICETM 5100/452 In-Circuit Emulator Fact Sheet ............................ ; .. ICETM 51001044 In-Circuit Emulator Fact Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ICETM 5100/252 In-Circuit Emulator Fact Sheet.. .. . . . .. ... . . .. . . . . . .. ... . .. .. ICETM 5100/451 In-Circuit Emulator Fact Sheet. . . .... .. ... .•. . . . . . . .. . .. . .. .. VLSiCETM-96 In-Circuit Emulator Fact Sheet... . .. .... .. . .. . .. .. . . .. . . . .. . .... Real-Time Transparent 80C196 In-Circuit Emulator Fact Sheet. . . . . . . . . . . . . . . . .. ICETM-196KB/xX In-Circuit Emulators Fact Sheet ................ . . . . . . . .. . ... ICETM-186 In-Circuit Emulator Fact Sheet ;... ... . .. . . . . . . . . . . . . . . . . . . . . . . . . .. ICETM-188 In-Circuit Emulator Fact Sheet ...................... . . . . . . . . . . . . .. 12 1CETM In-Circuit Emulation System Fact Sheet. . . . . . • . . . . . . . . . . . . . . . . . . . . . . .. ICETM-286 In-Circuit Emulator Fact Sheet ..............................•..... Intel386TM Family Development Support Fact Sheet ........................... 11-1 11-4 11-7 11-15 11-19 . 11-23 11-30 11-33 11-51 11-55 11-59 11-61 11-65 11-69 11-73 11-77 11-81 11-84 11-86 11-90 11-94 11-98 11"101 11-104 Alphanumeric Index 286 Software Development Packages Data Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 376™ High Performance 32-BitEmbedded Processor. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. 386SXTM Microprocessor. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 386™ High Performance Microprocessor with Integrated Memory Management ......... 80286 High Performance Microprocessor with Memory Management and Protection. . . . . . 80287 80-Bit HMOS Numeric Processor Extention ................................... 80387 80-Bit CHMOS III Numeric Processor Extension ............................... 80387SX 80-Bit Numeric Processor Extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8051 Software Packages Fact Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808616-Bit HMOS Microprocessor....................... .......................... 8086/80186 Software Development Packages Fact Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8087 Support Library Data Sheet .................................................. 8087/8087-2/8087-1 Numeric Data Coprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8088 8-Bit HMOS Microprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8096 Software Development Packages Fact Sheet. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80C86A 16-Bit CHMOS Microprocessor ............................................ 80C86AL 16-Bit CHMOS Microprocessor ................. . . . . . . . . . . . . . . . . . . . . . . . . . . 80C88A 8-Bit CHMOS Microprocessor.................... .......................... 80C88AL 8-Bit CHMOS Microprocessor ............................................ 8203 64K Dynamic RAM Controller ................................. " . . . . . . . . . . . . . . 8206 Error Detection and Correction Unit ........................................... 82064 CHMOS Winchester Disk Controller with On-Chip Error Detection and Correction .. 8207 Dual-Port Dynamic RAM Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . 82077 Floppy Disk Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82077 Single Chip Floppy Disk Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82230/82231 High Integration AT*-Compatible Chip Set. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82258 Advanced Direct Memory Access Coprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82288 Bus Controller for 80286 Processor (82288-12, 82288-10, 82288-8) . . . . . . . . . . . . .. 82303 I/O Support Chip .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 823041/0 Support Chip .......................................................... 82306 Local Channel Support Chip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82307 DMAIMicro Channel Arbitration Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82308 Micro Channel Bus Controller (BC) . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82309 Address Bus Controller (ABC) ................................. , . . . . . . . . . . . .. 82310/82311 Micro Channel Compatible Peripheral Family ........................... 8231 A Arithmetic Processing Unit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 82335 High Integration Interface Device for 386SXTM Microprocessor Based PC-AT System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82370 Integrated System Peripheral. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8237A High Performance Programmable DMA Controller (8237 A, 8237 A-4, 8237 A-5) . .. .. 82380 High Performance 32-Bit DMA Controller w/lntegrated System Support Peripherals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . .. 82385 High Performance 32-Bit Cache Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82389 Message Passing Coprocessor, A MULTIBUSTM II Bus Interface Controller. . . . . . .. 8243 MCS®-48 Input/Output Expander. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8253/8253-5 Programmable Interval Timer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8254 Programmable Interval Timer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8255A18255A-5 Programmable Peripheral Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8256AH Multifunction Microprocessor Support Controller .............. :.............. 8259A18259A-2/8259A-8 Programmable Interrupt Controller. . . . . . . . . . . . . . . . . . . . . . . . .. 82706 Intel Video Graphics Array.................................................. 82706 Intel Video Graphics Array ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82716IVSDD Video Storage and Display Device..................................... 8272A Single/Double Density Floppy Disk Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix 11-33 4-705 4-354 4-1 3-1 3-56 4-133 4-450 11-1 2-1 11-15 11-19 2-183 2-89 11-4 2-31 2-60 2-119 2-151 5-1 5-17 8-1 5-39 4-617 7-32 4-667 3-82 3-141 4-509 4-519 4-534 4-545 4-557 4-588 4-488 6-1 4-636 4-796 2-222 4-171 4-292 6-150 9-73 6-14 6-25 6-63 6-110 2-259 4-618 10-1 10-2 7-1 Alphanumeric Index (Continued) 82786 CHMOS Graphics Coprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . 82786 Design Example Interfacing to the IBM PC/AT Computer AP-409 ................ 82786 Hardware Configuration AP-270 ............................................. 8279/8279-5 Programmable Keyboard/Display Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82C08 CHMOS Dynamic RAM Controller ........................................... 82C284 Clock Generator and Ready Interface for 80286 Processors (82C284-12, 82C284-1 0, 82C284-8) ........................................... '" 82C288 Bus Controller for 80286 Processors (82C288-12, 82C288-10, 82C288-8)........ 82C37 A-5 CHMOS High Performance Programmable DMA Controller .................. 82C54 CHMOS Programmable Interval Timer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82C55A CHMOS Programmable Peripheral Interface ................................. 82C59A-2 CHMOS Programmable Interrupt Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 82C84A CHMOS Clock Generator and Driver for 80C86, 80C88 Processors. . . . . .. . . . . .. 82C88 CHMOS Bus Controller. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. A Low Cost and High Integration Graphics System Using 82716 AP-268. . . . . . . • . . . . . . . .. Ada-386 Cross Development for the 386™ Fact Sheet. .. . . . . . . . . . . . . . . . . . . . . . . . . . . .. AEDIT Source Code and Text Editor Fact Sheet ...................................... An 8741 AH/8041 A Digital Cassette Controller AP-90 . . . . . . .. . . . . .. . . . . . . . . . . . . . . . . . .. An Intelligent Data Base System Using the 8272 AP-116 . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . An Introduction to Programming the 82786 Graphics Coprocessor AP-408 .............. Applications Using the 8042 UPITM Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complex Peripheral Control with the UPITM-42 AP-161 ................................ iC-86 C Compiler Fact Sheet .......... : ................................. ;......... ICETM 5100/044 In-Circuit Emulator Fact Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ICETM 5100/252 In-Circuit Emulator Fact Sheet. ." ........... " ........ ; . . . . . . . . . . . .. ICETM 5100/451 In-Circuit Emulator Fact Sheet...................................... ICETM 5100/452 In-Circuit Emulator Fact Sheet. ..................................... ICETM-186 In-Circuit Emulator Fact Sheet ........................................... ICETM-188 In-Circuit Emulator Fact Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .. ICETM-196KB/xX In-Circuit Emulators Fact Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ICETM-286 In-Circuit Emulator Fact Sheet ........................................... ICETM-42 8042 In-Circuit Emulator................................................. Intel386TM Development Support Family Fact Sheet. . . . .. . . . . . .. . . . . . . . . . . . . .. . . . . . .. Intel386™ Family Development Support Fact Sheet. ................................. Interfacing the 8207 Advanced DynamiC RAM Controller to the 80286 AP-168 . ; . . . . . . ... Interfacing the 8207 Dynamic RAM Controller to the 80186 AP-167 . . . . . . . . . . . . . . . . . . . .. iPATTM Performance Analysis Tool Fact Sheet ...................................... iUP-200A/iUP-201 A Universal PROM Programmers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 12 1CETM In-Circuit Emulation System Fact Sheet ....................... ;............. Multimode™ Winchester Controller Using the CHMOS 82064 AP-402 .................. PSCOPE-86 for DOS High-Level Application Program Debugger Data Sheet. . . . . . . . . . . .. Real-Time Transparent 80C196 In-Circuit Emulator Fact Sheet ........................ Software Design and Implementation of Floppy Disk Systems AP-121 .................. UPITM-41, 42: 8041 AH/8042AH/8741 AH/8742AH Universal Peripheral Interface 8-Bit Slave Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . UPITM-452 Accelerates iAPX 286 Bus Performance AP-281 ..........•................ UPITM-452 CHMOS Programmable I/O Processor (80/83/87452). . . . . . . . . . . . . . . . . . . . . . VAXIVMS Resident Software Development Packages Data Sheet ..•.....•............ VLSiCETM-96 In-Circuit Emulator Fact Sheet ........................................ x 10-4 10-222 10-101 6-134 5-86 3-182 3-161 2-241 6-46 6-87 2-283 2-205 2-214 10-49 11-51 11-59 9-138 7-87 10-162 9-79 9-83 11-30 11-69 11-73 11-77 11-65 11-90 11-94 11-86 11-101 9-165 11-55 11 c 104 5-121 5-115 11-61 9-173 11-98 8-33 11-23 11-84 7-128 9-54 9-145 9-1 11-7 11-81 Any of the following products may appear in this publication. If so, it must be noted that such products have counterparts manufactured by Intel Puerto Rico, Inc., Intel Puerto Rico II, Inc., and/or Intel Singapore, Ltd. The product codes/part numbers of these counterpart products are listed below next to the corresponding Intel Corporation product codes/part numbers. Intel Corporation Product Codes/ Part Numbers 376SKIT 903 904 913 914 923 924 952 953 954 ADA ICE B386MI B3B6M2 B386M4 B3B6M8 C044KIT C252KIT C28 C32 C452KIT D86ASM D86C86 D86EDI DCM9111 DOSNET FI GUPILOGICIID H4 1044 I252KIT I452KIT I86ASM ICE386 IllOI0 Ill086 Ill086 IllIII III 186 III 186 1II198 1II212 111286 Ill286 Ill515 III 520 Ill520 Ill531 Ill532 1II533 Ill621 III707 1II707 1II815 INA961 IPAT86 KAS KC KH KMI Intel Puerto Rico, Inc. Intel Puerto Rico II. Inc. Product Codes/ Part Numbers Intel Corporation Product Codes/ Part Numbers Intel Singapore, Ltd. Product Codes/ Part Numbers p376SKIT p903 p904 p913 p914 p923 p924 p952 p953 p954 pADAICE pB386Ml pB3B6M2 pB386M4 pB386MB pC044KIT pC252KIT pC28 pC32 pC452KIT pD86ASM pD86C86 pD86EDI pDCM9111 pDOSNET pFI pGUPILOGICIID pH4 plO44 pI252KIT pI452KIT pI86ASM pICE386 pIllOlO pIll086 TIll086 pIll111 pIlI I 86 TlII186 pIlll98 pIll212 pIll286 TlII286 pIll515 TIll 520 pIlI520 pIll53 I pIll532 pIll533 pIII62 I pIII707 TIII707 pIll8I5 pINA96I pIPAT86 pKAS pKC pKH pKMI KM2 KM4 KM8 KNLAN KT60 KWI40 KW40 KW80 MI M2 M4 M8 MDS6lO MDX3015 MDX3015 MDX3016 MDX3016 MDX457 MDX457 MDX458 MDX458 MSA96 NLAN PCLINK PCX344A R286ASM R286EDI R286PLM R286SSC R86FOR RCB44lO RCX920 RMX286 RMXNET S301 S386 SBCOlO SBCOl2 SBC020 SBC028 SBC040 SBC056 SBClO8 SBCII6 SBCI8603 SBCI86410 SBCI8651 SBCI86530 SBCI8678 SBCI8848 SBCI8856 SBC208 SBC214 SBC215 SBC220 SBC221 SBC286lO SBC286I2 SBC28614 xi Intel Puerto Rico, Inc. Intel Puerto RIco II, Inc. Product Codes/ Part Numbers Intel Singapore, Ltd. Product Codes / Part Numbers pKM2 pKM4 pKM8 pKNLAN pKT60 pKWI40 pKW40 pKW80 pMl pM2 pM4 pM8 pMDS6lO pMDX3015 pMDX3015 pMDX3016 pMDX3016 pMDX457 pMDX457 pMDX458 pMDX458 pMSA96 pNLAN sPCLINK pPCX344A pR286ASM pR286EDI pR286PLM pR286SSC pR86FOR sRCB4410 pRCX920 pRMX286 pRMXNET pS301 pS386 pSBCOlO pSBCOl2 pSBC020 pSBC028 pSBC040 pSBC056 pSBCI08 pSBC116 pSBC18603 pSBCI86410 pSBCI8651 pSBCI86530 pSBC18678 pSBCI8848 pSBCI8856 pSBC208 pSBC214 pSBC215 pSBC220 pSBC221 pSBC286lO pSBC28612 pSBC28614 sSBCOl2 sSBCI8603 sSBCI8651 sSBCI8848 sSBCI8856 sSBC208 sSBC220 sSBC286lO Intel Corporation Product Codesj Part Numbers SBC28616 SBC300 SBC30l SBC302 SBC304 SBC307 SBC3l4 SBC322 SBC324 SBC337 SBC34l SBC386 SBC386ll6 SBC386l20 SBC3862l SBC38622 SBC38624 SBC38628 SBC3863l SBC38632 SBC38634 SBC38638 SBC428 SBC464 SBC517 SBC5l9 SBC534 SBC548 SBC550 SBC550 SBC550 SBC552 SBC556 SBC569 SBC589 SBC604 SBC608 SBC6l4 SBC6l8 SBC655 SBC66ll SBC8010 SBC80204 SBC8024 SBC8030 SBC8605 SBC86l2 SBC86l4 SBC8630 SBC8635 SBC86C38 SBC8825 SBC8840 SBC8845 SBC905 SBCLNKOOl Intel Puerto Rico, Inc. Intel Puerto Rico II, Inc. Product Codes j Part Numbers pSBC286l6 pSBC300 pSBC30l pSBC302 pSBC304 pSBC307 pSBC3l4 pSBC322 pSBC324 pSBC337 pSBC34l pSBC386 pSBC386ll6 pSBC386l20 pSBC3862l pSBC38622 pSBC38624 pSBC38628 pSBC3863l pSBC38632 pSBC38634 pSBC38638 pSBC428 pSBC464 pSBC5l7 pSBC5l9 pSBC534 pSBC54S TSBC550 pSBC550 pSBC550 pSBC552 pSBC556 pSBC569 pSBC589 pSBC604 pSBC608 pSBC6l4 pSBC6l8 pSBC655 pSBC66ll pSBC8010 pSBC80204 pSBC8024 pSBC8030 pSBC8605 pSBC86l2 pSBC86l4 pSBC8630 pSBC8635 pSBC8825 pSBC8840 pSBC8845 pSBC905 pSBCLNKOOl Intel Corporation Product Codesj Part Numbers Intel Singapore, Ltd. Product Codesj Part Numbers SBCMEM310 SBCMEM3l2 SBCMEM320 SBCMEM340 SBE96 SBX2l7 SBX2l8 SBX270 SBX3ll SBX328 SBX33l SBX344 SBX350 SBX35l SBX354 SBX488 SBX586 SCHEMAIIPLD SCOM SDK5l SDK85 SDK86 SXM2l7 SXM286l2 SXM386 SXM544 SXM552 SXM95l SXM955 SYPl20 SYP30l SYP302 SYP31090 SYP311 SYP3847 SYR286 SYR86 SYSl20 SYS3l0 SYS3ll T60 TA096 TA252 TA452 Wl40 W280 W40 W80 XNX286DOC XNX286DOCB XNXIBASE XNXIDB XNXIDESK XNXIPLAN XNXIWORD sSBC386 sSBC428 sSBC5l9 sSBC534 sSBC556 " sSBC8024 sSBC8605 sSBC8630 sSBC8635 sSBC86C38 sSBC8825 sSBC8845 Intel Puerto Rico, Inc. Intel Puerto Rico II, Inc. Product Codes j Part Numbers Intel Singapore, Ltd • Product Codes j Part Numbers pSBCMEM310 pSBCMEM3l2 pSBCMEM320 pSBCMEM340 pSBE96 pSBX2l7 pSBX2l8 pSBX270 pSBX311 pSBX328 pSBX33l pSBX344 pSBX350 pSBX35l pSBX354 pSBX488 sSBX586 pSCHEMAIIPLD pSCOM pSDK5l pSDK85 pSDK86 pSXM2l7 pSXM286l2 pSXM386 pSXM544 pSXM552 pSXM95l pSXM955 pSYPl20 pSYP30l pSYP302 pSYP3l090 pSYP3ll pSYP3847 pSYR286 pSYR86 pSYSl20 pSYS310 pSYS3ll pT60 pTA096 pTA252 pTA452 pWl40 pW280 pW40 pW80 pXNX286DOC pXNX286DOCB pXNXIBASE pXNXIDB pXNXIDESK pXNXIPLAN pXNXIWORD xii CG/PCPN/1024BB OVERVIEW. I INTRODUCTION Intel microprocessors and peripherals provide a complete solution in increasingly complex application environments. Quite often, a single peripheral device will replace anywhere from 20 to 100 TTL devices (and the associated design time that goes with them). Built-in functions and standard Intel microprocessor/ peripheral interface deliver very real time and performance advantages to the designer of microprocessorbased systems. REDUCED TIME TO MARKET When you can purchase an off-the-shelf solution that replaces a number of discrete devices, you're also replacing all the design, testing, and debug time that goes with them. INCREASED RELIABILITY At Intel, the rate offailure for devices is carefully tracked. Highest reliability is a tangible goal that translates to higher reliability for your product, reduced downtime, and reduced repair costs. And as more and more functions are intergrated on a single VLSI device, the resulting system requires less power, produces less heat, and requires fewer mechanical connections-again resulting in greater system reliability. LOWER PRODUCTION COST By minimizing design time, increasing reliability, and replacing numerous parts, microprocessor and peripheral solutions can contribute dramatically to lower product costs. HIGHER SYSTEM PERFORMANCE Intel microprocessors and peripherals provide the highest system performance for the demands of today's (and tomorrow's) microprocessor-based applications. Forexampie, the 80386 32 bit offers the highest performance for multitasking, multiuser systems. Intel's peripheral products have been designed with the future in mind. They support all of Intel's 8, 16 and 32 bit processors. HOW TO USE THE GUIDE The following application guide illustrates the range of microprocessors and peripherals that can be used for the applictions in the vertical column of the left. The peripherals are grouped by the I/O function they control. CRT datacommunication, universal (user programmable), mass storage dynamic RAM controllers, and CPU/ bus support. An "X" in a horizontal application row indicates a potential peripheral or CPU, depending upon the features desired. For example, a conversational terminal could use either of the three display controllers, depending upon features like the number of characters per row or font capability. A "Y" indicates a likely candidate, for example, the 8272A Floppy Disk Controller in a small business computer. The Intel microprocessor and peripherals family provides a broad range of time-saving, high performance solutions. Get Your Kit Together! Intel's Microsystem Components Kit Solution MICROPROCESSOR 8088/80C88 8086/80C86 80186 80188 80286 386'·fL 386SX'·fL SUPER CHIP SET 82310/11 82230/31 82335 82350 NUMERIC PROCESSORS 8087 80287 80387 80387SX CPU SUPPORT 8231A 8253 8254/82C54 8255A/82C55A 8256AH 8279 82389 82370 DMA 8253 8237 82285 82380 82560 ~-,,,"" CACHE MEMORY DYNAMIC RAM * * CACHE CONTROL ~!:.&..:;;i MEMORY SUPPORT 8203 8206 8207 82C08 """""-,,, CRT CONTROL 82706 82716 82786 r.:.a$. I © Inlel1989 ~."';'h'''''''''''''~f"'~ SPECIAL PERIPHERAL CONTROL UPI'· 8041A/8741A UPI ,. 8042/8742 UPI'· 80/83/87C452 ~ '_A~'. <':_ ~:~:t;';:"';;;'<.';:,,~ * * * * * * * * " FLOPPY DISK . ' ~~~~ROL ~~ 82077 [""".1" HARD DISK CONTROL 82064 GLOBAL COMMUNICATIONS 8251A 82050 82510 8273 8274 8291 A/92/94 82530 ;: 8044/8344/8744 ':",y" r' , .t LOCAL AREA NETWORKING 82C501 82586 82588 82560 W 82590/92 i iMCC L~'0.". i,) *;' ~. INSTRUMENTATION BUS (GPIB) .: 8291 < 8292 , l~LU~'L.;.,::: !!;I TELEP, COMMUNICATIONS 2910/11/12 ........... " 29C13/C14/C16/C17 4.Mt29C48 .........,... 29C53AA ISP 188 89024 89C024XE *11)1 JlJj January 19B! Order Number: 230664-00' Memory Controllers 5 8203 64K DYNAMIC RAM CONTROLLER • Compatible with Intel® 8080A, • Fully 8085A, iAPX88, and iAPX 86 Family Provides All Signals Necessary to Control 64K and 16K Dynamic Memories Microprocessors • • Provides Address Multiplexing and • Strobes Provides a Refresh Timer and a • Refresh Counter Provides Refresh! Access Arbitration • Internal Clock Capability with the • 8203-1 and the 8203-3 Directly Addresses and Drives Up to 64 Devices Without External Drivers Decodes CPU Status for Advanced Read Capability in 16K Mode with the 8203-1 and the 8203-3. Provides System Acknowledge and • Transfer Acknowledge Signals Cycles May be Internally or • Refresh Externally Requested (For Transparent Refresh) Series Damping Resistors on • AllInternal RAM Outputs The Intel® 8203 is a Dynamic RAM System Controller designed to provide all signals necessary to use 64K or 16K Dynamic RAMs in microcomputer systems. The 8203 provides multiplexed addresses and address strobes, refresh logic, refresh/access arbitration. Refresh cycles can be started internally or externally. The 8203-1 and the 8203-3 support an internal crystal oscillator and Advanced Read Capability. The 8203-3 is a ±5% Vee part. A~-AH7 COlUWN ADDRESS AlO-AL7 .ow ""'"'ss Al, So 0iiS0 W, REFRESH C"""". iffi OuT, AiS2 5'======:1 R/33 "" i>CS--------l "'" .-0 "" GENERATOR SACK ..ex 210444-2 Figure 2. Pin Configuration 210444-1 Figure 1. 8203 Block Diagram 5-1 November 1987 Order Number: 210444-006 intJ 8203 Table 1. Pin Descriptions Symbol Pin No. Name and Function Type ALa AL1 AL2 AL;3 AL4 ALs AL6 6 8 10 12 14 16 18 ADDRESS LOW: CPU address inputs used to generate memory row address. AHa AH1 AH2 AH3 AH4 AHs AH6 5 4 3 2 1 39 38 ADDRESS HIGH: CPU address inputs used to generate memory column address. Bo/AL7 B1/0P1/ AH7 24 25 BANK SELECT INPUTS: Used to gate the appropriate RAS output for a memory cycle. B1 /OP1 option used to select the Advanced Read Mode. (Not available in 64K mode.) See Figure 5. When in 64K RAM Mode, pins 24 and 25 operate as the AL7 and AH7 address inputs. . PCS 33 I PROTECTED CHIP SELECT: Used to enable the memory read and write inputs. Once a cycle is started, it will not abort even if PCS goes inactive before cycle completion. WR 31 I MEMORY WRITE REQUEST. RD/S1 32 I MEMORY READ REQUEST: S1 function used in Advanced Read mode selected by OP1 (pin 25). REFRQ/ ALE 34 I EXTERNAL REFRESH REQUEST: ALE function used in Advanced Read mode, selected by OP1 (pin 25). OUTo OUT1 OUT2 OUT3 OUT4 OUTs OUT6 7 9 11 13 15 17 19 0 0 0 0 0 0 0 OUTPUT OF THE MULTIPLEXER: These outputs are designed to drive the addresses of the Dynamic RAM array. (Note that the OUT0-7 pins do not require inverters or drivers for proper operation.) WE 28 0 WRITE ENABLE: Drives the Write Enable inputs of the Dynamic RAM array. CAS 27 0 COLUMN ADDRESS STROBE: This output is used to latch the Column Address into the Dynamic RAM array. RASa RAS 1 RAS2/ OUT7 RAS3/BO 21 22 23 0 0 0 ROW ADDRESS STROBE: Used to latch the Row Address into the bank of dynamic RAMs, selected by the 8203 Bank Select pins (Bo, B1 /OP1). In 64K mode, only RASa and RAS1 are available; pin 23 operates as OUT7 and pin 26 operates as the Bo bank select input. 26 I/O XACK 29 0 TRANSFER ACKNOWLEDGE: This outputis a strobe indicating valid data during a read cycle or data written during a write cycle. XACK can be used to latch valid data from the RAM array. 5-2 inter 8203 Table 1. Pin Descriptions (Continued) Symbol Pin No. Type Name and Function SACK 30 0 SYSTEM ACKNOWLEDGE: This output indicates the beginning of a memory access cycle. It can be used as an advanced transfer acknowledge to eliminate wait states. (Note: If a memory access request is made during a refresh cycle, SACK is delayed until XACK in the memory access cycle). XO/OP2 X1/ClK 36 37 I/O I/O OSCILLATOR INPUTS: These inputs are designed for a quartz crystal to control the frequency of the oscillator. If XO/OP2 is shorted to pin 40 (Vecl or if XO/OP2 is connected to + 12V through a 1 Kfl. resistor then X1 /ClK becomes a TTL input for an external clock. (Note: Crystal mode for the 8203-1 and the 8203-3 only). 16K/64K 35 I Vee 40 POWER SUPPLY: GND 20 GROUND. MODE SELECT: This input selects 16K mode or 64K mode. Pins 23-26 change function based on the mode of operation. + 5V. transitions are synchronous with respect to this clock reference, except for the trailing edges of the CPU handshake signals SACK and XACK. FUNCTIONAL DESCRIPTION The 8203 provides a complete dynamic RAM controller for microprocessor systems as well as expansion memory boards. CPU memory requests normally use the RD and WR inputs. The Advanced-Read mode allows ALE and S1 to be used in place of the RD input. The 8203 has two modes, one for 16K dynamic RAMs and one for 64Ks, controlled by pin 35. Failsafe refresh is provided via an internal timer which generates refresh requests. Refresh requests can also be generated via the REFRQ input. ,-- WE Xo I cs=l= I I I RASO X1 -=- An on-chip synchronizer/arbiter prevents memory and refresh requests from affecting a cycle in progress. The READ, WRITE, and external REFRESH requests may be asynchronous to. the 8203 clock; on-chip logiC will synchronize the requests, and the arbiter will decide if the requests should be delayed, pending completion of a cycle in progress. CAS t::I 1KU ~ 5% CS.,L. 8203-1 T I _I 8203-3 68011 1·5% RAS1 or RAS2 -=- RAS3 XACK Cs<10pF Fundamental XTAL 16K/64 Option Selection SACK Pin 35 is a strap input that controls the two 8203 modes. Figure 4 shows the four pins that are multi· plexed. In 16K mode (pin 35 tied to Vee or left open), the 8203 has two Bank Select inputs to select one of four RAS outputs. In this mode, the 8203 is exactly compatible with the Intel 8202A Dynamic RAM Controller. In 64K mode (pin 35 tied to GND), there is only one Bank Select input (pin 26) to select the two RAS outputs. More than two banks of 64K dynamic RAMs can be used with external logic. 210444-4 Figure 3. Crystal Operation for the 8203·1 and 8203·3 All 8203 timing is generated from a single reference clock. This clock is provided via an external oscillator or an on-chip crystal oscillator: All output signal 5-3 8203 Other Option Selections Address Multiplexer The 8203 has two strapping options. When OP1 is selected (16K mode only), pin 32 changes from a RD input to an S1 input, and pin 34 changes from a REFRQ input to an ALE input. See "Refresh Cycles" and "Read Cycles" for more detail. OP1 is selected by tying pin 25 to + 12V through a 5.1 K!l. resistor on the 8203-1 or 8203-3 only. When OP2 is selected, the internal oscillator is disabled and pin 37 changes from a crystal input (X1) to a ClK input for an external TTL clock. OP2 is selected by shorting pin 36 (XO/OP2) directly to pin 40 (Vee). No current limiting resistor should be used. OP2 may. also be selected by tying pin 36 to + 12V through a 1 K!l. resistor. The address multiplexer· takes the address inputs and the refresh counter outputs, and gates them . onto the address outputs at the appropriate time. The address outputs, in conjunction with the RAS and CAS outputs, determine the address used by .the dynamic RAMs for read, write, and refresh cycles. During the first part of a read or write cycle, Alo-Al7 are gated to OUTo-OUT7, then AHo-AH7 are gated to the address outputs.. During a refresh cycle, the refresh counter is gated onto the address outputs. All refresh cycles are RAS-only refresh (CAS inactive, RAS active). To minimize buffer delay, the information on the address outputs is inverted from that on the address inputs. Refresh Timer The refresh timer is used to monitor the time since the last refresh cycle occurred. When the appropriate amount of time has elapsed, the refresh timer will request a refresh cycle. External refresh requests will reset .the refresh timer. Refresh Counter The refresh counter is used to sequentially refresh all of the memory's rows. The 8-bit counter is incremented after every refresh cycle. Pin # 16K Function 64K Function 23 24 25 26 RAS2 Bank Select (Bo) Bank Select (B1) RAS3 Address Output (OUT7) Address Input (Al7) Address Input (AH7) Bank Select (Bo) OUTo-OUT7 do not need inverters or buffers unless additional drive is required. Synchronizer!Arbiter The 8203 has three inputs, REFRQ/ Al~in 34), RD (pin 32) and WR (pin 31). The RD and YVR inputs allow an external CPU to request a memory read or write cycle, respectively. The REFRQ/ ALE input allows refresh requests to be requested external to the 8203. All three of these inputs may be asynchronous with respect to the 8203's clock. The arbiter will resolve conflicts between refresh and memory requests, for both pending cycles and cycles in progress. Read and write requests will be given priority over refresh requests. Figure 4. 16K/64K Mode Selection System Operation Inputs 16K Mode 64K Mode Outputs B1 Bo RASo RAS1 RAS2 RAS3 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 0 -. 0 1 0 1 - - b 1 1 1 0 - The 8203 is always in one of the following states: a) IDLE b) TEST Cycle c) REFRESH Cycle d) READ Cycle e) WRITE Cycle The 8203 is normally in the IDLE state. Whenever one of the other cycles is requested, the 8203 will - Figure 5. Bank Selection Description Pin # Normal Function Option Function B1/0P1 (16K only)/ AH7 25 Bank (RAS) Select XO/OP2 36 Crystal Oscillator (8203-1 and 8203-3) External Oscillator Figure 6. 8203 Option Selection , 5-4 Advanced-Read Mode (8203-1, -3) 8203 leave the IDLE state to perform the desired cycle. If no other cycles are pending, the 8203 will return to the IDLE state. If the 8203 is not in the idle state then a simultaneous memory request and an external refresh request may result in the refresh request being honored first. Test Cycle The TEST Cycle is used to check operation of several 8203 internal functions. TEST cycles are requested by activating the PCS, RD and WR inputs. The TEST Cycle will reset the refresh address counter and perform a WRITE Cycle. The TEST Cycle should not be used in normal system operation, since it would affect the dynamic RAM refresh. So ~r--- 6085A5, REFRO . 8203 , SACK 0' CAS 210444-5 Figure 7. Hidden Refresh Refresh Cycles Certain system configurations require complete external refresh requests. If external refresh is requested faster than the minimum internal refresh timer (tREF), then, in effect, all refresh cycles will be caused by the external refresh request, and the internal refresh timer will never generate a refresh request. The 8203 has two ways of providing dynamic RAM refresh: 1) Internal (failsafe) refresh 2) External (hidden) refresh Both types of 8203 refresh cycles activate all of the RAS outputs, while CAS, WE, SACK, and XACK remain inactive. Read Cycles Internal refresh is generated by the on-chip refresh timer. The timer uses the 8203 clock to ensure that refresh of all rows of the dynamic RAM occurs every 2 milliseconds (128 cycles) or every 4 milliseconds (256 cycles). If REFRO is inactive, the refresh timer will request a refresh cycle every 10-16 microseconds. The 8203 can accept two different types of memory Read requests: 1) Normal Read, via the RD input 2) Advanced Read, using the S1 and ALE inputs (16K mode only) The user can select the desired Read request configuration via the B1/0P1 hardware strapping option on pin 25. External refresh is requested via the REFRO input (pin 34). External refresh control is not available when the Advanced-Read mode is selected. External refresh requests are latched, then synchronized to the 8203 clock. Pin 25 Pin 32 Pin 34 # RAM Banks Ext. Refresh The arbiter will allow the refresh request to start a refresh cycle only if the 8203 is not in the middle of a cycle. When the 8203 is in the idle state a simultaneous memory request and external refresh request will result in the memory request being honored first. This 8203 characteristic can be used to "hide" refresh cycles during system operation. A circuit similar to Figure 7 can be used to decode the CPU's instruction fetch status to generate an external refresh request. The refresh request is latched while the 8203 performs the instruction fetch; the refresh cycle will start immediately after the memory cycle is completed, even if the RD input has not gone inactive. If the CPU's instruction decode time is long enough, the 8203 can complete the refresh cycle before the next memory request is generated. Normal Read Advanced Read B11nput RD Input REFRO Input 4 (RASo_3) Yes OP1 (+12V) S1 Input ALE Input 2 (RAS2_3) No Figure 8. 8203 Read Options Normal Reads are requested by activating the RD input, and keeping it active until the 8203 responds with an XACK pulse. The RD input can go inactive as soon as the command hold time (tCHS) is met. Advanced Read cycles are requested by pulsing ALE while S1 is active; if S1 is inactive (low) ALE is ignored. Advanced Read timing is similar to Normal Read timing, except the falling edge of ALE is used as the cycle start reference. 5-5 8203 If a Read cycle is requested while a refresh cycle is in progress, then the 8203 will set the internal delayed-SACK latch. When the Read cycle is eventually started, the 8203 will delay the active SACK transition until XACK goes active, as shown in the A.C. timing diagrams. This delay was designed to compensate for the CPU's READY setup and hold times. The delayed-SACK latch is cleared after every READ cycle. designed to have a system error rate less than 1 memory cycle every three years based on the full operating range of the 8203. A microprocessor system is concerned when the data is valid after RD goes low. See Figure 9. In order to calculate memory read access times, the dynamic RAM's A.C. specifications must be examined, especially the RAS-access.time (tRAd and the CAS-access time (tcAd. Most configurations will be CAS-access limited; i.e., the data from the RAM will be stable tcc max (8203) + tCAC (RAM) after a memory read cycie is started. Be sure to add any delays (due to buffers, data latches, etc.) to calculate the overall read access time. Based on system requirements, either SACK or XACK can be used to generate the CPU READY signal. XACK will normally be used; if the CPU can tolerate an advanced READY, then SACK can be used, but only if the CPU can tolerate the amount of advance provided by SACK. If SACK arrives too early to provide the appropriate number of WAIT states, then either XACK or a delayed form of SACK should be used. Since the 8203 normally performs "early-write" cycles, the data must be stable at the RAM data inputs by the time CAS goes active, including the RAM's data setup time. If the system does not normally guarantee sufficient write data setup, you must either delay the WR input signal or delay the 8203 WE output. Write Cycles Write cycles are similar to Normal Read cycles, except for the WE output. WE is held inactive for Read cycles, but goes active for Write cycles. All 8203 Write cycles are "early-write" cycles; WE goes active before CAS goes active by an amount of time sufficient to keep the dynamic RAM output buffers turned off. Delaying the WR input will delay all 8203 timing, including the READY handshake signals, SACK and XACK, which may increase the number of WAIT states generated by the CPU. Ao~, '--------:-,- - - - - ' / General System Considerations f4:.---tRLDV~ , B: ,..-----, All memory requests (Normal Reads, Advanced Reads, Writes) are qualified by the PCS input. PCS should be stable, either active or inactive, prior to the leading edge of RD, WR, or ALE. Systems which use battery backup should pull up PCS to prevent erroneous memory requests. DATA-----« , , , ! , L..--tRAC---" RAS---',\ I tCAC I !I I '--f In order to minimize propagation delay, the 8203 uses an inverting address multiplexer without latches. The system must provide adequate address setup and hold times to guarantee RAS and CAS setup and hold times for the RAM. The tAD A.C. parameter should be used for this system calculation. CAS------""'\ 210444-6 Figure 9. Read Access Time If the WE output is externally delayed beyond the CAS active transition, then the RAM will use the failing edge of WE to strobe the write data into the RAM. This WE transition should not occur too late during the CAS active transition, or else the WE to CAS requirements of the RAM will not be met. The Bo-B1 inputs are similar to the address inputs in that they are not latched. Bo andB1 should not be changed durin~memory cycle, since they directly control which RAS output is activated. The 8203 uses a two-stage synchronizer for the memory request inputs (RD, WR, ALE), and a separate two stage synchronizer for the external refresh input (REFRQ). As with any synchronizer, there is always a finite probability of metastable states inducing system errors. The 8203 synchronizer was The RASo_3, CAS, OUTO_7' and WE outputs contain on-chip series damping resistors (typically 20n) to minimize overshoot. 5-6 8203 adding pull-up resistors to the 8203's outputs. Intel RAMs do not require pull-up resistors. Some dynamic RAMs require more than 2.4V VIH. Noise immunity may be improved for these RAMs by - DYNAMIC RAM ARRAY A8-1S ALE B088 ADO_7 RD WR AlO-6 ~ OITiO-6 AHO-6 --,I AO-6 ::: CAS f- BO_1 B203 (16K MODE) WE CAS P -c RD/51 WR - RASO RAS1~ RAS2 SACK RAS3 WE AAS DIN DOUT T. Ll -,\r--- I"" AD-6 f=: I--- CAS RAS + + XACK WE DcNDOUT T L.....,r--- r"" L-.. D'N DouT ~ i--o ~ AO-6 WE CAS RAS OINDOUT Tl: - D'N DOUT l...l D'N DOUT D' Ab-6 BAL D'N ~~A DATA BUS ~ DIN DIN } NDour Dour Dour DoUT ~T T-r 1 1 1 DATA IN / LATCH \. - WE DiN CAS D'N Dour RAS Dour DIN DouT \I 210444-7 Figure 10. Typical 8088 System 5-7 inter 8203 MULTlBUS· TYPe SYSTEM BUS 8284A READ 8288 "'OC WRITE MWTC ROY 8086 BHEN I I I READ WRITE . X~:~~R I-+-+------I-~_i>_---I UP HIGH BYTE WRITE A17-419 /:--="'--"J OTHER IlEMORY READY INPUTS .58. BYlES DATA DO OJ ,. 16 I I I XACK I 210444-8 Figure 11. 8086/256K Byte System 5-8 inter 8203 • Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias ...... o·c to 70·C + 150·C Storage Temperature .......... - 65·C to Voltage On Any Pin With Respect to Ground ......... - 0.5V to + 7V Power Dissipation ...................... 1.6 Watts D.C. CHARACTERISTICS Symbol T A = o·C to 70·C; Vcc = 5.0V Parameter Min Max ± 10% (5.0V ± 5% for 8203-3); GND Units Vcc Input Clamp Voltage -1.0 V Icc Power Supply Current 290 mA IF Forward Input Current ClK, 64K/16K Mode Select All Other Inputs(3) -2.0 -320 mA iJ-A VF = 0.45V VF = 0.45V 40 iJ-A VR = Vcd 1, 5) 0.45 0.45 V V IOL = 5 mA IOL = 3 mA V V VIL = 0.65V IOH = -1 mA IOH = -1 mA 0.8 V Vcc = 5.0V(2) Vcc V Vcc = 5.0V Vcc V (4) 30 pF F = 1 MHz(6) VSIAS = 2.5V, Vcc = 5V IR Reverse Input Current(3) VOL Output low Voltage SACK,XACK All Other Outputs VOH VIL Output High Voltage SACK,XACK All Other Outputs 2.4 2.6 Input low Voltage VIH1 Input High Voltage VIH2 Option Voltage CIN Input Capacitance 2.0 Ic= -5mA NOTES: 1. 2. 3. 4. = OV Test Conditions IR = 200 p.A for pin 37 (ClK). For test mode RD & WR must be held at GND. Except for pin 36 in XTAL mode. 8203-1 and 8203-3 support both OP1 and OP2, 8203 only supports OP2. +12 Volt 5.1K\I 25 ±10% OP, 8203 lK Resistor Tolerance: 36 :::!:: Of>:! 5% 210444-3 5. IR = 150 p.A for pin 35 (Mode Select 16K/64K). 6. Sampled not 100% tested, TA = 25°C. 5-9 inter 8203 A.C. CHARACTERISTICS TJ = o·C to 70·C; vcc = 5V ± 10% (5.0V ±5% for 8203-3); GND = OV . Measurements made with respect to RASa-RAS3, CAS, WE, OUTa-OUT6 are at 2.4V and 0.8V. All other pins are measured at 1.5V. All times are in ns. Symbol Parameter Notes Min Max tp Clock Period 40 54 tpH External clock High Time 20 tpL External Clock Low Time-:-Above (» 20 MHz 17 tpL External Clock Low Time-Selow (";:) 20 MHz tRC Memory Cycle Time tREF Refresh Time (128 cycles) tRP RAS Precharge Time 4tp - 30 tRSH RAS Hold After CAS 5tp - 30 3 tASR Address Setup to RAS tp - 30 3 tRAH Address Hold From RAS tp - 10 3 tASC Address Setup to CAS tp - 30 3 tCAH Address Hold from CAS 5tp - 20 3 tCAs CAS Pulse Width 5tp - 10 twcs WE Setup to CAS tp - 40 tWCH WE Hold After CAS 5tp - 35 8 tRS RD, WR, ALE, REFRQ Delay From RAS 5tp 2,6 tMRP RD, WR Setup to RAS 0 5 tRMS REFRQ Setup to RD, WR 2tp 6 tRMP REFRQ Setup to RAS 2tp 5 tpcs PCS Setup to RD, WR, ALE 20 tAL S1 Setup to ALE 15 tLA S1 Hold From ALE 30 tCR RD, WR, ALE to RAS Delay tp tp 20 10tp - 30 12tp 264tp 2a8tp + 30 + 25 2tp + 70 + 85 4,5 2 tcc RD, WR, ALE to CAS Delay tsc CMD Setup to Clock 15 1 tMRS RD, WR Setup to REFRQ 5 2 4tp tCA RD, WR, ALE to SACK Delay tcx CAS to XACK Delay 5tp - 25 5tp tcs CAS to SACK Delay 5tp - 25 5tp tACK XACK to CAS Setup 10 txw XACK Pulse Width tCK SACK, XACK Turn-Off Delay tKCH CMD Inactive Hold After SACK, XACK 2tp + 47 + 20 + 40 tp - 25 5-10 2,9 2, 10 7 35 10 2 inter 8203 A.C. CHARACTERISTICS (Continued) TJ = O°C to 70°C; VCC = sv ± 10% (S.OV ±S% for 8203-3); GND = OV Measurements made with respect to RASa-RAS3, CAS, WE, OUTa-OUT 6 are at 2.4V and 0.8V. All other pins are measured at 1.SV. All times are in ns. Symbol Parameter Min tLL REFRQ Pulse Width 20 tCHS CMD Hold Time 30 tRFR REFRQ to RAS Delay Max Notes 11 4tp + 100 6 tww WR to WE Delay 0 SO 8 tAD CPU Address Delay 0 40 3 NOTES: 1. tsc is a reference point only. ALE, RD, WR, and REFRQ inputs do not have to be externally synchronized to 8203 clock. 2. If tRS min and tMRS min are met then tCA, tCR, and tcc are valid, otherwise tcs is valid. 3. tASR, tRAH, tASC, tCAH, and tRSH depend upon Bo-B1 and CPU address remaining stable throughout the memory cycle. The address inputs are not latched by the 8203. 4. For back-to-back refresh cycles, tRC max = 13 tp. 5. tRC max is valid only if tRMP min is met (READ, WRITE followed by REFRESH) or tMRP min is met (REFRESH followed by READ, WRITE). 6. tRFR is valid only if tRS min and tRMS min are met. 7. txw min applies when RD, WR has already gone high. Otherwise XACK follows RD, WR. 8. WE goes high according to tWCH or tww, whichever occurs first. 9. tCA applies only when in normal SACK mode. 10. tcs applies only when in delayed SACK mode. 11. tCHS must be met only to ensure a SACK active pulse when in delayed SACK mode. XACK will always be activated for at least txw (tp - 25 ns). Violating tCHS min does not otherwise affect device operation. WAVEFORMS Normal Read or Write Cycle 210444-9 S-11 inter 8203 WAVEFORMS (Continued) Advanced Read Mode 51 _______{ tAL· -tLA}---------------- ALE tRS---'- 4--~~--~-------------------J 210444-10 Memory Compatibility Timing Al: '; ~6' ~~_-VALIDADD-RESS AHO-AHS . ~ _ _. -~'A~- ------------- • --~~- \ 'I tRSH I teAs / r\ _'ASR_ ~ ROW ~'ASC- I--'RAH .... ~ I---'CAH_ COLUMN K 210444-11 5-12 intJ 8203 WAVEFORMS (Continued) Write Cycle Timing I \ J \. .1 IC~-\ -MIN - .1 ICA -MAX- 1/ \ ..... twcs __ . _tWCH - IWW MAX IWWH MIN 'I . ICC MIN ICC MAX 210444-12 Read or Write Followed By External Refresh RD, ViA \ \. _ _IMRS _ REFRQ j I-:---IRS- ILl_ / \ \ . tAMP I-IAP-'-- ICA ---MAX- 1\ . . . ICC MIN ICC MAX lAC .\ .-t X 210444-13 5-13 8203 WAVEFORMS (Continued) External Refresh Followed By Read or Write ---l::::::::-'MR-P-=--=---~----------~----------REFRQ i------1nc - - - - - - \ \----210444-14 Clock and System Timing. __ tp_ elK RD. WR, ALE 210444-15 5-14 8203 The typical rising and fallin~haracteristic curves for the OUT, RAS, CAS and WE output buffers can be used to determine the effects of capacitive loading on the A.C. Timing Parameters. Using this design tool in conjunction with the timing waveforms, the designer can determine typical timing shifts based on system capacitive load. Table 2. 8203 Output Loading. All specifications are for the Test Load unless otherwise noted. Test Load Pin SACK, XACK OUTo-OUT6 RASo-RAS3 WE CAS CL CL CL CL CL 30 pF 160 pF = 60 pF = 224 pF = 320 pF = = Example: Find the effect on tCR and tcc using 32 64K Dynamic RAMs configured in 2 banks. 1) Determine the typical RAS and CAS capacitance: From the data sheet RAS = 5 pF and CAS 5 pF. A.C. TESTING LOAD CIRCUIT :. RAS load = 80 pF DEVICE UNDER TEST CAS load + board capacitance. = 160 pF + board capacitance. Assume 2 pF/in (trace length) for board ca· pacitance and for this example 4 inches for RAS and 8 inches for CAS. 2) From the waveform diagrams, we determine that the falling edge timing is needed for tCR and tcc. Next find the curve that best approximates the test load; i.e., 68 pF for RAS and 330 pF for CAS. 210444-16 NOTE: CL includes jig capacitance. 3) If we use 88 pF for RAS loading, then tCR (min.) spec should be increased by about 1 ns, and tCR (max.) spec should be increased by about 2 ns. Similarly if we use 176 pF for CAS, then tce (min.) should decrease by 3 ns and tee (max.) should decrease by about 7 ns. 5-15 8203 A.C. CHARACTERISTICS FOR DIFFERENT CAPACITIVE LOADS 1.0 r-_-,---r_ _-;_ _ _.,-_ _--r_ _ _,--_ _-,-_ _- ,_ _ __._---'C:;.;ATPA;.::.CI:;.;TA.;;.;N;.::.CE:.;.'-";PF 0 .• I---+-~~ ....311ii~~--+_--_1__--__1_--__4---'---_1__---l o.o~--~--_t---~--~---L---~--~---L----L--~ TIME r--In.~ 210444-17 5.• r-_ _~--t---T_--_._--.__--.__--_,_--....._--=CA:::;PA:::C::..::ITA::::N=C.~'.,. ~ ~ ... t---+--;-~r'rt_~~~--+-__+--+--I_____f o TIME NOTE: 210444-18 Use the Test Load as the base capacitance for estimating timing shifts for system critical timing parameters. MEASUREMENT CONDITIONS Pins not measured are loaded with the Test Load capacitance TA = 25°C Vee = +5V tp = 50 ns 5-16 8206 ERROR DETECTION AND CORRECTION UNIT • Input and Output Busses.......No • Separate Timing Strobes Required Detects All Single Bit, and Double Bit and Most Multiple Bit Errors All Single Bit Errors • Corrects 8206-1 3 Selections • Detection 35ns Correction • 8206 42ns 67 ns 55ns Supports Read With and Without Correction, Writes, Partial (Byte) Writes, and Read-Modify-Writes III Technology for Low Power • 68HMOS Pin Leadless JEDEC Package • • Outputs for Error Logging • Syndrome Error Scrubbing with 8207 • Automatic Expandable to Handle 80 Bit Memories • 68 Pin Grid Array Package The HMOS 8206 Error Detection and Correction Unit is a high-speed device that provides error detection and correction for memory systems (static and dynamic) requiring high reliability and performance. Each 8206 handles 8 or 16 data bits and up to 8 check bits. 8206's can be cascaded to provide correction and detection for up to 80 bits of data. Other 8206 features include the ability to handle byte writes, memory initialization, and error logging. , DATA IN LATCH ST. CBlISY1 0 ., CHECK BIT LATCH • --/- ERR GENERATOR CHECK BIT SYNDROME PARTIAL PARITY Cf t • • u· SYNDROME DECODER ERROR DETECTION 'llf + WRITE PARTIAL PARITY GENERATOR -T i----;::C1' "::.A_ _-,P..:;SE:::L,", .sv- STa ACKA -4---- 12,. '. PPI I I J "'-'W-;:C~'~SV=-'-~D~'. , PPO ~ CACT MASTER CRCT .... STB -+5V SLAVE wz P-,4-1f---<1 WZ· 1M MARK ~ BYTE DOIWDI t--+-+-----H'j t= r=F=ln=l=t~~~~~~~ 8M .. DOIWDI '1 r----+~---,~ .. W v ~~~ ~'D '-------4-----------+---......~.jST~ATCHOE PORTA PORTS 205220-7 Figure 6. Dual Port RAM Subsystem with 8206 8207 (32-bit bus) 5-26 8206 generate the desired check bits, through the use of the 8206 Hamming code. To read out the check bits it is first necessary to fill the data memory with all zeros, which may be done by activating WZ and incrementing memory addresses with WE to the check bits memory held inactive, and then performing ordinary reads. The check bits will then appear directly at the SYO outputs, with bits CSO and CS1 inverted. MEMORY BOARD TESTING The 8206 lends itself to straightforward memory board testing with a minimum of hardware overhead. The following is a description of four common test modes and their implementation. Mode 0- Read and write with error correction. Implementation: This mode is the normal 8206 operating mode. Mode 1- Read and write data with error correction disabled to allow test of data memory. Implementation: This mode is performed with CRCT deactivated. Mode 3- Write data, without altering or writing check bits, to allow the storage of bit combinations to cause error correction and detection. Mode 2- Read and write check bits with error correction disabled to allow test of check bits memory. Implementation: This mode is implemented b~iting the desired word to memory with WE to the check bits array held inactive. Implementation: Any pattern may be written into the check bits memory by judiciously choosing the proper data word to 5-27 intJ 8206 BOTTOM TOP s ~ is ~ ~ is ~ ~ g g "r---------'Ig ~ r---------, a ~ VIZ BMO BMI J ""[ Y0 7 SY03 01, Vss Vee ]SYO, SYO, PIN NO.1 MARK 205220-9 "r EIIlWlI A W ] 01, PPI7 PPls ~\j E'l!!lrl ~ '=-------!."'-------! "'alE .t-~ OJ '" iii U GI U .. .. .. ii: 205220-10 NOTE: 68 pin JEDEC TYPE A hermetic chip carrier Figure 8a. 8206 Leadless Chip Carrier (LCC) Pinout Diagram Top View - 68 - 66 • 64 - 62 - 60 - 58 - 56 - 54 - 52 .. 50- 49 - 44- 43 - 9 -10 -13-14 r-- 1.165 (29.591) 1_ "f.135 (28.829) - D 00000 0 o~~. SWAGED PIN RI@)@)@)@)@)@)@)@@) STANDOFF. ' 0 @) @)@) (4 PLACES) 0 @) @)@) .070 TYP. (1.778) L r I _ 15 _ 16 -17-19-21-23-25-27-29-31-33-36-35 - 18 - 20 - 22 - 24 @)@) 1.165 (29.591) @) @)@) 1i35 (28 829) @) @)@) . .122 (3.099) .060 (1.524) o @ ) @ ) @ ) L - . [ · 0 9 8 (2.489) ~040 (1.016) STANDOFF o @) @)@) .140 MAX I t j(3.556)..-T" (4.318) ~@@)@)@)@) @)@)@)8 T ' 1£ - .170 .150 (3.810) @)@)@)@)@)@)@)@)@) STANDOFF::') k'10 (2.794)f..~ _ I (2.286) .090 (2.286) .017 (0.431) ~~l.000REF----' .060 ('.524) ~@) - 38 - 37 VPIN 1 10 I . 0 0 ~ I!Jlf 0 DDDOD 0 []!a 26 - 28 - 30 - 32 - 34 f! 0:5Mi NOTE: 68 lead ceramic pin grid array package, type A Figure 8b. 8206 Pin Grid Array (PGA) Package and Pinout Diagram 5-28 205220-,3 inter 8206 • Notice: Stresses above those listed under 'i'lbsolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias ...... O°C to 70°C Storage Temperature .......... - 65°C to + 150°C Voltage On Any Pin with Respect to Ground .......... - 0.5V to + 7V Power Dissipation .......................... 1.5W D.C. CHARACTERISTICS Symbol Icc TA = O°Cto 70°C, Vcc = 5.0V ± 10%, VSS = GND Parameter Min Power Supply Current -Single 8206 or Slave #1 -Master in Multi-Chip or Slaves # 2, 3, 4 Max Units 270 mA 230 mA Test Conditions VIL(1) Input Low Voltage -0.5 0.8 V VIH(1) Input High Voltage 2.0 Vcc + 0.5V V VOL Output Low Voltage -DO -All Others 0.45 0.45 V V IOL = 8 mA IOL = 2.0 mA V V IOH = -2mA IOH = -0.4 mA VOH ILO III Output High Voltage -DO,CBO -All Other Outputs 2.6 2.4 I O Leakage Current -PPI4 CE -DO WDI 0_15 ±20 ±10 LA LA 0.45V ::0: Vila ::0: Vcc Input Leakage Current -PPI0-3, 5-7, CBI6·7, SEDCU(2) -All Other Input Only Pins :1:20 ±10 LA LA OV ::0: VIN ::0: Vcc NOTES: 1. SEDCU (pin 3) and MIS (pin 4) are device strapping options and should be tied to Vcc or GND. VIH min = Vcc -0.5V and VIL max = O.5V. 2. PP10-7 (pins 13-20) and CBle.7 (pins 11, 12) have internal pull-up resistors and if left unconnected will be pulled to VCC. A.C. TESTING LOAD CIRCUIT A.C. TESTING INPUT, OUTPUT WAVEFORM u=x . . data-cf-modified-14310bab3f9b348f1a9d6901-=""> 2.0 0.8 0.45 TEST POINTS < 2.0 0.8 x:= DEVICE UNDER TEST 205220-14 A.C. Testing: Inputs are driven at 2.4V for a Logic "1" and 0.45V for a Logic "0". Timing measurements are made at 2.0V for a Logic "1" and O.8V for a Logic "0". 205220-15 CL Includes Jig Capacitance 5-29 8206 A.C. CHARACTERISTICS = O°C to 70°C. VCC = +5V ± TA Symbol 10%. VSS = OV. RL = 220. CL = 50 pF; all times are in ns 8206-1 Parameter Min Max 8206 Min Notes Max TRHEV ERROR Valid from R/Vil i 20 25 TRHCV CE Valid from R/W i (Single 8206) 34 44 TRHQV Corrected Data Valid from RW i 44 54 1 TRVSV SYO/CBO/PPO Valid from R/W 32 42 1 TOVEV ERROR Valid from Data/Check Bits In 35 42 Tovcv CE Valid from Data/Check Bits In 50 70 TOVQV Corrected Data Valid from Data/Check Bits In 55 67 Tovsv SYO/PPO Valid from Data/Check Bits In 40 55 TSHQV Corrected Data Access Time TSXQX Hold Time from Data/Check Bits In TSLQZ Corrected Data Float Delay 0 TSHIV STB High to Data/Check Bits In Valid 30 TIVSL Data/Check Bits In to STB TSLIX Data/Check Bits In from STB .J, Hold J, 37 35 0 0 Set-Up 25 0 1 28 30 5 5 15 25 1 2 TpVEV ERROR Valid from Partial Parity In 21 30 3 TpVQV Corrected Data (Master) from Partial Parity In 46 61 1. :3 Tpvsv Syndrome/Check Bits Out from Partial Parity In 32 43 1.3 TSVQV Corrected Data (Slave) Valid from Syndrome 41 51 3 Tsvcv CE Valid from Syndrome (Slave Number 1) 43 48 3 TQVQV Check Bits/Partial Parity Out from Write Data In TRHSX Check Bits/Partial Parity Out from R/W. WZ Hold 0 0 TRLSX Syndrome Out from R/W Hold 0 0 TQXQX Hold Time from Write Data In 0 0 1 TSVRL Syndrome Out to R/W J, Set-Up 5 17 3 TOVRL Data/Check Bits to R/W Set-Up 24 39 1 44 64 TOVQU Uncorrected Data Out from Data In 29 32 TTVQV Corrected Data Out from CRCT J, 25 30 TWLQL WZ J, to Zero Out TWHQX Zero Out from WZ i Hold 25 0 NOTES: 1. A.C. Test Levels for eso and 00 are 2.4V and O.BV. 2. TSHIV is required to guarantee output delay timings: TDVEV. TDVCV. TDVQV. TDVSV. TSHIV pulse width of 35 ns. 3. Not required for B/16 bit systems. 5-30 1 1 30 0 0 + TIVSL guarantees a min STS inter 8206 WAVEFORMS READ STB7: l I:SHI~I' N'-----4-1----I~ ·1 TiVSl RIW_--I'~ 1 1 : 1 1 1 1 1 1 ~ ~ ---;-1: ~I ~1 ' - - - - - 1 -!' cg: DO I 1 1 1 1 j--TBHOV-j 1 i -----<} i 1• 1TRHOV I I "',. 1 1 1 1 1 r--- TBlOl ~: .1 I ~'"'.. W~MVALIO : I, SYO I TRVSV , I fC 1 1 ~.+-1- - - - T D V O V ' - - - - - - J . I 1 !. ~l~TRHEV:::::;:::;:::;:~~_ ERROR ---+-i >W/ffff//A 141 14 1 x= _ I VALID ---f----': I _I TOVEV Tovev ~ 1 l'M 1-4+-1- - _ · T O v s v _ _ _--+!.1 -I ~ 1 1 ----+----t-"!>0'm7hW ~ _I 1 . _I 1 x== _~I~I~.~~~TR~HeV~~~~~.I~------~1 W~A eE _ _ VALID 205220-16 5-31 inter 8206 WAVEFORMS (Continued) READ-MASTER/SLAVE ft'-------I '" :),l--lTsHlv I 1 1 , 1 Rw_~UI V 1 ,-I ' , I TSLlX, TlVSL''----.l ~ 1 , 1:7t ' -----',--'-,-' ----<¢ i I " , i I' I ~ ""," I TRVSVI:I ::.~~:~:::: _w~a , 1 I i I i I-TDXOX_, 1 ""'" x.-'--:- -l ,__ TP~ , 1 -WYL7$ OOIMASTER) - - - . - - - - : I 1 VALID I DOISLAVE) : 4L 1 $1I '_TPVSV_I SYO(MASTER)~>47//;WA/// SYI(SLAVE)- I '" '{~---r:--- : I' 1 ~ cg: Ir--, TBLOZ _ _ XI_ : VALID 4 , , 1_Tsvov-i I -----'-I-ez!7AWA VALID ~ I ~~~, , Vo/~'~~TR~HEV~~.~"_ _ _ _ _ _ _ _ _ _ ~/ ERROR_/~//////&: . I 'I. VALID ~I,---,_ ;SVCV.I TRHCV CE ------>V7////00WA I .1 VALID X_,_ 205220-17 5-32 intJ 8206 WAVEFORMS (Continued) FULL WRITE ~r :z: ~ --------- z > !II -l~ -- - -- 0 ~ ~ ---,- ~ ~ "' ID U Q W ~ ii: ~ r z > !II c I~ ~ o Q oID U o > !II 5-33 intJ 8206 WAVEFORMS (Continued) FULL WRITE-MASTERISLAVE en I ~ o C\I ID U ! ~ c w !:: ~ ~l------- z > III 5o S c ~ iii Q ....~ ~ 0c !!!. 0 II. II. 5-34 ~ 0 I- !.! 0 > III w II) '" ! ii: II. ID :II STB J J2f \ 01 I .. TIVSl ~r =-vr '{ x \ I 1 I I I 1 1 1 I I I (]I t.J (]I 1 I \ 1 I. ... OOIWOI 1 : TRHQV TOVQV ITRHSX IT! lJ s::: en 0a ::::I 0". ::::I c: (f) S \ ---'I+,~-Bl~-i-1°1 I... "I I . ..\ TRVSV \ \ TDXQX W/ : 4:\ CI \ : I o en --l t- \ I Hi -l l - M I-TRlSX I I .\ I I I I TQVQV I x= \ SYNX7/4 I.. : rQXQX .. \ .. \ \ ~ X0~/%~/%-r--rZ--.-:-J'4--:...: TOVSV 1 f :I I I I' ::::j t ____ i "u.: II SYO/C80 :II < m "T1 0 -- I\,) I: I I I" =n :E -< :el> ~ : : \ I ,g: -{: I \ VAllO: \ C I I \ I 1 - TBHQV -.J iii: 0 A----4-:- 1 TOVRl l l ij: .. .. '_TRVSV-----l I I" I BM TSllX 1 \ I I I Joo c ... --f'{-,;;..i_________ TS1IVI" RfW IT! 1 CB I .. \ 205220-20 8206 WAVEFORMS (Continued) READ MODIFY WRITE-MASTER/SLAVE N I o N N '"o N III o ::; ~ T o ~;:: ::; ~ ----c- .L UI --i:-- - T--P!...-,rt- ~L.:..._ > ~ -_-k Sii u 5-36 U 8206 WAVEFORMS (Continued) NON-CORRECTING READ ... ...a:t> Q l- a: o t> Z :) T--o> ------- ...t; ...a: Q ~ a: o t> Z :) eiiit> 1M 5-37 inter 8206 WAVEFORMS (Continued) WRITE ZERO '" C\J I ~ "' o C\J r-------- o I~ o o o III (5 > '" 5-38 8207 DUAL-PORT DYNAMIC RAM CONTROLLER • • • • • • Provides All Signals Necessary to Control 16K, 64K and 256K Dynamic RAMs Directly Addresses and Drives up to 2 Megabytes without External Drivers Supports Single and Dual-Port Configurations Automatic RAM Initialization in All Modes Four Programmable Refresh Modes Transparent Memory Scrubbing in ECC Mode • • Fast Cycle Support for 8 MHz 80286 with 8207-16 • Provides Signals to Directly Control the 8206 Error Detection and Correction Unit • • Supports Synchronous or Asynchronous Operation on Either Port Slow Cycle Support for 8 MHz, 10 MHz 8086/88, 80186/188 with 8207-8, 8207-10 68 Lead JEDEC Type A Leadless Chip Carrier (LCC) and Pin Grid Array (PGA), Both in Ceramic. The Intel 8207 Dual-Port Dynamic RAM Controller is a high-performance, systems-oriented, Dynamic RAM controller that is designed to easily interface 16K, 64K and 256K Dynamic RAMs to Intel and other microprocessor systems. A dual-port interface allows two different busses to independently access memory. When configur~d with an 8206 Error Detection and Correction Unit the 8207 supplies the necessary logic for designing large error-corrected memory arrays. This combination provides automatic memory initialization and transparent memory error scrubbing. ERROR LOCK RDA wll. PEA LEN PellA XACKAJACKA XACKBIACKB ~~::~ DBM EST8 ROB WQ MU)(JPCLK PSEL PSEN WE PCTLa PEii RFRQ CAS o J PDI--t-~-l ~===~)Ao,. BS o ' '---------,/1 210463-1 Figure 1. 8207 Block Diagram 5-39 September 1987 Order Number: 210463-007 inter 8207 Table 1. Pin Description Pin Type LEN Symbol 1 0 ADDRESS LATCH ENABLE: In two-port configurations, when Port A is running with iAPX 286 Status interface mode, this output replaces the ALE _ signal from the system bus controller of port A and generates an address latch enable signal which provides optimum setup and hold timing for the 8207. This signal is used in Fast Gycle operation only. XAGKAI AGKA 2 0 TRANSFER ACKNOWLEDGE PORT A/ACKNOWLEDGE PORT A: In nonEGC mode, this pin is XAGKA and indicates that data on the bus is valid during a read cycle or that data may be removed from the bus during a write cycle for Port A. XAGKA is a Multibus-compatible signal. In EGG mode, this pin is AGKA which can be configured, depending on the programming of the X program bit, as an XAGK or AAGK strobe. The SA programming bit determines whether the AAGK will be an early EAAGKA or a late LAAGKA interface signal. XAGKBI AGKB 3 0 TRANSFER ACKNOWLEDGE PORT B/ACKNOWLEDGE PORT B: In nonEGG mode, this pin is XAGKB and indicates that data on the bus is valid during a read cycle or that data may be removed from the bus during a write cycle for Port B. XAGKB is a Multibus-compatible signal. In EGG mode, this pin is AGKB which can be configured, depending on the programming of the X program bit, as an XAGK or AAGK strobe. The SB programming bit determines whether the AAGK will be an early EAAGKB or a late LAAGKB interface signal. AAGKAI 4 0 ADVANCED ACKNOWLEDGE PORT A/WRITE ZERO: In non-EGG mode, this pin is AAGKA and indicates that the processor may continue processing and that data will be available when required. This signal is optimized for the system by programming the SA program bit for synchronous or asynchronous operation. In EGG mode, after a RESET, this signal will cause the 8206 to force the data to all zeros and generate the appropriate check bits. AAGKBI R/W 5 0 ADVANCED ACKNOWLEDGE PORT B/READ/WRITE: In non-EGG mode, this pin is AAGKB and indicates that the processor may continue processing and that data will be available when required. This signal is optimized for the system by programming the SB program bit for synchr~mous or asynchronous operation. In EGG mode, this signal causes the 8206 EDGU to latch the syndrome and error flags and generate check bits. DBM 6 0 DISABLE BYTE MARKS: This is an EGG control output signal indicating that a read or refresh cycle is occurring. This output forces the byte address decoding logic to enable all 8206 data output buffers. In EGG mode, this output is also asserted during memory initialization and the 8-cycle dynamic RAM wake-up exercise. In non-EGG systems this signal indicates that either a read, refresh or 8-cycle warm-up is in progress. ESTB 7 0 ERROR STROBE: In EGG mode, this strobe is activated when an error is detected and allows a negative-edge triggered flip-flop to latch the status of the 8206 EDGU GE for systems with error logging capabilities. ESTB will not be issued during refresh cycles. LOGK 8 I LOCK: This input instructs the 8207 to lock out the port not being serviced at the time LOGK was issued. 9 I DRIVER POWER: + 5 volts. Supplies Vee for the output drivers. LOGIC POWER: + 5 volts. Supplies Vee for the internal logic circuits. I CORRECTABLE ERROR: This is an EGG input from the 8206 EDGU which instructs the 8207 whether a detected error is correctable or not. A high input indicates a correctable error. A low input inhibits the 8207 from activating WE to write the data back into RAM. This should be connected to the GE output of the 8206. WZ Vee 43 GE 10 Name and Function 5-40 inter 8207 Table 1. Pin Description (Continued) Symbol Pin Type ERROR 11 I ERROR: This is an ECC input from the 8206 EOCU and instructs the 8207 that an error was detected. This pin should be connected to the ERROR output of the 8206. MUX/ PCLK 12 0 MULTIPLEXER CONTROL/PROGRAMMING CLOCK: Immediately after a RESET this pin is used to clock serial programming data into the POI pin. In normal two-port operation, this pin is used to select memory addresses from the appropriate port. When this signal is high, port A is selected and when it is low, port B is selected. This signal may change state before the completion of a RAM cycle, but the RAM address hold time is satisfied. PSEL 13 0 PORT SELECT: This signal is used to select the appropriate port for data transfer. When this signal is high port A is selected and when it is low port B is selected. PSEN 14 0 PORT SELECT ENABLE: This signal used in conjunction with PSEL provides contention-free port exchange on the data bus. When PSEN is low, port selection is allowed to change state. WE 15 0 WRITE ENABLE: This signal provides the dynamic RAM array the write enable input for a write operation. FWR 16 I FULL WRITE: This is an ECC input signal that instructs the 8207, in an ECC configuration, whether the present write cycle is normal RAM write (full write) or a RAM partial write (read-modify-write) cycle. RESET 17 I RESET: This signal causes all internal counters and state flip-flops to be reset and upon release of RESET, data appearing at the POI pin is clocked in by the PCLK output. The states of the POI, PCTLA, PCTLB and RFRQ pins are sampled by RESET going inactive and are used to program the 8207. An 8cycle dynamic RAM warm-up is performed after clocking POI bits into the 8207. 18-21 0 COLUMN ADDRESS STROBE: These outputs are used by the dynamic RAM array to latch the column address, present on the AOO-8 pins. These outputs are selected by the BSO and BS1 as progiammed by program bits RBO and RB 1. These outputs drive the dynamic RAM array directly and need no external drivers. RASO-RAS3 22-25 0 ROW ADDRESS STROBE: These outputs are used by the dynamic RAM array to latch the row address, present on the AOO-8 pins. These outputs are selected by the BSO and BS1 as programmed by program bits RBO and RB1. These outputs drive the dynamic RAM array directly and need no external drivers. Vss 26 60 I I DRIVER GROUND: Provides a ground for the output drivers. LOGIC GROUND: Provides a ground fo~ the remainder of the device. AOO-A08 35-27 0 ADDRESS OUTPUTS: These outputs are designed to provide the row and column addresses of the selected port to the dynamic RAM array. These outputs drive the dynamic RAM array directly and need no external drivers. BSO-BS1 36-37 I BANK SELECT: These inputs are used to select one of four banks of the dynamic RAM array as defined by the program bits RBO and RB1. ALO-AL8 38-42 44-47 I ADDRESS LOW: These lower-order address inputs are used to generate the row address for the internal address multiplexer. AHO-AH8 48-56 I ADDRESS HIGH: These higher-order address inputs are used to generate the column address for the internal address multiplexer. CASO-CAS3 Name and Function 5-41 8207 Table 1. Pin Description (Continued) Symbol Pin Type Name and Function POI 57 I PROGRAM DATA INPUT: This input programs the various user-selectable options in the 8207. The PClK pin shifts programming data into the POI input from optional external shift registers. This pin may be strapped high or low to a default ECC (POI = logic "1") or non"ECC (POI = logic "0") mode configuration. RFRO 58 I REFRESH REQUEST: This input is sampled on the falling edge of RESET. If it is high at RESET, then the 8207 is programmed for internal refresh request or external refresh request with failsafe protection. If it is low at RESET, then the 8207 is programmed for external refresh without failsafe protection or burst refresh. Once programmed the RFRO pin accepts signals to start an external refresh with failsafe protection or external refresh without failsafe protection or a burst refresh. ClK 59 I CLOCK: This input provides ROB 61 I READ FOR PORT 8: This pin is the read memory request command input for port B. This input also directly accepts the S1 status line from Intel processors. WRB 62 I WRITE FOR PORT 8: This pin is the write memory request command input for port B. This input also directly accepts the SO status line from Intel processors. PEB 63 I PORT ENA8LE FOR PORT 8: This pin serves to enable a RAM cycle request for port B. It is generally decoded from the port address. PCTlB 64 I PORT CONTROL FOR PORT 8: This pin is sampled on the falling edge of RESET. If low after RESET, the 8207 is programmed to accept memory read and write commands, Multibus commands or iAPX 286 status inputs. If high after RESET, the 8207 is p!:2flrammed to accept status inputs from iAPX 86 or iAPX 186 processors. The S2 status line should be connected to this input if programmed to accept iAPX 86 or iAPX 186 status inputs. When programmed to accept commands or iAPX 286 status, it should be tied low or it may be used as a Multibus-compatible inhibit signal. ROA 65 I READ FOR PORT A: This pin is the read memory request command input for port A. This input also directly accepts the S1 status line from Intel processors. WRA 66 I WRITE FOR PORT A: This pin is the write memory request command input for port A. This input also directly accepts the SO status line from Intel processors. PEA 67 I PORT ENA8LE FOR PORT A: This pin serves to enable a RAM cycle request for port A. It is generally decoded from the port address. PCTlA 68 I PORT CONTROL FOR PORT A: This pin is sampled on the falling edge of RESET. If low after RESET, the 8207 is programmed to accept memory read and write commands, Multibus commands or iAPX 286 status inputs. If high after RESET, the 8207 is p!:2flrammed to accept status inputs from iAPX 86 or iAPX 186 processors. The S2 status line should be connected to this input if programmed to accept iAPX 86 or iAPX 186 status inputs. When programmed to accept commands or iAPX 286 status, it should be tied low or it may be connected to INHIBIT when operating with Multibus. 5-42 th~ basic timing for sequencing the internal logic. inter 8207 structures. The ports are independently configurable allowing the dynamic RAM to serve as an interface between two different bus structures. GENERAL DESCRIPTION The Intel 8207 Dual-Port Dynamic RAM Controller is a microcomputer peripheral device which provides the necessary signals to address, refresh and directly drive 16K, 64K and 256K dynamic RAMs. This controller also provides the necessary arbitration circuitry to support dual-port access of the dynamic RAM array. Each port of the 8207 may be programmed to run synchronous or asynchronous to the processor clock. (See Synchronous/Asynchronous Mode.) The 8207 has been optimized to run synchronously with Intel's iAPX 86, iAPX 88, iAPX 186, iAPX 188, and iAPX 286. When the 8207 is programmed to run in asynchronous mode, the 8207 inserts the necessary synchronization circuitry for the RD, WR, PE, and PCTL inputs. The 8207 supports several microprocessor interface options including synchronous and asynchronous connection to iAPX 86, iAPX 88, iAPX 186, iAPX 188, iAPX 286 and Multibus. The 8207 achieves high performance (Le., no wait states) by decoding the status lines directly from the iAPX 86, iAPX 88, iAPX 186, iAPX 188 and iAPX 286 processors. The 8207 can also be programmed to receive read or write Multibus commands or commands from a bus controller. (See Status/Command Mode.) This device may be used with the 8206 Error Detection and Correction Unit (EDCU). When used with the 8206, the 8207 is programmed in the Error Checking and Correction (ECG) mode. In this mode, the 8207 provides all the necessary control signals for the 8206 to perform memory initialization and transparent error scrubbing during refresh. The 8207 may be programmed to accept the clock of the iAPX 86, 88, 186, 188 or 286. The 8207 adjusts its internal timing to allow for the different clock frequencies of these microprocessors. (See Microprocessor Clock Frequency Option.) FUNCTIONAL DESCRIPTION Processor Interface Figures 2A and 29 show the different processor interfaces to the 8207 using the synchronous or asynchronous mode and status or command interface. The 8207 has control circuitry for two ports each capable of supporting one of several possible bus 5-43 intJ 8207 1 1 - - - - - 1 Wfl CLK 1----.lRfi 8207 1-----.-4 Rl! CLK 210463-2 Slow-Cycle SynchronousStatus Interface =~ SO SlH_H...J 52 ADDR.lDATA 210463-3 Slow-Cycle Asynchronous-Status Interface 210463-5 210463-4 Slow-Cycle Asynchronous-Command Interface Slow-Cycle Synchronous-Command Interface Figure 2A. Siow-Cycle (CFS = 0) Port Interfaces Supported by the 8207 by the 8207. The 8207 arbitrates between each of the processor requests and directs data to or from the appropriate port. Selection is done on a priority concept that reassigns priorities based upon past history. Processor requests are internally queued. Single-Port Operation The use of an address latch with the iAPX 286 status interface is not needed since the 8207 can internally latch the addresses with an internal signal similar in behavior to the LEN output. This operation is active only in single-port applications when the processor is interfaced to port A. Figure 3 shows a dual-port configuration with two iAPX 86 systems interfacing to dynamic RAM. One of the processor systems is interfaced synchronously using the status interface and the other is interfaced asynchronously also using the status interface. Dual-Port Operation The 8207 provides for two-port operation. Two independent processors may access memory controlled 5-44 intJ 8207 210463-7 210463-6 NOTE: Address latch not required in single-port mode. NOTE: Address latch not required in single-port mode. Fast-Cycle Asynchronous-Status Interface Fast-Cycle Synchronous-Status Interface SYNCHRONOUS 80286 210463-9 210463-6 ·MULTI·BUS Option Fast-Cycle Synchronous-Command Interface Fast-Cycle Asynchronous-Command Interface Figure 2B. Fast-Cycle (CFS= 1) Port Interfaces Supported by the 8207 ror scrubbing during ECC refresh cycles. RAM cycle interleaving overlaps the start of the next RAM cycle with the RAM Precharge period of the previous cycle. Hiding the precharge period of one RAM cycle behind the data access period of the next RAM cycle optimizes memory bandwidth and is effective as long as successive RAM cycles occur in alternate banks. Dynamic RAM Interface The 8207 is capable of addressing 16K, 64K and 256K dynamic RAMs. Figure 4 shows the connection of the processor address bus to the 8207 using the different RAMs. The' 8207 divides memory into as man~ four banks, each bank having its own Row (RAS) and . Column (CAS) Address Strobe pair. This organization permits RAM cycle interleaving and permits er- Successive data access to the same bank will cause the 8207 to wait for the precharge time of the previous RAM cycle. 5-45 ....... READY ROY' ~ OTII£A ~ iNPUTS W£ ALE I2U- DEN READY elK 52 cC c Ii ~ ~ o ~ ~ Q) J CAs", r- WE T $ t elK 52 ~ MEMORY (Ul'PEA) elK "....-' "DORIOATA ~ N C ..... EXTENDED MEMORY USING STATUS. PORT A-SYNCHAONIGUS; PORT B-ASYNCHR <0 iii 0' ... CMDIPEA - ADDR A :J C VI 5' \Q :T ACKA DEN A DTIR A - . V MUX ADDR ACKA 71 "-.I III :J BYTE MARK DECODER r-----c: 6MHz 1 0 iAPX286 ~12 1 1 iAPX 286 >12 MHz Fast Processor Clock Frequency (16 MHz) "Most Recently Used" Priority Scheme 4 RAM banks ocuppied 5-55 Processor Clock Frequency 6MHz MHz 8207 The external clock frequency must be programmed so that the failsafe refresh repetition circuitry can adjust its internal timing accordingly to produce a refresh request as programmed. tween refreshes is decreased by 0%,10%,20%, or 30% as a function of bow the count interval bits are programmed. A 5% guardband is built-in to allow for any clock frequency variations. Table 6 shows the refresh period options available. RAM Speed Option (RFS Program Bit) The numbers tabulated under Count Interval represent the number of clock periods between internal refresh requests. The percentages in parentheses represent the decrease in the interval between refresh requests. Note that all intervals have a built-in 5% (approximately) safety factor to compensate for minor clock frequency deviations 'and non-immediate response to internal refresh requests. The RAM Speed programming option determines whether RAM timing will be optimized for a fast or slow RAM. Refresh Period Options (CIO, CI1 and PLS Program Bits) The 8207 refreshes with either 128 rows every 2 milliseconds or 256 rows every 4 milliseconds. This translates to one refresh cycle being executed approximately once every 15.6 microseconds. This rate can be changed to 256 rows every 2 milliseconds or a refresh approximately once every 7.8 microseconds via the Period Long/Short, program bit PLS, programming option. The 7.8 microsecond refresh request rate is intended for those RAMs, 64K and above, which may require a faster refresh rate. Extend Option (EXT Program Bit) The Extend option lengthens the memory cycle to allow longer access time which may be reqUired by the system. Extend alters the RAM timing to compensate for increased loading on the Row' and Column Address Strobes, and in the multiplexed Address Out lines. Port Priority Option and Arbitration (PPR Program Bit) In addition to PLS program option, two other programming bits for refresh exist: Count Interval 0 (CIO) and Count Interval 1 (CI1). These two programming bits allow the rate at which refresh requests are generated to be increased in order to permit refresh requests to be generated close to the same 15.6 or 7.8 microsecond period when the 8207 is operating at reduced frequencies. The interval be- The 8207 has to internally arbitrate among three ports: Port A, Port B and Port C-the refresh port. Port C is an internal port dedicated to servicing refresh requests, whether they are generated internally by the refresh interval counter, or externally by the user. Two arbitration approaches are available via Table 6. Refresh Count Interval Table Ref. Period (p.s) CFS PLS FFS 15.6 1 1 7.8 1 15.6 1 Count Interval C11, CIO (8207 Clock Periods) 00 (0%) 01 (10%) 10 (20%) 11 (30%) 1 236 212 188 164 0 1 118 106 94 82 1 0 148 132 116 100 7.8 1 0 0 74 66 58 50 15.6 0 1 1 118 106 '94 82 7.8 0 0 1 59 53 47 41 15.6 0 1 0 74 66 58 50 7.8 0 0 0 ' 37 33 29 25 NOTE: Refresh period = clock period x refresh count interval. 5-56 intJ 8207 that the other two ports are idle. Under normal operating conditions, this arbitration time is hidden behind the RAM cycle of the selected port so that as soon as the present cycle is over a new cycle is started. Table 7 lists the arbitration rules for both options. the Port Priority programming option, program bit PPR. PPR determines whether the most recently used port will remain selected (PPR = 1) or whether Port A will be favored or preferred over Port B (PPR = 0). A port is selected if the arbiter has given the selected port direct access to the timing generators. The front-end logic, which includes the arbiter, is designed to operate in parallel with the selected port. Thus a request on the selected port is serviced immediately. In contrast, an unselected port only has access to the timing generators through the frontend logic. Before a RAM cycle can start for an unselected port, that port must first become selected (Le., the MUX output now gates that port's address into the 8207 in the case of Port A or B). Also, in order to allow its address to stabilize, a newly selected port's first RAM cycle is started by the front-end logic. Therefore, the selected port has direct access to the timing generators. What all this means is that a request on a selected port is started immediately, while a request on an unselected port is started two to three clock periods after the request, assuming Port LOCK Function The LOCK function provides each port with the ability to obtain uninterrupted access to a critical region of memory and, thereby, to guarantee that the opposite port cannot "sneak in" and read from or write to the critical region prematurely. Only one LOCK pin is present and is multiplexed between the two ports as follows: when MUX is high, the 8207 treats the LOCK input as originating at PORT A, while when MUX is low, the 8207 treats LOCK as originating at PORT B. When the 8207 recognizes a LOCK, the MUX output will remain pointed to the locking port until LOCK is deactivated. Refresh is not affected by LOCK and can occur during a locked memory cycle. Table 7. The Arbitration Rules for the Most Recently Used Port Priority and for Port A Priority Options Are As Follows: 1. If only one port requests service, then that port-if not already selected-becomes selected. 2a. When no service requests are pending, the last selected processor port (Port A or B) will remain selected. (Most Recently Used Port Priority Option.) 2b. When no service requests are pending, Port A is selected whether it requests service or not. (Port A Priority Option.) 3. During reset initialization only Port C, the refresh port, is selected. 4. If no processor requests are pending after reset initialization, Port A will be selected. 5b. If Ports A and B simultaneously(*) request service while Port C is selected, then the next port to be selected is Port A. (Port A Priority Option.) 6. If a port simultaneously requests service with the currently selected port, service is granted to the selected port. 7. The MUX output remains in its last state whenever Port C is selected. 8. If Port C and either Port A or Port B (or both) simultaneously request service, then service is granted to the requester whose port is already selected. If the selected port is not requesting service, then service is granted to Port C. 9. If during the servicing of one port, the other port requests service before or simultaneously with the refresh port, the refresh port is selected. A new port is not selected before the presently selected port is deactivated. 10. Activating LOCK will mask off service requests from Port B if the MUX output is high, or from Port A if the MUX output is low. NOTE: 'By "simultaneous" it is meant that two or more requests are valid at the clock edge at which the internal arbiter samples them. 5-57 inter 8207 two latches, and the use of flip flops on the status lines of the asynchronous processor for delaying the status and thereby guaranteeing RAS will not be issued, even in the worst case, until address is valid. Dual-Port Considerations For both ports to be operated synchronously, several conditions must be met. The processors must be the same type (Fast or Slow Cycle) as defined by Table 8 and they must have synchronized clocks. Also when processor types are mixed, even though the clocks may be in phase, ~ne frequency may be twice that of the other: So to run both portssynchronous using the status interface, the processors must have related timings (both phase and frequency). If these conditionscannot be met, then one port must run synchronous and the other asynchronous. Processor Timing In order to run without wait states, AACK must be used and connected to the SRDY input of the appropriate bus controller. AACK is issued relative to a point within the RAM cycle and has no fixed relationship to the processor's request. The timing is such, however, that the processor will run without wait states, barring refresh cycles, bank precharge, and RAM accesses from the other port. In non-ECC fast cycle, fast RAM, non-extended configurations (80286), AACK is issued on the next falling edge of Figure 3 illustrates an example of dual-port operation using the processors in the slow cycle group. Note the use of cross-coupled NAND gates at the MUX output for minimizing contention between the CLK I 1 I 1 I ADDRESS ~ VALID SO,Sf \ PE / / \ I LEN /t, 1/ I \ RAS' -I CAS / PSEN / \ / \ / \ / I 1 I I 1 1 \~ "----I 1\ \ V V' \ \ / EAACK /\ /\ ;-\ \ \ / I I ~ I X PSEL X VALID X VALID I I RAM DATA I I I ( I • I CYCLE DELAYED BY ACCESS ON OTHER PORT, REFRESH CYCLE OR BANK PRECHARGE VALID 'I1lZi VALID \ I / \ wA VALID ~ _1- ( CYCLE WITHOUT WAIT STATES yALID ~ ) C ---1 I 210463-20 NOTE: 1. The RAS and CAS shown in figure are different banks being accessed. Figure 14. iAPX 286/8207 Synchronous-Status Timing Programmed in non-ECC Mode, COConfiguration (Read Cycle) 5-58 inter 8207 the clock after the edge that issues RAS. In nonECC, slow cycle, non-extended, or extended with fast RAM cycle configurations (8086, 80188, 80186), AACK is issued on the same clock cycle that issues RAS. Figure 14 illustrates the timing relationship between AACK, the RAM cycle, and the processor cycle for several different situations. the internal synchronization delay to be added to the status (or command)-to-PE delay time, thus allowing for more external decode time that is available in synchronous operation. The minimum synchronization delay is the additional amount that PE must be held valid. If PE is not held valid for the maximum synchronization delay time, it is possible that PE will go invalid prior to the status or command being synchronized. In such a case the 8207 aborts the cycle. If a memory cycle intended for the 8207 is aborted, then no acknowledge (AACK or XACK) is issued and the processor locks up in endless wait states. Figure 15 illustrates the status (command) timing requirements for synchronous and asynchronous systems. Figures 16 and 17 show a more detailed hook-up of the 8207 to the 8086 and the 80286, respectively. Port Enable (PE) setup time requirements depend on whether the associated port is configured for synchronous or asynchronous fast or slow cycle operation. In a synchronous fast cycle configuration, PE is required to be setup to the same clock edge as the status or commands. If PE is true (low), a RAM cycle is started; if not, the cycle is aborted. The memory cycle will only begin when both valid signals (PE and RD or WR) are recognized at a particular clock edge. In asynchronous operation. PE is required to be setup to the same clock edge as the internally synchronized status or commands. Externally, this allows 8207 ClK --@ -@ 210463-21 (A) PE Set-Up and Hold Time Requirements for Fast Cycle, Synchronous Operation (80286 CMD/Status) 8207 ClK COMMAND/STATUS - - - - - - - - - - - 210463-22 (8) PE Timing Requirements for Fast or Slow Cycle Asynchronous Operation Figure 15 5-59 intJ 8207 8284A· RDY 1 I~IOTHERACKINPUTS READY CLK + CLK 8288· DEN f--- CLK DTiA ~ READY RASo_3 CAS•. J 1,I CLK 52 51 PCTL MEMORY (UPPER) AOo_e WE ~ ~ v 8207 RD SO f- MEMORY (LOWER) WR 80861 80186 VI - rv' r AHn .• ALo.. PSEN OE ADDRI DATA AACK S2 S1S0ALE STB 8283 LATCH ~ AD TV~ OE T ~ L..... - r- =D- DI t DO I-- WE r I DI DO D ClK Q~ ~D Y Q~ 16/ I OE T 16 '---- '--- ~ D 8287 Vl WE 8287 210463-23 NOTE: 'These components are not necessary when using the 80186. These functions are provided directly by the 80186. Figure 16.8086/80186,8207 Single Port Non-ECC Synchronous Systems Memory Acknowledge (AACK, XACK) (CFS = 0), while the SA and SB programming bits optimize AACK for synchronous operation ("early" AACK) or asynchronous operation ("late" AACK). In system configurations without error correction, two memory acknowledge signals per port are supplied by the 8207. They are the Advanced Acknowledge strobe (AACK) and the Transfer Acknowledge strobe (XACK). The CFS programming bit determines for which processor AACKA and AACKB are optimized, either 80286 (CFS = 1) or 8086/186 Both the early and late AACK strobes are three clocks long for CFS = 1 and two clocks long for CFS = o. The XACK strobe is asserted when data is valid (for reads) or when data may be removed (for writes) and meets the Multibus requirements. XACK is removed asynchronously by the command going 5-60 8207 82284 READY SROY ~~NPUTS ClK + ClK 82288 DEN OT/R M/iOs1S0 READY f---- ClK AACK fAOOR, STROBES ClK ~I 51 ~ M/iO So PCTl ==J MEMORY (UPPER) 8207 RO WE MEMORY (lOWER) - WR 80286 r AOORIN PSEN AOOR + DATA I- AO' +5V TV} T WE '- ".J a BHE' :::D- 01 DO WE II l ,--I I I {r 01 DO BO Q~ OE 16 8287 ~1 T - DE '---8287 16 Ie 210463-24 NOTE: While the 8207 does not need the input addresses latched, AO, SHE must come from the latched address bus. Figure 17. 80286 Hook-Up to 8207 Non-ECC Synchronous System-Single Port inactive. Since in asynchronous operation the 8207 removes read data before late AACK or XACK is recognized by the CPU, the user must provide for data latching in the system until the CPU reads the data. In synchronous operation, data latching is unnecessary since the 8207 will not remove data until the CPU has read it. ming bit associated with each acknowledge. If the X programming bit is active, the strobe is configured as XACK, while if the bit is inactive, the strobe is configured as AACK. As in non-ECC, the SA and SB programming bits determine whether the AACK strobe is early or late (EAACK or LAACK). Data will always be valid a fixed time after the occurrence of the advanced acknowledge. Table 9 summarizes the various transfer acknowledge options. In ECC-based systems there is one memory acknowledge (XACK or AACK) per port and a program- 5-61 8207 Table 8. Processor Interface/Acknowledge Summary Cycle Processor Request Type Sync/Async Interface Acknowledge Type 80286 Status Sync EAACK 80286 Status Async LAACK Fast 80286 Command Sync EAACK Cycle 80286 Command Async LAACK CFS=1 8086/80186 Status Async LAACK 8086/80186 Command Async LAACK Multibus Command Async XACK 8086/80186 Status Sync EAACK Slow 8086/80186 Status Async LAACK Cycle 8086/80186 Command Sync EAACK CFS=O 8086/80186 Command Async LAACK Multibus Command Async XACK Table 9. Memory Acknowledge Option Summary Asynchronous XACK Fast Cycle AACK Optimized for Local 80286 Synchronous AACK Optimized for Remote 80286 Multibus Compatible Slow Cycle AACK Optimized for Local 8086/186 AACK Optimized for Remote 8086/186 Multibus Compatible testing other than that covered in Test Mode 1, the 8207 will normally be set in Test Mode 2. Test Mode 2 eliminates memory initialization in ECC mode. This allows quick examination of the circuitry which brings the 8207 out of memory initialization and into normal operation. Test Modes Two special test modes exist in the 8207 to facilitate testing. Test Mode 1 (non-ECC mode) splits the refresh address counter into two separate counters and Test Mode 2 (ECC mode) presets the refresh address counter to a value slightly less than rollover. General System Considerations Test Mode 1 splits the address counter into two, and increments both counters simultaneously with each refresh address update. By generating external refresh requests, the tester is able to check for proper operation of both counters. Once proper individual counter operation has been established, the 8207 must be returned to normal mode and a second test performed to check that the carry from the first counter increments the second counter. The outputs of the counters are presented on the address out bus with the same timing as the row and column addresses of a normal scrubbing operation. During Test Mode 1, memory initialization is inhibited, since the 8207, be definition, is in non-ECC mode. The RASo_3, CASO_3, AOo-s, output buffers were designed to directly drive the heavy capacitive loads associated with dynamic RAM arrays. To keep the RAM driver outputs from ringing excessively in the system environment and causing noise in other output pins it is necessary to match the output impedance of the RAM output buffers with the RAM array by using series resistors and to add series resistors to other control outputs for noise reduction if necessary. Each application may have different impedance characteristics and may require different series resistance values. The series resistance values should be determined for each application. In nonECC systems unused ECC input pins should be tied high or low to improve noise immunity. Test Mode 2 sets the internal refresh counter to a value slightly less than rollover. During functional 5-62 8207 34 33 32 31 3D 29 28 27 AD1 AD2 AD3 AD4 ADS AD6 AD7 AD8 26 Vss 25 RAS3 24 RAS2 23 AAS1 22 21 20 19 1 RASO CAS3 CAS2 CAS1 18 l:A];li 210463-25 NOTE: Lee is mounted lid-down into socket. Figure 19_ 8207 Pinout Diagram 'TOP VIEW - 68. 66- 64- 62. 60. 58- 56- 54- 52 - 1 .2 - 67- 65- 63. 61. 59. 57- 55- 53- 51 .3 .4 - 50. 49 Ceramic Pin Grid Array Package Type A 58-Lead Ceramic Pin Grid Array Package Type A j-- ~ 1_ o SWAGED PIN STANDOFF (4 PLACES) .070 TYP. (1.778) (29.591) _ 1.135 (28.829) PIN 110 0 0 0 -48- 47 .7 .8 .9 .10 ·46·45 -44- 43 -11-12 - 42- 41 ·13-14 - 40- 39 -15-16 - 38- 37 - 17- 19- 21. 23. 25- 27- 29- 31- 33- 36- 35 - 18- 20- 22. 24. 26- 28. 30.32- 34 @@@ @@@@@@@@@ 0 .5 .6 0 :~D~~ 1 o@ @@ 1.165 (29.591) o@ @@ t135 (28.829) .122 (3.099) o@ @@ L-[·r·m~8~(~2.4~8~9)________~ o@ @@ MAX o@ @@ .140 (3.556)r-T @@@@@@@@)8 @@@@@@@@@ STANDOFFIlJ I 1 -1.000 REF L.090 (2.286) .060 (1.524) 210463-37 8207 Pin Grid Array (PGA) Pin-Out e9: R 8207-8 e9: A 8207-16 LCC, 8 MHz DRAM Controller PGA, 16 MHz DRAM Controller NOTE: The pin-out of the PGA is the same as the socketed pinout of the LCC. Packaging The 8207 is packaged in a 68 lead JEDEC Type A Leadless Chip Carrier (LCG) and in Pin Grid Array (PGA), both in Ceramic. The package designations are R and A respectively. 5-63 8207 • Notice: Stresses above those listed under '~bso lute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for . extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias .................... - O·C to + 70·C Storage Temperature .......... -.65·C to + 150·C Voltage on Any Pin with Respect to Ground .............. - 0.5V to + 7V Power Dissipation (Note 2) ......•.. ; ........ 2.5W D.C. CHARACTERISTICS TA = O·C to 70·C; \Iss Symbol = Vcc = 5.0V ±10% for 8207-10, 8207-8; GND; Vcc = 5.0V ±5% for 8207-16 (Note 2) Parameter Min Max Units Comments Vil Input Low Voltage -0.5 +0.8 V VIH Input High Voltage 2.0 Vcc +0.5 V VOL Output Low Voltage 0.45 V (Note 1) VOH Output High Voltage V (Note 1) VROl RAM Output Low Voltage 0.45 V (Note 1) 455 rnA TA ±10 p,A OV ~ VIN ~ Vcc ±0.6 V 2.4 VROH RAM Output High Voltage Icc Supply Current 2.6 III Input Leakage Current VCl Clock Input Low Voltage -0.5 VCH Clock Input High Voltage 3.8 CIN Input Capacitance V . Vcc + 0.5 V 20 pF , (Note 1) fc = = O·C 1 MHz(2) NOTE: 1. IOL = 5 mA and IOH = -0.2 mA (Typically IOL = 10 mA and IOH = -0.88 mAl. WE: IOL = 8 mA. 2. Sampled, not 100% tested. . A.C. TESTING LOAD CIRCUIT(2) A.C. TESTING INPUT, OUTPUT WAVEFORM U-Y20 2.4y- ~~0_.8_ _ _0._8~ '--_ _ _-'Rl 210463-27 210463-26 RRAS = 39!l RCAS = 39!l RAO = 22!l RL = 39!l CRAS = 150 pF CcAS = 150 pF CAO = 380 pF CL=100pF A.C. Testing inputs (except clock) are driven at 2.4V for a Logic "1" and 0.45V for a Logic "0" (clock is driven at 4.0V and 0.45V for Logic "1" and "0" respectively). Timing measurements are made at 2.0V, 2.4V for Logic "1" and 0.8V for Logic "0" .. 5-64 8207 A.C. CHARACTERISTICS vcc = 5V ±10% for 8207-8; TA = OOG to 70oG; VCC = +5V ±5% for 8207-16 Measurements made with respect to RASo_3, GASO_3, AOO_B, are a + 2.4V and 0.8V. All other pins are measured at 2.0V and 0.8V. All times are ns unless otherwise indicated. Testing done with specified test load. 8207-16, -8 Ref Symbol 8207-10 Parameter Min Max Min Units Notes Max CLOCK AND PROGRAMMING - tF Clock Fall Time 10 10 ns 3 - tR Clock Rise Time 10 10 ns 3 1 TClCl Clock Period 250 ns ns ns 1 2 2 TClCLl2-12 ns ns ns 1 2 2 TClCl/3-3 ns ns ns 1 2 2 20 40 ns 4 4TClCl 4TClCl ns 125 125 ns 10 10 ns 2 3 4 TCl TCH TRTVCl Clock low Time Clock High Time B207-16 8207-10 8207-8 62.5 125 500 8207-16 8207-10 8207-8 15 180 8207-16 8207-10 8207-8 Reset to ClK J, Setup 200 100 TClCLl2-12 20 180 TClCl/3-3 5 TRTH Reset Pulse Width 6 TPGVRTl PCTl, POI, RFRQ to RESET J, Setup 7 TRTlPGX PCTl,RFRQ to RESET J, Hold 8 TClPC PClK from ClK J, Delay 9 TPDVCl PDin to ClK J, Setup 60 60 ns 10 TClPDX PDin to ClK J, Hold 40 40 ns 6 ns 7 ns 2 ns 1 45 45 5 ns RAM WARM-UP AND INITIALIZATION 64 TCLWZl WZfrom ClK J, Delay 40 40 SYNCHRONOUS ",p PORT INTERFACE 11 TPEVCl PE to ClK J, Setup 27 12 TKVCl RD, WR, PE, PCTl to ClK J, Setup 20 13 TClKX RD, WR, PE, PCTl to ClK J, Hold 0 0 ns 14 TKVCH RD, WR, PCTl to ClK i Setup 20 20 ns 5-65 27 2 inter 8207 A.C. CHARACTERISTICS (Continued) Vcc = 5V ± 10% for 8207-8; TA = O°C to 70°C; Vcc = + 5V ± 5% for 8207-16 Measurements made with respect to RASo_3, CASO_3, AOO-B, are a + 2.4V and 0.8V. All other pins are measured at 2.0V and 0.8V. All times are ns unless otherwise indicated. Testing done with specified test load. 8207·10 8207·16, ·8 Ref Symbol Parameter Min Max Units Notes 20 ns 8,9 2TCLCL+30 ns Min Max ASYNCHRONOUS ",p PORT INTERFACE 15 TRWVCL RD,WR to CLK.j,. Setup 16 TRWL RD, WR Pulse Width 17 TRWLPEV PE from RD, WR.j,. Delay 18 TRWLPEX PEto RD, WR.j,. Hold 19 TRWLPTV PCTL from RD, WR.j,. Delay 20 TRWLPTX PCTL to RD, WR.j,. Hold 21 TRWLPTV PCTL from RD, WR.j,. Delay 22 TRWLPTX PCTL to RD, WR.j,. Hold 20 2TCLCL+30 TCLCL-20 TCLCL-30 CFS=1 CFS=O TCLCL-20 2TCLCL+30 2TCLCL+30 2TCLCL+30 2TCLCL+30 2TCLCL-30 2TCLCL-20 1 2 ns TCLCL-30 TCLCL-30 ns ns ns 2 ns 2 ns 1 3TCLCL+30 3TCLCL+40 ns 1 10 RAM INTERFACE 23 TAVCL AL, AH, 8Sto CLK.j,. Setup 35+tASR 35+tASR ns 24 TCLAX AL, AH, 8Sto CLK.j,. Hold 0 0 ns 25 TCLLN LEN from CLK.j,. Delay 35 26 TCLRSL RAS.j,. from CLK.j,. Delay 35 27 TRCD RAStoCAS Delay 28 TCLRSH RASj from CLK.j,. Delay 29 TRAH Row AO to RAS Hold CFS=1 CFS=O ns 35 TCLCL-25 TCLCLl2-25 CFS=1 CFS=O 50 TCLCL/2-11 TCLCLl4-11 18 0 30 TASR Row AO to RAS Setup 0 31 TASC Column AO to CFS=1 CAS.j,. Setup CFS=O 0 5 5 5-66 ns ns ns ns 25 50 1 1, 14 11, 14 ns ns ns 1,13,15 11, 15 ns ns 13,19,20 13,19,20 10, 18 8207 A.C. CHARACTERISTICS (Continued) Vcc = 5V ±10%for8207-8;TA = O'Cto70'C;Vcc = +5V ±5%for8207-16 Measurements made with respect to RASo_3, CASO_3, ADo-B, are a + 2.4V and O.8V. All other pins are measured at 2.0V and O.8V. All times are ns unless otherwise indicated. Testing done with specified test load. 8207-10 8207-16, -8 Ref Symbol Units Parameter Min Max Min Notes Max RAM INTERFACE (Continued) 32 TCAH ColumnAO to CAS Hold 33 TCLCSL CAS.!. from CLK.!. Delay 34 TCLCSL CAS.!. from CLK.!. Delay 35 TCLCSH CASt from CLK.!. Delay (See DRAM Interface Tables) TCLClI4+30 TCLCLI 1.8 + 53 21 100 ns 11,12 35 40 ns 1 50 50 ns TCLClI4+30 36 TCLW WE from CLK.!. Delay 35 35 ns 37 TCLTKL XACK.!. from CLK.!. Delay 35 35 ns 38 TRWLTKH XACKt from RD t , WR t Delay 50 50 ns 39 TCLAKL AACK.!. from CLK.!. Delay 35 35 ns 40 TCLAKH AACKt from CLK.!. Delay 50 50 ns 41 TCLDL DBMfrom CLK.!. Delay 35 35 ns 2TCLCL-40 TCLCL + TCL - 40 100 ns ns 1,22 2,22 30 ns 23 ECCINTERFACE 42 TWRLFV FWRfrom WR.!. Delay CFS=l CFS=O 43 TFVCL FWR to CLK.!. Setup 40 44 TCLFX FWR to CLK.!. Hold 0 0 ns 24 45 TEVCL ERROR to CLK.!. Setup 20 20 ns 25,26 46 TCLEX ERROR to CLK.!. Hold 0 0 ns 47 TCLRL R/W.!. from CLK.!. Delay 40 40 ns 48 TCLRH R/Wt from CLK.!. Delay 50 50 ns 49 TCEVCL CE to CLK.!. Setup 20 50 TCLCEX 'CE to CLK.!. Hold 0 51 TCLES ESTB from CLK.!. Delay 20 ns ns 0 35 5-67 45 ns 25,27 8207 A.C. CHARACTERISTICS (Continued) Vcc = 5V ±10% for 8207-8; TA = O°C to 70°C; VCC = +5V ±5% for 8207-16 Measurements made with respect to RASo_3. CASO_3. ADo-8. are a + 2.4V and 0.8V. All other pins are measured at 2.0V and O.8V. All times are ns unless otherwise indicated. Testing done with specified test load. Ref Symbol Parameter 8207-10 8207-16. -8 Min Max 'Min Max Units Notes PORT SWITCHING AND LOCK 52 TClMV MUXfrom ClKi Delay 45 53 TClPNV PSENfrom ClKi Delay 54 TClPSV PSEl from ClK i 55 TlKVCl lOCK to ClK i Setup 30 30 ns 30,31 56 TCllKX LOCK to ClK i Hold 10 10 ns 30,31 57 TRWllKV LOCK from RD i , WRi Delay ns 31,32 58 TRWHlKX lOCK to RDi, WR J, Hold 31,32 TCl TCl+35 TCl 35 45 ns TCl+35 ns 35 ns 2TClCl-30 2TClCl-30 28 3TClCl+30 3TClCl+30 ns 20 20 ns 10 10 ns TClCl+30 TClCl+30 ns 33 20 20 ns 34 2TClCl+30 2TClCl+30 ns 33 REFRESH REQUEST 59 TRFVCl RFRO to ClK J, Setup 60 TClRFX RFRO to ClK J, Hold 61 TFRFH Failsafe RFRO Pulse Width 62 TRFXCl Single RFRO Inactive to ClK i Setup 63 TBRFH Burst RFRO Pulse Width NOTES: 1. Specification when programmed in the Fast Cycle processor mode (iAPX 286 mode) . .2. Specification when programmed in the Slow Cycle processor mode (iAPX 186 mode). 3. tR and tF are referenced from the 3.5V and 1.0V levels. 4. RESET is internally synchronized to ClK. Hence a set·up time is required only to guarantee its recognition at a particular clock edge. 5. The first programming bit (PDO) is also sampled by RESET going low. 6. TClPDX is guaranteed if programming data is shifted using PClK. 7. WZ is issued only in ECC mode. 8. TRWVCl is not required for an asynchronous command except to guarantee its recognition at a particular clock edge. 9. Valid when programmed in either Fast or Slow Cycle mode. 10. IASR is a user specified parameter and its value should be added accordingly to TAVCL. 11. When programmed in Slow Cycle mode and 125 ns :s; TClCl < 200 ns. 12. When programmed in Slow Cycle mode and 200 ns :s; TClCL. 13. Specification for Test load conditions. 14. tRCD (actual) = tRCD (specification) + 0.06 (dCRAS) - 0.6 (dCCAS) where dC = C (test load) - C (actual) in pF (These are first order approximations). 15. tRAH (actual) = tRAH (specification) + 0.06 (dCRAS) - 0.022 (dCAO) where dC = C (test load) - C (actual) in pF. (These are first order approximations.) 18. tASR (actual) = IASR (specification) + 0.06 (dCAO) - 0.025 (dCRAS) where dC = C (test load) - C (actual) in pF. (These are first order approximations.) 19. IASC (actual) = tASC (specification) + 0.06 (dCAO) - 0.025 (dCCAS) where dC = C (test load) - C (actual) in pF. (These are first order approximations.) 5-68 8207 20. lASC is a function of clock frequency and thus varies with changes in frequency. A minimum value is specified. 21. See 8207 DRAM Interface Tables 14-18. 22. TWRlFV is defined for both synchronous and asynchronous FWR. In systems in which FWR is decoded directly from the address inputs to the 8207, TClFV is automatically guaranteed by TCLAV. 23. TFVCl is defined for synchronous FWR. 24. TCLFV is defined for both synchronous and asynchronous FWR. In systems in which FWR is decoded directly from the address inputs to the 8207 TClFV is automatically guaranteed by TCLAV. 25. ERROR and CE are set-up to ClK J., in fast cycle mode and elK i in slow cycle mode. 26. ERROR is set-up to the same edge as R/Vii is referenced to, in RMW cycles. 27. CE is set-up to the same edge as WE is referenced to in RMW cycles. 28. Specification when TCl < 25 ns. 29. Synchronous operation only. Must arrive by the second clock falling edge after the clock edge which recognizes the command in order to be effective. 30. lOCK must be held active for the entire period the opposite port must be locked out. One clock after the release of lOCK the opposite port will be able to obtain access to memory. 31. Asynchronous mode only. In this mode a synchronizer stage is used internally in the 8207 to synchronize up lOCK. TRWllKV and TRWHlKX are only required for guaranteeing that lOCK will be recognized for the requesting port, but these parameters are not required for correct 8207 operation. 32. TFRFH and TBRFH pertain to asynchronous operation only. 33. Single RFRQ cannot be supplied asynchronously. WAVEFORMS CLOCK AND PROGRAMMING TIMINGS CLK RESET _J)-~-' PCTL REFRQ POI 210463-28 RAM WARM-UP AND MEMORY INITIALIZATION CYCLES CLK-J\.../\-../ RESET------.~~-~+-------_+---~,~---------_+---RAS ,;-"CJ--r---,Jf.... ' --"'~"--I.l WE:J £~'----~J~----~ wz:J )j RIW:J RESET ) PROGRAMMING FIRST RAM WARM-UP CYCLE , ' -_ _ _ _-J LAST RAM WARM-UP OR INITIALIZATION CYCLE 210463-29 NOTES: 1. When in non-ECC mode or in ECC mode with the TM2 programming bit on, there are no initialization cycles, when in ECC mode with TM2 off, the dummy cycles are followed by initialization cycles. 2. The present example assumes a RAS four clocks long. 5-69 intJ 8207 WAVEFORMS (Continued) SYNCHRONOUS PORT INTERFACE COMMAND MODEl FAST CYCLE RD, W1f, lIE" COMMAND MODEl FAST CYCLE PCTL (INHIBITI COMMAND MODEl FAST CYCLE INTERNAL INHIBIT --+---11--... ---t--t------'+------------------ SLOW CYCLE RD.WR SLOW CYCLE PE ® SLOW CYCLE PCTL INTERNAL CYCLE REQUEST 210463-30 NOTE: Actual transitions are programmable. Refer to Tables 12 and 13. 5-70 intJ 8207 WAVEFORMS (Continued) ASYNCHRONOUS PORT INTERFACE CLK FAST/SLOW CYCLE RD. WR ~~--------~I+-------_r~ ~ST/SLOW CYCLE ------1f-....;;;.;:;....,. ~------------+~------~ SLOW CYCLE PCTL ~------~-----+----GVI--~--------~ ~-----QD-----+~ FAST CYCLE PCTL (INHIBIT) --------------~--~--~------~----------- FAST CYCLE INTERNAL INHIBIT I INTERNAL CYCLE REQUEST 210463-31 5-71 8207 WAVEFORMS (Continued) RAM INTERFACE TIMING ECC AND NON-ECC MODE CLOCK 0 ClK COMMAND ~ ~~~ ~~ ~ / INTERNAL CYCLE REQUEST AlO - Ala AHO - AHa BS o - BS 1 lEN / / ~ ..02.j ~@ ---x l( ~ I-® f--®j ~ -¥- ~-Y- H1iH-- I-@RAS L® ADO -ADa CAS ® I x: -@ X ~ ® 4-¥- "1 -®- ~ ® WE -X .:fJ I--® ~®-1 XACK ®j AACK ~ ~.Y- 1 DBM ~.J- f--®j -X- 210463-32 NOTE: Actual transitions are programmable_ Refer to Tables 12 and 13. 5-72 8207 WAVEFORMS (Continued) PORT SWITCHING AND LOCK TIMING ClK ~g:~:ND -r______ ____ __+-______ ____~__~__ ~ ~ ~ ~-+-+' COMMAND PORT B MUX~PO~R=T~A--~~I_+---------JI RAS , PORT B IF lOCK = 0 PORTA ~--------------- --------h PSEN ____________-+::-::-..J' PSEl ______________"'\1 PORT A PORT B , PORTA '-- lOCK----------~~--------~~~-----------+_-----~· FAST CYCLE _ _ _ ----Ir--I1~ ______....r_lL_______________'~-----®------~ _________________________ INTERNAL lOCK DISABLE 210463-33 NOTE: Transients during MUX switching. REFRESH REQUEST TIMING ClK ~~~~:~~ REFRES:::H.:...._ _ _ _ _....... SINGLE REFRESH REQUEST - - - -_________________- ' -----e®@J f3@ BURST REFRESH REQUEST _ _ _ _ _ _ _ _ _ _ _ _ __ 5-73 210463-34 8207 WAVEFORMS (Continued) ECC INTERFACE TIMING CLOCK 0 .~LJ ~~Lf'~L/\.J'.f- ClK COMMAND,~ (WRI INTERNAL CYCLE REQUEST ~ (44 [--{42J-tFAST CYCLE FWFi )(: ~VALID '43 ~-0-T SLOW CYCLE FWR )[ - -1 X ~§1 /1 X VALID r~ ERROR ~61 )[ VALID I -~f.,- ~ RIW JL .Jl ,,-Xc k®-j XACK \~2 @ r' CE @- )[ VAUD -®~ ESTB :)( ~~ ,y \X- @> ~ -210463-35 NOTES: 1. This parameter is set-up to the falling edge of clock, as shown, for fast cycle configurations. It is set-up to the rising edge of clock if in slow cycle configurations. Table 13A shows which clock and clock edge these signals are set-up in the R/W L column. 2. CE is set-up to the same edge as WE is referenced to in RMW cycles. 5-74 inter 8207 CONFIGURATION TIMING CHARTS The timing charts that follow are based on 8 basic system configurations where the 8207 operates. Tables 10 and 11 give a description of non-ECC and ECC system configurations based on the 8207's PD3, PD4, PD10 and PD11 programming bits. PD~, Table 10. Non-ECC System Configurations Non-ECC Mode: PD~ = 0 Timing Conf. CFS(PD3) RFS(PD4) EXT(PD10) FFS(PD11) Co iAPX286(0) Fast RAM(O) Not EXT(O) 12 MHz(1) Co iAPX286(0) Fast RAM(O) EXT(1) 12 MHz(1) Co iAPX286(0) Slow RAM(1) Not EXT(O) 12MHz(1) Co iAPX286(0) Slow RAM(1) EXT(1) 12MHz(1) Co iAPX286(0) Fast RAM(O) Not EXT(O) 16 MHz(O) C1 iAPX286(0) Slow RAM(1) Not EXT(O) 16 MHz(O) C1 iAPX286(0) Fast RAM(O) EXT(1) 16 MHz(O) C2 iAPX286(0) Slow RAM(1) EXT(1) 16 MHz(O) C3 iAPX186(1) Fast RAM(O) Not EXT(O) 10,8 MHz(O) C3 iAPX186(1) Slow RAM(1) Not EXT(O) 10,8 MHz(O) C3 iAPX186(1) Fast RAM(O) EXT(1) 10,8 MHz(O) C3 iAPX186(1) Fast RAM(O) Not EXT(O) 6 MHz(1) C3 iAPX186(1) Fast RAM(O) EXT(1) 6 MHz(1) C3 iAPX186(1) Slow RAM(1) Not EXT(O) 6 MHz(1) C3 iAPX186(1) Slow RAM(1) EXT(1) 6 MHz(1) C4 iAPX186(1) Slow RAM(1) EXT(1 ) 10,8 MHz(O) Table 11. ECC System Configurations ECC Mode· PD~ = 1 Timing Conf. CFS(PD3) RFS(PD4) EXT(PD10) Co iAPX286(1) Slow RAM(O) MIS EDCU(O) FFS(PD11) Co iAPX286(1) Slow RAM(O) M EDCU(1) 12 MHz(O) Co iAPX286(1) Fast RAM(1) MIS EDCU(O) 12 MHz(O) Co iAPX286(1) Fast RAM(1) M EDCU(1) 12 MHz(O) Co iAPX286(1) Fast RAM(1) M EDCU(1) 16 MHz(1) C1 iAPX286(1) Slow RAM(O) M EDCU(1) 16 MHz(1) C2 iAPX286(1) Fast RAM(1) MIS EDCU(O) 16MHz(1) C3 iAPX286(1) Slow RAM(O) MIS EDCU(O) 16 MHz(1) C4 iAPX186(0) Slow RAM(O) MIS EDCU(O) 6 MHz(O) C4 iAPX186(0) Fast RAM(1) MIS EDCU(O) 6 MHz(O) C4 iAPX186(0) Slow RAM(O) M EDCU(1) 10,8 MHz(1) 12 MHz(O) C4 iAPX186(0) Fast RAM(1) M EDCU(1) 10,8 MHz(1) C5 iAPX186(0) Slow RAM(O) MIS EDCU(O) 10,8 MHz(1) C5 iAPX186(0) Fast RAM(1) MIS EDCU(O) 10,8 MHz(1) C6 iAPX186(0) Slow RAM(O) M EDCU(1) 6 MHz(O) C6 iAPX186(0) Fast RAM(1) M EDCU(1) 6 MHz(O) 5-75 inter 8207 2. LEN - low is given as the latest time it can occur. LEN is only activated by port A configured in Fast Cycle iAPX286 mode, and thus it is not activated by a refresh cycle, although it may be activated by port A during a refresh cycle. 3. ADDRESS - col is the time column address becomes valid. 4. In non-ECC mode the CAS, EAACK, LAACK and XACK outputs are not issued during refresh. 5. In ECC mode there are really seven types of cycles: Read without error, read with error, full write, partial write without error, partial write with error, refresh without error, and refresh with error. These cycles may be derived from the timing chart as follows: A. Read without error: Use row marked 'RD, RF'. B. Read with error: Use row marked 'RMW', except for EAACK and LAACK, which. should be taken from 'RD, RF'. If the error is uncorrectable. WE will not be issued. C. Full write: Use row marked 'WR'. D. Partial write without error: Use row marked 'RMW', except that DBM and ESTB will not be issued. E. Partial write with error: Use row marked 'RMW', except that DBM will not be issued. If the error is uncorrectable, WE will not be issued. F. Refresh without error: Use row marked 'RD, RF', except that ESTB, EAACK, LAACK, and XACK will not be issued. G. Refresh with error: Use row marked 'RMW', except that EAACK, LAACK, ESTB, and XACK will not be issued. If the error is uncorrectable WE will not be issued. 6. XACK - high is reset asynchronously by command going inactive and not by a clock edge. 7. MUX - valid is given as the latest time it can occur. Using the Timing Charts The notation used to indicate which clock edge triggers an output transition is "n t" or "n J.. ", where un" is the number of clock periods that have passed since clock 0, the reference clock, and "t .. refers to rising edge and" J.. " to falling edge. A clock period is defined as the interval from a clock falling edge to the following falling edge. Clock edge_s are defined as shown below. (n-1)1 nl ni (n+1)1 (n+1)1 210463-36 The clock edges which trigger transitions on each 8207 output are tabulated in Table 12 for non-ECC mode and Table 13 for ECC mode. "H" refers to the high-going transition, and "L" to low-going transition;"V" refers to valid, and "\I" to non-valid. Clock 0 is defined as the clock in which the 8207 begins a memory cycle, either as a result of a port request which has just arrived, or of a port request which was stored previously but could not be serv" iced at the time of its arrival because the 8207 was performing another memory cycle. Clock 0 may be identified externally by the leading edge of RAS, which is always triggered on 0 J.. . Notes for interpreting the timing charts: 1. PSEL - valid is given as the latest time it can occur. It is entirely possible for PSEL to become valid before the time given in a refresh cycle. PSEL can switch as defined in the chart, but it has no bearing on the refresh cycle itself, but only on a subsequent cycle for one of the external ports. 5-76 intJ 8207 Table 12A. Timing Chart-Non-ECC Mode PSEN Cn Co Cycle RD, RF WR C1 RD, RF WR C2 RD, RF WR C3 RD, RF WR C4 RD, RF WR H L a.! a.! a.! oJ, oJ, oJ, oJ, a.! oJ, A.! 3.! 4.! 5.! 4J, 5J, 4.! 2.! 3J, 3J, 3J, PSEL V a.! a.! a.! oJ, at oJ, a.! oJ, a.! a.! DBM V 4.! 5.! 6.! 5J, 6J, 5J, 3J, 4J, 4.! 4J, L LEN H a.! 4.! a.! 6.! oJ, 6J, a.! 3J, a.! 4J, L a.! a.! a.! oJ, oJ, oJ, RAS H 2.! 2.! 2.! 2.! 2.! 2J, L H a.! a.! a.! oJ, oJ, A.! oJ, oJ, oJ, oJ, WE CAS 3.! 5.! 4.! 5.! 4.! 5J, 3.! 4.! 4.! 4J, L H 1.! 4.! 1 .! 5.! 1 .! 6J, 1 J, 5J, 1J, 6J, 1J, 5J, oJ, 3J, oJ, 4J, oJ, 4J, oJ, 4J, Table 12B. Timing Chart-Non-ECC Mode Col Addr Cn Co Cycle RD,RF WR C1 RD, RF WR C2 RD, RF WR C3 RD, RF WR C4 RD, RF WR EAACK V V L A.! A.! a.! oJ, A.! oJ, oJ, oJ, a.! oJ, 2J, 2J, 3.! 3J, 3J, 3J, 2.! 2J, 2.! 2.! 1J, 1 J, 2.! 1 J, 2J, 1 J, oJ, oJ, 1.! oJ, LAACK H L 4.! 4J, 5.! 4J, 5.! 4.! 2.! 2.! 3.! 2.! 2J, 1 J, 2.! 1 J, 3J, 1 J, 1J, 1j 1.! 1j 5-77 XACK H L H 5.! 4.! 5.! 4J, 6.! 4.! 3.! 3j 3J, 3j 3J, 3J, 4.! 3J, 4.! 3.! 2.! 2.! 3j 2J, RD WR RD WR RD WR RD WR RD WR MUX V V -2.! -2.! -2J, -2.! -2.! -2.! -1.! -1.! -1J, -1.! 2J, 2J, 2J, 2J, 2J, 2J, 2J, 2J, 2J, 2J, H L 2.! 5.! 2J, 5J, 2.! 5J, 2j 4J, 2j 4J, aL-9 t9 !8 t9 !1: t9 tv !1: tv ! ~ tv tv tL !9 tL !8 tL t9 !8 t9 ! ~ t9 tv !9 tL tL !8 tL t9 !8 t9 ! ~ t9 tv t ~ ~ ta t ~ ~ t9 t ~ ~ tL tv tL t~ tL tL t ~ ~ ta t ~ ~ t9 t ~ ~ tL tv tL t ~ tL tL t6 t9 t6 tv t6 t9 t8 t9 t~ t9 t9 t6 t9 t6 tv t6 t9 t8 t9 t~ t9 t9 H 1 3M H MIl:! 1 to to to to to to to to to t~ t~ t~ t~ t~ t t t ~ ~ ~ t~ t t t H S\'O 1 ~ ~ ~ t9 tv t8 tL t9 t8 tL t9 t8 t ~~ tL t9 t ~~ _tL t9 t6 t9 tv t6 t9 tv to to to to to to to to to to to to to to to to to to to to to t1: t1: t1: t1: t1: t1: t1: t1: t1: t1: t1: t1: to to to to to to to to to to to to H 1 H 1 S\,l:! N31 t9 to t9 tv tv to tv tL to tL t9 tv to tv tL to tL t9 tv to tv t ~~ to t ~ ~ tL tL to tL t ~~ to t ~ ~ tL tL to tL t6 to f6 t9 t9 to t9 t6 to t6 t9 t9 to t9 H 1 weo !! to to to to to to to to to to to to to to to to to to to to to " 13Sd t9 t9 ta t9 t9 ta t9 t9 to to to to to to to to to to to to to to to to to to to to to 1 H tv t8 t8 t9 tv t8 t9 tv t8 to~ t9 t9 to~ MVlJI:l I:lM 9:) :l1:l 'Ol:l MVlJI:l I:lM 9:) :lI:l'OI:l MVlJI:l I:lM v:) :lI:l'OI:l MVlJI:l I:lM £:) :lI:l'OI:l MVlJI:l I:lM i::) :l1:l 'Ol:l MVlJI:l I:lM ~:) :l1:l 'Ol:l MVlJI:l I:lM 0:) :lI:l'OI:l al:>Ao Uo N3Sd apow 003-IJBlIO 6u!wU. .\'&~ alqB.l L.OZ:S Flu! infef 8207 Table 13B. Timing Chart-ECC Mode Col Addr Cn Co C1 C2 C3 C4 C5 C2 Cycle V Ii RD, RF WR RMW RD, RF WR RMW RD, RF WR RMW RD, RF WR RMW RD, RF WR RMW RD, RF WR RMW RD, RF WR RMW oJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJ- 2J2J2J3J3J3J3J3J,. 3J3J3J3J2J2J2J,. 2J,. 2J2J2J2J2J- ESTB L H 6J- BJ- 6J- BJ- BJ- 10 J- BJ- 10 J- EAACK 6j 5j 6j 3j 4j XACK MUX H L H L H V Ii 2J2J5J3J2J5J4J3J7J4J3J7J- 5J5JBJ6J5JBJ7J6J10 J7J6J10 J,. 3J3J5J4J3J5J3J3J3J- 3J2J5J3J2J5J4J3J7J5J3J7J2j 2j 4j 3j 2j 4j 6J5JBJ6J5J,. BJ7J6J10 JBJ6J,. 10 J4j 4j 6j 5j 4j 6j 3j 3j 4j 4J4J7J4J4J7J5J5J9J5J5J9J3j 3J5J3j 3J5J2j 2J3J- RD WR WR RD WR WR RD WR WR RD WR WR RD WR WR RD WR WR RD WR WR -2J-2J-2J-2J-2J-2J-2J-2J-2J-2J-2J-2J-1J-1J-1J-1J-1J-1J-1J-1J-1J- 2J2J2J2J2J2J2J2J2J2J2J2J2J2J2J2J2J2J2J2J2J- q 5j LAACK L 1J3J,. 2J1J3J1J1J1J- 5·79 1j 1j 2j 8207 READ & REFRESH CYCLES tRCH: WE always goes active after CAS goes active, hence tRCH is guaranteed by tCPN. 8207-DRAM Interface Parameter Equations Several DRAM parameters, but not all, are a direct function of 8207 timings, and the equations for these parameters are given in the following tables. The following is a list of those DRAM parameters which have NOT been included in the following tables, with an explanation for their exclusion. WRITE CYCLE guaranteed by tRWC. guaranteed by tRRW. guaranteed by tCRW. WE always activated after CAS is activated, except in memory initialization, hence tWCS is always negative (this is important for RMW only) except in memory initialization; in memory initialization tWCS is positive and has several clocks of margin. tDS: system-dependent parameter. tDH: system-dependent parameter. tDHR: system-dependent parameter. tRC: tRAS: tCAS: tWCS: READ, WRITE, READ-MODIFY-WRITE & REFRESH CYCLES tRAC: response parameter. tCAC: response parameter. tREF: See "Refresh Period Options" tCRP: must be met only if CAS-only cycles, which do not Qccur with 8207, exist. tRAH: See "AC. Characteristics" tRCD: See "AC. Characteristics" tASC: See "AC. Characteristics" tASR: See "AC. Characteristics" tOFF: response parameter. READ-MODIFY-WRITE CYCLE tRWD: tCWD: don't care in 8207 ed for 8207 RMW don't care in 8207 ed for 8207 RMW write cycles, but tabulatcycles. write cycles, but tabulatcycles. Table 14. Non-ECC Mode-RO, RF Cycles Fast Cycle Configurations Parameter Slow Cycle Configurations Notes Co C1 C2 C3 C4 tRP 3TCLCL-T26 4TCLCL-T26 4TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 tCPN 3TCLCL-T35 3TCLCL-T35 3TCLCL-T35 2.5TCLCL - T35 2.5TCLCL - T35 1 tRSH 2TCLCL-T34 3TCLCL-T34 3TCLCL-T34 3TCLCL-T34 4TCLCL-T34 1 tCSH 4TCLCL-T26 6TCLCL-T26 6TCLCL-T26 3TCLCL-T26 4TCLCL-T26 1 tCAH TCLCL-T34 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 1 tAR 2TCLCL-T26 3TCLCL-T26 3TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 3/30 3/30 3/30 3/30 3/30 2 tT tRC 6TCLCL 8TCLCL 8TCLCL 5TCLCL 6TCLCL 1 3TCLCL-T26 4TCLCL-T26 4TCLCL-T26 3TCLCL-T26 4TCLCL-T26 1 tCAS 3TCLCL-T34 5TCLCL-T34 5TCLCL-T34 3TCLCL-T34 4TCLCL-T34 1 tRCS 2TCLCL-TCL 2TCLCL-TCL 2TCLCL-TCL -T36-TBUF -T36-TBUF -T36-TBUF 1.5TCLCL - TCL -T36-TBUF 1.5TCLCL - TCL -T36-TBUF 1 tRAS 5-80 8207 Table 15. Non-ECC Mode-WR Cycle Fast Cycle Configurations Parameter Slow Cycle Configurations C2 C3 Notes Co C1 tRP 3TCLCL-T26 3TCLCL-T26 3TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 tCPN 4TCLCL-T35 4TCLCL-T35 4TCLCL-T35 2.5TCLCL - T35 2.5TCLCL - T35 1 tRSH 4TCLCL-T34 4TCLCL-T34 4TCLCL-T34 4TCLCL-T34 4TCLCL-T34 1 tCSH 5TCLCL-T26 5TCLCL-T26 5TCLCL-T26 4TCLCL-T26 4TCLCL-T26 1 C4 tCAH TCLCL-T34 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 1 tAR 2TCLCL-T26 3TCLCL-T26 3TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 tT tRWC 3/30 3/30 3/30 3/30 3/30 2 8TCLCL 8TCLCL 8TCLCL 6TCLCL 6TCLCL 1 tRRW 5TCLCL-T26 5TCLCL-T26 5TCLCL-T26 4TCLCL-T26 4TCLCL-T26 1 tCRW 4TCLCL-T34 4TCLCL-T34 4TCLCL-T34 4TCLCL-T34 4TCLCL-T34 1 tWCH 3TCLCL+TCL -T34 3TCLCL+TCL 3TCLCL+TCL -T34 3TCLCL+TCL -T34 3TCLCL+TCL -T34 1,3 tWCR 4TCLCL+TCL -T26 4TCLCL+TCL 4TCLCL+TCL -T26 -T26 3TCLCL+TCL -T26 3TCLCL+TCL -T26 1,3 tWP 2TCLCL+TCL -T36-TBUF 2TCLCL+TCL -T36-TBUF 2TCLCL+TCL -T36-TBUF 2TCLCL-T36 -TBUF 2TCLCL-T36 -TBUF 1 tRWL 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 - TBUI'; 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 1 tCWL 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 1 -T34 5·81 inter 8207 Table 16A. ECC Mode-RD, RF Cycles Fast Cycle Mode Parameter Co C1 Notes C2 Ca tAP 4TCLCL-T26 4TCLCL-T26 4TCLCL-T26 4TCLCL-T26 1 tCPN 3TCLCL-T35 3TCLCL-T35 3TCLCL-T35 3TCLCL-T35 1 tASH 3TCLCL-T34 3TCLCL-T34 4TCLCL-T34 4TCLCL-T34 1 tCSH 6TCLCL-T26 6TCLCL-T26 7TCLCL-T26 7TCLCL-T26 1 tCAH tAA TCLCL-T34 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 1 2TCLCL-T26 3TCLCL-T26 3TCLCL-T26 3TCLCL-T26 1 3/30 3/30 8TCLCL 8TCLCL tAAS 4TCLCL-T26 4TCLCL-T26 tCAS 5TCLCL-T34 tACS TCLCL-T36 -TBUF tT tAC 3/30 3/30 2 9TCLCL 1 5TCLCL-T26 5TCLCL-T26 1 5TCLCL-T34 6TCLCL-T34 6TCLCL-T34 1 TCLCL-T36 -TBUF TCLCL-T36 -TBUF TCLCL-T36 -TBUF 1 9TCLCL. Table 168. ECC Mode-RD, RF Cycles Slow Cycle Mode Parameter tAP Notes C4 Cs Cs 2TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 tCPN 1.5TCLCL ,- T35 1.5TCLCL - T35 1.5TCLCL - T35 1 tASH 3TCLCL-T34 3TCLCL-T34 3TCLCL-T34 1 tCSH 4TCLCL-T26 4TCLCL-T26 4TCLCL-T26 1 tCAH 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 1 tAR 2TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 3/30 3/30 3/30 2 tT tRC tRAS 5TCLCL 5TCLCL 5TCLCL 1 3TCLCL-T26 3TCLCL-T26 3TCLCL-T26 1 tCAS 4TCLCL-T34 4TCLCL-T34 4TCLCL-T34 1 tACS 0.5TCLCL - T36 -TBUF 0.5TCLCL - T36 -TBUF 0.5TCLCL - T36 -TBUF 1 5·82 8207 Table 17A ECC Mode-WR Cycle Fast Cycle Mode Parameter tRP tCPN tRSH tCSH tCAH tAR tT tRWC tRRW tCRW tWCH tWCR tWP tRWL tCWL Co 3TCLCL-T26 4TCLCL-T35 5TCLCL-T34 6TCLCL-T26 TCLCL-T34 2TCLCL-T26 3/30 9TCLCL 6TCLCL-T26 5TCLCL-T34 5TCLCL-T34 6TCLCL-T26 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF Parameter tRP tCPN tRSH tCSH tCAH tAR tT tRWC tRRW tCRW tWCH tWCR tWP tRWL tCWL C1 3TCLCL-T26 4TCLCL-T35 5TCLCL-T34 6TCLCL-T26 2TCLCL-T34 3TCLCL-T26 3/30 9TCLCL 6TCLCL-T26 5TCLCL-T34 5TCLCL - T34_ 6TCLCL-T26 3TCLCL-T36 --TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF C2 3TCLCL-T26 4TCLCL-T35 6TCLCL-T34 7TCLCL-T26 2TCLCL-T34 3TCLCL-T26 3/30 10TCLCL 7TCLCL-T26 6TCLCL-T34 6TCLCL-T34 7TCLCL-T26 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF Notes C3 3TCLCL-T26 4TCLCL-T35 6TCLCL-T34 7TCLCL-T26 2TCLCL-T34 3TCLCL-T26 3/30 10TCLCL 7TCLCL-T26 6TCLCL-T34 6TCLCL-T34 }TCLCL - T26 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF Table 178. ECC Mode-WR Cycle Slow Cycle Mode C4 2TCLCL-T26 2.5TCLCL - T35 5TCLCL-T34 5TCLCL-T26 2TCLCL-T34 2TCLCL-T26 3/30 7TCLCL 5TCLCL-T26 5TCLCL-T34 5TCLCL-T34 5TCLCL-T26 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF Cs 2TCLCL-T26 2.5TCLCL - T35 5TCLCL-T34 5TCLCL-T26 2TCLCL-T34 2TCLCL-T26 3/30 7TCLCL 5TCLCL-T26 5TCLCL-T34 5TCLCL-T34 5TCLCL-T26 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 5-83 Cs 2TCLCL-T26 2.5TCLCL - T35 4TCLCL-T34 4TCLCL-T26 2TCLCL-T34 2TCLCL-T26 3/30 6TCLCL 4TCLCL-T26 4TCLCL-T34 4TCLCL-T34 4TCLCL-T26 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF Notes 1 1 1 1 1 1 2 1 1 1 1,4 1,4 1 1 1 1 1 1 1 1 1 2 1 1 1 1,4 1,4 1 1 1 intJ 8207 Table 18A. ECC Mode-RMW Fast Cycle Mode, Parameter Notes Co C1 C2 C3 tRP 3TCLCL-T26 3TCLCL-T26 3TCLCL-T26 3TCLCL-T26 1 tCPN 4TCLCL-T35 4TCLCL-T35 4TCLCL-T35 4TCLCL-T35 1 tRSH 8TCLCL-T34 . 8TCLCL - T34 1OTCLCL - T34 1OTCLCL - T34 1 tCSH 9TCLCL-T26 9TCLCL-T26 11 TCLCL - T26 11 TCLCL - T26 1 tCAH TCLCL-T34 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 1 tAR 2TCLCL-T26 3TCLCL-T26 3TCLCL-T26 3TCLCL-T26 1 3/30 3/30 3/30 3/30 2 12TCLCL 12TCLCL 14TCLCL 14TCLCL 1 tRRW 9TCLCL-T26 9TCLCL-T26 11 TCLCL - T26 11TCLCL - T26 1 tCRW 8TCLCL-T34 8TCLCL-T34 1OTCLCL - T34 1OTCLCL - T34 1 tRCS TCLCL-T36 -TBUF TCLCL-T36 -TBUF TCLCL-T36 -TBUF TCLCL-T36 -TBUF 1 tRWD 6TCLCL-T26 6TCLCL-T26 8TCLCL-T26 8TCLCL-T26 1,4 tCWD 5TCLCL-T34 5TCLCL-T34 7TCLCL-T34 7TCLCL-T34 1 tWP 3TCLCL-T36 -TBUF , 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 1 tRWL 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 1 tCWL 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 3TCLCL-T36 -TBUF 1 tT tRWC 5-84 inter 8207 Table 188. ECC Mode-RMW Slow Cycle Mode Parameter Notes C4 Cs C6 2TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 tCPN 2.5TCLCL - T35 2.5TCLCL - T35 2.5TCLCL - T35 1 tRSH 7TCLCL-T34 7TCLCL-T34 5TCLCL-T34 1 tRP tCSH 7TCLCL-T26 7TCLCL-T26 5TCLCL-T26 1 tCAH 2TCLCL-T34 2TCLCL-T34 2TCLCL-T34 1 tAR 2TCLCL-T26 2TCLCL-T26 2TCLCL-T26 1 3/30 3/30 3/30 2 tT tRWC 9TCLCL 9TCLCL 7TCLCL 1 tRRW 7TCLCL-T26 7TCLCL-T26 5TCLCL-T26 1 tCRW 7TCLCL-T34 7TCLCL-T34 5TCLCL-T34 1 tRCS 0.5TCLCL - T36 -TBUF 0.5TCLCL - T36 -TBUF 0.5TCLCL - T36 -TBUF 1 tRWD 4TCLCL+TCL -T26 4TCLCL+TCL -T26 2TCLCL+TCL -T26 1 tCWD 4TCLCL+TCL -T34 4TCLCL+TCL -T34 2TCLCL+TCL -T34 1 tWP 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 1 tRWL 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL - T36- TBUF 1 tCWL 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 3TCLCL-TCL -T36-TBUF 1 NOTES: 1. Minimum. 2. Value on right is maximum; value on left is minimum. 3. Applies to the eight warm-up cycles during initialization only. 4. Applies to the eight warm-up cycles and to the memory initialization cycles during initialization only. 5. TP = TCLCL T26 = TCLRSL T34 = TCLCSL T35 = TCLCSH T36 = TCLW TBUF = TTL Buffer delay. 5-85 82C08 CHMOS DYNAMIC RAM CONTROLLER Wait State with INTEL I-LProcessors • oiAPX } 82C08-20 20 MHz • (10,8 286 MHz) 82C08-16 16 MHz Addresses and Drives up to • Directly 1 Megabyte without External Drivers • • iAPX 186/88 } 82C08-10 10 MHz 86/88 82C08-8 8 MHz • Down Mode with Programmable • Power Memory Refresh using Battery Backup Supports 64K and 256K DRAMs (256K x 1 and 256K x 4 Organizations) Microprocessor Data Transfer and Advance Acknowledge Signals Five Programmable Refresh Modes RAM Warm-up • Automatic Pin-Compatible with 8208 • 48 Lead Plastic DIP; 68 Lead PLCC • with Normal Modes of • Compatible Static Column and Ripplemode DRAMs (See Intel Packaging; Order-Number: 23t369-001) The Intel 82C08 Dynamic RAM Controller is a CMOS, high performance, systems oriented, Dynamic RAM controller that is designed to easily interface 64K and 256K Dynamic RAMs to Intel and other microprocessors. The 82C08 also has a power down mode where only the refresh logic is activated using battery backup. AL4 AL3 AL2 AL1 ALO BS ADD ADl AD2 AD3 AD4 Vss ADS AD6 AD7 AD8 POD RASl nc., 11m< VCC/VPD ALS AL6 AL7 AL8 AHO AHl AH2 AH3 AH4 AHS AH6 Vss AH7 AH8 POI RFRQ CLK RASli liD CASi WR PE CASD PDCLK RESET Vee PCTL AACKlXACK WElPCLK 231357-2 68 67 66 55 64 62 61 60 59 58 57 56 55 ~ 53 52 68 LEAD PLCC 82CD8 TOP VIEW 9 10 231357-1 63 11 12 13 14 15 ,. 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 231357-35 Figure 1. Block Diagram and Pinout Diagrams 5-86 September 1987 Order Number: 231357·006 inter 82C08 Table 1. Pin Description Symbol DIP Pin PLCC ALO AL1 AL2 AL3 AL4 AL5 AL6 AL7 AL8 5 4 3 2 1 47 46 45 44 55 56 57 58 59 63 64 66 67 ADDRESS LOW: These lower order address inputs are used to generate the column address for the internal address multiplexer. In iAPX 286 mode (CFS = 1), these addresses are latched internally. AHO AH1 AH2 AH3 AH4 AH5 AH6 AH7 AH8 43 42 41 40 39 38 37 35 34 2 3 4 5 6 7 8 12 13 ADDRESS HIGH: These higher order address inputs are used to generate the row address for the internal address multiplexer. In iAPX 286 mode, these addresses are latched internally. BS 6 50 BANK SELECT: This input is used to select one of the two banks of the dynamic RAM array. AOO A01 A02 A03 A04 A05 A06 A07 A08 7 8 9 10 11 13 14 15 16 49 48 47 46 45 41 40 39 38 0 0 0 0 0 0 0 0 0 ADDRESS OUTPUTS: These outputs are designed to provide the row and column addresses, of either the CPU or the· refresh counter, to the dynamic RAM array. These outputs drive the dynamic RAM array directly and need no external drivers. However, they typically need series resistors to match. impedances. RASO RAS1 19 18 33 36 0 0 ROW ADDRESS STROBE: These outputs are used by the dynamic RAM array to latch the row address, present on the AOO8 pins. These outputs are selected by the BS pin. These outputs drive the dynamic RAM array directly and need no external drivers. CASO CAS1 21 20 30 31 0 0 COLUMN ADDRESS STROBE: These outputs are used by the dynamic RAM array to latch the column address, present on the AOO-8 pins, These outputs are selected by the BS pin. These outputs drive the dynamic RAM array directly and need no external drivers. RESET 23 28 I RESET: This active high signal causes all internal counters to be reset. Upon release of RESET, data appearing at the POI pin is clocked-in by the PCLK output. The states of the POI, PCTL, and RFRQ pins are sampled by RESET going inactive and are used to program the 82C08. An 8-cycle dynamic RAM warm-up is performed after clocking POI bits into the 82C08. WEI PCLK 25 24 0 WRITE ENABLE/PROGRAMMING CLOCK: Immediately after a RESET this pin becomes PCLK and is used to clock serial programming data into the POI pin. After the 82C08 is programmed this active high signal provides the dynamic RAM array the write enable input for a write operation. Name and Function Type 5-87 intJ 82C08 Table 1. Pin Description (Continued) DIP Pin PLCC Type AACKI XACK 26 23 0 PCTl 27 22 I PORT CONTROL: This pin is sampled on the falling edge of RESET. It configures the 82C08 to accept command inputs or processor status inputs. If PCTl is low after RESET the 82C08 is programmed to accept bus/multibus command inputs or iAPX 286 status inputs. If PCTl is high after RESET the 82C08 is . programmed to accept status inputs from iAPX 86 or iAPX 186 type processors. The S2 status line should b.e connected to this input if programmed to accept iAPX 86 or iAPX 186 inputs. When programmed to accept bus commands or iAPX 286 status inputs, it should be tied low or it may be connected to INHIBIT when operating with MUlTIBUS. PE 28 21 I PORT ENABLE: This pin serves to eh.able a RAM cycle request. It is generally decoded from the address bus. . WR 29 20 I WRITE: This pin is the write memory request command input. This input also directly accepts the SO status line from Intel processors. RO 30 19 I READ: This pin is the read memory request'commarid pin. This input also directly accepts the S1 status line from Intel processors. ClK 31 16 I CLOCK: This input provides the basic timing for sequencing the internal logic. RFRO 32 15 .1 REFRESH REQUEST: This input is sampled .on the falling edge of RESET. If RFRO is high at RESET then the 82C08 is programmed for internal-refresh request or external-refresh request with failsafe protection. If RFRO is low at RESET then the 82C08 is programmed for external-refresh without failsafe protection or burst refresh: Once programmed the RFRO pin accepts Signals to start an external-refresh with failsafe protection or external-refresh without failsafe protection or a burst refresh. RFRO is also sampled when POD is activated. When RFRO = 1 it will cause 3 ' burst refresh cycles. POI 33 14 I PROGRAM DATA INPUT: This input is sampled by RESET going low. It programs the various user selectable options in the 82C08. The PClK pin shifts programming data into the POI input from an external shift register. This pin may be strapped low to a default iAPX 186 mode configuration or high to a default iAPX 286 mode configwation. 'POO 17 37 I POWER DOWN DETECT: This input is sampled before every memory cycle to inform the 82C08 of system detection of power failure. When active, the 82C08 remains in power down mode and performs memory refresh only (RAS-only refresh). In power down mode the 82C08 uses POClK for timing and VPO for power. Symbol Name and Function ADVANCE ACKNOWLEDGE/TRANSFER ACKNOWLEDGE: When the X programming bit is set to logic 0 this pin is AACK and indicates that the processor may continue processing and that data will be available when required. This signal is optimized for the system by programming the S program-bit for synchronous or asynchronous operation. The S programming bit determines whether this strobe will be early or late. If another dynamic RAM cycle is in progress at the time of the new request, the AACK is delayed. When the X programming bit is set to logic 1 this pin is XACK and indicates that data on the bus is valid during a read cycle or that data may be removed from the bus during a write cycle. XACK is a MUlTIBUS compatible signal. 5-88 inter 82C08 Table 1. Pin Description (Continued) Symbol 'PDCLK DIP Pin PLCC Type 22 29 I Name and Function POWER DOWN CLOCK: This pin is used as a clock for internal refresh circuits during power down. The input can be asynchronous to pin 31. Extended refresh is achieved by slowing down this clock. This pin should be grounded if not used. 'Vee/VpD 48 61,62 I Vee 24 26,27 I POWER: Power supply for internal logic. This should be held active during power down, and normal operation. POWER: Supply for drivers. Need not be held active during power down. Vss 12 36 9,10, 11,42, 43,44 NC - 17,18, 1,25, 32,34, 35,51, 53,54, 60,65, 68 Vees I I 52 GROUND GROUND Connect to Vpp, Pin 48 for PLCC package. 'Different function than the HMOS 8208. GENERAL DESCRIPTION FUNCTIONAL DESCRIPTION The Intel 82C08 Dynamic RAM Controller is a micro· computer peripheral device which provides the nec· essary signals to address, refresh, and directly drive 64K and 256K dynamic RAMs. It is compatible with static column or ripple mode DRAMs in the normal mode. It does not support the fast transfer mode of these DRAMs. Processor Interface The 82C08 has control circuitry capable of supporting one of several possible bus structures. The 82C08 may be programmed to run synchronous or asynchronous to the processor clock. The 82C08 has been optimized to run synchronously with Intel's iAPX 86, iAPX 88, iAPX 186/188 and iAPX 286. When the 82C08 is programmed to run in asynchronous mode, the 82C08 inserts the necessary synch~onization circuitry for the RD, WR inputs. The 82C08 supports several microprocessor inter· face options including synchronous and asynchro· nous operations for iAPX 86, iAPX 186, iAPX 286, and MULTIBUS. The 82C08 will also interface to non-Intel microprocessors. The 82C08 achieves high performance (Le. no wait states) by decoding the status lines directly from the processor. The 82C08 can also be programmed to receive read or write MULTIBUS commands or commands from a bus controller. The 82C08 is a CHMOS version of the 8208 and is pin compatible with it. Three pins-17, 22, and 48of the 82C08 are different from the 8208. They provide a power down mode that allows the system to run at a much lower ICC. In this mode, the 82C08 refreshes the DRAM using battery backup. The power down current (lpD) that is drawn by the 82C08 is very small compared to the IcC which allows memory to be kept alive with a battery. A separate refresh clock, pin 22, allows the designer to take advantage of RAMs that permit extended memory refresh. The 82C08 may be programmed to operate synchronously to the processor. It can also be programmed to run at various frequencies. (See Microprocessor Clock Frequency Option.) Figure 2 shows the different processor interfaces to the 82C08 using the synchronous or asynchronous mode and status or command interface. Figure 3 shows detailed interfaces to the iAPX 186 and iAPX 286 processors. The 82C08 also has some timing changes versus the 8208. In order to eliminate the external bus latches, both WE and CAS timings are shortened. These timing changes are backwards-compatible for 8208 designs. 5-89 intJ 82C08 501-----..... S11------I~ 231357-3 231357-5 Slow-Cycle Synchronous-Status Interface Slow-Cycle Asynchronous-Status Interface 231357-4 231357-6 Slow-Cycle Synchronous-Command Interface Figure 2A. .Slow-cycle (CFS = Slow-Cycle Asynchronous-Command Interface 0) Port Interfaces Supported by the 82C08 5-90 82C08 I======::I_CLJ( AD WA 82C08 231357-9 231357-7 Fast-Cycle Asynchronous-Status Interface Fast-Cycle Synchronous-Status Interface 231357-10 231357-8 'MULTIBUS OPTION Fast-Cycle Synchronous-Command Interface Figure 2B. Fast-cycle (CFS = Fast-Cycle Asynchronous-Command Interface 1) Port Interfaces Supported by the 82C08 5-91 82C08 ..... LATCHED ADDRESS BUS SYSTEM ADDRESS BUS 231357-11 Figure 3A. 82C08 Interface to an 80186 OTHERS~ ......CK SIGNALS I l usn 1-------;11 "'~~~1==========:::lfi "to 80286 .,:; 82288.82284 IIEMORY ~ tUPPER) r-F ;r::::'''i'''' f-!, ~V r------Y MEMORY (LOWfR) ··J=I~I-""'l.;~~r-----v'r..;·-,·~ S2COa "'00_1 ., 1--------1"\ - "AlO! I .t. r ... I.., to-I ADOR '" I--- 1------'-"" 1-____-,,/) LATCHED ADDRESS BUS r -.-J;'-----......J-"t<".) -' SYSTEM DATA BUS 231357-12 Figure 3B. 82C08 Interface to an 80286 5-92 82C08 Table 2 shows the bank selection decoding and corresponding RAS and CAS assignments. For ample, if only one RAM bank is occupied, then two RAS and CAS strobes are activated with same timing. Dynamic RAM Interface The 82C08 is capable of addressing 64K and 256K dynamic RAMs. Figure 3 shows the connection of the processor address bus to the 82C08 using the different RAMs. the exthe the Table 2. Bank Selection Decoding and Word Expansion A11-A19 256K RAM INTERFACE Program Bit RB Bank Input BS 82C08 RAS/CAS Pair Allocation 0 0 RASa, 1, CAS a, 1 to Bank 0 0 1 Illegal 1 0 RASa, CASa to Bank 0 1 1 RAS 1 , CAS1 to Bank 1 Program bit RB is not used to check the bank select input BS. The system design must protect from accesses to "illegal", non-existent banks of memory by deactivating the PE input when addressing an "illegal", non-existent bank of memory. 64K RAM INTERFACE 231357-13 NOTES: 1. Unassigned address input pins should be strapped high. 2. Aa along with BHE are used to select a byte within a processor word. 3. Low order address bit is used as a bank select input so that consecutive memory access requests are to alternate banks allowing bank interleaving of memory cycles. The 82C08 adjusts and optimizes internal timings for either the fast or slow RAMs as programmed. (See RAM Speed Option.) Memory Initialization After programming, the 82C08 performs eight RAM "wake-up" cycles to prepare the dynamic RAM for proper device operation. Figure 3. Processor Address Interface to the 82C08 Using 64K, and 256K RAMS The 82C08 divides memory into two banks, each bank having its own Row (RAS) and Column (CAS) Address Strobe pair. This organization permits RAM cycle interleaving. RAM cycle interleaving overlaps the start of the next RAM cycle with the RAM precharge period of the previous cycle. Hiding the precharge period of one RAM cycle behind the data access period of the next RAM cycle optimizes memory bandwidth and is effective as long as successive RAM cycles occur in the alternate banks. Refresh The 82C08 provides an internal refresh interval counter and a refresh address counter to allow the 82C08 to refresh memory. The 82C08 has a 9-bit internal refresh address counter which will refresh 128 rows every 2 milliseconds, 256 rows every 4 milliseconds or 512 rows every 8 milliseconds, which allows all RAM refresh options to be supported. In addition, there exists the ability to refresh 256 row address locations every 2 milliseconds via the Refresh Period programming option. Successive data access to the same bank cause the 82C08 to wait for the precharge time of the previous RAM cycle. But when the 82C08 is programmed in an iAPX 186 synchronous configuration, consecutive cycles to the same bank do not result in additional wait states (i.e. 0 wait state). The 82C08 may be programmed for any of five different refresh options: Internal refresh only, External refresh with failsafe protection, External refresh without failsafe protection, Burst refresh modes, or no refresh. (See Refresh Options.) If not all RAM banks are occupied, the 82C08 can be programmed to reassign the RAS and CAS strobes to allow using wider data words without increasing the loading on the RAS and CAS drivers. It is possible to decrease the refresh time interval by 10%,20% or 30%. This option allows the 82C08 to compensate for reduced clock frequencies. Note 5-93 inter 82C08 that an additional 5% interval shortening is built-in in all refresh interval options to compensate for clock variations and non-immediate response to the internally generated refresh request. (See Refresh Period Options.) SYSTEM RE~ 82C08 I . L- I - - - t1~ RES~I..-._ _ _ _ _ _ __ t 1~~ PROGRAMMING TIME ~==~ OF 82C08 ________ External Refresh Requests after RESET DIFFERENTI~TED TRESP TPREP = TPROG + RESET NOTES: 231357 -14 1. Required only when the synchronization option is altered from its initial default value. 2. Vcc must be stable before system reset is activated when using this circuit. ego 82C08 System Response: where: TPROG 82C08 RESET SYSTEM RESET External refresh requests are not recognized by the 82C08 until after it is finished programming and preparing memory for access. Memory preparation includes.8 RAM cycles to prepare and ensure proper dynamic RAM operation. The time it takes for· the 82C08 to recognize a request is shown below. TPREP = (40) (TClCl) programming time Figure 4. 82C08 Differentiated Reset Circuit = (8) (32) (TClCl) RAM warm-up time Within four clocks after RESET goes active, all the 82C08 outputs will go high, except for AOO-2, which will go low. if TClCl = 125 ns then TRESP =37 f-ts Reset OPERATIONAL DESCRIPTION RESET is an asynchronous input, its falling edge is used by the 82C08 to directly sample the logic levels of the PCTl, RFRQ, and PDI inputs. The internally synchronized falling edge of reset is used to begin programming operations (shifting in the contents of the external shift register, if needed, into the PDI input). Programming the 82C08 The 82C08is programmed after reset. On the falling edge of RESET, the logic states of several input pins are latched internally. The falling edge of RESET actually performs the latching, which means th~t the logic levels on these inputs must be stable pnor to that time. The inputs whose logic levels are latched at the end of reset are the PCTl, RFRQ, and PDI pins. Differentiated reset is unnecessary when the default synchronization programming is used. Until programming is complete the 82C08 latches but does not respond to command or status inputs. A problem may occur if the S bit is programmed inconsistently from the Command which was latched before programming was completed. A simple means of preventing commands or status from occurring during this period is to differentiate the system reset pulse to obtain a smaller reset pulse for the 82C08. Status/Command Mode The processor port of the 82C08 is configured by the states of the PCTl pin. Which interface is selected depends on the state of the PCTl pin at the end of reset. If PCTl is high at the end of reset, the 8086/80.186 Status interface is selected; if it is low, then the MUlTIBUS or Command irHerface is selected. The differentiated reset pulse would be shorter than the system reset pulse by at least the programming period required by the 82C08. The differentiated reset pulse first resets the 82C08, and system reset would reset the rest of the system. While the rest of the system is still in reset, the 82C08 completes its programming. Figure 4 illustrates a circuit to accomplish this task. The status lines of the 80286 are similar in code and timing to the Multibus command lines, while the status code and timing of the 8086 and 8088 are identical to those of the 80186 and 80188 (ignoring the differences in clock duty cycle). Thus there exists two interface configurations, one for the 80286 status or Multibus memory commands, which is called the Command interface, and one for _8086, 5-94 inter 82C08 8088, 80186 or 80188 status, called the 8086 Status interface. The Command interface can also directly interface to the command lines of the bus controllers for the 8086, 8088, 80186 and the 80286. generated. If the RFRO pin is low immediately after a reset, then the user has the choice of a single external refresh cycle without failsafe, burst refresh or no refresh. The 80186 Status interface allows direct decoding of the status lines for the iAPX 86, iAPX 88, iAPX 186 and the iAPX 188. Table 3 shows how the status lines are decoded. Internal Refresh Only For the 82C08 to generate internal refresh requests, it is necessary only to strap the RFRO input pin high. Table 3A. Status Coding of 8086, 80186 and 80286 5tatus Code External Refresh with Failsafe Function 52 51 50 8086/80186 80286' 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 INTERRUPT INTERRUPT 1 0 1 1 1/0 READ 1/0 READ 1/0 WRITE 1/0 WRITE HALT IDLE INSTRUCTION FETCH HALT 1 MEMORY READ MEMORY READ 0 MEMORY WRITE MEMORY WRITE 1 1 1 IDLE .. • Refer to 80286 pin description table To allow user,-generated refresh requests with failsafe protection, it is necessary to hOld the RFRO input high until after reset. Tbilreafter, a low-to-high transition on this input causes a refresh request to be generated and the internal refresh interval counter to be reset. A high-to-Iow transition has no effect on the 82C08. A refresh request is not recognized until a previous request has been serviced. External Refresh without Failsafe To generate single external refresh requests without failsafe protection, it is necessary to hold RFRO low until after reset. Thereafter, bringing RFRO high for one clock period will cause a refresh request to be generated. A refresh request is not recognized until a previous request has been serviced. IDLE Table 38. 82C08 Response 82C08 Command Function PCTL RD WR 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 8086/801116 80286 Status or Status Command Interface Interface IGNORE IGNORE' IGNORE READ IGNORE WRITE IGNORE IGNORE READ IGNORE READ INHIBIT WRITE INHIBIT IGNORE IGNORE Burst Refresh Burst refresh is implemented through the same procedure as a single external refresh without failsafe (Le., RFRO is kept low until after reset). Thereafter, bringing RFRO high for at least two clock periods will cause a burst of up to 128 row address locations to be refreshed. A refresh request is not recognized until a previous request has been serviced (Le. burst is completed). No Refresh *lIlegal with CFS = 0 It is necessary to hold RFRO low until after reset. This is the same as programming External Refresh without Failsafe. No refresh is accomplished by keeping RFRO low. . Refresh Options Immediately after system reset, the state of the RFRO input pin is examined. If RFRO is high, the 82C08 provides the user with the choice between self-refresh and user-generated refresh with failsafe protection. Failsafe protection guarantees that if the user does not come back with another refresh request before the internal refresh interval counter times out, a refresh request will be automatically Option Program Data Word PROGRAMMING FOR SLOW CYCLE The program data word consists of 9 program data bits, PDO-PD8. If the first program data bit, PDO is 5-95 inter 82C08 such as a 74HC165. The reset pulse serves to parallel load the shift register and the 82C08 supplies the clocking signal (PCLK) to shift the data into the POI programming pin. Figure 6 shows a sample circuit diagram of an external shift register circuit. set to logic 0, the 82C08 is configured to support iAPX 186, 188, 86, or 88 systems. The remaining bits, P01-P08, may then be programmed to optimize a selected system configuration. A default of all zeros in the remaining program bits optimizes the . 82C08 timing for 8 MHz Intel CPUs using 150 ns (or faster) dynamic RAMs with no performance penalty. Serial data is shifted into the 82C08 via the POI pin (33), and clock is provided by the WE/PCLK pin (25), which generates a total of 9 clock pulses. PROGRAMMING FOR FAST CYCLE WE/PCLK is a dual function pin. Ouring programming, it serves to clock the external shift register, and after programming is completed, it reverts to the write enable RAM control output pin, As the pin changes state to provide the write enable signal to the dynamic RAM array, it continues to clock the shift register. This does not present a problem because data at the POI pin is ignored after programming. Figure 7 illustrates the timing requirements of the shift register. If the first program data bit is set to logic 1, the 82C08 is configured to support iAPX 286 systems (Command mode). A default of all ones in the program bits optimizes the 82C08. timing for an 8 MHz 286 using 120 ns ORAMs at zero wait states. Note that the programming bits P01 -8 change polarity according to POO. This ensures the same choice of options for both default modes. Table 4A shows the various options that can be programmedinto the 82C08. ' Default Programming Options Table 4A. Program Data Word Program Name Data Bit POO = 0 POO = 1 CFS = 0 SLOW CYCLE CFS = 1 FAST CYCLE PDO CFS CFS PD1 S S s=o SYNCHRONOUS' 8=1 ASYNCHRONOUS PD2 RFS RFS RFS = 0 FAST RAM' RFS = 1 SLOW RAM PD3 RB RB RAM BANK OCCUPANCY SEE TABLE 2 CI1 PO" PD5 CIO PD6 PLS CI1 CIO PLS Fast RAM (Note 1) 2 RAM banks occupied 128 row refresh in 2 ms; 256 in 4 ms, 512 in 8 ms Fast processor clock frequency PLS = o LONG REFRESH PERIOD' PLS = 1 SHORT REFRESH PERIOD FFS FFS FFS = 0 FAST CPU FREQUENCY' FFS = 1 SLOW CPU FREQUENCY PD8 X X X = OAACK* X = 1 XACK In Table 48. Default Programming Synchronous interface COUNT INTERVAL BIT 1; SEE TABLE 6 COUNT INTERVAL BIT 0; SEE TABLE 6 PO? * Default After reset, the 82C08seriaily shifts in a program data word via the POI pin. This pin may be strapped low or high, or connected to an external shift register. Strapping POI low causes the 82C08 to default to the iAPX 186 system configuration, while high causes a default to the iAPX 286 configuration. Table 4B shows the characteristics of the default configuration for Fast Cycle (POI = 1) and Slow Cycle (POI = 0). If further system flexibility is needed, one external shift register, like a 74HC165, can be used to'tailor the 82C08 to its operating environment. PolarityIFunction Advanced ACK strobe NOTE: 1. For iAPX 86/186 systems either slow or fast (150 or 100 ns) RAMS will run at 8 MHz with zero wait states. Synchronous/ Asynchronous Mode (S program bit) The 82C08 may be configured to accept synchronous or asynchronous commands (RO, WR, PCTL) and Port Enable (PE) via the S program bit. The state of theS programming bit determines whether the interface is synchronous or asynchronous. both modes Using an External Shift Register The 82C08 may be programmed by using an external shift register with asynchronous load capability 5-96 82C08 +5V 0 •, I 0--0-0 I ,• ~ 0 I I 82C08 82C08 RESET / , - - r - - ---, SHJrn Q H 1------1 POI 74HC165 WE/PCLK 1---0""'" ClK ~----;-------------------1RESET 231357-15 Figure 6. External Shift Register Interface NOTES: TRTVCL TPGVCL TCLPC TLOAD - Reset is an asychronous input, if reset occurs before TRTVCL, then it is guaranteed to be recognized. Minimum PDI valid time prior to reset going low. MUX/PCLK delay. Asychronous load data propagation delay. Figure 7. Timing Illustrating External Shift Register Requirements for Programming the 82C08 While the 82C08 may be configured with either the Status or Command (MULTIBUS) interface in the Synchronous mode, certain restrictions exist in the Asynchronous mode. An Asynchronous-Command interface is directly supported. An Asynchronous80186/80286 Status interface using the status lines of the 80186/80286 is supported with the use of TTL gates as illustrated in Figure 2. In the 80186 case, the TTL gates are needed to guarantee that status does not appear at the 82C08's inputs too much before· address, so that a cycle would start before address was valid. In the case of the 80286, the TTL gates are used for lengthening the Status pulse, as required by the TRWL timing. Microprocessor Clock Cycle Option (CFS and FFS program bits) The 82C08 is programmed to interface with microprocessors with "slow cycle" timing like the 8086, 8088, 80186, and 80188, and with "fast cycle" microprocessors like the 80286. The CFS bit is used to select the appropriate timing. The FFS option is used to select the speed of the microprocessor clock. Table 5 shows the. various microprocessor clock frequency options that can be programmed. The external clock frequency must be 5-97 inter 82C08 programmed so that the failsafe refresh repetition circuitry can adjust its internal timing accordingly to produce a refresh request as programmed. Table 6. Refresh Count Interval Table Count Interval C11,C10 Ref. Period CFS PLS FFS . (82C08 Clock Periods) (/Ls) 00 01 10 11 (0%) (10%) (20%) (30%) Table 5. Microprocessor Clock Frequency Options Program Bits CFS FFS 0 0 0 1 Processor iAPX86, 88,186,188 iAPX86, 88,186,188 Clock Frequency ~ 5MHz > 5MHz 1 0 iAPX 286 ~ 1 1 iAPX 286 > 10 MHz 10 MHz RAM Speed Option (RFS program bit) The RAM Speed programming option determines whether RAM timing will be optimized for a fast or slow RAM. Whether a RAM is fast or slow is measured relative to 100 ns DRAMs (fast) or 150 ns DRAMs (slow). This option is only a factor in Fast cycle Mode (CFS = 1). 15.6 1 1 1 236 212 188 164 7.8 1 0 1 118 106 94 82 15.6 1 1 0 148 132 116 100 7.8 1 0 0 74 66 58 50 15.6 0 1 1 118 106 94 82 7.8 0 0 1. 59 53 47 41 15.6 0 1 0 74 66 58 50 7.8 0 0 0 37 33 29 25 The refresh count interval is set up for the following basic frequencies: 5 MHz slow cycle 8 MHz slow cycle 10 MHz fast cycle 16 MHz fast cycle Refresh Period Options (CIO, CI1 and PLS program bits) Example: Best 12 MHz fast cycle performance can be achieved using the basic frequency of 16 MHz (CFS = 1, FFS = 1) and the appropriate count in· terval bits (C11 = 1, CIO = 1) to reduce the frequency. The 82C08 refreshes with either 128 rows every 2 milliseconds, with 256 rows every 4 milliseconds or 512 rows every 8 milliseconds. This translates to one refresh cycle being executed approximately once every 15.6 microseconds. This rate can be changed to 256 rows every 2 milliseconds or a refresh approximately once every 7.8 microseconds via the Period Long/Short, program bit PLS, programming option. clock period x refresh count interval = refresh period i.e. 83.3 ns x 164 = 13.6 fLs Example: 10 MHz slow cycle The Count Interval 0 (CIO) and Count Interval 1 (CI1) programming options allow the rate at which refresh requests are generated to be increased in order to permit refresh requests to be generated close to the 15.6 or 7.8 microsecond period when the 82C08 is operating at reduced frequencies. The interval between refreshes is decreased by 0%,10%,20%, or 30% as a function of how the count interval bits are programmed. A 5% guardband is built·in to allow for any clock frequency variations. Table 6 shows the refresh period options available. CFS = 0, FFS = 1, Cll = 0, CIO = 0 i.e. 100 ns x 118.= 11.8 fLs Processor Timing In order to run without wait states, AACK must be used and connected to the SRDY input of the appropriate bus controller. AACK is issued relative to a point within 'the RAM cycle and has no fixed relationship to the processors's request. The timing is such, however, that the processor will run without wait states, barring refresh cycles. In slow cycle, fast RAM configurations (8086, 80186), AACK is issued on the same clock cycle that issues RAS. The numbers tabulated under Count Interval represent the number of clock periods between internal refresh requests. The percentages in parentheses represent the decrease in the interval between refresh requests. Port Enable (PE) set-up time requirements depend on whether the 82C08 is configured for synchronous 5-98 infef 82C08 or asynchronous, fast or slow cycle operation. In a synchronous fast cycle configuration, PE is required to be set-up to the same clock edge as the commands. If PE is true (low), a RAM cycle is started; if not, the cycle is not started until the RD or WR line goes inactive and active again. If the X programming bit is high, the strobe is configured as XACK, while if the bit is low, the strobe is configured as AACK. Data will always be valid a fixed time after the occurrence of the advanced acknowledge. Thus, the advanced acknowledge may also serve as a RAM cycle timing indicator. In asychronous operation, PE is required to be setup to the same clock edge as the internally synchronized status or commands. Externally, this allows the internal synchronization delay to be added to the status (or command) -to-PE delay time, thus allowing for more external decode time than is available in synchronous operation. General System Considerations 1. The RASO, 1, CASO, 1, and AOO-8 output buffers are designed to directly drive the heavy capacitive loads of the dynamic RAM arrays. To keep the RAM driver outputs from ringing excessively in the system environment it is necessary to match the output impedance with the RAM array by using series resistors. Each application may have different impedance characteristics and may require different series resistance values. The series resistance values should be determined for each application. The minimum synchronization delay is the additional amount that PE must be held valid. If PE is not held valid for the maximum synchronization delay time, it is possible that PE will go invalid prior to the status or command being synchronized. In such a case the 82C08 may not start a memory cycle. If a memory cycle intended for the 82C08 is not started, then no acknowledge (AACK or XACK) is issued and the processor locks up in endless wait states. 2. Although the 82C08 has programmable options, in practice there are only a few choices the designer must make. For iAPX 86/186 systems (CFS = 0) the C2 default mode (pin 33 tied low) is the best choice. This permits zero wait states at 8 and 10 MHz with 150 ns DRAMs. The only consideration is the refresh rate, which must be programmed if the CPU is run at less than 8 MHz. Memory Acknowledge (AACK, XACK) Two types of memory acknowledge signals are supplied by the 82C08. They are the Advanced Acknowledge strobe (AACK) and the Transfer Acknowledge strobe (XACK). The S programming bit optimizes AACK for synchronous operation ("early" AACK) or asynchronous operation ("late" AACK). Both the early and late AACK strobes are two clocks long for CFS = 0 and three clocks long for CFS = For iAPX 286 systems (CFS = 1) the designer must choose between configuration CO (RFS = 0) and C1 (RFS = 1, FFS = 0). CO permits zero wait state, 8 MHz iAPX 286 operation with 120 ns DRAMs. However, for consecutive reads, this performance depends on interleaving between two banks. The C1 configuration trades off 1 wait state performance for the ability to use 150 ns DRAMs. 150 ns DRAMs can be supported by the CO configuration using 7 MHz iAPX 286. 1. The XACK strobe is asserted when data is valid (for reads) or when data may be removed (for writes) and meets the MULTIBUS requirements. XACK is removed asynchronously by the command going inactive. 3. For non-Intel microprocessors, the asynchronous command mode would be the .best choice,. since Intel status lines are not available. To minimize the synchronization delay, the 82C08 should use a 16 MHz clock. The preferred timing configuration is CO. Since in an asynchronous operation the 82C08 removes read data before late AACK or XACK is recognized by the CPU, the user must provide for data latching in the system until the CPU reads the data. In synchronous operation data latching is unnecessary, since the 82C08 will not remove data until the CPU has read it. Table 7. Memory Acknowledge Summary Synchronous Asynchronous XACK Fast Cycle AACK Optimized for Local 80286 (early) AACK Optimized for Remote 80286 (late) Multibus Compatible Slow Cycle AACK Optimized for Local 8086/186 (early) AACK Optimized for Remote 8086/186 (late) Multibus Compatible 5-99 82C08 power down immediately· without executing any bursts. POWER DOWN During Power Down (PO) mode, the 82C08 will perform refresh cycles to preserve the memory content. Two pins are dedicated to this feature, POD (Power Down Detect) and POCLK (Power Down Clock). POD is used to inform the 82C08 of a system power failure, and will remain active as long as the power is down. It is the system's responsibility to detect power failure and to supply this signal. PDCLK is used to supply the clock during power down for the 82C08 refresh circuits. It is the system's responsibility to supply this clock. Power Supplies Power down is achieved by eliminating the clock from all the 82C08 circuits that are not participating in the refresh generation. The 82C08 has two power pins (Vcc's), one supplies power to the outputbuffers and the other, to 82C08 logic. All the active circuitsduring power down are connected to the logi? Vee, including the active output buffers. Therefore, .It is the user's choice to connect only the logic Vee pin to the back-up power supply, or to connect both pins to it. It is recommended, however, to connect both pins to the same power supply in order to simplify and to shorten the power up time. Power Down Procedure The 82C08 will preserve the memory content during the entire period of the system operation. Upon detection of power down, the 82C08 will save internally its configuration status and the refresh address counter content, execute 3 burst refresh cycles: (If it is programmed to failsafe mode and the RFRO Input level is high), it will switch the internal clock from the system clock (CLK) to the power down clock (PDCLK) and will continue the refresh to the next address location. (See Figure 11.) When power is up again (POD input deactivated), the 82C08 will issue internal reset which will. not reprogram the device and will not clear the refresh address counter,and therefore, refresh will continue to the next address location. After the internal reset, 82C08 performs 3 PO burst refresh cycles which refresh the whole memory, as at entering extended PD. This is done to give the 82C08 enough time to wake up. Notice, at the time interval of 4700 (fast cycle) or 3100 (slow cycle) clocks after power recovering no memory access will be performed. 82C08 Outputs on Power Down Extended Refresh at Power Down (PO) To reduce power dissipation during PO, 82C08 will support the extended refresh cycle of the Intel 51CXXL (e.g. 51C64L). In this mode, the refresh period can be extended up to 64 milliseconds versus 4 milliseconds in non-extended cycles. This is achieved by slowing down the PDCLK frequency. The user should take into consideration that when supporting extended refresh during PO, the dynamic RAM must be refreshed completely within 4 milliseconds, without active cycles, both before going into and after coming out of extended refresh. The 82C08 has the option of performing burstrefresh of all the memory whenever the user cannot guarantee the 4 milliseconds idle interval. This is achieved by performing 3 consecutive burst refresh cycles, activated internally by the 82C08. The option of refreshing all the memory is enabled in failsafe mode configuration (RFRO input high at reset). When 82C08 detects power down, (high level at POD) it examines the RFRO input. High level at the RFRO input will cause 3 PO burst refresh cycles to be performed. The user should supply the power and the system clock during the time interval of the 3 PO burst cycles, e.g. 4700 (fast cycle) or 3100 (slow cycle) clock cycles after activating POD. Low level at RFRO input enables the 82C08 to enter Four of the 82C08 outputs are not activated during power down, AACK, CASO-1 and WE. All these outputs will be forced to a non-active state, AACK and CASO-1 will be forced high and WE will be forced low (External NAND buffer is used to drive the V-:E DRAM inputs, hence a high level on the DRAM Inputs). The other 82C08 outputs, AOO-9 and RA?O1, will switch to perform the memory refresh In a "RAS-ONL Y REFRESH CYCLE." The RAS outputs internal pull-ups assure high levels on these outputs, as close as possible to Vee, for low DRAM power. The size of the output buffers, in power down, is smaller than the normal size, and therefore, the speed of these buffers is slower. It is done in order to reduce the speed of charging and discharging the outputs and hence reduce spikes on the power lines. It is required especially in power down, since there is only one power supply pin active which drives the output buffers as well as the internal logic. All the device inputs, beside POD, PDCLK, and RESET will be ignored during power down. During power down burst refresh the 82C08 performs up to 256 refreshes. Whereas during standard burst refresh the 82C08 performs up to 128 refreshes. The power down burst refresh feature allows the 82C08 to support extended refreshes of some DRAMs, configured as 512 rows. 5-100 inter 82C08 OSC. J RAS# PDCLK AO J ____________________ ___________ -Jx~ 231357-18 Figure 8 Power Down Detect As previously mentioned, the PDD input will be supplied by the system to inform the 82C08 of a power failure. It can be asynchronous since the 82C08 synchronizes it internally. The PDD input will be sampled by the 82C08 before the beginning of every memory cycle but only after the termination of programming and initialization period. The user should guarantee Vee and CLK stable during the programming and initialization period (300 clocks after RESET). If the whole memory refresh is required (for extended refresh) then Vee and system clock should be available 4700 (fast cycle) or 3100 (slow cycle) clocks after activating PDD. If it isn't required then 82C08 should wait for present memory cycle completion and synchronization time which will take about 25 system clock cycles. With PDD going inactive, the 82C08 synchronizes the clock back to the CLK clock, issuing internal reset ana will perform 3 PD burst refresh cycles. NOTE: During power down, 'RAS-ONLY REFRESH' will be performed by the 82C08. The time interval between refreshes is 5 PDCLKs and this is fixed for all applications. However, the 82C08 can support the extended refresh (up to 64 ms) by slowing down the PDCLK frequency. During the power down refresh cycle, RAS will be activated for one PDCLK cycle only. In extended refresh, the PDCLK frequency will be below 50 kHz and this will cause a long duration of the RAS signal which will increase the DRAM's current rapidly. To minimize the RAS low pulse, the two RC networks shown in Figure 9 are designed to insert one very fast (1 /-Ls) cycle whenever RAS is low (see Figure 8). The time constant of RC1 and RC2 should be centered around 300 ns and 100 ns respectively. 82C08 LOW FREQUENCY OSCILLATOR The power supplies and the CLK should go up before the PDD is deactivated. All CPU requests will be ignored when PDD is active. HC132 Refresh during Power Down The 82C08 has two clock pins, CLK is the system clock and PDCLK is the power down clock. PDCLK should be an independent clock which has its own crystal oscillator. When entering power down, the 82C08 will disable the system clock internally and will run with the PDCLK. The system clock will be enabled and the PDCLK will be disabled when power is up. The CLK and PDCLK will be switched internally for the refresh circuits. PDCLK (GND) RAS. I Vcc~ 231357-19 Figure 9. Low Frequency Oscillator 5-101 inter 82C08 time after PDD is activated is 4700 (fast cycle) or 3100 (slow cycle) clocks. Power Down Synchronization The 82C08 main clock (MClK) is generated internally, from the system clock (ClK) and the power down clock (PDClK) (see Figure 10), and is driving the circuits that are active at all times, Le.: circuits that are active both in power down mode and in normal operation. The system clock (ClK) is driving the circuits that are active in normal operation only, and the PDClK is driving the circuits that are active in power down only. The operation of the three clocks is as follows: When entering power down mode, and the whole memory refresh is required, the ClK minimum active PO __________ CLK n J n ~ n __ When it isn't required, PDClK should be active, and ClK should remain active for at least 20 clock cycles + synchronization time. The synchronization time is the ratio of PDClK and ClK + 1. Therefore, the ClK minimum active time after PD is activated: 20 + [CLK(MHz) / PDCLK(MHz) + 11 clock cycles When the power is up again, PDClK should remain active at least 4 clock cycles after PD is going inactive, to assure completion of refresh cycle and internal synchronization time. \ " ~-J' ,~------------------ n r----------, n n U n U r LJ - LJ LJ LJ __________ -LJ 'LJ PDCLK MCLK 231357-20 Figure 10 POWER DOWN FLOW SET POFLAG, DISABLE WE, AACKIf, CAS# DISABLE elK, ENS POCLK OUT 231357-21 Figure 11 5-102 infef 82C08 Differences Between 8208 and 82C08 The differences between the HMOS 8208 and the CHMOS 82C08 represent forward compatible enhancements. The 82C08 can be plugged into an 8208 socket without changes. ClK I 1/ I TCLCSH~V- RAS~ \ .......- - - - - - 1 ' 1 \ CAS LOGICAL DIFFERENCES 1. 82C08 has one new feature: I Power Down (PO) 2. 82C08 supports CMOS DRAMs with T RAC 100, 150 2) 82C08 has an additional timing parameter TARH column address to RAS i hold time. 3. Address Mapping: Outputs 8208 82C08 9 Most Significant Bits column address row address I 231357-22 2. DC parameters: The difference is in the current consumption. 9 Least Significant Bits ICC row address column address 4. Slow cycle shortening: 1). The write cycle is two clocks shorter so consecutive writes will be executed without wait states. 2) The WE output is two clocks shorter. Therefore, an external latch on the WE output is not necessary. 3) CAS output is shorter by one clock on the read cycle. This reduces one level of buffers for address/data bus needed in 8208 designs. Read access margins are improved to support nonIntel spec. RAMs. 4) The address outputs switch from row to column address one clock cycle later in the 82C08 as compared to 8208. 5. Fast cycle shortening: 1) The write cycle in CO configuration is shortened by one clock. 2) For both CO and C1 synchronous configuration, the CAS signal is shorter by one clock and the activation of RAS is tied to the <1>2 cycle of the 80286. This prevents contention on the data bus. 6. Supports Static Column or Ripplemode DRAMs. 8208 82C08 300mA 30 mA (typical) [10 + 2f] mA (max) 1 mA (max) 2 mA(max) IPD ISB Configuration Charts The 82C08 operates in three basic configurationsCO, C1, C2-depending upon the programming of CFS (PDO), RFS (PD2), and FFS (PD7). Table 8 shows these configurations. These modes determine the clock edges for the 82C08's programmable signals, as shown in Table 9. Finally, Table 10 gives the programmable AC parameters of the 82C08 as a function of configuration. The non-programmable parameters are listed under AC Characteristics. Using the Timing Charts The notation used to indicate which clock edge triggers an output transition is "n i" or "n -.L ", where "n" is the number of clock periods that have passed since clock 0, the reference clock, and " i" refers to rising edge and" -.L " to falling edge. A clock period is defined as the interval from a clock falling edge to the following falling edge. Clock edges are defined as shown below. ELECTRICAL DIFFERENCES 1. AC parameters: 1) CAS delay: In C2 synchronous read cycle, the CAS is deactivated by some delay from clock falling edge (TCLCSH timing) as in the following diagram: In C2 write cycles the CAS activation is triggered by the clock falling edge with a delay of 35 ns from the clock. For 8208 the delay is TP/1.8 + 53. (n-1)1 nl nl (n + 1)1 (n + 1 ) 1 231357-23 The clock edges which trigger transitions on each 82C08 output are tabulated in Table 9. "H" refers to the high-going transition, and "L" to low-going transition. 5-103 82C08 Clock a is defined as the clock in which the 82C08 begins a memory cycle, either as a result of a port request which has just arrived, or of a port request which was stored previously but could not be serv- iced at the time of its arrival because the 82C08 was performing another memory cycle. Clock a is identified externally by the leading edge of RAS, which is always triggered onO J,. Table 8. 82C08 Configurations Timing Cont. CFS(PDO) RFS(PD2) FFS(PD7) Wait States' Co iAPX286(1) FAST RAM(1) 20 MHz(1) Co iAPX286(1) FAST RAM(1) 16 MHz(1) a a C1 iAPX286(1) SLOW RAM(O) 16 MHz(1) 1 Co iAPX286(1) FAST RAM(1) 10 MHz (0) Co iAPX286(1) SLOW RAM(O) 10 MHz (0) C2 iAPX186(0) DON'T CARE DON'T CARE a a a • USing EAACK (synchronous mode) Table 9a. Timing Chart - Synchronous Mode RAS Cn a Cycle L RD,RF oj, oj, oj, oj, oj, oj, WR 1 RD,RF WR 2 RD,RF WR ADDRESS H Col Row' 3J, oj, oj, oj, oj, oj, oj, 4J, 4J, 5J, 2J, 2J, CAS WE L H 3J, 1 J, 3J, 3J, 2J, 4J, 4J, 1 J, 5J, 4J, 2J, 5J, 3J, oj, 2J, 3.J, 1 J, 3 J,. EAACK H L 1 J, 4J, 1 J, 5J, oj, 2J, L H 1 J, 4J, 1 J, 4.J, 2J, 5J, 2J, 5J, oj, 2.J, O.J, 2.J, Table 9b. Timing Chart - Asynchronous Mode RAS CAS ADDRESS Cn Cycle L H Col Row' L H a RD,RF 3J, 0.J, 3.J, 1.J, 4J, 4J, oj, oj, oj, oj, oj, 3J, 2.J, 4J, 4J, 1J, 6J, WR oj, oj, oj, oj, RD,RF O.J, 2J, WR oj, 2J, WR 1 2 RD,RF 4J, 5J, 4J, 2J, 5J, 3J, oj, 3J, 3J, 1J, 3J, LAACK WE H 1 J, 1 J, oj, L 4J, 5J, 2J, XAACK L H L H 2.J, 5J, 3.J, RD q, 4J, 3J, WR 2J, 5J, 4J, RD 1J, 4J, 3J, WR 1 J, 3J, 2.J, RD' 1t 3j 2.J, WR The only difference between the two tables IS the trailing edge of CAS for all read cycle configurations. In asynchronous mode, CAS trailing edge is one clock later than in synchronous mode. NOTES FOR INTERPRETING THE TIMING CHART: 1. COLUMN ADDRESS is the time column address becomes valid. 2. The CAS, EAACK, LAACK and XACK outputs are not issued during refresh. 3. XACK-high is reset asynchronously by command going inactive and' not by a clock edge. 4. EAACK is used in synchronous mode, LAACK and XACK in asynchronous mode.. 5. ADDRESS-Row is the clock edge where the 82C08 AO switches from current column address to the next row address. 6. If a cycle is inhibited by PCTL = 1 (Multibus IfF mode) then CAS is not activated during write cycle and XACK is not activated in either read or write cycles. 'Column addresses switch to row addresses for next memory cycle. The row address buffer is transparent following this clock edge. 'TRAH' specification is guaranteed as per data sheet. 5-104 inter 82C08 82C08-0RAM Interface Parameter Equations Several DRAM parameters, but not all, are a direct function of 82C08 timings, and the equations for these parameters are given in the following tables. The following is a list of those DRAM parameters which have NOT been included in the following tables, with an explanation for their exclusion. READ, tRAC: tCAC: tREF: tCRP: WRITE REFRESH CYCLES response parameter. response parameter. See "Refresh Period Options". must be met only if CAS-only cycles, which do not occur with 82C08, exist. tRAH: See "A.C. Characteristics" tRCD: See "A.C. Characteristics" tASC: See "A.C. Characteristics" tASR: See "A.C. Characteristics" tOFF: response parameter. WRITE CYCLE tDS: system-dependent parameter. !DH: s~'s!e!':!~depe!"'!de!""!t f-1e.~~metl?r. tDHR: system-dependent parameter. Table 10. Programmable Timings Read and Refresh Cycles Parameter tRP tCPN tCPN tRSH tCSH tCSH tCAH tAR IT tRC tRAS tCAS tCAS tRCS tRCH C2-Slow Cycle 2TCLCL·T27 1.5TCLCL·T34 2.5TCLCL-T34 2TCLCL·T32 3TCLCL-T25 2TCLCL + T34(min)·T25 3TCLCL-T32 3TCLCL-T25 3/30 4TCLCL 2TCLCL-T25 3TCLCL-T32 2TCLCL + T34(min)-T32 TCLCL + T32(min)-T35 + TSUF TCLCL + T36(min)-T34 + TBUF CO-Fast Cycle 3TCLCL·T27 3TCLCL·T34 4TCLCL-T34 2TCLCL·T32 4TCLCL-T25 3TCLCL-T25 2TCLCL-T32 3TCLCL-T25 3/30 6TCLCL 3TCLCL-T25 3TCLCL-T32 2TCLCL-T25 TCLCL-T35 + TSUF TCLCL-T34 + TSUF C1-Fast Cycle 3TCLCL·T27 2TCLCL·T34 3TCLCL·T34 3TCLCL·T32 6TCLCL-T25 5TCLCL-T25 3TCLCL-T32 4TCLCL-T25 3/30 7TCLCL 4TCLCL-T25 5TCLCL-T32 4TCLCL-T32 2TCLCL-T35 + TSUF 2TCLCL-T34 + TSUF Notes 1 1,5 1,4 1 1,5 1,4 1 1 2 1 1 1,5 1,4 1 1 Write Cycles Parameter C2-Slow Cycle CO-Fast Cycle tRP 2TCLCL-T27 3TCLCL-T27 tCPN 2TCLCL-T34 4TCLCL-T34 tRSH TCLCL-T32 2TCLCL-T32 tCSH 3TCLCL-T25 4TCLCL-T25 tCAH 2TCLCL-T32 TCLCL-T32 tAR 3TCLCL-T25 3TCLCL-T25 3/30 3/30 tT tRC 4TCLCL 7TCLCL tRAS 2TCLCL-T25 4TCLCL-T25 tCAS 2TCLCL-T32 + TSUF 2TCLCL-T32 tWCH TCLCL-T32 + TSUF 2TCLCL-T32 + TSUF tWCR 2TCLCL-T25 + TSUF 4TCLCL-T25 + TSUF 3TCLCL-T36-TSUF tWP 2TCLCL-T3.6-TSU F tRWL 2TCLCL-T36-TSUF 3TCLCL-T36-TSUF tCWL 3TCLCL-T36-TSUF 3TCLCL-T36-TSUF TCLCL+ T36-T31-TSUF TCLCL - T36-TSUF tWCS NOTES: 1. Minimum. 2. Value on right is maximum; value on left is minimum. 3. Applies to the eight warm-up cycles during initialization. 4. For synchronous mode only. 5. For asynchronous mode only. 5-105 C1·Fast ~cle 3TCLCL-T27 4TCLCL-T34 3TCLCL-T32 5TCLCL-T25 2TCLCL-T32 4TCLCL-T25 3/30 BTCLCL' 5TCLCL-T25 3TCLCL-T32 3TCLCL-T32 + TSUF 5TCLCL-T25 + TSUF 4TCLCL-T36-TSUF 4TCLCL-T36-TSUF 4TCLCL-T36-TSUF TCLCL - T36-TSUF Notes 1 1 1 1 1 1 2 1 1 1 1,3 1,3 1 1 1 1 intJ 82C08 * Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied ExposlJre to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias -O·C to + 70·C Storage Temperature - 65·C to + 150·C Voltage On Any Pin With Respect to Ground -0.5Vto +7V 0.5W Power Dissipation D.C. CHARACTERISTICS Symbol TA = O·Cto 70·C; Vee Parameter = 5.0V ±10%;Vss = GND Min Max Units Comments Vil Input Low Voltage -0.5 +0.8 V VIH Input High Voltage 2.0 Vee + 0.5 V VOL Output Low Voltage 0.45 V (Note 1) VOH Output High Voltage V (Note 1) 2.6 lee Supply Current III Input Leakage Current Vel Clock Input Low Voltage VeH Clock Input High Voltage CIN Input Capacitance VOHPD RAS Output High Power Down IpD 19B NOTE. (Note 3) 10 + 2f rnA ±10 ,...A -0.5 +0.6 V 3.8 Vee + 0.5 V 20 pF fc = 1 MHz(6) V (Note 2) Vee - 0.5 OV:O;: VIN :0;: Power Down Supply Current - 5.0 rnA (Note 5) Standby Current - 2.0 rnA (Note 4) 1.IOL = 5 mA and IOH = -0.32 mA WE: IOL = 8 mA 2. RASOutput voltage during power down. 3; Typical value. Where f is freq. in MHz. for CMOS: VIL max = 0.5V; VIH min = (Vcc - 0.5V) for TTL: Icc will be higher by 30 mA A.C. Testing Load Circuit Vee 4. Measured at VIL -- OV and VIH -- Vcc with no loads connected. 5. IPD = 1 mA at 32 KHz with no loads connected. 6. Sampled. not 100% tested. TA = 25'C. A.C. Testing Input, Output Waveform 0_2_:,_---JX:: :: A. ___ 231357-25 RRAS = 390 RCAS = 390 RAO = 220 231357-24 A.C. Tes1ing inpu1s (except clock) are driven at 2.4V for a Logic CRAS = 150 pF CCAS = 150pF CAO = 200 pF CL=50pF "1" and 0.45V for a Logic "0" (clock' is driven at 4.0V and 0.45V for Logic "1" and "0" respectively). Timing measurements are made at 2.4V for Logic "1" and O.BV for Logic "0". • also PDCLK 5-106 82C08 A.C. CHARACTERISTICS (TA = ODCto 70DC; Vee = +5V ±10%, vss = OV) Measurements made with respect to RASo_1' CASO_1, ADo-B' are at +2.4Vand 0.8V ClK at 3V, 1V. All other pins are measured at 2.0V and 0.8V. All times are ns unless otherwise indicated. Testing done with specified test load. Ref Symbol Parameter Min Max Units Notes CLOCK AND PROGRAMMING -1 2 3 tF Clock Fall Time 12 ns 3 tR Clock Rise Time 12 ns 3 TClCl Clock Period TCl TCH ~~~ tl~COil-;20 50 &:.iJV ii3 ~ 82C08-16 82C08-10 82C08-8 62.5 100 125 250 500 500 ns ns ns 1 2 2 Clock low Time 82C08-20 82C08-16 82C08-10 82C08-8 12 15 44 TClCl/2-12 230 230 ns ns ns ns 1 1 2 2 Clock High Time 82C08-20 82C08-16 82C08-10 82C08-8 16 20 44 TClCLl3+2 230 230 ns ns ns ns 1 1 2 2 40 ns 4 4 TRTVCl Reset to ClK.J, Setup 5 TRTH Reset Pulse Width 4TClCl ns 6 TPGVRTl PCTl, POI, RFRO to RESET .J, Setup 125 ns 7 TRTlPGX PCTl, RFRO to RESET .J, Hold 10 ns 8 TClPC PClK from ClK.J, Delay 9 TPDICl POI to ClK.J, Setup 60 ns 10 TClPDX POI to ClK.J, Hold 40 ns 45 5 ns 6 SYNCHRONOUS /LP PORT INTERFACE 11 TPEVCl PE to ClK.J, Setup 30 12 TKVCl RD, WR, PE, PCTl to ClK .J, Setup 20 ns 13 TClKX RD, WR, PE,PCTl toClK.J,Hold 0 ns 14 TKVCH RD, WR, PCTl to ClK i Setup 20 ns 5-107 2 1 2 inter 82C08 A.C. CHARACTERISTICS (Continued) . Ref Symbol Parameter Min . Max Units Notes ASYNCHRONOUS ,..,p PORT INTERFACE 15 TAWVCl AD, WAto ClKJ.Setup 16 TAWl AD, WAPuise Width 17 TAWlPEV PEfrom AD, WAJ. Delay CFS=1 CFS=O . PEto AD, WA J. Hold 18 TAWlPEX 19 TAWlPTV .20 TAWlPTX 21 TAWlPTV PCTl from AD, WAJ. Delay 22 TAWlPTX PCTl toAD, WAJ. Hold 20 ns ?TClCl+30 ns TClCl-20 TClCl-30 2TClCl+30 PCTl from AD, WA J. Delay 8.9 . 1 2 ns ns ns ns 2 ns 2 ns 1 3TClCl+30 ns 1 Al,AH, BSto ClK J. Set-up 82C08-20 82C08-16 35 + tASA ns 2 50+tASA 45+tASA ns ns Al,AH, BSto ClKJ. Hold 0 ns PCTl to AD, . WAJ. Hold TClCl-30 2TClCl+30 2TClCl-20 RAM INTERFACE 23 24 TAVCl TCLAX 25 TClASl AAS J. from ClK J.. Delay 26 TACO AAS to CAS Delay CFS=1 CFS=O CFS=O CFS=:O 27 TClASH I. 25 35 60 TClCl-25 30 TClCl/2-30 60 25 60 AASj from ClKJ. Delay 5-108 ns ns ns 1 2 24 ns ns ns ns 1,14 23 2,11,14 2,12,14 ns ns 24 inter 82C08 A.C. CHARACTERISTICS (Continued) Ref Symbol Parameter Min Max Units Notes ns ns 1, 13, 15 2,11,15 23 RAM INTERFACE (Continued) 28 TRAH CFS = 1 CFS=O CFS=O 29 TASR Row AD RAS t Setup 30 TASC Column AD to CAS! Setup CFS=1 CFS=O CFS=O 31 TCAH Column AD to CAS Hold 32 TClCSl CASt from ClK! Delay CFS=O CFS=O CFS=O CFS=1 34 TClCSH 18 TClCl/4-10 18 10,16 WEt from ClKt Delay 36 TClWH WEi from ClK !Delay CFS=O CFS=1 CFS=O TClCl/1.8 + 56 105 35 35 ns ns ns ns 2,26 23,26 2,23,27 1 50 ns TClCl --+50 3.2 ns 35 ns TClCll 1.8 + 53 35 100 ns ns (See DRAM Interface Tables) TClCLl4+30 50 8 TClCl/4 TClWl i, i3, if, 10 2,13,17,18 23 5 5 CAS i from ClK! Delay 35 ns ns ns 2 TClCl/4+30 50 37 TClTKl XACK! from ClK t Delay 35 ns 38 TRWlTKH XACK i from RD i , WR i Delay 50 ns 39 TClAKl AACK! from ClKt Delay 35 ns 40 TClAKH AACKi from ClKt Delay 50 ns 49 TARH Column Address to RAS i Hold Time 2 5-109 22 2 1 23 1 intJ 82C08 A.C. CHARACTERISTICS (Continued) Ref Symbol Parameter Mill Max Units Notes REFRESH REQUEST 41 TRFVCl RFRO to ClK J.- Setup 20 42 TClRFX RFRO to ClK J.- Hold 10 43 TFRFH Failsafe RFRO Pulse Width 44 TRFXCl Single RFRO Inactive to ClK J.- Setup 45 TBRFH Burst RFRO Pulse Width 46 TPDDVCl PDD Setup Time 20 47 TPDHRFX RFRO Valid after PDD Active 4TClCl 48 TRFVPDH RFRO Setup Time to PDD Active TClCl ns ns + 30 20 2TClCl 20 + 30 + 20 ns 19 ns 20 ns 19 ns 24,25 24 24 The following RC loading IS assumed: AOO-8· R = 2211 C = 200 pF RASo_1, CASO_1 R = 3911 C = 150 pF AACK, WE/PClK C = 50 pF NOTES: 1. Specification when programmed in the Fast Cycle processor mode (iAPX 286 mode). 82C08-20, -16. 2. Specification when programmed in the Slow Cycle processor mode (iAPX 186 mode). 82C08-10, 82C08-8. 3. tR and tF are referenced from the 3.5V and 1.0V levels. 4. RESET is internally synchronized to ClK. Hence a set-up time is required only to guarantee its recognition at a particular clock edge. 5. The first programming bit (PDO) is also sampled by RESET going low. 6. TClPDX is guaranteed if programming data is shifted using PClK. 8. TRWVCl is not required for an asynchronous command except to guarantee its recognition at a particular clock edge. 9. Valid when programmed in either Fast or Slow Cycle mode. 10. tASR is a user specified parameter and its value should be added accordingly to TAVCL. 11. When programmed in Slow Cycle mode imd 125 ns s TClCl < 200 ns. 12. When programmed in Slow Cycle mode and 200 ns s TClCL. 13. Specification for Test load conditions. 14. tRCD (actual) = tRCD (specification) +0.06 ( MEMORY (UPPER) PCTl POI ~ RO 8207 WE- 74S240 230862-1 NOTE: The 8207 requires series resistors on all outputs. Figure 1.80286 to 8207, non-ECC, Synchronous System Single Port 5-124 inter AP-168 T5 Tc T5 Tc T1 T5 Tc Tc Tc 16 MHz CLOCK SO-S1 80286 ADDR. LEN RASO RAS1 CASO DRAM WE EAACK 230862-2 Figure 2. 80286/8207 Timing-"CO" +5 74504 A23 A22 8207 PE A21 74530 A20 A19 230862-3 Figure 3. Address Decode Logic 5-125 AP-168 Ts Tc Ts or T1 230862-4 Figure 4. Acknowledge to the 82284 Address Setup Margin The 8207 must have stable addresses up to two clocks after RAS goes active. This is of no concern to the user, since LEN latches the address internally and will not admit a new address until two clocks after RAS goes active. Addresses must be stable at least 35 ns (tAVCL) before RAS goes active to allow for propagation delays through the 8207, if a RAM cycle is not delayed by the 8207. tASR is a RAM specification. If it is greater than zero, tASR must be added to the address setup time of the 8207. Address setup is the interval between addresses being issued, by the 80286, and RAS going active, minus appropriate delays. The margin is determined from the number of clocks between addresses being issued from the 80286 to RAS going active. Exactly when RAS goes active is unimportant, since here we are only interested in the clock edge. 2TClCl - 80286113 (max) - 8207 TAVCl (min) ,;; 0 125 ns - 60 ns - 35 ns = 30 ns Acknowledge Setup Margin The 8207 acknowledge (EAACK) can be issued at any point in the 80286 bus cycle (end of >1 or >2 of Ts or Tc). If EAACK is issued at the end of >2 (Ts or Tc), the 80286 will complete the current bus cycle. If EAACK is issued at the end of >1 ofTc, the 82284 will not generate READY to the 80286 in time to end the current bus cycle. A new Tc would then be generated and EAACK would now be sampled in time to terminate the bus cycle. EAACK is 3 clocks long in order to meet setup and hold times for either condition. We need the margin between the 8207 issuing EAACK and the 82284 needing it. Figure 4 shows a worst case example. TClCl - 8207 TClAKL max - 82284 111 ,;; 0 62.5 ns - 35 ns - 15 ns = 12.5 ns Read Access Margin The 8207 will typically start a memory cycle (i.e. RAS goes low) at the end of > 1 of Ts. But if the start of a memory cycle is delayed (by a refresh cycle for instance), then RAS will be delayed. In the first case, this represents 3 clocks and the second case could require 4 clocks to meet the data setup requirements of the 80286. In either case, data must be valid at the end of Tc. The 8207 holds CAS active long enough to ensure valid data is received by the 80286 in either case. DRAMs specify two access times, RAS access (tRAC) and CAS access (tCAC) Both access periods must be calculated and the one with the least margin used. Also the number of data buffers should be kept to a minimum. Too many buffers would require either faster (more expensive) DRAMs, or a reduction in the performance of the CPU (by adding wait states). 5-126 Ap·168 RAS Access Margin Write Data Setup and Hold Margin 3TCLCL - 8207 TCLR8L max @ 150 pF - DRAM tRAC - 748240 propagation delay max @ 50 pF - 80286 t8 s Write data from the processor must be valid when the 8207 issues WE to meet the DRAM specification tDS and then held to meet the tDR requirement. Some write cycles will be byte writes and the information to determine which byte is decoded from AO and BREI. Since the 80286's address bus is pipelined, these two signals can change before the RAM cycle starts, hence they must be latched by LEN. PSEN is used in the WE term to shorten the WE pulse. Its use is not essential. o 187.5 ns - 35 ns - 120 ns - 7 ns - 10 ns = 15.5 ns CAS Access Margin 2TCLCL - 820-7 TGLG5L max @ 150 pF - DRAM tCAA (or tGAG - 748240 tplh max @ 50 pF - 80286 t8) S 0 -I"~ _... lc..oJ 1 ..0> By solving each equation for tRAC and tCAC, the speed requirement of the RAM can be determined. DRAM tRAG = 3 TCLGL - 8207 TGLR8L - 748240 tplh - 82086 t8 = 135.5 ns DRAM tCAG = 2 TCLGL - 8207 TGLG8L - 748240 tplh - 80286 t8 = 73 ns Data must be set up to the falling edge of WE, since ,VE occurs aiter CA.S. Tilt: 2. CiUCKS UCLWCCJl vi:ll~u w£itc data and WE going active (at the RAM's) minus propagation delays determines the margin. 2 TCLCL - 80286 t14 (max) @ 100 pF - 748240 tplh + 8207 TGLW (min)1 + 74510 tphl @ 192 pF2 - DRAM t08 = 0 125 ns - 50 ns - 7 ns NOTES: 1. Not specified. Assume no delay for worst case analysis. 2. STTL derated by 0.05 ns/pF. So any DRAM that has a RAS access period less than 135 'ns, a CAS access period less than 73 ns, and meets all requirements in the DRAM Interface Timing (Table IS, 16-8207 Data Sheet), will work. + 0 ns + 14 ns - 0 ns = 82 ns The timing of the 8207's acknowledge is such that data will be kept valid by the 80286, for more than two clocks after WE goes active. This easily meets all RAM tDR specifications. SUMMARY The 8207 complements the 80286's performance and high integration with its own performance, integration and ease of use. No critical timings or logic design has been left to the designer. The 80286/8207 combination allows users to realize maximum performance from their simpler design. 5-127 Support Peripherals 6 8231A ARITHMETIC PROCESSING UNIT • • • • Fixed Point Single and Double Precision (16/32 Bit) • Floating Point Single Precision (32 Bit) Direct Memory Access or Programmed • 1/0 Data Transfers Binary Data Formats • • •+ • • End of Execution Signal Add, Subtract, Multiply and Divide and Inverse Trigonometric • Trignometric Functions • General Purpose 8-Bit Data Bus Interface Standard 24 Pin Package Square Roots, Logarithms, Exponentiation Float to Fixed and Fixed to Float • Conversions • Compatible with all Intel and most other Microprocessor Families 12V and + 5V Power Supplies Advanced N-Channel Silicon Gate HMOS Technology Stack Oriented Operand Storage The Intel® 8231A Arithmetic Processing Unit (APU) is a monolithic HMOS LSI device that provides high performance fixed and floating point arithmetic and floating point trigonometric operations. It may be used to enhance the mathematical capability of a wide variety of processor-oriented systems. Chebyshev polynomials are used in the implementation of the APU algorithms. All transfers, including operand, result, status and command information, take place over an a-bit bidirectional data bus. Operands are pushed onto an internal stack and commands are issued to perform operations on the data and the stack. Results are then available to be retrieved from the stack. Transfers to and from the APU may be handled by the associated processor using conventional programmed 110, or may be handled by a direct memory access controller for improved performance. Upon completion of each command, the APU issues an end of execution signal that may be used as an interrupt by the CPU to help coordinate program execution. Vss Vee EACK SIIACK SVREO DO NOTUIE (TIE LOW) I DB. I 6 ' -_ _...:..I 231305-2 Figure 2. Pin Configuration 231305-1 Figure 1. Block Diagram 6-1 September 1987 Order Number: 231305-002 intJ 8231A Table 1. Pin Description Symbol Pin No. Name and Function Type Vee 2 POWER: VDD 16 POWER: + 5V power supply. + 12V power supply. , Vss 1 CLK 23 I GROUND. CLOCK: An external, TTL compatible, timing source is applied to the CLK pin. RESET 22 I RESET: The active high reset signal provides initialization for the chip. RESET also terminates any operation in progress. RESET clears the status register and places the 8231 A into the idle state. Stack contents and command registers are not affected (5 clock cycles). CS 18 I CHIP SELECT: CS is an active low input signal which selects the 8231 A and enables communication with the data bus. Ao 21 I ADDRESS: In conjunction with the RD and WR signals, the Ao control line establishes the type of communication that is to be performed with the 8231 A as shown below: Ao RD WR 0 0 1 0 0 1 0 1 1 1 1 0 Function Enter data byte into stack Read data byte from stack Enter command Read status RD 20 I READ: This active low input indicates that data or status is to be read from the 8231 A if CS is low. WR 19 I WRITE: This active low input indicates that data or a command is to be written into the 8231 A if CS is low. EACK 3 I END OF EXECUTION: This active low input clears the end of execution output signal (END. If EACK is tied low, the END output will be a pulse that is one clock period wide. SVACK 4 I SERVICE REQUEST: This active low input clears the service request output (SVREQ). END 24 0 END: This active low, open-drain output indicates that execution of the previously entered command is complete. It can be used as an interrupt request and is cleared by EACK, RESET or any read or write access to the 8231. SVREQ 5 0 SERVICE REQUEST: This active high output signal indicates that command execution is complete and that post execution service was requested in the previous command byte. It is cleared by SVACK, the next command output to the device, or by RESET. READY 17 0 READY: This active high output indicates that the 8231 A is able to accept communication with the data bus. When an attempt is made to read data, write data or to enter a new command while the 8231 A is .executing a command, READY goes low until execution of the current command is complete (See READY Operation, p. 6). 8-15 110 DBO-DB7 DATA BUS: These eight bidirectional lines provide for transfer of commands, status and data between the 8231A and the CPU. The 8231A can drive the data bus only when CS and RD are low. 6-2 8231A sion of the data to be operated upon by fixed point commands only (if bit 5 = 0, bit 6 must be 0). If bit 6 is a 1, single-precision (16-bit) operands are assumed. If bit 6 is a 0, double-precision (32-bit) operands are indicated. Results are undefined for all illegal combinations of bits in the command byte. Bit 7 indicates whether a service request is to be issued after the command is executed. If bit 7 is a 1, the service request output (SVREO) will go high at the conclusion of the command and will remain high until reset by a low level on the service acknowledge pin (SVACK) or until completion of execution of the succeeding command where service request (bit 7) is O. Each command issued to the 8231A requests post execution service based upon the state OT oit 7 in the command byte. When bit 7 is a 0, SVREO remains low. COMMAND STRUCTURE Each command entered into the 8231A consists of a single 8-bit byte having the format illustrated below: I SVREO IL _ _ _ _ _ _ OPERATION IR, 1'- S'NGLE I FIXED I I CODE I--~-----II I I 231305-3 Bits 0-4 select the operation to be performed as shown in ir Ie lCtuit::. i3iL~ G-G 5~:.sCt tho d~t~ fc:-~~! appropriate to the selected operation. If bit 5 is a 1, a fixed point data format is specified. If bit 5 is 0, floating point format is specified. Bit 6 selects the preci- Table 2. 32-Bit Floating Point Instructions Description Instruction Hex(1) Code Stack Contents(2) After Execution ABCD Status Flags(4) Affected ACOS Inverse Cosine of A 06 RUUU S,l,E ASIN Inverse Sine of A 05 RUUU S,l,E ATAN Inverse Tangent of A 07 RBUU CHSF Sign Change of A 15 RBCD COS Cosine of A (radians) 03 RBUU S,l S,l S,l EXP eA Function OA RBUU S,l,E FADD Add A and B 10 RCDU S,l,E FDIV Divide B by A 13 RCDU S,l,E FLTD 32-Bit Integer to Floating Point Conversion 1C RBCU FLTS 16-Bit Integer to Floating Point Conversion 1D RBCU S,l S,l FMUL Multiply A and B 12 RCDU S,l,E FSUB Subtract A from B 11 RCDU S,l,E LOG Common Logarithm (base 10) of A 08 RBUU S,l,E LN Natural Logarithm of A 09 RBUU S,l,E POPF Stack Pop 18 BCDA PTOF Stack Push 17 AABC PUPI Push onto Stack 1A RABC S,l S,l S,l PWR BA Power Function OB RCUU S,l,E SIN Sine of A (radians) 02 RBUU S,l SORT Square Root of A 01 RBCU S,l,E TAN Tangent of A (radians) 04 RBUU S,l,E XCHF Exchange A and B 19 BACD S,l 7T 6-3 intJ 8231A Table 3 32·Bit Integer Instructions Stack Contents(2) Hex(1) Description After Execution Code ABCD Instruction Status Flags(4) Affected CHSD Sign Change of A 34 RBCD S,Z,O DADO Add A and B 2C RCDA S,Z,C,E .. S,Z, E DDIV Divide B byA 2F RCDU DMUL Multiply A and B (R = lower 32-bits) 2E RCDU S,Z,O DMUU Multiply A andS (R = upper 32-bits) 36 RCDU S,Z,O DSUB Subtract A from B 20 RCDA S,Z,C,O FIXD Floating Point to Integer Conversion 1E RBCU S,Z,O POPD Stack Pop 38 BCDA S,Z PTOD Stack Push 37 AABC S,Z XCHD Exchange A and B 39 BACD S,Z Table 4 16·Bit Integer Instructions Stack Contents(3) Hex(1) Status Flags(4) Instruction Description After Execution Affected Code DL Au AL Bu BL Cu CL Du CHSS Change Sign of Au 74 R AL Bu BL Cu CL Du DL S,Z,O FIXS 1F R Bu BL Cu CL U U U S,Z,O Floating Point to Integer Conversion POPS Stack Pop 78 AL Bu BL Cu CL Du DL Au PTOS Stack Push 77 SADD Add Au and AL 6C SDIV Divide AL by Au SMUL Multiply AL by Au (R Au Au AL Bu BL Cu R Bu BL Cu CL Du R Bu BL Cu CL Du R Bu BL Cu CL Du 6F S,Z DL Au DL U S,Z,C,E SMUU = Multiply AL by Au (R = SSUB Subtract Au from AL XCHS Exchange Au and AL 79 AL AL Bu BL Cu CL Du DL NOP No Operation 00 Au AL Bu BL Cu CL Du DL lower 16-bits) 6E upper 16-bits) 76 60 S,Z CL Du S,Z,E DL U R Bu BL Cu CL Du DL U R Bu BL Cu CL Du DL Au S,Z,E S,Z,C,E S,Z S,Z,E NOTES: 1. In the hex code column; SVREQ is a O. 2. The stack initially is composed of four 32-bit numbers (A, B, C, D). Ais equivalent to TopOl Stack (TOS) and B is Next On Stack (NOS). Upon completion of a command the stack is composed of: the result (R); undefined (U); or the initial contents (A. B, C, or D). 3. The stack initially is composed of eight 16-bit numbers (Au, AL. Bu. BL. Cu. CL. Du. DLJ. Au is the TOS and AL is NOS. Upon completion of a command the stack is composed of: the result (R); undefined (U); or the initial contents (Au. AL. Bu. BL··· ). 4. Nomenclature: Sign (S); Zero (Z); Overflow (0); Carry (C); Error Code Field (E). Single Precision Fixed Point Format DATA FORMATS The 8231A arithmetic processing unit handles operands in both fixed point and floating point formats. Fixed point operands may be represented in either single (16-bit operands) or double precision (32-bit operands). and are always represented as binary. two's complement values. 231305-4 6-4 infef 8231A fractional mantissa value between 0.5 and 1 multiplied by 2 raised to an appropriate power. This is expressed as follows: Double Precision Fixed Point Format l:]Jil' I I 11·1 I I I I VjllE I I I I I I I I I I I I 11"11 " value = mantissa X 2ex ponent a 231305-5 For example, the value 100.5 expressed in this form is 0.11001001 x 27. The decimal equivalent of this value may be computed by summing the components (powers of two) of the mantissa and then multiplying by the exponent as shown below: The sign (positive or negative) of the operand is located in the most significant bit (MSB). Positive values are represented by a sign bit of zero (S = 0). Negative values are represented by the two's complement of the corresponding positive value with a sign bit equal to 1 (::i = 1). Ine range of vaiues lhal may be accommodated by each of these formats is -32,768 to +32,767 for single precision and -2,147,483,648 to +2,147,483,647 for double precision. = 0.78515625 x 128 = 100.5 FLOATING POINT FORMAT Floating point binary values are represented in a format that permits arithmetic to be performed in a fashion analogous to operations with decimal values expressed in scientific notation. The format for floating point values in the 8231A is given below. The mantissa is expressed as a 24-bit (fractional) value; the exponent is expressed as a two's complement 7-bit value having a range of - 64 to + 63. The most significant bit is the sign of the mantissa (0 = positive, 1 = negative), for a total of 32 bits. The binary point is assumed to be the left of th~ most significant mantissa bit (bit 23). All floating pOint data values must be normalized. Bit 23 must be equal to 1, except for the value zero, which is represented by all zeros. (5.83 X 10 2) (8.16 X 10 1) = (4.75728 X 104) In the decimal system, data may be expressed as values between 0 and 10 times 10 raised to a power that effectively shifts the implied decimal point right or left the number of places necessary to express the result in conventional form (e.g., 47,572.8). The value-portion of the data is called the mantissa. The exponent may be either negative or positive. I. The concept of floating point notation has both a gain and a loss associated with it. The gain is the ability to represent the significant digits of data with values spanning a large dynamic range limited only by the capacity of the exponent field. For example, in. decimal notation in the exponent field is two digits Wide, and the mantissa is five digits, a range of values (positive or negative) from 1.0000 x 10- 99 to 9.9999 X 10+ 99 can be accommodated. The loss is that only the significant digits of the value can be represented. Thus there is no distinction in this representation between the values 123451 and 123452, for example since each would be expressed as: 1.2345 x 105 . The sixth digit has been discarded. In most applications where the dynamic range of values to be represented in large, the loss of significance, and hence accuracy of results, is a minor consideration. For greater precision a fixed point format could be chosen, although with a loss of potential dynamic range. EXPONENT ~I ~ I 31 30 1- MAN",,, IIIII IIIIIIIIIIIIIIIIIIIIIII 2423 I 0 231305-6 The range of values that can be represented in this format is ± (2.7 x 10- 20 to 9.2 x 10 18) and zero. FUNCTIONAL DESCRIPTION STACK CONTROL The user interface to the 8231A includes access to an 8 level 16-bit wide data stack. Since single precision fixed point operands are 16-bits in length, eight such values may be maintained in the stack. When using double precision fixed pOint or floating point formats four values may be stored. The stack in these two configurations can be visualized as shown below: The 8231A is a binary arithmetic processor and requires that floating point data be represented by a 6-5 intJ TOS ~ NOS ~ 8231A A' B' At Bt TOS NOS A4 A3 A2 Al I--"'"' --'-'"=.'-,--,,"=--2-,--",Bt'-j ister is cleared and the Service Request bit of the command register is checked. If it is a "1" the service request output level (SVREQ) is raised. END is. cleared on receipt of an active low End Acknowledge (EACK) pulse. Similarly, the service request line is cleared by recognition of an active low Service Acknowledge (SVACK) pulse. 1 , I--L--L--'---i! --32-- 231305-8 READY OPERATION -16- 231305-7 An active high ready (READY) is provided. This line is high in its quiescent state and is pulled low by the 8231A under the following conditions: Data are written onto the stack, eight bits at a time, in the order shown (A 1, A2, A3, ... ). Data are removed from the stack in reverse byte order (A4, A3, A2 ... ). Data should be entered onto the stack in multiples of the number of bytes appropriate to the chosen data format. 1. A previouly initiated operation is in progress (device busy) and Command Entry has been attempted. In this case, the READY line will be pulled low and remain low until completion of the current command execution. It will then go high, permitting entry of the new command. DATA ENTRY 2. A previously initiated operation is in progress and stack access has been attempted. In this case, the READY line will be pulled low, will remain in that state until execution is complete, and will then be raised to permit completion of the stack access. 3. The 8231 A is not busy, and data removal has been requested. READY will be pulled low for the length of time necessary to transfer the byte from the top of stack to the interface latch, and will then go high, indicating availability of the data. Data entry is accomplished by bringing the chip select (CS), the command/data line (Ao), and WR low, as shown in the timing diagram. The entry of each new data word "pushes down" the previously entered data and places the new byte on the top of stack (TOS). Data on the bottom of the stack prior to a stack entry are lost. DATA REMOVAL Data are removed from the stack in the 8231 A by bringing chip select (CS), command/data (Ao), and RD low as shown in the timing diagram. The removal of each data world redefines TOS so that the next successive byte to be removed becomes TOS. Data removed from the stack rotates to the bottom of the stack. 4. The 8231A is not busy, and a data entry has been requested. READY will be pulled low for the length of time required to ascertain if the preceding data byte, if any, has been written to the stack. If so READY will immediately go high. If not, READY will remain low until the interface latch is free and will then go high. 5. When a status read has been requested, READY will be pulled low for the length of time necessary to transfer the status to the interface latch, and will then be raised to permit completion of the status read. Status may be read whether or not the 8231A is busy. COMMAND ENTRY After the appropriate number of bytes of data have been entered onto the stack, a command may be issued to perform an operation on that data. Commands which require two operands for execution (e.g., add) operate on the TOS and NOS values. Single operand commands operate only on the TOS. When READY goes low, the APU expects the bus control signals present at the time to remain stable until READY goes high. Commands are issued to the 8231A by bringing the chip select (CS) line low, command data (Ao) line high, and WR line low as indicated by the timing diagram. After a command is issued, the CPU can continue execution of its program concurrently with the 8231 A command execution. DEVICE STATUS Device status is provided by means of an internal status register whose format is shown below: I COMMAND COMPLETION The 8231A signals the completion of each command execution by lowering the End Execution line (END). Simultaneously, the busy bit in the status reg- BUSY SIGN ZERO t=l 1 -1--1 ERROR CODE CARRY 231305-9 6-6 I infef 8231A Busy: Indicates that 8231 A is currently executing a command (1 = Busy) Sign: Indicates that the value on the top of stack is negative (1 = Negative) Zero: Indicates that the value on the top of stack is zero (1 = Value is zero) not) by bringing the chip select (CS) low, the command/data line (Ao) high, and lowering RD. The status register is then gated onto the data bus and may be input by the CPU. EXECUTION TIMES Error Code: This field contains an indication of the validity of the result of the last operation. The error codes are: OOOO-No error Timing for execution of the 8231A command set is contained below. All times are given in terms of clock cycles. Where substantial variation of execution times is possible, the minimum and maximum values are quoted; otherwise, typical values are givon !:lro nCltCl .... ....\I~riCltinn~ -.. .. - -'--.- rlononrltlnt --,-_ .. __ .... 1OOO-Divide by zero 1"\041"\1"\ ("'0_ • • _ _ _ V I V V -....I\.tUQ11;:;; _ ............ _ ~ IUV~ VI 1 __ .... ~ ........ .- ....... : ....... IV~ VI Ilv~UU., ..... -~.- number Total execution times may require allowances for operand transfer into the APU, command execution, and result retrieval from the APU. Except for command execution, these times will be heavily influenced by the nature of the data, the control interface used, the speed of memory, the CPU used, the priority allotted to DMA and interrupt operations, the size and number of operands to be transferred, and the use of chained calculations, etc. 1100-Argument of inverse sine, cosine, or eX too large XX10-Underflow XX01-0verflow Carry: Previous operation resulted in carry or borrow from most significant bit. (1 = Carry/Borrow, 0 = No Carry/No Borrow). If the BUSY bit in the status register is a one, the other status bits are not defined; if zero, indicating not busy the operation is complete and the other status bits are defined as given above. DERIVED FUNCTION DISCUSSION Computer approximations of transcendental functions are often based on some form of polynomial equation, such as: READ STATUS (1-1) The 8231A status register can be read by the CPU at any time (whether an operation is in progress or Table 5. Command Execution Times Command Mnemonic Clock Cycles Command Mnemonic Clock Cycles Command Mnemonic Clock Cycles Command Mnemonic Clock Cycles SADD SSUB SMUL SMUU SDIV DADD DSUB DMUL DMUU DDIV FIXS FIXD FLTS FLTD . 17 30 84-94 80-98 84-94 21 38 194-210 182-218 208 92-216 100-346 98-186 98-378 FADD FSUB FMUL 54-368 70-370 146-168 LN EXP PWR 4298-6956 3794-4878 8290-12032 POPF XCHS XCHD 12 18 26 FDIV SORT SIN COS 154-184 800 4464 4118 NOP CHSS CHSD CHSF 4 23 27 18 XCHF PUPI 26 16 TAN ASIN ACOS ATAN LOG 5754 7668 7734 6006 4474-7132 PTOS PTOD PTOF POPS POPD 16 20 20 10 12 6-7 intJ 8231A The primary shortcoming of an approximation is this form is that it typically exhibi~s very large errors when the magnitude of Ixi is large, although the errors are small when Ixl is small. With polynomials in this form, the error distribution is markedly uneven over any arbitrary interval. The error for the power function is a combination of that for the logarithm and exponential functions. Each of the derived functions is an approximation of the true function. Thus the result of a derived function will have an error. The absolute error is the difference between the function's result and the true result. A more useful measure of the function's error is relative error (absolute error/true result). This gives a measurement of the significant digits of algorithm accuracy. For the derived functions except LN, LOG, and PWR the relative error is typically 4 x 10- 7. For PWR the relative error is the summation of theEXP and LN errors, 7 x 10- 7 . For LN and LOG, the absolute error is 2 X 10- 7. A set of approximating functions exists that not only minimizes the maximum error but also provides an even distribution of errors within the selected data representation interval. These are known as Chebyshev Polynomials and are based upon cosine functions. These functions are defined as follows: Tn(X) = Cos n8; where n = 0, 1,2 ... (1-2) 8=COS-1X APPLICATION INFORMATION The various terms of the Chebyshev series can be computed as shown below: To(X) = Cos (0 x 8) = Cos (0) =1 (1-4) (1-7) The diagram in Figure 4 shows the interface connections for the APU with operand transfers handled by an 8237 DMA controller, and CPU coordination han~ died by an Interrupt Controller. The APU interrypts the CPU to indicate that a command has been completed. When the performance enhancements provided by the DMA and Interrupt operations are not required, the APU interface can be simplified as shown in Figure 3. The 8231A APU is designed with a general purpose 8-bit data bus and interface control so that it can be conveniently used with any general 8-bit processor. Common logarithms are computed by multiplication of the natural logarithm by the conversion factor 0.43429448 and the error function is therefore the same as that for natural logarithm. The power function is realized by combination of natural log and exponential functions according to the equation: In many systems it will be convenient to use the microcomputer .system clock to drive the APU clock input. In the case of 8080A systems it would be the >2TTL signal. Its cycle time will usually fall in the range of 250 ns to 1000 ns, depending on the system speed. T1(X) = Cos (Cos -1X) = T2(X) = Cos 28 = 2Cos2 8 x - 1 (1-5) = 2Cos2(Cos -1X) -1 (1-6) = 2X 2 - 1 In general,. the next term in the Chebyshev series can be recursively derived from the previous term as follows: . Tn(X) = 2X [Tn - 1(X)1 - Tn - 2(X); n <: 2 xY = eyLnx. r-________ ~A~DD~R~ES~S~.~US~____~--~~~ ,...-_1...1-_.., lOR CPU IO-------.-(JI iOW WR CLOCK elK READY READY ~-~~]~~--~ Ao RD cs 8231A ARITHMETIC PROCESSOR UNIT ~---~~~I~--~ ""'7 .... 7 SYSTEM DATA BUS 231305-10 Figure 3_ Minimum Configuration Example 6-8 cl ADDRESS BUS 1:1 8205 DECODER "1'1 lEi c Cil CLOCK ; iiiEMii CD 3DI 0 w ~ .. c>w '" I I II 1\ -VI lOR CPU - CI) I'.) ... w iow ~ READY ~ cc' ,---0 Vee a0' WR ~ INTAb .. dlNTA m "iD IQ ~ I~ iiEiiW ~ = 3 ~ ~--_T~~~~~~~~~~ 'U CD 8231 DMA CONTROLLER I~ HOLD 14--------------+-+-+--IHRQ ::I: co AB-AIS AD-A1 HLDA ~--~~---------------------r--~--;--'iHLDA c' :::T ~ () l cs P- AO-AIS ~ en , ~ ~ INTI- liNT cs liD 8259A DBD-DB1 ....::;-~ 1l 1Z- Ifl~I~~ IRO END __ EACK INTERRUPT CONTROLLER DBD-DB1 + 0'0' AD w > > '" 01) 01) Po' 1;Ili1 ol 8231A ARITHMETIC PROCESSOR UNIT ~7 t... SYSTEM DATA BUS V 231305-11 inter 8231A • Notice: Stresses above those listed under 'j4bsolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Storage Temperature .' ......... - 65·C to + 150·C Ambient Temperature Under Bias ...... O·C to 70·C Voo with Respect to Vss ........ -0.5V to + 15.0V Vee with Respect to Vss ......... -0.5V to + 7.0V All Signal Voltages with Respect to Vss ....................... -0.5V to + 7.0V Power Dissipation .......................... 2.0W D.C. AND OPERATING CHARACTERISTICS o·c to 70·C, Vss = OV, Vee = +5V ±10%, voo = +12V ±10% TA = Parameters Description Min VOH Output HIGH Voltage 3.7 VOL Output LOW Voltage VIH Input HIGH Voltage VIL Input LOW Voltage IlL IOFL Typ Units V IOH = -200/-LA 0.4 V IOL = 3.2 rnA 2.0 Vee V ~0.5 0.8 V Input Load Current ±10 /-LA Vss ,,;: VIN ,,;: Vee Data Bus Leakage ±10 /-LA Vss + 0.45 ,,;: Vour ,,;: Vee lee Vee Supply Current 50 95 rnA 100 Voo Supply Current 50 95 rnA Co Output Capacitance 8 CI Input Capacitance 5 pF 10 pF CIO Test Conditions Max I/O Capacitance pF fc = 1.0 MHz, Inputs = OV(1) NOTE: 1. Sampled, not 100% tested. x= A.C. TESTING LOAD CIRCUIT A.C. TESTING INPUT, OUTPUT WAVEFORM 37==>( 0.4 20 LO >TESTPOINTS< 0.8 0.8 DEVICE UNDER TEST 231305-12 A.C. Testing: Inputs are driven at 3.7V for a logical "1" and O.4V for a logic "0". Timing measurements are made at 2.0V for a logic "1" and O.BV for a logic "0". 231305-13 6-10 inter 8231A A.C. CHARACTERISTICS = TA 0·Cto70·C, vss = OV, vcc = +5V ±10%. voo = +12V ±10% READ OPERATION 8231A-8 Symbol 8231A Parameter Units Min Max Min Max tAR Ao, CS Setup to RD 0 0 ns tRA Ao, CS Hold from RD 0 0 ns tRY READY tYR Ready tRRR READY Pulse Width (Note 3) J, t J, from RD to RD Delay (Note 2) t tROE Data Bus Enable from RD J, tORY Data Valid to READY tOF Data Float after RD 150 100 ns 0 0 ns Data 3.5 tCY + 50 3.5 tcy + 50 ns Status 1.5 tCY + 50 1.5 tcy + 50 ns 50 50 ns 0 0 ns t t 50 200 50 100 ns WRITE OPERATION 8231A-8 Symbol Units Min. tAW Ao, CS Setup to WR tWA Ao, CS Hold after WR tWY READY J, from WR READY t t tyW 8231A Parameter to WF:! J, Max. 0 0 ns 25 ns 150 0 READY Pulse Width (Note 4) tWI Write Inactive Time (Note 4) tow Data Setup to WR two Data Hold after WR I I Max. 60 Delay (Note 2) tRRW Min. 100 0 50 ns ns 50 ns Command 4tCY 4tCY ns Data 5tCY 5tCY ns 150 100 ns 20 20 ns 6-11 inter 8231A OTHER TIMINGS Symbol 8231A-8 Parameter Min Max Min Max 5000 250 2500 tCY Clock Period 480 tCPH Clock Pulse High Width 200 tCPL Clock Pulse Low Width tEE END Pulse Width (Note tEAE EACK tAA EACK Pulse Width J, to END t tSA ~3VACK tss SVACK Pulse Width J, 5) ns ns 240 120 ns 400 200 200 100 J, Units 100 Delay to SVREQ 8231A 50 300 Delay 100 ns· 150 ns 150 50 ns ns ns NOTES: 1. Typical values are for TA = 25D C, nominal supply voltages processing parameters. 2. READY is pulled low for both command and data operations. 3. Minimum values shown assume no previously entered command is being executed for the data access. If a previously entered command is being executed, READY low pulse width is the time to complete execution plus the time shown. Status may be read at any time without exceeding the time shown. 4. READY low pulse width is less than 50 ns when writing into the data port or the control port as long as the duty. cycle requirement (tWI) is observed and no previous command is being executed. tWI may be safely violated as long as the extendedtRRW that results is observed. If a previously entered command is being executed, READY low pulse width is the time to complete execution plus the time shown. These timings refer specifically to the 8231A. 5. END low pulse width is specified for EACK tied to VSS. Otherwise tEAE applies. 6-12 inter 8231A WAVEFORMS READ OPERATION CLOCK REAOY DATA BUS 231305-14 WRITE OPERATION 231305-15 INTERRUPT OPERATION ,lEE" 1 IEAED~f' _______________ -IAA- __- - - - - - - - - - - EACK SVREQ - ISA~~~ / _ _ _- - J _ _ _ SVACK 4-, _ ISS~, Y 231305-16 6-13 8253/8253-5 PROGRAMMABLE INTERVAL TIMER Binary or BCD • Count Single + 5V Supply • Available in EXPRESS • - Standard Temperature Range Compatible 8253-5 • MCS-85™ 3 Independent 16-Bit Counters • DC to 2.6 MHz • Programmable Counter Modes • - Extended Temperature Range The Intel® 8253 is a programmable counter/timer device designed for use as an Intel microcomputer peripheral. It uses NMOS technology with a single + 5V supply and is packaged in a 24-pin plastic DIP. It is organized as 3 independent 16-bit counters, each with a count rate of up to 2.6 MHz. All modes of operation are software programmable. CLK 0 D7·Do~ DATA BUS BUFFER CDUNTER =0 GATE 0 DUT 0 RD WR Ao CLK 1 READ! WRITE LOGIC COUNTER =1 D7 Vee 06 D. WR AD CS 03 A, 05 GATE l ' OUT 1 A, CS O2 Ao 0, CLK 2 Do CLK 0 OUTO CLK 2 CONTROL WORD REGISTER GATE 0 COUNTER =2 GATE 2 OUT 2 GND OUT 2 GATE 2 CLK 1 GATE 1 OUT 1 231306-2 Figure 2. Pin Configuration INTERNAL BUS / 231306-1 Figure 1. Block Diagram 6-14 November 1986 Order Number: 231306-001 inter 8253/8253-5 FUNCTIONAL DESCRIPTION RD (Read) General A "low" on this input informs the 8253 that the CPU is inputting data in the form of a counters value. The 8253 is programmable interval timer/counter specifically designed for use with the Intel™ Microcomputer systems. Its function is that of a general purpose, multi-timing element that can be treated as an array of I/O ports in the system software. WR (Write) A "low" on this input informs the 8253 that the CPU is outputting data in the form of mode information or loading counters. The 8253 solves one of the most common problems in any microcomputer system,. the generation of accurate time delays under software control. Instead of setting up timing loops in systems software, the programmer configures the 8253 to match his requirements, initializes one of. the counters of the 8253 with the desired quantity, then upon command the 8253 will count out the delay and interrupt the CPU when it has completed its tasks. It is easy to see that the software overhead is minimal and that multiple delays can easily be maintained by assignment of priority levels. AO,A1 These inputs are normally connected to the address bus. Their function is to select one of the three counters to be operated on and to address the control word register for mode selection. CS (Chip Select) A "low" on this input enables the 8253. No reading or writing will occur. unless the device is selected. The CS input has no effect upon the actual operation of the counters. Other counter/timer functions that are non-delay in nature but also common to most microcomputers can be implemented with the 8253. • Programmable Rate Generator • Event Counter • Binary Rate Multiplier • Real Time Clock • Digital One-Shot • Complex Motor Controller . Data Bus Buffer The 3-state, bi-directional, 8-bit buffer is used to interface the 8253 to the system data bus. Data is transmitted or received by the buffer upon execution of INput or OUTput CPU instructions. The Data Bus Buffer has three basic functions. cs----~ 1. Programming the MODES of the 8253. 2. Loading the count registers. 3. Reading the count values. Read/Write Logic The Read/Write Logic accepts inputs from the system bus and in turn generates control signals for overall device operation. It is enabled or disabled by CS so that no operation can occur to change the function unless the device has been selected by the system logic. 231306-3 Figure 3. Block Diagram Showing Data Bus Buffer and Read/Write Logic Functions 6-15 inter CS 0 8253/8253-5 0 0 0 0 0 RD 1 1 1 1 0 0 WR 0 0 0 0 1 1 0 0 1 0 0 0 X 1 1 1 X 1 A1 0 0 1 1 0 0 1 1 X X Ao .0 1 0 1 0 1 0 1 X X Load Counter No.. O Load Counter No.1 Load Counter No.2 Write Mode Word Read Counter No. 0 Read Counter No. 1 Read Counter No.2 No-Operation 3-State Disable 3-State No-Operation 3-State systems software as an array of peripheral 1/0 ports; three are counters and the fourth is a control register for MODE programming. Basically, the select inputs AO, A1 connect to the AO, A 1 address bus signals of the CPU. The CS can be derived directly from the address bus using a linear select method. Or it· can be connected to the output of a decoder, such as an Intel 8205 for larger systems. Control Word Register The Control Word Register is selected when AO, A 1 are 11. It then accepts information from the data bus buffer and stores it in a register. The information stored in this register controls the operation MODE of each counter, selection of binary or BCD counting and the loading of each count register. The Control Word Register can only be written into; no read operation of its contents is available. Counter #0, Counter #1, Counter #2, These three functional blocks are identical in operation so only a single counter will be described. Each Counter consists of a single, 16-bit, pre-settable, DOWN counter. The counter can operate in either binary or BCD and its input, gate and output are configured by the selection of MODES. stored in the Control Word Register. INTERNAL BUS 231306-4 Figure 4. Block Diagram Showing Control Word Register and Counter Functions The counters' are fully independent and each can have separate MODE configuration and counting operation, binary or BCD. Also, there are special features in the control word that handle the loading of the count value so that software overhead can be minimized for these functions. The reading of the contents of each counter is available to the programmer with simple READ operations for event counting applications and special commands and logic are included in the 8253 so . that the contents of each counter can be read "on the fly" without having to inhibit the clock input. 8253 SYSTEM INTERFACE The 8253 is a component of the Intel™ Microcomputer systems and interfaces in the same manner as all other peripherals of the family. It is treated by the .231306-5 Figure 5. 8253 System Interface 6-16 8253/8253·5 OPERATIONAL DESCRIPTION RL-READ/LOAD: RL 1 RLO General The complete functional definition of the 8253 is programmed by the systems software. A set of control words must be sent out by the CPU to initialize each counter of the 8253 with the desired MODE and quantity information. Prior to initialization, the MODE, count, and output of all counters is undefined. These control words program the MODE, Loading sequence and selection of binary or BCD counting. a a Counter Latching operation (see READ/WRITE Procedure Section). 1 a Read/Load most significant byte only. a 1 Read/Load least significant byte only. 1 1 Read/Load least significant byte first, then most significant byte. M-MODE: Once programmed, the 8253 is ready to perform whatever timing tasks it is assigned to accomplish. M2 M1 MO a a a Mode a a a 1 Mode 1 X 1 a Mode 2 The actual counting operation of each counter is completely independent and additional logic is provided on-chip so that the usual problems associated with efficient monitoring and management of external, asynchronous events or rates to the microcomputer system have been eliminated. X 1 1 Mode 3 1 a a Mode 4 1 a 1 Mode 5 Programming the 8253 All of the MODES for each counter are programmed by the systems software by simple I/O operations. BCD: a Binary Counter 16-Bits Each counter of the 8253 is individually programmed by writing a control word into the Control Word Register. (Aa, A1 = 11) 1 Binary Coded Decimal (BCD) Counter (4 Decades) Counter Loading Control Word Format 07 Os 05 04 03 02 01 Do I SC1 I sca I RL 1 I RLa I M2 I M1 I Ma I BCD I The count register is not loaded until the count value is written (one or two bytes, depending on the mode selected by the RL bits), followed by a rising edge and a falling edge of the clock. Any read of the counter prior to that falling clock edge may yield invalid data. Definition Of Control MODE DEFINITION SC-SELECT COUNTER: SC1 SCO a a Select Counter a a 1 Select Counter 1 1 a Select Counter 2 1 1 Illegal MODE 0: Interrupt on Terminal Count. The output will be initially low after the mode set operation. After the count is loaded into the selected count register, the output will remain low and the counter will count. When terminal count is reached, the output will go high and remain high until the selected count register is reloaded with the mode or a new count is loaded. The counter continues to decrement after terminal count has been reached. Rewriting a counter register during counting results in the following: (1) Write 1st byte stops the current counting. (2) Write 2nd byte starts the new count. 6-17 8253/8253-5 MODE 1: Programmable One-Shot. The output will go low on the count following the rising edge of the gate input. In Modes 2 and 3, if a ClK source other than the system clock is used, GATE should be pulsed immediately following WR of a new count value. The output will go high on the terminal count. If a new count value is loaded while the output is low it will not affect the duration of the one-shot pulse until the succeeding trigger. The current count can be read at any time without affecting the one-shot pulse. MODE 4: Software Triggered Strobe. After the mode is set, the output will be high. When the count is loaded, the counter will begin counting. On terminal count, the output will go low for one input clock period, then will go high again. If the count register is reloaded during counting, the new count will be loaded on the next ClK pulse. The count will be inhibited while the GATE input is low. The one-shot is retriggerable, hence the output will remain low for the full count after any rising edge of the gate input. MODE 5: Hardware Triggered Strobe. The counter will start counting after the rising edge of the trigger input and will go low for one clock period when the terminal count is reached. The counter is retriggerable. The output will not go low until the full count after the rising edge of any trigger. MODE 2: Rate Generator. Divide by N counter. The output will be low for one period of the input clock. The period from one output pulse to the next equals the number of input counts in the count register. If the count register is reloaded between output pulses the present period will not be affected, but the subsequent period will reflect the new value. Signal Status Modes The gate input, when low, will force the output high. When the gate input goes high, the counter will start from the initial count. Thus, the gate input can be used to synchronize the counter. 0 1 When this mode is set, the output will remain high until after the count register is loaded. The output then can also be synchronized by software. Low Or Going Low Disables counting - Rising High - Enables counting 1) Initiates - counting 2) Resets output after next clock MODE 3: Square Wave Rate Generator. Similar to MODE 2 except that the output will remain high until one half the count has been completed (or even numbers) and go low for the other half of the count. This is accomplished by decrementing the counter by two on the falling edge of each clock pulse. When the counter reaches terminal count, the state of the output is changed and the counter is reloaded with .the full count and the whole process is repeated. If the count is odd and the output is high, the first clock pulse (after the count is loaded) decrements the count by 1. Subsequent clock pulses decrement the clock by 2. After timeout, the output goes low and the full count is reloaded. The first clock pulse (following the reload) decrements the counter by 3. Subsequent clock pulses decrement the count by 2 until timeout. Then the whole process is repeated. In this way, if the count is odd, the output will be high for {N + 1)/2 counts and low for (N - 1)/2 counts. 2 1) Disables 1) Reloads counting counter 2) Sets output 2) Initiates immediately counting high Enables counting 3 1) Disables 1) Reloads counting counter 2) Sets output 2) Initiates counting immediately high Enables . counting 4 Disables counting 5 - Initiates counting Enables counting - Figure 6. Gate Pin Operations Summary 6-18 8253/8253-5 MODE 0: INTERRUPT ON TERMINAL COUNT MODE 3: SQUARE WAVE GENERATOR CLOCK i I WI\""~ , , 4 OUTPUT (INTERRUPTI 3 I 2 1 a I I-+-n--: (n=4) , ,, I WRm~ , , GATE-----..:,;L-.I....-:-;- - 5 4 3 2 1 a ~ OUTPUT (INTERRUPT) 1m'" 5) '-v--J '--v---' A B 231306-6 MODE 1: PROGRAMMABLE ONE-SHOT LOADn~r------------- GATE o -.r -4 TRIGGER ----~~--~~~~~ OUTPUT -----,1.~~~-I--------- OUTPUT 231306-10 In = 41 MODE 5: HARDWARE TRIGGERED STROBE TRIGGER~ CLOCK 4 OUTPUT ---,i.....::.....:......::.....::.....:...~.J----- GATE ---.J 4 231306-7 OUTPUT In = 41 3 2 1 0 U ....- - - - - MODE 2: RATE GENERATOR CLOCK GATE~ 4343210 4 OUTPUT OUTPUT (n == 3) RESET 3 OUTPUT (n '" 4) 2 U'----231306-11 0131 ------,L___. J - - - 231306-8 Figure 7. 8253 Timing Diagrams 6-19 inter 8253/8253·5 8253 READ/WRITE PROCEDURE MODE Control Word Counter n Write Operations The systems software must program each counter of the 8253 with the mode and quantity desired. The programmer must write out to the 8253 a MODE control word and the programmed number of count register bytes (1 or 2) prior to actually using the selected counter. LSB Counter Register byte Counter n MSB Counter Register byte Counter n NOTE: Format shown is a simple example of loading the 8253 and does not imply that it is the only format that can be used. The actual order of the programming is quite flexible. Writing out of the MODE control word can be in any sequence of counter selection: e.g., counter #0 does not have to be first or counter # 2 last. Each counter's MODE control word register has a separate address so that its loading is completely sequence independent. (SCO, SC1). Figure 8. Programming Format The loading of the Count Register with the actual count value, however, must be done in exactly the sequence programmed in the MODE control word (RLO, RL 1). This loading of the counter's count register is still sequence independent like the MODE control word loading, but when a selected count register is to be loaded it must be loaded with the number of bytes programmed in the MODE control word (RLO, RL 1). The one or two bytes to be loaded in the count register do not have to follow the associated MODE control word. They can be programmed at any time following the MODE control word loading as long as the correct number of bytes is loaded in order. All counters are down counters. Thus, the value loaded into the count register will actually be decremented. Loading all zeros into a count register will result in the maximum count (2 16 for Binary or 104 for BCD). In MODE 0 the new count will not restart until the load has been completed. It will accept one of two bytes depending on how the MODE control words (RLO, RL 1) are programmed. Then proceed with the restart operation. A1 AD No.1 MODE Control Word Counter 0 1 1 No.2 MODE Control Word Counter 1 1 1 No.3 MODE Control Word Counter 2 1 1 No.4 LSB Count Register Byte Counter 1 0 1 No.5 MSB Count Register Byte Counter 1 0 1 No.6 LSB Count Register Byte Counter 2 1 0 NO.7 MSB Count Register Byte Counter 2 1 0 NO.8 LSB Count Register Byte Counter 0 0 0 No. g MSB Count Register Byte Counter 0 0 0 NOTE: The exclusive addresses of each counter's count register make the task of programming the 8253 a very simple matter, and maximum effective use of the device will result if this feature is fully initilized. Figure 9. Alternate Programming Formats 6-20 inter 8253/8253-5 Read Operations Read Operation Chart A1 0 0 1 1 In most counter applications it becomes necessary to read the value of the count in progress and make a computational decision based on this quantity. Event counters are probably the most common application that uses this function. The 8253 contains logic that will allow the programmer to easily read the contents of any of the three counters without disturbing the actual count in progress. AO 0 ,1 0 1 RD 0 0 0 0 Read Counter No. 0 Read Counter No.1 Read Counter No.2 Illegal Reading While Counting There are two methods that the programmer can use to read the value of the counters. The first method involves the use of simple I/O read operations of the selected counter. By controlling the AO, A1 inputs to the 8253 the programmer can select the counter to be read (remember that no read operation of the mode register is allowed AO, A1-11). The only requirement with this method is that in order to assure a stable count reading the actual operation of the selected counter must be inhibited either by controlling the Gate input or by external logic that inhibits the clock input. The contents of the counter selected will be available as follows: In order for the programmer to read the contents of any counter without effecting or disturbing the count- ing operation the 8253 has special internal logic that can be accessed using simple WR commands to the MODE register. Basically, when the programmer wishes to read the contents of a selected counter "on the fly" he loads the MODE register with a special code which latches the present coul'lt value into a storage register so that its contents contain an accurate, stable quantity. The programmer then issues a normal read command to the selected counter and the contents of the latched register is available. First I/O Read contains the least significant byte (LSB). ' MODE Register for Latching Count Second I/O Read contains the most significant byte (MSB). AO, A1 I :~ I Due to the internal logic of the 8253 it is absolutely necessary to complete the entire reading procedure. If two bytes are programmed to be read, then two bytes must be read before any loading WR command can be sent to the same counter. = 11 :;0 I ~51 ~41 ~31 ~21 ~1 I ~O I SC1, SCO- specify counter to be latched. 05,04 - 00 designates counter latching- operation. X - don't care. The same limitation applies to this mode of reading the counter as tl:1e previous method. That is, it is mandatory to complete the entire read operation as programmed. This command has no effect on the counter's mode . ClK 3MHz f2 • 1.5MHz 8085 ClK 8253·5 231306-12 'If an 8085 clock output is to drive an 8253·5 clock input, it must be reduced to 2 MHz or less. Figure 10. MCS-85TM Clock Interface' 6-21 inter 8253/8253-5 ABSOLUTE MAXIMUM RATINGS· AmbientTemperature Under Bias ... : .. o·eto 70·C Storage Temperature .......... :: 65·C to + 150·C Voltage On Any'Pin. with Respect to Ground ....; ........ - 0.5V to 7V Power Dissipation .................. , ..... 1 Watt D.C. CHARACTERISTICS Symbol V,L TA = 0·Cto70·C, Vee = 5V ±10%' Parameter Input Low Voltage V,H Input High Voltage VOL Output Low Voltage VOH Output HighVoltage I,L • Notice: Stresses above those listed .under '~bso lute Maximum Ratings" may cause permanent damage to the deVice; This is a stress Iating on/yand functional operation 01 the device at these or any other conditions above those indicatedin the operational sections of this specification is not implied· Exposure to absolute maximum rating conditions for eXtended periods may affect deVice. reliability. Min Max Unit -0.5· 0.8 V 2.2 Test Conditions Vee +:5V V 0.45 V Input Load Current ±10 /LA Y,N = Vee to OV IOFL Output Float Leakage ±10 /LA VOUT = Vee toO.45V Icc Vee Supply Current 140 mA (Note 1) V 2.4 (Note 2) CAPACITANCE TA = 25·C, Vee = GND = ov Symbol Parameter Min Typ Max Unit Test Conditions C'N Input Capacitance 10 pF fc = 1 MHz CliO 110 Capacitance 20 pF ·Unmeasured pins returned to VSS A.C. CliARACTERISTICS TA ~ O·C to 70·C, Vee = 5.0V ± 10%, GND= OV' Bus Parameters(3) READ CYCLE Symbol Parameter 8253-5 8253 Min Max Min Max Unit tAR Address Stable before READ 50 30 ns tRA Address Hold Time for READ 5 5 ns tRR READ Pulse Width, tRD Data Delay from READ(4) tDF READ to Data Floating tRY Recovery Time between READ and Any Other Control Signal 400 300 300 25 1 6-22 125 ns 200 25 1 100 ns ns /Ls 8253/8253-5 A.C. CHARACTERISTICS (Continued) WRITE CYCLE Symbol 8253 Parameter Min Max 50 Address Stable before WRITE tAW 8253-5 Min Max Unit 30 ns tWA Address Hold Time for WRITE 30 30 ns tww WRITE Pulse Width 400 300 ns tDW Data Set Up Time for WRITE 300 250 ns tWD Data Hold Time for WRITE 40 30 ns tRV Recovery Time between WRITE and Any Other Control Signal 1 1 fLs CLOCK AND GATE TIMING Symbol 8253 Parameter 8253-5 Min Max Min Max dc 380 dc Unit tCLK Clock Period 380 tpwH High Pulse Width 230 230 ns tpwL low Pulse Width 150 150 ns tGW Gate Width High 150 150 ns tGL Gate Width low 100 100 ns 100 100 ns 50 50 ns tGS Gate Set Up Time to ClK tGH Gate Hold Time after ClK tOD Output Delay from ClK toDG Output Delay from Gate t t t (4) t (4) ns 400 400 ns 300 300 ns NOTES: 1. IOL = 2.2 mA. 2. IOH = -400 I'A 3. AC timings measured at VOH 2.2, VOL = O.B. 4. CL = 150 pF. 'For Extended Temperature EXPRESS, use MB253 electrical parameters. A.C. TESTING INPUT, OUTPUT WAVEFORM 2.4 > 2.2V TEST POINTS 0.45 0.8 A.C. TESTING LOAD CIRCUIT < 2.2V DEVICE UNDER TEST 0.8 231306-13 A.C. Testing: Inputs are driven at 2.4V lor a Logic "1" and 0.45V for a Logic "0". Timing measurements are made at 2.2V for a Logic "1" and O.BV lor a Logic "0". . ,231306-14 CL Includes Jig Capacitance 6-23 8253/8253·5 . WAVEFORMS WRITE TIMING READ TIMING Ao-l. CS_ _'1=_ _ _ _ _ _ _ _ _l--f''-_ __ DATA BUS 231306-16 231306-15 CLOCK AND GATE TIMING 231306-17 8254 PROGRAMMABLE INTERVAL TIMER • • • • • • • Compatible with All Intel. and Most Other Microprocessors Handles Inputs from DC to 10 MHz - 5 MHz 8254-5 - 8 MHz 8254 -10 MHz 8254-2 • Status Read-Back Command Six Programmable Counter Modes Three Independent 16-Bit Counters Binary or BCD Counting Single + 5V Supply Available in EXPRESS - Standard Temperature Range The Intel® 8254 is a counter/timer device designed to solve the common timing control problems in microcomputer system design. It provides three independent 16-bit counters, each capable of handling clock inputs up to 10 MHz. All modes are software programmable. The 8254 is a superset of the 8253. The 8254 uses HMOS technology and comes in a 24-pin plastic or CERDIP package. 231164-1 Figure 1.8254 Block Diagram 6-25 August 1987 Order Number: 231164-004 8254 Table 1. Pin Description , Symbol Pin No. Type Name and Function D7- DO 1-8 I/O DATA: Bi·directional three state data bus lines, connected to system data bus. ClKO 9 I CLOCK 0: Clock input of Counter O. OUTO 10 0 OUTPUT 0: Output of Counter O. GATE 0 11 I GATE O:.Gate input of Counter O. GND 12 Vee WR 24 23, I RD 22 I READ CONTROL: This input is low during CPU read operations. CS 21 I CHIP SELECT: A Iowan this input enables the 8254 to respond to RD and WR signals. RD and WR are ignored otherwise. 20-19 I ADDRESS: Used to select one of the three Counters or the Control Word Register for read or write operations. Normally connected to the system address bus. Al, Ao GROUND: Power supply connection. POWER: + 5V power supply connection. WRITE CONTROL: This input is low during CPU write operations. A1 0 0 1 1 Ao 0 1 0 1 Selects Counter 0 Counter 1 Counter 2 Control Word Register ClK2 18 I CLOCK 2: Clock input of Counter 2. OUT2 17 0 GATE 2 16 I OUT 2: Output of Counter 2. GATE 2: Gate input of Counter 2. ClK 1 15 I CLOCK 1: Clock input of Counter 1. GATE 1 14 I GATE 1: Gate input of Counter 1. OUT 1 13 0 OUT 1: Output of Counter 1. FUNCTIONAL DESCRIPTION Some of the other counter/timer functions common to microcomputers which can be implemented with the 8254 are: General • Real time clock The 8254 is a programmable interval timer/counter designed for use with Intel microcomputer systems. It is a general purpose, multi·timing element that can be treated as an array of I/O ports in the system software. • Event-counter The 8254 solves one of the most common problems in any microcomputer system, the generation of accurate time delays under software control. Instead of setting up timing loops in software, the programmer configures the 8254 to match his requirements and programs one of the counters for the desired delay. After the desired delay, the 8254 will interrupt the CPU. Software overhead is minimal and variable length delays can easily be accommodated. • Complex waveform generator • Digital one-shot • Programmable rate generator • Square wave generator • Binary rate multiplier • Complex motor controller Block Diagram DATA BUS BUFFER This 3-state, bi-directional, 8-bit buffer is used to interface the 8254 to the system bus (see Figure 3). 6-26 inter 8254 eLK 0 GATE 0 OUT 0 iil5 eLK 1 WR GATE 1 Ao OUT 1 A1 eLK 2 GATE 2 OUT 2 231164-3 Figure 3. Block Diagram Showing Data Bus Buffer and Read/Write Logic Functions READ/WRITE LOGIC COUNTER 0, COUNTER 1, COUNTER 2 The Read/Write logic accepts inputs from the system bus and generates control signals for the other functional blocks of the 8254. A1 and Ao select one of the three counters or the Control Word Register to be read from/written into. A "low" on the RD input tells the 8254 that the CPU is reading one of the counters. A "low" on the WR input tells the 8254 that the CPU is writing either a Control Word or an initial count. Both RD and WR are qualified by CS; RD and WR are ignored unless the 8254 has been selected by holding CS low. These three functional blocks are identical in operation, so only a single Counter will be described. The internal block diagram of a single counter is shown in Figure 5. The Counters are fully independent. Each Counter may operate in a different Mode. The Control Word Register is shown in the figure; it is not part of the Counter itself, but its contents determine how the Counter operates. The status register, shown in Figure 5, when latched, contains the current contents of the Control Word Register and status of the output and null count flag. (See detailed explanation of the ReadBack command.) CONTROL WORD REGISTER The Control Word Register (see Figure 4) is selected by the Read/Write logic when A1,Ao = 11. If the CPU then does a write operation to the 8254, the data is stored in the Control Word Register and is interpreted as a Control Word used to define the operation of the Counters. The actual counter is labelled CE (for "Counting Element"). It is a 16-bit presettable synchronous down counter. The Control Word Register can only be written to; status information is available with the Read-Back Command. OlM and Oll are two 8-bit latches. Ol stands for "Output latch"; the subscripts M and l stand for "Most significant byte" and "least significant byte" 6-27 inter 8254 ClK 0 GATE 0 aUTO WI! READI WRITE lOGIC Ao GATE 1 OUT 1 A, l!S ClK 2 GATE 2 OUT2 231164-4 Fi.9ure 4. Blo~k Diagram Showing Control Word. Register and Counter Functions CONTROL LOGIC l+-t--+-----( '---r-,----,-,.. GATEn ClK n OUT n 231164-5 Figure 5. Internal Block Diagram of aCo.unter 6·28 inter 8254 other peripherals of the family. It is treated by the system's software as an array of peripheral 1/0 ports; three are counters and the fourth is a control register for MODE programming. respectively. Both are normally referred to .as one unit and called just OL. These latches normally "follow" the CE, but if a suitable Counter latch Command is sent to the 8254, the latches "latch" the present count until read by the CPU and then return to "following" the CEo One latch at a time is enabled by the counter's Control logic to drive the internal bus. This is how the 16-bit Counter communicates over the 8-bit internal bus. Note that the CE itself cannot be read; whenever you read the count, it is the Ol that is being read. Basically, the select inputs AO.A1 connect to the Ao, A1 address bus signals of the CPU. The CS can be derived directly from the address bus using a linear select method. Or it can be connected to the output of a decoder, such as an Intel 8205 for larger systems. Similarly, there are two 8-bit registers called CRM and CRL (for "Count Register"). Both are normally referred to as one unit and called just CR. When a new count is written to the Counter, the count is stored in the CR and later transferred to the CEo The Control logic allows one register at a time to be loaded from the internal bus. Both bytes are transferred to the CE simultaneously. CRM and CRL are cleared when the Counter is programmed. In this way, if the Counter has been programmed for one byte counts (either most significant byte only or least significant by1e only) the other byte will be zero. Note that the CE cannot be written into; whenever a count is written, it is written into the CR. After power-up, the state of the 8254 is undefined. The Mode, count value, and output of all Counters are undefined. The Control logic is also shown in the diagram. ClK n, GATE n, and OUT n are all connected to the outside world through the Control logic. Programming the 8254 OPERATIONAL DESCRIPTION General How each Counter operates is determined when it is programmed. Each Counter must be programmed before it can be used. Unused counters need not be programmed. Counters are programmed by writing a Control Word and then an initial count. 8254 SYSTEM INTERFACE The Control Words are written into the Control Word Register, which is selected when A1,Ao = 11. The Control Word itself specifies which Counter is being programmed. The 8254 is a component of the Intel Microcomputer Systems and interfaces in the same manner as all ADDRESS BUS (16) CONTROL BUS 231164-6 Figure 6. 8254 System Interface 6-29 8254 Control Word Format Al ,Ao = 11 CS = 0 RD = 1 WR 07 = 0 Os 05 04 02 03 01 00 I SC1 I sca I RW1 I Rwa I M21 M1 I MO I BCD I SC-SeJect Counter SC1 SCO a 0 M-Mode M2 M1 MO 0 a a Mode a Select Counter a a 1 Select Counter 1 . a a 1 Mode 1 1 a Select Counter 2 X 1 0 Mode 2 1 1 Read-Back Command (see Read Operations) X 1 1 Mode 3 1 a 0 Mode 4 0 1 ModeS 1 RW-Read/Write RW1 RWO 0 a BCO Counter Latch Command (see Read Operations) 0 1 Read/Write least significant byte only 1 a Read/Write most significant byte only 1 1 Read/Write least significant byte first, then most significant byte , a Binary Counter 16-bits 1 Binary Coded Decimal (BCD) Counter (4 Decades) NOTE: Don't care bits (Xl should be 0 to insure compatibility with future Intel products. Figure 7.. ControJ Word Format By contrast, initial counts are written into the Counters, not the Control Word Register. The Al,Ao inputs are used to select the Counter to be written into. The format of the initial count is determined by the Control Word used. Since the Control Word Register and the three Counters have separate addresses (selected by the Al,Ao inputs), and each Control Word specifies the Counter it applies to (SCO,SC1 bits), no special instruction sequence is required. Any programming sequence that follows the conventions in Figure 7 is acceptable. Write Operations A new initial count may be written to a Counter at any time without affecting the Counter's programmed Mode in any way. Counting will be affected as described in the Mode definitions. The new count must follow the programmed count format. The programming procedure for the 8254 is very flexible. Only two conventions need to be remembered: 1) For each Counter, the Control Word must be written before the initial count is written. 2) The initial count must follow the count format specified in the Control Word (least significant byte only, most significant byte only, or least significant byte and then most significant byte). If a Counter is programmed to read/write two-byte counts, the following precaution applies: A program must not transfer control between writing the first and second byte to another routine which also writes into that same Counter. Otherwise, the Counter will be loaded with an incorrect count. 6-30 inter 8254 Control Word-Counter 0 lSB of count-Counter 0 MSB of count-Counter 0 Control Word-Counter 1 lSB of count-Counter 1 MSB of count-Counter 1 Control Word-Counter 2 LSB of count-Counter 2 MSB of count-Counter 2 Control Word-Counter 0 Control Word-Counter 1 Control Word-Counter 2 LSB of count-Counter 2 LSB of count-Counter 1 LSB of count-Counter 0 MSB of count-Counter 0 MSB of count-Counter 1 MSB of count-Counter 2 A1 1 0 0 1 0 0 Ao 1 0 0 1 1 1 0 0 Control Word-Counter 2 Control Word-Counter 1 Control Word-Counter 0 lSB of count-Counter 2 MSB of count-Counter 2 LSB of count-Counter 1 MSB of count-Counter 1 lSB of count-Counter 0 MSB of count-Counter 0 A1 1 1 1 1 0 0 0 0 Ao 1 1 1 0 1 0 0 1 0 Control Word-Counter 1 Control Word-Counter 0 LSB of count-Counter 1 Control Word-Counter 2 LSB of count-Counter 0 MSB of count-Counter 1 LSB of count-Counter 2 MSB of count-Counter 0 MSB of count-Counter 2 A1 1 1 1 Ao 1 1 1 0 0 1 1 0 0 0 0 0 0 A1 1 1 0 1 0 0 1 0 Ao 1 1 1 0 1 0 0 0 NOTE: In all four examples, all Counters are programmed to read/write two-byte counts. These are only four of many possible programming sequences. Figure 8_ A Few Possible Programming Sequences Read Operations A1,Ao = 11; CS = 0; RD = 1; WR = 0 It is often desirable to read the value of a Counter without disturbing the count in progress. This is easily done in the 8254. D7 1 There are three possible methods for reading the counters: a simple read operation, the Counter Latch Command, and the Read-Back Command. Each is explained below. The first method is to perform a simple read operation. To read the Counter, which is selected with the A 1, AO inputs, the ClK input of the selected Counter must be inhibited by using either the GATE input or external logic. Otherwise, the count may be in the process of changing when it is read, giving an undefined result. SC1 D6 1 SCO Ds 1 0 D4 1 0 D3 1 X D2 1 D1 X'I X Do 1 X I SC1,SCO-specify counter to be latched SC1 SCO 0 0 1 1 0 1 0 1 Counter 0 1 2 Read-Back Command 05,04-00 designates Counter Latch Command COUNTER LATCH COMMAND X-don't care The second method uses the "Counter Latch Command''. Like a Control Word, this command is written to the Control Word' Register, which is selected when A1,Ao = 11. Also like a Control Word, the sca, SC1 bits select one of the three Counters, but two other bits, 05 and 04, distinguish this command from a Control Word. NOTE: Don't care bits (Xl should be 0 to insure compatibility with future Intel products. Figure 9. Counter Latching Command Format 6-31 inter 8254 The selected Counter's output latch (Ol) latches the count at the time the Counter latch Command is received. This count is held in the latch until it is read by the CPU (or until the Counter is reprogrammed). The count is then unlatched automatically and the Ol returns to "following" the counting element (CE). This allows reading the contents of the Counters "on the fly" without affecting counting in progress. Multiple Counter latch Commands may be used to latch more than one Counter. Each latched Counter's Ol holds its count until it is read. Counter latch Commands do not affect the programmed Mode of the Counter in any way. AO, A1 = 11 07 06 05 RD = 1 WR = 0 CS = 0 04 03 02 01 11 11 ICOUNTlsTATuslcNT2lcNT1IcNTOI 05: 04: 03: 02: 01: 00: Do 0 I 0 = Latch count of selected counter(s) 0 = Latch status of selected counters(s) 1 = Select Counter 2 1 = Select Counter 1 1 = Select Counter 0 Reserved for future expansion; Must be 0 Figure 10. Read-Back Command Format The read-back command may be used to latch multiple counter output latches (Ol) by setting the COUNT bit 05 = 0 and selecting the desired counter(s). This single command is functionally equivalent to several counter latch commands, one for each counter latched. Each counter's latched count is held until it is read (or the counter is reprogrammed). The counter is automatically unlatched when read, but other counters remain latched until they are read. If multiple count read-back commands are issued to the same counter without reading the count all but the first are ignored; i.e., the count which' will be read is the count at the time the first read-back command was issued. If a Counter is latched and then, some time later, latched again before the count is read, the second Counter latch Command is ignored. The count read will be the count at the time the first Counter latch Command was issued. With either method, the count must be read according to the programmed format; specifically, if the Counter is programmed for two byte counts, two bytes must be read. The two bytes do not have to be read one right after the other; read or write or p~o gramming operations of other Counters may be Inserted between them. Another feature of the 8254 is that reads and writes of the same Counter may be interleaved; for example, if the Counter is programmed for two byte counts, the following sequence is valid. 1) Read least significant byte. 2) Write new least significant byte. 3) Read most significant byte. 4) Write new most significant byte. The read-back command may also be used to latch status information of selected counter(s) by setting STATUS bit 04 = O. Status must be latched to be read; status of a counter is accessed by a read from that counter. If a Counter is programmed to read/write two-byte. counts, the following precaution applies: A program must not transfer control between reading the first and second byte to another routine which also reads from that same Counter. Otherwise, an incorrect count will be read. The counter status format is shown in Figure 11. Bits 05 through DO contain the counter's programmed Mode exactly as written in the. last Mode Control Word. OUTPUT bit 07 contains the current state of the OUT pin. This allows the user to monitor the counter's output via software, possibly eliminating some hardware from a system. READ-BACK COMMAND The third. method uses the Read-Back Command. This command allows the user to check the count value, programmed Mode, and current states of the OUT pin and Null Count flag of the selected counter(s). 1 = OUT Pin is 1 OUT Pin is 0 1 = Null Count 06 o = Count available for reading . Os-Do Counter programmed mode (see Figure o= 7) The command is written into the Control Word Register and has the format shown in Figure 10. The command applies to the counters selected by setting their corresponding bits 03, 02, 01 = 1. Figure 11. Status Byte 6-32 intJ 8254 COUNT and STATUS bits 05,04 = O. This is functionally the same as issuing two separate read-back commands at once, and the above discussions apply here also. Specifically, if multiple count and/or status read-back commands are issued to the same counter(s) without any intervening reads, all but the first are ignored. This is illustrated in Figure 13. NULL COUNT bit 06 indicates when the last count written to the counter register (CR) has been loaded into the counting element (CE). The exact time this happens depends on the Mode of the counter and is described in the Mode Definitions, but until the count is loaded into the counting element (CE), it can't be read from the counter. If the count is latched or read before this time, the count value will not reflect the new count just written. The operation of Null Count is shown in Figure 12. If both count and status of a counter are latched, the first read operation of that counter will return latched status, regardless of which was latched first. The next one or two reads (depending on whether the counter is programmed for one or two type counts) return latched count. Subsequent reads return unlatched count. This Action Causes A. Write to the control word register;(1) Null Count = 1 B. Write to the count register (CR);(2) Null Count = 1 C. New Count is loaded into Null Count = 0 CE(CR-CE); NOTE: 1. Only the counter specified by· the control word will have its Null Count set to 1. Null count bits of other counters are unaffected. . 2. If the counter is programmed for two-byte counts (least significant byte then most significant byte) Null Count goes to 1 when the second byte is written. Figure 12. Null Count Operation If multiple status latch operations of the counter(s) are performed without reading the status, all but the first are ignored; i.e., the status that will be read is the status of the counter at the time the first status read-back command was issued. Both count and status of the selected counter(s) may be latched simultaneously by setting both Command 07 06 05 04 03 02 01 1 00 CS RO WR A1 Ao 0 1 0 0 0 Write into Counter 0 0 1 0 0 1 Write into Counter 1 0 1 0 1 0 Write into Counter 2 0 1 0 1 1 Write Control Word 0 0 1 0 0 Read from Counter 0 0 0 1 0 1 Read from Counter 1 0 0 1 1 0 Read from Counter 2 0 0 1 1 1 No-Operation (3-State) 1 X X X X No-Operation (3-State) 0 1 1 X X No-Operation (3-State) Figure 14. Read/Write Operations Summary ·Oescription Result 1 0 0 0 0 1 0 Read back count and status of Counter 0 Count and status latched for Counter 0 0 0 Read back status of Counter 1 Status latched for Counter 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 Read back status of Counters 2, 1 Status latched for Counter 2, but not Counter 1 1 1 0 1 1 0 0 0 Read back count of Counter 2 Count latched for Counter 2 1 1 0 0 0 1 0 0 Read back count and status of Counter 1 Count latched for Counter 1, but not status 1 1 1 0 0 0 1 0 Read back status of Counter 1 Command ignored, status already latched for Counter 1 Figure 13. Read-Back Command Example 6-33 intJ 8254 OUT will then go high and remain high until the ClK pulse after the next trigger. Mode Definitions The following are defined for use in describing the operation of the 8254. ClK Pulse: a rising edge, then a falling edge, in that order, of a Counter's ClK input. Trigger: a rising edge of a Counter's GATE input. Counter loading: the transfer of a count from the CR to the CE (refer to the. "Functional Description") After writing the Control Word and initial count, the Counter is armed. A trigger results in loading the . Counter and setting OUT low on the next ClK pulse, thus starting the one-shot pulse. An initial count of N will result in a one-shot pulse N ClK cycles in duration. The one-shot is retriggerable, hence OUT will remain low for N ClK pulses after any trigger. The one-shot pulse can be repeated without rewriting the same count into the counter. GATE has no effect on OUT. If a new count is written to the Counter during a oneshot pulse, the current one-shot is not affected unless the counter is retriggered. In that case, the Counter is loaded with the new count and the oneshot pulse continues until the new count expires. MODE 0: INTERRUPT ON TERMINAL COUNT Mode 0 is typically used for event counting. After the Control Word is written, OUT is initially low, and will remain low until the Counter reaches zero. OUT then goes high and remains high until a new count or a new Mode 0 Control Word is written into the Counter. MODE 2: RATE GENERATOR This Mode functions like a divide-by-N counter. It is typically used to generate a Real Time Clock interrupt. OUT will initially be high: When the initial count has decremented to 1, OUT goes low for one ClK pulse. OUT then goes high again, the Counter reloads the initial count and the process is repeated. Mode 2 is periodic; the same sequence is repeated indefinitely. For an initial count of N, the sequence repeats every N ClK cycles. . GATE = 1 enables counting; GATE = 0 disables counting. GATE has no effect on OUT. After the Control Word and initial count are written to a Counter, the initial count will be loaded on the next ClK pulse. This ClK pulse does not decrement the count, so for an initial count of N, OUT does not go high until N + 1 ClK pulses after the initial count is written. GATE == 1 enables counting; GATE = 0 disables counting; If GATE goes low during an output pulse, OUT is set high immediately. A trigger reloads the Counter with the initial count on the next ClK pulse; OUT goes low N ClK pulses after the trigger. Thus the GATE input can be used to synchronize the Counter. If a new count is written to the Counter, it will be loaded on the next ClK pulse and counting will continue from the new count. If a two-byte count is written, the following happens: . 1) Writing the first byte disables counting. OUT is set low immediately (no clock pulse required) 2) Writing the second byte allows the new count to be loaded on the next ClK pulse. After writing a Control Word and initial count, the Counter will be loaded on the next ClK pulse. OUT goes lo~ N ClK Pulses after the initial count is written. This allows the Counter to be synchronized by software also. This allows the counting sequence to be synchronized by software. Again, OUT does not go high until N +1 ClK pulses after the new count of N is written. Writing a new count while.counting does not affect the current counting sequence. If a trigger is received after writing a new count but before the end of the current period, the Counter will be loaded with the new count on the next elK pulse and counting will continue from the new count. Otherwise, the new count will be loaded at the end of the current counting cycle. In mode 2, a COUNT of 1 is illegal. If an initial count is written while GATE = 0, it will still be loaded on the next ClK pulse. When GATE goes high, OUT will go high NClK pulses later; no ClK pulse is needed to load the Counter as this has already been done. MODE 1: HARDWARE RETRIGGERABLE ONE-SHOT MODE 3: SQUARE WAVE MODE OUT will be initially high. OUT will go low on the ClK pulse following a trigger to begin the one-shot pulse, and will remain low until the Counter reaches zero. Mode 3 is typically used for Baud rate generation. Mode 3 is similar to Mode 2 except for the duty cycle of OUT. OUT will initially be high. When half the 6-34 8254 FF I ofF I FF FE a a I FF FF FF FF 231164-7 The following conventions apply to all mode timing diagrams: 1. Counters are programmed for binary (not BCD) counting and for reading/writing least significant byte (LSB) only. 2. The counter is always selected (CS always low). 3. CW stands for "Control Word"; CW = 10 means a control word of 10 HEX is written to the counter. 4. LSB stands for "Least Significant Byte" of count. 5. Numbers below diagrams are count values. The lower number is the least significant byte. The upper number is the most significant byte. Since the counter is programmed to read/write LSB only, the most significant byte cannot be read. N stands for an undefined count. Vertical lines show transitions between count values. Figure 15. Mode 0 6-35 8254 CW=.12 WR LSB=3 ~----------------~-- ClK OUT :=J I NI NI N I NI NI ~ I ~ CW=12 o 1 LSB=3 ~ ~~--------------- ClK GATE OUT -------;n -- --1n------~:--- ----Jr .:..=J L - -_ _ _ I NI NI NI,N I.N I ~ I ~ I ~ CW=12 lSB=2 o 3 o 2 ~ IgI LSB=4 r---~---------- ClK GATE OUT -- -----;n --------i n------ =.J ININ \L...'_ _....J INININUI~lgl~~I~~t~ o 3 231164-8 Figure 16. Mode 1 After writing a Contrpl Word and initial count, the Counter will be loaded on the next ClK pulse. This allows the Counter to be synchronized by software also. initial count has expired, OUT goes low for the remainder of the count. Mode 3 is periodic; the sequence above is repeated indefinitely. An initial count of N results in a square wave with a period of N ClK cycles. Writing a new count while counting does not affect the current counting sequence. If a trigger is received after writing a new count but before the end of the current half-cycle of the square wave, the Counter will be loaded with the new count on the next ClK pulse and counting will continue from the GATE = 1 enables counting; GATE 0 disables counting. If GATE goes low while OUT is low, OUT is set high immediately; no ClK pulse is required. A trigger reloads the Counter with the initial count on the next ClK pulse. Thus the GATE input can be used to synchronize the Counter. 6-36 intJ 8254 CW= 14 WR lSB=3 ~--------------------~----- ClK GATE OUT I N I N I CW=14 WR N I N 0 3 I 0 0 1 2 0 3 0 2 0 1 0 3 lSB=3 LJLJ ClK LJ GATE OUT =.:J I N I N I N I N ~ I I ~ I ~ I ~ I ~. I ~ I ClK GATE OUT~ I N I N U I N I N I ~ o 3 I~ I~ I ~ o 3 231164-9 NOTE: A GATE transition should not occur one clock prior to terminal count. Figure 17. Mode 2 Odd counts: OUT is initially high. The initial count minus one (an even number) is loaded on one ClK pulse and then is decremented by two on succeeding ClK pulses. One ClK pulse after the count expires, OUT goes low and the Counter is reloaded with the initial count minus one. Succeeding ClK pulses decrement the count by two. When the count expires, OUT goes high again and the Counter is reloaded with the initial count minus one. The above process is repeated indefinitely. So for odd counts, OUT will be high for (N + 1)/2 counts and low for (N - 1)/2 counts. new count. Otherwise, the new count will be loaded at the end of the current half-cycle. Mode 3 is implemented as follows: Even counts: OUT is initially high. The initial count is loaded on one ClKpulse and then is decremented by two on succeeding ClK pulses. When the count expires OUT changes value and the Counter is reloaded with the initial count. The above process is repeated indefinitely. 6-37 8254 CW.18 WR LSB.4 ~~. ----~-------------------- ClK G~E------------------------------------------- OUT o o 4 CW.16 I 4 LSB=5 WR~r--------~----~--------- ClK GATE OUT~ I NI NI NI NI CW=18 I \ 0 4 0 2 I ~I r \ I: I I ~ I • 0 2 I 0 lSB=4 WliLn--1 ClK GATE OUT :.=J L-.l LJ ININININI:I~I:I~I 0 2 NOTE: A GATE transition should not occur one clock prior to terminal count. Figure 18. Mode 3 6-38 r \ 0 4 I~ I 0 2 I 231164-10 8254 initial count of N, OUT does not strobe low until N 1 ClK pulses after the initial count is written. MODE 4: SOFTWARE TRIGGERED STROBE OUT will be initially high. When the initial count expires, OUT will go low for one ClK pulse and then go high again. The counting sequence is "triggered" by writing the initial count. If a new count is written during counting, it will be loaded on the next ClK pulse and counting will continue from the new count. If a two-byte count is written, the following happens: 1) Writing the first byte has no effect on counting. GATE = 1 enables counting; GATE = 0 disables counting. GATE has no effect on OUT. 2) Writing the second byte allows the new count to be loaded on the next ClK pulse. After writing a Control Word and initial count, the Counter will be loaded on the next ClK pulse. This ClK pulse does not decrement the count, so for an CW=18 lSB=3~ This allows the sequence to be "retriggered" by software. OUT strobes low N + 1 ClK pulses after the new count of N is written. _________________________ WR'LJL..J ClK GATE u OUT~ o I NI N I NI NI CW = 18 2 o1 I I I I I 0 0 FF FF FF FE FF FD LSB = 3~______-:-________________ WRLJU ClK GATE OUT :=J I I NI NI NI 3 I ~ I ~ I N 0 WI! ClK GATE OUT + ~ ININININlgl~I~1 231164-11 Figure 19. Mode 4 6-39 inter 8254 A trigger results in the Counter being loaded with the initial count on the next ClK pulse. The counting sequence is retriggerable. OUT will not strobe low for N+ 1 ClK pulses after any trigger. GATE has no effect on OUT. MODE 5: HARDWARE TRIGGERED STROBE (RETRIGGERABLE) OUT will initially be high. Counting is triggered· by a rising· edge of GATE. When the initial count has expired, OUT will go low for one ClK pulse and then go high again. If a new count is written during counting, the current counting sequence· will not be affected. If a trigger occurs after the new count is written but before the current count expires, the Counter will be loaded with the new count on the next ClK pulse and counting will continue from there. After writing the Control Word and initial count, the counter will not be loaded until the ClK pulse after a trigger. This ClKpulse .does not decrement the count, so fo~ an initial count of N, OUT does not strobe low until N + 1 ClK pulses after a trigger. CW=lA LSB=3 ~~--~~----------ClK GATE -------1 rr--------lrc= u OUT~ o1 INININININI CW=lA WR I o.I I 0 FF FF. 0 3 lSB=3 ~~--------------------- ClK GATE -------,...-1~----,...-....;----- OUT~ ININININININI~I CW=lA lSB=3 r------. CLK GATE OUT - -------vr----------"\n----- =-.J INI NI NI U N I NI ~ I ~ I ~ I Figure 20. Mode 5 6-40 g I == I =~ I 231164-12 intJ 8254 Signal Status Modes Low Or Going Low 0 Operation CC)mmon to All Modes Rising High Disables Counting -- Enables Counting 1 -- 1) Initiates Counting 2) Resets Output after Next Clock -- 2 1) Disables Counting 2) Sets Output Immediately High 3 1) Disables Counting 2) Sets Output Immediately High PROGRAMMING When a Control Word is written to a Counter, all Control logic is immediately reset and OUT goes to a known initial state; no ClK pulses are required for this. GATE Initiates Counting Enables Counting Initiates Counting Enables Counting 4 Disables Counting -- Enables Counting 5 -- Initiates Counting -- The GATE input is always sampled on the rising edge of ClK. In Modes 0,2,3, and 4 the GATE input is level sensitive, and the logic level is sampled on the rising edge of ClK. In Modes 1, 2, 3, and 5 the GATE input is rising-edge sensitive. In these Modes, a rising edge of GATE (trigger) sets an edge-sensitive flip-flop in the Counter. This flip-flop is then sampled on the next rising edge of ClK; the flip-flop is reset immediately after it is sampled. In this way, a trigger will be detected no matter when it occurs-a high logic level does not have to be maintained until the next rising edge of ClK. Note that in Modes 2 and 3, the GATE input is both edge- and level-sensitive. In Modes 2 and 3, if a elK source other than the system clock is used, GATE should be pulsed immediately following WR of a new count value. Figure 21. Gate Pin Operations Summary Mode 0 1 2 3 4 5 Min Count Max Count 1 1 2 2 1 1 0 0 0 0 0 0 COUNTER New counts are loaded and Counters are decremented on the falling edge of ClK. The largest possible initial count is 0; this is equivalent to 216 for binary counting and 104 for BCD counting. The Counter does not stop when it reaches zero. In Modes 0, 1, 4, and 5 the Counter "wraps around" to the highest count, either FFFF hex for binary counting or 9999 for BCD counting, and continues counting. Modes 2 and 3 are periodic; the Counter reloads itself with the initial count and continues counting from there. NOTE: o is equivalent to 216 for binary counting and 104 for BCD counting. . Figure 22. Minimum and Maximum Initial Counts 6-41 8254 • Notice: Stresses above those listed under '~bso lute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUMRATINGS* Ambient Temperature Under Bias ...... O°C.to 70°C Storage Temperature .......... - 65°C to + 150°C Voltage on Any Pin with Respect to Ground .............. - 0.5V to + 7V Power Dissipation ........................... 1W D.C. CHARACTERISTICS Symbol TA = 0°Ct070°C, Vee = 5V ±10% Min Max Units Input Low Voltage -0:5 0.8 V VIH Input High Voltage 2.0 Vee +0.5V V VOL Output Low Voltage 0.45 V VOH Output High Voltage IlL Input Load Current ±10 /LA IOFL Output Float Leakage ±10 /LA lee Vee Supply Current 170 mA VIL Parameter 2.4 Test Conditions = 2.0mA IOH = - 400 /LA IOL V = Vee to OV VOUT = Vee to 0.45V VIN = 1 MHz CIN Input Capacitance 10 pF fc CliO I/O Capacitance 20 pF Unmeasured pins returned to VSS(4) A.C. CHARACTERISTICS TA = O°C to 70°C, Vee = 5V ± 10%, GND = OV Bus Parameters(1) READ CYCLE Symbol 8254-5 Parameter Min tAR Address Stable Before RD J, tSR CS Stable Before RD tRA Address Hold Time After RD tRR RD Pulse Width tRD Data Delay from RD tAD Data Delay from Address i J, i tDF RD Command Recovery Time to Data Floating 8254-2 8254 Min Max Min Unit Max 45 45 30 ns 0 0 0 ns 0 0 0 ns 150 150 95 ns J, tRv Max 5 200 NOTE: 1. Ae timings measured at VOH = 2.0V, VOL = O.BV. 6-42 120 120 85 ns 220 220 185 ns 65 ns 90 5 200 90 5 165 ns 8254 A.C. CHARACTERISTICS TA = O'C to 70'C, vcc = 5V ± 10%, GND = OV (Continued) WRITE CYCLE Symbol Min tAW Address Stable Before WR tsw CS Stable Before WR t t twA Address Hold Time After WR tww WR Pulse Width tow Data Setup Time Before WR two Data Hold Time After WR tRY Command Recovery Time t i Max 8254-2 8254 8254·5 Parameter Max Min Min Unit Max 0 0 0 ns 0 0 0 ns 0 0 0 ns 150 150 95 ns 120 120 95 ns 0 0 0 ns 200 200 165 ns i CLOCK AND GATE Symbol tClK 8254-5 Parameter 8254-2 8254 Min Max 125 DC Min Max 100 DC Max Clock Period 200 DC 60(3) 30(3) ns 60(3) 50(3) ns tpWH High Pulse Width 60(3) tpWl low Pulse Width 60(3) tR Clock Rise Time 25 25 25 tF Clock Fall Time 25 25 25 tGW Gate Width High tGl Gate Width low tGS Gate Setup Time to ClK tGH too tOOG twc Unit Min i Gate Setup Time After ClK t Output Delay from Gate t ClK Delay for loading t i Gate Delay for Sampling two OUT Delay from Mode Write tCl ClK Set Up for Count latch ns ns 50 50 50 50 50 ns 50 50 40 ns 50(2) 50(2) 150 Output Delay from ClK tWG ns -5 0 50 -5 45 50(2) 120 55 260 -40 ns 150 120 0 50 55 0 50 -5 260 -40, 45 -40 ns 100 ns 100 ns 55 ns 40 ns 240 ns 40 ns NOTES: 2. In Modes 1 and 5 triggers are sampled on each rising clock edge. A second trigger within 120 ns (70 ns for the 8254-2) of the rising clock edge may not be detected. 3. low-going glitches that violate tpWH, tpWL may cause errors requiring counter reprogramming. 4. Sampled, not 100% tested. TA = 25'C. 5. If ClK present at TWC min then Count equals N + 2 ClK pulses, TWC max equals Count N + 1 ClK pulse. TWC min to TWC max, count will be either N + lorN + 2 ClK pulses. 6. In Modes 1 and 5, if GATE is present when writing a new Count value, at TWG min Counter will not be triggered, at TWG max Counter will be triggered. 7. If ClK present when writing a Counter latch or ReadBack Command, at TCl min ClK will be reflected in count value latched, at TCl max ClK will not be reflected in the count value latched. 6-43 inter 8254 WAVEFORMS WRITE 1....~---IAW----il.... 1 cs DATA BUS VALID tDW~ . - t WO - " 231164-13 READ Ao·t I-..----IAR----I--I CS DATABUS--- 231164-14 6-44 intJ 8254 WAVEFORMS (Continued) RECOVERY 231164-15 CLOCK AND GATE 231164-16 • Last byte of count being written. A.C. TESTING INPUT, OUTPUT WAVEFORM "=X 2.0 0.45 0.8 > TEST POINTS < 2.0 0.8 A.C. TESTING LOAD CIRCUIT x= DEVICE UNDER TEST 231164-17 A.C. Testing: Inputs are driven at 2.4V for a Logic "1" and 0.45V for a Logic "0." Timing measurements are made at 2.0V for a Logic "1" and 0.6V for a Logic "0". 231164-16 CL = 150 pF CL Includes Jig Capacitance 6-45 82C54 CHMOS PROGRAMMABLE INTERVAL TIMER independent 16-bit counters • Three Low Power CHMOS • -Icc = 10 rnA 8 MHz Count Compatible with all Intel and most • other microprocessors High Speed, "Zero Wait State" • Operation with 8 MHz 8086/88 and @ frequency 80186/188 Completely TTL Compatible • Six Programmable Counter Modes • Binary or BCD counting • Status Read Back Command • Available in 24-Pin DIP and 28-Pin PLCC • • in EXPRESS • -Available Standard Temperature Range Handles Inputs from DC to 8 MHz - 10 MHz for 82C54-2 - Extended Temperature Range The Intel 82C54 is a high-performance, CHMOS version of the industry standard 8254 counter/timer which is designed to solve the timing control problems common in microcomputer system design. It provides three independent 16-bit counters, each capable of handling clock inputs up to 10 MHz. All modes are software programmable. The 82C54 is pin compatible with the HMOS 8254, and is a superset of the 8253. Six programmable timer modes allow the 82C54 to be used as an event counter, elapsed time indicator, programmable one-shot, and in many other applications. . The 82C54 is fabricated on Intel's advanced CHMOS III technology which provides low power consumption with performance equal to or greater than the equivalent HMOS product. The 82C54 is available in 24-pin DIP and 28-pin plastic leaded chip carrier (PLCC) packages. Os 06 07 Ne Yee WR ii6 21282726 ClK 0 07·00 82C54 elK 1 GATE 1 OUTO GATED GND NC OUT1 GATE1 eLK1 OUT 1 231244-3 PLASTIC LEADED CHIP CARRIER cs-_ _.-..J Vee iVA jffi Cs OUT2 AI Ao D, ClK2 Do 231244-1 Figure 1. 82C54 Block Diagram 231244-2 Diagrams are for pin reference only.. Package sizes are not to scale. Figure 2. 82C54 Pinout 6-46 October 1987 Order Number: 231244-004 inter 82C54 Table 1. Pin Description Pin Number Symbol Type Function DIP PlCC 1·8 2-9 ClKO 9 10 I OUTO 10 12 0 Output 0: Output of Counter O. GATE 0 11 13 I Gate 0: Gate input of Counter o. Dy-Do I/O Data: Bidirectional tri·state data bus lines, connected to system data bus. Clock 0: Clock input of Counter O. GND 12 14 OUT1 13 16 0 Out 1: Output of Counter 1. Ground: Power supply connection. Gate 1: Gate input of Counter 1. GATE 1 14 17 I ClK 1 15 18 I Clock 1: Clock input of Counter 1. GATE 2 16 19 I Gate 2: Gate input of Counter 2. OUT2 17 20 0 Out 2: Output of Counter 2. ClK2 18 21 I Clock 2: Clock input of Counter 2. A1, Ao 20-19 23-22 I Address: Used to select one of the three Counters or the Control Word Register for read or write operations. Normally connected to the system address bus. CS 21 24 I RD 22 26 I WR 23 27 I Vee NC 24 28 1, 11, 15,25 Selects A1 Ao Counter 0 0 0 1 Counter 1 0 Counter 2 1 0 Control Word Register 1 1 Chip Select: A Iowan this input enables the 82C54 to respond to RD and WR signals. RD and WR are ignored otherwise. Read Control: This input is low during CPU read operations. Write Control: This input is. low during CPU write operations. Power: + 5V power supply connection. No Connect sired delay. After the desired delay, the 82C54 will interrupt the CPU. Software overhead is minimal and· variable length delays can easily be accommodated. FUNCTIONAL DESCRIPTION General Some of the other counter/timer functions common to microcomputers which can be implemented with the 82C54 are: The 82C54 is a programmable interval timer/counter designed for use with Intel microcomputer systems. It is a general purpose, multi-timing element that can be treated as an array of I/O ports in the system software. • • • • • • • • The 82C54 solves one of the most common problems in any microcomputer system, the generation of accurate time delays under software control. Instead of setting up timing loops in software, the programmer configures the 82C54 to match his requirements and programs one of the counters for the de6-47 Real time clock Even counter Digital one-shot Programmable rate generator Square wave generator Binary rate multiplier Complex waveform generator Complex motor controller inter 82C54 Block Diagram CONTROL WORD REGISTER The Control Word Register (see Figure 4) is selected by the Read/Write Logic when Al, Ao = 11. If the CPU then does a write operation to the 82C54, the data is stored in the Control Word Register and is interpreted as a Control Word used to define the operation of the Counters. DATA BUS BUFFER This 3-state, bi-directional, 8-bit buffer is used to interface the 82C54 to the system bus (see Figure 3). The Control Word Register can only be written to; status information is available with the Read-Back Command. elK 0 GATE 0 0,·°0 OUT 0 elK 1 GATE 1 OUT 1 Cu( 2 GATE 2 231244-4 our 2 Figure 3. Block Diagram Showing Data Bus Buffer and Read/Write Logic Functions 231244-5 READ/WRITE LOGIC Figure 4. Block Diagram Showing Control Word Register and Counter Functions The Read/Write Logic accepts inputs from the system bus and generates control signals. for the other functional blocks of the 82C54.Aland Ao select one of the three counters or the Control Word Re~ ter to be read from/written into. A "low" on the RD input tells the 82C54 that the CPU is reading one of the counters. A "low" on the WR input tells the 82C54 that the CPU is writing either a Control Word or an initial count. Both RD and WR are qualified by CS; RD and WR are ignored unless the 82C54 has . been selected by holding CS low. COUNTER 0, COUNTER 1, COUNTER 2 These three functional blocks are'identical in operation, so only a single Counter will be described. The internal block diagram of a single counter is shown in Figure 5. The Counters are fully independent. Each Counter may operate in a different Mode. The Control Word Register is shown in the figure; it is not part of the Counter itself, but its contents determine how the Counter operates. 6-48 intJ 82C54 stored in the CR and later transferred to the CEo The Control logic allows one register at a time to be loaded from the internal bus. Both bytes are transferred to the CE simultaneously. CRM and CRl are cleared when the Counter is programmed. In this way, if the Counter has been programmed for one byte counts (either most significant byte only or least significant byte only) the other byte will be zero. Note that the CE cannot be written into; whenever a count is written, it is written into the CR. The Control logic is also shown in the diagram. ClK n, GATE n, and OUT n are all connected to the outside world through the Control logic. 82C54 SYSTEM INTERFACE 231244-6 Figure 5. Internal Block Diagram of a Counter The status register, shown in the Figure, when latched, contains the current contents of the Control Word Register and status of the output and null count flag. (See detailed explanation of the ReadBack command.) The actual counter is labelled CE (for "Counting Element"). It is a 16-bit presettable synchronous down" counter. The B2C54 is treated by the systems software as an array of peripheral 110 ports; three are counters and the fourth is a control register for MODE programming. Basically, the select inputs Ao, A1 connect to the Ao, A1 address bus signals of the CPU. The CS can be derived directly from the address bus using a linear select method. Or it can be connected to the output of a decoder, such as an Intel B205 for larger systems. OlM and Oll are two B-bit latches. Ol stands for "Output latch"; the subscripts M and l stand for "Most significant byte" and "least significant byte" respectively. Both are normally referred to as one unit and called just OL. These latches normally "follow" the CE, but if a suitable Counter latch Command is sent to the B2C54, the latches "latch" the present count until read by the CPU and then return to "following" the CEo One latch at a time is enabled by the counter's Control logic to drive the internal bus. This is how the 16·bit Counter communicates over the a-bit internal bus. Note that the CE itself cannot be read; whenever you read the count, it is the Ol that is being read. Similarly, there are two B-bit registers called CRM and CRl (for "Count Register"). Both are normally " referred to as one unit and called just CR. When a new count is written to the Counter, the count is 231244-7 Figure 6. 82C54 System Interface 82C54 OPERATIONAL DESCRIPTION Programming the 82C54 General Counters are programmed by writing a Control Word and then an initial count. The control word format is shown in Figure 7. After power-up, the state of the 82C54 is undefined. The Mode, count value, and output of all Counters are undefined. All Control Words are written into the Control Word Register, which is selected when A 1 , Ao = 11. The Control Word itself specifies which Counter is being programmed. How each Counter operates is determined when it is programmed. Each Counter must be programmed before it can be used. Unused counters need not be programmed. By contrast, initial counts are written into the Counters, not the Control Word Register. The Al, Ao inputs are used to select the Counter· to be written into. The format of the initial count is determined by the Control Word used. Control Word Format Al,Ao=11 CS = 0 RD = 1 WR =0 D7 D6 Ds D4 D2 D3 D1 Do ISC1 ISCO I RW1 I RWO I M21 M1 I MO I BCD I SC ...,. Select Counter: SC1 SCO M-MODE: M2 MO 0 0 Select Counter 0 0 0 0 Mode 0 0 1 Select Counter 1 0 0 1 Mode 1 1 0 Select Counter 2 X 1 0 Mode 2 1 Read-Back Command (See Read Operations) X 1 1 Mode 3 1 0 0 Mode 4 1 0 1 Mode 5 1 RW - Read/Write: RW1 RWO 0 M1 0 BCD: Counter Latch Command (see Read Operations) 0 1 Read/Write least significant byte only. 1 0 Read/Write most significant byte only. 1 1 Head/Write least significant byte first, then most significant byte. 0 Binary Counter 16-bits 1 Binary Coded Decimal (BCD) Counter (4 Decades) NOTE: Don't care bits (X) should be 0 to insure compatibility with future Intel products. Figure 7. Control Word Format 6-50 intJ 82C54 struction sequence is required. Any programming sequence that follows the conventions above is acceptable. Write Operations The programming procedure for the 82C54 is very flexible. Only two conventions need to be remembered: 1) For each Counter, the Control Word must be written before the initial count is written. 2) The initial count must follow the count format specified in the Control Word (least significant byte only, most significant byte only, or least significant byte and then most significant byte). A new initial count may be written to a Counter at any time without affecting the Counter's programmed Mode in any way. Counting will be affected as described in the Mode definitions. The new count must follow the programmed count format. If a Counter is programmed to read/write two-byte counts, the following precaution applies: A program must not transfer control between writing the first and second byte to another routine which also writes into that same Counter. Otherwise, the Counter. will be loaded with an incorrect count. Since the Control Word Register and the three Counters have separate addresses (selected by the. A1, Ao inputs), and each Control Word specifies the Counter it applies to (SCO, SC1 bits), no special in- Control Word LSB of countMSB of countControl Word LSB of count·MSB of count . Control Word LSB of count MSB of count - Counter 0 Counter 0 Counter 0 Counter 1 Counter 1 Counter 1 Counter 2 Counter 2 Counter 2 Control Word Counter Word Control Word LSB of count LSB of count LSB of count MSB of countMSB of count MSB of count - Counter 0 Counter 1 Counter 2 Counter 2 Counter 1 Counter 0 Counter 0 Counter 1 Counter 2 A1 Ao 1 0 0 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 A1 Ao 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 0 1 0 Control Word Control Word Control Word LSB of count MSB of countLSB of count MSB of countLSB of countMSB of count- Counter 2 Counter 1 Counter 0 Counter 2 Counter 2 Counter 1 Counter 1 Counter 0 Counter 0 Control Word Control Word LSB of count Control Word LSB of count MSB of countLSB of count MSB of countMSB of count- Counter 1 Counter 0 Counter 1 Counter 2 Counter 0 Counter 1 Counter 2 Counter 0 Counter 2 A1 Ao 1 1 1 1 1 0 O. 0 0 1 1 1 0 0 1 1 0 0 A1 Ao 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 0 0 0 NOTE: In all four examples, all counters are programmed to read/write twO-byte counts. These are only four of many possible programming sequences. Figure 8. A Few Possible Programming Sequences Latch Command, and the Read-Back Command. Each is explained below. The first method is to perform a simple read operation ..To read the Counter, which is selected with the A1, AO inputs, the CLK input of the selected Counter must be inhibited by using either the GATE input or external logic. Otherwise, the count may be in the process of changing when it is read, giving an undefined result. Read Operations It is often desirable to read the value of a Counter without disturbing the count in progress. This is easily done in the 82C54. There are three possible methods for reading the counters: a simple read operation, the Counter 6-51 82C54 gramming operations of other Counters may be inserted between them. COUNTER LATCH COMMAND The second method uses the "Counter Latch Command". Like a Control Word, this command is written to the Control Word Register, which is selected when A1, Ao = 11. Also like a Control Word, the SCO, SC1 bits select one of the three Counters, but two other bits, 05 and 04, distinguish this command from a Control Word. Another feature of the 82C54 is that reads and writes of the same Counter may be interleaved; for example, if the Counter is programmed for two byte counts, the following seq·uence is valid. 1. 2. 3. 4. Al, Ao= 11; CS=O; RD= 1; WR=O 07. 06 05 04 03 02 01 I SCl I SCO I 0 I 0 I· X I X I X DO X SCO Counter 0 0 1 1 0 1 0 1 0 1 2 Read-Sack Command least significant byte. new least significant byte. most significant byte. new most significant byte. If a Counter is programmed to read/write two-byte counts, the following precaution applies; A program must not transfer control between reading the first and second byte to another routine which also reads from that same Counter. Otherwise, an incorrect count will be read. I SC1, SCO - specify counter to be latched SCl Read Write Read Write READ-BACK COMMAND The third method uses the Read-Sack command. This command allows the user to check the count value, programmed Mode, and current state of the OUT pin and Null Count flag of the selected counter(s). 05,04 - 00 designates Counter Latch Command X - don't care The command is written into the Control Word Register and has the format shown in Figure 10. The command applies to the counters selected by setting their corresponding bits 03,02,01 = 1. NOTE: Don't care bits (X) should be 0 to insure compatibility with future Intel products. Figure 9_ Counter Latching Command Format The selected Counter's output latch (OL) latches the count at the time the Counter Latch Command is received. This count is held in the latch until it is read by the CPU (or until the Counter is reprogrammed). The count is then unlatched automatically and the OL returns to "following" the counting element (CE). This allows reading the contents of the Counters "on the fly" without affecting counting in progress. Multiple Counter Latch Commands may be used to latch more than one Counter. Each latched Counter's OL holds its count until it is read. Counter Latch Commands do not affect the programmed Mode of the Counter in any way. AO, A 1 = 11 CS 07 06 Os = 0 04 RO = 1 03 WR = 0 02 01 00 \1 \1 \COUNT\STATUS\CNT2\CNT1\CNTO\ 0 05: 04: 03: 02: 01: Do: I 0 = Latch count of selected counter(s). 0 = Latch status of selected counter(s) 1 =c Select counter 2 1 = Select counter 1 1 = Select counter 0 Reserved for future expansion; must be 0 Figure 10. Read-Back Command Format The read-back command may be used to latch mUltiple counter output latches (OL) by setting the COUNT bit 05 = 0 and selecting the desired counter(s). This single command is functionally equivalent to several counter latch commands, one for each counter latched. Each counter's latched count is held until it is read (or the counter is reprogrammed). That counter is automatically unlatched when read, but other counters remain latched until they are read. If multiple count read-back commands are issued to the same counter without reading the If a Counter is latched and then, some time later, latched again before the count is read, the second Counter Latch Command is ignored. The count read will be the count at the time the first Counter Latch Command was issued. With either method, the count must be read according to the programmed format; specifically, if the Counter is programmed for two byte counts, two bytes must be read. The two bytes do not have to be read one right after the other; read or write or pro6-52 82C54 count, all but the first are ignored; i.e., the. count which will be read is the count at the time the first read-back command was issued. THIS ACTION: A. Write to the control word register: [1] B. Write to the count register (CR); [2] C. New count is loaded into CE (CR ~ CE); The read-back command may also be used to latch status information of selected counter(s) by setting STATUS bit D4 = O. Status must be latched to be read; status ofa counter is accessed by a read from that counter. CAUSES: Null count= 1 Null count= 1 Null count=O [I] Only the counter specified by the control word will have its null count set to 1. Null count bits of other counters are unaffected. [2] If the counter is programmed for two-byte counts (least significant byte then most significant byte) null count goes to 1 when the second byte is written. The counter status format is shown in Figure 11. Bits D5 through DO contain the counter's programmed Mode exactly as written in the last Mode Control Word. OUTPUT bit D7 contains the current state of the OUT pin. This allows the user to monitor the counter's output via software, possibly eliminating some hardware from a system. Figure 12. Null Count Operation If multiple status latch operations of the counter(s) are performed without reading the status, all but the first are ignored; i.e., the status that will be read is the status of the counter at the time the first status read-back command was issued. 07 1 = o= 06 1 = o= Os-Do Out Pin is 1 Out Pin is 0 Null count Count available for reading Counter Programmed Mode (See Figure 7) Both count and status of the selected counter(s) may be latched simultaneously by setting both COUNT and STATUS bits D5,D4=0. This is functionally the same as issuing two separate read-back commands at once, and the above discussions apply here also. Specifically, if multiple countand/or status read-back commands are issued to the same counter(s) without any intervening reads, all but the first are ignored. This is illustrated in Figure 13. Figure 11. Status Byte NULL COUNT bit D6 indicates when the last count written to the counter register (CR) has been loaded into the counting element (CE). The exact time this happens depends on the Mode of the counter and is described in the Mode Definitions, but until the count is loaded into the counting element (CE), it can't be read from the counter. If the count is latched or read before this time, the count value will not reflect the new count just written. The operation of Null Count is shown in Figure 12. If both count and status of a counter are latched, the first read operation of that counter will return latched status, regardless of which was latched first. The next one or two reads (depending on whether the counter is programmed for one or two type counts) return latched count. Subsequent reads return unlatched count. Command 07 06 05 04 03 02 01 Do 0 0 0 1 0 Read back count and status of Counter 0 Count and status latched for Counter 0 Status latched for Counter 1 0 Description Results 1 1 1 1 1 0 0 1 0 0 Read back status of Counter 1 1 1 1 0 1 1 0 0 Read back status of Counters 2, 1 Status latched for Counter 2, but not Counter 1 1 1 0 1 1 0 0 0 Read back count of Counter 2 Count latched for Counter 2 1 1 0 0 0 1 0 0 Read back count and status of Counter 1 Count latched for Counter 1, but not status 1 1 1 0 0 0 1 0 Read back status of Counter 1 Command ignored, status already latched for Counter 1 Figure 13. Read-Back Command Example 6-53 intJ 82C54 CS RD WR At Ao 0 1 0 0 0 Write into Counter 0 0 1 0 0 1 Write into Counter 1 0 1 0 1 0 Write into Counter 2 0 1 0 1 1 Write Control Word 0 0 1 0 0 Read from Counter 0 0 0 1 0 1 Read from Counter t 0 0 1 1 0 Read from Counter 2 0 0 1 1 1 No-Operation (3-State) 1 X X 1 1 X X X X No-Operation (3-State) 0 This allows the counting sequence to be synchronized by software. Again, OUT does not go high until N + 1 ClK pulses after the new count of N is written. If an initial count is written while GATE = 0, it will still be loaded on the next ClK .pulse. When GATE goes high, OUT will go high N ClK pulses later; no ClK pulse is needed to load the Counter as this has already been done. cw .. ,o lSB=4 ~~r-----------~-elK No-Operation (3-State) GATE ------------~- Figure 14. Read/Write Operations Summary OUT ::::I .~ _ _ _ _ _ _ _ _ _ ____l I I I I I : I ~ I : I ~ I ~ I ~~ I ~~ I N N N N Mode Definitions The following are defined for use in describing the operation of the 82C54. elK ClK PULSE: a rising edge, then a falling edge, in that order, of a Counter's ClK input. TRIGGER: a rising edge of a Counter's GATE input. COUNTER lOADING: the transfer of a count from the CR to the CE (refer to the "Functional Description") GATE OUT MODE 0: INTERRUPT ON TERMINAL COUNT -J,- :::-:=JI..______________ elK Mode 0 is typically used for event counting. After the Control Word is written, OUT is initially low, and will remain low until the Counter reaches zero. OUT then goes high and remains high until a new count or a new Mode 0 Control Word is written into the Counter. -J,- GATE - - - - - - - - - - - - - OUT =-:JI..______________ I I I I I ~ I : I ~ I : I ~ I ~ I ~~ I N N N N 231244-8 If a new count is written to the Counter, it will be loaded on the next ClK pulse and counting will continue from the new count. If a two-byte count is written, the following happens: NOTE: The Following Conventions Apply To All Mode Timing Diagrams: 1. Counters are programmed for binary (not aCD) counting and for Reading/Writing least significant byte (LSB) only. 2. The counter is always selected (CS always low). 3. CW stands for "Control Word"; CW = 10 means a control word of to, hex is written to the counter. 4. LSB stands for "Least Significant Byte" of count. 5. Numbers below diagrams are count values. The lower number is the least significant byte. The upper number is the most significant byte. Since the counter is programmed to Read/Write LSB only, the most significant byte cannot be read. N stands for an undefined count. Vertical lines show transitions between count values. 1) Writing the first byte disables counting. OUT is set low immediately (no clock pulse required). Figure 15. Mode 0 GATE = 1 enables counting; GATE = 0 disables counting. GATE has no effect on OUT. After the Control Word and initial count are written to a Counter, the initial count will be loaded on the next ClK pulse. This ClK pulse does not decrement the count, so for an initial count of N, OUT does not go high until N + 1 ClK pulses after the initial count is written. 2) Writing the second byte allows the new count to be loaded on the next ClK pulse. 6-54 82C54 MODE 1: HARDWARE RETRIGGERABLE ONE-SHOT MODE 2: RATE GENERATOR This Mode functions like a divide-by-N counter. It is typicially used to generate a Real Time Clock interrupt. OUT will initially be high. When the initial count has decremented to 1, OUT goes low for one ClK pulse. OUT then goes high again, the Counter reloads the initial count and the process is repeated. Mode 2 is periodic; the same sequence is repeated indefinitely. For an initial count of N, the sequence repeats every N ClK cycles. OUT will be initially high. OUT will go Iowan the ClK pulse following a trigger to begin the one-shot pulse, and will remain low until the Counter reaches zero. OUT will then go high and remain high until the ClK pulse after the next trigger. After writing the Control Word and initial count, the Counter is armed. A trigger results in loading the Counter and setting OUT Iowan the next ClK pulse, thus starting the one-shot pulse. An initial count of N will result in a one-shot pulse N ClK cycles in duration. The one-shot is retriggerable, hence OUT will remain low for N ClK pulses after any trigger. The one-shot pulse can be repeated without rewriting the same count into the counter. GATE has no effect on OUT. GATE = 1 enables counting; GATE = 0 disables counting. If GATE goes low during an output pulse, OUT is set high immediately. A trigger reloads the Counter with the initial count on the next ClK pulse; OUT goes low N ClK pulses after the trigger. Thus the GATE input can be used to synchronize the Counter. After writing a Control Word and initial count, the Counter will be loaded on the next ClK pulse. OUT goes low N ClK Pulses after the initial count is written. This allows the Counter to be synchronized by software also. If a new count is written to the Counter during a oneshot pulse, the current one-shot is not affected unless the Counter is retriggered. In that case, the Counter is loaded with the new count and the oneshot pulse continues until the new count expires. CW;;12 CW=14 LSB=3 l$B=3 WlI~r----------------- ~ ~r------------------- eLK eLK GATE GATE ------;n--c-------~n:== -------------------------- OUT OUT CW=14 L5B=3 WlI~~------------- cw= 12 lSB =3,--___________________ WlIl..JU elK eLK GATE GATE -------In----ln---------OUT OUT r =.J ==.i Ll ININININI~I~I:I:I~I:I:I INININININI~I~I:I~I~I:I:I eLK GATE eLK GATE -------;n--------;n== OUT -------------------------- ~ u ININININI~I:I:I:I:I~I~I 231244-10 OUT I NI NI NI NI I ~ I : I : I ~~ I ~~ I ~ I ~ I NOTE: N A GATE transition should not occur one clock prior to terminal count. 231244-9 Figure 16. Mode 1 Figure 17. Mode 2 6-55 inter 82C54 OUT will be high for (N (N -1 )/2 counts. Writing a new count while counting does not affect the current counting sequence. If a trigger is received after writing a new count but before the end of the current period, the Counter will be loaded with the new count on the next ClK pulse and counting will continue from the new count. Otherwise, the new count will be loaded at the end of the current counting cycle. In mode 2, a COUNT of 1 is illegal. CW=16 + 1)/2 counts and low for lse"'4r-..-_ _ _~...,.....~-~-.,___- WliLJU MODE 3: SQUARE WAVE MODE 1 Mode 3 is typically used for Baud rate generation. Mode 3 is similar to Mode 2 except for the duty cycle of OUT. OUT will initially be high. When half the initial count has expired, OUT goes low for the remainder of the count. Mode 3 is periodic; the sequence above is repeated indefinitely. An initial count of N results in a square wave with a period of N ClK cycles. ~I N1 N·I CW",,6 N 1 : I: 1 :. I: 1 : ·1: I: 1 : 1: 1 : 1 LSB=5r-..----'_ _ _ _ _ _ _'----_ _ Wl!L...JLJ GATE -------------~- IN 1 N1 N1 GATE = 1 enables counting; GATE = 0 disables counting. If GATE goes low while OUT is low, OUT is set high immediately; no ClK pulse is required. A trigger reloads the Counter with the initial count on the next ClK pulse. Thus the GATE input can be used to synchronize the Counter. N 1: 1 : 1 : 1 : 1 : 1 : 1 : 1 : 1 : I: 1 CW .. 16 LS8=4r----_--------'----WI!~ GATE OUT After writing a Control Word and initial count, the Counter will be loaded on the next ClK pulse. This allows the Counter to be synchronized by software also. IN 1 N1 N1 N1 : 1 : 1 : 1 : 1 : 1 : 1 : I: I: 1 :1 231244-11 NOTE: A GATE transition should not occur one clock prior to terminal count. Writing a new count while counting does not affect the current counting sequence. If a trigger is received after writing a new count but before the end of the current half-cycle of the square wave, the Counter will be loaded with the new count on the next ClK pulse and counting will continue from the new count. Otherwise, the new count will be loaded at the end of the current half-cycle. Figure 18. Mode 3 MODE 4: SOFTWARE TRIGGERED STROBE OUT will be initially high. When the initial count expires, OUT will go low for one ClK pulse and then go high again. The counting sequence is "triggered" by writing the initial count. Mode 3 is implemented as follows: Even counts: OUT is initially high. The initial count is loaded on one ClK pulse and then is decremented by two on succeeding ClK pulses. When the count expires OUT changes value and the Counter is reloaded with the initial count. The above process is repeated indefinitely, GATE = 1 enables counting; GATE == 0 disables counting. GATE has no effect on OUT. After writing a Control Word and initial count, the Counter will be loaded on the next ClK pulse. This ClK pulse does not decrement the count, so for an initial count of N, OUT does not strobe low until N + 1 ClK pulses after the initial· count is written. Odd counts: OUT is initially high. The initial count minus one (an even number) is loaded on one ClK pulse and then is decremented by two on succeeding ClK pulses. One ClK pulse after the count expires, OUT goes low and the Counter is reloaded with the initial count minus one. Succeeding ClK pulses decrement the count by two. When the count expires, OUT goes high again and the· Counter is reloaded with the initial count minus one. The above process is repeated indefinitely. So for odd counts, If a new count is written during counting, it will be loaded on the next ClK pulse and counting will continue from the new count. If a two-byte count is written, the following happens: 6-56 intJ 82C54 1) Writing the first byte has no effect on counting. After writing the Control Word and initial count, the counter will not be.loaded until the ClK pulse after a trigger. This ClK pulse does not decrement the count, so for an initial count of. N, OUT does not strobe low until N + 1 ClK pulses after a trigger. 2) Writing the second byte allows the new count to be loaded on the next ClK pulse. This allows the sequence to be "retriggered" by software. OUT strobes low N + 1 ClK pulses after the new count of N is written. CW:::1B A trigger results in the Counter being loaded with the initial count on the next ClK pulse. The counting sequence is retriggerable. OUT will not strobe low for N + 1 ClK pulses after any trigger. GATE has no effect on OUT. lSB",3 ~~~---------------eLK If a new count is written during counting, the current counting sequence will not be affected. If a trigger occurs after the new count is written but before the current count expires, the Counter will be loaded with the new count on the next ClK pulse and counting will continue from there. GATE OUT u =-=-.1 I I I I I : I ~ I ~ I g I ~~ I ~~ I :~ I N N CW .. 111 N N LSB=3i-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ Wii~ CW=IA WI> LSB=3i-_ _ _ _ _ _ __ "1...Jl.--.1 eLK GATE --------------' GATE OUT~ -------l/r--------lfL:.= OUT 1N 1 N 1 CW::1A Wii eLK 1 N 1 N 1 : 1 : 1 : 1 : 1 ~~ 1 :1 LSB"'3,.--_ _ _ _ _ _ _ _ __ "1...Jl.--.1 eLK GATE , - - - - - - - - - , - - - - - - - - - - OUT N =:J GATE LJ N N -------In=.l/l--- ------- -- OUT~ I I I I I ~ I ~ I ~ I ~ I ~ U I ~: I N - - N 231244-12 Figure 19. Mode 4 MODE 5: HARDWARE TRIGGERED STROBE (RETRIGGERABLE) GATE OUT will initially be high. Counting is triggered by a rising edge of GATE. When the initial count has expired, OUT will go low for one ClK pulse and then go high again. OUT --------m----------·\f-c== . u ~ 1N 1 N 1 N 1 N 1 N 1 : I : 1 : 1 : 1 ~~ 1 ~~ 1 ~ I. ~ 1 231244-13 Figure 20. Mode 5 6-57 inter 82C54 Signal Status Modes Low Or Going Low 0 Disables counting 3 - Initiates counting Enables counting Initiates counting Enables counting - Enables counting 1) Disables counting 2) Sets output immediately high Disables counting 5 - Enables counting 1) Initiates counting 2) Resets output after next clock 1) Disables counting 2) Sets output immediately high 4 High Programming - - 1 2 Operation Common to All Modes Rising Initiates counting When a Control Word is written to a Counter, all Control logic is immediately reset and OUT goes to a known initial state; no ClK pulses are required for this. GATE The GATE input is always sampled on the rising edge of ClK. In Modes 0, 2, 3, and 4 the GATE input is level sensitive, and the logic level is sampled on the rising edge of ClK. In Modes 1, 2, 3, and 5 the GATE input is rising-edge sensitive. In these Modes, a rising edge of GATE (trigger) sets an edge-sensitive flip-flop in the Counter. This flip-flop is then sampled on the next rising edge of ClK; the flip-flop is reset immediately after it is sampled. In this way, a trigger will be detected no matter when it occurs-a high logic level does not have to be maintained until the next rising edge of ClK. Note that in Modes 2 and 3, the GATE input is both edge- and level-sensitive. In Modes 2 and 3, if a ClK source other than the system clock is used, "GATE should be pulsed immediately following WR of a new count value. - Figure 21. Gate Pin Operations Summary MODE 0 COUNTER MIN MAX COUNT COUNT 1 0 1 1 0 2 2 0 3 2 0 4 1 0 New counts are loaded and Counters are decremented on the falling edge of ClK. The largest possible initial count is 0; this is equivalent to 2 16 for binary counting and 104 for BCD counting. The Counter does not stop when it reaches zero. In Modes 0, 1, 4, and 5 the Counter "wraps around" to the highest count, either FFFF hex for binary counting or 9999 for BCD counting, and continues counting. Modes 2 and 3 are periodic; the Counter reloads itself with the initial count and continues counting from there. NOTE: o is equivalent to 2 16 for binary counting and 104 for BCD counting Figure 22. Minimum and Maximum initial Counts 6-58 intJ 82C54 • Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias....... O°C to 70°C Storage Temperature ............ -65° to + 150°C Supply Voltage ......... ~ ......... - 0.5 to + 8.0V Operating Voltage .................. + 4V to + 7V Voltage on any Input .......... GND - 2V to + 6.5V Voltage on any Output .. GND-0.5VtoVee + 0.5V Power Dissipation ........................ 1 Watt D.C. CHARACTERISTICS (TA =O°C to 70°C, Vee=5V± 10%, GND= OV) (TA = -40°C to +85°C for Extended Temperature)· Symbol Min Max Units Input low Voltage -0.5 0.8 V VIH Input High Voltage 2.0 Output low Voltage Vee + 0.5 0.4 V VOL VOH Output High Voltage IlL IOFL Output Float leakage Current lee Vee Supply Current 20 IJ-A mA leess Vee Supply Current-Standby 10 IJ-A ClK Freq = DC CS = HIGH. AlllnputslData Bus HIGH All Outputs Floating leess1 Vee Supply Current-Standby 150 IJ-A ClK Freq = DC CS = HIGH. All Other Inputs, 1/0 Pins = low, Outputs Open VIL Parameter 3.0 Vee - 0.4 Input load Current ±2.0 ±10 Test Conditions V IOL = 2.5 mA V V IOH = -2.5 mA IOH = -100 p.A IJ-A VIN=Vee toOV VOUT=Vee to O.OV 8MHz 82C54 Clk Freq= 1OMHz 82C54-2 CIN Input Capacitance 10 pF fe = 1 MHz CliO 1/0 Capacitance 20 pF COUT Output Capacitance 20 pF Unmeasured pins returned to GND(5) A.C. CHARACTERISTICS (TA = O°C to 70°C, Vee = 5V ± 10%, GND =OV) (TA = -40°C to + 85°C for Extended Temperature) BUS PARAMETERS (Note 1) READ CYCLE Symbol 82C54-2 82C54 Parameter Min Max Min Units Max tAR Address Stable Before RD! ns CS Stable Before RD ! 45 0 30 tSR 0 ns tRA Address Hold Time After RD t 0 0 ns tRR RD Pulse Width 150 95 tRo Data Delay from RD ! 120 85 ns tAD Data Delay from Address 220 185 ns tOF RD t to Data Floating Command Recovery Time tRV NOTE: 1. Ae timings measured at VOH = 2.0V, VOL = O.BV. 5 200 6-59 90 5 165 ns 65 ns ns inter 82C54 A.C. .CHARACTERISTICS (Continued) WRITE CYCLE Symbol Min tAW 82C54-2 82C54 Parameter . Address Stable Before WR .J.. tsw CS Stable Before WR .J.. tWA ·tww Address Hold Time After WR WR Pulse Width tow Data Setup Time Before WR two Data Hold Time After WR tRY Command Recovery Time t Units Max Min 0 0 ns 0 0 ns .0 0 ns 150 95 ns 120 95 ns 0 0 ns 200 165 ns t t Max CLOCK AND GATE Symbol 82C54-2 - 82C54 Parameter Min Max Min Max DC 100 30(3) DC Units ns tClK Clock Period tPWH High Pulse Width· 125 60(3) tPWl low Pulse Width 60(3) TR Clock Rise Time 25 25 ns tF C.iock Fall Time 25 25 ns tGW ,Gate Width High 50 50 ns tGl Gate Width low 50 50 ns tGS Gate Setup Time to ClK 50 50(2) 40 50(2) ns . tGH Too tOOG twc t Gate Hold Time After ClK t Output Delay from ClK .J.. Output Delay from Gate .J.. Gate Delay for Sampling(4) two OUT Delay from Mode Write tCl ClK Set Up for Count latch ns ns 150 120 100 ns 100 ns 0 55 0 55 ns -5 50 -5 40 ns 240 ns 40 ns . ClK Delay for loading(4) tWG ns 50(3) 260 -40 45 --'40 NOTES: 2, In Modes 1 and 5 triggers are sampled on each rising clock edge. A second trigger within 120 ns (70 ns for the 82C54-2) of the rising clock edge may not be detected, . .. 3, low-going glitches that violate tpWH; tpWl may cause errors requiring counter reprogramming. 4. Except for Extended Temp., See Extended Temp. A.C. Characteristics below. 5. Sampled not 100% tested. TA = 25°C. 6. If ClK present at Twe min··then Count·equals· N + 2 CLKpulses, Twe max equals Count N + 1 ClK pulse. TWC min to, TWC maX, count will be either N + 1 or N + 2 ClK pulses. . . 7. In Modes 1 and 5, if GATE is present when writing a new Count value, at TWG min Counter will not be triggered, at TWG max Counter will be triggered. 8.. lf ClK present when writing a Counter latch or Read8ack Command, at TCl min ClK will be reflected in count value· latched, at TCl max ClK will not be reflected in the count value latched. Writing a Counter Latch or Read8ack Command between TCL min and TWL max will result in a latched count vallue which is .± one least s.ignificant bit ' EXTENDED TEMPERATURE (TA = -40·Cto Symbol + 85·C for Extended Temperature) 82C54-2 82C54 Parameter Units Min Max Min Max twc ClK Delay for loading -25 25 -25 25 ns tWG Gate Delay for Sampling -25 25 -25 25 ns 6-60 inter 82C54 WAVEFORMS WRITE A,., "'--IAW----" CS DATA BUS WA 231244-14 READ AG·. I •• cs DATA B U S - - - 231244-15 l ~W_R~~_~_r__'~~_\~_~______~I· R_EC__ OVE_RY_ _ _ _ __ 231244-16 6-61 . 82C54 CLOCK AND GATE ----.:.......:/1"1 CUI • GATE - - - _...._ _ _....;....:._11 OUTPUT 0 231244-17 • Last byte of count being written A.C. TESTING INPUT, OUTPUT WAVEFORM . > u=x A.C. TESTING LOAD CIRCUIT INPUT/OUTPUT 2.0 TEST POINTS 0.45 _ d.. < )C. _2.0 0.8 _ . 231244-18 A.C. Testing: Inputs are driven at2.4V for. a logic "1" and 0.45V for a logic "0." Timing measurements are made at 2.0V for a logic "I" and 0.8V for a logic "0." 231244-19 CL = 150 pF CL includes jig capacitance 6-62 8255A/8255A-5 PROGRAMMABLE PERIPHERAL INTERFACE Compatible 8255A-5 • 24MCS-85™ Programmable 1/0 Pins • Completely TTL Compatible • Fully Compatible with Intel • Microprocessor Families Improved Timing Characteristics • Direct Bit Set/Reset Capability Easing • Control Application Interface Reduces System Package Count • Improved Driving Capability • Available inDCEXPRESS • - Standard·Temperature Range - Extended Temperature Range • 40 Pin DIP Package or 44 Lead PLCC (See Intel Packaging: Order Number: 231369) The Intel 8255A is a general purpose programmable I/O device designed for use with Intel microprocessors. It has 24 I/O pins which may be individually programmed in 2 groups of 12 and used in 3 major modes of operation. In the first mode (MODE 0), each group of 12 I/O pins may be programmed in sets of 4 to be input or output. In MODE 1, the second mode, each group may be programmed to have 8 lines of input or output. Of the remaining 4 pins, 3 are used for handshaking and interrupt control signals. The third mode of operation (MODE 2) is a bidirectional bus mode which uses 8 lines for a bidirectional bus, and 5 lines, borrowing one from the other group, for handshaking. POWER { _ + 5 V SUPPLIES GROUP A _GND GROUP A CONTROl 'OAT A IS) JV----, , ' -_ _/ ". PC1- PC 4 BI-DIRECTIONAL OATA BUS DATA BUS BuFFER 8-BIT INTERNAL ". OATA BUS I'-r-_~/ pe3-P<:O OI5--_.q ",,---.q READ GROOP WRITE A , -_ _.j c~~~ COH~AOL K:==~ GROIJP 1/'----".1 B "lOT B (81, Ao---.j "SET---.j 231308-2 Figure 2. Pin Configuration 231308-1 Figure 1. 8255A Block Diagram 6-63 November 1987 Order Number: 231308·002 inter 8255A/8255A-5 CPU Address and Control busses and in turn, issues commands to both of the Control Groups. 8255A FUNCTIONAL DESCRIPTION General The 8255A is a programmable peripheral interface (PPI) device designed for use in Intel microcomputer systems. Its function is that of a general purpose I/O component to interface peripheral equipment to the microcomputer system bus. The functional configuration of the 8255A is programmed by the system software so that normally no external logic is necessary to interface peripheral devices or structures. Chip Select. A "low" on this input pin enables the communication between the 8255A and the CPU. Read. A "low" on this input pin enables the 8255A to send the data or status information to the CPU on the data bus. In essence, it allows the CPU to "read from" the 8255A. Data Bus Buffer This 3-state bidirectional 8-bit buffer is used to interface the 8255A to the system data bus. Data is transmitted or received by the buffer upon execution of input or output instructions by the CPU. Control words and status information are also transferred through the data bus buffer. Write. A "low" on this input pin enables the CPU to write data or control words into the 8255A. (AO and A1) Read/Write and Control Logic Port Select 0 and Port Select 1. These input signals, in conjunction with the RD and WR inputs, control the selection of one of the three ports or the control word registers. They are normally connected to the least significant bits of the address bus (Ao and Al). The function of this block is to manage all of the internal and external transfers of both Data and Control or Status words. It accepts inputs from the POWER SUPf'l.'" [ - - ·5. --aND I/~--" I'v--~/ K==~ I/L---".I ,:~~p a "0 PA,-pAo 110 PBrPBo IS: 231308-3 Figure 3. 8255A Block Diagram Showing Data Bus Buffer and Read/Write Control Logic Functions 6-64 intJ 8255A/8255A-5 Each of the Control blocks (Group A and Group B) accepts "commands" from the Read/Write Control Logic, receives "control words" from the internal data bus and issues the proper commands to its associated ports. 8255A BASIC OPERATION A1 Ao RD WR CS Input Operation (READ) 0 0 0 1 0 Port A --+ Data Bus 0 1 0 1 0 Port B --+ Data Bus 1 0 0 1 0 Port C. --+ Data Bus Control Group A-Port A and Port C upper (C7 -C4) Control Group B-Port B and Port Clower (C3-CO) Output Operation (WRITE) 0 0 1 0 0 Data Bus --+ PortA 0 1 1 0 0 Data Bus --+ Port B 1 0 1 0 0 Data Bus --+ PortC 1 1 1 0 0 Data Bus --+ Control The Control Word Register can Only be written into. No Read operation of the Control Word Register is allowed. Ports A, B, and C The 8255A contains three 8-bit ports (A, B, and C). All can be configured in a wide variety of functional characteristics by the system software but each has its own special features or "personality" to further enhance the power and flexibility of the 8255A. Disable Function X X X X 1 1 1 X X 0 1 0 Illegal Condition 1 1 0 Data Bus --+ 3-State Data Bus --+ 3-State Port A. One 8-bit data output latch/buffer and one 8-bit data input latch. (RESET) Port B. One 8-bit data input/output latch/buffer and one 8-bit data input buffer. Reset A "high" on this input clears the control register and all ports (A, B, C) are set to the input mode. Port C. One 8-bit data output latch/buffer and one 8-bit data input buffer (no latch for input). This port can be divided into two 4-bit ports under the mode control. Each 4-bit port contains a 4-bit latch and it can be used for the control signal outputs and status Signal inputs in conjunction with ports A and B. Group A and Group B Controls The functional configuration of each port is programmed by the systems software. In essence, the CPU "outputs" a control word to the 8255A. The control word contains information such as "mode", "bit set", "bit reset", etc., that initializes the functional configuration of the 8255A. 6-65 8255A/8255A-5 POWER SUPPLIES {- ' " . _ _ GND CONTROL .. GROUP PORT GROUP 1'<------, ,B, 0/0 I'v----,/ PA 7~PAO '''-_-0/ PC7-PC4 '''-_-0/ pel-PCO '/0 BI-DIRECT10NAl DATA BUS 07-00 ,,---,/I DATA BUS BUFFER INTERNAL DATA BUS 110 RD WA WRITE CONTROL " lOGIC GROUP GROUP B PORT B B CONTROL '. 0/0 PS,-PDO ,81 C,-------' 231308-4 Figure 4. 8225A Block Diagram Showing Group A and Group B Control Functions Pin Names Pin Configuration PA' PA' PA2 PAS PAl PAS PA' WR cs GND D. A. 0, AO 0, 0, 8255A D. PC' 07- 0 0 Data Bus (Bi-Directional) RESET Reset Input CS Chip Select RD Read Input WR Write Input AO, A1 Port Address PA7-PAO PortA (BIT) PB7-PBO Port B (BID PC7-Pca Port C (BIT) Vee +5 Volts GND °Volts PBll 19 PB2:- 8255A OPERATIONAL DESCRIPTION 20 231308-5 Mode Selection There are three basic modes of operation that can be selected by the system software: 6-66 inter 8255A/8255A-5 Mode O-Basic Input/Output CONTROL WORD lDj D, Mode 1-Strobed Input/Output Mode 2-Bi-Directional Bus D51 Dj D1D,l D,l DoJ J L,J When the reset input goes "high" all ports will be set to the input mode (i.e., all 24 lines will be in the high impedance state). After the reset is removed the 8255A can remain in the input mode with no additional initialization required. During the execution of the system program any of the other modes may be selected using a single output instruction. This allows a single 8255A to service a variety of peripheral devices with a simple software maintenance routine. / GROUP B \ PORT C (LOWER) 1 ",INPUT 0'" OUTPUT '----- PORT B 1" INPUT '------- 0= OUTPUT MODE SELECTION O=MOOEO The modes for Port A and Port B can be separately defined, while Port C is divided into two portions as required by the Port A and Port B definitions. All of the output registers, including the status flip-flops, will be reset whenever the mode is changed. Modes may be combined so that their functional definition can be "tailored" to almost any I/O structure. For instance; Group B can be program mod in Mode 0 to monitor simple switch closinrJs or display computational rosults, Group /\ could be programmed in Mode 1 to monitor a koyboard or tapo read or on an interrupt-drivon basis. l=MODE 1 / GROUP A \ PORT C (UPPER) 1 = INPUT 0" OUTPUT PORTA 1 '" INPUT 0= OUTPUT MODE SELECTION OO=MDDEO 01 => MODE 1 lX= MODE 2 ADDRESS BUS -' MODE SET FlAG 1 "ACTIVE 231308-7 ~.,--.- Figure 6. Mode Definition Format The mode definitions and possible mode combinations may seem confusing at first but after a cursory review of the complete device operation a simple, logical I/O approach will surface. The design of the 8255A has taken into account things such as officient PC board layout, control signal definition vs PC layout and complete functional flexibility to support almost any peripheral device with no external logic. Such design represents the maximum use of the available pins. MOO!: 1.- -r'"-:?'g:::--1I0'rr'lllrr-l----rlllr-TTII'---:jy*-'>:'\: PS1"PBO C~~TI7gL C~~TI~gL PArPAg Single Bit Set/Reset Feature Any of the eight bits of Port C can be Set or Reset using a single OUTput instruction. This feature reduces software requirements in Control-based applications. 231308-6 Figure 5_ Basic Mode Definitions and Bus InterfaCe 6·67 8255A/8255A-5 This function allows the Programmer to disallow or allow a specific I/O device to interrupt the CPU without affecting any other device in the interrupt structure. CONTROL WORD I 0 0, 0 0, 0,-[ 0,1 0.1 Dol I I I 7 1 I I X 5 1 X I Lr I X I INTE flip-flop definition: BIT SET/RESET 1 = SET 0" RESET (BIT-SET)-INTE is set-Interrupt enable DON'T CARE (BIT-RESET)-INTE is RESET-Interrupt disable BIT SELECT 01234567 0101010180 001100111 8 1 000011118,1 BIT SET/RESET FLAG 0= ACTIVE I 231308-8 Figure 7. Bit Set/Reset Format Whim Port C is being used as status/control for Port A or B, these bits can be set or reset by using the Bit Set/Reset operation just as if they were data output ports. NOTE: All Mask flip-flops are automatically reset during mode selection and device Reset. Operating· Modes MODE 0 (Basic Input/Output). This functional configuration provides simple input and output operations for each of the three ports. No "handshaking" is required, data is simply written to or read from a specified port. Mode 0 Basic Functional Definitions: • Two 8-bit ports and two 4-pit ports. • Any port can be input or output. Interrupt Control Functions • Outputs are latched. • Inputs are not latched. • 16 different Input/Output configurations are possible in this Mode. When the 8255A is programmed to operate in mode 1 or mode 2, control signals are provided that can be used as interrupt request inputs to the CPU. The interrupt request signals, generated from port C, can be inhibited or enabled by setting or resetting the associated INTE flip-flop, using the bit set/reset function of port C. MODE 0 (BASIC INPUT) ----nu -' .... ... -- !-tHR _ I-tlf'CINPUT F--tAR~ -tRA~1 CS,Al.AO ° ,° 1 0- - - - ----_.-t-( --'RO 'OF 231308-9 6-68 8255A/8255A-5 MODE 0 (BASIC OUTPUT) fwD ~------'wA------~ CS,A1.AO L . -~- OUTPUT 231308-10 MODE 0 PORT DEFINITION A Group B Group A B # Port B PortC (Lower) 0 OUTPUT OUTPUT OUTPUT 1 OUTPUT INPUT OUTPUT 2 INPUT OUTPUT D4 D3 D1 Do PortA PortC (Upper) 0 0 0 0 OUTPUT OUTPUT .. _... 0 0 0 1 OUTPUT 0 0 1 0 OUTPUT 0 0 1 1 OUTPUT OUTPUT 3 INPUT INPUT 0 1 0 0 OUTPUT INPUT 4 OUTPUT OUTPUT 0 1 0 1 OUTPUT INPUT 5 OUTPUT 0 1 1 0 OUTPUT INPUT 6 INPUT 0 1 1 1 OUTPUT INPUT 7 INPUT INPUT -- ._- ~--. "------------ ~-----. --_. ------- ..... --- .... _-- INPUT ------ OUTPUT -_ ... _- 1 0 0 0 INPUT OUTPUT 8 OUTPUT OUTPUT 1 0 0 1 INPUT OUTPUT 9 OUTPUT INPUT .....•.... - 1 0 1 0 INPUT OUTPUT 10 INPUT OUTPUT 1 0 1 1 INPUT OUTPUT 11 INPUT INPUT 1 1 0 0 INPUT INPUT 12 OUTPUT OUTPUT 1 1 0 1 INPUT INPUT 13 OUTPUT INPUT 14 INPUT 15 INPUT - .---- ... --------- --'--"--. .... _----_.- - - - _ .._--- --- 1 1 1 0 INPUT INPUT 1 1 1 1 INPUT INPUT 6-69 . OUTPUT - ----- ---- INPUT 8255A/8255A·5 MODE CONFIGURATIQNS CONTROL WORD #2 CONTROL WORD #0 0, I D. D. D. 03 O2 0, 07 DO 1 1 10 1 10 1 0 10 06 D5 04 0 0 03 02 I I I I I I I' I I I 8 A 8255A C{ 4 c{ · 8 A 8255A · 00 0 4 8 B B Pa.,.PBO 4 4 . ,8 I 231308-12 231308-11 CONTROL WORD #1 07 06 05 Dol CONTROL WORD #3 03 02 0, DO 07 I I I I I I I I, I 06 Os 04 03 8 A 8 A 8255A 8255A C{ . · DO 01 I I I I I I I, 1, I 0 · 02 B 4 . ,4 . C{ . 7 8 4 I ,4 8 B 231308-13 231308-14 CONTROL WORD . . 01 Dfi 05 04 CONTROL WORD #8 D3 02 0, 00 0 0 07 II I II II II 0 0 A 06 Os 04 03 · 02 DO 0, IIIIIII II 0 0 8 A 8255A · pa.,·pBo . ,8 I 8255A c{ B 4 . 14 8 . C{ B 231308-15 4 4 8 231308-16 6-70 intJ 8255A/8255A-5 CONTROL WORD #5 CONTROL WORD #9 171~1~1~171~1:1~1 8 A A • 825sA 4 C{ . . I 4 c{ 4 8 B 4 8 B 231308-17 231308-18 CONTROL WORD #6 CONTAOl WORD #10 I~' ID: ID: I:' I~31 ~ I ~' D7 06 DS 04 .03 02 01 A ---- -- _/_11. _..• "A,."A" 8255A . . 231308-19 DC 4 . I £B 231308-20 CONTROL WORD #7 Os 4 c{ B 06 8 A 8255A 07 £8 8255A CONTROL WORD #11 D3 02 D1 DO A r---F--- AI---f-=--- 8255A B255A 4 c{ . B C (4 {I---;--'-----+ PC,-pc. .----r-- PC3 -PCo I 8 B 1+---;-"-- PB,-POO 231308-21 231308-22 6-71 8255A/8255A-5 CONTROL WORD #12 CONTROL WORD #14 0, D. 05 0 0 D. 03 O2 0, ,Do 1, I I I, 1, I ~ 1, 1 I A • 0 ,8 A J 8255A 8255A C{ B 4 . 4 8 . c{ PB,.PD. . J . J B 231308-23 06 05 04 4 8 CONTROL WORD #15 03 02 0, DO 07 l' I I I I I I l' I 0 ,4 231308-24 CONTROL WORD #13 07 ,8 0 Dli 04 03 02 0, 00 _ l' I I l' 1, I l' l' I 0 A 06 0 0 0 8 A· 8255A J' II ·9255A c{ B 4 . ,4 8 . c{ B 231308-25 4 4 8 231308-26 Operating Modes Input Control Signal Definition MODE 1 (Strobed Input/Output). This functional configuration provides a means for transferririg I/O data to or from a specified port in conjunction with strobes or "handshaking" signals. In mode 1, port A and port B use the lines on port C to generate. or accept these "handshaking" signals. STB (Strobe Input). A "lOW" on this input loads . data into the input latch. Mode 1 Basic Functional Definitions: • Two Groups (Group A and Group B) • Each group contains one 8-bit data port and one 4-bit control/data port. • The 8-bit data port can be either input or output. Both inputs and outputs are .Iatched. • The 4·bit port is used for control and status of the 8-bit data port. IBF (Input Buffer Full F/F) A "high" on this output indicates that the data has been loaded into the input latch; in essence, an acknowledgement. IBF is set by STB input being low and is reset by the rising edge of the RD input. INTR (Interrupt Request) .A "high" on this output can· be used to interrupt the CPU when· an input device is requesting service. INTR is set by the STB is a "one", IBF is a "one" and INTE is a "one". It is reset by the falling edge of RD. This procedure allow~ an input device to request service from the CPU by simply strobing its data into the port. 6-72 8255A/8255A-5 INTE A INTE B Controlled by bit set/reset of PC4. Controlled by bit set/reset of PC2. MODE 1 (PORT A) MODE 1 (PORT B) CONTROL WORD 2 PC" 7 --+--- I/O 231308-27 231308-28 Figure 8. MODE 1 Input I ,~ !.IIL fa .. . V !. "''''}l IBF tSIT \ ·~-I r) J INTR I_'R"-~) / _""_1 INPUT I nOM "I.HII'11i UAL --- --------------------- 1- --- -.-.IPS--~---- 231308-29 Figure 9. MODE 1 (Strobed Input) 6-73 8255A/8255A-5 device has accepted data transmitted by the .CPU. INTR is set when ACK is a "one", OBF is a "one", and INTE isa "one". It is reset by the falling edge of WR. Output Control Signal Definition OBF (Output Buffer Full F/F). The OBF output will go "low" to indicate that the CPU has written data out to the specified port. The OBF F/F will be set by the rising edge of the WR input and reset by ACK input being low. INTE A Controlled by bit set/reset of PCs. ACK (Acknowledge Input). A "low" on this input informs the 8255A that the data from port A or port B has been accepted. In essence, a response from the peripheral device indicating that it has received the data output by the CPU. INTE B Controlled by bit set/reset of PC2. INTR (Interrupt Request). A "high" on this output can be used to interrupt the CPU when an output MODE 1 (PORT A) MODE 1 (PORT B) PA,·P"o B CONTflOl CONTROL WORD wonn PC, 0'B'f1J r--" I INTE I I __ B Jr PC, INTRB WR_ 231308-30 231308-31 Figure 10. MODE 1 Output WIl \ \ I OBf INTR . twrT- ~} f------------ 1 AO B - - --- 7/) // -,.d-tA,T- ACK OUTPUT H-twB 231308-32 Figure 11. MODE 1 (Strobed Output) 6-74 infef 8255A/8255A-5 PArPAo PC, STBA PCs !BFA PC, INTRA PC J 2 PC6. 7 ---I--- INTRA 2 I/O PC4,5 -----r-- I/O PC, INTRa PC, 1BFa PCo INTRa 231308-34 231308-33 PORT A-(STROBED OUTPUT) PORT B-(STROBED INPUT) PORT A-(STROBED INPUT) PORT B-(STROBED OUTPUT) Figure 12. Combinations of MODE 1 Combinations of MODE 1 Bidirectional Bus I/O Control Signal Definition Port A and Port B can be individually defined as input or output in MODE 1 to support a wide variety of strobed 110 applications. INTR (Interrupt Request). A high on this output can be used to interrupt the CPU for both input or output operations. Operating Modes Output Operations MODE 2 (Strobed Bidirectional Bus 1/0). This functional configuration provides a means for communicating with a peripheral device or structure on a single 8-bit bus for both transmitting and receiving data (bidirectional bus 110). "Handshaking" signals are provided to maintain proper bus flow discipline in a similar manner to MODE 1. Interrupt generation and enable/disable functions are also available. OBF (Output Buffer Full). The OBF output will go "low" to indicate that the CPU has written data out to port A. ACK (Acknowledge). A "low" on this input enables the tri-state output buffer of port A to send out the data. Otherwise, the output buffer will be in the high impedance state. MODE 2 Basic Functional Definitions: INTE 1 (The INTE Flip-Flop Associated with OBF). Controlled by bit set/reset of PCe. • Used in Group A only: • One 8·bit, bi-directional bus Port (Port A) and a 5bit control Port (Port C). • Both inputs and outputs are latched. • The 5·bit control port (Port C) is used for control and status for the 8-bit, bi-directional bus port (Port A). Input Operations STB (Strobe Input). A "low" on this input loads data into the input latch. 6-75 8255A/8255A-5 IBF (Input Buffer Full F/F). A "high" on this output indicates that data has been loaded into the input latch. INTE 2 (The INTE Flip-Flop, Associated with IBF). Controlled by bit set/reset of PC4. CONTROL WORD PC 24 1'" INPUT O-OUTPUT L---_PORTB , = INPUT O=OUTPUT pc" WR_ L -_ _ _ _ GROUP B MODE 0" MODE 0 1=MQDE1 3 00- 231308-35 PC24 ---f-- I/O Figure 13. MODE Control Word 231308-36 Figure 14. MODE 2 /J DATA FROM CPU TO 8255A / INTR IBF PERIPHERAL _ _ _ _ _ _ _ _ _ _ BUS / DATA FROM PERIPHERAL TO 8255A DATA FROM 8255A TO 8080 231308-37 NOTE: Any sequence where WR occurs before ACK and STB occurs before RD is permissible. (INTR = IBF. MASK. STB • RD + OBF • MASK. ACK • WR) Figure 15. MODE 2 (Bidirectional) 6-76 inter 8255A/8255A-5 MODE 2 AND MODE 0 (INPUT) MODE 2 AND MODE 0 (OUTPUT) PC, PA,'PAo PC, INTR" ~ PA,'PAo pc. CONTROL WORD o,D."sD,D,D2 0, DO I ' II !XIXD <1XJ ----.-------_ -----------1'-----,-GROUP A PB, pe, PB, ------1 PC, _ _- - GROUP B ACK PC, (DEFINED BV MODE 0 OR MODE 1 SELECTION) PC, 231308-42 CONTROL LOGIC AND DRIVERS INTERRUPT Figure 18. MODE 2 Status Word Format REQUEST 231308-43 Figure 19. Printer Interface APPLICATIONS OF THE 8255A The 8255A is a very powerful tool for interfacing peripheral equipment to the microcomputer system. It represents the optimum use of available pins and is flexible enough to interface almost any lID device without the need for additional external logie<. INTERRUPT REOU EST I PC, 8255A Each peripheral device in a microcomputer system usually has a "service routine" associated with it. The routine manages the software interface between the device and the CPU. The functional definition of the 8255A is programmed by the lID service routine and becomes an extension of the system software. By examining the lID devices interface characteristics for both data transfer and timing, and matching this information to the examples and tables in the detailed operational description, a control word can easily be developed to initialize the 8255A to exactly "fit" the application. Figures 19 through 25 represent a few examples of typical applications of the 8255A. MODEl !lNPUTI PAo PA, Ro R, PA, PA, PA, R, R, R, PAs PA, PA, CONTROL PC, STROBE Pc, ACK FULLY DECODED KEYBOARD Rs SHIFT ~ '.Bo PB, MODEl (OUTPUTI PB, P., PB, PBs P., P., PC. PC, PC, PC, PC, Bo B, .,., ., BURROUGHS SELF-SCAN DISPLAY Bs BACKSPACE CLEAR DATA READY ACK BLANKING CANCEL WORD UPT~ INTERR REQUEST 231308-44 Figure 20. Keyboard and Display Interface 6-79 inter 8255A/8255A-5 INTERRUPT INTERRUPTI REaUEST'~ PC, :~~T;8255" REQUEST R, PA, R, PA, R, PA, R, FULLY DECODED KEYBOARD PA, R, PAs R, PAs SHIFT PA, CONTROL PA, MODE2 PC, ACKNOWLEDGE PC, BUSY LT PC, TEST IT -----,= ..... ------'b- ttt---'bIt-I- PB, --'b- PB, PB, PB, PB, PBs T EAMINAL AoORESS PC, PC, PC, PC, PC, tt- - 231308-45 0, 0, 0, 0, FLOPPY DISK CONTROllER AND DRIVE 0, 0, 0, 0, DATA 5TS ACK /IN) DATA READY ACK (OUTI TRACK "0" SENSOR .pc, SYNC READY PC, INDEX r M~DE 0 (OUTPUT) --'b-- PB, PAo PA, PB, PB, --'b--- PB, PA, PA, PA, PA, PA, STROBE PC, ~~~~T~- PC, PAo ENGAGE HEAD FORWARD/REV. READ ENABLE WRITE ENABLE PB3 PB. DISC SELECT PB, ENABLE CRe P8, TEST PB, BUSY LT 231308-47 Figure 23. Basic Floppy Disk Interface Figure 21. Keyboard and Terminal Address Interface INTERRUP.T I REaUEST PAo PA, PA, PA, PA, MaCE 0 (OUTPUT) PA,; PA, PA, PC, ..... PA, - PA, MODE 1 (OUTPUT) 12·81T D-A CONVERTER (OAt) ~ ANALOG OUTPUT PA, PAt PA, R, R, CRT CONTROLLER R, R, R, • CHARACTER GEN. • REFRESH BUFFER • CURSOR CONTROL R, SHIFT CONTROL PC, OATA READY PC, PC, PC, ACK BLANKED r MSB I25SA PC, PC, PB, BLAC~M'HITE OUTPUT EN SAMPLE EN PC, PC, ROW STB COLUMN STB PC, CURSOR HN STB STB PB, LSB P8, a.BIT A-D PB, CONVERTER (ADe) PB, P8, PB, P8, P8, PC, PC, 5TB DATA SET/RESET MODE 0 (INPUT) PAo PA, PA, PC, PC, BIT PC, LSS - MODE 0 (OUTPUTI ANALOG INPUT PB, PB, PB, PB, PB, PB, PB, l~~-='ADDRESS H& V MSB 231308-48 231308-46 Figure 24. BaSIC CRT Controller Interface Figure 22. Digital to Analog, Analog to Digital 6-80 intJ 8255A/8255A-5 INTERRUPT REaUE ST~ PC, PA" - - R o PA, R, ---- PA, PA, PA, PAS MODE 1 (lNPUTI R, R, R, PA, Rs R, R, PC, ST. PA, 8 LEVEL PAPER TAPE READER PC,; ACK PC, STOP/GO 12554 MODE 0 UNPUT) MACHINE TOOL STARTfSTQP {PCO PC PC,1 LIMIT SENSOR lHNI OUT OF FLUID CHANGE TOOL r MODE 0 taUTPUTl PS, LEfT fRIGHT PB, ,UP/DOWN PB, PB4 HOR. STEP STROBe VERT. STEP STROBE SLEW/STEP PBs PS, PS, . r---- FLUID ENABLE EMERGENCY STOP 231308-49 Figure 25. Machine Tool Controller Interface • Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a -stress rating only and functional operation of the device at these or any other. conditions above those indicated in the opera- tional sections of this specification is not implied Exposure to absolute maxiinum ;ating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias ...... O·C to 70·C Storage Temperature .........• - 65·C to + 150·C Voltage on Any Pin with Respect to Ground ......•... - 0.5V to + 7V Power Dissipation ........................ 1 Watt D.C. CHARACTERISTICS TA = Symbol O·C to 70·C, Vcc = Parameter + 5V ± 10%, GND = OV' Min Max Unit Input Low Volt,age -0.5 0.8 V Test Conditions VIH Input High Voltage 2.0 Vcc V VOL (DB) Output Low Voltage (Data Bus) VOL (PER) Output Low Voltage (Peripheral Port) VOH (DB) Output High Voltage (Data Bus) VOH (PER) Output High Voltage (Peripheral Port) IDAR(1) Darlington Drive Current -4.0 mA Icc Power Supply Current 120 mA IlL Input Load Current ±10 /LA VIN = Vcc toOV IOFL Output Float Leakage ±10 /LA VOUT = Vcc to 0.45V ,- VIL \ 0.45' V IOL =2.5mA 0.45" -V IOL = 1.7mA 2.4 V IOH = -400/LA 2.4 V IOH = - 200 /LA -1.0 NOTE: 1. Available on any 8 pins from Port Band C. 6-81 REXT = 7500; VEXT = 1.5V 8255A/8255A-5 CAPACITANCE T A = Symbol 25°C, Vee = GND = OV Max Unit CIN Input Capacitance Parameter Min 10 pF Test Conditions fc = 1 MHz(4) CliO I/O Capacitance 20 pF Unmeasured pins returned to GND(4) A.C. CHARACTERISTICS TA = Typ + 5V O°C to 70·C, Vee = ± 10%, GND = OV' Bus Parameters READ Symbol 8255A Parameter Min 8255A-5 Max Min Unit Max tAR Address Stable before READ 0 0 ns tRA Address Stable after READ 0 0 ns tRR READ Pulse Width tRO Data Valid from READ(1) 300 tOF Data Float after READ tRY Time between READs and/or WRITEs 300 ns 250 10 150 10 850 200 ns 100 ns 850 ns WRITE Symbol 8255A Parameter Min 8255A-5 Max Min Unit Max tAW Address Stable before WRITE 0 0 tWA Address Stable after WRITE 20 20 ns ns tww WRITE Pulse Width 400 300 ns tow Data Valid to WRITE (T.E.) 100 100 ns two Data Valid after WRITE 30 30 ns OTHER TIMINGS Symbol Min = 8255A-5 8255A Parameter Min Unit Max tWB WR tlR Peripheral Data before RD 0 0 ns tHR Peripheral Data after RD 0 0 ns tAK ACK Pulse Width 300 300 ns tST STS Pulse Width 500 500 ns tps Per. Data before T.E. of STS 0 0 ns tpH Per. Data after T.E. of STS 180 180 tAD ACK tKO ACK = 1 to Output Float = 1 to Output(1) Max 350 0 to Output(1) 350 300 20 6-82 250 20 ns ns 300 ns 250 ns intJ 8255A/8255A·5 A.C. CHARACTERISTICS (Continued) OTHER TIMINGS (Continued) Symbol 8255A Parameter Min = 1 toOSF = 0(1) = 0 to OBF = 1(1) STB = 0 to IBF = 1(1) RD = 1 to ISF = 0(1) RD = 0 to INTR = 0(1) STB = 1 to INTR = 1(1) ACK = 1 to INTR = 1(1) WR = 0 to INTR = 0(1,3) twoB tAos tSIB tRIBtRIT tSIT tAIT tWIT 8255A·5 Max Min Unit Max WR 650 650 ns ACK 350 350 ns 300 300 ns 300 300 ns 400 400 ns 300 300 ns 350 350 ns 850 850 ns NOTES: 1. Test Conditions: CL = 150 pF. 2. Period of Reset pulse must be at least 50 p.s during or after power on. Subsequent Reset pulse can be 500 ns min. 3. INTR may occur as early as WR J. . 4. Sampled, not 100% tested. -For Extended Temperature EXPRESS, use M8255A electrical parameters. t A.C. TESTING INPUT, OUTPUT WAVEFORM A.C. TESTING LOAD CIRCUIT Input/Output 2.4 2.0 0.45 0.8 .::> TEST POINTS < DEVICE UNDER TEST 2.0 0.8 i -= 231308-50 A.C. Testing: Inputs are driven at 2.4V for a LogiC "'1" and 0.45V for a Logic "'0"'. Timing measurements are made at 2.0V for a Logic "'I"' and 0.8V for a Logic "'0"'. A -0 YEXT'" Ct. = 150pF 231308-51 ·VEXT is set at various voltages during testing to guarantee the specification. CL includes jig capacitance. 6-83 8255A18255A-5 WAVEFORMS MODE 0 (BASIC INPUT) - 'RR -, -. r- CIR- r--tHR----:-1 INPUT I==::.t ~tRA--:1 AR - CS, Al, AO --"-- - - - - - - ~< 'RO . 'OF . -- 231308-52 MODE 0 (BASIC OUTPUT) 'w0 1-----,,"-----1 I------'''A-------I CS,A1.AO OUTPUT 'wB 231308-53 6-84 inter 8255A/8255A-5 WAVEFORMS (Continued) MODE 1 (STROBED INPUT) - - tST - -'SlB IBF 1 1 tSIT INTR J ,-) -'RIB_,) / / I-tpH-:1 INPUT FROM PERIPHERAL --- --------------------'PS 231308-54 MODE 1 (STROBED OUTPUT) INTR _twiT OUTPUT 231308-55 6-85 inter 8255A/8255A-5 WAVEFORMS (Continued) MODE 2 (BIDIRECTIONAL) A ----,. DATA FROM BOBO TO B255 -'AO'y \ ~ INTR j ... / 'I "'tWOB_~ \ L - tAK - //~ Ack \ / --'sr-V 1\ ""1 IBF 1 -'l- - - ;., 'PERIPHERAL BUS ---------- --- / \ '--t KO ) - --- t.OM DATA PERIPHERAL TO 8255 }------ --- - r-- / tpH~ DATA ~OM 8255 TO PERIPHERAL ___ - t Rle / DATA FROM 8255 TO 8080 NOTE: Any sequence where WR occurs before ACK and STS occurs before RD is permissible. (INTR = ISF • MASK. STS • RD + OSF • MASK. ACK • WR) WRITE TIMING 231308-56 READ TIMING "-1' cs_ _.I1'__________l--'f'__ _ __ DATA BUS --------~,~~--+---~'---- DATA BUS HIGH IMPEDANCE --------------4---4-----~ 231308-58 231308-57 6-86 intJ 82C55A CHMOS PROGRAMMABLE PERIPHERAL INTERFACE Word Read-Back Capability • Control Bit SetlReset Capability • Direct 2.5 mA DC Drive Capability on all 1/0 with all Intel and Most • Compatible Other Microprocessors High Speed, "Zero Wait State" • Operation with 8 MHz 8086/88 and 80186/188 , 24 Programmable 1/0 Pins • Low Power CHMOS • Completely TTL Compatible • • • • Port Outputs Available in 40-Pin DIP and 44-Pin PLCC Available in EXPRESS - Standard Temperature Range - Extended Temperature Range The Intel 82C55A is ~ high-performance, CHMOS version of the industry standard 8255A general purpose programmable I/O device which is designed for use with all Intel and most other microprocessors. It provides 241/0 pins which may be individually programmed in 2 groups of 12 and used in 3 major modes of operation. The 82C55A is pin compatible with the NMOS 8255A and 8255A-5. In MODE 0, each group of 12 I/O pins may be programmed in sets of 4 and 8 to be inputs or. outputs. In MODE 1, each group may be programmed to have 8 lines of input or output. 3 of the remaining 4 pins are used for handshaking and interrupt control signals. MODE 2 is a strobed bi-directional bus configuration. The 82C55A is· fabricated on Intel's advanced CHMOS III technology which provides low power consumption with performance equal to or greater than the equivalent NMOS product. The 82C55A is available in 40-pin DIP and 44-pin plastic leaded chip carrier (PLCC) packages. 65" POlitI" { -'" SUPPUES _ _ '"' 3 2 1 4443424140 Bless. 18 19 20 21 222324 2S 28 27 28 231256-31 v. ,.,"'10 231256-1 Figure 1. 82C55A Block Diagram 231256-2 Figure 2. 82C55A Pinout Diagrams are for pin reference only. Package sizes are not to scale. 6-87 September 1987 Order Number: 231256.004 inter 82C55A Table 1. Pin Description Symbol Pin Number. Dip PLCC Name and Function Type 1-4 2-5 I/O RD 5 6 I READ CONTROL: This input is low during CPU read operations. CS 6 7 I CHIP SELECT: A low on this input enables the 82C55A to respond to RD and WR signals. RD and WR are ignored otherwise. PA3-0 GND 7 8 A1-0 8-9 9-10 PORT A, PINS 0-3: Lower nibble of an 8-bit data output latchl buffer and an 8-bit data input latch. System Ground I ADDRESS: These input signals, in conjunction RD andWR, control the selection of one of the three ports or the control word registers; RD WR CS Input Operation (Read) 0 0 1 0 Port A - Data Bus 0 1 0 1 0 Port B - Data Bus 1 0 0 1 0 Port C - Data Bus 1 1 0 1 0 Control Word - Data Bus A1 0 Ao Output Operation (Write) 0 0 1 0 0 Data Bus - Port A 0 1 1 0 0 Data Bus - Port B 1 0 1 0 0 Data Bus· Port C 1 1 1 0 0 Data Bus - Control X X X X 1 Data Bus - 3 - State X X 1 1 0 Data Bus - 3 - State Disable Function 11,13-15 1/0 PORT C, PINS 4-7: Upper nibble of an 8-bit data output latch/ buffer and an 8-bit data input buffer (no latch for input). This port can be divided into two 4-bit ports under themode control. Each 4-bit port contains a 4-bit latch and it can be used for the control signal outputs and status signal inputs in conjunction with ports Aand B. 14-17 16-19 I/O PORT C, PINS 0-3: Lower nibble of Port C. 18-25 20-22, 24-28 I/O PORT B, PINS 0-7: An 8-bit data output latch/buffer and an 8bit data input buffer. PC7-4 10-13 PCO-3 PBO.7 26 29 D7-0 27-34 30-33, 35-38 1/0 RESET 35 39 I RESET: A high on this input clears the control register and all ports are set to the input mode. WR 36 40 I WRITE CONTROL: This input is low during CPU write operations. 37-40 41-44 I/O PA7-4 NC 1,12, 23,34 SYSTEM POWER: + Vee 5V Power Supply. DATA BUS: Bi-directional, tri-state data bus lines, connected to system data bus. PORT A, PINS 4-7: Upper nibble of an 8-bit data output latch/ buffer and an 8-bit data input latch. No Connect 6-88 intJ 82C55A Each of the Control blocks (Group A and Group B) accepts "commands" from the Read/Write Control Logic, receives "control words" from the in.ternal data bus and issues the proper commands to Its associated ports. 82C55A FUNCTIONAL DESCRIPTION General The B2C55A is a programmable peripheral interface device designed for use in Intel microcomputer systems. Its function is that of a general purpose I/O component to interface peripheral equipment to the microcomputer system bus. The functional configuration of the B2C55A is programmed by the system software so that normally no external logic is necessary to interface peripheral devices or structures. Control Group A - Port A and Port C upper (C7 -C4) Control Group B - Port B and Port Clower (C3-CO) The control word register can be both written and read as shown in the address decode table in the pin descriptions. Figure 6 shows the control word format for both Read and Write operations. When the control word is read, bit 07 will always be a logiC "1", as this implies control word mode information. Data Bus Buffer This 3-state bidirectional B-bit buffer is used to interface the B2C55A to the system data bus. Data is transmitted or received by the buffer upon execution of input or output instructions by the CPU. Control words and status information are also transferred through the data bus buffer. Ports A, B, and C The B2C55A contains three B-bit ports (A, B, and C). All can be configured in a wide variety of functional characteristics by the system software but each has its own special features or "personality" to further enhance the power and flexibility of the B2C55A. Read/Write and Control Logic Port A. One B-bit data output latch/buffer and one B-bit input latch buffer. Both "pull-up" and "pulldown" bus hold devices are present on Port A. The function of this block is to manage all of the internal and external transfers of both Data and Control or Status words. It accepts inputs from the CPU Address and Control busses and in turn, issues commands to both of the Control Groups. Port B. One B-bit data input! output latch/buffer. Only "pull-up" bus hold devices are present on Port B. Group A and Group B Controls Port C•. One B-bit data output latch/buffer and one B-bit data input buffer (no latch for i!1put). This port can be divided into two 4-bit ports under the mode contrcil. Each 4-bit port contains a 4-bit latch and it can be used for the control Signal outputs and status signal inputs in conjunction with ports A and B. Only "pull-up" bus hold d~vices are present on Port C. The functional configuration of each port is programmed by the systems software. In essence, the CPU "outputs" a control word to the B2C55A. The control word contains information such as "mode", "bit set", "bit reset", etc., that initializes the functional configuration of the B2C55A. See Figure 4 for the bus-hold circuit configuration for Port A, B, and C. 6-B9 inter 82C55A """'·1-'" '...,LlES _ _ _ GNO BI.()IR£CTtONAL DATA aus D7DD¢==~ .. ----<>I iill_ A, _ - ' - _ - ( rUADI WRITE C~~~L .. -'----I RESfT----I 13-----' 231256-3 Figure 3. 82C55A Block Diagram Showing Data Bus Buffer and Read/Write Control Logic Functions RESET --::r~~t>Ci--, EXTERNAL IN:~~~ - ---oq.-' c.....- - -.... WR • NOTE: 231256-4 Port pins loaded with more than 20 pF capacitance may not have their logic level guaranteed following a hardware reset. Figure 4. Port A, B, C, Bus-hold Configuration 6-90 inter 82C55A 82C55A OPERATIONAL DESCRIPTION CONTROL WORD I0,1 Mode Selection 0.1 0.1 0, I0, I0, I 0·1 L~ There are three basic modes of operation that can be selected by the system software: Mode 0 Mode 1 Mode 2 - o. Basic input/output Strobed Input/output Bi-directional Bus / GROUPS ~ PORT C (LOWERI '--0 When the reset input goes "high" all ports will be set to the input mode with all 24 port lines held at a logic "one" level by the internal bus hold devices (see Figure 4 Note). After the reset is removed the 82C55A can remain in the input mode with no additional initialization required. This eliminates the need for pullup or pulldown devices in "all CMOS" designs. During the execution of the system program, any of the other modes may be selected by using a single output instruction. This allows a single 82C55A to service a variety of peripheral devices with a simple software maintenance routine. 1 -INPUT Q. OUTPUT PORTB , -INPUT '-------" o -OUTPUT MODE SElECTION a .. MODE 0 '·MOOEl / GROUP A \ PORT C (UppeR) 1 .. INPUT O· OUTPUT The modes for Port A and Port B can be separately defined, while Port C is divided into two portions as required by the Port A and Port B definitions. All of the output registers, including the status flip-flops, will be reset whenever the mode is changed. Modes may be combined so that their functional definition can be "tailored" to almost any I/O structure. For instance; Group B can be programmed in Mode 0 to monitor simple switch closings or display computational results, Group A could be programmed in Mode 1 to monitor a keyboard or tape reader on an interrupt-driven basis. PORTA 1 -INPUT a-OUTPUT MODE SELECTION 00 .. MODE 0 O'''MODE 1 lX" MODE 2 MODE SET FLAG '-ACTIVE 231256-6 Figure 6. Mode Definition Format ADORESS BUS The mode definitions and possible mode combinations may seem confusing at first but after a cursory review of the complete device operation a simple, logical I/O approach will surface. The design of the 82C55A has taken into account things such as efficient PC board layout, control signal definition vs PC layout and complete functional flexibility to support almost any peripheral device with no external logic. Such design represents the maximum use of the available pins. MaOEO MODE 1 --i 8 ~o Pa,-PB o MODE 2 '!lIt lIn CONTROL CONTROL OR 110 OR I/O Single Bit Set/Reset Feature Any of the eight bits of Port C can be Set or Reset using a single OUTput instruction. This feature reduces software requirements in Control-based applications. --fl;"llB"""-'rrrr:!::::;n=r=r---:::'A,,JT ~O PS, ·PBg 'Illl I!I! 110 I CONtROL j3'D"ECTlONAL • PA7,PAn When Port C is being used as status/ control for Port A or B. these bits can be set or reset by using the Bit Set/Reset operation just as if they were data output ports. 231256-5 Figure 5. Basic Mode Definitions and Bus Interface 6-91 inter 82C55A Interrupt Control Functions CONTROL WORD When the 82C55A is programmed to operate' in mode 1 or mode 2, control signals are provided that can be used as interrupt request inputs to the CPU. The interrupt request signals, generated from port C, can be inhibited or enabled by setting or resetting the associated INTE flip-flop, using the bit set/reset function of port C. This function allows the Programmer to disallow or allow a specific 1/0 device to interrupt the CPU without affecting any other device in the interrupt struc. ture. INTE flip-flop definition: 231256-7 (SIT-SET)-INTE is SET-Interrupt enable (SIT-RESET)-INTE is RESET-Interrupt disable Figure,7. Bit Set/Reset Format Note: All Mask flip-flops are automatically reset during mode selection and device Reset. 6-92 intJ 82C55A Operating Modes Mode 0 Basic Functional Definitions: Mode 0 (Basic Input/Output). This functional configuration provides simple input and output operations for each of the three ports. No "handshaking" is required, data is simply written to or read from a specified port. • • • • • Two a-bit ports and two 4-bit ports. Any port can be input or output. Outputs are latched. Inputs are not latched. 16 different Input/Output configurations are possible in this Mode. MODE 0 (BASIC INPUT) 'RR ..lr- RD C 0 , ~ r'"R-1 'R - INPUT r--'AR- _ 1 RA _j CS, A1, AO --- - - ' - - - - - - - - - .( 'RD '0' 0 231256-8 MODE 0 (BASIC OUTPUT) 'wW ~. 7f- I---'ow 'wD---l 'wA 'AW f$.A1,AO OUTPUT _'w.---.j 231256-9 6-93 inter 82C55A MODE 0 Port Definition S A GROUPS PORTC PORTS (LOWER) GROUP A D4 D3 D1 Do PORTA PORTC (UPPER) 0 )0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT 1 OUTPUT 0 1 0 1 0 1 0 1 INPUT INPUT INPUT INPUT OUTPUT 11 INPUT INPUT INPUT INPUT 12 OUTPUT OUTPUT INPUT INPUT 13 . OUTPUT INPUT INPUT INPUT 14 INPUT OUTPUT INPUT INPUT 15 INPUT INPUT 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 # OUTPUT OUTPUT 0 1 2 3 INPUT INPUT INPUT 4 OUTPUT OUTPUT OUTPUT INPUT INPUT INPUT INPUT OUTPUT INPUT 5 6 7 OUTPUT OUTPUT INPUT INPUT OUTPUT 8 OUTPUT OUTPUT OUTPUT 9 OUTPUT INPUT OUTPUT 10 INPUT OUTPUT OUTPUT OUTPUT INPUT INPUT OUTPUT MODE 0 Configurations CONTROL WORD #0 0, 0, 05 0, CONTAOL WORD #2 0, 0, 0, I, I I I I I I 0 o 0 0 0 o 0, 0, I 1 0 8 A • • 8 8 I' I 0, 0 o 0, 0, 0 0 1 0 0 a A c{ PC 1-PC 4 °7-0 0 PC 3..$1CO 8 PBr'Bo 0 0, 0, 0, 0, 0, I, I I I Io I'I 0 0 8 A 0, 0 05 0, 0, 0, PA,PA o • PC 7·PC 4 • pel,PCa , (8 PBrPBo 0, 0, I I I I I, I' 1 0 0 0 0 8 A PA,..." 82C55A DrOo 0, CONTROL WORD #3 0, I'" I 0, PA7-PAO CONTROL WORD.1 0, 0, 82C55A c{ 1-00 05 I, I I I I I o I I 1 0 82C55A ° 0, 82C55A 4 c{ i 8 {. 8 PC 7-PC 4 ° 1,00 pel-pea PS 7-PB o c{ B • ,{. {8 i PA,PAo PC 7-PC 4 pel,pca PS 1-PB Il 231256-10 6-94 82C55A MODE 0 Configurations (Continued) CONTROL WORD #8 CONTROL WORD '4 0, I , 0, 0, 0, 0, 0, , 0 0, 0, Do 0 0 0 0, 0, 0 , 0 0 • A 82C55A D7".Q(~ 0, I, I I I I I I I I I I 0 0, 0, 0, Do I I Io I I I o o 0 PA,-PA O ,' A . c{ ·· PA,-PA O 82C55A c{ • • pel-pc O • • PBrPB o PC,.PC 4 °7-0 0 • B PC , -PC 4 PCr-PCo PB,-PB o CONTROL WORD 19 CONTROL WORD .5 0, I , 0, 0, 0, 0, , 0, I I I I I I 0 0 0 0 0, 0, Do 0 1,1 I, I B A 0, 0 0, 0, 0, 0, c{ ·• B B PA7-P~ I , 0, 0, 0, 0 0 D7~O pel-pe Cl ·pBo 0, , 0 0, 0, Do , I • . A °7-0 0 c{ ,, • , • ' B I , 0, 0 0 0, 0, pel,pc O • PB 7·PB o 0, 0, 0, 0, , 0 0, 0, Do , 0 I I I I I I I 0 0 0 • PAt-PAo • PC 7·PC 4 • pe 3'PC a I A 82C55A c{ PC r PC 4 °rDo pel-pcO PBl-PS a B Do , 0 0, I, I I 0, ,' . 0, 0, 0, 0, 0, ,' . PB,·PB o Do I I , I I I , I, I 0 0 0 0 B A A PA7-PAu c{ ,"· PA"PA o 82C55A 82CS5A 0,-0 0 PC, .PC 4 CONTROL WORD '11 0, , I I I I I I I, 0 , PA7-PAO CONTROL WORD #7 0, ," PAr-PAa CONTROL WORD .10 0, 82C55A 0, . • B P6 7 0 0, c{ PC,'PC 4 I I I I I I I I 0 ,' A 82C55A CONTROL WORD #6 0, Do 0 0 0 82C55A °7.()O 0, I I , I I I o I, I c{ B • PC 7-PC 4 0 7-0 0 ," pel-pc O ," P8 7-P BO B • PC r PC 4 PC 3-PC O PB,·PS O 231256-11 6-95 82C55A MODE 0 Configurations (Continued) CONTROL WORD #12 01 06 Os 04 CONTROL WORD #14 0] 02 01 07 Do ; c{ ° -° 0 05 04 0 12C5IA 1 D6 03 02 0, Do I, 1 I 1 I I I I I 1,10101,1,1010101 i ,8 . , 0 0 PA,-CIAo A . c{ PC 7-PC 4 O~. PC]-PCa D5 0. PA 7..pAO " PC 7-PC. ,8 PSJ-PDa CONTROL WORD .15 03 02 00 D, I, 1 01 0 1,1, I I, I, I I, I 0 I 0 I I I 10 I, I 0 , ,8 12C5IA 0,-0. i I CONTROL WORD #13 06 ,8 PCJ-PCo PB7-PBO 07 i I2C5IA c{ , I I . . , A PAr"Ao c{ PC,-<'C. PA]-PA O I2CIUo Pel,PC. °l..[)O PC 3-PC O PCr"CO P8, -PB O PB 1:.pSo 231256-12 Mode 1 Basic functional Definitions: Operating Modes • Two Groups (Group A and Group B). • Each group contains one 8·bit data port and one 4-bit control/data port. • The 8-bit data port can be either input or output Both inputs and outputs are latched. MODE 1 (Strobed Input/Output). This functional c~>nfiguration provides a means for transferring I/O data to or from a specified port in conjunction with strobes or "handshaking" signals. In mode 1, Port A and Port B use the lines on Port C to generate or accept these "handshaking" signals. • The 4-bit port is used for control and status of the 8-bit data port. 6-96 inter 82C55A Input Control Signal Definition MODE 1 (PORT' AI STB (Strobe Input). A "low" on this input loads data into the input latch. CONTROL WORD 07 D. 0 5 D. 0 3 02 a, Do I, I ·1, I, I'IO]XJ)@ IBF (Input Buffer Full F/F) L~~~PUT A "high" on this output indicates that the data has been loaded into the input latch; in essence, an acknowledgement. IBF is set by STB in~ being low and is reset by the rising edge of the RD input. O-OUTPUT INTR (Interrupt Request) MODE 1 (PORT 81 A "high" on this output can be used to interrupt the CPU when an input device is requesting service. INTR is set by the STB is a "one", IBF is a "one" and INTE is a "one". It is reset by the falling edge of RD. This procedure allows an input device to request service from the CPU by simply strobing its data into the port. CONTROL WORD 07 D. Os D4 0, D2 0, Do I'WXMXJ,I'M IBFa INT", INTEA Controlled by bit set/reset of PC4. 231256-13 INTEB Controlled by bit set/reset of PC2. Figure 8; MODE 1 Input -'u- ~'"·-I.! I.' J INTR 'IIT \ tJ ~7 IIIi INPUT FROM PERIPHERAL --- ~""--I ... ! - · o.. _ _ _ o '> / --------------------- Figure 9. MODE 1 (Strobed Input) 6-97 inter 82C55A Output Control Signal Definition MUDt. 1 IPORT AI OBF (Output Buffer Full F/F). The OBF output will go "low" to indicate that the CPU has written data out to the specified port. The OBF F/F will be set by. the rising edge of the WRinput and reset by ACK Input being low. CONTROL WORD ~ D. Os D4 0 3 02 I ' I I' I 0 0 "°, Do I'~DMXI L~'I=PUT O-OUTPUT ACK (Acknowledge Input). A "low" on this input informs the 82C55A that the data from Port A or Port B has been accepted. In essence, a response from the peripheral device indicating that it has received the data output by the CPU. MODE 1 (PORT B) INTR (Interrupt Request). A "high" on this output can be used to interrupt the CPU when an output device has accepted data transmitted by the CPU. INTR is set when ACK is a "one", OBF is a "one" and INTE is a "one". It is reset by the falling edge of CONTROL WORD 0, D. 05 D. 0 3 02 D1 Do 1'N>®Xl'lo~ !!PI WR. INTEA Controlled by bit set/reset of PCs. INTEB Controlled by bit set/reset of PC2. INT" 231256-15 Figure 10. MODE 1 Output INTH 1---twIT OUTPUT 231256-16 Figure 11. MODE 1 (Strobed Output) 6-98 82C55A Combinations of MODE 1 Port A and Port B can be individually defined as input or output in Mode 1 to support a wide variety of strobed I/O applications. PA,·PAg PA,-PAc» pc. STB... pc, IBFA PC, INTRA PC, 8 OBFA pc. _ A C K... PC, INTRA 2 PCB•1 Pa.,-PBo --f-- I/O PC4•5 8 PB"PBo RO- PC a I/O INTR g PORT A - (STROBED INPUT) PORT B -(STROBED OUTPUTI PC, ST" PC, 1BFa pc. INTRa PORT A - (STROBED OUTPUT) PORT B - (STROBED INPUT) 231256-17 Figure 12. Combinations of MODE 1 Operating Modes Output Operations MODE 2 (Strobed Bidirectional Bus I/O).This functional configuration provides a means for com· municating with a peripheral device or structure on a single S·bit bus for both transmitting and receiving data (bidirectional bus I/O). "Handshaking" signals are provided to maintain proper bus flow discipline in a similar manner to MODE 1. Interrupt generation and enable/disable functions are also available. OBF (Output Buffer Full). The OBF output will go "low" to indicate that the CPU has written data out to port A. ACK (Acknowledge). A "low" on this input enables the tri-state output buffer of Port A to send out the data. Otherwise, the output buffer will be in the high impedance state. MODE 2 Basic Functional Definitions: INTE 1 (The INTE Flip-Flop Associated with OBF). Controlled by bit set/reset of PC6. • Used in Group A only. • One S·bit, bi·directional bus port (Port A) and a 5bit control port (Port C). Input Operations • Both inputs and outputs are latched. • The 5·bit control port (Port C) is used for control and status for the S·bit, bi·directional bus port (Port A). STB (Strobe Input). A "low" on this input loads data into the input I~tch. IBF (Input Buffer Full F/F). A "high" on this output indicates that data has been loaded into the input latch. Bidirectional Bus I/O Control Signal Definition INTE 2 (The INTE Flip-Flop Associated with IBF). Controlled by bit set/reset of PC4 . INTR (Interrupt Request). A high on this output can be used to interrupt the CPU for input or output operations. 6·99 82C55A CONTROL WORD ~ ~'~J~~T PORTS 1'"" INPUT 0" OUTPUT GROUP B MODE O=MODEO 1=MODE1 231256-18 3 pc,. --1--110 RO- Figure 13. MODE Control Word 231256-19 Figure 14. MODE 2 INTR - t AK _ ------------------~------------~~ ~rr_----~-------- _ t ST _ ~----------------~ r--~-+------r_----~------~ IBF PERIPHERAL _ _ _ _ _ _ _ _ _ _ BUS DATAFRDM PERIPHERAL TO 8aC.SA DATA FROM 82CS5A TO 8080 231256-20 Figure 15. MODE 2 (Bidirectional) NOTE: Any sequence where WR occurs before ACK, and STB occurs before RD is permissible. (INTR = IBF. MASK. STB • RD + OBF • MASK. ACK • WR) 6·100 inter 82C55A MODE 2 AND MODE 0 (OUTPUT) MODE 2 AND MODE 0 (INPUT) P C e - A C KA CONTROL WORD CONTROL WORe 01 De 0 5 D. 03 02 01 Do 07 0 6 05 04 OJ 02 0, Do I, I, txlXIX1 °I JOI I, I, txlXIX1 °I0:]"1 pc,. pc,. 1" INPUT 0" OUTPUT 1'" INPUT 0" OUTPUT 3 PCZ.Q -f-- I/O RD_ WR- MODE 2 AND MODE 1 (OUTPUT) MODE 2 AND MODE 1 (INPUT) OBFA CONTROL WORD CONTROL WORD ACK A D7 0 6 Os 04 OJ 02 0, Do PC, rnA pc,; IBFA l'I,t> TEST POINTS D•• <:: A.C. TESTING LOAD CIRCUIT 2.D DEVICE UNDER TEST D•• 0.45 231256-29 I Co. = 1SDpF 231256-30 A.C. Testing Inputs Are Driven At 2.4V For A Logic 1 And 0.45V For A Logic 0 Timing Measurements Are Made At 2.0V For A Logic 1 And 0.8 For A Logic O. 'VEXT Is Set At Various Voltages During Testing To Guarantee The Specification. CL Includes Jig Capacitance. 6-109 8256AH MULTIFUNCTION MICROPROCESSOR SUPPORT CONTROLLER • Programmable Serial Asynchronous Communications Interface .for 5-, 6-, 7-, or 8-Bit Characters, 1, 1Y:z, or 2 Stop Bits, and Parity Generation • Two 8-Bit Programmable Parallel I/O Ports; Port 1 Can Be Programmed for Port 2 Handshake Controls and Event Counter Inputs • On-Board Baud Rate Generator Programmable for 13 Common Baud Rates up to 19.2 KBits/Second, or an External Baud Clock Maximum of 1M Bit/Second • Eight-Level Priority Interrupt Controller Programmable for 8085 or iAPX 86, iAPX 88 Systems and for· Fully Nested Interrupt Capability • Programmable System. Clock to 1 2 X, 3 X, or 5 X 1.024 MHz • Five 8-Bit Programmable Timer/ Counters; Four Can Be Cascaded to Two 16-Bit Timer/Counters x, The Intel® 8256AH Multifunction Universal Asynchronous Receiver-Transmitter (MUART) combines five commonly used functions into a single 40-pin device. It is designed to interface to the 8086/88, iAPX 186/188, and 8051 to perform serial communications, parallel I/O, timing, event counting, and priority interrupt functions. All of these functions are fully programmable through nine internal registers. In addition, the five timer/counters and two parallel I/O ports can be accessed directly by the microprocessor. ADO-AD4 ADDRESSI DATA BUS BUFFERS DBS-DB7 cs Rii WI! ALE RESET INT ADO Vee ADI Pl0 AD2 Pl1 . ·AD3 P12 AD~ P13 DBS P14 DB8 PIS DB7 P18 ALE PH Rii P20 WR P21 RESET P22 CS P23 INTA P24 INT P2S EXTINT P28 elK P27 ~ TxD RxD GND 230759-2 230759-1 Figure 1. MUART Block Diagram 6-110 Figure 2. MUART Pin Configuration September 1987 Order Number: 230759-002 inlef 8256AH Table 1. Pin Description Symbol Pin Type Name and Function ADO-AD4 DB5-DB7 1-5 6-8 I/O ADDRESS/DATA: Three·state address/data lines which interface to the lower 8 bits of the microprocessor's multiplexed address/data bus. The 5·bit address is latched on the falling edge of ALE. In the 8·bit mode, ADO-AD3 are used to select the proper register, while AD1-AD4 are used in the 16·bit mode. AD4 in the 8-bit mode is ignored as an address, while ADO in the 16cbit mode is used as a second chip select, active low. ALE 9 I ADDRESS LATCH ENABLE: latches the 5 address lines on ADO-AD4 and CS on the falling edge. RD 10 I READ CONTROL: When this signal is low, the selected register is gated onto the data bus. WR 11 I WRITE CONTROL: When this signal is low, the value on the data bus is written into the selected register. RESET 12 I RESET: An active high pulse on this pin forces the chip into its initial state. The chip remains in this state until control information is written. CS 13 I CHIP SELECT: A Iowan this signal enables the MUART. It is latched with the address on the falling edge of ALE, and RD and WR have no effect unless CS was latched low during the ALE cycle. INTA 14 I INTERRUPT ACKNOWLEDGE: If the MUART has been enabled to respond to interrupts, this signal informs the MUART that its interrupt request is being acknowledged by the microprocessor. During this acknowledgement the MUART puts an RSTn instruction on the data bus for the 8-bit mode or a vector for the 16bit mode. INT 15 0 INTERRUPT REQUEST: A high signals the microprocessor that the MUART needs service. EXTINT 16 I EXTERNAL INTERRUPT: An external device can request interrupt service through this input. The input is level sensitive (high), therefore it must be held high until an INTA occurs or the interrupt address. register is read. ClK 17 I SYSTEM CLOCK: The reference clock for the baud rate generator and the timers. RxC 18 I/O RECEIVE CLOCK: If the baud rate bits in the Command Register 2 are all 0, this pin is an input which clocks serial data into the RxD pin on the rising edge of RxC. If baud rate bits in Command Register 2 are programmed from 1-0FH, this pin outputs a square wave whose rising edge indicates when the data on RxD is being sampled. This output remains high during start, stop, and parity bits. RxD 19 I GND 20 PS RECEIVE DATA: Serial data input. GROUND: Power supply and logic ground reference. 6-111 inter 8256AH Table 1. Pin Description (Continued) Symbol Pin Type Name and Function CTS 21 I CLEAR TO SEND: This input enables the serial transmitter. If 1,_ .1.5, or 2 stop bits are selected CTS is level sensitive. As long as CTS is low, any character loaded into the transmitter buffer register will be transmitted serially. A single negative going pulse causes the transmission of a Single character previously loaded into the transmitter buffer register. If a baud rate from 1...,OFH is selected, CTS must be low for at least %2 of a bit, or it will be ignored. If the transmitter buffer is empty, this pulse will be ignored. If this pulse occurs during the transmission of a character up to the time where % the first (or only) stop bit is sent out" it will be ignored. If it occurs afterwards, but before the end of the stop bits, the next character will be transmitted immediately following the current one. If CTS is still high when the transmitter register is sending the last stop bit, the transmitter will enter its idle state until the next h1gh·to-low transition on CTS occurs. If 0.75 stop bits is chosen, the CTS input is edge sensitive. A negative edge on CTS results in the immediate transmission of the next character. The length of the stop bits is determined by the time interval between the beginning of the first stop bit and the next negative edge on CTS. A high-to-Iow transition has no effect if the transmitter buffer is empty or if the time interval between the beginning of the stop bit and next negative edge is less than 0.75 bits. A high or a low level or a low-to-high transition has no effect on the transmitter for the 0.75 stop bit mode. TxC 22 I/O TRANSMIT CLOCK: If the baud rate bits in command register 2 are all set.to 0, this input clocks data out of the transmitter on the . falling edge. If baud rate bits are programmed for 1 or 2, this input permits the user to provide a 32 x or 64 X clock which is used for the receiver and transmitter. If the baud rate bits are programmed for 3-0FH, the internal transmitter clock is output. As an output it delivers the transmitter clock at the selected bit rate. If 1% or 0.75 stop bits are selected, the transmitter divider will be asynchronously. reset at the beginning of each start bit, immediately causing a high-toclow transition on TxC. TxC makes a high-to-Iow transition at the beginning of each serial bit, and a lowto"high transition at the center of each bit. 23 0 P27-P20 24-31 I/O PARALLEL 1/0 PORT 2: Eight bit general purpose 110 port. Each nibble (4 bits) of this port can be either an input or an output. The outputs are latched whereas the input signals are not. Also, this port can be used as an 8-bitinput or output port when using the two-wire handshake. In the handshake mode both inputs and outputs are latched. P17-P10 32-39 110 PARALLEL 1/0 PORT 1: Each pin can be programmed as an input or an output to perform general purpose lID. All outputs are latched whereas inputs are not. Alternatively these pins can serve as control pins which extend the functional spectrum of the chip. 40 PS POWER: TxD Vee TRANSMIT DATA: Serial data output. + 5V power supply. 6-112 intJ 8256AH FUNCTIONAL DESCRIPTION The 8256AH Multi-Function Universal Asynchronous Receiver-Transmitter (MUART) combines five commonly used functions into a single 40-pin device. The MUART performs asynchronous serial communications, parallel I/O, timing, event counting, and interrupt control. For detailed application information, see Intel AP Note # 153, Designing with the 8256. Serial Communications The serial communications portion of the MUART contains a full-duplex asynchronous receiver-transmitter (UART). A programmable baud rate generator is included on the MUART to permit a variety of operating speeds without external components. The UART can be programmed by the CPU for a variety of character sizes, parity generation and detection, error detection, and start/stop bit handling. The receiver checks the start and stop bits in the center of the bit, and a break halts the reception of data. The transmitter can send breaks and can be controlled by an external enable pin. Parallel If0 The MUART includes 16 bits of general purpose parallel. I/O. Eight bits (Port 1) can be individually changed from input to output or used for special I/O functions. The other eight bits (Port 2) can be used as nibbles (4 bits) or as bytes. These eight bits also include a handshaking capability using two pins on Port 1. CounterfTimers There are five 8-bit counter/timers on the MUART. The timers can be programmed to use either a 1 kHz or 16 kHz clock generated from the system clock. Four of the 8-bit counter/timers can be cascaded to two 16-bit counter/timers, and one of the 8-bit counter/timers can be reset to its initial value by an external signal. Interrupts An eight-level priority interrupt controller can be configured for fully nested or normal interrupt priority. Seven of the eight interrupts service functions on the MUART (counter/timers, UART), and one external interrupt is provided which can be used for a particular function or for chaining interrupt controllers or more MUARTs. The MUART will support 8085 and 8086/88 systems with direct interrupt vectoring, or the MUART can be polled to determine the cause of the interrupt. If additional interrupt control capability is needed, the MUART's interrupt controller can be cascaded into another MUART, into an Intel 8259A Programmable Interrupt Controller, or into the interrupt controller of the iAPX 186/188 High-Integration Microprocessor. INITIALIZATION In general the MUART's functions are independent of each other and only the registers and bits associated with a particular function need to be initialized, not the entire chip. The command sequence is arbitrary since every register is directly addressable; however, Command Byte 1 must be loaded first. To put the device into a fully operational condition, it is necessary to write the following commands: Command byte 1 Command byte 2 Command byte 3 Mode byte Port 1 control Set Interrupts The modification register may be loaded if required for special applications; normally this operation is not necessary. The MUART should be reset before initialization. (Either a hardware or a software reset will do.) INTERFACING This section describes the hardware interface between the 8256 MUART and the 80186 microprocessor. Figure 3 displays the block diagram for this interface. The MUART can be interfaced to many other microprocessors using these basic principles. In all cases the 8256 will be connected directly to the CPU's multiplexed address/data bus. If latches or data bus buffers are used in a system, the MUART should be on the microprocessor side olthe address/data bus. The MUART latches the address internally on the falling edge of ALE. The address consists of Chip Select (CS) and four address lines. For 8-bit microprocessors, ADO-AD3 are the address lines. For 16-bit microprocessors, AD1-AD4 are the address lines; ADO is used as a second chip select which is active low. Since chip select is internally latched along with the address, it does not have to remain active during the entire instruction cycle. As long as the chip select setup and hold times are met, it can be derived from multiplexed ad- 6-113 8256AH Vee n r 16 MHz r'D'l X X RESET 1 2 RD RES WR INTO iNTAO ALE DTIR ---, DEN --1 + 5 V - SRDY -r r NMI ADII-15 'r HOLD ~STB ~AIIORIDATA - n- 8282 " ADDRESS lATCH (2) OE + PCSO 80186 8286 ..A DATA TRCYR (16) ~QE(2) v TI '- ALE ADII- (8) -y' 05_/ cs INTA INT WR 8256 > rl. CLOCK 11 GENERATOR RD RESET ClK PORT 1 PORT 2 CTS TxD RxD TxC RxC EX TINT . .1'- (8) (8) .) f f t SERIAL 110 230759-3 Figure 3. 80186/8256 Interface dress/data lines or multiplexed address/status lines. When the 8256 is in the 16-bit mode, AO serves as a second chip select. As a result the MUART's internal registers will .all have even addresses since AO must be zero to select the device. Normally the MUART will be placed on the lower data byte. If the MUART is placed on the upper data byte, the internal registers will be 512 address locations apart and the chip would occupy an 8k word address space. DESCRIPTION OF THE REGISTERS The following section will provide a description of the registers and define the bits within the registers where appropriate. Table 2 lists the registers and their addresses. 8086-8086 MODE ENABLE This bit selects between 8085 mode and 8086/8088 mode. In 8085 mode (8086 = 0), AO to A3 are used to address the internal registers, and an RSTn instn:lction is generated in response to the first INTA. In 8086 mode (8086 = 1), A1 to A4 are used to address the internal registers, and AO is used as an extra chip select (AO must equal zero to be enabled). The response to INTA is for 8086 interrupts where the first INTA is ignored, and an interrupt vector (40H to 47H) is placed on the-bus in response to the second INTA. BITI-INTERRUPT ON BIT CHANGE Command Register 1 I L1 I LO I S1 I SO I BRKI I BITI I 8086 I FRO I (OR) cy is shared by all the counter/timers enabled for timing; thus, all timers must run with the. same time base. (OW) FRQ-TIMER FREQUENCY SELECT This bit selects between two frequencies for the five timers. If FRO = 0, the timer input frequency is 16 kHz (62.5 /1-s). If FRO = 1, the timer input frequency is 1 kHz (1 ms). The selected clock frequen- This bit selects between one of two interruptsources on Priority Level 1, either Counter/Timer 2 or Port 1 P17 interrupt. When this bit equals 0, Counter/ Timer 2 will be mapped into Priority Level 1. If BITI equals 0 and Level 1 interrupt is enabled, a transition from 1 to 0 in Counter/Timer 2 will generate an interrupt request on Level 1. When BITI equals 1, Port 1 P17 external edge triggered interrupt source is mapped into Priority Level 1. In this case if Level 1 is enabled, a low-Io-high transition on P17 generates an interrupt request on Level 1. 6-114 inter 8256AH Table 2. MUART Registers Read Registers Write Registers 8085 Mode: AD3 8086 Mode: AD4 'I-Ll-.-LO...... 1 -SI--rIso-'I-BR-K-C 1 I'---B-ITI--r-SO-S-6'I-FR----'OI 0 0 AD2 AD3 0 AD1 AD2 0 'I-L1...... 1 -Lo--rIS1-'I-s-0'I-BR-K-I'I-B-ITI--r-S-OS-6'I-F-RO-'I Command 1 I PEN I EP I C1 I CO I B3 Command 1 I B2 I Bl I BO I 0 0 0 1 I PEN I EP I Cl I CO I Command 2 I 0 I RxE IIAE I NIE I 0 ADO AD1 I SBRK I TBRK I 0 I 0 0 1 0 1 P12 Pl1 I P10 I 0 1 0 0 1 P171 P161 P151 P141/ P13 1 P12 Port 1 Control I L2 ILl I LO I 0 BO I 1 0 1 I L7 I L6 I L5 I L4 I 1 1 0 I L7 I L6 I LS I L4 I Interrupt Address I P11 I P10 I L3 I L2 ILl LO L2 ILl LO 02 01 DO Set Interrupts L.I0_7-,1_0_6-,1_0_5-1.1_0_4-,-1_0_3-,1_0_2-,--_0_1-,1_0---,0I 0 L3 I Reset Interrupts 01 02 I I DO 0 1 1 07 I 06 I 05 I 04 I 1 Receiver Buffer 03 I Transmitter Buffer 1....10_7--,1_0_6....J.1_0_5....1.1_0_4 -1.1_0_3--,1_0_2--,--_0_1....J.1_0---,0I 1 0 0 0 1 D7 I 06 I 05 I 04 I Port 1 03 I 02 01 DO I 02 01 DO I 02 01 DO I 02 01 DO I 02 01 DO I 02 01 DO I 02 01 DO Port 1 1....1D_7--,1_0_6....J.1_0_5....1.1_0_4-1.1_0_3--,1_0_2--,--_01---1.1_0---,011 0 0 1 107 I 06 I 05 I 04 I Port 2 03 I Port 1 Control Interrupt Enable I 07 I 06 I OS I 04 I B1 Mode I P171 P161 P151 P141 P13 I 03 I 1 1 T3S I T24 I TSC I CT3 I CT2 I P2C2 I P2C1 I P2CO I Mode I 07 I 06 I 05 I 04 I B2 Command 3 I T35 I T24 I T5C I CT3 I CT2 I P2C2 I P2Cl I P2CO I 0 L3 I 0 1 SET I RxE IIAE I NIE I END I SBRK I TBRK I RST I Command 3 I L7 I L6 I LS I L4 I B3 Command 2 03 Port 2 I 02 I 01 I DO I 1 0 1 0 1 07 I 06 I OS I 04 I 1....10_7--,1_0_s....I.I_0_5-,-I_D_4-1.1_0_3......11_02--,_01--,1_0---,011 0 1 1 I 07 Timer 2 I 06 I OS I 04 I 03 Timer 2 1....10_7--'1_0_s....l.I_0_S-'-I_0_4-1.1_0_3......11_02--'_01----'1_0---'011 1 0 0 I 07 I OS I OS I 041 03 Timer 3 Timer 3 LI0_7-'I_O--'s.....I.1_0_5-'-1_0_4-'-1_0_3-'1_02-----'_01-----'1_0---'011 1 0 1 I 07 Timer 4 los I OS I 04 I 03 Timer 4 01 I DO 11 1 0 I 07 I 06 I OS I 04 I 03 Timer 5 TimerS liNT I RBF I TBE I TRE I BO I 03 Timer 1 Timer 1 PE OE 1 I I FE 11 Status 0 I RS41 RS31 RS21 RS1 I RSO Modification 6-115 TME I OSC I 8256AH BRKI-BREAK-IN DETECT ENABLE If this bit equals 0, Port 1 P16 is a general purpose II When BRKI equals 1, the Break-In Detect feature is enabled on Port 1 P16. A Break-In condition is present on the transmission line when it is forced to the start bit voltage level by the receiving station. Port 1 P16 must be connected externally to the transmission line in order to detect a Break-In. A Break-In is polled by the MUART during the transmission of the last or only stop bit of a character. o port. A Break-In Detect is OR-ed with Break Detect in Bit 3 of the Status Register. The distinction can be made through the interrupt controller. If the transmit and receive interrupts are enabled, a Break-In will generate an interrupt on Level 5, the transmit interrupt, while Break will generate an interrupt on Level 4, the receive interrupt. so, provide a frequency of either 32X ,or 64X the baud rate. The data transmission rates range from O... 32 Kbaud. If bits 0 ... 3 are set to 0, separate clocks must be input to pin RxC for the receiver and pin TxC for the transmitter. Thus, different baud rates can be used for transmission and reception. In this case, prescalers are disabled and the input serial clock frequency must match the baud rate. The input serial clock frequency can range from 0 MHz to 1.024 MHz. BO, B1, B2, B3-BAUD RATE SELECT These four bits select the bit clock's source, sampling rate, and serial rate for the internal baud rate generator. . S1-STOP BIT LENGTH Stop Bit Length S1 SO 0 0 1 0 1 1.5 1 0 2 1 1 0.75 The relationship of the number of stop bits and the function of input CTS is discussed in the Pin Description section under "CTS". LO, L 1-CHARACTER LENGTH L1 LO Character Length 0 0 8 0 1 7 1 0 6 1 1 5 (1 R) B2 B1 BO 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 a 1 1 0 0 1 1 0 1 0 1 0 1 0 1 '0 1 0 1 0 1 0 1 0 1 1 1 1 Bits 3 to o(Hex.) 0 B2 a Baud Rate TxC,RxC TxC/64 TxC/32 19200 9600 4800 2400 1200 600 300 200 150 110 100 75 50 Sampling Rate 1 64 32 32 64 64 64 64 64 64 64 64 64 64 64 64 The following table gives an overview of the function of pins TxC and RxC: Command Register 2 I PEN I EP I C1 I CO I B3 B3 B1 BO (1W) 1,2 Programming bits 0 ... 3 with values from 3H to FH enables the internal baud rate generator as a common clock source for the transmitter and receiver and determines its divider ratio. Programming bits 0 ... 3 with values of 1H or 2H enables input TxC as a common clock source for the transmitter and receiver. The external clock must 6-116 3to F TxC RxC Input: 1 x baud rate clock for the transmitter Input: 32 X or 64 X baud rate ' for transmitter and receiver Input: 1 x baud rate clock for the receiver Output: receiver bit clock with a low-tohigh transition at data bit sampling time. Otherwise: high level Output: as above Output: baud rate clock of the transmitter inter 8256AH As an output, RxC outputs a low-to-high transition at sampling time of every data bit of a character. Thus, data can be loaded, e.g., into a shift register externally. The transition occurs only if data bits of a character are present. It does not occur for start, parity, and stop bits (RxC = high). As an output, TxC outputs the internal baud rate cio"ck of the transmitter. There will be a high-to-Iow transition at every beginning of a bit. CO, C1-SYSTEM CLOCK PRESCAlER (BITS 4, 5) Bits 4 and 5 define the system clock prescaler divider ratio. The internal operating frequency of 1.024 MHz is derived from the system clock. C1 CO Divider Ratio Clock at Pin ClK 0 0 5 5.12 MHz 0 1 3 3.072 MHz 1 0 2 2.048 MHz 1 1 1 1.024 MHz any bits which were high. If any bit 0-6 is low, no change occurs to that bit. When command Register 3 is read, bits 0, 3, and 7 will always be zero. RST-RESET If RST is set, the following events occur: 1. All bits in the Status Register except bits 4 and 5 are cleared, and bits 4 and 5 are set. 2. The Interrupt Enable, Interrupt Request, and Interrupt Service Registers are cleared. Pending requests and indications for interrupts in service will be cancelled. Interrupt signal INT will go low. 3. The receiver and transmitter are reset. The transmitter goes idle (TxD is high), and the receiver enters start bit search mode. 4. If Port 2 is programmed for handshake mode, IBF and OBF are reset high. RST does not alter ports, data registers or command registers, but it halts any operation in progress. RST is automatically cleared. RST = 0 has no effect. The reset operation triggered by Command Register 3 is a subset of the hardware reset. EP-EVEN PARITY (BIT 6) TBRK-TRANSMIT BREAK EP = 0: Odd parity EP = 1: Even parity The transmission data output TxD will be set low as soon as the transmission of the previous character has been finished. It stays low until TBRK is cleared. The state of CTS is of no significance for this operation. As long as break is active, data transfer from the Transmitter Buffer to the Transmitter Register will be inhibited. As soon as TBRK is reset, the break condition will be deactivated and the transmitter will be re-enabled. PEN-PARITY ENABLE (BIT 7) Bit 7 enables parity generation and checking. PEN PEN = = 0: No parity bit 1: Even parity bit The parity bit according to Command Register 2 bit 6 (see above) is inserted between the last data bit of a character and the first or only stop bit. The parity bit ischecked during reception. A false parity bit generates an error indication in the Status Register and an Interrupt Request on Level 4. Command Register 3 ISET IRxE IIAE I NIW I END I SBRK I TBRK I RST I (2R) (2W) Command Register 3 is different from the first two registers because it has a bit set/reset capability. Writing a byte with Bit 7 high sets any bits which were also high. Writing a byte with Bit 7 low resets SBRK-SINGlE CHARACTER BREAK This causes the transmitter data to be set low for one character including start bit, data bits, parity bit, and stop bits. SBRK is automatically cleared when time for the last data bit has passed. It will start after the character in progress completes, and will delay the next data transfer from the Transmitter Buffer to the Transmitter Register until TxD returns to an idle (marking) state. If both TBRK and SBRK are set, break will be set as long as TBRK is set, but SBRK will be cleared after one character time of break. If SBRK is set again, it remains set for another character. The user can send a definite number of break characters in this manner by clearing TBRK after setting SBRK for the last character time. 6-117 8256AH P2C2,P2C1, P2Co-PORT 2 CONTROL END-END OF INTERRUPT If fully nested interrupt mode is selected, this bit resets the currently served interrupt level in the Interrupt Service Register. This command must occur at P2C2 P2C1 P2CO the end of each interrupt service routine during fully nested interrupt mode. END is automatically cleared when the Interrupt Service Register (internal) is cleared. END is ignored if nested interrupts are not enabled. NIE-NESTED INTERRUPT ENABLE Mode Direction Upper Lower a a a a a a a Nibble Input Input 1 Nibble Input Output 1 a Nibble Output Input 1 1 Nibble Output Output 1 a a Byte Handshake Input 1 a 1 Byte Handshake Output 1 1 a 1 1 1 When NIE equals 1, the interrupt controller will operate in the nested interrupt mode. When NIE equals 0, the interrupt controller will operate in the normal interrupt mode. Refer to the "Interrupt controller" section of AP-153 under "Normal Mode" and "Nested Mode" for a detailed description of these operations. NOTE: IAE-INTERRUPT ACKNOWLEDGE ENABLE If Port 2 is operating in handshake mode, Interrupt Level 7 is not available for Timer 5. Instead it is assigned to Port 2 :handshaking. This bit enables an automatic response to INTA. The particular response is determined by the 8086 bit in Command Register 1. DO NOT USE Test CT2, CT3-COUNTER/TIMER MODE Bit 3 and 4 defines the mode of operation of event counter/timers 2 and 3 regardless of its use as a single unit or as a cascaded one. RxE-RECEIVE ENABLE This bit enables the serial receiver and its associated status bits in the status register. If this bit is reset, the serial receiver will be disabled and the receive status bits will not be updated. Note that the detection of break characters remains enabled while the receiver is disabled; i.e., Status Register Bit 3 (BO) will be set while the receiver is disabled whenever a break character has been recognized at the receive data input RxO. If CT2 or CT3 are high, then counter/timer 2 or 3 respectively is configured as an event counter on bit 2 or 3 respectively of Port 1 (pins 37 or 36). The event counter decrements the count by one on each low-to-high transition of the external input. If CT2 or CT3 is low, then the respective counter/timer is configured as a timer and the Port 1 pins are used for parallel I/O. T5C-TIMER 5 CONTROL SET-BIT SET/RESET If this bit is high during a write to Command Register 3, then any bit marked by a high will set. If this bitis low, then any bit marked by a high will be cleared. MODE REGISTER IT351 T241 T5C ICT31 CT21 P2C21 P2C1 IP2CO I (3R) (3W) If test mode is selected, the output from the internal baud rate generator is placed on bit 4 of Port 1 (pin 35). To achieve this, it is necessary to program bit 4 of Port 1 as an output (Port 1 Control Register Bit P14 = 1), and to program Command Register 2 bits B3BO with a value :? 3H. If T5C is set, then Timer 5 can be preset and started by an external signal. Writing to the Timer 5 register loads the Timer 5 save register and stops the timer. A high-to-Iow transition on bit 5 of Port 1 (pin 34) loads the timer with the saved value and starts the timer. The next high-to-Iow transition on pin 34 re: triggers the timer by reloading it with the initial value and continues timing. Following a hardware reset, the save register is reset to OOH and both clock and trigger inputs are disabled. Transferring an instruction with T5C = 1 en c abies the trigger input; the save register can now be loaded with an initial value. The first trigger pulse causes the initial value to be loaded from the save register and enables the counter to count down to zero. When the timer reaches zero it issues an interrupt request, disables its interrupt level and continues 6-118 inter 8256AH counting. A subsequent high-to-Iow transition on pin 5 resets Timer 5 to its initial value. For another timer interrupt, the Timer 5 interrupt enable bit must be set again. Single event counters/timers generat~ an interrupt request on the transition from 01 H to OOH, while cascaded ones generate it on the transition from 0001 H to OOOOH. T35, T24-CASCADE TIMERS Port 1 Control Register IP17 I P16 I P15 I P14 I P13 I P12 I P11 I P10 I These two bits cascade Timers 3 and 5 or 2 and 4. Timers 2 and 3 are the lower bytes, while Timers 4 and 5 are the upper bytes. It T5C is set, then both Timers 3 and 5 can be preset and started by an external pulse. When a high-to-Iow transition occurs, Timer 5 is preset to its saved value, but Timer 3 is always preset to all ones. If either CT2 or CT3 is set, then the corresponding timer pair is a 16-bit event counter. A summary of the counter/timer control bits is given in Table 3. NOTE: Interrupt levels assigned to single counters are partly not occupied if event counters/timers are cascaded. Level 2 will be vacated if event counters/timers 2 and 4 are cascaded. Likewise, Level 7 will be vacated if event counters/timers 3 and 5 are cascaded; (4R) (4W) Each bit in the Port 1 Control Register configures the direction of the corresponding pin. If the bit is high, the pin is an output, and if it is low the pin is an input. Every Port 1 pin has another function which is controlled by other registers. If that special function is disabled, the pin functions as a general I/O pin as specified by this register. The special functions for each pin are described below. Port 10, 11-HANDSHAKE CONTROL If byte handshake control is enabled for Port 2 by the Mode Register, then Port 10 is programmed as STB/ ACK handshake control input, and Port 11 is programmed as IBF/OBF handshake control output. If byte handshake mode is enabled for output on Port 2 OBF indicates that a character has been loaded into the Port 2 output buffer. When an external Table 3. Event Counters/Timers Mode of Operation Event Counter/ Timer 1 2 2 4 5 2 and4 cascaded 3 and"5 cascaded Programming (Mode Word) Function - 8-bittimer 8-bit timer 8-bit event counter 8-bit timer 8-bit event counter 8-bittimer 8-bit timer, normal mode 8-bit timer, retriggerable mode 16-bit timer 16-bit event counter 16-bit timer, normal mode 16-bit event counter, normal mode 16-bit timer, retrig"gerable mode = =1 0, CT3 = 0, CT3 = 1 Internal clock Internal clock P12 pin 37 Internal clock P13 pin 36 Internal clock Internal clock T24 T35 T35 = 0, T5C = 1 Internal clock T24 T24 T35 CT3 T35 CT3 T35 CT3 T35 CT3 = 1, CT2 = 1, CT2 = 1, T5C = = 1, T5C = 1 = 1, T5C = = 1, T5C = 1 =0 = 1 = 0, Internal clock P12 pin 37 Internal clock = 0, P13 pin 36 = 1, Internal clock = 1, P13 pin 36 T35 T35 6-119 ° ° = = = = = = T24 T24 16-bit event counter, retriggerable mode Clock Source 0, CT2 0, CT2 ° 0, T5C ° ° = ° 8256AH device reads the data, it acknowledges this operation by driving ACK low. OBF is set low by writing to Port 2 and is reset by ACK. Interrupt Enable Register I L7 I L6. I L5 I L4 I L3 I L2 If ~handshake mode is enabled for input on Port 2, STB is an input. IBF is driven low after STB goes low. On the rising edge of STB the data from Port 2 is latched. IBF is reset high when Port 2 is read. PORT 12, 13-COUNTER 2, 3 INPUT If Timer 2 or Timer 3 is programmed as an event counter by the Mode Register, then Port 12 or Port 13 is the counter input for Event Counter 2 or 3, respectively. Priority Highest If test mode is enabled by the Mode Register and Command Register 2 baud rate select is greater than 2, then Port 14 is an output from the internal baud rate generator. LO L1 L2 L3 L4 L5 L6 L7 Lowest Source Timer 1 Timer 2 or Port Interrupt External Interrupt (EXTINT) Timer 3 or Timers 3 & 5 Receive Interrupt Transmitter Interrupt Timer 4 or Timers 2 & 4 Timer 5 or Port 2 Handshaking Interrupt Address Register 101010lo41oUJ1o . (SR) PORT 15-TIMER 5 TRIGGER ,I 0 I Interrupt Level Indication 230759-4 If T5C is set in the Mode Register enabling a retriggerable timer, then Port 15 is the input which starts and reloads Timer 5. A high-to-Iow transition on P15 (Pin 34) loads the timer with the slave register and starts the timer. PORT 16-BREAK-IN DETECT If Break-In Detect is enabled by BRKI in Command Register 1, then this input is used to sense a BreakIn. If Port 16 is low while the serial transmitter is sending the last stop bit, then a Break-In condition is signaled. . Reading the interrupt address register transfers an identifier for the currently requested interrupt level on the system data bus. This identifier is the number of the interrupt level multiplied by 4. It can be used by the CPU as an offset address for interrupt handling. Reading the interrupt address register has the same effect as. a hardware interrupt acknowledge' INTA; it clears the interrupt request pin (INT) and indicates an interrupt acknowledgem.ent to the interrupt controller. Receiver and Transmitter Buffer I 07 I 06 I 05 I 04 I 03 I· 02 I 01 I DO PORT 17-PORT INTERRUPT SOURCE (7R) If BITI in Command Register 1 is set, then a low-tohigh transition on Port 17 generates an interrupt request on Priority Level 1. Port 17 is edge triggered. LO Interrupts are enabled by writing to the Set Interrupts Register (5W). Interrupts are disabled by writing to the Reset Interrupts Register (6W). Each bit set by the Set Interrupts Register (5W) will enable that level interrupt, and each bit set in the Reset Interrupts Register (6W) will disable that level interrupt. The user can determine which interrupts are enabled by reading the Interrupt Enable Register (5R). PORT 14-BAUD RATE GENERATOR OUTPUT CLOCK P14 in Port 1 control register must be set to 1 for the baud . rate generator clock to be output. The baud rate generator clock is 64 x the serial bit rate excet at 19.2 Kbps when it is 32 x the bit rate. L1 (5W = enable, 6W = disable) (5R) (7W) Both the receiver and transmitter in the MUART are double buffered. This means that the transmitter and receiver have a shift register and a buffer register. The buffer registers are directly addressable by reading or writing to register seven. After the receiver buffer is full, the RBF bit in the status register is set. 6-120 inter 8256AH Reading the receive buffer clears the RBF status bit. The transmit buffer should be written to only if the TBE bit in the status register is set. Bytes written to the transmit buffer are held there until the transmit shift register is empty, assuming CTS is low. If the transmit buffer and shift register are empty, writing to the transmit buffer immediately transfers the byte to the transmit shift register. If a serial character length is less than a bits, the unused most significant bits are set to zero when reading the receive buffer, and are ignored when writing to the transmit buffer. Port 1 07 06 05 04 03 (SR) 02 01 05 04 03 (9R) 02 01 DO (9W) Writing to Port 2 sets the data in the Port 2 output latch. Writing to an input pin does not affect the pin, but it does store the data in the latch. Reading Port 2 puts the input pins onto the bus or the contents of the output latch for output pins. Timer 1...;.5 I 07 I 06 I 05 04 03 02 01 liNT I RBF I TBE I TRE I BO I PE I OE I FE I (OF16R) Reading the status register gates its contents onto the data bus. It holds the operational status of the serial interface as well as the status of the interrupt in INT. The status register can be read at any time. The flags are stable and well defined at all instants. . FE-FRAMING ERROR, TRANSMISSION MODE (aw) Port 2 06 Status Register DO Writing to Port 1 sets the data in the Port 1 output latch. Writing to an input pin does not affect the pin, but the data is stored and will be output if the direc,tion of the pin is changed later. If the pin is used as a control signal, the pin will not be affected, but the data is stored. Reading Port 1 transfers the data in Port 1 onto the data bus. 07 The timer/counter interrupts are automatically disabled when the interrupt request is generated. DO Bit 0 can be used in two modes. Normally, FE indicates framing error which can be changed to transmission mode indication by setting the TME bit in the modification register. If transmission mode is disabled (in Modification Register), then FE indicates a framing error. A framing error is detected during the first stop bit. The error is reset by reading the Status Register or by a chip reset. A framing error does not inhibit the loading of the Receiver Buffer. If RxO remains low, the receiver will assemble the next character. The false stop bit is treated as the next start bit, and no highto-low transition on RxO is required to synchronize the receiver. When the TME bit in the Modification Register is set, FE is used to indicate that the transmitter was active during the reception of a character, thus· indicating that the character received was transmitted by its own transmitter. FE is reset when the transmitter is not active during the reception of character. Reading the status register will not reset the FE bit in the transmission mode. Reading Timer N puts the contents of the timer onto the da~a bus. If the counter changes while RO is low, the value on the data bus will not change. If two timers are cascaded, reading the high-order byte will cause the low-order byte to be latched. Reading the low-order byte will unlatch them both. Writing to either timer or decascading them also clears the latch condition. Writing to a timer sets the starting value of that timer. If two timers are cascaded, writing to the high-order byte presets the low-order byte to all ones. Loading only the high-order byte with a value of X leads to a count of X *256 + 255. Timers count down continuously. If the interrupt is enabled, it occurs when the counter changes from 1 to o. 6-121 OE-OVERRUN ERROR If the user does not read the character in the Receiver Buffer before the next character is received and transferred to this register, then the OE bit is set. The OE flag is set during the reception of the first stop bit and is cleared when the Status Register is read or when a hardware or software reset occurs. The first character received in this case will be lost. PE-PARITY ERROR This bit indicates a parity error has occurred during the reception of a character. A parity error is present inter 8256AH if value of the parity bit in the received character is different from the one expected according to command word 2 bits 6 EP. The parity bit is expected and checked only if it is enabled by command word 2 bit 7 PEN. A parity error is set during the first stop bit and is reset by reading the Status Register or by a chip reset. TBE-TRANSMITTER BUFFER EMPTY TBE indicates the Transmitter Buffer is empty and is ready to accept a character. TBE is set by a chip reset or the transfer of data to the Transmitter Register, and is cleared when a character is written to the transmitter buffer. When TBE is set, an interrupt request is generated on Level 5 if enabled. RBF-RECEIVER BUFFER FULL BD-BREAK/BREAK-IN The BD bit flags whether a break character has been received, or a Break-In condition exists on the transmission line. Command Register 1 Bit 3 (BRKI) enables the Break-In Detect function. Whenever a break character has been received, Status Register Bit 3 will be set and in addition an interrupt request on Level 4 is generated. The receiver will be idled. It will be started again with the next high-to-Iow transition at pin RxD. The break character received will not be loaded into the receiver buffer register. If Break-In Detection is enabled and a Break-In condition occurs, Status Register Bit 3 will be set and in addition an interrupt request on Level 5 is generated. . The BD status bit will be reset on reading the status register or on a hardware or software reset. For more information on Break/Break-In, refer to the "Serial Asynchronous Communication" section of AP-153 under "Receive Break Detect" and "BreakIn Detect." RBF is set when the Receiver Buffer has been loaded with a new character during the sampling of the first stop bit. RBF is cleared by reading the receiver buffer or by a chip reset. INT-INTERRUPT PENDING The INT bit reflects the state of .the INT Pin (Pin 15) and indicates an interrupt is pending. It is reset by INTA or by reading the Interrupt Address Register if only one interrupt is pending and by a chip reset. FE, DE, PE, RBF, and Break Detect all generate a Level 4 interrupt when the receiver samples the first stop bit. TRE, TBE, and Break-In Detect generate a Level 5 interrupt. TRE generates an interrupt when TBE is set and the Transmitter Register finished transmitting. The Break-In Detect interrupt is issued at the same time as TBE or TRE. MODIFICATION REGISTER o I RS41 RS3 IRS2 IRS1 IRSO ITME IDSC I (OF16W) DSC-DISABLE START BIT CHECK TRE-TRANSMIT REGISTER EMPTY When TRE is set the transmit register is empty and an interrupt request is generated on Level 5 if enabled. When TRE equals O.the transmit register is in the process of sending data. TRE is set by a chip reset and when the last stop bit has left the transmitter. It is reset when a character is loaded into the Transmitter Register. If CTS is low, the Transmitter Register will be loaded during the transmission of the start bit. If CTS is high at the end of a character, TRE will remain high and no character will be loaded into the Transmitter Register until CTS goes low. If the transmitter was inactive before a character is loaded into the Transmitter Buffer, the Transmitter Register will be empty temporarily while the buffer is full. However, the data in the buffer will be transferred to the transmitter register immediately and TRE will be cleared whileTBE is set. DSC disables the receivers start bit check. In this state the receiver will not be reset if RxD is not low at the center of the start bit. TME-TRANSMISSION MODE ENABLE TME enables transmission mode and disables framing error detection. For information on transmission mode see the description of the framing error bit in the status register. RSO, RS1, RS2, RS3, RS4-RECEIVER SAMPLE TIME The number in RSn alters when the receiver samples RxD. The receiver sample time can be modified only if the receiver is not clocked by RxC. 6-122 8256AH NOTE: The modification register cannot be read. Reading from address OFH, 8086: 1EH gates the contents of the status register onto the data bus. Reset has no effect on the contents of receiver buffer register, transmitter buffer register, the intermediate latches of parallel ports, and event counters/timers, respectively. A hardware reset (reset, Pin 12) resets all modification register bits to 0, Le.: • The start bit check is enabled. • Status Register Bit 0 (FE) indicates framing error. • The sampling time of the serial receiver is the bit center. A software reset (Command Word 3, RST) does not affect the modification register. Hardware Reset A reset signal on pin RESET (HIGH level) forces the device 8256 into a well-defined initial state. This state is characterized as follows: 1) Command registers 1, 2 and 3, mode register, Port 1 control register, and modification register are reset. Thus, all bits of the parallel interface are set to be intputs and event counters/timers are configured as independent 8-bit timers. 2) Status register bits are reset with the exception of bits 4 and 5. Bits 4 and 5 are set indicating that both transmitter register and transmitter buffer register are empty. 3) The interrupt mask, interrupt request, and interrupt service register bits are reset and disable all requests. As a consequence, interrupt signal INT IS INACTIVE (LOW). 4) The transmit data output is set to the marking state (HIGH) and the receiver section is disabled until it is enabled by Command Register 3 Bit 6. 5) The start bit will be checked at sampling time. The receiver will return to start bit search mode if input RxD is not LOW at this time. 6) Status Register Bit 0 implies framing error. 7) The receiver samples input RxD at bit center. 6-123 Point of Time Between Start of Bit and End of RS4 RS3 RS2 RS1 RSO Bit Measured in Steps of %2 Bit Length 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 (Start of Bit) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (Bit center) 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 (End of Bit) 8256AH ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias ...... O°C to 70°C Storage Temperature .......... - 65°C to + 150°C Voltage On Any Pin with Respect to Ground .......... - 0.5V to + 7V Power Dissipation ........................... 1W 'Notice: Stresses above those listed under '~bso lute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for extended periods may affect device reliability. NOTICE Specifications contained within the following tables are subject to change. D.C. CHARACTERISTICS Symbol TA = 0°Ct070°C, Vee = +5.0V ±10% Min Max Units Input Low Voltage -0.5 0.8 V VIH Input High Voltage 2.0 Vee + 0.5 V VOL Output Low Voltage 0.45 V VOH Output High Voltage IlL Input Leakage 10 -10 JkA JkA VIN = Vee VIN = OV ILO Output Leakage 10 -10 JkA JkA VOUT VOUT lee Vee Supply Current 160 mA CIN Input Capacitance 10 pF fc ClIO I/O Capacitance 20 pF Unmeasured Pins Returned to VSS(1) VIL Parameter Test Conditions IOL = 2.5 mA V 2.4 IOH = - 400 JkA = Vee = 0.45V = 1 MHz(1) NOTE: 1. Sampled, not 100% tested. TA = 25°e. A.C. CHARACTERISTICS Symbol TA = O°C to 70°C, Vee = + 5.0V -+ 10%, GND = OV 8256AH Parameter Min Max I Units BUS PARAMETERS tLL ALE Pulse Width 50 ns tesL CS to ALE Setup Time 0 ns tAL Address to ALE Setup Time 20 ns tLA Address Hold Time after ALE 25 ns tLe ALE to RD/WR 20 ns tee RD, WR, INTA Pulse Width 200 ns tRD Data Valid from RD(1) 120 6-124 ns intJ 8256AH A.C. CHARACTERISTICS TA = O°C to 70°C, VCC = + 5.0V ± 10%, GND = OV (Continued) 8256AH Symbol Parameter Min Units Max BUS PARAMETERS (Continued) 50 ns tOF Data Float after RD (2) tow Data Valid to WR 150 two Data Valid after WR 50 ns tCl RD/WR Control to Latch Enable 25 ns tLDR ALE to Data Valid tRST Reset Pulse Width 300 ns tRY Recovery Time between RD/WR 500 ns ns 150 ns TIMER/COUNTER PARAMETERS tCPI Counter Input Cycle Time (P12, P13) 2.2 fLs tCPWH Counter Input Pulse Width High 1.1 fLs tCPWL Counter Input Pulse Width Low 1.1 tTPI Counter Input i to INT i at Terminal Count fLs 2.75 fLs tTIH LOAD Pulse High Time Counter 5 1.1 fLs tTll LOAD Pulse Low Time Counter 5 1.1 fLs tpp Counter 5 Load before Next Clock Pulse on P13 tCR External Count Clock i to RD Reflected in Count tRC RD i to External Count Clock i to Ensure Clock is not Reflected in Count tcw External Count Clock i to WR Written is Not Decremented twc WR i to External Count Clock to Ensure Count Written is Decremented t i to Ensure Clock is to Ensure Count 1.1 fLs 2.2 fLs 0 ns 2.2 fLs 0 ns INTERRUPT PARAMETERS tOEX EXTINT i to INT i 200 tOPI Interrupt Request on P17 i to INT i tpi Pulse Width of Interrupt Request on P17 tHEA INTA i or RD i to EXTINT tHIA INTA i or RD i to INT 2tCy+500 t ns ns tCY+ 100 30 t ns ns ~ 300 fLs 1000 ns SERIAL INTERFACE AND CLOCK PARAMETERS tCY Clock Period 195 tCLKH Clock High Pulse Width 65 ns tClKl Clock Low Pulse Width 65 ns tR Clock Rise Time 20 ns tF Clock Fall Time 20 ns 6-125 inter 8256AH A.C. CHARACTERISTICS T A = O°C to 70°C , VCC = + 5 OV + - 10% GND = OV (Continued) Symbol 8256AH Parameter Min Units Max SERIAL INTERFACE AND CLOCK PARAMETERS (Continued) tSCY Serial Clock Period (4) 975 ns tspo Serial Clock High (4) 350 ns tspw Serial Clock Low (4) 350 ns tSTD Internal Status Update Delay from Center of Stop Bit (5) 300 ns tOTX TxC to TxD Data Valid 300 ns tlRSF INT Delay from Center of First Stop Bit 2tCy+500 ns tlTSE INT Delay from Falling Edge of Transmit Clock at End of Start Bit 2tCy+500 ns tCTS Pulse Width for Single Character Transmission 0 ns (6) PARALLEL 1/0 PORT PARAMETERS twp WR j to P1/P2 Data Valid tpR P1/P2 Data Stable before RD J- (7) 300 ns tRP P1/P2 Data Hold Time 50 ns tAK ACK Pulse Width 150 ns tST Strobe Pulse Width tSIB ns tps Data Setup to STB j 50 ns tpH Data Hold after STB j 50 twos WRj toOBFj tAOS ACK tSIB STB J- to OBF JJ- to IBF J- ns 250 ns 250 ns 250 ns tRI RDj to IBFt 250 ns tSIT STB j to INTj 2tCY +500 ns tAIT ACK j to INTj 2tCY +500 ns tAEO OBF J- to ACK J- Delay 0 NOTES: 1. CL = pF all outputs. 2. Measured from logic "one" or "zero" to 1.5V at CL = 150 pF. 3. P12, P13 are external clock inputs. 4. Note that Rxe may be used as an input only in 1 x mode, otherwise it will be an output. 5. The center of the Stop Sit will be the receiver sample time, as programmed by the modification register. 6. V,sth bit length for 32x, 64X;100 ns for 1 x. 7. To ensure tAD spec is met. 6-126 ns intJ 8256AH WAVEFORMS A.C. TESTING INPUT, OUTPUT WAVEFORM 2.4=X 0.45 2.0 2.0 TEST POINTS _ 0.8 A.C. TESTING LOAD CIRCUIT )C 0.8 _ 230759-5 A.C. lesling: Inpuls are driven al 2.4V for a Logic "1" and 0.45V for a Logic "0". Timing measuremenls are made al 2.0V for a Logic "1" and 0.8V for a Logic "0". 230759-6 CL = 150 pF CL Includes Jig Capacitance SYSTEM CLOCK elK tR 230759-7 WRITE CYCLE DB 0-7 A 0·3 cs ALE Wii 230759-8 READ CYCLE DB 0·7 A 0-3 Cs' ALE AD (INTA) 230759-9 6·127 inter 8256AH WAVEFORMS (Continued) PARALLEL PORT HANDSHAKING-INPUT MODE P P 20-27 to . II (STB) P tt (IBF) t RI INT --------------------~I~\----------~ DB A 0-7 O-J ---_::x DATA. VALID >-230759-10 PARALLEL PORT HANDSHAKING-oUTPUT MODE DB 0-7 A 0-3 WA P . .:x,__.....;)- X"'------....,~:\I~-- --./"\ --v ~:[i6 ~-------------~~----~I'~---------------- tt (OBF) P to (ACK) INT INTAOA AD -''"-11 r>rr-1-' r'"" ========:============:~~-~--->¢S WP OUTPUT ----------.... P __________.... 20-27 ------------\,) DATA VALID ,~_____,\-_______________ 230759-11 6-128 inter 8256AH COUNT PULSE TIMINGS P12 • P13 (COUNTER INPUT) INT 230759-12 LOADING TIMER (OR CASCADED COUNTER/TIMER 3 AND 5) P13 (COUNTER INPUT) P15 (COUNTER INPUT) INT 230759-13 TRIGGER PULSE FOR TIMER 5 (CASCADED EVENT COUNTER/TIMER 3 AND 5) P15 (TRIGGER INPUT) 230759-14 COUNTER TIMER TIMING EXTERNAL CLOCK (P12, P13) 'we 230759-15 OUTPUT FROM PORT 1 AND PORT 2 DB 0-7 ____________J~~__D_A_TA_V_A_LI_D__J~~______________ A 0-3 OUTPUT ' . . . ----~.~~Ior------ Pl0·17, P20·27 230759-16 6-129 inter 8256AH INPUT FROM PORT 1 AND PORT 2 INPUT PII1-17. P211-27 _ _ _ __ >t- . lM'{ DB0.7 Ao-o _ _ _ _ _ _ _ _ _ _J x DATA VALID )>------230759-17 INTERRUPT TIMING INTAORRD x _ _ _ _ _ _ _ _ _ _ _ _ _..J DATA )>---230759-18 . CTS FOR _SINGLE CHARACTER TRANSMISSION I 230759-19 RESET TIMING I ..... 230759-20 6-130 8256AH EXTERNAL BAUD RATE CLOCK FOR SERIAL INTERFACE TxC (64 X AND 32 BAUD RATE INPUT -iISPW): ISPOS I : / ~_...J ~---SCV 230759-21 TRANSMITTER AND RECEIVER CLOCK FROM INTERNAL CLOCK SOURCE _112 ICCV_..J~_1/2 ICCV- TXC,RxC (OUTPUT) "'1'----/ ~r----- ~_.,--ICCV= l/BAUDAATE_ 230759-22 TRANSMISSION OF CHARACTERS ON SERIAL INTERFACE STATUS REGISTER BIT 5 (TBE) STATUS REGISTER BIT 4 (TRE) INT (LEVEL 5) TxD 230759-23 NOTES: 1. Load transmitter buffer register. 2. Transmitter buffer register is empty. 3. Transmitter register is empty. 4. Character format for this example: 7 Data Bits with Parity Bit and 2 Stop Bits. 5. Loading of transmitter buffer register must be complete before CTS goes low. 6. Interrupt due to transmitter buffer register empty. 7. Interrupt due to transmitter register empty. No status bits are altered when RD is active. 6-131 8256AH DATA BIT OUTPUT ON SERIAL INTERFACE ToC (1 ~ BAUD RATE INPUT) T.C (84 ~ BAUD RATE INPUT) TXC (32 x BAUD RATE INPUT) ToD ~-----DATA 8IT-------IOoI 230759-24 CONTINUOUS RECEPTION OF CHARACTERS ON SERIAL INTERFACE WITHOUT ERROR CONDITION CHARACTER RxD 1) Wii 2) CHARACTER CHARACTER CHARACTER CHARACTER COMMAND REGISTER BIT 6 (RoE) STATUS REGISTER BIT 6 (RBF) INT (LEVEL 4) AD 4) CHARACTER CHARACTER CHARACTER 230759-25 NOTES: 1. 2. 3. 4. Character format for this exainple: 6 data bits with parity bit and one stop bit. Set or reset bit 6 of command register 3 (enable receiver). Receiver buffer located. Read receiver buffer register. 6-132 inter 8256AH ERROR CONDITIONS DURING RECEPTION OF CHARACTERS ON THE SERIAL INTERFACE CHARACTER RxD CHARACTER CHARACTER CHARACTER CHARACTER I) STATUS REGISTER 2) BIT 6 (RBF) INT (LEVEL 4) STATUS REGISTER BIT 1 (DE) 3) ... ------t+--~= STATUS REGISTER BIT 0 (FE) FRAMING ERROR 230759-26 NOTES: 1. Character format for this example: 6 data bits without parity and one stop bit. 2. Receiver buffer register loaded. 3. Overrun error. 4. Framing error. 5. Interrupt from receiver buffer register loading. 6. Interrupt from overrun error. 7. Interrupt from framing error' and loading receiver buffer register. No status bits are altered when RD is active. 6-133 8279/8279-5 PROGRAMMABLE KEYBOARD/DISPLAY INTERFACE 16-Character Display • Single Right or Left Entry 16-Byte Display Keyboard Display • Simultaneous Operations Keyboard Mode • Scanned Sensor Mode • Scanned Strobed Input Entry Mode • 8-Character Keyboard FIFO • 2-Key Lockout or N-Key Rollover with • Contact Debounce • Dual 8- or 16-Numerical Display • RAM Mode Programmable from CPU • Programmable Scan Timing • Interrupt Output.on Key Entry • Available in EXPRESS • - Standard Temperature Range - Extended Temperature Range The Intel® 8279 is a general purpose programmable keyboard and display I/O interface device designed for use with Intel® microprocessors. The keyboard portion can provide a scanned interface to a 64-contact key matrix. The keyboard portion will also interface to an array of sensors or a strobed interface keyboard, such as the hall effect and ferrite variety. Key depressions can be 2-key lockout or N-key rollover. Keyboard entries are debounced and strobed in an 8-character FIFO. If more than 8 characters are entered, overrun status is set. Key entries set the interrupt output line to the CPU. The display portion provides a scanned display interface for LED, incandescent, and other popular display technologies. Both numeric and alphanumeric segment displays may be used as well as simple indicators. The 8279 has 16x8 display RAM which can be organized into dual 16x4. The RAM can be loaded or interrogated by the CPU. Both right entry, calculator and left entry typewriter display formats are possible. Both read and write of the display RAM can be done with auto-increment of the display RAM address. TVcc IRQ ~) ,/ " Rlo 7 ~ DAT~ BUS . SHIFT RO Wii CNTl/STB KEY DATA • . ..1\. . AO SLOJ 4 . OUT AOJ 4 RESET I eLK ... SCAN )... RL, Cll< RLo IRQ CNTlISTB RL. SHIFT RLs SL3 RL. Sl2 Rl7 Sl, Slo AD QUT Bo WR OUT B, DBa OUT B2 DB, OUT B3 DB, OUT Ao DB3 OUT A, DB. qUT A2 DBs OUT A) DB. m ii!j DB7 CS I Vss Ao OUT SOl 4 ) DISPLAY DATA V J:- VCC RL) RESET CPU INTERFACE B RL, 290123-2 Vss 290123-1 Figure 2. Pin Configuration Figure 1. Logic Symbol 6-134 September 19B7 Order Number: 290123·002 inter 8279/8279-5 HARDWARE DESCRIPTION The 8279 is packaged in a 40 pin DIP. The following is a functional description of each pin. Table 1. Pin Description Symbol DBo-DB7 Pin No. 19-12 Name and Function BI-D1RECTIONAL DATA BUS: All data and commands between the CPU and the 8279 are transmitted on these lines. ClK 3 CLOCK: Clock from system used to generate internal timing. RESET 9 RESET: A high signal on this pin resets the 8279. After being reset the 8279 is placed in the following mode: 1) 16 8-bit character display-left entry. 2) Encoded scan keyboard-2 key lockout. Along with this the program clock prescaler is set to 31. CS 22 CHIP SELECT: A low on this pin enables the interface functions to receive or transmit. Ao 21 BUFFER ADDRESS: A high on this line indicates the signals in or out are interpreted as a command or status. A low indicates that they are data. RD,WR IRQ 10-11 INPUT/OUTPUT READ AND WRITE: These signals enable the data buffers to either send data to the external bus or receive it from the external bus. 4 INTERRUPT REQUEST: In a keyboard mode, the interrupt line is high when there is data in the FIFO/Sensor RAM. The interrupt line goes low with each FIFO/Sensor RAM read and returns high if there is still information in the RAM. In a sensor mode, the interrupt line goes high whenever a change in a sensor is detected. Vss,Vcc 20,40 GROUND AND POWER SUPPLY PINS. Slo-Sl3 32-35 SCAN LINES: Scan lines which are used to scan the key switch or sensor matrix and the display digits. These lines can be either encoded (1 of 16) or decoded (1 of 4). Rlo-Rl7 38,39, RETURN LINE: Return line inputs which are connected to the scan lines 1,2,5-8 through the keys or sensor switches. They have active internal pull ups to keep them high until a switch closure pulls one low. They also serve as an 8bit input in the Strobed Input mode. SHIFT 36 SHIFT: The shift inpllt status is stored along with the key position on key closure in the Scanned Keyboard modes. It has an active internal pullup to keep it high until a switch closure pulls it low. CNTl/STB 37 CONTROL/STROBED INPUT MODE: For keyboard modes this line is used as a control input and stored like status on a key closure. The line is also the strobe line that enters the data into the FIFO in the Strobed Input mode. (Rising Edge). It has an active internal pullup to keep it high until a switch closure pulls it low. OUT Ao-OUT A3 OUT Bo-OUT B3 BD 27-24 31-28 23 OUTPUTS: These two ports are the outputs for the 16 x 4 display refresh registers. The data from these outputs is synchronized to the scan lines (SloSl3) for multiplexed digit displays. The two 4 bit ports may be blanked independently. These two ports may also be considered as one 8-bit port. BLANK DISPLAY: This output is used to blank the display during digit switching or by a display blanking command. 6-135 8279/8279-5 FUNCTIONAL DESCRIPTION I/O Control and Data Buffers Since data input and display are an integral part of many microprocessor designs, the system designer needs an interface that can control these functions without placing a large load on the CPU. The 8279 provides this function for 8-bit microprocessors. The I/O control section uses the CS, Ao, RD and WR lines to control data flow to and from the various internal registers and buffers. All data flow to and from the 8279 is enabled by CS. The character of the information, given or desired by the CPU, is identified by Ao. A logio one means the information is a command or status. AJQgic zero means the information is data. RD and WR determine the direction of data flow through the Data Buffers. The Data Buffers are bi-directional buffers that connect the internal·· bus to the external bus. When the chip is not selected (CS = 1), the devices are.!!:!..il h~ impedance state. The drivers input during WR • CS and output during RD • CS. The 8279 has two sections: keyboard and display. The keyboard section can interface to regular typewriter style keyboards or random toggle or thumb switches. The display section drives alphanumeric displays or a bank of indicator lights. Thus the CPU is relieved from scanning the keyboard or refreshing the display. The 8279 is designed to directly connect to the mi- . croprocessor bus. The CPU can program all operating modes for the 8279. These modes include: Input Modes Control and Timing Registers and Timing Control . • Scanned Keyboard-with encoded (8 x 8 key keyboard) or decoded (4 x 8 key keyboard) scan lines. A key depression generates a 6-bit encoding of key position. Position and shift and control status are stored in the FIFO. Keys are automatically debounced with 2-key lockout or N-key rollover. • Scanned Sensor Matrix-with encoded (8 x 8 matrix switches) or decoded (4 x 8 matrix switches) scan lines. Key status (open or closed) stored in RAM addressable by CPU. • Strobed Input-Data on return lines during control line strobe is transferred to FIFO. These registers store the keyboard and display modes and other operating conditions programmed by the CPU. The modes are programmed by pre~ senting the proper command on the data lines with Ao = 1 and then sending a WR. The command is latched on the rising edge of WR. The command is then decoded and the appropriate function is set. The timing control contains the basic timing counter chain. The first counter is a -;- N prescaler that can be programmed to yield an internal frequency of 100 kHz which gives a 5.1 ms keyboard scan time and a 10.3 ms debounce time; The other counters divide down the basic internal frequency to provide the proper key scan, row scan, keyboard matrix scan, and display scan times. Output Modes Scan Counter • 8 or 16 character multiplexed displays that can be organized as dual 4-bit or single 8-bit (Bo = Do, A3 = D7)· • . Right entry or left entry display formats. Other features of the 8279 include: • Mode programming from the CPU. • Clock Prescaler • Interrupt output to signal CPU when there is keyboard or sensor data available. • An 8 byte FIFOto store keyboard information. • 16 byte internal Display RAM for display refresh. This RAM can also be read by the CPU. The scan counter has two modes. In the encoded mode, the counter provides a binary count that must be externally decoded to provide the scan linesfor the keyboard and display. In the decoded mode, the scan counter decodes the least significant 2 bits and provides a decoded 1 of 4 scan. Note that when the keyboard is in decoded scan, so is the display. This means that only the first 4 characters in the Display RAM are displayed. In the encoded mode, the scan lines are active high outputs. In the decoded mode, the scan lines are active low outputs. PRINCIPLES OF OPERATION The following is a description of the major elements of the 8279 Programmable Keyboard/Display interface device. Refer to the block diagram in Figure 3. 6-136 ClK RESET AD DBD-7 WA CS D j DATA BUFFERS FIFO/SENSOR RAM STATUS 110 CONTROL r !! (Q c iil L a , CD :J III "/ c.J -..J - DISPLAY ADDRESS REGISTERS 0) ~ ... III 0n ;I\" C 7 INTERNAL-DATA BUS (81 L !» L.. ) V '---- 16.8 OISPlAY RAM CONTROL AND TIMING REGISTERS /' 1- I c» I\) ...... CD ...... 8.8 FIFO/SENSOR RAM I . ~ ...III k c» I\) TIMING AND CONTROL DISPLAY REGISTERS CD I UI /'>. 1 RETURN .: SCAN COUNTER J ...... KEYBOARD DEBOUNCE AND CONTROL t 3 ,-/7 ( IRO Ao /'?,. 8 'I OUT AO.3 ., 7 OUT B~3 liD 4 8 '7 "SLo.1 RLo.7 SHIFT CNTL/STB 290123-3 inter 8279/8279-5 Return Buffers and Keyboard Debounce and Control SOFTWARE OPERATION The 8 return lines are buffered and latched by the Return Buffers. In the keyboard mode, these lines are scanned, looking for key closures in that row. If the debounce circuit detects a closed switch, it waits about 10 ms to check if the switch remains closed. If it does, the address of the switch in the matrix plus the status of SHIFT and CONTROL are transferred to the FIFO. In the scanned Sensor Matrix modes, the contents of the return lines is directly transferred to the corresponding row of the Sensor RAM (FIFO) each key scan time. In Strobed Input mode, the contents of the return lines are transferred to the FIFO on the rising edge of the CNTLlSTB line pulse. 8279 Commands The following commands program the 8279 operating modes. The commands are sent on the Data Bus with CS low and Ao hi~and are loaded to the 8279 on the rising edge of WR. Keyboard/Display Mode Set MSB I 0 I 0 ,I Code: LSB 0 'I DID I K I K I K I Where DD is the Display Mode and KKK is the Keyboard Mode. FIFO/Sensor RAM and Status DO This block is a dual function 8 x 8 RAM. In Keyboard or Strobed Input modes, it is a FIFO. Each new entry is written into successive RAM positions and each is then read in order of entry. FIFO status keeps track of the number of characters in the FIFO and whether it is full or empty. Too many reads or writes will be recQfLnized as an error. The status can be read by an RD with CS low and Ao high. The status logic also provides an IRQ signal when the FIFO is not empty. In Scanned Sensor Matrix mode, the memory is a Sensor RAM. Each row of the Sensor RAM is loaded with the status of the corresponding row of sensor in the sensor matrix. In this mode, IRQ is high if a change in a sensor is detected. Display Address Registers and Display RAM o o o For description of right and left entry, see Interface Considerations. Note that when decoded scan is set in keyboard mode, the display is reduced to 4 characters independent of display mode set. KKK o 0 0 0 0 The Display Address Registers hold the address of the word currently being written or read by the CPU and the two 4-bit nibbles being displayed. The read/ write addresses are programmed by CPU command .. They also can be set to auto increment after each read or write. The Display RAM can be directly read by the CPU after the correct mode and address is set. The addresses for the A and B nibbles are automatically updated by the 8279 to match data entry by the CPU. The A and B nibbles can be entered independently or as one word, according to the mode that is set by the CPU. Data entry to the display can be set to either left or right entry. See Interface Considerations for details. 8 8-bit character display-Left entry 16 8-bit character display-Left entry' 8, 8-bit character display-Right entry 16 8-bit character display-Right entry 0 0 0 0 o o 0 1 o Encoded Scan Keyboard-2 Key Lockout' Decoded Scan Keyboard-2-Key Lockout Encoded Scan Keyboard-N-Key Rollover Decoded Scan Keyboard-N-Key RolIover Encoded Scan Sensor Matrix Decoded Scan Sensor Matrix Strobed Input, Encoded Display Scan Strobed Input, Decoded Display Scan 'Default after reset. Program Clock Code: I0 I0 P P P P I.p All timing and multiplexing signals for the 8279 are generated by an internal prescaler. This prescaler divides the external clock (pin 3) by a programmable integer. Bits PPPPP determine the value of this integer which ranges from 2 to 31. Choosing a divisor that yields 100 kHz will give the specified scan al")d 6-138 inter 8279/8279-5 debounce times. For instance, if Pin 3 of the 8279 is being clocked by a 2 MHz signal, PPPPP should be set to 10100 to divide the clock by 20 to yield the proper 100 kHz operating frequency. Display Write Inhibit/Blanking Read FIFO/Sensor RAM The IW Bits can be used to mask nibble A and nibble B in applications requiring separate 4-bit display ports. By setting the IW flag (IW = 1) for one of the ports, the port becomes marked so that entries to the Display RAM from the CPU do not affect that port. Thus, if each nibble is input to a BCD decoder, the CPU may write a digit to the Display RAM without affecting the other digit being displayed. It is important to note that bit Bo corresponds to bit Do on the CPU bus, and that bit A3 corresponds to bit D7. The CPU sets the 8279 for a read of the FIFO/Sensor RAM by first writing this command. In the Scan Keyboard Mode, the Auto-Increment flag (AI) and the RAM address bits (AAA) are irrelevant. The 8279 will automatically drive the data bus for each subsequent read (Ao = 0) in the same sequence in which the data first entered the FIFO. All subsequent reads will be from the FIFO until another command is issued. In the Sensor Matrix Mode, the RAM address bits AAA select one of the 8 rows of the Sensor RAM. If the AI flag is set (AI = 1), each successive read will be from the subsequent row of the sensor RAM. Read Display RAM Code: o -r1-1-'1-'--A-1~A"""'-A--'-A-'-A--' Ir-- The CPU sets up the 8279 for a read of the Display RAM by first writing this command. The address bits AAAA select one of the 16 rows of the Display RAM. If the AI flag is set (A1 = 1), this row address will be incremented after each following read or write to the Display RAM. Since the same counter is used for both reading and writing, this command sets the next read or write address and the sense of the Auto-Increment mode for both operations. Write Display RAM Code: 1'-1.... I-o-,I-o--.-A-I~A"""'-A--'-A-'-A--' The CPU sets up the 8279 for a write to the Display RAM by first writing this command. After writing the command with Ao = 1, all subsequent writes with Ao = 0 will be to the Display RAM. The addressing and Auto-Increment functions are identical to those for the Read Display RAM. However, this command does not affect the source of subsequent Data Reads; the CPU will read from whichever RAM (Display of FIFO/Sensor) which was last specified. If, indeed, the Display RAM was last specified, the Write Display RAM will, nevertheless, change the next Read location. B A A B I 1 1 0 1 1 1 X 1 IW I I BL I BL 1 IW Code: If the user wishes to blank the display, the BL flags are available for each nibble. The last Clear command issued determines the code to be used as a "blank." This code defaults to all zeros after a reset. Note that both BL flags must be set to blank a display formatted with a single 8-bit port. Clear Code: 11 I I 0 I Co I CD I CD I CF I CA 1 The CD bits are available in this command to clear all rows of the Display RAM to a selectable blanking code as follows: ,e: I~' ClJD 1 1 All Zeros IX = Don·, Carel = Hex 20 10010 00001 0 AB 1 All Ones Enable clear dIsplay when::: 1 (or by CA = 1) 290123-13 During the time the Display RAM is being cleared (~ 160 f-Ls), it may not be written to. The most significant bit of the FIFO status word is set during this time. When the Display RAM becomes available again, it automatically resets. If the CF bit is asserted (CF = 1), the FIFO status is cleared and the interrupt output line is reset. Also, the Sensor RAM pOinter is set to row O. GA, the Clear All bit, has the combined effect of CD and CF; it uses the CD clearing code on the Display RAM and also clears FIFO status. Furthermore, it resynchronizes the internal timing chain. . 6-139 inter 8279/8279-5 End Interrupt/Error Mode Set Code: 11 11 11 IE IX IX IX IX I X = Don't care For the sensor matrix modes this command lowers the IRQ line and enables further writing into RAM. (The IRQ line would have been raised upon the detection of a change in a sensor value. This would have also inhibited further writing into the RAM until reset). For the N-key rollover mode-if the E bit is programmed to "1" the chip will operate in the special Error mode. (For further details, see Interface Considerations Section.) Status Word The status word contains the FIFO status, error, and display unavailable signals. This word is read by the CPU when Ao is high and CS and RD are low. See . Interface Considerations for more detail on status word. Data Read Data is read when Ao, CS and RD are all low. The source of the data is specified by the Read FIFO or Read Display commands. The trailing edge of RD will cause the address of the RAM being read to be incremented if the Auto-Increment flag is set. FIFO reads always increment (if no error occurs) independent.of AI. Data Write Data .that is written with Ao, CS and WR low is always written to the Display RAM. The address is specified by the latest Head Display or Write Display command. Auto-Incrementing on the rising edge of WR occurs if AI is set by the latest display command. INTERFACE CONSIDERATIONS FIFO along with the status of CNTL and SHIFT lines. If the FIFO was empty, IRQ will be set to signal the CPU that there is an entry in the FIFO. If the FIFO was full, the key will not be entered and the error flag will be set. If another closed switch is encountered, no entry to the FIFO can occur. If all other keys are released before ths one, then it will be entered to the FIFO. If this key is released before any other, it will be entirely ignored. A key is entered to the FIFO only once per depression, no matter how many keys were pressed along with it or in what order they were released. If two keys are depressed within the debounce cycle, it is a simultaneous depression. Neither key will be recognized until one key remains depressed alone. The last key will be treated as a single key depression. Scanned Keyboard Mode, N-Key Rollover With N-key Rollover each key depression is treated independently from all ·others. When a key is depressed, the debounce circuit waits 2 keyboard scans and then checks to see if the key is still down. If it is , the key is entered into the FIFO. Any number of keys can be depressed and another can be recognized and entered into the FIFO. If a simultaneous depression occurs, the keys are recognized and entered according to the order the keyboard scan found them. Scanned Keyboard-Special Error Modes For N-keyrollover mode the user can program a special error mode. This is done by the "End Interrupt/Error Mode Set" command. The debounce cycle and key-validity check are as in normal N-key mode. If during a single debounce cycle, two keys are found depressed, this is considered a simultaneous multiple depression, and sets an error flag. This flag will prevent any further writing into the FIFO and will set interrupt (if not yet set). The error flag could be read in this mode by reading the FIFO STATUS word. (See "FIFO STATUS" for further details.) The error flag is reset by sending the normal CLEAR command with CF = 1. Scanned Keyboard· Mode, 2-Key Lockout Sensor Matrix Mode There are three possible combinations of conditions that can occur during debounce scanning. When a key is depressed, the debounce logic is set. Other depressed keys are looked for during the nex1 two scans. If none are encountered, it is a single key depression and the key position is entered into the In Sensor Matrix mode, the debounce logic is inhibited. The status of the sensor switch is inputted directly to the Sensor RAM. In this way the Sensor RAM keeps an image of the state of the switches in the sensor matrix. Although debouncing is not provided, this mode has the advantage that the CPU knows how long the sensor was closed and when it 6-140 inter 8279/8279-5 was released. A keyboard mode can only indicate a validated closure. To make the software easier, the designer should functionally group the sensors by row since this is the format in which the CPU will read them. by the rising edge of a CNTL/STB line pulse. Data can come from another encoded keyboard or simple switch matrix. The return lines can also be used as a general purpose strobed input. The IRQ line goes high if any sensor value change is detected at the end of a sensor matrix scan. The IRQ line is cleared by the first data read operation if the Auto-Increment flag is set to zero, or by the End Interrupt command if the Auto-Increment flag is set to one. I RL7 I RLs I MSB LSB RL~ I RL4 I RL3 I RL21 RL1 I RLo I Display Left Entry NOTE: Multiple changes in the matrix Addressed by (SLo-3 = 0) may cause multiple interrupts. (SLo = o in the Decoded Mode.) Reset may cause the 8279 to see multiple changes. Data Format In the Scanned Keyboard mode, the character entered into the FIFO corresponds to the position of the switch in the keyboard plus the status of the CNTL and SHIFT lines (non-inverted). CNTL is the MSB of the character and SHIFT is the next most significant bit. The next three bits are from the scan counter and indicate the row the key was found in. The last three bits are from the column counter and indicate to which return line the key was connected. MSB LSB ICNTLISHIFTI :SCAN: ~ETUR~ I Left Entry mode is the Simplest display format in that each display position directly corresponds to a byte (or nibble) in the Display RAM. Address 0 in the RAM is the left-most display character and address 15 (or address 7 in 8 character display) is the right most display character. Entering characters from position zero causes the display to fill from the left. The 17th (9th) character is entered back in the left most position and filling again proceeds from there. 1st entry 2nd entry 16th entry SCANNED KEYBOARD DATA FORMAT In Sensor Matrix mode, the data on the return lines is entered directly in the row of the Sensor RAM that corresponds to the row in the matrix being scanned. Therefore, each switch position maps directly to a . Sensor RAM position. The SHIFT and CNTL inputs are ignored in this mode. Note that switches are not necessarily the only thing that can be connected to the return lines in this mode. Any logic that can be triggered by the scan lines can enter data to the return line inputs. Eight multiplexed input ports could be tied to the return lines and scanned by the 8279. MSB LSB I RL7 I RL6 I RL5 I RL4 I RLa I RL2 I RL1 I RLo I In Strobed Input mode, the data is also entered to the FIFO from the return lines. The data is entered 6-141 o 1 14 15_0isplay RAM o 1 14 15 QI] _- _- _- _- IT] ~= o 1 o 1 Address ===LD 14 15 Ci:EI ====:@E] 14 15 17th entry ~ ====EE] 18th entry ~ ====EEJ o 1 14· 15 290123-14 Left Entry Mode (Auto Increment) Right Entry . Right entry is the method used by most electronic calculators. The first entry is placed in the right most display character. The next entry is also placed in the right most character after the display is shifted left one character. The left most character is shifted off the end and is lost. intJ 8279/8279-5 2 1st entry 2 2nd entry '3 3rd entry 01234567+- 1 14 15 ITJ ===Jill I:~~ess 15 0 1 ITJ= ===I 11121 [0====1 1121 1 O_Display 1st entry 3 4 0 'I 2nd entry 2 o Command 10010101 === EI== = ~= 2 18th entry 14 15 0 115i16117\ 15 -1161171181 3 Right Entry Mode (Auto Increment) 0 1 234 5 6 7 11 121 3 12 I I I I II I I o 16th entry 17thentrv 11 Display RAM Address IIIIII 1 2 3 4 5 6 7 IIIIII 11 121 Enter next at Location 5 Auto Increment o 3rd entry 1 1 234 5 6 7 11 121 II 13 1 II o 1 234 5 6 7 290123-15 4th entry Note that now the display position and register address do not correspond. Consequently, entering a character to an arbitrary position in the Auto Increment mode may have unexpected results. Entry starting at Display RAM address 0 with sequential entry is recommended. 11 121 II 13141 I LEFT ENTRY MODE (AUTO INCREMENT) In the Right Entry mode, Auto Incrementing and non Incrementing have the same effect as in the Left Entry except if the address sequence is interrupted. 1 2 3 4 5 6 7 0 1st entry Auto Increment In the Left Entry mode, Auto Incrementing causes the address where the CPU will next write to be incremented by one and the character appears in the next location. With non-Auto Incrementing the entry is both to the same RAM address and display position. Entry to an arbitrary address in the Auto Increment mode has no undesirable side effects and the result is predictable: +- I I I I I I I 11 I ~:~ess 234 5 6 7 0 1 2nd entry IIIIII 11 121 2345670 1 Command 10010101 I I I I I I 11 121 Enter next at Location 5 Auto Increment 345 6 7 0 1 2 3rd entry II 4th entry I 131 I 11 121 I 45670 1 2 3 13141 11 121 II RIGHT ENTRY MODE (AUTO INCREMENT) 6-142 Display intJ 8279/8279-5 Starting at an arbitrary location operates as shown below: 01234567~ Display RAM Command 1 1 1 1 1 Address 10010101 II II Enter next at Location 5 Auto Increment 1 234 5 670 1st entry 1 1 1 1 11 1 1 1 1 the FIFO and to indicate whether an error has occurred. There are two types of errors possible: overrun and underrun. Overrun occurs when the entry of another character into a full FIFO is attempted. Underrun occurs when the CPU tries to read an empty FIFO. The FIFO status word also has a bit to indicate that the Display RAM was unavailable because a Clear Display or Clear All command had not completed its clearing operation. 2 3 456 7 0 1 2nd entry 1 1 1 11 121 8th entry 141516171811 12131 9th entry 15161718191213141 In a Sensor Matrix mode, a bit is set in the FIFO status word to indicate that at least one sensor closure indication is contained in the Sensor RAM. 1 1 1 In Special Error Mode the S/E bit is showing the error flag and serves as an indication to whether a simultaneous multiple closure error has occurred. RIGHT ENTRY MODE (AUTO INCREMENT) FIFO STATUS WORD Entry appears to be from the intial entry point. 8/16 Character Display Formats If the display mode is set to an 8 character display, the on duty-cycle is double what it would be for a 16 character display (e.g., 5.1 ms scan time for 8 characters vs. 10.3 ms for 16 characters with 100 kHz internal frequency). G. FIFO Status ' - - - - - Sensor Closure/Error F lag for Multiple Closures ' - - - - - - - Display unavailable 290123-4 FIFO status is used in the Keyboard and Strobed Input modes to indicate the number of characters in 6-143 infef 8279/8279-5 KEYBOARD MATRIX SHIFT CONTROL 8 COLUMNS B/ RETURN LINES 8 ROWS ,. V18 U 5V INT B·BIT MICRO· PROCESSOR SYSTEM SHIFT CNTl INT RO_7 VOO DATA BUS DATA BUS 8/ AD WR CONTROLS { RESET CS ADDRESS{ BUS CLOCK AO CLK VSS 0 0 _7 SO_3 lOR 8279 3 - 8 DECODER lv ~ SCAN LINES lOW (:4 , RESET 4 -16 DECODER CS AO CLK B 3 LSS' 4/ 0-3 A O_3 ITh BLANK DISPLAY ."- 4 / V- 16 ADDRESSES (DECODED) 4 / ! DISPLAY CHARACTERS DATA DISPLAY 290123-5 'Do not drive Ihe keyboard decoder with the MSB of the scan lines. Figure 4. System Block Diagram 6-144 inter 8279/8279-5 * Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature ................ O°C to 70°C Storage Temperature ............. - 65°C to 125°C Voltage on any Pin with Respect to Ground .............. - 0.5V to + 7V Power Dissipation ........................ 1 Watt D.C. CHARACTERISTICS TA = = OV (Note 3)* O°C to 70°C Vss Max Unit VILl Input Low Voltage for Return Lines -0.5 1.4 V VIL2 Input Low Voltage for All Others -0.5 0.8 V VIHl Input High Voltage for Return Lines 2.2 VIH2 Input High Voltage for All Others 2.0 VOL Output Low Voltage VOHl Output High Voltage on Interrupt Line 3.5 VOH2 Other Outputs 2.4 IILl Input Current on Shift, Control and Return Lines IIL2 Symbol Parameter Min V V 0.45 V (Note 1) V (Note 2) I OH - +10 -100 /Jo A /JoA Input Leakage Current on All Others ±10 /JoA IOFL Output Float Leakage ±10 lee Power Supply Current 120 /Jo A mA CIN Input Capacitance 10 pF COUT Output Capacitance 20 pF A.C. CHARACTERISTICS TA Test Conditions - 400 !LA 8279-5 -100 !LA 8279 = Vee = OV VIN = Vee to OV VOUT = Vee to 0.45V VIN VIN fe = 1 MHz Unmeasured Pins Returned to VSS(6) = O°C to 70°C, Vss = OV (Note 3)* Bus Parameters READ CYCLE Symbol Parameter 8279 Min 8279·5 Max Min Max Unit tAR Address Stable Before READ 50 0 ns tRA Address Hold Time for READ 5 0 ns tRR READ Pulse Width tRO(4) Data Delay from READ 420 300 150 ns tAO(4) Address to Data Valid 450 250 ns tOF READ to Data Floating 10 100 ns tReY Read Cycle Time 1 1 /Jos tAW Address Stable Before WRITE 50 0 ns tWA Address Hold Time for WRITE 20 0 ns 6-145 250 100 10 ns 8279/8279-5 A.C. CHARACTERISTICS (Continued) WRITE CYCLE Symbol 8279-5 8279 Parameter Min Max Unit Max Min tww WRITE Pulse Width 400 250 ns tow Data Set Up Time for WRITE 300 150 ns two Data Hold Time for WRITE 40 0 ns twCY Write Cycle Time 1 1 J-Ls OTHER TIMINGS Symbol 230 500 Clock Period tCY Max Min Clock Pulse Width tq,w 8279-5 8279 Parameter Min Unit Max 120 ns 320 ns Keyboard Scan Time ...................... 5.1 ms Digit-on Time ............................ 480 J-Ls Keyboard Debounce Time ................ 10.3 ms Blanking Time ........................... 160 J-Ls Key Scan Time ...................... ~ .... 80 J-Ls Internal Clock Cycle(5) .................... : 10 J-Ls Display Scan Time ....................... 10.3 ms NOTES: 1. 8279, IOl = 1.6 mA; 8279-5, IOL = 2.2 mAo 2. IOH = -100/LA 3.8279, VCC = +5V ±5%; 8279-5, VCC = +5V ±10% 4.8279, Cl = 100 pF; 8279-5, Cl = 150 pF. 5. The Prescaler should be programmed to provide a 10 /Ls internal clock cycle. 6. Sampled not 100% tested. TA = 25"C. * For Extended Temperature EXPRESS, use M8279A electrical parameters. A.C, TESTING INPUT, OUTPUT WAVEFORM INPUT/OUTPUT '.'=X > 2.0 TEST POINTS 0.45 0.8 < 2.0 0.8 x= A.C. TESTING LOAD CIRCUIT DEVICE UNDER TEST 290123-6 A.C. Testing: Inputs are driven at 2.4V for a logic "1" and O.4SV for a logic "0". Timing measurements are made at 2.0V for a logic "1" and O.SV for a logic "0". ~Cl= 120pF -= 290123-7 CL = 120 pF CL Includes Jig Capacitance 6-146 intJ 8279/8279-5 WAVEFORMS READ OPERATION Ao.ES ~ ____________________________________ _tAR_·I·.~---------tRC'" ~~ ___________________________ (SYSTEM'S ADDRE~BUSI ---+--------1 1-----'•• -----1 (READ CONTROL) I----'Ao----I DATA BUS IDUTPUTI~~~~~~~~~~~~~~____________________~~~~~~~~~~~~~~ 290123-8 WRITE OPERATION ~-------------------------- (SYSTEM'S ADDRESS BUS) i-----'ww---(WRITE CONTROLI -'oW~ I-'wo DATA BUS DATA ~ -DATA VALlD- V DATA --'1'. ,- - - "''-________M_A_y_C_H_A_N_GE _ _ _ _ _ __ UNPUTl________M_A_y_C_H;..A_NG_E______ 290123-9 CLOCK INPUT 290123-10. 6·147 intJ 8279/8279-5 WAVEFORMS (Continued) SCAN L L L I s, ENCODED SCAN S, 53 u u u DECODED SCAN 52 5, U u u U U u U U L.J u Lr 290123-11 6-148 intJ 8279/8279·5 WAVEFORMS (Continued) DISPLAY !-------640IlS=64 tCy------1 , PRESCALER PROGRAMMED FOR IN· 'TERNAL FREOUENCY = 100 kHz SO Icy = lOlLS S, S, Ao- A3 ACTIVE HIGH BLANK AlO) CODE- All) ·BLANK CODE IS EITHER All D's OR ALL 1'5 OR 20 HEX Bo-B3 ACTIVE HIGH B(l) B(O) -t·~----490"s -----f- 290123-12 NOTE: Shawn is encoded scan left entry S2-S3 are not shown but they are simply S1 divided by 2 and 4. 6-149 82389 MESSAGE PASSING COPROCESSOR A MULTIBUS® II BUS INTERFACE CONTROLLER • Highly Il"ltegrated VLSI Device ....;.. Single-Chip: Interface for the pa:rallel . System Bus (IEi:E 1296) -Interrupt Handling/Bus Arbitration Functions - Dual-Buffer Input and Output DMA Capabilities - Nine 32-Byte High Speed FIFOs • Multiple Interface Support - Complete Protocol Support of the PSB Bus (Message Passing) - Processor Independent Interface (8, 16, or 32-Blt .CPU) - Low-Cost 8-Bit Microcontroller . Interface' - Dual~Port Memory Interface • High Performance Coprocessing Functions - Offloads CPU for Communication a:nd Bus Interfacing - 40 Megabytes/Sec Burst Transfer Speed - Optimized for Real-Time Response (Max. 900 ns for 32-Byte Interrupt' Packet) • Compatible with Bus Arbiter Controller (BAC) and Message Interrupt Controller (MIC) Interface Designs • CMOS Technology • 149 Pin PGA Package (15 x 15 Grid) TheMPC 82389 is a highly integrated VLSI device that maximizes the performance of a Multibus® II based multiprocessor system, It integrates the functions of bus arbitration, packetizing data for transmit, error handling and interrupt control. Because of these integrated functions the host CPU can be offloaded to utilize the maximum bus performance and subsequently increase the system throughput The MPC 82389 also supports geographic addressing by providing access to the local interconnect registers for reference and control. The MPC 82389 is designed to interface with an 8, 16, or 32-bit processor and the Parallel System Bus performance is not affected by the CPU buswidth or its bandwidth, The data on the Parallel System Bus is burst transferred at the maximum bus speed of 40 Megabytes/second regardless of CPU bus performance, Such performance is. possible due to decoupling of the CPU from the Parallel System Bus. o MULTIPROCESSOR ARCHITECTURE ~ LOCAL RESOURCES ~ ~ PROCESSOR PROCESSOR PROCESSOR i'rLOCAL i'rLOCAL i'rLOCAL .JYUS .JYUS .JYUS G GGG 290145-1 Figure 1-1 6-150 October 1988 Order Number: 290145-002 82389 1.0 MPC 82389 INTRODUCTION 1.1 1.2 1.3 1.4 MPC Functional Overview Major Operations of the MPC Message Passing Protocol Compatibility with BAC/MIC Interface Designs 2.0 MPC 82389 INTERFACES 2.1 2.2 2.3 2.4 2.5 2.6 Local Bus (Host) PSB Bus Interconnect Bus Dual·Port Memory Interface Basic Implementation of the MPC Implementation with Dual-Port Memory 3.0 MPC 82389 INTERPROCESSOR COMMUNICATION 3.1 Communication Protcol 3.1.1 Unsolicited Message Passing 3.1.2 Solicited Message Passing 3.2 Bus Bandwidth 4.0 MPC 82389 PIN DESCRIPTION 4.1 4.2 4.3 4.4 4.5 PSB Signals Dual-Port Memory Signals Local Bus Signals Interconnect Bus Signals Power and Ground Signals 5.0 MPC 82389 MECHANICAL DATA 5.1 5.2 Pin Assignment Package Dimensions 6.0 MPC 82389 ELECTRICAL DATA 6.1 6.2 6.3 Maximum Ratings D.C. Specifications A.C. Specifications 7.0 REFERENCE DOCUMENTS 6-151 intJ 82389 1.0 MPC 82389 INTRODUCTION The Message Passing coprocessor 82389 is a highly integrated CMOS VLSI device to interconnect intelligent boards in a MULTIBUS II system environment. The parallel system bus of the MBII architecture definition however allows existence of intelligent and non-intelligent boards in the system. This section of the data sheet describes the device in general including the definition of message passing protocol and the subsequent sections will contain the detailed features of the device. Please refer to the MPC User's Manual for more details. 1.2 Major Operations of theMPC 82389 - - - 1.1 MPC 82389 Functional Overview The MPC 82389 is a Bus Interface Controller designed to offload the host CPU for interprocessor communication on the PSB network, and it's primary function is to support the communication protocol standard defined for the PSB bus (message passing). The device provides both the physical and data link support. By standardizing the signal interface (physical), it allows multiple vendors to offer standard add-on products for the user and at the same time it reduces costly overheads for the suppliers. The data link protocol is completely handled by the MPC 82389 including packetization after receiving data from the local interface, bus arbitration, burst transfer and error detection without the CPU intervention. The PSB bus standard is defined for easy access and sharing of resources in a distributed processing environment. The MPC 82389 complements this standard by providing an optimized interface for the PSB bus usage at its maximum bandwidth. The MPC 82389 also features three additional interfaces for use on a processor board. Local Bus Interface for Host independent CPU. The CPU can be 8, 16 or 32 bits wide. Interconnect Bus for interfacing to a low-cost microcontroller. The interconnect bus has a local address space which can be accessed by other agents on the PSB bus via the MPC. Dual-Port Memory Interface to support an alternative communication approach which may coexist with the message passing method. - - Support of both unsolicited and solicited ~es sage transfers. This interprocessor communIcation protocol allows an intelligent agent on the PSB bus to communicate to another without any CPU intervention and at rates approaching the PSB bus bandwidth. Support of single cycle accesses by the host processor to memory and 110 locations resident on the PSB bus. Bus architecture, parity generation and error detection is completely handled by the MPC 82389 coprocessor. Support of accesses to local interconnect space by both the host processor and other agents on the PSB bus. Support of accesses by the host processor to interconnect location assigned to other PSB bus agents. Support of accesses to local, dual-port memory by other agents on the PSB bus. 1.3 Message Passing Protocol The Multibus II architecture defines the data transfer protocol between agents on the PSB bus as Message Passing. Message Passing allows the PSB agents to transfer variable amounts of data at rates approaching the maximum bus speed. The MPC 82389 fully supports the standardized data link protocol designed for the PSB and the entire handshaking between agents on the PSBbus is handled by the MPC 82389 without the CPU intervention. There are two types of messages that can be transmitted from one PSB agent to another: Unsolicited Messages and Solicited Messages. Unsolicited Messages-An unsolicited message is an intelligent interrupt also called virtual interrupt. This unsolicited message, as the name implies, is an asynchronous event to notify the receiving agent to prepare for the receipt of Solicited Messages. The message is in the form of a packet and it consists of information about the interrupt. By providing such intelligence the receiving agent's CPU do not have to poll for information, thus resulting in minimal latency. Solicited Messages-The solicited messages are the actual data that are transmitted from one MPC to another. The data is once again broken into packets and these packets are transferred using the negotiation (handshaking) process which are synchronized by the MPC 82389 coprocessors. 6-152 inter 82389 1.4 Compatibility with BAC/MIC Interface Designs The Bus Arbiter Controller (BAC) and Message Interrupt Contoller (MIC) were the first support components for the Parallel System Bus. The BAC implemented the full arbitration, requestor, and replier functions of the PSB. The MIC supported the transmit and receiving of minimum size unsolicited (interrupt) messages. To ensure future compatibility with the MPC 82389 implementation, the BAC/MIC architecture was put on a module called the docket for direct incorporation onto the base-board. The PSB implementations for the MPC and the BAC/MIC docket are compatible in all respects. These implementations may coexist on the PSB bus of the same system. For the host and microcontroller interfaces, compatibility is maintained for message and interconnect space operations. It is, thus, possible to replace the BAC/MIC docket with the MPC at little impact to the board design. Software initialization of the operating parameters for the MIC is possible through the Configuration Register to support host widths of 8, 16 or 32 bits. The MIC supports a host width of 8 bits only. Both implementations present similar software interfaces for the sending and receiving of interrupts. For details about the initialization procedures and interrupt protocols, please refer to the MPC Users's Manual, Part Number: 176526. The MPC offers capabilities and performance far superior to the BAC/MIC implementation. Using the MPC, interrupt handling at the host interface can be improved by over an order of magnitude. Whereas the MIC can handle only minimum 4-byte interrupts, the MPC enables up to 28 bytes of data to be sent and received along with each interrupt. Further, the MPC has dedicated support for DMA based solicited message transfer. 2.0 MPC 82389 INTERFACES The MPC 82389 features 4 interfaces: the local CPU bus for processor interface, the interconnect bus for 8-bit microcontroller interface, the Parallel System Bus interface and the dual-port memory interface. LOCAL BUS INTERFACE INTERCONNECT SPACE BUS DUAL PORT MEMORY CONTROL INTERFACE IPSB BUS INTERFACE 290145-2 Figure 2-1. MPC Bus Interfaces 6-153 infef 82389 2.1 Local Bus 2.2 Parallel System Bus The local bus of the MPC 82389 is used to interface to a host processor. The CPU can be 8, 16, or 32 bits wide and the interface is processor independent. The MPC 82389 provides a full 32-bit interface to the PSB bus and participates in arbitration, requestor control, replier control and error handling. The local bus interface supports direct references to memory, I/O and interconnect address space on the PSB bus. It also supports references to local interconnect space and the full message passing protocol. The entire local bus interface can be categorized into three sub-interfaces: register, reference and OMA. 2.2.1 ARBITRATION 2.1.1 REGISTER INTERFACE The MPC 82389 local bus register interface is used for message operations and access to the interconnect space. These operations are asynchronous to the bus clock or interconnect bus operation. 2.1.2 REFERENCE INTERFACE The MPC 82389 local bus reference interface supports direct references to memory, I/O and interconnect address space on the PSB bus. Memory and 1/ references are initiated by the CPU to the MPC. The MPC responds by putting the CPU on hold while arbitrating for PSB bus access. The CPU is held in WAIT state until the operation is complete or a bus exception occurs on the PSB bus. The reference interface supports both read and write to the registers. The local interconnect address space is differentiated from the interconnect address on the PSB bus by the bit pattern stored in the slot address register of the MPC. o 2.1.3 DMA INTERFACE The OMA interface transfers data between local memory and the MPC 82389 during solicited message operations. The MPC provides both the input and output channels to the PSB bus. The number of transfers to or from the MPC is determined by the maximum size of the packet buffer (32-byte) or completion of the solicited transfer, whichever is less. The OMA interface is designed to operate on either a read or write command to allow two-cycle operation or fly-by transfers. For two-cycle operation, the OMA uses a read operation to fetch data from the MPC and a write to put data into the MPC. Conversely, a fly-by read or write operation occurs correspondingly to memory write or read operation. The OMA interface to the MPC performs best with aligned transfers. However, for compatibility with existing software, the MPC supports operations of arbitrary byte stri ngs. The MPC 82389 initials PSB bus access arbitration upon request generated inside the MPC. This request couid be the result of a synchronized PSB bus reference request (memory, 1/0 or interconnect) or· a message packet transmit request from the CPU. ThePSB bus arbitration specification can be referred in the document, MPC User's Manual, Part Number: 176526. 2.2.3 REPLIER CONTROL The MPC 82389 as a replier supports interconnect space reference and message reception. It gets into replier mode When a match is detected between the assigned slot 10 and the address on the PSB bus. The interface space microcontroller is alerted of the replier mode condition. The address comparison is disabled when the MPC is the bus owner. The MPC allows interconnect space to be locked from the PSB bus. This inhibits local bus interface access requests. 2.2.4 ERROR HANDLING The MPC 82389 monitors errors generated during the transfer operation. It provides error checking on incoming interconnect references that match the slot 10. If an exception occurs on the PSB bus while an interconnect operation is in progress, the MPC provides for a graceful recovery. 2.3 Interconnect Bus The Interconnect bus of the MPC 82389 has a simple 8-bit interface. A low-cost microcontroller can be interfaced to perform board configuration at startup and other tasks like local diagnostics. The Interconnect space of an agent has a 512-byte register range. Within this space the microcontroller can store the local operating and configuration parameters associated with the agent. For example local diagnostics can be executed out of the microcontroller and the results posted in the Interconnect space. IEEE 1296 specifications require the first record in the Interconnect space to contain the board 10 and Intel recommends other record types. Refer to Interconnect Interface Specification, Part Number: 149299. 6-154 82389 The MPC 82389 provides the path to access the local Interconnect space. The references supported are: 2.4 Dual-Port Memory Interface The MPC 82389 supports the dual-port memory interface for those designs that must coexist with the memory passing architecture. 1. CPU local bus to the local Interconnect space 2. CPU local bus to the Interconnect space of another agent on the PSB bus 3. From the PSB bus to the local Interconnect space The local Interconnect accesses are identified as slot IDs 24-31 and the Interconnect accesses on the PSB bus are mapped as slot IDs 0-23. The MPC participates in PSB bus handshake protocol, parity generation and checking and agent error generation for local Interconnect accesses from the PSB bus. The Interconnect microcontroller is the master device on the bus and all other devices including the MPC are slaves. The dual-port services supported are: Address recognition, PSB bus replier handshake, error checking, and bus parity generation and checking. A useful recovery mechanism is provided by the MPC should a bus exception error occur while a dual-port memory access is in progress. Although the MPC 82389 provides bus parity check it is the responsibility of the memory controller to generate and check data parity. 2.5 Basic Implementation with the MPC 82389 Figure 2-2 shows a basic implementation of the MPC 82389. Included in this implementation is the interconnect interface to a microcontroller, the CPU interface and the PSB bus interface. Address Buller lor Memory and 110 references 10 PSB Bus. This Buller Is nol b~~T.s~g:l ~~~gri!~~i~~roC::.IS RSTNC* 1-_-"""=--___ 1~~~'B" l $IyRals Parity <3 .. '> . . iPsa Bus SYltemConlrol <8 .. 4> * 290145-3 Figure 2-2. MPC Implementation to Support References 6-155 82389 2.6 Implementation with Dual-Port Memory Interface Figure 2-3 shows the logic required to implement dual-port operations. _. ,IIEQ- "". _Do. 290145-4 Figure 2-3. The MPC Implemented with Dual-Port Memory 6-156 inter 82389 Message Passing over the PSB bus is completely handled by the MPC 82389 coprocessor without CPU intervention. The messages (data) are packetized in blocks of 32 bytes and burst transferred over the PSB bus. 3.0 MPC 82389 INTERPROCESSOR COMMUNICATION A MULTIBUS II system can have up to 20 boards in the slot backplane. Slot zero must have a Central Services Module (CSM) which provides bus initialization and clocking. The remaining 19 slots can have a mix of intelligent and non-intelligent boards. The intelligent boards will typically communicate over the high speed PSB bus. Any processor based board may contain an MPC 82389 for high speed communication and the MPC is designed to support the system performance and the data transfer speed of the PSB bus. The MPC has an optimized PSB bus interface. The decoupling is achieved by using very high speed FIFOs of the MPC 82389. Nine 32-byte FIFOs are used in the MPC 82389. Five of these FIFOs are used for setting up the unsolicited messages (interrupts). One is used for output set up and the other four for input set up of up to four unsolicited messages. For data transmission (solicited messages) over the PSB, the MPC 82389 has two dedicated solicited output and input channels. With each channel, dual 32-byte FIFOs are used to pipeline data during output and input operation. tLOCAL BUS • .. '" '" f- ~ 1= ~~ f- t: 1= l1= 1= ~ I- II- ~~ ff- ~ ~~ t- lII- ~ ~~ I- tl- II-tlf- t- ~ ~ INTERRUPT OUT ~ ... ~ SOLICITED OUT INTERRUPT IN ! ... SOLICITED IN PSB 290145-5 Figure 3-1. The MPC Uses Nine 32 Byte FIFOs to Couple the Local and System Buses 6-157 82389 3.1 Communication Protocol Any device with an interface to the PSB bus is termed as an agent. The agents communicate over the PSB bus and they completely offload the CPU for other tasks. Each agent is assigned an 8-bit address for identification. The mechanism used for interprocessor communication over the PSB entails a standardized data link protocol, and a dedicated address space. The information which is packetized is transmitted to a dedicated address space instead of the target memory. This addressing scheme serves to decouple the CPU from the PSB bus. Packetization serves to limit the time an agent has an access over the bus, thus protecting against hogging of the bus by agents which require transmitting a large amount of data. The data link protocol called message passing includes two kinds of messages: unsolicited and solicited. 3.1.1 UNSOLICITED MESSAGE Unsolicited message is an intelligent interrupt. It is a virtual interrupt for the receiving agent and includes AD <31...24> AD<23 .•. 16> ~~ all the information required to service the interrupt. It takes only 900 ns to send an unsolicited message over the PSB bus, and since the receiving agent's processor does not have to poll for servicing the interrupt, this mechanism is fast and efficient. The unsolicited message is sent as a packet consisting of up to 32 bytes, as shown in Figure 3-2. The address field is 8 bits long. Up to 255 agents can be addressed uniquely while one address is used for broadcast function. The general format for unsolicited messages varies depending on the CPU bus width. There are other variations depending on whether the CPU is receiving or transmitting the message and the type of unsolicited message. Unsolicited messages are asynchronous in nature. These unsolicited messages are used to set up solicited messages and contain Control and Command information. An unsolicited message consisting of 32 bytes takes a maximum of 900 ns to transmit. The unsolicited message packet without the optional 28-byte data will take only 200 ns to transmit. AD<15 ..• 8> AD <7 ... 0> SOURCE ADDRESS DESTINATION ADDRESS V//////"'-:: V///////: V/////// 00 12('/W/1=NOT USED L...-_ _ _.aI=AVAILABLE fOR OPTIONAL DATA 290145-6 Figure 3-2. General Interrupt Message on the PSB 6-158 infef 82389 AD<31 .• 24> AD<23 .. 16> AD<15 .. 8> AD<7 .. 0> Source Add. Byte 1 Dest. Add. Byte 0 10 Byte 3 Type Byte 2 Data, Byte 6 Data, Byte 5 Data, Byte 4 Data, Byte 11 Data, Byte 10 Data, Byte 9 Data, Byte 8 Data, Byte 15 Data, Byte 14 Data, Byte 13 Data, Byte 12 Data, Byte 19 Data, Byte 18 Data, Byte 17 Data, Byte 16 Data, Byte 23 Data, Byte 22 Data, Byte 21 Data, Byte 20 Data, Byte 27 Data, Byte 26 Data, Byte 25 Data, Byte 24 Data, Byte 7 Data, Byte 31 Data, Byte 30 Data, Byte 29 Data, Byte 28 Data, Byte 35 Solic. only Data, Byte 34 Solic. only Data, Byte 33 Solic. only Data, Byte 32 Solic. only Figure 3-3. General Message Packet Format on the PSB Bus 3.1.2 SOLICITED MESSAGE Solicited message consists of the actual data to be transferred from one agent to another over the PSB bus. The data is packetized in blocks of 32 bytes for transfer. Up to 16 Megabytes of data may be transferred in a single solicited message. The transfer of data is negotiated between the transmitting and receiving agents via unsolicited messages. By using the acknowledge response method through the unsolicited messages, the agents complete the transfer of data. A solicited message contains one or more data packets. The packetization of solicited messages is handled by the MPC. The padding of header information at the transmitting end and the stripping of this information out of the packet is solely the MPC responsibility. The local CPU simply fills or empties the FIFO over the local bus. The MPC also handles the last packet fillers to maintain the 32-byte data packet format. If necessary, during output the bytes are padded and during input .the padded bytes are stripped by the MPC. For programming details consult MPC User's Manual, Part Number: 176526. 3.2 Bus Bandwidth The advantages of decoupling the buses can be summarized in Figure 3-4. The effective speed performance numbers are also listed. The first advantage is that no resource is held in wait states while arbitration for another resource is occurring.· The second advantage is that each transfer can occur at the full bandwidth of the associated bus. 20 MBYTES/SEC SINGLE CYCLE 40 MBYTES/SEC BURST 32 MBYTES/SEC FOR MESSAGES (32 BYTES IN 10 CLOCKS) 290145-7 Figure 3-4. Message Passing Performance Example 6-159 82389 4.0 MPC 82389 PIN DESCRIPTION The MPC 82389 is packaged in a 149 pin package. The signals for the device are functionally divided by their associated interfaces as shown in Figure 4-1 . < LOCAL BUS A I~I~ A > '"" ~'"" lAST IWR IRD IAD<7 ••• 0> IREO "j ;;; 290145-8 Figure 4-1. MPC Functional Blocks 6-160 inter 82389 4.1 PSB Bus Signals This section describes each of the PSB bus signals that interface with the MPC. For complete descriptions of these signals, see the MULTIBUS II Architecture Specification, Part Number: 146077. The PSB bus signals interfaced by the MPC 82389 fall into five groups, depending on function: • • • • • Arbitration Operation Signal Group Address/Data Bus Signal Group System Control Signal Group Central Control Signal Group Exception Operation Signal Group Unless otherwise stated, all PSB bus signals are synchronous to the bus clock. 4.1.1 ARBITRATION OPERATION SIGNAL GROUP The MPC 82389 interfaces directly with the Arbitration Operation Signal Group of the PSB bus. These are all high-current drive, open-collector signals. Below is a description of each signal. BREQ (Bus Request) BREQ is a bidirectional open-collector signal that connects directly to the PSB bus. As an input to the MPC, it indicates that agents are awaiting access to the bus. In fair access mode, this inhibits the MPC from activating its own request. As an output, the MPC asserts BREQ to request access to the PSB bus. ARB < 5.. 0 > (Arbitration) ARB<5 .. 0> are the arbitration signals for the PSB bus. At the MPC interface, these are bidirectional, open-collector signals that connect directly to the PSB bus. ARB<5 .. 0> are used during normal operation to identify the mode and arbitration priority of an agent during an arbitration cycle to facilitate the arbitration process. During system initialization (while reset is active), the Central Services Module (CSM) drives these signals to initialize slot and arbitration IDs. 4.1.2 ADDRESS/DATA BUS SIGNAL GROUP This signal group includes a 32-bit multiplexed address/data path that interfaces to the PSB address/ data bus. The MPC also includes the byte parity signals present on the PSB bus BPAR <3 .. 0>. All signals in this group interface with the PSB bus through bus tranceivers. For the MPC, this signal group also includes signals to control these bus transceivers (ADDIR and REFADR). These signals are described next. 6-161 BAD<31 .. 0> (Buffered Address/Data) BAD < 31 .. 0 > are the 32 buffered, multiplexed address/data signals that are bidirectional and provide the interface to the PSB address/data bus. At the MPC, these lines should be connected to the equivalent PSB bus AD signals using 74F245 or equivalent transceivers. BPAR < 3..0 > (Buffered Parity) BPAR are four signals that provide parity for the 4 bytes of the BAD bus. These bidirectional lines connect to the PSB bus PAR<3 .. 0> signals through a 74F245 or equivalent transceiver. These signals are used to receive byte parity for incoming operations and to drive byte parity for outgoing operations. ADDIR (Address/Data Direction) ADDIR is an output that provides direction control over the transceivers driving and receiving BAD<31..0> and BPAR<3 .. 0>. In the high state, this signal causes the transceivers to place address/data information along with parity onto the PSB bus. In the low state, this Signal causes address/data information and parity to be received from the PSB bus. REFADR (Reference Address Enable) REFADR is an output used to enable external address buffers. Asserting this signal places address information from the local bus onto BAD. The address path enabled by this signal is used for memory and I/O references to the PSB bus and is not used during message passing or for references to interconnect space on the PSB bus. 4.1.3 SYSTEM CONTROL SIGNAL GROUP The MPC provides signals that are used to interface to the System Control Signal Group of the PSB bus. These signals are described next. BSC < 9..0 > (Buffered System Control) BSC<9 .. 0> is a group of ten bidirectional signals that interface to the System Control Signal Group of the PSB bus through 74F245 or equivalent transceivers. Direction control of the transceivers is provided by SCDIR < 1,0> (discussed next). Agents on the PSB bus use the System Control Signal Group to define commands or report status, depending on the phase of the operation. See the MULTIBUS II Architecture Specification for more information on these signals. SCOIR < 1, 0> (System Control Direction) SCDIR < 1, 0> are output signals that provide direction control of the 74F245 transceivers driving and receiving BSC < 9.. 0 >. SCDIRO provides control for BSC<9, 3 .. 0>, while SCDIR1 provides control for inter 82389 BSC < 8..4 >. When either signal is high, the corresponding five bits of the BSC signal group are driven onto the PSB bus. When either signal is low, the corresponding five bits on the PSB bus are driven onto the BSC signal group. Table 4·1. Signal State During Reset 4.1.4 CENTRAL CONTROL SIGNAL GROUP. The MPC provides several signals that interface directly or through transceivers to the Central Control signal group of the PSB bus. These signals are described next. BBCLK (Buffered Bus Clock) BBCLK is buffered from the PSB bus BCLK signal. This signal should be connected to BCLK using a 74AS1804 or equivalent inverting buffer. This clock is used for all synchronous internal MPC timing. LACHn (Latch n) LACHn is an input signal used during initialization of slot and arbitration IDs (where un" is the slot number). When the RESET signal is active, LACHn asserted indicates to an agent that a slot or arbitration 10 is available and should be latched. LACHn is an active high input and should be connected to the LACHn signal on the PSB bus with a 74AS1804 or equivalent inverting buffer. RESET RESET is an input that, when asserted, places the MPC in a known state. Only the parts of the MPC involved with initialization of slot and arbitration IDs remain unaffected. RESET is an active high input and should be connected to the RST signal on the PSB bus with a 74AS1804 or equivalent inverting buffer. Reset Condition Table 4-1 summarizes the states of the signals while the RESET signal is active. Signal Reset State BREQ, ARB<5 .. 0> BAD<31..0> ADDIR REFADR BSC<9 .. 0> SCDIR<1,0> BUSERR RSTNC SEL 0<31..0> WAIT MINT, EINT ODREQ, IDREQ Z Z L H Z L Z(H) L H Z H L L NOTES: H - Electrical High State L - Electrical Low State Z - High Impedence RSTNC (Reset Not Complete) RSTNC is a bidirectional, open-collector signal with high-current drive. It connects directly to the PSB bus. As an input, RSTNC inhibits the MPC from initiating PSB bus operations. As an output, the MPC asserts RSTNC to prevent PSB bus operation until the agent is finished with initialization. The MPC asserts RSTNC whenever the RST signal is asserted by the Central Services Module (CSM). After the CSM deasserts RST and initialization of the local agent is complete, the interconnect microcontroller writes to a register within the MPC. The MPC then deasserts RSTNC. 4.1.5 EXCEPTION OPERATION SIGNAL GROUP The MPC interfaces with both signals of the Exception Operation Signal Group (part of the PSB bus), as described below. BUSERR (Bus Error) BUSERR is a bidirectional, open-collector signal with high-current drive. It connects directly to the PSB bus. As an input, the MPC uses this signal to detect bus errors signaled by other agents. As an output, the MPC uses BUSERR to indicate parity errors detected on either the BAD or BSC signals and to indicate handshake protocol violations detected on the BSC signals. TIMOUT (Time·Out) TIMOUT is an input from the PSB bus used to detect a time-out condition signaled by the CSM. TIMOUT is an active high input to the MPC and must be connected to the TIMOUT signal of the PSB bus through a 74AS1804 or equivalent inverter buffer. 6-162 infef 82389 control to allow operation with processors using 8-, 16-, or 32-bit data buses. 4.2 Dual-Port Memory Control Signals The MPC provides the following signals to support dual-port memory. SEL (Select) The MPC asserts SEL to indicate that a dual-port memory access is in progress. The assertion of SEL initiates the dual-port operation and during memory reads, can be used to enable the dual-port data buffers onto the BAD bus. When the MPC completes the PSB bus handshake on the PSB bus, or if the MPC detects an exception, it deasserts SEL. COM (Complete) COM is an input to the MPC. The dual-port memory controller asserts COM to indicate it is ready to complete dual-port access. COM is assumed to be synchronous to the bus clock. The MPC asserts the Replier Ready (SC4) signal on the PSB bus on the bus clock after the memory controller has asserted COM. The memory controller cannot deassert COM until the end-of-transfer (EaT) handshake is complete on the PSB bus. This requires that the memory controller monitor the PSB bus for the EaT handshake. ERR (Error) ERR is asserted by the dual-port memory controller to Signal a memory data parity error. ERR must be stable (high or low) whenever COM is asserted. The MPC responds to this signal by completing the replier handshake on the PSB bus using a "data error" agent error code. This signal may be asynchronous to the bus clock since it is qualified by the COM signal. 4.3 Local Bus Signals The MPC provides five signal groups that together interface to the CPU's local bus. These local bus signal groups are: • • • • • data address and select transfer control interrupt OMA control All local bus signals are assumed to be asynchronous to the bus clock. 4.3.1 DATA BUS The local data bus (0 <31 .. 0 » is a bidirectional group of signals that transfers data between the host CPU, OMA controller, or memory and the MPC. Although this is a 32-bit interface, the MPC provides Not all processors use the same byte order when performing multiple data byte operations. For example, for a 16-bit write to memory, one processor may carry the least-significant byte on local bus bits 0<7 .. 0> and the most-significant byte on bits 0< 15.. 8>, while another processor may carry the least-significant byte on bits 0 < 15 .. 8> and the most-significant byte on bits 0<7 .. 0>. For a given agent, be sure to implement the processor interface to maintain consistent byte addressability with all other agents in the system. 4.3.2 ADDRESS AND SELECT SIGNALS The address and status signals identify all MPC operations over the local bus. A<5 .. 2> (Address) The address inputs select MPC registers for message and interconnect space operations. A 1 and AO are omitted to provide a consistent register address for all data bus width options. These Signals are qualified by commands in the MPC (for example, RO or WR, defined in section 4.1.3.3). To the MPC, the state of A < 5.. 2> must be stable within the specified setup and hold window. The address values defined by A < 5.. 2 >, and required to access MPC registers, are provided in, "Programming the Host Interface" of the MPC User's Manual, Part Number: 176526. BE<3 .. 0> (Byte Enable) These input signals identify valid bytes for memory and I/O reference operations and also provide data path control for register and OMA operations. The assertion of a byte enable signal validates a particular byte on the data bus. Signals BE < 3.. 0 > correspond to data bytes 3 through 0 on the data bus (where byte 3 is 0<31 .. 24». Only combinations supported by the PSB bus specification are valid. Valid combinations are summarized in Table 4-2. Values not shown in the table are illegal and will result in unpredictable operation. These signals are qualified by commands (for example, RO or WR) in the MPC and must be stable within the specified setup and hold window. Operation with 32-bit local buses requires that all byte enable and data Signals are used. For 16-bit local buses, BE2 and BE33 are deasserted, BE1 and BE2 are used to indicate which of the two bytes will contain valid data, and only 0 < 15 .. 0> are used. For 8-bit local bus operations, BE3 is asserted, BE2 is deasserted, and BE1 and BEO are used to select which byte of the PSB bus will carry the valid data byte. This mode uses only 0<7 .. 0> (on the local bus). Note that during all read operations, the MPC drives 0<31 .. 0>. 6-163 inter 82389 Table 4-2. Valid Byte Enable Combinations' Local Bus BE3 BE2 BE1 BEO L L H L H H L H H H L L L L L L L H H L H H H H L L L H L L H H L H L H L H L H H L H H H L H L PSB Bust 031024 023016 01508 0700 A031A024 A023A016 V3 V3 V2 V2 V2 V1 V2 V1 V1 V1 VO V3 V3 x x x V2 V2 V2 x V2 x x x x x x x x x x x V3 x x V3 x x x x x x VO x x x V2 x x x x x V1 V1 x VO x x x V1 x VO VO VO x x x x A015A08 A07AOO V1 V1 V1 V3 V1 V1 V3 x V1 x VO x VO x x x x x VO V2 x VO x V2 x VO x VO NOTES: L - Electrical low state (active) H - Electrical high state (inactive) Vx - Valid data bytes x - Active bytes with undefined data t - For this PSB bus, these combinations apply to reference operations, not message space operations MEMSEL (Memory Select) This MPC input signal, when asserted, indicates to the MPC that the current operation is a memory reference to the PSB bus. It is qualified by the assertion of AD or WR (defined in section 4.3.3). The state of MEMSEL be must stable within the defined set-up and hold window. Additionally, for MEMSEL to be valid, the signals 10SEL, REGSEL, IDACK, and ODACK must not be active during the same setup and hold window. (IDACK and ODACK are defined later in section 4.3.5.) 10SEL (110 Select) This input signal, when asserted, indicates to the MPC that the current operation is an I/O reference to the PSB bus. It is qualified by the assertion of RD or WR (defined in section 4.3.3). The state of 10SEL must be stable within the defined setup and hold window. Additionally, for 10SEL to be valid, the signals MEMSEL, REGSEL, IDACK, and ODACK must not be active during the same setup and hold window. (IDACK and ODACK are defined later in section 4.3.5.) REGSEL (Register Select) This input signal, when asserted, identifies an operation as an MPC-register access. The host CPU asserts REGSEL to set up the MPC for message or interconnect space operations and these are mapped as register operations. REGSEL is qualified by the assertion of AD or WR (defined in section 4.3.3). The state of REGSEL must be stable within the defined setup and hold window. Addition- ally, for REGSEL to be valid, the signals MEMSEL, 10SEL, IDACK, and ODACK must not be active during the same setup and hold window. (IDACK and ODACK are defined later in section 4.3.5). LOCK This input signal allows back-to-back operations to be performed on the PSB bus or to local interconnect space. When LOCK is asserted, any resource accessed by the operation (PSB bus or local interconnect space) is locked until LOCK is deasserted. 4.3.3 TRANSFER CONTROL SIGNALS Transfer control to the MPC over the local bus is provided by two command signals (Read and Write) and a wait signal. This handshake provides fully interlocked (two-sided handshake) operation. RO (Read) This input signal, when asserted, generally initiates a read operation. The CPU asserts RD to initiate read operations of MPC registers. The CPU also asserts RD to initiate read operations of 1/0 and memory locations present on the PSB bus. The DMA controller asserts RD to qualify DMA cycles. In this last case, the MPC does not interpret RD as an indicator of the data transfer direction, but only to qualify the DMA acknowledge signal (see definitions for ODACK and IDACK). RD must transition cleanly, since it is used to latch other signals that define the parameters of the operation. 6-164 82389 WR (Write) This input signal, when asserted, ~erally initiates a write operation. The CPU asserts WR to initiate write operations of MPC registers. The CPU also asserts WR to initiate write operations of I/O and memory locations present on the PSB bus. The DMA controller asserts WR to qualify DMA cycles. In this last case, the MPC does not interpret WR as an indicator of the data transfer direction, but only to qualify the DMA acknowledge s.!£!:!.al (see definitions for ODACK and IDACK). WR must transition cleanly, since it is used to qualify other signals that define the parameters of the operation. WAIT WAIT is an MPC output signal used to delay (or suspend) a local bus operation during an access to an asynchronous resource via the MPC. The MPC asserts WAIT to the local CPU for memory, I/O, and interconnect accesses to the PSB bus; and for local interconnect accesses. WAIT, when asserted, allows time for the accessed resource to become available. The MPC asserts WAIT after the CPU has asserted the command signal (RD or WR). On the PSB bus, the MPC deasserts WAIT after either the PSB bus EOT handshake or an exception has occurred. For accesses to local interconnect space, the MPC deasserts WAIT after the interconnect operation is complete. 4.3.4 INTERRUPT SIGNALS Interrupt signals are used to inform the host CPU that the MPC requires service. The MPC provides two signals: one for message operations and one for reference errors. MINT (Message Interrupt) The MPC asserts this output signal for all messagerelated signaling to the host CPU. This includes the arrival of an unsolicited message, an available transmit FIFO buffer, the completion of a solicited transfer, and an error on message transfer. EINT (Error Interrupt) The MPC asserts this output signal to the CPU to indicate errors related to memory, I/O, or interconnect space operations (Le., all except message operations). Internal registers in the MPC provide details of the error via interconnect space. 4.3.5 DMA CONTROL SIGNALS The MPC provides several DMA control signals to support an external DMA controller. A DMA controller is required to support solicited message operations. ODREQ (Output Channel DMA Request) ODREO is an output signal the MPC asserts to enable DMA transfer of data to the MPC (Le., output to the PSB bus). This signal behaves as a normal DMA request line. For a solicited message output operation, the MPC asserts ODREO when a solicited output packet buffer is empty and as long as the MPC is in the transfer phase (the Buffer Request unsolicited message has been sent). The DMA controller responds by performing DMA transfers to the MPC for transfer to the receiving agent. IDREQ (Input Channel DMA Request) The MPC asserts this output signal to enable DMA transfer of data from the MPC (Le., input from the PSB bus). This signal behaves as a normal DMA request line. For a solicited message input operation, the MPC asserts IDREO after a solicited input packet buffer is full and as long as the MPC is in the transfer phase. The DMA controller responds by performing DMA transfer from the MPC. IDREO remains asserted until the packet is transferred to memory. ODACK (Output Channel DMA Acknowledge) ODACK is an input signal asserted by the DMA controller in response to the assertion of ODREO by the MPC. The DMA controller asserts ODACK to set up the MPC for the DMA transfer from local memory (or the controller) to the MPC. The assertion of ODACK is qualified by the assertion of RD or WR by the MPC. The direction of data transfer with respect to the MPC is controlled by the request signal (IDREO or ODREO) and the acknowledge signal (IDACK or ODACK). The command signal (RD or WR) only qualifies the acknowledge signal (IDACK or ODACK). The state of ODACK must be stable within the defined setup and hold window. Additionally, for 0iJACR' to be valid, the signals MEMSEl, 10SEl, REGSEl, and IDACK must not be active during the same setup and hold window. IDACK (Input Channel DMA Acknowledge) IDACK is an input signal asserted by the DMA controller in response to the assertion of IDREO by the MPC. The DMA controller asserts IDACK to set up the MPC for the DMA transfer from the MPC to the DMA controller (or local memory). The assertion of IDACK is qualified by the assertion of RD or WR by the DMA controller. The direction of data transfer with respect to the MPC is controlled by the request signal (IDREO or ODREO) and the acknowledge signal (IDACK or ODACK). The command signal (RD or WR) only qualifies the acknowledge signal. The state of IDACK must be stable within the de- 6-165 inter 82389 fined setup and hold window. Additionally, for fE5ACK to be valid, the signals MEMSEl, IOSEl, REGSEl, and OOACK must not be active during the same setup and hold window. 4.5 Power and Ground Signals The MPC requires supply voltage and ground connections at the pin numbers listed below. 4.4 Interconnect Bus Signals Vee Ground The interconnect bus signals provide a simple interface to a microcontroller for implementation of interconnect space. All interconnect bus signals are asynchronous to the bus clock and to the local bus . signals. 04 M4 N8 M12 012 C7 J3 N4 N6 N9 N11 N13 K13 F13 C12 08 C5 C3 IAD<7 ..0> (Interconnect Address/Data) IAO<7 .. 0> is an 8-bit, bidirectional, multiplexed address and data bus intended to. interface directly to a microcontroller. In addition to the MPC, other interconnect registers can be connected to this bus. IREO (Interconnect Request) The MPC asserts this output signal when an interconnect operation has been requested from either the local bus or the PSB bus. The MPC deasserts IREO after the microcontroller has written to the Interconnect Reference Arbitration register. lAST (Interconnect Address Strobe) lAST is an input signal from the microcontroller and, when asserted, indicates that a valid address is on the interconnect bus. lAST may be directly connected to the ALE (Address latch Enable or equivalent) output of most microcontrollers. lAST must provide clean transitions. IRD (Interconnect Bus Read) IRO is an input signal. The microcontroller asserts IRO to perform a read operation to one of the MPC interconnect interface r~ters. IRO must provide clean transitions. When IRO is asserted in conjunction with the IWR signal, all MPC outputs are disabled. IWR (Interconnect Write) IWR is an input signal. The microcontroller asserts IWR to perform a write operation to one of the MPC interconnect interface registers. IWR must provide clean transitio~When IWR is asserted in conjunction with the IRO signal, all MPC outputs are disabled. 5.0 MPC 82389 MECHANICAL DATA The MPC 82389 is packaged in a149 lead pin grid array. The square package has a 15 x 15 grid layout with the outer 3 rows used along each edge. 5.1 Pin Assignment The MPC 82389 pinout as viewed from the top side of the component is shown in Figure 5-1. When viewed from the pin side, the component pin layout is shown in Figure 5-2. To reduce possible noise problems on the board, Vee and Vss must be connected to multiple supplies. The board should be laid out with Vee and Ground planes for power distribution and the components Vee and Vss must be connected to the appropriate power plane. 5.2 Package Dimensions The 82389 is packaged in a 149-pin Ceramic Pin Grid Array (PGA). The pins are arranged 0.100 inch (2.54 mm) center-to-center, in a 15. x 15 matrix. Please refer to Figure 5-3 for case outlines; A wide variety of sockets are available including the zero-insertion force socket for prototyping. 6-166 intJ 82389 2 3 4 5 o o o o o o o o o o o o o 02 AS BE3 o BE2 o REGSEL 01 04 03 A4 Vss o o A3 0 BEl A2 07 06 05 09 DB o Vss 7 o 012 o 011 o 010 o 014 o 013 o Vee 8 10 o o 017 020 o o 016 019 o o 015 o o Vee Vss 018 o 023 o 022 o 021· 11 o o 12 o 026 028 025 027 o 13 o 030 14 o 031 lADS 0 000 Vss IA03 IA04 000 o o IA07 A 000 029 024 Vee 15 IAOl IA02 IA06 o IWR C oiRii o 000 BED IAOD lAST IREO METAL LID o 10REO o MEMSEL o (TOP VIEW) IOSEL 000 000 OOREO 10ACK OOACK BA02 ViR WAIT BA05 o EINT LOCK o ERR BA08 Vss o BSC2 BSCO o BSC6 0 0 BSC4 Vee '0 BScii o o o ARBl o BAOll BA012' K 000 BA013 BSCl BSC5 H BA01D 000 0 BSC7 BAD9 Vss BSC3 SCOIRO BA07 0 000 BSC9 BA06 COM 000 SEL G 000 000 MINT BA04 000 000 iID BA03 o Vss o ARB3 o o Vee o ARBS o ARB4 o 000 o VSS Vss REFAOR Vee o 000 BREO o BUSERR o LACHn o SCOIRl ARBo ARB2 RSTNC . AOOIR TlMOUT BBCLK 2 3 4 5 6 7 8 BPAR3 o RESET o 0 o 0 Vss BA027 Vss o o BA030 o 0 BPAR2 BA031 10 11 0 BA028 BA015 o BA025 BAOH o BA019 0 BAD23 BA018 0 BA020 o BA021 N P a 12 13 14 15 290145-9 Figure 5-1. MPC 82389 Pinout-View from Top Side 6-167 L 000 BA016 BPARO BPARl BA014 82389 15 A o IA07 o lADS 14 o 031 0 lADS 13 o 030 12 o o2S 11 o o2S 000 029 027 025 o 023 o 022 o o 020 o o 0 0 0 0 o o IWR IA04 IA03 VSS 024 021 o1S oiiffi o 0 o IA02 IAOl Vee 4 3 o o o o o 0" 07 04 02 DO o o o 013 011 os oos o o o o o o 017 014 o 019 5 7 S 10 01S o o 012 lAST o o A4 BE3 o o o o VSS Vee VSS G VSS o o o o o 10SEL o (SOTTOM VIEW) OoACK 000 BA07 BAoS BA09 WAIT BA012 BAOll VSS o BAolS o N o BA014 COM 0 0 0 o BAolS Vet Vee 0 o Vss o o o o BSCl BA017 BAD19 o o o IDACK 0 lOR EO o OoREO WR iID LOCK MINT ERR EINT 000 BA013 BA020 o MEMSEL 0 REGSEL 000 VSS 000 BAolS o BEl o BE2 000 BAoS 000 K A3 000 BAoS 000 BAol0 A2 BEO 000 BAoO AS o 010 IAOO BAol 01 VSS Vee 000 IREO 03 05 015 o 09 o BAD27 o o VSS o o 00 BPARO o BAD22 BA024 BAD2S BA029 BAD31 BPAR2 15 14 13 12 11 10 VSS o Vee RESET o o REFAoR o o VSS o o ARBS o o Vss o BSCO SEL 000 BSC4 BSC3 o 0 BSCS 'SCDIRO o o BSC2 o BSC9 o BBCLK TIMOUT AoolR RSTNC ARB2 ARBO SColRl BSCS S 7 6 5 4 3 2 1 290145-10 Figure 5·2. MPC 82389 Pinout-View from Pin Side 6-168 inter 82389 Table 5·1 Signal and Characteristic Pin # Vee A5 A4 A3 A2 BE3 BE2 BE1 BEO 10SEL MEMSEL REGSEL 10ACK OOACK 10REO OOREO WR RO WAIT Vss MINT EINT LOCK ERR SEL COM BSC9 BSC8 BSC7 BSC6 BSC5 BSC4 BSC3 BSC2 BSC1 BSCO SCOIR1 SCOIRO I I I I I I I I I I I I I a a I I a a a I a a I 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 a a Vee Vss ARB5 ARB4 ARB3 ARB2 ARB1 ARBO I/O,OC I/O,OC I/O,OC I/O,OC I/O,OC I/O,OC Vss BREO TIMOUT IREO Signal and Characteristic I/O,OC a a 04 B1 C2 02 03 C1 01 E2 E3 F3 F2 E1 G2 G3 F1 G1 H2 H1 H3 J3 J1 K1 J2 K2 L1 K3 N1 01 P2 P1 N3 M3 M2 M1 L3 L2 02 N2 M4 N4 A15 P5 P4 04 P3 03 N6 P6 07 E15 REFAOR AOOIR BPAR3 BA031 BA030 BA029 BA028 BA027 BA026 BA025 BA024 BA023 BA022 ' BA021 BA020 BA019 BA018 BA017 BA016 BA015 BA014 BA013 BA012 BA011 BA010 BA09 BA08 BA07 BA06 BA05 BA04 BA03 BA02 BA01 BAOO BPAR2 BPAR1 BPARO a a 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 Vee Vss Vss Vee Vss Vss Vss BBCLK LACHn RESET RSTNC Signal and Characteristic Pin # I I I IIO,OC Vss NOTES: I = Input signal = Output signal 1/0 = Input or output signal OC = Open-collector signal a 6-169 N7 06 P9 011 P11 012 P12 N12 013 P13 014 P14 015 P15 N15 N14 M15 M14 M13 014 L14 L13 K15 K14 J15 J14 J13 H15 H14 H13 G15 G14 G13 F15 F14 010 P10 N10 N8 N9 N11 M12 N13 F13 K13 08 P8 09 05 C3 lAST IRO IWR IA07 IA06 IA05 IA04 IA03 IA02 IA01 IAOO Pin # I I I 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 Vee Vss 031 030 029 028 027 026 025 024 023 022 021 020 019 018 017 016 015 014 013 012 011 010 09 08 07 06 05 04 03 02 01 DO 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 110 1/0 1/0 110 110 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 Vee Vss Vss BUSERR I/O,OC E14 015 C15 A15 B15 B14 C15 C13 014 013 E13 012 C12 A14 A13 B13 A12 B12 A11 B11 C11 A10 B10 C10 A9 B9 C9 A8 B8 C8 A7 B7 A6 B6 C6 A5 B5 A5 B4 C4 A3 B3 A2 B2 A1 C7 08 C5 P7 i 040.00 -A- 35.56 2.5. 2.22 ." cO" ... I: @@@@@ @@@@@@@ @@@@@@@ @@@@ @@@ @@@ @@@ CD I{' ... ~ .1>0 CD ...q> --.j 0 ~ "tI G) ;I:> @@@@@@ @@@@@@@ @@@@@@@ @@@@ @@@ @@@ @@@ 0) N W 0) "tI co III @@@ @@@ @@@ @@@@ 0 ~ III CO CD c 3" @@@ @@@ @@@ @@@@ CD ~ © ::s ~ 1/1 0" ::s ~ 1/1 .- © !iiiiJ KOVAR INDEX MARK 04.0 290145-11 NOTE: Dimensions in mm. ~ '1iiI © 2$ ~ ~ C::(I = © ~ inter 82389 NOTE: Stresses above those listed may cause permanent damage to the device. This is a stress rating only and functional operation at these or any other conditions above those listed in the operational sections of this specification is not implied. 6.0 MPC 82389 ELECTRICAL DATA This section provides detailed target A.C. and D.C. specifications for the MPC 82389. 6.1 Maximum Ratings Operating Temperature (Under Bias) ................. -10°C to Exposure to absolute maximum rating conditions for extended periods may affect device reliability. Although the 82389 contains protective circuitry to resist damage from static electrical discharges, always take precautions against high static voltages or electric fields. + 85°C Storage Temperature .......... - 65°C to + 150°C Voltage on Any Pin .......... -0.5V to Vee + 0.5V Power Dissipation .......................... 2.5W 6.2 D.C. Specifications vee = 5.0V ±10%, TA = O°Cto + 70°C Table 6-1_ D.C. Specifications Symbol Min Max Units Input Low Voltage -0.5 0.8 V VIH Input High Voltage 2.0 VOL1 Output Low Voltage 0.45 V IOL Max VOL2 Output Low Voltage Open Collector 0.55 V IOL Max VOH Output High Voltage V IOH Max lee Power Supply Current 400 mA ±10 VIL Parameter Vee + 0.5 2.4 Test Conditions V IL Input Leakage Current /LA OV s VIN s Vee 1L1 Open Collector ±100 /LA O.4V s VIN s 2.4V Leakage Current ±400 /LA OV s VIN s Vee IL2 BBCLK Input Leakage Current ±100 /LA OV s VIN s Vee IOL Output Low Current 4.0 mA VOL = 0.45V IOL1 Open Collector Output Low Current 60.0 mA VOL = 0.55V IOL2 ADDIR and REFADR Output Low Current 8.0 mA VOL - 0.45V IOH Output High Current -1.0 mA VOH = 2.4V CI Input Capacitance 10 pF fe = 1 MHz, 25°C (Note 1) CIO I/O Capacitance 20 pF fe = 1 MHz, 25°C (Note 1) CeLK Clock Input Capacitance 15 pF fe = 1 MHz, 25°C (Note 1) Coe Open Collector Capacitance 20 pF fe = 1 MHz, 25°C (Note 1) NOTE: 1. Sampled only. not 100% tested. 6-171 inter 82389 6.3 A.C. Specifications The A.C. specifications for the MPC 82389 are specified in Tables 6-2, 6-3 and 6-4 and Figures 6-2, 6-3, 6-4 and 6-5. Figure 6-1 specifies the test points for measuring the A.C. parameters. Table 6-2 and Figures 6-2 and 6-3 specify the A.C. parameters for the local bus. Table 6-3 and Figure 6-4 specify the A.C. parameters for the interconnect bus. Table 6-4 and Figure 6-5 specify the A.C. parameters for the PSB bus. Figure 6-6 defines the test load for the A.C. specifications. OUTPUT WAVEFORM 2.4V 0.4V INPUT WAVEFORM 290145-12 Figure 6-1. A.C. Test Waveforms Table 6-2. Local Bus A.C. Specifications (Vee Symbol Parameter = 5V ± 10%, TA Min Max = O·C to Units Address and BE Setup to Command Active 30 ns Select and DACK Setup to Command Active 24 ns Address, BE, Select and DACK Hold from Command Active 10 ns t3 Time between Commands 35 4 Command Inactive to Read Data Disable (Note 5) ts Read Data Hold from Command Inactive 3 ns ta Read Data Enable from Command Active 0 ns t7 WAIT Active from Command Active ta Command Inactive from WAIT Inactive t1 t2 0 Command Active to Write Data Valid t11 Write Data Hold from WAIT Inactive t12 Command Active to LOCK Active (Note 1) t13 LOCK Hold from WAIT Inactive (Note 2) t14 Command Active Time t1S Read Data Valid from Command Active t16 Write Data Setup to Command Inactive -Registers -DMA ns ns CL = 50 pF CL = 150 pF ns 50 200 WAIT Inactive to Read Data Valid t10 Test Conditions ns 24 35 t9 + 70· C) 0 ns ns ns 100 0 70 ns ns , ns 60 35 25 ns CL = 150 pF ns ns 5 t17 Write Data Hold from Command Inactive t18 Command Active to MINT or DREQ Inactive (Notes 3, 4) 70 ns CL = 50 pF t19 Command Active to DREQ Inactive (Note 4) 45 ns CL = 50 pF ns NOTES: 1. Required to guarantee locking of resource. 2. Required to guarantee resource remains locked. 3. MINT deassertion only if no other sources are pending. , 4. For DREQ inactive timing, t19 applies to a normal last transfer deassert condition and t1B to an error deassert condition. 5. Disable condition occurs when the output current becomes less than the input leakage specification. 6-172 82389 BE3-BEO MEMSEL IOSEL REGSEL A5-A2 "\ -f . -1 ~t1~ ~ t2 Ri5 or WR WAIT t3 r- ~ ~ t=t8~1 ~"~ ~ ~,.~( ~~t9-1X ~~'I JC)t5 031-00 (OUT Of MPC) 031-00 (INTO MPC) . I ~t10~ ~ X ~t12j LOCK ~ VAllO VAllO t" ~ r- X I t '3 t: -f 290145-13 Figure 6-2. Local Bus Reference Operation Timing 031-00 (OUT Of MPC) 031-00 (INTO MPC) MINT 10REO. OROEO 290145-14 Figure 6-3. Local Bus Register and DMA Operation Timing 6-173 inter 82389 Table 6·3. Interconnect Bus A.C. Specifications (Vee Symbol Parameter Min = 5V ± 10%, T A Max = Units t31 lAST Active Time 85 ns t32 Command Active Time 250 ns t33 Command Inactive to. lAST Active 25 ns t33A lAST Inactive to Command Active 120 ns t34 Address Setup to lAST Inactive 40 ns t35 Address Hold from lAST Inactive 20 ns t36 Write Data Hold from Command Inactive 120 ns t37 Write Data Hold from Command Inactive 5 ns t38 Read Data Enable from Command Active 0 ns t39 Read Data Valid from Command Active t40 Read Data Hold from Command Inactive t41 Read Data Disable from Command Inactive (Note 2) 30 ns t42 EINT, IREO Inactive from Command Active (Note 1) 100 ns 120 0 O°C to ns + 70°C) Test Conditions CL = 150 pF ns CL = 150 pF NOTES: 1. EINT inactive only on write to error register. IREQ inactive only on write to arbitration register. 2. Disable condition occurs when the output current becomes tess than the input leakage specification. lAST IRD,IWR IAD7-IADO (INTO MPG) IAD7-IADO (OUT OF MPG) EINT 290145-15 Figure 6·4. Interconnect Bus Timing 6-174 82389 Table 6-4. PSB Bus Interface A.C. Specifications (Vee Symbol tcp Parameter Min Clock Period = 5V ± 10%, T A = O·C to + 70·C) Max Units 99.9 ns ns tCL BCLK Low Time 40 tCH BCLK High Time 40 ns tBCL BBCLK Low Time 38 ns tBCH BBCLK High Time 38 tRB BCLK Rise Time tFB BCLK Fall Time tR BBCLK Rise Time tF BBCLK Fall Time tSK BCLK to BBCLK Skew (Note 1) tCD Clock to Output Delay BREQ, BUSERR, RSTNC (Note 2) ARB5-ARBO (Notes 2, 3) BAD31-BADO, BSC7-BSCO BPAR3-BPARO, BSC9, BSC8 SCDIRO, SCDIR1 (H to L) (L to H) ADDIR (L to H) (H to L) REFADR SEL tH toN toFF ns 1 5 ns 1 2 ns 0.5 1 ns 0.5 1 ns -0.5 4.0 ns 36 36 29 29 19 21 21 27 29 29 ns ns ns ns ns ns ns ns ns ns CL CL CL CL CL CL CL CL CL CL = = = = = = = = = = 500pF 500pF 75 pF 50 pF 25pF 25 pF 50pF 50pF 75 pF 50pF CL CL CL CL CL CL CL CL = = = = = = = = 25 pF 25 pF 15 pF 15 pF 15pF 25 pF 25 pF 15 pF Hold Time from Clock BREQ,BUSERR,RSTNC ARB5-ARBO (Note 3) BAD31-BADO, BPAR3-BPARO BSC9-BSCO SCDIRO, SCDIR1 ADDIR REFADR SEL 6.5 6.5 5.0 4.0 4.0 5.0 4.0 4.0 ns ns ns ns ns ns ns ns Turn On Delay from Clock (Note 4) BREQ,BUSERR, RSTNC ARB5-ARBO (Note 1) BAD31-BADO, BPAR3-BPARO BSC9-BSCO 6.5 6.5 5.0 4.0 ns ns ns ns Turn Off Delay from Clock (Note 5) BREQ,BUSERR,RSTNC ARB5-ARBO (Note 3) BAD31-BADO, BPAR3-BPARO BSC9-BSCO 36 36 29 29 6-175 Test Conditions ns ns ns ns 82389 Table 6-4. PSB Bus Interface A.C. Specifications (Vee = 5V ± 10%, TA = O·C to Symbol 'tsu tlH Parameter Min Input Setup Time to Clock . BREO, BUSERR, RSTNC ARB5-ARBO (Note 3) BAD31-BADO, BPAR3-BPARO BSC9-BSCO . TIMEOUT, LACHn, RESET COM,ERR Input Hold Time from Clock BREO,BUSERR,RSTNC ARB5-ARBO (Note 3) BAP31-BADO, BPAR3-BPARO BSC9-BSCO TIMEOUT, LACHn, RESET COM,ERR Max Units 22 40 24 24 24. 40 ns ns ns ns ns ns 0 0 ns ns ns ns ns ns 3 2 2 3 + 70·C) (Continued) Test Conditions NOTES: 1. The clock timings are provided to reference the MPC speCification to.the PSB bus specifications. These specifications assume a 74AS1804 or equivalent buffer. 2. The 500 pF load is a distributed load as defined in the PSB bus specification. The open drain signals are designed such that the outpUt delay and bus loss meets the PSB specification requirement. . 3. The ARB5-ARBO signal timings are with respect to the first and last clock of the arbitration period. Details can be found in the PSB bus specification. Also, the arbitration logic has been designed to meet the loop delay specification accounting for the full path of input to output plus bus loss. . 4. Minimum turn on times are measured the same way as hold times. Specifically, the logic level driven by another device on the previous clock cycle must not be disiurbed. 5. Maximum turn off times are measured to the condition where the output leakage current becomes less than the input leakage specification. 6. All stated capacitances are based on design requirements. Production test limitations may require some parameters to be tested under a different condition. 6-176 inter 82389 VALID INPUTS NOTHER SOURCE ______---.-.rr-_Isu~~ r----X"," ___J "'"_ _ _ __ 290145-16 NOTE: 1. SAMPOINT point for BBCLK is 1.4V. Figure 6-5. PSB Bus Interface Timing 7.0 REFERENCE DOCUMENTS 290145-17 Figure 6-6. A.C. Test Load Part Number Title Description 176526 MPC User's Manual 146077 MULTIBUS® II Architecture Specifications 149299 Interconnect Interface Specifications 149300 MULTIBUS® II MPC External Product Specifications 149247 MULTIBUS® II Transport Protocol Specifications 6-177 Floppy Disk Controllers 7 8272A SINGLE/DOUBLE DENSITY FLOPPY DISK CONTROLLER Compatible in Both Single and • IBM Double Density Recording Formats Data Record Lengths: • Programmable 128,256,512, or 1024 Bytes/Sector Multi-Sector and Multi-Track Transfer • Capability • • • • • Data Transfers in DMA or Non-DMA Mode Seek Operations on Up to Four • Parallel Drives with all Intel and Most • Compatible Other Microprocessors Drives Up to 4 Floppy or Mini-Floppy Disks 8" , 5%" and 3%" Floppy Disk • Controls Drives Single-Phase 8 MHz Clock Single + 5V Power Supply (± 10%) Plastic 40 Pin DIP or 40 Pin CERDIP Packages The 8272A is an LSI Floppy Disk Controller (FDG) Chip, which contains the circuitry and control functions for interfacing a processor to 4 Floppy Disk Drives. It is capable of supporting either IBM 3740 single' density format (FM), or IBM System 34 Double Density format (MFM) including double sided recording. The 8272A provides control signals which simplify the design of an external phase locked loop and write precompensation circuitry. The FDC simplifies and handles most of the burdens associated with implementing a Floppy Disk Drive Interface. The 8272A is a pin-compatible upgrade to the 8272. TERMINAL COUNT 4--READY WRITE PROTECTITWO SIDE _ _ INDEX FAUl.T/TRACK 0 DRIVE SELECT 0 DRIVE SELECT 1 MFM MODE 'RWISEEI< HEAD LOAD HEAD SELECT LOW CURRENT/DIRECTION FAULT RESET/STEP 210606-1 Figure 1. 8272A Internal Block Diagram 7-1 210606-2 Figure 2. Pin Configuration. November 1986 Order Number: 210606-002 inter 8272A Table 1. Pin Description Pin No. Type ConnectionTo RESET 1 I p.P RESET: Places FDC in idle state. Resets output lines to FDD to "0" (low). Does not clear the last specify command. RD 2 1(1) p.P READ: Control signal for transfer of data from FDC to Data Bus, when "0" (low). WR 3 1(1 ) p.P WRITE: Control signal for transfer of data to FDC via Data Bus, when "0" (low). CS 4 I p.P CHIP SELECT: IC selected when "0" (low) allowing RD and WR to be enabled. Ao 5 1(1 ) p.P DATA/STATUS REGISTER SELECT: Selects Data Reg (Aa Status Reg (Aa = 0) contents to be sent to Data Bus. -p.P DATA BUS: Bidirectional8-Bit Data Bus. Symbol DBa-DB? 6-13 1/0(1) Name and Function = 1) or DRO 14 0 DMA DATA DMA REQUEST: DMA Request is being made by FDC when DRO "1".(3) DACK 15 I DMA QMA ACKNOWLEDGE: DMA cycle is active when "0" (low) and Controller is performing DMA transfer. TC 16 I DMA TERMINAL COUNT: Indicates the termination of a DMA transfer when "1" (high)(2). IDX 17 I FDD INDEX: Indicates the beginning of a disk track. p.P INT 18 0 ClK 19 I INTERRUPT: Interrupt Request Generated by FDC. CLOCK: Single Phase 8 MHz (4 MHz for mini floppies) Squarewave Clock. GND 20 GROUND: D.C. Power Return. Vee 40 D.C. POWER: RWISEEK 39 0 FDD READ WRITE/SEEK: When "1" (high) Seek mode selected and when "0" (low) Read/Write mode selected. lCT/DIR 38 0 FDD LOW CURRENT/DIRECTION: lowers Write current on inner tracks in Read/Write mode, determines direction head will step in Seek mode. FR/STP 37 0 FDD FAULT RESET/STEP: Resets fault FF in FDD in Read/Write mode, provides step pulses to move head to another cylinder in Seek mode. HDl 36 0 FDD HEAD LOAD: Command which causes Read/Write head in FDD to contact diskette. RDY 35 I FDD READY: Indicates FDD is ready to send or receive data. Must be tied high (gated by the index pulse) for mini floppies which do not normally have a Ready line. WP/TS 34 I FDD WRITE PROTECT/TWO-SIDE: Senses Write Protect status in Read/ Write mode, and Two Side Media in Seek mode. FlT/TRKO 33 I FDD FAULT/TRACK 0: Senses FDD fault condition in Read/Write mode and Track 0 condition in Seek mode. 31,32 0 FDD PRECOMPENSATION (PRE-SHIFn: Write precompensation status during MFM mode. Determines early, late, and normal times. WR DATA 30 0 FDD WRITE DATA: Serial clock and data bits to FDD. DS1, DSo 28,29 0 FDD DRIVE SELECT: Selects FDD unit. PS1, PSa + 5V 7-2 8272A Table 1. Pin Description (Continued) Symbol HOSEL Pin No. Type Connection To 27 0 FOO Name and Function HEAD SELECT: Head 1 selected when "1" (high) Head 0 selected when "0" (low). MFM 26 0 PLL MFM MODE: MFM mode when "1," FM mode when "0". WE 25 0 FDO WRITE ENABLE: Enables write data into FDO. VCO 24 0 PLL VCO SYNC: Inhibits VCO in PLL when "0" (low), enables VCO when "1. " RD DATA 23 I FDO READ DATA: Read data from FDD, containing clock and data bits. DW 22 I PLL DATA WINDOW: Generated by PLL, and used to sample data from WRCLK 21 I FDO. = 500 kHz, MFM = 1 MHz, with a pulse width of 250 ns for both FM and MFM. Must be enabled for all operations, both Read and Write. WRITE CLOCK: Write data rate to FDD FM NOTES: 1. Disabled when CS = 1. 2. TC must be activated to terminate the Execution Phase of any command. 3. ORQ is also an input for certain test modes. It should have a 5 kn pull-up resistor to prevent activation. load a command into the FDC and all data transfers occur under control of the 8272A and DMA controller. I CPU ~ There are 15 separate commands which the 8272A will execute. Each of these commands require mUltiple 8-bit bytes to fully specify the operation which the processor wishes the FDC to perform. The following commands are available. SYSTEM BUS L r "'" 7- <> ORO ~ DATA WINDOW RD DATA -B-r ~ WR DATA 8237 OM> CONTROLLER ~ 8272A FOC A. DRIVE ) INTERFACE INPUT CONTROL ~ -rc- TERMINAL L - COUNT Read Data ReadlD Read Deleted Data Read a Track Scan Equal Scan High or Equal Scan Low or Equal Specify 1\ OUTPUT CONTROL V ) 210606-3 For more information see the Intel Application Notes AP-116 and AP-121. Figure 3. 8272A System Block Diagram DESCRIPTION Hand-shaking signals are provided in the 8272A which make OMA operation easy to incorporate with the aid of an external DMA Controller chip, such as the 8237 A. The FOC will operate in either DMA or Non-DMA mode. In the Non-OMA mode, the FDC generates interrupts to the processor for every transfer of a data byte between the CPU and the 8272A.ln the OMA mode, the processor need only Write Data Format a Track Write Deleted Data Seek Recalibrate (Restore to Track 0) Sense Interrupt Status Sense Drive Status FEATURES Address mark detection circuitry is internal to the FOC which simplifies the phase locked loop and read electronics. The track stepping rate, head load time, and head unload time may be programmed by the user. The 8272A offers many additional features such as multiple sector transfers in both read and write modes with a single command, and full IBM compatibility in both single (FM) and double density (MFM) modes. 7-3 8272A 8272A ENHANCEMENTS 8272A REGISTERS-CPU INTERFACE On the 8272A, after detecting the Index Pulse, the VCO Sync output stays low for a shorter period of time. See Figure 4a. The 8272A contains two registers which may be accessed by the main system processor; a Status Register and a Data Register. The 8-bit· Main Status Register contains the status information of the FDC, and may be accessed at any time. The a-bit Data Register (actually consists of several registers in a stack with only one register presented to the data bus at a time), stores data, commands, parameters, and FDD status information. Data bytes are read out of, or written into, the Data Register in order to program or obtain the results after execution of a command. The Status Register may only be read and is used to facilitate the transfer of data between the. processor and 8272A. On the 8272 there can be a problem reading data when Gap 4A is 00 and there is no lAM. This occurs on some older floppy formats. The 8272A cures this problem by adjusting the VCO Sync timing so that it is not low during the data field .. See Figure 4b. I I Troell .oOP 4A IAM Index Pul.. ----r-----" 8272 veo Sync--' Oap' lID I oap21 Da" r---- 8272A yeo Sy.;c--' 210606-4 '560 /,9 in FM mode; 527 /,9 in MFM mode The relationship between the Status/Down registers and the signals RD, WR, and Ao is shown in Table 2. a. Margin on the Index Pulse ThIck Index Pul.. Oop 4A (001 I ID I Oap2 Table 2. Ao, RD, WR Decoding for the Selection of Status/Data Register Functions. IDa .. ----r---1 1272 veo Sync 8272A veo Sync -------------,~r------ 210606-5 Ao RD WR Function 0 0 1 Read Main Status Register 0 lIIegal(l) b. Ability to Read Data When Gap 4A Contains 00 0 1 0 0 0 lIIegal(l) Figure 4. 8272A Enhancements over the 8272 1 0 0 lIIegal(l) 1 0 1 Read from Data Register 1 1 0 Write into Data Register NOTE: 1. Design must guarantee that the 8272A is not subjected to illegal inputs.· The Main Status Register bits are defined in Table 3. 7-4 inter 8272A Table 3. Main Status Register Bit Description Bit Number Name Symbol Description 00 FOOO Busy OoB FOO number 0 is in the Seek mode. 01 FOO 1 Busy 01 B FOO number 1 is in the Seek mode. 02 F002 Busy 02B FOO number 2 is in the Seek mode. 03 F003 Busy 03B FOO number 3 is in the Seek mode. 04 FOG Busy GB A read or write command is in process. 05 Non-OMA Mode 06 07 NOM The FOG is in the non-OMA mode. This bit is set only during the execution phase in non-OMA mode. Transition to "0" state indicates execution phase has ended. Oata Input/Output 010 Indicates direction of data transfer between FOG and Oata Register. If 010 = "1" then transfer is from Data Register to the Processor. If 010 = "0", then transfer is from the Processor to Data Register. Request for Master ROM Indicates Data Register is ready to send or receive data to or from the Processor. Both bits 010 and ROM should be used to perform the handshaking functions of "ready" and "direction" to the processor. The 010 and ROM bits in the Status Register indicate when Oata is ready and in which direction data will be transferred on the Data Bus. NOTE: There is a 12 {Jos or 24{JosHQM flag delay when using an 8 or 4 MHz clock respectively. NOTES: A-Data B-Data C-Data D-Data register register register register ready to be written into by processor not ready to be written into by processor ready for next data byte to be read by the processor not ready for next data byte to be read by processor Figure 5. Status Register Timing 7-5 inter 8272A The 8272A always operates in a multi-sector transfer mode. It continues to transfer data until the TC input is active. In Non-DMA Mode, the system must supply the TC input. The 8272A is capable of executing 15 different commands. Each "command is initiated by a multi-byte transfer from the processor, and the result after execution of the command may also be a multi-byte transfer back to the processor. Because of this multi-byte interchange of information between the 8272A and the processor, it is convenient to consider each command as consisting of. three phases: Command Phase: The FDC receives all information required to perform a particular operation from the processor. Execution Phase: The FDC performs the operation it was instructed to do. Result Phase: After completion of the operation, status and other housekeeping .information are made available to the processor. If the 8272A is in the DMA Mode, no Interrupts are generated during the Execution Phase. The 8272A generates DRO's (DMA Requests) when each byte of data is available. The DMA Controller responds to this request with both a DACK = o (DMA Acknowledge) and a RD = 0 (Read signal). When the DMA Acknowledge signal goes low (DACK = 0) then the DMA Request is reset (DRO = 0). If a Write Command has been proll@mmed then a WR signal will . appear instead of RD. After the Execution Phase has been completed (Terminal Count has occurred) then an Interrupt will occur (INT = 1). Thissignifies the beginning of the Result Phase. When the first byte of data is read during the Result Phase, the Interrupt is automatically reset (INT = 0). During Command or Result Phases the Main Status Register (described in Table 3) must be read by the processor before each byte of information is written into or read. from the Data Register. Bits D6 and D7 in the Main Status. Register must be in a 0 and 1 state,respectively, before each byte of the command word may be written into the 8272A. Many of the commands require multiple bytes, and as a re~ suit the Main Status Register must be read prior to each byte transfer to the 8272A. On the other hand, during the Result Phase, D6 and D7 in. the Main Status Register must both be 1's (D6 = 1 and D7 = 1) before reading each byte from the Data Register. It is important to note that during the Result Phase all bytes shown in the Command Table must be read. The Read Data Command, for example has seven bytes of data in the Result Phase. All seven bytes must be read in order to successfully complete the Read Data Command. The 8272A will not accept a new command until all seven bytes have been read. Other commands may require fewer bytes to be read during the Result Phase. NOTE: This reading of the Main Status Register before each byte transfer to the 8272A is required in only the Command and Result Phases, and NOT during . the Execution Phase. During the Execution Phase, the Main Status Register need not be read. If the 8272A is in the non-DMA Mode, then the receipt of each data byte (if 8272A is reading data from FDD) is indicated by an interrupt signal on pin 18 (INT = 1). The generation of a Read signal (RD = 0) will reset the interrupt as well as output the Data onto the Data Bus. For example, if the processor cannot handle Interrupts fast enough (every 13 JLs for MFM mode) then it may poll the Main Status Register and then bit D7 (ROM) functions just like the Interrupt signal. If a Write Command is in process, then the WR signal performs the reset to the Interrupt signal. The 8272A contains five Status Registers. The Main Status Register mentioned above may be read by the processor at any time. The other four Status Registers (STO, ST1, ST2, and ST3) are only available during the Result Phase, and may be read only after successfully completing a command. The particular command which has been executed determines how many of the .Status Registers' will be read. The bytes of data which are sent to the 8272A to form the Command Phase, and are read out of the 8272A in the Result Phase, must occur in the order shown in the Table 4. That is, the Command Code must be sent first and the other bytes sent in the prescribed sequence. No foreshortening of the Command or Result Phases are allowed. After the last byte of data in the Command Phase is sent to the 8272A, the Execution Phase automatically starts. In a similar fashion, when the last byte of 7-6 infef 8272A Table 4. 8272A Command Set Phase Data Bus R/W Remarks 07 06 05 04 03 02 01 Do MT 0 MFM 0 SK 0 0 0 0 0 1 HDS 1 DS1 0 DSO READ DATA Command W W W W W W W W W ------- ----- ----- Execution Result ------- R R R R R R R ----------- C H R N EOT GPL DTL --- --- --- Sector ID Information Prior to Command Execution --- --- STO ST 1 ST2 C H R N --- Command Codes Data Transfer Between the FDD and Main·System Status Information After Command Execution --- ----------- Sector ID Information After Command Execution --- READ DELETED DATA Command W W W W W W W W W MT 0 MFM 0 SK 0 ------- ----- ----- 1 0 0 0 C H R N EOT GPL DTL Execution Result R R R R R R R --------------- STO ST 1 ST2 C H R N 7-7 1 HDS 0 DS1 ------- 0 DSO Command Codes Sector ID Information Prior to Command Execution ----- ----- ----- ----------- Data Transfer Between the FDD and Main·System Status Information After Command Execution Sector ID Information After Command Execution inter 8272A Table 4. 8272A Command Set (Continued) Phase Data Bus R/W Remarks 07 06 Os 04 03 02 0, Do MT MFM 0 0 0 0 0 0 0 1 HOS 0 0 OS1 1 OSO . WRITE DATA Command W W W W W W W W W ----- ------- Result --- R R R R R R R --- Data Transfer Between the MainSystem and FOO --- STO ST 1 ST2 C H R ----------- Sector 10 Information Prior to Command Execution --------- N EOT GPL OTL ----- Execution ------- C H R Status Information After Command Execution --- ----------- N Command Codes Sector 10 Information After Command Execution WRITE DELETED DATA Command W W W W W W W W W Execution Result R R R R R R R MT MFM 0 0 0 0 --------------- ------- --- ------- 0 0 C H R N EOT ' GPL OTL STO ST1 ST2 C H R N 7-8 1 0 0 0 HOS OS1 --------------- 1 OSO Command Codes Sector 10 Information Prior to Command Execution Data Transfer Between the FOO and Main-System ------- Status Information After Command Execution ------- Sector 10 Information After Command Execution --- inter 8272A Table 4. 8272A Command Set (Continued) Phase Data Bus R/W Remarks 07 06 Os 04 03 02 01 Do 0 0 MFM SK 0 0 0 0 0 0 0 HDS 1 DS1 DSO READ A TRACK Command W W W W W W W W W ------- C H R --- N ----- EOT GPL DTL --- R R R R R R R ------- ----- --- ----- ----- --- Data Transfer Between the FDD and Main-System. FOC Reads all of Cylinders Contents from Index Hole to EOT ----------- STO ST 1 ST2 C H R --- Status Information After Command Execution Sector ID Information After Command Execution --- N --- Command Codes Sector ID Information Prior to Command Execution --- Execution Result 0 REAOID Command W W 0 0 MFM 0 0 0 0 0 1 0 0 HDS 1 DS1 Execution Result 0 Commands DSO The First Correct ID Information on the Cylinder is Stored in Data Register R R R R R R R --------------- .STO ST 1 ST2 C H ----- R N --- 7-9 --- ------- Status Information After Command Execution Sector ID Information During Execution Phase inter 8272A Table 4. 8272A Command Set (Continued) Phase Data Bus R/W Remarks 07 Os 05 04 03 02 01 Do 0 0 MFM 0 0 0 0 1 1 HDS 0 0 DS1 1 DSO FORMAT A TRACK Command W W W W W W Execution 0 --------- N SC GPL D --------- Command Codes Bytes/Sector Sectors/Cylinder Gap3 Filler Byte FDC Formats an Entire Cylinder Result R R R R R R R ----- ----------- STO ST 1 ST2 C H R N 7·10 --------------- Status Information After Command Execution In This Case, the ID Information has no Meaning inter 8272A Table 4. 8272A Command Set (Continued) Phase Oata Bus R/W Remarks 07 Os 05 04 03 02 01 00 MT 0 MFM 0 SK 0 1 0 0 0 0 HDS 0 DS1 1 DSO SCAN EQUAL Command W W W W W W W W W --- ----------- C H R ----- --- N EOT GPL STP --- ----- R R R R R R R --- --- ----- --- Data Compared Between the FDD and Main·System --- STO ST1 ST2 C H R --- --- Sector 10 Information Prior to Command Execution --- Execution Result Command Codes Status Information After Command Execution --- --------- N Sector 10 Information After Command Execution SCAN LOW OR EQUAL Command W W W W W W W W W Execution Result R R R R R R R MT 0 MFM 0 SK 0 ----------- ----- ----- ------- ----- 1 0 1 0 C H R N EOT GPL STP STO ST1 ST2 C H R N 7-11 0 HDS 0 DS1 --- ------- 1 DSO Command Codes Sector 10 Information Prior to Command Execution ----- --- ------- Data Compared Between the FDD and Main·System Status Information After Command Execution --- ------- Sector 10 Information After Command Execution 8272A· Table 4. 8272A Command Set (Continued) Phase I Data Bus R/W D6 Ds D4 D3 D2 D1 Do MFM 0 SK 0 1 0 1 0 1 HDS 0 DS1 1 DSO D7 Remarks SCAN HIGH OR 'EQUAL Command W W W W W W W MT 0 --------- R N EaT GPL STP --- --- W Execution Result H --- w ------- R R R. R R R R ----- --- STO ST1 ST2 C H R N --- ----- --- Sector 10 Information Prior to Command Execution --------- C Command Codes Data Compared Between the FDD and Main-System --- Status Information After Command Execution ----- Sector 10 Information After Command Execution ------- --- RECALIBRATE Command W W 0 0 0 0 0 0 0 0 0 0 1 0 1 DS1 1 DSO Execution Command Codes Head Retracted to Track 0 SENSE INTERRUPT STATUS Command Result W R R 0 0 0 ----- 0 1 STO PCN 7-12 0 0 --- --- 0 Command Codes Status Information at the End of Each Seek Operation About the FDC intJ 8272A Table 4. 8272A Command Set (Continued) Phase Data Bus R/W D7 06 0 0 SRT HLT Os D4 0 0 Remarks D3 02 01 0 0 1 HUT Do SPECIFY Command W W W - <--- ---> > 1 Command Codes - NO SENSE DRIVE STATUS Command Result W W R 0 0 W W W 0 0 0 0 0 0 0 0 0 0 1 HDS 0 DS1 0 Command Codes DSO ST3 Status Information aboutFDD SEEK Command 0 0 0 0 0 0 1 0 1 HDS 1 DS1 1 DSO Command Codes NCN Execution Head is Positioned Over Proper Cylinder on Diskette INVALID Command W Invalid Codes Result R STO 7-13 Invalid Command Codes (NoOp-FDC Goes Into Standby State) STO = 80 (16) intJ 8272A Table 5. Command Mnemonics Symbol Name Description Ao Address Line 0 Ao controls selection' of Main Status Register (Ao = 0) Or Data Register (Ao = 1). C Cylinder Number C stands for the current selected Cylinder track number 0 through 76 of the medium. 0 Data o stands for the data pattern which is going to be written into a Sector. 07- 0 0 Data Bus 8-bit Data bus where 07 is the most significant bit, and Do is the least significant bit. DSO,DS1 Drive Select OS stands for a selected drive number 0 or 1. DTL Data Length When N is defined as 00, DTL stands for the data length which users are going to read out or write into the Sector. EDT End of Track EDT stands for the final Sector number of a Cylinder. GPL Gap Length GPL stands for the length of Gap 3 (spacing between Sectors excluding VCO Sync Field). H Head Address H stands for head number 0 or 1, as specified in 10 field. HDS Head Select HDS stands for a selected head number 0 .or 1 (H = HDS in all command words). HLT Head Load Time HLT stands for the head load time in the FDD (2 to 254 ms in 2 ms increments). HUT Head Unload Time HUT stands for the head unload time after a read or write operation has occurred (16 to 240 ms in 16 ms increments). MFM FM or MFM Mode If MF is low, FM mode is selected and if it is high, MFM mode is selected. MT Multi-Track If MT is high, a multi-track operation is to be peformed (a cylinder under both HDO and HD1 will be read or written). N Number N stands for the number of data bytes written in a Sector. NCN New Cylinder Number NCN stands for a new Cylinder number, which is going to be reached as a result of the Seek operation. Desired position of Head. NO Non-DMA Mode NO stands for operation in the Non-DMA Mode. PCN Present Cylinder Number PCN stands for the Cylinder number at the completion of SENSE INTERRUPT STATUS Command. Position of Head at present time. R Record R stands for the Sector numbei', which will be read or written. R/W Read/Write R/W stands for either Read (R) or Write (W) signal. SC Sector SC indicates the number of Sectors per Cylinder. SK Skip SK stands for Skip Deleted Data Address Mark. SRT Step Rate Time ~RT stands for the Stepping Rate for the FDD (1 to 16 ms in 1 ms increments). The same Stepping Rate applies to all drives (F = 1 ms, E = 2 ms, etc.). 7-14 8272A Table 5. Command Mnemonics (Continued) Symbol Name STO ST 1 ST2 ST3 Status 0 ' Status 1 Status 2 Status 3 Description ST 0-3 stand for one of four registers which store the status information after a command has been executed. This information is available during the result phase after command execution. These registers should not be confused with the main status register (selected by Ao = 0). ST 0-3 may be read only after a command has been executed and contain information relevant to that particular command. During a Scan operation, if STP = 1, the data in contiguous sectors is compared byte by byte with data sent from the processor (or DMA), and if STP = 2, then alternate sectors are read and compared. STP written into the Data Register. The DIO (DB6) and ROM (BD7) bits in the Main Status Register must be in the "0" and "1" states respectively, before each byte of the command may be written into the 8272A. The beginning of the execution phase for any of these commands will cause DIO and ROM to switch to "1" and "0" states respectively. data is read out in the Result Phase, the command is automatically ended and the 8272A is ready for a new command. A command may be aborted by simply sending a Terminal Count signal to pin 16 (TC = 1). This is a convenient means of ensuring that the processor may always get the 8272A's attention even if the disk system hangs up in an abnormal manner. READ DATA POLLING FEATURE OF THE 8272A A set of nine (9) byte words are required to place the FDC into the Read Data Mode. After the Read Data command has been issued the FDC loads the head (if it is in the unloaded state), waits the specified head settling time (defined in the Specify Command), and begins reading ID Address Marks and 10 fields. When the current sector number ("R") stored in the ID Register (IDR) compares with the sector number read off the diskette, then the FDC outputs data (from the data field) byte-by-byte to the main system via the data bus. After power-up RESET, the Drive Select Lines DSO and DS1 will automatically go into a polling mode. In between commands (and between step pulses in the SEEK command) the 8272A polls all four FDDs looking for a change in the Ready line from any of the drives. If the Ready line changes state (usually due to a door opening or closing) then the 8272A will generate an interrupt. When Status Register 0 (STO) is read (after Sense Interrupt Status is issued), Not Ready (NR) will be indicated. The polling of the Ready line by the 8272A occurs continuously between instructions, thus notifying the processor which drives are on or off line. Approximate scan timing is shown in Table 6. Table 6. Scan Timing DS1 DSO Approximate Scan Timing 0 0 220 p,s 0 1 220 p,s 1 0 220 p,s 1 1 440 p,s After completion of the read operation from the current sector, the Sector Number is incremented by one, and the data from the next sector is read and output on the data bus. This continuous function is called a "Multi-Sector Read Operation." The Read Data Command must be terminated by the receipt of a Terminal Count signal. Upon receipt of this signal, the FDC stops outputting data to the processor, but will continue to read data from the current sector, check CRC (Cyclic Redundancy Count) bytes, and then at the end of the sector terminate the Read Data Command. The amount of data which can be handled with a single command to the FDC depends upon MT (multi-track), MFM (MFM/FM), and N (Number of Bytes/ Sector). Table 7 on the next page shows the Transfer Capacity. COMMAND DESCRIPTIONS During the Command Phase, the Main Status Register must be polled by the CPU before each byte is 7-15 8272A Table 7. Transfer Capacity Maximum Transfer Capacity (Bytes/Sector)(Number of Sectors) Final Sector Read from Diskette = = = = = = = = = = = = 3,328 6,656 26 afSide 0 or 26 at Side 1 6,656 13,312 26 at Side 1 3,840 7,680 15 at Side 0 or 15 at Side 1 7,680 15,360 15 at Side 1 4,096 8,192 8 at Side 0 or 8 at Side 1 8,192 16,384 8 at Side 1 Multi-Track MT MFM/FM MFM Bytes/Sector N 0 0 0 1 00 01 (128) (26) (256) (26) 1 1 0 1 00 01 (128)(52) (256) (52) 0 0 0 1 01 02 (256) (15) (512) (15) 1 1 0 1 01 02 (256) (30) (512) (30) 0 0 0 1 02 03 (512) (8) (1024) (8) 1 1 0 1 02 03 (512) (16) (1024) (16) The "multi-track" function (MT) allows the FDC to read data from both sides of the diskette. For a particular cylinder, data will be transferred starting at Sector 1, Side 0 and completing at Sector L, Side 1 (Sector L = last sector on the side). After reading the ID and Data Fields in each sector, the FDC checks the CRC bytes. If a read error is detected (incorrect CRC in ID field), the FDC sets the DE (Data Error) flag in Status Register 1 to a 1 (high), and if a CRC error occurs in the Data Field the FDC also sets the DD (Data Error in Data Field) flag in Status Register 2 to a 1 (high), .and terminates the Read Data Command. (Status Register 0 also has bits 7 and 6 set to 0 and 1 respectively.) NOTE: This function pertains to only one cylinder (the same track) on each side of the diskette. If the FDC reads a Deleted Data Address Mark off the diskette, and the SK bit (bit D5 in the first Command Word) is not set (SK = 0), then the FDC sets the CM (Control Mark) flag in Status Register 2 to a 1 (high), and terminates the Read Data Command, after reading all the data in the Sector. If SK = ·1, the FDC skips the sector with the Deleted Data Address Mark and reads the next sector. When N = 0, then DTL defines the data length which the FDC must treat as a sector. If DTL is smaller than the actual data length in a Sector, the data beyond DTL in the Sector is not sent to the Data Bus. The FDC reads (internally) the complete Sector performing the CRC check, and depending upon the manner of command termination, may perform a Multi-Sector Read Operation. When N is nonzero, then DTL has no meaning and should be set to OFFH. During disk data transfers between the FDC and the processor, via the data bus, the FDC must be serviced by the processor every 27 fl-s in the FM Mode, and every 13 fl-s in the MFM Mode, or the FDC sets the OR (Over Run) flag in Status Register 1 to a 1 (high), and terminates the Read Data Command. At the completion of the Read Data Command, the head is not unloaded until after Head Unload Time Interval (specified in the Specify Command) has elapsed. If the processor issues another command before the head unloads then the head settling time may be saved between subsequent reads. This time out is particularly valuable when a diskette is copied from one drive to another. If the processor terminates a read (or write) operation in theFDC, then the ID Information in the Result Phase is dependenfupon the state of the MT bit and EOT byte. Table 5 shows the values for C, H, R, and N, when the processor terminates the Command. If the FDC detects the Index Hole twice without finding the right sector, (indicated in "R"), then the FDC sets the ND (No Data) flag in Status Register 1 to a 1 (high), and terminates the Read Data Command. (Status Register 0 also has bits 7 and 6 set to 0 and 1 respectively.) 7-16 8272A Table 8. ID Information When Processor Terminates Command MT 0 1 EOT ID Information at Result Phase Final Sector Transferred to Processor C H R N NC NC R+1 NC C+1 NC R = 01 NC NC NC R+1 NC C+1 NC R = 01 NC NC 1A OF 08 Sector 1 to 25 at Side 0 Sector 1 to 14 at Side 0 Sector 1 to 7 at Side 0 1A OF 08 Sector 26 at Side 0 Sector 15 at Side 0 Sector 8 at Side 0 1A OF 08 Sector 1 to 25 at Side 1 Sector 1 to 14 at Side 1 Sector 1 to 7 at Side 1 1A OF 08 Sector 26 at Side 1 Sector 15 at Side 1 Sector 8 at Side 1 1A OF 08 Sector 1 to 25 at Side 0 Sector 1 to 14 at Side 0 Sector 1 to 7 at Side 0 NC NC R+1 1A OF 08 Sector 26 at Side 0 Sector 15 at Side 0 Sector 8 at Side 0 NC LSB R = 01 NC 1A OF 08 Sector 1 to 25 at Side 1 Sector 1 to 14 at Side 1 Sector 1 to 7 at Side 1 NC NC R+1 NC 1A OF 08 Sector 26 at Side 1 Sector 15 at Side 1 Sector 8 at Side 1 C+1 LSB R = 01 NC NOTES: 1. NC (No Change): The same value as the one at the beginning of command execution. 2. LSB (Least Significant Bit): The least significant bit of H is complemented. ance of a Terminal Count signal. If a Terminal Count signal is sent to the FOC it continues writing into the current sector to complete the data field. If the Terminal Count signal is received while a data field is being written then the remainder of the data field is filled with 00 (zeros). WRITE DATA A set of nine (9) bytes are required to set the FOC into the Write Oata mode. After the Write Oata command has been issued the FOC loads the head (if it is in the unloaded state), waits the specified head settling time (defined in the Specify Command), and begins reading 10 Fields. When the current sector number ("R"), stored in the 10 Register (lOR) compares with the sector number read off the diskette, then the FOC takes data from the processor byteby-byte via the data bus, and outputs it to the FOO. The FOC reads the 10 field of each sector and checks the CRC bytes. If the FOC detects a read error (incorrect CRG) in one of the 10 Fields, it sets the OE (Oata Error) flag of Status Register 1 to a 1 (high), and terminates the Write Oata Command. (Status Register 0 also has bits 7 and 6 set to 0 and 1 respectively.) After writing data into the current sector, the Sector Number stored in "R" is incremented by one, and the next data field is written into. The FOC continues this "Multi-Sector Write Operation" until the issu- The Write Command operates in much the same manner as the Read Command. The following items 7-17 8272A a 1 (high) if there is no comparison. Multi-track or skip operations are not allowed with this command. are the same; refer to the Read Data Command for details: • • • • • Transfer Capacity EN (End of Cylinder) Flag NO (No Data) Flag Head Unload Time Interval 10 Information when the processor terminates command (see Table 2) • Definition of DTL when N = 0 and when N -=1= 0 This command terminates when EOT number of sectors have been read. If the FDC does not find an 10 Address Mark on the diskette after it encounters the INDEX HOLE for the second time, then it sets the MA (missing address mark) flag in Status Register 1 to a 1 (high), and terminates the command. (Status Register 0 has bits 7 and 6 set to 0 and 1 respectively.) In the Write Data mode, data transfers between the processor and FDC must occur every 31 p.,s in the FM mode, and every 15 p.,s in the MFM mode. If the time interval between data transfers is longer than this then the FDC sets the OR (Over Run) flag in Status Register 1 to a 1 (high), and terminates the Write Data Command. READID The READ 10 Command is. used to give the present pOSition of the recording head. The FDC stores the values from the first 10 Field it is able to read. If no proper 10 Address Mark is found on the diskette, before the INDEX HOLE is encountered for the second time then the MA (Missing Address Mark) flag in Status Register 1 is set to a 1 (high), and if no data is found then the NO (No Data) flag is also set in Status Register 1 to a 1 (high) and the command is terminated. For mini-floppies, multiple track writes are usually not permitted. This is because of the turn-off time of the erase head coils-the head switches tracks before the erase head turns off. Therefore the system should typically wait 1.3 ms before attempting to step or change sides. FORMAT A TRACK WRITE DELETED DATA The Format Command allows an entire track to be formatted. After the INDEX HOLE is detected, Data is written on the Diskette: Gaps, Address Marks, 10 Fields and Data Fields, all per the IBM System 34 (Double Density) or System 3740 (Single Density) Format are recorded. The particular format which will be written is controlled by the values programmed into N (number of bytes/sector), SC (sectors/cylinder), GPL (Gap Length), and 0 (Data Pattern) which are supplied by the processor during the Command Phase. The Data Field is filled with the Byte of data stored in D. The 10 Field for each sector is supplied by the processor; that is, four data requests per sector are made by the FDC for C (Cylinder Number), H(Head Number), R(Sector Number) and N(Number of Bytes/Sector). This allows the diskette to be formatted with nonsequential sector numbers, if desired. This command is the same as the Write Data Command except a Deleted Data Address Mark is written at the beginning of the Data Field instead of the normal Data Address Mark. READ DELETED DATA This command is the same as the Read Data Command except that when the FDC detects a Data Address Mark at the beginning of a Data Field (and SK = 0 (low», it will read all the data in the sector and set the CM flag in Status Register 2 to a 1 (high), and then terminate the command. If SK = 1, then the FDC skips the sector with the Data Address Mark and reads the next sector. READ A TRACK After formatting each sector, the processor must send new values for C, H, R, and N to the 8272A for each sector on the track. The contents of the R Register is incremented by one after each sector is formatted, thus, the R register contains a value of R + 1 when it is read during the Result Phase. This incrementing and formatting continues for the whole track until the FDC encounters the. INDEX HOLE for the second time, whereupon it terminates the command. This command is similar to READ DATA Command except that the entire data field is read continuously from each of the sectors of a track. Immediately after encountering the INDEX HOLE, the FDC starts reading all data fields on the track as continuous blocks of data. If the FDC finds an error in the 10 or DATA CRC check bytes, it continues to read data from the track. The FDC compares the 10 information read from each sector with the value stored in the lOR, and sets the NO flag of Status Register 1 to 7-18 inter 8272A mand execution phase causes command termination. If a FAULT signal is received from the FDD at the end of a write operation, then the FDC sets the EC flag of Status Register 0 to a 1 (high), and terminates the command after setting bits 7 and 6 of Status Register 0 to 0 and 1 respectively. Also the loss of a READY signal at the beginning of a com- Table 9 shows the relationship between N, SC, and GPL for various sector sizes: Table 9 Sector Size Relationships N Bytes/ SC GpL(1) GpL(2) Sector N 128 256 512 1024 2048 4096 00 01 02 03 04 05 1A OF 08 04 02 01 07 OE 1B 47 C8 C8 1B 2A 3A 8A FF FF 128 128 256 512 1024 2048 00 00 01 02 03 04 3%" Mini Floppy 5%" Floppy Bytes/ SC GpL(1) GpL(2) Sector N SC GPL(1) GpL(2) 128 0 OF 07 1B 12 07 09 10 10 19 08 18 30 256 1 09 OF 2A 46 87 512 2 05 1B 3A 04 02 C8 FF 01 C8 FF - 256 512 1024 2048 4096 8192 01 02 03 04 05 06 1A OF 08 04 02 01 OE 1B 35 99 C8 C8 36 54 74 FF FF FF 256 256 512 1024 2048 4096 01 01 02 03 04 05 12 10 08 04 02 01 Bytes/ Format Sector FM Mode MPM Mode 8" Floppy - OA 20 2A 80 C8 C8 OC 32 50 FO FF FF 256 512 1024 - - - - - - 1 2 3 - CE 1B 35 - 36 54 74 - OF 09 05 - - - NOTES: 1. Suggested values of GPL in Read or Write Commands to avoid splice point between data field and ID field of contiguous sections. 2. Suggested values of GPL in format command. sector of data is compared, if the conditions are not met, the sector number is incremented (R + STP ~ R), and the scan operation is continued. The scan operation continues until one of the following conditions occur; the conditions for scan are met (equal, low, or high), the last sector on the track is reached (EOT), or the terminal count signal is received. SCAN COMMANDS The SCAN Commands allow data which is being read from the diskette to be compared against data which is being supplied from the main system (Processor in NON-DMA mode, and DMA Controller in DMA mode). The FDC compares the data on a byteby-byte basis, and looks for a sector of data which meets the conditions of DFDD = Dprocessor, DFDD ,s; Dprocessor, or DFDD :20 Dprocessor. Ones complement arithmetic is used for comparison (FF = largest number, 00 = smallest number). After a whole If the conditions for scan are met then the FDC sets the SH (Scan Hit) flag of Status Register 2 to a 1 (high), and terminates the Scan Command. If the Table 10. Scan Status Codes Status Register 2 Command Comments Bit2 = SN Bit3 = SH Scan Equal 0 1 1 0 DFDD = Dprocessor DFDD "t= DProcessor Scan Low or Equal 0 0 1 1 0 0 DFDD = DProcessor DFDD < Dprocessor DFDD :I> Dprocessor Scan High or Equal 0 0 1 1 0 0 DFDD == DProcessor DFDD > DProcessor DFDD 1: Dprocessor 7-19 inter 8272A conditions for scan are not met between the starting sector (as specified by R) and the last sector on the cylinder (EOT), then the FDC sets the SN (Scan Not Satisfied) flag of Status Register 2 to a 1 (high), and terminates the Scan Command. The receipt of a TERMINAL COUNT signal from the Processor or DMA Controller during the scan operation will cause the FDC to complete the comparison of the particular byte which is in process, and then to terminate the command. Table 10 shows the status of bits SH and SN under various conditions of SCAN. If the FDC encounters a Deleted Data Address Mark on one of the sectors (and SK = 0), then it regards the sector as the last sector on the cylinder, sets CM (Control Mark) flag of Status Register 2 to a 1 (high) and terminates the command. If SK = 1, the FDC skips the sector with the Deleted Address Mark, and reads the next sector. In the second case (SK = 1), the FDC sets the CM (Control Mark) flag of Status Register 2 to a 1 (high) in order to show that a Deleted Sector had been encountered. When either the STP (contiguous sectors STP = 01, or alternate sectors STP = 02 sectors are read) or the MT(Multi-Track) are programmed, it is necessary to remember that the last sector on the track must be read. For example, if STP = 02, MT = 0, the sectors are numbered sequentially 1 through 26, and we start the Scan Command at sector 21; the following will happen. Sectors 21, 23, and 25 will be read, then the next sector (26) will be skipped and the Index Hole will be encountered before the EOT value of 26 can be read. This will result in an abnormal termination of the command. If the EOT had been set at 25 or the scanning started at sector 20, then the Scan Command would be completed in a normal manner. (New Cylinder Number), and performs the following operation if there is a difference: PCN < NCN: Direction signal to FDD set to a 1 (high), and Step Pulses are issued. (Step In.) PCN > NCN: Direction signal to FDD set to a 0 (low), and Step Pulses are issued. (Step Out.) The rate at which Step Pulses are issued is controlled by SRT (Stepping Rate Time) in the SPECIFY Command. After each Step Pulse is issued NCN is compared against PCN, and when NCN = PCN, then the SE (Seek End) flag is set in Status Register o to a 1 (high); and the command is terminated. During the Command Phase of the Seek operation the FDC is in the FDC BUSY state, but during the Execution Phase it is in the NON BUSY state. While the FDC is in the NON BUSY state, another Seek Command may be issued, and in this manner parallel seek operations may be done on up to 4 Drives at once. If an FDD is in a NOT READY state at the beginning of the command execution phase or during the seek operation, then the NR (NOT READY) flag is set in Status Register 0 to a 1 (high), and the command is terminated. Note that the 8272A Read and Write Commands do not have implied Seeks. Any R/W command should be preceded by: 1) Seek Command; 2) Sense Interrupt Status; and 3) Read ID. RECALIBRATE This command causes the read/write head within the FDD to retract to the Track 0 position. The FDC clears the contents of the PCN counter, and checks the status of the. Track 0 signal from the FDD. As long as the Track 0 signal is low, the Direction signal remains 1 (high) and Step Pulses are issued. When the Track 0 signal goes high, the SE (SEEK END) flag in Status Register 0 is set to a 1 (high) and the command is terminated. If the Track 0 signal is still low after 77 Step Pulses have been issued, the FDC sets the SE (SEEK END) and EC (EQUIPMENT CHECK) flags of Status Register 0 to both 1s (highs), and terminates the command. During the Scan Command data is supplied by either the processor or DMA Controller for comparison against the data read from the diskette. In order to avoid having the OR (Over Run) flag set in Status Register 1, it is necessary to have the data available in less than 27 f-ts (FM Mode) or 13 f-ts (MFM Mode). If an Overrun occurs the FDC terminates the command. SEEK The read/write within the FDD is moved from cylinder to cylinder under control of the Seek Command. The FDC compares the PCN (Present Cylinder Number) which is the current head position with the NCN The ability to overlap RECALIBRATE Commands to multiple FDDs, and the loss of the READY signal, as described in the SEEK Command, also applies to the RECALIBRATE Command. 7-20 inter 8272A mands to the head unload state. This timer is programmable from 16 to 240 ms in increments of 16 ms (01 = 16 ms, 02 = 32 ms . . . . OF = 240 ms). The SRT (Step Rate Time) defines the time interval between adjacent step pulses. This timer is programmable from 1 to 16 ms in increments of 1 ms (F = 1 ms, E = 2 ms, 0 = 3 ms, etc.). The HlT (Head load Time) defines the time between when the Head load signal goes high and when the Read/Write operation starts. This timer is programmable from 2 to 254 ms in increments of 2 ms (01 = 2 ms, 02 = 4 ms, 03 = 6 ms .... FE = 254 ms). SENSE INTERRUPT STATUS An Interrupt signal is generated by the FDC for one of the following reasons: 1) Upon entering the Result Phase. of: a) Read Data Command b) Read a Track Command c) Read 10 Command d) Read Deleted Data Command e) Write Data Command f) Format a Cylinder Command The step rate should be programmed 1 ms longer than the minimum time required by the drive. g) Write Deleted Data Command h) Scan Commands The time intervals mentioned above are a direct function of the clock (ClK on pin 19). Times indicated above are for an 8 MHz clock, if the clock was reduced to 4 MHz (mini-floppy application) then all time intervals are increased by a factor of 2. 2) Ready Line of FDD changes state 3) End of Seek or Recalibrate Command 4) During Execution Phase in the NON-DMA Mode Interrupts caused by reasons 1 and 4 above occur during normal command operations and are easily discernible by the processor. However, interrupts caused by reasons 2 and 3 above may be uniquely identified with the aid of the Sense Interrupt Status Command. This command when issued resets the interrupt signal and via bits 5, 6, and 7 of Status Register 0 identifies the cause of the interrupt. The choice of DMA or NON-DMA operation is made by the NO (NON-DMA) bit. When this bit is high (NO = 1) the NON-DMA mode is selected, and when NO = 0 the DMA mode is selected. SENSE DRIVE STATUS This command may be used by the processor whenever it wishes to obtain the status of the FDDs. Status Register 3 contains the Drive Status information. Neither the Seek or Recalibrate Command have a Result Phase. Therefore, it is mandatory to use the Sense Interrupt Status Command after these commands to effectively terminate them and to provide verification of the head position (PCN). INVALID Table 11. Seek, Interrupt Codes Seek End Interrupt Code Bit 5 BitS Bit7 If an invalid command is sent to the FDC (a command not defined above), then the FDC will terminate the command. No interrupt is generated.by the 8272A during this condition. Bit 6 and bit 7 (010 and ROM) in the Main Status Register are both high ("1") indicating to the processor that the 8272A is in the Result Phase and the contents of Status Register 0 (STO) must be read. When the processor reads Status. Register 0 it will find an 80H indicating an invalid command was received. Cause 0 1 1 Ready Line Changed State, Either Polarity 1 0 0 Normal Termination of Seek or Recalibrate Command 1 1 0 Abnormal Termination of Seek or Recalibrate Command A Sense Interrupt Status Command must be sent after a Seek or Recalibrate interrupt, otherwise the FDC will consider the next command to be an Invalid Command. SPECIFY In some applications the user may wish to use this command as a No-Op command, to place the FOC in a standby or no operation state. The Specify Command sets the intitial values for each of the three internal timers. The HUT (Head Unload Time) defines the time from the end of the Execution Phase of one of the Read/Write Com- 7-21 inter 8272A Table 12. Status Registers Bit No. Name Description Symbol STATUS REGISTER 0 D7 Interrupt Code IC D7 = a and D6 = a Normal Termination of Command, (NT). Command was completed and properly executed. D7 = a and D6 = 1 Abnormal Termination of Command, (AT). Execution of Command was started, but was not successfully completed. D6 D7 =1 and D6 = a Invalid Command issue, (lC). Command which was issued was never started. D7 = 1 and D6 = 1 Abnormal Termination because during command execution the ready signal from FDD changed state. D5 Seek End SE When the FDC completes the SEEK Command, this flag is set to 1 (high). D4 Equipment Check EC If a fault Signal is received from the FDD, or if the Track a Signal fails to occur after 77 Step Pulses (Recalibrate Command) then this flag is set. D3 Not Ready NR When the FDD is in the not-ready state and a read or write command is issued, this flag is set. If a read or write command is issued to Side 1 of a single sided drive, then this flag is set. D2· Head Address HD This flag is used to indicate the state of the head at Interrupt. D1 . Do Unit Select 1 US 1 Unit Select a usa These flags are used to indicate a Drive Unit Number at Interrupt. STATUS REGISTER 1 End of Cylinder EN When the FDC tries to access a Sector beyond the final Sector of a Cylinder, this flag is set. D5 Data Error - DE When the FDC detects a CRC error in either the ID field or the data field, this flag is set. D4 Over Run OR If the FDC is not serviced by the main-systems during data transfers, within a certain time interval, this flag is set. No Data ND D7 Not used. This bit is always a (low). D6 Not used. This bit always a (low). D3 D2 During execution of .READ DATA, WRITE DELETED DATA or SCAN Command, if the FDC cannot find the Sector specified in the IDR Register, this flag is set. During executing the READ ID Command, if the FDC cannot read the ID field without an error, then this flag is set. During the execution of the READ A Cylinder Command, if the starting sector cannot be found, then this flag is set. . 7-22 8272A Table 12. Status Register (Continued) Bit No. Name Description Symbol STATUS REGISTER 1 (Continued) D1 Not Writable NW During execution of WRITE DATA, WRITE DELETED DATA or Format A Cylinder Command, if the FDC detects a write protect signal from the FDD, then this flag is set. Do Missing Address Mark MA If the FDC cannot detect the ID Address Mark after encountering the index hole twice, then this flag is set. If the FDC cannot detect the Data Address Mark or Deleted Data Address Mark, this flag is set. Also at the same time, the MD (Missing Address Mark in Data Field) of Status Register 2 is set. STATUS REGISTER 2 Not used. This bit is always 0 (low). D7 D6 Control Mark CM During executing the READ DATA or SCAN Command, if the FDC encounters a Sector which contains a Deleted Data Address Mark, this flag is set. Ds Data.Error in Data Field DD If the FDC detects a CRC error in the data field then this flag is set. D4 Wrong Cylinder WC This bit is related with the ND bit, and when the contents of C on the medium is different from that stored in the IDR, this flag is set. D3 Scan Equal Hit SH During execution, the SCAN Command, if the condition of "equal" is satisfied, this flag is set. D2 Scan Not Satisfied SN During executing the SCAN Command, if the FDC cannot find a Sector on the cylinder which meets the condition, then this flag is set. D1 Bad Cylinder BC This bit is related with the ND bit, and when the content of C on the medium is different from that stored in the IDR and the content of C is FF, then this flag is set. Do Missing Address Mark in Data Field MD When data is read from the medium, if the FDC cannot find a Data . Address Mark or Deleted Data Address Mark, then this flag is set. STATUS REGISTER 3 D7 Fault FT This bit is used to indicate the status of the Fault signal from the FDD. D6 Write Protected WP This bit is used to indicate the status of the Write Protected signal from the FDD. Ds Ready RDY This bit is used to indicate the status of the Ready signal from the FDD. D4 Track 0 TO This bit is used to indicate the status of the Track 0 signal from the FDD. D3 Two Side TS This bit is used to indicate the status of the Two Side signal from the FDD. D2 Head Address HD This bit is used to indicate the status of Side Select signal to the FDD. D1 Unit Select 1 US 1 This bit is used to indicate the status of the Unit Select 1 signal to the FDD. Do Unit Select 0 USO This bit is used to indicate the status of the Unit Select 0 signal to the FDD. 7-23 inter 8272A • Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Operating Temperature ............. O°C to + 70°C Storage Temperatur~ .......... -40·C to + 125·C All Output Voltages ................. - 0.5 to + 7V All Input Voltages ........ : ......... -0.5 to +7V Supply Voltage Vee ................ -0.5 to + 7V Power Dissipation ........................ 1 Watt 'TA = 25°C D.C. CHARACTERISTICS TA = O·Cto + 70°C, Vee +5V ±10% Limits Parameter Symbol = Min Unit Max Test Conditions VIL Input Low Voltage -0.5 0.8 V VIH Input High Voltage 2.0 Vee + 0.5 V VOL Output Low Voltage 0.45 V VOH Output High Voltage Vee V lee Vee Supply Current 120 mA IlL Input Load Current (All Input Pins) 10 -10 /Jo A /Jo A VIN = Vee VIN = OV 2.4 . IOL = 2.0mA IOH = -400/JoA ILOH High Level Output Leakage Current 10 /Jo A Vour = Vee IOFL Output Float Leakage Current ±10 /Jo A 0.45C CAPACITANCE Vour ~ Vee TA = 25·C, fc = 1 MHz, Vee = OV Limits Symbol s: Parameter Min Unit Max CIN( < )C 2.0 TEST POINTS 0.8 0.45 A.C. TESTING LOAD CIRCUIT DEVICE UNDER TEST 0.8 ! J C l = 1 0 0 PF 210606-7 -= A.C. Testing: Inputs are driven at 2.4V for a Logic "1" and 0.45V for a Logic "0". Timing measurements are made at 2.0V for a Logic "1" and O.BV for a Logic "0". 210606-B CL = 100 pF CL Includes Jig Capacitance WAVEFORMS =r= =1 PROCESSOR READ OPERATION DACK A,.CS. , _-'-.R-_---~~~--~-----------------'R-R==========~~~----'R-' . I~·_----IRD----_I DAT~ - - - - - - - - - - - - 4 - - -t OF - INT 210606-9 7-27 intJ 8272A WAVEFORMS (Continued) PROCESSOR WRITE OPERATION Arl, CS. DACK .....-tAW I-----tww-------<~ tow DATA I. two '- tNT 210606-10 DMA OPERATION -. DRQ I--------IRQRW------~ WRorRD 1.----tROW----! 210606-11 7-28 8272A WAVEFORMS (Continued) CLOCK TIMING elK 210606-12 FDD WRITE OPERATION WRITE ENABLE (WE) Icp 210606-13 PreshiftO Preshift 1 Normal 0 0 Late 0 1 Early 1 0 Invalid 1 1 7-29 inter 8272A WAVEFORMS (Continued) SEEK OPERATION STABLE ...--t05 tso---+- LeTI DIRECTION STEP I----------'sc----------~ 210606-14 FLT RESET . FAULT RESET FAIL UNSAFE RESET INDEX r------------------------------, /i'-_"R __ . -'~ '---210606-15 210606-16 7-30 intJ 8272A WAVEFORMS (Continued) FDD READ OPERATION READDA~A . tROO-" . ~------------------------- READ DA_T_A_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ WINDOW ~~""'I-----IWRD--. • ~-------------------------J-------------tWWCy--------~ 210606-17 TERMINAL COUNT RESET RESET TC 210606-18 210606-19 7-31 intJ 82077 CHMOS SINGLE-CHIP FLOPPY DISK CONT,ROLLER. • Single-Chip Floppy Disk Solution -100% PC-AT Hardware Compatible -100% PS/2™ Hardware Compatible -Integrated Drive and Data Bus Buffers • Integrated Analog Data Separator - 250 Kbits/sec - 300 Kbits/sec - 500 Kbits/sec -1 Mbits/sec (82077-1 only) • • High Speed Processor Interface • • • • • • Vertical Recording Support 12 mA Data Bus Drivers, 40 mA Disk ., Drivers Four Fully Decoded Drive Select and Motor Signals Programmable Write Precompensation Delays Addresses 256 Tracks Directly, Supports Unlimited Tracks 16 Byte FIFO 68-Pin.PLCC The 82077 floppy disk controller has completely integrated all of the logic required for floppy disk control. The 82077, a 24 MHz crystal, a resistor package and a device chip select implements a PC-AT or PS/2TM solution. All programmable options default to compatible values. The dual PLL data separator has better performance than most board level/discrete PLL implementations. The FIFO allows better system performance in multlmaster systems (e.g. PS/2TM). The 82077 is fabricated with Intel's CHMOS III technology and is availabl~ in a S8-lead PLCC (plastic) pa.qkage. A2 DBO Vss DB1 DB2 DB3 Vss DB4 Vee DB5 DB6 Vss DB7 o Vee Vss DSO MEO DIR STEp· Vss 82077 WRDATA WE HDSEL Vss DENSEL MFM INT NC AVee AVss ORO TC NC INDX 290166-1 Figure 1. 82077 Pinout PS/2TM is a trademark of IBM. 7·32 October 1988 Order Number: 290166-001 inter 82077 Table 1.82077 Pin Description Symbol Pin# I/O Description HOST INTERFACE 32 I RESET: A high level places the 82077 in a known idle state. All registers are cleared except those set by the Specify command. CS 6 I CHIP SELECT: Decodes base address range and qualifies RD and WR inputs. AO A1 A2 7 8 10 I ADDRESS: Selects one of the host interface registers: RESET A2 A1 AO 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 Register 0 R Status Register A 1 R Status Register B 0 R/W Digital Output Register 1 Reserved 0 R Main Status Register 0 W Data Rate Select Register 1 R/W Data (FIFO) Reserved 0 1 R Digital Input Register 1 W Configuration Control Register DBO DB1 DB2 DB3 DB4 DB5 DB6 DB7 11 13 14 15 17 19 20 22 I/O DATA BUS: Data bus with 12 mA drive RD 4 I READ: Control signal WR 5 I WRITE: Control signal DRO 24 0 DMA REQUEST: Requests service from a DMA controller. Normally active high, but goes to high impedance in AT mode when the appropriate bit is set in the DOR. DACK 3 I DMA ACKNOWLEDGE: Control input that qualifies the RD, WR inputs in DMA cycles. TC 25 .1 TERMINAL COUNT: Control line from a DMA controller that terminates the current disk transfer. TC is accepted only while DACK is active. This input is active high in the AT mode and active low in the PS/2TM mode. INT 23 0 INTERRUPT: Signals a data transfer in non-DMA mode and when status is valid. Normally active high, but goes to high impedance in AT mode when the appropriate bit is set in the DOR. X1 X2 33 34 CRYSTAL 1,2: Connection for a 24 MHz fundamental mode parallel resonant crystal. X1 may be driven with a MOS level clock and X2 would be left unconnected. 7·33 82077 Table 1.82077 Pin Description (Continued) Symbol Pin# 110 Description HOST INTERFACE (Continued) IDENT 27 I IDENTITY: Strapping option for either PC-AT or PSI2™ compatibility. Various signals change levels depending upon the mode. AT MODE: The AT mode is selected by strapping IDENT to VCC. In this mode, DMA Gate logic is enabled, TC and DENSEL become active high signals (defaults to a 5.25" floppy disk). PSI2™ MODE: The PSI2™ standard mode is selected by strapping IDENT to ground. In this mode, the DMA Gate logic is disabled, TC and DENSEL become active low signals (defaults to a 3.5" disk). DISK CONTROL (All outputs have 40 rnA drive capability) INVERT 35 I INVERT: Strapping option. Determines the polartity of all signals in this section. Should be strapped to ground when using the internal buffers and these signals become active LOW. When strapped to VCC, these signals become active high and external inverting drivers and receivers are Jequired. ' MEO ME1 ME2 ME3 57 61 63 66 0 MEO-3: Decoded Motor enables for drives 0-3. The motor enable pins are directly controlled via the Digital Output Register. DSO DS1 DS2 DS3 58 62 64 67 0 DRIVE SELECT 0-3: Decoded drive selects for drives 0-3. These outputs are decoded from the select bits in the Digital Output Register and gated by MEO-3. HDSEL 51 0 HEAD SELECT: Selects which side of a disk is to be used. An active level selects side 1. STEP 55 0 STEP: Supplies step pulses to the drive. DIR 56 0 DIRECTION: Controls the direction the head moves when a step signal is present. The head moves toward the center if active. WRDATA 53 0 WRITE DATA: FM or MFM serial data to the drive. Precompensation value is selectable through software. WE 52 0 WRITE ENABLE: Drive control signal that enables the head to write onto the disk. DENSEL 49 0 DENSITY SELECT: Indicates whether a low (250/300 Kbps) or high (500 Kbps/1 Mbps) data rate has been selected. When PSI2™ mode is selected, a high signal means that low density was enabled. In the AT mode, a high signal indicates high density. DSKCHG 31 I DISK CHANGE: This input is reflected in the Digital Input Register. DRV2 30 I DRIVE2: This indicates whether a second drive is installed a'nd is reflected in Status Register A. 82077 Table 1.82077 Pin Description (Continued) Symbol Pin# Description I/O DISK CONTROL (All outputs have 40 mA drive capability) (Continued) TRKO 2 I TRACKO: Control line that indicates that the head is on track O. WP 1 I WRITE PROTECT: Indicates whether the disk drive is write protected. 26 I INDEX: Indicates the beginning of the track. READ DATA: Serial data from the disk. INVERT also affects the polarity of this signal. INDX PLLSECTION RDDATA 41 I HIFIL 38 I/O HIGH FILTER: Analog reference signal for internal data separator compensation. This should be filtered by an external capacitor to LOFIL. LOFIL 37 I/O LOW FILTER: Low noise ground return for the reference filter capacitor. MFM 48 0 MFM: Indication of the current data encoding/decoding mode. MFM is active high. DRATEO DRATE1 28 29 0 DATARATEO-1: Reflects the contents of bits 0,1 of the Data Rate Register. MISCELLANEOUS + 5V VCC 18 39 40 60 68 Voltage: GND' 9 12 16 21 36 50 54 59 65 Ground AVCC 46 Analog Supply AVSS 45 . Analog Ground NC 42 43 44 47 No Connection: These pins MUST be left unconnected; they access unsupported internal PLL modes. 7-35 inter 82077 wide motor speed variation with exceptionally low soft error rates. The microprocessor interface has a 12 mA drive buffer on the data bus plus 100% hardware register compatibility for PC-AT's and PS/2TM'S. The 16-byte FIFO with programmable thresholds is extremely useful in multi-master systems (PS/2TM) or systems with a large amount of bus latency. 1.0 INTRODUCTION The 82077 is a true single-chip floppy disk controller for the PC-AT and PS/2TM. The 82077, a 24 MHz crystal, a resistor package and a chip select implement a complete design. All drive control signals are fully decoded and have 40 mA drive buffers with selectable polarity. Signals returned from the drive are sent through on-chip input buffers with hysteresis for noise immunity. The integrated analog data separator needs no external compensation yet allows for a 4 OATA BUS Upon reset, the 82077 defaults to 8272A functionality. New features are either selected via hardware straps or new commands. Figure 1-1 is a block diagram of the 82077. ~I TC-+ ORQ-+ OACK INT RO-+ WR-+ CS-+ AO-2-+ INTERFACE LOGIC WE MFM B U S RESET-+ Xl ---OSKCHG X2 ORV2 ORATE WP 0-1 TRKO ....._ _ IOX OSO-3 ME0-3 OENSEL <--~--,.. OIR STP HOL 290166-2 Figure 1·1.82077 Block Diagram 7-36 82077 1.1 Oscillator 1: 2.0 MICROPROCESSOR INTERFACE .1. Xl 24 MHz jCRYSTAL 82077 X2 - GND 290166-3 The interface consists of the standard asynchronous signals: RD, WR, CS, AO-A3, INT, DMA control and a data bus. The address lines select between configuration registers, the FIFO and control/status registers. This interface can be switched between PC-AT or PS/2™ normal modes. The PS/2™ register set is a superset of the registers found in a PC-AT. For PC-AT applications, the PS/2TM register set is located at unused locations. Note that the registers are always present regardless of which mode is selected. Figure 1-2. Crystal Oscillator Circuit The 24 MHz clock can be supplied either by a crystal or a MOS level square wave. All internal timings are referenced to this clock or a scaled count which is data rate dependent. The crystal oscillator must be allowed to run for 10 ms after V'CC has reached 4.5V or exiting the POWER DOWN mode to guarantee that it is stable. Crystal Specifications Frequency: Mode: Series Resistance: 24 MHz Parallel Resonant Fundamental Mode Less than 40.0. Shunt Capacitance: Less than 5 pF 2.1 Status, Data and Control Registers The base address range is supplied via the CS pin. For PC-AT or PS/2™ designs this would be 3FO Hex to 3F7 Hex. 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1.2 Perpendicular Recording Mode An added capability of the 82077 is the ability to interface directly to perpendicular recording floppy drives that use the Toshiba format. Perpendicular recording differs from the traditional longitudinal method by orienting the, magnetic bits vertically. This scheme then packs in more data bits for the same area. The 82077 with Toshiba perpendicular recording drives can at a minimum, read standard 3.5" floppies as well as read and write perpendicular media. Some manufacturers offer drives that can read and write standard and perpendicular media in a perpendicular media drive. A single command puts the 82077 into perpendicu· lar mode. All other commands operate as they normally do. The perpendicular mode requires the 1 t0bps data rate of the 82077. At this data rate, the FIFO eases the host interface bottleneck due to the speed of data transfer, to or from the disk. Register A2 A1 AO Status Register A 0 R Status Register B 1 R 0 R/W Digital Output Register Reserved 1 Main Status Register 0 R 0 W Data Rate Select Register 1 R/W Data (FIFO) Reserved 0 Digital Input Register 1 R Configuration Control' Register 1 W SRA SRB DOR MSR DSR FIFO DIR CCR 2.1.1 STATUS REGISTER A (SRA) This register is read-only and monitors the state of the interrupt pin and several disk interface pins. This register is part of the PS/2™ register set. 7 INT PENDING 6' 5 4' 3 2' l' 0 DAV2 STEP TAKO HDSEL INDX WP DIA The INT PENDING bit is used by software to monitor the state of the 82077 INTERRUPT pin. The bits marked with a ... " reflect the state of drive signals on the cable and therefore are independent of the state of the INVERT pin. intJ 82077 As a read-only register, there is no default value associated with a reset other than some drive bits will change with a reset. The INT PENDING, STEP, HDSEL, and DIR bits will be low after reset. Table 2-1. Drive Activation Values Drive DORValue 0 1 1CH 2DH 4EH 8FH 2 2.1.2 STATUS REGISTER B (SRB) 3 This register is read-only and monitors the state of several disk interface pins. This register is part of the PS/2™ register set. 7 6 1 1 5 3' 4 DRIVE WRDATA RDDATA SELO TOGGLE TOGGLE 2 WE 1 The DMAGATE bit is enabled only if the IDENT pin is tied to Vee (PC-AT mode). If DMAGATE is set to a low, the INT and DRO output pins are tristated and if set high, INT and DRO are enabled to the system. If IDENT is tied to VSS, DMAGATE has no effect upon the INT and DRO pins and they are always active. 0 MOT MOT ENl ENO This RESET bit clears the basic core of the 82077 and the FIFO circuits. Once set, it remains set until the user clears this bit. This bit is set by a chip reset and the 82077 is held in a reset state until the user clears this bit. The RESET bit has no effect upon this register. The RESET pin will clear this register. As the only drive input, RDDATA TOGGLE's activity is independent of the INVERT pin level and reflects the level as seen on the cable. The two TOGGLE bits do not read back the state of their respective pins directly. Instead, the pins drive a Flip/Flop which produces a wider and more reliably read pulse. Bits 6 and 7 are undefined and always return a 1. 2.1.4 DATARATE SELECT REGISTER (DSR) This register is included for compatibility with the 82072 floppy controller and is write-only. Changing the data rate changes the timings of the drive control signals. To ensure that drive timings are not violated when changing data rates, choose a drive timing such that the fastest data rate will not violate the timing. After any reset, the activity on the TOGGLE pins is cleared. Drive select and Motor bits cleared by the RESET pin and not software resets. 2.1.3 DIGITAL OUTPUT REGISTER (DOR) The Digital Output Register contains the drive select and motor enable bits, a reset bit and a DMA GATE bit. This register is used in both PC-AT and PS/2™ designs. . 7 s/w 6 POWER RESET DOWN 7 6 5 4 3 MOT MOT MOT MOT DMA EN3 EN2 ENl ENO GATE 2 RESET 1 4 PRE· PRE· PRE· 0 COMP COMP COMP 2 1 0 3 2 1 0 DRATE DRATE SEL 1 SELO 0 This register is the same as used in the 82072 except that the internal/external PLL select bit is removed. It is recommended that bit 5 be written with a 0 for compatibility. DRIVE DRIVE SELl 5 SELO The MOT ENx bits directly control their respective motor enable pins (MEO-3). A one means the pin is active, the INVERT pin determines which level that is. The DRIVE SELx bits are decoded to provide four drive select lines and only one may be active at a time. A one is active and the INVERT pin determines the level on the cable. Standard programming practice is to set both MOT ENx and DRIVE SELx bits at the same time. S/W RESET behaves the same as DOR RESET except that this reset is self clearing. POWER DOWN deactivates the internal clocks and shuts off the oscillator. Disk control pins are put in an inactive state. All input signals must be held in a valid state (D.C. level 1 or 0). POWER DOWN is exited by activating one of the reset functions. Table 2-1 lists a set of DOR values to activate the drive select and motor enable for each drive. PRECOMPO-2 adjusts the WRDATA outputto the disk to compensate for magnetic media phenomena known as bit shifting. The data patterns that are susceptible to bit shifting are well understood and the 7-38 inter 82077 ROM-Indicates that the host can transfer data if set to a 1. No access is permitted if set to a O. 82077 compensates the data pattern as it is written to the disk. The amount of precompensation is dependent upon the drive and media but in most cases the default value is acceptable. DIO-Indicates the direction of a data transfer once ROM is set. A 1 indicates a read and a 0 indicates a write is required. The 82077 starts precompensating the data pattern starting on Track O. The CONFIGURE command can change the track that precompensating starts on. Table 2-2 lists the precompensation values that can be selected and Table 2-3 lists the default precompensation values. The default value is selected if the three bits are zeros. NON-DMA-This mode is selected in the SPECIFY command and will be set to a 1 during the execution phase of a command. This is for polled data transfers and helps differentiate between the data transfer phase and the reading of result bytes. Table 2·2. Precompensation Delays PRECOMP COMMAND BUSY-This bit is set to a one when a command is in progress. This bit will go active after the command byte has been accepted and goes inactive at the end of the results phase. If there is no result phase (SEEK, RECALIBRATE commands), this bit is returned to a 0 after the last command byte. Precompensation Delay 432 111 001 010 011 100 101 110 000 0.00 ns-DISABLED 41.67 ns 83.34 ns 125.00 ns 166.67 ns 208.33 ns 250.00 ns DEFAULT DRV x BUSY-These bits are set to ones when a drive is in the seek portion of a command, including implied and overlapped seeks, and recalibrates. 2.1.6 FIFO (DATA) Table 2·3. Default Precompensation Delays Data Rate Precompensation Delays 1 Mbps 500 Kbps 300 Kbps 200 Kbps 41.67ns 125 ns 125 ns 125 ns All command parameter information and disk data transfers go through the FIFO. The FIFO is 16 bytes in size and has programmable threshold values. Data transfers are governed by the ROM and 010 bits in the Main Status Register. The FIFO defaults to an 8272A compatible mode after any form of reset. This maintains PC-AT hardware compatibility. The default values can be changed through the CONFIGURE command (enable full FIFOoperation with threshold control). The advantage of the FIFO is that it allows the system a larger DMA latency without causing a disk error. Table 2.5 gives several examples of the delays with a FIFO. The data is based upon the following formula: ORATE 0-1 select one of the four data rates as listed in Table 2-4. The default value is 250 Kbps upon a chip reset. Other Resets do not affect the ORATE or PRECOMP bits. Table 2·4. Data Rates DRATESEL 1 0 1 0 0 1 DATA RATE MFM FM 1 0 1 0 1 Mbps 500 Kbps 300 Kbps 250 Kbps Threshold# x IDATA1RATE x Illegal 250 Kbps 150 Kbps 125 Kbps FIFO Threshold Examples 1 byte 2 bytes 8 bytes 15 bytes The Main Status Register is a read-only register and is used for controlling command input and result output for all commands. 6 ROM DIO 5 4 3 2 1 0 NON CMD DRV3 DRV2 DRV1 DRVO DMA BSY BUSY BUSY BUSY BUSY 1.5 "'s = DELAY Table 2·5. FIFO Service Delay 2.1.5 MAIN STATUS REGISTER (MSR) 7 81- 7-39 Maximum Delay to Servicing at 1 Mbps Data Rate 1 2 8 15 x 8 I-I-s x 81-1-s x 8 I-I-s x81-1-s - 1.5 I-I-s -1.5I-1-s - 1.5 I-I-s -1.5I-1-s = = = = 6.5 I-I-s 14.51-1-s 62.5 I-I-s 118.51-1-s 82077 FIFO Threshold Examples 1 byte 2 bytes 8 bytes 15 bytes This pin is set high after a pin RESET and is unaffected by DOR and DSR resets. Maximum Delay to Servicing at 500 Kbps Data Rate 1 2 8 15 x 16p,s -1.5p,s == x 16 p,s - 1.5 p,s = x 16p,s -1.5p,s = x 16 p,s - 1.5 p,s = All other bits are unused and returned as 1's. 14.5p,s 30.5 p,s 126.511S 238.5 p,s 2.1.8 CONFIGURATION CONTROL REGISTER (CCR) This register sets the datarate and is write only. In the PC-AT it is named the DSR. At the start of a command, the. FIFO action is always disabled and command parameters must be sent based upon the ROM and 010 bit settings. As the 82077 enters the command execution phase, it clears the FIFO of any data to ensure that invalid data is not transferred. 7 - An overrun or underrun will terminate the current command and the transfer of data. Disk writes will complete the current sector by generating a 00 pattern and valid CRC. Reads require the host to remove the remaining data so that the result phase may be entered. DSK CHG 5 4 3 2 1 1 1 1 1 1 1 HIGH DENS The RESET pin is a global reset and clears all registers except those programmed by the SPECIFY command. The DaR Reset bit is enabled and must be cleared by the host to exit the reset state. Table 2-6. DENSEL Encoding 500 Kbps 300 Kbps 250 Kbps 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 DRATE DRATE SEL 1 SELO 2.2.1 RESET PIN Table 2-6 shows the state of the DENSEL pin when INVERT is low. 1 Mbps - 1 On exiting the reset state, various internal registers are cleared, including the CONFIGURE command information, and the 82077 waits for a new command. Drive polling will start unless disabled by a new CONFIGURE command. HIGH DENS is low whenever the 500 Kbps or 1 Mbps data rates are selected. This bit is independent of the effects of the IDENT and INVERT pins. DENSEL - 2 On entering the reset state, all operations are terminated and the 82077 enters an idle state. Activating reset while a disk write activity is in progress will corrupt the data and CRC. 0' IDENT - 3 There are three sources of reset on the 82077; the RESET pin, a reset generated via a bit in the DOR and a reset generated via a bit in the DSA. All resets take the 82077 out of the power down state. DSKCHG monitors the pin of the same name and reflects the opposite value seen on the disk cable, regardless of the value of INVERT. Data Rate - 4 2.2 RESET This register is used to sense the state of the DSKCHG and DENSEL inputs and is read-only. 6 - 5 Refer to the table in the Data Rate Select Register for values. Unused bits should be set to O. 2.1.7 DIGITAL INPUT REGISTER (DIR) 7' 6 2.2.2 DOR RESET vs DSRRESET These two resets are functionally the same. The DSR Reset is included to maintain 82072 compatibility. Both will reset the 8272 core which affects drive status information and the FIFO circuits. The DSR Reset clears itself automatically while the DOR Reset requires the host to manually clear it. DaR Reset has precedence over the DSR Reset. The DOR Reset is set automatically upon a pin RESET. The user must manually clear this reset bit in the DOR to exit the reset state. 7-40 inter 82077 Additionally, the two types of drives have different electrical interfaces. Generally, the 5.25" drive uses open collector drivers and the 3.5" drives (as used on PS/2TM) use totem-pole drivers. The output buffers on the 82077 do not change between open collector or totem-pole, they are always totem-pole. For design information on interfacing 5.25" and 3.5" drives to a single 82077, refer to Section 9. 2.3 DMA Transfers DMA transfers are enabled with the SPECIFY command and are initiated by the 82077 by activating the ORO pin during a data transfer command. The FIFO is enabled directly by asserting DACK and addresses need not be valid. 3.0 DRIVE INTERFACE 3.2 Data Separator The 82077 has integrated all of the logic needed to interface to a floppy disk drive. All drive outputs have 40 mA drive capability and all inputs use a receive buffer with hysteresis. The internal analog data separator requires no external components, yet allows for an extremely wide capture range with high levels of read-data jitter. The designer needs only to run the 82077 disk drive Signals to the disk drive connector. The function of the data separator is to lock onto the incoming serial read data. When lock is achieved the serial front end logic of the chip is provided with a clock which is synchronized to the read data. The synchronized clock, called Data Window, is used to internally sample the serial data. One state of Data Window is used to sample the data portion of the bit cell, and the alternate state samples the clock portion. Serial to parallel conversion logic separates the read data into clock and data bytes. 3.1 Cable Interface To support reliable disk reads the data separator must track fluctuations in the disk data frequency. Frequency errors primarily arise from two sources: drive rotation speed variation and instantaneous speed variation (ISV). A second condition, and one that opposes the ability to track frequency shifts is the response to bit jitter. The INVERT pin selects between using the internal buffers on the 82077 or user supplied inverting buffers. INVERT pulled to Vee disables the internal buffers; pulled to ground will enable them. There is no need to use external buffers with the 82077 in PC-AT or PSI2™ applications. The internal data separator consists of two analog phase lock loops (PLLs) as shown in Figure 3-1. The two PLLs are referred to as the reference PLL and the data PLL. The reference PLL (the master PLL) is used to bias the data PLL (the slave PLL). The reference PLL adjusts the data PLL's operating point as a function of process, junction temperature and supply voltage. Using this architecture it was possible to eliminate the need for external trim components. The selection between the PC-AT or PSI2™ interface, through the IDENT pin, also changes the definition of the DENSEL pin. The AT interface assumes using 5.25" drives where a high on DENSEL tells the drive that either the 500 Kbps or 1 Mbps datarate is selected. The PSI2™ interface assumes 3.5" drives and DENSEL changes to a low for the high datarates. REFERENCE OSCILLATOR REFERENCE PHASE LOCK LOOP 1 DISK DATA ---+ SYNC DETECT I ! ANALOG TRIM DATA SYNC. DET. DATA 1 DATA PHASE LOCK LOOP INTERNAL DW DELAYED DATA READ DATA 290166-4 Figure 3·1. Data Separator Block Diagram 7-41 intJ .82077 3.2.1 PHASE LOCK LOOP OVERVIEW PHASE DETECTOR . . - - - - - _ - - - - - + _ - - A N A L O G TRIM DATA FROM REFERENCE PHASE LOCK LOOP LOOP FILTER VCO .... _---- READ DATA VCO ENABLE DATA WINDOW, REF. FREQ. vco L--------- x- 2- C-LO-C-K----I FEEDBACK INTERNAL DW 290166-5 Figure 3-2. Data PLL 3.2.2 LOCKTIME (tLOCK) Figure 3-2 shows the data PLL. The reference PLL has control over the loop gain by its influence on the charge pump and the VCO. In addition the reference PLL controls the loop filter time constant. As a result the closed loop transfer function of the data PLL is controlled, and immune, to the first order, to environmental factors, and process variation. The lock, or settling time of the data PLL is designed to be 64 bit times. This corresponds to 4 sync bytes in the FM mode and 8 sync bytes in the MFM mode. This value assumes that the sync field jitter is 5% the bit cell or less. This level of jitter should be easily achieved for a constant bit pattern, since intersym· bol interference should be equal, thus nearly elimi· nating random bit shifting. Systems of this type are often very sensitive to noise. In the design of this data separator many steps were taken to avoid noise sensitivity problems. The analog section of the chip has a separate VSS pin (AVSS) which should be connected externally to a noise free ground. This provides a clean' basis for VSS referenced signals. In addition many analog circuit features were employed to make the overall system as insensitive to noise as possible. 3.2.3 CAPTURE RANGE Capture Range is the maximum frequency range over which the data separator will acquire phase lock with the incoming RDDATA signal. In a floppy disk environment, this frequency variation is composed of two components: drive motor speed error and ISV. Frequency is a factor which may determine the maximum level of the ISV (Instantaneous Speed Variation) component. In general, as frequency increases the allowed magnitude of the ISV component will decrease. When determining the capture range requirements, the designer should take the maximum amount of frequency error for the disk drive and double it to account for media switching between drives. 3.2.1 JITTER TOLERANCE The jitter immunity of the system is dominated by the data PLL's response to phase impulses. This is measured as a percentage of the theoretical data window by dividing the maximum readable bit shift by a % bitcell distance. For instance, if the maximum allowable bit shift is 300 nsfor a 500 Kbps data stream, the jitter tolerance is 60%. The.graph in Figure 12-1 of the Data Separator Characteristics sec· tion illustrates the jitter tolerance of the 82077 across a ± 6% frequency range. 7-42 infef 82077 PRECOMP SELECTION FROM DSR WRDATA TO OUTPUT 290166-6 NOTE: PSO,1 are 8272A control signals but are not available as outputs on the 82077. Figure 3-3. Precompensation Block Diagram The top block is a 13-bit shift register with the no delay tap being in the center. This allows 6 levels of early and late shifting with respect to nominal. The shift register is clocked at the main clock rate (24 MHz). The output is fed into 2 multiplexors-one for early and one for late. A final stage of multiplexors combines the early, late and normal data stream back into one which is the WRDATA output. 3.2.4 REFERENCE FILTER To provide a clean bias voltage for the internal data separator, two pins have been provided to filter this signal. It is recommended to place a 0.005 uF capacitor between HIFIL and LOFIL to filter the reference signal. A smaller capacitance will reduce the effectiveness of the filter and could result in a lower jitter tolerance. Conversely, a larger capacitance has the potential to further improve jitter tolerance, but will result in an increased settling time after a change· in data rate. For instance, a filter capacitor of 0.005 uF will yield a settling time of approximately 500 microseconds. Since HIFIL generates a relatively low current signal (approximately 10 uA), care also needs to be taken to avoid external leakage on this pin. The quality of the capacitor, solder flux, grease, and dirt can all impact the amount of leakage on the board. 4.0 CONTROLLER PHASES For simplicity, command handling in the 82077 can be divided into three phases: Command, Execution and Result. Each phase is described in the following secions. 4.1 Command Phase After a reset, the 82077 enters the command phase and is ready to accept a command from the host. For each of the commands, a defined set of command code bytes and parameter bytes has to be written to the 82077 before the command phase is complete (Please refer to Section 5.0 for the command descriptions). These bytes of data must be transferred in the order prescribed. 3.3 Write Precompensation The write precompensation logic is used to minimize bit shifts in the RDDAT A stream from the disk drive. The shifting of bits is a known phenomena of magnetic media and is dependent upon the disk media AND the floppy drive. Before writing to the 82077, the host must examine the ROM and 010 bits of the Main Status Register. ROM, 010 must be equal to "1" and "0" respectively before command bytes may be written. ROM is set false by the 82077 after each write cycle until the received byte is processed. The 82077 asserts ROM again to request each parameter byte of the com- The 82077 monitors the bit stream that is being sent to the drive. The data patterns that require precompensation are well known. Depending upon the pattern, the bit is shifted either early or late (or not at all) relative to the surrounding bits. Figure 3-3 is a block diagram of the internal circuit. 7-43 inter 82077 mand, unless an illegal command condition is detected. After the last parameter byte is received, ROM remains "0", and the 82077 automatically enters the next phase as defined by the command definition. 4.2.1 NON-DMA MODE, TRANSFERS FROM THE FIFO TO THE HOST The INT pin and ROM bits in the Main Status Register are activated when the FIFO contains (16< threshold» bytes, or the last bytes of a full sector transfer have been placed in the FIFO. The INT pin can be used for interrupt driven systems and ROM can be used for polled sytems. The host must respond to the request by reading data from the FIFO. This process is repeated until the last byte is transferred out of the FIFO. The 82077 will deactivate the INT pin and ROM bit when the FIFO becomes empty. The FIFO is disabled during the command phase to retain compatibility with· the 8272A, and to provide for the proper handling of the "Invalid Command" condition. 4.2 Execution Phase All data transfers to or from the 82077 occur during the execution phase, which can proceed in OMA or non-OMA mode as indicated in the SPECIFY command. After a reset, the FIFO is disabled. Each data byte is transferred by anlNT or ORO. depending on the OMA mode. The CONFIGURE command can enable the FIFO and set the FIFO threshold lIalue. The following paragraphs detal! the operation of the FIFO flow control. In these descriptions, is defined as the number of bytes available to the 82077 when service is requested from the host, and ranges from 1 to 16. The parameter FIFOTHR whiCh the user programs is one less, and ranges from 0 to 15. 4.2.2 NON-DMA MODE, TRANSFERS FROM THE HOST TO THE FIFO The INT pin and ROM bit in the Main Status Register . are activated upon entering the execution phase of data transfer commands. The host must respond to the request by writing data into the FIFO. The INT pin and ROM bit remain true until the FIFO becomes full. They are set true again when the FIFO has bytes remaining in the FIFO. The ·INT pin will also be deactivated if TC and OACK # both go inactive. The 82077 enters the result phase after the last byte is taken by the 82077 from the FIFO (i.e. FIFO empty condition). 4.2.3 DMA MODE,TRANSFERS FROM THE FIFO A low threshold value (I.e. 2) results in longer periods of time between service requests, but requires faster servicing of the request, for both read and write cases. The host reads (writes) from (to) the FIFO until empty (full), then the transfer request goes inactive. The host must be very responsive to the service request. This is the desired case for use with a "fast" system. TO THE. HOST The 82077 activates the ORO pin when the FIFO contains (16- bytes remaining in the FIFO. The 82077 will also deactivate the ORO pin when TC becomes true (qualified by OACK#), indicating that no more data is required. ORO goes inactive after OACK # goes active for the last byte of a data transfer (or on the active edge of WR# of the last byte, if no edge is present on OACK #). A data overrun may occur if ORO is not removed in time to prevent an unwanted cycle. 4.3 Result Phase The generation of INT determines the beginning of the result phase. For each of the commands, a defined set of result bytes has to be read from the 82077 before the result phase is complete. (Refer to Section 5.0 on command descriptions.) These bytes of data must be read out for another command to start. ROM and 010 must both equal "1" before the result bytes may be read from the FIFO. After all the result bytes have been read, the ROM and 010 bits switch to "1" and "0" respectively, and the CB bit is cleared. This indicates that the 82077 is ready to accept the next command. 4.2.5 DATA TRANSFER TERMINATION The 82077 supports terminal count explicitly through the TC pin and implicitly through the underrun/overrun and end-of-track (EOT) functions. For full sector transfers, the EOT parameter can define the last sector to be transferred in a single or multi sector transfer. If the last sector to be transferred is a partia sector, the host can stop transferring the data in mid-sector, and the 82077 will continue to complete the sector as if a hardware TC was received. The only difference between these implicit functions and TC is that they return "abnormal termination" result status. Such status indications can be ignored if they were expected. 5.0 COMMAND SETIDESCRIPTIONS Commands can be written whenever the 82077 is in the command phase. Each command has a unique set of needed parameters and status results. The 82077 checks to see that the first byte is a valid command and, if valid, proceeds with the command. If it was invalid, an interrupt is issued. The user would send a SENSE INTERRUPT STATUS command which would return an invalid command error. Table 5-1 is a summary of the Command set. 7-45 inter 82077 Table 5·1; 82077 Command Set Phase DATA BUS R/W 07 06 05 04 MT MFM SK 0 0 0 0 03 Remarks O2 01 Do 1 HDS 1 DS1 DSO READ DATA Command W W W W W W W .0 0 0 0 Sector ID information prior to Command execution C H R N EaT GPL DTL w W Data transfer between the FDD and system Execution Result Command Codes R R R R R R R Status information after Command execution STO ST 1 ST 2 C H R Sector ID information after Command execution N READ DELETED DATA Command W W W W W W W MT MFM SK 0 0 0 0 0 1 0 1 HDS 0 0 DS1 DSO Sector ID information prior to Command execution C H R N EaT GPl DTL w W Data transfer between the FDD and system Execution Result Command Codes STO ST1 ST2 C H R R R R R R R R Status information after Command execution Sector ID information after Command execution N WRITE DATA Command W W W W W W W w W MT MFM 0 0 0 0 0 0 0 0 0 DS1 1 DSO Command Codes Sector ID information prior to Command execution C H R N EaT GPL DTL Execution Result 1 HDS Data transfer between the system and FDD R R R R R R R STO ST1 ST2 C H R N 7-46 Status information after Command execution Sector ID information after Command execution intJ 82077 Table 5-1. 82077 Command Set (Continued) Phase DATA BUS R/W D7 D6 Ds MT MFM 0 0 0 0 D3 D4 Remarks D2 D1 Do 1 OSO WRITE DELETED DATA Command W W W W 0 0 1 0 0 0 HOS OS1 W W W W W Data transfer between the FOO and system Execution Result Command Codes Sector 10 information prior to Command execution C H R N EDT GPL OTL Status information after Command execution STO ST1 ST2 C H R N R R R R R R R Sector 10 information after Command execution READ TRACK Command W W W W W W W W W 0 0 MFM 0 0 0 0 0 0 0 0 HDS 1 DS1 0 Sector ID information prior to Command execution C H R N EOT GPL DTL Data transfer between the FDD and system. FDC reads all of cylinders contents from index hole to EDT Execution Result Command Codes DSO Status information after Command execution STO ST1 ST2 C H R N R R R R R R R Sector 10 information after Command execution VERIFY Command W W W W W W W W W MT MFM SK 1 0 0 0 0 0 0 1 HOS 1 DS1 0 Sector 10 information prior to Command execu1ion C H R N EOT GPL DTL No data transfer takes place Execution Result Command Codes DSO R R R R R R R Status information after Command execution STO ST1 ST2 C H R N Sector ID information after Command execution VERSION Command Result W o· R 1 0 a 0 0 1 1 0 a 7-47 0 0 0 a 0 0 Command Code Enhanced Controller inter 82077 Table 5-1. 820nCommand Set (Continued) Phase DATA BUS R/W 07 06 05 04 0 0 MFM 0 0 0 0 0 03 Remarks 02 01 Do 1 1 0 HDS 0 DSl DSO FORMAT TRACK Command Execution For Each Sector Repeat: W W W W W W 1 Bytes/Sector Sectors/Cylinder Gap3 Filler Byte N SC GPL D W W W W Command Codes C H R N Input Sector Parameters 82077 formats an entire cylinder Result R R R R R R R Command W W Status information after Command execution STO STl ST2 Undefined Undefined Undefined Undefined RECALIBRATE 0 0 0 0 0 0 0 0 0 0 1 1 1 0 DSl DSO Command Codes Head retracted to Track 0 Interrupt Execution SENSE INTERRUPT STATUS Command W Result R R Command W W W 0 0 0 1 0 0 0 0 STO PCN Command Codes Status information at the end of each seek operation SPECIFY 0 0 0 0 0 1 0 SRT 1 Command Codes HUT HLT ND SENSE DRIVE STATUS Command W W Result R Command W W W 0 0 0 0 0 0 0 0 0 0 1 HDS 0 DSl 0 DSO Command Codes Status information about FDD ST3 SEEK 0 0 0 0 0 0 0 0 1 1 1 1 0 HDS DSl DSO Command Codes NCN Head is positioned over proper Cylinder on Diskette Execution CONFIGURE Command W W W W 0 0 0 0 0 EIS 0 0 EFIFO W W W 1 DIR 0 0 0 1 0 0 0 POLL PRETRK 0 0 1 1 0 0 FIFOTHR _ _ _._ RELATIVE SEEK Command 0 0 0 1 1 1 1 0 HDS DSl DSO RCN 7-48 Configure Information 82077 Table 5-1. 82077 Command Set (Continued) Phase DATA BUS R/W 07 Os Os 04 0 0 0 0 Remarks 0, . O2 03 Do DUMPREG Command Execution Result W R R R R R R R R R 'R 1 1 1 "'Note Registers placed in FIFO 0 PCN-Drive 0 PCN-Drive 1 PCN-Drive 2 PCN-Drive 3 SRT HUT 0 EIS EFIFO 0 0 MFM 0 0 HLT SC/EOT Undefined POLL PRETRK ND FIFOTHR READ 10 Command W W 0 0 0 1 0 0 HDS 0 DSO 1 DS1 Commands The firsl correct 10 information on the Cylinder is stored in Data Register Execution Result Status information after Command execution STO ST1 ST2 C H R N R R R R R R R Disk status after the Command has completed, PERPENDICULAR MODE Command W 0 0 Command W Invalid Codes Result R STO 0 0 0 0 1 0 0 0 0 0 Command Codes 1 0 WGATEGAP INVALID Invalid Command Codes (NoOp - 82077 goes into Standby State) STO= 80H SC is returned If the last command that was Issued was the FORMAT command. EOT IS returned If the last command was a READ or WRITE. NOTE: These bits are used internally only. They are not reflected in the Drive Select pins. It is the users responsibility to maintain correspondence between these bits and the Drive Select pins (DOR). Symbol PARAMETER ABBREVIATIONS Description DSO, DS1 Disk Drive Select. Symbol Description C Cylinder address. The currently selected cylinder address, 0 to 255. D Data pattern. The pattern to be written in each sector data field during formatting. DIR Direction control. If this bit is 0, then the head will step out from the spindle during a relative seek. If set to a 1, the head will step in toward the spindle. 7-49 DS1 DSO 0 0 1 1 0 1 0 1 drive 0 drive 1 drive 2 drive 3 82077 Symbol Description Symbol DTL Special sector size. By setting N to zero (00), DTL may be used to control the number of bytes transferred in disk read/write commands. The sector size (N , = 0) is set to 128. If the actual sector (on the diskette) is larger than DTL, the remainder of the actual sector is read but is not passed to the host during read commands; during write commands, the remainder of the actual sector is written with all zero bytes. The CRC check code is calculated with the actual sector. When N is not zero, DTL has no meaning and should be set to FF HEX. EFIFO Enable FIFO. When this bit is 0, the FIFO is enabled. A "1" puts the 82077 in the 8272A compatible mode where the FIFO is disabled. EIS Enable implied seek. When set, a seek . operation will be performed before executing any read or write command that requires the C parameter in the command phase. A "0" disables the implied seek. EOT End of track. The final sector number of the current track. GPL Gap length. The gap 3 size. (Gap 3 is the space between sectors excluding the VCO synchronization field). H/HDS Head address. Selected head: 0 or 1 (disk side 0 or 1) as encoded in the sector ID field. HLT Head load time. The time interval that 82077 waits after loading the head and before initiating a read or write operation. Refer to the SPECIFY command for actual delays. HUT Head unload time. The time interval from the end of the execution phase (of a read or write command) until the head is unloaded. Refer to the SPECIFY command for actual delays. MFM MFM/FM mode selector. A one selects the. double density (MFM) mode. A zero selects single density (FM) mode. MT Multi-track selector: When set, this flag selects the multi-track operating mode. In this mode, the 82077 treats a complete cylinder, under head 0 and 1, as a single track. The 82077 operates as if this expanded track started at the first sector under head 0 and ended at the last sector under head 1. With this flag set, a mUltitrack read or write operation will automatically continue to the first sector under head 1 when the 82077 finishes operating on the last sector under head o. N Description Sector size code. This specifies the number of bytes in a sector. If this parameter is "00", then the sector size is 128 bytes. The number of bytes transferred is determined by the DTL parameter. Otherwise the sector size is (2 raised to the "N'th" power) times 128. All values up to "07" hex are allowable. "07"h would equal a sector size of 16k. It is the users responsibility to not select combinations that are not possible with the drive. N Sector Size 00 01 02 03 128 bytes 256 bytes 512 bytes 1024 bytes .. 07 NCN ND PCN POLL . .. 16 Kbytes New cylinder number. The desired cylinder number. Non-DMA mode flag. When set to 1, indicates that the 82077 is to operate in the non-DMA mode. In this mode, the host is interrupted for each data transfer. When set to 0, the 82077 operates in DMA mode, interfacing to a DMA controller by means of the DRO and DACK # signals. Present cylinder number. The current position of the head at the completion of SENSE INTERRUPT STATUS command. Polling disable. When set, the internal polling routine is disabled. When clear, polling is enabled. PRETRK Precompensation start track number. Programmable from track 00 to FFH. R Sector address. The'sector number to be read or written. In multi-sector transfers, this parameter specifies the sector number of the first sector to be read or written. RCN Relative cylinder number. Relative cylinder offset from present cylinder as used by the RELATIVE SEEK command. SC Number of sectors per track. The number of sectors per track to be initialized by the FORMAT command. SK 7-50 Skip flag. When set to 1, sectors containing a deleted data address mark will automatically be skipped during the execution of READ DATA. If READ DELETED is executed, only sectors with a deleted address mark will be accessed. When set to "0", the sector is read or written the same as the read and write commands. 82077 Symbol SRT STO ST1 ST2 ST3 the 82077 transfers the specified number of bytes to the host. For reads, it continues to read the entire 128 byte sector and checks for CRC errors. For writes it completes the 128 byte sector by filling in zeroes. If N is not set to 00 Hex, DTL should be set to FF Hex, and has no impact on the number of bytes transferred. Description Step rate interval. The time interval between step pulses issued by the 82077. Programmable from 0.5 to 8 milliseconds, in increments of 0.5 ms at the 1 Mbit data rate. Refer to the SPECIFY command for actual delays. Status register 0-3. Registers within the 82077 that store status information after a command has been executed. This status information is available to the host during the result phase after command execution. Table 5-2. Sector Sizes N Sector Size 00 01 02 03 128 bytes 256 bytes 512 bytes 1024 bytes . .. .. 5.1 Data Transfer Commands 07 All of the READ DATA, WRITE DATA and VERIFY type commands use the same parameter bytes and return the same results information. The only difference being the coding of bits 0-4 in the first byte. 16 Kbytes The amount of data which can be handled with a single command to the 82077 depends upon MT (multi-track) and N (Number of bytes/sector). An implied seek will be executed if the feature was enabled by the CONFIGURE command. This seek is completely transparent to the user. The Drive Busy bit for the drive will go active in the Main Status Register during the seek portion of the command. If the seek portion fails, it will be reflected in the results status normally returned for a READ/WRITE DATA command. Status Register 0 (STO) would contain the error code and C would contain the cylinder on which the seek failed. Table 5-3. Effects of MT and N Bits MT N 0 1 0 1 0 1 1 1 2 2 3 3 Max. Transfer . Capacity 256 x 26 = 256 x 52 = 512X15= 512 x 30 = 1024 x 8= 1024 x 16 = 6,656 13,312 7,680 15,360 8,192 16,384 Final Sector Read from Disk 26 at side 0 or 1 26 at side 1 15 at side 0 or 1 15 at side 1 8 at side 0 or 1 16 at side 1 5.1.1 READ DATA A set of nine (9) bytes is required to place the 82077 into the Read Data Mode. After the READ DATA command has been issued, the 82077 loads the head (if it is in the unloaded state), waits the specified head settling time (defined in the SPECIFY command), and begins reading 10 Address Marks and 10 fields. When the sector address read off the diskette matches with the sector address specified in the command, the 82077 reads the sector's data field and transfers the data to the FIFO. The Multi-Track function (MT) allows the 82077 to read data from both sides of the diskette. For a particular cylinder, data will be transferred starting at Sector 1, Side 0 and completing at the last sector of the same track at Side 1. After completion of the read operation from the current sector, the sector address is incremented by one, and the data from the next logical sector is read and output via the FIFO. This continuous read function is called "Multi-Sector Read Operation". Upon receipt of TC, or an implied TC (FIFO overrun/underrun), the 82077 stops sending data, but will continue to read data from the current sector, check the CRC bytes, and at the end of the sector terminate the READ DATA Command. At the completion of the READ DATA Command, the head is not unloaded until after the Head Unload Time Interval (specified in the SPECIFY command) has elapsed. If the host issues another command before the head unloads then the head settling time may be saved between subsequent reads. If the host terminates a read or write operation in the 82077, then the 10 information in the result phase is dependent upon the state of the MT bit and EOT byte. Refer to Table 5-6. If the 82077 detects a pulse on the lOX pin twice without finding the specified sector (meaning that the diskette's index hole passes through index detect logic, in the drive twice), the 82077 sets the IC code in Status Register 0 to "01" (Abnormal termination), and sets the NO bit in Status Register 1 to "1" indicating a sector not found, and terminates the READ DATA Command. N determines the number of bytes per sector (see Table 5-2 below). If N is set to zero, the sector size is set to 128. The DTL value determines the number of bytes to be transferred. If DTL is less than 128, 7-51 82077 After reading the 10 and Data Fields in each sector, the 82077 checks the CRC bytes. If a CRC error occurs in the ID or data field, the 82077 sets the IC code in Status Register 0 to "01" (Abnormal termination), sets the DE bit flag in Status Register 1 to "1", sets the DO bit in Status Register 2 to "1" if CRC is incorrect in the 10 field, and terminates the READ DATA Command. Table 5-5 describes the affect of the SK bit on the READ DELETED DATA command execution and results. Table 5·5. Skip Bit vs 'READ DELETED DATA Command SKBit Value Table 5-4 below describes the affect of the SK bit on the READ DATA command execution and·results. Results Data Address Mark Type Encountered Sector Read? CMBitof ST2Set? Description of Results Address Not Incremented. Next Sector Not Searched For. Normal Termination, Normal Termination Sector Not Read ("Skipped"). Normal Termination, 0 Normal Data Yes Yes 0 Deleted Data Yes No 1 Normal Data ·No Yes 1 Deleted Data Yes No Table 5·4. Skip Bit vs READ DATA Command SKBit Value Data Address Results Mark Type eM Bit Description of Sector Encountered Results Read? of ST2 Set? 0 Normal Data Yes No 0 Deleted Data Yes yes 1 Normal Data Yes No, 1 Deleted Data No Yes Normal Termination. Address Not Incremented. Next Sector Not Searched For. Normal Termination. Normal Termination Sector Not Read ("Skipped"). Except where noted in Table 5-5 above, the C or R value of the sector address is automatically incremented (See Table 5-6). 5.1.3 READ TRACK This command is similar to the READ DATA command except that the entire data field is read continuously from each of the sectors of a track. Immediately after encountering a pulse on the lOX pin, the 82077 starts to read all data fields on the track as continuous blocks of data without regard to logical sector numbers. If the 82077 finds an error in the 10 or DATA CRC check bytes, it continues to read data from the track and sets the appropriate error bits at the end of the command. The 82077 compares the Except where noted in Table 5-4, the C or R value of the sector address is automatically incremented (see Table 5-6)~ 5.1.2 READ DELETED DATA This command is the same as the READ DATA command, only it operates on sectors that contain a Deleted Data Address Mark at the beginning of a Data Field. _ ,. . Table 5·6. Result Phase Table MT Head 0 0 1 0 1 1 10 Information at Result Phase Final Sector Transferred to Host C H R N Less than EOT NC NC R+1 NC Equal to EOT C+1 NC 01 NC Less than EOT NC NC R+1 NC Equal to.EOT C+1 NC 01 NC Less than EOT NC NC R+1 NC Equal to EOT NC LSB 01 NC Less than EOT NC NC R+1 NC Equal to EOT C+1 LSB 01 NC NC: no change, the same value as the one at the beginning of command execution. LSB: least significant bit, the LSB of H is complemented. 7-52 inter 82077 10 information read from each sector with the specified value in the command, and sets the NO flag of Status Register 1 to a "1" if there is no comparison. Multi-track or skip operations are not allowed with this command. The SK bit should always be set to 5.1.5 WRITE DELETED DATA This command is almost the same as the WRITE OAT A command except that a Deleted Data Address Mark is written at the beginning of the Data Field instead of the normal Data Address Mark. This command is typically used to mark a bad sector containing an error on the floppy disk. "0". This command terminates when the EOT specified number of sectors have been read. If the 82077 does not find an 10 Address Mark on the diskette after the second occurrence of a pulse on the lOX pin, then it sets the IC code in Status Register 0 to "01" (Abnormal termination), sets the MA bit in Status Register 1 to "1", and terminates the command. 5.1.6 VERIFY The VERIFY command is used to verify the data stored on a disk. This command acts exactly like a READ DATA command except that no data is transferred to the host. Data is read from the disk, CRC computed and checked against the previously stored value. 5.1.4 WRITE DATA After the WRITE DATA command has been issued, the 82077 loads the head (if it is in the unloaded state), waits the specified head load time if unloaded (defined in the SPECIFY command), and begins reading 10 Fields. When the sector address read from the diskette matches the sector address specified in the command, the 82077 reads the data from the host via the FIFO, and writes it to the sector's data field. The EOT value should be set to the final sector to be checked. If EOT is greater than the number of sectors on a disk, the command will stop due to an error and no useful CRC information will be obtained. 5.1.7 FORMAT TRACK The FORMAT command allows an entire track to be formatted. After a pulse from the lOX pin is detected, the 82077 starts writing data on the disk including Gaps, Address Marks, 10 Fields and Data Fields, per the IBM System 34 or 3740 format (MFM or FM respectively). The particular values that will be written to the gap and data field are controlled by the values programmed into N, SC, GPL, and 0 which are specified by the host during the command phase. The data field of the sector is filled with the data byte specified by D. The 10 Field for each sector is supplied by the host; that is, four data bytes per sector are needed by the 82077 for C, H, R, and N (cylinder, head, sector number and sector size respectively). After writing data into the current sector, the 82077 computes the CRC value and writes it into the CRC field at the end of the sector transfer. The Sector Number stored in "R" is incremented by one, and the 82077 continues writing to the next data field. The 82077 continues this "Multi-Sector Write Operation". Upon receipt of a terminal count signal or if a FIFO over/under run occurs while a data field is being written, then the remainder of the data field is filled with zeros. The 82077 reads the 10 field of each sector and checks the CRC bytes. If it detects a CRC error in one of the 10 Fields, it sets the IC code in Status Register 0 to "01" (Abnormal termination), sets the DE bit of Status Register 1 to "1 ", and terminates the WRITE DATA command. After formatting each sector, the host must send new values for C, H, Rand N to the 82077 for the next sector on the track. The R value (sector number) is the only value that must be changed by the host after each sector is formatted. This allows the disk to be formatted with nonsequential sector addresses (interleaving). This incrementing and formatting continues for the whole track until the 82077 encounters a pulse on the lOX pin again and it terminates the command. The WRITE DATA command operates in much the same manner as the READ DATA command. The following items are the same. Please refer to the READ DATA Command for details: • Transfer Capacity • EN (End of Cylinder) bit Table 5-7 contains typical values for gap fields which are dependent upon the size of the sector and the number of sectors on each track. Actual values can vary due to drive electronics. • NO (No Data) bit • Head Load, Unload Time Interval • 10 information when the host terminates the command.• Definition of DTL when N not = o. = 0 and when N does 7-53 inter 82077 Table 5-7. Typical Values for Formatting Sector Size N SC GPL1 GPL2 128 128 512 1024 2048 4096 .. . 256 256 512' 1024 2048 4096 00 00 02 03 04 05 ... 12 10 08 04 02 01 07 10 18 46 C8 C8 09 19 30 87 FF FF ... 01 01 02 03 04 05 . .. 12 10 09 04 02 01 OA 20 2A 80 C8 C8 OC 32 50 FO FF FF 128 256 512 256 512" 1024 0 1 2 1 2 3 OF 09 05 OF 09 05 07 OF 18 OE 18 35 18 2A 3A 36 54 74 FM 5.25" Drives MFM FM 3.5" Drives MFM GPL 1 = suggested GPL values in read and write commands to avoid splice point between data field and ID field of contiguous sections. GPL2 = suggested GPL value in FORMAT TRACK command. 'PC-AT values (typical) ''PSI2™ values (typical) NOTE: All values except Sector Size are in Hex. 5.1.7.1 Format Fields GAP4a 80x 4E GAP4a 40x FF SYNC 12x 00 lAM ~ C2 GAP1 SOx 4E SYNC 12x 00 IDAM ~ A1 C Y L H D S E C N 0 C R C GAP2 22x 4E SYNC 12x 00 DATA AM 3x A1 I FBF8 C DATA R GAP3 GAP4b C Figure 5-1. System 34 Format Double Density lAM SYNC GAP 1 f--6x 26x FC 00 FF SYNC 6x 00 - IDAM FE C Y L H D S E C N 0 C R C GAP2 11x FF SYNC 6x 00 DATA AM C DATA FBor F8 R GAP3 GAP4b C Figure 5-2. System 3740 Format Single Density GAP4a 80x 4E SYNC 12x 00 lAM ~ C2 GAP1 SOx 4E SYNC 12x 00 IDAM ~ A1 C Y L H S E D C N 0 C R C GAP2 41x 4E SYNC 12x 00 DATA AM 3x A1 I FBF8 Figure 5-3. Toshiba Perpendicular Format 7-54 C DATA R GAP3 GAP4b C 82077 The RECALIBRATE command does not have a result phase. SENSE INTERRUPT STATUS command must be issued after the RECALIBRATE command to effectively terminate it and to provide verification of the head position (PCN). During the command phase of the recalibrate operation, the 82077 is in the BUSY state, but during the execution phase it is in a NON BUSY state. At this time another RECALIBRATE command may be issued, and in this manner, parallel RECALIBRATE operations may be done on up to 4 drives at once. 5.2 Control Commands Control commands differ from the other commands in that no data transfer takes place. Three commands generate an interrupt when complete; READ ID, RECALIBRATE and SEEK. The other control commands do not generate an interrupt. 5.2.1 READ ID The READ ID command is used to find the present position of the recording heads. The 82077 stores the values from the first ID Field it is able to read into its registers. If the 82077 does not find an ID Address Mark on the diskette after the second occurrence of a pulse on the IDX pin, it then sets the IC code in Status Register 0 to "01" (Abnormal termination), sets the MA bit in Status Register 1 to "1 ", and terminates the command. Upon power up, the software must issue a RECALIBRATE command to properly initialize all drives and the controller. 5.2.3 SEEK The read/write head within the drive is moved from track to track under the control of the SEEK Command. The 82077 compares the PCN which is the current head position with the NCN and performs the following operation if there is a difference: -PCN < NCN: Direction signal to drive set to "1" (step in), and issues step pulses. The following commands will generate an interrupt upon completion. They do not return any result bytes. It is highly recommended that control commands be followed by the SENSE INTERRUPT STATUS command. Otherwise, valuable interrupt status information will be lost. -PCN > NCN: Direction signal to drive set to "0" (step out), and issues step pulses. 5.2.2 RECALIBRATE The rate at which step pulses are issued is controlled by SRT (Stepping Rate Time) in the SPECIFY command. After each step pulse is issued, NCN is compared against PCN, and when NCN = PCN, then the SE bit in Status Register 0 is set to "1 ", and the command is terminated. This command causes the read/write head within the 82077 to retract to the track 0 position. The 82077 clears the contents of the PCN counter, and checks the status of the TRKO pin from the FDD. As long as the TRKO pin is low, the DIR pin remains 0 and step pulses are issued. When the TRKO pin goes high, the SE bit in Status Register 0 is set to "1 ", and the command is terminated. If the TRKO pin is still low after 255 step pulses have been issued, the 82077 sets the SE and the EC bits of Status Register 0 to "1", and terminates the command. Disks capable of handling more than 256 tracks per side may require more than one RECALIBRATE command to return the head back to physical Track O. During the command phase of the seek or recalibrate operation, the 82077 is in the BUSY state, but during the execution phase it is in the NON BUSY state. At this time another SEEK or RECALIBRATE command may be issued, and in this manner, parallel seek operations may be done on up to 4 drives at once. 7-55 82077 Note that if implied seek is not enabled, the read and write commands should be preceded by: 1) SEEK command; Step to the proper track 2) SENSE INTERRUPT Terminate the Seek STATUS command; command 3) READ ID. Verify head is on proper track 4) Issue READ/WRITE command. SE 0 1 1 Table 5-8 Interrupt Identification Interrupt Due To Polling Normal Termination of SEEK or RECALIBRATE command Abnormal Termination of SEEK or 01 RECALIBRATE command IC 11 00 The SEEK, RELATIVE SEEK and the RECALIBRATE commands have no result phase. SENSE INTERRUPT STATUS command must be issued immediately after these commands to terminate them and to provide .verification of the head position (PCN). The H (Head Address) bit in STO will always return a "0". If a SENSE INTERRUPT STATUS is not issued, the drive, will continue to be BUSY and may effect the operation of the next command. The SEEK command does not have a result phase. Therefore, it is highly recommended that the SENSE INTERRUPT STATUS Command be issued after the SEEK command to terminate it and to provide verification of the head position (PCN). The H bit (Head Address) in STO will always return a "0". When exiting POWER DOWN mode, the 82077 clears the PCN value and the status information to zero. Prior to issuing the POWER DOWN command, it is highly recommended that the user service all pending interrupts through the SENSE INTERRUPT STATUS command. 5.2.5 SENSE DRIVE STATUS SENSE DRIVE STATUS obtains drive status information. It has no execution phase and goes directly to the result phase from the command phase. STATUS REGISTER 3 contains the drive status information. 5.2.4 SENSE INTERRUPT STATUS An interrupt signal on INT pin is generated by the 82077 for one of the following reasons: 1. Upon entering the Result Phase of: a. READ DATA Command b. READ TRACK Commanq c. READ ID Command d. READ DELETED DATA Command e. WRITE DATA Command f. FORMAT TRACK Command g. WRITE DELETED DATA Command 2. End of SEEK,RELATIVE SEEK or RECALIBRATE Command 3. 82077 requires a data transfer during the execution phase in the non-DMA Mode 5.2.6 SPECIFY The SPECIFY command sets the initial values for each of the three internal timers. The HUT (Head Unload Time) defines the l time from the end of .the execution phase of one of the read/write commands to the head unload state. The SRT (Step Rate Time) defines the time interval between adjacent step pulses. Note that the spaCing between the first and second step pulses may be shorter than the remaining step pulses. The HLT (Head Load Time) defines the time between the Head Load signal goes high and the read, write operation starts. The values change with the data rate speed selection and are documented in Table 5-9. The values are the same for MFM and FM. The SENSE INTERRUPT STATUS command resets the interrupt signal and via the IC code and SE bit of Status Register 0, identifies the cause of the interrupt. 7-56 82077 { EFIFO-A "1" puts the FIFO into the 8272A compatible mode where the FIFO is disabled. This means data transfers are asked for on a byte by byte basis. Defaults to "1", FIFO disabled. The threshold defaults to one. Table 5-9. Drive Control Delays (ms) HUT SRT 1M 500K 300K 2S0K 1M SOOK 300K 2S0K 0 128 256 1 8 16 " .. E 112 F 120 426 26.7 .. .. 224 240 373 400 512 8.0 32 7.5 16 15 26.7 25 .. .. .. 448 1.0 480 0.5 2 1 3.33 1.67 .. 32 30 .. 4 2 POLL-Disable polling of the drives. Defaults to "0", polling enabled. When enabled, a single interrupt is generated after a RESET. No polling is performed while the drive head is loaded and the head unload delay has not expired. FIFOTHR-The FIFO threshold in the execution phase of read or write commands. This is programmable from 1 to 16 bytes. Defaults to one byte. A "00" selects one byte "OF" selects 16 bytes. HLT 1M SOOK 300K 2S0K 00 01 02 128 1 2 256 2 4 512 4 8 7F 7F 126 127 252 254 426 3.3 6.7 .. 420 423 .. .. .. PRETRK-Pre-compensation start track number. Programmable from track 0 to 255. Defaults to track O. A "00" selects track 0, "FF" selects 255 . 504 508 5.2.8 VERSION The choice of DMA or NON-DMA operations is made by the ND bit. When this bit is "1", the NONDMA mode is selected, and when ND is "0", the DMA mode is selected. In DMA mode, data transfers are signalled by the DRO pin. Non·DMA mode uses the ROM bit and the INT pin to signal data transfers. The VERSION command checks to see if the controller is an enhanced type or the older type (8272AI 765A). A value of 90 H is returned immediately after the command byte and no interrupts are generated. S.2.9 RELATIVE SEEK 5.2.7 CONFIGURE The command is coded the same as for SEEK, except for the MSB of the first byte and the DIR bit. DIR Head Step Direction Control. Issued to select the special features of the 82077. A CONFIGURE command need not be issued if the default values of the 82077 meet the system requirements. . CONFIGURE DEFAULT VALUES: RCN EIS -No Implied Seeks EFIFO -FIFO Disabled POLL -Polling Enabled FIFOTHR -FIFO Threshold Set to 1 Byte PRETRK -Pre-Compensation Set to Track 0 DIR Action 0 1 Step Head Out Step Head In Relative Cylinder Number that determines how many tracks to step the head in or out from the current track number. The RELATIVE SEEK command differs from the SEEK command in that it steps the head the absolute number of tracks specified iri the command instead of making a comparison against an internal register. The SEEK command is good for drives that support a maximum of 256 tracks. RELATIVE SEEKs cannot be overlapped with other RELATIVE SEEKs. Only one RELATIVE SEEK can be active at a time. RELATIVE SEEKs may be overlapped with SEEKs and RECALIBRATEs. Bit 4 of Status Register 0 (EC) will be set if RELATIVE SEEK attempts to step outward beyond Track O. EIS-Enable implied seek. When set to "1", the 82077 will perform a SEEK operation before executing a read or write command. Defaults to no implied seek. 7-57 82077 As an· example, assume' that a floppy drive has 300 useable tracks and that the host needs to read track 300 and the head is on any track (0-255). If a SEEK command was issued,the head would stop at track 255. If a RELATIVE SEEK command was issued, the 82077 would move the head the specified number of tracks, regardless of, the internal cylinder position register (but would increment the register). If the head had been on track 40 (D), the maximum track that the 82077 could position the head on using RELATIVE SEEK, would be 296 (D), the initial track, + 256 (D). The maximum count that the head can be moved with a single RELATIVE SEEK command is 256 (D). To. return to the standard floppy range (0-255) of tracks, a RELATIVE SEEK would be issued to cross the track 255 boundary. ' A RELATIVE SEEK can be used instead of the normal SEEK but the host is required to calculate the difference between ,the current head location and the new (target) head location. This may require the host to issue a READ ID command to ensure that the head is physically on the track that software assumes it to be. Different 82077 commands will return different cylinder results which may be difficult to keep track of with software without the READ ID command. The internal register, PCN, would' overflow as the cylinder number crossed track 255 and would contain 40 (D). The resulting PCN value is thus (NCN + PCN) mod 256. Functionally, the 82077 starts counting from 0 again as the track number goes above 255(D). It is the users responsibility to compensate 82077 functions (precompensation track number) when accessing tracks greater than 255. The 82077 does not keep track that it is working in an "extended track area'~ (greater than 255). Any command issued would use the current PCN value except for the RECAUBRATE command which only looks for the TRACKO signal. RECAUBRATE would return an error if the head was farther than 255 due to its limitation of issuing a maximum 256 step pulses. The user simply needs to issue a second RECAUBRATE command. The SEEK command and implied seeks will function correctly within the 44 (D) track (299255) area of the "extended track area". It is the users responsibility not to issue a new track position that would exceed the maximum track that is present in the extended area. 5.2.10 DUMPREG The DUMPREG command is designed to support system run-time. diagnostics and application soft~ ware development and debug. 5.2.11 PERPENDICULAR MODE COMMAND The PERPENDICuLAR MODE command should be issued prior to executing READ/WRITE/FORMAT commands that access,a disk drive with perpendicuc lar recording capability. With, t~is command, the length of the Gap2 field and VCO enable timing can be altered to accommodate the unique requirements of these drives. Table 5-10 describes the effects of the WGATE and GAP bits for the PERPENDICULAR MODE command. Upon a reset, the 82077 will default to the conventional mode (WGATE = 0, GAP = 0). Table 5-10 Effects of WGATE and GAP Bits WGATE GAP MODE Gap2VCO VCOLow Length of Portion of Gap2 Low Time for Time after Gap2Format Written by Write Data Operation Read Operations Index Pulse Field 0 0 0 Conventional Mode 33 Bytes 22 Bytes o Bytes '24 Bytes 1 Reserved (Conventional) 33 Bytes 22 Bytes o Bytes 24 Bytes 1 ,0 Perpendicular Mode (500 Kbps Data Rate) 33 Bytes 22 Bytes 19 Bytes 24 Bytes 1 1 Perpendicular Mode. ,(1 Mbps Data Rate) 18'Bytes 41 Bytes 38 Bytes 43 Bytes 7-58 inter 82077 (WGATE = 1, GAP = 1), VCOEN goes active after 43 bytes to accommodate the increased Gap2 field size. For both cases, an approximate 2 byte cushion is maintained from the beginning of the sync field for the purposes of avoiding write splices in the presence of motor speed variation. Selection of the 500 Kbps and 1 Mbps perpendicular modes is independent of the actual data rate selected in the Data rate Select Register. The user must ensure that the two data rates remain consistent. The Gap2 and VCO timing requirements for perpendicular recording type drives are dictated by the design of the read/write head. In the design of this head, a pre-erase head precedes the normal read/ write head by a distance of 200 micrometers. This works out to about 38 bytes at a 1 Mbps recording . density. Whenever the write head is enabled by the Write Gate signal the pre-erase head is also activated at the same time. Thus, when the write head is initially turned on, flux transitions recorded on the media for the first 38 bytes will not be preconditioned with the pre-erase head since it has not yet been activated. To accommodate this head activation and deactivation time, the Gap2 field is expanded to a length of 41 bytes. The format field shown in Figure 5-3 illustrates the change in the Gap2 field size for the perpendicular format. For the WRITE DATA case, the 82077 activates Write Gate at the beginning of the sync field under the conventional mode. The controller then writes a new sync field, data address mark, data field, and CRC as shown in Figure 5-1. With the pre-erase head of the perpendicular drive, the write head must be activated in the Gap2 field to insure a proper write of the new sync field. For the 1 Mbps perpendicular mode (WGATE = 1, GAP = 1),38 bytes will be written in the Gap2 space. Since the bit density is proportional to the data rate, 19 bytes will be written in the Gap2 field for the 500 Kbps perpendicular mode (WGATE = 1, GAP = 0). It should be noted that none of the alterations in Gap2 size, VCO timing, or Write Gate timing affect normal program flow. The information provided here is just for background purposes and is not needed for normal operation. Once the PERPENDICULAR MODE command is invoked, 82077 software behavior from the user standpoint is unchanged. On the read back by the 82077, the controller must begin synchronization at the beginning of the Sync field. For the conventional mode, the internal PLL VCO is enabled (VCOEN) approximately 24 bytes from the start of the Gap2 field. But when the controller operates in the 1 Mbps perpendicular mode 6.0 STATUS REGISTER ENCODING The contents of these registers are available only through a command sequence. 6.1 Status Register 0 Bit No. Symbol 7,6 IC Interrupt Code OO-Normal termination of command. The specified command was properly executed and completed without error. 01-Abnormal termination of command. Command execution was started, but was not successfully completed. 10-lnvalid command. The requested command could not be executed. 11-Abnormal termination caused by Polling. 5 SE Seek End The 82077 completed a SEEK or RECALIBRATE command, or a READ or WRITE with implied seek command. 4 EC Equipment Check The TRKO pin failed to become a "1" after: 1. 256 step pulses in the RECALIBRATE command. 2. The RELATIVE SEEK command causes the 82077 to step outward beyond Track o. 3 - - Unused. This bit is always "0". 2 H Head Address The current head address. 1,0 DS1,0 Drive Select The current selected drive. Name Description 7-59 inter 82077 6.2 Status Register 1 Bit No. Symbol 7 EN 6 - 5 DE Data Error The 82077 detected a CRC error in either the 10 field or the data field of a sector. 4 OR Overrun/ Underrun Becomes set if the 82077 does not receive CPU or DMA service within the required time interval, resulting in data overrun or underrun. 3 - 2 NO 1 NW Not Writable WP pin became a "1" while the 82077 is executing a WRITE DATA, WRITE DELETED OATA, or FORMAT TRACK command. 0 MA Missing Address Mark Anyone of the following: 1. The 82077 did not detect an 10 address mark at the specified track after encountering the index pulse from the lOX pin twice. 2. The 82077 cannot detect a data address mark or a deleted data address mark on the specified track. Name End of Cylinder - No Data Description The 82077 tried to access a sector beyond the final sector of the track (2550). Will be set if TC is not issued after Read or Write Data Command. Unused. This bit is always "0". Unused. This bit is always "0". Anyone of the following: 1. READ DATA, READ DELETED DATA command, the 82077 did not find the specified sector. 2. READ 10 command, the 82077 cannot read the 10 field without an error. 3. READ TRACK command, the 82077 cannot find the proper sector sequence. 7-60 intJ 82077 6.3 Status Register 2 Bit No. Symbol 7 - - 6 CM Control Mark Anyone of the following: 1. READ DATA command, the 82077 encounters a deleted data address mark. 2. READ DELETED DATA command, the 82077 encounters a data address mark. 5 DD Data Error in Data Field. The 82077 detected a CRC error in the data field. 4 WC Wrong Cylinder The track address from the sector ID field is different from the track address maintained inside the 82077. 3 2 - 1 BC Bad Cylinder The track address from the sector ID field is different from the track address maintained inside the 82077 and is equal to FF hex which indicates a bad track with a hard error according to the IBM soft-sectored format. 0 MD Missing Data Address Mark The 82077 cannot detect a data address mark or a deleted data address mark. Name - Description Unused. This bit is always "0". Unused. This bit is always "0". Unused. This bit is always "0". 6.4 Status Register 3 Bit No. Symbol Description Name 7 - 6 WP 5 - 4 TO 3 - - 2 HD Head Address Indicates the status of the HDSEL pin. 1,0 DS1,0 Drive Select Indicates the status of the DS1, DSO pins. Write Protected TRACK 0 Unused. This bit is always "0". Indicates the status of the WP pin. Unused. This bit is always "1 ". Indicates the status of the TRKO pin. Unused. This bit is always "1 ". default to a PS/2 or PC/AT compatible operating mode depending on how IDENT is strapped. 7.0 COMPATIBILITY The 82077 was designed with software compatibility in mi'nd. It is a fully backwards compatible solution with the older generation 8272A and NEC765A1B disk controllers. The 82077 also implements onboard registers for compatibility with the Personal System/2 as well as PC/AT and PC/XT floppy disk controller subsystems. Upon a hardware reset of the 82077, all registers, functions and enhancements 7.1 Register Set Compatibility The register set contained within the 82077 is a culmination of hardware registers based on the architectural growth of the IBM personal computer line. Table 7-1 indicates the registers required for compatibility based on the type of computer. 7-61 inter 82077 If the DMAGATE # bit is written to a "0" in the Digital Output Register (DOR), DRO and INT will tristate. If DMAGATE# is written to a "1", then DRO and INT will be driven appropriately by the· 82077. Table 7-1. 82077 Register Support 82077 Register 8272A 82072 PC/XT PC/AT PS/2 SRA X SRB X DOR MSR X X X X X ·X TC is an active high inpuf signal that is internally qualified by DACK# being active low. 7.3 Compatibility with the FIFO X DSR Data (FIFO) X X X X X DIR CCR X· X X X X X X 'eCR is emulated by DSR in an 82072 PC/AT design. 7.2 PS/2 Mode vs; AT Mode To maintain compatibility with both the PS/2 envi· ronment and PC/AT environment the IDENT pin is provided. If this pin is strapped to. VSS, the 82077 will operate in the PS/2 compatible mode. Strapping IDENT to VCC places the 82077 in the PC/AT com- . patible mode. The differences between the two modes are described in the following sections. 7.2.1 PS/2 MODE The polarity of the DENSEL output Signal is designed to be compatible with the 3%" disk drive standard. Programming the CCR or DSR to the upper data rates of 500 Kbps or 1 Mbps ~iII cause DENSEL to go active low (assuming INVERT# is low). A comprehensive description of the. DENSEL behavior is given in Table 2-6. The FIFO of the 82077 is designed to be transparent to non-FIFO disk controller software developed on the older generation 8272A standard. Operation of the 82077 FIFO can be broken down into two tiers of compatibility. For first tier compatibility, the FIFO is left in the default disabled condition upon a reset. In this mode the FIFO operates in a byte mode and provides completa compability with non-FIFO based software. For second tier compatibility, the FIFO is enabled via the CONFIGURE command. When the FIFO is enabled, it will temporarily enter a byte mode during the command and result phase of disk controller operation. This allows for compatible operation when interrogating the Main Status Register (MSR) for the purpose of transferring a byte at a . time to or from the disk controller. For normal disk controller applications, the system designer can still take advantage of the FIFO for time critical data transfers during the execution phase and not create any conflicts with non-FIFO software during the command or result phase. . In some instances, use of the FIFO in any form has conflicted with certain specialized software. An example of a compatibility conflict using the FIFO is with software that monitors the progress of a data transfer during the execution phase. If the software assumed the disk controller was operating in a single byte mode and counted the number of bytes transferred to or from the disk controller to trigger some time dependent event on the disk media (Le. head position over a specific data field), the same software will not have an identical time relationship if the FIFO is enabled. This is because the FIFO allows data to be. queued up, and then burst transferred across the host bus. To accommodate software of this type, it is recommended that the FIFO be disabled. The DMAGATE # bit in the Digital Output Register (DOR) will not cause the DRO or I/\IT output signals to tristate. This maintains consistency with the operation of the floppy disk controller subsystem in the PS/2 architecture. TC is an active low input signal that is internally qualified by DACK # being active .Iow. 7.2.2 PC/AT MODE The polarity of DENSEL is designed to be compatible with the 5%" high capacity disk drive standard. Programming the CCR or DSR to the lower data rate of 250 Kbps or 300 Kbps will cause DENSEL to go active low (assuming INVERT# is low). 7-62 inter 82077 7.4 Drive POlling 8.0 PROGRAMMING GUIDELINES The 82077 supports the polling mode of the older generation 8272A. This mode is enabled upon a reset and can be disabled via the CONFIGURE command. This mode is supported for the sole purpose of providing backwards compatibility with software that expects it's presence. Programming the 82077 is identical to any other 8272A compatible disk controller with the exception of some additional commands. For the new designer it is useful to provide some guidelines on how to program the 82077. A typical disk operation involves more than issuing a command and waiting for the results. The control of the floppy disk drive is a low level operation that requires software intervention at different stages. New commands and features have been added to the 82077 to reduce the complexity of this software interface .. The intended purpose of drive polling dates back to 8" drives as a means to monitor any change in status for each disk drive present in the system. Each of the drives is selected for a period of time and its READY signal sampled. After a delay, the next drive is selected. Since the 82077 does not support READY in this capacity (internally tied true), the polling sequence is only simulated and does not affect the drive select lines (DSO-DS3) when it is active. If enabled, it occurs whenever the 82077 is waiting for a command or during SEEKs and RECALIBRATEs (but not IMPLIED SEEKs). Each drive is assumed to be not ready after a reset and a "ready" value for each drive is saved in an internal register as the simulated drive is polled. An interrupt will be generated on the first pOlling loop because of the initial '.'not ready" status. This interrupt must be followed with a SENSE INTERRUPT STATUS command from the host to clear the interrupt condition for each of the four logical drives. 8.1 Command and Result Phase Handshaking Before a command or parameter byte can be issued to the 82077, the Main Status Register (MSR) must be interrogated for a ready status and proper FIFO direction. A typical floppy controller device driver should contain a subroutine for sending command or parameter bytes. For this discussion, the routine will be called "SenLbyte" with the flowchart shown in Figure 8-1. 290166-22 Figure 8-1. SenLByte Routine .7-63 infef 82077 The routine loops until ROM is 1 and 010 is 0 indicating a ready status and FIFO direction is inward. If this condition is true, the 82077 is ready to accept a command or parameter byte. A timeout counter is used to insure software response within a reasonable amount of time in case of no response by the 82077. As a note, the programmer must be careful how the maximum delay is chosen to avoid unnecessary timeouts. For example, if a new command is issued when the 82077 is in the middle of a pOlling routine, the MSR will not indicate a ready status for the next parameter byte until the polling sequence completes the loop. This could cause a delay between the first and second bytes of up to 250 p.s (@ 250 Kbps). If polling is disabled, this maximum delay is 175 p.s. There should also be enough time- . out margin to accommodate a shift of the software to a higher speed system. A timeout value that results in satisfactory operation on a 16 MHz CPU might fail when the software is moved to a system with a 25 MHz CPU. A recommended solution is to derive the timeout counter from a system hardware counter that is fixed in frequency from CPU clock to CPU clock. For reading result bytes from the 82077, a similar routine is used. Figure 8-2 illustrates the flowchart for the routine "GeLbyte". The MSR is polled until ROM is 1 and 010 is 1, which indicates a ready status and outward FIFO direction. At this point, the host can read a byte from the FIFO. As in the Send_byte routine, a timout counter should be incorporated in case of a disk controller lock-up condition. For example, if a disk was not inserted into the disk drive at the time of a read operation, the controller would fail to receive the index pulse and lockup since the index pulses are required for termination of the execution phase. 8.2 Initialization Initializing the 82077 involves setting up the appropriate configuration after a reset. Parameters set by the SPECIFY command are undefined after a reset and will need to be reinitialized. CONFIGURE command parameters default to a known state after a reset but will need to be reinitialized if the system requirements are different from the default settings. The flowchart for the recommended initialization sequence of the 82077 is shown in Figure 8-3. 290166-23 Figure 8-2. GeLByte Routine 7-64. inter 82077 290166-24 Figure 8-3. Initialization Flowchart 7-65 inter 82077 Following a reset of the 82077, the Configuration Control Register (CCR) should be reinitialized for the appropriate data rate. An external reset via the RESET pin will cause the data rate and write precompensation values to default to 250 Kbps (10b) and 125 ns (OOOb) respectively. Since the 125 ns write precompensation value is optimal for the 5%" and 3%" disk drive environment, most applications will not require the value to be changed in the initialization sequence. As a note, a software reset issued via the DOR or DSR will not affect the data rate or write precompensation values. But it is recommended as a safe programming practice to always program the data rate after a reset, regardless of the type. The CONFIGURE command should also be issued if the system requirements are different from the default settings (as described in Section 5.2.7). For example, the CONFIGURE command can be used to enable the FIFO, set the threshold, and enable Implied Seeks. The non-DMA mode flag, step rate (SRT), head load (HLT), and head unload times (HUT) programmed by the SPECIFY command do not default to a known state after a reset. This behavior is consistent with the 8272A and has been preserved here for compatibility.Thus, it is necessary to always issue a SPECIFY command in the initialization routine. Since polling is enabled after a reset of the 82077, four SENSE INTERRUPT STATUS commands need to be issued afterwards to clear the status flags for each drive. When issuing a SENSE INTERRUPT STATUS command when no active interrupt condition is present, the status register STO will return a value of 80H (invalid command). The flowchart in Figure 8-3 illustrates how the software clears each of the four interrupt status flags internally queued by the 82077. It should be noted that although four SENSE INTERRUPT STATUS commands are issued, the INT pin is only active until the first SENSE INTERRUPT STATUS command is executed. 8.3 Recalibrates and Seeks Commands that position the disk head are different from the typical READ/WRITE/FORMAT command in the sense that there is no result phase. Once a RECALIBRATE, SEEK, or RELATIVE SEEK command has been issued, the 82077 will return a ready status in the Main Status Register (MSR) and perform the head positioning operation as a background task. When the seek is complete, the 82077 will assert the INT signal to request service. A SENSE INTERRUPT STATUS command should then be asserted to clear the interrupt and read the status. of the operation. Since the drive and motor enable signals are directly controlled through the Digital Output Register (DOR) on the 82077, a write to the DOR will need to precede the RECALIBRATE or SEEK command if the drive and motor is not already enabled. Figure 8-4 shows the flow chart for this operation. As a note, if the CONFIGURE command is issued within 250 p.s of the trailing edge of reset (@ 1 Mbps), the polling mode of the 82077 can be disabled before the polling initiated interrupt occurs. Since polling stops when the 82077 enters the command phase, it is only time critical up to the first byte of the CONFIGURE command. If disabled in time, the system software no longer needs to issue the four SENSE INTERRUPT STATUS commands to clear the internal interrupt flags normally caused by polling. 7-66 82077 SEEK FAILURE 290166-25 Figure 8-4. Recalibrate and Seek Operations 7-67 inter 82077 If implied seeks are not enabled, the disk drive head must be positioned over the correct cylinder by executing a SEEK command. After the seek is complete, a head settling time needs to be asserted before the read or write operation begins. For most drives, this delay should be a minimum of 15 ms. When using implied seeks, the minimum head settling time can b~ enforced by the head load time (HLT) parameter designated in the SPECIFY command. For example, a HLT value of 8 will yield an effective head settling time of 16 ms for a programmeddata rate of 500 Kbps. Of course if the head is already positioned over the correct cylinder, the head settling time does not need to be enforced. 8.4 Read/Write Data Operations A read or write data operation requires several steps to complete successfully. The motor needs to be turned on, the head positioned to the correct cylinder, the DMA controller initialized, the read or write command initiated, arid an error recovery scheme implemented. The flowchart in Figure 8-5 highlights a recommended algorithm for performing a read or write data operation. Before data can be transferred to or from the diskette, the disk drive motor must be brought up to speed. For most 3%" disk drives, the spin-up time is 300 ms, while the 5%" drive usually requires about 500 ms due to the increased moment of inertia associated with the larger diameter diskette. The DMA controller is then initialized for the data transfer and the read or write command is executed. Typically the DMA controller will assert Terminal Count (TC) when the data transfer is complete. The 82077 will then. complete the current data transfer and assert the INT signal signifying it has entered the result phase. The result phase can also be entered by the 82077 if an error is encountered or the last sector number equals the End of Track (EaT) parameter'. . One technique for minimizing the motor spin-up delay in the read data case is to begin the read operation immediately after the motor is turned on. When the motor is not initially up to speed, the internal data separator will fail to lock onto the incoming data stream and report a failure in the status registers. The read operation is then repeated until successful status is obtained. There is no risk of a data integrity problem since the data field is CRC validated. But, it is not recommended to use this technique for the write data operation even though it requires successful reading of the ID field before the write takes place. The data separator performance of the 82077 is such that locking to the data stream could take place while the motor speed variation is still significant. This could result in errors when an attempt is made to read the disk media by other disk controllers that have a narrower incoming data stream frequency bandwidth. Based on the algorithm in Figure B-5, if an error is encountered after reading the result bytes, two more retries are performed by reinitializing the DMA controller and r.e-issuing the read or w~ite data command. A persisting failure could indicate the seek operation did not achieve proper alignment between the head and the track. The disk head should then be recalibrated and the' seek repeated for a maximum of two more tries. Unsuccessful operation after this point should be reported as a disk failure to the . operating system. After the motor has been turned on, the matching data rate for the media inserted into the disk drive should then be programmed to the 82077 via the Configuration Control Register (CCR). The 82077 is designed to allow a diff~rent data rate to be programmed arbitrarily without disrupting the integrity of the device. In some applications, it is required to automatically determine the recorded data rate of the inserted media. One technique for dOing this is to perform a READ ID operation at each available data rate until a successful status is returned in the result phase. 8.5 Formatting The disk' formatting procedure involves positioning the head on each track and creating a fixed format field used for organizing the data fields. The flowchart in Figure 8-6 highlights the typical format procedure. 7-68 82077 290166-26 Figure 8-5. Read/Write Operation 7-69 82077 SEEK TO NEXT CYLINDER FOC TIMEOUT ERROR 290166-27 Figure 8·6 Formatting 7-70 inter 82077 After the motor has been turned on and the correct data rate programmed, the disk head is recalibrated to track O. The disk is then allowed to come up to speed via a 500 ms delay. It is important the disk speed has stabilized before the actual formatting to avoid any data rate frequency variations. Since the format fields contain critical information used by the data separator of the disk controller for synchronization purposes, frequency stability of the data stream is imperative for media interchangeability among different systems. The 10 field data created on the disk during the format process is provided by the DMA controller during the execution phase. The DMA controller is initialized to send the C, H, Rand N values for each sector 10 field. For example, to format cylinder 7, on head 1, with 9 sectors, and a sector size of 2 (512 bytes), the DMA controller should be programmed to transfer 36 bytes (9 sectors x 4 bytes per sector) with the following data field: 7,1,1,2, 7,1,2,2, 7,1,3,2, ... 7,1,9,2. Since the values provided to the 82077 during the execution phase of the format command are directly recorded as the 10 fields on the disk, the data contents can be arbitrary. Some forms of copy protection have been implemented by taking advantage of this capability. operation. The 82077 supports this older verify technique, but also provides a new VERIFY command that does not require the use of the DMA controller. To verify a write data transfer or format track operation using the VERIFY command, the software simply issues the command with the same format as a READ DATA command but without the support of the DMA controller. The 82077 will then perform a disk read operation without a host data transfer. The CRC will be calculated for each sector read and compared against the value stored on the disk. When the VERIFY command is complete, the status register will report any detected CRG errors. If EOT is programmed for the final sector number of the track, and the multi-track (MT) bit is set, then both heads can be checked with one VERIFY command. 9.0 DESIGN APPLICATIONS 9.1 PCI AT Floppy Disk Controller This section presents a design application of a PCI AT compatible floppy disk controller. With an 82077, a 24 MHz crystal, a resistor package, and a device chip select, a complete floppy disk controller can be built. The 82077 integrates all the necessary building blocks for a reliable and low cost solution. But before we discuss the design application using the 82077, it is helpful to describe the architecture. of the ciriginallBM PCI ATfloppy disk controller design that uses the 8272A. After each head for a cylinder has been formatted, a seek operation to the next cylinder is performed and the format process is repeated. Since the FORMAT TRACK command does not have implied seek capability, the SEEK command must be used. Also, as discussed in Section 8-2, the head settling time needs to be adhered to after each seek operation. 9.1.1 PC/AT FLOPPY DISK CONTROLLER ARCHITECTURE 8.6 Verifies The standard IBM PCI AT floppy disk controller using the 8272A requires 34 devices for a complete solution. The block diagram in Figure 9-1 illustrates the complexity of the disk controller. A major portion of this logic involves the design of the data separator. The reliability of the disk. controller is primarily dictated by the performance and stability of the data separator. Discrete board level analog phase lock loops generally offer good bit jitter margins but suffer from instability and tuning problems in the manufacturing stage if not carefully designed. While digital data separator designs offer stability and generally a lower chip count, they suffer from poor performance in the recovery of data. In some applications, the sector data needs to be verified immediately after each write operation. The verify technique historically used with the 8272A or 82072 disk controller involved reinitializing the DMA controller to perform a read transfer or verify transfer (DACK# is asserted but not RD#) immediately after each write operation. A read command is then to be issued to the disk controller and the resulting status indicates if the CRG validated the previously written data. This technique has the drawback of requiring additional software intervention by having to reprogram the DMA controller between each sector write 7-71 intJ 82077 DIR buffer ~ l' PC Bus Disk Interface r-- r-Decode logic - DOR latch ~ ..... ... ~. + ~ r--- .. 8272A ...• .. '" .. r Buffer --- Buffers ..., ... • '" '" -.to r "'-- r----. '" r _ Control ... Data ...... '" Address .. '--r-- Buffers Write precomp logic I- ~ I-r: Data separator t. ~ '-- I.t ... ,'" I......t DSR latch I.--...f . '"- Buffers Request '-- J i4' Clock prescale logic i4'- t 290166-28 Figure 9-1. Standard IBM PCI AT Floppy Disk Controller Table 9-1 indicates the drive and media types the IBM PC/AT disk controller can support. This requires the data separator to operate at three different data rates: 250 Kbps. 300 Kbps and 500 Kbps. Clocks to the data separator and disk controller need to be prescaled correspondingly to accommodate each of these data rates. The clock prescaling is controlled by the Data rate Select Register (DSR). Supporting all three data rates can compromise the performance of the phase lock loop (PLL) if steps are not taken in the design to adjust the performance parameters of the PLL with the data rate. Table 9-1. Standard PCIAT Drives and Media Formats Capacity Drive Speed. Data Rate 360 Kbyte 300 RPM 250 Kbps ·360 Kbyte 360 RPM 300 Kbps 1.2 Mbyte 360 RPM 500 Kbps Sectors Cylinders 9 9 15 '360 Kbyte diskette In a 1.2 Mbyte drive. 7-72 40 40 80 82077 The PCI AT disk controller provides direct control of the drive selects and motors via the Digital Output Register (DOR). As a result, drive selects on the 8272A are not utilized. This places drive selection and motor speed-up control responsibility with the software. The DOR is also used to perform a software reset of the disk controller and tristate the DR02 and IR06 output signals on the PC bus. 9.1.282077 PCIAT SOLUTION The 82077 integrates the entire PCI AT controller design with the exception of the address decode on a single chip. The schematic for this solution is shown in Figure 9-2. The chip select for the 82077 is generated by a 16L8 PAL that is programmed to decode addresses 03FOH thru 03F7H when AEN (Address Enable) is low. The programming equation for the PAL is shown in a ABEL file format in Figure 9~3. An alternative address decode solution could be provided by using a 74LS133 13 input NAND gate and 74LS04 inverter to decode A3-A14 and AEN. Although the PCI AT allows for a 64K 1/0 address space, decoding down to a 32K 1/0 address space is sufficient with the existing base of add-in cards. The design of the disk controller also requires address decode logic for the disk controller and register set, buffering for both the disk interface and PC bus, support for write precompensation and monitoring of the disk change signal via a separate read only register (DIR). An 1/0 address map of the complete register set for the PCI AT floppy disk controller is shown in Table 9-2. A direct connection between the disk interface and the 82077 is provided by on-chip output buffers with a 40 mA sink capability. Open collector outputs from the disk drive are terminated at the disk controller with a 1500. resistor pack. The 82077 disk interface inputs contain a schmitt trigger input structure for higher noise immunity. The host interface is a similar direct connection with 12 mA sink capabilities on DBO-DB7, INT and ORO. Table 9-2.110 Address Map for the PCIAT 110 Address 3FOH 3F1H 3F2H 3F3H 3F4H 3F5H 3F6H 3F7H 3F7H Access Type - - Write Read Read/Write Write Read Description Unused Unused Digital Output Register Unused Main Status Register Data Register Unused Data Rate Select Register Digital Input Register 7-73 ,...-SAl 5.. SA5 SA6 SA7 SA10 SAl1 SA12 ""c iil r!!- •5 r!l16 8 • ~ 16L8 15 ~ fll12 ~-l SA''} SA14 SA15 AEN ~ DC.2 ~ SAO co 2 7 SA' i!i . 6 SA8 l +5V 1-~ lORD IOWR 5X 150.0. ., . m~ll Jltol:gl ::l1:P~1 ~I .. IIJ. SAl -.j 'V '0 -.j ~ ...... ~ ~ "g "g '< c iii" ;I; oo a 10 11 :0 SAl ~ fi SDO SDI '" '" IVI ltl:jO I:":: U 0 g""'!OJ ~ a.. IItN > :g ~ IX ~ ~ ~ ~ 0 N >UI ~ ~ lli I~ SO< 17 SD5 SD6 SD7 I vf. . 23 rRQ6 ORQ2 RST 5 I :CC ~ 5' ,I STEP 55 Vss DB" Vee 82077 WRDATA. WE DBS HOSEL OB6 .VSS Vss DENSEL OB7 WFY ~ 00 ORO AVec ~ E o Q N ~ 1~1~1S; 0: ;; Iii: I:;; ~ :; :! ~ ~ C) _ X N X ~ =...1 :a:s ~ >...1 ~ g B8 > > % 0: AVss u oNe Z Z INDEX 10 MEA 12 DSs ~ 16 MES 18 DiR 20 STEP 22 WDATA 5' 24 ~ 51 26 TRKOO 28 wp 30 RDATA 32 HDSEL ~I ~ F- ~ ~ ~ :::t "- orR VSS NC 8 D~~ Fs;v MEO ~ 56 Vss DBt 25 26 Te lOX· TC .!. jg w ~ 15 083 SD. - 0( 14 082 SD2 2- if ° >Vt 2 -;;;:- ~ NC 34 ./ WE - 34 PIN 0 (odd pins ~ (§ ~ ~ DSKCG @ IiiiiJ 'FACE lunded)- ~ c:::> ~ "" !;'l'l'I"" .." .." .." !OJ .." .." .." ..". 'iii! •• @ 2:eJ ~ .OO5p.F 22 r .p JH' 22~ ~ e::J c:::> ------- 290166-29 © ~ inter 82077 MODULE PCAT077_LOGIC; TITLE "82077 PC/AT FLOPPY DISK CONTROLLER' ; PCAT077 DEVICE "PI6L8'; GND,VCC SA3,SA4,SA5,SA6,SA7,SA8,SA9,SAI0 SAll,SAI2,SAI3,SAI4,SAI5,AEN CS077_ PIN PIN PIN PIN 10,20; 1,2,3,4,5,6,7,8; 9,11,13,14,15,16; 12; EQUATIONS "" CHIP SELECT FOR THE 82077 (3FOH -- 3F7H) CS077_ = !( !SAI5 & !SAI4 & !SAI3 & !SAI2 & !SAll & !SAI0 & SA9 & SA8 & SA7 & SA6 & SA5 & SA4 & !SA3 & !AEN); END PCAT077_LOGIC Figure 9-3. PAL Equation File for a PCI AT Compatible FDC Board 9.2.1 3.5" DRIVES UNDER THE AT MODE of the disk drive will drive both high or low voltage levels when the drive is selected, and float only when the drive has been deselected. These totem pole outputs generally can only sink or source 4 mA of current. As a result, it is recommended to replace the 1500 termination resistor pack with a 4.7 KO package to pull floating signals inactive. Some other 3.5" drives do have an open collector interface, but have limited sink capability. In these cases, the drive manufacturer manuals usually suggest a 1 KO termination. If it is intended to interface the floppy disk controller with a 3.5" disk drive in a PCI AT application, then it is likely that two design changes will need to be implemented for the design discussed in Section 9.1. Most 3.5" disk drives incorporate a totem pole interface structure as opposed to open collector. Outputs The second change required under "AT mode" operation involves high capacity 3.5" disk drives that utilize a density select signal to switch between media recorded at a 250 Kbps and 500 Kbps data rate. The polarity of this signal is inverted for 3.5" drives versus 5.25" drives. Thus, an inverter will need to 9.2 3.5" Drive Interfacing The 82077 is designed to interface to both 3.5" and 5.25" disk drives. This is facilitated by the 82077 by orienting the "PS/2 mode" for 3.5" drives and the "AT mode" for 5.25" drives. But at the same time, this does not inhibit the use of the two types of drives in the opposite mode. 7-75 intJ 82077 be added between the OENSEL output of the 82077 and the disk drive interface connector when using 3.5" drives. But drives that do not support both data rates or drives with an automatic density detection feature via an optical sensor do not require the use of the OENSEL signal. termination resistor pack required by 5.25" drives cannot be used with the 3.5" drive. To accommodate both drives with the same disk controller, the outputs of the 3.5" drive should be buffered before connecting to the 82077 disk interface inputs. The 82077 inputs are then connected to the necessary resistive termination load for the 5.25" interface. 9.2.2 3.5" DRIVES UNDER THE PS/2 MODE The block diagram in Figure 9-4 highlights how a combined interface could be designed. In this example, the 5.25" drive is connected to drive select 0 (OSO) and the 3.5" drive is connected to drive select 1 (OS1). OS1 is also used to enable a 74LS244 buffer on the output signals of the 3.5" drive. The drive select logic of the 82077 is mutually exclusive and prevents the activation of the buffer and 5.25" drive at the same time. Since the 74LS244 has an IOL of 24 mA, the termination resistor should be increased to 220!l. This could impact the reliability of the 5.25" drive interface if the cable lengths are greater than 5 feet. Interfacing 3.5" disk drive under the "PS/2 mode" of the 82077 has been simplified. The OENSEL output signal polarity will reflect a 3.5" drive mode of operation. That is, OENSEL will be high for 250 Kbps or 300 Kbps and low for 500 Kbps or 1 Mbps (assuming INVERT# is low). Thus the only change from the disk interface shown in Figure 9-2 is to replace the 150!l termination resistor pack with a value of about 10 K!l. This will prevent excessive current consumption on the CMOS inputs of the 82077 by pulling them inactive when the drivels) are deselected. To accommodate the polarity reversal of the OENSEL signal for 3.5" drives, it is routed through an inverter for the 3.5" drive interface. A 1 K!l pull-up should be placed on the output of the inverter to satisfy the IOH requirements for the 3.5" drive when using a 74LS04. 9.2.3 COMBINING 5.25" AND 3.5" DRIVES If 5.25" and 3.5" drives are to be combined in a design, then steps need to be taken to avoid contention problems on the. disk interface. Since 3.5" drives do not have a large sink capability, the 150!l \41----.. 220.0. R-pock INPUTS DENSEL OUTPUTSI-----+--t-t DSO~--------~--~ DS1~--------~--_r-- __--~----------~ INVERT 74LS244 290166-30 Figure 9-4. Combined 3.5" and 5.25" Drive Interface 7-76 82077 • Notice: Stresses above those listed under '~bso lute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. 10.0 D.C. SPECIFICATIONS 10.1 Absolute Maximum Ratings Storage Temperature .......... -65°C to + 150°C Supply Voltage ................... - 0.5 to + 8.0V Voltage on Any Input ........... GND - 2V to 6.5V Voltage on Any Output .. GND - 0.5V to VCC + 0.5V NOTICE Specifications contained within the fol/owing tables are subject to change. Power Dissipation ........................ 1 Watt 10.2 D.C. Characteristics TA = O°C to = 70°C, Vcc = +5V ±10%, Vss = AVss = OV Symbol VILC Parameter Input Low Voltage, X1 Min Max Unit -0.5 0.8 V Test Conditions VIHC Input High Voltage, X1 3.9 Vcc +0.5 V VIL Input Low Voltage (all pins except X1) -0.5 0.8 V VIH Input High Voltage (all pins except X1) 2.0 VCC +0~5 V VOL Output Low Voltage DRATEO-1 and MFM 0.4 V IOL = 2.5mA DBO-7, INT and DRO 0.4 V IOL = 12 mA MEO-3, DSO-3, DIR, STP WRDATA, WE, HDSEL and DENSEL 0.4 V IOL = 40mA VOH Output High Voltage DRATEO-1 and MFM 3.0 V IOH = -2.5mA All Other Outputs 3.0 V IOH = -4.0mA Vcc - 0.4 V IOH = -100 /-LA All Outputs ICC1 ICC2 ICC3 ICC4 Vcc Supply Current (Total) 1 Mbps Data Rate, VIL = Vss, VIH = Vcc 1 Mbps Data Rate, VIL = 0.45, VIH = 2.4 500 Kbps Data Rate, VIL = Vcc, VIH = Vcc 500 Kbps Data Rate, VIL = 0.45, VIH = 2.4 45 50 35 40 mA mA mA mA (Notes (Notes (Notes (Notes Iccss Icc in Powerdown 1.5 mA (Note 3) Typical IlL Input Load Current (all input pins) 10 -10 /-LA /-LA VIN = Vcc VIN = OV IOFL Data Bus Output Float Leakage ±10 /-LA 0.45 tt"~'''.( ")C I~ rCload VSS Cload 0.8 0.45 08 290166-8 290166-7 = 50 pF for aI/logic outputs, 100 pF for the. data bus. 11.0 A.C. SPECIFICATIONS = O°C to 70°C, Vce = +5V ±10%, VSS = TA Symbol AVSS = Parameter OV Min Max Unit 10 ns CLOCK TIMINGS t1 Clock Rise Time Clock Fall Time t2 Clock High Time(7) 10 ns 16 26 ns t3 Clock Low Time(7) 16 26 ns t4 Clock Period 40 43 ns t5 Internal Clock Period(3) HOST READ CYCLES t7 Address Setup to RD t8 RD Pulse Width t9 Address Hold from RD t10 Data Valid from RD 5 ns 100 ns 0 ns 80 (1S 60 ns t11 Command Inactive t12 Output Float Delay 35 ns t13 INT Delay from RD t5 + 125 ns t14 Data Hold from RD 5 7-78 ns inter 82077 A.C. SPECIFICATIONS (Continued) = +5V ±10%, VSS = TA = O°C to 70°C, Vee Symbol AVSS = Parameter OV Min Max Unit HOST WRITE CYCLES t15 .Address Setup to WR t16 WR Pulse Width 5 ns 100 ns t17 Address Hold from WR 0 ns t18 Command Inactive 60 ns t19 Data Setup to WR 70 ns t20 Data Hold from WR 0 ns t21 INT Delay from WR t5 + 125 ns DMACYCLES t22 DRO Cycle Period(1) t23 DACK to DRO Inactive(1) t24 RD to DRO Inactive(4) t25 DACK Setup to RD, WR 5 t26 DACK Hold from RD, WR 0 t27 DRO to RD, WR Active(1) 0 t28 Terminal Count Width(10) 50 t29 TC to DRO Inactive 6.5 fJ-s 75 100 ns ns ns ns 6 fJ-s ns 150 ns RESET t30 Reset Width(5) t31 Reset to Control Inactive t4 170 2 fJ-s WRITE DATA TIMING t32 Write Data Width(6) ns DRIVE CONTROL t35 DIR Setup to STEP 0.5 2 t36 DIR Hold from STEP 10 fJ-s t37 STEP Active Time (High) 2.5 fJ-s t38 STEP Cycle Time(2) t39 INDEX Pulse Width fJ-s fJ-s 5 7-79 t5 Intel 82077 A.C. SPECIFICATIONS (Continued) TA = 0·Cto70·C, Vcc = +5V ±10%, Vss Symbol = AVss = OV Parameter Min t40 Read Data Pulse Width 50 144 Pll Data Rate 82077-1 Max Unit 1M bitls 500K bitls 64 t44 READ DATA TIMING 82077 t44 Data Rate Period 11144 tlOCK lockup Time ns NOTES: 1. This timing is for FIFO threshold = 1. When FIFO threshold is N bytes, the value should be multiplied by N and subtract 1.5 /Ls. The value shown is for 1 Mbps, scales linearly with data rate. 2. This value can range from 0.5 ms to 8.0 ms and is dependent upon data rate and the Specify command value. 3. Many timings are a function of the selected data rate. The nominal values for the internal clock period (t5) for the various data rates are: 1 Mbps 500 Kbps 300 Kbps 250 Kbps 3 x oscillator period 6 x oscillator period 10 x oscillator period 12 x oscillator period = = = = 125 250 420 !:i00 ns ns ns ns 4. If DACK transitions before RD, then this specification is ignored. If there is no transition on DACK, then this becomes the DRO inactive delay. 5. Reset requires a stable oscillator to meet the minimum active period. 6. Based on the internal clock period (15). For various data rates, the Write Data Width minimum values are: 1 Mbps 500 Kbps 300 Kbps 250 Kbps 3 x oscillator period 6 x oscillator period 10 x oscillator period 12 x oscillator period - 50 - 50 -50 -50 ns ns ns ns = 150 = 360 = 615 = 740 ns ns ns ns 7. Test points for clock high time are 3.5V. Due to transitional times, clock high time max and clock low time max cannot be met simultaneously. Clock high time min and clock low time max cannot be met simultaneously. 8. Based on internal clock period (t5). 9. Jitter tolerance is defined as: Maximum bit shift from nominal position X 100% 1/4 period of nominal data rate . It is a measure of the allowable bit jitter that may be present and still be correctly detected. The data separator jitter tolerance is measured under dynamic conditions that jitters the bit stream according to a reverse precompensation algorithm. 10. TC width is defined as the time that both TC and DACK are active. 7-80 82077 CLOCK TIMINGS 290166-9 HOST READ CYCLES AO,CS, DACK t7- ~-------t8--------~ t10 RD DATA --------<1 INT 290166-10 7-81 82077 HOST WRITE CYCLES AO.CS. DACK 1 - - - - - \16 - - - - - I 1----\19 ----+-1 DATA INT 290166-11 DMA CYCLES 1--------\22---------1 ORO 1 - - - - \23 - - - - - - - I RD. WR 290166-12 TERMINAL COUNT 290166-13 7-82 inter 82077 RESET J;=t30~ RESET ~ _ _ _ _ _ _ _ _ _ __ ''''1 ORO. INT. WE 290166-14 WRITE DATA TIMING WRDATA 290166-15 NOTE: Invert high. DRIVE CONTROL >C DSO.1=><:_ _ _ _ -----u.f<-- DIR STEP INDEX ~ ----~ ~t39~ ~-------------290166-16 NOTE: For overlapped seeks. only one step pulse per drive selection is issued. Non-overlapped seeks will issue all programmed step pulses. Invert high. 7-83 inter 82077 INTERNAL PLL ,~,. --D1+-t4-0--.-~_t_44_-_-_-_-_-_-_--~--l .... 290166-17 NOTE: Invert high. 12.0 DATA SEPARATOR CHARACTERISTICS .---------------~ 100 90 80 70 60 50 40 30 20 10 0 235240 245 250 255 260 265 ... ...'" ~ ...'" 0 r-- z -< ..J I: .., 100 90 80 70 60 50 40 30 20 10 - - r- I-.. o 280285 290 295 300 305 310315320 DATA RATE (Kbps) DATA RATE (kpbs) 290166-18 290166-19 Figure 12-1. Typical Jitter Tolerance vs Data Rate (Fe = 250 Kbps) ... z ...~ ~ ...'" 0 ..J I: .., 100 90 80 70 60 50 40 30 20 10 Figure .12-2. Typical Jitter Tolerance vs Data Rate (Fe = 300 Kbps) ... z ...'"-< ~ ...'" ~ 0 ..J I: .., o 100 90 80 70 60 50 40 30 20 10 r-'" v ......Ir- ,v o 470480 490 500 510 520 530 940 960 980 100010201040 1060 DATA RATE (kbps) DATA RATE (kbps) 290166-20 290166-21 Figure 12-3. Typical Jitter Tolerance vs Data Rate (Fe = 500 Kbps) Figure 12-4. Typical Jitter Tolerance vs Data Rate (Fe = 1 Mbps) 7-84 inter 82077 REVISION HISTORY DOCUMENT: 82077 Advanced Information Data Sheet NEW REVISION NUMBER: 290166-001 OLD REVISION NUMBER: 290166-002 1. On the front page, Vertical Recording support has been added to the feature list. 2. On the front page, Figure 1 has been changed for pins 37 and 38 from NC to LOFIL and HIFIL respectively. 3. In Table 1 under the PLL section, a pin description has been added for HIFIL and LOFIL. 4. After Section 1.1, Section 1.2 has been added to describe the Perpendicular Recording Mode. 5. Under Section 2.1.3, Table 2-1 has been added that lists recommended DOR drive control values. 6. Table 5-1 has been updated to include the Perpendicular Mode command. 7. Under Section 5.1.7.1, Figure 5-3 has been added to describe the Toshiba perpendicular format. 8. Section 5.2.11 has been added to describe the Perpendicular Mode command. 9. Under Section 10.2 of the D.C. Characteristics, the Icc specifications have been reduced in value and the testing descriptions clarified. 10. Under Section 11.0 of the A.C. Specifications, t10 has been reduced from 95 ns to 80 ns and 124 has been reduced from 150 ns to 100 ns. 11. Section 12.0 has been added to describe the data separator characteristics of the internal PLL. 7-85 infef AP-116 APPLICATION NOTE November 1986 An Intelligent Data Base System Using the 8272 TOM ROSSI PERIPHERALS APPLICATIONS MANAGER Order Number: 207875-001 7-87 intJ AP-116 tective jacket (Figure 1). The circular piece of plastic revolves at a fixed speed (approximately 360 rpm) within its jacket in much the same manner that a record revolves at a fixed speed on a stereo turntable. Disks are manufactured in a variety of configurations for various storage capacities. Two standard physical disk sizes are commonly used. The 8-inch disk (8 inches square) is the larger of the two sizes; the smaller size (5 '14 inches square) is often referred to as a mini-floppy. Single-sided disks can record information on only one side of the disk, while double-sided disks increase the storage capacity by recording on both sides. In addition, disks are classified as single-density or double-density. Double-density disks use a modified recording method to store twice as much information in the same disk area as can be stored on a single-density disk. Table 1 lists storage capacities for standard floppy disk media. 1.0 INTRODUCTION Most microcomputer systems in use today require lowcost, high-density removable magnetic media for information storage. In the area of removable media, a designer's choice is limited to magnetic types and floppy disks (flexible diskettes), both of which offer non-volatile data storage. The choice between these two technologies is relatively straight-forward for a given application. Since disk drives are designed to permit random access to stored information, they are significantly faster than tape units. For example, locating information on a disk requires less than a second, while tape movement (even at the fastest rewind or fast-forward speed) often requires several minutes. This random access ability permits the use of floppy disks in on-line storage applications (where information must be located, read, and modified/updated in real-time under program or operator control). Tapes, on the other hand, are ideally suited to archival or back-up storage due to their large storage capacities (more than 10 million bytes of data can be archived on a cartridge tape). A magnetic head assembly (in contact with the disk) writes information onto the disk surface and subsequently reads the data back. This head assembly can Table 1. Formatted Disk Capacities A sophisticated controller is required to capitalize on the abilities of the disk storage unit. In the past, disk controller designs have required upwards of 150 ICs. Today, the single-chip 8272 Floppy Disk Controller (FDC) plus approximately 30 support devices can handle up to four million bytes of on-line data storage on four floppy disk drives. Single-Density Format Byte/Sector 128 256 512 1024 Sectors/Track 26 15 8 4 77 77 77 77 Track/Disk Bytes/Disk 256,256 295,680 315,392 315,392 . Double-Density Format Byte/Sector 128 256 512 1024 Sectors/Track 52 30 16 8 77 77 77 77 Track/Disk Bytes/Disk 512,512 591,360 630,784 630,784 The Floppy Disk A floppy disk is a circular piece of thin plastic material covered with a magnetic coating and enclosed in a pro- move from the outside edge of the disk toward the center in fixed increments. Once the head assembly is positioned at one of these fixed positions, the head can read or write information in a circular path as the disk revolves beneath the head assembly. This method divides the surface into a fixed number of cylinders (as shown in Figure 2). There are normally 77 cylinders on a standard disk. Once the head assembly is positioned at a given cylinder, data may be read or written on either side of the disk. The appropriate side of the disk is selected by the read/write head address (zero or one). Of course, a single-sided disk can only use head zero. The combination of cylinder address and head address uniquely specifies a single circular track on the disk. The physical beginning of a track is located by means of a small hole (physical index mark) punched through the plastic near the center of the disk. This hole is optically sensed by the drive on every revolution of the disk. EJ~ o . • INDEX HOLE I WRITE PROTECT NOTCH.,/' 207875-1 Each track is subdivided into a number of sectors (see detailed discussion in section 3). Sectors are generally Figure 1.A Floppy Diskette 7-89 inter AP-116 128, 256, 512, or 1024 data bytes in length. This track sectoring may be accomplished by one of two techniques: hard sectoring or soft sectoring. Hard sectored disks divide each track into a maximum of 32 sectors. The beginning of each sector is indicated by a sector hole punched in the disk plastic. Soft sectoring, the IBM standard method, allows software selection of sector sizes. With this technique, each data sector is preceded by a unique sector identifier that is read/written by the disk controller. Finally, the drive provides additional signals to the system controller regarding the status of the drive and disk. These .signals include: Drive Ready-Signals the system that the drive door is closed and that a floppy disk is inserted into the drive. Track Zero-Indicates that the head assembly is located over the outermost track of the disk. This signal may be used for calibration of the disk drive at system initialization and after an error condition. A floppy disk may also contain a write protect notch punched at the edge of the outer jacket of the disk. This notch is detected by the drive and passed to the controller as a write protect signal. Write Protect-Indicates that the floppy disk loaded into the drive is write protected. Dual Sided-Indicates that the floppy disk in the drive is dual-sided. The Floppy Disk Drive Write Fault-Indicates that an error occurred during a recording operation. The floppy disk drive is an electromechanical device that records data on, or reads data from, the surface of a floppy disk. The disk drive contains head control electronics that move the head assembly one increment (step) forward (toward the center of the disk) or backward (toward the edge of the disk). Since the recording head must be in contact with the disk material in order to read or write information, the disk drive also contains head-load electronics. Normally the read/write head is unloaded until it is necessary to read or write information on the floppy disk. Once the head assembly has been positioned over the correct track on the disk, the head is loaded (brought into contact with the disk). This sequence prevents excessive disk wear. A small time penalty is paid when the head is loaded. Approximately thirty to fifty milliseconds are needed before data may be reliably read from, or written to, the disk. This time is known as the head load time. If desired, the head may be moved from cylinder to cylinder while loaded. In this manner, only a small time interval (head settling time) is required before data may be read from the new cylinder. The head settling time is often shorter than the head load time. Typically, disk drives also contain drive select logic that allows more than one physical drive to be connected to the same interface cable (from the controller). By means ofa jumper on the drive, the drive number may be selected by the OEM or end user. The drive is enabled only when selected; when not selected, all control signals on the cable are ignored. Index-Informs the system that the physical index mark of the floppy disk (signifying the start of a data track) has been sensed. CURRENT TRACK 207875-2 Figure 2. Concentric Cylinders on a Floppy Diskette 7-90 Ap·116 operation has been completed. This feature eliminates the head load time during periods of heavy disk I/O activity. S) Data Separation-The actual signal recorded on a floppy disk is a combination of timing information (clock) and data. The serial READ DATA input (from the disk drive) must be converted into two signal streams: clock and data. (The READ DATA input operates at 2S0K bits/second for single-density disks and SOOK bits/second for double-density disks.) The serial data must also be assembled into 8bit bytes for transfer to system memory. A byte must be assembled and transferred every 32 microseconds for single-density disks and every 16 microseconds for double-density. 6) Error-Checking-Information recorded on a floppy disk is subject to both hard and soft errors. Hard (permanent) errors are caused by media defects. Soft errors, on the other hand, are temporary errors caused by electromagnetic noise or mechanical interference. Disk controllers use a standard error checking technique known as a Cyclic Redundancy Check (CRC). As data is written to a disk, a 16-bit CRC character is computed and also stored on the disk. When the data is subsequently read, the CRC character allows the controller to detect data errors. Typically, when CRC errors are detected, the controlling software retries the failed operation (attempting to recover from a soft error). If data cannot reliably be read or written after a number of retries, the system software normally reports the error to the operator. Multiple CRC errors normally indicate unrecoverable media error on the current disk track. Subsequent recovery attempts must be defined by the system deisgners and tailored to meet system interfacing requirements. 2.0 SUBSYSTEM OVERVIEW A disk subsystem consists of the following functional electronic units: I) Disk Controller Electronics 2) Disk Drive Electronics 3) Controller/Disk Interface (cables, drivers, terminators) 4) Controller/Microprocessor System Interface The operation of these functional units is discussed in the following paragraphs. Controller Electronics The disk controller is responsible for converting highlevel disk commands (normally issued by software executing on the system processor) into disk drive commands. This function includes: I)Disk Drive Selection-Disk controllers typically manage the operations of multiple floppy disk drives. This controller function permits the· system processor to specify which drive is to be used in a particular operation. 2) Track Selection-The controller issues a timed sequence of step pulses to move the head from its current location to the proper disk cylinder from which data is to be read or to which data is to be written. The controller stores the current cylinder number and computes the stepping distance from the current cylinder to the specified cylinder. The controller also manages the head select signal to select the correct side of the floppy disk. 3) Sector Selection-The controller monitors the data on a track until the requested sector is sensed. 4)Head Loading-The disk controller determines the times at which the head assembly is to be brought in contact with the disk surface in order to read or write data. The controller is also responsible for waiting until the head has settled before reading or writing information. Often the controller maintains the head loaded condition for up to 16 disk revolutions (approximately 2 seconds) after a read or write Today, single-chip digital LSI floppy disk controllers such as the 8272 perform all the above functions with the exception of data separation. A data separation circuit (a combination of digital and analog electronics) synchronizes itself to the actual data rate of the disk drive. This data rate varies from drive to drive (due to mechanical factors such as motor tolerances) and varies from disk to disk (due to temperature effects). In order to operate reliably with both single- and double-density storage, the data separation circuit must be based on phase-locked loop (PLL) technology. The phase-locked loop data separation logic is described in section S. The 7-91 inter AP-116 separation logic, after synchronizing with the data stream, supplies a data window to the LSI disk control'Ier. This window differentiates data information from clock information within the serial stream. The controller uses this window to reconstruct the data previously recorded on the floppy disk. ' tion in the transfer; With this method, the controller issues an interrupt to the processor for each data transfer. (An equivalent method allows the processor to poll an interrupt flag in the controller status word.) In the case of a disk write operation, the processor writes a data byte (to be encoded into the serial output stream) to the disk controller following the receipt of each controller interrupt. During, a disk read operation, the processor reads a data byte (previously assembled from the input data stream) from the controller after each interrupt. The processor must transfer a data byte from the controller to memory or transfer a data byte from memory to the disk controller within 16 or 32 microseconds after each interrupt (double-density and singledensity response times, respectively). Drive Electronics Each floppy disk drive contains digital electronic circuits that translate TTL-compatible command signals into electromechanical operations (such as drive selection and head movement/loading) and that sense and report disk or drive status to the controller (e.g., drive ready, write fault, and write protect). In addition, the drive electronics contain 'analog components to sense, amplify, and shape data pulses read from, or written to, the floppy disk surface by the read/write head. If the system processor must service a variety of other interrupt sources, this interrupt method may not be practical, especially in double-density systems. In this case, the disk controller may be interfaced to a Direct Memory Access (DMA) controller. When the disk controller requires the transfer of a data byte, it simply activates the DMA request line. The DMA controller intenaces to the processor and, in response to the disk controller's request, gains control of the memory interface for a short periOd of time-long enough to transfer the requested data byte to/from memory. See section 6 for a detailed DMA interface description: ControllerIDrive Interface The controller/drive interface consists of high-current line drivers, Schmitt triggered input gates,' and flat or twisted pair cable(s) to connect the disk drive electronics to the controller electronics. Each interface signal line is resistively terminated at the end of the cable farthest from the line drivers. Eight-inch drives may be directly interfaced by means of 50-conductor flat cable. Generally, cable lengths should be less than ten feet in order to maintain noise immunity. 3.0 DISK FORMAT New floppy disks must be written with a fixed format by the controller before these disks may be used to store data. Formatting is a method of taking raw media and adding the necessary information to permit the controller to ,read and write data without error. AIl formatting is performed by the disk controller on a track-by-track basis under the direction of the system processor. Generally, a track may'be formatted at any time. However, since formatting "initializes" a complete disk track; 'all previously written data is lost (after a format operation). A format operation is normally' used only when initializing new floppy disks. Since soft-sectoring in such a predominant formatting technique (due to IBM's influence), the following discussion will limit itself to self-sectored formats. Normally, provisions are made for up to four disk drives to share the same interface cable. The controller may operate as many cable assemblies as practical. LSI floppy disk controllers typically operate' one to four drives on 'a single cable. ProcessorIMemory Interface The disk controller must interface to the system processor and memory for two distinct purposes. First, the processor must specify disk control and command parameters to the controller. These parameters include the selection of the recording density and specification of disk formatting information (discussed in section 3). In addition to disk parameter specification, the processor must also send commands (e.g., read, write, seek, and scan) to the controller. These commands require the specification of the command code, drive number, cylinder address, sector address, and head address. Most LSI controllers receive commands and parameters by means of processor I/O instructions. Data Recording Techniques Two standard data recording techniques are used to combine clock and data information for storage on a floppy disk. The single-density technique is referred to as FM encoding. In FM encoding (see Figure 3), a double frequency encoding technique is used that inserts a data bit between two adjacent clock bits. (The presence of a data bit represents a binary "one" while the absence of a data bit represents a binary ·"zero.") The two adjacent clock bits are referred to as a bit cell, and In addition to this I/O interface, the controller must also be designed for high-speed data transfer between memory and the disk driv.e. Two implementation methods may be used to coordinate this data transfer. The lower-cost method requires direct processor interven- 7-92 intJ AP-116 2) Post ID Field Gap-The post ID field gap (gap 2) is written initially when the track is formatted. During subsequent write operations, the drive's write circuitry is enabled within the gap and the trailing bytes of the gap are rewritten each time the sector is updated (written). During subsequent read operations, the trailing bytes of the gap are used to synchronize the data separator logic with the upcoming data field. 3) Data Field-The length (number of data bytes) of the data field is determined by software when the track is formatted. The first byte of the data field is the data address mark, a unique coding that specifies the beginning of the data field. When a sector is to be deleted, (e.g., a hard error on the disk), a deleted data address mark is written in place of the data address mark. The last two bytes of the data field comprise the eRe character. 4) Post Data Field Gap-The post data field gap (gap 3) is written when the track is formatted and separates the preceding data field from the next physical ID field on the track. Note that a post data field gap is not written following the last physical sector on a track. The gap itself contains a program-selectable number of bytes. Following a sector update (write) operation, the drive's write logic is disabled during the gap. The actual size of gap 3 is determined by the maximum number of data bits that can be recorded on a track, the number of sectors per track and the total sector size (data plus overhead information). The gap size must be adjusted so that it is large enough to contain the discontinuity generated on the floppy disk when the write current is turned on or off (at the start or completion of a disk write operation) and to contain a synchronization field for the upcoming ID field (of the next sector). On the other hand, the gaps must be small enough so that the total number of data bits required on the track (sectors plus gaps) is less than the maximum number of data bits that can be recorded on the track. The gap except for a unique field identifiers, all clock bits written on the disk are binary "ones." In FM encoding, each data bit is written at the center of the bit cell and the clock bits are written at the leading edge of the bit cell. The encoding used for double-density recording is terms MFM encoding (for "Modified FM"). In MFM encoding (Figure 3) the data bits are again written at the center of the bit cell. However, a clock bit is written at the leading edge of the bit cell only if no data bit was written in the previous bit cell and no data bit will be written in the present bit cell. Sectors Soft-sectored floppy disks divide each track into a number of data sectors. Typically, sector sizes of 128, 256, 512, or 1024 data bytes are permitted. The sector size is specified when the track initially formatted by the controller. Table 1 lists the single- and double-density data storage capacities for each of the four sector sizes. Each sector within a track is composed of the following four . fields (illustrated in Figure 4): 1) Sector ID Field-This field, consisting a seven bytes, is written only when the track is formatted. The ID field provides the sector identification that is used by the controller when a sector must be read or written. The first byte of the field is the ID address mark, a unique coding that specifies the beginning of the ID field. The second, third, and fourth bytes are the cylinder, head, and sector addresses, respectively, and the fifth byte is the sector length code. The last two bytes are the 16-bit eRe character for the ID field. During formatting, the controller supplies the address mark. The cylinder, head, and sector addresses and the sector length code are supplied to the controller by the processor software. The eRe character is derived by the controller from the data in the first five bytes. I DATA 1 o I 0' I 0 o I 1 1 I FM - 1.1-11- DATA ~CLOCK MFM 207875-3 Note: The FM bit cell is twice the size of the MFM bit cell. Thus, the FM time scale in this figure is 4 Its/bit while the MFM time scale is 2 Its/bit. Figure 3. FM and MFM Encoding 7-93 inter AP-116 size must be specified' for all read, write, and format operation. The gap size used during disk reads and writes must be smaller than the size used to format the disk to avoid the splice points between contiguous physical sectors. Suggested gap sizes are listed in Table 9. 2) Index Address Mark-Theindex address mark con'sists of a unique code that indicates the beginning of a'data track. One index mark is written on each track when the track is formatted. 3) Post Index GaP7The post index gap (gap I) is used during disk read and write operations to synchronize the data separator logic with the data to be read from the ID field (ofthe first sector). The post index gap is written only when the disk is formatted. 4) Sectors-11te sector information (discussed above) is repeated OIice for each sector on ths track. Tracks The overall format for a track is illustrated in Figure 4. Each track consists of the following fields: I) Pre-Index Gap-The pre-index gap (gap 5) is written only when the track is formatted. n ----_ PHYSICAL INDEX MARK .... f~ SECTDR DATA FIELD PRE. INDEX GAP (GAP 5) FINAL GAP (GAP 4) INDEX ADDRESS MARK , HEXFF I DATA ADDRESS MARK SYNC (HEX 00) I I PDST INDEX GAP (GAP 1) POST ID FIELD GAP (GAP 2) SECTDR 1 ID FIELD SECTOR 1 DATA FIELD I HEX FF I SYNC (HEX 00) 128 x 2" USER DATA BYTES I CRC BYTE 1 I CRC BYTE 2 I II POST DATA FieLD GAP (GAP 3) SECTOR 2 IDFIELD PDSTID FIELD GAP (GAP 2) SECTOR 2 DATA FIELD POST DATA FIELD GAP (GAP 3) PDSTID FIELD' GAP (GAP 2) SECTOR 3 ID FIELD I HEX FF ~ ID ADDRESS MARK TRACK ADDRESS BYTE 1 BYTE 2 J HEAD ADDRESS BYTE 3 J SECTOR ADDRESS BYTE 4 SYNC (HEX 00) ~ SECTOR LENGTH BYTES HEX FF I CRC BYTE 1 BYTES - FIELD , I I "~-f I SYNC (HEX 00) I CRC BYTE 2 BYTE 7 I 207875-4 Figure 4. Standard Floppy Diskette Track Format (from sec 204 Manual), 7-94 Ap·116 5) Final Gap-The final gap (gap 4) is written when the track is formatted and extends from the last physical data field on the track to the physical index mark. The length of this gap is dependent on the number of bytes per sector specified, the legnths of the program-selectable gaps specified, and the drive speed. Sector Interleaving The initial formatting of a floppy disk determines where sectors are located within a track. It is not necessary to allocate .sectors sequentially around the track (i.e., 1,2,3,... ,26). In fact, it is often advantageous to place the sectors on the track in non-sequential order. Sequential sector ordering optimizes sector access times during multi-sector transfers (e.g., when a program is loaded) by permitting the number of sector specified (up to an entire track) to be transferred within a single revolution of the disk. A technique known as sector interleaving optimizes access times when, although sectors are accessed sequentially, a small amount of processing must be performed between sector reads/writes. For example, an editing program performing a text search reads sectors sequentially, and after each sector is read, performs a software search. If a match is not found, the software issues a read request for the next secto~. Since the floppy disk continues to rotate during the time that the software executes, the next physical sector is already passing under the read/write head when the read request is issued, and the processor must wait for another complete revolution of the disk (approximately 166 milliseconds) before the data may actually be input. With interleaving, the sectors are not stored sequentially on a track; rather, each sector is physically removed from the previous sector by some number (known as the interleave factor) of physical sectors as shown in Figure 5. This method of sector allocation provides the processor additional execution time between sectors on the disk. For example, with a 26 sector/track format, an interleave factor of 2 provides 6.4 milliseconds of processing time between sequential 128 byte sector accesses. 207875-5 Figure 5. Interleaved Sector Allocation within a Track 4.0 THE 8272 FLEXIBLE DISKETTE CONTROLLER The 8272 is a single-chip LSI Floppy Disk Controller (FOC) that contains the circuitry necessary to implement both single- and double-density floppy disk storage subsystems (with up to four dual-sided disk drives per FOC). The 8272 supports the IBM 3740 single-density recording format (FM) and the IBM System 34 double-density recording format (MFM). With the 8272, less than 30 ICs are needed to implement a complete disk subsystem. The 8272 accepts and executes high-level disk commands such as format track, seek, read sector, write sector, and read track. All data synchronization and error checking is automatically performed by the FOC to ensure reliable data storage and subsequent retrieval. External logic is required only for the generation of the FOC master clock and write clock (see Section 6) and for data separation (Section 5). The FOC provides signals that control the startup and base frequency selection of the data separator. These signals greatly ease the design of a phase-locked loop data separator. To calculate the correct interleave factor, the maximum processor time between sector operations must be divided by the time required for a complete sector to pass under the disk read/write head. After determining the interleave factor, the correct sector numbers are passed to the disk controller (in the exact order that they are to physically appear on the track) during the execution of a format operation. In addition to the data separator interface signals, the 8272 also provides the necessary signals to interface to 7-95 .AP-116 Vee RWISEEK LCT/DIA OB0-7 FAlSTP HDl RDY WP/TS FLT/TRKO PSo PS, WRDATA DB, DB, OS, DRO HDSEl DiCK Ds" TERMINAL COUNT READY MFM WAITE PROTECTITWO SIDE INDEX TC WE 'DX 'NT elK DW OND WHelk FAULTITRACK 0 Vee RD DATA DRIVE SELECT 0 DRIVE SELECT 1 MFM MODE IIWISEEK 207875:"6 HEAD LOAD HEAD SELECT LOW CURRENT/DIRECTION . FAULT RESEllSTEP elK --.. Vee_ GND ---. 207875-7 Figure 6. 8272 Pin Configuration and Internal Block Diagram COMMAND PHASE: The executing program transfers to the FDC all the information required to perform a particular disk operation. The 8272 automatically enters the command phase after RESET and following the completion of the result phase (if any) of a previous command. EXECUTION PHASE: The FOC performs the operation as instructed. The execution phase is entered immediately after the last command parameter is written to the FOC in the preceding command phase. The execution phase normally ends when the last data byte is transferred to/from the disk (signalled by the TC input to the FDC) or when an error occurs. RESULT PHASE After completion of the disk operation, status and other housekeepmg information are made available to the processor. After the processor reads this information, the FOC reenters the command phase and is ready to accept another command. microprocessor systems with or without Direct Memory Access (DMA) capabilities. In order to interface to a large number of commercially available floppy disk drives, the FDC permits software specification of the track stepping rate, the head load time, and the head unload time. The pin configuration and internal block diagram of the 8272 is shown in Figure 6. Table 2 contains a description for each FDC interface pin. Floppy Disk Commands The 8272 executes fifteen high-level disk interface commands: Specify Write Data Sense Drive Status Write Deleted Data Sense Interrupt Status Read Track Seek Read ID Recalibrate Scan Equal Scan High or Equal Format Track Scan Low or Equal Read Data Read Deleted Data Each command is initiated by a multi-byte transfer from the processor to the FOC (the transferred bytes contain command and parameter information). After complete command specification, the FOC automatically executes the command. The command result data (after execution of the command) may require a multibyte transfer of status information back to the processor. It is convenient to consider each FOC command as consisting of the following three phases: 7-96 intJ AP-116 Table 2. 8272 FDC Pin Description Number Pin Symbol 1 RST I J.LP RESET: Active-high signal that places the FDC in the "idle" state and all disk drive output signals are forced inactive (low). This input must be held active during power on reset while the RD and WR input are active. 2 RD I· J.LP READ: Active-low control signal that enables data transfer from the FDC to the data bus. 3 WR I· J.LP WRITE: Active-low control signal that enables data transfer from the data bus into the FDC. 4 CS I J.LP CHIP SELECT: Active-low control signal that selects the FDC. No. reading of writing will occur unless the FDC is selected. 5 Ao I· J.LP ADDRESS: Selects the Data Register or Main Status Register for input/output in conjunction with the RD and WR inputs. (See Table 3.) J.LP DATA BUS: Bidirectional three-state 8-bit data bus. 6-13 I/O To/From DBo-DB7 I/O· Description 14 DRO 0 DMA DMA REQUEST: Active-high output that indicates an FDC request for DMA services. 15 DACK 1 DMA DMA ACKNOWLEDGE: Active-low control signal indicating thalthe requested DMA transfer is in progress. 16 TC I DMA TERMINAL COUNT: Active-high signal that causes the termination of a command. Normally, the terminal count input is directly connected to the TC/EOP output from the DMA controller, signalling that the DMA transfer has been completed. In a non-DMA environment, the processor must count data transfers and supply a TC signal to the FDC. 17 IDX I Drive INDEX: Indicates detection of the physical index mark (the beginning of a track) on the selected disk drive. 18 INT 0 J.LP 19 CLK I 20 GND 21 WRCLK I 22 DW I PLL DATA WINDOW: Data sample signal from the phase-locked loop indicating that the FDC should sample input data from the disk drive. INTERRUPT REQUEST: Active-high signal indicating an 8272 interrupt service request. CLOCK: Signal phase 8 MHz clock (50% duty cycle). GROUND: DC power return. WRITE CLOCK: 500 kHz (FM) or 1 MHz (MFM) write clock with a constant pulse width of 250 ns (for both FM and MFM recording). The write clock must be present at all times. 23 RDDATA I Drive READ DATA: FDC input data from the selected disk drive. 24 VCO 0 PLL YCO SYNC: Active-high output that enables the phase-iocked loop to synchronize with the input data from the disk drive. 25 WE 0 Drive WRITE ENABLE: Active-high output that enables the disk drive write gate. 26 MFM 0 PLL MFM.MODE: Active-high output used by external logic to enable the MFM double-density recording mode. When the MFM output is low, single-density FM recording is indicated. 27 HDSEL 0 Drive HEAD SELECT: Selects head 0 or head 1 on a dual-sided disk. 7-97 inter AP-116 Table 2. 8272 FDC Pin Description (Continued) Number Pin Symbol 28,29. DS1,DSO 0 Drive DRIVE SELECT: Selects one of four disk drives. 30 WRDATA 0 Drive WRITE DATA: Serial data stream (combination of clock and data bits) to be written on the disk. ' 31,32 PS1, PSo 0 Drive PRECOMPENSATION (PRE-SHIFT) CONTROL: Write precompensation output control during MFM mode. Specifies early, late, and normal timing signals. See the discussion in Section 5. 33 FLT/TRKO I Drive FAULT/TRACK 0: Senses the disk drive fault condition 'in the Read/ Write mode and the Track 0 condition in the Seek mode. 34 WP/TS I Drive WRITE PROTECT/TWO-SIDED: Sense the disk write protect status in the Read/Write mode and the dual-sided media status in the Seek mode. 35 ROY I Drive READY: Senses the disk drive ready status. 36 HDL 0 Drive HEAD LOAD: Loads the disk drive read/write head. (The head is placed in contact with, the disk.) 37 FR/STP 0 Drive FAULT RESET/STEP:' Resets the fault flip-flop in the disk drive when operating in the Read/Write mode. Provides head step pulses (to move the head from one cylirider to another cylinder) in the Seek mode. 38 LCT/DIR 0 Drive LOW CURRENT/DIRECTION: Signals that the recording head has been positioned over the inner cylinders (44-77) of the floppy di,sk in the Read/Write mode. (The write current must be lowered when recording on the physically shorter inner cylinders of the disk. Most drives do not track the actual head position and require that the FDC supply this signaL), Determines the head step direction in the Seek mode. In the Seek mode, a high level on this pin steps the read/write head toward .the spindle (step-in); a low level steps the head away from the spindle (step-out). 39 RW/SEEK 0 Drive READ, WRITE/SEEK MODE SELECTOR: A high level selects the Seek mode;a low level selects the Read/Write mode. 40 • Disabled when I/O To/From Vee es is high. Description ,. + 5V DC Power. In addition.' to the Main Status Register, the FOC contains four additional status registers (STO, ST!, ST2, and ST3).These registers are :only available during the result phase of a command. Interface Registers To support information transfer between the FDC and the system processor, the 8272 contains two 8-bit registers: the Main Status Register and the Data Register. The Main Status Register (read only), contains FDC status information and may be accessed at any time. The Main Status Register (Table 4) provides the system processor with the status of each disk drive, t\le status of the FDC, and the status of the' processor interface. The Data Register (read/write) stores data, commands, parameters, and disk drive status information. The Data Register is used to program the FOC during the command phase and to obtain result information after completion of FDC operations. Data is read from, or written to, the FOC registers by the combination of the AO, RD, WR, and CS signals, as described in Table 3. , , , Table 3. FDC Read/Write Interface CS "Ao 7-98 0 0 0 0 0 0 0 1 0 '0 1 1 1 X RD WR Function' 0 1 0 0 0 1 X 1 0 0 0' 1 0 Read Main Status Register Illegal Illegal Illegal Read from Data Register Write hito Data Register Data Bus is three-stated X inter AP-116 phase is sent to the 8272 the execution phase automatically starts. In a similar fashion, when the last byte of data is read from the 8272 in the result phase, the command is automatically ended and the 8272 is ready for a new command. A command may be aborted by simply raising the terminal count signal (pin 16). This is a convenient means of ensuring that the processor may always gain control of the 8272 (even if the disk system hangs up in an abnormal manner). Table 4. Main Status Register Bit Definitions Bit Numbe'r Symbol Description 0 DoB DISK DRIVE 0 BUSY: Disk Drive 0 is in the Seek mode. 1 D1B DISK DRIVE 1 BUSY: Disk Drive 1 is in the Seek mode. 2 D2B DISK DRIVE 2 BUSY: Disk Drive 2 is in the Seek mode. 3 D3B DISK DRIVE 3 BUSY: Disk Drive 3 is in the Seek mode. 4 GB FDC BUSY: A read or write command is in process. 5 NOM NON-DMA MODE: The FOG is in the non-DMA mode when this bit is high. This bit is set only during the execution phase of commands in the non-DMA mode. Transition to a low level indicates that the execution phase has ended. 6 010 DATA INPUT/OUTPUT: Indicates the direction of a data transfer between the FOG and the Data Register. When 010 is high, data is read from the Data Register by the processor; when 010 is low, data is written from the processor to the Data Register. 7 ROM REQUEST FOR MASTER: Indicates that the Data Register is read to send data to, or receive data from, the processor. It is important to note that during the result phase all bytes shown.in Table 5 must be read. The Read Data command, for example, has seven bytes of data in the result phase. All seven bytes must be read in order to successfully complete the Read Data command. The 8272 will not accept a new command until all seven bytes have been read. The number of command and result bytes varies from command-to-command. In order to read data from, or write data to, the Data Register during the command and result phases, the system processor must examine the Main Status Register to determine if the Data Register is available. The DIO (bit 6) and RQM (bit 7) flags in the Main Status Register must be low and high, respectively, before each byte of the command word may be written into the 8272. Many of the commands require multiple bytes, and as a result, the Main Status Register must be read prior to each byte transfer to the 8272. To read status bytes during the result phase, DID and RQM in the Main Status Register must both be high. Note, checking the Main Status Register in this manner before each byte transfer to/from tqe 8272 is required only in the command and result phases, and is NOT required during the execution phase. Execution Phase All data transfers to (or from) the floppy drive occur during the execution phase. The 8272 has two primary modes of operation for data transfers (selected by the specify command): 1. DMA mode 2. non-DMA mode Command/Result Phases Table 5 lists the 8272 command set. For each of the fifteen commands, command and result phase data transfers are listed. A list of abbreviations used in the table is given in Table 6, and the contents of the result status registers (STO-ST3) are illustrated in Table 7. In the DMAmode, DRQ (DMA Request)'is activated for each transfers request. The DMA controller re~nds to DRQ with DACK (DMA Acknowledge) and RD (for read commands) or WR (for write commands). DRQ is reset by the FDC during the transfer. INT is activated after the last data transfer, indicating the completion of the execution phase, and the beginning of the result phase. In the DMA mode, the terminal count (TC/EOP) output of the DMA controller should be connected to the 8272 TC input to properly terminate disk data transfer commands. The bytes of data which are sent to the 8272 during the command phase, and are readout of the 8272 in the result phase, must occur in the order shown in Table 5. That is, the command code must be sent first and the other bytes. sent in the prescribed sequence. All bytes of the command and result phases must be read/written as described. After the last byte of data in the command 7-99 inter AP-116 Table 5. 8272 Command Set DATA BUS PHASE AIW 10-, DATA BUS " " " '3 " " , , Dol REMARKS PHASE AIW 0-, Do READ DATA Command W W W W W W W W W M1 MFM SK 0 0 0 0 0 0 0 _____ C Command Codes Command Sector 10 information prior to Command execution H R ~~-- Execution Resull Data transfer between the FOO and the main-system A STO ST, ST2 C H R A A R R W W W W W W W W W 0 0 , , 0 0 0 0 0 C H R - N EC' GPl OTl --- R R R R R R Resull W W W W W W W W W $ector 10 information prior to Command execution I ---Data Iransfer between the FOD and the main-system. FOe reads the complete track A STO ST' ST2 C H R R N R R R R ---- ------- W W 0 MFM 0 0 0 0 , 0 0 Sector 10 information 0 , 0 0 HDS OS1 OSO N MT MFM 0 0 0 0 0 0 , , 0 0 0 HOS OS1 OSO R N EOT GPl OTl ----- A A A A A ---- STO ST' ST2 C H - - R W W W W MT MFM 0 0 - 0 0 , 0 0 0 --- , 0 0 HOS OS1 DSO STO ST' ST2 - _C __ _- - R R N R , 0 HOS OSl OSO - - N SC _ _ GPl Bytes/Sector $ectorsITrack Gap 3 Filter Byte 0 STO ST' ST2 C __ R -- - H A N R $ector 'O informalion after Command execution SCAN EQUAL Command W W W W W W W W W Command Codes Result Stalus informaUon after Command execution - MT MFM SK 0 0 0 , 0 0 0 -- --- , 0 0 HOS OS1 050 In this case, the 10 information has no meaning Command Codes Sector 10 information prior to Command execution C H R N EOT GPl STP Stalus information after Command execution --Data compared between the FOO and the main-system R R R R A A Seclar 10 irdormalion after Command execution Command Codes FOC formats an entire track A A A ~ H_~ 0 ---- R Data transfer between the FDD and the main.system A , , 0 0 Execution Execution R R R 0 MFM 0 0 0 0 R Sector 10 information prior to Command execulion C ___ H A N _ _~ EOT GPl OTl A Result Status information after Command execution - W W W W W W Execution --- N Sector 10 informaflon during Execution Phase FORMAT A TRACK --- WRITE DELETED DATA W W W W W A A $ector 10 information prior to Command execution C H Slatus information alter Command execution STO ST' ST2 C H A N A A R Command Command Codes Command Codes The first correct ID information on the track is stored in Data Register R R $ector 10 informalion after Command execution R Status information after Command el(8cution after Command execution R READ 10 Command Result Data transler between the main· system and the FDD R R Re$ull Command Codes Status information after Command execulion STO _ _ _ _ ST' ST2 C H Execution Command Sector 10 information prior to Command execution Execution WAITE DATA Result A N EOT GPl OTl Command Codes HOS DS1 050 ----- Data transfer between the FOD and the main-system R Command 0 I ••MA•• S conlents from the physical index mark to EOT HOS OS1 080 0 Execution Result 0 Do execulion Sector 10 information after command execution N M1 MFM SK 0 0 0 0 C _____ H " , Execution READ DELETED DATA Command W W W W W W W W W 0 MFM SK 0 0 0 Status information after Command ---- R A Do READ A TRACK 0 HOS OS1 050 _ _ ~N EOT GPl OTl '. '. '3 R ----- - -- STO ST, ST2 --C H ____ __ R __ N ---- Status information after Command execulion Sector 10 information alter Command execution 207875-18 NOTE: 1. Ao = 1 for all operations. 7-100 inter AP-116 Table 5. 8272 Command Set (Continued) DATA BUS PHASE PHASE R/W I I Dr DATA BUS De SCAN LOW OR eQUAL Command W W W W W W W W W MT MFM SK 0 0 - 0 , 0 - ___ R ----~----- Command HOS OSl DSO C_ H - D. Sector 10 information prior Command eltecution - N-=-=~ EDT D. W , , , 0 Command W STP Result R R ----- S10 _ _ _ - ST' ST2 C H Command Codes STO C Status information al the end 01 each seek operation about the FDC W Status Information alter Command MT MFM SK W W W W W W W 0 HLT Command , W , 0 Sector 10 information prior Command execution R Command W W - H Status information about the FDD --- , , - - -- C Execution -- R Head IS positioned oyer proper Cylinder on Diskette N INVALID Command W Status information after Command execution Sector 10 information after Command execution Command Codes HDS OS1 050 W Data compared between the FDD and Ihe main·system _ _ ST' ST2 ____ C eso ST3 SEEK N STO _ _ Timer Settings Command Codes HOS OS, Command Codes HOS OS1 DSO Execution A R A R R A R • NO W - --- - EDT GPL STP Command Codes _SPT _ _ .. _ H U T SENSE DRIVE STATUS Result C H __ ___ R W W W after Command execution - - , , , 0 SPECIFY Sector 10 intormaUon R W ~and execution _ _ _ _ N_ - Command Codes Head retracted to Track 0 Data compared between tile FDD R R R R R R R IREMARKS OS1 050 Execution GPL _ _ _ _ _ SCAN HIGH OR EQUAL Resull 0, W and the maln-svstem Command 02 SENSE INTERRUPT STATUS Execution Result 03 RECALIBRATE Command Codes 0 05 Result - _ _ Invalid Codes _ _ _ STO Inyalid Command Codes (NoOp-FOC goes into Standby Slate) STO=80 (16) 207875-19 Table 6. Command/Result Parameter Abbreviations Symbol C D DSO,DS1 Description CYLINDER ADDRESS: The currently selected cylinder address (0 to 76) on the disk. DATA PATTERN: Tne pattern to be written in each sector data field during formatting. DISK DRIVE SELECT: DS1 0 0 1 1 DSO 0 1 0 1 Drive 0 Drive 1 Drive 2 Drive 3 DTL SPECIAL SECTOR SIZE: During the execution of disk read/write commands, this parameter is used to temporarily alter the effective disk sector size. By setting N to zero, DTL may be used to specify a sector size from 1 to 256 bytes in length. If the actual sector (on the diskette) is larger than DTL specifies, the remainder of the actual s~ctor is not passed to the system during read commands; during write commands, the remainder of the actual sector is written with all-zeroes bytes. DTL should be set to FF hexadecimal when N is not zero. EOT END OF TRACK: The final sector number of the current track. 7-101 AP-116 Table 6. Command/Result Parameter Abbreviations (Continued) Symbol GPL H Description GAP LENGTH: The gap 3 size. (Gap 3 is the space between sectors excluding the VCO synchronization field as defined in section 3.) HEAD ADDRES~:Selected head: 0 or 1 (disk side 0 or 1, respectively) as encoded in the sector 10 field. HLT HEAD LOAD TIME: Defines the time interval that the FOC waits after loading the head before initiating a read or write operation. Programmable from 2 to 254 milliseconds (in increments of 2 ms). HUT HEAD UNLOAD TIME: Defines the time interval from the end of the execution phase (of a read or write command) until the head is unloaded. Programmable from 16 to 240 milliseconds (in increments of 16 ms). MFM MFM/FM MODE SELECTOR: Selects MFM double-density recording mode when high, FM single-density mode when low. MT N MUTLI-TRACK SELECTOR: When set, this flag selects the multi-track operating mode. In this mode (used only with dual-sided disks), the FOC treats a complete cylinder (under both read/write head 0 and read/write head 1) as a single track. The FOC operates as if this expanded track started at the first sector under head 0 and ended at the last sector under head 1. With this flag set (high), a multi-sector read operation will automatically continue to the first sector under head 1 when FOG finishes operating on the last sector under head o. SECTOR SIZE: The number of data bytes within a sector. (See Table 9.) NO NON-DMA MODE FLAG: When set (high), this flag indicates that the FOC is to operate in the non-OMA mode. In this mode, the processor is interrupted for each data transfer. .When low, the FOC interfaces to a OMA controller by means of the ORQ and OACK signals. R SECTOR ADDRESS: Specifies the sector number to be read or written. In mUlti-sector transfers, this parameter specifies the sector number of first sector to be read or written. SC NUMBER OF SECTORS PER TRACK: Specifies the number of sectors per track to be initialized by the Format Track command. SK SKIP FLAG: When this flag is set, sectors containing deleted data address marks will automatically be skipped during the execution of multi-sector Read Data or Scan commands. In the same manner, a sector containing a data address mark will automatically be. skipped during the execution of a multi-sector Read Oelected Data command. SRT STEP RATE INTEf;lVAL: Defines the time interval between step pulses issued by the FOG (track-to-track access time). Programmable from 1 to 16 milliseconds (in increments of 1 ms). 7-102 inter AP-116 Table 6. Command/Result Parameter Abbreviations (Continued) Symbol Description 5TO,5T3 5T2,ST3 STATUS REGISTER 0-3: Registers within the FDC that store status information after a command has been executed. This status information is available to the processor during the Result Phase after command execution. These registers may only be read after a command has been executed (in the exact order shown in Table 5 for each command). These registers should not be confused with the Main Status Register. STP SCAN SECTOR INCREMENT: During Scan operations, this parameter is added to the current sector number in order to determine the next sector to be scanned. Table 7. Status Register Definitions Bit Number Symbol Description Status Register 0 7,6 IC INTERRUPT CODE: 00- Normal termination of command. The specified command was properly executed and completed without error. 01- Abnormal termination of command. Command execution was started but could not be successfully completed. 1O-Invalid command. The requested command could not be executed. 11- Abnormal termination. During command execution, the disk drive ready signal changed state. 5 SE SEEK END: This flag is set (high) when the FDC has completed the Seek command and the read/write head is positioned over the correct cylinder. 4 EC EQUIPMENT CHECK ERROR: This flag is set (high) if a fault signal is received from the disk drive or if the track 0 signal fails to become active after 77 step pulses (Recalibrate command). 3 NR NOT READY ERORR: This flag is set if a read or write command is issued and either the drive is not ready or the command specifies side 1 (head 1) of a singlesided disk. 2 H 1,0 DS1,DSO HEAD ADDRESS: The head address at the time of the interrupt. DRIVE SELECT: The number of the drive selected at the time of the interrupt. Status Register 1 7 EN Not used. This bit is always low. 6 5 END OF TRACK ERROR: This flag is set if the FDC attempts to access a sector beyond the final sector of the track. DE DATA ERROR: Set when the FDC detects a CRC error in either the 10 field or the data field of a sector. 7-103 Ap·116 Table 7. Status Register Definitions (Continued) Bit Number Symbol Description Status Register 1 (Continued) 4 OR 3 OVERRUN ERROR: Set (during data transfers) if the FDC does not receive DMA or processor service within the specified time interval. Not used. This bit is always low. 2 NO SECTOR NOT FOUND ERROR: This flag is set by any of the following conditions. a) The FDC cannot locate the sector specified in the Read Data, Read Delected Data, or Scan command. b) The FDC cannot locate the staring sector specified in the Read Track command. c) The FDC cannot read the 10 field without error during a Read 10 command. 1 NW WRITE PROTECT ERROR: This flag is set if the FOC detects a write protect signal from the disk drive during the execution of a Write Oata, Write Oeleted Oata, or Format Track command. 0 MA MISSING ADDRESS MARK ERROR: This flag is set by either of the following conditions: a) The FOC cann()t detect the 10 address mark on the specified track (after two occurrences of the physical index mark). b)The FOC cannot detect the data address mark or deleted data address mark on the specified track. (See also the MO bit of Status Register 2.) Status Register 2 7 NOT USED: This bit is always low. 6 CM CONTROL MARK: This flag is set when the FDC encounters one of the following conditions: a) A deleted data address mark during the execution of a Read Oata or Scan command. b) A data address mark during the execution ora Read Oeleted Oata command. 5 00 DATA ERROR: Set (high) when the FOC detects a CRC error in a sector data field. This flag is not set when a CRC ero( is detected in the 10 field. 4 WC CYLINDER ADDRESS ERROR: Set when the cylinder address from the disk sector 10 field is different from the current cylinder address mainta:ined within the FOC. 3 SH SCAN HIT: Set during the execution of the Scan command if the scan condition is satisfied. 2 SN SCAN NOT SATISFIED: Set during execution of the Scan command if the FOC cannot locate a sector on the specified cylinder that satisfies the scan condition. 1 BC BAD TRACK ERROR: Set when the cylinder address from the disk sector 10 field is FF hexadecimal and this cylinder address is different from the current cylinder address maintained within the FOC. This all "ones" cylinder number indicates a bad track (one containing hard errors) according to the IBM soft-sectored format specifications. 0 MO MISSING DATA ADDRESS MARK ERROR: Set if the FOC cannot detect a data address mark or deleted data address mark on the specified track. 7-104 inter AP-116 Table 7. Status Register Definitions (Continued) Bit Number Symbol Description Status Register 3 7 FT FAULT: This flag indicates the status of the fault signal from the selected disk drive. 6 WP WRITE PROTECTED: This flag indicates the status of the write protect signal from the selected disk drive. 5 ROY READY: This flag indicates the status of the ready signal from the selected disk drive. 4 TO TRACK 0: This flag indicates the status of the track 0 signal from the selected disk drive. 3 TS TWO-SIDED: This flag indicates the status of the two-sided signal from the selected disk drive. 2 H 1,0 DS1,OSO HEAD ADDRESS: This flag indicates the status of the side select signal for the currently selected disk drive. DRIVE SELECT: Indicates the currently selected disk drive number. In the non-DMA mode, transfers requests are indicated by activation of both the INT output signal and the RQM flag (bit 7) in the Main Status Register. INT can be used for interrupt-driven systems and RQM can be used for polled systems. The system processor must respond to the transfer request by reading data from (activating RD), or writing data to (activating WR), the FDC. This response removes the transfer request (INT and RQM are set inactive). After completing the last transfer, the 8272 activates the INT output to indicate the beginning of the result phase. In the non-DMA mode, the processor must activate the TC signal to the FDC (normally by means of an I/O port) after the transfer request for the last data byte has been received (by the processor) and before the appropriate data byte has been read from (or written to) the FDC. In either mode of operation (DMA or non-DMA), the execution phase ends when a terminal count signal is sensed or when the last sector on a track (the EOT parameter-Table 5) has been read or written. In addition, if the disk drive is in a "not ready" state at the beginning of the execution phase, the "not ready" flag (bit 3 in Status Register 0) is set (high) and the command is terminated. If a fault signal is received from the disk drive at the end of a write operation (Write Data, Write Deleted Data, or Format), the FDC sets the "equipment check" flag (bit 4 in Status Register 0), and terminates the command after setting the interrupt code (bits 7 and 6 of Status Register 0) to "01" (bit 7 low, bit 6 high). Multi-Sector and Multi-Track Transfers During disk read/write transfers (Read Data, Write Data, Read Deleted Data, and Write Deleted Data), the FDC will continue to transfer data from sequential sectors until the TC input is sensed. In the DMA mode, the TC input is normally connected to the TC/EOP (terminal count) output of the DMA controller. In the non-DMA mode, the processor directly controls the FDC TC input as previously described. Once the TC input is received, the FDC stops requesting data transfers (from the system processor or DMA controller). The FDC, however, continues to read data from, or write data to, the floppy disk until the end of the current disk sector. During a disk read operation, the data read from the disk (after reception of the TC input) is discarded, but the data CRC is checked for errors; during a disk write operation, the remainder of the sector is filled with all-zero bytes. If the TC signal is not received before the last byte of the current sector has been transferred to/from the system, the FDC increments the sector number by one and initiates a read or write command for this new disk sector. The FDC is also designed to operate in a multi-track mode for dual-sided disks. In the multi-track mode (specified by means of the MT flag in the command byte-Table 5) the FDC will automatically increment the head address (from 0 to 1) when the last sector (on the track under head 0) has been read or written. Reading or writing is then continued on the first sector (sector 1) of head 1. 7-105 AP-116 bit). When this bit is high the non-DMA mode is selected; when ND is low, the DMA mode is selected. Drive Status Polling After the power-on reset, the 8272 automatically enters a drive status polling mode. If a change in drive status is detected (all drives are assumed to be "not ready" at power-on), an interrupt is generated. The 8272 continues this status polling between command executions (and between step pulses in the Seek command). In this manner, the 8272 automatically notifies. the system processor when a floppy disk is inserted, removed, or changed by the operator. Sense Drive Status This command may be used by the processor whenever it wishes to obtain the status of the disk drives. Status Register 3 (returned during the result phase) contains the drive status information as described in Table 7. Sense Interrupt Status Command Details During the command phase, the Main Status Register must be polled by the CPU before each byte is written into the Data Register. The DID (bit 6) and RQM (bit 7) flags in the Main Status Register must be low and high, respectively, before each byte of the command may be written into the 8272. The beginning of the execution phase for any of these commands will cause DIO to be set high and RQM to be set low. An interrupt signal is generated by the FDC when one or more of the following events occurs: 1) The FDC enters the result phase for: a) Read Data command b) Read Track command c) Read ID command d) Read Deleted Data command e) Write Data command The following paragraphs describe the fifteen FDC commands in detail. Specify The Specify command is used prior to performing any disk operations (including the formatting of a new disk) to define drive/FDC operating characteristics. The Specify command parameters set the values for three internal timers: I. Head Load Time (HLT)-This seven-bit value defines the time interval that the FDC waits after loading the head before initiating a read or write operation .. This timer is programmable from 2 to 254 milliseconds in increments of 2 ms. 2. Head Unload Time (HUT)-This four-bit value defines the time from the end of the execution phase (of a read or write command) until the head is unloaded. This timer is programmable from 16 to 240 milliseconds in increments of 16 ms. If the processor issues another command before the head unloads, the head will remain loaded and the head load wait will be eliminated. t) Format Track command g) Write Deleted Data command h) Scan commands 2) The ready signal from one of the disk drives changes state. 3) A Seek or Recalibrate command completes operation. 4) The FDC requires a data' transfer during the execution phase of a command in thenon-DMA mode. Interrupts caused by reasons (l) and (4) above occur during normal command operations and are easily discernible by the processor. However, interrupts caused by reasons (2) and (3) above are uniquely identified with the aid of the Sense Interrupt Status command. This command, when issued, resets the interrupt signal and by means of bits 5, 6, and 7 of Status Register 0 (returned during the result phase) identifies the cause of the interrupf (see Table 8). 3. Step Rate Time (SRT)-This four-bit value defines the time interval between step pulses issued by the FDC (track-to-track access time). This timer is programmable from I to 16 milliseconds in increments of I ms. The time intervals mentioned above are a direct function of the FDC clock (CLK on pin 19). Times indicated above are for an 8 MHz clock. The Specify command also indicates the choice of DMA or non-DMA operation (by means of the ND 7-106 Table 8. Interrupt Codes Seek End Interrupt Code Bit 5 Cause BitS Bit7 0 1 1 Read Line changed state, either polarity 1 0 0 Normal Termination of Seek or Recalibrate Command 1 1 0 Abnormal Termination of Seek or Recalibrate Command inter AP-116 Neither the Seek nor the Recalibrate command has a result phase. Therefore, it is mandatory to use the Sense Interrupt Status Command after these commands to effectively terminate them and to provide verification of the disk head position. When an interrupt is received by the processor, the FOC busy flag (bit 4) and the non-DMA (bit 5) may be used to distinguish the above interrupt causes: bit 5 bit 4 o 0 o Asynchronous event-(2) or (3) above Result phase-(1) above Data transfer required-(4) above A single interrupt request to the processor may, in fact, be caused by more than one of the above events. The processor should continue to issue Sense Interrupt Status commands (and service the resulting conditions) until an invalid command code is received. In this manner, all "hidden" interrupts are serviced. Recalibrate This command causes the read/write head of the disk drive to retract tothe track 0 position. The FOC clears the contents of its internal cylinder counter, and checks the status of the track 0 signal from the disk drive. As long as the track 0 signal is low, the direction signal remains high and step pulses are issued. When the track o signal goes high, the seek end flag (in Status Register 0) is set (high) and the command is terminated. If the track 0 signal is still low after 77 step pulses have been issued, the seek end and equipment check flags (in Status Register 0) are both set and the Recalibrate command is terminated. Recalibrate commands for multiple drives can be overlapped in the same manner that Seek commands are overlapped. Format Track Seek The Seek command causes the drive's read/write head to be positioned over the specified cylinder. The Foe determines the difference between the current cylinder address and the desired (specified) address, and issues the appropriate number of step pulses. If the desired cylinder address is larger than the current address, the direction signal (LeT/DIR, pin 38) is set high (stepin); the direction signal is set low (step-out) if the desired cylinder address is less than the current address. No head movement occurs (no step pulses are issued) if the desired cylinder is the same as the current cylinder. The rate at which step pulses are issued is controlled by the step rate time (SRT) in the Specify command. After each step pulse is issued, the desired cylinder address is compared against the current cylinder address. When the cylinder addresses are equal, the "seek end" flag (bit 5 in Status Register 0) is set (high) and the command is terminated. If the disk drive becomes "not ready" during the seek operation, the "not ready" flag (in Status Register 0) is set (high) and the. command is terminated. The Format Track command formats or "initializes" a track on a floppy disk by writing the ID field, gaps, and . address marks for each sector. Before issuing the Format command, the Seek command must be used to position the read/write head over the correct cylinder. In addition, a table of ID field values (cylinder, head, and sector addresses and sector length code) must be prepared before the command is executed. During command execution, the FDC accesses the table and, using the values supplied, writes each sector on the track. The 10 field address mark originates from the FOC and is written automatically as the first byte of each sector's ID field. The cylinder, head, and sector addresses are taken, in order, from the table. The ID field eRe character (derived from the data written in the first five bytes) is written as the last two bytes of the ID field. Gaps are written automatically by the FDC, with the length of the variable gap determined by one of the Format command parameters. The data field address mark is generated by the FDC and is written automatically as the first byte of the data field. The data pattern specified in the command phase is written into each data byte of each sector. A eRC character is. derived from the data address mark and the data written in the sector's data field. The two eRC bytes are appended to the last data byte. During the command phase of the Seek operation the FDC is in the FDC busy state, but during the execution phase it is in the non-busy state. While the FDC is in the non-busy state, another Seek command may be isThe formatting of a track begins at the physical index sued.. In this manner parallel seek operations may be in mari(.. As previously mentioned, the order of sector asoperation on up to four floppy disk drives at o~ce. The signment is taken directly from the formatting table. Main Status Register contains a flag for each dnve (TaFour entries are required for each sector: a cylinder ble 4) that indicates whether the associated drive is curaddress, a head address, a sector address, and a sector rently operating in the seek mode. When a drive has length code. The cylinder address in the ID field should completed a seek operation, the FDe generates an be equal to the cylinder address of the track currently interrupt. In response to this interrupt, the system softbeing formatted. ware must issue a Sense Interrupt Status command. During the result phase of this command, Status Register 0 (containing the drive number in bits 0 and 1) is read by the processor. 7-107 AP-116 The sector addresses must be unique (no two equal). The order of the sector entries in the table is the se~ quence in which sector numbers appear on thetrack when it is formatted. 'The number of entry sets (cylinder, head, and sector address and sector length code) must equal the number of sectors allocated to the track (spe7ified in the command phase). Since the sector address is supplied, in order, for each sector, tracks can be fonhatted sequentially (the first sector following the index mark is assigned sector address 1, the adjacent sector is assigned sector address2, and so on) or sector numbers can be interleaved ,(see section 3) on a track. Table 9 lists recommended gap sizes 'and sectors/track for various sector sizes. Read Data Nine (9) bytes are required to complete the command phase specification forthe Read Data command. During the execution phase, the FDe loads the head (if it is in the unloaded state), waits the specified head load time (defined in the Specify command), and begins reading ID address marks and ID fields. When the requested sector address compares with the sector address read from the disk, the FOe outputs data (from the data field) byte-by-byte to the system. The Read Data command automatically operates in the multi-sector mode described earlier. In addition, multi-track operation may be specified by means of the MT command flag (Table.5). The amount of data that can be transferred with a single command to the,FDe depends on the multi-track flag, the recording density flag, and the number of bytes per sector. During the execution of read' and write commands, the special sector size parameter (DTL) is used to temporarily alter the effective disk sector size. By setting the sector size code (N) to zero, DTL may be used to specify a sector size from 1 to 256 bytes in length. If the actual sector (on the disk) is larger than DTL specifies, only the number of bytes specified by the DTL parameter are passed to the system; the remainder of the actual disk sector is not, transferred (although the data is checked for eRe errors). Multi-sector read operations are performed.in the same manner as they are when the sector size code is non-zero. (The Nand DTL parameters are always present in the command sequence. DTL should be set to FF hexadecimal when N is not zero.) If the FDe detects the physical index mark twice without finding the requested sector, the FDe sets the "sector not found error" flag (bit 2 in Status Register 1) and terminates 'the Read Data command. The interrupt code (bits 7 and .6 of Status Register 0) is set to "01." Note that the FDe searches for each sector in a multisector operation. Therefore, a "sector not found'" error may occur after successful transfer of one or more preceding sectors. This error could occur if a particular sector number was not included when the track was first formatted or if a hard error on the disk has invalidated a sector ID field. After reading the ID field and data field in each sector, the FOe checks the eRe bytes. If a read error is detected (incorrect eRe in the ID field),-the FOe sets the "data error" flag in Status Register 1;· if a eRe error occurs in the .data field; the FDe sets the "data error" flag in Status Register 2. In either error condition, the FDe terminates· the Read Data command. The interrupt code (bits 7 and 6 in Status Register 0) is set to "01." If the FDe reads a deleted data address mark from the disk, and the skip flag (specified during the command phase) is not set, the FOe sets the "control mark" flag (bit 6 in Status Register 2) and terminates the Read Data command (after reading'all the data in the sector). If the skip flag is set, the FDe skips the sector with the deleted data address mark and reads the next sector. Thus, the skip flag may be used to cause the FOe to ignore deleted data sectors during a multi-sector read operation. Table 9. Sector Size Relationships Sector Size N Sector Size Code SC Sectorsl Track GpL(1) Gap3 Length GpL(2) Gap 3 Length FM Mode 128 bytes/Sector 256 512 00 01 02 1A(16) OF(16) 08 ' 07(16) OE(16) 1B(16) 1B(16) 2A(16) 3A(16) IBM Diskette 1 IBM Diskette 2 MFM Mode 256 512 1024 01 02 03 1A(16) OF(16) 08 OE(16) 1B(16) 35('16) 36(16) 54(16) 74(16) iBM Diskette 2D Format Remarks IBM Diskette 2D NOTES: 1. Suggested values of GPL in Read or Write commands to avoid splice point between data field and ID field of contiguous sectors, 2. Suggested values of GPL in Format command. 7-108 inter AP-116 During disk data transfers between the FDe and the system, the FDe must be serviced by the system (processor or DMA controller) every 27 f-Ls in the FM mode, and every 13 f-Ls in the MFM mode. If the FDe is not serviced within this interval, the "overrun error" flag (bit 4 in Status Register 1) is set and the Read Data command is terminated. If the processor terminates a read (or write) operation in the FDe, the ID information in the result phase is dependent upon the state of the multi-track flag and end of track byte. Table 11 shows the values for e, H, R, and N, when the processor terminates the command. Write Data Nine (9) bytes are required to complete the command phase specification for the Write Data command. During the execution phase the FDe loads the head (if it is in the unloaded state), waits the specified head load time (defined by the Specify command), and begins reading sector ID fields. When the requested sector address compares with the sector address read from the disk, the FDe reads data from the processor one byte at a time via the data bus and outputs the data to the data field of that sector. The eRe is computed on this data and two eRe bytes are written at the end of the data field. The FDe reads the ID field of each sector and checks the eRe bytes. If the FDe detects a read error (incorrect eRe) in one of the ID fields, it sets the "data error" flag (bit 5 in Status Register 1) and terminates the Write Data command. The interrupt code (bits 7 and 6 in Status Register 0) is set to "01." The Write Data command operates in much the same manner as the Read Data command. The following items are the same; refer to the Read Data command for details: • Multi-sector and Multi-track operation • Data transfer capacity • "End of track error" flag • "Sector not found error" flag • "Data error" flag • Head unload time interval • ID information when the processor terminates the command (see Table 11) • Definition of DTL when N = 0 and when N =1= 0 During the Write Data execution phase, data transfers between the processor and FDe must. occur every 31 f-Ls in the FM mode, and every 15 f-Ls in the MFM mode. If the time interval between data transfers is longer than this, the FDe sets the "overrun error" flag (bit 4 in Status Register 1) and terminates the Write Data command. Read Deleted Data This command operates in almost the same manner as the Read Data command operates. The only difference involves the treatment of the data address mark and the skip flag. When the FOe detects a data address mark at the beginning of a data field (and the skip flag is not set), the FDe reads all the data in the sector, sets the "control mark" flag (bit 6 in Status Register 2), and terminates the command. If the skip flag is set, the FDe skips the sector with the data address mark and continues reading at the next sector. Thus, the skip flag may be used to cause the FDe to read only deleted data sectors during a multi-sector read operation. Write Deleted Data This command operates in the same manner as the Write Data command operates except that a deleted data address mark is written at the beginning of the data field instead of the normal data address mark. This command is used to mark a bad sector (containing a hard error) on the floppy disk. Read Track The Read Track command is similar to the Read Data command except that the entire data field is read continuously from each of the sectors of a track. Immediately after encountering the physicai index mark, the FDe starts reading all data fields on the track as continuous blocks of data. If the FDe finds an error in the ID field or data field eRe check bytes, it continues to . read data from the track. The FOe compares the ID information read from each sector with the values specified during the command phase. If the specified ID field information is not found on the track, the "sector not found error" flag (in Status Register 1) is set. Multitrack and skip operations are not allowed with this command. This command terminates when the last sector on the track has been read. (The number of sectors on the track is specified by the end of track parameter byte during the command phase.) If the FDe does not find an ID address mark on the disk after it encounters the physical index mark for the second time; it sets the "missing address mark error"flag (bit 0 in Status Register 1) and terminates the command. The interrupt code (bits 7 and 6 of Status Register 0) is set to. "01." 7-109 inter AP-116 Table 10. Scan Status Codes ReadlD The Read IDcommand transfers (reads) the first correct ID field from the current disk track (following the physical index mark) to the processor. If no correct ID address mark is found on the track, the "missing address mark error" flag is set (bit 0 in Status Register 1). If no data mark is found on the track, the "sector not found error" flag is also set (bit 2 in Status Register 1). Either error condition causes the command to be termi. nated. Scan Commands The Scan commands allow the data being read from the disk to be compared against data supplied by the system (by the processor in non-DMA mode, and by the DMA controller in DMA mode). The FDe compares the data on a byte-by-byte basis, and searches for a sector of data that meets the conditions of "disk data equal to system data", "disk data less than or equal to system data", or "disk data greater than or equal to system data". Simple binary (ones complement) arithmetic is used for comparison (FF = largest nuinber, 00 = smallest number). If, after a complete sector of data is compared, the conditions are not met, the sector number is incremented by the scan sector increment (specified in the command phase), and the scan operation is continued. The scan operation continues until one of the following conditions occurs; the conditions for scan are met (equal, low, or high), the last sector on the track is reached, or the terminal count signal is received. . If the conditions for scan are met, the FDe sets the "scan hit" flag (bit 3 in Status Register 2) and terminates the Scan command. If the conditions for scan are not met between the starting sector and the last sector on the track (specified in the command phase), the FDe sets the "scan not satisfied" flag (bit 2 in Status Register 2) and terminates the Scan command. The receipt of a terminal count signal from the processor or DMA controller during the scan operation will cause . the FDe to complete the comparison of the particular byte which is in process, and to termiante the command. Table 10 shows the status of the "scan hit" and "scan not satisfied" flags under various scan termination conditions. If the FDe encounters a deleted data address mark in one ofthe sectors and the skip flag is low, it regards the sector as the last sector on the cylinder, sets the "control mark" flag (bit 6 in Status Register 2) and terminates the command. If the skip flag is high, the FOe skips the sector with the deleted address mark, and reads the next sector. In this case, the FOe also sets the Command . Status Register 2 Blt2 = SN Blt3 Scan Equal = SH Comments 0 1 1 0 DFDD Scan Low or Equal 0 0 1 1 0 0 DFDD Scan High or Equal 0 0 1 1 0 0 = Dprocessor DFDD 0;6 Dprocessor DFDD = Dprocessor < Dprocessor DFDD » DFDD = Dprocessor DFDD » Dprocessor Dprocessor DFDD ~ Dprocessor 'control mark" flag (bit 6 in Stauts Register 2) in order to show that a deleted seCtor had been encountered. NOTE: During scan command execution, the last sector on the track must be read for the command to terminate properly. For example if the scan sector increment is set to 2, the end of track parameter is set to 26, and the scan begins at sector 21, sectors 21, 23, and 25 will . be scanned. The next sector, 27 will not be found on the track and an abnormal command termination will occur. The command would be completed in a normal manner if either a) the scan had started at sector 20 or b) the end of track parameter had been set to 25. During the Scan command, data is supplied by the processor or DMA controller for comparison against the data read from the disk. In order to avoid having the "overrun error" flag set (bit 4 in Status Register 1); it is necessary to have the data available in less than 27 /ks (PM Mode) or 13 /ks (MFM Mode). If an overrun error occurs, the FOe terminates the command. Invalid Commands If an invalid (undefined) command is sent to the FDe, the FDe will terminate the command. No interrupt is generated by the 8272 during this condition. Bit 6 and bit 7 (DIO and RQM) in the Main Status Register are both set indicating to the processor that the 8272 is in the result phase and the contents of Status Register 0 must be read. When the processor reads Status Register o it will find an 80H code indicating that an invalid command was received. A Sense Interrupt Status command must be sent after a . Seek or Recalibrate interrupt; otherwise the FOe will consider the next command to be an invalid command. Also, when the last "hidden" interrupt has been serviced, further Sense Interrupt Status commands will re. sult in invalid command codes. 7-110 intJ AP-116 Table 11 ID Information When Processor Terminates Command MT EOT 1A OF 08 1A OF 0 08 1A OF 08 1A OF 08 1A OF 08 1A OF 1 08 1A OF 08 1A OF 08 10 Information at Result Phase Final Sector Transferred to Processor C H R N NC NC R + 1 NC C+1 NC R = 01 NC NC NC R + 1 NC C+ 1 NC R = 01 NC Sector 1 to 25 at Side 0 Sector 1 to 14 at Side 0 Sector 1 to 7 at Side 0 NC NC R+ 1 NC Sector 26 at Side 0 Sector 15 at Side 0 Sector 8 at Side 0 NC LSB R = 01 NC Sector 1 to 25 at Side 1 Sector 1 to 14 at Side 1 Sector 1 to 7 at Side 1 NC NC R + 1 NC C+ 1 LSB R = 01 NC Sector 1 to 25 at Side 0 Sector 1 to 14 at Side 0 Sector 1 to 7 at Side 0 Sector 26 at Side 0 Sector 15 at Side 0 Sector 8 at Side 0 Sector 1 to 25 at Side 1 Sector 1 to 14 at Side 1 Sector 1 to 7 at Side 1 Sector 26 at Side 1 Sector 15 at Side 1 Sector 8 at Side 1 Sector 26 at Side 1 Sector 15 at Side 1 Sector 8 at Side 1 NOTES: 1. NC (No Change): The same value as the one at the beginning of command execution. 2. LSB (Least Significant Bit): The least significant bit of H is complemented. In some applications the user may wish to use this command as a No-Op command to place the FDC in a stand-by or no operation state. 5.0 THE DATA SEPARATOR As briefly discussed in Section 2, LSI disk controllers such as the 8272 require external circuitry to generate a data window signal. This signal is used within the FDC to isolate the data bits contained within the READ DATA input signal from the disk drive. (The disk READ DATA signal is a composite signal constructed from both clock and data information.) After isolating the data bits from this input signal, the FDC assembles the data bits into 8-bit bytes for transfer to the system processor or memory. Single Density In a single-density (FM) recording (Figure 3), the bit cell is 4 microseconds wide. Each bit cell contains a clock bit at the leading edge of the cell. The data bit (if present) is always located at the center of the cell. The job of data separation is relatively straightforward for single-density; simply generate a data window 2 /Ls wide starting 1 /Ls after each clock bit.. Since every cell has a clock bit, a fixed window reference is available for every data bit and because the window is 2 /Ls wide, a slightly shifted data bit will still remain within the data window. 7-111 A single-density data separator with these specifications may be easily generated using a digital or analog one-shot triggered by the clock bit. AP-116 data frequency very closely-unpredictable bit shifts leave less than 50 ns margin to the window edges. Double-Density Double-density (MFM) bit cells are reduced to 2 JLs (in order to double the disk data storage capacity). Clock bits are inserted into the data stream only if data bits are not present in both the current and preceding bit cells (Figure 3). The data bit (if present) still occurs at the center of the bit cell and the clock bit (if present) still occurs at the leading edge of the bit cell. MFM data separation has two problems. First, only some bit cells contain a clock bit. In this manner, MFM encoding loses the fixed bit cell reference pulse present in FM encoding. Second, the bit cell for MFM is onehalf the size of the bit cell for FM. This shorter bit cell means that MRM cannot tolerate as large a playback data-shift (as FM can tolerate) without errors. Since most playback data-shift is predictable, the FDC can precompensate the write data stream so that datal clock pulses will be correctly positioned for subsequent playback. This function is completely controlled by the FDC and is only required for MFM recording. During write operations, the FDC specifies an early, normal, or late bit positioning. This timing information is specified with respect to the FDC write clock. Early and late timing is typically 125 ns to 250 ns before or after the write clock transition (depending on disk drive requirements). The data separator circuitry for double-density recording must continuously analyze the total READ DATA stream, synchronizing its operation (window generation) with the actual clockldata bits of the data stream. The data separation circuit must track the disk input Phase-Locked Loop Only an analog phase-locked loop (PLL) can provide the reliability required for a double-density data separation circuit. (A phase-locked loop is an electronic circuit that constantly analyzes the frequency of an input signal and locks another oscillator to that frequency.) Using analog PLL techniques, a data separator can be designed with ± I ns resolution (this would require a 100 MHz clock in a digital phase-locked loop). The analog PLL determines the clock and data bit positions by sampling each bit in the serial data stream. The phase relationship between a data bit and the PLL generated data window is· constantly fed back to adjust the position of the data window, enabling the PLL to track· input data frequency changes, and thereby reliably read previously recorded data from a floppy disk. PLL Design A block diagram of the phase-locked loop described in this application note is shown in Figure 7. Basically, the phase-locked loop operates by comparing the frequency of the input data (from the disk drive) against the frequency of a local oscillator. The difference of these frequencies is used to increase or decrease the frequency of the local oscillator in order to bring its frequency closer to that of the input. The PLL synchronizes the local r-__________________________________ ~ __ ~READDATA (TO FDC) DATA WINDOW (TO FDC) READ DATA (FROM DISKETTE DRIVE) VCO (FROM FDC) -----------------------.1 START LOGIC IDLE CLAMP MFM (FROMFD~ ---------------------~ 207875-8 Figure 7. Phase-Locked Loop Data Separator 7-112 inter AP-116 oscillator to the frequency of the input during the all "zeroes" synchronization field on the floppy disk (immediately preceding both the ID field and the data field. The PLL consists of nine ICs and is located on page 3 of the schematics in the Appendix. The 8272 YCO output essentially turns the PLL circuitry on and off. When the PLL is off, it "idles" at its center frequency. The YCO turns the PLL on only when valid data is being received from the disk drive. The YCO turns the PLL on after the read/write head has been loaded and the head load time has elapsed. The PLL is turned off in the gap between the ID field and the data field and in the gap after the data field (before the next sector ID field). The GPL parameter in the FDC read and write' commands specifies the elapsed time (number of data bytes) that the PLL is turned off in order to blank out discontinuities that appear in the gaps when the write current is turned on and off. The PLL operates with either MFM or FM input data. The MFM output from the FDC controls the PLL operation frequency. The PLL consists of six functional blocks as follows: I) Pulse Shaping-A 96LS02 senses a READ DATA pulse and provides a clean output signal to the FDC and to the PLL Phase Comparator and Frequency Discriminator circuitry. 2) Phase Comparator-The phase difference between the PLL oscillator and the READ DATA input is compared. Pump up (PU) and pump down (PD) error signals are derived from this phase difference and output to the filter. If there is no phase difference between the PLL oscillator and the READ DATA input, the PU and PD pulse widths are equal. If the READ DATA pulse occurs early, the PU duration is shorter than the PD duration. If the data pulse occurs late, the PU duration is longer than the PD duration. 3) Filter-This analog circuit filters the PU and PD pulses into an error voltage. This error voltage is buffered by an LM358 operational amplifier. 4. PLL Oscillator-This oscillator is composed of a 74LS393, 74LS74, and 96LS02. The oscillator frequency is controlled by the error voltage output by the filter. This oscillator also generates the data window signal to the FDC. 5. Frequency Discriminator-This logic tracks the READ DATA input from the disk drive and discriminates between the synchronization gap for FM recording (250 KHz) and the gap for MFM recording (500 KHz). Synchronization gaps immediately precede address marks. 6. Start Logic-The function of this logic is to clamp the PLL oscillator to its center frequency (2 MHz) until the FDC YCO signal is enabled and a valid data pattern is sensed by the frequency discriminator. The start logic (consisting of a 74LS393 and 74LS74) ensures that the PLL oscillator is started with zero phase error. PLL Adjustments The PLL must be initially adjusted to operate at its center frequency with the YCO output off and the adjustment jumper removed. The 5K timepot should be adjusted until the frequency at the test point (Q output of the 96LS02) is 2 MHz. The jumper should then be replaced for normal operation. PLL Design Details The following paragraphs describe the operational and design details of the phase-locked loop data separator illustrated in the appendix. Note that the analog section is operated from a separately filtered + 5Y supply. Initialization As long as the 8272 maintains a low YCO signal, the data separator logic is "turned off'. In this state, the PLL oscillator (96LS02) is not oscillating and therefore the 2XBR signal is constantly low. In addition, the pump up (PU) and pump down (PD) signals are inactive (PU low and PD high), the CNT8 signal is inactive (low), and the filter input voltage is held at 2.5 volts by two I Mn resistors between ground and + 5 volts. Floppy Disk Data The data separator freqeuncy discriminator, the input pulse shaping circuitry, and the start logic are always enabled and respond to rising edges of the READ DATA signal. The rising edge of every data bit from the disk drive triggers two pulse shaping one-shots. The first pulse shaper generates a stable and well-defined 200 ns read data pulse for input to the 8272 and other portions of the data separator logic. The second oneshot generates a 2.5 /-Ls data pulse that is used for input data frequency discrimination. The frequency discriminator operates as illustrated in Figure 8. The 2F output signal is active (high) during reception of valid MFM (double-density) sync fields on the disk while the IF signal is active (high) during reception of valid FM (single-density) sync fields. A multiplexer (controlled by the 8272 MFM signal) selects the appropriate IF or 2F signal depending on the programmed mode. 7-113 AP-116 FM BEAD DATA --.flL-----lnL....----InL....----InL....----InL....-----JrL FREQ DISC 2F LOW, IF HIGH DURING SYNC DATA INPUT (FM) MFM READ DATA '~ 2F HIGH,l F LOW DURING SYNC DATA INPUT (MFM) FREQ DISC~ Jl~)( x~ )( )( )( )( )( )( J( 207875-9 Frequency Discriminator Sample Points to Generate 1F and 2F Signals (a) FM Operation: One-Shot Times Out between Clock Pulses Figure 8. Input Data Frequency Discrimination Startup The data separator is designed to require reception of eight valid sync bits (one sync byte) before enabling the PLL oscillator and attempting to synchronize with the input data stream (see Figure 9). This delay ensures that the PLL will not erroneously synchronize outside a valid sync field in the data stream if the VCO signal is enabled slightly early. The sync bit counter is asynchronously reset by the CNTEN signal when valid sync data is not being recevied by the drive. Once the VCO signal is active and eight sync bits have been counted, the CNT8 signal is enabled. This signal turns on the PLL oscillator. Note that this oscillator starts synchronously with the rising edge of the disk input data (becasue CNT8 is synchronous with the data rising edge) and the oscillator also starts at its center frequency of 2 MHz (because the LM348 filter input is held at its center voltage of approximately 2.5 volts). This frequency is divided by two and four to generate the 2XBR signal (I MHz for MFM and 500 KHz for FM). 7-114 inter AP-116 READ DATA FREOOISC 2F~'----_ _ _ _ _ _ _ _ _ _ __ lF~ 'CN-iEN~'--_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ ...t.I_________---JJ Vco _ _ _ _ _ _ _ CNT8 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ~ PLCLK _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ~BR nnnnnnnnnnnnnrt ____________________________ ~ PDCLR _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ~ PUCLR _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _--, U U----IrLJl PU _ _ _ _ _ _ _ _ _ _ _ U LJ ----JIL.JLJ PD-~---------------------------_. DW _ _ _ _ _ _ _ _ _ _ _ 207875-10 Figure 9. Typical Data Separator Startup Timing Diagram PLL Synchronization At this point, the PLL is enabled and begins to synchronize with the input data stream. This synchronization is accomplished very simply in the following manner. The pump up (PU) signal is enabled on the rising edge of the READ DATA from the disk drive. (When the PLL is synchronized with the data stream, this point will occur at the same time as the falling edge of the 2XBR signal as shown in Figure 9). The PU Signal is turned off and the PD signal is activated on the next rising edge of the 2XBR clock. With this scheme, the difference between PU active time and the PD active time is equal to the difference between the input bit rate and the PLL clock rate. Thus, if PU is turned on longer than PD is on, the input bit rate is faster than the PLL clock. As long as PU and PD are both inactive, no charge is transferred to or from the LM358 input holding capacitor, and the PLL output frequency is maintained (the LM358 operational amplifier has a very high input impedance). Whenver PU is turned on, current flows from the + 5 volt supply through a 20K resistor into the holding capacitor. When the PD signal is turned on, current flows from the holding capacitor to ground through a 20K resistor. In this manner, both the pump up and pump down charging rates are balanced. 7-115 inter AP-116 The change in capacitor charge (and therefore voltage) after a complete PU/PD cycle is proportional to the difference between the PU and PD pulse widths and is also proportional to the frequency difference between the incoming data stream and the PLL oscillator. As the capacitor voltage is raised (PU active longer than PD), the PLL oscillator time constant (RC of the 96LS02) is modified by the filter output (LM358) to raise the oscillator frequency. As the capacitor voltage is lowered (PD active longer than PD), the oscillator frequency is lowered. If both frequencies are equal, the voltage on the holding capacitor does not change, and the PLL oscillator frequency remains constant. 6.0 AN INTELLIGENT DISKETTE DATA BASE SYSTEM The system described in this application note is designed to function as an intelligent data base controller. The schematics for this data base unit are presented in Appendix A; a block diagram of the unit is illustrated in Figure 10. As designed, the unit can access over four million bytes of mass storage on four floppy disk drives (using a single 8272 FDC); the system can easily be expanded to four FDC devices (and 16 megabytes of on-line disk storage). Three serial data links are also included. These data links may be used by CRT terminals or other microprocessor systems to access the data base. Processor and Memory A high-performance 8088.eight-bit microprocessor (operating at 5 MHz with no wait states) controls system operation. The 8088 was selected because of its memory addressing capabilities and its sophisticated string handling instructions. These features improve the speed of data base search operations. In addition, these capabilities allow the system to be easily upgraded with additional memory, disk drives, and if required, a bubble memory or Winchester disk unit. The schematics for the basic design provide 8K bytes of 2732A high-speed EPROM program storage and 8K bytes of disk directory and file buffer RAM. This memory can easily be expanded to I megabyte for performance upgrades. An 8259A Programmable Interrupt Controller (PIC) is also included in the design to field interrupts from both the serial port and the FDC. This interrupt controller provides a large degree of programming flexibility for the implementation of data base function in an asynchronous, demand driven environment. The PIC allows the system to accumulate asynchronous data base requests from all serial I/O ports while previously specified data base operations are currently in progress. This feature is made possible by the ability of the 8251A RXRDY signal to cause a processor interrupt. After receiving this interrupt, the processor can temporarily halt work on existing requests and enter the incoming information into a data base request buffer. Once the information has been entered into the buffer, the system can resume its previous processing. In addition, the PIC permits some portions of data base requests to be processed in parallel. For example, once a disk record has been loaded into a memory buffer, a memory search can proceed in parallel with the loading of the next record. After the FDC completes the record transfer, the memory search will be interrupted and the processor can begin another disk transfer before resuming the memory search. The bus structure of the system is split into three functional buffered units. A 20-bit address from the processor is latched by three-state transparent 74LS373 devices. When the processor is in control of the address and data busses, these devices are output enabled to the system buffered address bus. All I/O devices are placed directly on the local data bus. Finally, the memory data bus is isolated from the local data bus by an 8286 octal transceiver. The direction of this transceiver is determined by the Memory Read signal, while its output enable is activated by a Memory Read or M~mory Write command. 7-116 infef AP-116 ~ Ae~:~~S ~1----;:20""B""T;-A:-:D:-;:D"'R:O;ES:-;:S-=Bc.:U,,"S-l--J.,1,-1~~..,3~_~_..L...I_'2..,~~!:'_31...J~ ... PR~;~~OR fIr~··~BI'-!.T~LO~C::!A~L..!'D~AT!.!'Ac.!B!.'!U.:!.S_-l ~ 1/0 AND MEMORY COMMANDS INTA tNT HOLD t LATCHI ~ ADDRESSl= BUFFER CONTROLLER (8237'2) t I-- ~ L-.-- ~ I 110 AND MEMORY ADDRESS DECODE CS RD,WR,CS 1 .. DATA BUS TRANSCEIVER (8286) I HLDA. DMA DRO fD'R I-I-- 1 DACK I-- RD,WR,CS - I}--------I 8·81T LOCAL DATA 8U,,,S_ _ _-.-_ _-, I---+-+----'Jj ~ ......-'---'........ f.-- r FLEXIBLE DlSKETIe CONTROLLER 1-----1 PROGRAMMABlEI-+--- Q 1I f;EAD :~~~MFM I RECEIVERS L..,~~"'-~.-T~ r1t r--- lU:~:~ PHASE LOCKED LOOP ,.---.1-1.-_-.., BAUD d~~~~~~r~R I-+--- S~~~~i I~~:~~~S I-+-- GENReA;:TOR (8253 pm 1.259A PICI I-+--I -L -_ _ _- I DATA 16272FDC) IPLLI DATA L..--RxO L..--_hD '------R'D SEPA· ~ READY '----INDEX WRITE PROTECT '------TWO SIDED L..-----FAULT L..-----_TRACK 0 L.._ _ _ _ _ _ _ READ DATA DRIVERS I, I DRIVE SElECT L _ _ _ _ DIRECTION L - - - - _ STEP L ' - - - - - - _ WRITE GATE _ _ _ _ ___. FAULT RESET ' - - - - - - - - _ LOW CURRENT L.._ _ _ _ _ _ _ _ _ SIDE SELECT ' - - - - - - - - - - HEAD LOAD ' - - - - - - - - - - . - WRITE DATA 207875-11 Figure 10. Intelligent Data Base Block Diagram Serial 1/0 The three RS-232-C compatible serial I/O ports operate at software-programmable baud rates to 19,2K, Each I/O port is controlled by an 8251A USART (Universal Synchronous/Asynchronous Receiver/Transmitter), Each USART is individually programmable for operation in many synchronous and asynchronous serial data transmission formats (including IBM Bi-sync), In operation, USART error detection circuits can check for parity, data overrun, and framing errors, An 8253 Programmable Interval Timer is employed to generate the baud rates for the serial I/O ports, The Transmitter Read and Receiver Ready output signals of the 825 lAs are routed to the interrupt inputs of the 8259A interrupt controller. These signals interrupt processor execution when a data byte is received by a USART and also when the USART is ready to accept another data byte for transmission, DMA The 8272 FDC interfaces to system memory by means of an 8237-2 high-speed DMA controller, Transfers between the disk controller and memory also operate with 7-117 infef AP-116 no wait states when 2114-3 (150 ns) or faster static RAM is used. In operation, the 8272 presents a DMA request to the 8237 for every byte of data to be transferred. This request causes the 8273 to present a HOLD request to the 8088. As soon as the 8088 is able to relinquish data/address bus control, the processor signals a HOLD acknowledge to the 8237. The 8237 then assumes control over the data and address busses. After latching the address for the DMA transfer, the 8237 generates simultaneous I/O Read and Memory Write commands (for a disk read) or simultaneous I/O Write and Memory Read commands (for a disk write). At the same time, the 8272 is selected as the I/O device by means of the DMA acknowledge signal from the 8237. After this single byte has been transferred between the FDC and memory, the DMA controller releases the data/address busses to the 8088 by deactivating the HOLD request. In a short period of time (13 /ks for double-density and 27 /ks for single-density) the FDC requests a subsequent data transfer. This transfer occurs in exactly the same manner as the previous transfer. After all data transfers have been completed (specified by the word count programmed into the 8237 before the FDC operation was initiated), the 8237 signals a terminal count (EOP pin). This terminal count signal informs the 8272 that the data transfer is complete. Upon reception of this terminal count signal, the 8272 halts DMA requests and initiates an "operation complete" interrupt. Since the system is designed for a 20-bit addressing, a four-bit DMA-address latch is included as a processor addressable I/O port. The processor writes the upper four DMA address bits before a data transfer. When the DMA controller assumes bus control, the contents of this latch are output enabled on the upper four bits of the address bus. The only restriction in the use of this address latch is that a single disk read or write transfer cannot cross a 64K memory boundary. The 8272 write clock (WR CLK) is generated by a ring counter/multiplexer combination. The write clock frequency is I MHz for MFM recording and 500 KHz for FM recording (selected by the MFM output of the 8272). The pulse width is a constant 250 ns. The write clock is constantly generated and input to the FDC (during both read and write operations). The FDC write enable output (WE) is transmitted directly to the write gate disk drive input. Write data to the disk drive is preshifted (according to the PSO, PSI FDC outputs) by the combination of a 74LSI75 four-bit latch and a 74LSI53 multiplexer. The amount of preshift is completely controlled within the 8272 FDC. Three cases are possible: the data may be written one clock cycle early, one clock cycle late, or with no preshift. The datapreshift circuit is activated by the FDC only in the double-density mode. The preshift is required to cancel predictable playback data shifts when recorded data is later read from the floppy disk. A single 50-conductor flat cable connects the board to the floppy disk drives. FDC outputs are driven by 7438 ' open collector high-current line-drivers. These drivers are resistively terminated on the last disk drive by means of a 1500. resistor to + 5V. The line receivers are 7414 Schmitt triggered inverters with 1500. pull-up resistors on board. 7.0 SPECIAL CONSIDERATIONS This section contains a quick review of key features and issues, most of which have been mentioned in other sections of this application note. Before designing with the 8272 FDC, it is advisable that the information in this section be completely understood. 7.1 Multi-Sector Transfers Disk Drive Interface The 8272 FDC may be interfaced to a maximum of four eight-inch floppy disk drives. Both single- and double-density drives are accommodated using the data separation circuit described in section 5. In addition, single- or dual-sided disk drives may be used. The 8272· is driven by an 8 MHz crystal controller clock produced by an 8224 clock generator. Drive select signals are decoded by means of a 74LS139 from the DSO, DSI outputs of the FDC. The fault reset, step, low current, and direction outputs to the disk drives are generated from the FR/STEP, LCT/DIR, and RW /SEEK FDC output signals by means of a 74LS240. The other half of the 74LS240 functions as an input multiplexer for the disk write protect, two-sided, fault, and track zero status signals. These signals are multiplexed into the WP/TS and FLT/TRKO inputs to the 8272. The 8272 always operates in a multi-sector transfer mode. The 8272 continues to transfer data until the TC input is activated. In a DMA configuration, the TC input of the 8272 must always be connected to the EOP/TC output of the DMA controller. When multiple DMA channels are used on a single DMA controller, EOP must be gated with the select signal for the proper FDC. If the TCD signal is not gated, a terminal count on another channel will abort FDC operation. In a processor driven configuration with no DMA controller, the system must count the transfers and supply a TC signal to the FDC. In a DMA environment, ORing a programmable TC with the TC from the DMA controller is a convenient means of ensuring that the processor may always gain control of the FDC (even if the diskette system hangs up in an abnormal manner). 7-118 inter AP-116 7.2 Processor Command/Result Phase Interface In the command phase, the processor must write the exact number of parameters in the exact order shown in Table 5. During the result phase, the processor must read the complete result status. For example, the Format Track command requires six command bytes and presents seven result bytes. The 8272 will not accept a new command until all result bytes are read. Note that the number of command and result bytes varies from command-to-command. Command and result phases cannot be shortened. During both the command and result phases, the Main Status Register must be read by the processor before each byte of information is read from, or written to, the FDC Data Register. Before each command byte is written, DIO (bit 6) must be low (indicating a data transfer. f~o~ t~e processor) and RQM (bit 7) must be high (mdlcatmg that the FOC is ready for data). During the result phase, DIO must be high (indicating a data transfer to the processor) and RQM must also be high (indicating that data is ready for the processor). NOTE: After the 8272 receives a command byte, the RQM flag may remain set for 12 microseconds (with an 8 MHz clock). Software should not attempt to read the Main Status Register before this time interval has elapsed; otherwise, the software will erroneously assume that the FDC is ready to accept the next byte. 7.3 Sector Sizes power-on, the FDC assumes that all drives are not ready. If a drive application requires that the ready line be strapped active, the FDC will generate an interrupt immediately after power is applied. 7.7 Gap Length Only the gap 3 size is software programmable. All other gap sizes are fixed. In addition, different gap 3 sizes must be specified in format, read, write, and scan commands. Refer to Section 3 and Table 9 for gap size recommendations. 7.8 Seek Command The drive busy flag in the Main Status Register remains set after a Seek command is issued until the Sense Interrupt Status command is issued (following reception of the seek complete interrupt). . The FDC does not perform implied seeks. Before issuing data read or write commands, the read/write head must be positioned over the correct cylinder. If the head is not positioned correctly, a cylinder address error is generated. After issuing a step pulse, the 8272 resumes drive status polling. For correct stepper operation in this mode, the stepper motor must be constantly enabled. (Most drives provide a jumper to permit the stepper motor to be constantly enabled.) 7.9 Step Rate The 8272 does not support 128 byte sectors in the MFM (double-density) mode. 7.4 Write Clock The FDC Write Clock input (WR eLK) must be present at all times. The 8272 can emit a step pulse that is one millisecond faster than the rate programmed by the SRT parameter in the Specify command. This action may cause subsequent sector not found errors. The step rate time should be programmed to be 1 ms longer than the step rate time· required by the drive. 7.10 Cable Length 7.5 Reset The FDC Reset input (RST) must be held active during power-on reset while the RD and WR inputs are active. If the reset input becomes inactive while RD and WR are still active, the 8272 enters the test mode. Once activated, the test mode can only be deactivated by a power-down condition. A cable length of less than 10 feet is recommended for drive interfacing. 7.11 Scan Commands The current 8272 has several problems when using the scan commands. These commands should· not be used at this time. 7.6 Drive Status The 8272 constantly polls (starting after the power-on reset) all drives for changes in the drive ready status. At 7-119 infef AP-116 7.12 Interrupts 7.14 Bad Track Maintenance When the processor receives an interrupt from the FDC, the FDC may be reporting one of two distinct events: The 8272 does not internally maintain bad track inforniation. The maintenance of this information must be performed by system software. As an example, of typical bad track operation, assume that a media test determines that track 31 and. track 66 of a given floppy disk are bad. When the disk is formatted for use, the system software formats physcial track 0 as logical cylinder 0 (C = 0 in the command phase parameters), physic~1 track 1 as logical track 1 (C = 1), and so on, until physical track 30 is formatted as logical cylinder 30 (C = 30). Physical track 31 is bad and should be formatted as logical cylinder FF (indicating a bad track). Next, physical track 32 is formatted as logical cylinder 31, and so on, until physical track 67 is formatted as logical cylinder 64. Next, bad physical track 66 is formatted as logcial cylinder FF (another bad track marker), and physical track 67 is formatted as logical cylinder 65. This formatting continues until the last physical track (77) is formatted as logical cylinder 75. Normally, after this formatting is complete, the bad track information is stored in a prespecified area on the floppy disk (typically in a sector on track 0) so that the system will be able to recreate the bad track information when the disk is removed from the drive and reinserted at some later time. a) The beginning of the result phase of a previously requested read, write, or scan command. b) An asynchronous event such as a seek/recalibrate completion, an'attention, an abnormal command termination, or an invalid command. These two cases are distinguished by the FDC busy flag (bit 4) in the Main Status Register. If the FDC busy flag is high, the interrupt is of type (a). If the FDC busy flag is low, the interrupt was caused by an asynchronous event (b). A single interrupt from the FDC may signal more than one of the above events. After receiving an interrupt, the processor must continue to issue Sense Interrupt Status commands (and service the resulting conditions) until an invalid command code is received. In this manner, all "hidden" interrupts are ferreted out and serviced. 7.13 Skip Flag (SK) The skip flag is used during the execution of Read Data, Read Deleted Data, Read Track, and various Scan commands. This flag permits the FDC to skip unwanted sectors on a disk track. When performing a Read Data, Read Track, or Scan command, a high SK flag indicates that the FDC is to skip over (not transfer) any sector containing a deleted data address mark. A low SK flag indicates that the FDC is to terminate the command (after reading all the data in the sector) when a deleted data address mark is encountered. When performing a Read Deleted Data command, a high SK flag indicates that sectors containing nor!ll~1 data address marks are to be skipped. Note that hIS IS just the opposite situation from that described in the last paragraph. When a data address mark is encountered during a Read Deleted Data command (and the SK flag is low), the FDC terminates the command after reading all the data in the sector. To illustrate how,the system software performs a transfer operation disk with bad tracks, assume that the disk drive head is positioned at track 0 and the disk described above is loaded into the drive. If a command to read track 36 is issued by an application program, the system software translates this read command into a seek to physical track 37 (since there is one bad track between 0 and 36, namely 31) followed by a read of logical cylinder 36. Thus, the cylinder parameter C is set to 37 for the Seek command and 36 for the Read Sector command. 7.15 Head Load versus Head Settle Times The 8272 does not permit separate specification of the head load time and the head settle time. When the Specify command is issued for a given disk drive, the proper value for the HLT parameter is the maximum of the head load time and the head settle time. 7-120 inter AP-116 APPENDIX A SCHEMATICS Power Distribution Part Ref Desig +5 GND 8088 8224 8237-2 8251A 8253-5 8259A 8272 8284 8286 2114 2732A 74LSOO 74LS04 74LS27 74LS32 74LS74 74LS138 74LS139 74LS153 74LS157 74LS164 74LS173 74LS175 74 LS240 74 LS257 74LS367 74LS373 74LS393 74S08 74S138 7414 7438 1488 1489 96LS02 96LS02 LM358 A2 16 A6 A9, 89, C9 A10 810 010 A1 86,F4 F1, F2, G1, G2, H1, H2, 11, 12 01,02 E1 82,E6,E8,F8 E2,E5 81 A4,G5, H6 F3 E10 13 F6 F5 G3 G4 G10 03 C3,E9 84,C4,04,C6 15, F7 E4 06,E3 H7 H8,H9,H10 H3 H4 G7 G6 H5 40 9,16 31 26 24 28 40 18 20 18 24 14 14 14 14 14 16 16 16 16 14 16 16 20 16 16 20 14 14 16 14 14 1,20 8 20 4 12 14 20 9 10 9 12 7 7 7 7 7 8 8 8 8 7 8 8 10 8· 8 10 7 7 8 7 7 7 7 8 14 16 REFERENCES 1) Intel, "8272 SinglelDouble Density Floppy Disk Controller Data Sheet," Intel Corporation, 1980. 2) Intel, iSBC 208 Hardware Reference Manual, Man- . ual Order No. 143078, Intel Corporation, 1980. 3) 'Intel, iSBC 204 Flexible Diskette Controller Hardware Reference Manual, Manual Order No. 9800568A, Intel Corporation, 1978. 7-121 +12 -12 14 1 16 8 8 4 4) Shugart, SA800/801 Diskette Storage Drive OEM Manual, Part No. 50574, Shugart Associates, 1977. 5) Shugart, SA800/801 Diskette Storage Drive Theory of Operations, Part No. 50664, Shugart Associates, 1977. 6) Shugart, SA800 Series Diskette Storage Drive Double Density Design Guide, Part No. 39000, Shugart Associates, 1977. inter AP-116 7) Shugart, "Application Notes for Shugart Dual VFO," Part No. 39101, Shugart Associates, 1980. 8) Pertec, "Soft'sector Formatting forPERTEC Fl~x ible Disk Drives," Pertec Application Note, 1977. 9) Ausing Lesea and Rodnay Zaks, "Floppy-disc Controller Design Must Begin With the Basics," EDN, May 20, 1978. 10) John Hoeppner and Larry Wall, "Encoding/Decoding Techniques Double Floppy Disc Capacity," Computer Design, Feb 1980. 11) John Zarrella, System Architecture, Microcomputer Applications, 1980. HOL HDL ,. 0"'1"''''------''"1 ... I"'..!.....--~~ 1'-"'0""_--'-1., 1'-"'''--403 .. .... ========'a:;SET , AD' i5Ii RESET RO ""'=======~ " ORlan ORQ --"""",..:I FRISTEPP'!!.' 1=;,.£>;;--.,..--' LeTIDIR :18 flWlsElEk ~-----------~~ INT12 - - - -_ _ _ _ _--',;..! EO' ---------"'-1 ~I"!!.'----------------~-----------t--'~~ n ,. 30 2 14 r'-----------IHf-------"'"ls 2~S tat;":-t+---';J':2 A 175 3Ob......t--'l I'"~--.,...::'-I""::10 13 LSI53 . W'CLK~=t============~=== 'W 32 FLmAkO ,, LSO< , 74,. READ DATA l.:..!!J--+------''i?..,·'-------------t~I:f:)G__J " 207875-12 7-122 AP-116 HDL DSELO OIIl!LO IKvI"1IIlm Diiiil'1ri:.'lm Dsn, "'u os... ST1!P iiOIinii:im iiiiif'ifiR'B . ... 7Q114'1.CSI ISEL flIE. " DIRECTJON SlLiCT i'fiJ WiiiiEciiii: tiiii£.f'1iIiil ~ SlDESELII;CT HIEAOLOAD 7431(4PLC&) WRaT r-~======================================~------------{.!D. ~ ..... . ,ez • ,co 15 Ie, +SVA ty!"------r-:rHi1..:..--+--' 31 tel I . ," 10 IS . Z Mtb NOM F. t.. 2'A s 1T F. ...... LS'" • 21 7 .,.n • 2A 31 LSG"c ,• " " 207875-13 7-123 AP-116 ADO·~7-- ____________________________________ ~ ______________________________________________ AD. A".. A A03 A". , ADS A" A.. 1'-''''''-----,' 01 AD1 +.V _--'lfW-~--""'1GATE2 ,. W! • - DO lAUD RATE DIVlScmS ... _ lAUD RATE OEHEAATOR '1200 400 lOG 300 150 110 1 32 .." 128 ,,. 512 1024 1311 GATE1 L...!!. 8'· OATEO ClK2 OUTOl"lO'-_ _ ____, 15 elKl .--------+--=-fl CLKO AXl 20 A1 AX.O " OUT1 13 + ' -______________ OUT2r17:-----.., '--------------~----t__ AD CS AD WR ~-----------------+_~----4_~-~------_-------+ ~------------------------------------+_4--------~r_t__4---------------------------~ ~------------------------------------4__4--------~~+__4---------------------------4_ AX~AX1.------------------------------------4_-L--~~~·--_4~+__4---------------------------4_ PCLK------------------------------------+-----------~r_ho_4~---------------------- r:: C' ~S~SI __--~ . ~------------------------------------------------~~~~~.~~~~." ~-----------------~------------------------~~------------------------mw----------------___________ -+_ _ _ _ _ _ _ _ _ _ _ ____ AEsn------------___________--------------------__------~--+_--__-------------------~ ~D1----------------------------------------~------------_,---------------------- MW-----------------------------______________________________-+_________________ ~-----------------------------~------------, ~--------------------------------------~---.., ~12 r'''''''------------'i ' r;---;; o!.5 ~13 ~~----------~2 • AX" (,-"=------------'-13 C 5138 , .","""-____ ~~__--'-I. Q1 ~" v • • Vj~~~~.!.....--~$ !J l.," ~" • ~~~~~2----!.~ou !.I AX" 028 ~17 AX" E1 L'" (2PLCS) E3 ~~ ~ oE Fa FA FI ~~ Fe ~o FD ~ Y7~ PRO""MAij'jjRESS DECODe bj" 1..L F.;1------------.., ~ ~ ~ CE OE C, OE A11 ~ ,732A ~ 01 ~ ..... " ~ ~ ~ AXle 13 '"""'I AX" AX" ~ ~12 ~ AX11 ~ ~ 1 ~1' ~ ~ AD -- D7~ FFO" PROGRAM MEMORY 207875-14 7-124 ~ ~ AX1S oo~ ~ ~ ~" AX" ~ E2 3 • • AP-116 ADO ,.27 DO AD2 -... .... .... ,... A. . BAUD RATE DIVlSOAS 1200 300 150 " AD' " A. . ". 121 125'A A. AD' .251" 512 , e. RESET RD " 1024 SERIAL PORTS 1251A B. 0' WR AO 20 elK ... , 2 TXD3 ,... AXCI ~ 330PF TXD2 , ,... ,'''' AXD2 ~ 330PF .".• ... TXDI 10 RXCI , ~ 330PF '---------------INT513A '----------------INT513T '---------------------INT512R --INTS12T l --INT511A --INT511T 10 AX" ~ ~ 1081' ~'~""'" AXI, 13 E2 II lS04 AX" AXI. AX" AX12 AX" AXIO 4 , ~ . ." ., 52 AX' AX. so " ". "" :~~1 , e y, ,• , 3 .2B E' F3 lS27 2 .. WE 15 A9 AX. 10 53 ., AX7 AXI 54 AX3 sa AX' AXO ., AlC2 ", , , • · ., F1 15 .. t A Axe '"-- AX' " ", AX8 AX' AX. AX' AlC2 AX' AXO H' " H2 " " " 00" D' 12 0' D4 .. D• 'AO AX. B l,JJ 2 F2 .2 .. " 2 12 ·, i · 3 i I ~ ~ § Q ~ ~DO " .. 03 0' 0' DO DATA MEMORY 'AO ~ WE J~ J.: J:2 J:, J : J:' ]:' J:, 207875-15 7-125 inter AP-116 ... :?i.. t;. . T,., MH .. D '.'''~ 1 '''''J RElET 10 AI RUDY 5 r peLK U! II.NIfi XI ••• 21 RESET eLK " .... 10K .If; .. FlDY! ClYNe RDV2 "., AEN2 y, AI .. • ~ A11 37 22 READY A1. 11 ~ • Dl 'DO AX. a," A142 "", AI 14 DI 01" as 11 • 13 04" , ,. A A 02' 00' D7 ....••" 13 1M ' AD4 12 , AD3 13 .. • D' A02 • ADt II ADO ,. ....... .,. D' ,• DO. I HOLD 31 os" ., AXO , ~ Dl - LS" A• • ADI AD' AlL.. AI' - AS'I .,!- .. L.. AlL - ' 1- - ~. " 0 AD' DO ' ...,. . . r-J! "T 0." " " 11 AX3 AD. AD. D' ",7 • 01 II .1 AD. AD. 04" LS31I e. '00 14 85 IS . . .., D. • D. • 0' I DE GO 2 eL" ~Di ,y . lias 12 04 AX' ....., 15 04" "l LhI' ALE 25 HLDA .. 07 ,. "DO "," '02 AXe AD, G Dr 1. "01 AX" 01 I "DO 11! 1. Q7 OE 03 " '•DDlO " -" C4 D2 , I~' ~ AXil 04" LS31' '01 AI' -.. 01" as 01' 00' "07 .,0 ,• I 1M A1,JI AI • A1, 5 ,Y ... "". . " .. ..". " • ",. ... ,, .., .., Lan 02' l , "!,. ~ f~ O• • ' D, , D. .,,31 CLle 2 PCLK •• .... . ~7 L:' • • INTIII , • INTA 'OK (2PLCSJ .sv : f'OK(3PLCSI 101M 21 ,. L-- ~7......3 l' co , .'V 100"M ~-I, ~ ~o.1"FNrt .'VA f. 4.7"F .1 J 1 GND RD l!z_ WR . .MI ,. Lf--!f-! . ~ " ~" .. "V DE . . Ll257 .. D' " ,. L.!! .,V »_.....__(3:.22:..:P1.::'..l=_I~_I>--_I>--_u..,'. AIR l 2 lASEL IV • 2V' ,.' m 10k 4Y 12 J. 207875-16 7-126 AP-116 I LRE~ f.- 511~. L~ .. . " .J! 07 0 e: Q .J! .J! 05 ~Q4 LS373 ....! CI 02 07 tI .. " DS ,,, D' ' • D' ' D1 01 ...1 .. DO' ..u., ~II' .. ',. .... ~1I5 ...!!84 ~B:J ....g IX - II -1! ., .J! IG, ~ 21 DII1 AD • n AD. A•• AD' AD' AD1 ADO .. " DAEOO 30 ala .. • AI • OEAO 1 *1 CS II DACKO ..• f= IX -I2S''''3 .. " ... T ....... " 11 YO cs'" 10 Cffi2 " COS" CI,. 12 YO ., YO 13 C553 " ~~ • .. ' .. IRO " IAI ,. "DO 10 DI IOR~ p:- 1R2 ti!-- IN T1Z INT511R - - - I• T511T I D. IR' INT512ft I D' I" .. Z2 IN T512'1 I D. 21 IR. IRS 2" 1251A .'0 IN T513R INT513T IR7~ WAPi- r--- • 01 AD' ACm D ..x= cs " ADO 10 MWPi--MR DO DREOl2 IS EI IDW YS sn. , 1X -I2SIA 10K EDO ::~ ~A 5X-125'A'2 1231·2 AI II ,." " " " ""'AD .,' 0: -1251A" 21 .. A' AS fl OREal , ~C ~. 3X-1272 " " DRECa A' I AI • 12 • AEN AD, OMA UPPER ADDRESS ax-uP DREO, • ADSTI ,,! -! 01-1237·2 12 elK SO< -! 03 RESET 110 PORTS • D' RD~ 7 HLDA 10 HAC READY I 17 INT " +5V~ INT.. EO AXO-AXII .. ' ' .. '., '., ADO A01 AD' A" AD. I .. , A. . AD' +5V • A7 T " 10K m (3PLCS) , .. F4 .. ...,., I" IG .... 'M AD' ADO·AD7 1 M DO DI ~ ~ •• ~~ •• . II 13 .OE I7 I" DO D' .t' " f'~DO QO~ ~DI Ls,n QI~ ~D2 Q2~ ~D:J Q3~ • ., ., ., 'r . DO .0, MR W .. LSDI LS3I' ~PLCS) ... ,. ' ........ 1~' C, 13 12 iiii 10 MW '...]0.' 'It 207875-17 7-127 APPLICATION NOTE AP-121 November 1986 Software Design and Implementation of Floppy Disk Subsystems Order Number: 207885-001 7-128 inter AP-121 1.0 INTRODUCTION Disk interface software is a major contributor to the efficient and reliable operation of a floppy disk subsystem. This software must be a well-designed compromise between the needs of the application software inodules and the capabilities of the floppy disk controller (FDC). In an effort to meet these requirements, the implementation of disk interface software is often divided into several levels of abstraction. The purpose of this application note is to define these software interface levels and describe the design and implementation of a modular and flexible software driver for the 8272 FDC. This note is a companion to AP-116, "An Intelligent Data Base System Using the 8272". The Physical Interface Level The software interface level closest to the FDC hardware is referred to as the physical interface level. At this level, interface modules (often called disk drivers or disk handlers) communicate directly with the FDC device. Disk drivers accept floppy disk commands from other software modules, control and monitor the FDC execution of the commands, and finally return operational status information (at command termination) to the requesting modules. 4) The requirement to support a software interface that is independent of the type of disk attached to the system. In this case, a system generated ("logical") disk address (drive, head, cylinder, and sector num~ bers) must be mapped into a physical floppy disk address. For example, to switch between single- and dual-sided disks, it may be easier and more cost-effective for the software to treat the dual-sided disk as containing twice as many sectors per track (52) rather than as having two sides. With this technique, accesses to sectors I through 26 are mapped onto head 0 while accesses to sectors 27 through 52 are mapped onto head 1. 5) The necessity of supporting a bad track map. Since bad tracks depend on the disk media, the bad track mapping varies from disk to disk. In general, the system and application software should not be concerned with calculating bad track parameters. Instead, these software modules should refer to cylinders logically (0 through 76). The logical interface level procedures must map these cylinders into physical cylinder positions in order to avoid the bad tracks. In order to perform these functions, the drivers must support the bitlbyte level FDC interface for status and data transfers. In addition, the drivers must field, classify, and service a variety of FDC interrupts. The key to logical interface software design is the mapping of the "logical disk interface" (as seen by the application software) into the "physical disk interface" (as implemented by the floppy disk drivers). This logical to physical mapping is tightly coupled to system software design and the mapping serves to isolate both applications and system software from the peculiarities of the FDC device. Typical logical interface procedures are described in Table 1. The Logical Interface Level The File System Interface Level System and application software modules often specify disk operation parameters that are not directly compatible with the FDC device. This software incompatibility is typically caused by one of the following: 1) The change from an existing FDC to a functionally equivalent design. Replacing a TTL based controller with an LSI device is an example of a change that may result in software incompatibilities. 2) The upgrade of an existing FDC subsystem to a higher capability design. An expansion from a single-sided, single-density system to a dual-sided, double-density system to increase .data storage capacity is' an example of such a system change. 3) The abstraction of the disk software interface to avoid redundancy. Many FDC parameters (in particular the density, gap size, number of sectors per track and number of bytes per sector) are fixed for a floppy disk (after formatting). In fact, in many systems these parameters are never changed during the life of the system. The file system typically comprises the highest level of disk interface software used by application programs. The file system is designed to treat the disk as a collection of named data areas (known as files). These files are cataloged in the disk directory. File system interface software permits the creation of new files and the deletion of existing files under software control. When a file is created, its name and disk address are entered into the directory; when a file is deleted, its name is removed from the directory. Application software requests the use of a file by executing ari OPEN function. Once opened, a file is normally reserved for use by the requesting program or task and'the file cannot be reopened by other tasks. When a task no longer needs to use an open file, the task closes the file, releasing it for use by other tasks. Most file systems also support a s.et of file attributes that can be specified for each file. File attributes may be used to protect files (e.g., the WRITE PROTECT attri- 7-129 AP-121 bute ensures that an existing file cannot accidentally be overwritten} and to supply system configuration information (e.g., a FORMAT attribute may specify that a file should automatically be created on a new disk when the disk is formatted). At the file system interface level, application programs need not be explicitly aware of disk storage allocation techniques, block sizes,.or file coding strategies. Only a "file name" must be presented in order to open, read or write, and subsequently close a file. Typical file system functions are listed in Table 2. Table 1 Examples of Logical Interface Procedures Description Name FORMAT DISK Controls physical disk formatting for all tracks ona disk. Formatting adds FDC recognized cylinder, head, and sector addresses as well as address marks and data synchronization fields (gaps) to the floppy disk media. RECALIBRATE Moves the disk read/write head to track 0 (at the outside edge of the diskr SEEK Moves the disk read/write head to a specified logical cylinder. The logical and physical cylinder numbers may be different if bad track mapping is used. READ STATUS Indicates the status of the floppy disk drive and media. One important use of this procedure is to determine whether a floppy disk is dual~ . sided. READ SECTOR Reads one or more cOl1)plete sectors starting at a specified disk address (drive, head, cylinder, and sector). WRITE SECTOR Writes one or more complete sectors starting at a specified disk address (drive, head, cylinder, and sector). Table 2 Disk File System Functions Name Description OPEN Prepare a file for processing. If the file is to be opened for input and the file name is not found in the directory, an error is generated. If the file is opened for output and the file name is not found in the directory, the file is automatically created. CLOSE Terminate processing of an open file.· READ Transfer Data from an open file to memory. The READ function is often designed to buffer one or more sectors of data from the disk drive and supply this data to the requesting program, as requited. WRITE Transfer data from memory to an open file. The WRITE function is often designed to buffer data from the application program until enough data is available to fill a disk sector. CREATE Initial.ize a file and enter its name and attributes into the file directory. DELETE Remove a file from the directory and release its storage space. RENAME Change the name of a file in the directory. ATIRIBUTE Change the attributes of a file. LOAD Read a file of executable code into memory. INITDISK Initialize a disk by formatting the media and establishing the directory file, the bit map file, and other system files. 7-130 inter AP-121 Scope of this Note Foe Data Transfer Interface This application note directly addresses the logical and physical interface levels. A complete 8272 driver (including interrupt service software) is listed in Appendix A. In addition, examples of recalibrate, seek, format, read, and write logical interface level procedures are included as part of the exerciser program found in Appendix B. Wherever ,possible, specific hardware configuration dependencies are parametized to provide maximum flexibility without requiring major software changes. Three distinct software interface techniques may be used to interface system memory to the FDe device during sector data transfers: 1) DMA-In a DMA implementation, the software is only required to set up the DMA controller memory address and transfer count, and to initiate the data transfer. The DMA controller hardware handshakes with the processor/system bus in order to perform each data transfer. 2) Interrupt Driven-The FDe generates an interrupt when a data byte is ready to be transferred to memory, or when a data byte is needed from memory. It is the software's responsibility to perform appropriate memory reads/writes in order to transfer data from/ to the FDe upon receipt of the interrupt. 3) Polling-Software responsibilities in the polling mode are identical to the responsibilities in the interrupt driven mode. The polling mode, however, is used when interrupt service overhead (context switching) is too large to support the disk data rate. In this mode, the software determines when to transfer data by continually polling a data request status flag in the FDe status register. 2.0 Disk 110 Techniques One of the most important software aspects of disk interfacing is the fixed sector size. (Sector sizes are fixed when the disk is formatted.) Individual bytes of disk storage cannot be read/written; instead, complete sectors must be transferred between the floppy disk and system memory. Selection of the appropriate sector size involves a tradeoff between memory size, disk storage efficiency, and disk transfer efficiency. Basically, the following factors must be weighed: I) Memory size. The larger the sector size, the iarger the memory· area that must be reserved for use during disk I/O transfers. For example, a IK byte disk sector size requires that at least one IK memory block be reserved for disk I/O. 2) Disk Storage efficiency. Both very large and very small sectors can waste disk storage space as follows. In disk file systems, space must be allocated somewhere on the disk to link the sectors of each file together. If most files are composed of many small sectors, a large amount of linkage overhead information is required. At the other extreme, when most files are smaller than a single disk sector, a large amount of space is wasted at the end of each sector. 3) Disk transfer efficiency. A file composed of a few large sectors can be transferred to/from memory more efficiently (faster and with less overhead) than a file composed of many small sectors. Balancing these considerations requires knowledge of the intended system applications. Typically, for general purpose systems, sector sizes from 128 bytes to lK bytes are used. For compatibility between single-density and double-density recording with the 8272 floppy disk controller, 256 byte sectors or 512 byte sectors are most useful. 7-131 The DMA mode has the advantage of permitting the processor to continue executing instructions while a disk transfer is in progress. (This capability is especially useful in mUltiprogramming environments when the operating system is designed to permit other tasks to execute while a program is waiting for I/O.) Modes 2 and 3 are often combined and described as non-DMA operating modes. Non-DMA modes have the advantage of significantly lower system cost, but are often performance limited for double-density systems (where data bytes must be transferred to/from the FDe every 16 microseconds). Overlapped Operations Some FDe devices support simultaneous disk operations on more than one disk drive. Normally seek and recalibrate operations can be overlapped in this manner. Since seek operations on most floppy drives are extremely slow, this mode of operation can often be used by the system software to reduce overall disk access times. . inter AP-121 Buffers The buffer concept is an extremely important element in· advanced disk I/O strategies. A buffer is nothing more than a memory area containing the same amount of data as a disk sector contains. Generally, when an application program requests data from a disk, the system software allocates a buffer (memory area) and transfers the data from the appropriate disk sector into the buffer. The address of the buffer is then returned to the application software. In the same manner, after the application program has filled a buffer for output, the buffer address is passed to the system software, which writes data from the buffer into a disk sector. In multitasking systems, multiple buffers may be allocated from I! buffer pool. In these systems, the disk controller is often requested to read ahead and fill additional data buffers while the application software is processing a previous buffer. Using this technique, system software attempts to fill buffers before they are needed by the appliCation programs, thereby eliminating program waits during I/O transfers. Figure 1 illustrates the use of multiple buffers in a ring configuration. BUFFER #4 EMPTY BUFFER #3 EMPTY BUFFER #2 EMPTY BUFFER #1 BEING FILLED DATA FLOW FROM DISK INTO BUFFER DISK DRIVE DISK SUBSYSTEM 207885-1 NOTE: a) The first disk read request by the application software causes the disk subsystem to begin filling ·the first empty buffer. The application software must wait until the buffer is filled before it may continue execution. Figure 1. Using Multiple Memory Buffers for Disk I/O 7-132 AP-121 APPLICATION SOFTWARE BUFFER #1 BEING EMPTIED BUFFER #4 EMPTY BUFFER #3 EMPTY BUFFER #2 BEING FILLED DATA FLOW FROM DISK INTO BUFFER I ~_~_~_~ ~I------------~~~ L _____ DISK SUBSYSTEM ______ 207885-2 NOTE: b) After the first buffer is filled, the disk system continues to transfer disk data into the next buffer while the application software begins operating on the first full buffer. Figure 1. Using Multiple Memory Buffers for Disk 1/0 (Continued) 7·133 inter AP-121 APPLICATION SOFTWARE t BUFFER #1 BEING EMPTIED BUFFER #2 FULL BUFFER #3 FULL BUFFER #4 FULL NO DISK TRANSFER ACTIVE DISK SUBSYSTEM 207885-3 NOTE: c) When all empty buffers have been filled, disk activity is stopped until the application software releases one or more buffers for reuse. . Figure 1. Using Multiple Memory Buffers for Disk 110 (Continued) 7-134 AP-121 APPLICATION SOFTWARE BUFFER #2 BEING EMPTIED BUFFER #3 FULL BUFFER #4 FULL BUFFER #.1 BEING FILLED DATA FLOW FROM DISK INTO BUFFER DISK DRIVE DISK SUBSYSTEM 207885-4 NOTE: d) When the application software releases a buffer (for reuse), the disk subsystem begins a disk sector read to refill the buffer. This strategy. attempts to anticipate application software needs by maintaining a sufficient number of full data buffers in order to minimize data transfer delays. If disk data is already in memory when the application software requests it, no disk transfer delays are incurred. Figure 1. Using Multiple Memory Buffers for Disk I/O (Continued) 7-135 AP-121 3.0 THE 8272 FLOPPY DISK CONTROLLER The 8272 is a single-chip LSI Floppy Disk Controller (FDC) that implements both single- and double-density floppy disk storage subsystems (with up to four dualsided disk drives per FOC). The 8272 supports the IBM 3740 single-density recording format (FM) and the IBM System 34 double-density recording format (MFM). The 8272 accepts and executes high-level disk commands such as format track, seek, read sector, and write sector. All data synchronization and error checking is automatically performed by the FOC to ensure reliable data storage and subsequent retrieval. The 8272 interfaces to microprocessor systems with or without Direct Memory Access (DMA) capabilities and also in- ' terfaces to a large number of commercially available floppy disk drives. FI~ppy Disk Commands The 8272 executes fifteen high-level disk interface commands: Specify Sense Drive Status Sense Interrupt Status Seek Recalibrate Format Track Read Data Read Deleted Data Write Data Write Deleted Data Read Track Read ID Scan Equal Scan High or Equal Scan Low or Equal Result Phase: FDC in the preceding command phase. The execution phase normally ends when the last data byte is transferred to/from the disk or when an error occurs. After completion of the disk operation, status and other housekeeping information are made available to the driver software. After this information is read, the FOC reenters the command phase and is ready to accept another commapd. Interface Registers To support information transfer between the FOC and the system software, the 8272 contains two 8-bit registers: the Main Status Register and the Data Register. The Main Status Register (read only) contains FCD status information and may be accessed at any time. The Main Status Register (Table 3) provides the system processor with the status of each disk drive, the status of the FOC, and the status of the processor interface. The Data Register (read/write) stores data, commands, parameters, and disk drive status information. The Data Register is used to program the FDC during the command phase and to obtain result information after completion of FDC operations. In addition to the Main Status Register, the FOC contains four additional status registers (STO, STl, ST2, and ST3): These registers are only available during the result phase of a command. Each command is initiated· by a multi-byte transfer from the driver software to the FOC (the transferred bytes contain command and parameter information). After complete command specification, the FDC automatically executes the command. The command result data (after execution of the command) may require a multi-byte transfer of status information back to the driver. It is convenient to consider each FDC command as consisting of the following three phases: Command Phase: The driver transfers to the FDC all the information required to perform a particular disk operation. The 8272 automatically enters the command phase after RESET and following the completion of the result phase (if any) of a previous command. Execution Phase: The FOC performs the operation as instructed. The execution phase is entered immediately after the last command parameter is written to the Command/Result Phases Table 4 lists the 8272 command set. For each of the fifteen commands, command and result phase data transfers are listed. A list of abbreviations used in the table is given in Table 5, and the contents of the result status registers (STO-ST3) are illustrated in Table 6. The bytes of data which are sent to the 8272 by the drivers during the command phase, and are read out of the 8272 in the result phase, must occur in the order shown in Table 4. That is, the command·code must be sent first and the other bytes sent in the prescribed sequence. All bytes of the command and result phases .. must be read/written as described. After the last byte of data in the command phase is sent to the 8272 the execution phase automatically starts. In a similar fashion, when the last byte of data is read from the 8272 in the result phase, the result phase is automatically ended and the 8272 reenters the command phase. It is important to note that during the result phase all bytes shown in Table 4 must be read. The Read Data 7-136 intJ AP-121 command, for example, has seven bytes of data in the result phase. All seven bytes must be read in order to successfully complete the Read Data command. The 8272 will not accept a new command until all seven bytes have been read. The number of command and result bytes varies from command-to-command. In order to read data from, or write data to, the Data Register during the command and result phases, the software driver must examine the Main Status Register to determine if the Data Register is available. The DIO (bit 6) and RQM (bit 7) flags in the Main Status Regis- ter must be low and high, respectively, before each byte of the command word may be written into the 8272. Many of the commands require multiple bytes, and as a result, the Main Status Register must be read prior to each byte transfer to the 8272. To read status bytes during the result phase, DIO and RQM in the Main Status Register must both be high. Note, checking the Main Status Register in this manner before each byte transfer to/from the 8272 is required only in the command and result phases, and is NOT required during the execution phase. Table 3. Main Status Register Bit Definitions Bit Number Symbol 0 DoB Disk Drive 0 Busy. Disk Drive 0 is seeking. Description 1 D1B Disk Drive 1 Busy. Disk Drive 1 is seeking. 2 D2B Disk Drive 2 Busy. Disk Drive 2 is seeking. 3 D3B Disk Drive 3 Busy. Disk Drive 3 is seeking. 4 GB FDG Busy. A read or write command is in progress. 5 NDM Non-DMA Mode. The FDG is in the non-DMA mode when this flag is set (1). This flag is set only during the execution phase of commands in the non-DMA mode. Transition of this flag to a zero (O) indicates that the execution phase has ended. 6 DIO Data Input/Output. Indicates the direction of a data transfer between the FDG and the Data Register. When DIO is set (1), data is read from the Data Register by the processor; when DIO is reset (0), data is written from the processor to the Data Register. 7 ROM Request for Master. When set (1), this flag indicates that the Data Register is ready to send data to, or receive data from, the processor. 7-137 AP-121 Table 4. 8272 Command Set DATA BUS PHASE RfW 0., D. D. D. D. DATA D2 D, DO REMARKS PHASE RfW D, D. D. D. READ DATA Command W W W W W W W W W MT MFM 5K 0 0 0 0 0 _____ C ~ D. D2 D, DO 0 HOS OSI DSO Command Command Codes Sector 10 informallon prior to Command execution A ~N EOT _ _ _ _ GPL __ ,_ _ _ _ _ _ ~ OIL Data transfer Execution between the FOD W W W W W W W W W 0 MFM SK 0 0 0 0 0 0 0 0 HOS oSl OSO C ______ H A N ______ A STO ST' ST' C _______ A A A A OTl _ _ _-_ _ Dala transfer Elecution between the FOD and the main·system. FOC reads the complete track contents from the physical index mark to EOT execution aller command Result execution -~~- REAO DELETED DATA Command W W W W W W W MT MFM SK 0 0 0 0 1 Command Codes 1 0 HoS oSt 050 C _____ H _____ _ _ _ _ _~ W W A N ECI GPl' _ _ _ _ _ DTl _ _ _ _ _ _ -r-Command W W _____ A A A A A _ _ _ _ _ H _______ A N W W W W W W W W W MT MFM 0 Result H _ _-_ _ _ _ A AEAo 10 0 MFM 0 0 , 1 0 A A A H A _____ N Command Command Codes EOT GPl _ _ _ _ __ - _ _ OTl A A _ _ _ _ _ STO _ _ _ _ 571 ST2 C Seclor 10 information alter Command execution WAITE DELETED OAT A W W W W W W W W W 0 MT MFM 0 , Result _H _____ A N ~. __ A R A A A A STO S71 ST2 C H A N Sector 10 information during Execution Phase 0 MFM 0 0 1 -- Command Codes HOS OSI DSO Bytes/Sector SeClorsITrack Gap 3 Filter Byle N SC GPL 0 FDC formalS an entire track A A A A _ _ _ _ ~ STO 571 ST2 ____ C ---~ Status information after Command eKecution In this case, the ID information has no meaning H A N W W W W MT MFM SK W W W W ___ w Sector 10 information prior to Command execution 0 0 Command Codes 0 0 Result Stalus information after Command execution Sector 10 information after Command eKecution HDS OS! DSO C Sector 10 information prior to Command eKecutlon H A ~_N_ EOT GPl _ _ _ _ _ _ _ _ STP ______ ~ Execution Data transfer between the FDO and the main-system A Status mformation after Command eKecution SCAN EQUAL Command Command Codes EOT GPl OTl Execution W W W W W W R A A HDS DSI esc ,_ _ _ _ _ _ C H A N ___ ---- EKecution Status information aller Command execution STO 571 ST2 C H A N A A Command Codes 0 HDS DSI oSO R Sector 10 informalion prior to Command execution C ------- Sector 10 Informahon alter Command execution The first correct 10 information on the track is stored in Data Register A A A A Sector ID information aller Command eKecution Data transler between the mainsyslem and the FOD A A Result after Command execution FORMAT A TRACK 0 1 0 HOS 051 050 EKecution Command Status mformation __________ N _ _-_ _ _ WAITE DATA Result STO EKeculion Status information after Command execution STO 571 ST2 C A A Command .~ _ _ _ _ _ STl ST 2 C __ Data transfer between the FDD and the main-system Execution Result A A A A A A A Sector 10 informalion prior to Command execution Sector 10 information prior 10 Command execution EOT Stalus information aller Command Sector 10 information H A A A Command Codes _ _ _ _ GPL _ _ _ _ _ _ and the main·system Result I REMARKS REAO A TRACK , , ____ H ____ aus Data compared between the FOD and the main-system STO 571 ST2 C H R N Stalus mformation alter Command execution Sector 10 information aller Command eKecution 207885-34 NOTE: 1. AO = Uor all operations. 7-138 infef AP-121 Table 4. 8272 Command Set (Continued) DATA BUS DATA. BUS I-P_H_A_S_E_,-RJW_...l...D-",---D-,.,-D-,.-.:D-=.-.:D.":3,---D!,2,---D,!-D::O~_".::.E... M_A" ..."...S_ _ _-I PHASE RECAUBRATE SCAN LOW OR EQUAL Command W MT MFM SK WOO 0 w W 1 Command Codes 0 HOS OSt C _ _ _ _ _ . H _________ W Command eso A ________ ~ __ Sector 10 information prior Command eKecutlon o Head retracted 10 Track 0 ~ -.=~ ______ E~T ~=~===-_ _ _ _ _ .. ____ GPL .___ ~ __ ._______ _ Command W _ _ _ _ ,___ SIP Result A , Command Codes _ _ _ _ _ _ 51 0 ___ "__ ~_~ C _ _ _ __ Oata compared Execution ~~~Wt~~n~~~n~~~tem A A A R A A A _______ STO ___ . _ __ ___ _ _ Sf 1 _ _ _ _ _ _ _ ST 2 ____ _ Status information alter Command execution HR - - - - _ _ _ _ _ _ _ N _ _ _ _ _ _~ Sector 10 informalion after Command execution ~ ======: _ _ _ _ _ C ______ _ SPECIFY Command a HOS OSl OSO ~ ===-==-=-=-=- ~ ===== W W Sector 10 informalion prior Command execution SENSE DRIVE STATUS Command R : R R W W Command Codes o HOS OSl 050 _ _ _ _ _ ST 3 _ _ _ _ __ Status Information about the FDD II-::----:T--:-:-c-,-:--____---:-~__seEK -:-__- ____-r:_-__:___- - j Command W WOO W _____ C 1 1 HOS OS1 050 Command Codes Head is pOSitioned over proper Cylinder Oata compared between the FOO and the main· system R NO Timer Settings HLT Execution OPL __ __ __ ___ STP _ Execution R SPT _ ... _____ .. _ _ _ HUT If----,.--,.------------,.-------I _ _ _ _ _ EDT _ _ _ __ =====- Command Codes W W W I--c::-o-m-m-.-nd-'-:-:wC-"M:-:T::-:-M~F~M~S~K---'------,-,r:c,-o-m-m-.n-d-,C,-o-,-d.-'--11 Result WOO 0 0 W ____ C Status information at the end of each seek operation about the II------'----'------==::c----'---'--FD-C------j r------L---L----~S~C~A~N~H~'O~H~O~R~E~a~U~A~L~~'-------------11 Result eso SENSE INTERRUPT STATUS A ResuU OSI EllecutlOn W W Command Codes W W ST 0 _ _ _ _ _ ST 1 _ _ _ _ _ ST 2 _ _ _ ------ on Diskette INVALID II-:c,--om-m-.nd."...."w,..-,--_-_-_-:-'n-,.lid Code, Status information alter Command execution ~ ~- Sector 10 information A N after Command execution Result - - - - - - 5T 0 - - - - - Invalid Command Codes (NoOp- FOC goes into Standby State) ST 0= 80 (16) 207885-35 NOTE: 1. AO = 1 for all operations. 7-139 intJ Symbol G D DSO, DS1 DTL EOT GPL H HLT HUT MFM MT N ND R SG SK SAT STO, ST1, ST2, ST3 STP AP-121 Table 5 Command/Result Parameter Abbreviations Description CYLINDER ADDRESS. The currently selected cylinder address (0 to 76) on the disk. DATA PATTERN. The pattern to be written in each sector data field during formatting. DISK DRIVE SELECT. DS1 DSO 0 0 Drive 0 0 1 Drive 1 1 0 Drive 2 1 1 Drive 3 SPECIAL SECTOR SIZE. During the execution of disk read/write commands, this parameter is used to temporarily alter the effective disk sector size. By setting N to zero, DTL may be used to specify a sector size from 1 to 256 bytes in length. If the actual sector (on the disk) is larger than DTL specifies, the . remainder of the actual sector is not passed to the system during read commands; during write commands, the remainder of the actual sector is written with all-zeroes bytes. DTL should be set to FF hexadecimal when N is not zero. END OF TRACK. The final sector number of the current track. GAP LENGTH. The gap 3 size. (Gap 3 is the space between sectors). HEAD ADDRESS. Selected head: 0 or 1 (disk side 0 or 1, respectively) as encoded in the sector ID field. HEAD LOAD TIME. Defines the time interval that the FOG waits after loading the head before initiating the read or write operation. Programmable from 2 to 254 milliseconds (in increments of 2 ms). HEAD UNLOAD TIME. Defines the time interval from the end of the execution phase (of a read or write command) until the head is unloaded. Programmable from 16 to 240 milliseconds (in increments of 16 ms). MFM/FM MODE SELECTOR. Selects MFM double-density recording mode when high, FM single- . density mode when low. MULTI-TRACK SELECTOR. When set, this flag selects the multi-track operating mode. In this mode (used only with dual-sided disks), the FDG treats a complete cylinder (under both read/write head 0 and read/write head 1) as a single track. The FDG operates as if this expanded track started at the first sector under head 0 and ended at the last sector under head 1. With this flag set (high), a multi-sector read operation will automatically continue to the first/sector under head 1 when the FDG finishes operating on the last sector under head o. SECTOR SIZE CODE. The number of data bytes within a sector. NON-DMA MODE FLAG. When set (1), this flag inidcates that the FDG is to operate in the non-DMA mode. In this mode, the processor participates in each data transfer (by means of an interrupt or by polling the ROM flag in the Main Status Register). When reset (0), the FDG interfaces to a DMA controller. SECTOR ADDRESS. Specifies the sector number to be read or written. In multi-sector transfers, this parameter specifies the sector number of the first sector to be read or written. NUMBER OF SECTORS PER TRACK. Specifies the number of sectors per track to be initialized by the Format Track command. SKIP FLAG. When this flag is set, sectors containing deleted data address marks will automatically be skipped during the execution of multi-sector Read Data or Scan commands. In the same manner, a sector containing a data address mark will automatically be skipped during the execution of a multisector Read Deleted Data command. STEP RAT!: INTERVAL. Defines the time interval between step pulses issued by the FDG (track-to-track access time). Programmable from 1 to 16 milliseconds (in increments of 1 ms). STATUS REGISTER 0-3. Registers within the FDG that store status information after a command has been executed. This status information is available to the processor during the Result Phase after command execution. These registers may only be read after a command has been executed (in the exact order shown in Table 4 for each command). These registers should not be confused with the Main Status Register. SCAN SECTOR INCREMENT. During Scan operations, this parameter is added to the current sector number in order to determine the next sector to be scanned .. 7-140 Ap·121 Table 6. Status Register Definitions Bit Number Symbol Description STATUS REGISTER 0 7,6 IC INTERRUPT CODE. 00- Normal termination of command. The specified command was properly executed and completed without error. 01-Abnormal termination of command. Command execution was started but could not be successfully completed. 1O-Invalid command. The requested command could not be executed. 11- Abnormal termination. During command execution, the disk drive ready signal changed state. 5 SE SEEK END. This flag is set (1) when the FOC has completed the Seek command and the read/write head is positioned over the correct cylinder. 4 EC EQUIPMENT CHECK ERROR. This flag is set (1) if a fault signal is received from the disk drive or if the track 0 signal is not received from the disk drive after 77 step pulses (Recalibrate command). 3 NR NOT READY ERROR. This flag is set if a read or write command is issued and either the drive is not ready or the command specifies side 1 (head 1) of a single-sided disk. 2 H 1,0 OS1,OSO HEAD ADDRESS. The head address at the time of the interrupt. DRIVE SELECT. The number of the drive selected at the time of the interrupt. STATUS REGISTER 1 7 EN 6 END OF TRACK ERROR. This flag is set if the FOC attempts to access a sector beyond the final sector of the track. UNDEFINED 5 DE DATA ERROR. Set when the FOC detects a CRC error in either the 10 field or the data field of a sector. 4 OR OVERRUN ERROR. Set (during data transfers) if the FOC does not receive OMA or processor service within the specified time interval. 3 UNDEFINED 2 NO SECTOR NOT FOUND ERROR. This flag is set by any of the following conditions. a) The FOC cannot locate the sector specified in the Read Data, Read Deleted Data, or Scan command. b) The FOC cann,ot locate the starting sector specified in the Read Track command. c) The FOC cannot read the 10 field without error during a Read 10 command. 1 NW WRITE PROTECT ERROR. This flag is set if the FOC detects a write protect signal from the disk drive during the execution of a Write Data, Write Deleted Data, or Format Track command. 0 MA MISSING ADDRESS MARK ERROR. This flag is set by either of the followin!;j conditions: a) The FOC cannot detect the 10 address mark on the specified track (after two rotations of the disk). b) The FOC cannot detect the data address mark or deleted data address mark on the specified track. (See also the MO bit of Status Register 2.) 7-141 intJ AP-121 Table 6. Status Register Definitions (Continued) Bit Number Symbol Description STATUS REGISTER 2 UNDEFINED 7 6 CM CONTROL MARK. This flag is set when the FDC encounters one of the following conditions: a) A deleted data address mark during the execution of a Read Data or Scan command. b) A data address mark during the execution of a Read Deleted Data command. 5 DD DATA ERROR. Set (1) when theFDC detects a CRC error in a sector data field. This flag is not set when a CRC error is detected in the ID field. 4 WC CYLINDER ADDRESS ERROR. Set when the cylinder address from ~he disk sector ID field is different from the current cylinder address maintained within the FDC. 3 SH SCAN HiT. Set during the execution of the Scan command if the scan condition is satisfied. 2 SN SCAN NOT SATISFIED. Set during execution of the Scan command if the FDC cannot locate a sector on the specified cylinder that satisfies the scan condition. 1 BC BAD TRACK ERROR. Set when the cylinder address from the disk sector ID field is FF hexadecimal and this cylinder address is different from the current cylinder address maintained within the FDC. This all "ones" cylinder number indicates a bad track (one containing hard errors) according to the IBM softsectored format specifications. 0 MD MISSING DATA ADDRESS MARK ERROR. Set if the FDC cannot detect a data address mark or deleted data address mark on the specified track. STATUS REGISTER 3 7 FT FAULT. This flag indicates the status of the fault signal from the selected disk drive. S WP WRITE PROTECTED. This flag indicates the status of the write protect signal from the selected disk drive. 5 RDY READY. This flag indicates the status of the ready signal from the selected disk drive. 4 TO 3 TS , TWO-SIDED. This flag indicates the status of the two-sided signal from the selected disk drive. 2 H HEAD ADDRESS. This flag indicates the status of the side select signal for the currently selected disk drive. 1,0 DS1, DSO TRACK o. This flag indicates the status of the track 0 signal from the selected disk drive. DRIVE SELECT. Indicates the currently selected disk drive number. 7-142 AP-121 Execution Phase All data transfers to (or from) the floppy drive occur during the execution phase. The 8272 has two primary modes of operation for data transfers (selected by the specify command): I) DMA mode 2) non-DMA mode In the DMA mode, execution phase data transfers are handled by the DMA controller hardware (invisible to the driver software). The driver software, however, must set all appropriate DMA controller registers prior to the beginning of the disk operation. An interrupt is generated by the 8272 after the last data transfer, indicating the completion of the execution phase, and the beginning of the result phase. In the non-DMA mode, transfer requests are indicated by generation of an interrupt and by activation of the RQM flag (bit 7 in the Main Status Register). The interrupt signal can be used for interrupt-driven systems and RQM can be used for polled systems. The driver software must respond to the transfer request by reading data from, or writing data to, the FDC. After completing the last transfer, the 8272 generates an interrupt to indicate the beginning of the result phase. In the non-DMA mode, the processor must activate the "terminal count" (TC) signal to the FDC (normally by means of an I/O port) after the transfer request for the last data byte has been received (by the driver) and before the appropriate data byte has been read from (or written to) the FDe. the TC input is normally set by the DMA controller. In the non-DMA mode, the processor directly controls the FDC TC input as previously described. Once the TC input is received, the FDC stops requesting data transfers (from the system software or DMA controller). The FDC, however, continues to read data from, or write data to, the floppy disk until the end of the current disk sector. During a disk read operation, the data read from the disk (after reception of the TC input) is discarded, but the data CRC is checked for errors; during a disk write operation, the remainder of the sector is filled with all-zero bytes. If the TC signal is not received before the last byte of the current sector has been transferred to/from the system, the FDC increments the sector number by one and initiates a read or write command for this new disk sector. The FDC is also designed to operate in a multi-track mode for dual-sided disks. In the multi-track mode (specified by means of the MT flag in the command byte-Table 4) the FDC will automatically increment the head address (from 0 to 1) when the last sector (on the track under head 0) has been read or written. Reading or writing is then continued on the first sector (sector 1) of head 1. Drive Status Polling In either mode of operation (DMA or non-DMA), the. execution phase ends when a "terminal count" signal is sensed by the FDC, when the last sector on a track (the EOT parameter-Table 4) has been read or written, or when an error occurs. After the power-on reset, the 8272 automatically enters a drive status polling mode. If a change in drive status is detected (all drives are assumed to be "not ready" at power-on), an interrupt is generated. The 8272 continues this status polling between command executions (and between step pulses in the Seek command). In this manner, the 8272 automatically notifies the system software whenever a floppy disk is inserted, removed, or changed by the operator. Multi-Sector and Multi-Track Transfers Command Details During disk read/write transfers (Read Data, Write Data, Read Deleted Data, and Write Deleted Data), the FDC will continue to transfer data from sequential sectors until the TC input is sensed. In the DMA mode, During the command phase, the Main Status Register must be polled by the driver software before each byte is written into the Data Register. The DIO (bit 6) and RQM (bit 7) flags in the Main Status Register must be 7-143 intJ AP-121 low and high, respectively, before each byte of the command may be written into the 8272. The beginning of the execution phase for any of these commands will cause DIO to be set high and RQM to be set low. ure the drivers for operation in a polled environment are discussed. INITIALIZE$DRIVERS Operation of the FDC commands is described in detail in Application Note AP-116, "An Intelligent Data Base System Using the 8272". Invalid Commands This initialization procedure must be called before any FDC operations are attempted. This module initializes the DRIVE$READY, DRIVE$STATUS$CHANGE, and OPERAOPERATION$IN$PROGRESS, TION$COMPLETE arrays as well as the GLOBAL$DRIVE$NO variable. If an invalid (undefined) command is sent to the FDC, the FDC will terminate the command. No interrupt is generated by the 8272 during this condition. Bit 6 and bit 7 (010 and RQM) in the Main Status Register are both set indicating to the processor that the 8272 is in the result phase and the contents of Status Register 0 must be read. When the processor reads Status Register o it will find an 80H code indicating that an invalid command was received. The driver software in Appendix B checks each requested command and will not issue an invalid command to the 8272. A Sense Interrupt Status command must be sent after a Seek or Recalibrate interrupt; otherwise' the FDC will consider the next command to be an invalid command. Also, when the last "hidden" interrupt has been serviced, further Sense Interrupt Status commands will result in invalid command codes. 4.0 8272 PHYSICAL INTERFACE SOFTWARE PL/M software driver listings for the 8272 FDC are contained in Appendix A. These drivers have been designed to operate in a DMA environment (as described in Application Note AP-116, "An Intelligent Data Base System Using the 8272"). In the following paragraphs, each driver procedure is described. (A description of the driver data base variables is given in Table 7.) In addition, the modifications necessary to reconfig- EXECUTE$DOCB This procedure contains the main 8272 driver control software and handles the execution of a complete FDC command. EXECUTE$DOCB is called with two parameters: a) a pointer to a disk operation control block and b) a pointer to a result status byte. The format of the disk operation control block is illustrated in Figure 2 and the result status codes are described in Table 8. Before starting the command phase for the specified disk operation, the command is checked for validity and to determine whether the FDC is busy. (For an overlapped operation, if the FDC BUSY flag is set-in the Main Status Register-the command cannot be started; non-overlapped operations cannot be started if the FDC BUSY flag is set, if any drive is in the process of seeking/recalibrating, or if an operation is currently in progress on the specified drive.) After these checks are made, interrupts are disabled in order to set the OPERATION$IN$PROGRESS flag, reset the OPERATION$COMPLETE flag, load a pointer to the current operation control block into the OPERATION$DOCB$PTR array and set GLOBAL$DRIVE$NO (if a non-overlapped operation is to be started). At this point, parameters from the operation control block are output to the DMA controller and the FDC 7-144 Ap·121 command phase is initiated. After completion of the command phase, a test is made to determine the type of result phase required for the current operation. If no result phase is needed, control is immediately returned to the calling program. If an immediate result phase is required, the result bytes are input from the FOC. Otherwise, the CPU waits until the OPERA- TION$COMPLETE flag is set (by the interrupt service procedure). Finally, if an error is detected in the result status code (from the FOC), an FOC operation error is reported to the calling program. Table 7. Driver Data Base Name Description ORIVE$REAOY A public array containing the current "ready" status of each drive. ORIVE$STATUS$CHANGE A public array containing a flag for each drive. The appropriate flag is set whenever the ready status of a drive changes. OPERATION$OOCB$PTR An internal array of pointers to the operation control block currently in progress for each drive. OPERATION$IN$PROGRESS An internal array used by the driver procedures to determine if a disk operation is in progress on a given drive. OPERATION$COMPLETE An internal array used by the driver procedures to determine when the execution phase of a disk operation is complete. GLOBAL$ORIVE$NO A data byte that records the current drive number for nonoverlapped disk operations. VALlO$COMMANO A constant flag array that indicates whether a specified FOC command code is valid. COMMANO$LENGTH A constant byte array specifying the number of command/ parameter bytes to be transferred to the FOC during the command phase. ORIVE$NO$PRESENT A constant flag array that indicates whether a drive number is encoded into an FOC command. OVERLAP$OPERATION A constant flag array that indicates whether an FOC command can be overlapped with other commands. NO$RESULT A constant flag array that is used to determine when an FOC operation does not have a result phase. IMMEO$RESULT A constant flag array that indicates that anFOC operation has a result phase beginning immediately after the command phase is complete. POSSIBLE$ERROR A constant flag array that indicates if an FOC operation should be checked for an error status indication during the result phase. 7-145 AP-121 Address . Offset Disk Operation Control Block (DOCB) o DMA$OP DMA$ADDR 3 DMA$ADDR$EXT 4 DMA$COUNT 6 DISK$COMMAND (0) 7 DISK$COMMAND (1) 8 DISK$COMMAND (2) 9 DISK$COMMAND (3) 10 DISK$COMMAND (4) 11 DISK$COMMAND (5) 12 DISK$COMMAND (6) 13 DISK$COMMAND (7) 14 DISK$COMMAND (8) 15 DISK$RESULT (0) 16 DISK$RESULT (1) 17 DISK$RESULT (2) 18 DISK$RESULT (3) 19 DISK$RESULT (4) 20 DISK$RESULT (5) 21 DISK$RESULT (6) 22 MISC I I Figure 2. Disk Operation Control Block (DOC B) Format Table 8. EXECUTE$DOCB Return Status Codes Code Description 0 NO ERRORS. The specified operation was completed without error. 1 FDC BUSY. The requested operation cannot be started. This error occurs if an attempt is made to start an operation before the previous operation is completed. 2 FDC ERROR. An error was detected by the FOG during the execution phase of a disk operation. Additional error information is contained in the result data portion of the disk operation control block (DOGB.DISK$RESULT) as described in the 8272 data sheet. This error occurs whenever the 8272 reports an execution phase error (e.g., missing address mark). 3 8272 COMMAND INTERFACE ERROR. An 8272 interfacing error was detected during the command phase. This error occurs when the command phase of a disk. operation cannot be successfully completed (e.g., incorrect setting of the 010 flag in the Main Status Register). 4 8272 RESULT INTERFACE ERROR. An 8272 interfacing error was detected during the result phase. This error occurs when the result phase of a disk operation cannot be successfully completed (e.g., incorrect setting of the 010 flag in the Main Status Register). 5 INVALID FDC COMMAND. 7-146 intJ AP-121 FDCINT This procedure performs all interrupt processing for the 8272 interface drivers. Basically, two types of interrupts are generated by the 8272: (a) an interrupt that signals the end of a command execution phase and the beginning of the result phase and (b) an interrupt that signals the completion of an overlapped operation or the occurrence of an unexpected event (e.g., change in the drive "ready" status). An interrupt of type (a) is indicated when the FDC BUSY flag is set (in the Main Status Register). When a type (a) interrupt is sensed, the result bytes are read from the 8272 and placed in the result portion of the disk operation control block, the appropriate OPERATION$COMPLETE flag is set, and the OPERATION$IN$PROGRESS flag is reset. When an interrupt of type (b) is indicated (FDC not busy), a sense interrupt status command is issued (to the FDC). The upper two bits of the result status register (Status Register Zero-STO) are used to determine the cause of the interrupt. The following four cases are possible: I) Operation Complete. An overlapped operation is complete. The drive number is found in the lower two bits of STO. The STO data is transferred to the active operation control block, the OPERATION$COMPLETE flag is set, and the OPERATION$IN$PROGRESS flag is reset. 2) Abnormal Termination. A disk operation has abnormally terminated. The drive number is found in the lower two bits of STO. The STO data is transferred to OPERAthe active control block, the TION$COMPLETE flag is set, and the OPERATION$IN$PROGRESS flag is reset. 3) Invalid Command. The execution of an invalid command (i.e., a sense interrupt command with no interrupt pending) has been attempted. This interrupt signals the successful completion of all interrupt processing. 4) Drive Status Change. A change has occurred in the "ready" status of a disk drive. The drive number is found in the lower two bits of STO. The DRIVE$READY flag for this disk drive is set to the new drive "ready" status and the DRIVE$STATUS$CHANGE flag for the drive is also set. In addition, if a command is currently in progress, the STO data is transferred to the active control block, the OPERATION$COMPLETE flag is set, and the OPERATION$IN$PROGRESS flag is reset. After processing a type (b) interrupt, additional sense interrupt status commands must be issued and processed until an "invalid command" result is returned from the FDC. This action guarantees that all "hidden" interrupts are serviced. In addition to the major driver procedures described above, a number of support procedures are required. These support routines are briefly described in the following paragraphs. OUTPUTSCONTROLS$TO$DMA This procedure outputs the DMA mode, the DMA address, and the DMA word count to the 8237 DMA controller. In addition, the upper four bits of the 20-bit DMA address are output to the address extension latch. Finally, the disk DMA channel is started. OUTPUTSCOMMAND$TO$FDC This software module outputs a complete disk command to the 8272 FDC. The number of required command/parameter bytes is found in the COMMAND$LENGTH table. The appropriate bytes are output one at a time (by calls to OUTPUT$BYTE$TO$FDC) from the command portion of the disk operation control block. INPUT$RESULT$FROM$FDC This procedure is used to read result phase status information from the disk controller. At most, seven bytes are read. In order to read each byte, a call is made to INPUT$BYTE$FROM$FDC. When the last byte has been read, a check is made to insure that the FDC is no longer busy. OUTPUT$BVTE$TO$FDC This software is used to output a single command/parameter byte to the FDC. This procedure waits until the FDC is ready for a command byte and then outputs the byte to the FDC data port. INPUT$BVTE$FROM$FDC This procedure inputs a single result byte from the FDC. The software waits until the FDC is ready to transfer a result byte and then reads the byte from the FDC data port. FDC$READV$FOR$COMMAND This procedure assures that the FDC is ready to accept a command/parameter byte by performing the following three steps. First, a small time interval (more than 20 microseconds) is inserted to assure that the RQM flag has time to become valid (after the last byte transfer). Second, the master request flag (RQM) is polled until it is activated by the FDC. Finally, the DIO flag is checked to ensure that it is properly set for FDC input (from the processor). 7-147 inter AP-121 FDC$READY$FOR$RESULT The operation of this procedure is similar to the FDC$READY$FOR$COMMAND with the following exception. If the FDC BUSY flag (in the Main Status Register) is not set, the result phase is complete and no more data is available from the FDe. Otherwise, the procedure waits for the RQM flag and checks the DIO flag for FDC output (to the processor). The exerciser program is written to operate a standard single-sided 8" floppy disk drive in either the single- or double-density recording mode. Only the eight parameters listed in Table 9 must be specified. All other parameters are derived from these 8 basic variables. Each of these logical interface procedures is described in the following paragraphs (refer to the listing in Appendix B). OPERATION$CLEAN$UP SPECIFY This procedure is called after the execution of a disk operation that has no result phase. OPERA TION$CLEAN$UP resets the OPERA TION$IN$PROGRESS flag and the GLOBAL$DRIVE$NO variable if appropriate. This procedure is also called to clean up after some disk operation errors. This procedure sets the FDC signal timing so that the FDC will interface correctly to the attached disk drive. The SPECIFY procedure requires four parameters, the step rate (SRT), head load time (HLT), head unload time (HUT), and the non-DMA mode flag (ND). This procedure builds a disk operation control block (SPECIFY$DOCB) and passes the control block to the FDC driver module (EXECUTE$DOCB) for execution. (Note carefully the computation required to transform the step rate (SRT) into the correct 8272 parameter byte.) Modifications for Polling Operation To operate in the polling mode, the following modifica-· tions should be made to the previous routines: 1) The OUTPUT$CONTROLS$TO$DMA routine should be deleted. 2) In EXECUTE$DOCB, immediately prior to WAIT$FOR$OP$COMPLETE, a polling loop should be inserted into the code. The loop should .test the RQM flag (in the Main Status Register). When RQM is set, a data byte should be written to, or read from, the 8272. The buffer address may be computed from the base address contained in DOCB.DMA$ADDR and DOCB.DMA$ADDR$EXT. After the correct number of bytes have been transferred, an operation complete interrupt will be issued by the FDC. During data transfer in the non-DMA mode, the NON-DMA MODE flag (bit 5 of the Main Status Register) will be set. This flag will remain set for the complete execution phase. When the transfer is finished, the NON-DMA MODE flag is reset and the result phase interrupt is issued by the FDC. RECALIBRATE This procedure causes the floppy disk read/write head to retract to track O. The RECALIBRATE procedure requires only one parameter-the drive number on which the recalibrate operation is to be performed. This procedure builds a disk operation control block (RECALIBRATE$DOCB) and passes the control block to the FDC driver for execution. SEEK This procedure causes the disk read/write head (on the selected drive) to move to the desired cylinder position. The SEEK procedure is called with three parameters: drive number (DRV), head/side number (HD), and cylinder number (CYL). This software module builds a disk operation control block (SEEK$DOCB) that is executed by the FDC driver. 5.0 8272 LOGICAL INTERFACE FORMAT SOFTWARE Appendix B of this Application Note contains a PL/M listing of an exerciser program for the 8272 drivers. This program illustrates the design of logical interface level procedures to specify disk parameters, recalibrate a drive, seek to a cylinder, format a disk, read data, and write data. The FORMAT procedure is designed to initialize a complete floppy disk so that sectors can subsequently be read and written by system and application programs. Three parameters must be supplied to this procedure: the drive number (DR V), the recording density (DENS), and the interleave factor (INTLVE). The FORMAT procedure generates a data block (FMTBLK) and a disk operation control block (FORMAT$DOCB) for each track on the floppy disk (normally 77). 7-148 AP-121 Table 9. Basic Disk Parameters Name Description DENSITY The recording mode (FM or MFM). FILLER$BYTE The data byte to be written in all sectors during formatting. TRACKS$PER$DISK The number of cylinders on the floppy disk. BYTES$PER$SECTOR The number of bytes in each disk sector. The exerciser accepts 128, 256, and 512 in FM mode, and 256, 512, and 1024 in MFM mode. INTERLEAVE The sector interleave factor for each disk track. STEP$RATE The disk drive step rate (1-16 milliseconds). HEAD$LOAD$TIME The disk drive head load time (2-254 milliseconds). HEAD$UNLOAD$TIME The head unload time (16-240 milliseconds). The format data block specifies the four sector ID field parameters (cylinder, head, sector, and bytes per sector) for each sector on the track. The sector numbers need not be sequential; the interleave factor (INTLVE parameter) is used to compute the logical to physical sector mapping. After both the format data block and the operation control block are generated for a given cylinder, control is passed to the 8272 drivers for execution. After the format operation is complete, a SEEK to the next cylinder is performed, a new format table is generated, and another track formatting operation is executed by the drivers. This track formatting continues until all tracks on the diskette are formatted. In some systems, bad tracks must also be specified when a disk is formatted. For these systems, the existing FORMAT procedure should be modified to format bad tracks with a cylinder number of OFFR. Write The WRITE procedure transfers a complete sector of data to the disk drive. Five parameters must be supplied to this software module: the drive number (DRV), the cylinder number (CYL), the head/side number (RD), the sector number (SEC) and the recording density (DENS). This procedure generates a disk operation control block (WRITE$DOCB) from these parameters and passes the control block to the 8272 driver for execution. When control returns to the calling program, the data has been transferred to disk. Read This procedure is identical to the WRITE procedure except the direction of data transfer is reversed. TheREAD procedure transfers a sector of data from the floppy disk to system memory. Coping with Errors In actual practice all logical disk interface routines would contain error processing mechanisms. (Errors have been ignored for the sake of simplicity in the exerciser programs listed in Appendix B.) A typical error recovery technique consists of a two-stage procedure. First, when an error is detected, a recalibrate operation is performed followed by a retry of the failed operation. This procedure forces the drive to seek directly to the requested cylinder (lowering the probability of a seek error) and attempts to perform the requested operation an additional time. Soft (temporary) errors caused by mechanical or electrical interference .do not normally recur during the retry operation; hard errors (caused by media or drive failures), on the other hand, will continue to occur during retry operations. If, after a number of retries (approximately 10), the operation continues to fail, an error message is displayed to the system operator. This error message lists the drive number, type of operation, and failure status (from the FDC). It is the operator's responsibility to take additional action as required. 6.0 FILE SYSTEMS The file system provides the disk I/O interface level most familiar to users of interactive microcomputer and minicomputer systems. In a file system, all data is stored in named disk areas called files. The user and applications programs need not be concerned with the exact location of a file on the disk-the disk file system automatically determines the file location from the file name. Files may be created, read, written, modified, and finally deleted (destroyed) when they are no longer needed. Each floppy disk typically contains a directory that lists all the files existing on the disk. A directory entry for a file contains information such as file name, file size, and the disk address (track and sector) of the beginning of the file. 7-149 intJ AP-121 File Allocation The Intel File System File storage is actually allocated on the disk (by the file system) in fixed size areas called blocks. Normally a block is the same size as a disk sector. Files are created by finding and reserving enough unused blocks to cone tain the data in the file. Two file allocation methods are currently in widespread use. The first method allocates blocks (for a file) from a sequential pool of unused blocks. Thus, a file is always contained in a set of sequential blocks on the disk. Unfortunately, as files are created, updated, and deleted, these free-block pools become fragmented (separated from one another). When this fragmentation occurs, it often becomes impossible for the file system to create a file even though there is a sufficient number of free blocks on the disk. At this point, special programs must be run to "squeeze" or compact the disk, in order to re-create a single contiguous free-block pool. The Intel file system (described in detail in the RMX80 Users Guide) uses the second disk file allocation method (previously discussed). In order to lower the system overhead involved in finding free data blocks, the Intel file system incorporates a free space management data structure known as a bit map. Each disk sector is represented by a single bit in the bit map. If a bit in the bit map is set to I, the corresponding disk sector ~Ia, been allocated. A zero in the bit map indicates that the corresponding sector is free. With this technique, the process of allocating or freeing a sector is accomplished by simply altering the bit map. The second file allocation method uses a more flexible technique in which individual data blocks may be located anywhere on the disk (with no restrictions). With this technique, a file directory entry contains the disk address of a file pointer block rather than the disk address of the first data block of the file. This file pointer block contains pointers (disk addresses) for each data block in the file. For example, the first pointer in the file pointer block contains the track and sector address of the first data block in the file; the second pointer contains the disk address of the second data block, etc. In practice, pointer blocks are usually the same size as data blocks. Therefore, some files will require multiple pointer blocks. To accommodate this requirement without loss of flexibility, pointer blocks are linked together, that is, each pointer block contains the disk address of the following pointer block. The last pointer block of the file is signaled by an illegal disk address (e.g., track 0, sector 0 or track OFFH, sector OFFH). File names consist of a basic file name (up to six characters) and a file extension (up to three characters). The basic file name and the file extension are separated by a period (.). Examples of valid file names are: DRIV72.0BJ, XX.TMP, and FILE.CS. In addition, four file attributes are supported (see Figure 3 for attri. bute definitions). The bit. map and the file directory are placed on prespecified disk tracks (reserved for system use) beginning at track zero. Disk File System Functions Table 2 illustrates the typical functions implemented by a disk file system. As an example, the disk directory function (DIR) lists disk file information on the console display terminal. Figure 3 details the contents of a display entry in the Intel file system. The PL/M procedure outlined in Figure 4 illustrates a disk directory algorithm that displays the file name, the file attributes, and the file size (in blocks) for each file in the directory. 7-150 inter AP-121 '-----1 O· INVISIBLE 1· SYSTEM 2· WRITE· PROTECT 3 (RESERVED) .1 :: f 6· 7· FORMAT 207885-5 Directory Entry Presence is a fla~ that can contain one of three values: OOOH- The file associated with this entry is present on the disk. 07FH- No file is associated with this entry; the content of the rest of the entry is undefined. The first entry with its flag set to 07FH marks the current logical end of the directory and directory searches stop at this entry. OFFH- The file named in this entry once existed on the disk but is currently deleted. The next file added to the directory will be placed in the first entry marked OFFH. This flag cannot, therefore, be used to (reliably) find a file that has been deleted. A value of OFFH should be thought of as simply marking an open directory entry. File Name is a string of up to 6 non-blank ASCII characters specifying the name of the file associated with the directory entry. If the file name is shorter than six characters, the remaining bytes contain binary zeros. For example, the name ALPHA would be stored as: 414C50484100H. Extension is a string of up to 3 non-blank ASCII characters that specifies an extension to the file name. Extensions often identify the type of data in the file such as OBJ (object module), or PLM (PL/M source module). As with the file name, unused positions in the extension field are filled with binary zeros. Attributes are bits that identify certain characteristics of the file. A 1 bit indicates that the file has the attribute, while a 0 bit means that the file does not have the attribute. The bit positions and their corresponding attributes are listed below (bit 0 is the low-order or rightmost bit, bit 7 is the leftmost bit): 0: Invisible. Files with this attribute are not listed by the ISIS-II DIR command unless the I switch is used. All system files are invisible. 1: System. Files with this attribute are copied to the disk in drive 1 when the S switch is specified with the ISIS-II FORMAT command. 2: Write-Protect. Files with this attribute cannot be opened for output or update, nor can they be deleted or renamed. 3-6: These positions are reserved for future use. 7: Format. Files with this attribute are treated as though they are write-protected. In addition, these files are created on a new diskette when the ISIS-II FORMAT command is issued. The system files all have the FORMAT attribute and it should not be given to any other files. Figure 3. Intel Directory Entry Format 7-151 AP-121 EOF Count contains the number "of the last byte in the last data block qfthe file. If the value of this field is 080H, for example, the last byte in the file is byte number 128 in the last data block (the last block is full). Number of Data Blocks is an address variable that indicates the number of data blocks currently used by the file. ISIS-II and the RMX/80 Disk File" system both maintain a counter called LENGTH that is the current " number of bytes in the file. This is calculated as: (Number of Data Blocks - 1) x 128 + EOF Count. , Header Block Pointer is the address of the file's header block. The high byte of the field is the sector number and the low byte is the track number. The system "finds" a disk file by searching the directory for the name and then using the header block pointer to seek to the beginning of the file. Figure 3. Intel Directory Entry Format (Continued) dir: procedure(drv,dens) declare dry dens sector size (5) public; byte, byte, byte, byte, byte, based rdbptr structure (presence byte, file$name(6) byte ,extension (3) byte, attribute byte,eof$count byt~, data$blocks address,header$ptr address), byte, invisible$f1aq system$flaq protected$f1aq format$flaq literally literally li terally literally i dir$ptr dir$entry '1', '2', '4', 'SOH'; /. The disk directory starts at cylinder I, sector 2 ./ call seek(drv,l,O); do sector=2 to 26; call read(drv,l,O,sector,dens); do dir$ptr=O to 112 by 4; if dir$entry.presence=7FH then return; if dir$entry.presence=O then do; do i=O to 5; call co(dir$ent~y.fi1e$name(i)); end; call co(period); do i=O to 2; call co(dir$entry.extension(i)); end; do i=O to 4; call co(space); end; call convert$to$decima1(@siz~,dir$entry.data$blocks); do i=O to 4; call co(size(i)); end; I f (dir$entrv.attribute and invisible$f1aq) <> 0 then call co('I'); If (dir$entry.attribute and system$flaq) <> 0 then call co('S'), If (dir$entry.attribute and protected$flaq) <> 0 then call co('W'); If "(dir$entry.attribure and format$flaq) <> 0 then call co('F'); endJ end; end; end dir; 207885-6 Figure 4. Sample PL/M Directory Procedure 7-152 inter AP-121 7.0 KEY 8272 SOFTWARE INTERFACING CONSIDERATIONS This section contains a quick review of Key 8272 Software design features and issues. (Most items have been mentioned in other sections of this application note.) Before designing 8272 software drivers, it is advisable that the information in this section be thoroughly understood. 1. Non-DMA Transfers In systems that operate without a DMA controller (in the polled or interrupt driven mode), the system software is responsible for counting data transfers to/from the 8272 and generating a TC signal to the FDC when the transfer is complete. 2. Processor Command/Result Phase Interface In the command phase, the driver software must write the exact number of parameters in the exact order shown in Table 5. During the result phase, the driver must read the complete result status. For example, the Format Track command requires six command bytes and presents seven result bytes. The 8272 will not accept a new command until all result bytes are read. Note that the number of command and result bytes varies from command-to-command. Command and result phases cannot be shortened. During both the command and result phases, the Main Status Register must be read by the driver before each byte of information is read from, or written to, the FDC Data Register. Before each command byte is written, DIO (bit 6) must be low (indicating a data transfer from the processor) and RQM (bit 7) must be high (indicating that the FDC is ready for data). During the result phase, DIO must be high (indicating a data transfer to the processor). NOTE: After the 8272 receives a command byte, the RQM flag may remain set for approximately 16 microseconds (with an 8 MHz clock). The driver should not attempt to read the Main Status. Register before this time interval has elapsed; otherwise, the driver may erroneously assume that the FDC is ready to accept the next byte. 3. Sector Sizes The 8272 does not support 128 byte sectors in the MFM (double-density) mode. 4. Drive Status Changes The 8272 constantly polls all drives for changes in the drive ready status. This polling begins immediately fol- lowing RESET. An interrupt is generated every time the FDC senses a change in the drive ready status. After reset, the FDC assumes that all drives are "not ready". If a drive is ready immediately after reset, the 8272 generates a drive status change interrupt. 5. Seek Commands The 8272 FDC does not perform implied seeks. Before issuing a data read or write command, the read/write head must be positioned over the correct cylinder by means of an explicit seek command. If the head is not positioned correctly, a cylinder address error is generated. 6. Interrupt Processing When the processor receives an interrupt from the FDC, the FDC may be reporting one of two distinct events: a) The beginning of the result phase of a previously requested read, write, or scan command. b) An asynchronous event such as a seek/recalibrate completion, an attention, an abnormal command termination, or an invalid command. These two cases are distinguished by the FDC BUSY flag (bit 4) in the Main Status Register. If the FDC BUSY flag is high, the interrupt is of type (a). If the FDC BUSY flag is low, the interrupt was caused by an asynchronous event (b). A single interrupt from the FDC may signal more than one of the above events. After receiving an interrupt, the processor must continue to issue Sense Interrupt Status commands (and service the resulting conditions) until an invalid command code is received. In this manner, all "hidden" interrupts are ferreted out and serviced. 7. Skip Flag (SK) The skip flag is used during the execution of Read Data, Read Deleted Data, Read Track, and various Scan commands. This flag permits the FDC to skip unwanted sectors on a disk track. When performing a Read Data, Read Track, or Scan command, a high SK flag indicates that the FDC is to skip over (not transfer) any sector containing a deleted data address mark. A low SK flag indicates that the FDC is to terminate the command (after reading all the data in the sector) when a deleted data address mark is encountered. When performing a Read Deleted Data command, a high SK flag indicates that sectors containing normal 7-153 AP-121 data address marks are to be skipped. Note that this is just the opposite situation from that described in the last paragraph. When a data address mark is encountered during a Read Deleted Data command (and the SK flag is low), the FDC terminates the command after reading all the data in the sector. 8. Bad Track Maintenance The 8272 does not internally maintain bad track information. The maintenance of this information must be performed by system software. As an example of typical bad track operation, assume that a media test determines that track 31 and track 66 of a given floppy disk are bad. When the disk is formatted for use, the system software formats physical track 0 as logical cylinder 0 (C = 0 in the command phase parameters), physical track 1 as logical track 1 (C = 1), and so on, until physical track 30 is formatted as logical cylinder 30 (C = 30). Physical track 31 is bad and should be formatted as logical cylinder FF (indicating a bad track). Next, physical track 32 isformatted as logical cylinder 31, and so on, until physical track 65 is formatted as logical cylinder 64. Next, bad physical track 66 is formatted as logical cylinder FF (another bad track marker), and physical track 67 is formatted as logical cylinder 65. This formatting continues until the last physical track (77) is formatted as logical cylinder 75. Normally, after this formatting is complete, the bad track information is· stored in a prespecified area on the floppy disk (typically in a sector on track 0) so that the system will be able to recreate the bad track information when the disk is removed from the drive and reinserted at some later time. To illustrate how the system software performs a transfer operation on a disk with bad tracks, assume that the disk drive head is positioned at track 0 and the disk described above is loaded into the drive. If a command to read track 36 is issued by an application program, the system software translates this read command into a seek to physical track 37 (since there is one bad track between 0 and 36, namely 31) followed by a read of logical cylinder 36. Thus, the cylinder parameter C is set to 37 for the Seek .command and 36 for the Read Sector command. REFERENCES 1. Intel, "8272 Single/Double Density Floppy Disk Controller Data Sheet," Intel Corporation, 1980. 2. Intel, "An Intelligent Data Base System UsiIi.g the 8272," Intel Application Note," AP-116, 1981. 3. Intel, iSBC 208 Hardware Reference Manual, Manual Order No. 143078, Intel Corporation, 1980. 4. Intel, RMX/80 User's Guide, Manual· Order No. 9800522, Intel Corporation, 1978. 5. Brinch Hansen, P., Operating System Principles, Prentice-Hall, Inc., New Jersey, 1973. 6. Flores, I., Computer Software: Programming Systems for Digital Computers, Prentice-Hall, Inc., New Jersey, 1965. 7. Knuth, D. E., Fundamental Algorithms, AddisonWesley Publishing Company, Massachusetts, 1975. 8. Shaw, A. C., The Logical Desig!1 of Operating Systems, Prentice-Hall, Inc., New Jersey, 1974. 9. Watson, R. W., Time Sharing System Design Concepts, McGraw-Hill, Inc., New York, 1970. 10. Zarrella, J., Operating Systems: Concepts and Principles, Microcomputer Applications, California, 1979. 7-154 intJ AP-121 APPENDIX A 8272 FDC DEVICE DRIVER SOFTWARE PL/M-86 COMPILER 8272 FLOPPY DISK CONTROLLER DEVICE DRIVERS ISIS-II PL/M-86 Vl. 2 COMPILATION OF MODULE DRIVERS OBJECT MODULE PLACED IN :F1:driv72.0BJ COMPILER INVOKED BY, p1m86 :F1:driv72.p86 DEBUG $title{"S272 floppy disk controller device drivers") $nointvecto[ Soptimi ze 121 Slarge drivers: do~ declare 1* floppy disk port definitions */ fdc$status$nort fdcSdata$port 1* 8272 status POtt */ /* 8272 data port */ literally '30H'", literally "3IH"; declare l* floppy disk commands *1 sense$int$statu9 Ii terallv "OSH": declare 1* interrupt definitions */ fdc$intSlevel literally '"33"; 1* fde interrupt level ttl declare /* return status and error codes ." / error literally "'0"', ~ropagatp.$error literally literally literally literally literally literally "'1"', "'3", "0" r "1"", "not", ""return error'" , stat$ok stat$busv stat$error statScommand$err or statSresult$error stat$invalid literally literally literally literally literally literally 'a' • literally literally literall"; literallv literally Ii terally literally "lOa"" , ok complete false true errorSin declare /* masks *1 busy$mask DIO$mask RQM$mask seek$mask result$error$mask resutt$dr ive$mask resutt$ready$mask declare 1* drive numbers */ max$no$dr i ves fdc$general /* fdc operation completed withc;:mt errors *1 1* fde is husy, operation cannot be started *1 /* fde operation error *1 1* fdc not ready for command, phaF.le * I /* fde not ready for tAsul t phase *1 1* invalid fdc command */ '1' • '2' • '3' • '4' • '5' , '40H' , '80H' • 'OFH'" , 'OCOR' • '03H' • '"OBH'"; literally '3'" , literally '4' , neclare 1* miscellaneous control *1 any$dr ive$seeking Ii terally , ( (input (fdc$statuB$port) and, seek$mask) <> 0)', commandScode literally'" (docb.disk$command(O) and IP'H)"'; DtO$setSfor$input literallY'" «input(fdcSstatus$port) anq DIO$mask)-O) '"" DIO$set$for$output literally '"«input(fdc$status$port) and DIO$mask)<>O''", extract$drive$no literally '" (docb.disk$command(l) and 038)', fdc$busv .literallY , «(input (fdc$status$pori:.) and bUBv$mask) <> -0)', no$fdc$error Ii terally 'possible$error (command$code) and «docb.disk$result (0) and resul t$error$mask) = 0)', wai t$for$op$complete 1 i terallv "'do while not operation$complete (drive$no): end', wait$for$RQM' literally 'do while (input (fdc$status$port) and RQM$mask) .. 0, end,': declare 1* structures "*1 docb$type literally /* disk operation control block "*1 ,. (dma$op byte,dma$addr word, dma$addr$ext bvte,dma$count word, disk$command(9) byte.disk$result(7) byte,misc byte) "'1 Seject 10 declare drive$statu5$change(4) byte public, 1* when set - indicates that drve status changed *1 1* current status of drives *1 drive$readyl41 byte public, 207885-7 7-155 inter 11 AP-121 declare internal flags for; operation with multiple drives ttl fde execution phase completed 'It/ pointers for operations in progress */ temporary docb for interrupt processing */ drive number of non-overlapped operation operation$in$progres5 (5) byte, operation$complete(S) byte, operation$docb$ptr (5) pointer, i ntee rupt$docb s tr ucture docbS type, global$dr i ve$no byte 1 in progress 12 i f lInv */ declare /* internal vectors that contain command operational information *1 no$r~slllt (32) byte 1* no result phase to command */ data (0,0, 0.1, 0, 0, 0,0,0, 0,0 ,0,0, 0 ,0, 0 ,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0), immed$result(32) byte 1* immediate result phase for command *1 data (0, 0, 0, 0, 1, 0, 0,0, 1, 0,0, O. 0, 0,0, 0, 0,0, 0,0, 0,0,0,0,0,0,0 ,0,0,0 ,0,0) , overlap$operation(32) byte 1* command permits overlapped operation of drvies ./ data (0, 0, 0, o. 0,0,0,1, 0,0, 0, 0, o~ 0,0,1,0,0,0,0, 0,0,0.0,0,0,0,0,0,0,0,0) , driveSno$present (32) byte I· drive number present in command information . / data (0,0,1,0,1.1,1,1, 0,1,1,0,1,1,0,1,0,1,0.0,0,0.0,0,0,1,0,0,0, 1 ~ 0, a I , ~os5ib1e$error (32) byte /. determines if command can return with an error "/ data (0,0, 1;0,0, 1,1,1,1,1,1,0,1,1,0, I,D, 1.0,0,0, 0,0.0,0, 1,0,0,0,1,0,0) , command$length(32) byte 1* contains number of command bytes for each command ./ data (0, 0, 9, 3, 2,9, 9, 2, 1,9, 2, 0,9 ,6,0.3,0,9,0,0, 0,0,0 .0,0 .9,0,0,0 ,9 ,0,0) , valid$command (32) . bvte I. flags inva1 id command codes "I data (0,0, 1, 1,1,1,1,1,1,1,1, 0,1,1,0,1,0,1,0 ,0,0,0, 0.0,0,1, O. 0,0,-1,0,0) ; $eject I· .. • initialIzation for the 8272 fdc driver .soft .... are. This procedure must be called prior to execution of any driver software. ·'''1 13 I' initia1ize$drivers: procedure public; /tt initialize 8272 drivers .. / declare drv$no byte: 15 l6 17 18 19 20 do drv$no=O to max$no$dr i yes i o1r ive$ready (drvSno) ::false; r:1r ive$statusSchange (drv$no) =false; operationS in$progress (drvSno) =false; operationScomplete (drv$no) =false: end; 21 22 23 operationS in$progress (fde$general) ",false; operation$complete (fdc$general) =false; globalSdr i veSno=O; 2. end initialize$dr1vers; /U •• wi!lit until the 8272 fdc is ready to receive command/parameter bytes in the command phase. The 8272 is ready to receive command bytes when the ROM fla9 is high and the 010 flag is low. .. •• / 25 fdcSreadySfor$comrnand: procedure byte; 26 / .. wait for valid flag settings in status reqister */ call time(ll; 27 /1t wait for "masteor request" flag 1t/ waitSforSRQM; /* check data direction flag * / 30 i f DIO$set$for$input 32 then return ok; else return error; 33 end fde$ready$for$command; / ..... wait unti 1 the 8272 fde is ready to phase. The 9272 is ready to return flags are both high. The busy flag remain set unti t the last data byte by the processor. ..* ... / 34 35 36 return data bytes in the result a result byte when the ROM and DIO in the main status register will of the result phase has be!?n read fde$read..,Sfor$resul t: procedure byte; / .. wait for valid settings in status register .. / call time (1); / .. resul t phase has ended when the, 8272 busy flag is reset .. / if no't fdc$busy then return complete; 207885-8 7-156 inter AP-121 1* wait for "master request" flag *1 wait$forSRQM; 36 1* check data directton flag *1 41 i f DIO$setSfor$output then return ok; else return 43 ~rror; end fdcSreadvSfor $[" esul t; 44 / . . . . output a single command/parameter byte to the 8272 fde. parameter is the byte to he output to the fde. .*.*/ ., The "data$byte" outputSbyte$toSfdc: procedure (data$byte) byte, declare data$byte byte: 46 1* check to see if fde is 47 n~ady for command *1 if not fdc$readvSfor$command then propagateSerror 49 i output (fdc$data$port) ""dataSbyte: return ok: 50 au tputS byteS to$ fde; en~ 51 1*··· parameter input a singl~ result byte from the 8272 fdc. The "data$byte$ptr" is a pointer to the memory location that is to contain the input byte. .***/ 52 53 54 input$byteSfromSfdc: procedure (dataSbyte$ptr) byte: 1eclare data$byteSptr pointer; 1eclare dataSbyte based data$byte$ptr bvte, status byte: /* 55 56 check to see if fdc is ready */ !5tatl.ls=fdc$readySforSresult: . if errorS in status then propagateSerror; 56 1* check for result phase complete */ if status=complete then return complete; "0 61 62 2 1 2 -iataSbyte=input (fdc$data$port); return ok; end input$byteSfrom$fdc: Seject /**** 63 64 65 66 output the dma mode, the dma address, and the dma word count to the 8237 dma controller. Also output the high order four hits of the address to the address extension latch. Finally, stal::t the disk dma ch.!lnnel. The "docb$ptr" parameter is a ·pointer to the appropriate disk operation contl::ol block. ****/ outputScontrolsS toSdma: procedul::e (docb$ptr) ; declare docb$ptl:: pointer; declal::e docb based docb$ptr structul::e docbtype; declare /* dma port definitions */ dma$uppel::$addr$port literally dmaSdiskSaddr$pol::t literally dmaSdisk$word$count literally dma$command$port literally drna$mode$port literally dma$mask$sr$port literally dma$clearSffSport literally dmaSmaster$clearSport literally dma$mask$port literally dma$diskSchan$star t dmaSextended$wr i te dmaS sing leS trans fer 67 69 70 "'IOH", "OOH", "OIH"', "aSH", "OBH", "OAH"', "OCH", "ODH", "OFH", literally "OOH", literally "shl (l,s)", literally"shl(1,6)"; /* upper 4 bits of current address */ /* current address par t ." / /* word count port */ /* command por t * / /* mode port */ 1* mask set/reset port */ /* clear fil::st/last flip-flop port */ /* drna master clear port */ /* parallel mask set port* I /* drna mask to start disk channel */ /* extended wr i te flag * / /* single transfer flag */ if docb.dma$op < 3 then do; /* set drna mode and clear first/last flip-flop */ output (dma$mode$port) ""shl (docb .dma$op, 2) or 40H: output (dma$cleal::$ffSport) =0; 207885-9 7-157 inter AP-121 1* set dma address */ output (dmaSdi sk$addr$port) =10w (docb.dma$addr) : 71 72 73 output (dma$disk$addr$port) =high (docb.dma$addr) ; output (dma$upper$addr$port 1 =docb.dma$addr$ext; /* outout disk transfer word count to dma controller ttl 74 OIJtput -(dmaSdisk$wordScount) ==low (docb.dma$count) ; output (dmaSdi sk$wordScount) =high (dach .dma$count) ; 75 /* start dma channel 0 for fde */ 76 77 78 output (dmaSmaskSsr$port) =dma$di skSchan$start t end; end output$controls$to$dmai 1**** 79 80 81 82 output a high-level disk command to the 8272 fdc. The number of bytes required for each command is contained in the "cornmand$length" table. The "docb$ptr" para!lleter is a pointer to the appropriate disk operation control block. *'***/ output$command$to$fdc: procedure (docb$ptr) byte; declare docb$ptr pointer; declare docb based docb$ptr structure docb$type, crnd$byte$no byte; nisable; ;* output all command bytes to the fdc */ 83 84 89 90 91 92 do cmd$byteSno=O to commandS length (command$code) -1; if errorS in output$byteStoSfdc (docb.disIc;Scommand (cmd$byteSno)) then do, enable; propagateSerror;, end~ end; enable; return ok; end output$commandStoSfdc; ;**U input the result data from the 8272 fdc during the result phase (after command execution). The ndocb$ptr" parameter is a pointer to the appropriate disk operation control block. ****/ 93 94 95 i nput$resul t$ feamS fdc: procedure (docb$ptr) byte; declare docb$ptr pointer; declare doeb based doeb$ptr structure doeb$tvpe, result$byte$no byte, temp byte, status byte, 96 disable; 97 do r<::osult$byte$no=O to 7; status=input$byte$from$fde (@temp);, if error$in status then do, enable; ?ropaqate$error; end; i f status=complete then do; enable; return ok; end; docb.disk$resul t (resul tSbyte$no) =temp: 98 99 104 109 110 ll1 112 114 115 end;- enable; i f fdcSbusy then return error; else return OK; end input$result$frorn$fdc, 1**** cleans up after the execution of a disk operation that has no result phase. The 'Procedure is also used after some disk operation errors. "drv" is the drive number. and "ce n is the command code for the' disk operation. ****! 116 117 118 119 ol;leration$clean$up: procedure (drv ,cc) ; declare (drv,ee) byte; disable; operationSin$progress (drv) =false ~ 207885-10 7-158 intJ AP-121 120 if not overlap$operation(cc) then global$dr i ve$no=O I 122 enable: 123 end operationSclean$up: $eject 1**** execute the disk operation parameter "docb$ptr". The a byte variable that is to operation when it has been possible on return: control block specified by the pointer "status$ptr n parameter is a pointer to contain the status of the requested completed. Six status conditions are The specified operation was completed without error. The rdc is busy and the requested operation cannot be started. Fdc error (further information is contained in the result storage portion of the disk operation control block - as described in the 8272 data sheet). Transfer error during output of the command bytes to the fdc. Transfer error during input of the result bytes from the fdc. Invalid fdc command. ****/ 124 execute$docb: procedure (docb$ptr, status$ptr) public ~ /* execute a disk operation control block */ 125 126 declare docb$ptr pointer, status$ptr pointer: declare docb based docb$ptr structure docb$type, status based status$ptr byte, drive$no byte~ /* check command validity */ 127 if not val idScommand (command$code) then do; status-stat$invalid: return: end~ /* determine if command has a drive number field - if not, set the drive number for a general fdc command *1 if driveSno$present (command$code) then dr ive$no=extract$dr ive$no: else dr ive$no=fdc$general: 132 134 /* an overlapped operation can not be performed if the fdc is busy *1 135 . if over lap$oper at ion (command$code) and fdc$busy then do; status-stat$busy; return; end1 /* for a non-overlapped operation, check fdc busy or any drive seeking *1 140 if not overlap$operation(commarid$code) and (fdc$busy or then do; status~8tat$busy; return: end; any$drive$5e~king) 1* check for drive operation in progress - if none, set flag and start operation *1 145 disable, if operation$in$progress (drive$no) then do: enable~ status=stat$busYi return; end: else operatlon$in$progress (dt ive~no) -true; 146 152 1* at this point, an fdc operation is about to begin, so: 1. reset the operation complete flag 2. set the docb pointer for the current operation 3. if this is not an overlapped operation, set the global drive number for the subsequent result phase interrupt. operation$complete (drive$no) =0: operation$docb$ptr (drive$no) =docb$ptr; 153 154 i.55 157 158 159 161 162 163 164 165 167 168 169 170 2 "*1 if not overlap$operation (command$code) then global$dr i ve$no-dr i ve$no+ l: enable, call output$controls$to$dma (docb$ptr) ; if errorS in output$command$to$fdc (docb$ptr) then dor . call operation$clean$up(drive$no,command$code); status:::;stat$command$error; return; end; 1*. return immediately if the command has no result phase or completion interrupt - specify *1 if no$result (command$code) then do; call operation$clean$up(drive$no,comrnand$code) statlJs=stat$ok: return: end: 1 207885-'11 7-159 intJ AP-121 171 if immed$result (command$code) then do: if errorS in input$resul t$from$fdc (docb$ptr) 173 then do; 175 176 177 178 179 180 181 183 188 189 191 192 call operation$cleanSup(drlve$no,commandScoc1e); status""stat$resul t$error 7 return; end, end; else do: wai t$for$op$complete: if dacb.mise = error ]' end; then do: status"'statSresult$error: return; end: if nO$fdcSerror then status=stat$ok: else status=statSerror; end .xecute$docb: $eject /**** copy disk command results from the interrupt control block to the currently active disk operation control block if a disk operation is in pr09'ress. ****/ 193 194 195 196 198 199 202 203 204 205 206 copy$ intSresult: procedure (drv) ; declare dry byte; declare i byte, docbSptr pointer, dacb based docbSptr structure doc::bStype; if operation$in$progress (drv) then do: , docb$ptr:ooperation$docb$ptr (drv);, do i==l to 6; docb.cHsk$result.(U=interrupt$docb.disk$result(i): end: docb.misc=ok: operat.ion$in$pro9ress (drv) =false: operation$complete (drv) =true: end; e,nd copy$int$result; 1**** interrupt processing for 8272 fdc drivers. Basically, two types of interrupts are generated by the 8272: (a}when the execution phase of an operation has been completed, an interrupt is generated to si9nal the beginning of the result phase (the fdc busy flilC) is set when this interrupt is received), and (b) whe-n an overlapped operation is completed Or an unexpected interrupt is received (the ldc busy flag is not set when this interrupt is received) .. When internilpt type (a) is receiv~d, the result bytes from the operation are read from the 8272 and the operation complete flag is set. When an interrupt of type (b) is received, the- int.e-rrupt result code is examined to determine which of the fol.lowing four· actions are indicated: 1. An overlapped 'opt'ion (recal.ibnlte or seek) has been completed. The cesul t data is read from the 8272 and placed in the currently active disk operation control block. . . 2 .. An abnormal termination of an operation has occurred. The result data is read and placed in the currently active disk operation control block. _ 3. The execution of an invalid command has been attempted. This signals the successful completion of all interrupt processing. 4. The ready status ot .. drive has chang-ed. The "drive$ready" and "drlve$ready$status" change tables are updated. If an operation is currently in progress on the affected drive, the result data is placed in the currently active disk operation control block .. After an interrupt is processed, additional" sense interrupt status cOIIUIlands must be issued and pr~cess.d until an invalid command result ill returned from the tdc. This action guarantees that all "hidden- interrupts are serviced. • •.**1 207885-12 7-160 inter AP-121 207 208 fdcint: procedure public interrupt fdc$intSlevel; declare i nval id byte r dot i ve$no byte, docb$ptr poi nter r docb based docb$ptr structure docbStype: 209 declare /* interrupt port definitions */ ocw2 literally "'70R", nBeoi literally"shl(l,S)"": 210 declare Iff miscellaneous flags "/ result$code result$dr iveSready extract$result$driveSno endSalS interrupt 1i terally "shr (interrupt$docb .disk$resul t (0) and result$ert:or$mask, 6)" , 1i terally .. ( (interrupt.$docb.disk$result (0) and result$ready$mask) "" 0)'" literally" (interrupt$docb.disk$result(O) and result$drive$mask)"', 1i terally "'output (ocw2) =ose01 "', 1* if the fdc is busy when an interrupt is received, then the result phase of the previous non-overlapped operation has begun *1 if fde$busy , then do: 1ft process interrupt if operation 'in prOC]ress *1 if global$driveSno <> 0 then dOl docbSptr-operationSdocb$ptr (global$dr iveSno-l) J if errorSin inputSresultSfrom$fdc{docbSptr} then docb.misc-ertor; else docb.misc-ok: operationSin$progress (globalSdrive$no-l) Dfalse; operation$complete (global$dr i veSno-l) -true, globalSdr ive$no:::O; end; end; 211 213 215 216 218 219 220 221 222 223 1* if the fdc is not busy, then either an overlapped operation has been completed or an unexpected interrupt has occurred (e.g., drive status change) 'III else do; invalid ... false: do while not invalidr 224 225 226 I'll perform a sense interrupt status operation - if errors are detected, in the actual fde interface, interrupt processing 1s discontinued *1 227 229 if errorSin output$byte$toStdc{sense$intSstatus) then go to ignore, if errorS in inputSresult$from$fdc(Unterrupt$docb) then go to ignore; 231 do case resul t$code; 1* caSe 232 233 234 235 0 - oper at ion complete "I do; dr i ve$no=extr act$resul t$dr i veSno; call copy$int$result (drive$no); end; 5 6 6 6 1* case 1 - abnormal termination *1 do; dr i ve$no-extr actSr eBul tSdr i veSno: call copy$int$result (drive$nol : end; 236 237 238 239 1* case 2 - invalid command *1 invalid=true: 240 1* case 3 - drive ready change *1 do! 241 242 243 244 245 dr ive$no .. extract$resul tSdr i veSno: 'call copy$int$result(drive$no), dr ive$status$change (drive$no) .. true J if resultSdrive$ready then drive$ready (dr ive$no) -true: else drive$ready (dr ive$no) =false: end; endr end; end: 247 248 249 250 251 ignore: end$of$interrupt: end fdcint; 252 253 254 1 end drivers; 207885-13 MODULE INFORMATION: CODE AREA SIZE = 0615H CONSTANT AREA SIZE"" 00008 VARIABLE AREA SIZE • 0050H MAXIMUM STACK SIZE 564 LINES READ o PROGRAM = 00328 15570 OD 800 SOD ERROR(S) END OF PL/M-86 COMPILATION 207885-14 7-161 inter . "'; APPENDIX B 8272 FOC EXERCISER PROGRAM PL/M-86 COMPILER 8272 FLOPPY DISK DRIVER EXERCISE PROGRAM ISIS-II PL/M-86 Vl. 2 COMPILATION OF MODULE RUN72 OBJECT MODULE PLACED IN :Fl:run72.0BJ COMPILER INVOKED BY, plm86 :Pl:run72.p86 DEBUG $title ,'8272 floppy diSk driver exercise pr"9r ...·) Snointvector $optimize (2) $large run72: do~ declare docb$type /* disk.oper·ation control block */ literally .. (dma$op byte,dma$addr word,dma$addr$e,xt byte,dma$count word, . disk$command (9) byte ,disk$result (7) byte,misc byte)', declare /* 8272 fdc commands */ fm mfm dma$mode non$dma$mode . recallbrBte$command speci fy$command . read$command wr i te$command format$command seek$command literally literally literally literally literally literally literally literally literally literally "'0", "1"", '0', "1", "7", "'3", "6", 'S', 'ODR', 'OFS', declare dma$verify dma$read dma$write dma$noop itterally literally literally literally '0', "1", "'2", #3", declare 1.* disk operation control blocks *1 . structure docb$~ype, format$docb structure docb$type, seek$docb structure docb$type, recal ibrate$docb speci fy$docb read$docb write$docb declare step$rate head$load$time head$unload$time filler$byte operation$statu8 interleave format$gap read$wr i te$gap index drive density multitrack sector cylinder head tracks$per$disk sectors$per$track bytes$per$sector$code bytes$per$sector struc~ure docb$type, structure docb$tVPe, structure docb$type; byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, byte, word, /* disk drive head */ /* number of bytes in a sector on the disk *t . declare t* read and write buffers */ byte public, fmtblk (104) byte public, wrbuf(1024) byte public, rdbuf (1024) declare t* disk format initialization tables ~I sec$trk$table(J) byte data(26,lS,8), . fmt$gapStable (8) byte data (lBS, 2AH, 3AB, 0 ,0, 36R,54R, 74R) , rd$wr$gap$table (8) byte data(07R,OER,lBH,O,O,OEB,lBS,3SH) I 207885-15 7-162 AP-121 declare 1* external pointer tables and interrupt vector '. / [dbpt[ (2) w[bpt[ (2) fbpt[ (2) intpt[ (2) intvec (80H) word word word word word external, external, external, external, external, 10 11 12 executeSdocb: procedure (doc~$ptr ,status$ptr) external: declare docbSp.tr pointer, status$ptr pointer r 13 14 inltialize$drivers: procedure external; end initialize$drivet'sr end executeSdocb: $eject 1**** specify step rate ("art") r head load time ("hlt"), head unload time ("hut"), and dma or non-dma operation ("nd n ) . 15 16 t7 18 19 20 21 specify$docb.dma$op c dma$noop1 specify$docb. disk$command (0) -specify$command, specify$docb.disk$command(l):;oshl«not srt)+1,4) or shr(hut,4): specify$docb.disk$command (2) = (h1t and OFEH) o[ (nd and 1), call execute$do~b(@specify$docb,@operation$statusl. 22 end specify; 1*.*. 23 24 recalibrate disk drive 8272 automatically steps out until the ·track 0 signal is activated by the disk drive. * •• */ recalibrate: procedure (drv) , declare dry byte: .. recal ibr ate$docb. dma$op=rdma$noop: recal ibrate$docb.disk$command I 0) =recalibrate$command; reeal ibr ate$docb. d iSk$command (l) =drv; call. execute$docb (@recalibrate$docb,@operation$status) 25 26 27 28 1 end recalibrate; 29 1·*** seek drive "drY", ~ead (side) "hd tt to cylinder ·cyl". seek: procedure(drv,cyl,hd), declare (drv,cyl,hd) b~te; 30 31 32 33 34 35 36 ····1 seek$docb.dma$opadma$noop; seek$docb .diskScommand (0) =seek$command; seek$docb .disk$command (1) =drv 9r shl (hd, 2) J seek$docb .ai sk$command (2) -cy+ J call execute$docb (@seek$docb,@operation$status) ; end seek; 37 1**** format a complete side ("·head") of a single floppy disk in drive "dry". (single or doubl~) . ~s' specified by flag "dens". *.·.1 The density. format: procedure (drY ,dens, intlve) ; format disk *1 declare (drv,dens,intlve) byter declare physical$sector byte: 38 1* 39 40 41 42 call recalibrate (drv) : do cy1inder=0 to tracks$per$disk-l; 1* set sector numbers in format block to zero before computing interleave *1 43 do physical$l;Iec:;tor=l to sectors$per$trackr fmtblk «physical$sector-l) *4+2) physical sector' 1 equals 109'ical sector 1 *1 physical$sector.cl; 1* 46 47 48 ****1 specify: procedure(srt,hlt,hut,nd): declare (srt,hlt.,hut,nd) byte; 3 4 -0, end; /* assign interleaved sectors *1 do sector-l to sectors$per$track: index= (physical$sector-ll *4 J 207885-16 AP-121 /* change sector and index if sector has already been assigned */ do while fmtblk (index+2) <> 0, indexII:inClex+4; physical$sector.physical$sectorf1l end; 49 /* set cylinder, head, sector, and size cod~ for current sector into table */ fmtblk(index)=cylinder; fmtblk (indeX+l) =h.a~, fmtblk (index+2) ""sector; 53 54 55 56 . fmtblk (index+3) .byt~s$per$sector$code, /* update physical sector nWllber by' interleave */ phys ical$sector=phys ic.al$ sector+ i ntl ve; if physicalSsectoi:' > sectors$p,r$track. 57 58 then phys ical$sector=phys tealS sector-sector as pe r$ tr ae k, 60 end, 61 /* seek to next cylinder "!.I call seek (drv ,cylinder ,head) ; /* set up format· control block *1 format$docb'. dma$op",:,dmaSwr i te 1 format$docb.dma$addr=fbptr (0)+sh1 (fbptr (1) ,4) , format$doc:b .dma$addr$ext-O; , format$doc:b~ dma$count .. sectot' sSper$ trBck*4-l ~ format$docb.diskScommand (0) -format$command or shl (dens, 6) : format$docb.disk$command (1) =drv' or shl (head, 2) : format$docb.d iSk$command (2 J -bytes$per$sector$code: format$do~b .di sk$command (:3) =sectors$per$ track: format~docb.d i sk$command ( .. J =format$gapr format$docb.disk$command (5) =filler$byte,· .' call execute$docb (@format$docb,@operation$status) , end: ' ' 62 63 64 65 66 67 68 69 70 71 72 73 end format: 7.4 /**** ~ write, procedure (drv,cyl,hd,sec,dens) r decl~re (~rv,cyl,hd,sec,dens) byte: 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 write sector ·sec· on drive "drv" at head ·hd" and cylinder ·eyl"~ "The disk recording density is specified by the "dens" flag. Data is 'expected to be in the glob~l write buffer ("wrbuf"). ****1 2 2 2 2 2 2 2 2 2 2 2 2 2 91 92 93 wr i te$docb. dma$op~dma$wr iter write$docb.dma$addr-wrbptr (0) +shl (wrbptr (1) ,4) , wr i te$docb. dma$addr$ext-O; wr i te$docb. dma$count~bytes$ per $ sector-I; write$docb.disk$collJftand (O)=write$command or shl (dens,6) or shl (multitrack, 7) I write$docb.disk$command(l)=drvor shl(hd,2), wr ite$docb.disk$command (2) ~cyl, wr i teSdocb.disk$conimand (3) =hd, wr i te$docb.disk$comand (4) =Bec; wr i te$docb. d i sk$command (5) IIIbytes$per$sector$code, wr ite$docb.disk$command (6) =sectors$perStrack; WI i te$docb.dislc$c:ommand (7) =read$wr i te$9ap~ if bytes$per$sector$code -= 0 then wr ite$doeb.disk$command (8) =bytes$per$sector: else wri te$docb.disk$command (8) =OFPR: cali executeSdocb ('WI Ite$docb;@operation$status) : end wr~te1 / ••• " read sector ·sec· on drive "drv· at head "hd" and cylinder "cy1". The ,disk recording density is defined by the "dens· flag. Data is read into the global r!!ad buffer ("rdbuf"). ** •• / read: procedure (drv,cyl,hd,sec,dens) ; declare ~drv,cylrhd,sec,dens) byte: 94 95 96 97 98 99 100 101 102 103 104 105 106 107 2 2 2 2 2 2 2 2 2 2 2 2 read$docb. dma$op=dma$ read; read$docb.dma$addr=rdbptr (OHsh1 (rdbptr (1) ,4), read$docb.dma$addr$ext .. O; , read$docb. dma$count~bytes$per$sector-l r read$docb.dlsk$command (0) -read$command or shl (dens ,6) or shl (mul ti track, 7) : read$docb.disk$commarid (1) ..drv or shl (hd, 2): read$docb.disk$command (2) =cyl: read$docb.disk$command (3) -hd; read$docb.disk$command (4) "sec, read$docb.d i Bk$command (5) -bytes$per$ sector$code J read$doc:b.d i sk$conunand (6) =sector aSperS tr ack J ' read$do~b.~isk$command (7) "read$wri te$gap; . 207885-17 7-164 AP-121 108 if bytes$per$sector$code = 0 then read$docb.disk$command (8) =bytes$per$sector else read$docb.disk$command (8} =OFFH; 110 111 ~ call execute$docb(@read$docb,@operation$status); 112 end read; $eject /**** initialize system by setting up 8237 dma controller and 8259A interrupt controller. *",,,,*/ 113 114 initialize$system: procedure; declare /* I/O ports */ dmaSd i sk$addr Spor t literally "DOH'" , dma$clearSff$port dma$master $clear$por t dma$mask$por t dma$cl$addr$port dma$cl$wordScountSport dma$c2$addr$port dmaSc 2$word$count$port dma$c3SaddrSport dmaSc 3$word$coun t$port iew1 icw2 literally literally literally literally literally literally literally literally literally literally literally literally literally literally literally 1* current address port */ /* /* /* /* /* /* word count port */ command por t * / mode port *1 mask set/reset port .. / clear first/last flip-flop port */ dma master clear port */ 1* parallel mask set port*/ dmaSd i sk$word$count$por t literally '01K' • literally "'08H'" , dma$command$por t dma$mode$por t literally "'OBH'" , dma$mask.$sr$port literally "'OAH'" , io...,4 ocwl ocw2 ocw3 "'OeH'" , ""OOH'" , '"OFH'" , '"02H'" , '03H' • ""04H" , '"05H'" , '06H' • '01H' • '10H' • '71H' • "'71H'" , '71H' • '10H' • '10H' , declare /* mise masks and literals */ dma$extended$wr ite Ii terally "shl (l, 5) "" , dma$single$transfer literally "'shl (1,6) '", dma$disk$mode literally" 40H'" I dma$cl$mode literally "41H', dma$c2$mode literally "42H", dma$c3$mode literally '"43H'", mode$8088 literally "'1'", interrupt$base literally "'20H'", single$controller l i terally '"shl (1,1) '" , level$sensitive literally '"shl(l,3)"', control$word$4$required literally "'1"', base$icwl literally ""lOH'", mask$a11 literally "'OFFH'", disk$interrupt$mask literally "'1"'; 115 1* extended wr i te flaq * / /* single transfer flag */ /* master reset *1 /* set dma command mode */ 116 111 output (dma$master$clear$port) =0: output (dma$mode$port) =dma$extended$write; 118 /* set all dma registers to valid values *1 output (dma$mask$port) =mask$all: /* mask all channels */ 119 120 121 122 123 124 125 126 121 2 2 2 2 2 2 2 2 1* set all addresses to zero .. / output (dma$clear$ff$port) =0; output (dma$disk$addr$port) =0, output (dma$disk$addr$port) =0; output (dma$cl$addr$port},.O; output (dma$cl$addr$port) =0: output (dma$c2$addr$port) =0, output (dma$c2$addr$port) =0; output (dma$c3$addr$port) =0: output (dma$c3$addr$port) =0, 128 129 130 131 132 133 134 135 136 2 2 2 2 2 2 2 2 2 1* set all word counts to valid values */ output (dma$clear$ff$port)-O: output (dma$disk$word$cQunt$port) =1; output (dma$disk$word$count$port) =1; output (dma$cl$word$count$port):&l output (dma$cl$word$cQunt$port) =1 output (dma$c2$word$count$port)-1 output (dma$c2$word$count$port) =1 output (dma$c3$word$count$port) =1 output (dma$c3Sword$count$port) =1 2 /* reset first/last flip-flop */ /* reset first/last flip-flop *1 207885-18 7-165 AP-121 137 138 139 140 141 142 143 144 1* initialize all dma channel modes */ output (dma$mode$port) -dma$disk$mode; output (dma$mode$port) =dma$cl$mode; output (dma$mode$port) =dma$c2Smode: output (dma$mode$port) -dma$c3$mode; 1* initialize 8259A interrupt con.troller "I output(icwl)=singleScontroller or level$sensitive or control$word4$required Qr base$icwl; output (icw2) =interrupt$base; output (iew4) =mode$8088;. 1* set 8088 interrupt mode "I output (o~wl) =not disk$interrupt$mask: 1* mask all interrupts except disk *1 I" initialize interrupt vector for fdo It/ 145 146 147 intvec (40H) =intptr (0) , intvec (41H) =intptr (1), end inltlalize$system; $eject Ift*.* 148 main program: first format disk- (all tracks on sidl! (head) O. read each sector on every track of the disk forever. ****1 Then declare drive$ready(4) byte external: 1* disable until interrupt vector setup and initialization complete *1 149 150 151 152 153 154 155 156 157 158 159 disable: 1* set initial floppy disk parameters *1 density=mfm; head=O, multitrack=O; . filler$byte=55H, tracks$per$disk=77 ; bytes$per$sector=1024 ; inter leave=6; step$rate=ll; head$load$time=40, head$unload$time=240; 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* double-density *1 single sided *1 no multitrack operation *1 for. format *1 normal floppy disk drive *1 1024 bytes in each sector *1 set track interleave factor *1 10ms for. SAeOO plus I for uncertainty *1 40ms head load for SAeOO *1 keep head loaded as long as possible *1 1* derive dependent parameters from those above *1 160 161 162 167 168 169 170 171 bytes$per$sector$code=shr (bytes$per$sector, 7) ; do index=O to 3; if (bytes$per$sector$code and 1) '<> 0 then do; bytes$per$sector$code=index; go to donebc; end; else bytes$per$sector$code-shr (bytes$per$sector$code, 1) ; end; donebc: sectors$per$ track-sec$ tr k$ table (bytes$per$sector$code-densi tV) ; format$gap=fmt$gap$table.(shl (dens i ty, 2) +bytes$per$sector$code) ; read$wr i te$gap=rd$wr$gap$table (shl (densi ty, 2) +bytes$per$sector$code) ; 1* initialize system and drivers *1 172 173 call initialize$system; . call initialize$drivers: 1* reenable interrupts and give 8272 a chance .to· report on drive' status before proceeding *1 174 175 enable; call time.CIO); 176 1* specify disk drive parameters *1 call specify (step$rate,head$load$time ,head$unload$time ,dma$mode) : 177 dr ive=O: 1* run single disk drive '0 *1 1* wait until drive ready *1 178 179 181 do while 11 if drive$ready(drive) then qo to start: end; 182 start: call format(drive,densitY~interleave); i83 do while 1; do cylinderllO to tracks$per$disk-l: call seek (drive,cylinder ,head) I . do sector~l to sectors$per$track: 184 185 186 1* set up wri te buffer *1 187 do in~ex=O to bytes$per$sector-l; wrbuf (index) =inde'x+sector+cylinder; end; 207885-19 7-166 AP-121 190 191 call wr ite (drive ,cylinder , head, sector ,densi ty); call read (dr ive ,cy1 inder ,head,sector ,density.) ; 1* check read buffer against write- buffer */ 192 194 195 196 197 if cmpw (@wrbuf,@rdbuf,shr (bytes$per$sector, 1)} <> OFFFFH then halt: 4 3 2 end; end; end; end run72: MODULE INFORMATION: CODE AREA SIZE 0570H CONSTANT AREA SIZE = OOOOH VARIABLE AREA SIZE 0907H MAXIMUM STACK S lZE 0022H 412 LINES READ o PROGRAM ERROR(S) 13920 00 23110 340 END OF PL/M-86 COMPILATION 207885-20 7-167 intJ AP-121 APPENDIX C 8272 DRIVER FLOWCHARTS NEXT RESET -DRIYE$READY -DRIYESSTATUSSCHANGE -OPERATIONSINSPROGRESS -OPERATIONSCOMPLETE RESET GLOBALSDRIYESNO 207885-21 207885-22" RETURN 207885-23 7·168 inter AP-121 207885-24 C ~ETURN ) , ____~E~R~R~O~R~____~ RETURN COMPLETE ) RETURN 207885-25 7-169 intJ AP·121 STARTDMA ··CHANNEL 207885-26 YES 207885-27 7-170 inter AP-121 YES ( RETURN ERROR ) '---------' ( RETURN ) '-----ERROR RETURN 207885-28 RESET OPERATlONSINSPROGRESS AND GLOBALSDRIVE$NO ( RETURN ) "'----- 7-171 207885-29 infef AP-121 RETURN INVALID STATUS ~=:-------C RETURN ) • , ____~BU~S~Y~S~T~A~TU~S~_' C ReTURN ) ~~~----~~_____ BU_S_Y_S_T_A_TU_S__~ ENABLE INTERRUPTS • C~ RETURN ) ___B~U~SY~ST~A~T~U~S__~ YES NO RETURN COMMAND ERROR STATUS 207885-30 7-172 inter AP·121 NO YES RETURN NO RESULT ERROR STATUS NO C RETURN ) '-------' 207885-31 7-173 intJ AP-121 COpy RESULT PHASE DATA FROM THE INTERRUPT DOCB TO CALLING DOCB RESET OPERATION$IN$PROGRESS FLAG SET OPERATION$COMPLETE FLAG C ",,-_......--RETURN ) 207885-32 7-174 inter AP-121 C FDCINT ) '----,-~ ASYNCHRONOUS INTERRUPT NO CALL CQPYSINTSRESUL T TO PUT OPERATION RESULT INFORMATION INTO THE Doca RESET OPERATIONSINSPROGRESS SET OPERATlON5COMPLETE RESET GLOBAL$ORIVE$NO CALL COPYStNTSRESULT TO PUT OPERATION RESULT INFORMATION INTO THE Daca DRIVE READY CHANGE 207885-33 7-175 Hard Disk Controllers 8 i~ 82064 CHMOS WINCHESTER DISK CONTROLLER WITH ON-CHIP ERROR DETECTION AND CORRECTION Controls ST506/ST412 Interface • Winchester Disk Drives 5 Mbitlsec Data Transfer Rate • Compatible with All Intel and Most • Other Microprocessors Speed Operation • -High"Zero Wait State" Operation with • Low Power CHMOS III • On-Chip Unit Automatically • CorrectsECC Errors 5 or 11-Bit Correction-Span Software • Selectable Implied Seeks with Read/Write • Commands Sector Transfer Capability • Multiple 128, 256, 512 and 1024 Byte Sector • Lengths in 40-Lead Ceramic Dual In• Available Line, 40-Lead Plastic Dual In-Line, and 8 MHz 80286 and 10 MHz 80186/188 - "One Wait State" Operation with 10 MHz 80286 Eight High-Level Commands: Restore, Seek, Read Sector, Write Sector, Scan ID, Write Format,Compute Correction, Set Parameter 44-Lead Plastic Chip Carrier Packages (See Packaging Spec., Order # 231369) The 82064 Winchester Disk Controller (WDC) with on-chip error detection and correction circuitry interfaces microprocessor systems to 5%" Winchester disk drives. The 82064 is a CHMOS version of the Western Digital WD201 o. It is an upgrade to the Western Digital WD1 01 OA-05 Winchester Disk Controller, and includes on-chip ECC, support for drives with up to 2k tracks, and has an additional control signal which eliminates an external decoder. The 82064 is fabricated on Intel's advanced CHMOS III technology and is available in 40-lead CERDIP, plastic DIP, and 44-lead plastic leaded chip carrier packages . ...., WAOAllo WRClOCIl AD DAY" ROGATE 231242-2 8UFFEA CO.HJlOl 6 5 .. 3 Vcc_ '11$5.- :z I .... 43 42 4140 o BRDY ..., DRUN " 231242-1 . Figure 1. 82064 Block Diagram 181920212223 2.. 25 26 2128 . . HHi!l'J'~13IH~ 231242-29 Figure 2. 82064 Pinouts 8-1 September 1987 Order Number: 231242·005 inter 82064 Table 1. Pin Description Pin.No. Symbol Type Name and Function DIP ·PLCC BCS 1 1 a BUFFER CHIP SELECT: Output used to enable reading or writing of the external sector buffer by the 82064. When low, the host should not be able to drive the 82064 data bus, RD, orWR lines. BCR 2 2 a BUFFER COUNTER RESET: Output that is asserted by the 82064 prior to readlwrite operation. This pin is asserted whenever BCS changes state. Used to reset the address counter of the buffer memory. INTRQ 3 3 0 INTERRUPT REQUEST: Interrupt generated by the 82064 upon command termination. It is reset when the STATUS register is read, or a new command is written to the COMMAND register. Optionally signifies when a data transfer is required on Read Sector commands. SDHLE 4 4 0 SDHLE is asserted when the SOH register is written by the host. RESET 5 7 I RESET: Initializes the controller and clears all status flags. Does not clear the Task Register File. RD 6 8 1/0 READ: Tri-state, bi-directional signal. As an input, RD controls the transfer of information from the 82064 registers to the host. RD is an output when the 82064 is reading data from the sector buffer (BCS low). WR 7 9 1/0 WRITE: Tri-state, bi-directional signal. As an input, WR controls the transfer of command or task information into the 82064 registers. WR is an output when the 82064 is writing data to the sector buffer (BCS low). CS 8 10 I CHIP SELECT: Enables RD and WR as inputs for access to the Task Registers. It has no effect once a disk command starts. AO-2 9-11 11-13 I ADDRESS: Used to select a register from the task register file. DBo_7 12-19 14-16 18-22 110 Vss 20 23 WR DATA 21 24 0 WRITE DATA:Output that shifts out MFM data at a rate determined by Write Clock. Requires an external 0 flip-flop clocked at 10 MHz. The output has an active pullup and pulldown that can sink 4.8 mA. LATE 22 25 0 LATE: Output used to derive a delay value for write precompensation. Valid when WR GATE is high. Active on all cylinders. EARLY 23 26 0 EARLY: Output used to derive a delay value for write precompensation. Valid when WR GATE is high. Active on all cylinders. DATA BUS: Tri-state, bi-directionaI8-bit Data Bus with control determined by BCS. When BCS is high the microprocessor has full control of the data bus for reading and writing the Task Register File. When BCS is low the 82064 controls the data bus to transfer to or from the buffer. Ground 8-2 inter 82064 Table 1. Pin Description (Continued) Pin No. Symbol Type Name and Function 27 0 WRITE GATE: High when write data is valid. WR GATE goes low if the WR FAULT input is active. This output is used by the drive to enable head write current. 25 29 I WRITE CLOCK: Clock input used to derive the write data rate. Frequency = 5 MHz for the ST506 interface. DIR 26 30 0 DIRECTION: High level on this output tells the drive to move the head inward (increasing cylinder number). The state of this signal is determined by the 82064's internal comparison of actual cylinder location vs. desir?d cylinder. STEP 27 31 0 STEP: This signal is used to move the drive head to another cylinder at a programmable frequency. Pulse width = 1.6 p.s for a step rate of 3.2 p.s/step, and 8.4 p's for all other step rates. DRDY 28 32 I DRIVE READY: If DRDY from the drive goes low, the command will be terminated. INDEX 29 33 I INDEX: Signal from the drive indicating the beginning of a track. It is used by the 82064 during formatting, and for counting retries. Index is edge triggered. Only the rising edge is valid. WRFAULT 30 34 I WRITE FAULT: An error input to the 82064 which indicates a fault condition at the drive. If WR FAULT from the drive goes high, the command will be terminated. TRACK 000 31 35 I TRACK ZERO: Signal from the drive which indicates that the head is at the outermost cylinder. Used to verify proper completion of a RESTORE command. SC ;32 36 I SEEK COMPLETE: Signal from the drive indicating to the 82064 that the drive head has settled and that reads or writes can be made. SC is edge triggered. Only the rising edge is valid. RWe 33 37 0 REDUCED WRITE CURRENT: Signal goes high for all cylinder numbers above the value programmed in the Write Precomp Cylinder register. It is used by the precompensation logic and by the drive to reduce the effects of bit shifting. DRUN 34 38 I DATA RUN: This signal informs the 82064 when a field of all ones or all zeroes has been detected in the read data stream by an external one-shot. This indicates the beginning of an ID field. RD GATE is brought high when DRUN is sampled high for 16 clock periods. BRDY 35 39 I BUFFER READY: Input used to signal the controller that the buffer is ready for reading (full), or writing (empty), by the host p.P. Only the rising edge indicates the condition. DIP PLCC WRGATE 24 WRCLOCK 8·3 inter 82064 Table 1 Pin Description (Continued) Pin No. Symbol Name and Function Type DIP PLCC BDRQ 36 40 0 BUFFER DATA REQUEST: Activated during Read or Write commands when a data transfer between the host and the 82064's sector buffer is required. Typically used as a DMA request line. RDDATA 37 41 I READ DATA: Single ended input that accepts MFM data from the drive. RDGATE 38 42 0 READ GATE: Output that is asserted when a search for an address mark is initiated. It remains asserted until the end of the 10 or data field. RDCLOCK 39 43 I READ CLOCK: Clock input derived from the external data recovery circuits. Vee 40 44 I D.C. POWER: NC - 5,6 17,28 + 5V. No Connects , Improvements to the processor interface to provide high-speed "zero wait state" operation with 10 MHz 80186/188 and 8 MHz 80286. High-speed "one wait state" operation with 10 MHz 80286. FUNCTIONAL DESCRIPTION The Intel 82064 CHMOS Winchester Disk Controller (WDC) interfaces microprocessor systems to Winchester disk drives that use the Seagate Technology ST50S/ST412 interface. The device translates parallel data from the microprocessor to a 5 Mbitlsec, MFM-encoded serial bit stream. It provides all of the drive control logic and control signals which simplify the design of external data separation and write precompensation circuitry. The 82064 is designed to interface to the host processor through an external sector buffer. The 82064 is completely socket and software compatible with the WD201 0 Winchester Disk Controller. As with the WD2010, the 82064 is also socket and software compatible with existing WD1010A-05 designs that do not include external ECC. INTERNAL ARCHITECTURE The internal architecture of the 82064 is shown in more detail in Figure 3. It is made up of seven major blocks as described below. On-chip error detection algorithms include the CRCI CCITT and a 32~bit computer generated ECC polynomial. If the ECC code is selected, the 82064 provides three possible error handling techniques if an error is detected during a read operation: PLA Controller 1. Automatically correCt the data in the sector buffer, providing the host with good information. . The PLA interprets commands and provides all con-· trol functions. It is synchronized with WR CLOCK. 2. Provide the host with the error location and pattern, allowing the host to correct the error. 3. Take no action other than setting the error flag. Magnitude Comparator The Intel 820S4 is an enhanced version of the Western Digital WD2010 Winchester Disk Contrpller. The 82064 has been completely' redesigned for Intel's advanced CHMOS III· fabrication process, allowing Intel to offer a high quality, low power device while at the same time maintaining complete compatibility with the WD2010. An 11-bit magnitude comparator is used to calculate the direction and number of steps needed to move the heads from the present to the desired cylinder position. It compares the cylinder number in the task file to the internal "present position" cylinder number. A separate high-speed equive.lance· comparator is used to compare 10 field bytes when searching for a sector 10 field. Enhancements to the basic design include: Conversion to a CHMOS III fabrication process for low power consumption. .8-4 82064 0110·7 WR DATA WR CLOCK iiii \Vii .00·2 INTRa , . i f I RD CLOCK HOST IFC iiffiT RD DATA Cs PLA CONTROLLER , . - - " ... S'i5"H'lE STEP OIRC iCR IIROY BORa miC'/ LATE BUFFER IFC DROY WR FAULT IiCI TRACK 000 INDEX Vcc~ SC GND_ RWC WRGATE RD GATE L-;;';"..I""r- ORUN 231242-3 Figure 3. 82064 Detailed Block Diagram CRC and ECC Generator and Checker data field CRC error occurs the "ECC/CRC" bit in the error register will be set. The 82064 provides two options for protecting the integrity of the data field. The data field may have either a CRC (SOH register, bit 7 = 0), or a 32-bit ECC (SOH register, bit 7 = 1) appended to it. The 10 field is always protected by a CRC. The ECC mode is only applicable to the data field. It provides the user with the ability to detect and correct errors in the data field automatically. The commands and registers which must be considered when ECC is used are: The CRC mode provides a means of verifying the accuracy of the data read from the disk, but does not attempt to correct it. The CRC generator computes and checks cyclic redundancy check characters that are written and read from the disk after 10 and data fields. The polynomial used is: 1. SOH Register; bit 7 (CRC/ECC) 2. READ SECTOR Command, bit 0 (T) 3. READ SECTOR and WRITE SECTOR Commands,bit1 (L) 4. COMPUTE CORRECTION Command 5. SET PARAMETER Command 6. STATUS Register, bit 2 - error correction successful The CRC register is preset to all one's before computation starts. 7. STATUS Register, bit 0 - error occurred 8. ERROR Register, bit 6 - uncorrectableerror If the CRC character generated while reading the data does not equal the one previously written an error exists. If an 10 field CRC error occurs the "10 not found" bit in the error register will be set. If a To enable the ECC mode, bit 7 of the SOH register must be set to one. 8-5 intJ 82064 Bit O(T) of the READ Command controls whether or not error correction is attempted~ When T = 0 and an error is detected, the 82064 tries up to 10 times to correct the error. If the error is successfully corrected, bit 2 of the STATUS Register is set. The host can interrogate the status register and detect that an error occurred and was corrected. If the error was not correctable, bit 6 of the ERROR Register is set. If the correction span was set to 5 bits, the host may now execute the SET PARAMETER Command to change the correction span to 11 bits, and attempt the read again. If the error persists, the host can read the data, but it will contain errors. MFM ENCODER/DECODER Encodes and decodes MFM data to be written/read from the drive. The MFM encoder operates from WR CLOCK, a clock having a frequency equal to the bit rate. The MFM decoder operates from RD CLOCK, a bit rate clock generated by the external data separator. RD CLOCK and WR CLOCK need not be synchronous. The MFM encoder also generates the write precompensation control signals. Depending on the bit pattern of the data, EARLY or LATE may be asserted. External circuitry uses these signals to compensate for drift caused by the influence one bit h~ another. More information on the use of the EARLY and LATE control signals can be found in the section which describes the drive interface. When T = 1 an'd an error is detected, no attempt is made to correct it. Bit 0 of the STATUS Register and bit 6 of the ERROR Register are set. The user now has two choices: 1. Ignore'the error and make no attempt to correct it.. 2. Use the COMPUTE CORRECTION Command to determine the location and pattern of the error, and correct it within the user's program. Address Mark (AM) Detection An address mark is comprised of two unique bytes preceeding both the 10 field and the data field. The first byte is used for resynchronization. The second byte indicates whether it is an 10 field or a data field. When the COMPUTE CORRECTION Ccimmand is implemented, it must be done before executing any command which can alter the contents of the ECC Register. The READ. SECTOR, WRITE SECTOR, SCAN 10.. and FORMAT Commands will alter this register and correction will be impossible. The COMPUTE CORRECTION Command may determine that the error is uncorrectable, at which point the error bits in the STATUS and ERROR Registers are set. The first byte, A 1H, normally has a clock pattern of OEH; however, one clock -pulse has been suppressed, making it OAH. With this pattern, the AM detector knows it is looking at an address mark. It now examines the next byte to determine if it is an 10 or data field. If this byte is 111101XX or 111111XX it is an 10 field. Bits 3, 1, and 0 are the high' order cylinder number bits. If the second byte is F8H, it is a data field. Although ECC generation starts with the first bit of the F8H byte in the data 10 field, the actual ECC bytes written will be the same as if the A1H byte was included. The ECC polynomial used is: Host/Buffer Interface Control X32+ X28+ X26+ X19+ X17 + Xl0+ X6+ X2+ 1 The primary interface between .the host processor and the 82064 is an 8-bit bi-directional bus. This bus is used to transmit and receive data for both the 82064 and the sector buffer. The sector buffer consists of a static RAM and counter. Since the 82064 makes the b.us active when accessing the sector buffer, a transceiver must be used to isolate the host during this time. Figure 4 illustrates a typical interface with a sector buffer.' Wheneverthe 82064 is not using the sector buffer, the BUFFER CHIP SELECT (BCS) is high (disabled). This allows the host access to the 82064's Task Register File and to the sector buffer. A decoder is used to generate BCS when is '000', an unused address in..,!!!.e 82064. A binary counter is enabled whenever RD or WR go active. The location within the sector buffer which is addressed by the counter will be accessed. The counter will be incremented by the trailing edge of the RD or WR. This allows the host to access se- For automatic error correction,' the external sector buffer must be implemented with a static RAM and . counter, not with a FIFO~ The SET PARAMETER Command is used to select a 5-bit or 11-bit correction span. When the L Bit (bit 1) of the READ, SECTORand WRITE SECTOR commands is set to one, they are referred to as READ LONG and WRITE LONG commands. For these commands, no CRe or·ECC characters are generated or checked qy the 82064. In effect, the data field is extended by4 bytes which are passed to/from the sector buffer. Ao-2 With proper use of the WRITE SECTOR, READ LONG, WRITE LONG, and READ SECTOR Commands,. a: diagnostic. routine may be developed to test the accuracy of the error correction process. 8-6 82064 '" '" - RD WR DATA - RD ~ - -WR l.--C -- ~ '/. DATA BUS (8) '/, '/. tl~~ HOST CPU SYSTEt.4 t.iR TC r-- , 3/ ADDRESS r - D E C 0 ~ DB O_ 7 '/ BCR QO f-f-f-f-- A o DATA Al •• • ••• r-- ••• • • r-- QX f-- • AX t - iiE f- 82064 WE r-- -CS Q I- BCS -CS I- , 3/ ~ D DATA INTERRUPT REQUEST , BDRQ CP Dt.4A CONTROLLER T 1 AO_2 BRDY Q I INTRQ 231242-4 Figure 4. Host Interface Block Diagram necting the host through the transceivers, and the RD and WR lines become outputs from the 82064 to allow access to the sector buffer. When the 82064 is done using the buffer, it deasserts BCS which again allows the host to access the local bus. The READ SECTOR command operates in a similar manner, except the buffer is loaded by the 82064 instead of the host. quential bytes within the sector buffer, The decoder also generates a CS for the 82064 whenever AO-2 does not equal '000', allowing access to the 82064's internal Task Register File while keeping the sector buffer tri-stated, During a WRITE SECTOR Command, the host processor sets up data in the Task Register File and then issues the command. The 82064 asserts BUFFER COUNTER RESET (BCR) to reset the counter. It then generates a status to inform the host that it can load the sector buffer with data to be written. When the counter reaches its maximum count, the BUFFER READY (BRDY) signal is asserted by the carry out of the counter, informing the 82064 that the sector buffer is full. (BRDY is a rising edge triggered signal which will be ignored if asserted before the 82064 asserts BCR.) BCS is then asserted, discon- Another control signal, BUFFER DATA REQUEST (BDRQ), can be used with a DMA controller to indicate that the 82064 is ready to send or receive data. When data transfer is via a programmed 1/0 environment, iUs the responsibility of the host to interrogate the DRQ status bit to determine if the 82064 is ready (bit 3 of tlie status register). For further explanation, refer to the individual command descriptions and the A.C. Characteristics. 8-7 inter 82064 When INTRa is asserted, the host is signaled that execution of a command has terminated (either a normal termination or an aborted command). For the READ SECTOR command, interrupts may be programmed to be asserted either at the termination of the command, or when BDRa is asserted. INTRa will remain active until the host reads the STATUS register to determine the cause of the termination, or writes Ii new command into the COMMAND register. Drive Interface The drive side of the 82064 WDC requires three sections of external logic. These are the control line buffer/receivers, data separator, and write precompensation. Figure 5 illustrates a drive interface. The buffer/receivers condition the control lines to be driven down the cable to the drive. The control lines are typically single-ended, resistor terminated, TIL levels. The data lines to and from the drive also require buffering. This is typically done with differential RS-422 drivers. The interface specification for the drive will be found in the drive manufacturer's OEM The 82064 asserts SDHLE whenever the SDH register is being written. This signal can be. used to latch the drive and head select information in an external register for decoding. Figure 5 illustrates one method. j, .) 08 0 _ 4 " 0 0 0 Or--01-~~ Dl A T C H 0 E C 0 0 E HSElO HSEl1 HSEl2 DSEll -DSEl2 - DSEl3 -DSEl4 SDHlE RD GATE ORUN RD DATA RD CLOCK DATA SEPARATOR - 82064 WR DATA HOST t:: ~ " 08 0 _ 7 " EARlY LATE RWC STEP DIR ORDY WR FAULT TRACK 000 INDEX SC WR GATE WRITE PRECOMPENSATION AND SYNCHRONIZA nON DISK DRIVE INTERFACE/ 8urrER 231242-5 Figure 5. Drive Interface Block Diagram 8-8 inter 82064 The write precompensation circuitry is designed to reduce the drift in the data caused by interaction between bits. It is divided into two parts, REDUCED WRITE CURRENT (RWC) and EARLY/LATE writing of bits. A block diagram of a typical write precompensation circuit is shown in Figure 8. manual. The 82064 supplies TTL compatible signals, and will interface to most buffer/driver devices. The data recovery circuits consist of a phase locked loop, data separator, and associated components. The 82064 interacts with the data separator through the DATA RUN (DRUN) and RD GATE signals. A block diagram of a typical data separator circuit is shown in Figure 6. Read data from the drive is presented to the RD DATA input of the 82064, the reference multiplexor, and a retriggerable one shot. The RD GATE output will be deasserted when the 82064 is not inspecting data. The PLL should remain locked to the reference clock. The cylinder in which the RWC line becomes active is controlled by the REDUCE WRITE CURRENT register in the Task Register File. When a cylinder is written which has a cylinder number greater than or equal to the contents of this register, the write current will be reduced. This will decrease the interaction between the bits. Drift may also be caused by the bit pattern. With certain combinations of ones and zeroes some of the bits can drift far enough apart to be difficult to read without error. This phenomenon can be minimized by using EARLY and LATE as described below. The 82064 examines three bits, the last one written, the one being written, and the next one to be . written. From this, it determines whether to assert EARLY or LATE. Since the bit leaving the 82064 has already been written, it is too late to make it early. Therefore, the external delay circuit must be as follows: EARLY asserted and LATE deasserted = no delay EARLY deasserted and LATE deasserted = one unit delay (typically 12-15 ns) EARLY deasserted and LATE asserted = two units delay (typically 24-30 ns) When any READ or WRITE command is initiated and a search for an address mark begins, the DRUN input is examined. The DR UN one-shot is set for slightly longer than one bit time, allowing it to retrigger constantly on a field of all ones or all zeroes. An internal counter times out to see that DRUN is asserted for two byte times. RD GATE is asserted by the 82064, switching the data separator to lock on to the incoming data stream. If DRUN is de asserted prior to an additional seven byte times, RD GATE is de asserted and the process is repeated. RD GATE will remain asserted until a non-zero, non-address mark byte is detected. The 82064 will then deassert RD GATE for two byte times to allow the PLL to lock back on the reference clock, and start the DRUN search again. If an address mark is detected, RD GATE remains asserted and the command will continue searching for the proper 10 field. This sequence is shown in the flow chart in Figure 7. EARLY and LATE are always active, and should be gated .externally by the RWC signal. Figure 8 illustrates one method of using these signals. 250 NSEC RETRIGGERABLE ONE-SHOT IoAFIoA DISK DATA ~ J - L~"m. A IoAUX I DRUN ~ 1I f-- PHASE COIoAP AND c ~ RD DATA r~ I vco B +2 82064 1-+ RD. CLOCK RD GATE I I +2 I I tOIoAHZ OSC WR CLOCK 231242-6 Figure 6. Data Separator Circuit 8-9 i~ 82064 231242-7 Figure 7. PLL Control Sequence 8-10 inter 82064 DELAY LINE WR DATAI---~ EARLY 12NS 1-----1 24NS LATE t---'--~ WR DATA TO DRIVE 82064 10t.lHZ osc RWCt-----------__-+------------------~ '-----------------------------------+ TO DRIVE 231242-9 Figure 8. Write Precompensation Circuit TASK REGISTER FILE Bit 6 - GRG/EGG Data Field Error (GRG/EGG) The Task Register File is a bank of nine registers used to hold parameter information pertaining to each command, status information, and the command itself. These registers and their addresses are: When in the GRG mode (SDH register, bit 7 = 0), this bit is set when a GRG error occurs in the data field. When retries are enabled, ten more attempts are made to read the sector correctly. If none of these attempts are successful bit 0 in the STATUS register is also set. If one of the attempts is successful, the GRG/EGG error bit remains set to inform the host that a marginal condition exists; however, bit 0 in the STATUS register is not set. A2 A1 AO 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 READ BUS TRI-STATED ERROR REGISTER SECTOR COUNT SECTOR NUMBER CYLINDER LOW CYLINDER HIGH SOH STATUS WRITE BUS TAl-STATED REDUCE WRITE CURRENT SECTOR COUNT SECTOR NUMBER CYLINDER LOW CYLINDER HIGH SOH COMMAND When in the EGG mode (SDH register, bit 7 = 1), this bit is set when the first non-zero syndrome is detected. When retries are enabled, up to ten attempts are made to correct the error. If the error is successfully corrected, this bit remains set; however, bit 2 of the STATUS register is also set to inform the host that the error has been corrected. If the error is not correctable, the GRG/EGG error bit remains set and bit 0 of the STATUS register is also set. NOTE: These registers are not cleared by RESET being asserted. ERROR REGISTER This read only register contains specific error information after the termination of a command. The bits are defined as follows: I:s ICRC~ECC I ~ II~ I~ I I :C TKOOO The data may be read even if uncorrectable errors exist. o NOTE: If the long mode (L) bit is set in the READ or WRITE command, no error checking is performed. DAM Bit 7 - Bad Block Detect (BB) Bit 5 - Reserved This bit is set when an ID field has been encountered that contains a bad block mark. It is used for bad sector mapping. Not used. Forced to zero. 8-11 intJ 82064 Bit 4 - 10 Not Found (10) This bit is set to indicate that the correct cylinder, head, sector, or size parameter could not be found, or that a CRC error occurred in the 10 field. This bit is set on the first failure and remains set even if the error is recovered on a retry. When recovery is unsuccessful, the Error bit (bit 0) of the STATUS register is also set. For a SCAN 10 command with retries enabled (T = 0), the Error bit in the STATUS register is set after ten unsuccessful attempts have been made to find the correct .10, With retries disabled (T = i), only two attempts are made before setting the Error bit. For a READ or WRITE command wlth retries enabled (T = 0), ten attempts are made to find the correct 10 field. If there is still an error on the tenth try, an auto-scan and auto-seek are performed. Then ten more retries are made before setting the Error bit. When Jetries are disabled (T = 1), only two tries are made. No auto-scan or auto-seek operations are performed. The value (OO-FFH) loaded into this cylinder is internally multiplied by four to specify the actual cylinder where RWC is asserted. Thus a value of 01 H will cause RWC to be asserted on cylinder 04H, 02H on cylinder 08H, ... , 9CH on cylinder 270H, 9DH on cylinder 274H, and so on. HWC will be asserted when the present cylinder is greater than or equal to four times the value of this register. For example, the ST506 interface requires precomp on cylinder 80H and above. Therefore, the REDUCE WRITE CURRENT register should be loaded with 20H. A value of FFH causes RWC to remain deasserted, regardless of the aciual cylinder number. SECTOR COUNT REGISTER This register is used to define the number of sectors that need to be transferred to the buffer during a READ MULTIPLE SECTOR or WRITE MULTIPLE SECTOR command. I 7 1 6 1 5. 141 31 o 2 Bit 3 - Reserved Not used. Forced to zero. Bit 2 - Aborted Command (AC) Command execution is aborted and this bit is set if a command was .issued while DRDY is deasserted or WR FAULT is asserted. This bit will also be set ifan undefined comrnand is written to the COMMAND register; however, an implied seek will be executed. Bit 1 - Track 000 Error (TKOOO) This bit is set during the execution of a RESTORE command if the TRACK 000 pin has not gone active after the issuance of 2047 step pulses. Bit 0 - Data Address Mark (DAM) Not Found This bit is set during the execution of a READ SECTOR command if the DAM is not found following the proper sector 10. REDUCE WRITE CURRENT REGISTER This register is used to define the cylinder number where the RWC output (Pin 33) is asserted. 7 6 I 5 I 4 I 3 I 2 CYLINDER NUMBER -;- 4 1 The value contained in the register is decremented after each sector is transferred to/from the sector buffer. A zero represents a 256 sector transfer, a one a one sector transfer, etc. This register is a "don't care" when single· sector commands are specified. SECTOR NUMBER REGISTER This regrster holds the sector number of the desired sector. 17 1 6 15 1·4 1 3 1 2 I SECTOR NUMBER For a multiple sector command, it specifies the first sector to be transferred. It is incremented after each sector is transferred to/from the sector buffer. The SECTOR NUMBER register may contain any value from 0 to 255. The SECTOR NUMBER register is also used to program the Gap 1 and Gap 3 lengths to be used when formating a disk. See the WRITE FORMAT command description for further explanation. inter 82064 the drive number recorded, but does have the bad block mark written. The format of the SOH byte written on the disk is: CYLINDER NUMBER LOW REGISTER This register holds the lower byte of the desired cylinder number. I 7 I 6 I 5 I 4 I 3 I 2 I I 1 I HEAD STATUS REGISTER It is used with the CYLINDER NUMBER HIGH register to specify the desired cylinder number over a range of 0 to 2047. The status register is used to inform the host of certain events performed by the 82064, as well as reporting status from the drive control lines. Reading the STATUS register deasserts INTRO. The format is: CYLINDER NUMBER HIGH REGISTER This register holds the three most significant bits of the desired cylinder number. Bit 7 - Busy This bit is asserted when a command is written into the COMMAND register and, except for the READ command, is deasserted at the end of the command. When executing a READ command, Busy will be deasserted when the sector buffer is full. Commands should not be loaded into the COMMAND register when Busy is set. When the Busy bit is set, no other bits in the STATUS or ERROR registers are valid. The CYLINDER NUMBER LOW/HIGH register pair determine where the R/W heads are to be positioned. The host writes the desired cylinder number into these registers. Internal to the 82064 is another pair of registers that hold the present head location. When any command other than a RESTORE is executed, the internal head location registers are compared to the CYLINDER NUMBER registers to determine how many cylinders to move the heads and in what direction. Bit 6 - Ready The internal head location registers are updated to equal the CYLINDER NUMBER registers after the completion of the seek. This bit reflects the status of DRDY (pin 28). When this bit equals zero, the command is aborted and the status of this bit is latched. When a RESTORE command is executed, the internal head location registers are reset to zero while DIR and STEP move the heads to track zero. Bit 5 - Write Fault (WF) SECTOR/DRIVE/HEAD (SDH) REGISTER This bit reflects the status of WR FAULT (pin 30). When this bit equals one the command is aborted, INTRO is asserted, and the status of this bit is latched. The SDH register contains the desired sector size, drive number, and head parameters. The format is shown in Figure 9. The EXT bit (bit 7) is used to select between the CRC or ECC mode. When bit 7 = 1 the ECC mode is selected for the data field. When bit 7 = 0 the CRC mode is selected. Bit 4 - Seek Complete (SC) This bit reflects the status of SC (pin 32). When a seek or implied seek has been initiated by a comm'and, execution of the command pauses until the seek is complete. This bit is latched after an aborted command error. The SOH byte written in the 10 field of the disk by the FORMAT command is different than the SOH register contents. The recorded SOH byte does not have 8-13 inter 82064 7 6 5 4 o 2 L DRIVE S;IZE ,, , r-' 3 \ I \ \ . \ 1....._--"'- .. ----... -------... ----.. 6 5 SECTOR SIZE 4 3 DRIVE # 2 1 0 HEAD # 0 0 1 1 0 1 0 1 256 512 1024 128 0 0 1 1 0 1 0 1 OSEL1 OSEL2 OSEL3 OSEL4 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 HSELO HSEL1 HSEL2 HSEL3 HSEL4 HSEL5 HSEL6 HSEL7 231242-10 NOTE: Drive select and head select lines must be generated externally. Figure 3 represents one method of achieving this. Figure 9. SDH Register Format Bit 3 - Data Request (ORQ) Bit 0 - Error The ORQ bit reflects the status of BORQ (pin 36). It is asserted when the sector buffer must be written into or read from. ORQ and BORQ remain asserted until BROY indicates that the sector buffer has been filled or emptied, depending upon the command. BDRQ can be used for OMA interfacing, while ORQ is used in a programmed I/O environment. This bit is set whenever any bits in the ERROR register are set. It is the logical 'or' of the bits in the ERROR register and may be used by the host processor to quickly check for nonrecoverable errors. The host must read the ERROR register to determine what type of error occurred. This bit is reset when a new command is written into the COMMAND register. Bit 2 - Data Was Corrected (OWC) When set, this bit indicates that an ECC error has been detected during a read operation, and that the data in the sector buffer has been corrected. This provides the user with an indication that there may be a marginal condition within the drive before the errors become uncorrectable. This bit is forced to zero when not in the ECC mode. COMMAND REGISTER The command to be executed is written into this. write-only register: I7 I 6 I 5 I 4 I 3 I 2 o COMMAND Bit 1 - Command In Progress (CIP) The command sets Busy and CIP, and begins to execute as soon as it is written into this register. Therefore, all necessary information should be loaded into the Task Register File prior to entering the command. Any attempt to write a register will be ignored until command execution has terminated, as indicated by the CIP bit being cleared. INTRQ is deasserted when the COMMAND register is written. When this bit is set a command is being executed and a new command should not be loaded. Although a command is being executed, the sector buffer is still available for access by the host. When the 82064 is no longer Busy (bit 7 = 0) the STATUS register can be read. If other registers are read while CIP is set the contents of the STATUS register will be returned. 8-14 82064 COMMAND RESTORE SEEK READ SECTOR WRITE SECTOR SCANID WRITE FORMAT COMPUTE CORRECTION SET PARAMETER Ra-o = 7 6 5 4 3 2 1 0 0 1 R3 R2 R1 0 0 0 0 0 0 0 0 1 1 1 R3 R2 R1 I M L 0 M L 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 G 0 0 0 0 0 0 0 RO RO T T T T = G = Gap Filler Byte. G = o. Gaps 1, 3 and pad bytes "4E". 1 Disable retries. G = 1. Gaps 1, 3 and pad bytes "AA". 0 0 S S = Error Correction Span S = 0 5-bit span. S Stepping Rate Field = 1 11-bit span. For 5 MHz WR CLOCK: RESTORE COMMAND R3-0'= 0000 35 p.s 0001 0.5 ms 0010 1.0 ms 0011 1.5 ms 0100 2.0 ms 0101 2.5 ms 0110 3.0 ms 0111 3.5 ms 1000 4.0 ms 1001 4.5 ms 1010 5.0 ms 1011 5.5 ms 1100 6.0 ms 1101 6.5 ms 1110 3.2 p's 1111 16 p.s The RESTORE command is used to position the R/W heads over track zero. It is usually issued by the host when a drive has just been turned on. The 82064 forces an auto-restore when a FORMAT command has been issued following a drive number change. The actual step rate used for the RESTORE command is determined by the seek complete time. A step pulse is issued and the 82064 waits for a rising edge on the SC line before issuing the next pulse. If the rising edge of SC has not occurred within ten revolutions (INDEX pulses) the 82064 switches to sensing the level of SC. If after 2047 step pulses the TRACK 000 line does not go active the 82064 will set the TRACK 000 bit in the ERROR register, assert INTRa, and terminate execution of the command. An interrupt will also occur if WR FAULT is asserted on DRDY is de asserted at any time during execution. I = Interrupt Control I = 0 INTRa occurs with BORa/ORa indicating the sector buffer is full. Valid only when M = o. The rate field specified (Ra-o) is stored in an internal register for future use in commands with implied seeks. I = 1 INTRa occurs when the command is completed and the host has read the sector buffer. M = Multiple Sector Flag M = M = 0 Transfer one sector. Ignore the SECTOR COUNT register. 1 Transfer multiple sectors. L = A flowchart of the RESTORE command is shown in Figure 10. SEEK COMMAND The SEEK command can be used for overlapping seeks on multiple drives. The step rate used is taken from the Rate Field of the command, and is stored in an internal register for future use by those commands with implied seek capability. Long Mode 0 Normal mode. Normal CRC or ECC functions are performed. L = 1 Long mode. No CRC or ECC bytes are developed or error checking performed on the data field. The 82064 appends the four additional bytes supplied by the host or disk to the data field. L = T = Retry Enable T = 0 Enable retries. The direction and number of step pulses needed are calculated by comparing the contents of the CYLINDER NUMBER registers in the Task Register File to the present cylinder position stored internally. After all the step pulses have been issued the present cylinder position is updated, INTRa is asserted, and the command terminated. 8-15 82064 If DRDY is deasserted or WR FAULT is asserted during the execution of the command, INTRa is asserted and the command aborts setting the AC bit in the ERROR register. If an implied seek is performed, the step rate indicated by the rate· field is used for all but the last step pulse. On the last pulse, the command execution continues until the rising edge of SC is detected. If 10 INDEX pulses are received without a rising edge of SC, the 82064 will switch to sensing the level of SC. RESET INTRD EARORS. SET BUSY, CIP RESET AWe SET DIRECTION = OUT STORE STEP RATE A flowchart of the SEEK command flow is shown in Figure 11. READ SECTOR PULSE ID SET INTRQ RESET, BUSY.CIP The READ SECTOR command is used to transfer one or more sectors of data from the disk to the sector buffer. Upon receipt of the command, the 82064 checks the CYLINDER NUMBER LOW IHIGH register pair against the internal cylinder position register to see if they are equal. If not, the direction and number of steps calculation takes place, and a seek is initiated. As stated in the description of the SEEK command, if an implied seek occurs, the step rate specified by the rate field is used for all but the last step pulse. On the last step pulse the seek continues until the rising edge of SC is detected. If. the 82064 detects a change in the drive number since the last command, an auto-scan 10 is performed. This updates the internal cylinder position register to reflect the current drive before the seek begins. After the 82064 senses SC (with or without an implied seek) it must find an 10 field with the correct cylinder number, head, sector size, and CRC. If retries are enabled (T = O), ten attempts are made to find the correct 10 field. If there is still an error on the tenth try, an auto-scan 10 and auto-seek are performed. Then ten more retries are attempted before setting the 10 Not Found error bit. When retries are disabled (T = 1) only two tries are made. No autoscan or auto-seek operations are performed. ISSUE A ST£PPULSE When the data address mark (DAM) is found, the 82064 is ready to transfer data into the sector buffer. • When the disk has filled the sector buffer, the 82064 asserts BORa and ORa and then checks the I flag. If 1= 0, INTRa is asserted, signaling the host to read the contents of the sector buffer. If I = 1, INTRa· occurs after the host has read the sector buffer and the command has terminated. If after successfully reading the 10 field, the DAM is not found ( the DAM Not Found bit in the ERROR register is set. 8-16 231242-11 Figure 10. Restore Command Flow intJ 82064 RESET INlRQ, ERRORS, SET BUSY, ClP STORE STEP RATE YES YES YES NO 231242-12 Figure 11. Seek Command Flow 8-17 intJ 82064 When M = 1 (Multiple Sector Read) 1. HOST: Sets up parameters. Issues READ SECTOR command. 2. 82064: Asserts BCR. 3. 82064: Finds sector specified. Asserts BGR and BCS. Transfers data to sector buffer. 4. 82064: Asserts BCR. Deasserts BCS. 5. 82064: Asserts BDRa and DRa. 6. HOST: Reads contents of sector buffer. 7. SECTOR BUFFER: Indicates data has been transferred by asserting SRDY. 8. 82064: When BRDY is asserted, decrement SECTOR COUNT, increment SECTOR . NUMBER. If SECTOR COUNT = 0, go to 10. 9. 82064: Go to 2. 10. 82064: Assert INTRa. An optional M flag can be set for multiple sector transfers. When M = 0, one sector is transferred and the SECTOR COUNT register is ignored. When M = 1, multiple sectors are transferred. After each sector is transferred, the 82064 decrements the SECTOR COUNT register am:! increments the SECTOR NUMBER register. The next logical sector is transferred regardless of any interleave. Sectors are numbered during the FORMAT command by a byte in the ID field. For the 82064 to make multiple sector transfers to the sector buffer, the BRDY signal must be toggled from low to high for each sector. The transfers continue until the SECTOR COUNT register equal zero. If the SECTOR COUNT is not zero (indicating more sectors remain to be read), and the sector buffer is full, BDRa will be asserted and the host must unload the sector buffer. Once this occurs, the sector buffer is free to accept the next sector. WR FAULT and DRDY are monitored throughout the command execution. If· WR FAULT is asserted or DRDY is deasserted, the command will terminate and the Aborted Command bit in the ERROR register will be set. For a description of the error checking procedure on the data field see the explanation in the section entitled "CRC and ECC Generator and Checker." A flowchart of the READ SECTOR command is shown in Figure 12.. WRITE SECTOR Both the READ and WRITE commands feature a "simulated completion" to ease programming. BDRa, DRa, and INTRa are generated in a normal manner upon detection of an error condition. This allows the same program flow for successful or unsuccessful completion of a command. In summary then, the READ SECTOR operation is as follows: When M = 0 (Single Sector Read) 1. HOST: Sets up parameters. Issues READ' SECTOR command. 2. 82064: Asserts BCR. 3. 82064: Finds sector specified. Asserts BCR and BCS. Transfers data to sector buffer. 4. 82064: Asserts BCR. Deasserts BCS. 5. 82064: Asserts BDRa and DRa. 6. 82064: If I = 1 then go to 9. 7. HOST: Read contents of sector buffer. 8. 82064: Wait for BRDY, then assert INTRa. End. 9. 82064: Assert INTRa. 10. HOST: Read contents of sector buffer. End. 8-18 The WRITE SECTOR command is used to write one or more sectors of data from the sector buffer to the disk. Upon receipt of the command, the 82064 checks the CYLINDER NUMBER LOW/HIGH register pair against the internal cylinder position register to see if they are equal. If not, the direction and number of steps calculation takes place, and a seek is initiated. As stated in the description of the SEEK command, if an implied seek occurs, the step rate specified by the rate field is used for all but the last step pulse. On the last step pulse the seek continues until the rising edge of SC is detected. If the 82064 detects a change in the drive number since the last command, an auto-scan ID is performed. This updates the internal cylinder position register to reflect the current drive before the seek begins. After the 82064 senses SC (with or without an implied seek) BDRa and DRa are asserted and the host begins filling the sector buffer with data. When BRDY is asserted, a search for the ID field with .the correct cylinder number, head, sector size, and CRC is initiated. If retries are enabled (T = 0), ten attempts are made to find the correct ID field. If there is still an error on the tenth try, an auto~scan ID and auto-seek are performed. Then ten more retries are attemp~ed before setting the ID Not Found error bit. When retries are disabled (T = 1) only two tries are made. No auto-scan or auto-seek operations are performed. . intJ 82064 ' ( READ SECTOR) l DE-ASSERT INTRQ, ERRORS, ASSERT BUSY, CIP o NOTE· 66 *If T bit of command = 1 then dashed path is taken after 2 index pulses. Figure 12a. Read Sector Command Flow 8-19 231242-13 intJ 82064 NO o CORRECT ERROR AND SET DWC IN STATUS REG. (BIT 2) *If T bit of command = 1 then dashed path is taken. 231242-14 * * If T bit of command = 1 then test is for 2 index pulses. Figure 12b. Read Sector Command Flow (Continued) 8·20 inter 82064 When the correct 10 is found, WR GATE is asserted and data is written to the disk. When the CRC/ECC bit (SOH Register, bit 7) is zero, the 82064 generates a two byte CRC character to be appended to the data. When the CRC/ECC bit is one, four ECC bytes replace the CRC character. When L = 1, the polynomial generator is inhibited and neither CRC or ECC bytes are generated. Instead four bytes of data supplied by the host are written. change in drive numbers, only the internal position register is updated. If a bad block is detected, the BAD BLOCK bit will also be set. If an 10 field is not found, or if a CRC error occurs, and if retries are enabled (T = 0), ten attempts are made to read it. If retries are disabled (T = 1), only two tries are made. There is no auto-seek in this command and the sector buffer is not disturbed. During a WRITE MULTIPLE SECTOR command (M = 1), the SECTOR NUMBER register is incremented and the SECTOR COUNT register is decremented. If BRDY is asserted after the first sector is read from the sector buffer, the 82064 continues to read data from the sector buffer for the next sector. If BRDY is deasserted, the 82064 asserts BORa and waits for the host to place more data in the sector buffer. A flowchart of the SCAN 10 command is shown in Figure 14. WRITE FORMAT The WRITE FORMAT command is used to format one track using information in the Task Register File and the sector buffer. During execution of this command, the sector buffer is used for additional parameter information instead of data. Shown in Figure 15 is the contents of a sector buffer for a 32 sector track with an interleave factor of two. In summary then, the WRITE SECTOR operation is as follows: When M·= 0,1 Each sector requires a two byte sequence. The first byte designates whether a bad block mark is to be recorded in the sector's 10 field. An OOH is norma!; an 80H indicates a bad block mark for that sector. In the example of Figure 15, sector 04 will get a bad block mark recorded. The second byte indicates the logical sector number to be recorded. This allows sectors to be recorded with any interleave factor desired. The remaining memory in the sector buffer may be filled with any value; its only purpose is to generate a BRDY to tell the 82064 to begin formatting the track. 1. HOST: Sets up parameters. Issues WRITE SECTOR command. 2. 82064: Asserts BORa and ORO. 3. HOST: Loads sector buffer with data. 4. 82064: Waits for rising edge of BRDY. 5.82064: Finds specified 10 field. Writes sector to disk. 6. 82064: If M = 0, asserts INTRO. End. 7.82064: Increments SECTOR NUMBER. Decrements SECTOR COUNT. If the drive number has been changed since the last command, an auto-restore is initiated, positioning the heads to track 000. The internal cylinder position register is set to zero and the heads seek to the track specified in the Task Register File CYLINDER NUMBER register. This prevents an 10 Not Found error from occuring due to an incompatible format, or the track having been erased. A normal implied seek is also in effect for this command. 8. 82064: IF SECTOR COUNT = 0, assert INTRa. End. 9. 82064: Go to 2. A flowchart of the WRITE SECTOR command is shown in Figure 13. SCAN ID The SCAN 10 command is used to update the SOH, SECTOR NUMBER, and CYLINDER NUMBER LOW/HIGH registers. The SECTOR COUNT register is used to hold the total number of sectors to be formatted (FFH = 255 sectors), while the SECTOR NUMBER register holds the number of bytes, minus three, to be used for Gap 1 and Gap 3. If, for example, the SECTOR COUNT register value is 02H and the SECTOR NUMBER register value is OOH, then 2 sectors are formatted and 3 bytes of 4EH are written for Gap 1 and Gap 3. The data fields are filled with FFH and the CRC or ECC is automatically generated and appended. After the last sector is written the track is filled with 4EH. After the command is loaded, the SC line is sampled until it is valid. The DRDY and WR FAULT lines are also monitored throughout execution of the command. If a fault occurs the command is aborted and the appropriate error bits are set. When the first 10 field is found, the 10 information is loaded into the SOH, SECTOR NUMBER, and CYLINDER NUMBER registers. The internal cylinder position register is also updated. If this is an auto-scan caused by a 8-21 intJ 82064 *If retries disabled then dashed path is taken after 2 index pulses. Figure 13. Write Sector Command Flow 8-22 inter 82064 RESET INTRa. ERRORS SET BUSY, CIP SET INTRQ, AC RESET BUSY, CIP SEARCH FOR ANY 10 FIELD NO UPDATE SOH, CYL, SECTOR, CYL POS, REG'S 'If retries are disabled, path is taken after 2 index pulses. 231242-16 Figure 14. Scan 10 Command Flow 8-23 inter 82064 -- DATA ADDR 0 00 08 10 18 20 28 30 38 40 00 00 80 00 00 00 00 00 FF 1 00 02 04 06 08 OA DC DE FF 2 3 4 5 6 00 00 00 00 00 00 00 00 FF 10 12 14 16 18 1A 1C 1E FF 00 00 00 00 00 00 00 00 FF 01 03 05 07 09 DB OD OF FF 00 00 00 00 00 00 00 00 FF FF FF FF 7 11 13 15 17 19 1B 10 1F FF : : FO FF FF FF FF FF Figure 15. Format Command Buffer Contents The user may select a value of 4EH or AAH for Gaps 1, 3 and pad bytes. This is done by setting bit 2 (Gap Filler Byte) of the format command to "0" for a value of 4EH or "1" for a value of AAH. AAH provides better frequency discrimination with MFM decoding, allowing for simpler circuitry. The COMPUTE CORRECTION command first writes the four syndrome bytes from the internal ECC register to the sector buffer. Then the ECC register is clocked. With each clock, a counter is incremented and the pattern examined. If the pattern is correctable, the procedure is stopped and the count and pattern are written to the sector buffer, following the syndrome. The process is also stopped if the count exceeds the sector size before a correctable pattern is found. The Gap 3 value is determined by the drive motor speed variation, data sector length, and the interleave factor. The interleave factor is only important when 1:1 interleave is used. The formula for determining the minimum Gap 3 length is: When the command terminates the sector buffer contains the following data: Gap 3 = (2*M*S)+K+E Syndrome MSB Syndrome Syndrome Syndrome LSB Error Pattern Offset Error Pattern Offset Error Pattern MSB Error Pattern Error Pattern LSB where: M = motor speed variation (e.g., 0.03 for + 3%) S = sector length in bytes K = 18 for an interleave factor of 1 o for any other interleave factor E = 2 if ECC is enabled (SOH register, bit 7 = 1) As for all commands, if WR FAULT is asserted or OROY is deasserted during execution of the command, the command terminates and the Aborted Command bit in the ERROR register is set. As an example, when the Error Pattern Offset is zero the following procedure may correct the error. The first data byte of the sector is exclusive OR'd with the MSB of the Error Pattern, the second data byte with the second byte of the Error Pattern, and the third data byte with the LSB of the Error Pattern. Figure 16 shows the format which the 82064 will write on the disk. A flowchart of the WRITE FORMAT command is shown in Figure 17. If the sector buffer count exceeds the sector size, or if the error burst length is greater than that selected by the Set Parameter command, the ECC/CRC error in the ERROR register and the Error bit in the STATUS register is set. COMPUTE CORRECTION The COMPUTE CORRECTION command determines the location and pattern of a single burst error, but.does not correct it. The host, using the data provided by the 82064, must perform the actual correction. The COMPUTE CORRECTION command is used following a data field ECC error. The command initiating the read must specify no retries (T = 1). SET PARAMETER This command selects the correction span to be used for the error correction process. A 5-bit span is selected when bit zero of the command equals 0, and an ii-bit span when bit zero equals 1. The 82064 defaults to a 5-bitspan after a RESET. 8-24 inter 82064 REPEATED FOR EACH SECTOR ~ GAP4 GAPI 4E 4E (1) ~'DF'ELD~ 14 BYTES '00' A 1 I D E N T C L Y 0 L W H E A D S E C C R C 1 # C R C 2 ,---DATA F I E L D - 3 BYTES 12 BYTES '00' '00' USER DATA III 2 CRC OR 4 ECC 3 BYTES GAP3 4E (1 ) '00' I I ~:~':---------+-----------+:----~L-' I I I , WRITE GATE I I I ~ ~ I .@/J/II/J/J/I//lIiIl F B '" I : DRUN-.J A 1 I I j ! t1 I I vIl(JiJJIII///II/d I I I ' l _____________ IL._ _ __ READ GATE----.J 231242-17 10 FIELD A1 = IDENT = A1H with OAH Clock HEAD = Bits 0, 1, 2 = Head Number Bits 3, 4 = 0 Bits 5, 6 = Sector Size Bit 7 = Bad Block Mark Sec # = Logical Sector Number Bits 3, 1, 0 = Cylinder High FE = 0-255 Cylinders FF = 256-511 Cylinders FC = 512-767 Cylinders FD = 768-1023 Cylinders F6 = 1024-1279 Cylinders . F7 = 1280-1535 Cylinders F4 = 1536-1791 Cylinders F5 = 1792-2047 Cylinders DATA FIELD A1 A 1 H with OAH clock F8 Data Address Mark; Normal Clock USER Data Field 128 to 1024 Bytes NOTE: 1. GAP 1 and 3 length determined by Sector Number Register contents during formatting. Figure 16. Track Format 8-25 intJ 82064 RESET WR GAlt, BCS PULSE BeR, SET INTRO RESET BUSY, ClP 231242-18 Figure 17. Write Format Command Flow 8·26 82064 *Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability ELECTRICAL CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias ...... O°C to 70°C Storage Temperature .......... - 65°C to + 150°C Supply Voltage ................... - 0.5V to + 8V Voltage on Any Input ......... GND - 2V to + 6.5V Voltage on Any Output .GND - 0.5V to Vee + 0.5V Power Dissipation ........................ 1 Watt D.C. CHARACTERISTICS Symbol NOTICE Specifications contained within the following tables are subject to change. TA = 0°Ct070°C;Vee Parameter = Min +5V +10%;GND Max Units = OV Test Conditions = Vee to OV = Vee to 0.45V IlL Input Leakage Current ±10 p.A VIN IOFL Output Leakage Current ±10 p.A VOUT VIH Input High Voltage 2.0 Vee + 0.5 V VIL Input Low Voltage -0.5 0.8 V VOH Output High Voltage VOL Output Low Voltage = -100 /LA = -2.5 mA IOL = 2.5 mA V Vee - 0.4 3.0 IOH IOH 0.4 0.45 V 20 45 mA See Note 10 See Note 11 6.0 mA P21, 22,23 lee Supply Current leess Standby Supply Current 2 mA See Note 12 CIN Input Capacitance 10 pF fc CliO I/O Capacitance 20 pF Unmeasured pins returned to GND = 1 MHz For Pins 25, 34, 37, 39 (WR CLOCK, DRUN, READ DATA, READ CLOCK) TRS Rise Time 30 A.C. CHARACTERISTICS TA = O°C to 70°C; Vee = ns 0.9Vto 4.2V + 5V ± 10%; GND = OV HOST READ TIMING WR CLOCK = 5.0 MHz Symbol 1 Parameter Min Address Stable Before RD t Max 0 t Units 2 Data Delay from RD 3 RD Pulse Width 100 4 Data Valid after RD i 10 5 Address Hold Time after RD i 0 ns 6 Read Recovery Time 300 ns 7 CS Stable before RD 0 ns t 150 8-27 Test Conditions ns ns ns 100 ns See Note 6 inter 82064 AO-2 ~ K"-___ ADDRESS STABLE 1'- _-1-0-- @~ - 0 ___ cs ~-+-- ~_~I -®~ RD--------~ r------ I~-lr.@ DBO-7 ------c=.x HOST WRITE TIMING WR CLOCK Symbol = DATA VALID >- 231242-19 5.0 MHz Parameter Min Units Max ,J.. 0 ns 0 ns i 75 8 Address Stable Before WR 9 CS Stable Before WR 10 Data Setup Time Before WR 11 WR Pulse Width 12 Data Hold Time After WR 13 Address Hold Time After WR 14 CS Hold Time After WR 15 47 ,J.. 100 i ns ns 10000 0 ns 0 ns 0 ns Write Recovery Time 300 ns SDHLE Propagation Delay 20 i i Test Conditions 150 See Note 7 ns AO-2'~_ _~X,--- _-I-®-- GD @- cs 1'- ~-+--------~---f' WR - - - - - ' " I"~-- DBO-7 SDHLE -------+""" 231242-20 8-28 infef 82064 = BUFFER READ TIMING (WRITE SECTOR COMMAND) WR CLOCK Symbol 16 Parameter Min BCS..1. to RD Valid Typ 0 400 5.0 MHz Max Units 100 ns 500 ns 17 RD Output Pulse Width 300 18 Data Setup to RD i 140 ns 19 Data Hold from RD i 0 ns 20 RD Repetition Rate 1.2 21 RD Float from BCS i 0 1.6 2.0 p.s 100 ns Test Conditions See Note 3 See Note 8 BCS~-:--_®_ _ _ _ _ _ _ _ _ _--1' ~ lm---'" (OUTPUT) DB0-7 ~------- ®------~~ 231242-21 BUFFER WRITE TIMING (READ SECTOR COMMAND) WR CLOCK Symbol Parameter Typ Min 22 BCS..1. to WR Valid 23 WR Output Pulse Width 0 300 24 Data Valid from WR ..1. 25 Data Hold from WR i 60 26 WR Repetition Rate 1.2 27 WR Float from BCS i 0 400 1,6 = 5.0 MHz Max Units 100 ns 500 ns 150 ns 200 ns 2.0 p.s 100 ns Test Conditions See Note 3 See Note 8 ::~---®=22--------------------------~' ~ (OUTPUT) ® DATA VALID DBO-7-------+<' "-------../ I~.~----®---~.~I 231242-22 8-29 inter 82064 MISCELLANEOUS TIMING Symbol Parameter 28 BDRQ Reset from BRDY 29 BRDY Pulse Width Min 20 31 STEP Pulse Width Units 200 ns ns See Note 4 Step Rate AU other step rates, See Notes 14, 15 1.4 1.6 1.8 1.5 1.6 1.7 JLs JLs 7.6 8.0 8.4 JLs 32 INDEX Pulse Width 500 33 RESET Pulse Width 24 34 RESET J. to BCR J. 0 35 RESET to WR, CS J. 6.4 36 WR CLOCK Frequency 37 RD CLOCK Frequency t Max 400 . BCR Pulse Width 30 Typ Test Conditions See Notes 9, 13, 15 = 3.2 JLs/step ns WRCLK See Note 2 1.6· 3.2 JLs JLs 0.25 5.0 5.25 MHz 50% Duty Cycle 0.25 5.0 5.25 MHz See Note 5 See Notes 1,15 See Note 1 :::: ----6--1@~ ~~ ~QOCK-{ STEP----J ~~-{ INDEX~ ~ ~ ,r r 231242-24 231242-23 READ DATA TIMING WR CLOCK = 5.0 MHZ Symbol Parameter Min 38 RD CLOCK Pulse Width 95 39 RD DATA after RD CLOCK J. 10 t 40 RD DATA before RD CLOCK 41 RD DATA Pulse Width 40 42 DRUN Pulse Width 30 Typ 'Max Units Test Conditions 2000 ns 50% Duty Cycle ns 20 8-30 ns T38/2 ns ns inter 82064 DRUN 231242-25 WRITE DATA TIMING WR CLOCK Symbol = 5.0 MHZ Parameter 43 WR CLOCK Pulse Width 44A WR CLOCK j to WR DATA j Min Typ Max Units Test Conditions 95 2000 ns 50% Duty Cycle 10 65 ns 10 65 ns 10 65 ns Propagation Delay 448 WR CLOCK J,. to WR DATA J,. 440 WR CLOCK J,. to WR DATA j 45A WR CLOCK j to EARLY/LATE J,. 458 WR CLOCK J,. to EARLY/LATEJ,. 46A WR CLOCK j to EARLY/LATEj 468 WR CLOCK J,. to EARLY/LATE j f---{ 36 )---~ WA CLOCK 8WRDATA 231242-26 8-31 82064 A.C. TESTING INPUT, OUTPUT WAVEFORM . A.C. TESTING LOAD CIRCUIT Input Output , 20 > TEST POINTS 0.45 0.8 < DEVICE UNDER 2.0 lEST 08 231242-27 l -=- Cl ;50 PF 100 pF Databus pins only 231242-28 AC Testing: Inputs Are Driven At 2.4V For A Logic .1, And 0.45V For A Logic .0. Timing Measurements Are Made At 2.0V For a Logic .1, And 0.8V For A Logic .0. CL Includes Jig Capacitance NOTES 1. Based on WR CLOCK = 5.0 MHz 2. 24 WR CLOCK periods = 4.a IJ-s at 5.0 MHz. 3. 2 WR CLOCK periods ± 100 ns. 4. Previous restrictions on BRDY no longer apply. There are no restrictions on when BRDY may come. BRDY may be connected directly to BDRO. 5. WR CLOCK Frequency = RD CLOCK Frequency ± 15%. 6. RD may be asserted before CS as long as it remains active for at least the minimum T3 pulse width after CS is asserted. 7. WR may be asserted before CS as long as it remains active for at least the minimum T11 pulse width after CS is asserted. a. a WR CLOCK periods ± 2 WR CLOCK periods. 9. a WR CLOCK periods ± 1 WR CLOCK period. 10. VIL = GND, VIH = VCC, Outputs Open. 11. Vil = o.av, VIH = 2.0V, Outputs Open. 12. WR CLOCK & RD CLOCK = DC, VIL = OV, VIH = Vcc, all output open, CS inactive. 13. This specification is for SCR pulse width during command execution. SCR is also triggered by RESET. In this case, SCR pulse width is greater than RESET pulse width. 14. 40 WR Clocks ± 2. 15. Specification represents actual functionality of a2064 and WD2010. Previous datasheets contain typographical errors. 8-32 APPLICATION NOTE AP-402 November 1987 Multimodule™ Winchester Controller Using the CHMOS 82064 J.SLEEZER TECHNICAL MARKETING Order Number: 231927-001 8-33 intJ AP-402 1.0 INTRODUCTION The 82064 Winchester Disk Controller (WDC) was developed to ease the complex task of interfacing Winchester disk drives to microprocessor systems. Specifically, the 82064 WDC interfaces to drives that conform to the ST506 specification, which is the dominant interface for 5'/. inch drives. This Application Note provides some background on the 82064 WDC, the drive interfaces and generai software routines. It concludes with a design example using the 82064 WDC interfaced to the SBXTM bus. Appendix B contains the listing of the software necessary to operate this controller board. The second method of positioning the heads is to use a voice-coil mechanism. These units do not move in steps but swing across the disk. These mechanisms generally permit greater track density than steppers, but also require complex feedback electronics which increases the cost of the drive. Generally, voice-coil head positioners use closed loop servo positioning, as compared to the open loop positioning used with stepper motors. The surface of a disk is divided logically into concentric circles radiating from the center as shown in Figure 1. Each concentric circle is called a track. The group of tracks, all in the same position, on all of the disks (platters) in the drive is collectively called a cylinder. The number of tracks on a surface (which affects storage density) is determined by the head positioners. Typically, stepper head positioners have fewer tracks than drives that use a voice coil positioner. Which type of positioner is used is irrelevant to the 82064 as positioners are part of the drive electronics. The 82064 can access up to 2048 tracks per surface. 1.1 ST506 Winchester Drive Overview Since the 82064 WDC interfaces only to drives conforming to the ST506 specification, this overview will limit itself to those drives. A summary of the ST506 specification is shown in Appendix A for those who are not familiar with it. The ST506 Winchester Disk contains from 1 to 8 hard disks (or platters) with the average being 2 to 3 disks. These disks are made from aluminum (hence the term hard disk) and are coated with some type of recording media. The recording media is typically made of magnetic-oxide, which is similar to the material used on floppy disks and cassette tapes. Each side of a hard disk is coated with recording media and each side can store data. Each surface of a disk has its own read/write head. Once the surface is divided into cylinders it is further divided radially (as with a pie). The area between the radial spokes is referred to as a sector. The number of sectors per track is determined by many variables, but is basically determined by the number of data bytes and the length of the ID field (which locates a sector). Figure 2 shows one manufacturer's specifications for their drive. The manufacturer formats the drive with 32-256 byte sectors per track. Alternatively, the drive could be reformatted to contain 17 - 512 byte sectors per track. This second option has fewer' sectors per track but stores more data. Determining how many bytes each sector contains is done by extensive analysis of the hardware and operating system. The 82064 WDC is programmable for sector size during formatting. Hard disk drives are sealed units because the R/W heads actually fly above the disk surface at about 8 to 20 microinches. A piece of dust or dirt, which appears as a boulder to the gap between the heads and the disk surface, will wreak havoc upon the disk media. The R/W heads are mechanically connected together and move as a single unit across the surface of the disk. There are 2 basic methods for positioning the heads. The first is with stepper motors, which is the most common method and is also used on most floppy disk drives. These positioners are used mainly because of their low cost. The order in which sectors are logically numbered on the track is called interleaving. An interleave factor of four would have three sectors separating logically se- . quential sectors. Starting at the index pulse, an example of four way interleaving is: Sector 1, Sector X, Sector Y, Sector Z, Sector 2, Sector . 231927-1 Figure 1 8-34 intJ Capacity Unformatted Per Drive Per Surface Per Track Formatted Per Drive Per Surface Per Track Per Sector Sectors per Track Transfer Rate Ap·402 Hard'disk drives tend to be faster than floppies for two reasons. The speed at which the disk spins is about 10 times faster than the floppy (a floppy spins at 360 rpm for the popular double density disk drives). This yields an immediate one-tenth reduction in access times for the same size drive. While both ST506 drives and floppies use stepper motors, the steppers utilized by the hard disk drives are approximately twice as fast as those used by floppies. 6.38 Megabytes 1. 59 Megabytes 10416 Bytes 5.0 Megabytes 1.25 Megabytes 8192 Bytes 256 Bytes 32 5.0 Megabits per second 2.0 82064 WINCHESTER DISK CONTROLLER The 82064 WDC provides most of the functions necessary to interface between a microprocessor and an ST506 compatible disk drive. The 82064 converts the high level commands and parallel data of a microprocessor bus into ST506 compatible disk control signals and serial MFM encoded data. This section presents a detailed description of the 82064 and a discussion of various techniques which can be used to interface the 82064 to a microprocessor. Access Time Track to Track 3 ms Average (Inc. Settle) 170 ms Maximum (Inc. Settle) 500 ms Settling Time 15 ms Average Latency 8.33 ms Functional Specifications Rotational speed 3600 rpm± 1% Recording density 7690 bpi max Flux density 7690 fci Track density 255 tpi Cylinders 153 Tracks 612 R/W Heads 4 2 Disks Figure 2. A Typical Drive Specification Interleaving is used primarily because one sector at a time is transferred from disk to sector buffer to system RAM. This transferring of data takes time, and causes a delay between the first sector transferred and sectors that follow it. Without interleaving, the delay in transferring data would result in sectors on the disk rotating past the heads before they could be read. The operating system would then have to wait one disk revolution to get to the next sector (a 16.7 msec delay). With interleaved sectors, the next logical sector would be positioned beneath the heads after the previous sector· of data had been transferred to the system RAM. Interleaving unfortunately slows down the overall transfer rate from the disk. A 5 Mbit/second transfer rate averages out to a 1.25 Mbit/second transfer rate when many sectors are transferred with four way interleaving. Again, how much interleaving to use is determined by extensive hardware/software benchmarking. The internal structure of the 82064 is divided into several sections as shown in Figure 3. They are: 1. the microprocessor interface which includes the status and task registers; 2. sector buffer control; 3. the drive interface; 4. the data transfer section, which includes the MFM encoding!decoding of microprocessor data; 5. and CRC/ECC generation and checker. 2.1 Clock Inputs The 82064 has two clock inputs: read clock (RD CLOCK) and write clock (WR CLOCK). The PLA controller, the processor interface, buffer control and MFM encoding sections operate off the WR CLOCK input. The RD CLOCK input is used only for decoding the MFM data stream. The clocks may be asynchronous to one another. Both clocks have non-TTL compatible inputs. The easiest method to interface to TTL requires a pull-up resistor to satisfy their input voltage needs. The resistor's value must be compatible with the VIL specification of these pins. See the Pin Descriptions Section for more specific information. 2.2 Microprocessor Interface Whenever data is stored on a multiple platter disk drive, the same track on all surfaces whould be used before repositioning the heads to another track. Repositioning the heads generates a longer delay due to the mechanical delay of moving the heads. Switching to another head incurs no mechanical positioning delay. Only one head can be selected at a time. The microprocessor interface of the 82064 contains the control logic which permits commands and data to be transferred between the host and the 82064. The interface consists of an 8 bit, tri-state, bidirectional data bus; the task registers; a 3 to 8 address decoder for selecting one of the seven registers; and the general read, write, and chip select logic. Externally, the 82064 expects a buffer equal in size to a sector on the disk, and tri-state 8-35 intJ AP-402 DIIO-7 WA OATA WA CLOCK RDeLOCK INTAO HOST IFC RO DATA L-_-;:=:::;:- iDHlE PL' CONTROl.LER STEP 8cR-:::=r.=:]----i______-.J DIRe fAiiL'i 8RDY- em 'DADY aOAO m WR FAULT TRACie; 000 INDEX VC<_ SC GHO-----... AWC WRGAT£ RO GATE L,...;=_~DRUN 231927-3 Figure 3. 82064 Internal Block Diagram transceivers between the sector buffer and the microprocessors data bus in order to isolate itself from the microprocessor during disk data transfers. Once a disk operation starts, CS no longer efffects the 82064. RD and WR are bidirectional lines and are used to read or write the 82064's registers by the host microprocessor and are valid only if CS is present. The 82064 will drive RD and WR when transferring data between the sector buffer and the disk. A signal is provided to tri-srate the RD and WR lines from the host during a buffer access. This is covered in the Sector Buffer Control Section. AO-A2, Data Bus These three address lines are active high signals and select one of the seven register locations In the 82064. They are not latched internally. If the three addresses are equal to 0 and the 82064 is selected, the data bus is kept tri-stated to ease interfacing to a sector buffer. The 82064's data bus is controlled by both the microprocessor and the 82064. The microprocessor has control for loading the registers and command. During disk reads or writes, control switches to the 82064 so that it may access the local sector buffer when transferring data between the disk and the buffer. RD, WR, CS The chip select (CS) is tyEi£.ally decoded from the higher order address lines. CS only permits data to be placed into, or read from, the 82064's task registers. Interrupts An interrupt is issued at the end of all commands, and the interrupt is cleared by reading any register. For the Read Sector command only, the 82064 allows the user the option of an interrupt either at the termination of the command, as is the case with all other commands, 'or when data needs to be transferred to the host from the sector buffer. This is discussed further in the Interrupt Mode Section. When selecting the data transfer option, the interrupt line will go active at the same time as the BDRQ line and the interrupt will be removed only when the proper handshake occurs with the sector buffer. 8-36 inter AP-402 high during a multiple sector transfer indicates that the buffer is full (or empty-depending upon the command) and the transfer should wait until the buffer is serviced. The sector that was being transferred will finish and the 82064 will deactivate BCS and activate BDRQ. The host microprocessor must then transfer the data between the buffer and system memory. When this transfer is finished, asserting BRDY will cause the 82064 to resume the command. Task Registers The Task Register File contains the command, status, track number, sector number, and other information necessary to properly execute a command. These registers are accessed with AO-A2, RD (or WR), and CS being valid and are not cleared by a reset. The registers are covered in detail in the Task Register File Section. 2.3 Sector Buffer Control The handshaking between BDRQ and BRDY occurs only in full sector increments-not on a byte basis. A high on BDRQ indicates a full sector's worth of data is required; BRDY going high indicates a full sector of data is available to the 82064 without interruption. The 82064 was designed to operate with an external buffer equal in size to one sector. To ease the design-in of this buffer, the 82064 provides all of the control signals it needs to operate the buffer. This buffer must be isolated from the system bus, using tri-state buffers, during disk transfers to prevent contention during the period that the 82064 is accessing the buffer. A sector buffer is generally used to ease interfacing to the system due to the high disk data rates (625 kbytes/sec), although it is not required. Only the rising edge of BRDY is valid. A falling edge may occur at any time without effect. BCR will pulse and BCS will go active eight byte times (8 bytes X 8 bits/byte X 200 ns/bit = 12.8 microsecorids) before the first data byte is transferred from the sector buffer to the disk. COUNTER ~ The Buffer Chip Select (BCS) line goes active whenever the 82064 is accessing the sector buffer. This signal should remove the microprocessors ability to access the 82064 and sector buffer and must enable the sector butTer for lise by the 82064. ~ RO;=DWRl ~ BROY Y At a 5 Mbit/sec disk data rate, the 82064 will access the buffer every 1.6 microseconds (8 bits X 200 nslbit). BCS will remain low the entire time the 82064 is accessing the buffer. The 82064 will pulse the appropriate RD or WR line for each byte transferred. 82064 BCR 231927-2 Figure 4. BRDY Generation Logic 2.4 Data Transfer Logic This section of the 82064 is responsible for conversion of serial disk data to parallel data (and vice versa); encoding/decoding of the disk's MFM serial bit stream; and detecting the address mark. Buffer Counter Reset (BCR) goes active each time that BCS changes state. Its purpose is to reset the address counter of the sector buffer back to zero before and after the 82064 uses the sector buffer. Its function is optimized for single sector transfers. Multiple sector transfers should use a software controlled buffer counter reset and not use BCR as the sector buffer will be reset to the beginning after each sector is transferred. Polled Interface Since the 82064 isolates itself from the host during several commands, the host cannot read the status register during some periods to determine what course should be taken. In Figure 10, trying to read the status register when BCS is active will return indeterminate data. To prevent the microprocessor from reading this indeterminate data, a hardware generated "Busy" pattern should be driven .onto the data bus if BCS is active. This is shown in Figure 11. The status register contains a data request (DRQ) bit whose timing is equal to the BDRQ output signal, thus making a polled operation possible. DRQ will stay set in the status register until a BRDY is generated. BDRQ,BRDY BufTer Data Request (BDRQ) and Buffer Ready (BRDY) provide the handshake needed to transfer data between the sector buffer and the host. BDRQ signals that data must be moved to/from the sector buffer and the host. BRDY has two functions. Once the transfer signaled by BDRQ is finished, asserting BRDY will inform the 82064 that the transfer is completed and that it may finish executing the command. BRDY is also used in multiple sector commands. BRDY going 8-37 intJ AP-402 I I o 231927-4 Figure 5. Data Address Mark One design issue, with the polled interface occurs when the microprocessor is polling the status and the 82064 deactivates BCS. The microprocessor would normally read the hardware busy pattern. If BCS is deasserted, the hardware pattern is disabled and the microprocessor will start to read the real status register. The read cycle may almost be finished, and the read access period of the 82064 will not be satisfied. The data returned to the microprocessor will be invalid. Address Mark Detector The address mark is a unique 2 byte code written at the beginning of each ID field and data field. This address mark serves two purposes. It tells the controller what type of data is about to be received so that internal computations can be performed, and to ensure that ID fields are not sent to the host. The second purpose is to align the serial data back to the original 8 bit boundaries that existed when data was written (there are no byte boundaries on a disk). Interrupt Interface There are cases where the designer does not want to tie up the microprocessor with polling. The typical 82064 design will need two interrupts per command. One for a data transfer and one for the completion of the command. The 82064 has an output to issue an interrupt when the command has finished. However for data transfers an' interrupt must be generated from the BDRQ line as shown in Figure 12 (whether a DMA controller is used or not). When a data transfer is needed, the 82064 will activate the BDRQ l,ine. The microprocessor will be interrupted and do the data transfer function. BDRQ will stay active until BRDY is generated, so the system must either use edge triggered interrupts or must not write the end-of-interrupt byte until BDRQ is removed (this is true of Intel's 8259A). An address mark is always preceded by the all zeros synchronization field. The 82064 starts comparing the incoming data stream when the synchronization field ends. A high speed comparator is used since the 82064 does not yet know where the proper byte boundaries , are. When a proper comparison of the address mark is made the controller starts assembling bytes, starting with the second byte of the address mark. The first byte of the address mark is an "AI" Hex, but purposely violates the MFM encoding rules by removing a clock pulse. In Figure 5, the first example is of a normal MFM encoded AIH. The second example is of the address mark and shows the missing clock pulse. The non-MFM compatible Al is to prevent the host from issuing a similar data byte and possibly confusing detection logic. ' MFM Encoding/Decoding The second byte specifies either an ID or data field and is encoded according to normal MFM rules. It is either an "F8" Hex for a data field, or "FC" through "FF" for an ID field. The different values correspond to a range of cylinders on the drive in increments of 256 tracks. The 82064 makes no use of this information, but writes it for compatibility with the ST506 specification during formatting. The MFM encoding section will receive 8 bit parallel data when a valid command has been recognized and BRDY has gone high. The parallel data is first serialized and converted to an intermediate, NRZ encoded, data stream. The serial NRZ data is sent to the MFM encoding section and then transferred to the disk. Decoding of the MFM bit stream (during disk reads) happens in reverse order. PLA Control The control logic operates off the write clock (WR CLOCK) running at a frequency of the desired tranfer rate. The MFM decoding portion operates off of the read clock (RD CLOCK) input, which is supplied by an 'external phase lock loop. The two clocks need not be synchronized to each other. Data is written (and hence read) with the most significant bit first. The PLA Controller interprets command sent by the microprocessor. Its operation is synchronized to the WR CLOCK input. The PLA controller is started when a command is written into the command register. It generates control signals and operates in a handshake mode when communicating with the MFM decoding block. 8-38 AP-402 If the CRC character generated while reading the' data does not equal the one previously written, an error exists. If an ID field CRC error occurs the "ID not found" bit in the error register will be set. If a data field CRC error occurs the "ECC/CRC" bit in the error register will be set. Magnitude Comparator A 10 bit magnitude comparator is used to calculate the direction and number of step pulses needed to move the head from the present cylinder position to the desired position. A separate high speed equivalence comparator is used to compare ID field bytes when searching for a sector ID field. ECC Generation/Checking The ECC mode is only applicable to the data field. It provides the user with the ability to detect and correct errors in the data field automatically. The commands and registers which must be considered when ECC is used are: 1. SDH Register, bit 7 (CRC/ECC) 2. READ SECTOR Command, bit 0 (T) 3. READ SECTOR and WRITE -SECTOR Commands, bit I (L) 2.5 CRC/ECC Generator and Checker The 82064 provides two options for protecting the integrity of the data field. The data field may have either a CRC (SDH register, bit 7 = 0), or a 32-bit ECC (SDH register, bit 7 = I) appended to it. The ID field is always protected by a CRC. CRC Generation/Checking 4. 5. 6. 7. 8. The CRC generator computes and checks the cyclic redundancy check bytes that are appended to the ID and data fields. CRC generation/checking is always done on ID fields. Data fields have a choice between 82064 CRC, internal ECC or externally supplied ECC. The CRC mode is chosen by setting bit 7 of the SDH register low. The CRC mode provides a means of verifying the accuracy of the data read from the disk, but does not attempt to correct it. The CRC generator computes and checks cyclic redundancy check characters that are written and read from the disk after the ID and data fields. To enable the ECC mode, bit 7 of the SDH register must be set to one. Bit 0 (T) of the READ Command controls whether or not error correction is attempted. When T = 0 and an error is detected, the 82064 tries up to 10 times to correct the error. If the error is successfully corrected, bit 2 of the STATUS Register is set. The host can interrogate the status register and detect that an error occurred and was corrected. If the error was not correctable, bit 6 of the ERROR Register is set. If the correction span was set to 5 bits, the host may now execute the SET PARAMETER Command to change the correction span to II bits, and attempt the read again. If the error persists, the host can read the data, but it will contain errors. The generator polynomial for the CRC-CCITT (CRC16) code is: x16 x12 + + x12 x4 + + x5 x3 + 1 = (x + x2 + x + 1) + 1) (x15 + x14 + x13 + The code's capability is as follows: a) Detects all occurrences of an odd number of bits in error. b) Detects all single, double, and triple bit errors if the record length (including check bits) is less than 32,767 bits. c) Detects all single-burst errors of sixteen bits or less. d) Detects 99.99695% of all possible 17 bit burst errors, and 99.99847% of all possible longer burst, assuming all errors are possible and equally probable. The CRC code has some double-burst capability when used with short records (sectors). For a 256 byte sector the code will detect double-bursts as long as the total number of bits in error does not exceed 7. COMPUTE CORRECTION Command SET PARAMETER Command STATUS Register, bit 2-error correction successful STATUS Register, bit O--error occurred ERROR Register, bit 6-uncorrectable error When T = I and an error is detected, no attempt is made to correct it. Bit 0 of the STATUS Register and bit 6 of the ERROR Register are set. The user now has . two choices: 1. Ignore the error and make no attempt to correct it. 2. Use the COMPUTER CORRECTION Command to determine the location and pattern of the error, and correct it within the user's program. When the COMPUTE CORRECTION Command is implemented, it must be done before executing any command which can alter the contents of the ECC Register. The READ SECTOR, WRITE SECTOR, 8-39 inter AP-402 SCAN 10, and FORMAT Commands will alter this register and correction will be impossible. The COMPUTE CORRECTION Command may determine that the error is uncorrectable, at which point the error bits in the STATUS and ERROR Registers are set. The SET PARAMETER Command is used to select a 5-bit or ll-bit correction span. Although ECC generation starts with the first bit of the F8H byte in the data 10 field, the actual ECC bytes written will be the same as if the Al H byte was included. The ECC polynomial used is: The drive interface of the 82064 contains the logic that makes possible the storage and reliable recovery .of data. This interface consists of the drive and head select logic, the disk control signals, and read and write data logic as shown in Figure 6. This section describes the external circuitry which is required to complete the 82064's drive interface. 2.6 Drive Interface For automatic error correction, the external sector buffer must be implemented with a static RAM and counter, not with a FIFO. --n 2X DATA RATE EARLY LATE RWC WRITE PRECOMP I READ DATA READ CLOCK DRUN READ GATE PHASE LOCK LOOP 82064 DATA RATE OSC WRCLOCK DIR WR.GATE STEP DRIVESEL STEP DIRECTION READY WRITE FAULT TRACK 000 ~ AWC :: DRDY READ DATA ~ SEEK COMPLETE ~ TRACK 000 ------ WRITE DATA ~ INDEX :: INDEX WR FAULT ~ .... sc , '/2 ~ TO NEXT DRIVE woe WINCHESTER DRIVE 0 /2 ~ HEAD NUMBER ~ ~ WRITE GATE ...~ ::: ...~ DATA BUS- D Q,71 ADDRESS- DAISY CHAIN TO NEXT DRIVE (HOLDS DRIVE AND HEAD SELECTS) DATA LATCH 231927-5 Figure 6. Drive Interface 8-40 inter AP-402 D WR DATA Q L D A Q T D C Q H C EARLY LATE DELAY LINE 12NS 24NS WR DATA TO DRIVE 82064 10~HZ OSC RWC L-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _...... TO DRIVE 231927-6 Figure 7. Write Precompensation Logic Drive/Head Select The 82064 has no outputs for selecting the head or drive. Therefore these signals must be generated by the user as shown in Figure 6. Data bits 0.,-4 should be latched whenever the SDH register is written. Bits 0-2 would then be driven onto the drive cable with open collector buffers. Bits 3 and 4 would be decoded after being latched, then buffered for the cable. The head information written to the 82064's SDH register is used to write the proper ID fields during formatting. Changing the drive bits in the SDH register will cause a Scan ID to be performed by the 82064 to update non user accessible registers. Drive Control The drive control (STEP, DIR, WR FAULT, TRACK 000, INDEX, SC, RWC, and WR GATE) signals are merely conditioned for transmission over the drive cable. The purpose of each pin can be found in the section on Pin Descriptions and their use in the Command Section. WR DATA, EARLY, LATE Figure 7 is a diagram of the interface required on the write data line. The final stage of the MFM encoding requires applying the WR DATA to an external flipflop clocked at 10 MHz. The 82064 monitors the serial write data output for particular bit patterns that require precompensation to prevent bit shifting. EARLY and LATE are active on all cylinders and will normally require that RWC be factored into them to activate the data precompensation on the proper cylinder. A delay line is required to generate the delayed data for precompensation since the actual delay varies between drive manufacturers. EARLY and LATE go active in the same clock period that generates the data bit to be shifted. 250 NSEC RETRIGGERABLE ONE-SHOT ~F~ ~~_ _ _ _ _ _ _~::::::::::::~_ _ _~ DISK ,; DATA t---------,.. DRUN RD DATA 82064 FILTER AND VCO A RD CLOCK ~UX ,.....-H_B_ _1~---~;::==:;---------1 RD GATE +2 1----------+1 WR CLOCK 231927-7 Figure 8. Data Separator Circuit 8-41 intJ AP-402 quest input. The DMA controller will generate reads or writes which will increment an address counter. BRDY indicates that the data transfer has finished and is issued off the carry-out line (or high order address line) of the counter. The 82064 will assert BDRQ at this point and activate BCS to prevent the hostfrom intefering with disklbuffer transfers. There can be no polling for a data transfer or a register read without an interrupt in this scheme. RD Data, DRUN, RD Gate The read data interface is shown in Figure 8, and consists of the data run (DR UN) signal and a phase lock loop to generate the RD CLOCK input to decode the serial data. DRUN is generated from a. retriggerable one-shot with a period just exceeding one bit cell. A sync field consisting of a string of clock pulses will continually retrigger the one-shot producing a steady high level on DRUN. The 82064 counts off 16 clock pulses internally, and if DRUN is still active, will make RD GATE active. Any byte other than an address mark will deactivate RD GATE and the sequence starts over. The phase lock loop generates RD CLOCK which is used to decode the incoming serial data. Until RD GATE is activated by the 82064, the phase lock loop (PLL) should be locked onto a local 10 MHz clock to minimize PLL lock-up times. When RD GATE is activated, the PLL starts locking onto the incoming data stream, which should consist of the all zeros sync field. Once the PLL locks onto this synch field, the 82064 will start examining the serial data for a non-zero byte. A non-zero byte will be indicated by DRUN dropping since the address mark follows the sync field and is an "AI" Hex. This sequence is shown in Figure 9. If the address mark is detected, and if it was preceded by at least 9 bytes of zeros, RD GATE will stay active. The 82064 will then assemble bytes of data, and ensure the proper ID field is found. If a non-zero or non-address mark byte was detected, RD GATE will go inactive for a minimum of 2 byte times. If a data field or the wrong ID field is detected, or the ID field was not preceded by 8 bytes of zeros, then RD GATE goes inactive and the sequence starts over with the 82064 examining the DRUN input. RESET RD GATE 2.7 Microprocessor Interfaces This section shows the general 82064 interfaces to a microprocessor system. There are essentially four interfaces which consist of a combination of polled, DMA, and interrupts. While the 82064 was designed to interface directly to one type, it accommodates all with minor additional logic. DMA Interface The 82064 is designed to use a DMA controller for data transfer between its sector buffer and the host system, and to interrupt the host when the command has finished. This interface is shown in Figure 10. 231927-8 When the 82064 determines that a transfer is needed between the sector buffer and the host (either at the beginning of a command or through BRDY going active in a multiple sector transfer), it will assert BDRQ. BDRQ will initiate a DMA transfer via the DMA re- Figure 9. PLL Control Sequence 8-42 intJ Ap·402 1----iBRDY 82064 82~A'-~~--------~+---------------~ DRQOI-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _i INTRO 231927-9 Figure 10.82064 DMA Interface 1----iBRDY 82064 ....---H-+-+----------I BCSI ~.-f:>-----~~+_------------___IRw 231927-10 Figure 11. 82064 Polled Interface -= ~ ~~~:' BRDY --" TO uP 82064 DATA BUS _o~ BCSI RDI ~ WRJ --; INTO WRJ I BDRO INTRO 231927-11 Figure 12. 82064 Interrupt Interface 8-43 intJ AP-402 3.0 PIN DESCRIPTIONS Pin No. Symbol Type Name and Function DIP PLCC BCS 1 1 0 BUFFER CHIP SELECT: Output used to enable reading or writing of the external sector buffer by the 82064. Whe~w, the host should not be able to drive the 82064 data bus, RD, or WR lines. BCR 2 2 0 BUFFER COUNTER RESET: Output that is asserted by the 82064 prior to readlwrite operation. This pin is asserted whenever BCS changes state. Used to reset the address counter of the buffer memory. INTRQ 3 3 0 INTERRUPT REQUEST: Interrupt generated by the 82064 upon command termination. It is reset when the STATUS register is read, or a new command is written to the COMMAND register. Optionally signifies when a data transfer is required on Read Sector commands. SDHLE 4 4 0 SDHLE is asserted When the SOH register is written by the host. RESET 5 7 I RESET: Initializes the controller and clears all status flags. Does not clear the Task Register File. RD 6 8 1/0 READ: Tri-state, bi-directional signal. As an input, RD contro~he transfer of information from the 82064 registers to the host. RD is an output when the 82064 is reading data from the sector buffer (BCS low). WR 7 9 1/0 WRITE: Tri-state, bi-directional signal. As an input, WR controls the transfer of command or task information into the 82064 registers. WR is an output when the 82064 is writing data to the sector buffer (BCS low). CS 8 10 I CHIP SELECT: .Enables RD and WR as inputs for access to the Task Registers. It has no effectonce a disk command starts. Aa- A 2 9-11 11~13 I ADDRESS: Used to select a register from the task register file. DBa-DB? 12-19 14-16 18-22 1/0 DATA BUS: Tri-state, bi-directionaI8-bit Data Bus with control determined by BCS. When BCS is high the microprocessor has full control of the data bus for reading and writing the Task Register File. When BCS is low the 82064 controls the data bus to transfer data to or from the buffer. Vss 20 23 WR DATA 21 24 0 Ground WRITE DATA: Output that shifts out MFM data at a rate determined by Write Clock. Requires an external 0 flip-flop ·clocked at 10 MHz. The output has an active pullup and pulldown that can sink 4.8 mA. LATE 22 25 0 LATE: Output used to derive a delay value for write precompensation. Valid when WR GATE is high. Active on all cylinders. EARLY 23 26 0 EARLY: Output used to derive a delay value for write precompensation. Valid when WR GATE is high. Active on all cylinders. WRGATE 24 27 0 WRITE GATE: High when write data is valid. WR GATE goes low if the WR FAULT input is active. This output is used by the drive to enable head write current. WRCLOCK 25 29 I WRITE CLOCK: Clock input used to derive the write data rate. Frequency = 5 MHz for the ST506 interface. 8-44 inter AP-402 3.0 PIN DESCRIPTIONS (Continued) Symbol Pin No. Type Name and Function DIP PLCC DIR 26 30 0 DIRECTION: High level on this output tells the drive to move the head inward (increasing cylinder number). The state of this signal is determined by the 82064's internal comparison of actual cylinder location vs. desired cylinder. STEP 27 31 0 STEP: This signal is used to move the drive head to another cylinder at a programmable frequency. Pulse width = 1.6 /-Ls for a step rate of 3.2 /-Ls/step, and 8.4 /-Ls for all other step rates. DRDY 28 32 I DRIVE READY: If DRDY from the drive goes low, the command will be terminated. INDEX 29 33 I INDEX: Signal from the drive indicating the beginning of a track. It is used by the 82064 during formatting, and for counting retries. Index is edge triggered. Only the rising edge is valid. WR FAULT 30 34 I WRITE FAULT: An error input to the 82064 which indicates a fault condition at the drive. If WR FAULT from the drive goes high, the command will be terminated. TRACK 000 31 35 I TRACK ZERO: Signal from the drive which indicates that the head is at the outermost cylinder. Used to verify proper completion of a RESTORE command. SC 32 36 I SEEK COMPLETE: Signal from the drive indicating to the 82064 that the drive head has settled and that reads or writes can be made. SC is edge triggered. Only the rising edge is valid. RWC 33 37 0 REDUCED WRITE CURRENT: Signal goes high for all cylinder numbers above the value programmed in the Write Precomp Cylinder register. It is used by the precompensation logic and by the drive to reduce the effects of bit shifting. DRUN 34 38 I DATA RUN: This signal informs the 82064 when a field of all ones or all zeroes has been detected in the read data stream by an external one·shot. This indicates the beginning of an 10 field. RD GATE is brought high when DRUN is sampled high for 16 clock periods. BRDY 35 39 I BUFFER READY: Input used to signal the controller that the buffer is ready for reading (full), or writing (empty), by the host /-LP. Only the rising edge indicates the condition. BDRQ 36 40 0 BUFFER DATA REQUEST: Activated during Read or Write commands when a data transfer between the host and the 82064's sector buffer is required. Typically used as a DMA request line. RD DATA 37 41 I READ DATA: Single ended input that accepts MFM data from the drive. RDGATE 38 42 0 READ GATE: Output that is asserted when a search for an address mark is initiated. It remains asserted until the end of the 10 or data field. RDCLOCK 39 43 I READ CLOCK: Clock input derived from the external data recovery circuits. Vee 40 44 I D.C. POWER: NC - 5,6, 17,28 + 5V. NO CONNECTS 8·45 inter AP-402 4.0 TASK REGISTER FILE The data may be read even ifuncorrectable errorS exist. The Task Register File is a bank of registers used to hold parameter information pertaining to each command. These registers and their addresses are: If the long mode (L) bit is set in the READ or A2 A1 AO Bit 5 - Reserved. 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 READ WRITE (Bus Tri-Stated) Error Flags Sector Count Sector Number Cylinder Low Cylinder High SOH Status Register (Bus Tri-Stated) Reduce Write Current Sector Count Sector Number Cylinder Low Cylinder High SOH Command Register NOTE: WRITE command, no error checking is performed. Not used. Set to zero. Bit 4 - ID Not Found This bitis set to indicate that the correct cylinder, head, sector, or size parameter could not be found, or that a CRC error occurred in the ID field. Ths bit is set on the first failure and remains set even if the error is recovered on a retry. When recovery is unsuccessful, the Error bit (bit 0) of the STATUS register is also set. NOTE: Registers are not cleared by RESET For a SCAN ID command with retries enabled (T 0), the Error bit in the STATUS register is set after ten unsuccessful attempts have been made to find the correct ID. With retries disabled (T = 1), only two attempts are made before setting the Error bit. 4.1 Error Register This read-only register contains specific error status after the completion of a command. If any bit in this register is set, then the Error bit in the Status Register will also be set. The bits are defined as follows: 7 6 5432 1 For a READ or WRITE command with retries enabled (T = 0), ten attempts are made to find the correct ID field. If there is still an error on the tenth try, an autoscan and auto-seek are performed. Then ten more retries are made before setting the Error bit. When retries are disabled (T = 1), only two tries are made. No autoscan or auto-seek operations are performed. 0 IBBOlcRC/ECclollololACITKOOoloMI Bit 7 - Bad Block Detect (BBD) Bit 3 - Reserved. This bit is set when an ID field has been encountered that contains a bad block mark. The bad block bit is set only during formatting. The 82064 will terminate a command if an attempt is made to read a sector that contains this bit. Not used. Set to zero. Bit 2 - Aborted Command This bit is set if a command was issued or in progress while DRDY (Pin 28) was deasserted or WR FAULT (Pin 30) was asserted. The Aborted Command bit will also be set if an undefined command is written into the COMMAND register, but an implied seek will be exe. cuted. Bit 6 - CRC/ECC Data Field Error (CRC/ECC) When in the CRC mode (SDH register, bit 7 = 0), this bit is set when a CRC error occurs in the data field. When retries are enabled, ten more attempts are made to read the sector correctly. If none of these attempts are successful bit 0 in the STATUS register is also set. If one of the attempts is successful, the CRC/ECC error bit remains set to inform the host that a marginal condition exists; however, bit 0 in the STATUS register is not set. Bit 1 - TRACK 000 Error (TKOOO) This bit is set only by the RESTORE command. It indicates that TRACK 000 (Pin 31) has not gone active after the issuance of 2048 stepping pulses. When in the ECC mode (SDH register, bit 7 = 1), this bit is set when the first non-zero syndrome is detected. When retries are enabled, up to ten attempts are made to correct the error. If the error is successfully corrected, this bit remains set; however, bit 2 of the STATUS register is also set to inform the host that the error has been corrected. If the error is not correctable, the CRC/ECC error bit remains set and bit 0 of the STATUS register is also set. Bit 0 - Data Address Mark This bit is set during a READ SECTOR command if the Data Address Mark is not found after the proper Sector ID is read. 8-46 intJ AP-402 4.2 Reduce Write Current Register 4.5 Cylinder Number Low Register This register is used to define the cylinder number where RWC (Pin 33) is asserted: This register holds the lower byte of the desired cylinder number: . 7 6 5 4 3 2 o 7 6 5 3 4 o 2 CYLINDER NUMBER I 4 LS BYTE OF CYLINDER NUMBER The value (0-255) written into this register is internally multiplied by 4 to specify the actual cylinder where RWC is asserted. Thus a value ofOIH will cause RWC to activate on cylinder 4, 02H on cylinder 8 and so on. RWC will be asserted when the present cylinder is greater than or equal to the cylinder indicated by this register. For example, one ST506 compatible drive requires precompensation on cylinder 128 (80H) and above. Therefore the REDUCE WRITE CURRENT register should be loaded with 32 (20H). A value of FFH will keep the RWC output inactive regardless of the actual cylinder number. It is used in conjunction with the CYLINDER NUM- BER HIGH register to specify a range of 0 to 2048 tracks. 4.6 Cylinder Number High Register This register holds the three most significant bits of the desired cylinder number: 7 6 543 Ix x x x x o 2 (10) (9) (8) x = ignored 4.3 Sector Count Register The 82064 contains a pair of registers that store the actual position where the R/W head are located. The CYLINDER NUMBER HIGH and LOW registers are considered the cylinder destination registers for seeks and other commands. The 82064 compares its internal registers to the destination registers and issues the number of steps in the right direction to make both sets of registers equal. After a command is executed, the internal cylinder position registers' contents are equal to the cylinder high/low registers. If a drive number change is detected on a new command, the 82064 automatically reads an ID field to update its internal cylinder position registers. This affects all commands except a RESTORE. This register is used to define the number of sectors that need to be transferred to the buffer during a READ MULTIPLE SECTOR or WRITE MULTIPLE SECTOR command. 7 6 5 4 3 2 o # OF SECTORS The value contained in the register is decremented after each sector is transferred to/from the sector buffer. A zero represents a 256 sector transfer, a one a 1 sector transfer, etc. This register is ignored when single sector commands are specified in the Command register. When a RESTORE command is executed, the internal head location registers are reset to zero while DIR and STEP move the heads to track zero. 4.4 Sector Number This register holds the sector number of the desired sector: 7 6 543 2 4.7 Sector/Drive/Head (SOH) Register o The SDH register contains the desired sector size, drive number, and head number parameters. The format is shown below. SECTOR NUMBER For a multiple sector command it specifies the first sector to be transferred. It is decremented after each sector is transferred to/from the sector buffer. The SECTOR NUMBER register may contain any value from 0 to 255. The ID Not Found bit will be set if the desired sector cannot be located on the track. 7 EXT 6 5 SECT SIZE 4 3 DRIVE 2 0 HEAD # Both head number and sector size are compared against the disk's ID field. Head select and drive select lines are not available as outputs from the 82064 and must be generated externally. The SECTOR NUMBER register is also used to program the Gap I and Gap 3 lengths to be used when formatting a disk. See the WRITE FORMAT command description for further explanation. 8-47 inter AP-402 Bit 3 - Data Request Bit 7, the extension bit (EXT), is used to select between the CRC or ECC mode. When bit 7 = I, the ECC mode is selected for the data field. When bit 7 = 0, the CRC mode is selected. The CRC is checked on the ID field regardless of the state of EXT. The SDH byte written into the ID field is different than the SDH Register contents. The recorded SDH byte does not have the drive number (DRIVE) written but does have the BAD BLOCK mark written. The. Data request bit (DRQ) reflects the state of the BDRQ (Pin 36) line. It is set when the sector buffer should be loaded with data or read by the host processor, depending upon the command. The DRQ bit and the BDRQ line remain high untilBRDY indicates that the sector buffer has been filled or emptied, depending upon the command. BRDQ can be used for DMA. Bit 2 - Data Was Corrected (DWC) Note that use of the extension bit requires the gap lengths to be modified as. described in the WRITE FORMAT command description. When set, this bit indicates that an ECC error .has been detected during a read operation, and that the data in the sector buffer has been corrected. This provides the user with an indication that there may be a marginal condition within the drive before the errors become uncorrectable. This bit is forced to zero when not in the ECC mode. 4.8 Status Register The status register is a read-only register which informs the host of certain events. This register is a flowthrough latch until the microprocessor reads it at which point the drive· status lines are latched. The INTRQ line will be reset when this register is read. The format is: Bit I - Command in Progress 76543210 IBUSY IREADY IWF ISC IORO IOWC ICIP IERROR I Bit 7 - Busy When this bit is set, a command is being executed and a new command should not be loaded until it is cleared. Although a command may be executing, the sector buffer is still available for access by the host processor. When the 82064 is no longer busy (bit 7 = 0) the status register can be read. If CIP is set, only the status register can be read regardless of which register is selected. Bit 0 - Error This bit is asserted when a command is written into the COMMAND register and, except for the READ command, is deasserted at the end of the command. When executing a READ command, Busy will be deasserted when the sector buffer is full. Commands should not be loaded into the COMMAND register when Busy is set. When the Busy bit is set, no other bits in the STATUS or ERROR registers are valid. This bit is a logical OR of the contents of the error register. Any bit being set in the error register sets this bit. Th~ host must read the ERROR register to determine what type of error occurred. This bit is cleared when a new command is loaded. 4.9 Command Register During other non-data transfer commands, Busy should be ignored as it will go active for short periods. This write-only register is loaded with the desired command: Bit 6 - Ready 7 This bit reflects the state of the DRDY (Pin 28) line at the time the microprocessor reads the status register. Transitions on the DRDY line will abort a command and set the aborted command bit in the error register. 6 5 4 3 2 o COMMAND The 82064 begins to execute immediately upon loading any value into this register. This register should not be written while the Busy or Command in Progress bits are set in the STATUS register. The INTRQ line (Pin 3) if set, will be cleared by a write to the COMMAND register. Bit 5 - Write Fault This bit reflects the state of the WR FAULT (Pin 30) line. Transitions on this line will abort a command and set the aborted command bit in the error register. Instruction Set Bit 4 - Seek Complete The 82064 WDC instruction set contains six commands. Prior to loading the command register, the host processor must first set up the Task Register File with the information needed for the command. Except for This bit reflects the state of the SC (Pin 32) line. Commands which initiate a seek will pause until Seek Complete is set.. This bit is latched after an aborted command error. 8-48 intJ AP-402 the COMMAND register, the registers may be loaded in any order. If a command is in progress, a subsequent write to the COMMAND register will be ignored. A command is finished when the command in progress (CIP) bit in the STATUS register is cleared. See the Command Section for an explanation of each command. 7654 3 COMMAND RESTORE o 0 0 1 R3 SEEK o 1 1 1 R3 READ SECTOR 001 0 I WRITE SECTOR o0 1 1 0 SCAN 10 o1 0 0 0 WRITE FORMAT o1 0 1 0 COMPUTE CORRECTION 0 0 0 0 1 0000 0 SET PARAMETER 2 5.0 PROGRAMMING THE 82064 This section consists of two parts. The first part gives an explanation of each command, a flowchart showing the 82064's sequence of events, and the commands' sequence of events as seen by the host microprocessor. The second section shows flowcharts of general software routines and their PLM equivalent, for both polled and interrupt driven software. 1 R2 R2 M M 0 0 0 0 R1 RO R1 0 0 0 0 0 0 The designer must remember that the 82064 expects a full sector buffer that can be isolated from the host during data transfers between the 82064 and the disk. Since the 82064 assumes a full sector buffer is available, it does not check for data overrun or underrun error conditions. If such a condition occurs, corruption of data will happen and the host will have no indication of an error. The design must guarantee against over-run and under-run ,conditions when not using the sector buffer approach. RO T T T 0 0 S R 3-0 = Rate Field For 5 MHz WR Clock: 5.1 Commands 0000- ::::35,...s 0001-0.5 ms 0010-1:0ms 0011-1.5ms 0100-2.0 ms 0101-2.5 ms 0110-3.0 ms 0111-3.5 ms 1000-4.0 ms 1001 -4.5 ms 1010-5.0 ms 1011-5.5ms 1100-6.0 ms 1101-6.5 ms 1110'-3.2,...s 1111-16,...s COMMAND T = 7 A command is placed into the command register only after the Task Registers have been written with proper values. The Task Registers may be loaded ,in any order. A command, once started, can only be terminated by a hardware reset to the 82064. This may corrupt data on the disk by removing necessary control signals out of sequence. The general sequence of a command is as follows: - The host loads the Task Registers - The host loads the Command Register - The 82064 locates the correct cylinder - Data transfer takes place - The 82064 issues an interrupt 6 5 4 3 2 Restore Command - 1 o 0 0 1 R3 R2 R 1 RO Retry Enable The Restore command is used to position the heads to track O. This command is usually issued to the 82064 on power-up to initialize internal registers. The user specified rate field (R3-RO) is stored internally for FUTURE use in commands with implied seeks. T = 0 Enable Retries T = 1 Disable Retries M= Multiple Sector Flag M=O Transfer 1 Sector M=1 Transfer Multiple Sectors I = The step rate value is not used with this command. The actual stepping rate used is dependent upon the handshake delay between the 82064 issuing a step pulse and the drive returning a seek complete for each track. After each step pulse is issued, the 82064 waits for a rising edge on the Seek Complete (SC) line before issuing the next pulse. If 8 index pulses are received without a rising edge on SC, the 82064 will switch to sampling the level of the SC line. If after 2048 step pulses the Track 00 signal has not gone active, the 82064 will terminate Interrupt Enable I =0 Interrupt at BORQ time I = 1 Interrupt at end of command S = Error Correction Span S = 0 5-bitSpan S =1 11-bit Span 8-49 AP-402 RESET INTRQ. EARORS. SEY BUSY, CIP RESET Awe SET DIRECTION -OUT STORE STEP RATE PULSE iiCJI SET INTRQ RESET BUSY,CI' YES 231927-13 ISSUE A STEP PULSE Figure 14. Seek CommandFlow her of step pulses issued is calculated by comparing the cylinder high/low regiSters to an internal "present position" cylinder register. The present position register is updated after all step pulses are issued aild the command is terminated. 231927-12 Figure 13. Restore Command Flow the command, assert INTRQ and set the TRACK 000 bit in the Error Register. The command will terminate if WR Fault goes active or DRDY goes inactive at any time. Figure 13 is a flow chart of the command. The actual stepping rate is taken from the rate field bits (R3-RO) and stored for future use. The command terminates at once if WR FAULT goes active or DRDY goes inactive at any time. Figure 14 is a flowchart of the command. Seek Command 1 1 1 R3 R2 R1RO o Since the data transfer commands feature implied seeks, this command is of use mainly to those using multiple drives and software that can take advantage of overlapped seeks. . The Seek command positions the heads to the cylinder specified in the Task Registers., The direction and num8-50 infef AP-402 Scan 10 Command 0100000T The Scan ID command is used by both the 82064 and the host to update the SDH, the Sector Number, Cylinder and internal present position registers. Once the command is issued, the Seek Complete line is sampled until valid. The first ID field found, as indicated by the address mark, is loaded into the previously mentioned registers. The Bad Block bit will be set if detected, and the command will terminate. ID CRC errors will start the search sequence over for a maximum of 10 index pulses, but the registers will be loaded with whatever data the 82064 had perceived as ID information. Improper states on WR Fault on DRDY will terminate the command. Figure 15 is the flow chart of the command. SET INTRa, AC RESET BUSY, CIP The main use for this command is to determine where the heads are currently located and what size the sectors are (i.e. 256, 512 etc.). Without this command, it would be necessary to recall the heads to track zero and then step out to the desired cylinder each time a drive was changed. Specifying the wrong sector size would yield an ID not found error. This command enables the system to read the disk drive to determine what size sectors were recorded. Read Sector Command 0010lMOT The READ SECTOR command is used to transfer one or more sectors of data from the disk to the sector buffer. Upon receipt of the READ SECTOR command, the 82064 checks the CYLINDER NUMBER LOW /HIGH register pair against an internal cylinder position register to see if they are equal. If not, the direction and number of steps are calculated and a seek takes place. If an implied seek is performed, the 82064 will search until a rising edge of SC is received. The WR FAULT and DRDY lines are monitored throughout the command. ·IF RETRIES ARE DISABLED, PATH IS TAKEN AFTER 2 INDEX PULSES 231927-14 Figure 15. Scan 10 Command Flow Once the Seek Complete (SC) line is high (with or without an implied seek having occurred), the search for an ID field begins. If T = 0 (retries enabled), the 82064 must find an ID with the correct cylinder number, head, sector size, and CRC within 10 revolutions, or a Scan ID and re-Seek will be performed. The search for the proper ID will again be tried for up to 10 revolutions. If the correct sector is still not found, the appropriate error bits will be set and the command terminated. Data CRC errors will also be retried for up to 10 revolutions (if T = 0). Both the READ SECTOR and WRITE SECTOR commands feature a "simulated completion" to ease programming. DRQ/BDRQ will be generated upon detecting an error condition. This allows the same program flow for successful or unsuccessful completion of a command. When the data address mark is found, the 82064 is ready to tranfer data to the sector buffer. After the data has been transferred, the I bit is checked. If I = 0, INTRQ is made active coincident with BDRQ, indicating that a transfer of data from the buffer to the host processor is required. If I = 1, INTRQ will occur at the end of the command, i.e. after the buffer is unloaded by the host. If T = 1 (retries disabled), the ID search must find the correct sector within 2 revolutions or the appropriate error bits will be set and the command terminated. 8-51 inter AP-402 In summary then, READ SECTOR operation is as follows: When M = 0 (READ SECTOR) ( ( ( ( 1) 2) 3) 4) ( 5) ( 6) ( 7) ( 8) ( 9) (10) ( 1) (2) (3) (4) (5) (6) (7) (8) (9) (10) Host: 82064: 82064: 82064: 82064: 82064: Host: 82064: 82064: Host Sets up parameters; issues READ SECTOR command. Strobes SCR. Finds sector specified; asserts SCR and SCS; transfers data to buffer. Sets BCR = 1, SCS = O. Sets BDRa = 1; DRa = 1. If I bit =.1 go to (9). Reads contents of sector buffer. Waits for BRDY, then sets INTRa = 1: END. Sets INTRa = 1. Reads out contents of buffer; END. When M = Host: 82064: 82064: 82064: 82064: Host: 82064: 82064: 82064: 82064: Sets up parameters; issues READ SECTOR command. Assert SCR. Finds sector specified; asserts BCR and SCS; transfers data to buffer. Strobes SCR; sets SCS = O. Sets BDRa = 1; DRa = 1. Reads out contents of buffer. Waits for SRDY; Decrements SECTOR COUNT; increments SECTOR NUMBER. When BRDY = 1, if Sector Count = 0 then go to (10). Go to (2). Set INTRa = 1; End. 1 (READ MULTIPLE SECTOR) A flowchart of the READ SECTOR command is shown in Figures 16A and 16B. The M bit is set for multiple sector transfers. When M = 0, one sector is transferred and the SECTOR COUNT register is ignored: When M = I, multiple sectors are transferred. After each sector is transferred, the 82064 decrements the SECTOR COUNT register and increments the SECTOR NUMBER register. The next logical sector will be transferred regardless of any interleave. Sectors are numbered at format time. and number of steps calculation is performed and a seek takes place. The WR FAULT and DRDY lines are checked throughout the command. When the Seek Complete (SC) line is found to be true (with or without an implied seek having occurred), the BDRQ signal is made active and the host proceeds to load the buffer. Once BRDY goes high, the ID field with the specified cylinder number, head, and sector size is searched for. Once found, WR GATE is made active and the data is written to the disk. If retries are enabled (T = 0), and if the ID field cannot be found within 10 revolutions, a Scan ID and re-Seek are performed. If the correct ID field is not found within 10 additional revolutions, the. ID Not Found error bit is set and the command is terminated. If retries are disabled, (T = I) and if the ID field cannot be found within 2 revolutions, the ID Not Found error bit is set and the command is .terminated. Multiple sector transfers continue until the SECTOR COUNT register equals zero, or the BRDY line goes active (low to high). If the SECTOR COUNT register is non-zero (indicating more sectors are to be transferred but the buffer is full), BDRQ will be made active and the host must unload the buffer. After this occurs, the buffer will again be free to accept the remaining sectors from the 82064. This scheme enables the user to transfer more sectors than the buffer memory has capacity for. During a WRITE MULTIPLE SECTOR command (M = 1), the SECTOR NUMBER register is decremented and the SECTOR COUNT register is incremented after the transfer to the disk takes place. During multiple sector transfers if BRDY is asserted after the first sector is transferred from the buffer, the 82064 will transfer the next sector before issuing BDRQ. The 82064 will set BDRQ and wait for the host processor to place more data in the buffer. Write Sector Command ,.... 01110MOT The WRITE SECTOR command is used to write one or more sectors of data to the disk from the sector buffer. Upon receipt of a WRITE SECTOR command the 82064 checks the CYLINDER NUMBER LOW/ HIGH register pair against the internal cylinder position register to see if they are equal. If not, the direction 8-52 intJ AP-402 In summary then, the WRITE SECTOR operation is as follows: When M = 0, 1 (WRITE SECTOR) ( 1) Host: ( 2) 82064: ( 3) Host: ( 4) 82064: 82064: 82064: 82064: 82064: 82064: ( 5) ( 6) ( 7) ( 8) ( 9) Sets up parameters; issues WRITE SECTOR command. Sets BORa = 1, ORa = 1. Loads sector buffer with data. Waits for BRDY = 0 to 1. Finds specified 10 field; writes sector to disk. If M = 0, then set INTRa = 1; END. Increment SECTOR NUMBER register; decrement SECTOR COUNT register. If SECTOR = 0, then set INTRa = 1; END. Go to (2). A flowchart of the WRITE SECTOR command is shown in Figure 17. register holds the number of bytes (minus three) to be used for Gap I and Gap 3. For instance, if the SECTOR COUNT register value is 02H and the SECTOR NUMBER register value is OOH,theri 2 sectors are written on a track and 3 bytes of 4EH are written for Gap I and Gap 3. The data fields are filled with FFH and the CRC is automatically generated and appended. All gaps are filled with 4EH. After the last sector is written, the track is filled with 4EH until the index pulse terminates the write. The Gap 3 value is determined by the drive motor speed variation, data sector length, and the interleave factor. The interleave factor is only important when 1:1 (no) interleave is used. The formula for determining the minimum Gap 3 length value is: Write Format Command 01010000 The WRITE FORMAT command is used to format one track using the Task Register File and the sector buffer. During execution of this command, the sector buffer is used for additional parameter information instead of sector data. Shown in Figure 18 is the contents of the sector buffer for a 32 sector/track format with an interleave factor of two. Each sector requires a two byte sequence. The first byte designates whether a bad block mark is to be recorded in the sector's ID field. A 00 Hex is normal; an 80H indicates a bad block mark for the sector. In the example of Figure 18, sector 04 will get a back block mark recorded. Any attempt to access sector 4 in the future will terminate the command. Gap 3 The second byte indicates the logical sector number to be recorded. This allows sectors to be recorded with any interleave factor desired. The remaining memory in the sector buffer may contain any value. Its only purpose is to generate a BRDY to tell the 82064 to begin formatting the track. An implied seek is in effect on this command. As for other commands, if the drive number has been changed an ID field will be scanned for cylinder position information before the implied seek is performed. If no ID field can be read (because the track had been erased or because an incomplete format had been used), an ID Not Found error will result and the WRITE FORMAT command will be aborted. This can be avoided by issuing a RESTORE command before formatting. = (2 * M • S) +K+ E = motor speed variation (e.g., 0.03 for M S K K = 0 for any other interleave factor E = ± 3%) = sector length in bytes = 25 for interleave factor of I 7 if the sector is to be extended As with all commands, a WR FAULT or drive not ready condition, will terminate execution of the WRITE FORMAT command. Figure 19 shows the format that the 82064 will write on the disk. The extend bit in the SDH register must not be set during the Format command. A flowchart of the WRITE FORMAT command is shown in Figure 20. The SECTOR COUNT register is used to hold the total number of sectors to be formatted (OIH = I sector; OOH = 256 sectors), while the SECTOR NUMBER 8-53 inter AP-402 ( READ SECTOR) i DE-ASSERT INTRQ, ERRORS, ASSERT BUSY, CIP o 231927-15 NOTE: • If T = 1, then "dashed" path is taken after 2 index pulses. Figure 16A. Read Sector Command Flow 8-54 inter AP-402 NO 231927-16 * If T bit of command = 1, then dashed path is taken. * * If T bit of command = 1, then test is for 2 index pulses. Figure 16B. Read Sector Command Flow (Continued) 8-55 inter AP-402 231927-17 NOTE: *11 retries are disabled, the "dashed" path is taken after 2 index pulses. Figure 17. Write Sector Command Flow 8-56 AP-402 00 80 00 00 FF AA 00 00 04 08 DC FF 00 no 00 00 FF AA AA 00 00 10 14 18 1C FF AA 00 ~-----.--- 00 00 00 00 FF AA 00 01 05 09 00 FF 00 00 00 00 FF AA AA 00 00 11 15 19 10 FF AA 00 00 00 00 00 FF AA 00 02 06 OA DE FF AA 00 12 15 19 1E FF 00 00 00 00 FF AA AA AA 00 00 00 03 07 DB OF FF AA 00 00 00 00 00 FF AA 00 13 17 1B 1F FF AA 00 Figure 18. Sector Buffer Contents For Format ---------------------------, ... ~r---------------REPEATED FOR EACH SECTOR , - - - - - · · - 1 0 FIELD GAP 4 4E 00 00 00 00 FF I D GAP 1 14 BYTES A E 4E 1 00 N T c------DATA F I E L D - C Y L S C S E R D C C H # 1 C R 3 BYTES 12 BYTES C 00 00 A F 1 6 USER DATA 2 WRITE GATE C C R R 3 BYTES GAP 3 4E C C 00 1 2 -1 231927-18 Figure 19. 82064 Sector Format For commands that do make use of the sector buffer, the size of the sector buffer will affect the software. If the sector buffer is equal in size to one sector, then a carry out of an address counter (for the sector buffer) as the buffer is being filled will indicate to the 82064 that the command should continue. If the sector buffer size is equal to two or more disk sectors, and only one sector is being transferred, then the carry out signal would not go active, and the 82064 will be forever waiting for BRDY In this case an I/O port would have to be used to generate this signal for the 82064 so that command execution can finish. Figure 22 is a flowchart of the READ SECTOR command, and its PLM representation. The WRITE SECTOR and FORMAT TRACK commands are equivalent in terms of software interfacing. Their flowcharts and their PLM equivalents are shown in Figure 23. 5.2 Software Section: General Programming This section describes the software needed to communicate with the 82064 in order to store and retrieve data. This chapter describes the software in a general manner and Appendix B contains the actual implementation used to exercise the 82064 SBX board. Polled Mode As discussed in the Polled Interface Section, the 82064 does not directly support polled operation for data transfers without the addition of hardware. This section is based upon the polled interface as described in the Polled Interface Section. Once the command register is written the 82064 requests a data transfer before locating the proper track. Once the buffer is filled and BRDY is asserted, the 82064 will locate the target track and sector. If the ID is not located before the selected number of retries have occurred, the 82064 will terminate the command. The data transferred to the sector buffer will not have been used. Once the command has finished (i.e., CIP = D), the status and error registers will inform the host of an error. The six 82064 commands can be divided into two groups, those with data transfers and those without. The commands that do not use the sector buffer are: Restore, Seek and Scan ID. The functions of each command are explained in the Commands Section. Figure 21 is a flowchart of a polled operation and a PLM example. The last status that was read will contain any error conditions that might have occurred during the command. . 8-57 inter AP·402 231927-19 Figure 20. Write Format Command Flow 8·58 AP-402 > ___-' YES 231927-20 '* *' Disk$Operation: Procedure; Call Write$82064$Task$Reg's; Write Task Registers Output (Command$Reg) = Command; Status = Input (Status$Reg); /* Read Status Reg ., Do while Status and CIP = CIP; /* Wait until command finishes ., Status = Input (Status$Reg); End; End Disk$Operation; Figure 21. Polling Status 8·59 inter .t AP-402 READ SECTOR COMMAND 231927-21 Disk$Operation: Procedure; Call Write$82064$Task$Regs; Output (Command $ Reg) = Command; Status = Input (Status$Reg); Do while Status and CIP = CIP; If Status and DRQ = DRQ then Do; Call Read$Data$From$Buffer; Output (BRDY$PORT) = 01; End; Stat us = Input (Stat us$Port ) End; End Disk$Operation; Figure 22. Polling For Read Data 8-60 inter AP-402 WRITE, FORMAT COMMANDS NO MOVE DATA FROM SYSTEM RAM TO SECTOR BUFFER 231927-22 Disk$Operation: Procedure; Call Write$82064$Task$Regs; Output (Command$Reg) = Command; Status = Input (Status$Reg); Do while status and CIP = CIP; I f status and DRQ = DRW then do; Call Write$Data$to$Buffer; Output (BRDY$Port) = 01; /* Make BRDY go active End; Status = Input (Status$Reg) End; End Disk$Operation; Figure 23. Polling For Write Data 8-61 *' intJ AP-402 *' Disk$Operation: Procedure; Call Write$82064$Task$Regs; ,. Write registers Output (Command$Reg) = Command; Start command "' Status = Input (Status$Reg); /* Read status "' Do while' status and CIP = CIP; /* Is a command in progress ., I f status and DRQ = DRQ then do; /* Data transfer? = yes ., If command = Read$Sector then Call Read'$Data$From$Buffer; /* ,Remove data ., Else Call Write$Data$to$Buffer; Send data Output (BRDY$PORT) = 01; ,. Toggle BRDY 0 to 1 End; End Disk$Operation; '* '* *' *' Figure 24. Complete Polled Flow Start$Disk$Operation: Procedure; Call Write$82064$Task$Reg's; Output (Command $ Reg) = Command; End Start$Disk$Operation; Figure 25. Interrupt Mode; Starting a Disk Transfer Figure 24 is the PLM routine that allows for all six of the commands, It ditTers from the READ and WRITE routines in that the direction that data is to be transferred is determined by the command, only have to read the status register. If the interrupt is issued at BDRQ the host would remove the butTer data and generate BRDY, At this point the status and error registers contain valid information. Generating an interrupt at BDRQ time may save some systems some software overhead. Figure 24 also works for mUltiple sector transfers. However, the BRDY signal must be generated in hardware (the carry-out of an address counter). The WRITE SECTOR and FORMAT commands do not have this option because the sector butTer is filled before the track and sector are located. Hence, there can be significant delays between asking for data and the command terminating. Interrupt Mode Interrupt driven software is chosen when the microprocessor must execute other tasks and cannot sit waiting for the disk to reposition its heads, as in a polled environment. The delay in repositioning heads can be anything from a couple of milliseconds to a second or more. In an, interrupt driven environment, the 82064 can interface to a DMA controller for data transfers between the sector butTer and the ' host's RAM. If a DMA controller is not available an interrupt must be generated via the BDRQ line. However, BDRQ can stay active for long periods of time (until BRDY is generated), The interrupt sensing logic must take this into account to avoid being retriggered constantly. Intel's 8259A Interrupt Controller 8259Aprovides that capability, It should be programmed for edge triggered interrupts or the end of interrupt byte must not be issued until BDRQ is removed to prevent retriggering. The 82064's interrupt (INTRQ) pin goes active to'indicate that the command has fmished. The READ SECTOR command provides the programmable choice of having the interrupt occur at the end of the data transfer or the normal end of the command. The reason for this option is that when the 82064 signals that a data transfer is required (via BDRQ, DRQ) the disk has been read and the data has been placed in the butTer. The host would remove the data and issue BRDY, The 82064 would then issue an interrupt indicating that the command has finished. The interrupt procedure would Figure 25 is a PLM example of starting a disk operation in an interrupt driven environment. The command starts, and some indefinite amount of time later an interrupt would be generated, indicating service is required. 8-62 AP-402 End$of$Transfer: Procedure Interrupt; Status = Input (Status$Register); Output (8259A PIC) = End$of$Interrupt; End End$of$Transfer; Figure 26. Checking Status via Interrupt Service$Disk$Controller: Procedure Interrupt; Status = Input (Status$Port); If Status and DRQ = DRQ then Call Transfer$Data$To/From$Buffer;/* Enable DMAC */ Output (8259A PIC) = End$of$Interrupt; End Service$Disk$Controller; Figure 27. Complete Interrupt Procedure If a DMA controller is used, it would have to be programmed and initialized before the command is issued to the 82064. Recall that once a data transfer between the microprocessor and 82064 has finished, BRDY must be set high. As long as BRDY is generated from hardware, no microprocessor intervention is needed. If BRDY is generated by an I/O port the microprocessor will have to perform this function (this will be the case with any system that has a sector buffer larger than one sector). (One option could be to generate an interrupt from the terminal count pin of the DMA controller. The microprocessor would then issue a BRDY.) Data transfers between host RAM and the sector buffer would be handled without microprocessor intervention. The interrupt would then signal that the command has finished as shown in Figure 26. The only operation the host processor would perform is to check the status register of the 82064 for any error conditions. 6.0 APPLICATION EXAMPLE This section shows an application using the 82064 interfaced to the SBX bus. A quick overview of the SBX bus is provided (pin descriptions, general wave forms) as a background for the application. Designing the 82064 onto an SBX Multimodule board was chosen to highlight the size and complexity differences between earlier TTL, MSI, LSI-based disk controller boards and what is possible using the 82064. Both the hardware and software sections will be applicable to most other designs using the 82064. This design example is called SBX82064 and does not represent a real product offered by Intel Corporation. Appendix C contains the schematic of the SBX board. The advantage of the SBX Multimodule is that it permits the system to be tailored for specific needs with a minimum of effort. The advantage of an SBX based disk controller is that a current system can make use of the capacity, reliability and speed of a hard disk with no (or minimal) hardware redesign. If BDRQ is used to generate an interrupt in addition to the normal interrupt, then the routines shown in Figure 27 will check the status register to see if a data transfer should be executed or if the command is finished. If DRQ is not set, the command has finished and any error conditions would be in the status register. 6.1 iSBX Bus Multimodule Boards The iSBX Multimodule boards are small, specialized, I/O mapped boards which plug onto base boards. The iSBX boards connect to the iSBX bus connector and convert the iSBX bus signals to a defined I/O interface. Another possibility would be to have separate interrupt routines for the two possible sources of interrupts (INTRQ, BRDQ). There would then be no need to test the status to see which interrupt had occurred. 8-63 infef AP-402 ISBX BOARD USER CONNECTOR iSBX BOARD INTEL SUPPLIED CONNECTOR ~:, ~ .. ii !! ~ ~ BASE BOARD 231927-23 Figure 28. iSBX Multimodule Board Concept (Double Wide) Base Boards Control Lines The base board decodes I/O addresses and generates the chip selects for the iSBX Multimodule boards. In 8bit systems, the base board decodes all but the lower three addresses in generating the iSBX Multimodule board chip selects. In 16-bit systems, the base board decodes all but the lower order four addresses in generating the iSBX Multimodule board chip selects. Thus, a base board would normally reserve two blocks of 8 I/O ports for each iSBX socket it provides. The following signals are classified as control lines: There are two classes of base boards, those with Direct Memory Access (DMA) support and those without. Base boards with DMA support are boards with DMA controllers on them. These boards, in conjunction with an iSBX Multimodule board (with DMA capability), can perform direct I/O to memory or memory to I/O operations. COMMANDS: lORD (I/O Read) IOWRT (I/O Write) DMA: MDRQT (DMA Request) MDACK (DMA Acknowledge) TDMA (Terminate DMA) , INITIALIZE: RESET CLOCK: MCLK (iSBX Multimodule Clock) SYSTEM CONTROL: MWAIT MPST (iSBX Multimodule Board Present) iSBX Bus Interface Command Lines (lORD, IOWRT) The iSBX bus interface can be grouped into six functional classes: 1. Control Lines 2. Address and Chip Select Lines 3. Data Lines 4. Interrupt Lines 5. 'Option Lines 6. Power Lines The command lines are active low signals which provide the communication link between the base board and the iSBX Multimodule board. An active command line, conditioned by chip select, indicates to the iSBX Multimodule board that the address lines are valid a'nd the iSBX Multimodule board should perform the specified operation. 8-64 inter AP-402 DMA Lines (MDRQT, MDACK, TDMA) Address Lines: MAO-MA2 The DMA lines are the communication link between the DMA controller device on the base board and the iSBX Multimodule board. MDRQT is an active high output signal from the iSBX Multimodule board to the base board's DMA device requesting a DMA cycle. MDACK is an active low input signal to the iSBX Multimodule board from the base board DMA device acknowledging that the requested DMA cycle has been granted. TDMA is an active high output signal from the iSBX Multimodule board to the base board. TDMA is used by the iSBX Multimodule board to terminate DMA activity. The use of the DMA lines is optional as not all base boards will provide DMA channels and not all iSBX Multimodule ,boards will be capable of supporting a DMA channel. Chip Select Lines: MCSO-MCS1 The base board decodes I/O addresses and generates the chip selects for the iSBX Multimodule boards. The base board decodes all but the lower order three addresses in generating the iSBX Multimodule board chip selects. Address Lines (MAO-MA2) These positive true input lines to the iSBX Multimodule boards are generally the least three significant bits of the I/O address. In conjunction with the command and, chip select lines, they establish the I/O port address being accessed. In 16-bit systems, MAO-MA2 may be connected to ADR1-ADR3 of the base board address lines. Initialize Lines (Reset) This input line to the iSBX Multimodule board is generated by the base board to put the iSBX Multimodule board into a known internal state. Chip Select Lines (MCSO-MCS1/) In an 8-bit system, these input lines to the iSBX Multimodule board are the result of the base board I/O decode logic. MCS is an active low signal which conditions the I/O command signals and thus enables communication with the iSBX Multimodule boards. Clock Lines (MCLK) This input to the iSBX Multimodule board is a timing signal. The 10 MHz (+ 0%, - 10%) frequency can vary from base board to base board. This clock is asynchronous from all other iSBX bus signals. 6.2 The SBX82064 Design Example The SBX82064 Multimodule board will interface an ST506 compatible drive to any host board having an SBX connector. Two restrictions on the disk drive are that there is a maximum of 2048 cylinders and/or 8 heads. The SBX connector cannot supply the power-up current requirements of the drive. The drive must be connected directly to the power supply. The SBX82064 in Appendix C does not support DMA transfers. The version in Appendix D does support DMA transfers. Since this multimodule has a 2 kbyte sector buffer, the host microprocessor must generate a BRDY by accessing an I/O port during data transfers. System Control Lines (MWAIT, MPSn These output signals from the iSBX Multimodule board control the state of the system. An active MWAIT (Active Low) will put the CPU on the board into wait states providing additional time for the iSBX Multimodule board to perform the requested operation. MWAIT must be generated from address (address plus chip select) information only. If MWAIT 'is driven active due to a glitch on the CS line during address transitions, MWAIT must be driven inactive in . less than 75 ns. The software for communicating to the SBX board is intended to be interrnpt driven. Polling for data transfers is not supported. Reading the status without an interrupt is not recommended. During the times the 82064 is accessing the sector buffer, the SBX82064 will isolate itself from the host. To support polling, a hardware generated busy pattern should be driven onto the host's data bus as is shown in the Polled Interface section. The sector buffer stores up to 2 kbytes of disk data, for multiple sector transfers. The SBX board only interfaces to one drive (for space reasons), but four drives could be used with the addition of a read data mUltiplexor (one IC) and the drive data cables. The iSBX Multimodule board present (MPST) is an active low signal (tied to signal ground) that,informs the base board I/O decode logic that an iSBX Multimodule board has been installed. Address and Chip Select Lines The address and chip select lines are made up of two groups of signals. 8-65 intJ Ap·402 Microprocessor Interface Sector Buffer Isolation Logic Figure 29 is a block diagram of the SBX82064's microprocessor interface. The I/O port assignments are listed in Table 1. The functional blocks of the interface are: The host will be isolated from the SBX board whenever the 82064 is accessing its sector buffer which is enabled by BCS. The host's control signals, RD, WR, MCSO, and MCSI and data bus are also disabled at the same time to prevent any data in the sector buffer from being corrupted. The host should wait for an interrupt before reading the 82064's Status register. Attempting to read the SBX board while BCS is active will return invalid data, since the SBX board will have the data bus tristated. . Sector Buffer Isolation Logic Wait State Logic Sector Buffer Sector/Drive/Head Register Logic Table 6·1 1/0 Port Assignments Port Address Read Write BOH B2H B4H BSH BBH BAH BCH BEH 90H 92H 94H Sector Buffer Error Reg Sector Count Sector Number Cylinder Low Cylinder High SOH Reg Status Reg None None None Sector Buffer RWCReg Sector Count Sector Number Cylinder Low Cylinder High SOH Reg Command Reg None Asserts BCR Asserts BROY Wait State Logic The wait state logic drives the 'not ready' line, MWAIT, active whenever the host reads the SBX board. MWAIT does not go active for buffer or 82064 register writes. This logic was required for two reasons. First, a delayed read is generated, because the address setup to RD margin of the SBX bus is less than the 82064's needs (50 ns vs 100 ns). Second, the RD to data valid access period of the 82064 (375 ns), is greater than the SBX bus' full speed read cycle (275 ns) permits. NOTE: Address assignments are determined by the host board. MWAIT +MFM RD DATA -MFM AD DATA INDEX TRACKO sc READY WR FAULT HOO H01 HO' 2 TO 4 DECODER t------t iiSo Ds1 Ds2 DSa 231927-24 Figure 29. 82064 sex Multimodule Diagram 8-66 inter AP-402 MWAIT is deactivated after allowing for the delayed RD and the access period of the 82064. This delay is accomplished with a 500 ns delay line. The first tap at 100 ns generates the read request to allow for the address setup margin. The next tap 400 ns later removes MWAIT to allow the host to continue. Disk Interface Figure 30 is a block diagram of the interface between the 82064 and the disk drive. The functional blocks are: Write Data Logic Read Data Logic (PLL) Drive Control Sector Buffer The sector buffer consists of an address counter (using 'ls393's) and a 2 kbyte static RAM. The address counter is incremented on the trailing edge of a valid RD or WR cycle, either host microprocessor or 82064 initiated. The counter is reset by a hardware reset, the 82064 buffer reset BCR, or by accessing an 1/0 port to provide software control. The 82064 will issue BCR each time BCS changes state (i.e. twice per sector). Resetting the buffer counter can be put under software control for multiple sector transfers. BRDY going high tells the 82064 that the buffer is available for its use. BRDY is generated by the address counter, by filling or emptying the entire buffer in multiple sector transfers, or from an 1/0 port when single sector transfers are done (since single sectors won't use all 2 kbytes of the buffer, the hardware signal will not be generated). When the 82064 is using the buffer, BCS will be low, and the RD or WR line will be pulsed every 1. 6 microseconds. Write Data Logic The WR DATA output requires a D flip-flop clocked at 10 MHz to complete the conversion of data to MFM. The output of this D flip-flop is true MFM and is sent to a delay line. A delay line determines the amount of delay for precompensation. No delay corresponds to shifting the data bit early; the first tap is approximately 12 ns of delay and is the "normal", or no delay and the second tap provides 12 ns of delay, referenced to the "normal" write data. Which output is selected is determined by the states on RWC, Early and Late. This function was generated with a 74s151 multiplexer. When RWC is inactive EARLY and LATE only select "normal" data since they are always active. The precompensated write data is then driven onto the data cable by an RS-422 driver. When the 82064 is using the buffer it prevents access by the host by tristating the read, write, select and data lines with a low on BCS. Read Data Logic The PLL generates the RD CLOCK that is used to decode the serial MFM data from the drive. A selected drive issues read data, unless WR GATE is active. A one-shot generates a pulse of 220-270 ns to provide the DRUN input. Only during an all zero's or one's field will the DRUN input stay high, as it will be retriggered every 200 ns (the minimum distance that separates continuous clock and data bits). As soon as DRUN is determined to be valid, the RD GATE output will go active, switching the PLL from the 10 MHz local clock input to disk data. The PLL will synchronize to the incoming serial data and generate a Read Clock of the proper timing and phase. The 82064 will then start to search for the address mark which is indicated by DRUN going low at the address mark. SDH Register Logic The drive and head select bits must be latched externally to the 82064, since these outputs are not provided. An 8 bit latch is strobed on the trailing edge of the WR pulse when the SDH register is selected. The two drive select bits are then demultiplexed to provide a one of four drive select line. If multiple drives are used then these outputs would also be used to select which disk's read data line would be gated into the PLL. Interrupts No detail is provided herein on PLL design, as it is beyond the scope of this document. PLL design should be left to experienced designers, since minute changes in temperature and component values will drastically affect the soft error rate. As an alternative, several companies manufacture very high speed PLL chips for MFM encoded disk drives. Besides being fairly easy to design in, they reduce the number of components and board area needed for the sophisticated PLL. While the interrupt line is programmable (to notify of an end of command or data transfer request for the Read Sector command only), software will ensure that the interrupt from the 82064 signifies command termination. The BDRQ line is OR'ed with the 82064's INTRQ line or BDRQ can generate its own interrupt. BDRQ is also gated off-board for a DMA controller. 8-67 inter AP-402 RD GATE DRUN RD DATA DATA RECOVERY I- RD CLOCK 82064 HOST ( WRITE PRECOMPENSATION AND SYNCHRONIZATION WR DATA EARLY DATA/CTRL LATE RWC STEP DIR DRDY WR FAULT TRACK 000 ·1 ~ DRIVE BUFFER! RECEIVERS INDEX SC WRGATE 231927-25 Figure 30. 82064 Disk Interface Block Diagram The host board did not have a DMA controller available, so an interrupt is issued from the BDRQ line and OR'ed with the 82064's interrupt line as interrupt sources were limited by the host. When an interrupt occurs, the interrupt procedure checks for either a data transfer, and executes it, or the completion of the command. If the interrupt signifies command completion, the interrupt procedure fills the command block with the 82064's task, status and error registers. 6.3 Software Driver Overview Presented in Appendix B is a listing of the software used to exercise the SBX 82064 board. Communication between the host software and the SBX driver routine is done through a structure located in system RAM. The host routine fills in required parameters, then passes the address of this communication block to the SBX driver routine. The driver routine pulls necessary values from this command block (CBL), executes a disk operation, then fills the CBL with the 82064's register contents, plus status and error information. The command block structure is shown in Figure 31. In this example, the host software examines one byte in the command block and until this byte is changed to a 00, no other command blocks will be passed to the disk driver routine. An alternative would be to issue a software interrupt to notify the microprocessor that the disk operation has finished and the command block contains parameters from the last operation and that a new disk command could start. Byte Byte Byte Byte Byte Byte Byte Byte Byte Pointer Command Rwc Reg SectorCnt. Sector Num. Cyl Low Cyl High SOH Reg Status Reg Error Reg Host Buffer The driver for this example allows polling for non-data transfer commands, and must use interrupts for data transfers. As mentioned earlier, microprocessor intervention is required since the sector buffer is much larger than one sector and will not generate a BRDY. The microprocessor must write to an I/O port, which sets BRDY, after each host to sector buffer transfer. An Figure 31 8-68 infef AP-402 actual software implementation wonld not include the polling and interrupt routines together, as only one method would generally be used. If the interrupt driven method was chosen, the disk driver routine returns to the calling routine. This permits other processing to be performed while the disk is executing a command. At some point, an interrupt will be generated, either from BRDY or INTRQ. Control will pass to the driver and the status register will be checked. If a data transfer is needed, either the microprocessor can transfer data or a DMA controller can perform the function. Once the transfer .of data to the buffer is finished the microprocessor must set BRDY through an I/O port. The calling routine, which would normally be a directory program, places the values for which sector, number of sectors, etc., in the CBL. The disk routine is called and the address of this structure is passed on the stack. The disk driver places these parameters in the 82064's Task registers and initiates a command. 8-69 AP-402 APPENDIX A ST506 INTERFACE The encoding rules for MFM are fairly simple: 1. A clock bit is written when the previous and the current bit cell does not contain a data bit. 2. A data bit is written whenever there is a "one" from the user. THE 5T506 INTERFACE The ST506 interface is a modified version of Shugarts floppy disk drive interface and has been promoted by Seagate Technology. This interface is intended to be easy and low in cost to implement, yet provide a medium level of performance. The interface rigidly defines several areas: the hardware interconnects, the data transfer rate, the data encoding method, and how the disk is formatted. Sync fields are composed of zeroes which generates a series of clock bits in the bit cell's. A phase lock loop locks on to the data stream during this period and generates a signal of the proper phase and frequency which is used to decode the combined clock and data serial data stream. Data Transfer Rate The data transfer rate depends upon the linear bit density of the disk media and the speed at which the disk spins. ST506 specifies a 5 Mbit/second transfer rate. The typical ST506 drive has a nominal linear density of 10,416 bytes and a disk speed of 3600 rpm, which yields a 5 Mbit/second data transfer rate. No deviation from 5 Mlbits second is allowed. Disk Format All disk media must be written with a specified format so that data may be reliably stored and retrieved. The smallest unit of controller accessible data is the sector which typically contains sync fields, ID fields, and a data field, and buffer fields. Increasing the linear density to increase storage capacity would require a decrease in disk speed. Otherwise, the data rate would increase. This decrease in disk speed would cause access times to increase, which many would deem unacceptable. To increase storage capacity, and remain ST506 compatible, either the number of cylinders and/or the number of platters can increase. The format of the disk required by ST506 is shown in Figure A-2. It should be noted that this format is fixed in the 82064. The user has options only for GAPI and 3 length (when changing sector size or EeC) and whether to have 82064 eRe checking or user supplied Eee syndrome bits. Gap 1 - Index Gap Data Encoding Gap I serves two purposes. The first is to allow for variations in the index pulse timing due to motor speed variations. The second purpose is to allow a small delay to permit a different head to be selected without missing a sector. This is more of a data transfer optimization function and requires the disk controller to know which head is to be selected, when the last sector of a track has been read, and the next logical sector in the file exists on another platter. The 82064 does not switch heads automatically. Whether this scheme can be used or not depends upon the /A-P being able to alter one register in the 82064, before the next sector passes beneath the heads. ST506 requires that the serial data, sent between the drive and the controller, be encoded according to MFM rules. The basic unit of storage is a bit cell, which stores one bit information. This bit cell is divided into two halves, consisting of a clock bit and a data bit (see Figure A-I). CLOCK BIT I DATA BIT CLOCK BIT I DATA BIT This gap is typically 12 bytes long and is written by the 82064 as 4E Hex. THIS WOULD EQUAL A USER 0 THIS WOULD EQUAL A USER 1 231927-26 FigureA-1 8-70 infef AP-402 '4E' H and is about 320 bytes when CRC and 256 byte sectors are used. The 82064 writes this field only during formatting. The user has no control over the number of bytes written with the 82064. Gap 2 - Write Splice Gap This gap follows the CRC bytes of the ID field and continues up to the data field address mark. When updating a previously written sector, motor speed variations could turn on the write coil, as the head was passing over the ID field. This gap prevents this from occurring. The value written is OOH and also serves as the PLL sync field for the data field. The minimum value is determined by the "lock up" performance of the PLL. The 82064 writes sixteen bytes for this field once WG is activated. The user has no control over this field. ID Fields The controller uses ID fields to locate any individual sector. An address mark of two bytes precedes the ID field and the data field in a sector. An address mark tells the controller the nature of the upcoming information. ID fields are used by the disk controller and are not passed to the host. Gap 3 - Post Data Field Gap Sector Interleaving Gap 3 is very similar to Gap 2 as it is used as a speed tolerance buffer also. Without this gap, and with the motor speed varying slightly, it would be possible for the upcoming sector's sync field and ID field to be overwritten. This value is '4E' H and is typically 15 bytes long. The 82064's Gap 3 length is programmable. The exact value is dependent upon several factors. Refer to 82064 Format command, Software Section: General Programming Section. Sector interleaving occurs when logical sectors are in a non-sequential order, which is determined during formatting. An advantage is that there is a delay between logically sequential sectors. This delay can be used for data processing and then deciding if the next sector should be read. Without interleaving, the next sector could slip by, imposing a one revolution delay (approx. 16.7 ms). An additional benefit to this delay is that bus utilization is reduced by spreading the data transfer over a greater amount of time. The delay between sectors can be determined as follows: Gap 4 - Track Buffer Gap 1 Revolution Period Sectors/Track x (Interleave factor - 1) = Delay This gap follows the last sector on a track and is written until an index pulse is received. Its purpose is to prevent the last sector from overflowing past the index gap, and absorb track length variations when ECC is used (ECC uses more bytes than CRC). The value is ~ GAP 4 4E For the typical ST506 drive with four-way interleaving this yields 1.57 ms of delay. REPEATED FOR EACH SECTOR ~IDFIELD- I H GAP 1 14 BYTES A 0 CL E YO 1 E 4E' 00 A N LW D T S E C , C R C 1 .----DATA F I E L D - C R 3 BYTES 12 BYTES 00 00 C 2 WRITE GATE A F 1 B USER DATA C R C 1 C R 3 BYTES GAP 3 00 4E C 2 --.J 10 FIELD DATA FIELD A1 • A1 HEX WITH OA HEX CLOCK IDENT • 2LS.B. • CYLINDER HIGH FE • 1).255 CYLINDERS FF • 256-511 CYLINDERS FC • 512-767 CYLINDERS FD • 168-1023 CYLINDERS F6 • 1024-1279 CYLINDERS F7 • 1290.1535 CYLINDERS F4 • 1536-1791 CYLINDERS F5 • 1792·2047 CYLINDERS AI • AI HEX WITH OA HEX CLOCK FB • DATA ADDRESS MARK; NORMAL CLOCK USER "" DATA FIELD 128 TO 1024 BYTES HEAD. BITS 0, I, 2 • HEAD NUMBER BITS 3,4 =0 BITS 5, 6 • SECTOR SIZE BIT 7 • BAD BlOCK MARK SEC # = LOGICAL SECTOR NUMBER 231927-27 Figure A-2. Format Field 8-71 inter AP-402 HOST SYSTEM FLAT CABLE OR TWISTED PAIR 20 FEET MAXIMUM ST506 1 .. RESERVED - 2 RESERVED (HD SELECT 22'......;, 4 -WRITE GATE 6 -SEEK COMPLETE 8' -TRACK 0 10 -WRITE FAULT 12 -HEAD SELECT 20 14 RESERVED 16 -HD SELECT 2' 18 -INDEX 20 -READY 22 -STEP 24 -DRIVE SELECT 1 26 -DRIVE SELECT 2 28 -DRIVE SELECT 3 30 -DRIVE SELECT 4 32 -DIRECTION IN 34 3 .. 5 .. 7 9 .. 11 13 15 oj 17 .. 19 ~ .21 23 25 .. 27" 29 31 ... 33 V 231927-28 Figure A-3 host of certain conditions. A diagram of the 34 pin control connector is shown in Figure A-3. The disadvantage to interleaving is that file transfers take longer, which may slow down the overall system. A four-way interleaved disk will have the transfer rate reduced to an average of 1.25 Mbit/sec. The driver/receiver logic diagram is shown in Figure A-4 and the electrical characteristics are: The 82064 leaves the logical sector sequence to the user. True False Voltage 0.0 VDC to 0.4 VDC 2,5 VDC to 5.25 VDC Current . -40 mA (IOl max.) 250 /LA (IOH open) ELECTRICAL INTERFACE +5V The interface to the ST506 drive is divided into three categories and they are: 1. control signals, 2. data signals, 3. power. 220n 7438 20 FT. 74LS14 Control Signals 231927-29 The functions of the control signals are not covered in detail here. Their purpose can be found in the pin descriptions section. All control lines are digital in nature and either provide signals to the drive or inform the Figure A-4 8-72 inter AP-402 Data Signals The lines associated with the transfer of read/write data between the host and the drive are differential in nature and may not be multiplexed between drives. There is one pair of balanced lines for each read and write data line per drive and must conform to the RS-422 specification. Figure A-5 shows the receiver/transmitter combination. 20 FT. HIGH TRUE Z=105 231927-30 Figure A-5. E1A RS22 Driver/Receiver Pair Flat Ribbon or Twisted Pair 8-73 v - PI D lORD __ 7.. LS128 22MCSO -PI 5 .. 1 \lA1'!" ---14 __ 20 MCSI PI __ ~PI 4 +5V 1 1 +5V ~13 RPI 74LSI21 API _AIT 18 7 I L P1 ~+5V74508 74LS04 I ... 2 ....UDI 1 7450' 4 ~ 3 YUHl 2 UB I ... ' \lAl'!" ~IO 2 0 l! > rL ~ TTL I DELAV . LINE - p.L CLR Q _ +SV I 3 1 3 2 MAO G1 C B _ VO VI !! 745131 1 A CD .!..J .j>. +5V UA2 IRPI , iiCiii 4 I¥!- looN5I i!- UBI Q TAP~' 7 V, 4 _ ~~--~----~------+~~CGa~AA .-_ _-+-;.-5CI GaB 7 MAa , 1 PI e MAl -PI 11 MAD J ~7 PI 5 RESET PI ::) • M ' ; B 1 A I- 1 +5V V I>fc 10BCR IClIlROY CS 13 12 _ "To- Yi* I Y7 p!74S01 15 14 ~ 10 JUB3 Vi Y3 Vi ~ p..; ~UC1 Y7 ~ E _ __ ' RAMSEL 1 74LS32 3 i.'iCii1iDii - UDI f0- MA MR INTEL CORPORATION SIZE I CODE I NUMBER , B - I DATE I AUGUST 1BI6 »C -1- ->< ~m 74LS04 5.. J:"'O mm 3:z Yi~ Yivait>;-------' UA3 CI)> 0"'0. I- ~ V5~ Vi ~ 745138 C '==-----------;.~ TITLE 82064 sax .PI.. - C 2 • RPI ~~. W G1 3 __ BDRD 15 I 2 74LSI25 2 3 \lAl 1 ~ L-----++~4 -----20.. ~ 20B R2\ I~O 3 2 1 :: 2QC~ 74508 IOBCR 5 BCR 4 74LS04 6 ' ....... 2 US3 ~~ RP2 2 3 ~~~ ~ 74LS393 laD >-----"2QA :~~ A2 D3 A3 13 04Ts-- A4 AS 2016 A6 DS~ 06 "#- D7 UE3 WEce 'I"8 t--iii'" 10 DE 20 Al1 fo- t= » -a 2aD ~ UE2 (XI ~ AS lQA~ R1 k 01 22 AS A9 19 AlO ~ > 2 UCt DO 02 11 23 A7 UE12aDr 9 AD AI A2 I ~ ,j:o, o1'1) 01 2 3 MOO 33 MOl 31 I •5 M0229 MOl 27 MD425 8 MD621 1 14 D' D. D6 D7 13 12 ~ • MD7t9 lORD Dl D2 D3 :~ ~: A3 83 A4 B4 AS 74LS245 85 7 DO 17 80 '2 • MDS 23 18 AD AI :: 11 T cs I. DE d~~ ue2 T_l. a-OUTPUT 8 74LS374 ~ so 11 HDSELO HDSEl1 HDSEL2 DSELD, 1 OSEL2,3 50 12 INTEL CORPORATION 6a~ 7Q~ 8a~ 60 .,g,70 LTCH SOH ~ 30 •9 .a 'D 13 SO ~ 1Q 2a TITLE 82064SBX Oi~ UD2 S~E I CODE DATE 8 I 7 I 6 I 5 I 4 I 3 I NUMBER AUGUST 19861 2 I II 06.PAL2.DWG REV A SHEET 2 OF 4 1 231927-32 ( IOoRDY ,. aIL E1 V E3 .------ r- TRACK 000 10 ~,~~,~~ H~D~S~E~L2~_ _ _~5~c·~6_u_n A Wa6 10 ~r- ,1~~ UK1~ 3. 21 06 '2 Vun 74':'514 _ -AAA_ ~... 5...,...~r,""-,H,,,-~ ? ~ ? WR FAULT 12 D7 7406 1 £>0 2 .5 TRKOO ~ 00 13 ~ FROM UH2 INDEX ~ORO ~~:> ~N U DIR 26 DIR~ AD ViR S .... ~v ---"""""----+---"--<1 MR WR TO 26LS31/4 7407 _ 74LS04 11 ~ UD3 33 ~ p,> MINTR1 MINTRO 74LS32 aRCV --------+¥- 2 UD3 7407 31>' 7407 UD3 UD3 21>8 ~6 ---~ 4 05026 74111 UD3 OS128 DS230 INTEL CORPORATION DS332 J' 1 IL-----::-::-_ 82064 sax "A TITLE SIZE a REV A 231927-33 I 8 7 I +5V -;. 1 ~:'5k I I 5 RP3 I cl ~ +5V 96S02 DRUN 3Bl D 1 uF "'[;Olul PUP1 3 5 26LS32 f,;;------------+_~4J B - UG2 OUTD IND+ 265n. CLR 3 OUTC INDINC+ 14 INC- 15 2 I- H~-~ ~lk V INB+ OUTA INBOUTB INA+~--4_..:::..I E UL1 INA- 7 1% CI UK3 DATA 3Bl RD GATE OJ 3Bl 0 L 3B1 RO DATA -I3B1'1""""RP2 --.J ~ ~ 3 +5V 1 DP8460 ;'5k D I 4 PLL ID . ,.';: 1+~ .,A RP3 26LS31 74S151 12 D7 n. wr +5V ~14 6 t:Il ~IND lNC ~ 60n8 D.L, 12nS,ITAP C E 11 »'tJ J2 f- OUTA+~2 '" OUTA3 OUTD- 13 OUTD+ 14 B UI2 112 ~10 +12 na n WCLK 3C4 XTAL 11 A 9 ~ INB INA 6 OUTB + r-:a=- ft • OUTB- ~11;--'" • OUTC-~10;--·-" • UL2 OUTC+ r--I STB UOl 10MHz 1C8,4B8 4D5 AI ~/ INTEL CORPORATION LIT~IT~L~E~~~8-2-0-64~:S:BX:--------~ IA J I SIZE CODE NUMBER 301 B AWC 8 I- t:;b.4S0465MHz OSC, I 6 I 5 1 4 -T DATE 3 I _ AUGUST 198a 2 064EFRV,DWG i I ~ o I REV A _ .. _ _ __ _ ""~~I 4 U. 4 231927-34 inter AP-402 APPENDIX C This appendix contains a schematic of the previous design using PAL's to rel?lace the random logic. The previous design could not do DMA transfers and inserted a large delay when transferring data from buffer RAM to the system. The PAL version does do DMA transfers and buffer reads happen at full SBX bus speed. One other minor change was to replace the 500 ns delay line with a 74LS164, which is a more cost effective solution. This schematic is .only a paper design since only random logic was replaced with the PAL's. PAL Equation's PAL - Page 1: BDRDI = (IORDI • MDACK/l + (IORDI • MCSOI • MAO • MAl • MA2) + (DELAYED-READI • CLK) IF BCS (MCSOI • MAOI • MAl • MA2 • IOWR/) LTCHSDHI = + RAMSELI (MCSO • MAO • MAl * MA2) IOBRDYI (MCS11 • MAOI • MAl • MA21 • IOWR/l IOBCRI = + (MDACK/) (MCS11 • MAO • MAlI • MA21 • IOWR/l BDWRI = CSI (BCS/) (IOWR/l IF BCS (MCSO/) IF BCS CLK (MCSO/' MAO • MAlI • MA2/l + (MCSO/,' MAOI • MAl • MA2/l + (MCSOI • MAO • MAl • MA2/l + (MCSOI • MAOI • MAlI • MA2) + (MCSOI • MAO • MAlI • MA2) + (MCSOI • MAOI • MAl • MA2) + (MCSOI * MAO ,* MAl • MA2) PAL - Page 2: MINTR1/MDRQT MINTRO = COUNT = = (PIN2)· (BDWRI RSTCOUN,T = + + (INTRQ) BDRD/l • (RAMSELIl (IOBCR/l OEI = (MDACK/l CLRI = (PIN1) (IOBCR/l + + + (BCR/l (CS/l (BCR/l 8-78 a .. 3t., lORD 4 o ~ -+ Pl 10 MHZ 4AI i ri- 15 lORD QA QB QC QO QE QF A B ClR MWAIT +5V 74ls164 UDl QG QH 2C8 16 P1 7,RPljf .;4 [:;4 2 0 T- 70- o Q~ UB2 _ 3 T,- PR 6 Q ClR ~ 1 1 74508 .!L.. 2 9 74S08 RPl lK 8 UB +..5V 3 UB3 RP1 RP1 DELAYED READ L. BCS 10 22 ex> MCSO I P1 .!..J <0 20 MCSl ~Pl ,"",13 IOWRJ 7 PAL 16L8 I 19 RAMSEl ~ ~ 37 I 5 J BOWR 3 17 ClK 4 16 IOBCR 10BCR 2CB 5 15 IOBROY IOBROY 30B 6 14 CS CS 2C8,:~ca 13 lTCH SOH lTCH SOH 2A8 BORO BORO 20B,:,3ca MA2 9 11 MOACK 2CB 9 MAl I MAO MOACK E>o a 3C8 I~~------~~----INTEL CORPORATION I TITLE 82064 sex IIA REV MPST a 3ca MR B UOl Pl 8 N 12 74504 V A 6 5 4 l:o 0 8 AO-2 I I "" 7 MA2 I' "0 , MAO RESET Pl ?~ 18 Pl A 2C8 2C8 2 P1 9 P1 11 P1 BOWR RAMSEl MAl Pl B :::> 134 s----- 10 C ( 2 3 5 6 7 74504 3 231927-35 _8_ 00, J .. _w, WI r~~' --+• ---INTIIQ "" ,,e, ,., , ,., CO ,., ... ~AL 11L1 II .. I'r.'" • ,,, II II . a.. CUi , COUNT . .TCOUHT 2 ,... .. -t ~ ~ .. _~ 2OC~ U.'2QO~ I ~, ~ , --!.., ,... :~ INTRO ON wDRo WI. we, W7. WI INTRI ON IIDRQ WI, W3, _. W7' IIDROTON IIDRQ W'., W3, WI. WI AP2 _at ..... 74Lut3 13 _It _IT , _at ,• ..... _II 2c At ·AS At A' T OlE UC2 ~ Dt DO DO ' 11 ~A5"""" ~AI .S'S ":1:-A, .. ~ ~AI DT~ UI• ,*Al "ii' ~ __ ;:.c WI CO " II lIT ITllllDY 20 11 ~ 'P ~ ..!.. S II 8 DO DO " • ,• ,. ....- ,10 II A 7Iof,- ,., •idi_ ",7 ,5 50' 50 lD . UDO ... DI Dr • ........ ItDIILI ... ... .. •••. ......'MI ....... ...; :~ 6 C - OlE -2OC~ +2QO o ~~ fu- '0 10 • 7, .. ~ ~3 V - ... ... T_I, I-OUTPUT • = - IS AI =-._u .. II A' _IS , _.. un ~ 'DC~ lao • A" 2CM .. . "" • . • . . • ... ". •, , .. . 2 IQO :I.s ~~---- (J) Co 0 .. +;.~..;. IQO+~ ~A' 74LSIU lac A2 'QO~~ ~ .. 13>---It AI 4 ~ .... ~.-:- .. r, C l ~(), ,.() ~in,1 I ~ •• 'A' ....... ,8 2 3 5 II 7 lQ~ IO~ HOIIU Oi~ INTEL CORPORjATION I I 82064SBX S~E CODE NUMBER ....&... ~ 4 ------iIA TinE AUGUST 1818 REV O~ 'PAL2.DWG I A SHEET,20F 4 2 231927-36 B iOiii6'i 2Cl ~ STBRDY 11 • 5V D 2Dl CLR 2C8 BCR 74574 J13 111 211 ~ D4 DB D7 8 7408 HDBELD 2Al HDSEL1 2Al HDSEL2 lti!08 10 II~~ uK; 21 510 PULWP 39 .1 I WROATA RDCLK RD DATA AD GATE DRUN EARLY LATE 37 38 34 22 23 ~ 4C8 4C8 4C8 4Dl 4BB 4B8 '4~: Il~10 WGe .lo3 13~D!12 lC8 4A. 'D I"""'" 7 rvvv-< INDEX 20 TRACK 000 10 SEEK COMPLETE 8 I"""'" c WRITE~LTI2 UKI Ul(11~ r"""'"~ . )0 'tI READY 22 ~~~ "ji' 0I:loo o ~7 N 8 H0014 ...... Hoi 1. iiDz 4 7407 1 2 74155 lYO lY1 1ft 2Al DSEL2.3 2Al DSELD. 1 7 • UD3 7407 UD3 m30 UD3 7407 iiS3 32 5 4 iiiO 2. iiii 2. 7407 3 • UD3 A INTEL CORPORATION -----fA TITLE 82064SBX J1 NUMBER SIZE B UC3 • BCS RWC DIR IN 34 ~UI1- jW\"'".r"W\f04 UKI 2D8 2D• RWC2 7:~4 ~.r'VVY" UKI BDRO INTRa STEP 24 to l~~ 29 31 32 30 28 Ull .IV I UDI "'Ull "'Ull Ull 3 7408 4 1 7408 • ,:!08. WCLK 4B8 un Ull A INTRa • D3 M~8 WG RD WR CS INDEX BDRO TRKOO ~ AD 9 AD SC AI WR FAULT A2 11 1.2 DRDY 1. DO B2064 1. Dl WD 17 D2 RC 18 D3 RD 15 D4 RG 14 D5 DRUN 13 DB LATE 12 D7 EARLY AII-2 10 74S08 lAl rWOEN 484 74LS04 11 .. :"10 RWC 6 7 DS 21.1 24 33 27 STEP 2& DIR 25 WCLK BCR BCS 5 Dl D2 ~ BRDY +- iii DO ~ c CD g r- u- - - - - - FIFO OUTPUT CHANNEL HOSTFIFO INTERFACE I I CD N FIFO INPUT CHANNEL FIFO MODULE SLAVEFIFO INTERFACE I I ;:;: (0 I I I n !!!. ttl 0' n Qi' SFR'S' FIN I CIN IRPR IIWPR 1+--+ ... I -il~/" ~~~-~ ,f'~ ~ '" C SFR'S ITHR I OTHR SLCONI MODE SSTATI CBP ~ Ql 3 L - -r - @) l/ - t - r- @ ./ - - "',plt. ./ - @ IMMEDIATE COMMAND I I HOST DMA AND INTERRUPT REQUEST CONTROL SFR'S IMIN IMOUT I I I c: "0 "l"'" ";:" .jlo, c.n II.) '" ... , .. :110. II U '" - - - ~ ~ © SFR'S = DCON 0 SARO DCON 1 SAR 1 DAR 0 BCRO DAR 1 BCR 1 - ~ @ DMA TIMING AND CONTROL I' ;:.. .- !! I I 4'f ~~-/'. ~"~.... :: I +~--~~-~ HOLO/ A HOLD ACK ARBITRATION.. "" SFR'S .. HCON HSTAT / '. 41 r~ SFR'S FOUT I COUT ORPRIOWPR ~ CC - - - - -, ~ - .J ----------H- --- } - ~ "'t ~ .. ~O-tZ '" :-" n ::r ~1~oiJ n:::ogQ '" "'''' ~ ~ doc-- "TI '" z I r- iEi ~'::::, o III o - - - !i1iiJ ~ '1iil © 2$ - - - - - - - - - .J ~ ~ C:::lI © ~ intJ r UPI-4S2 - - - - - - - - - - - - - - - - - - - - - - - - , PSEN ALE EA RST ": "I q ;;: ------~---------~ 231428-2 Figure 1. Architectural Block Diagram (Continued) 9-3 UPI-452 TABLE OF CONTENTS Introduction Table of Contents List of Tables and Figures Pin Description Architectural Overview Introduction FIFO Buffer Interface FIFO Programmable Features Immediate Commands DMA FIFO/Slave Interface Functional Description Overview Input FIFO Channel Output FIFO Channel Immediate Commands Host & Slave Interface Special Function Registers Slave Interface Special Function Registers External Host Interface Special Function Registers FIFO Module-External Host Interface Overview Slave Interface Address Decoding Interrupts to the Host DMA Requests to the Host FIFO Module-Internal CPU Interface Overview Internal CPU Access to FIFO via Software Instructions General Purpose DMA Channels Overview Architecture DMA Special Function Registers DMA Transfer Modes External Memory DMA Latency DMA Interrupt Vectors Interrupts When DMA is Active PMA Arbitration Interrupts Overview FIFO Module Interrupts to Internal CPU Interrupt Enabling and Priority FIFO-External Host Interface FIFO DMA Freeze Mode Overview Initialization Invoking FIFO DMA Freeze Mode During Normal Operation FIFO Module Special Function Register Operation During FIFO DMA Freeze Mode Internal CPU Read & Write of the FIFO During FIFODMA Freeze Mode . Memory Organization Accessing External Memory Miscellaneous Special Function Register Descriptions 9-4 UPI-452 LIST OF TABLES AND FIGURES Figures: 1. 2. 3. 4. 5. 6. 7a. 7b. 8. 9. 10. 11. 12. Tables: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11 a. 11 b. 12. 13. Architectural Block Diagram UPI-452 68-Pin PGA Pinout Diagram UPI-452 Conceptual Block Diagram UPI-452 Functional Block Diagram Input FIFO Channel Functional Block Diagram Output FIFO Channel Functional Block Diagram Handshake Mechanisms for Handling Immediate Command IN Flowchart Handshake Mechanisms for Handling Immediate Command OUT Flowchart DMA Transfer from: External to External Memory DMA Transfer from: External to Internal Memory DMA Transfer from: Internal to External Memory DMA Transfer Waveform: Internal to Internal Memory . Disabling FIFO to Host Slave Interface Timing Diagram Input FIFO Channel Registers Output FIFO Channel Registers UPI-452 Address Decoding DMA Accessible Special Function Registers DMA Mode Control - PCON SFR Interrupt Priority Interrupt Vector Addresses Slave Bus Interface Status During FIFO DMA Freeze Mode FIFO SFR's Characteristics During FIFO DMA Freeze Mode Threshold SFRs Range of Values and Number of Bytes to be Transferred 80C51 Special Function Registers UPI-452 Additional Special Function Registers Program Status Word (PSW) PCON Special Function Register 9-5 Component Pad View-As viewed from the underside of component when mounted on the board. ." ." > :::; ."m 1; '" '" ." cO c: ~ (1) ~ c: 3! P4.4 P4.6 U1 N P4.2 P4.3 P4.0 P4.1 P2.1 P2.0 Vee/Vpp P2.2 P2.4 P2.3 P2.6 P2.5 RST P2.7 ALE/PGM PSEN Q) 0> - '(),< ..,» ~ ". ~!i6 ~I "'~I ~~ "'" ~~ x § ;;:0 ~ 0 ::001 ..... »- I:) 0 0 0 C c: -I' -I z -I ;;0 0 " CjO ::P. :J g '" " » s0" C') c: c iii CC iil 3 ® ® @) ® © ® ©© ® ® u©® ®© @@@®©@®®08 ® 085 086 DB3 OB4 ~I I:!I "0 "0 '" '" '" . "m " 0 0 .," 0 "~ " ;, " '(),< "b .," ." 0 ~ " ;;: 00 ~l :t x :: . . > :::; " " '" '" il ~~ x OBl 082 P3.7 DBO P3.6 Vee P3.4 P3.5 P3.2 P3.3 P3.0 P3.1 P1.5 P1.7 ® 084 083 © 082 081 080 P3.7 Vee P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P1.7 P1.5 r r '"'" '"'" » " '" '" " m ". / oc: ~, 0 ®®®®®®®®®® ®© ® ® ®® 085 086 @@@@8eeeG ;g il .... 0 ®®®®@®®®®® ® ©® ® @ ®® ® ® ®@ ®© ®® '" 9 ~ z ...... " I<: ~I 1h1 ..,» » > '" '" @@®@@@@@l@ g @@l@@@@@@@ J,.. cp x l P.C. Board View-As viewed from the component side of the P.C. board. ® ® ® ® ® ® ~ 'iiiJ © 2.eJ ~ .:'"'" '".!..00 ~ ~ = © 00 ---- - _. ~ UPI-4S2 P.C. Board View-As Viewed from the Component Side of the P.C. Board (Underside of Socket) . .'" . . '". .. ... 0 0.. 0.. 0.. 0.. 0.. ID 0.. P4.5 P4.6 P4.7 XTALl XTAL2 AO Al A2 vss cs DACK READ DROOUT/ INTROOUT INTRO WRITE DROIN/ INTROIN DB7 DB5 ::::JE "- 0:: '" ...'"-' N N '" N N " N 0.. I~ "- > N 0.. 0.. i:;,,: ID >u 0.. '" 0.. I- N 0 ('oj III 0.. 0.. 0.. "- (f) 0.. @@@@@@@@@ @@®®@@@@@@@ @@ @@ @@ @@ @@ @@ PSEN EA PO.7 PO.6 PO.5 POA PO.3 PO.2 @® PO.l vss @@ @0 @@ @@ @§ 00 @@@@@@@@®00 PO.O Pl.0 P1.1 Pl.2 ®@ €H9€)€)@@@@@ III ID Cl ID ID Cl 68 67 66 a; ,.; Cl " '" ... ID ID Cl Cl Cl ID Cl ID 65 64 ('oj 63 0.. U U 0 62 ... '" 0.. 0.. 0.. > III • '",.; ,.; ": 61 60 0.. '" 59 58 57 56 0.. 55 54 53 52 51 50 49 48 47 46 45 1 2 3 4 5 6 7 8 9 68 LEAD PLCC 10 44 43 42 41 40 39 38 37 36 35 TOP VIEW 11 12 13 14 15 16 17 18 20 19 22 21 24 23 26 25 28 27 P1.6 0.. 0.. 0.. Pl.4 Pl.5 ~ PIN NO.1 MARK ID 0 ,.; ,.; ,.; ,.; If! 0.. P1.3 30 29 32 31 34 33 Figure 2A. UPI 452 58-Pin PLCC Pinout Diagram 9-7 231428-32 inter UPI-4S2 UPI MICROCONTROLLER FAMILY The UPI-452 joins the current members of the UP! microcontroller family. UPI's are derivatives of the MCSTM family of microcontrollers. Because of their on-chip system bus interface, UPI's are designed to be system bus "slaves", while their microcontroller counterparts are intended as system bus "masters". These UPI Microcontrollers are fully supported by Intel's development tools (ICE, ASM and PLM). Packaging The 80C452/83C452 is available in either a 68-pin PGA (Pin Grid Array) or 68-pin PLCC package. UPIFamlly (Slave Configuration) MCSFamlly (Master Configuration) 80C452 80C51 12 MHz 256 - 83C452 80C51 12MHz 256 8K 80C452-1 80C51 14 MHz 256 - 83C452-1 80C51 14 MHz 256 8K Speed RAM (Bytes) ROM (Bytes) UPI-4S2 PIN DESCRIPTIONS Pin # 9/43 60 Type I I XTAL1 38 I XTAL2 Port 0 (ADO-AD7) PO.O .1 .2 .3 .4 .5 .6 PO.7 39 Symbol Vss Vee 0 1/0 8 10 11 12 13 14 15 16 Name and Function Circuit Ground. + 5V power supply during normal and idle mode operation. It is also the standby power pin for power down mode. Input to the oscillator's high gain amplifier. A crystal or external source can be used. Output from the.high gain amplifier. Port 0 is an 8-bit open drain bi-directional 1/0 port. Port 0 can sink eight LS TTL inputs. It is also the multiplexed low-order address and data local expansion bus during accesses to external memory. UPI-452 UPI-4S2 PIN DESCRIPTIONS (Continued) Symbol Port 1 Pin # Type 1/0 Name and Function Port 1 is an B-bit quasi-bi-directionaII/O port. Port 1 can sink four LS TTL inputs. The alternate functions can only be activated if the corresponding bit latch in the port SFR contains a 1. Otherwise, the port pin is stuck at O. Pins P1.5 and P1.6 are multiplexed with HLD and HLDA respectively whose functions are defined as below: Port Pin Alternate Function P1.5 HLD -Local bus hold input! output signal P1.6 HLDA -Local bus hold acknowledge input 1/0 Port 2 is an B-bit quasi-bi-directionaII/O port. It also emits the highorder B bits of address when accessing local expansion bus external memory. Port 2 can sink four LS TTL inputs. 1/0 Port 3 is an B-bit quasi-bi-directionaII/O port. It is also multiplexed with the interrupt, timer, local serial channel, RDI and WRI functions that are used by various options. The alternate functions can only be activated if the corresponding bit latch in the port SFR contains a 1. Otherwise, the port pin is stuck at O. Port 3 can sink four LS TTL inputs. The alternate functions assigned to the pins of Port 3 are as follows: Alternate Function Port Pin P3.0 RxD - Serial input port P3.1 TxD - Serial output port P3.2 INTO -Interrupt 0 Input INT1 - Interrupt 1 Input P3.3 TO - Input to counter 0 P3.4 P3.5 T1 - Input to counter 1 - The write control signal latches the P3.6 WRI data from Port 0 outputs into the External Data Memory on the local bus. P3.7 RDI - The read control signal latches the data from Port 0 outputs on the local bus. (AO-A~ (HLD, HLDA) P1.0 .1 .2 .3 .4 .5 .6 P1.7 Port 2 (AB-A15) P2.0 .1 .2 .3 .4 .5 .6 .7 Port 3 P3.0 .1 .2 .3 .4 .5 .6 P3.7 7 6 5 4 3 2 1 6B 29 2B 27 25 24 23 22 21 67 66 65 64 63 62 61 59 9-9 inter UPI-4S2 ' UPI-4S2 PIN DESCRIPTIONS (Continued) Pin # Symbol Port 4 P4.0 .1 .2 .3 .4 .5 .6 .7 RST Type I/O 30 32 33 34 35 36 37 20 I 18 0 19 0 EA 17 I DBO DB1 DB2 DB3 DB4 DB5 DB6 DB7 CS AO A1 A2 58 57 56 55 54 53 52 51 44 40 41 42 I/O READ 46 I WRITE 47 I DRQIN/ INTRQIN 49 0 DRQOUT/ INTRQOUT 48 0 ALE PSEN , I I Name and Function Port 4 is an·8-bitquasi-bi-directionall/O port. Port 4 can sink/ source four'TTL inputs. A high level on this pin for two machine cycles while the oscillator is running resets the device. An internal pulldown resistor permits Power-on reset using only a capacitor connected to Vee. This pin does not receive the power dqwn voltage as is the case for HMOS MCS-51 family members. This function has been transferred to the Vee pin. Provides Address Latch Enable output used for latching the address into external memory during normal operation. ALE can sink/source eight LS TIL inputs. The Program Store Enable output is a control signal that enables the external Program Memory to the bus during normal fetch operation. PSEN can sink/source eight LS TIL inputs. When held at TIL high level, the UPI-452 executes instructions from the internal ROM when the PC is less than 8192 (8K, 2000H). When held at a TIL low level, the UPI-452 fetches all instructions from external Program Memory. Host Bus Interface is an 8-bit bi-directional bus. It is used to transfer data and commands between the UPI-452 and the host processor. This bus can sink/source eight LS TIL inputs. This pin is the Chip Select of the UPI-452. These three address lines are used to interface with the host system. They define the UPI-452 operations. The interface is' compatible with the Intel microprocessors and the MULTIBUS. This pin is the read strobe from the host CPU. Activating this pin causes the UPI-452 to place the contents of the Output FIFO (either a command or data) or the Host Status/Control Special Function Register on the Slave Data Bus. This pin is the write strobe from the host. Activating this pin will cause the value on the Slave Data Bus to be written into the register specified by AO-A2. This pin requests an input transfer from the host system whenever the Input Channel requires data. This output pin requests an output transfer whenever the Output Channel requires service. If the external host to UPI"452 DMA is enabled, and a Data Stream Command is at the Output FIFO, DRQOUT is deactivated and INTRQ is activated (see 'GENERAL PURPOSE DMA CHANNELS'section). 9-10 intJ UPI-4S2 UPI-4S2 PIN DESCRIPTIONS (Continued) Pin # Type INTRQ 50 0 This output pin is used to interrupt the host processor when an Immediate Command Out or an error condition is encountered. It is also used to interrupt the host processor when the FIFO requests service if the DMA is disabled and INTRQIN and INTRQOUT are not used. DACK 45 I This pin is the DMA acknowledge for the host bus interface Input and Output Channels. When activated, a write command will cause the data on the Slave Data Bus to be written as data to the Input Channel (to the Input FIFO). A read command will cause the Output Channel to output data (from the Output FIFO) on to the Slave Data Bus. This pin should be driven high (+ 5V) in systems which do not have a DMA controller (see Address Decoding). Vee 26 I + 5V power supply during operation. Symbol Name and Function scription of the UPI-452's core CPU functional blocks including; ARCHITECTURAL OVERVIEW - Introduction Timers/Counters -I/O Ports - Interrupt timirig and control (other than FIFO and DMA interrupts) The UPI-452 slave microcontroller incorporates an 80C51 with double the program and data memory, a slave interface which allows it to be connected directly to the host system bus as a peripheral, a FIFO buffer module, a two channel DMA processor, and a fifth I/O port (Figure 3). The UPI-452 retains all of the 80C51 architecture, and is fully compatible with the MCS-51 instruction set. - The Special Function Register (SFR) interface concept introduced in the MCS-51 family of microcontrollers has been expanded in the UPI-452. To the 20 Special Function Registers of the MCS-51, the UPI-452 adds 34 more. These additional Special Function Registers, like those of the MCS-51, provide access to the UPI-452 functional elements including the FIFO, DMA and added interrupt capabilities. Several of the 80C51 core Special Function Registers have also been expanded to support added features of the UPI-452. Serial Channel - Local Expansion Bus - Program/Data Memory structure - Power-Saving tylodes of Operation - CHMOS Features - Instruction Set Figure 3 contains a conceptual block diagram of the UPI-452. Figure 4 provides a functional block diagram. FIFO Buffer Interface A unique feature of the UPI-452 is the incorporation of a 128 byte FIFO array at the host-slave interface. The FIFO allows asynchronous bi-directional trans~ fers between the host CPU and the internal CPU. This data sheet describes the unique features of the UPI-452. Refer to the 80C51 data sheet for a de- 231426-7 Figure 3. UPI-452 Conceptual Block Diagram 9-11 intJ UPI-452 ADDITIONAL FEATURES: I -SERIAL CHANNEL I -EXTERNAL INTERRUPTS : -HLD/HLDACK -LOCAL EXPANSION BUS -RD -WR --EXTERNAL COUNTER INPUT -EPROM PROGRAM AND VERIFY CONTROL ... ----------- .. 231428-8 Figure 4. UPI·452 Functional Block Diagram nel Boundary Pointer (CBP) SFR. This register contains the number of address locations assigned to the Input channel. The remaining address locations are automatically assigned to the Output FIFO. The CBP SFR can only be programmed by the internal CPU during FIFO DMA Freeze Mode (See FIFO-External Host Interface FIFO DMA Freeze Mode description). The CBP is initialized to 40H (64 bytes) upon reset. The division of the 128 bytes between Input and Output channels is user programmable allowing maximum flexibility. If the entire 128 byte FIFO is allocated to the Input channel, a high performance Host can transfer up to 128 bytes at one time, then dedicate its resources to other functions while the internal CPU processes the data in the FIFO. Various handshake signals allow the external Host to operate independently and without frequent monitoring of the UPI-452 internal CPU. The FIFO Buffer insures that the slave processor receives data in the same order that it was sent by the host without the need to keep track of addresses. Three slave bus interface handshake methods are supported by the UPI-452: DMA, Interrupt and Polled. The number in the Channel Boundary Pointer SFR is actually -the first address location of the Output FIFO. Writing to the CBP SFR reassigns the Input and Output FIFO address space. Whenever the CBP is written, the Input FIFO pointers are reset to zero and the Output FIFO pointers are set to the value in theCBP SFR. - The FIFO is nine bits wide. The ninth bit acts as a command/data flag ..Commands written to the FIFO by either the host or internal CPU are called Data Stream Commands or DSCs. DSCs are written to the input FIFO by the Host via a unique external address. DSCs are written to the output FIFO by the internal CPU via the COMMAND OUT Special Function Register (SFR). When encountered by the host or internal CPU a Data Stream Command can -be used as an address vector to user defined service routines. DSCs provide synchronization of data and commands between the Host and internal CPU. Ali of the FIFO space may be assigned to one channel. In such a situation the other channel's data path consists of a single SFR (FIFO IN/COMMAND IN or FIFO OUT/COMMAND OUT SFR) location. CBP Register 0 1 2 3 4 Input FIFO Size 1 1 2 3 4 7B 7C 7D 7E 7F 123 124 125 128 128 • FIFO PROGRAMMABLE FEATURES Size of Input/Output Channels The 128 bytes of FIFO space can be allocated between the Input and Output channels via the Chan9-12 • Output FIFO Size 128 128 126 125 124 . 5 4 3 1 1 . UPI-452 of the three writeable memory spaces: Internal Data Memory, External Load Expansion Bus Data Memory and the Special Function Register array. The Special Function Register array appears as a set of unique dedicated memory addresses which may be used as either the source or destination address of a DMA transfer. Each DMA channel is independently programmable via dedicated Special Function Registers for mode, source and destination addresses, and byte count to be transferred. Each DMA channel has four programmable modes: FIFO Read/Write Pointers These normally operate in auto-increment (and autorollover) mode, but can be reassigned by the internal CPU during FIFO DMA Freeze Mode (See FIFO-External Host Interface FIFO DMA Freeze Mode description). Threshold Register The Input FIFO Threshold SFR contains the number of empty bytes that must be available in the Input FIFO to generate a Host interrupt. The Output FIFO Threshold SFR contains the number of bytes,. data and/or DSC(s), that must be in the FIFO before an interrupt is generated. The Threshold feature prevents the Host from being interrupted each time the FIFO needs to load or unload one byte of data. The thresholds, therefore, allow the FIFO's operation to be adjusted to the speed of the Host, optimizing the overall interface performance. - Alternate Cycle Mode - Burst Mode - FIFO or Serial Channel Demand Mode - External Demand Mode A complete description of each mode and DMA operation may be found in the section titled "General Purpose DMA Channels". FIFO/SLAVE INTERFACE FUNCTIONAL DESCRIPTION Immediate Commands The UPI-452 provides, in addition to data and DSCs, a third direct means of communication between the external Host and internal CPU called Immediate Commands. As the name implies, an Immediate Command is available to the receiving CPU immediately, via an interrupt, without being entered into the FIFO as are Data Stream Commands. Like Data Stream Commands, Immediate Commands are written either via a unique external address by the host CPU, or via dedicated SFR by the internal CPU. Overview The FIFO is a 128 Byte RAM array with recirculating pointers to manage the read and write accesses. The FIFO consists of an Input and an Output channel. Access cycles to the FIFO by the internal CPU and external Host are interleaved and appear to be occurring concurrently to both the internal CPU and external Host. Interleaving access cycles ensures efficient use of this shared resource. The internal CPU accesses the FIFO in the same way it would access any of the Special Function Registers e.g., direct and register indirect addressing as well as arithmetric and logical instructions. The DSC and/or Immediate Command interface may be defined as either Interrupt or Polled under user program control via the Interrupt Enable (IE), Slave Control Register (SLCON), and Interrupt Enable Priority (IEP) Special Function Registers, for the internal CPU and via the Host Control SFR for the external Host CPU. Input FIFO Channel DMA The UPI-452 contains a two channel internal DMA controller which allows transfer of data between any . The Input FIFO Channel provides for data transfer from the external Host to the internal CPU (Figure 5). The registers associaied with the Input Channel during normal operation are listed in Table 1'. Table 1. Input FIFO Channel Registers' 1) 2) 3) 4) 5) 6) Register Name Description Input Buffer Latch FIFO INSFR COMMAND IN SFR Input FIFO Read Poil)ter SFR Input FIFO Write Pointer SFR Input FIFO Threshold SFR Host CPU Write only Internal CPU Read only Internal CPU Read only Internal CPU Read only Internal CPU Read only Internal CPU Read only 'See "'FIFO-EXTERNAL HOST INTERFACE FIFO DMA FREEZE MODE" section for FIFO DMA Freeze Mode SFR characteristics descnptlon. 9-13 inter UPI-452 EXTERNAL HOST CPU EXTERNAL ADDRESS HOST DATA BUS INPUT WRITE POINTER (IWPR) !:: In THRESHOLD SFR (ITHR) INPUT FIFO :J: I- Z Z INPUT READ POINTER (IRPR) INTERNAL BUS TO INTERRUPT LOGIC 231428-9 Figure 5. Input FIFO Channel Functional Block Diagram The host CPU writes data and Data Stream Com· mands into the Input Buffer Latch on the rising edge of the external WR signal. External addressing de· termines whether the byte is a data byte or Data Stream Command and the FIFO logic sets the ninth bit of the FIFO accordingly as the byte is moved from the Input Buffer Latch into the FIFO. A "1" in the ninth bit indicates that the incoming byte is a Data Stream Command. The internal CPU reads data bytes via the FIFO IN SFR, and Data Stream Commands via the COMMAND IN SFR. The Input FIFO Channel addressing is controlled by the Input FIFO Read and Write Pointer SFRs. These SFRs are read only registers during normal operation. However, during FIFO DMA Freeze Mode (See FIFO-External Host Interface FIFO DMA Freeze Mode description), the internal CPU has write access to them. Any write to these registers in normal mode will have no effect. The 'Input Write Pointer SFR contains the address location to which datal commands are written from the Input Buffer Latch. The write pointer is automatically incremented after each write and is reset to zero'if equal to the CBP, as the Input FIFO operates as a circular buffer. A Data Stream Commarid will generate an interrupt to the internal CPU prior to being read and after completion of the previous operation. The DSC can then be read via the COMMAND IN SFR. Data can only be read via the FIFO IN SFR and Data Stream Commands via the COMMAND IN SFR. Attempting to read Data Stream Commands as data by address· ing the FIFO IN SFR will result in "OFFH" being read, and the Input FIFO Read Pointer will remain intact (This prevents accidental misreading of Data Stream Commands.) Attempting to read data as Data Stream Commands will have the same consequence. If a write is performed on an empty FIFO, the first byte is also written into the FIFO IN or COMMAND IN SFR. If the Host continues writing while the Input FIFO is full, an external interrupt, if enabled, is sent to the host to signal the overrun condition. The writes are ignored by the FIFO control logic. Similarly, an internal CPU read of an empty FIFO will cause an underrun error interrupt to be generated to the internal CPU and a value of "OFFH" will be read by the, internal CPU. 9-14 inter UPI-4S2 number of bytes assigned to the Input FIFO (CBP) minus the number of bytes programmed in the Input FIFO Threshold SFR. With this feature the Host is assured that it can write at least a threshold number of bytes to the Input FIFO channel without worrying about an overrun condition. Once the Request for Service is generated it remains active until the Input FIFO becomes full. The Read Pointer SFR holds the address of the next byte to be read from the Input FIFO. An Input FIFO read operation post-increments the Input Read Pointer SFR and loads a new data byte into the FIFO IN SFR or a Data Stream Command into the COMMAND IN SFR at the end of the read cycle. An Input FIFO Request for Service (via DMA, Interrupt or a flag) is generated to the Host whenever more data can be written into the Input FIFO. For efficient utilization of the Host, a "threshold" value can be programmed into the Input FIFO Threshold SFR. The range of values of the Input FIFO Threshold SFR can be from 0 to (CBP-3). The Request for Service Interrupt is generated only after the Input FIFO has room to accommodate a threshold number of bytes or more. The threshold is equal to the total Output FIFO Channel The Output FIFO Channel provides data transfer from the UPI-452 internal CPU to the external Host (Figure 6). The registers associated with the Output Channel during normal operation are listed in Table 2*. 231428-10 Figure 6. Output FIFO Channel Functional Block Diagram Table 2. Output FIFO Channel Registers 1) 2) 3) 4) 5) 6) Register Name Description Output Buffer Latch FIFOOUTSFR COMMAND OUT SFR Output FIFO Read Pointer SFR Output FIFO Write Pointer SFR Output FIFO Threshold SFR Host CPU Read only Internal CPU Read and Write Internal CPU Read and Write Internal CPU Read only Internal CPU Read only Internal CPU Read only 'See "FIFO·EXTERNAL HOST INTERFACE FIFO DMA FREEZE MODE" section for FIFO DMA Freeze Mode register characteristics description. 9-15 intJ UPI·452 The UPI-452 internal CPU transfers data to the Output FIFO via the FIFO OUTSFR and cornmands via the COMMAND. OUT SFR. If the byte is written to the COMMAND OUT SFR, the ninth bit is automatically set (= 1) to indicate a Data Stream Command. If the byte is written to the FIFO OUT SFR the ninth bit is cleared (= 0). Thus the FIFO OUT and COMMAND OUT SFRs are the same but the address determines whether the byte entered in the FIFO is a DSC or data byte. 2.) The second type of Request for Service is called "Flush Mode" and occurs when the internal CPU writes a Data Stream Command into the Output FIFO. Its purpose is to ensure that a data block entered into the Output FIFO, which is less than the programmed threshold, will generate a Request for Service interrupt, if enabled, and be read, or "Flushed" from the Output FIFO, by the external host CPU regardless of the status of the OTHR SFR. The Output FIFO preloads a byte into .the Output ,Buffer Latch. When the Host Issues a RDI signal, the data is immediately read from the Output Buffer Latch. The next data byte is then loaded into the Output Buffer Latch, aflag is set and an interrupt, if enabled, is generated if the byte is a DSC (ninth bit is set). The operation is carefully timed such that an interrupt can be generated in time for it to be recognized by the Host before its next read instruction. Internal CPU write and external Host read operations are interleaved at the FIFO so that they appear to be occurring concurrently. Immediate Commands Immediate Commands provide direct communication between the external Host and UPI-452. Unlike Data Stream Commands which are entered into the FIFO, the Immediate Command is available to the· receiving CPU directly, bypassing the FIFO. The Immediate Command can serve as a program vector pointing into a jump table in the recipients software. Immediate Command Interrupts are generated, if enabled, and a bit in the appropriate Status Register is set when an Immediate Command is input or output. A similar bit is provided to acknowledge when an Immediate Command has been read and whether the register is available to receive another command. The bits are reset when the Immediate Com" mands are read. Two Special Function Registers are dedicated to the Immediate Command interface. External addressing determines whether the Host is accessing the Input FIFO or the Immediate Command IN (IMIN) SFR. The internal CPU writes Immediate Commands to the Immediate Command OUT (IMOUT) SFR. The Output FIFO read and write pointer operation is the same as for the Input Channel. Writing to the FIFO OUT or COMMAND OUT SFRs will increment the Output Write Pointer SFR but reading from it will leave the write pointer unchanged. A rollover of the Output FIFO Write Pointer causes the pOinter to be reset to the value in the Channel Boundary Pointer (CBP) SFR. If the external host attempts to read a Data Stream Command as a data byte it will result in invalid data (OFFH) being read. The DSC is not lost because the invalid read does not increment the pointer. Similarly attempting to read a data byte as a Data Stream Command has the same result. Both processors have the ability to enable or disable Immediate Command Interrupts. By disabling the interrupt, the recipient of the Immediate Command can poll the status SFR and read the Immediate Command at its convenience. Immediate Com" mands should only be written when the appropriate Immediate Command SFR is empty (as indicated in the appropriate status SFR:HSTAT ISST AT). Similarly, the Immediate Command SFR should only be read when there is data in the Register. A Request for Service is generated to the external Host under the following two conditions: 1.) Whenever the internal CPU has written a threshold number of bytes or more into the Output FIFO (threshold = (OTHR) + 1). The threshold number should be chosen such that the bus latency time for the external. Host does not result in a FIFO overrun error condition on the internal CPU side. The threshold limit should be large enough to make a bus request by the UPI-452 to the external host CPU worthwhile. Once a request for service is generated, the request remains active until the Output FIFO becomes empty. The range of values of the FIFO Output Threshold (OTHR) SFR is from 2 to {(80H-CBP)-1l. The threshold number can be programmed via the OTHR SFR. The flowcharts in Figure 7a and 7b illustrate the proper handshake mechanisms between the external Host and internal CPU when handling Immediate Commands. 9-16 inter UPI~452 SET SET Q \V , ... oil GENERATES INTERRUPT TO INTE,RNAL CPU GENERATES INTERRU~T TO HOST , , ,, ) ) SET SET Q \V , 'lit lit , GENERATES INTERRU~T TO HOST _________________ 4 GENERATES INTERRUPT TO INTE,RNAL CPU ,, ,, 231428-11 231428-12 Figure 7a. Handshake Mechanisms for Handling Immediate Command IN Flowchart Figure 7b. Handshake Mechanisms for Handling Immediate Command OUT Flowchart 9-17 inter UPI-452 HOST & SLAVE INTERFACE SPECIAL FUNCTION REGISTERS Slave Interface Special Function Registers The Internal CPU interfaces with the FIFO slave module via the following registers: 1) Mode Special Function Register (MODE) 2) Sla"e Control Special Function Register (SLCON) 3) Slave Status Special Function Register (SSTAT) Each register resides in the SFR Array and is accessible via all direct addressing modes except bit. Only the Slave Control Register (SLCON) is bit addressable. 1) MODE Special Function Register (MODE) The MODE SFR provides the primary control of the external host-FIFO interface. It is included in the SFR Array so that the internal CPU can configure the external host-FIFO interface should the user decide that the UPI-452 slave initialize itself independent of the external host CPU. The MODE SFR can be directly modified by the internal CPU through direct address instructions. It can also be indirectly modified by the external host CPU by setting up a MODE SFR service routine in the UPI-452 program memory and having the host issue a Command, either Immediate or DSC, to vector to that routine. Symbolic Physical Address Address MODE MD6 MD5 MD4 OF9H (MSB) Status On Reset l' MD7 MD6 o (LSB) , o o l' 1* 1* l' (reserved)" Request for Service to external CPU via; 1 = DMA (DRQIN/DRQOUT) request to external host when the Input or Output FIFO channel requests service o= Interrupt (INTRQIN/INTRQOUT or INTRQ) to external host when the Input or Output FIFO channel requests service or a DSC is encountered in the I/O Buffer Latch MD5 Configure DRQIN/INTRQIN and DRQOUT /INTRQOUT to be either; 1 = Enable (Actively driven) MD4 Configure INTRQ to be either; o= 1 Disable (Tri-state) = Enable (Actively driven) o= MD3 Disable (Tri-state) (reserved)" MD2 (reserved)" MD1 (reserved)" MDO (reserved)'* 2) Slave Control SFR (SLCON) The Slave Control SFR is used to configure the FIFO-internal CPU interface. All interrupts are to the internal CPU. 9-18 intJ UPI-452 Physical Address Symbolic Address SLCON IFI OFI ICII FRZ ICOI IFRS (MSB) Status On Reset: 0 IFI 0 OFRS OEBH (LSB) 0 0 0 l' 0 0 Enable Input FIFO Interrupt (due to Underrun Error Condition, Data Stream Command or Request Service) OFI ICII ICOI FRZ SC2 1 = Enable 0= Disable Enable Output FIFO Interrupt (due to Overrun Error Condition or Request Service) 1 = Enable 0= Disable Note: If the DMA is configured to service a FIFO demand, then the Request for Service Interrupt is not generated. Generate Interrupt when a command is written to the Immediate Command in Register 1 = Enable 0= Disable Generate Interrupt when Immediate Command Out Register is Available 1 = Enable 0= Disable Enable FIFO DMA Freeze Mode 1 = Normal operation o = FIFO DMA Freeze Mode (reserved) ,. IFRS Input FIFO Channel Request for Service 1 = Request when Input FIFO not empty OFRS Output FIFO Channel Request for Service o= 1 Request when Input FIFO full = Request when Output FIFO not full o= Channel Request when Output FIFO empty NOTES: *A '1' will be read from all SFR reserved locations except HCON SFR, HCO and HC2. '*'reserved'-these locations are reserved for future use by Intel Corporation. 3) Slave Status SFR (SST AT) The bits in the Slave Status SFR reflect the status of the FIFO-internal CPU interface. It can be read during an internal interrupt service routine to determine the nature of the interrupt or read during a polling sequence to determine a course of action. Symbolic Address Physical Address SSTAT OE9H o o o (MSB) (LSB) 9-19 UPI-4S2 SST? Output FIFO Overrun Error Condition 1 = No Error o= SST6 Error (latched until Slave Status SFR is read) Immediate Command Out Register Status 1 = Full (i.e. Host CPU has not read previous Immediate Command Out sent by internal CPU) 0= Available SST5 FIFO DMA Freeze Mode Status 1 = Normal Operation o= SST4 FIFO DMA Freeze Mode in Progress Output FIFO Request for Service Flag 1 = Output FIFO does not request service o= SST3 o= SST2 Immediate Command received from host CPU Data Stream Command/Data at Input FIFO Flag 1 = Data (not DSC) o= SSTO Underrun Error (latched until Slave Status SFR is read) Immediate Command In SFR Status 1 = Empty o= SST1 Output FIFO requests service Input FIFO Underrun Error Condition Flag 1 = No Underrun Error DSC (at COMMAND IN SFR) Input FIFO Request For Service Flag 1 = Input FIFO Does Not Request Service o= Input FIFO Request for Service EXTERNAL HOST INTERFACE SPECIAL FUNCTION REGISTERS The external host CPU has direct access to the following SFRs: 1) Host Control Special Function Register 2) Host Status Special Function Register It can also access other SFRs by commanding the internal CPU to change them accordingly via Data Stream Commands or Immediate Commands. The protocol for implementing this is entirely determined by the user. 1) Host Control SFR (HCON) By writing to the Host Control SFR, the host can enable or disable FIFO interrupts and DMA requests and can reset the UPI-452. Symbolic Address HCON Physical Address HC? HC6 HC5 HC4 HC3 HC1 (MSB) Status On Reset: 0 0 OE?H (LSB) 0 0 0 9-20 O' 0 O' inter UPI·452 HC? Enable Output FIFO Interrupt due to Underrun Error Condition, Data Stream Command or Service Request 1 = Enable 0= Disable HC6 Enable Input FIFO Interrupt due to Overrun Error Condition, or Service Request 1 = Enable 0= Disable HC5 Enable the generation of the Interrupt due to Immediate Command Out being present = Enable 0= Disable Enable the Interrupt due to the Immediate Command In Register being Available for a new Immediate Command byte 1 = Enable 0= Disable Reset UPI-452 1 = Software RESET o = Normal Operation (reserved)" Select between INTRQ and INTRQINIINTRQOUT as Request for Service interrupt signal when DMA is disabled 1 = INTRQ o = INTRQIN or INTRQOUT (reserved)" 1 HC4 HC3 HC2 HC1 HCO NOTES: • A '1' will be read from all SFR reserved locations except HCON SFR, HCO and HC2. "'reserved'-these locations are reserved for future use by Intel Corporation. 2) Host Status SFR (HST AT) The Host Status SFR provides information on the FIFO-Host Interface and can be used to determine the source of an external interrupt during pOlling. Like the Slave Status SFR, the Host Status SFR reflects the current status of the FIFO-external host interface. Symbolic Address Physical Address HSTAT OE6H 1/0' (MSB) (LSB) 9-21 intJ UPI-4S2 HST7 Output FIFO Underrun Error Condition 1 = No Underrun Error o = Underrun Error (latched until Host Status Register is read) FIFO MODULE - EXTERNAL HOST INTERFACE Overview HST6 Immediate Command Out SFR Status 1 = Empty o = .immediate Command Present The FIFO-external Host interface supports high speed asynchronous bi-directional 8-bit data transfers. The host interface is fully compatible with Intel microprocessor local busses and with MULTIBUS. The FIFO has two specialized DMA request pins for Input and Output FIFO channel DMA requests. These are multiplexed to provide a dedicated Request for Service interrupt (DRQIN/INTRQIN, DRQOUT /INTRQOUT). HST5 Data Stream Command/Data at Output FIFO Status 1 = Data (not DSC) o = DSC (present at Output FIFO COMMAND OUT SFR) (Note: Only if HST4 = 0, if HST4 = 1 then undetermined) The external Host can program, under user defined protocol, thresholds into the FIFO Input and Output Threshold SFRs which determine when the FIFO Request for Service interrupt is generated to the Host CPU. The FIFO module external Host interface is configured by the internal CPU via the MODE SFR. "The external Host can enable and disable Host interface interrupts via the Host Control SFR." Data Stream Commands in the Input FIFO channel allow the Host to influence the processing of data blocks and are sent with the data flow to maintain synchronization. Data Stream Commands in the Output FIFO Channel allow the internal CPU to perform the same function, and also to set the Output FIFO Request Service status logic to the host CPU regardless of the programmed value in the Threshold SFR . HST4 Output FIFO Request for Service Status 1 = No Request for Service o = Output FIFO Request for Service due to: a. Output FIFO containing the threshold number of bytes or more b. Internal CPU sending a block of data terminated by a DSC (DSC Flush Mode) HST3 Input FIFO Overrun Erro~ Condition 1 = No Overrun Error . o = Overrun Error (latched until Host Status Register is read) HST2 Immediate Command In SFR Status 1 = Full (i.e. Internal CPU has not read previous Immediate Command sent by Host) 0= Empty • Reset value; '1' - Slave Interface Address Decoding if read by the external Host The UPI-452 determines the desired Host function through address decoding. The lower three bits of the address as well as the READ, WRITE, Chip Select (CS) and DMA Acknowledge (DACK) are used for decoding. Table 3 shows the pin states and the Read or Write operations associated with each configuration. '0' - if read by internal CPU (reads shadow latch - see FIFO DMA Freeze Mode description) HST1 FIFO DMA Freeze Mode Status 1 = Freeze Mode in progress. (In Freeze Mode, the bits of the Host Status SFR are forced to a '1' initially to prevent the external Host from attempting to access the FIFO. The definition of the Host Status SFR bits during FIFO DMA Freeze Mode can be found in FIFO DMA Freeze Mode description) o = Normal Operation Interrupts to the Host The UPI-452 interrupts the external Host via the INTRQ pin. In addition, the DRQIN and DRQOUT pins can be multiplexed as interrupt request lines, INTRQIN and INTRQOUT respectively, when DMA is disabled. This provides two special FIFO "Request for Service" interrupts. HSTO Input FIFO Request Service Status 1 = Input FIFO does not request service o = Input FIFO request service due to the Input FIFO containing enough space for the host to write the threshold number of bytes or more There are eight FIFO-related interrupt sources; two from The Input FIFO; three from The Output FIFO; one from the Immediate Command Out SFR; one from the Immediate Command IN SFR; and one due to FIFO DMA Freeze Mode. INPUT FIFO: The Input FIFO interrupt is generated whenever: a. The Input FIFO contains space for a threshold number of bytes. 9-22 inter UPI-4S2 Table 3. UPI-452 Address Decoding DACK CS A2 A1 AD Write Read 1 1 X X X No Operation 1 D 0 0 0 No Operation Data or DMA from Output FIFO Channel Data or DMA to Input FIFO Channel 1 0 0 0 1 Data Stream Command from Output FIFO Channel Data Stream Command to Input FIFO Channel 1 0 0 1 0 Host Status SFR Read Reserved 1 0 0 1 1 Host Control SFR Read Host Control SFR Write 1 0 1 0 0 Immediate Command SFR Read Immediate Command to SFR Write 1 0 1 1 X Reserved 0 X X X X DMA Data from Output FIFO Channel DMA Data to Input FIFO Channel 1 0 1 0 1 Reserved Reserved Reserved NOTES: 1. Attempting to read a DSC as a data byte will result in invalid data being read. The read pointers are not incremented so that the DSC is not lost. Attempting to read a data byte as a DSC has the same result. 2. If DACK is active the UPI-452 will attempt a DMA operation when RD or WR becomes active regardless of the DMA enable bit (MDS) in the MODE SFR. Care should be taken when using DACK. For proper operation, DACK must be driven high (+ 5V) when not using DMA. b. When an Input FIFO overrun error condition exists. The appropriate bits in the Host Status SFR are set and the interrupt is generated only if enabled. b. An Immediate Command IN interrupt is generated, if enabled, to the Host when the internal CPU has read a byte from the Immediate Command IN (IMIN) SFR. The read operation clears the Host Status SFR Immediate Command IN Status bit (HSTAT HST2) indicating that the Immediate Command IN SFR is empty. The corresponding Slave Status (SSTAT) SFR bit is also set to indicate an empty status. Setting the Slave Status SFR bit generates a FIFO-Slave Interface interrupt, if enabled, to the internal CPU. (See Figure 7a, Immediate Command IN Flowchart.) OUTPUT FIFO: The Output FIFO Request for Service Interrupt operates in a similar manner as the Input FIFO interrupt: a. When the FIFO contains the threshold number of bytes or·more. b. Output FIFO error condition interrupts are generated when the Output FIFO is underrun. c. Data Stream Command present in the Output Buffer Latch. NOTE: Immediate Command IN and OUT interrupts are actually specific Request For Service interrupts to the Host. A Data Stream Command interrupt is used to halt normal processing, using the command as a vector to a service routine. When DMA is disabled, the user may program (through HC1) INTRQ to include FIFO Request for Service Interrupts or use INTRQIN and INTRQOUT as Request for Service Interrupts. FIFO DMA FREEZE MODE: When the internal CPU invokes FIFO DMA Freeze Mode, for example at reset or to reconfigure the FIFO interface, INTRQ is activated. The INTRQ can only be deactivated by the external Host reading the Host Status SFR (HST1 remains active until FIFO DMA Freeze Mode is disabled by the internal CPU). IMMEDIATE COMMAND INTERRUPTS: a. An Immediate Command Out Interrupt is generated, if enabled, to the Host and the corresponding Host Status SFR bit (HSTAT HST6) is cleared, when the internal CPU writes to the Immediate Command OUT (IMOUT) SFR. When the Host reads the Immediate Command OUT (IMOUT) SFR the corresponding bit in the Host Status (HSTAT) SFR is set. This causes the Slave Status Immediate Command OUT Status bit (SSTAT SST6) to be cleared indicating that the Immediate Command OUT (IMOUT) SFR is empty. If enabled, a FIFO-Slave Interface will also be generated to the internal CPU. (See Figure 7b, Immediate Command OUT Flowchart.) Once an interrupt is generated, INTRQ will remain high until no interrupt generating condition exists. For a FIFO underrun/overrun error interrupt, the interrupt condition is deactivated by the external Host reading. the Host Status SFR. An interrupt is serviced by reading the Host Status SFR to determine the source of the interrupt and vectoring the appropriate service routine. 9-23 infef UPI-452 nation via the DMAO/DMA 1 Source Address or Destination Address Special Function Registers. The FIFO module manages the transfer of data between the external host and FIFO SFRs. DMA Requests to the Host The UPI-4S2 generates two DMA requests, DRQIN and DRQOUT, to facilitate data transfer between the Host and the Input and Output FIFO channels. A DMA acknowledge, DACK, is used as a chip select and initiates a data transfer. The external READ and WRITE signals select the Input and Output FIFO respectively. The CS and address lines can also be used as a DMA acknowledge for processors with onboard DMA controllers which do not generate a DACK signal. Internal CPU Access to FIFO Via Software Instructions The internal CPU has access to the Input and Output FIFOs via the FIFO IN/COMMAND IN and FIFO OUT/COMMAND OUT SFRs which reside in the Special Function Register Array. At the end of every instruction that involves a read of the FIFO IN/COMMAND IN SFR, the SFR is written over by a new byte from the Input FIFO channel when available. At the end of every instruction that involves a write to the FIFO OUT/COMMAND OUT SFR, the new byte is written into the Output FIFO channel and the write pointer is incremented after the write operation (post incremented). The internal CPU can configure the UPI-4S2 to request service from the external host via DMA or interrupts by programming Mode SFR MD6 bit. In addition the external Host enables DMA requests through bits 6 and 7 of the Host Control SFR. When a DMA request is invoked the humber of bytes transferred to the Input FIFO is the total number of bytes in the Input FIFO (as determined by the CBP SFR) minus the value programmed in the Input FIFO Threshold SFR. The DMA request line is activated only when the Input FIFO has a threshold number of bytes that can be transferred. The internal CPU reads the Input FIFO by using the FIFO IN/COMMAND IN SFR as the source register in an instruction. Those instructions which read the Input FIFO are listed below: The Output FIFO DMA request is activated when a DSC is written by the internal CPU at the end of a less than threshold size block of data (Flush Mode) or when the Output FIFO threshold is reached. The request remains active until the Input FIFO becomes full or the Output FIFO becomes empty. If a DSC is encountered during an Output FIFO DMA transfer, the DMA request is dropped until the DSC is read. The DMA request will be reactivated after the DSC is read and remains active until the Output FIFO becomes empty or another DSC is encountered. ADD A,FIFO IN/COMMAND IN ADDC A,FIFO IN/COMMAND IN PUSH FIFO IN/COMMAND IN ANL A,FIFO IN/COMMAND IN ORL A,FIFO IN/COMMAND IN XRL A,FIFO IN/COMMAND IN CJNE A,FIFO IN/COMMAND IN, rei SUBB A,FIFO IN/COMMAND IN MOV direct,FIFO IN/COMMAND IN MOV @Ri,FIFO IN/COMMAND. IN MOV Rn,FIFO IN/COMMAND IN MOV A,FIFO IN/COMMAND IN FIFO MODULE - INTERNAL CPU INTERFACE After each access to these registers, they are overwritten by a new byte from the FIFO. Overview The Input and Output FIFOs are accessed by. the internal CPU through direct addressing of the FIFO IN/COMMAND IN and FIFO OUT/COMMAND OUT Special Function Registers. All of the BOCS1 instructions involving direct addressing may be used to access the FIFO's SFRs. The FIFO IN, COMMAND IN and Immediate Command In SFRs are actually read only registers, and their Output counterparts are write only. Internal DMA transfers data between Internal memory, External Memory and the Special Function Registers. The Special Function Registers appear as another group of dedicated memory addresses and are programmed as the source or desti- NOTE: Instructions which use the FIFO IN or COMMAND IN SFR as both a source and destination register will have the data destroyed as the next data byte is rewritten into the FIFO IN register at the end of the instruction. These instructions are not supported by the UPI-4S2 FIFO. Data can only be read through the FIFO IN SFR and DSCs through the COMMAND IN SFR. Data read through the COMMAND IN SFR will be read as OFFH, and DSCs read through the FIFO IN SFR will be read as OFFH. The Immediate Command in SFR is read with the same instructions as the FIFO IN and COMMAND IN SFRs. 9-24 inter UPI-4S2 The FIFO IN, COMMAND IN and Immediate Command In SFRs are read only registers. Any write operation performed on these registers will be ignored and the FIFO pointers will remain intact. dress Register (DAR). (Note: Since the FIFO IN SFR is a read only register, the DMA transfer will be ignored if it is used as a DMA DAR. This is also true if the FIFO OUT SFR is used as a DMA SAR.) The internal CPU uses the FIFO OUT SFR to write to the Output FIFO and any instruction which uses the FIFO OUT or COMMAND OUT SFR as a destination will invoke a FIFO write. DSCs are differentiated from data by writing to the COMMAND OUT SFR. In the FIFO, Data Stream Commands have the ninth bit associated with the command byte set to "1 ". The instructions used to write to the Output FIFO are listed below: Each DMA channel is software programmable to operate in either Block Mode or Demand Mode. In the Block Mode, DMA transfers can be further programmed to take place in Burst Mode or Alternate Cycle mode. In Burst Mode, the processor halts its execution and dedicates its resources to the DMA transfer. In Alternate Cycle Mode, DMA cycles and instruction cycles occur alternately. GENERAL PURPOSE DMA CHANNELS In Demand Mode, a DMA transfer occurs only when it is demanded. Demands can be accepted from an external device (through External Interrupt pins, EXTO/EXT1) or from either the Serial Channel or FIFO flags. In this way, a DMA transfer can be synchronized to an external device, the FIFO or the Serial Port. If the External Interrupt is configured in Edge Mode, a single by1e transfer occurs per transition. The external interrupt itself will occur if enabled. If the External Interrupt is configured in Level Mode, DMA transfers continue until the External Interrupt request goes inactive or the by1e count becomes zero. The following flags activate Demand Mode transfers of one byte to/from the FIFO or Serial Channel: RI - Serial Channel Receiver Buffer Full TI - Serial Channel Transmitter Buffer Empty Overview Architecture There are two identical General Purpose DMA Channels on the UPI-452 which allow high speed data transfer from one writeable memory space to another. As many as 64K by1es can be transferred in a single DMA operation. The following memory spaces can be used with DMA channels: • Internal Data Memory • External Data Memory • Special Function Registers There are three 16 bit and one 8 bit Special Function Registers associated with each DMA channel. • The 16 bit Source Address SFR (SAR) points to . the source by1e. MOV MOV MOV POP MOV MOV FIFO FIFO FIFO FIFO FIFO FIFO OUT/COMMOUT, A OUT/COMMOUT, direct OUT/COMMOUT, Rn OUT/COMMOUT OUT/COMMOUT, #data OUT /COMMOUNT, @Ri NOTE: Instructions which use the FIFO OUT/COMMAND OUT SFRs as both a source and destination register cause invalid data to be written into the Output FIFO. These instructions are not supported by the UPI-452 FIFO. • The 16 bit Destination Address SFR (DAR) points to the destination. • The 16 bit Byte Count SFR (BCR) contains the number of bytes to be transferred and is decremented when a by1e transfer is accomplished. • The DMA Control SFR (DCON) is eight bits wide and specifies the source memory space, destination memory space and the mode of operation. The Special Function Register array appears as a limited group of dedicated memory addresses. The Special Function Registers may be used in DMA transfer operations by specifying the SFR as the source or destination address. The Special Function Registers which may be used in DMA transfers are listed in Table 4. Table 4 also shows whether the SFR may be used as Source or Destination only, or both. In Auto Increment mode, the Source Address and/ or Destination Address is incremented when a by1e is transferred. When a DMA transfer is complete (SCR = 0), the DONE bit is set and a maskable interrupt is generated. The GO bit must be set to start any DMA transfer (also, the Slave Control SFR FRZ bit must be set to disable FIFO DMA Freeze Mode). The two DMA channels are designated as DMAO and DMA 1, and their corresponding registers are suffixed by 0 or 1; e.g. SARO, DAR1, etc. The FIFO can be accessed during DMA by using the FIFO IN SFR as the DMA Source Address Register (SAR) or the FIFO OUT SFR as the Destination Ad9-25 UPI-4S2 Table 4. DMA Accessible Special Function Registers SFR Symbol Accumulator B Register FIFO IN COMMAND IN FIFO OUT COMMAND OUT Serial Data Buffer Port 0 Port 1 Port 2 Port 3 Port 4 AlACC B FIN CIN FOUT COUT SBUF PO P1 P2 P3 P4 Address Source Only Destination Only Either "- Y Y OEOH OFOH OEEH OEFH ·OFEH OFFH 099H 080H 090H OAOH OBOH OCOH Y Y Y Y Y Y Y Y Y Y DMA Special Function Registers DMA Control SFR: DCONO, DCON1 Symbolic Address Physical Address DCONO 092H DCON1 093H Reset Status: DCONO and DCON1 = OOH Bit Definition: DAS IDA 0 0 1 1 0 1 0 1 SAS ISA 0 0 1 1 0 1 0 1 OM TM 0 0 1 1 0 1 0 1 Destination Address Space External Data Memory without Auto-Increment External Data Memory with Auto-Increment Special Function Register Internal Data Memory Source Address Space . External Data Memory without Auto-Increment External Data Memory with Auto-Increment Special Function Register Internal Data Memory DMA Transfer Mode Alternate-Cycle Transfer Mode Burst Transfer Mode FIFO or Serial Channel Demand Mode External Demand Mode 9-26 infef DONE UPI-452 DMA transfer Flag: o service request is generated. DMA transfer cycles are alternated with instruction execution cycles. DMA transfers are terminated as in FIFO Demand Mode. DMA transfer is not completed. DMA transfer is complete. NOTE: This flag is set when contents of the Byte Count SFR decrements to zero. It is reset automatically when the DMA vectors to its interrupt routine. GO Enable DMA Transfer: o Output Channel The DMA is configured as in FIFO Demand Mode and transfers are initiated whenever an Output FIFO requests service. DMA transfer cycles are alternated with instruction execution cycles. DMA transfers are terminated as in FIFO Demand Mode. Disable DMA transfer (in all modes). Enable DMA transfer. If the DMA is in the Block mode, start DMA transfer if possible. If it is in the Demand mode, enable the channel and wait for a demand. The FIFO logic resets the interrupt flag after transferring the byte, so the interrupt is never generated. Once the DMA is programmed to service the FIFO, the request for service interrupt for the FIFO is inhibited until the DMA is done (BCR = 0). NOTE: The GO bit is reset when the BCR decrements to zero. 2. BURST MODE In BURST mode the DMA is initiated by setting the GO bit in the DCON SFR. The DMA operation continues until BCR decrements to zero (zero byte count), then an interrupt is generated (if enabled). No interrupts are recognized during this DMA operation once it has started. DMA Transfer Modes The following four modes of DMA operation are possible in the UPI-452. 1. ALTERNATE-CYCLE MODE General Input Channel Alternate cycle mode is useful when CPU processing must occur during the DMA transfers. In this mode, a DMA cycle and an instruction cycle occur alternately. The interrupt request is generated (if enabled) at the end of the process, i.e. when BCR decrements to zero. The transfer is initiated by setting the GO bit in the DCON SFR. The FIFO Input Channel can be used in burst mode by specifying the FIFO IN SFR as the DMA Source Address. DMA transfers begin when the GO bit in the DMA Control SFR is set. The number of bytes to be transferred must be specified in the Byte Count SFR (BCR) and auto-incrementing of the SAR must be disabled. Once the GO bit is set nothing can interrupt the transfer of data until the BCR is zero. In this mode, a Data Stream Command encountered in the FIFO will be held in the COMMAND IN SFR with the pointers frozen, and invalid data (FFH) will be read through the FIFO IN SFR. If the input FIFO becomes empty during the block transfer, an OFFH will be read until BCR decrements to zero. Alternate-Cycle FIFO Demand Mode Alternate cycle demand mode is useful for FIFO transfers of a less urgent nature. As mentioned before, CPU instruction cycles are interleaved with DMA transfer cycles, allowing true parallel processing. This mode differs from FIFO Demand Mode in that CPU instruction cycles must be interleaved with DMA transfers, even if the FIFO is demanding DMA. In FIFO Demand Mode, CPU cycles would never occur if the FIFO demand was present. Output Channel The Output FIFO Channel can be used in burst mode by specifying the FIFO OUT or COMMAND OUT SFR as the DMA Destination Address. DMA transfers begin when the GO bit is set. This mode can be used to send a block of data or a block of Data Stream Commands. If the FIFO becomes full during the block transfer, the remaining data will be lost. Input Channel The DMA is configured as in FIFO Demand Mode and transfers are initiated whenever an Input FIFO 9-27 inter UPI-4S2 NOTE: All interrupts including FIFO interrupts are not recognized in Burst Mode. Burst Mode. transfers should be used to service the FIFO only when the user is certain that no Data Stream Commands are in the block to be transferred (Input FIFO) and that the FIFO contains enough space to store the block to be transferred. In all other cases Alternate Cycle or'Demand Mode should be used. is not full or empty. DMA transfers begin when the Aequest For Service Flag is activated by the FIFO logic and continue as long as the flag is active. The Flag remains active until one of the following occurs: 1) The FIFO becomes full 2) BCA = 0 (this generates a DMA interrupt and . sets the DONE bit), As in Alternate Cycle FIFO Demand Mode, the FIFO logic resets the interrupt flag after transferring the byte, so the interrupt is never generated. 3. FIFO AND SERIAL CHANNEL DEMAND MODES After the GO bit is set, the DMA is activated if one of the following condi.tions takes place: < .SAA(0/1) = FIFO IN and HIFAS flag is set DAA(0/1) == FIFO OUT and HOFAS flag is set NOTES: 1. If the output FIF,O is configured as a one byte buffer and the user program consists of two-cycle instructions only, then Alternate-Cycle Mode should be used. 2. In non-auto increment mode for internal to external, or external to internal transfers, the lower 8 bits of the external address should not correspond to the FIFO or Serial Port address. The HIFAS and HOFAS signals are internal flags which are not accessible by software. These flags are similar to the SSTO and SST4 flags in the Slave Status Aegister except that they are of the opposite polarity and once set they are not cleared until the Input FIFO becomes empty (HIFAS) or the Output FIFO becomes full (HOFAS). . FIFO Demand Mode Although any DMA mode is possible using the FIFO buffer, only FIFO Demand and Alternate Cycle FIFO Demand Modes are recommended. FIFO Demand Mode DMA transfers using the input FIFO Channel are set-up by setting the GO bit and specifying the FIFO IN register as the DMA Source Address Aegister. The BCA should be set to the maximum number of expected transfers. The user must also program bit 1 of the Slave Control Aegister (SC1) to determine whether the Slave Status (SSTAT) SFA FIFO. Aequest For Service Flag will be activated when the FIFO becomes not empty or full. Once the Aequest For Service Flag is activated by the FIFO, the DMA transfer begins, and continues until the request flag is .deactivated. While the request is active, .nothing can interrupt the DMA (i.e. it behaves like burst mode). The DMA Aequest is held active until one of the following occurs: Serial Channel Demand Mode Serial Channel Demand Mode is the logical choice when using the Serial Port. The DMAs can be activated by one of the Serial Channel Flags. Aeceiver interrupt (AI) or Transmitter Interrupt (TI). SAA(0/1) = SBUF and AI flag is set DAA(0/1) = SBUF and TI flag is set .. NOTE:.. . TI flag must beset by software to initiate the first transfer. When the DMA transfer begins, only one byte is transferred at a time. The serial port hardware automatically resets the flag after completion. of the transfer, so an interrupt will not be generated unless DMA servicing is held off due to the DMA being done (BCA= 0) or when the Hold/Hold Acknowledge logic is used and the DMA does not own the bus. In this case a Serial Port interrupt may be generated if enabled because of the status of the AI or TI flags. 1) The FIFO becomes empty. 2) A Data Stream Command is encountered (this generates a FIFO interrupt and DMA operation resumes after the Data Stream Command is read). 3) BCA = 0 (this generates a DMA interrupt and sets the DONE bit). In FIFO demand mode, Alternate cycle FIFO demand mode or Serial Port demand mode only one of the following registers (SBUF, FIN or FOUT) should be used as either the SAA or DAA register~ to pre~ vent undesired transfers. For example ·if SAAO = FIN and DAAO = SBUF in demand mode, the DMA transfer will start if either the HIFAS or TI flags are set. DMA transfers to the Output FIFO Channel are similar. The FIFO OUT or COMMAND OUT SFA is the DMA Destination Address SFA and a transfer Is started by setting the GO bit. The user programs bit o of the Slave· Control SFA (SCO) to determine whether a demand occurs when the Output FIFO 9-28 UPI-4S2 ARBITER MODE: In this mode, the UPI·452 is the bus master. It configures port pin P1.5 as HLD input and pin P1.6.as HLDA output. When a device asserts the HLD signal to use the local bus, the UPI452 asserts the HLDA signal after current instruction execution is complete. If the UPI-452 needs an external access via a DMA channel, it waits until the requester releases the bus, HLD goes inactive. 4. EXTERNAL DEMAND MODE The DMA can be initiated by an external device via External interrupt 0 and 1 (INTO/INT1) pins. The INTO pin demands DMAO (Channel 0) and INT1 demands DMA 1 (Channel 1). If the interrupts are configured in edge mode, a single byte transfer is accomplished for every request. Interrupts also result (INTO and INT1) after every byte transfer (if en· abled). If the interrupts are configured in level mode, the DMA transfer continues until the request goes inactive or BCR = O. In either case, a DMA interrupt is generated (if enabled) when BCR = o. The GO bit must be set for the transfer to begin. DISABLE MODE: When external program memory is accessed by an instruction or by program counter overflow beyond the internal ROM address or exter· nal data memory is accessed by MOVX instructions, it is a local memory access and the HLD/HLDA logic is not initiated. When a DMA channel attempts data transfer to/from the external data memory, the HLD/HLDA logic is initiated as described below. DMA transfers from the internal memory space to the internal memory space does not initiate the HLD/HLDA logic. EXTERNAL MEMORY DMA When transferring data to or from external memory via DMA, the HOLD (HLD) and HOLD·ACKNOWLEDGE (HLDA) signals are used for handshaking. The HOLD and HOLD·ACKNOWLEDGE are active low signals which arbitrate control of the local bus. The UPI·452 can be used in a system where multimasters are connected to a single parallel Address/ Data bus. The HLD/HLDA signals are used to share resources (memory, peripherals, etc.) among all the processors on the local bus. The UPI·452 can be configured in any of three different External Memory Modes controlled by bits 5 and 6 (REQ & ARB) in the PCON SFR (Table 5). Each mode is described below: The balance of the PCON SFR bits are described in the "80C51 Register Description: Power Control SFR" section below. Latency When the GO bit is set, the UPI-452 finishes the current instruction before starting the DMA operation. Thus the maximum latency is 3.5 microseconds (at 14 MHz). REQUESTER MODE: In this mode, the UPI-452 is not the bus master, but must request the bus from another device. The UPI-452 configures port pin P1.5 as a HLD output and pin P1.6 as a HLDA input. The UPI-452 issues a HLD signal when it needs external access for a DMA channel. It uses the local bus after receiving the HLDA signal from the bus master, and will not release the bus until its DMA operation is complete. DMA Interrupt Vectors Each DMA channel has a unique vectored interrupt associated with it. There are two vectored interrupts associated with the two DMA channels. The DMA interrupts are enabled and priorities set via the Interrupt Enable and Priority SFR (see "Interrupts" sec· tion). The interrupt priority scheme is similar to the scheme in 80C51. Table 5. DMA MODE CONTROL - PCON SFR Physical Address Symbolic Address -* PCON ARB REQ -* -* (MSB) 'Defined as per MLS-51 Data Sheet Reset Status: OOH -* -* -* (LSB) Definition· ARB REO 0 0 1 1 0 1 0 1 HLD/HLDA logic is disabled. The UPI-452 is in the Requester Mode. The UPI-452 is in the Arbiter Mode. Invalid 9-29 87H intJ UPI-4S2 When a DMA operation is complete (BCR decrements to zero), the DONE flag in the respective DCON (DCONO or DCON1) SFR is set. If the DMA interrupt is enabled, the DONE flag is reset automatically upon vectoring to the interrupt routine. If the UPI-4S2 (as a Requester) asserts a HLD signal to request a DMA transfer (see "External Memory DMA")and its other DMA Channel requests a transfer before the HLDA signal is received, the channel having higher priority is activated first. A Burst Mode transfer on channel 0 can not be interrupted since DMAO has the highest priority. A Demand Mode transfer on channel 0 is the only type of activity that can interrupt a block transfer on DMA 1. Interrupts When DMA is Active If a Burst Mode DMA transfer is in progress, the interrupts are not serviced until the DMA transfer is complete. This is also true for level activated External Demand DMA transfers. During Alternate Cycle DMA transfers, however, the interrupts are serViced at the end of the DMA cycle. After that, DMA cycles and instruction execution cycles occur alternately. In the case of edge activated External Demand Mode DMA transfers, the interrupt is serviced at the end of DMA transfer of that single byte. If, while executing a DMA transfer, the Arbiter receives a HLD signal, and then before it can acknowledge, its other DMA Channel requests a transfer, it then completes the second DMA transfer before sending the HLDA signal to release the bus to the HLD request. DMA transfers may be held off under the following conditions: 1. A write to any of the DMA registers inhibits the DMA for one instruction cycle: DMA Arbitration Only one of the two DMA channels is active at a time, except when both are configured in the Alternate Cycle mode. In this case, the DMA cycles and Instruction Execution cycles occur in the following order: 1. DMA Cycle O. 2. Instruction execution. 3. DMA Cycle 1. 4. Instruction execution. DMAO has priority over DMA 1 during simultaneous activation of the two DMA channels. If one DMA channel is active, the other DMA channel, if activated, waits until the first one is complete. NOTE: An instruction cycle may be executed in 1, 2 or 4 machine cycles dependent on the instruction being .executed. DMA transfers are only executed after the completion of an instruction cycle never between machine cycles of a single instruction cycle. Similarly instruction cycles are only executed upon completion of a DMA transfer whether it be a one machine cycle transfer or two machine cycles (for ext. to ext. memory transfers). 2. A single machine cycle DMA register read operation (Le. MOV A, DCa NO) will inhibit the DMA for one instruction cycle. However a two cycle DMA register read operation will not inhibit the DMA (i.e. MOV P1, DCONO). If DMAO is already in the Alternate Cycle mode and DMA 1 is activated in Alternate Cycle Mode, it will take two instruction cycles before DMA 1 is activated (due to the priority of DMAO). Once DMA1 becomes active, the execution will follow the normal sequence. If the HOLD/HOLD Acknowledge logic is enabled in requestor mode the hold request will go active once the go bit has been set (for burst mode) and once the demand flag is set (for demand mode) regardless of whether the DMA is h'eld off by one of the above conditions. If DMAO is already in the Alternate Cycle mode and DMA 1 is activated in Burst Mode, the DMA 1 Burst transfer will follow the DMAO Alternate Cycle transfer (after the completion of the next instruction). The DMA Transfer waveforms are in Figures 8-11. 9-30 UPI-452 52 51 53 54 55 56 52 51 53 54 55 56 05C J1. rLrL rLfl.. rLrL rLfl.. rLfl.. rLfl.. rLfl.. rLfl.. rLfl.. rLrL rLfl.. r- ALE r PORT2 PORTO r h h - 5 URCE "DDR ~5 X AI5-A A7-AO DATA IN r- DES A7- 0 NATION ADD [55 X A15 A8 DATA OUT r 1\ Dt.4A CYCLE 231428-13 Figure 8. DMA Transfer from External Memory to External Memory - - - - - - - - D " A cYCLE - - - - - - - - - 1 51 52 53 54 56 55 52 51 53 CLOCK ALE PORT2~~~~~____+-~~~~~~~~~ ______+-____ ____ ____ ~ ~ PORTO RD 231428-14 Figure 9.DMA Transfer from External Memory to Internal Memory 51 52 53 54 55 56 51 52 53 CLOCK ALE PO~2~____-JI~ ____+-__~DE~5T~IN~A~TI0_N_A_D_DR7E~55__A~I_5-~A~B-----t-----1.~----t---DATA OUT PORTO I - - - - - - - - D " A CYCLE---------I 231428-15 Figure 10. DMA Transfer from Internal Memory to External Memory 9-31 UPI-4S2 S1 S2 S3 S5 S4 S6 S2 S1 S3 CLOCK ALE -J / \ ~ PORT2 PORTO A15-AB -< INST A15-AB I A7-AO INSTRUCTION EXECUTION DMA CYCLE It-I-231428-16 Figure 11. DMA Transfer from Internal Memory to .'nterna' Memory Table 6. Interrupt Priority Interrupt Source Priority Level (highest) External Interrupt 0 o Internal Timer/Counter 0 1 DMA Channel 0 Request 2 External Interrupt 1 3 DMA Channel 1 Request 4 Internal Timer/Counter 1 5 FIFO - Slave Bus Interface 6 7 Serial Channel (lowest) INTERNAL INTERRUPTS Overview The UPI-452 provides a total of eight interrupt sources (Table 6). Their operation is the same as in the 80C51, with the addition of three new interrupt sources for the UPI-452 FIFO and DMA features. These added interrupts have their enable and priority bits in the Interrupt Enable and Priority (IEP) SFR. The IEP SFR is in addition to the 80C51 Interrupt Enable (IE) and Interrupt Priority (IP) SFRs. The added interrupt sources are also globally enabled or disabled by the EA bit in the Interrupt Enable SFR. Table 6 lists the eight interrupt sources in order of priority. Table 7 lists the eight interrupt sources and their respective address vector location in program memory. (DMA interrupts are discussed in the "General Purpose DMA Channels" section. Additional interrupt information for Timer/Counter, Serial Channel, External Interrupt may be found in the Microcontroller Handbook for the 80C51.) Table 7. Interrupt Vector Addresses Interrupt Source Starting Address External Interrupt 0 3 (003H) Internal Timer/Counter 0 11 (OOBH) External Interrupt 1 19 (013H) Internal Timer/Counter 1 27 (01 BH) Serial Channel 35 (023H) FIFO - Slave Bus Interface 43 (02BH) 51 (033H) DMA Channel 0 Request DMA Channel 1 Request 59 (03BH) FIFO Module Interrupts to Internal CPU FIFO requests service when it becomes empty or not full as determined by bit 0 of the Slave Control SFR (OFRS). Request for Service interrupts are generated only if enabled by the internal CPU via the Interrupt Enable SFR, and the Slave Control Register. The FIFO module generates interrupts to the internal CPU whenever the FIFO requests service or when a Data Stream Command is in the COMMAND IN SFR. The Input FIFO will request service whenever it becomes full or not empty depending on bit 1 of the Slave Control SFR (lFRS). Similarly, the Output 9-32 inter UPI-452 A Data Stream Command Interrupt is generated whenever there is a Data Stream Command in the COMMAND IN SFR. The interrupt is generated to ensure that the internal interrupt is recognized before another instruction is executed. Immediate Command OUT bit (SSTAT SST6) to be set and the corresponding Host Status bit (HSTAT HST6) to be cleared indicating the SFR is empty. When the internal CPU writes to the Immediate Command OUT SFR, the Host Status bit is set and Slave Status bit is cleared to indicate the SFR is full. (See Figure 7b, Immediate Command OUT Flowchart.) Immediate Command Interrupts a. An Immediate Command IN interrupt is generated, if enabled, to the internal CPU when the Host has written to the Immediate Command IN (IMIN) SFR. The write operation clears the Slave Status SFR bit (SSTAT SST2) and sets the Host Status SFR bit (HSTAT HST2) to indicate that a byte is present in the Immediate Command IN SFR. When the internal CPU reads the Immediate Command IN (IMIN) SFR the Slave Status SFR status bit is set, and the Host Status SFR status bit is cleared indicating the IMIN SFR is empty. Clearing the Host Status SFR bit will cause a Request For Service (INTRQ) interrupt, if enabled, to signal the Host that the IMIN SFR is empty. (See Figure 7a, Immediate Command IN Flowchart.) NOTE: Immediate Command IN and OUT interrupts are actually specific FIFO-Slave Interface interrupts to the internal CPU. One instruction from the main program is executed between two consecutive interrupt service routines as in the 80C51. However, if the second interrupt service routine is due to a Data Stream Command Interrupt, the main program instruction is not executed (to prevent misreading of invalid data). Interrupt Enabling and Priority b. An Immediate Command OUT interrupt is generated, if enabled, to the internal CPU when the Host has read the Immediate Command OUT SFR. The Host read causes the Slave Status Each of the three interrupt special function registers (IE, IP and IEP) is listed below with its corresponding bit definitions. Interrupt Enable SFR (IE) Symbolic Address IE Physical Address EA ES ET1 EX1 ETO (MSB) Symbol EXO OA8H (LSB) Position Function EA 1E.7 - IE.6 IE.5 IE.4 IE.3 IE.2 1E.1 lE.O Enables all interrupts. If EA = 0, no interrupt will be acknowledged. If EA = 1, each interrupt source is individually enabled or disabled by setting or clearing its enable bit. (reserved) (reserved) Serial Channel interrupt enable Internal Timer/Counter 1 Overflow Interrupt External Interrupt Request 1. Internal Timer/Counter 0 Overflow Interrupt External Interrupt Request O. ES ET1 EX1 E~O EXO 9-33 inter UPI·452 Interrupt Priority SFR (IP) A priority level of 0 or 1 may be assigned to each interrupt source, with 1 being higher priority level, through the IP and the IEP (Interrupt Enable and Priority) SFR. A priority level of 1 interrupt can interrupt a priority level 0 service routine to allow nesting of interrupts. Symbolic Address Physical Address IP PS PT1 PX1 Symbol PTO PXO OB8H (LSB) (MSBj Position Function IP.? IP.6 IP.5 IPA IP.3 IP.2 IP.1 IP.O (reserved) (reserved) (reserved) Local Serial Channel Internal Timer/Counter 1 External Interrupt Request 1 Internal Timer/Counter 0 External Interrupt Request 0 Priority Within A Level (lowest) PS PT1 PX1 PTO PXO O.? 0.5 0.3 0.1 0.0 (highest) Interrupt Enable and Priority SFR (IEP) The Interrupt Enable and Priority Register establishes the enabling and priority of those resources not covered in the Interrupt Enable and Interrupt Priority SFRs. Physical Address Symbolic Address I PFIFO I EDMAO I EDMA1 I PDMAO I PDMA1 I EFIFO I IEP (LSB) (MSB) Symbol Position Function - IEP.? . IEP.6 IEP.5 IEPA IEP.3 IEP.2 IEP.1 IEP.O (reserved) (reserved) FIFO Slave Bus Interface Interrupt Priority DMA Channel 0 Interrupt Enable DMA Channel 1 Interrupt Enable DMA Channel 0 Priority DMA Channel 1 Priority FIFO Slave Bus Interface Interrupt Enable PFIFO EDMAO EDMA1 PDMAO PDMA1 EFIFO OF8H 9-34 Priority Within a Level 0.6 0.2 004 inter UPI-452 Special Function Registers and their default power on reset values; FIFO-EXTERNAL HOST INTERFACE FIFO DMA FREEZE MODE Overview During FIFO DMA Freeze Mode the internal CPU can reconfigure the FIFO interface. FIFO DMA Freeze Mode is provided to prevent the Host from accessing the FIFO during a reconfiguration sequence. The internal CPU invokes FIFO DMA Freeze Mode by clearing bit 3 of the Slave Control SFR (SC3). INTRQ becomes active whenever FIFO DMA Freeze Mode is invoked to indicate the freeze status. The interrupt can only be deactivated by the Host reading the Host Status SFR. SFR Name Label Value Channel Boundary Pointer Output Channel Read Pointers Output Channel Write Pointers Input Channel Read Pointers Input Channel Write Pointers Input Threshold Output Threshold CBP ORPR OWPR IRPR IWPR ITHR OTHR 40H /640 40H / 640 40H / 640 OOH / 000 OOH / 000 80H / 1280 01H / 10 The Input and Output FIFO channels can be reconfigured by programming any of these SFRs while the UPI-452 is in the Freeze Mode. The Host is notified when the Freeze Mode is active by a "1" in HST1 of the Host Status Register (HSTAT). The Host should interrogate HST1 to determine the status of the FIFO interface following reset before attempting to read from or write to the UPI-452 FIFO buffer. During FIFO DMA Freeze Mode only two operations are possible by the Host to the UPI-452 slave, the balance are disabled, as shown in Table 8. The internal DMA is disabled during FIFO DMA Freeze Mode, and the internal CPU has write access to all of the FIFO control SFRs (Table 9). NOTE: During the initialization sequence of the UPI-452 FIFO SFRs, the OTHR should be changed from the default setting of 1 to a value between 2 and !(80H-CBP)-11. Please refer to the section on Input and Output FIFO threshold SFRs for further information. ' Initialization At power on reset the FIFO Host interface is automatically frozen. The Slave Control Enable FIFO DMA Freeze Mode bit defaults to FIFO DMA Freeze Mode (SLCON FRZ = 0). Below is a list of the FIFO Table 8. Slave Bus Interface Status During FIFO DMA Freeze Mode Interface Pins; CS A2 A1 DACK Operation In Normal Mode AO READ WRITE Read Host Status SFR Operational 1 Read Host Control SFR Operational 0 Write Host Control SFR Disabled 1 Data or DMA Data from Output Channel Disabled 1 0 Data or DMA Data to Input Channel Disabled 1 0 1 Data Stream Command from Disabled Output Channel 0 1 1 0 Data Stream Command to Input Channel Disabled 1 0 0 0 1 Read Immediate Command Out from Output Channel Disabled 0 1 0 0 1 0 Write Immediate Command In to Input Channel Disabled 0 X X X X 0 1 DMA Data from Output Channel Disabled 0 X X X X 1 0 DMA Data to Input Channel Disabled 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 Status In FIFO DMA Freeze Mode 9-35 UPI·452 FIFO DMA Freeze Mode without first stopping the external Host from accessing the UPI-452 will not guarantee a clean break with the external Host. The UPI-452 can also be programmed to interrupt the Host following power on reset in order to indicate to the Host that FIFO DMA Freeze Mode is in progress. This is done by enabling the INTRQ interrupt output pin via the MODE SFR (MD4) before the Slave Control SFR Enable FIFO DMA Freeze Mode bit is set to Normal Mode. At power on reset the Mode SFR is forced to zero. This disables all interrupt and DMA output pins (INTRQ, DRQIN/ INTRQIN and DRQOUT /INTRQOUT). Because the Host Status SFR FIFO DMA Freeze Mode In Progress bit is set, a Request For Service, INTRQ, interrupt is pending until the Host Status SFR is read. This is because the FIFO DMA Freeze Mode interrupt is always enabled. If the Slave Control FIFO DMA Freeze Mode bit (SLCON FRZ) is set to Normal Mode before the MODE SFR INTRQ bit is enabled, the INTRQ output will not go active when the MODE SFR INTRQ bit is enabled if the Host Status SFR has been read. The proper way to invoke FIFO DMA Freeze Mode is by issuing an Immediate Command to the external host indicating that FIFO DMA Freeze Mode will be invoked. Upon receiving the Immediate Command, the external Host should complete servicing all pending interrupts and.DMA requests, then send an Immediate Command back to the UPI-452 acknowledging the FIFO DMA Freeze Mode request. After issuing the first Immediate Command, the internal CPU should not perform any action on the FIFO until FIFO DMA Freeze Mode is invoked. If FIFO DMA Freeze Mode is invoked without stopping the Host during Host transfers, only the last two bytes of data written into or read from the FIFO will be valid. The timing diagram for disabling the FIFO module to the external Host interface is illustrated in Figure 12. Due to this synchronization sequence, the UPI-452 might not go into FIFO DMA Freeze Mode immediately after SC3 is cleared. A special bit in the Slave Status Register (SST5) is provided to indicate the status of the FIFO DMA Freeze Mode. The FIFO DMA Freeze Mode operations described in this section are only valid after SST5 is cleared. The default values for the FIFO and Slave Interface represents minimum UPI-452 internal initialization. No specific Special Function Register initialization is required to begin operation of theFIFO Slave Interface. The last initialization instruction must always set the UPI-452 to Normal Mode. This causes the UPI-452 to exit FIFO DMA Freeze Mode and enables Host read/write access of the FIFO. As FIFO DMA Freeze Mode is invoked, the DRQIN or DRQOUT will be deactivated (stopping the transferring of data), bit 1 of the Host Status SFR will be set (HST1 = 1), and SST5 will be cleared (SST5 = 0) to indicate to the external Host and internal CPU that the slave interface has been frozen. After the freeze becomes effective, any attempt by the external Host to access the FIFO will cause the overrun and underrun bits to be activated (bits HST7 (for reads) or HST3 (for writes)). These two bits, HST3 and HST7, will be set (deactivated) after the Host Status SFR has been read. If INTRQ is used to request service, the FIFO interface is frozen upon completion of any Host read or write operation in progress. Following reset, either hardware (via the RST pin) or software (via HCON SFR bit HC3) the UPI-452 requires 2 internal machine cycles (24 TCLCL) to update all internal registers. Invoking FIFO DMA Freeze Mode During Normal Operation When the UPI-452 is in normal operation, FIFO DMA Freeze Mode should not be arbitrarily invoked by clearing SC3 (SC3 = 0) because the external Host runs asynchronously to the internal CPU. Invoking DRQIN/ DRQOUT ..J r-: - - - - - - - 5 5 I' ~.! , , INTRQ ~_ S-----...., A FIFO RD/WR AFTER INTERrACE FREEZE IS INVOKED WILL CAUSE HST3 OR HST7 TO BE SET 5~-------#~---~-~------~ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ : nro INTERNALLY STOPPED fROM • ACCEPTING OR OUTPUTTING DATA SC3 HSTl _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ~ 231428-17 Figure 12. Disabling FIFO to Host Slave Interface Timing Diagram 9-36 UPI-4S2 External Host writing to the Immediate Command In SFR and the Host Control SFR is also inhibited when the slave bus interface is frozen. Writing to these two registers after FIFO DMA Freeze Mode is invoked will also cause HST3 (overrun) to be activated (HST3 = 0). Similarly, reading the Immediate Command Out Register by the external Host is disabled during FIFO DMA Freeze Mode, and any attempt to do so will cause the clearing (deactivating, "0") of HST7 bit (underrun). HCON, the Input Channel error condition flag (HST3) will be cleared. Input FIFO Pointer Registers (lRPR & IWPR) Once the FIFO module is in FIFO DMA Freeze Mode, error flags due to overrun and underrun of the Input FIFO pointers will be disabled. Any attempt to create an overrun or underrun condition by changing the Input FIFO pointers would result in an inconsistency in performance between the status flag and the threshold counter. After the slave bus interface is frozen, the internal CPU can perform the following operations on the FIFO Special Function Registers (these operations are allowed only during FIFO DMA Freeze Mode). For FIFO Reconfiguration 1. Changing the Channel Boundary Pointer SFR. 2. Changing the Input and Output Threshold SFR. To Enhance the Testability 3. Writing to the read and write pointers of the Input and Output FIFO's. 4. Writing to and reading the Host Control SFRs. 5. Controlling some bits of Host and Slave Status SFRS. 6. Reading the Immediate Command Out SFR and Writing to the Immediate Comand In SFR. To enhance the speed of the UPI-452, read operations on the Input FIFO will look ahead by two bytes. Hence, every time the IRPR is changed during FIFO DMA Freeze Mode, two NOPs need to be executed so that the two byte pipeline can be updated with the new data bytes pointed to by the new IRPR. The Threshold Counter SFR also needs to change by the same number of bytes as the IRPR (increase Threshold Counter if IRPR goes forward or decrease if IRPR goes backward). This will ensure that future interrupts will still be generated only after a threshold number of bytes are available. (See "Input and Output FIFO Threshold SFR" section below.) In FIFO DMA Freeze Mode, the internal CPU can also change the content of IWPR, and each change of IWPR also requires an update of the Threshold Counter SFR. Normally, the internal CPU cannot write into the Input FIFO. It can, however, during FIFO DMA Freeze Mode by first reconfiguring the FIFO as an Output FIFO (Refer to "Input and Output FIFO Threshold SFR" section below). Changing the IRPR to be equal to IWPR generates an empty condition while changing IWPR to be equal to IRPR generates a full condition. The order in which the pointers are written determines whether a full or empty condition is generated. Description of each of these special functions are as follows: FIFO Module SFRs During FIFO DMA Freeze Mode Table 9 summarizes the characteristics of all the FIFO Special Function Registers during normal and FIFO DMA Freeze Modes. The registers that require special treatment in FIFO DMA Freeze Mode are: HCON, IWPR, IRPR, OWPR, ORPR, HSTAT, SSTAT, MIN & MOUT SFRs. They can be described in detail as follows: Output FIFO Pointer SFR (ORPR and OWPR) In FIFO DMA Freeze Mode the contents of OWPR can be changed by the internal CPU, but each change of OWPR or ORPR requires the Threshold Counter SFR to be updated as described in the next section. A NOP must be executed whenever a new value is written into ORPR, as just described for changes to IRPR. As before, changing ORPR to be equal to OWPR will generate an empty condition, Output FIFO overrun or underrun condition cannot be generated though. The FIFO pointers should not be set to a value outside of its range. Host Control SFR (HCON) During normal operation, this register is written to or read by the external Host. However, in FIFO DMA Freeze Mode (Le. SST5 = 0) the UPI-452 internal CPU has write access to the Host Control SFR and write operations to this SFR by the external Host will not be accepted. If the Host attempts to write to 9-37 UPI-452 Table 9. FIFO SFR's Characteristics During FIFO DMA Freeze Mode Label Normal Operation (SST5 = 1) Name FIFO DMA Freeze Mode Operation (SST5 = 0) HCON Host Control Not Accessible Read & Write HSTAT Host Status Read Only Read & Write 4 SLCON Slave Control Read & Write Read & Write SSTAT Slave Status Read Only Read & Write 4 IEP Interrupt Enable & Priority Read & Write Read & Write MODE Mode Register Read & Write Read & Write IWPR Input FIFO Write Pointer Read Only Read & Write 5 IRPR Input FIFO Read Pointer Read Only Read & Write 1, 5 OWPR Output FIFO Write Pointer Read Only Read & Write (5 ORPR Output FIFO Read Pointer Read Only Read & Write 2, 6 CBP Channel Boundary Pointer Read Only Read & Write 3 IMIN Immediate Command In Read Only Read & Write IMOUT Immediate Command Out Read & Write Read & Write FIN FIFO IN Read Only Read Only CIN COMMAND IN Read Only Read Only FOUT FIFO OUT Read & Write Read & Write COUT COMMAND OUT Read & Write Read & Write ITHR Input FIFO Threshold Read Only Read & Write OTHR Output FIFO Threshold Read Only Read & Write NOTES: 1. Writing of IRPR will automatically cause the FIFO IN SFR to load the contents of the Input FIFO from that location. 2. Writing to ORPR will automatically cause the IOBl SFR to load the contents of the Output FIFO at that ORPR address. 3. Writing to the CBP SFR will cause automatic reset of the four pointers of the Input and Output FIFO channels. 4. The internal CPU cannot directly change the status of these registers. However, by changing the status of the FIFO channels, the internal CPU can indirectly change the contents of the status registers. 5. Changing the Input FIFO Read/Write Pointers also requires that a consistent update of the Input FIFO Threshold Counter SFR. 6. Changing the Output FIFO Read/Write Pointers also requires that a consistent update of the Output FIFO Threshold Counter SFR. 9-38 inter UPI·452 Correspondingly, the OTHR should be programmed in the range from 2 to [(80H-CBP)-11. An OTHR value of 1 could result in a failure to set the Output FIFO service request after subsequent writes by the UPI-452 have filled the Output FIFO. Input and Output FIFO Threshold SFR (ITHR & OTHR) The Input and Output FIFO Threshold SFRs are also programmable by the internal CPU during FIFO DMA Freeze Mode. For proper operation of the Threshold feature, the Threshold SFR should be changed only when the Input and Output FIFO channels are empty, since they reflect the current number of bytes available to read/write before an interrupt is generated. NOTE: When programming the ITHR SFR, the eighth bit should be set to 1 (OR'd with 80H). This causes HSTAT SFR HSTO = 0, Input FIFO Request For Service. If ITHR bit 7 = 0 then HSTAT HSTO = 1, Input FIFO Does Not Request Service, and no interrupt will be generated. Table 10 illustrates the Threshold SFRs range of values and the number of bytes to be transferred when the Request For Service Flag is activated: Host Status SFR (HST AT) Table 10. Threshold SFRs Range of Values and Number of Bytes to be Transferred When in FIFO DMA Freeze Mode, some bits in the Host Status SFR are forced high and will not reflect the new status until the system returns to normal operation. The definition of the register in FIFO DMA Freeze Mode is as follows: ITHR No. of Bytes OTHR No. of Bytes (lower Available to (lower Available to be Read ~even bits) be Written seven bits) 0 1 2 CBP CBP-1 CBP-2 • • • • • • CBP-3 3 2 3 3 4 • • • • NOTE: The internal CPU reads this shadow latch value when reading the Host Status SFR. The shadow latch will keep the information for these bits so normal operation can be resumed with the right status. The following bits are set (= 1) when FIFO DMA Freeze Mode is invoked; • • (80H-CBP)-3 (80H-CBP)-2 (80H-CBP)-2 (80H-CBP)-1 (80H-CBP)-1 (80H-CBP) HST7 Output FIFO Error Condition Flag 1 = No error. The eighth bit of the Input and Output FIFO Threshold SFR indicates the status of the service requests regardless of the freeze condition. If the eighth bit is a "1", the FIFO is requesting service from the external Host. In other words, when the Threshold SFR value goes below zero (2's complement), a service request is generated*. *The 8th bit of the ITHR SFR must be set during initialization if the Host interrupt request is desired immediately upon leaving Freeze Mode. Normally the ITHR SFR is decremented after each external Host write to the Input FIFO and incremented after each .internal CPU read of the Input FIFO. The OTHR SFR is decremented by internal CPU writes and incremented by external Host reads. Thus if the pointers are moved when the FIFO's are not empty, these relationships can be used to calculate the offset for the Threshold SFRs. It is best to change the .Threshold SFRs only when the FIFO's are empty to avoid this complication. The threshold registers should also be updated after the pointers have been manipulated. o= An invalid read has been done on the output FIFO or the Immediate Command Out Register by the host CPU. NOTE: The normal underrun error condition status is disabled. If an Immediate Command Out (IMOUT) SFR read is attempted during FIFO DMA Freeze Mode, the contents of the IMOUT SFR is output on the Data Buffer and the error status is cleared (= 0). HST6 Immediate Command Out SFR Status During normal operation, this bit is cleared (= 0) when the IMOUT SFR is written by the UPI-452 internal CPU and set (= 1) when the IMOUT SFR is read by the external Host. Once the host-slave interface is frozen (Le. SST5 = 0), this bit will be read as a 1 by the host CPU. A shadow latch will keep the information for this bit so normal operation can be resumed with the correct status. NOTE: The ITHR should only be programmed in the range from 0 to (CBP-3). An ITHR value of (CBP-2) could result in a failure to set the Input FIFO service request signal after the Input FIFO has been emptied. Shadow latch: 1 = Internal CPU reads the IMOUT SFR o= 9-39 Internal CPU writes to the IMOUT SFR intJ UPI-4S2 HST5 Data Stream Command at Output FIFO This bit is forced to a "1" during FIFO DMA Freeze Mode to prevent the external host CPU from trying to read the DSC. Once normal operation is resumed, HST5 will reflect the Data/Command status of the current byte in the Output FIFO. Shadow Latch (read by the internal CPU): Slave Status SFR (SSTA T) The Slave Status SFR is a read-only SFR. However, once the slave interface is frozen, most of the bits of this SFR can be changed by the internal CPU by reconfiguring the FIFO and accessing the FIFO Special Function Registers. SST? Output FIFO Overrun ErrorFlag Inoperative in FIFO DMA Freeze Mode. SST6 Immediate Command Out SFR Status In FIFO DMA Freeze Mode, this bit will be cleared when the. internal CPU reads the Immediate Command Out SFR and set when the internal CPU writes to the Immediate Command Out Register. SST5 FIFO-External Interface FIFO DMA Freeze Mode Status This bit indicates to the internal CPU that FIFO DMA Freeze Mode is in progress and that it has write access to the FIFO Control, Host control and Immediate Command SFRs. SST4 Output FIFO Request Service Status During normal operation, this bit indicates to the internal CPU that the Output FIFO is ready for more data. The status of this bit reflects the position of the Output FIFO read and write pointers. Hence, in FIFO DMA Freeze Mode, this flag can be changed by the internal CPU indirectly as the read and write pointers change. SST3 Input FIFO Underrun Flag Inoperative during FIFO DMA Freeze Mode. During normal operation, a read operation clears (= 0) this bit when there are no data bytes in the Input FIFO and deactivated (= 1) when the Slave Status SFR is read. In FIFO DMA Freeze Mode, this bit will not be cleared by an Input FIFO read underrun error condition, nor will it be reset by the reading of the Slave Status SFR. SST2 Immediate Command In SFR Status This bit is normally activated (= 0) when the external host CPU writes into the Immediate Command In SFR and deactivated (= 1) when it is read by the internal CPU. In FIFO DMA Freeze Mode, this bit will not be activated (= 0) by the external Host's writing of the Immediate Command IN SFR since this function is disabled. However, this bit will be cleared (= 0) if the internal CPU writes to the Immediate Command In SFR and it will be set = 1) if it reads from the register. 1 = No Data Stream Command (DSC) Data Stream Command at Output FIFO HST4 Output FIFO Service Request Status When FIFO DMA Freeze Mode is invoked, this bit no longer reflects the Output FIFO Request Service Status. This bit wll be forced to a "1". HST3 Input FIFO Error Condition Flag 1 = No error. a = One of the following operations has been attempted by the external host and is invalid: 1) Write into the Input FIFO 2) Write into the Host Control SFR 3) Write into the Immediate Command In SFR a= NOTE: The normal Input FIFO overrun condition is disabled. HST2 Immediate Command In SFR Status This bit is normally cleared when the internal CPU reads the IMIN SFR and set when the external host CPU writes into the IMIN SFR. When the host-slave interface is frozen, reading and writing of the IMIN by the internal CPU will change the shadow latch of this bit. This bit will be read as a "1" by the external Host. Shadow latch. 1 = Internal CPU writes into IMIN SFR a = Internal CPU reads the IMIN SFR HST1 FIFO DMA Freeze Mode Status· 1 = FIFO DMA Freeze Mode. = Normal Operation (non-FIFO DMA Freeze Mode). a NOTE: . This bit is used to indicate to the external Host that the host-slave interface has been frozen and hence the external Host functions are now reduced as shown in Table 8. HSTa Input FIFO Request Service Satus When slave interface is frozen this bit no longer reflects the Input FIFO Request Service Status. This bit will be forced to a "1". 9-40 UPI-452 SST1 Data Stream Command at Input FIFO Flag In FIFO DMA Freeze Mode, this bit operates normally. It indicates whether the next byte of data from the Input FIFO is a DSC or data byte. If it is a DSC byte, reading from the FIFO IN SFR will result in reading invalid data (FFH) and vice versa. In FIFO DMA Freeze Mode, this bit still reflects the type of data byte available from the Input FIFO. ORPR SFR to zero. This generates a FIFO empty Signal and allows internal CPU write operations to all 128 bytes of the FIFO. The Threshold registers also need to be adjusted when the pointers are changed. (See "Input and Output FIFO Threshold SFR" section below.) SSTO Input FIFO Service Request Flag During normal operation, this bit is activated (= 0) when the Input FIFO contains bytes that can be read by the internal CPU and deactivated (= 1) when the Input FIFO does not need any service from the internal CPU. In FIFO DMA Freeze Mode, the status of this bit should not change unless the pointers of the Input FIFO are changed. In this mode, the internal CPU can indirectly change this bit by changing the read and write pointers of the Input FIFO but cannot change it directly. The UPI-452 has separate address spaces for Program Memory and Data Memory like the 80C51. The Program Memory can be up to 64K bytes. The lower 8K of Program Memory may reside on-chip. The Data Memory consists of 256 bytes of on-chip RAM, up to 64K bytes. of off-chip RAM and a number of "SFRs" (Special Function Registers) which appear as yet another set of unique memory addresses. MEMORY ORGANIZATION Table 11a. Internal Memory Addressing Memory Space Addressing Method Lower 128 Bytes of Internal RAM Direct or Indirect Immediate Command InlOut SFR (IMIN/IMOUT) Upper 128 Bytes of Internal RAM Indirect Only If FIFO DMA Freeze Mode is in progress, writing to the Immediate Command In SFR by the external host will be disabled, and any such attempt will cause HST3 to be cleared (= 0). Similarly, the Immediate Command Out SFR read operation (by the host) will be disabled internally and read attempts will cause HST7 to be cleared (= 0). UPI-452 SFR's Direct Only The 80C51 Special Function Registers are listed in Table 11a, and the additional UPI-452 SFRs are listed in Table 11 b. A brief description of the 80C51 core SFRs is also provided below. Accessing External Memory Internal CPU Read and Write of the FIFO During FIFO DMA Freeze Mode As in the 80C51, accesses to ex1ernal memory are of two types: Accesses to external Program Memory and accesses to external Data Memory. In normal operation, the Input FIFO can only be read by the internal CPU and similarly, the Output FIFO can only be written by the internal CPU. During FIFO DMA Freeze Mode, the internal CPU can read the entire contents of the Input FIFO by programming the CBP SFR to 7FH, setting the IRPR SFR to zero, and then the IWPR SFR to zero. Programming the pointer registers in this order generates a FIFO full signal to the FIFO logic and enables internal CPU read operations. If the IWPR and IRPR are already zero, the write pointer should be changed to a nonzero value to clear the empty status then the pointers can be set to zero. Writing to the IRDR SFR automatically updates the look ahead registers. External Program Memory is accessed under two conditions: 1) Whenever signal EA = 0; or 2) Whenever the program counter (PC) contains a number that is larger than 1FFFH. This requires that the ROM less versions have EA wired low to enable the lower 8K program bytes to be fetched from external memory. External Data Memory is accessed using either the MOVX @DPTR (16 bit address) or the MOVX @Ri (8 bit address) instructions, or during external data memory transfers. In a similar manner, the internal CPU can write to all 128 bytes of the FIFO by setting the CBP SFR to zero, setting OWPR SFR to zero, and then setting 9-41 UPI-4S2 Table 11b. 80C51 Special Function Registers Symbol 'ACC 'B 'PSW SP DPTR 'PO 'P1 'P2 'P3 'IP 'IE TMOD 'TCON THO TLO TH1 TL1 'SCON SBUF PCON Name Accumulator B Register Program Status Word Stack Pointer Data Pointer (consisting of DPH and DPL) Port 0 Port 1 Port 2 Port 3 Interrupt Priority Control Interrupt Enable Control Timer/Counter Mode Control Timer/Counter Control Timer /Counter o (high byte) Timer/Counter o (low byte) Timer/Counter 1 (high byte) Timer/Counter 1 (low byte) Serial Control Serial Data Buff Power Control Table 11 c. UPI·452 Additional Special Function Registers (Continued) Address Contents OEOH OFOH ODOH OOH OOH OOH 81H 82H 07H OOOOH 80H 90H OAOH OBOH OB8H Symbol DARLO OFFH ·OFFH OFFH OFFH OEOH BCRLO DMA Byte Count Low Byte/ High Byte/ Channel 0 Low Byte/ Hi Byte/ Channel 1 Channel Boundary Pointer COMMAND IN COMMAND OUT DMA Destination Address BCRHO BCRU BCRH1 CBP CIN COUT Low Byte/ OC2H I DARHO Hi Byte! Channel 0 OC3H I DARL1 Low Byte/ OD2H I DARH1 Hi Byte/ Channel 1 OD3H I DCONO DMAO Control 92H OOH DCON1. DMA 1 Control 93H OOH I FIN FIFO IN OEEH FOUr FIFO OUT OFEH I HCON Host Control OE7H OOH HSTAT Host Status OE6H OFBH *IEP Interrupt EnablE;l and Priority OF8H OCOH IMIN Immediate Command In OFCH I IMOUT Immediate Command Out OFDH I IRPR. Input Read Pointer OEBH OOH 60H 89H OOH 88H OOH 8CH OOH 8AH OOH 8DH OOH 8BH OOH ITHR Input FIFO Threshold OF6H 80H 98H 99H 87H OOH I IOH IWPR Input Write Pointer OEAH OOH Table 11c. UPI·452 Additional Special Function Registers Name -- Address Contents OA8H I = Indeterminate The SFRs marked with an asterisk (*) are both bit- and byte- addressable. The functions of the SFRs are as follows: Symbol Name MODE Mode Register OF9H 8FH ORPR Output Read Pointer OFAH 40H OTHR Output FIFO Threshold OF7H 01H OWPR Output Write Threshold OFBH 40H Port 4 DMA Source Address OCOH OFFH Address Contents OE2H I *P4 OE3H I SARLO Low Byte/ OA2H I SARHO Hi Byte/ Channel 0 OA3H I SARL1 Low Byte/ OB2H I SARH1 Hi Byte/ Channel 1 OB3H I OF2H OF3H I I OECH 40H OEFH OFFH I I *SLCON Slave Control OE8H 04H SSTAT OE9H 08FH Slave Status I = Indeterminate The SFRs marked with an asterisk (*) are both bit- and byte- addressable. The functions of the SFRs are as follows: 9-42 inter UPI-452 Miscellaneous Special Function Register Description DATA POINTER The Data Pointer (DPTR) consists of a high byte (DPH) and a low byte (DPL). Its intended function is to hold a 16-bit address. It may be manipulated as a 16-bit register or as two independent 8-bit registers. 80C51 SFRs ACCUMULATOR PORTS 0 TO 4 ACC is the Accumuator SFR. The mnemonics for accumulator-specific instructions, however, refer to the accumulator simply as A. PO, P1, P2, P3 and P4 are the SFR latches of Ports 0, 1, 2, 3 and 4, respectively. B REGISTER SERIAL DATA BUFFER The B SFR is used during multiply and divide operations. For other instructions it can be treated as another scratch pad regster. The Serial Data Buffer is actually two separate registers, a transmit buffer and a receive buffer register. When data is moved to SBUF, it goes to the transmit buffer where it is held for serial transmission. (Moving a byte to SBUF is what initiates the transmission.) When data is moved from SBUF, it comes from the receive buffer. PROGRAM STATUS WORD The PSW SFR contains program status information as detailed in Table 12. TIMER/COUNTER SFR STACK POINTER Register pairs (THO, TLO), and (TH1, TL 1) are the 16-bit counting registers for Timer/Counters 0 and 2. The Stack Pointer register is 8 bits wide. It is incremented before data is stored during PUSH and CALL executions. While the stack may reside anywhere in on-chip RAM, the Stack Pointer is initialized to 07H after a reset. This causes the stack to begin at location 08H. POWER CONTROL SFR (PCON) The PCON Register (Table 13) controls the power down and idle modes in the UPI-4S2, as well as providing the ability to double the Serial Channel baud rate. There are also two general purpose flag bits available to the user. Bits 5 and 6 are used to set the HOLD/HOLD Acknowledge mode (see "General Purpose DMA Channels" section), and bit 4 is not used. 9-43 UPI-452 Table 12. Program Status Word Physical Address Symbolic Address CY PSW AC FO RSO RS1 p OV ODOH (lSB) (MSB) Symbol Position CY AC FO RS1 RSO OV PSW.? PSW.S PSW.5 PSWA PSW.3 PSW.2 PSW.1 PSW.O P Name Carry Flag Auxiliary Carry (For BCD operations) Flag 0 (user assignable) Register Bank Select bit 1 • Register Bank Select bit O· Overflow Flag (reserved) Parity Flag '(RS1. RSO) enable Internal RAM register banks as follows: RS1 RSO 0 0 0 1 1 0 Internal RAM Register Bank BankO Bank 1 Bank 2 Bank 3 1 1 Table 13. peON Special Function Register Physical Address Symbolic Address PCON SMOD ARB REO GF1 (MSB) GFO PO IDl (lSB) Symbol Position Function SMOD PCON? ARB REO GF1 GFO PO PCONS PCON5 PCON4 PCON3 PCON2 PCON1 IDl PCONO Double Baud rate bit. When set to a 1, the baud rate is doubled when the serial port is being used in either Mode 1, 2 or 3. HlD/HlDA Arbiter control bit' HlD/HlDA Requestor control bit • (reserved) General-purpose flag bit General-purpose flag bit Power Down bit. Setting this bit activates power down operation. Idle Mode bit. Setting this bit activates idle mode operation. - 'See "Ext. Memory DMA" description. NOTE: If 1's are written to PO and IOL at the same time, PO takes precedence. The reset value of peON is (OOOXOOOO). 9-44 08?H inter UPI-452 • Notice: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS* Ambient Temperature Under Bias ..... O°C to 70°C"! Storage Temperature .......... -65°C to + 150°C Voltage on Any Pin to VSS ..... '" ....... -0.5V to Vee + 0.5V Voltage on Vee to Vss ........... -0.5Vto +6.5V Power Dissipation ........................ 1.0W·· NOTICE Specifications contained within the following tables are subject to change. D.C. CHARACTERISTICS Symbol TA = 0°Cto70°C;Vee = 5V ±10%;Vss = Parameter ov Min Max Units -0.5 0.8 V Input High Voltage (except XTAL 1 , RST) 2;0 Vee + 0.5 V VIHl Input High Voltage (XTAL 1, RST) 3.9 Vee + 0.5 V VOL Output Low Voltage (Ports 1,2, 3, 4) 0.45 V IOL = 1.6 mA (Note 1) VOLl Output Low Voltage (except Ports 1, 2, 3, 4) 0.45 V IOL = 3.2 mA (Note 1) VOH Output High Voltage (Ports 1,2, 3, 4) V IOH = -60 /-LA, Vee = 5V ± 10% 0.9 Vee V VOHl Output High Voltage (except Ports 1, 2, 3, 4 and Host Interface (Slave) Port) 2.4 V 0.9 Vee V = -10/-LA = -400/-LA, Vee = 5V ±10% IOH = -40 /-LA (Note 2) 2.4 V IOH Vee - 0.4 V VIL Input Low Voltage VIH VOH2 Output High Voltage (Host Interface (Slave) Port) 2.4 Test Conditions IOH IOH = -400 /-LA, Vee = 5V ±10% IlL Logical 0 Input Current (Ports 1,2, 3, 4) -50 /-LA = -10/-LA VIN = 0.45V ITL Logical 1 to 0 Transition Current (Ports 1,2, 3, 4) -650 /-LA VIN 9-45 IOH = 2V inter UPI-4S2 D.C. CHARACTERISTICS Symbol T A = O°C to 70°C; VCC = 5V ± 10%; VSS = OV (Continued) Max Units III Input Leakage Current (except Ports 1, 2, 3, 4) Parameter ±10 }-LA 0.45V < VIN < Vcc loz Output Leakage Current (except Ports 1,2, 3, 4) ±10 }-LA 0.45V < VOUT < Vcc Icc Operating Current 50 rnA Vcc = 5.5V, 14 MHz (Note 4) ICCI Idle Mode Current 25 rnA VCC = 5.5V, 14 MHz (Note 5) IpD Power Down Current 100 }-LA VCC = 2V (Note 3) RRST Reset Pull down Resistor 150 KO cia Pin Capacitance 20 pF Min 50 Test Conditions 1 MHz, TA = 25°C (sampled, not tested on all parts) NOTES: 1. Capacitive loading on Ports 0 and 2 may cause spurious noise pulses to be superimposed on the VOLS of ALE and Ports 1 and 3. The noise is due to external bus capacitance discharging into the Port 0 and Port 2 pins when these pins make tto-O transitions during bus operations. In the worst cases (capacitive loading> 100 pF), the noise pulse on the ALE line may exceed 0.8V. In such cases it may be desirable to qualify ALE with a Schmitt Trigger, or use an address latch with a Schmitt Trigger STROBE input. 2. Capacitive loading on Ports 0 and 2 may cause the VOH on ALE and PSEN to momentarily fali before the 0.9 Vee specification when the address bits are stabilizing. 3. Power DOWN lee is measured with. ali output pins disconnected; EA = Port 0 = Vee; XTAL2 N.C.; RST = Vss; DB = Vce; WR = RD = DACK = CS = AD = AI = A2 = Vee. Power Down Mode is not supported on the 87C452P. 4. lee is measured with ali output pins discohnected; XTAL 1 driven with TCLCH, TCHCL = 5 ns, VIL = Vss + 0.5V, VIH = Vee - 0.5V; XTAL2 N.C.; EA = RST = Port 0 = Vce; WR = RD = DACK = CS = AD = At = A2 = Vee. lee would be slightly higher if a crystal osciliator is used. 5. Idle lee is measured with ali output pins disconnected; XTAL 1 driven with TCLCH, TCHCL = 5 ns, VIL = Vss + 0.5V, VIH = Vee - 0.5V; XTAL2 N.C.; Port 0 = Vee; EA = RST = Vss; WR = RD = DACK = CS = AD = At = A2 = Vee· Q: Output data. EXPLANATION OF THE AC SYMBOLS R: READ signal. Each timing symbol has 5 characters. The first character is always a 'T' (stands for time). The other characters, depending on their positions, stand for the name of a signal or the logical status of that signal. The following is a list of all the characters and what they stand for: T: Time. V: Valid. W: WRITE sighal. X: No longer a valid logic level. Z: Float. A: Address. C: Clock. EXAMPLE D: Input data. TAVLL = Time for Address Valid to ALE Low. TLLPL = Time for ALE Low to PSEN Low. H: Logic level HIGH. I: Instruction (program memory contents). L: Logic level LOW, or ALE. P: PSEN. 9A6 UPI-4S2 A.C. CHARACTERISTICS Port 0, ALE, and PSEN =; TA = O°C to 70°C, Vee = 5V ± 10%, VSS = OV, Load Capacitance for 100 pF, Load Capacitance for All Other Outputs = 80 pF EXTERNAL PROGRAM AND DATA MEMORY CHARACTERISTICS Symbol Parameter 14 MHzOsc Min Max 14 Variable Oscillator Min Max Units 1/TCLCL Oscillator Frequency 3.5 TLHLL ALE Pulse Width 103 2TCLCL-40 ns TAVLL Address Valid to ALE Low (Note 1) 25 TCLCL-55 ns TLLAX Address Hold after ALE Low 36 TCLCL-35 TLLlV ALE Low to Valid Instr In TLLPL ALE Low to PSEN Low TPLPH PSEN Pulse Width TPLIV PSEN Low to Valid Instr In TPXIX Input Instr Hold after PSEN TPXIZ Input Instr Float after PSEN (Note 1) TAVIV Address to Valid Instr In TPLAZ PSEN Low to Address Float MHz 185 31 TCLCL-40 169 3TCLCL-45 ns ns ns 3TCLCL-105 110 0 ns 4TCLCL-100 0 ns ns 57 TCLCL-25 ns 252 5TCLCL-105 ns 10 10 ns TRLRH RD Pulse Width 329 6TCLCL-100 ns TWLWH WR Pulse Width 329 6TCLCL-100 ns TRLDV RD Low to Valid Data In TRHDX Data Hold after RD 192 0 5TCLCL-165 0 ns ns TRHDZ Data Float after RD 73 2TCLCL-70 ns TLLDV ALE Low to Valid Data In 422 8TCLCL-150 ns 9TCLCL-165 ns 3TCLCL+50 ns TAVDV Address to Valid Data In TLLWL ALE Low to RD or WR Low 164 478 TAVWL Address Valid to RD or WR Low 156 4TCLCL-130 ns TOVWX Data Valid to WR Transition 11 TCLCL-60 ns TWHOX Data Hold after WR 21 TRLAZ RD Low to Address Float TWHLH RD or WR High to ALE High TOVWH Data Valid to WR (Setup Time) 264 3TCLCL-50 TCLCL-50 0 31 350 111 TCLCL-40 7TCLCL-150 NOTE: 1. Use the value of 14 MHz specification or variable oscillator specification, whichever is greater. 9-47 ns 0 ns TCLCL+40 ns ns inter UPI-452 EXTERNAL DATA MEMORY READ CYCLE rwHLH~ _______ ALE~____________________________________________~~-, \ ~.________________ PSEN J /+1._ _ _ _ TLLDV _ _ _--I J' ,'-----', PORTO PORT2 ____~r~----~~P2~.~O--~P2~.-7~O~R-A~8--~A~15~FR~O~M~DP_H______-J'-__ A8~_ Al~5_F_R_O_M_P_C_H _ ___ 231428-19 EXTERNAL PROGRAM MEMORY READ CYCLE ALE ~~j.---TPLPH ----I TPXIZ TPXIX'" PORTO PORT 2 INSTR IN _______ J,~ __________________________________________' A8-A15 231428-20 9-48 inter UPI-452 EXTERNAL DATA MEMORY WRITE CYCLE TWHLH-I ALEJf h J \ PSENJ J WR TQVWH PORTO PORT2 TWHQX OATA OUT P2.0 - P2.7 OR A8 - A 15 FROM DPH A8-A15 FROM PCH 231428-21 SHIFT REGISTER MODE TIMING WAVEFORMS 9-49 UPI·452 EXTERNAL CLOCK DRIVE Symbol Parameter Min Max Units 1/TGLCL Oscillator Frequency 3.5 14 MHz TCHCX High Time 20 ns TCLCX Low Time 20 ns TCLCH Rise Time 20 ns TCHCL Fall Time 20 ns NOTE: External clock timings are sampled, not tested on all parts. SERIAL PORT TIMING-SHIFT REGISTER MODE Test Conditions: TA . Symbol = O·C to 70·C; Vee = 5V ± 1 0%; Vss = OV; Load Capacitance 14 MHzOsc Parameter Min Max = 80 pF Variable Oscillator Min Max Units TXLXL Serial Port Clock Cycle Time 857 12TCLCL ns TQVXH Output Data Setup to Clock Rising Edge 581 1OTCLCL -133 ns 26 2TCLCL-117 ns TXHQX Output Data Hold after Clock Rising Edge TXHDX Input Data Hold after Clock Rising Edge. TXHDV Clock Rising Edge to Input Data Valid 0 ns 0 1OTCLCL -133 581 ns EXTERNAL CLOCK DRIVE WAVEFORM 231428-23 AC TESTING INPUT, OUTPUT WAVEFORMS VCC-0.5 -V 0.2 Vcc+0.9 FLOAT WAVEFORMS )C. TIMING REFERENCE POINTS 0.45V -A._0_.2_V_c.,c-_0_._l- - - - - ' . 231428-25 For timing purposes a port pin is no longer floating when a 100 mV change from load voltage occurs, and begins to float when a 100 mV change from the loaded VOHIVOL level occurs. IOLIIOH;' ±20 mAo 231428-24 AC inputs during testing are driven at Vce -0.5V for a logic "I" and 0.45V for a logic "O'~. TIming measurements are made at VIH min. for a logic "I" and VIL max. for a logic "0". 9-50 intJ UPI-4S2 HLD/HLDA WAVEFORMS Arbiter Mode HLD _ _ _ _~t-.----THMIN I - THLAL '~......- - - - - - - - - - =\I ______________ 1l THHAH ~Vr--------- \~ 231428-26 Requestor Mode HLDA HLD C ----..~t----- TAMIN-------+l \~ _ _ _ _ _ _ _ _ ___ _ _ _ _ _ _ _..J/ ' ' ' =\1. ._-- 231428-31 HLD/HLDA TIMINGS Test Conditions: T A = O°C to + 70°C; Vee Symbol Parameter = 5V ± 10%, Vss = OV; Load Capacitance = 80 pF 14 MHzOsc Min Max Variable Oscillator Min Max Units THMIN HLD Pulse Width 386 THLAL HLD to HLDA Delay if HLDA is Granted 186 672 THHAH HLD to HLDA Delay 186 672 TAMIN HLDA Pulse Width 386 4TCLCL+l00 ns TAHHL HLDA Inactive to HLD Active 186 4TCLCL-l00 ns 4TCLCL+l00 9-51 ns 4TCLCL-l00 8TCLCL+l00 4TCLCL-l00 8TCLCL+l00 ns ns · UPI-452 HOST PORT WAVEFORMS TCC READ OR WRITE } ' TRV f TCC TDV DATA t r TDS -- ~ TDR TDH I.-TRQ~ \ DRQIN DRQOUT ) 231428-27 HOST PORT TIMINGS Test Conditions: TA Symbol = O°C to 70°C; Vee = 5V ±10%; Vss = OV; Load Capacitance = 80 pF Parameter 14 MHz Osc Min Max Variable Oscillator Min Max Units TCC Cycle Time 429 6TCLCL ns TPW· Command Pulse Width 100 100 ns TRV RecoveryTime 60 60 ns TAS Address Setup Time 5 5 ns TAH Address Hold Time 30 30 ns TDS WRITE Data Setup Time 30 30 ns TDHW WRITE Data Hold Time 5 TDHR READ Data Hold Time 5 TDV READ Active to Read Data Valid Delay TDR TRO 5 ns 92 92 ns WRITE Inactive to Read Data Valid Delay (Applies only to Host Control SFR) 343 4.8TCLCL ns READ or WRITE Active to DROIN or DRQOUT Inactive Delay 150 150 ns 9-52 5 ns 40 40 UPI-452 REVISION HISTORY DOCUMENT: UPI-452 Data Sheet OLD REVISION NUMBER: 231428-004 NEW REVISION NUMBER: 231428-005 1. Maximum Clock Rate was changed from 16 MHz to 14 MHz. This change is reflected in all Maximum Timing specifications. 2. The proper range of values for ITHR has been changed from [0 to (CBP-2) 1 to [ 0 to (CBP-3) 1 to ensure proper setting of the Input FIFO request for service bit. See the following sections: INPUT FIFO CHANNEL, and INPUT AND OUTPUT FIFO THRESHOLD SFR (ITHR & OTHR). 3. The proper range of values for OTHR has been changed from [ 1 to ((80H-CBP)-1 ) 1to [ 2 to ((80-CBP)-1 ) 1 to ensure proper setting of the Output FIFO request for service bit. See the following sections: OUTPUT FIFO CHANNEL, FIFO-EXTERNAL HOST INTERFACE FIFO DMA FREEZE MODE, and INPUT AND OUTPUT FIFO THRESHOLD SFR (ITHR & OTHR). 4. The following D.C. Characteristics were deleted from the data sheet: = = VOH2 = leel = VOH 0.75* Vee @ IOH VOHl 0.75* Vee @ IOH 3.0V @ = -25/-LA, = 150 /-LA, IOH = 1 rnA, and 15 rnA @ Vee = 5.5V (87C452P). See D.C. CHARACTERISTICS TABLE. 5. The parameter descriptions for THHAH and THLAL has been reversed and their maximum specification for clock rates less than 14 MHz has been changed from [4TCLC + 100 nsl to [8TCLC + 100 ns]. See HLD/HLDA TIMINGS. 6. TAMIN specification has been removed from the Arbiter Mode waveform diagram and added to the Requestor Mode waveform diagram. See HLD/HLDA WAVEFORMS. 9-53 intel~ UPITM-41, 42: 8041AH/8042AH/8741AH/8742AH UNIVERSAL PERIPHERAL INTERFACE 8-BIT SLAVE MICROCONTROLLER 6 MHz; UPI-42: 12 MHz • UPI-41: Pin, Software and Architecturally Fully Compatible with all Intel and Most • Other Microprocessor Families ROM and EPROM • Interchangeable Versions Expandable I/O • Sync Mode Available • Compatible with all UPI-41 and UPI-42 Products 8-Bit CPU plus ROM/EPROM, RAM, I/O, • Timer/Counter and Clock in a Single • Over 90 Instructions: 70% Single Byte Package • Available in EXPRESS x 8 ROM/EPROM, 256 x 8 RAM on • 2048 UPI-42, 1024 x 8 ROM/EPROM, 128 x 8 • - Standard Temperature Range RAM on UPI-41, 8-Bit Timer/Counter, 18 Programmable I/O Pins Programming™ Algorithm • -inteligent Fast EPROM Programming One 8-Bit Status and Two Data • Registers for Asynchronous Siave-toin 40-Lead Cerdip, 40-Lead • Available Master Interface Plastic and 44-Lead Plastic Leaded Chip Carrier Packages DMA, Interrupt, or Polled Operation • Supported (See Packaging Spec., Order #231369) The Intel UPI-41 and UPI-42 are general-purpose Universal Peripheral Interfaces that allow the designer to develop customized solutions for peripheral device control. They are essentially "slave" microcontrollers, or microcontrollers with a slave interface included on the chip. Interface registers are included to enable the UPldevice to function as a slave peripheral controller in the MCSTM Modules and iAPX family, as well as other 8-, 16-bit systems. To allow full user flexibility, the program memory is available in ROM, One-Time Programmable EPROM (OTP) and UV-erasable EPROM. All UPI-41 and UPI-42 devices are fully pin compatible for easy transition from prototype to production level designs. These are the memory configurations available. UPI Device 8042AH 8742AH 8041AH 8741AH '"" ROM EPROM 2K - - 2K 1K - - 1K Programming Volt __ o:..;.':X= T_ES_T_P_OI_N_TS_< __ 210393-14 210393-15 DRIVING FROM EXTERNAL SOURCE-TWO OPTIONS + 5V >6 MHz 470~~ XTAL1 »--+----"1 XTAl1 + 5V XTAl2 210393-16 210393-17 Rise and Fall Times Should Not Exceed IOns. Resistors to Vcc are Needed to Ensure VIH = 3.5V if TTL Circuitry is Used. LC OSCILLATOR MODE CRYSTAL OSCILLATOR MODE CI L C 45 H 20 pF 120 H 20pF NOMINAL 5.2 MHz 3.2 MHz . 1 f = 27TW ~ ~--+--:===r _ I f---'---'---:-i 9-67 XTAL2 C3 2 210393-18 Each C Should be Approximately 20 pF. including Stray Capacitance. ,1:<;;;12' XlALI c, - C,=C+3Cpp Cpp '" 5-10 pF Pin-to-Pin Capacitance : C1 C2 C3 210393-19 5 pF (STRAY 5 pF) (CRYSTAL + STRAY) 8 pF 20-30 pF INCLUDING STRAY Crystal Series Resistance Should be Less Than 30n at 12 MHz; Less Than 75n at 6 MHz; Less Than 180n at 3.6 MHz_ infef UPI·41/42 WAVEFORMS READ OPERATION-DATA BUS BUFFER REGISTER cS OR AO ~ X (SYSTEM'S ADORESS BUS) -tA~- 'R. -tJlA- \ RD V -'.D- (READ CONTROL: --'OF tAlI 210393-20 WRITE OPERATION-DATA BUS BUFFEi=l REGISTER BOR Ao ~"----_--,-- _ _ - r~"._~~-_-=-,w_w~-_- ~ !SVSTEM'S ADDRESS BUS) WR (WRITE CONTROll DATA BUS DATA ) (lNPUTI _ _....,.._M_A_Y_C_HA_N...;G_'_ _ _J DATA --DATA VALlD_V It\'-____M_A_Y_C_HA_N_G_'_ _ _ __ 210393-21 CLOCK TIMING 2.4V XTAL2 1.6V .4SV .. tCYC 210393-22 9-68 UPI-41/42 WAVEFORMS (Continued) COMBINATION PROGRAM/VERIFY MODE ---,V I PROGRAM I-tR, VEAH ('2.5V) EA V,H (5V) V,L(OV) TO V,H (5V) V,L(OV) RESET D8 0-DB 7 V,H ,(5V) V V,H (5V) V,L(OV) V,L(OV) '"'""""' tWT tww~ r- \. I--tAW- -tWA~ ::>--- - --~ttDO ADDRESS DATA IN __ '~ - { NEXT ADDRESS '1-- X ~ ADDRESS tOE END OF PRO GRAM OR VERIFY PROGRAM - - --, VOOH ('2.5 V). VOO VOOL(5 v) PROG - - trw - - -+ '\ .....J ,L1 (OV) V,H (5V) P20- P22 - VERIFY 1- NEXT ADDRESS tod A \.... t-tpw - V,H (5V) ~ -- V,L(OV) t ow - -two 210393-23 NOTES: 1. Ao must be held low (OV) during program/verify modes. 2. For V,H. V,H1. V,L. V,L1. VOOH. and VOOL. please consult the D.C. Characteristics Table. 3. When programming the 8741AH/8742AH. a 0.1 fLF capacitor is required across VOO and ground to suppress spurious voltage transients which can damage the device. VERIFY MODE EA VEAH:::~~~~--------------------------------VIH VIL TO RESET/ VIH ---4-----..; ,'---- VIL VIH' VIL' VIH 080-087 VIL P20-P22 ~ NEXT ADDRESS VIH==X VIL '---------------------------. NOTES: 1. PROG must float if EA is low. 2. PROG must float or = 5V when EA is high. 3. P1Q-P17 = 5V or must float. 4. P24-P27 = 5V or must float. 5. Ao must be held low during programming/verify modes. 9-69 210393-29 inter UPI-41/42 WAVEFORMS (Continued) DMA - 'ACC - -'CAC - DATA BUS 'ACC -- -'CAC - VALID VALID -IACDORO -It - 'CRO-- 210393-25 PORT 2 SYNC EXPANDER PORT PORT 20.3 DATA OUTPUT EXPANDER PORT INPUT PCRT 20-3 DATA PROG 210393-26 PORT TIMING DURING EXTERNAL ACCESS (EA) SYNC P10-17 P20-22 / PORT DATA X \ / \ X PC PORT DATA X PC 210393-27 On the Rising Edge of SYNC and EA is Enabled, Port Data is Valid and can be Strobed on the Trailing Edge of Sync the Program Counter Contents are Available_ 9-70 inter UPI-41/42 Table 2. UPITM Instruction Set Mnemonic Description ACCUMULATOR ADD A, Rr Add register to A ADD A, @Rr Add data memory toA ADD A, #data Add immediate to A ADDCA,Rr Add register to A with carry ADDCA,@Rr Add data memory to A with carry ADDC A, #data Add immediate to A with carry ANLA, Rr AND register to A ANL,A@Rr AND data memory toA ANLA, #data AND immediate to A ORLA, Rr OR register to A ORL,A,@Rr OR data memory toA ORLA, #data OR immediate to A XRLA, Rr Exclusive OR regis· terto A XRLA, @Rr Exclusive OR data memory to A XRLA. #data Exclusive OR imme· diate to A INCA IncrementA Decrement A DECA CLRA Clear A CPLA Complement A Decimal Adjust A DAA SWAP A Swap nibbles of A Rotate A left RLA RLCA Rotate A left through carry RRA Rotate A right RRCA Rotate A right through carry INPUT/OUTPUT INA,Pp Input port to A OUTLPp,A Output A to port ANL Pp, #data AND immediate to port ORL Pp, #data OR immediate to port INA,DBB Input DBB to A, clearlBF OUTDBB,A Output A to DBB, setOBF MOVSTS,A ~ -A7 to Bits 4-7 of Status MOVDA,Pp Input Expander port to A MOVDPp,A Output A to Expander port ANLDPp,A AND A to Expander port ORLDPp,A OR A to Expander port Bytes Cycles Mnemonic 1 1 1 1 DATA MOVES MOVA,Rr MOVA,@Rr 2 2 1 1 1 1 2 2 1 1 1 1 2 2 MOV@Rr, # data MOVA,PSW MOVPSW,A XCHA, Rr 1 1 1 1 XCHA,@Rr 2 2 XCHDA,@Rr 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 1 1 1 1 1 1 2 1 2 1 2 1 2 MOVA, #data MOVRr,A MOV@Rr,A MOV Rr, #data MOVPA,@A MOVP3,A,@A Description Bytes Cycles Move register to A Move data memory toA Move immediate to A Move A to register Move A to data ' memory Move immediate to register Move immediate to data memory MovePSWtoA MoveAtoPSW Exchange A and register Exchange A and . data memory Exchange digit of A and register Move to A from current page Move to A from page 3 1 1 1 1 2 2 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 TIMER/COUNTER Read Timer/Counter MOVA,T Load Timer/Counter MOVT, A STRTT Start Timer Start Counter STRTCNT Stop Timer/Counter STOP TCNT EN TCNTI Enable Timer/ Counter Interrupt DIS TCNTI Disabie Timer/ Counter Interrupt CONTROL ENDMA ENI DIS I EN FLAGS SELRBO SELRB1 NOP REGISTERS INCRr INC@Rr DECRr 9-71 Enable DMA Hand· shake Lines Enable IBF Interrupt Diable IBF Inter· rupt Enable Master Interrupts Select register bank 0 Select register bank 1 No Operation Increment register Increment data memory Decrement register inter UPI-41/42 Table 2. UPITM Instruction Set (Continued) Mnemonic Description Bytes Cycles Jump to subroutine Return Return and restore status 2 1 1 2 2 2 Clear Carry Complement Carry Clear Flag 0 . Complement Flag 0 Clear F1 Flag Complement F1 Flag 1 1 1 1 1 1 1 1 1 1 1 1 Jump unconditional Jump indirect Decrement register and jump " Jump on Carry = 1 Jump on Carry = 0 Jump on A Zero Jump on A not Zero Jump on TO = 1 Jump on TO = 20 0 .'8 700 100 ns 100 pF Load ns 650 ns 80 pF Load TEST POINTS 0.45 _ _ _- J 231317-3 9-75 8243 WAVEFORMS PROG ~~-- PORT 2 __________ ~_'K ________________ ~ FLOAT FLOAT PORT2 PORTS 4·7 PREVIOUS OUTPUT VALID PORTS 4·7 INPUT VALID les 'OUTPUT VALID les 231317-4 9-76 inter 8243 125 100 C ! ::l 9 ~ ... .. .. 75 Z II: II: :;) U Z iii .... 50 GUARANTEED WORST CASE CURRENT SINKING CAPABILITIES OF ANY 1/0 PORT PIN '". TOTAL SINK CURRENT OF ALL PINS j! ...0 25 13 MAXIMUM SINK CURRENT ON ANY PIN @ .45Y MAXIMUM 10L WORST CASE PIN (mAl 231317-5 Figure 3 Example: This example shows how the use of the 20 mA sink capability of Port 7 affects the sinking capability of the other 110 lines. Sink Capability The 8243 can sink 5 mA @ 0.45V on each of its 16 110 lines simultaneously. If, however, all lines are not sinking simultaneously or all lines are not fully loaded, the drive capability of any individual line increases as is shown by the accompanying curve. An 8243 will drive the following loads simultaneously. 2 loads-20 mA @ 1V (port 7 only) 8 10ads-4 mA @ 0.45V 6 loads-3.2 mA @ 0.45V For example; if only 5 of the 16 lines are to sink current at one time; the curve shows that each of those 5 lines is capable of sinking 9 mA @ 0.45V (if any lines are to sink 9 mA the total IOL must not exceed 45 mA or five 9 mA loads). Example: How may pins can drive 5 TTL loads (1.6 mAl assuming remaining pins are unloaded? Is this within the specified limits? EIOL = (2 x 20) + (8 x 4) + (6 x 3.2) = 91.2 mAo From the curve: fot IOL = 4 mA, EIOL :::: 93 rnA. Since 91.2 mA < 93 mA the loads are within specified limits. Although the 20 mA @ 1V loads are used in calculating EIOL, it is the largest currerit required @ 0.45V which determines the maximum allowable EIOL. IOL = 5 x 1.6 mA = 8 mA ElOL = 60 mA from curve # pins = 60 mA + 8 mA/pin = 7.5 = 7 In this case, 7 lines can sink 8 mA for a total of 56 inA. This leaves 4 mA sink current capability which can be divided in any way among the remaining 8 110 lines of the 8243. NOTE: A 10 Ko, to 50 Ko, pull up resistor to + 5V should be added to 8243 outputs when driving to 5V CMOS directly. 9-77 inter 8243 Figure 4. Expander Interface P20·P23 --{I..._--IX'-___..J)>--ADDRESS (4-8IT5) DATA (4·8IT51 231317-7 Figure 5. Output Expander Timing 11048 PORT 2 PROG~--------------~----------------~------~--------~--~------------~ 231317-8 Figure 6. Using Multiple 8243'5 9-78 June 1985 Applications Using the 8042 UPI™ Microcontroller 1. The 8042 in the IBM PC/AT 2. Using the 8042 vs. using microcontrollers 3. Custom serial protocol with the 8042 Order Number: 231600-001 9-79 8042 UPI™ MICROCONTROLLER APPLICATION #1 THE 8042 UPI™ MICROCONTROLLER IN THE IBM PC/AT The following example is an important application of U PIs but there are many more. It is truly a universal device that can be customized to all those "non-standard peripheral control problems. Applications are limited only by imagination. Think UPIs for non-standard peripherals!! M ... IBM PC/AT (AFTER) IBM PC/AT (BEFORE) ... 8042 KEYBOARD KEYBOARD NEW FUNCTIONS THE FUTURE IS THE KEY The 8042 also brings new functions to the PC/AT: Modifications and upgrades are easy because of the 8042's programmable flexibility and power: • • • • • • • Keyboard lockup security (front panel key) CRT type input to the system Diagnostics/ self testing of keyboard interface Parity check and retry PC and PC/AT keyboard interchangeability Reset CPU to compatible mode Address wrap-around protect in compatible mode • • Change keyboard scan codes (in 8042 ROM) Increase functionality of keyboard interface through software and/ or unused I/O lines on 8042 • Control other PC/AT functions with these I/O lines Summary In short, IBM used the 8042 since it: • • • • Offloads housekeeping details from the CPU Facilitates modular system design Offers a customized peripheral Provides a clean, efficient upgrade path These benefits can apply to many of your applications also. . 9-80 8042 UPI'M MICROCONTROLLER APPLICATION #2 USING THE 8042 VS. USING MICROCONTROLLERS PROBLEM WHY THE SWITCH What do you db when you're making SBX and VME modules for a voice digitizing board and you need: After studying the four requirements for this module, it is easy to see why they switched. The first two (A/ D interface and 12 MHz) were met by both solutions. However, it is clear the second alternative is much better on board space and on overall cost. There are fewer chips, so they could avoid a multi-layer board and thus save a lot in total cost. Actual chip costs are within 10% of each other (a typical microcontroller like a Z8 or 6801 plus 2 latches compared to an 8042), and they do the same thing. I) 2) 3) 4) an interface to an A/ D Converter with 12 M Hz operation, an absolute minimum chip count, and very low cost (for the PC market). A leading vendor was faced with exactly this problem. Here is what they started with, and the bottom figure shows how they improved things with the 8042 UP!'" microcontroller. SOLUTION WHAT'S THE DIFFERENCE People tend to think of microcontrollers whenever there is a "non-standard" device to control. CRTs, disk drives and DRAMs all have dedicated controllers, but printers, front panels, displays and keyboards don't, because they are all "non-standard" devices. Microcontrollers can be customized to these applications. BEFORE .. . SYSTEM The problem is when the device is a "slave" or a peripheral, regular microcontrollers need the extra circuitry shown previously. That's why we invented U Pis. They are simply microcontrollers with the slave interface built in. They are, therefore, more efficient to use in peripheral-type configurations. UPI SLAVE INTERFACE MICROPHONE AFTER .. . SYSTEM MICROCONTROLLER UPls may be misunderstood because of the funny name. They shouldn't be. It's really simple. When faced with non-standard device control, think microcontrollers. If it's a master-only configuration, think regular microcontrollers. If it's a slave/peripheral configuration, think UPls. MICROPHONE The 8042 integrates two latches and the microcontroller into a single-chip solution. 9-81 8042 UPI™ MICROCONTROLLER APPLICATION #3 . CUSTOM SERIAL PROTOCOL WITH THE 8042 UPI™ MICROCONTROLLER BACKGROUND The 8042 UPI Microcontroller, because of its programmability is being used everywhere, and here is another example. A leading board vendor was designing a communications concentrator board. They wanted a way to: CPU would have caused tremendous system performance degradation. They needed all of these features to offer a competitive product, so they looked to the 8042 UPI Microcontroller. Since the speed requirements were not too great (4800 baud), they could implement the protocol in software. The 8042's programmability gave them all the flexibility needed to incorporate the formatting, handshaking and error checking desired. Moreover, the on-chip slave interface made communication with the minicomputer's bus a snap. I) interface 8 serial channels to a minicomputer bus 2) operate these at 4800 baud 3) use one board 4) provide a custom serial protocol that --,- communicated commands and data packets - assembled the data packets - provided handshaking signals - checked for framing, timing, parity, noise, modem and synchronization errors - provided self-test diagnostics SUMMARY In short, the 8042 allowed this company to implement a custom serial communication protocol that in turn allowed them to offer a customized, competitive interface board to their customers. THE 8042 SOLUTION There certainly wasn't an "off-the-shelf' chip that would satisfy the above requirements, and using the main .. Don't some of your applications need customized interfaces? 9-82 inter APPLICATION AP-161 NOTE November 1986 Complex Peripheral Control with the UPI-42AH CHRISTOPHER SCOTT TECHNICAL MARKETING ENGINEER Order Number: 230795-002 9-83 intJ AP-161 Until recently, the dedicated control processor approach was usually not cost effective due to the large number of components needed; CPU, RAM, ROM, I/O, and Timer/Counters. To help make the approach more cost effective, in 1977 Intel introduced the UPI41 family of Universal Peripheral Interface controllers consisting of an 8041AH (ROM) device and an 8741AH (EPROM) device. These devices integrated the common microprocessor system functions into one 40 pin package. The UPI-42AH family, consisting of the 8042 and 8742AH, further extends the UPI's cost effectiveness through more memory and higher speed. INTRODUCTION The UPI-42AH represents a significant growth in UPI capabilities resulting in a broader spectrum of applications. The UPI-42AH incorporates twice the EPROM/ ROM of the UPI-41AH, 2048 vs 1024 bytes, 256 bytes of RAM, and operates at a maximum speed twice that of the UPI-41AH, i.e., l2MHz vs 6MHz. The ROM based 8042 and the EPROM based 8742AH provide more highly integrated solutions for complex stepping motor and dot matrix printer applications. Those applications previously requiring a microprocessor plus a UPI chip can now be implemented entirely with the UPI-42AH. Another member of the UPI family is the Intel 8243 Input/Output Expander chip. This chip provides the UPI-41AH and UPI-42AH with up to 16 additional independently programmable I/O lines, and interfaces directly to the UPI-41AH/42AH. Up to seven 8243s can be cascaded to provide over 100 I/O lines. The software features of the UPI-42AH, such as indirect Data and Program Memory addressing, two independent and selectable 8 byte register banks, and directly software testable I/O pins, greatly simplify the external interface and software flow. The software and hardware design of the UPI-42AH allows a complex peripheral to be controlled with a minimum of external hardware. aST 0 Vee XTAll TFST 1 XTAl' P27 OACK RFSfT P26 ORO SS cs ,. The UPI is a single chip microcomputer with a standard microprocessor interface. The UPI's architecture, illustrated in Figure 3, features on-chip program memory, ROM (8041A/8042) or EPROM (8741A/ 8742AH), data memory (RAM), CPU, timer/counter, and I/O. Special interface registers are provided which enable the UPI to function as a peripheral to an 8-bit central processor. ' Using one of the UPI devices, the designer simply codes his proprietary peripheral control algorithm into the, UPI device itself, rather than into the main system software. The UPI deVice then performs the peripheral control task while the host processor simply issues commands and transfers data. With the proliferation of microcomputer systems, the use of UPls or slave microprocessors to off load the main system microprocessor has become quite common. P25 IBF P24 oaF P17 RO p,. AO P,s WR p,. SYNC P13 DO P" 0, P" 02 P,o 03 Voo D. PROG Os P23 Os P22 07 P2' V55 P20 This Application Note describes how the UPI-42AH can be used to control dot matrix printing and the printer mechanism, using stepper motors for carriage/ print head assembly and paper feed motion. Previous Intel Application Notes AP-27, AP-54, and AP-9l describe using intelligent processors and peripherals to control single solenoid driven printer mechanisms with 80 character line buffering and bidirectional printing. This Application Note expands on these previous themes and extends the concept of complex device control by incorporating full 80 character line buffering, bidirectional printing, as well as drive and feedback control of two four phase stepper motors. 230795-1 Figure 1. UPI-42AH Pin Configuration The Application Note assumes that the reader is familiar with the 8042/8742AH and 8243 Data Sheets, and UPI-41AH/42AH Assembly Language. Although some background information is included, it also assumes a basic understanding of stepper motors and dot matrix printer mechanisms. A complete software listing is included in Appendix A. Many microcomputer systems need real time control of peripheral devices such as a printer, keyboard, complex motor control or process control. These medium speed but still time consuming tasks require a fair amount of system software overhead. This processing burden can be reduced by using a dedicated peripheral control processor. 9-84 AP-161 INT(IlNAL '"' '" PORT 1 WASHR SrSTE ... INTERfACE l~,~ DAU MUoilORY " E " CONTROL lOGIC P£RIPHERAl IHTERH.C£ k======- ';0 PORT 2 POIlT4-1 UP"'NO£R ItHERfAC( lK • H ,K • ~ PIIOM AO"" NIOGR ... '" "'f"'OA' CRYSUL LCOR CLOCK '00 - POWE" { _ _ PROM PROGAA ... SUPPL~ vee _ _ _ "'5 SUPPLY ' " - - - GROUND 8·81T TIMER E~ENT COUNTER 230795-2 Figure 2. UPI-42AH Block Diagram main CPU, UPI, RAM, ROM, and I/O onboard the peripheral. The CPU acted as supervisor and used parallel processing to achieve accurate stepper motor control via a UPI, character buffering via the I/O device, RAM, and ROM. The CPU performed real-time decoding of each character into a dot matrix pattern. This Application Note demonstrates that the increased memory and performance of the UPI-42AH facilitates integrating these control functions to reduce the cost and component count. DOT MATRIX PRINTING A dot matrix printer print head typically consists of seven to nine solenoids, each of which drives a stiff wire, or hammer, to impact the paper through an inked ribbon. Characters are formed by firing the solenoids to form a matrix of "dots" (impacts of the wires). Figure 4 shows how the character "E" is formed using a 5 X 7 matrix. The columns are labeled Cl through C5, and the rows Rl through R7. The print head moves left-toright across the paper, so that at time Tithe head is over column Cl. The character is formed by activating the proper solenoid as the print head sweeps across the character position. THE PRINTER MECHANISM The printer mechanism used in this application is the Epson Model 3210. It consists of four basic sub-assemblies; the chassis or frame, the paper feed mechanism and stepper motor, the carriage motion mechanism and stepper motor, and the print head assembly. Dot matrix printers are a cost effective way of providing good quality hard copy output for microcomputer systems. There is an ever increasing demand for the moderately priced printer to provide more functionality with improved cost and performance. Using stepper motors to control the paper feed and carriage/print head assembly motion is one way of enabling the dot matrix printer to provide more capabilities, such as expanded or contracted characters, dot or line graphics, variable line and character spacing, and subscript or superscript printing. The paper feed mechanism is a tractor feed type. It accommodates up to 8.5 inch wide paper (not including tractor feed portion). There is no platen as such; the paper is moved through the paper guide by two sprocketed wheels mounted on a center sprocket shaft. The sprocket shaft is driven by a four phase stepper motor. The rotation of the stepper motor is transmitted to the sprocket shaft through a series of four reduction gears. However, stepper motors require fairly complex control algorithms. Previous solutions involved the use of a 9-85 intJ AP-161 l CLOCK J ! ! 1024 • 8, 2048 • 8 PROGRAM MEMORV (ROM/EPROM) 8-BITCPU I I 64.8,128.8 DATAMEMORV II JI " " 8-BIT DATA BUS INPUT REGISTER I 8-BIT TIMER/COUNTER 8-BIT DATA BUS OUTPUT REGISTER 8-BIT STATUS REGISTER II II 18 I/O LINES PERIPHERAL INTERFACE AND I/O EXPANSION SYSTEM INTERFACE 230795-3 Figure 3. UPI-41AH, 42AH Functional Block Diagram Cl C2 C3 The carriage motion mechanism consists of another four phase stepper motor which controls the left-toright or right-to-Ieft print head assembly motion. The print speed is 80 CPS maximum. Both the speed of the stepper motor and the movement of the print head' assembly .are independently controllable in, either direction. The rotation of the stepper motor is converted to the linear motion ofthe print head assembly via a series of reduction gears and a toothed drive belt. The drive belt also controls a second set ofreduction gears which advances the print ribbon as the print head assembly moves, CS Rl R2 R3 DODD 00'00 Two optical sensors provide feedback information on the carnage assembly position and speed. The first of these optical sensors, called the 'HOME RESET' or HR, is mounted near the left-most physical position to which the print head assembly can move. As the print head assembly approaches the left-most position, a flange on the print head assembly interferes with the light source and sensor, causing the output of the sen" sor to shift from a logic level one to zero. The rightmost printer position is monitored in software rather than by another optical sensor. The right-most print position is a function of the number of characters printed and the distance required to print them. R4 RS R6 0'000 DODD R7 The second optical sensor, called the '·PRINT TIMING SIGNAL' or PTS, provides feedback on carriage stepper motor velocity and relative position within a 230795-4 Figure 4. Character E in 5 x 7 Dot Matrix Format 9-86 inter AP-161 STEPPER MOTOR ~ STEPPER MOTOR FRAME REDUCTION GEARS 230795-5 Figure 5. Carriage Stepper Motor Assembly given step of the motor. The feedback is generated by the optical sensor as an "encoder disk" moves across it. Figure 5 illustrates the carriage stepper motor, optical sensor, encoder disk and reduction gears, and drive belt assembly. The optical sensor outputs a pulse train with the same period as the phase shift signal used to drive the stepper, but slightly out of phase with it when the motor is at a constant speed (see Software Functional Block: Phase Shift Data for additional details). The disk acts as a timing wheel, providing feedback to the UPI software of the carriage speed, position, and optimum position for energizing the print head solenoids. The two optical sensors are monitored under software and provide the critical feedback needed to control the print head assembly and paper feed motion accurately. The process of stepper motor drive and control via feedback signals is called "closed loop" stepper motor control, and is covered in more detail in the software discussion. to print a variety of character fonts, such as expanded or contracted characters, as well as line or block graphics (see Appendix B, Printer Enhancements). It also facilitates printing lower case ASCII characters with "lower case descenders." That is to say, certain lower case letters (e.g., y, p, etc.) will print below the bottom part of all upper case letters. DOT WIRE ! MAGNETIC POLE The print head assembly consists of nine solenoids and nine wires or hammers. Figure 6 illustrates a print head assembly. The available dot matrix measures 9 x 9. This large matrix enables the Epson 3210 print mechanism MAGNET 230795-6 Figure 6. Print Head Solenoid Assembly 9-87 inter • AP-161 EXTERNAL -----".. P60.62; 63 P70-73 s!T~~~~s 0'5V 0 ~~ a: ..... "'''' w'" ::>'" In r ~ Ii: ~ P20_23 1J 1\ ~ -I T,O ~ ~ 0 ~ w'" r \ vi CONTROL: P50-53 (CURRENT LIMITING) -\ -V PRINT MECHANISM DRIVE CIRCUIT PROG I PT3 OPTICAL SENSOR Tl WR r-- a: ~ .... VI P40-43 HR OPTICAL SENSOR UPI·42 Il. DATA STROBE P20-23 PROG 0 ... ......w ..: STEPPER MOTOR CONTROL 8243 ON LINE/SELECT r-- ~~ ---vI a: ..... "'''' ~ ~ P24 PRINT HEAD TRIGGER P27 P25 Pl0-17 ::>'" PRINT HEAD SOLENOID DATA In P26 ~ \ -I 230795-8 Figure 7. Hardware Interface Block Diagram Application Note followed those recommendations exactly (see Appendix C, Printer Mechanism Drive Circuit Schematics). HARDWARE DESCRIPTION Figure 7 shows a block diagram of the UPI-42AH and 8243 interface to the printer mechanism drive circuit. A complete schematic is shown in Figure 8. The UPI-42AH provides all signals necessary to control character buffering and handshaking, paperfeed and carriage motion stepper motor timing, print head solenoid activation, and monitoring of external status switches. I/O Ports The lower half of the UPI-42AH Port 2, pins 0-3, provides an interface to the 82431 I/O expander. The PROG pin of the UPI-42AH is used as a strobe to clock address and data information via the Port 2 interface. The extra 16 I/O lines of the 8243 become PORTS 4,5,6, and 7 to the UPI software. Combined, the UPI-42AH and 8243 provide a total of 28 independently programmable I/O line. These lines are used as shown in Figure 9. The Epson 3210 printer mechanism manual recommends a specific interface circuit to provide proper drive levels to the stepper motors windings and print head solenoids. The hardware interface used for this 9-88 inter AP-161 ... - '-1'1'- J > - - - - - "b \(5' 0 .. 0" .\. ("., S!~~~~~5 IllG' (.O .... !Cl0~ ~il·"'·I·:~ ~ , ~ "'&r- a • " " ' - -_ _J u .. '~:--"----------~ Mom .;31111 La 1l2COl I CUAAENT l'IoIIHA ell so. 0" '"'N"~/ (FLOWCHART oS) ,"OCESS CH"AC""S TRANSLATE CHARACTERS-TO-OOlS (FLOWCHART "9) ( . . / >t"E ,",", HEAD SOLE:OIO TRIGGER N 'T [OlH / I PAPER FE EO STEPPER MOTOR CRIVI'. (FLOWCHART" III ~ X-- / CAR"'AGE ST""" I / MOTOR ACCELERATION nME STORAGE (FLOWCHART 07) ~ N > DECHE"A" CA""'AGE / STEPPER MOTOR (FLOWCHART "10) I 7 230795-15 Flow Chart No.1. Main Program Body 9-95 inter AP-161 Upon power-on reset, a software and hardware initialization is perfonned. This stabilizes and sets inactive the printer hardware and electronics. The print head assembly is then moved to establish its HOME position. The default status registers are set for character buffering, carriage, and paper feed stepper motor drive. The .External Status switches are checked; FORMFEED, LINEFEED, ON/OFF LINE, and Character Print TEST. If the printer is ON LINE; the software will loop on filling the Data Memory Character Buffer. Memory and Register Allocation DATA MEMORY ALLOCATION (RAM) The UPI-42AH has 256 bytes of Data Memory. Sixteen bytes are used by the two 8 byte register banks (RBO and RBI). Sixteen additional bytes are used for the Program Stack. The Stored Time Constants utilize 11 bytes, while the stepper motor phase storage requires 4 bytes. Below is a detailed description of Data and Program Memory. Character or data input to the UPI-42AH is interrupt driven. Characters sent by the host system set the Input Buffer Full (IBF) interrupt and the IBF Program Status flag. Character input servicing (completed during the paper feed and carriage stepper motor drive end Delay subroutine) tests for various ASCII character codes, loads characters into the Character Buffer (CB), and repeats until one of several conditions sets the CB Full status flag. Once the CB Full flag is set, further character transmission by the host system is inhibited and printing can begin. Hex Address 2F-7FH Description r----..., SO Character Line Buffer (SO Bytes) 2S':'2EH 1-----1 Stored Time Constants Buffer (11 Bytes) The carriage stepper motor is initialized, and drive begins for the direction indicated. The motor is accelerated to constant speed, printable character codes are translated to dot patterns and printed (if printing is enabled), and the motor is decelerated to a stop. Two timing loops guarantee both constant speed and protection (Failsafe Time) against stepper motor burn out due to high current overload. The two optical sensors, described in the Printer Mechanism section above, are constantly monitored to maintain constant speed, and trigger print head solenoid firing. 24H 1-----1 Unused 23H 1-----1 Character Print Test ASCII Code Start Temporary Storage 22H I - - - - l Pseudo Register: Paperfeed Stepper Motor Last Phase Indirect Address 21 H I----'--l Pseudo Register: Carriage Stepper Motor Forward/Reverse Last Phase Once the line is printed and the carriage stepper motor drive routine has been completed, a Linefeed is forced. The paper feed stepper motor drive subroutine tests the number of lines to move, and energizes the paper feed stepper motor for the required distance. The lines per page default is 66; if 66 lines have been received, a Fonnfeed to Top-of-Next-Page is perfonned. The TopOf-Page is set at Power On/Reset. 20H 1-----1 Pseudo Register: Last Phase of lS-l FH 1-----1 Register Bank 1: Stepper Motor Not Being Driven Character ProceSSing S-17H When the EOF code is received, the EOF status flag is set. When the last line has been printed, the EOF check will force the print head assembly to the HOME position. The EOF flag is tested following each paperfeed stepper motor drive. The next entry to the External Status Check subroutine begins a loop which waits for input from either the external status switches or the host system. 0-07H S Level Stack 1-----1 Register Bank 0: Stepper Motor Forward/Reverse Acceleration/Drive Figure 19. Data Memory Allocation Map The software character dot matrix used in this application is 5 x 7 of the available 9 x 9 print head .solenoid matrix. Although lower case descenders and blocklline graphics characters are not implemented, Appendix B, Printer Enhancements, discusses how and where these enhancements could be added. The software imple. ments the full 95 ASCII printable characters set. Register Bank 0 is used for stepper motor drive functions. Register Bank 1 is used for character processing. Each register bank's register assignments is listed in Figures 20 and 22, respectively. Each register bank has one register allocated as a Status Register. Figures 21 and 23 detail the Status Register flag assignments. Note 9-96 inter AP-161 that bit 7 of each Status Byte is used as a print head assembly motion direction flag. This saves coding of the Select Register Bank (SEL RBn) instruction at each point the flag is checked. Bit Definition CB Registers: 1::: Initialize 10="00 Not Initialize, 1~CR/(LF)/Oo Not CR/(LF) Character Buffer Fullo 1/Not FulioO. 1° EOF/O~ Not EOF (unused) Register Bank 0 Program Register Label Description RO R1 R2 R3 R4 R5 R6 R7 TmpROO TStrRO GStR20 PhzR30 CntR40 TConRO LnCtRO OpnR70 L..._ _ _ _ _ _ Character Lookup Table Page: RBO Temporary Register Store Time Register General Status Register Stepper Motor Step Register Count Register Time Constant Register Line Count Register Available, Scratch 1o Pg. 1, OoPg. 2 Character Initialized, 1;: Done/O= Nol Done ' - - - - - - - - - Camage Stepper Motor Direction L-to-R 1. R-to-LoO 230795-17 Figure 23. Register Bank 1 Status Byte Flag Assignments Figure 20. Register Bank 0 Register Assignment PROGRAM MEMORY ALLOCATION (EPROM/ROM) Bit Definition The UPI-42AH has 2048 bytes of Program Memory divided into eight pages, each 256 bytes. Figure 24 illustrates the Program Memory allocation map by page. Accel/Oecelerale Drive Ready l/NotRdy 0 1 Do Not PnntlO Print 1 Form FeedlO Line Feed 1 Fa.JSafe·Q Constant Time Window Aceel 'Deceleration Inlltaltzalton 1 Done/D Not Done Stepper Motor at Speed and Pnnt Head Not Left of Home 1 Sync/O· Not Sync"d. Print Head Initialize and Fire Stepper Motor Direction L-to-R t R-to-L 0 Hex Address Page 7 1792-2047 Character to Dot Pattern Lookup Table; Page 2: ASCII50H-7EH Page 6 1536-1791 Charac1er to Dot Pattern Lookup Table; Page 1: ASCII 20H-4FH (sp-M) Page 5 1280-1535 Miscellaneous Subroutines: InitAll AIIOf! Clear Data Memory Home Print Head Assembly Character Print Test Initialize Carriage Stepper Motor Delay Stepper Motor Deselect Page 4 1024-1279 Paper Feed Stepper Motor Drive Page 3 768-1023 Stepper Motor Step LookUp Table (I ndexed) Character Processing and Translation Print Head Firing Page 2 51-767 Carriage Stepper Motor Acceleration Time Calculation and Storage Stepper Motor Deceleration Page 1 256-511 Carriage Stepper Motor Drive Page 0 0-255 Initialization-Jump-on-Reset Main Program Body External Status Switch Check Character Buffer Fill 230795-16 Figure 21. Register Bank 0 Status Byte Flag Assignments Register Program Label Description RO R1 TmpR10 CAdrR1 R2 ChStR1 R3 R4 CDtCR1 CDotR1 R5 CCntR1 R6 R7 StrCR1 OpnR71 RBO Temporary Register Character Data Memory Address Register Character Processing Status Byte Register Character Dot Count Register Character Dot Temporary Storage Register Character Count Temporary Register Store Character Register Available/Scratch Figure 22. Register Bank 1 Register Assignment Description Page Figure 24. Program Memory Allocation Map 9-97 intJ Ap·161 storage locations for step data used in accurately reo. versing the direction of the carriage stepper motor, and stabilizing either of the stepper motors not being driven. Software Functional Blocks Below is a description and flow chart for each of the ten software blocks listed. The Data Memory locations OOH through lFH are not cleared. These locations are Register Bank 0 (DOH07H), Program Stack (08H -17H), and Register Bank 1 (18H-IFH) (see Figure 19). Clearing the Program Registers or Stack would cause the initialization subroutine to become lost. The registers are used from the beginning of the program. Care is taken to initialize the registers. and stack accurately prior to each program subroutine as required. 1. Power-On/Reset Initialization The first operational partin Flow Chart No. 1 is the Power-On or Reset Initialization: Flowchart No. 2 il-· lustrates the Initialization sequence in detail. y I DISABLE INTERRUPTS Upon power-on, it is necessary to initialize the two stepper motors, verify their operation, and locate the print head assembly in the left-most 'HOME' position. This sequence serves as a system checkout. If a failure occurs, the motors are deselected and the external status light is turned on. Each stepper motor is selected and energized for a sequence of four steps. This serves to align and stabilize each stepper motor's rotor position, preventing the rotor from· skipping or binding when the first drive sequence begins. ~ RESET PRINT HEAD TRIGGER TURN OFF ALL PRINT HEAD SOLENOIDS seT PRINT HEAD TRIGGER INACTIVE SET HOST SYSTEM HANDSHAKE ACTIVE CLEAR RBO/RB1 STATUS REGISTERS + I I CLEAR DATA MEMORY (20H-rFH) t INITIALIZE CARRIAGE ANO PAPER FEED STEPPER MOTORS. 1/ + HOME PRINT HEAD ASSEMBLY (FLOWCHART #4) ! / I seT DEFAULT REGISTERS AND FLAGS I 1 RETURN I At the end of each stepper motor's initialization, the last step data address is stored in one ofthe Data Memory pseudo registers. The last step data address is recalled at the beginning of the next corresponding stepper motor drive sequence, and used as the basis of the next step sequence. This ensures that the stepper motor always receives the exact next step data, in sequence, to guarantee smooth stepper motor motion. This also guarantees the motor never skips or jerks, which would misalign the start, stop, and character dot column positions. A stepper motor not being driven has its last phase data output held constant to stabilize it. I , 230795-18 Following any stepper motor drive sequence of either motor, a delay of 30-60 ms occurs by switching the current to Hold Current, stabilizing the motor before it is deselected. Flow Chart No.2. Power-On/Reset Initialization Initialization first disables both interrupts. This is done as a precaution to prevent the system software from hanging-up should an interrupt occur before the proper registers and Data Memory values are initialized. 2. Home Print Head Assembly At the end of the carriage stepper motor four step initialization, the output of the HR optical sensor is tested. The level of the HR signal indicates which drive sequence will be required to 'HOME' the print head assembly. If the print head assembly is to the right of HR, HR is high, the print head assembly need only be moved to from Right-to-Left until HR is low, then decelerated· to locate the physical home position. If HR is low, the print head assembly must be moved first Leftto-Right until HR is high, then Right-to-Left to locate both the logical and physical 'HOME' positions. In each case, the software accelerates the carriage stepper motor, generating the Stored Time Constants then decelerates the stepper motor using the Stored Time Con- Initialization then deactivates the. system electronics. This is also a precaution to protect the printer mechanism and includes the print head solenoid (trigger and data) lines and the stepper motor select lines. The host system handshake signals are activated to inhibit data transfer from the host until the printer is ready to accept data. Next, Data Memory is cleared from 20H to 7FH. This includes the 80 byte Character Buffer, the 11 byte Stored Time Constants buffer, and the 4 bytes used as pseudo registers. The pseudo registers are Data Memory locations used as if they were registers. They serve as 9-98 AP-161 The flag is set by the subroutine which calls the Carriage Stepper Motor Drive subroutine. Details of the carriage and paper feed stepper motor drive and character processing subroutines are covered separately below. 3. External Status Switch Check Once the system is initialized and the print head is at the HOME position, the software enters a loop which continually monitors the four external status switches, and exits if anyone is active. Flow Chart No.4 details the External Status Switch Check subroutine. Flow Chart No.4. External Status Switch Check If the LINEFEED or FORMFEED switch is set, the Paper Feed subroutine is called. The Paper Feed subroutine is discussed in detail below. If the ONLINE switch is set, the Character Buffer (CB) Fill subroutine is called. 230795-19 Flow Chart No.3. HOME Print Head Assembly stants (see Background section above). Flow Chart No. 3 details the HOME print head assembly subroutine. Figures 13 and 18 illustrate the components of accelera· tion and print head assembly line motion. If the Character Print TEST switch is set, the Data Memory Character Buffer (CB) is automatically loaded with the ASCII code sequence, beginning at 20H (a Space character), the first ASCII printable character code. The software then proceeds as if the CB had been filled by characters received from the host system. The The carriage stepper motor drive subroutines used to HOME the print head assembly and to print, are the same. A status flag, called Do· Not-Print, determines whether the Character Processing subroutine is called. CHARACTER BUFFER FILL (FLOWCHART .. 5) 230795-20 Flow Chart No.4. External Status Switch Check 9-99 AP·161 External Status Switch Check subroutine is exited and character printing begins. When the line has finished printing, a linefeed occurs (as shown in the main program Flow Chart No.1) and the program returns to the External Status Switch Check subroutine. If the TEST switch remains active, the ASCII character code is incremented and program continues as before. This will eventually print all 95 ASCII printable characters. An example of the TEST printer output, the complete ASCII character code printed, is shown in Figure 25. 9 N~ I I ENABLE INTERRUPTS ! < INPUT BUFFER FULL N tV 4. Character Buffer Fill "/N CHARACTER BUFFER INITIALIZATION DONE The Character Buffer (CB) Fill subroutine is called from three points within the main program; External Status Switch subroutine, and the Delay subroutine following the carriage and paper feed stepper motor drive subroutines. Flowchart No. 5 details the Character Buffer Fill subroutine operation. The approximate 80 ms total pre-deselect delay at the end of each stepper motor drive sequence, 40 ms carriage and 40 ms paper feed stepper motor pre-deselect delay, is' sufficient to load an entire 80 character line. Half the CB is filled at the end of printing the current line, and the second half is filled at the end of a paper feed. There is no time lost in printing throughput due to filling the character buffer. Character input is interrupt driven. When the IBF interrupt is enabled, a transmitted character sets the IBF interrupt and IBF Program Status flag. Three instructions make up the IBF interrupt service routine. This short routine disables further interrupts, sets the BUSY handshake line active, inhibiting further transmission by the host, and returns. The subroutine can be executed at virtually any point in the software flow without affecting the printer mechanism operation. Processing of the received character takes place during one of the three program segments mentioned above. The BUSY line remains active until the character is processed by the CB Fill subroutine. l 9-100 t END OF CHARACTER BUFFER N !' < I , >V--I CHARACTER BUFFER PAO SET EXIT FLAGS LOAD CD WITH 20H V !N I ACKNOWLEDGE & READ CHARACTER < t ASCII PR~NTABlE CHARACTER ~ < I INITIALIZE CHARACTER BUFFER FILL I DECREMENT CHARACTER BUFFER SIZE < N I LOAD CHARACTER INTO CHARACTER BUFFER >1 ' CR OR LF LOAD CB WITH CR seT CB PAD FLAG ENABLE INTERRUPTS REAO NEXT CHARACTER ASSUME IT 5 IF & IGNORE < EO' N >v---t SET EOF & CD FUll FLAGS CLEAR CD PAD FlAG ~ l < FORMFEEO /N I RETURN I >vt SET FF & CB FULL FLAGS CLEAR CB PAD FLAG I The CB is 80 bytes from the top of Data Memory (30H-7FH). It is a FIFO for forward, left-to-right printing, and a LIFO for reverse, right-to-left, printing. Loading the CB always begins at the top, 7FH. One character may be loaded into the buffer each time the CB Fill subroutine is called. . The CB is always filled with 80 bytes of data prior to printing. If the total number of characters input up to a Carriage Return (CR)/Linefeed (LF), does not completely fill the CB, the CR code is loaded into the CB and the balance of the CB is padded with 20H (Space Character) until the CB is full. A Linefeed (LF) character following a Carriage Return is ignored. A LF is always forced at the end of a printed line. When the CB is full, the CB Full status byte flag is set and printing can begin. V, LOAD CB WITH 20H t RETURN I I DECREMENT CB ADDRESS t CO FULL OR CO PAD '\. RETURN V I •N I ENABLE INTERRUPTS l RETURN I I 230795-21 Flow Chart No.5. Character Buffer Fill I I- AP-161 ) ... t ""$'~;?_', ot. -. -Bl.2345';78:~: ; ,'.=-''''I?HBC[IEFGHI,J/<':LNNOPORSTUIIW;.:'.,.Z[ ]"'_" abcd~t~'~~.iklM ~;~t~?~:·:!::;~,;'i'·~ ~!.~ ~i~:_':=.,"~_~'H·~B~ Lr[~EAi:F:~'~I:I:~."~L~ I~I·'If.,t_;P'~: I:R~'_:~_1,;:I!,:f.~.~f~1; ~ ~!1!§ :$:~2''- ~~:!' ", 01-':-:4"56-;"":39 ,t+.·. _~ '. + . ". ,'(11 :.: ~-l~t:=:;-::~9 '7I?HB(['EF(;H I JVU1NOF'OP'3TtHII·r":'(2[ '-,] '_' abcd~f 3h~ .i klf'lnoF<=ir:3t ~.' ':,::~ ~~. 1'llil;;~~;'~;~_~:~ .,: ~ ~,;;~~~~:~,~~~~~ ~/~~.i:·::~~:~~:~:~·,~:-;~::~:~:,,:~~[ ]~_ ~ 3:,,~:~~~:~t:~;~ ~'~l~:~~~;;:~~; '1 +. '. (1 t:: .;:4":,';:;-::-:':< '., -I) 1:: :: .... 5O::;":::~'Oj '. ·t -+ .,t.-, 1)1~·::4'::.';;;":::·:' +, -. (11:: ::40:;"; ,:-:~:':. ". 0\,' .:.~ ..... r:., ;-:::':' ". • 1)1_' .:4<=".",,;"':'::';:' 01:'·::·1",,~.;~:::·.:. :0-,' = "I?HE:(['EFI:'HI .II Lr·1tIOPI·~F'·:,T'JIIH~':·,·-::[ ] [·EFGHI ,.II U'ltIOP(!P-:·TUlll·t:,,·::r ·1 <1!'~l8( ;1~'H[:':['Et-(,HIJI U·1I10POP·~.TIJ'IH:·:·,·=[ ·:I?HE:({·E=FGH I J~ U·1I11)F'I:'P·:.TU1IH ;· ...:r J 1 _.: I?HE':i" \"'EF (,H I II t.r'lIlnF'('p·~, TUIII·C·,·:[] . ';'HE"~I:['F:F'~Hl)1 I. 1·!tlnf·r'F""'::.l/.!'II·r :'r':[ J _ "I~HhC('FFI,HI IllI'1I10FI·'F":,Tllllj·t:·,·Zr ) __ 3b.::dEf 3h ...11' ll''''-'o~' =It" ~t,U')'.,' . ",bed.::.f ';Ih .. -' I~ 1 f'1t",oj=..-=ir::~ U'"I ..I"0( ;:,b.:dEf';lh.:ill,'w.e,Fo:ctrE'u"l.I)(::J _' ",b.::dEt ';1\-0 .. :i \'. h,nO:'F "='it· ::.t U','I.\'·,C::IZ ~~·,=d~ f ?lh. J I h,n.:.~ "='i,' 5t, '_" ".1 ~::I= ( ~I:. .•::,:t.;, f "h.:i I: 1",,1'.,:.;: ::.jt·E~ 1.".'1. 1.. :.~:::{: "'b.-:.:J,:o:f,h.1!·1,·,noF=iI·';"U.".I:''''-~::-:·':; 1 ~~1~~~!:~L:~;':' ~.; ;~::~~:r~~~~:r{:I\·I::,::::::~;~:~:~:~:::~::::~,'i~::i:~i;~~ ~;~.~~~:~;~~~I:I~' i:: ~ '~I;~::~:~:~~ ~:~,;,::~::~;I~~~;;-~t~, ~ J II' .., ':';'H£':I {'[I- I-:'H 1 LI'1t lor'l 'F":·TU'II,!:,:',·::r ) _ ~b.:dEf -,h. 11' 1,·,1'1':';:: '=ir:::t \.I' "" ...:::I==:":}" 34'::",';::,,:';:' ·:I!'Hl:(L·F.f",Hl.lI'l.!·I!I!)F· ... IF ..:,TlJ1Il·C:·,·.:"'[·J ~b.::d".f"'h.jll".n':';'c;r·~r'-"" .. I ... ''''-:::::::;.'.. 1"# "1')t'.;~:::·'Oj ':'':'HE:!" r·~ r(,H I LI·UIUF·'·'F":.' I.Illl,!:' :',":-[ 1 :"l'''-:-',J-= t ';Ih •• I' 1 ",n.~.;" I ",'1,1" ~~==:::::.. I "*$ '::'1';:;-':::';' -=- ··7'''.,E:([·Ef·, ,HI II I. 1·1tlflf"'F<:.lI.lI It-/: :','.:'1" I ",b,::.J>=.t "h, I I Inn.:,;:: .:it-""t ',I' .,., .. ~~::-:~::: '" I ".:S~: ,':.;':;::;.:' .; 1""lf:(['(FI",H f·ItI(IFi"'F"~.III' 11,1:' . '':C .:,I:...•--,jcf I 1,·,n";:'·';,·::' I,." ",'," ':1:": : j ,,' t~;8 ":?~-'I ·:I!'Hf:,:r.'EF(,HL II Lf·1tIOF·(.f...;.TU''1·I::· .. ..:~[] ·,t-...::d,,=' :;oh~ 'Il.·'n.:),.,,=ir·=".".'''·.. ~~:.-::::; .. I "*.f~.;:?' :;:::. ,; 1.;'Hf::I: r I'll ~ J f t· ;",t I." .,.,,, ~~::: " : :; ". f".::O .• ,:, .. E IltlflF'i"IF .. ·TII11l .. ···-T] ·,L..::,joO.t :=of,; L".IK,j;'c;,·::T '_"" ... "'00:::::::; " 'r,;:!.'·,:' ;':'>.4':''=.•-;-:::'' JI "iT ET I II l 1. ·F-F';H [ I L lI:tP",p-:, f"lJI ,"': :. . '[ [Ef(HI III "I".. I I ".. I..... I".. =.l,,:-.J., 0>1" 'I I"" ",,., ,; ,,1 ,"~:;;:~:~r:~~~;:;7,,I,:,~I::::~:~::,~~g::::I,';i:;:[) ~;.~~~:~~;':';': (-".;::;-;:-r:'~;,:.::::;:;·:;~;:;;:, :'~;~~:::',','!~ 1). =-,"II!'HE:CI'EF(,HI If·LI·lIltif"i"!f.":.TUII~·J;':·,·'::T ';1?HE:C['EFI:'HI II LI-1t1(II'I'r;'<,fl.l'II·J~·:·I·,::[ Cr'EF(,H 1 .II' .. ;.b.:.,kt 3h.jl.l,·.n':';"=it·"f, ....... ,,,~~:;:::::; .. -~b.::·:1';:.t :::oh. 1!·!o-,n.·,;,o.::t J ·c(~HF:I,:·(·EFI .. Hl .It-: LI·n·ll.)f '('F";:: fIJI '1·D·:',·::'[ J e'=i8C('EF(,H L.It· Lf·lItl~IP!'-'P'~. t 1.1' 'l·l: :'I'2'[] HBI.·[,'EFGHI,H·,U·HIClf'C!F-": Tt II 11·1:':','=1' J E:(.[.'EFGH IJf"l.N~'luPC'P·~·TIJI'H:':',..:[ l. f·1tt(JF··OP'~, IU' '1·1:0':',':-:1"'] ] ] =",)"""".::-:'::: .. ·,f:.. :.J.:: f 3h~ .11: {I'W,,:'''- ~;I' .of '.!' "d'" 'J;::::::; ",b.:-.-:I.::·t "'h. 11·1"',n,~';o, o.::t· =- t '~",'1.,:.. ':1::-:': ,;" '",b.::,j~t" ",', • .11 I "'TK'~c ~it· "t '." """'::0::::'::: <. I "#:rs.·' .......- I :.;~~~~~~':"'.~;!:'_~. ... '. " •..f'.':;' ' .... '" +. _. 0) _ I "flX'S, ' •. ' •. +. -. 1)1 =_,~'.C, ....".'~~~. ·t~· ~_I",I:'.~ ~, I,·,~.:~',:-_·:~'~ ~,~~:,~,:'::.:'~' ~~~ ;: ~ .~.'" I ;.~:~~~~:': ':,.::: ~,' ~,',C,' t_~t __ '~'4-;; ...::h'. • .... _. I J ~-' "*1· ... . ,t + i~~~i~~1~~:;~~~\;t~~~!i~~j~~i');:~~:~~f:U;l!!!~!!: :I I 1 I 230795-22 Figure 25. ASCII Character Code TEST Output and Print Example A LF character alone is treated as a CR/LF at the end of a full 80 character line. This is a special case of a printed line and is handled during character process.ing for printing (see No.7, Processing Characters for Pnnting, below). A Formfeed (FF) character sets the FF status byte flag. The flag is tested at each paper feed stepper motor drive subroutine entry. When the software is available to load the CB with a character, entry to the CB Fill subroutine checks three status flags; CB Full, CB Pad, and IBF flag. If the CB Full flag is set, the program returns without entering the body of the CB Fill subroutine. The CB Pad flag will cause another Space character to be loaded, If the IBF flag is not set, the program returns. If the IBF flag is set, the character is read from the Data Bus Buffer register, tested for printable or nonprintable ASCII code, and, if printable, loaded into the CB. If the character is a non-printable ASCII code and not an acceptable ASCII control code (CR, LF, FF, EOF), a 20H (Space Character) is loaded into the CB. Exiting the CB Full subroutine with the CB Full or CB Pad flag set does not re-enable IBF interrupts or reset the BUSY line. If neither of these flags is set, exiting the CB Fill subroutine sets BUSY inactive and IBF interrupts are enabled. Once the CB Full status byte flag is set, IBF interrupts are disabled until the CB has been entirely emptied, the line printed, or the system Reset. 5. Carriage Stepper Motor Drive and Line Printing The carriage stepper motor drive subroutine controls both L-to-R and R-to-L print head assembly motion. Upon entering the subroutine, the HR signal level is tested to determine the direction of print head assembly motion and the Direction status flag is set. The default control register values are loaded and balance of the default status flags are set for stepper motor control and character processing. The default control register values include PT and the step sequence look-up table start address for the direction indicated. The direction flag is tested throughout the carriage stepper motor drive and character processing subroutines. This enables the same subroutines to control activities for either direction, simplifying and shorting the overall program. Flow Chart No.6 illustrates the carriage stepper motor drive subroutine. AP-161 TIMER WITH PT "'' $11 .....P(ALOAD F[ED LAST STEP & CARRIAGE "EXT STEP DAtA OUlltUT sn, OAT. S1AIftT'''A 230795-23 Flow Chart No.6. Carriage Stepper Motor Drive/Line Printing 9-102 inter AP-161 Next, the carriage and paper feed stepper motor step data is initialized. The last step data output to the paper feed stepper motor is loaded into the Last Phase pseudo register. This data is masked with each step data output to the carriage stepper motor. Masking the step data in this manner guarantees the paper feed motor signals do not change as the carriage stepper motor is being driven. Figure 26 illustrates the carriage stepper motor· step sequence verses the actual step data output for clockwise rotation, Left-to-Right motion, and counterclockwise rotation, Right-to-Left print head assembly motion. An eight step sequence is depicted in the figure. Note that the sequence for Right-to-Left motion is the reverse of the sequence for Left-to-Right motion. Note also, that for the L-to-R sequence step 4 is the same as step 0, step 5 the same as step 1, etc., through step 7 matching step 3. The four step sequence simply repeats itself until the motor is stopped via the Deceleration subroutine. L-to-R Motion Sequence Phase/Step Data (321 0) R-to-L Motion Sequence 0 1 2 3 1001 1010 0110 0101 7 6 5 4 0000 0001 0010 0011 4 5 6 7 1001 101 0 0110 0101 3 0100 0101 0110 01 1 1 2 1 0 BCD (321 0) Figure 26, at location 0 the step data "1001" is stored. This method is particularly well suited to the UPI-42AH software. The UPI-42AH features a number of instructions which perform an indirect move or data handling operation. One of these instructions, MOVP3A,@A, unlike the others, allows data to be moved from Page 3 of Program Memory to any other page of Program Memory. This instruction allows the step data to be centrally located on Page 3 of Program Memory and accessed by various subroutines. Each time the carriage stepper motor step data is output, the step data lookup table address is incremented or decremented, depending upon the direction of rotation, and tested for restart of the sequence. The address is tested because the actual step data, Figure 26, is not a linear sequence and thus is not an easily testable condition for restarting the sequence. The sequence number is tested for rollover of the sequence count from 03H to 04H and clockwise motor rotation via the Jump on Accumulator Bit instruction (JBn), with OOH loaded to restart the sequence. The same bit is tested when decrementing the sequence count for counterclockwise motor rotation, R-to-L motion, because the count rolls over from OOH to OFFH, with 03H loaded to restart the sequence. At this point the UPI-42AH Timer/Counter is loaded, the step signal is output, and the timer started. The next step data to be output has been determined and the At-Speed flag is tested for entry to one of two subroutines; Stepper Motor Acceleration Time Storage or Character Processing. Figure 26. Carriage Stepper Motor Phase/Step Data When the carriage stepper motor is driven for a specific direction of print head assembly motion, the step sequence must be consistent for the motion to be smooth and accurate. The same holds true for the transition from one direction of motion to the other. Since the sequence for one direction is the opposite for the other direction, incrementing the sequence for L-to-R and decrementing for R-to-L provides the needed step data flow. For example, referring to Figure 26, if the print head assembly moved L-to-R and the last step output was # 1, the first step for R-to-L motion would be #7. Thus, when the carriage stepper motor is initialized for a clockwise (L-to-R) or counterclockwise (R-to-L) rotation, the last step sequence number is incremented or decremented to obtain the proper next step. In this way, the smooth motion of the stepper motors is assured. The step data is referenced indirectly via the step sequence number. The step data is stored in a Program Memory look-up table whose addresses correspond to the step sequence numbers. For example, as shown in The first entry to the Acceleration Time Storage subroutine initializes the subroutine and returns. All other entries to one of the two subroutines perform the necessary operations, detailed below (Blocks 6 and 7), and returns. The program loops until the PT times out or the PTS level change is detected. PTS is tied to TO of the UPI-42AH. The level present on TO is directly tested via conditional jump instructions. The software loops on polling the timer Time Out Program Status flag and the TO input level. As described in the Background section above (shown in Figure 13), if PT times out before PTS is detected, the software waits for PTS before outputting the next step signal. If PT times out before PTS, a second timer count value is loaded into the UPI-42AH timer. The timer value is called "Failsafe." This is the maximum time the stepper motor can be selected, with no rotor motion, and not damage the motor. If PTS is not detected, either the carriage stepper motor is not rotating or the' optical sensor is defective. In either case, program execution halts, the motor is deselected, and the external status light is turned on to indicate a malfunction. A system reset is required to recover from this condition. The Failsafe time is approximately 20 milliseconds, including PT. 9-103 AP-161 The Failsafe time loop also serves as a means of tracking the elapsed time between PT time out and PTS. Entry to the Failsafe time loop sets the Failsafe/Constant Time Window status flag. This flag is tested by the Acceleration Time Storage subroutine for branching to the proper time storage calculation to be performed (see Figure 13 and Block 6 below for further ,description). During the Failsafe timer loop, if PTS is detected and verified as true, the Failsafe timer value is read and stored in the Time Storage register. This value is used during the next Acceleration Time Storage subroutine calI to calculate the Stored Time Constant (see Block .6 below). If PTS is invalid, the flow returns to the timer loop just exited, again waiting for PTS or Failsafe time out. During the PT time loop, if PTS is detected and verified, the Sync flag is tested for entry to the print head solenoid firing subroutine. This flag is set by the first entry to the Character Processing subroutine. The flag synchronizes the solenoid firing with character processing.Only if characters are processed for printing wilI the solenoids be enabled, via the Sync flag, for firing. This prevents the solenoids from being fired without valid character dot data present. As described in the Background section "Relationship Between PTS and PT," PTS is the point of peek angular velocity within a step of the motor. After PTS is detected the motor speed ramps down, compensating for the overshoot of the rotor motion. PTS is the optimum time for print head solenoid firing, as shown in Figure 13. This is the stable point of motor rotation and, thus, the print head assembly motion. If PTS is detected during PT, printing is enabled, the Sync flag is set, and the solenoid trigger is fired. The firing of the solenoid trigger, folIowing PTS, is very time critical. The time between PTS and solenoid firing must be consistent for accurate dot column alignment throughout the printed line. The software is designed to meet this requirement by placing all character processing and motor control overhead before the solenoid firing subroutine is called. The actual instruction sequence which fires the print head solenoid trigger is plus or minus one instruction for any calI to the subroutine. Once the timer loop is complete, the software tests for Exit conditions. If the Exit conditions fail, the software loops to output the next step signal, starts the PT timer, and continues to accelerate the carriage stepper motor, or process, and print characters. If the Exit test is true, the carriage stepper motor is decelerated to a fixed position, and the program returns to the main program flow (see Flowchart i). The exit conditions are different for the two directions of print head assembly motion: For L-to-R printing, if a Carriage Return (CR) character code is read from CB, the carriage stepper motor drive terminates and the motor is decelerated to a fixed position. There are two conditions for terminating carriage stepper motor drive upon detecting a CR during L-to-R motion. If less than half a character line (40 characters) has been printed, the print head assembly returns to the HOME position to start the next printed line. Otherwise, the print head assembly continues to the right-most position for a fulI 80 character line, and then begins printing the next line from R-to-L. R-to-L printing always returns the print head assembly to the HOME position berore the next line is printed L-to-R. When HR is high, character printing always stops and the carriage stepper motor drive subroutine exits to the deceleration subroutine. 6. Accelerate Stepper Motor Time Storage As described above, when the carriage stepper motor is accelerated the step time required to guarantee the motor is at a constant rate of speed translates to a specific distance traveled by the print head assembly (see Figure 18).. In order to position the print head assembly accurately for bi-directional printing, the distance traveled during deceleration must be the same as during acceleration. The Carriage Motor Acceleration Time Storage subroutine calculates the step times needed to accelerate the carriage stepper motor, and stores them in Data Memory for use as PT during deceleration. The first call of the Carriage Stepper Motor Acceleration Time Storage subroutine initializes the required registers and status flags. The time calculation begins with the second carriage stepper motor step signal output. The program returns to the carriage stepper motor drive subroutine and loops on PT. Each subsequent call of the Acceleration Time Storage subroutine tests the Failsafe/Constant flag and branches accordingly (see Flow Chart 7). The Acceleration Time Storage subroutine has two parts which correspond to PTS leading or PTS lagging PT. If the Failsafe/Constant flag is set, PTS lagged PT. The time from PT time out to PTS, Tx (see Figure 13), must be added to the PT and stored in Data Memory. As described above, if PT lagged PT, the Failsafe time is loaded and PTS is again polled during the. time loop. When PTS occurs within the Failsafe time, the timer is stopped and the timer value stored. The UPI-42AH timer is.an up timer, which means that the value stored is the time remaining of the Failsafe time when PTS occurred. The elapsed time must be calculated by subtracting the time remaining (the value stored) from the Failsafe time constant. This is done in software by using two's complement arithmetic. If the Failsafe flag is not set PTS led PT, and PT is the Stored Time Constant stored. 9-104 AP-161 y ~ TIME STORAGE INITIALIZATION DONE ~N I INITIALIZE TIME STORAGE REGISTERS y > < >v- INITIALIZATION DONE ~N I SET SYNC STATUS FLAG I + r;;< TIME STORAGE DONE tV I "'> t FAILSAFE TIME WINDOW ENTERED tV I CALCULATE TIME TO STORE (PT. H) RESET FAILSAFE FLAG I I r I DECREMENT OATA MEMORY ADDRESS DECREMENT STEPS TO SCTRE COUNT I t RETURN ::. SAME CHARACTER RE·ENTRY N~ I INITIALIZE CHARACTER PROCESSING REGISTERS < + rv-< READ CHARACTER FROM CB t r;-< ~ I .> ASCII PRINTABLE Nt < STORE PT I TRANSLATE CHARACTER TO DOTS IFlOWCHART 119) ~ I Flow Chart No.7. Carriage Stepper Motor Acceleration Time Storage I ~OT COLUMN DATA l I IN< I r + CHARACTER DOT MATRIX r-< Indirect addressing of Data Memory is used to reference the Stored Time Constant Data Memory location. The Data Memory location address is decremented each time the Acceleration Time Storage subroutine is exited and a Stored Time Constant has been generated. GET CHARACTER lESS THAN HALF OF LINE PRINTED> N REPLACE CHARACTER WITH 20H (S~CE) I 230795-24 t V IN + I I CR r RESET STATuS FLAGS CB FULL.. REGISTER INITIALIZATION, SYNC, EOlN I ~ L·TO-R PRINTING r STATUS FLAG -t I v~ I < INITIALIZATION STATUS FLAG ~ RETURN I I 80 CHARACTERS PRINTED N tV The last Acceleration Time Storage subroutine exit sets the At-Speed status flag and initializes the character processing registers and flags. l REser STATUS FLAGS CB FULL. SYNC. PRINT NOT READY I I I AOVANCE CB FOR DlAECTION OF PAINTING . 7. Process Characters for Printing I + The Character Processing subroutine is entered only if the Home Reset (HR) optical sensor signal is high and printing is enabled. Otherwise, the software simply returns to the Carriage Stepper Motor Drive subroutine. There are two cases when printing is not enabled; during the HOME subroutine operation, and when the print head assembly returns to the HOME position after printing less than half an 80 character line. If printing is enabled, the Sync status flag is set. All character processing operations use the second UPI-42AH Data Memory Register Bank, RBI. Register Bank 1 is independent of Data Memory Register Bank 0, used for stepper motor control. The use of two independent register banks greatly simplifies the software flow, and helps to ensure the accuracy of event sequences that must be handled in parallel. Each register bank must be initialized only once for any entry to either the Carriage Stepper Motor Drive or Character Processing subroutines. A single UPI-42AH Assembly Language instruction selects the appropriate register I SET DO NOT PRINT COMPlETE RESET CHARACTER > I ADVANCE CHARACTER NI ~OT MATRIX ADDRESS FOR DIRECTION OF PRINTING GET CHARACTER DOT COLUMN DATA AND OUTPUT I I RETURN I 230795-25 Flow Chart No.8. Process Characters for Printing bank. Initializing the character processing registers includes loading the maximum character count (80), dot matrix size count (6), and CB start address. The CB start address is print direction dependent, as described in Block 4, above. Character processing reads a character from the CB, tests for control codes, translates the character to dots, 9-105 intJ AP-161 and conditionally exits, returning to the Carriage Stepper Motor Drive subroutine. FlowChart 8 details the character processing subroutine. .Each character requires six steps of the carriage stepper motor to print; five for the 5 character dot columns and 1 for the blank dot column between each character. Reading a character from the.CB and character-to-dot pattern translation takes place during the last character dot column, or blank column, time. The first character line entry to the Character Processing subroutine appears to the software as if a last·character dot column (blank column) had been entered. The next character, in this case the first character in the line, is translated and printing can begin. This method of initiatizing the Character Pro~essing subroutine utilizes the same software for both start-up and normal character flow. Once a· character code has been translated to a dot. matrix pattern starting address in the look-up table, all subsequent entries to the Character Processing subroutine ·simply advance the dot column data address and outputs the data. 9 -< , < I l The dot pattern look-up table occupies two pages, or approximately 512 bytes of Program· Memory. A printable ASCII character is tested for its dot pattern location page and the offset address, from zero, on that page. Both the page test and page offset calculations use two's complement arithmetic, with a jump on carry or not carry causing the appropriate branching. Once the pattern page and address are determined the indirect addressing and data move instructions are used to read and output the data to the print head solenoids. Flowchart 9 details the Character-to-Dots Translation subroutine. In the case of R-to-L printing, although the translation operation is the same, the character is printed in reverse. This requires that the character dot pattern address be incremented by five, before printing begins, so that the first dot column data output is the last dot column data of the character. The dot pattern look-up table address is then deCremented rather· than incremented, as in L-to-R printing, for the balance of the character. Translation still takes place during the last or LINE PRINTED l Sf' PAGE L n AC". ~ l r~ N RfPlACE CR WITH 20H lEST CHARACTER DOl PAGf >Nj SE T 00 NOT PAINT flAG SET EOlN FLAG 1. AETURN I I J COMPUTE CHARACTER PAGE ADDRESSQffSfT ~ r"0,, .• "0 ADJUST OffSET ADDRESS . l Characters-to-dot pattern translation involves converting the ASCII code into a look-up table address, where the first of the five bytes of character dot column data is stored. The address is then incremented for the next column of dot pattern data until the full character has been printed. . HAlf I The decision to .translate the character to dots· dUring the blank column time was an arbitary one. As was the . choice of the blank column following rather than preceding the actual character dot matrix printing. 8. Translate Character-to-Dots :::J, ASCII CHARACTER ~ SET CHARACTER INITIALIZATION FLAG L HfTUAN J 230795-26 Flow Chart No.9. Translate Character-to-Dots character dot column, the blank column, and the blank column follows the character matrix. Only one control code, a Carriage Return (CR), is encountered by the character translation subroutine. Linefeed (LF) characters are stripped off by the CB Fill . subroutine. If a CR code is detected the software tests for a mid-line exit condition; less than half the line printed exits the stepper motor drive subroutine and HOMEs the print head assembly before printing the next line. If the test fails, more than half the line has been printed, theeR is replaced by a 20H (Space character) and printing continues for the balance of the line; the space characterS padding the CB are printed. As mentioned above, the character dots are printed and the print head trigger is fired when the PTS signal is detected and verified and the carriage stepper motor is At Speed. When the character to print test fails the CB Buffer size count equals zero, the Carriage Stepper Motor Drive subroutine exit flags are set, and the flow passes to the Deceleration and Delay subroutines and programs returns to the main program flow. . 9-106 inter I AP-161 .CTJ INITIALIZE DECELERATION REGISTERS Delay subroutine is called to stabilize the stepper motor before it is deselected. During the DELAY subroutine, the IBF interrupt is enabled and characters are processed. A paperfeed is forced following the carriage stepper motor being deselected. I OUTPUT NEIlT STEP SIGNAL lOAD A START TIMER DECREMENT STORED TIME CONSTANT DATA MEMQRY ADDRESS 10. Paper Feed Stepper Motor Drive SETUP NEXT STlP ~ < I STEP SEQUENCE DON( The paper feed stepper motor subroutine outputs a predefined number of step signals to advance the paper, in one line increments, for the required number of lines. The number of step signals per line increment is a function of the defined number of lines per inch, given the distance the paper moves in one step. Figure 16 lists three step (or pulse) count and line spacing configurations, as' well as the distance the paper moves in one step. Standard 6 lines per inch spacing has been implemented in this Application Note (Appendix B details how variable line spacing could be implemented). Flow Chart 11 illustrates the Paper Feed subroutine. RESTART SEQUENCE ,I" I LOAO HfJ.T STEP DECElERATION D O N E > STORE LAST STEP ADDRESS I RfTURN I 230795-27 Flow Chart No. 10. Decelerate Carriage Stepper Motor ? L INITIALIZE REGISTERS < 9. Decelerate Carriage Stepper Motor . The transition from the Carriage Stepper Motor Drive subroutine to the Deceleration subroutine outputs the next step signal in sequence; and then initializes the Deceleration subroutine registers; Stored Time Constants Data Memory buffer end address and size. The Stored Time Constant Buffer is a LIFO for deceleration of the carriage stepper motor. The buffer size is used as the step count. When the step count decrements to zero, the step signal output is terminated, and the last step sequence number is stored in the carriage stepper motor Next Step pseudo register. The last step sequence number is recalled, during initialization of the next carriage stepper motor drive, as the basis of the next step data signal to be output. See Flow Chart 10. When the carriage stepper motor is decelerated, Failsafe protection and PTS monitoring are not necessary. The Deceleration subroutine acts as its own failsafe mechanism. Should the stepper motor hang-up, the subroutine would exit and deselect the motor in sufficient time to protect the motor from burnout. Since neither Failsafe nor print head solenoid firing take place during deceleration, PTS is not needed. PT is replaced by the Stored Time Constant values in Data Memory. The Deceleration subroutine determines the next step signal to output, loads the Timer with the Stored Time Constant, starts the UPI-42AH Timer, and loops until time out. The subroutine loops to output the next step until all of the Stored Time Constants have been used. The program returns to the Carriage Stepper Motor Drive subroutine and the motor is deselected following the Delay subroutine execution. The 9-107 <. J. Lf/FF FF +LF LINE COUNT r J END OF PAGE Y J I CALCULATE LINES LOAD LINE COUNT I <. + OUTPUT NEXT STEP SIGNAL LOAD AND START TIMER SETUP NEXT STEP ..1 I STEP SEQUENCE DONE RESTART SEQUENCE IN J LOAD NEXT STEP I. <'./--=PT::T=I}=='-=OU-=T'-~~"" N 1-;< LINE DONE ;:> LOAD LINE STEP COUNT ! ~.r~l-::IN:::'-:::CO~U::-:NT::O::O::-:N':---"":> JY STORE LAST STEP seQUENCE NUMBER l J TO MOVE FOR TOP-OF-MGE DELAY DESELECT PAPEA FEED STEPPER MOTOA J J RETURN 230795-28 Flow Chart No. 11. Paper Feed Stepper Motor Drive inter AP-161 The number of lines the paper is to be moved is called the "Line Count." The Line Count defaults to one unless the Formfeed flag is set, or the total number of lines previously moved equals a full page. The default total lines per page for this application is 66. When the total number of lines moved equals 66, the paper is moved to the top of the next page. The Top-of-Page is set at power-on or reset. If the Formfeed flag has been set in the Character Buffer Fill subroutine, the software calculates the number of lines needed for a top of next page paper feed. The resulting line count is loaded in the Line Count Register. The Paper Feed subroutine loops on the line count until done and then returns to the main program body. Once the Paper Feed subroutine is complete, the software loops to test the End of File (EOF) .Flag (see Flow Chart 1). If EOF is set, the print head. assembly is moved to the HOME position, the program again enters the External Status Switch Test subroutine, and begins polling the external status switches. If EOF is not set, the program directly calls the External Status Switch Check subroutine, and the program repeats for the next line. CONCLUSION Although the full speed, 12 MHz, of the UPI-42AH was used, the actual speed required is approximately 89 MHz. 1400 bytes of the available 2k bytes of Program Memory were used; 500 bytes for the 95 character ASCII code dot pattern look-up table, 900 bytes for operational software. This means that the UPI-42AH has excess processing power and memory space for implementing the additional functions such as those listed below and discussed in Appendix B. Special Characters or Symbols Lower Case Descenders Inline Control Codes Different Character Formats Variable Line Spacing The software developed for this Applicati()n Note was not fully optimized and could be further packed by combining functions. This would require creating another status register, which could also serve to implement some of the features listed above. Since the full 16 byte stack is not used for subroutine nesting, there are 6-8 bytes of Program Stack Data Memory that could be used for this purpose. In several places, extra code was added for clarity of the Application Note. For ex' ample, each status byte flag is set with a separate instruction, using a equate label, rather than setting several flags simultaneously at the same point in the code. This Application Note has demonstrated that the UPI-42AH is easily capable of independently controlling a complex peripheral device requiring real time event monitoring.· The moderate size of the· program required to implement this application attests to the effectiveness of the UPI-42AH for. peripheral control. 9-108 AP-161 APPENDIX A SOFTWARE LISTING 1 SMOD42 TITLE ( 'UP I 42 APP NOTE') i = 2 $MACROFILE NOSYMSOLS NOGEN DEBUG 3 4 $INCLUDE (: Fl: ANECD. 0\1'1,) 5 PG 6 7 ••• ** ••• *.****** ••• *******. Complex Peripheral Control With the UPI-42 = B 9 = 10 = 11 12 = 13 Intel Corporation 3065 Bow@rs Av@nu@ Santa Clara, Ca. 95051 14 Wri tten Bq = 15 16 17 lS 19 = = = = = = • • = = ***** •• ******* . . . . . . . ****** .... ***** .... * 20 Nohs· and Comments 21 22 23 Three Assembl'd Language files comprise the full Application Not. source code. 24 2~ 26 27 29 29 30 31 32 33 = 34 = 36 = Christopher Scott 1. ANECD. OVI App Note Eq,uates. Constants. Declarations. 2. 42ANC. SRC UPI-42 App Not. Code Source 3. CHRTDL.OV1 Character Tabh . Ove:rlay Overlay (Character Lookup Tables) i PG 3~ .********** ••• **.* •••• ** •••• *.* 37 39 ****.*********.****.****.*.* ••• Equates, Constants and System Defini tions 40 Data & Program Memory Allocations Program Memory 43 Page No. 3'i = 41 42 Hex Addr Description 44 , = = • • = 45 46 47 49 49 ~o Page 7 1792-2047 Page 6 1536-1791 Page 5 1290-1535 Page 4 Page 3 1024-1279 769-10:23 ~1 - = = = = = • = - = = = = = = - = ~2 ~3 54 55 ~6 57 59 ~9 60 61 62 63 64 65 66 67 69 69 70 Page 2 512-767 Page 1 2~6-511 Page 0 0-2" Char to Dot pattern lookup table Page 2: ASCII ~OH-7FH (N-"', Char to Dot pattern lookup table Page 1: ASCII 20H-4FH (sp-I'I) l'Iise "tlled routines; InitAl/AllOFf Clear Data Meinor~' CR Home Char Print Test load Ascii char c:.odes Initialize CR Stpr I'Itr Delay: 5hort/long/v.r~ long Stpr Mtr deselec:.t Pap.rF.ed Stpr I"Itr Init and Drive Stpr I'Itr Phase LookUp Table - Ind •• ed Char.ct.r Translation and proe •• &ing PrintH.ad firing Stpr Mtr Acc:.el. Time calc. and memorization Stpr I"'Itr Deceler.tion SMOriv (FAcc:.el/RAccel) - For~.rd " ReveT'S. Stpr !'Itr acceleration Ie drive InitiaiIation ~mp-on-R.set Program BodV - all calls Character Input test and Char Buff.r fill loop Int.rrupt service routin •• 230795-29 9-109 intJ = PG 71 72 = 73 Data Memory 74 7:; Dec_ 710 77 7B 79 BO BI B2 B3' ; B4 85 810 B7 BB B9 90 9'1 92 93 94 Description HOI TOP 4B-127 37-47 310 35 34 33 32 2F-7FH 25-2EH 24H 23H 22H 21H 20H 24-31 B-23 0-7 IB-IFH B-17H 0-07H 80 Character Line Buffer stpr MtT' Aceel/Dec.el time. Unused memorization Char Print test ASCII code start tmp store LF 8M last Phz Inderect'Addr psuedo reg CR 8M Forward/Reverse last Phz psuedo reg Psuedo'Reg: Last Phase. of stpr mtr not being driven Register B~nk 1: Character Handling 8 Level Stack Stpr Mtr FIR Accel/Drive BOTTOM Data Memory Equates: 9:; 00:;0 0009 007F 0080 002F 0051 002F 0003 OOOA 002F 0025 007F 00:;0 0020 0021 0022 0023 EOU Equ 50H OD9H ichar buffer size 0-79 = 80 ;Cpl(1/2 CbBfSz) => cpl of 27H FCBfSt FCBfIS RCBfIS 'ChBfIS Equ Equ Equ Equ 7fH BOH 2FH 81 ; start of char buffer ; init CB strt-allows xtra Ooc by 1 iinit CB strt-allows xtl'a Inc by 1 ; I Dad char (nt reg wlchar bufr Init 5i ze ENOBUF ASBfSz 5MBFST 5MBEnd OMTop OMS! 10 EOU EOU Equ EOU Equ Equ Equ 2FH OBH OAH 2FH 2:5H 7FH 93 ; END OF CHAR BUFFER j Accelerat,e 'stpr mtr buf count ; Decelerate stpr mtr buf count ; STPR MTR BUFFER START ; Stpr Mtr Data Memorlj Address end ; Dat. Memor\! Top ; Data MemorlJ Size (less two lIIorking reg's) LastPh CP5Adr LP5Adr PTAs(S Equ EOU Equ Equ 20H 21H 22H 23H ; last phz psuedo reg addr ; CR phz psuedo T'eg ;LF phz psuedo T'eg ; ChaT' Print Test code start tmp store 910 CHBFSZ :~ HHCpl 99 = 100 101 102 103 = 104 105 lOb OSBfSz 107 = lOB 109 = 110 III 112 113 114 = 115 009H Ill. = 117 PG llB * * = 119 120 121 122 123 124 125 1210 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * All IndiT'ect Data MemoT'Y Addressing via @Rn Inst must use on19 registers 0 & 1 of either registeT' bank. Any otheT' will be reJected by the Assembler L~st character in lable indicates RegisteT' Bank refeT'enced Register Bank 0 = 127 0000 0001 0002 0003 0004 000:; 00010 = 12B 129 130 - 131 132 133 134 = 0007 = I --------------------------------------------------------'------------------- TmpROO' Equ TStrRO EQU GStR20 EQU PhzR30 EQU CntR40 Equ RO RI R2 R3 R4 Equ Equ R5 Rio EQU R7 135 TeonRO' 1310 LnCtRO 137 13B OpnR70 139 140 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Register allocation J iRaO Temporary Register ; Store Time Register RBO ; General Status Register RBO ,Stpr MtT Phase Register RBO ; Count Reg. Phase count-Stpr !"ItT' loops Aceel/Dscel Count ITime constant reg RBO ; Line count RegisteT' Bank 0 Data MemoT'1j Ad~T'ess = 141 230795-30 9-110 inter 0000 0001 0002 0003 0004 0005 OOOb 0007 AP-161 142 143 144 145 14b 147 148 149 150 151 152 153 = 154 TmpAOO TStrAO GStRAd PhzA20 Equ EGU Equ EGU Equ OOH 01H 02H 03H 04H LnCtAO Equ Equ 05H ObH ; Line Count Register OM address OpnA70 EGU 07H ,available CntRAO TConAO Temp orary Register OM address Time Store Register OM address RBO Char Status Reg OM address i Stpr Mtr Phase Register OM address • Count Reg. Phase CDunt-Stpr Mtr loops Aceel/Oecel Count OM address ; Time constant reg OM address PG 155 RBO Status Byte Bit Definition = 156 157 158 159 lbO lbl lb2 lb3 Ib4 lb5 lbb Ib7 lb8 Ib9 170 171 172 173 174 175 17b 177 178 179 180 181 182 183 184 185 18b 187 188 189 190 191 192 193 194 = 195 19b = 197 198 199 200 0000 0001 0002 0003 0004 0005 OOOb 0007 Definition Stpr Mtr Direction: L-to-R = I. R-to-L = 0 1 = Sink I 0 = Not Sinked, Print Head lnit and Fire Stpr Mtr at speed and CR not left of Home Accel/Oecel Init, 1 = Done / 0 = Not Done 5 4 3 1 = Fai lSaf. / 2 1 1 1 o LRPrnt RLPrnt SnkSet ClrSn~ AtSpdF NAtSpd ADlntD ADlntN FsCTm ClrFsC FrmFd LineFd DoNotP OkPrnt Ready NotRdy = = 0 = Constant. Time Window Form Feed I 0 = Line Feed Do Not Print I 0 Print = FAecel/DAccel drive Ready = drive & decel stpr mtr) Bit Ma'Sk'S: Stepper Motor Equ Equ Equ Equ Equ Equ Equ Equ 80H 7FH 40H OBFH 20H ODFH 10H OEFH Equ Equ Equ Equ Equ Equ Equ Equ 08H OF7H 04H OFBH 02H OFDH OIH OFEH l/NotRd~ o (exit RBO ~ontrol bit mask'S function on GStRIO i Left to Right Printing (ORLl iRight to Left Printing (ANLl ; Ready Print flag .c.lear Ready to Print Bit ; Stpl' Mtr at constant speed i Stpr Mtr Not at speed '; Accel/Decel Init Done i Accel/Decel Init Not Done iFailSafelConstant Time ; Clear FailSafe/Canst time flag ida formfeed ida line feed i set Do Not Print St"t bit iReset - Ok to Print ; Ready drive Stpr Mtr i Not Ready ex i t Stpr Mtr drive PG * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Register allocation * * * * * * * * * (cont) ** * * * * * * * * * * * * * * * * * * * * * Register Bank 1 = 201 202 203 204 = 205 20b 207 208 209 210 211 212 = 213 214 Bit 7 b TmpRl0 CAdrRI ChStRI CDtCRI CDotRI CCntRI StrCRl Equ EGU EGU EGU Equ Equ EGU RO Rl R2 R3 R4 R5 Rb ichar data memory addr register ;char processing status byte register i Char Dot count register ; Char dot temp storage register ; Char count temp register ; Store Char Register OpnR71 EGU R7 i Available Register Bank 1 Data Memory Address 230795-31 9-111 intJ 0018 0019 001A 001B 001C 001D 001E 001F AP-161 = 215 216 217 218 219 220 221 ~ 222 223 3 224 225 TmpAI0 ChARRl ChStAd CDtCAI CDotAI CentAI StrCAI Equ E(lU Equ EtlU Equ Equ EOU 24 25 26 27 28 29 30 OpnA71 EtlU 31 tempDrar~/scratch register char data memory addr register RBI Char Status Reg address Char Dot count register Char dot temp storage register Char count temp register Store Char Register i Available = 226 PG = 227 = 228 RBI Status Byte Bit Definition 229 230 231 232 233 234 235 = 236 237 238 239 240 = 0080 007F 0040 OOBF 0020 OODF 0010 OOEF 0009 00F7 0004 OOFS 0002 OOFD 0001 OOFE = = 250 251 252 253 254 = 255 = 256 257 258 = 259 260 = 261 262 263 264 = 26~ 266 = 267 = = 0004 0020 007F 00F3 00F6 00F4 00E5 OOEO 00C8 OOOD 0020 0081 0082 007F 0042 00C4 0010 = = = = = = 269 269 270 271 272 273 274 275 276 277 278 279 280 281 282 28:3 284 285 286 287 288 289 290 291 292 29:3 294 DlI!finititin 5 Stpr Mtr Direction: L-to-R = 1. R-to-L = 0 Char lnit. 1 = Done I 0 = Not Done Ch.r Lookup Table Page: 1 = Pg1.. 0 = Pg2 4 1 3 I = EOF I 0 = Not EOF Full = 1/Not Full = O. Line in Char Buffer I = CR/(LF) I 0 = Not CR/(LF) 6 2 I o 241 242 243 244 245 246 247 248 249 Bit 7 1 = = Test I Init I 0 0 = Norm.l char print/input = Do Not Init. CB registers done Bi t Masks: RBI Character printing bit masks function on ChStRl Ch In.tD ClntND ChOnPI ChOnP2 TstPrn NrmPrn Equ Equ Equ Equ Equ Equ Equ Equ 80H 7FH 040H OBFH 20H ODFH 10H OEFH L-to-R 1 R-to-L = 0 ; Set Char Ini t Done ;Reset Char Init Not Don@ ; Page I char, set rentry bit (ORU ; Page 2 char, reset rentry bit (ANU i Char print test ; Normal char input EOF ClrEOF CRLF ClrCR CBFLn NCBFLn IntCBR CllCOR E"'lu Equ Equ Equ Equ Equ Equ Equ OBH OF7H 04H OFOH 02H OFDH OIH OFEH . set EOF Flag ;clear EOF flag - Not EOF ; CR/LF ;Clear CR/LF ; Full Line in Char Buff"r , Not Full Line in ChaT' Buffer ; Jni t of CB registers done i Ini t of CB registers not done ChrPrn eIrep,. j Stpr I'1tr Direction': ; Stpr Mtr Direction: PG * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Equates * * * (cont) * * * * * * * * * * * * * * * * * * * * * * * * * * Mise RLPShf Equ 04H ;R-to-~ Ascii AseLst Equ Equ 20H 7FH .hex nmbr of first Ascii Char ,hex nmbr of last Ascii Char CRCpl LFCpl FFCpl EscCpl AscCpl FTCpl CR Spac .. Equ Equ Equ Equ Equ Equ Equ Equ OF:3H OF6H .OF4H OE5H OEOH OC8H ODH 20H LAsEnd PAsEnd AscStp PgLnCt PgLCpl EOFCpl Equ Equ Equ Equ Equ Equ 81H 82H 7fH 66 OC4H ISH print lookup table addr shift ;ASCII control code 2'5 complement ;Ascii code (hex) .Asci-i code (hex) .Ascii End 2'5 cpl - test line start ;Ascii End 2'5 cpl - within line print ; Asc i i mask. strip off MSB ;Page Line Count: Default = 66 .Printed lines per page test iEOF ,ascii code cpl Loop count values 230795-32 9-112 inter AP-161 0006 OOOA 0004 295 NDtCCt PHCntl Equ Equ EQU 06H OAH 04H J Normal Dot Column Count ; Expand@d Dot Column Count ; NUM3ER OF SM PHASES ON INIT ILFCnt LPI6p6 LPI8p8 LPIIO Equ Equ Equ Equ 04 36 27 24 i Ini t LF step/phz count ;Lines Per Inch 6.6 ; Lines Per Inch 8.8 ; Lines Per Inch 10 LineCt Equ Equ EQU 01 66 03H 296 EDtCCt 297 298 299 300 301 302 303 304 305 306 307 308 309 0004 0024 0013 0018 0001 0042 0003 FmFdCt Sta tus j 1 inefeed count j 1 ines per formfeed count ; SEE BELOW FOR STATUS BVTE DEF. TEST: SET FOR CR STPR MTR CONTROL = 310 PG 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 0080 0030 OOCC 0000 OOCC 003A 0092 OOCO 0098 OODF 0020 OOEF DOlO OOOC 0003 0040 OOCO * * * *TIMER * * *VALUES * * * - * UPI * * Timer/Counter * * * * * * * is* *UP * Counter * * * * * * * *12 * MHz * * elk * * timings * * * * * * * * * * * * * * * * * * * * * * * DLVCL DLVCS DlyTim Fai ITm CrTmrl CrTmr2 CrTmr3 IntTm2 LFTMRI NotBsy Busy Aok ReSAck StrpLF StrpCR 0000 0003 0008 0001 0003 0002 0000 0004 oooe 0008 0000 ~ 80H 30H 256-52 256-256 256-52 256-70 256-110 256-64 256-104 ;DELAV COUNT Lang ;DELAV COUNT Short ; TIME DELAV constant ~2.0mS ; Fai lSafe TIME = ~17. OmS ; CR Stpr Nt.,. Phase TIME = ~2. 08mS ; CR Stpr Mtr Phase TIME = ~2. 40mS ;CR Stpr Mtr Phase TIME = ""4. lamS ; Init Stpr Mtr Phase TIME = ~2.40mS ; LF Stpr Mtr Phase TIME = ~4. 16mS I/O port bit masks Equ ODFH Equ 20H Equ OEFH Equ 10H Mise ; Not BU5lJ ; Busy ; Ack iReSet Aok bit Masks Equ Equ OCH 03H ; Str ip off all , Strip off all bits but LF Stp,. Mtr bits but CR Stpr Mt,. Print Head fires on low going edge of Trigger bit *9 in dot column is masked off. always: PTRGLO PTRGHI EQU EQU 40H OCOH P2. bit 6 ;PH TRIGGER BIT - LOW ;PH TRIgGER BIT - HIGH * * * Stepper * * * * *Motor * * *Phase * * State * * * Equates * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 EQU EQU EQU EQU EQU EQU EQU EQU EQU FStCRP RStCRP STLFF Stepper Motor Phase Shift Index Offset Offset EQU OOH iF CR stpr mtr phase data start addr EQU 03H ;R CR stpr mtr phase data start addr Equ ;Paper feed stpr mtr phase data start addr 08H CARRIAGE STEPPER MOTOR PHASE EQUATES Forward (1 thru 4> CRMFPI CRMFP2 CRMFP3 CRMFP4 EQU EQU EGU EQU & OIB lIB lOB 003 Reverse (4 thru 1) : ;CR ;CR ;CR ;CR STPR STPR STPR STPR MTR MTR MTR MTR PHASE PHASE PHASE PHASE I 2 3 4 ; LINE FEED STEPPER MOTOR PHASE EQUATES Forward: LFMFPI LFMFP2 LFMFP3 LFMFP4 EQU EQU EQU EQU ; LF ; LF ; LF ; LF 01003 1100B 1000B 00003 STPR STPR STPR STPR MTR MTR MTR MTR PHASE PHASE PHASE PHASE I 2 3 4 = 364 PG j 230795-33 9-113 AP-161 365 * * * * * * * * * .. * * .. .. * * * * * * * * * * * * * * * .. * * 367 368 369 370 371 372 = 373 374 375 376 377 378 = 379 380 .. .. * * * * .. .. .. * * .. .. * .. * * * .. * * * * * .. * * * * * * * = 366 STEPPER MOTOR SELECT ~ CONTROL [CURRENT LIMITING] PORT BIT ASSIGNMENT: \ \ \ S S S L. C C F R R B 1 o 3 2 5 5 :; 5 3 2 1 0 = 381 = 382 383 = 384 = 385 386 = 387 388 = 389 390 391 = 392 393 394 395 396 397 = 39B 399 400 0008 OOOC 0006 OOOE CODING: SL.F SCRBO SCR132 SMOFF SCRBO EGU 08H SCR132 EGU OCH SL.F EQU 06H SMOFF EGU OEH PG * * * .. * .. * * * * * * * * * * .. .. * .. * * * * .. * * .. * * * * * .. * * * 404 * * * * * .. * * * * * * * * * * * * * * * * * .. * * * _* ................ * MAIN PROGRAM BODY 406 0003 0003 142:1 0005 93 0007 0007 1429 0009 C5 OOOA 83 407 408 409 410 411 412 START: 413 414 415 416 10FIV: 417 418 419 420 TMRIV: 421 422 423 Power On I Reset Program Entry PROGRAM START Org OOH -iMP RESET INPUT BUFFER FULL. INTERRUPT CAL.L. ENTRY AND VECTOR ORG 03H Call IBFIS RETR TIMER OVERFLOW INTERRUPT CALL. ENTRY AND VECTOR 07H ORG Call TMRIS SEL. RBO Rot 424 0000 OOOC 0000 OOOF 15 35 B40F B42F 0011 B44B 0013 9400 0015 8422 0017 8400 0019 142C CR STPR MTR - 80 COL. STPR MTR OFF CR STPR MTR - 132 COL. STPR MTR OFF L.F STPR MTR ON wIeR STPR MTR OFF , SEL.ECT CR & LF STPR MTR OFF 401 405 0000 0400 ,SEL.ECT w/L.F , SEL.ECT .,/L.F , SELECT 402 403 0000 0110 06H 1000 OAH 1 1 0 0 OCH 1110 OEH W/SCRBO & SCR132 '0' [BOTH SEL.ECTED] DEFAUL.T IS TO 80 COL.. [DO NOT KNOW WHETHER SCRBO='O' WIL.L. SEL.ECT BO COL. ONL.Y] - REGUIRES TEST. 425 426 R.s.T: 427 428 429 430 431 432 433 INITIALIZATION Dis Dis I Call Call TCnt! InitAI ClrDM Call Call InitCR InitL.F ;5et all critical outputs inactive itlear .11 d.ta m.mor~ - 93H to 7FH do not clear RBO, RBI or Stack ,CALL CR SM POWER ON INIT ,CAL.L L.F 8M POWER ON INIT 434 MAIN PROGRAM LOOP 435 J 436 437 Home: Call 43B 439 Call 440 CBlnpt: Call 441 442 All program segments are called from here CRHome Call Home CR routine fixes logical and ph~9ic.l CR Home set default register value. Defalt E8CBfF Stat Switch I CB Input Service Test test foT': CD full/fill, LF, FF, Char Prnt Test 230795-34 9-114 intJ 0010 0010 OOIF 0020 0021 0023 AP-161 3400 9400 05 FA 7215 0419 443 Repeat: 444 445 446 447 448 449 450 SMDTiv LFDriv RBI A.ChStRI ; Call Forward Stpr MtT Drive ,Call Lin.f.ed Stpr MtT Drive .get the Char Status Register RBI j Jump to CR SM Home if EOF bit set i loop to Char Buffer Input test Home CBlnpt PG * * * * * * * * * * * * * * • * 451 452 Call Call SEL Mov .J03 .Jmp Interrupt Service Routine i * * * * • * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 453 4!!4 • 455 ------------------------------------------------------------------------ 456 Input Buffer Full Interrupt Service Routine 4!!7 -----------------------------------------------------------------------458 459 IBFIS: 460 -----------------------------------------------------------------------461 Acknowledge Char input and set Hold/Busy Active 002!! 8A20 0027 15 0028 83 ORL P2,*Susy .get & set DBB ACK/Busy Bits 463 Dis I ;disable IBF interrupts 464 Ret 462 465 466 ------------------------------------------------------------------------ 467 0029 15 002A 35 0020 83 Timer 475 PG 476 * * * * * * * * * * * * * * * * * * * * 477 002C 0020 002E 0030 0031 05 FA 53EF AA C5 0032 0033 0035 0037 0039 0030 OF 1230 3245 5249 72!!E 042C 0030 FA 003E 4304 0040 AA 0041 9400 0043 042C 0045 9400 0047 042C 0049 004A 0040 0040 004E 0050 0051 0053 05 FA 4310 AA 0823 FO 0381 9657 0055 0057 0058 0059 005A 005C 0050 B020 FO AF 10 8439 C5 83 Counter Interrupt Service Routine I 468 -----------------------------------------------------------------------469 ITF interrupt service routine disables all tntr during 470 stpr mtr phase shifting 471 THRI5: Dis I ;disabl@ IBF int~rrupts 472 Dis TCntI idicabl@ ITF interrupts 473 Ret 474 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 Ext@rnal Switch Check/Char. Buffer Fill Statu~ * * * * * * * * * * * * * * * * * * * * *;Prep * * *fo~* *normal * * * character * * * * * handling/input * * * * * * * * SEL Mov ANL Mov SEL RBI A.ChStRI A, 4tNrmPrn ChStRl.A RBO iget the character stat reg byte ;set normal character input ;store the stat b~te ESCBfF: Test External Status Port MovD A.P7 ; get the stat switch port bits .JBO FormFd service Formfeed .JBI LinFd service Linefeed .JB2 ChT'Tst service Character TEST .JB3 service Char Buffer Check/Fill OnLine i Loop .Jmp ESCOfF FormFd: Mov ORL Mov Call .Jmp A.GStR20 A. ttFrmFd GStR20.A LfDriv ESCBfF LinFd: Call .Jmp LfDriv ESCDfF ; ,get the status byte iset the formfeed stat flag ; store trhe status byte Ida a formfeed ida a line drive ----------------------------------------~------------.-------------------- ChrTst: SEL Mov ORL Mov Mov Mov AOO .JNZ AscCLd: Mov Mov Mov Inc Call SEL Ret RBI A.ChStRI A.ttTstPrn ChStRJ. A TmpR10,.PTAscS A.!!TmpRIO A.ttLAsEnd AscCLd @TmpR10."Ascii A.!!TmpRIO OpnR71.A PgLnCt .ot formfeed flag 616 .JNC NoFmFd I if nat at ond af p.ge skip 617 Mav A.GStR20 ; get the status byte 61B ORL A.ttFrmFd ; set tho form feed status flag 619 Mav GStR20.A ; save tho status byte 620 NoFmFd: SEL RBI 621 En I ; enable the IBF service 622 ANL P2.ttNotBslj i output a not busy to Host 623 LFTest: .JNIDF LFTest ; loop to next char 624 ANL P2 •• Ack ; output ODD Ack 10"' 625 In A.DDD ; get next Char - assume it's a LF 626 and ignor it eLF i. fOT"ced upon 627 detection of CR at print time) 62B SetPad: Mov A.ChStRl ; get the status b~te 629 ORL A.• CRLF ; set CRLF stat bit: pad balance of CD 630 with Spaces until fill 631 Mov ; store ChStRl. A tho status byte 632 ORL P2.ttReSAck ; output ODD ACK High 633 .Jmp IBfS~E ; Jmp to addr step I- eKit 634 635 fill Char Buffer with space 636 CBPadl: Mov eCAdrRl.ttSpace; load data memor~ w/Char 637 i ----------------------------------------------------~----~-------------638 step the char address test for CB full &/or pad 639 IBFS~E: DEC CAd~Rl .Decrement dat memory location 640 Mov ;get the status byte A.ChStRl 641 CBFul1 ;test for CB Full .JDl 642 ;test for CB pad - exit w/Busy set .JD2 CBFIEx 643 644 Set Busy Line Low - Not Busy 645 EN I 646 ANL P2,ttNotBsy ;output a not busy to Host 647 64B eKit wi Busy Still set high 649 CBFull: 650 CBFIEK: Ret 651 652 PG 653 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * L-to-R/R-to-L Carriage Stepper Motor Drive and Line Printing 6~4 6~~ 0100 0100 3622 656 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 657 ORG 100H 658 659 660 SMDriv: JTO RAccel ; if Print Head at left drive right 661 else drive left 662 F========================================~============ ============ 663 FAceel: iL-to-R Accelerate Stepper Motor 664 Sot the Forward acceleration/drive Entry status bits Mov 665 A.GStR20 ;get the status byte 666 ANL A,ttClrSnk ;set not at speed flag = 0 ANL 667 A,ttNAtSpd ;set Not At Speed flag = 0 66B ORL A,.LRPrnt iset L-to-R prnt stat bit = 1 669 ORL A•• Ready j set stpr mtr ready - Drive On 670 ANL A•• ADIntN ; set AID Jnit Not Done 671 Mov GStR20,A ;store the status byte 672 CORDi r: SEL RBI 673 Mov A.ChStRI ;get the Char Stat Reg Dat~ Mem Addr 674 ORL A.tlLRP~nt iSet L-~o-R print bit 675 Mov ChStRI.A i save the Char Stat b~te 676 RBO SEL 677 678 Restore the phase register indeK addresses 679 Mav TmpROO,.CPSAdr ;get Phz Storage Addr psuedo reg 680 Mov A,@TmpROO j get stored CR last phase index addr 6BI Mov PhzR30,A ;place last LF phase index addr in Phz, Reg 682 ; 0102 0103 0105 0107 0109 0103 0100 010E 010F 0110 0112 0113 FA S3DF 53 OF 4380 4301 53EF AA OS FA 43BO AA C5 0114 DB21 0116 FO 0117 AD 230795-37 9-117 AP-161 0118 0119 011A 011C 011E 0120 0122 0123 0125 0127 0129 012B 012D 012E 012F 0130 0132 0133 10 FO 521E 2440 BOOO 2440 FA 530F 53DF 537F 4301 53EF AA D5 FA 537F AA C5 0134 0821 0136 FO 0137 AB 0138 0139 013A 013C 013E 0140 0142 0143 0144 0146 CB FO 523E 2440 B003 B822 FO E3 B820 AO 0147 BDBA 0149 2308 0140 3D 014C 014D 014E 014F FD 62 FB E3 0150 0152 0153 0154 B820 40 3C 55 0155 740C 0157 FA 0158 F264 015A 0153 015C 015E 0160 0162 CB FB 5260 2462 BB03 246C 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 ·763 764 765 766 Set up for next phase bit output b~~ore entering timing loops ,STEP PHASE DO ADDRESS INC PhzR30 MOV A.PhzR30 ; CHECK THE PHASE COUNT REG J02 IAFZrP ;CHK FOR COUNT BIT ROLLOVER JMP iskip ad,. index reset SMDflt IAFZ,.P; MOV PhzR30 •• FStCRP ,ZERO CR SM PHASE REGISTER Jmp SMDflt ; R================================================================= iR-to-L Accelerate Stepper Motor RAceel: Sot the Reverse acceleration/drive Entry status bits , get the status byte Mov A.GStR20 ANL A.ttClrSnk ; clear Print ReadlJ bit A.tlNAtSpd -; set Not At Speed flag = 0 ANL ANL A.ttRLPrnt i'set R-to-L prot status bit ORL A•• Ready ;'set stPT" mtr -re"ady - Drive On ANL A,ttADIntN ; set AID Init Not Done Mov GStR20.A i store the status byte RCBRDr: SEL RBI Mov A,ChStRl ; get tho Char Stat Reg Data Mem Addr p,.int bit ANL A. ttRLPr'nt j Set R-to-L Hov ; save the Char Stat byte ChStRI. A RBO SEL Restor. the phase register index address TmpROO.ttCPSAd... ;get Phz Storage_Addr psuedo reg Mov A.@TmpROO get sto~ed CR last phase index .ddr Mov PhIR30,A ;place last LF phase index addr in PhI Reg Mo" Set up for next phase bit output before entering timing loops· ,STEP PHASE DB ADDRESS Ph zR30 Dec A.PhzR30 ,CHECK THE PHASE COUNT REG MOV IARZrP ;CHK FOR COUNT BIT ROLLOVER .JB2 ..IMP SMDflt IARZrP: MOV Ph,R30.tlRStCRP ; ZERO CR SM PHASE REGISTER SMDflt: for stablilation of unused stpr mtr du~ing CR stpr mtr drive. store the unused stp~ mtr current phase bits Mov TmpROO,*LPSAdr iget the CR phI storeage "addr Mov A.@TmpROO ;get the b~ute stored there MovP3 A.eA .get the,phl data b~te Mav TmpROO.*LastPh; load Last PhI psuedo reg to Temp Reg Mov @TmpROO.A ;store Last Phase bits - inderect SetUp Stpr Mtr Time Constant MOV TConRO •• CrTmr2 ;Load time constant Reg Select: MOV MOVD STRTT: A.tlSCRBO PS. A iSelect the Stpr Mtr ,GET CR SM SELECT BITS ,SELECT SM [SCR80] SetUp Stpr Mtr Phase Shift index address register Output next phase and init timer to Std Time constant MOV A.TeDnRO ;get time constant from reg MOV T, A i load the timer MOV A,PhIR30 ;get the phI reg indirect addr index MovP3 A.@A ida indirect get of phI bits patch together the CR l.st and.LF next phase bits Mov TmpROO,*LastPh ; load Last PhI psuedo reg to Temp Reg A,@TmpROO ;patch together CR existing ~ new LF ORL MOVD P4. A ; OUTPUTB ITS STRT T ,START TIMER At "start of timing loop do all Stpr Mtr Accel/Decel or Character SetUp overhead Call ADPTst ,call A~cel/Decel/Print Test PNRdyl: Set up for next ph.s~ bit output before entering timing loops itest for forward I reverse phase st.rt indirect index to load Mov A, QStR20 .sto~e stat b~te JB7 AclF2 reverse: Set up for next phase bit output before entering timing loops Dec Ph,R30 ,STEP PHASE DB ADDRESS MOV A.PhzR30 ,CHECK THE PHASE COUNT REG .JB2 ARZroP ,CHK FOR COUNT BIT ROLLOVER ..IMP ARN,tP ARZroP: MOVPh,R30.tlRStCRP ,ZERO CR SM PHASE REGISTER ARN,tP: ..Imp AN,tPh 230795-38 9-118 AP-161 767 768 769 0164 0165 0166 0168 016A ID FB 526A 246C BBOO ; f OTlilard: Set up for next phase bit output before entering timing loops PhzR30 ,STEP PHASE DB ADDRESS INC A.PhzR30 ,CHECK THE PHASE COUNT REG MOV 772 AFZroP ,CHK FOR COUNT BIT ROLLOVER JB'il ANxtPh i5kip adr index reset 773 JMP PhzR30 •• FStCRP ,ZERO CR SM PHASE REGISTER 774 AFZroP· MOV 770 Ac IF2: 771 775 ANxtPh: 016C 1682 016E 5672 0170 246C 0172 00 0173 5677 0175 246C 776 , --------------------------------------------------------------777 stage one timer loop - T occurs before Std timeout wait for timR out 778 ,JMP ON TIME OUT-t DOES NOT OCCUR 1ST 779 TLOOP2: JTF FAILSF , IS T HIGH-JMP TO tCHK 780 JTI tCHKI ,LOOP FOR JTI OR JTF· 781 JMP TLOOP2 i delal,l. then double check T signal 782 tCHKI: NOP ,JUMP T TEST TRUE-WAIT FOR JTF 783 JTI tTruWl 784 JMP TLOOP2 785 tTruWl: 786 787 0177 0178 017A 017C FA D27C 247E 74CA 017E 1698 0180 247E test for Print Ready bit - ~as Print Head Fire Setup Done? insert acceleration time/store time count done/notdone flag bit Mov A.GStR20 ;get the status b~te - prep for prnt JOb RdyPr2 ; if Ready Print bit set call PHFire Jmp SkpPHF else skip Print Head Fire Call PHFire iprint head solenoid fire ~outine 788 789 790 791 RdyPr2: 79'il PNRd~'il: 793 SkpPHF: 794 tTruW'il: JTF 795 JMP ,JUMP TO SM ERROR , LOOP TO TLOOP3 NXTPHZ tTruW2 796 0182 2300 0184 62 0185 55 0186 0187 0189 018A 018C 018E 0190 0191 0193 0195 0196 0197 FA 4308 AA 5690 16AC 248A 00 5695 248A 65 42 AI 0198 FA 0199 F'ilA7 0193 26AC 0190 FA 019E 1'il4C OIAO 4302 01A2 53BF 0lA4 AA 0lA5 244C 0lA7 FA 0lA8 1'il4C OIAA 24AC OIAC 5437 OIAE FA OlAF F2B3 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 Step into failsafe/startup time~ setup - T does not occurs before Std Time timeout. load failsafe SM p~otection time and wait for failsafe timeout or T. If T occurs output phase immediately after T verify. FAILSF: MOV MOV STRT A.*FailTm T. A T set the Mov ORL Mov TLOOP3: JT1 JTF JMP tCHK2: NOP JTI JMP StrTml: Stop Mov MOV Status bit for Store time test iget th~ status byte A.GStR20 iset Failsafe/constant time flag A.*FSCTm istore the status byte GStR20.A , ,LOAD TIMER W/~15. OmS SM PROTECTION TIMEOUT ,START TIMER , 15 THIGH ,IF TIME OUT GO SM ERROR ;LOOP UNTIL T HIGH OR T-OUT , WAIT j Jump out and store elapsed time JMP TO FAILSF LOOP istop the failSafe Timer iread the timer .Store the time read in indexed addr - next entry to AID Memorize Time routine will add time constant to it tCHK2 DSLECT TLOOP3 StrTml TLOOP3 TCnt A.T C!TStrRO.A Test is CR Stpr Mtr Drive is finished prior to next phase output NXTPHZ: test for forward I reverse phase start indirect index to load Mov A,GStR20 istare stat byte .JB7 FDrive Reverse t~st for Reverse Stpr Mtr Drive procedure exit ALWAYS drive the CR to the left most HOME position ~NTO EOLn ;test if home position Jmp stop Mav A.GStR20 .get the status byte .JBO StrtT itest Ready stat bit: if bit 0 = 1 then Print More A, .. DoNotP ;set the do not print flag ORL lclear Print Ready bit ANL A,"ClrSnk Mov GStR20.A isave the status byte Jmp StrtT icontinue CR 8M drive - only exit is HR Forward test for Forward Stpr Mtr Drive procedure exit FDrive: Mov A.GStR20 ,get the status b~te JEO StrtT ,test Ready stat bit: if bit 0 = 1 then Print More Jmp EOLn else Jmp to End Of Line exit ;Jump to start timer again 841 842 843 844 845 DSLECT: 846 EOLn: Call DeclSM 847 848 test for fo~warJ 849 Mov A, GStR20 850 JE7 FDrvFS .call Sptr Mtr Deceleration reverse phase start indirect index to load ;store stat byte i Jrnp to f drive flag set 230795-39 9-119 inter AP·161 0101 53FD 0103 530F 01B5 53DF 01B7 AA 01BB 83 851 ANL A."OkPrnt 852 853 854 update tho status byte 855 FDrvFS: ANL A."ClrSnk B56 857 ANL A.4INAtSpd 858 Mov QStR20.A 859 RET 860 0200 0202 B92F 0204 BCOB 0206 FA 0207 4310 0209 AA 020A 4436 020C EC26 020E FA 020F 4320 0211 AA 0212 3226 0214 0215 0216 0218 0219 D5 FA 4340 AA F21F 021B B92F 021D 4421 021F B980 0221 DD51 0223 BDOI 0225 C5 0226 722C 0228 FD 0229 AI 022A 4435 022C Fl 022D 03C8 022F 6D 0230 Al 0231 FA 0232 53F7 Ok Print ;clear Print Ready bit ; set the Status bit for Store time test ;Clear At Print Speed Bit ; save the status byte 861 PG 862 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 863 0200 920C .reset print flag - ; only if printing R-to-L Stepper Motor AmI. TimeStomge 864 * * * * * * * * * '* * * * * * * * * * * *' * * * * * 865 866 ORG 200H 867 Entry has G.n Stat Byte in A 868 ADMmTS: JB4 DADlnt ; is AID init done - then Jmp 869 870 1st Entry initializes, the AID Time store working registers 871 Mov TStrRO.*SMBf5t ;Load the Stpr Mtr Buffer Start Addr 872 Mov CntR40 •• ASBfSz .Load the Buffer Size Mov A.QStR20 .get the status byte 873 874 ORL A."ADlntD ;set not 1st Accel Entr~ Flag 875 Mav GStR20.A .stare the status byte 876 ~mp AOExit ;exit - 1st entry has not generated 877 a closed time window 878 879 Step the AID Store count 880 DAD~nt: D~NZ CntR40. StorCt i dec Times to store count 881 ; if not 0 store the count ielse at end-set done fl~g 882 883 Mov A.GStR20 .get the status byte 884 ORL A.4IAtSpdF ;set at speed/no more to store flag 885 Mov GStR20.A ;store the status byte B86 887 Initialize Char Print Registers: if printing enabl~d B88 JBl StorCt ; if 00 Not Print stat bit set B89 Skip the Char register ioit 890 891 Initialize all Char Reg's 892 Test for L-to-R (forward) or R-to-L (reverse) printing 893 SEL RBI 894 Mav A.ChStRl ;get the status byte 895 ORL A.4ICHlntD iset Char Init Done flag - bypass 896 Mav ChStRl.A ; save the status byte 897 .IB7 LdCBRI ;test Chr Stat Bvte Returned 898 if bit 7 = 1 then Print L-to-R Mov CAdrRl.4IRCBfIS ; load char reg w/char bufr strt R-to-L 899 LdCDR: 900 .Imp LdCBR2 901 902 LdCBRI : Mov CAdrR 1. 4IFCBfIS iload char reg wlchar bufr strt L-to-R 903 904 LdCBR2: Mov CCntRI •• ChDfIS ; load char cnt reg w/char bufr size 905 ;set the chr dot column cnt Mov CDtCRl.4I01 906 SEL RBO 907 908 Test for t > TC or t < Tc 909 StorCt: ~B3 FailST .test for failsafe time switch 910 911 t < Tc = store Time Constant in use 912 Mav A.TConRO ;Get time constant currently in use Mav @TStrRO,A ;Memorize/Store the time - indirect addr 913 914 .Imp ADPRet 915 916 t > Tc = store Time Constant + FailSafe Time Elapsed 917 [see Accel/Cnst Speed/Decel WaveForm] 918 e~uation is: Trd - FailSafe Time = Tx => Trd + Cpl(FailSafe Time) = Tx 919 920 Tx + Tcnst = T Store/Memorize T 921 922 923 FaUST: Mav A.i!TStrRO iget the stored tim~ 924 Add A,.FTCpl ;2's cpl add A, TConRO ;Add: Time stored + Time constant 925 Add 926 currently in use (!TStrRO.A iMemorize/Store the time 927 Mov 928 Reset the Status lJ.it for Store time test 929 930 Mov A.GStR20 iget the status byte 931 ANL A.4IClrFSC ireset F,ailsafe/cDnstant time flag 932 assumes entry via constant time 230795-40 9-120 AP-161 0234 AA 0235 C9 0236 83 933 934 ADPRet 935 AOExit: Mov Dec Ret GStR20,A TStrRQ i j store the status byte step the AID time data store addr 936 937 PG 938 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 940 941 * * * * * * * * * * * * * * * * * * * * * * * * 939 Carriage Stepper Motor Deceleration 942 Oec: 15M: 0237 0925 0239 BCOA 02313 FB 023C E3 023D 023F 0240 0241 0242 0243 B820 40 3C Fl 62 55 0244 19 0245 FA 0246 F252 0248 0249 024A 024C 024E 0250 CB FB 524E 445A BB03 445A 0252 IB 0253 FB 0254 5258 0256 445A 0258 BBOO 02~A FB 025B E3 025C 025E 025F 0261 0263 0264 B820 40 1663 445F 3C EC41 0266 B821 0268 FB 0269 AO 026A B478 026C B490 026E 83' 943 SetUp the Deceleration registers 944 f10v TStrRO,8SMBEnd iLoad the Stpr Mtr Duffer End Addr 945 Mov CntR40.*OSBfSz ;Load the Buffer Size 946 MoV A,PhzR30 ;get phase index address 947 MovP3 A.@A .get phase from indexed address 948 patch together the CR last and LF next phase bits 949 Mov TmpROO.8LastPh ; load Last Phz psuedo reg to Temp Reg 950 oRL A.@TmpROO ;patch together CR existing & new LF 951 MoVD P4.A ;oUTPUT BITS 952 StrtTD: MoV A.@TStrRO ;get time from indexed data memor~ 953 MoV T.A ; load timer 954 STRT T ; START TI MER 955 Inc TStrRO ;step the Memorized time addr index reg 956 test for forward I reverse phase start indirect index to load 957 Mev A,GStR20 ,store stat byte 958 JB7 DclF2 959 960 re .... erse: 961 Set up for next phase bit output before entering timing loops 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 PhzR30 A,PhzR30 ; decrement the phase addr ;Get the phz data addr JB2 DRZreP ;CHK FOR COUNT BIT ROLLOVER JMP DRZreP: 110V Jmp ; DNxtPh PhzR30.8RStCRP; ZERO CR SM PHASE REGISTER Dc IR2 forward: Set up for next phase bit output before entering timing loops Inc PhzR30 ; increment the phase addr MOV A.PhzR30 ;Get the ph: data addr JB2 DZroPh ;CHK FOR COUNT BIT ROLLOVER JMP DNx tPh ; skip adr index reset DZroPh: 110V PhzR30.8FStCRP ; ZERO CR SM PHASE REGISTER Dc IF2: DNx tPh: Dc IR2: TLoopD: N. tPD2: SetRN: DMExit: ; set up for next phase shift A,PhzR30 iget phase index address Mo .... P3 A,@A ;get phase from indexed address patch together the ~R last and LF next phase bits Mov TmpROO. ttLastPh i load Last Phz psuedo reg to Temp Reg oRL A,@TmpROO ;patch together CR existing ~ new LF MoV JTF JMP MoVD DJNZ N.tPD2 TLeopD P4.A ;JMP oN'TIME OUT TO NEXT PH ;LooP UNTIL TIME OUT ; OUTPUT BITS CntR40,StrtTD iExit Test Set Storeage of next phase data in psuedo addr. This insures next phase is sequence correct for stpr mtr drive direction Mov TmpROO,ttCPSAdr ,get Phz Storeage Addr psuedo reg MOV A.PhzR30 ;get Phz data Mov @TmpROO,A ; store CR Next phase index addr Call DlyLng Call RET DeSISM 996 PG 997 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 998 0300 Dec MOV 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 lOll Stepper Motor Phase Shift Definitions All program procedures call this data. * * * * * * * * * * * * * * * * * * * * * * oRG *** * * * * * * * *.* * * * 300H DEFINE PHASE ADDRESSES: THE PHASE DATA IS ENCODED TO THE ADDRESS CALLED DURING THE STPR MTR ENERGIZE SEQUENCE CORRESPONDING TO THE NEXT PHASE OF THE SEQUENCE REQUIRED, CARR AGE MOTOR ENCODING: FORWARD REVERSE LEFT-to-RIGHT RIGHT-te-LEFT 230795-41 9-121 AP-161 0300 0301 0302 0303 01 03 02 00 0308 0308 0309 030A 0300 04 OC 08 00 1012 1013 1014 1015 lOll. 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 Reverse direction ENCODINQ is t~e •• me bVtes acc •• sed in reverse direction DB DB DB DB CRMFPI CRMFP2 CRMFP3 CRMF'P4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * LF MOTOR PHASE ENCODE ~ DECODE: ORG 308H DB DS DB DB LFMFPI LFMFP2 LFMFP3 LFMFP4 1034 PG 1035 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 103b Accel/Decel I Character Handling Test 1037 * * * *TEST * * >* * Is* CR * *Stpr * * Mtr* At * *Speed * * * 77* * * * * * * * * * * * * * * 103B 1039 Ves - SetUp do Character Proc •• sing No - C.lculate' I Store the Acceleration Phase Shift Time (11) 1040 1041 1042 1043 ADPTst: Mov A.GStR20 iget the st.tus bVte 1044 itest if Stpr Mtr At Speed .ISS PHFSot 1045 Jmp to Prnt Head Fire Setup 1046 ielse C.II Aceel/Decel M.mor~ Time Store .Imp ADMmTS 1047 1048 * 030C FA 0300 B211 030F 4400 1049 0311 0313 031' 0317 0318 031A 031B 031C 0310 2668 326A D21B FA 4340 AA 05 FA D23A Fi 03F3 C626 6437 FA F22B 0329 6432 * * * * * ** * ** * ** * * ** * ** * * ** * ** ** * ** * ** ** * ** * Process Characters for Printing 1050 * * * * * * * * * * * * * * 1051 1052 Character dot matrix - normal char 1053 d Dot Column 1054 b = Blank Column 1055 b d d d d d 1056 (Char MatT'ix) 1057 1058 000 o b 1059 d 000 I 1060 001 o d 1061 001 I d 1062 010 o d 1063 I 010 I d 1064 1065 Ret,...n 1066 PHFSet: .INTO i if R-O nat ,... •• d~ to print-exit 1067 NPRet ; if ~o Not Print stat bit s.t - EXIT .IBI i if bit pT'eviousl~ set-skip setting it 106B SinkSt .lSI. 1069 A.GStR20 iget the st.tus byte Mov 1070 A,ISnkSet iset P~nt Read~ Sink bit ORL 1071 GStR20.A isave the status bute Mov 1072 S;nkSt: SEL RBI ;get cha,. status registe,. addT' 1073 Mov A.ChStRI I test Cha~ Init Done, 1 • Print Dot 1074 PageCk .lSI. o .. Qat Cha~ 1075 1076 1077 031F 0320 0322 0324 0326 0327 FORWARD (CLOCKWISE) Forward direction ENCODING: I ** * PG 107B Call for Individual ch.,....cter proce.sing: mid line test 1f CR/(LF) 1079 lOBO lOBI QetChr: IOB2 test for CR/(LF) if it is the t.st position in the line IOB3 CRChCk: Mov A.@CAdrRI iget character Itest for Carriage Retuf'n 10B4 ADD A•• CRCpl if CR go .ervice it IOB5 .IZ CrLnCk i if not CR Insef't Space Cha,. AsciCl IOB6 .Imp A.ChStRI .get char status register addr IOB7 CRLnCk: Mov itelt Chr Stat Byte Returned .ID7 HlfLn 10BB i f bit 7 • I th~n print L-to-R IOB9 .Imp SpFIIl j if R-to-L print skip exit upon CR detect 1090 1091 230795-42 9-122 inter 0328 FD 032C 03D9 032E F632 0330 648A 0332 97 0333 2320 0335 6438 0337 FI 0338 7498 033A 0338 0330 033F 0341 FA 8241 F4EB 6443 D4FO AP-161 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 IIII 1112 1113 1114 1115 1116 0343 EB61 0345 0346 0348 0349 034B 034D 034F FA 53BF AA ED 58 53FD 53FE AA 0350 0351 0352 0354 0355 0356 CS FA 53FE AA D5 6468 0358 FA 0359 F25E 0353 035C 035E 035F 19 6468 C9 6468 0361 FA 0362 F267 0364 CC 0365 6468 0367 IC 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 ll42 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1151. 1157 1158 1159 111.0 1161 1162 1163 1164 1165 1166 1167 1168 1169 if L-to-R printing exit the line if less than 1/2 line printed Mev A. CCntR 1 ADD JC LnPad A,~HlfCpl J load char cnt reg wlchar bufr size iadd the ~'s cpt of 1/2 chr Duf size ; if CB)1/2 full set CR/LF stat bit for pad ; If CB<1/2 set buffer full stat bit Jmp MdLnEx imid-line exit Clr Mov Jmp C iclear A,.Space ChIsrt i A, I!CAdrRI GCharl ; get character leall the char lookup/trns table 5pFill: LnPad: AsciCl: Mav ChIsrt: Call ; i carr~ flag insert a space char char inserted Jmp over get char ---------------------------------------------------------------- PageCk: fetch the char dot column data ipage test for balance of char A.ChStRl ,get the status byte J85 FxJmpl ;fix Jmp over page boundries Call ChrPg2 ;Ascii char 50 - 7F Hex Jmp MtxTst ; Jump to Matrix Test Call ChrPgl ,Ascii char 20 - 4F Hex fall thru to print matri. and CB count tests Mov Fx.Jmpl: PG test the Char dot column print matrix count and Char buffer count MtxTst: DJNZ CDtCRI,PrntDt Mov ANL Mov DJNZ ANL ANL Mov ChStRI,A CCntR I, NotLCh A,IINCBFln A,IIClICBR ChStRI, A SEL Mov ANL Mov SEL Jmp A,Ch5tRl A,~ClntND R80 "A,G5tR20 A,~NotRd~ GStR20,A RBI Retrn ,test for dot color blank ; status b~te in A upon entry here ;get the status byte iset Char Init NotDone stat Flag istore the status b~te ; dec char cnt-Jmp if Not Last Char i if 0 reset stat bit Not CD Full Line .reset CD Reg Jnit Flag - do Init i save the status b~te ,get Gen Status register addr iclear the read~ bit • store the General Status Byte ; EXi t Test for L-to-R (forward) or R-to-L (reverse) printing (see GCharl ASCII char code translation procedure) NotLCh: Mov JB7 StpCh I: Inc Jmp 5tpCh2: Dec Jmp ;A contains LR/RL bit properly set i get char status register addr j test Chr 5tat B~te Returned i f bit 7 = I then Print L-to-R ; Increment char data memory ad dr. A,Ch5tRI StpCh2 CAdrRI Retrn CAdrRI Retrn ; Decrement char data memory addr. fall thru to Get Char Re-Entry E.it point for same char: (before returning step the matri.) Test for L~ta-R (forw.rd) or R-to-L (reverse) printing (see GCharl ASCII char code tr~nslation procedure) PrntDt: PrnDir: Mov JB7 A,ChStRI 5tpCD2 StpCDI: Dec CDotRI Jmp StpCD2: INC Retrn CDotRI get char status byte test Chr Stat Byte Returned if bit 7 = 1 then Print L-to-R reverse step char dot col index addr if R-ta-L print skip over L-to-R print addr inc for~ard step char dot -col index addr if L-to-R print EXIT PG 230795-43 9-123 inter 0368 CS 0369 83 036A OS 036D FA 036C F27C 036E 036F 0370 0372 CS FA 53BF 83 0373 027C 0375 4340 0377 AA 0378 0807 037A 6488 037C E888 037E FA 037F 530F 0381 ·AA 0382 C5 0383 FA 0384 53FE 0386 AA 0387 83 0388 C5 0389 83 038A 038B 0380 038F 0390 0391 0392 0394 0396 0397 FA 53FO 53FE AA C5 FA 4302 53BF AA 83 AP-161 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 I1B2 IIB3 l1B4 IIB5 I1B6 1187 118B 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 120B 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 0398 AE 0399 0398 0390 039F 03AO 03EO F69F 64C9 97 FE 03Al 03BO 03A3 F6AE 03AS 03A6 03A8 03A9 03AA 03AC FA 4320 AA FE 03EO 64B8 Character Print SetUp Exit Procedures Clean Standard Exit etrn: NPRot: SEL Ret RBO , ' . ,EXIT - return wi Reg a.nk 0 Reset Do Not Print ex i t: SEL RBI A.ChStRI Mav .JD7 SkpNPI set Stpr Mtr drive routine count loop ;get"the status byte .test print direction Reverse SEL RDO Mav A, GStR20 j~~t the. status b~te ;reset the print read~ bit- skips PHFire call A.lICI~Snk ANL Ret Forward ..JDb SkpNPI ; test· for first PHFSet entT'~ reg init Initialize registeT variabltts upon" fiT'st'entr~ end of count clears char to print -bit in status SkpNPI: NSetEx: NPE, i t: ORL Mav Mov A•• ChlntD ChStRl.A TmpRIO •• 07H ..Jmp NPEx i t O.JNZ Mav ANL Mav SEL Mav ANL Mav TmpRIO. NPExit A.ChStRI A•• ClntNO ChStRI.A RBO A.QStR20 A•• NatRd~ QStR20.A ~vte ,set Char Reg lnit Done stat bit isave the status byte i load CR stpr mtr count during NoPrnt ,get the status byte - chQr inlt.not done isave t~e status byte i~eset iget Ge~',Stat~s register addT , iclear the ready bit istore the QRner.l Status B~te Ret SEL Ret RBO Mid-Line Exit MdLnEx: EXIT Mav ANL ANL Mav SEL Mov ORL ANL Mav Ret if CR and nat A.ChStRI A.IINCDFln A.IICIICBR ChStRI.A ROO A.ClStR:10 A•• OoNotP > A,.CIrSn. QStR20.A 1/2 li~. dorie,during L-to-R print .get the status byte ; if· 0 reset stat bit Not CB Full Line ir~set C~ Re~ Init Flag - do Inlt isave the status byte ;get the RBO status byte iset the Do Not Prin~ FlagCfor RAceel) ;reset the print ready bit-exit FAceRI ; save the status byte PG 1222 1223 Character Dot Generatar Math 1224 Look-up Table Page Vectoring Print Head Firing 1225 1226 1227 1228 QCHARI: MOV St~CRI. A ,STORE THE CHAR 1229 1230 SCT'een fa~ printable char (char +(cpl 20 ~e' +' 1 EO Hex)) 1231 AOD A.lIOEOH 1232 .JC PrntCh '. , , 1233 CntlCh i Jmp ta:c~~trol char lookup table Jmp 1234 PrntCh: Cl~ C lclear c.r~~ flag 123~ Mav A.St~CRl ;get the char again 1236 1237 screen for char page [char +(cpl 50 Hex + I = DO Hex)] 1238 if carrV char on page 2 ,else page 1 1239 ADD A.lIOBOH 1240 Page2 .JC 1241 1242 Page Character -- ASCII ,20 Hex. thru 4F Hex 1243 Correct offset for lookup table page 1244 {(char + EO He.)*5 = Page 1 indeX_.ddT) 1245 1246 Pagel: Mov A.ChStRI iget the status bvte 1247 O~L A.*ChOnPl is.t the page rentrv flag bit Mav ChStRI. A ;store the,status bVte 1248 1249 iget the char _gian A.St~CRl Mav 12~0 ADD A•• OEOH ,set page 1 relative 00 offset 1251 Jmp Multi5 i Jump to address math function 1252 = ---------------------------------------------------------------- 230795-44 9-124 AP-161 03AE 03AF 03BO 03B2 03B3 03B4 030b 97 FA 530F AA FE 03BO b4B8 03B8 0309 03BA 03BB 03BC AE E7 E7 bE AC 12S3 1254 1255 12Sb 12S7 1258 Page2: 1259 1260 12bl 12b2 12b3 1264 12bS 12bb 03BO FA 03BE F2C4 03CO FC 03CI 0304 03C3 AC 03C4 03C5 03C7 03C8 FA 4340 AA 83 03C9 83 03CA OS 03C3 FB 03CC 9602 03CE 0300 0302 0304 0305 0307 0308 0309 BBOb 6408 2340 3A 23CO 3A CS 83 12b7 12b8 1269 1270 1271 1272 1273 1274 1275 127b 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 129b 1297 1298 1299 1300 1301 1302 1303 1304 1305 130b 1307 1308 1309 1310 1311 0400 0402 0404 0406 BC04 B822 2308 AO 0407 BEOI 0409 841B CIT C ; clear Mov AnL Mov Mov ADD Jmp A.ChStRI ;get the status byte .set the page rentry flag bit ; store the status byte ; get the char agian .set page 2 relative 00 offset ifall thru to address math function Compute MUL TIS; Mov RL RL ADD MDV A •• ChOnP2 ChStRI. A A,StrCRl A.1I0BOH Multi5 carr~ flag character page offset dot pattern index addres5 .store the Iero offset char ,MULTIPLY CHR BY 5 TO FIND THE ADDRESS ,ADD I TO COMPLETE SX A.StrCRI ,SAVE THE ADDRESS CDotRl. A StrCRl. A A A Test fOT L-to-R (forward) or R-to-L (reverse> printing (see QCharl ASCII char code translation procedure) Mov JB7 A.ChStRl LRPrn MOV ADD A.CDotRI A.tlRLPShf MOV CDotRI. A ; get char status byte ; test Chr Stat B~to Returned i f b'i t 7 = I then Print L-toR • get the char index addr , .dd char offset - start at end ; -of chaT'. pT'int it R-to-L , SAVE THE ADDRESS Set the status byte for Character SetUp done LRPrn: ; get the status byte Mov A.ChStRI ORL A.IIChIntD i set 1st char col test bit Mov ChStRI.A i store the status b~te Ret i return \II/status b~t. in A test for non printable ch,aracters goes here CntlCh; Ret =0 * * * Print * * * Head * * *Fire * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *** * * * * * * * * * * * * * * * * * * * * * Entry point for print head solenoid firing te5t fa,. status byte for dot/blank column position SEL RBI Mov ; set the chr dot column cnt A.CDtCRI ; if char cnt not o - Fire He,ad Sol. JNZ Fire ; if Chr Oot Cnt O. reset the SetCnt: Mov CDtCRI.IINDtCCt char dot column count Jmp Retrnl ; sk ip PH Fire Fire: MOV A.IIPT,.gLo 'get tho Prot Head Trigger b",te OUTL P2.A ,FIRE PRINT HEAD A, .. PTrgHi MOV j get the Prnt Head Trigger byte , FIRE PRINT HEAD P2.A OUTL Retrol: SEL RBO , EXIT - return "'/ Reg Bank o Reset Ret PHFire: - 1312 PG 1313 * * * * * * * * * * * * * * * * * * • • * * * * * * * * * * * * * 1314 0400 Page 2 Character -- ASCII 20 Hex t~ru 4F Hex Correct offset for lookup table page two's complement of ASCII chr code LookUp Table page base char of 50H plus char * 5 {(char + BO Hex)*5 = Page 2 index addT) PaperFeed Stpr Mtr Drive *** 1315 * * * * * * * * * * * * * * * * * * * *** ** * * * * * * * ** * * 131b 1317 ORG 400H 1318 Init psuedo register \&lith LF inderect addr start - subse~u.nt 1319 exchanges of the psuedo register will ~ield correct value 1320 CntR40.IIILFCNT, INIT PHASE COUNT REG 1321 InitLF; MOV Mov TmpROO,.LP5Adr iget Phz Inderect Addr psuedo reg 1322 MOV A,.StLFF iget LF starting addr 1323 Mav @TmpROO,A istore LF phase index addr start 1324 in psu.do register 1325 Mav LnCtRO.*LineCt iset line count reg for 1 In 132b i enables exit following LF SM init 1327 ~mp LfDrvl i Jump over line/form feed amd variable 1328 line spacing tests & setups 1329 1330 LineFeed / FormFeed Drive 1331 * 230795-45 9-125 intJ 040B BCIB 0400 040E 0410 0412 0414 0415 FA 5214 BEOI 841B FE 37 0416 0301 0418 0342 041A AE 041B 0410 041E 041F 0421 B821 FO E3 0820 AO 040!0! 040!4 0425 040!6 0822 FO AD B098 0428 0!306 042A 3D 042B FB 042C E3 0420 B820 042F 40 1332 1333 load 'step count constant 90r standard line spat,iog 1334 1335 test for various line/inch spacing would go here 1336 (and removal of constant setup below) 1337 MOV CntR40. ttLPISp8 i in i t cnt reg for standard line feed 1338 1339 LineFeed/FormFeed Test 1340 A, GStR20 iget the-.statu5 b~te . 1341 LofDriv: t10v i if linefeed" Jmp to cnt load JB2 FmFd 1342 LnCtRO.tI;LineCt ;set line count reg for 1 line 1343 LnCtLd: Mav i Jmp to Start of Drive 1344 Jmp LfDrvl ,get the line count 1345 FmFd" Mav A.LnCtRO ;2'5 cpI Line Count 1346 Cpi A 1347 A,.Ol Add iAdd 2's cpl fOT. Paging 1348 A... PgLnCt Add PgLnCt ~ LnCt = n Line. to move 1349 PgLnCt+(cpl(LnCt) = n lines to move 1350 i set the line count for FF Mov LnCtRO,A 1351 1352 for stablization of unused stpr mtr during CR stpr mtr drive. 1353 store the unused stpr mtr current phase bits 1354 TmpROQ,#CPSAdr ig~t the CR phI stareage addr 1355 LFOrvl:· Mov Mov A,@TmpROO ;g@t the byute stored there 1356 MovP3 A.@A ;get the phz data byte 1357 Mov TmpROO •• LastPh i load Last.Phz psuedo reg to Temp Reg 1358 Mov @TmpROO,A ;store Last Phase bits - inde~ect 1359 exchange/store the phase register index addresses 1360 Mov TmpROO •• LPSAd~ ;get PhI Inde~ect Addr· psuedo ~eg 1361 Mov A,@TmpROO ;get LF last phase index addr 1362 Mov PhzR30,A iplace last LF phase index addr in PhI R@g 1363 MOV TConRO,8LFTMRl ;Load time constant Reg 1364 1365 1366 Select the Stpr Mtr ,GET CR SM SELECT BITS 1367 MOV A,ttSLF MOVO P5. A . ,SELECT SM [SCR80] 1368 1369 1370 1371 LineFeed / FormFeed Drive Loop 1372 1373 A.PhzR30 iget the ,hI reg indirect addr index MOV 1374 A.@A ido ind.irect get of phI bits MovP3 1375 patch together the CR last and LF next phase bits 1376 TmpROO.*LastPh i load Last PhI psuedo reg to Temp Reg Mov 1377 ORL A.@TmpROO ipatch together CR existing & new LF 1378 start timer and step motor, 1379 P4.A ,OUTPUT BITS MOVO 1380 1381 StrtLF: ;get time constant from rog 1382 STRLFT: MOV A.TConRO ; load tho timer 1383 T.A MOV STRT ,START TIMER 1384 T setup tho nlut phase to output 1385 , STEP PHASE DB ADDRESS 1386 Ph,R30 INC 1387 A,PhzR30 i get tho phase index address MOV ; test phase 1388 Ja2 ZROPHL 1389 JMP NXTPHL 1390 ZROPHL: MOV Ph,R30.41STLFF ;re-init phase register 1391 1392 NXTPHL: MOV A.PhIR30 ;get the phz reg indirect addr index 1393 MovP3 A.@A ido indirect get of phz bits patch together the CR last and L~ next phase bits 1394 TmpROO,ttLastPh i load Last Phz psuedo ~eg to Temp Reg 1395 Mov 1396 A.@TmpROO ipatch together CR existing & new LF ORL 1397 1398 TLoopL: JTF NXPHLF i Jrnp on time out to out~ut nxt phz ; loop until timer tim~s ·out 1399 JMP TLOOPL 1400 1401 NXPHLF: MOVD ; step motor - OUTPUT BITS P4.A CntR40,St,.LFT ; test for end of phase count for line 1402 DJNZ iprep for next line 1403 1404 test for various line/inch spacing would go here 1405 1406 MOV CntR40 •• LPISpS ; init cnt reg for standard line feed 1407 D~NZ LnCtRO.StrtLF itest for end of line count 1408 iGet the status byte 1409 Mov A.GStR20 1410 A,.LineFd ireset for line feed ANL 1411 GStR20.A ; save the status byte Mov 1412 1413 store the phase. register index addresses 1414 Set LineFeed Stpr Mtr Next Phase index address TmpROO,OLPSAdT' iget Phz StD~age Addr psuedo reg 1415 SetLRN: Mov c 0430 3C 0431 FO 0432 62 0433 55 0434 0435 0436 0438 043A IB FB 523A 843C BB08 043C FB 0430 E3 043E D820 0440 40 0441 1645 0443 8441 0445 3C 0446 EC31 0448 BCID 044A EE31 044C FA 0440 53FB 044F AA 0450 B822 230795-46 9-126 AP-161 0452 0453 0454 045b FB AO B478 B490 0458 83 141b 1417 141D 141'1 1420 1421 1422 1423 1424 1425 142b ByPas 1: 1427 Mov Mov Call Call A.Ph,R30 IlTmpROO.A DlyLng D.SISM iget the phase index address LF Next phase index addr ; stOTR Check if Char Buffer contains full line (eO char or nCh.r & CR) exit Dther~i5e continue to r.~d in characters Mov A.GStR20 iget the stat byte .JDI B~P •• 1 ; if Do Not Print Bit Set - EXIT Call CBFck Ret 1428 PG 142'1 * * * * * * * * * * * * * * * * • 1430 Minor Software Subroutines • * * * * * * * * * * * * * * • * 1431 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1432 1433 ORG 500H 1434 1435 143b System initialization subroutines 1437 1439 Defalt: 143'1 1440 reset/set EOF status flag bit = 0 1441 SEL RBI 1442 Mov A,ChStRl iget the char status b~te 1443 ANL A•• ClrEOF ; clear the EOF flag bit 1444 Mov ChStRl,A i store the char status b~te 1445 Mov TmpRI0.IPTAscS iget the Ascii code tmp store addr 144b Mov @TmpRIO,*Ascii ; load the tmp star reg ~/ascii start 1447 SEL RBO 1448 144'1 reset/set Ok-to-Print status flag bit = 0 1450 Mov A.GStR20 iget the status b~t. 1451 ANL A•• OkPrnt ireset print flag - Ok PTint 1452 Mov GStR20,A isave the status b~te 1453 RET 1454 InitAI: 1455 AllOH: 145b 1457 CLEAR all outputs 1458 SEL ROO 145'1 MOV A•• OFH ,FORCE PORT HI - RI OF 555 14bO MOVD Pb.A 14b1 MOV A•• OFFH ,TURN ALL PRNT SOL', OFF 14b2 OUTL PI. A 14b3 MOV A••PTRGHI iprint head fire tirgger inactive 14b4 OUTL P2.A 14b5 P2,.03 ·ORL iset eomm h~5k to ACK hi/Bus~ hi May 14bb GStR20 •• 00H ielear the status registers 14b7 SEL RBI May 14b8 ChStRl •• 00H 14b'l SEL RBO 1470 RET ,RETURN TO INIT ROUTINE 1471 * 0500 0500 0501 0502 0504 0505 0507 050'1 D5 FA 53F7 AA B823 B020 C5 050A 050B 050D 050E FA 53FD AA 83 OSOF 0510 0512 0513 0:115 051b 0518 051'1 0518 051D 051E 0520 0521 C5 230F 3E 23FF 3'1 23CO 3A 8A03 BAOO D5 BAOO CS 93 1472 0522 0523 0525 052b FA 4302 AA 3b2A 0529 3402 052A 3422 052C 0474 052E 93 052F D97F 0531 D'I5D 0533 BOOO 1473 1474 1475 147b 1477 1478 1479 1480 1481 1482 1483 1484 1485 148b 1487 1488 148'1 14'10 14'11 14'12 14'13 14'14 14'15 149b * * PG * * • Home * * * Carriage * * * * *I *Print * * *Head * * A5sembl~ * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *" CRHome: May ORL May .JTO RtoL: A.GStR20 A•• DoNotP GStR20.A RtoL Cell C.ll FAccal RAtcel Cdl Rot DlyVLg iget the status b~te isat the do not print flag isave the status bQte itest for position of PH •••• mbl~ drive accoTdingl~ Jd~ive CR Stp~ Mt~ ifind t~e logical left home CR position ;d.la~ a long time before continuing * * * *Claa~ * * *Data * *Memor~ * ******* * * * * **** * * *** * * ** ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *** At Po~erUp or Reset, follobling CR Ie LF Stpr Mtr Init, this procedure clears data memory above RBO. Stack and RBt. MOV RO •• DMTop ,GET BUFFER START LOCATION [HEX] MOV Rl ••DMSIZE ClrDM1: MOV @RO ••OOH ,ZERO MEMORY LOCATION , ClrDM: 230795-47 9-127 AP-161 0535 C8 0536 E933 ,053883 1497 1498 1499 1500 1501 DEC O-lNZ RET RO RI.CI~DMI ; d,ec buff:er. loop if not zero[endl ; RETURN TO IN IT ROUTINE PG 1502 * * * Character * * * * * Print * * * TEST * * * * * * * * * * * * * * * * * * * * * * 1503 1504 * * * * * *' * * * * * * * * * * * * * * * * * * * • * ** *** * * 1505 1506 PrnTst: 1507 TEST load t~e char buffer with successive increments of 1508 the ascii code start. test for end of ascii 1509 printable chars and reinit the char stream loaded. 1510 1511 CTInt: Mev CAdrRl, *FCBfSt j load char ~eg wlchar bufl' strt 1512 Mov CCntRI.tlChBfS, ; l'lad char cnt reg wlchal' bufr sile 1513 ChTst: ; Test char buffer fill wi th ASCII Char Code 1514 Mev A,opnr71 j get tho ascii char 1515 Mov C!CAdrRI. A ; load data memory wlC'hal' 1516 DEC CAdrRI ; Decremlmt dat memory location 1517 INC opnr?l ; Increment Ascii char numbll!T' 1518 ADD A. ttPAsEnd ; test for ascii cade end -INZ ChT'TGo 1519 • if not end Jmp _over code l'estaT't 1520 Mev OpnR71. "Asc i i 1521 ChrTGo: DJNZ CCntRl,ChTst J dec buffer. loop if not zeroCendJ SEL 1522 RBO 1523 RET ; ELSE RETURN TO INlT ROUTINE 1524 * 0539 B97F 053B B050 0530 053E 0531' 0540 0541 0543 0545 0547 0549 054A 1'1' AI C9 IF 03B2 9647 BF20 E030 C5 B3 1525 054B 0540 0541' 0550 0552 0554 0555 0556 0557 05SB 0:"9 055A 0553 055C 055E 0560 BC04 230B 3D BOCO BBOO FB E3 3C I'D 62 55 IB FB 5260 A462 BBOO 0562 0563 0564 0566 0568 0569 FB E3 1669 A464 3C EC57 056B 0560 056E 0561' 0571 0573 B821 FB AO B47B B490 83 0574 B87F 0576 A47E 0578 BBBO 057A A47E 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 153B 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 * * PG * * * *CR *Stpr * * Mtl' * * *Power * * On * * Initialization * * * * * * * and * * * * • * * * ** * * ** * * * * * * * * * * * * * * * * '. * * * * * * * * * * * * * * * * * This routine drives the CR or LF stpr mtr for four phase shifts for initialization. INITCR: MOV MOV MOVO MOV MOV MOV MovP3 STRTTR: ZroRg2: N, tPhR: MOVD MOV MOV STRT INC MOV -IS2 .IMP r10V MOV TLoopR: NXPHR1: reonRO. tUntTm2 ; POWER ON INIT STPR MTR ; load phase cnt reg for INIT ; GET CR SM SELECT BITS ; SELECT SM [SCR80] ,Load time constant Reg Ph,R30.tlFStCRP A.PhzR30 Ad!A P4.A A.TConRO ;get phase ,index register byte ; load indexed phase shift byte ; OUTPUT BITS ; GET TIMER CONSTANT CntR40.tlPhCntl A.tlSCR80 P5. A ; zero SM phase reg - forward T. A T Ph,R30 A.PhzR30 ; START TIMER ;step phase index register ; CHECK THE PHASE COUNT REG ZroRg2 N,tPhR Ph 'R30. tlFStCRP A. Ph ,R30 MovP3 AdM ..JTF -IMP MOVD D-INZ NXPHRI TLoopR P4. A CntR40.STRTTR ; zero, SM phase reg - for'waT'd iget phase index register byte ; load indexed phase shift ,byte ;-IMP ON TIME OUT TO NEXT PH ;LOOP UNTIL TIME OUT ; OUTPUT BITS store the last phase register index addresses Mov TmpROO •• CPSAdr iget Phz Storage Addr psuedo reg Mov A.PhzR30 iplaci last CR phase index addr in Phz Reg Mov @TmpROO.A store CR last phase index addr Call, DlyLng Call DeSISM RET 1564 PG 1565 -------------------------______________________________________ _ 1566 Time Delay Subroutines 1567 -------------------------______________________________________ _ 1568 1569 Very Lang 1570 DlyVLg: MOV TmpROO.tl7FH ; LOAD DELAY COUNT IN REG, 1571 -Imp DlyST 1572 1573 Lang 1574 DlyLng: MOV TmpROO.tlDlyCL ; LOAD DELAY COUNT IN REG, 1575 -Imp DlyST 1576 230795-48 intJ 057C AP-161 B830 057E 23CC 0580 62 OS81 55 0582 1680 OS84 OS OS8S FA OS86 9:28A 0588 OS8A OS80 OS8D OS8F 1469 C5 A482 E880 83 0590 230E OS92 3D OS93 83 IS77 IS78 IS79 1580 Not So Long - Short DI~Sht: 1581 DlyST: 1582 1583 1584 IS8S IS86 1587 IS88 IS89 IS90 1591 1592 1593 1594 1595 IS96 IS97 1598 1599 1600 1601 1602 1603 1604 1605 160b =1607 =1608 MOV TmpROO •• DI~CS ; LOAD DELAY COUNT IN REG. Start O@!alJ MOV NxtTLd: MOV STRT DI~Lop: JTF ; LOOP Dl~TO during time loop: Char buffer fill SEL Mov JB4 Call SEL JMP DJNZ RET SkpCI: DI~TO: ;GET MAX TIMER DELAY ; LOAD TIMER ; START TIMER A, ttOl\jTim T.A T RB 1 A.ChStRI SkpCI ;get the ch~racter stat reg byte test faT' normal char input or skip if char prot test ;service the char buffer fill IBFSrv ROO Dl~LOP TmpROO.NxtTLd idee delay count & test for exit stpr Mtr Deselect Stepper Motor DeSelect Routine DESLSM: ; DESELECT LF/CR SM SMEROR: MOV A•• SMOFF ;GET LF/CR SM DE-SELECT BITS MOVD P5.A ; DE-SELECT CR SM RET SINCLUDEC:Fl:CHRTBL.OV1) =1609 * * * * * * * * * * * * * * * * * * * * Character Dot Generator Look-up Table Page 1 =1610 =1611 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * =lbl2 . Character Table Page I, contains =1613 0600 =1614 =1615 =1616 =1617 =1618 =1619 =1620 =1621 =1622 =1623 20H ----------------------------------------> 4FH C.p)· ... S'l.I<'C)*+.-. 101234S6789: ; <=>?t!ABCDEFGHIJKLM .. ORG 600H Page 1 =1624 asc20 asc21 a5c22 asc23 asc24 asc25 asc26 asc27 i15c28 asc29 asc2A asc2B asc2C asc2D asc2E asc2F asc30 asc31 asc32 asc33 asc34 asc35 asc36 asc37 asc38 Character Dot Pattern Fetch DB DB DB DB DB DO DO DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB 7FH. 7FH. 7FH. 7FH. 7FH. 20H. 7FH. 78H. 6BH. OOH. 6BH. SOH. S5H. OOH. SCH. bCH. 77H. 19H. 26H. 26H. 7FH. 7FH. 7CH. 63H. 5DH. 3EH. 7FH. 7FH. 3EH. 5DH. 6BH. OOH. 77H, 77H. 41H. 7FH. 3FH. 4FH. 77H. 77H. 77H. 7FH. IFH. IFH. SFH. 6FH. 77H. 41H. 2EH. 36H. 7FH. 3DH. OOH. 3DH. IEH. 2EH. 5DH. 3EH. 3bH. 67H. bBH. 6DH. S8H. 3AH. 3AH. 43H. 35H. 36H. 7EH. OEH. 76H. 49H. 36H. 36H. 7FH, 7FH. 7FH 7FH, 7FH 7FH. 78H OOH. 6BH S5H. 6DH IBH. IDH 59H. 2FH 7FH. 7FH 7FH. 7FH SDH. 63H 6BH. SDH 77H. 77H 7FH. 7FH 77H. 77H 7FH. 7FH 7BH. 7DH 3AH. 41H 3FH. 7FH 36H. 39H 36H. 49H OOH. 6FH 3AH. 46H 36H. 4EH 7AH. 7CH 36H. 49H 230795-22 9-129 inter AP-161 , -1706 =1707 =1708 =1709 -1710 =1711 =1712 =1713 =1714 l1li171:5 =1716 -=1717 =1718 -1719 =1720 =17:21 =17:22 =172a -1724 al(39: •• c3C: 11$(30: asc3E: , , , , =172~ -1726 asc3F: as(40: .,,41 : • 5(42: •• c43: a5(44: •• c45: a.c46': 0I1c47: •• c48: •• ,49: asc4A: lI.c48: .. ,(4C: •• c4D: asc4E: • sc4F: -1727 "1729 -1729 -1730 .5c4E: t1.c4F: End Page I - =1735 06FO Fe =1743 =1744 -=1745 =1746 =1747 41H • OOH. OOH • OOH. 41H. OOH • 7FH • SFH. OOH. OOH• OOH • OaaH, SOH • OOH. 41H. ,< ,:> ,? ,@ ,A ,B ,C ,D ,E ,F ,Q ,H , I ,,J ,K ,L ,N ; te.t J test ,N ,0 -- Characte" Dot Pattern Fetch --------------------------------------------------------------- MDV MOVP Ai CDotRI A.I!A I get ch .. ,. index addl'ass off ... t ;get column dot pat ern b~t. this bit fix neces •• ,. .. to -not underline .ach chil"act.,. this .aves fixing each bit in the look up table ORL OutL RET .. 1748 =1749 =1750 =1751 =1752 A,*SOH PI. A ; char bit fix 'J output the dot pattern ; .xit ..,ith byte in ace -- Character Dot Pattern, Fetch --------------------------------------------------------------------- PAGE 2 -- Character Dot Generator Look-Up Table =17~3 -1754 -=1755 --------------------------------------------------------------------- Character Table Page 2, contains =17~6 :a1757 =17:58 =1759 =1760 OOH • ,9 a6H. 36H, 56H. 61H 7FH. 6BH. 7FH. 7FH aFH. 4BH. 7FH. 7FH 6BH. SDH. aEH. 7FH bBH, bBH, 6BH. 6BH 3EH. SDH. 6BH. 77H 7EH. 26H. 7AH. 7DH aEH. 22H. a6H. 71H 6DH. 6EH. 6DH. OaH a6H. a6H. a6H. 49H aEH. aEH. aEH. SDH 3EH. aEH. SDH. baH 36H. a6H. a6H. a6H 7bH. 76H. 76H, 76H aEH. aEH. 2EH. ODH 77H. 77H. 77H. OOH 3EH, OOH. 3EH, 7FH aFH. 3FH. aFH. 40H 77H, bSH, ODH. aEH aFH. 3FH. 3FH. 3FH 7DH. 73H. 7DH, OOH OdfH. OeIH, Of7H. a.aH OdfH. O.fH, Of'7H, SOH 7BH. 77H. 6FH. OOH 3EH. 3EH. !lEH. 41H Charac ter Dot Pattern Fetch =1736 =17a7 =1738 ChrPgl: -17a9 =1740 -1741 J -1742 06F2 4380 06F4 a9 06FS 8a a9H. 7FH. 7FH. 77H • 6BH. 7FH. 79H. 41H. OaH. --------------------------------------------------------------------- =1731 =1732 -17a3 =17a4 06Fl A3 DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB . • Ic3A: a.c38: :50H I -----------------------------------------:..> 7EH NOPGRSTUVWXYZC \ ] .... _(7 )abcdefgh i J k ImnopqrstuvwxlJ z (I)"" =1761 =1762 =176a 0700 =1764 ORG 700H =1765 =1766 =1767 Page 2 -- Character Dot Pattern Fetch «< Actual assembled chilrilcter t.ble· code not li,ted :>:>:> a1769 I - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __________________ _ -1770 SNoLIST -1818 .List =1819 Listing b.low is for reference only. ,actual code is not listed ""1820 at assembly 'time. -1768 =1821 I -1822 ------------------------------------------------------- -------------- =182a ilsc50 ilscSI ilsc52 ilsc53 ilsc54 asc:55 ilseS6 a.c57 ilseSe .sc59 =1824 =1825 =-=1826 =1827 =1828 -1829 -1830 =1831 &1832 DB DB DB DB DB DB DB DB DB DB OOH. 41H. OOH. S9H. 7EH. 40H. 60H. OOH. ICH. 7CH. 9-130 76H. 76H. aEH. 2EH. 76H. 66H. a6H. a6H. 7EH. OOH, aFH. aFH. 5FH. 3FH. 5FH. 67H. 6BH. 77H. 7BH. 07H. 76H. 5EH. 79H P 2l<~ G '6H, a9H R S T U V 36H. 7EH. 3FH. 5FH. 5FH. 6BH. 7BH. 4DH 7EH 40H 60H OOH ICH 7CH W X y 230795-50 infef Ap·161 iI!i.c5A DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB ilscSB ilsc5C ascSD ascSE asc5F asc60 asco1 a5(62: asc63: a5c64: a5c65: .:I5c66: asc67; a5c68: a5c69: asc6A: asc6B: asc6C: ascbD: ilsc6E: asc6F: a5c70: asc71 : asc7:2: a5c73: a5c74: a5c75: a5c76: asc77: asc7B: asc79: asc7A; A5C7B: A5C7C: A5C7D: A5C7E: 07EB FC 07EC A3 07ED 4380 07EF 39 07FO 83· =1873 =1874 =1875 ChrPg2: =187b =1877 =1878 =1879 =1880 =1881 =1882 =1883 1884 1885 DB DB DB DB DB MOV MOVP IEH. OOH. 7DH. 7FH. bFH. 3FH. 7DH. ODFH. OBOH. OC7H. OCFH. OC7H. OF7H • OF7H. 080H. OFFH, ODFH. OFFH. OFFH. 087H. OB3H. OC7H. 084H. OF7H. OFFH, OB7H. OFBH. OC3H. OE3H. OC3H. OBBH. OFFH. OBBH. 07FH. OFFH. 03EH. Ob7H. 2EH. 3bH. 3AH. 3CH 3EH. 3EH. 3EH. 7FH 7BH. 77H. bFH. 5FH 3EH. 3EH. 3EH. OOH 77H. 7BH. 77H. bFH 3FH. 3FH. 3FH. 3FH 7BH. 77H. OFFH. OFFH OABH. OABH. OABH. OB7H OB7H. OB7H. OB7H. OCFH OBBH. OBBH. OBBH. OBBH OB7H. OB7H. OB7H. OBOH OABH. OABH. OABH. OB7H OBIH. OFbH. OFEH. OFDH OABH. OABH. OABH. OC3H OF7H. OFBH. OFBH, 087H OBFH. 08BH. OBFH. OFFH OBFH. OBBH. OC2H. OFFH 080H. OEFH. OD7H. OBBH OBEH. 080H. OBFH. OFFH OFBH. OE7H. OFBH. 087H OF7H. OFBH. OFBH. 087H OBBH. OBBH. OBBH. OC7H OEBH. OEBH. OEBH. OF7H OEBH. OEBH, OEBH. OB4H 083H. OF7H. OFBH. OFBH OABH. OABH. OABH. ODBH OCIH. OBBH. ODFH. OFFH OBFH. OBFH. OBFH. OC3H ODFH. OBFH. ODFH. OE3H OBFH. OCFH. OBFH. OC3H OC7H. OEFH. OC7H. OBBH OB3H. OAFH. OAFH. OC3H 09BH. OABH. OB3H. OBBH 077H. 049H. 03EH. 03EH OFFH. 088H. OFFH. OFFH 03EH, 009H. 077H. 07FH 07BH. Ob7H. 05FH. Ob7H iget char index address offset iget column dot patern b~t. A.CDotRI A.C!A this bit fix nece5sar~ to not underline each character this saves fixing each bit in the look up table ORL OutL ichar bit fix ioutput the dot pattern b~te in ace A.1I80H PI. A i . l i t with RET 188b 1887 1888 1889 IB90 1891 A55EMBLY COMPLETE. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Program End * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * END NO ERROR5 230795~51 9-131 AP·161 APPENDIX B SOFTWARE PRINTER ENHANCEMENTS This section describes several software enhancements which could be implemented as additions to the software developed for this Application Note. Space is available for most of the items described. Approximatec Iy 5 bytes of Data Memory would be required to implement most of the features. Two bytes would be used for status flags. and two bytes for temporary data or count storage. It is possible to use less than five bytes. but this would require the'duplicate use of some flags. or other Data Memory stora~e. which will significantly COlpplicate the software· colling and debug taSks.· Special Characters Qr Symbols Dot matrix printing lends itself welI to the creation of custom characters and symbols. There are two aspects to. implementing special characters.· First. a character look-up table. and second. additiorial software:for de~ coding and processing the special characters Or symbols. Special characters might be scientific· notation. mathematical symbols; unique langltage characters. or block and line graphics characters: ' The character look-up table could be an additiorial page of Program Memory dedicated to· the special characters.· or replace part. or all. of the existing look-up tables. If an additional look-up table is used; a third page teSt would be needed /It the- begiJining of the Character Translation subroutine. There is fundanlentally no differtmce. between the processing of special characters and standard ASCn printable characters. If the characters require the same 5 x 7 dot matrix. the balance of the software would remain the same. If. however. the special characters require a different matrix. or the manipulation of the matrix. the software becomes more complex. . . In general. the major software modification required to implement special charac~rs is the size of the dot matrix printed or the dot matrix configuration used. In the case of scientific characters. it would often be necessary to shiftthe 5x 7 matrix pattern within the available 9 x 9 matrix. Block or line graphics characters. on"the-other-hand. wouid require using the entire 9 x 9 print head matrix arid printing during nornlalIy. blank dot columns.This would require suspending the blank column blariking mechanism implementeq in this Application Note. This would be the most complex aSpect of implementing special characters. It would possibly change the number of required instructions. and thus the timing between i>Ts detection and print head sbienoid trig- ger firing. This could cause the dot columns to be misa- . Iigned within a printed line and between lines. In the case of a matrix change. two approaches are possible: dynamically changing the matrix. in line. as standard ASCII characters are being printed. or isolating the special characters to a separate processing flow where special characters are bandied as a unique and complete line of characters only. A discussion of in line matrix changes for special characters is beyond the scOpe of ~is Appendix. It is sufficient to say that the changes would require the conditions setting the EOLN flag. character count. and dot column count software be modified during character processing and printing. Lower Case Descenders The general principle of implementing lower case descend~ is to shift the 5 x 7 character dot matrix within the available 9 x9 print head solenoid matrix. Implementing lower case descenders requires two software modifications and the creation of status flag for the purpose. First. the detection of characters needing de~ scenders and setting a dedicated status flag during the character code to dot pattern translation subroutine. Second, the character dot column data output to the print head solenoids mu.st be shifted for each dot column of the character. At the end of the character. the flag would be reset. Inline Control Codes Inline control codes are two to three character sequences. which indicate special hardware conditions or software flow control and branching. The first character·indicates that the conirol code sequence is beginning and is typicalIy an ASCII Escape Character (ESC)•. IBH. Termination of the inline code sequence would be indicated by a default number of code sequence characters. This would decrease the buffer size available for characters.. FulI 80 character line buffering 'Yould require loading the Character Buffer with a received character as a character is removed from it and processeq. The Inline Control Code test would be 'performed in two places: in the Character Buffer Fill subroutine and in the Character Processing (translation) subroutine. The test would be performed in the same mariner that a Carriage Return (CR) character code test is implemented. Examples are horizontal tabs and expanded or con- 9-132 intJ AP-161 densed character fonts. In the case of horizontal tabs, 20H (Space Character) would have to be placed in the Character Buffer for inline processing during character processing and printing. Unless fixed position tabs are used, a minimum of a nibble of Data Memory would be required to maintain a "spaces-to-tab" count. Fixed tab positions could be set via another inline control code, by default of the print software, or through the use of external hardware switch settings. The control code method of setting the tab positions. is the most desirable, but the most complex to implement. Different Character Formats Condensed and enlarged characters are variations in either the number of dots and/or the space used to print them. Thus, each character is a variation of the stepper motor and/or print head solenoid trigger timings. It is possible to print each in bold face by printing each dot twice per dot column position. This would require little software modification, but would require a status flag. Again, care must be used to ensure that the delay in retriggering the solenoids is precisely the same for each type of event. Without this precise timing the dot column alignment will not be accurate. The software modifications needed to implement enlarged or condensed characters is essentially the same. The carriage and print head solenoid firing software flow is the same, butthe timing for each changes. For condensed characters, the step Time Constant is doubled to approximately 4.08 ms, and the solenoids are fired four times within each step time. The step rate actually becomes a multiple of the solenoid firing time, and a counter incrementing once for each solenoid firing would be needed. At the count of four, the carriage stepper motor is stepped and the counter reset. In the case of condensed characters, PTS does not play the same roll as in standard or enlarged character printing. PTS is not used to indicate the optimum print head solenoid firing time. Solenoid firing is purely a time function for condensed characters. PTS would only be used for Failsafe protection. Enlarged characters would require the solenoids be fired twice per dot column data, in two sequential dot columns, at the same rate as standard characters. The character dot column data and dot column count would not be incremented at each output but at every other output. A flag could be used for this purpose. When printing either condensed or enlarged characters, the maximum character count would have to compensate for the increased or decreased characters per line count. When printing enlarged characters, the maximum characters per line would be 40. The Character Buffer could hold two complete lines of characters. But, condensed characters presents a quite different situation. The avalable character per line increases to 132, well beyond the 80 character Character Buffer size. The solution is to re-initialize the Character Buffer Size Count register count during condensed character processing. This will effectively inhibit the carriage stepper motor drive EOLN detection. Two status flags would be required; one for standard or enlarged characters, and the second for condensed characters. A third status flag would be required to implement bold face printing. Activating one of the alternate character fonts could be either through the use of external status switches or through inline control code sequences, as detailed above. Note, that if the alternate character fonts are implemented in such a way that format changing is to occur dynamically during any single line being printed, the same control code problems described above also apply. In addition, the effect on the timing and dot column alignment must also be investigated. Variable Line Spacing Variable line spacing is another feature which could be implemented either through the use of external status switches or inline control codes. The line spacing is a function of the number of steps the stepper motor rotates for a given line. Figure IS, Paper Feed Stepper Motor Predetermined Time Constants, in the Background section, lists the Time Constants required for three different line spacings; 6, 8, and 10 lines per inch. At the beginning of the Paper Feed Stepper Motor Drive subroutine, the default line step count is loaded. The software required is a conditional load for the line spacing, indicated by a status flag set in the External Status Switch Check subroutine or the Character Buffer Fill subroutine. Implementing the three different line spacings would require two additional status flags. 9-133 intJ AP-161 APPENDIX C PRINTER MECHANISM DRIVE CIRCUIT R1 PRINT PULSE 1 500 • 20ps PRINT PULSE 9 6-~~ol::~ ________________a~1~----~~lI~~~s~a~LE.NaID1 I SOLENOID 9 24V-10% TRIGGER PULSE 200ps OR LESS RESET PULSE o--------------- I-l O' GNOy CR B HI IU) ~ 120SW~ ffi=i LFA i.e+-< I .rtc+-, I ---- LFB LFC 1 LFO SLF intJ APPLICATION NOTE AP-90 November 1986 An 8741AH/8041ADigital Cassette Controller JOHN BEASTON, JIM KAHN PERIPHERAL APPLICATIONS Order Number: 231314-002 9-138 inter AP-90 INTRODUCTION in terms of development cost is to use a dedicated single-chip controller. However, a quick search through. the literature turns up no controllers compatible with these new transports. What to do? Enter the UPI-4IAH family of Universal Peripheral Interfaces. The microcomputer system designer requiring a lowcost, non-volatile storage medium has a difficult choice. His options have been either relatively expensive, as with floppy discs and bubble memories, or non-transportable, like battery backed-up RAMs. The full-size digital cassette option was open but many times it was too expensive for the application. Filling this void of low-cost storage is the recently developed digital minicassette. These mini-cassettes are similar to, but not compatible with, dictation cassettes. The mini-cassette transports are inexpensive (well under $100 in quantity), small (less than 25 cu. in.), low-power (one watt), and their storage capacity is a respectable 200K bytes of unformatted data on a lOO-foot tape. These characteristics make the mini-cassette perfect for applications ranging from remote datalogging to program storage for hobbyist systems. The UPI-4IAH family is a group of two user-programmable slave microcomputers plus a companion I/O expander. The 8741AH is the "flag-chip" of the line. It is a complete microcomputer with 1024 bytes of EPROM program memory, 64 bytes of RAM data memory, 16 individually programmable I/O lines, an 8-bit event counter and timer, and a complete slave peripheral interface with two interrupts and Direct Memory Access (DMA) control. The 804IA is the masked ROM, pin compatible version of the 8741AH. Figure 2 shows a block diagram common to both parts. The 8243 I/O port expander completes the family. Each 8243 provides 16 programmable I/O lines. The only problem associated with mini-cassette drives is controlling them. While these drives are relatively easy to interface to a microcomputer system, via a parallel I/O port, they can quickly overburden a CPU if other concurrent or critical real-time I/O is required. The cleanest and probably the least expensive solution Using the UPI concept, the designer can develop a custom peripheral control processor for his particular I/O problem. The designer simply develops his peripheral control algorithm using the UPI-41AH assembly language and programs the EPROM of the 8741AH. Voila! 231314-1. Figure 1. Comparison of Mini-Cassette and Floppy Disk Transports and Media 9-139 Ap·90 8-BITCPU I I 8-BIT DATA BUS INPUT REGISTER fl 1024.8 PROGRAM MEMORY 64.8 DATA MEMORY II II II II 8-BIT DATA BUS OUTPUT REGISTER 8-BIT TIMER/COUNTER 8-BIT STATUS REGISTER ' II 18 I/O LINES ;.. 1/ V' SYSTEM BUS PERIPHERAL BUS 231314-2 Figure 2_ 8741AH/8041A Block Diagram He has a single-chip dedicated controller. Testing may be accomplished using either an ICE-4IA or the SingleStep mode of the 874IAH. UPI-4IAH peripheral interfaces are being used to control printers, keyboards, displays, custom serial interfaces, and data encryption units. Ofcourse , the UPI family is perfect for developing a dedicated controller for' digital mini-cassette transports. To illustrate this application for the UPI family let's consider the job of controlling the Braemar CM:600 Mini-Dek*. THE CM-600 MINI-DEK* The Braemar CM-600 is representative of digital minicassette transports. It is a single-head, single-motor transport which operates entirely from a single 5V power supply. Its power requirements, including the motor, are 200 mA for read or write and 700 mA for rewind. Tape speeds are 3 inches per second (IPS) during read or write, S IPS fast forward, and IS IP~ rewind. With these speeds and a maximum recording density of 800 bits per inch (BPI), the maximum data rate is 2400 bits per second (BAUD). The data capacity usingboth sides of a lOO-foot tape is 200K bytes. On top of this, the transport occupies only 22.S cubic inches (3" x3" x2.S" ). 'All I/O for the CM-600 is TTL-compatible and can be divided into three groups: motor control, data control, and cassette status: The motor group controls are GO/STOP,. FAST/SLOW, and FORWARDIREVERSE. The data 'controls are READ/WRITE, DATA IN, and DATA OUT. The remaining group of outputs give the transport's status: CLEAR LEADER, CASSETTE PRESENCE, FILE PROTECT, and SIDE SENSOR. These signals, shown schematically in Figure 3 and Table 1, give the pin definition of the CM-600 16~pin I/O connector. RECORDING FORMAT The CM-600 does not provide either encoding or decoding of the recorded data; that task is left for the, peripheral interface. A multitude of encoding techniques from which the user may choose are available. In this single-chip dedicated controller application, a "self-clocking" phase encoding scheme similar to that used in floppy discs was chosen. This scheme specifies that a logic "0" is a bit cell with no transition; a cell with a transition is a logic "1." *MiniDek is a registered trademark of Braemar. 9-140 inter AP-90 Table 1. CM-600 1/0 Pin Definition Function Pin 1/0 1 2 3 4 5 - 6 7 I 0 8 9 10 11 12 13 14 - 15 16 0 I 0 I I 0 0 I - Index pin-not used Signal ground Cassette side (O-side B, 1-side A) Data input (a-space, 1-mark) Cassette presence (a-cassette, 1-no cassette) Read/Write (a-read, 1-write) File protect (a-tab present, 1-tab removed) + 5V motor power Power ground Chassis ground Direction (a-forward, 1-rewind) Speed (a-fast, 1-slow) Data output (a-space, 1-mark) Clear leader (O-clear leader, 1-off clear leader) Motion (a-go, 1-stop) + 5V logic power 231314-4 Figure 4. Modified Phase Encoding of Character 3A Hex checksum. The checksum is capable of catching 2 bit errors. The number of data characters within a block is limited to 64K bytes. Blocks are separated by an InterRecord Gap (IRG). The IRG is of such a length that the transport can stop and start within an IRG, as illustrated in the data block timing, Figure 5. Braemar specifies a maximum start or stop time of ISO ms for the transport, thus the controller uses 450 ms for the IRG. This gives plenty of margin for controlling the transport and also for detecting IRGs while skipping blocks. THE UPI-41AHTM CONTROLLER INPUTS BLOCK DIAGRAM +5V MOTOR POWER---++5V LOGIC POWER---" OUTPUTS r----r---. TAPE DIRECTION (I WD/REW) . . BRAEMAA CASSETTE SIDE TAPE MOTION (STOP/GO)--. CM-600'~ FILE PROTECT TAPE SPEED {FAST/SLOW)---+DIGITAL ~ CASSETTE PRESENCE SELECT AEAO/WRITE~ MINI CASSETTE CLEAR LEADER DATA INPUT TRANSPORT ~ DATA OUTPUT POWER GROUND SIGNAL GROUND CHASSIS GROUNO-------. r--+- • 231314-3 Figure 3. Braemar CM-600 Block Diagram Figure 4 illustrates the encoding of th~ character 3~H assuming the previous data ended wIth the data lme high. (The least significant bit is sent first.) N oti~e t~Jat there is always a "clocking" transition at the begmmng of each cell. Decoding is simply a matter of triggering on this "clocking" transition, waiting % of a bit cell time, and determining whether a mid·cell transition has occurred. Cells with no mid·cell transitions are data a's; cells with transitions are data I's. This encoding technique has all the benefits of Manchester encoding with the added advantage that the encoded data may be "decoded by eyeball:" long cells are always a's, short cells are always I's. Besides the encoding scheme, the data format is also up to the user. This controller uses a variable byte length, checksum protected block format. Every block starts and ends with a SYNC character (AAH), and the character immediately preceding the last SYNC is the 9-141 The goal of the UPI software design for this application was to make the UPI-4IAH microcomputer into an intelligent cassette control processor. The host processor (8086, 8088, 808sA, etc.) simply issues a high-level command such as READ-a-block or WRITE-a-block. The 8741AH accepts the command, performs the requested operation, and returns to the host syst~m a result code telling the outcome of the operatIon, ego Good-Completion, Sync Error, etc. Table 2 shows the command and result code repertoire. The 8741AH completely manages all the data transfers for reading and writing. As an example, consider the WRITE-a-block command. When this command is issued, the UPI-4IAH expects a 16-bit number from the host telling how many data bytes to write (up to 64K bytes per block). Once this number is supplied in the form of two bytes, the host is free to perform other tasks; a bit in the UPI's STATUS register or an interrupt output will notify the host when a data transfer is required. The 8741AH then checks the transport's status to be sure that a cassette is present and not file protected. If either is false, a result code is returned to the host; otherwise the transport is started. After the peripheral controller checks to make sure that the tape is off the clear leader and past the hole in the tape, it writes a 450 ms IRG, a SYNC character, the block of data, the checksum, and the final SYNC character. (The tape has a clear leader at both ends and a small hole 6 inches from the end of each leader.) The data transfers from the host to the intJ AP-90 t--"-----BlOCK WRITE OPERATION-----....~I I SYNC I DATA ~~ I CHECKSUM ~450MS_1 I SYNC I I SYNC I DATA 1-450MS-1 'STOP TRANSPORT 'START TRANSPORT 231314-5 Figure 5. IRG/Block Timing Diagram (not to scale) character is not a SYNC, that's an error and the controller returns a Bad-First-SYNC result code (42H) after advancing to the next IRG. If the SYNC is good, the succeeding characters are read into an on-chip 30 character circular buffer. This continues until an IRG is encountered. When this occurs, the transport is stopped. The controller then tests that it is the last character. If it is a SYNC, the controller then compares the accumulated internal checksum to the block's checksum, the second to the last character of the block. If they match, a Good-Completion result code (DOH) is returned to the host. If either test is bad, the appropriate error result code is returned. The READ command also checks for the End-of-Tape (EOt) clear leader and returns the appropriate error result code if it is found before the read operation is complete. Table 2. Controller Command/Result Code Set Command Read (01 H) Result Good-Completion (OOH) . Buffer Overrun Errof(41 H) Bad Synch1 Error (42H) Bad Synch2 Error (43H) Checksum Error (44H) Command Error (45H) End of Tape Error (46H) Rewind (04H) Good-Completion (OOH) Skip (03H) Good-Completion (OOH) End of Tape Error (47H) Beginning of Tape Error (48H) Write (02H) Good·Completion (OOH) Buffer Underrun Error (81 H) Command Error (82H) End of Tape Error (83H) UPI-4IAH slave microcomputer are double buffered. The controller requests only the desired number of data bytes by keeping track of the count internally. If nothing unusual happened, such as finding clear leader while writing, it returns a Good-Completion result code to the host. If clear leader was encountered, the transport is stopped immediately and an End-ofTape result code is returned to the host. Another possible error would be if the host is late in supplying data. If this occurs, the controller writes an IRG, stops the drive, and returns the appropriate Data·Underrun result code. The READ·a-block command also provides error checking. Once this command is issued by the host, the controller checks for cassette presence. If present, it starts the transport. The data output from the transport is then examined and decoded continuously. If the first The 30 character circular buffer allows the host up to 30 character times of response time before the host must collect the data. All data transfers take place thru the UPI-4IAH Data Bus Buffer Output register (DBBOUT). The controller continually monitors the status of this register and moves characters from the circular buffer to the register whenever it is empty. The SKIP-n-blocks command allows the host to skip the transport forward or backward up to .127 blocks. Once the command is issued, the controller expects one data byte specifying the number of blocks to skip. The most significant bit of this byte selects the direction of the skip (0 = forward, I = reverse). SKIP is a dualspeed operation in the forward direction. If the number of blocks to skip is greater than 8, the controller uses fast-forward (5 IPS until it is within 8 blocks of the desired location. Once within 8 blocks, the controller switches to the normal read speed (3 IPS) to allow accurate placement of the tape. The reverse skip uses only the rewind speed (15 IPS). Like the READ and WRITE commands, SKIP also checks for EOT and beginning-of-tape (BOT) depending upon the tape's direction .. An error result code is returned if either is 9-142 Ap·90 encountered before the number of blocks skipped is complete. This application was developed on an Intel iSBC 80/30 single board computer. The iSBC 80/30 is controlled by an 8085A microprocessor, contains 16K bytes of dual-ported dynamic RAM and up to 8K bytes of either EPROM or ROM. Its I/O complement consists of an 8255A Programmable Parallel Interface, an 8251A Programmable Communications Interface, an 8253 Programmable Interval Timer, and an 8259A Programmable Interrupt Controller. The iSBC 80/30 is especially convenient for UPI development since it contains an uncommitted socket dedicated to either an 8041A or ~741AH, complete with buffering for its I/O ports. The ISBC 80/30 to 8741AH interface is reflected in Figure 8. (Optionally, an iSBC 569 Digital Controller board could be used. The iSBC 569 board contains three uncommitted UPI sockets with an interface similar to that in Figure 8.) The REWIND command simply rewinds the tape to the BOT clear leader. The ABORT command allows the termination of any operation in progress, except a REWIND. All commands, including ABORT, always leave the tape positioned on an IRG. THE HARDWARE INTERFACE There's hardly any hardware design effort required for the controller and transport interface in Figure 6. Since the CM-600 is TTL compatible, it connects directly to the I/O ports of the UPI controller. If the two are separated (i.e'. on different PC cards), it is recommended that TTL buffers ,be provided. The only external circuitry needed is an LED driver for the DRIVE ACTIVE status indicator. Looking at the host-to-controller interface, the host sees the 8741AH as three registers in the host's I/O address space: the data register, the command register, and the status register. The decoding of these registers is shown in Figure 7. All data and commands for the controller are written into the Data Bus Buffer Input register (D~BIN). The state of the register select input, AO, determines whether a command or data is written. (Writes with AO set to 1 are commands by convention.) All data and results from the controller are read by the host from the Data Bus Buffer Output register (DBBOUT). ' The 8741AH-to-host, interface is equally straightforward. It has a standard asynchronous peripheral interfac~: 8 data lines (Do-D7), read (RD), write (WR), register select (AO), and chip select (CS). Thus it connects directly to an 8086, 8088, 8085A, 8080, or 8048 bus structure. Two interrupt outputs are provided for data transfer requests if the particular system is interrupt-driven.DMA transfer capability is also available. The clock input can be driven from a crystal directly or with the system clock (6 MHz max). The UPI-41AH clock may be asynchronous with respect to other clocks within the system. ~~ c,o~ ".,' . 8041A :T XTAL2 VCC VDD CM-600 I-< S'S MOTOR POWER LOGIC POWER L B III in) :;) Wft III P24 P2S P20 :Iii Iii>- DO-D7 w III OBF \Sf TEST1 PIO PII PI2 PI3 PI4 PIS PI6 AO RESET EA VSS DATA OUT ~ ~ ~ ~ J P21~ ~ r +5V L DIRECTION MOTION SPEED READIWRITE CLEAR LEADER FILE PROTECT PRESENCE DATA IN POWERGND SIGNALGND CHASSISGND "2.DRIVE ACTIVE 231314-6 Figure 6. Controller/Transport System Schematic 9-143 AP-90 CS RD WR AO Register 0 0 0 0 0 0 I I 0 I I 0 0 0 I X X X DBBOUT STATUS DBBIN (DATA) DBBIN (COMMAND) NONE I I is set, any character found in DBBOUT is a result code. Thus whenever the host finds OBF set, it should test the BUSY flag to determine whether the character is data or a result code. Notice the OBF and IBF are available as interrupt outputs to the host processor, Figure 6. These outputs are self-clearing, that is, OBF is set automatically upon the controller loading DBBOUT and cleared automatically by the host reading DBBOUT. Likewise IBF is cleared to a 0 by the host writing into DBBIN: set to a 1 when the controller reads DBBIN into the accumulator. Figure 7. 8741AH/8041A Interface Register Decoding STATUS OBF-OUTPUT BUFFER FULL IBF-INPUT BUFFER FULL ' - - - - - FO-FLAG 0 L-_ _ _ _ F1-FLAG 1 L-_ _ _ _ _ DRIVE ACTIVE ' - - - - - - - - FILE PROTECT ' - - - - - - - - - CASSETTE PRESENCE '-----------BUSy , 231314-7 Figure 8. Status Register Bit Definition . The Status register contains flags which give the host the status of various operations within the controller. Its format is given in Figure 8. The Input Buffer Full (IBF) and Output Buffer Full (OBF) flags show the Status of the DBBIN and DBBOUT registers respectively. IBF indicates when the DBBIN register contains data written by the host. The host may write to DBBIN only when IBF is O. Likewise, the host may read DBBOUT only when OBF is set to a I. These bits are handled automatically by the UPI-41AH internal hardware. FLAG 0 (Fa) and FLAG I (Fl) are general purpose flags used internally by the controller which have no meaning externally. The remaining four bits are user-definable. For this application they are DRIVE ACTIVE, FILE PROTECT, CASSETTE PRESENCE, and BUSY flags. The FILE PROTECT and CASSETTE PRESENCE flags reflect the state of the corresponding I/O lines from the transport. DRIVE ACTIVE is set whenever the transport motor is on and the controller is performing an operation. The BUSY flag indicates whether the contents of the DBBOUT register is data or a result code. The BUSY flag is set whenever a command is issued by the host and accepted by the controller. As long as BUSY The flow charts of Figure 9 show the flow of sample host software assuming a polling software interface between the host and the controller. The WRITE command requires two additional count bytes which form the 16-bit byte count. These extra bytes are "handshaked" into the controller using the IBF flag in the STATUS register. Once these bytes are written, the host writes data in response to IBF being cleared. This continues until .the host finds OBF set indicating that the operation is complete and reads the result code from DBBOUT. No testing of BUSY is needed since only the result code appears in the'DBBOUT register. The READ command does require that BUSY be tested. ,Once the READ command is written into the controller, the host must test BUSY whenever OBF is set to determine whether the contents of DBBOUT is data from the tape. or the result code. THE CONTROLLER SOFTWARE The UPI-4IAH software to control the cassette can be divided up into various commands such as WRITE READ and ABORT. In a previous version of this ap: plication note (May 1980), software was described that implemented these commands. This code however did not adequately compensate for speed variations of the motor during record and playback nor for data distortion caused by the magnetic media. Since then, a new code has been written to include these effects. This revised software is now available through the INTEL User's Library, INSITE. For more information on this software or INSITE, contact your local INTEL Sales Office. 9-144 inter APPLICATION NOTE AP-281 July 1986 UPI-4S2 Accelerates iAPX 286 Bus Performance CHRISTOPHER SCOTT TECHNICAL MARKETING ENGINEER INTEL CORPORATION Order Number: 292018-001 9-145 inter AP-281 . INTRODUCTION The UPI-452 targets the leading problem in peripheral to host interfacing, the interface of a slow peripheral with a fast Host or "bus utilization". The solution is data buffering to reduce the delay and overhead of transferring data between the Host microprocessor and I/O subsystem. The Intel CMOS UPI-452 solves this problem by combining a sophisticated programmable FIFO buffer and a slave interface with an MSC-51 based microcontroller. The UPI-452 is Intel's newest Universal Peripheral Interface family member. The UPI-452 FIFO buffer enables Host-peripheral communications to be through streams or bursts of data rather than by individual bytes. In addition the FIFO provides a means of embedding commands within a stream or block of data. This enables the system designer to manage data and commands to further off-load the Host. The UPI-452 interfaces to the iAPX 286 microproces-. sor as a standard Intel slave peripheral device. READ, WRITE, CS and address lines from the Host are used to access all of the Host addressable UPI-452 Special Function Registers (SFR). The UPI-452 combines an MSC-5! microcontroller, with 256 bytes of on-chip RAM and 8K bytes of EPROM/ROM, twice that of the 80C51, a two channel DMA controller and a sophisticated 128 byte, two channel, bidirectional FIFO in a single device. The UPI -452 retains all of the 80C5! architecture, and is fully compatible with the MSC-51 instruction set. This application note is a description of an iAPX 286 to UPI-452 slave interface. Included is a discussion of the respective timings and design considerations. This application note is meant as a supplement to the UPI-452 Advance Data Sheet. The user should consult the data sheet for. additional details on the various UPI-452 functions and features. UPI-4S2 iAPX 286 SYSTEM CONFIGURATION The interface described in this application note is shown in Figure 1, iAPX 286 UPI-452 System Block Diagram. The iAPX 286 system is configured in a local bus architecture design. DMA between the Host and the UPI-452 is supported by the 82258 Advanced DMA Controller. The Host microprocessor accesses all UPI-452 externally addressable registers through address decoding (see Table 3, UPI-4S2 External Address Decoding). The timings and interface descriptions below are given in equation form with examples of specific calculations. The goal of this application note is a set of interface analysis equations. These equations are the tools a system designer can use to fully utilize the features of the UPI-452 to achieve maximum system performance. HOST-UPI-4S2 FIFO SLAVE INTERFACE The UPI-452 FIFO acts as a buffer between the external Host 80286 and the internal CPU. The FIFO allows the Host - peripheral interface to achieve maximum decoupling of the interface. Each of the two FIFO channels is fully user programmable. The FIFO buffer ensures that the respective CPU, Host or internal CPU, receives data in the same order as transmitted. Three slave bus interface handshake methods are supported by the UPI-452; DMA, Interrupt and Polled. The interface between the Host 80286 and the UPI-452 is accomplished with a minimum of signals. The 8 bit data bus plus READ, WRITE, CS, and AO-2 provide access to all of the externally addressable UPI-452 registers including the two FIFO channels. Interrupt and DMA handshaking pins are tied directly to the interrupt controller and DMA controller respectively. DMA transfers between the Host and UPI-452 are controlled by the Host processors DMA controller. In the example shown in Figure 1, the Host DMA controller is the 82258 Advanced DMA Controller. An internal DMA transfer to or from the FIFO, as well as between other internal elements,· is controlled by the UPI-452 internal DMA processor. The internal DMA processor can also transfer data between Input and Output FIFO channels directly. The description that follows details the UPI-452 interface from both the Host processor's and the UPI-452's internal CPU perspective. One of the unique features of the UPI-452 FIFO is its ability to distinguish between commands and data embedded in the same data block. Both interrupts and status flags are provided to support this operation in either direction of data transfer. These flags and interrupts are triggered by the FIFO logic independent of, and transparent to either the Host or internal CPUs. Commands embedded in the data 1:llock, or stream, are called Data Stream Commands. Programmable FIFO channel Thresholds are another unique feature of the UPI-452. The Thresholds provide for interrupting the Host only when the Threshold number of bytes can be read or written to the FIFO buffer. This further decouples the Host UPI-452 interface by relieving the Host of polling the buffer to determine the number of bytes that can be read or written. It also reduces the chances of overrun and underrim errors which must be processed. The UPI-452 also provides a means of bypassing the FIFO, in both directions, for an immediate interrupt of either the Host or internal CPU. These commands are called Immediate Commands. A complete description of the internal FIFO logic operation is given in the FIFO Data Structure section. 9-146 l > "tI >< I\) 'I/o en ·LOCAL co c: "tI cp ...... I (II -I>- I\) -.J (J) PORTS OR EXPANSION BUS 'ALTERNATE FUNCTIONS » "tI N (XI ..... 'Ui it 3 III g g'" DI cc ~ 292018-1 inter Ap·281 UPI-4S2 INITIALIZATION The UPI-4S2 at power-on reset automatically performs a minimum initialization of itself. The UPI-4S2 notifies the Host that it is in the process of initialization by setting a Host Status SFR bit. The user UPI-4S2 program must release the UPI -4S2 from initialization for the FIFO to be accessible by the Host. This is the minimum Host to UPI-4S2 initialization sequence. All further initialization and configuration of the UPI-4S2, including the FIFO, is done by the internal CPU under user program control. No interaction or programming is required by the Host 80286 for UPI-4S2 initialization. Host read/write access of the FIFO. The internal CPU sets the Slave Control (SLCON) SFR FIFO DMA Freeze/Normal Mode (FRZ) bit high (= 1) to activate Normal Mode. Ths causes the Slave Status (SSTAT) and Host Status (HSTAT) SFR FIFO DMA Freeze Mode bits to be set to Normal Mode. Table 2, UPI-4S2 Initialization Event Sequence ExaIIlple, shows a summary of the initialization events described above. Table 1. FIFO Special Function Register Default Values At power-on reset the UPI-4S2 automatically enters FIFO DMA Freeze Mode by resetting the Slave Control (SLCON) SFR FIFO DMA FreezelNormal Mode bit to FIFO DMA Freeze Mode (FRZ = "0"). This forces the Slave Status (SSTAT) and Host Status (HSTAT) SFR FIFO DMA Freeze/Normal Mode bits to FIFO DMA FreezeMode In Progress. FIFO DMA Freeze Mode allows the FIFO interface to be configured, by the internal CPU, while inhibiting Host access to the FIFO. SFRName Label Reset Value Channel Boundary Pointer Output Channel Read Pointer Output Channel Write Pointer Input Channel Read Pointer Input Channel Write Pointer Input Threshold Output Threshold CBP ORPR OWPR IRPR IWPR ITH OTH 40H/64D 40H/64D 40H/64D OOH/OD OOH/OD OOH/OD 01 H/1 D Table 2. UPI-452 Initialization Event Sequence Example Event Description The MODE SFR is forced to zero at reset. This disables, (tri-states) the DRQIN/INTRQIN, DRQOUT/ INTRQOUT and INTRQ output pins. INTRQ is inhibited from going active to reflect the fact that a Host Status SFR bit, FIFO DMA Freeze Mode, is active. If the MODE SFR INTRQ configure bit is enabled ( = 'I '), before the Slave Control and Host Status SFR FIFO DMA FreezelNormal Mode bit is set to Normal Mode, INTRQ will go active immediately. The first action by the Host following reset is to read the UPI-4S2 Host Status SFR Freeze/Normal Mode bit to determine the status of the interface. This may be done in response to a UPI-4S2 INTRQ interrupt, or by polling the Host Status SFR. Reading the Host Status SFR resets the INTRQ line low. • Any of the five FIFO interface SFRs, as well as a variety of additional features, may be programmed by the internal CPU following reset. At power-on reset, the five FIFO Special Function Registers are set to their default values as listed in Table 1. All reserved location bits are set to one, all other bits are set to zero in these three SFRs. The FIFO SFRs listed in Table 1 can be programmed only while the UPI-4S2 is in FIFO DMA Freeze Mode. The balance of the UPI-4S2 SFRs default values and descriptions are listed in the UPI-4S2 Advance Data Sheet in the Intel Microsystems Component Handbook Volume II and Microcontroller Handbook. • The above sequence is the minimum UPI-4S2 internal initialization required. The last initialization instruction must always set the UPI-4S2 to Normal Mode. This causes the UPI-4S2 to exit Freeze Mode and enables • • • Power-on Reset UPI-452 forces FIFO DMA Freeze Mode (Host access to FIFO inhibited) UPI-452 forces Slave Status and Host Status SFR to FIFO DMA Freeze Mode In Progress UPI-452 forces all SFRs, including FIFO SFRs, to default values. UPI-452 user program enables INTRa, INTRa goes active, high Host READ's UPI-452 Host Status (HSTAT) SFR to determine interrupt source, INTRa goes low UPI-452 user program initializes any other SFRs; FIFO, Interrupts, Timers/Counters, etc. User program sets Slave Control SFR to Normal Mode (Host access to FIFO enabled) UPI-452 forces Slave and Host Status SFRs bits to Normal Operation Host polls Host Status SFR to determine when it can access the FIFO - orHost waits for UPI-452 Request for Service interrupt to access FIFO • user optIOn 9-148 SFR/bit SLCON FRZ = 0 SSTAT SST5 = 0 HSTAT HST1 = 1 MODE MD4 = 1 SLCON FRZ = 1 SSTAT SST5 = 1 HSTAT HST1 = 0 AP-281 Commands can be used to structure or dispatch the data by defining the start and end of data blocks or packets, or how the data following a DSC is to be processed; FIFO DATA STRUCTURES Overview The UPI-452 provides three means of communication between the Host microprocessor and the UPI-452 in either direction; Data Data Stream Commands Immediate Commands Data and Data Stream Commands (DSC) are transferred between the Host and UPI-452 through the UPI452 FIFO buffer. The third, Immediate Commands, provides a means of bypassing the FIFO entirely. These three data types are in addition to direct access by either Host or Internal CPU of dedicated Status and Control Special Function Registers (SFR). The FIFO appears to .both the Host 80286 and the internal CPU as 8 bits wide. Internally the FIFO is logically nine bits wide. The ninth bit indicates whether the byte is a data or a Data Stream Command (DSC) byte; o = data, I = DSC. The ninth bit is set by the FIFO logic in response to the address specified when writing to the FIFO by either Host or internal CPU. The FIFO uses the ninth bit to condition the UPI-452 interrupts and status flags as a byte is made available for a Host or internal CPU read from the FIFO. Figures 2 and 3 show the structure of each FIFO. channel and the logical ninth bit. It is important to note that both data and DSCs are actually entered into the FIFO buffer (see Figures 2 and 3). External addressing of the FIFO determines the state ofthe internal FIFO logic ninth bit. Table 3 shows the UPI-452 External Address Decoding used by the Host and the corresponding action. The internal CPU interface to the FIFO is essentially identical to the external Host interface. Dedicated internal Special Function Registers provide the interface between the FIFO, internal CPU and the internal two channel DMA processor. FIFO read and write operations by the Host and internal CPU are interleaved by the UPI-452 so they appear to be occurring simultaneously. The ninth bit provides a means of supporting two data types within the FIFO buffer. This feature enables the Host and UPI-452 to transfer both commands and data while maintaining the decoupled interface a FIFO buffer provides. The logical ninth bit provides both a means of embedding commands within a block of data and a means for the internal CPU, or external Host, to discriminate between data and commands. Data or DSCs may be ,written in any order desired. Data Stream A Data Stream Command (DSC) acts as an internal service routine vector. The DSC generates an interrupt to a service routine which reads the DSC. The DSC byte acts as an address vector to a user defined service routine. The address can be any program or data memory location with no restriction on the number of DSCs or address boundaries. A Data Stream Command (DSC) can also be used to clear data from the FIFO or "FLUSH" the FIFO. This is done by appending a DSC to the end of a block of data entered in the FIFO which is less than the programmed threshold number of bytes. The DSC will cause an interrupt, if enabled, to the respective receiving CPU. This ensures that a less than Threshold number of bytes in the FIFO will be read. Two conditions force a Request for Service interrupt, if enabled, to the Host. The first is due to a Threshold number of bytes having been written to the FIFO Output channel; the second is if a DSC is written to the Output FIFO channel. If less than the Threshold number of bytes are written to the Output FIFO channel, the Host Status SFR flag will not be set, and a Request for Service interrupt will not be generated, if enabled. By appending a DSC to end of the data block, the FIFO Request for Service flag and!or interrupt will be generated. An example of a FIFO Flush application is a mass storage subsystem. The UPI-452 provides the system interface to a subsystem which supports tape and disk storage. The FIFO size is dynamically changed to provide the maximum buffer size for the direction of transfer. Large data blocks are the norm in this application. The FIFO Flush provides a means of purging the FIFO of the last bytes of a transfer. This guarantees that the block, no matter what its size, will be transmitted out of the FIFO. Immediate Commands allow more direct communication between the Host processor and the UPI-452 by bypassing the FIFO in either direction. The Immediate Command IN and OUT SFRs are two more unique address locations externally and internally addressable. Both DSCs and Immediate Commands have internal interrupts and interrupt priorities associated with their operation. The interrupts are enabled or disabled by setting corresponding bits in the Slave Control (SLCON), Interrupt Enable (IEC), Interrupt Priority (IPC) and Interrupt Enable and Priority (IEP) SFRs. A detailed description of each of these may be found in the UPI-4S2 Advance Information Data Sheet. 9-149 AP-281 () <5 o ...J ""o 9TH B I T INPUT FIFO CHANNEL 1= z o () ........ ...cg~------------------~ () ~I¢:=~>I ;;: INTERNAL CPU (DATA PROCESSOR) 292018-2 Figure 2. Input FIFO Channel Functional Diagram 9-150 inter AP-281 u <5 g ...J o 9TH B I OUTPUT FIFO CHANNEL T ~ 8 ....... §~~--------~----------t c ~I¢::==~ ;:;: INTERNAL CPU (DATA PROCESSOR) 292018-3 Figure 3. Output FIFO Channel Functional Diagram 9-151 inter AP·281 Table 3. UPI·452 External Address Decoding DACK CS A2 A1 AO 1 1 X X X 1 0 0 0 0 1 0 0 0 1 Data Stream Command from Output FIFO Channel Data Stream Command to Input FIFO Channel 1 0 0 1 0 Host Status SFR Read Reserved 1 0 0 1 1 Host Control SFR Read Host Control SFR Write 1 0 1 0 0 Immediate Command SFR Read Immediate Command SFRWrite 1 0 0 X 1- 1 Reserved X X X Reserved X DMA Data from Output FIFO Channel DMA Data to Input FIFO Channel READ. No Operation Data or DMA from . Output FIFO Channel Below is a detailed description of each FIFO channel's operation, including the· FIFO logic. response to the ninth bit, as a byte moves through the channeL The description covers each of the three data types for each channeL The details below provide a picture ofthe various FIFO features and operation. By understanding the FIFO structure and operation the user can optimize the interface to meet the requirements of an individual design. OUTPUT CHANNEL This section covers the data path from the internal CPU to the HOST. Data Stream Command or Immediate Command processing during Host DMA Operations is covered in the DMA section. WRITE No Operation Data or DMA to Input FIFO Channel UPI·452 Internal Write to the FIFO The internal CPU writes data and Data Stream Commands into the FIFO through the FIFO OUT (FOUT) and Command OUT (COUT) SFRs. When a Threshold number of bytes has been written, the Host Status SFR Output FIFO Request for Service bit is set and an interrupt, if enabled, is generated to the Host. Either the INTRQ or DRQOUT/INTRQOUT output pins can be used for this interrupt as determined by the MODE and Host Control (HCON) SFR setting. The Host responds to the Request for Service interrupt by reading the Host Status (HSTAT) SFR to determine the source of the interrupt. The Host then reads the Threshold number' of bytes from' the FIFO. The internal CPU may continue to write to the FIFO during the Host read of the FIFO Output channeL 9-152 inter AP-281 Data Stream Commands may be written to the Output FIFO channel at any time during a write of data bytes. The write instruction need only specify the Command Out (COUT) SFR in the direct register instruction used. Immediate Commands may also be written at any time to the Immediate Command OUT (IMOUT) SFR. The Host reads Immediate Commands from the Immediate Command OUT (IMOUT). The internal CPU can determine the number of bytes to write to the FIFO Output channel in one of three ways. The first, and most efficient, is by utilizing the internal DMA processor which will automatically manage the writing of data to avoid Underrun or Overrun Errors. The second is for the internal CPU to read the Output FIFO channels Read and Write Pointers and compare their values to determine the available space. The third method for determining the available FIFO space is to always write the programmed channel size number of bytes to the Output FIFO. This method would use the Overrun Error flag and interrupt to halt FIFO writing whenever the available space was less than the channel size. The interrupt service routine could read the channel pointers to determine or monitor the available channel space. The time required for the internal CPU to write data to the Output FIFO channel is a function of the individual instruction cycle time and the number of bytes to be written. Host Read from the FIFO The Host reads data or Data Stream Commands (DSC) from the FIFO in response to the Host Status (HSTAT) SFR flags and interrupts, if enabled. AU Host read operations access the same UPI-452 internal I/O Buffer Latch. At the end of the previous Host FIFO read cycle a byte is loaded from the FIFO into the I/O Buffer Latch and Host Status (HST AT) SFR bit 5 is set or cleared (J = DSC, 0 = data) to reflect the state of the byte's FIFO ninth bit. If the FIFO ninth bit is set (= 1) indicating a DSC, an interrupt isgenerated to the external Host via INTRQ pin or INTRQIN/INTRQOUT pins as determined by Host Control (HCON) SFR bit I. The Host then reads the Host Status (HST AT) SFR to determine the source of the interrupt. The most efficient Host read operation of the FIFO Output channel is through the use of Host DMA. The UPI-452 fully supports external DMA handshaking. The MODE and Host Control SFRs control the configuration of UPI-452 Host DMA handshake outputs. If Host DMA is used the Threshold Request for Service interrupt asserts the UPI-452 DMA Request (DRQOUT) output. The Host DMA processor acknowledges with DACK which acts as a chip select of the FIFO channels. The DMA transfer would stop when either the threshold byte count had been read, as programmed in the Host DMA processor, or when the DRQOUT output is brought inactive by the UPI-452. INPUT CHANNEL This section covers the data path from the HOST to the internal CPU or internal DMA processor. The details of Data Stream Command or Immediate Command processing during internal DMA operations are covered in the DMA section below. Host Write to the FIFO The Host writes data and Data Stream Commands into the FIFO through the FIFO IN (FIN) and Command IN (CIN) SFRs. When a Threshold number of bytes has been read out of the Input FIFO channel by the internal CPU, the Host Status SFR Input FIFO Request for Service bit is set and an interrupt, if enabled, is generated to the Host. The Input FIFO Threshold interrupt tells the Host that it may write the next block of data into the FIFO. Either the INTRQ or DRQINI INTRQIN output pins can be used for this interrupt as determined by the MODE and Host Control (RCON) SFR settings. ,The Host may continue to write to the FIFO Input channel during the internal CPU read of the FIFO. Data Stream Commands may be written to the FIFO Input channel at any time during a write of data bytes. Immediate Commands may also be written at any time to the Immediate Command IN (IMIN) SFR. 9-153 inter AP-281 The Host also has three methods for determining the available FIFO space. Two are essentially identical to that of the internal CPU. They involve reading the FIFO Input channel pointers and using the Host Status SFR Underrun and Overrun Error flags and Request for Service interrupts these would generate, if enabled in combination. The third involves using the UPI-452 Host DMA controller handshake signals and the programmed Input FIFO Threshold. The Host would receive a Request for Service interrupt when an Input FIFO channel has a Theshold number of bytes able to be written by the Host. The Host service routine would then write the Threshold number of bytes to the FIFO. If a Host DMA is used to write to the FIFO Input channel, the Threshold Request for Service interrupt could assert the UPI-452 DRQIN output. The Host DMA processor would assert DACK and the FIFO write would be completed by Host the DMA processor. The DMA transfer would stop when either the Threshold byte count had been written or the DRQIN output was removed by the UPI-452. Additional details on Host and internal DMA operation is given below. Internal Read of the FIFO At the end of an internal CPU read cycle a byte is loaded from the FIFO buffer into the FIFO IN/Command IN SFR and Slave Status (Sst AT) SFR bit 1 is set or cleared (I = data, 0 = DSC) to reflect the state of the FIFO ninth bit. If the byte is a DSC, the FIFO ninth bit is set (= 1) and an interrupt is generated, if enabled, to the Internal CPU. The internal CPU then reads the Slave Status (SSTAT) SFR to determine the source of the interrupt. Immediate Commands are written by the Host and read by the internal CPU through the Immediate Command IN (IMIN) SFR. Once written, an Immediate Command sets the Slave Status (SSTAT) SFR flag bit and generates an interrupt, if enabled, to the internal CPU. In response to the interrupt the internal CPU reads the Slave Status (SSTAT) SFR to determine the source of the interrupt and service the Immediate Command. FIFO INPUTIOUTPUT CHANNEL SIZE Host The Host does not have direct control of the FIFO Input or Output channel sizes or configuration. The Host can, however, issue Data Stream Commands or Immediate Commands to the UPI-452 instructing the UPI-452 to reconfigure the FIFO interface by invoking FIFO DMA Freeze Mode. The Data Stream Command or Immediate Command would be a vector to a service routine which performs the specific reconfiguration. UPI-4S2 Internal The default power-on reset FIFO channel sizes are listed in the "Initialization" section and can be set only by the internal CPU during FIFO DMA. Freeze Mode. The FIFO channel size is selected to achieve the optimum application performance. The entire 128 byte FIFO can be allocated to either the Input or Output channel. In this case the other channel consists of a single SFR; FIFO IN/Command IN or FIFO OUT/ Command OUT SFR. Figure 4 shows a FIFO division with a portion devoted to each channel. Figure 5 shows a FIFO configuration with all 128 bytes assigned to the Output channel. The FIFO channel Threshold feature allows the user to match the FIFO channel size and the performance of the internal and Host data transfer rates. The programmed Threshold provides an elasticity to the data transfer operation. An example is if the Host FIFO HOS! CPU CHANNEL BOUNDRY POINTER (CBP) -+ FIFO INPUT CHANNEL 1-+1 FIFO IN SFR FIFO OUTPUT CHANNEL 1+-1 FIFO OUT SFR J-. l+- INTERNAL CPU ~ HOST CPU 292018-4 Figure 4. Fu" Duplex FIFO Operation 9-154 Ap·281 HOST CPU CHANNEL BOUNDRY POINTER (CBP) -+1 FIFO IN SFR 1-+ INTERNAL CPU -+ FIFO INPUT CHANNEL H FIFO OUT SFR I+- 1 HOST CPU 292018-5 Figure 5. Entire FIFO Assigned to Output Channel data transfer rate is twice as fast as the internal FIFO DMA data transfer rate. In this example the FIFO Input channel size is programmed to be 64 bytes and the Input channel Threshold is programmed to be 20 bytes. The Host writes the first 64 bytes to the Input FIFO. When the internal DMA processor has read 20 bytes the Threshold interrupt, or DMA request (DRQIN), is generated to signal the Host to begin writing more data to the Input FIFO channel. The internal DMA processor continues to read data from the Input channel as the Host, or Host DMA processor, writes to the FIFO. The Host can write 40 bytes to the FIFO Input channels in the time it takes for the internal DMA processor to read 20 more bytes from it. This will keep both the Host and internal DMA operating at their maximum rates without forcing one to wait for the other. Two methods of managing the FIFO size are possible; fixed and variable channel size. A fixed channel size is one where the channel is configured at initialization and remains unchanged throughout program execution. In a variable FIFO channel size, the configuration is changed dynamically to meet the data transmission requirements as needed. An example of a variable channel size application is the mass storage subsystem described earlier. To meet the demands of a large data block transfer the FIFO size could be fully allocated to the Input or Output channel as needed. The Thresholds are also reprogrammed to match the respective data transfer rates. An example of a fixed channel size application might be one which uses the UPI-4S2 to directly control a series of stepper motors. The UPI-4S2 manages the motor operation and status as required. This would include pulse train, acceleration, deceleration and feedback. The Host transmits motor commands to the UPI-4S2 in blocks of 6- 10 bytes. Each block of motor command data is preceded by a command to the UPI-4S2 which selects a specific motor. The UPI-4S2 transmits blocks of data to the Host which provides motor and overall system status. The data and embedded commands structure, indicating the specific motor, is the same. In this example the default 64 bytes per channel might be adequate for both channels. INTERRUPT RESPONSE TIMING Interrupts enable the Host UPI-4S2 FIFO buffer interface and the internal CPU FIFO buffer interface to operate with a minimum of overhead on the respective CPU. Each CPU is "interrupted" to service the FIFO on an as needed basis only. In configuring the FIFO buffer Thresholds and choosing the appropriate internal DMA Mode the user must take into account the interrupt response time for both CPUs. These response times will affect the DMA transfer rates for each channel. By choosing FIFO channel Thresholds which reflect both the respective DMA transfer rate and the interrupt response time the user will achieve the maximum data throughput and system bus decoupling. This in turn will mean the overall available system bus bandwidth will increase. The following section describes the FIFO interrupt interface to the Host and internal CPU. It also describes an analysis of sample interrupt response times for the Host and UPI-4S2 internal CPU. These equations and the example times shown are then used in the DMA section to further analyze an optimum Host UPI-4S2 interface. HOST Interrupts to the Host processor are supported by the three UPI-4S2 output pins; INTRQ, DRQIN/ INTRQIN and DRQOUT/INTRQOUT. INTRQ is a general purpose Request For Service interrupt output. DRQIN/INTRQIN and DRQOUT/INRQOUT pins are multiplexed to provide two special "Request for Service" FIFO interrupt request lines when DMA is disabled. A FIFO Input or Output channel Request for Service interrupt is generated based upon the value programmed in the respective channel's Threshold SFRs; Input Threshold (ITHR), and Output Threshold 9-155 AP-281 (OTHR) SFRs. Addi~ional interrupts are provided for FIFO Underrun and Overrun Errors, Data Stream Commands,aild Immediate Commands. TableA lists the eight UPI-452 interrupt sources as they appear in the HSTAT SFR to the Host processor. Table 4, UPI 452 to Host Interrupt Sources HSTAT Interrupt Source SFR Bit HST7 Output FIFO Underrun Error HST6 Immediate Command Out SFR Status HST5 bata Stream Command/Data at Output FIFO Status HST4 Output FIFO, Request for Service Status HST3 Input FIFO Overrun Error Condition HST2 Immediate Comamnd In SFR Status HST1 FIFO DMA Freeze/Normal Mode Status HSTO Input FIFO Request for Service . . The interrupt response time required by the Host processor is application' and system specific. In general, a typical sequence of Host interrupt response eve~ts a~d the approximate times associated with each are listed m Equation I. The example assumes -the hardware configuration shown in Figure 1, iAPX 2861UP1-452 Block Diagram, with an 8259A Programmable Interrupt Controller. The timing analysis in Equation 1 also assumes the following; no other interrupt is either in proc,ess or pend" ing, nor is the 286 iIi a LOCK condition. The current instruction completion time is 8dock cycles (800 ns @ 10 MHz), or 4 bus cycles. The interrupt service routine first executes a PUSHA instruction, PUSH All General Registers, to save all iAPX 286 internal registers. This requires 19 clocks (or 2.0 ,""S @ 10 MHz), or 10 bus cycles (rounded to complete bus cycle). The next service routine instruction reads the UPI-452 Host Status SFR to determine the interrupt source. It is important to note that any UPI-452 INTRQ interrupt service routine shohld ALWAYS mask for the Freeze Mode bit first. This will insure that Freeze Mode always has the highest priority. This will also save the time required to mask for bits which are forced inactive during Freeze Mode, before checking the Freeze Mode bit. Access to the FIFO channels by the Host is inhibited during Freeze Mode. Freeze Mode is covered in more detail below. To initiate the interrupt the UPI-452 activates the INTRQ output. The interrupt acknowledge sequence requires two bus cycles, 400 ns (10 MHz iAPX 286), for the two INTA pulse sequence. Equation 1. Host Interrupt Response Time Action Time Current instruction execution 800 ns completion INTA sequence 400 ns Interrupt service routine (time to host first READ of UPI-452) 2000 ns 2.3,""s Total Interrupt Response Time Bus Cycles· 4 2 10 16 NOTE: 10 MHz iAPX 286 bus cycle, 200 ns each UPI-452 Internal The internal CPU FIFO interrupt interface is essentially identical to that of the Host to the FIFO. T~iee internal interrupt sources support the FIFO operation; FIFO-Slave bus Interface Buffer, DMA Channel 0 and DMA Channel 1 Requests. These interrupts provide a maximum decoupling of the FIFO buffer and the internal CPU. The four different internal DMA Modes available add flexibility to the interface. The FIFO-Slave Bus Interface interrupt response is also similar to the Host response to I!-Il INTRQ Request for Service interrupt. The internal CPU responds to the interrupt by reading the Slave Status (SSTAT) SFR to determine the source of the interrupt. This allows the user to prioritize the Slave Status flag response to meet the users application needs. The internal interrupt response time is dependent on the current Instruction execution, whether the interrupt is enabled; and the interrupt priority. In general, to finish execution of the current instruction, respon,d to the interrupt request, push the Program Counter (PC) and vector to the first instruction of the interrUpt service routine requires from 38 to 86 oscillator periods (2.38 to 5.38 ,""S @ 16 MHz). If the interrupt is due to an Immediate Command or DSC, additional time is required to read the Immediate Command or DSC SFR and vector to the appropriate service routine. This means two service routines back to back. One service routine to read the Slave Status (SSTAT) SFR to determine the source of the Request for Service interrupt, and second the service routine pointed to by the Immediate Command or DSC byte read from the respective SFR. 9-156 AP·281 Table 5. Host UPI·452 Data Transfer Performance DMA DMA is the fastest and most efficient way for the Host or internal CPU to communicate with the FIFO buffer. The UPI-452 provides support for both of these DMA paths. The two DMA paths and operations are fully independent of each other and can function simultaneously. While the Host DMA processor is performing a DMA transfer to or from the FIFO, the UPI-452 internal DMA processor can be doing the same. Below are descriptions of both the Host and internal DMA operations. Both DMA paths can operate asynchronously and at different transfer rates. In order to make the most of this simultaneous asynchronous operation it is necessary to calculate the two transfer rates and accurately match their operations. Matching the different transfer rates is done by a combination of accurately programmed FIFO channel size and channel Thresholds. This provides the maximum Host and internal CPU to FIFO buffer interface decoupling. Below is a description of each of the two DMA operations and sample calculations for determining transfer rates. The next section of this application note, "Interface Latency", details the considerations involved in analyzing effective transfer rates when the overhead associated with each transfer is considered. HOST FIFO DMA DMA transfers between the Host and UPI-452 FIFO buffer are controlled by the Host CPU's DMA controller, and is independent of the UPI-452's internal two channel DMA processor. The UPI-452's internal DMA processor supports data transfers between the UPI-452 internal RAM, external RAM (via the Local Expansion Bus) and the various Special Function Registers including the FIFO Input and Output chaimel SFRs. Processor & Speed iAPX-186* 8MHz 10 MHz 12.5 MHz iAPX-286*' 6 MHz 8MHz 10 MHz Wait States: DMA: Back to Back Two Single READI Cycle Cycle WRITE's 0 0 1 0 1 2 N/A* N/A* N/A* 0 1 2 0 0 0 0 0 0 NOTES: • iAPX 186 On-chip DMA processor is two cycle operation only. •• iAPX 286 assumes 82258 ADMA (or other DMA) running 286 bus cycles at 286 clock rate. In this application note system example, shown in Figure I, DMA operation is assumed to be two bus cycle I/O to memory or memory to I/O. Two cycle DMA consists of a fetch bus cycle from the source and a store bus cycle to the destination. The data is stored in the DMA controller's registers before being sent to the destination. Single cycle DMA transfers involve a simultaneous fetch from the source and store to the destination. As the most common method of I/O-memory DMA operation, two cycle DMA transfers are the focus of this application note analysis. Equation 2 illustrates a calculation of the overall transfer rate between the FIFO buffer and external Host for a maximum FIFO size transfer. The equation does not account for the latency of initiating the DMA transfer. Equation 2. Host FIFO DMA Transfer Rate-Input or Output Channel 2 Cycle DMA Transfer-I/O (UPI-452) to System Memory FIFO channel size* (DMA READ/WRITE FIFO time + DMA WRITE/READ Memory Time) 128 bytes' (200 ns + 200 ns) 51.2 J.Ls 256 bus cycles' The maximum DMA transfer rate is achieved by the minimum DMA transfer cycle time to accomplish a source to destination move. The minimum Host UPI452 FIFO DMA cycle time possible is determined by the READ and WRITE pulse widths, UPI-452 command recovery times in relation to the DMA transfer timing and DMA controller transfer mode used. Table 5 shows the relationship between tlie iAPX-286, iAPX186 and UPI-452 for various DMA as well as nonDMA byte by byte transfer modes versus processor frequencies. NOTES: '10 MHz iAPX 286, 200 ns bus cycles. Host processor speed vs wait states required with UPI452 running at 16 MHz: The UPI-452 design is optimized for high speed DMA transfers between the Host and the FIFO buffer. The 9-157 intJ AP-281 UPI-452 internal FIFO buffer control logic provides the necessary synchronization of the external Host event and the internal CPU machine cycle during UPI-452 RD/WR accesses. This internal synchronization is addressed by the TCC AC specification of the UPI-452 shown in Figure 6. TCC is the time from the leading or trailing edge of a UPI-452 RD/WR to the same edge of the next UPI-452 RD/WR. The TCC time is effectively another way of measuring the system bus cycle time with reference to UPI-452 accesses. In the iAPX-286 10 MHz system depicted in this application note the bus cycle time is 200 ns. Alternate cycle accesses of the UPI-452 during two cycle DMA operation yields a TCC time of 400 ns which is more than the TCC minimum time of 375 ns. Back to back Host UPI-452 READ/WRITE accesses may require wait states as shown in Table 5. The difference between 10 MHz iAPX-186 and 10 MHz iAPX 286 required wait states is due to the number of clock cycles in the respective bus cycle timings. The four clocks in.a 10 MHz iAPX 186 bus cycle means a minimum TCC time of 400 ns versus 200 ns for a 10 MHz iAPX 286 with two clock cycle zero wait state bus cycle. DMA handshaking between the Host DMA controller and the UPI-452 is supported by three pins on the UPI452; DRQIN/INTRQIN, DRQOUT/INTRQOUT and DACK. The DRQIN/INTRQIN and DRQOUT/ INTRQOUT outputs are two multiplexed DMA or interrupt request pins. The function of these pins is controlled by MODE SFR bit 6 (MD6). DRQIN and DRQOUT provide a direct interface to the Host system DMA controller (see Figure 1). In response to a DRQIN or DRQOUT request, the Host DMA controller initiates control of the system bus using HLD/ HLDA. The FIFO Input or Output channel transfer is accomplished with a minimum of Host overhead and system bus bandwidth. CS# The third handshake signal pin is DACK which is used as a chip select during DMA data transfers. The UPI452 Host READ and WRITE input signals select the respective Input and Output FIFO channel during DMA transfers. The CS and address lines provide DMA acknowledge for processors with onboard DMA controllers which do not generate a DACK signal. The iAPX 286 Block I/O Instructions provide an alternative to two cycle DMA data transfers with approximately the same data rate. The String Input and Output instructions (INS & OUTS) when combined with the Repeat (REP) prefix, modifies INS and OUTS to provide a means of transferring blocks of data between I/O and Memory. The data transfer rate using REP INS/OUTS instructions is calculated in the same way as two cycle DMA transfer times. Each READ or WRITE would be 200 ns in a 10 MHz iAPX 286 systern .. The maximum transfer rate possible is 2.5 MBytes/second. The Block I/O FIFO data transfer calculation is the same as that shown in Equation 2 for two cycle DMA data transfers including TCC timing effects. FIFO Data Structure and Host DMA During a Host DMA write to the FIFO, if a DSC is to be written, the DMA transfer is stopped, the DSC is written and the DMA restarted. During a Host DMA read from the FIFO, if a DSC is loaded into the I/O Buffer Latch the DMA request, DRQOUT, will be deactivated (see Figure 2 above). The Host Status (HSTAT) SFR Data Stream Command bit is set and the INTRQ interrupt output goes active, if enabled. The Host responds to the interrupt as described above. '''''---,..,/ '''''---,..,/ f-I'----TCC----'----l'1 RD#/WR# / ----j-\~ TRR/TWW / ~ f.ot____T_R_V_~ TRR/TWW, ~ 292018-6 Symbol Description Var.Osc. @16MHz TCC Command Cycle Time Command Recovery Time 6 • Tclcl 375 ns min 75 75 ns min TRV Figure 6. UPI-452 Command Cycle Timing 9-158 inter AP-281 Once INTRQ is deactivated and the DSC has been read by the Host, the DMA request, DRQOUT, is reasserted by the UPI-452. The DMA request then remains active until the transfer is complete or another DSC is loaded into the I/O Buffer Latch. An Immediate Command written by the internal CPU during a Host DMA FIFO transfer also causes the Host Status flag and INTRQ to go active if enabled. In this case the Immediate Command would not terminate the DMA transfer unless terminated by the Host. The INTRQ line remains active until the Host reads the Host Status (HSTAT) SFR to determine the source of the interrupt. The net effect of a Data Stream Command (DSC) on DMA data transfer rates is to add an additional factor to the data transfer rate equation. This added factor is shown in Equation 3. An Immediate Command has the same effect on the data transfer rate if the Immediate Command interrupt is recognized by the Host during a DMA transfer. If the DMA transfer is completed before the Immediate Command interrupt is recognized, the effect on the DMA transfer rate depends on whether the block being transmitted is larger than the FIFO channel size. If the block is larger than the programmed FIFO channel size the transfer rate depends on whether the Immediate Command flag or interrupt is recognized between partial block transfers. The FIFO configuration shown in Equation 3 is arbitrary since there is no way of predicting the size relative to when a DSC would be loaded into the I/O Buffer Latch. The Host DMA rate shown is for a UPI-452 (Memory Mapped or I/O) to 286 System Memory transfer as described earlier. The equations do not account for the latency of intiating the DMA transfer. Equation 3. Minimum host FIFO DMA Transfer Rate Including Data Stream Command(s) Minimum Host/FIFO DMA Transfer Rate wi DSC FIFO size' Host DMA 2 cycle time transfer rate + iAPX 286 interrupt response time (Eq. # 1) (32 bytes' (200 ns + 200 ns)) + 2.3 JLs 15.1 JLs 75.5 bus cycles (@10 MHz iAPX286, 200 ns bus cycle) UPI-4S2 INTERNAL DMA PROCESSOR The two identical internal DMA channels allow high speed data transfers from one UPI·452 writable memory space to another. The following UPI-452 memory spaces can be used with internal DMA channels: Internal Data Memory (RAM) External Data Memory (RAM) Special Function Registers (SFR) The FIFO can be accessed during internal DMA operations by specifying the FIFO IN (FIN) SFR as the DMA Source Address (SAR) or the FIFO OUT (FOUT) SFR as the Destination Address (DAR). Table 6 lists the four types of internal DMA transfers and their respective timings. Table 6. UPI-4S2 Internal DMA Controller Cycle Timings Source Destination Internal Data Mem.orSFR Internal Data Mem.orSFB External Data Mem. 'External Data Memory Internal Data Mem.orSFR External Data Mem. Internal Data Mem.orSFR External Data Memory Machine Cycles" @12MHz @16MHz 1 1 JLs 750 ns 1 1 JLs 750 ns 1 1 JLs 750 ns 2 2 JLs 1.5 JLs NOTES: 'External Data Memory DMA transfer applies to UPI·452 Local Bus only. '*MSC·51 Machine cycle = 12 clock cycles (TCLCL). 9-159 intef AP-281 FIFO Data Structure and Internal DMA INTERFACE LATENCY The effect of Data Stream Commands and Immediate Commands on the internal DMA transfers is essentially the same as the effect on Host FIFO DMA transfers. Recognition also depends upon the programmed DMA Mode, the interrupts enabled, and their priorities. The net internal effect is the same for each possible internal case. The time required to respond to the Immediate or Data Stream Command is a function of the instruction time required. This must be calculated by the user based on the instruction cycle time given in the MSC· 51 Instruction Set description in the Intel Microcon· troller Handbook. The interface latency is the time required to accommo· date all of the overhead associated with an individual data transfer. Data transfer rates between the Host sys· tem and UPI-452 FIFO, with a block size less than or equal to the programmed FIFO channel size, are calcu· lated using the Host system DMA rate. (see Host DMA description above). In this case, the entire block could be transferred in one operation. The total latency is the time required to accomplish the block DMA transfer, the interrupt response or poll of the Host Status SFR response time, and the time required to ini· tate the Host DMA processor. It is important to note that the internal DMA processor modes and the internal FIFO logic work together to automatically manage internal DMA transfers as data moves into and out of the FIFO. The two most appro· priate internal DMA processor modes for the FIFO are FIFO Demand Mode and FIFO Alternate Cycle Mode. In FIFO Demand Mode, once the correct Slave Con· trol and DMA Mode bits are set, the internal Input FIFO channel DMA transfer occurs whenever the Slave Control Input FIFO Request for Service flag is set. The DMA transfer continues until the flag is cleared or when the Input FIFO Read Pointer SFR (IRPR) equals zero. If data continues to be entered by the Host, the internal DMA continues until an internal interrupt of higher priority, if enabled, interrupts the DMA transfer, the internal DMA byte count reaches zero or until the Input FIFO Read Pointer equals zero. A complete description of interrupts and DMA Modes can be found in the UPI·452 Data Sheet. A DMA transfer between the Host and UPI·452 FIFO with a block size greater than the programmed FIFO channel size introduces additional overhead. This addi· tional overhead is from three sources; first, is the time to actually perform the DMA transfer. Second, the overhead of initializing the DMA processor, third, the handshaking between each FIFO block required to transfer the entire data block. This could be time to wait for the FIFO to be emptied and/or the interrupt response time to restart the DMA transfer of the next portion of the block. A fourth component may also be the time required to respond to Underrun and Overrun FIFO Errors. Table 7 shows six typical FIFO Input/Output channel sizes and the Host DMA transfers times for each. The timings shown reflect a 10 MHz system bus two cycle I/O to Memory DMA transfer rate of 2.5 MBytes/sec· ond as shown in Equation 1. The times given would be the same for iAPX 286 I/O block move instructions REP INS and REP OUTS as described earlier. DMA Modes Table 7. Host DMA FIFO Data Transfer Times The internal DMA processor has four modes of opera· tion. Each DMA channel is software programmable to operate in either Block Mode or Demand Mode. De· mand Mode may be further programmed to operate in Burst or Alternate Cycle Mode. Burst Mode causes the internal processor to halt its execution and dedicate its resources exclusively to the DMA transfer. Alternate Cycle Mode causes DMA cycles and instruction cycles to occur alternately. A detailed description of each DMA Mode can be found in the UPI-452 Data Sheet. FIFO Size: 32 Full or Empty % % % % % Full or Empty Time 43 64 85 96 128 1 bytes 12.8 17.2 25.6 34.0 38.4 51.21 p,s Table 8 shows six typical FIFO Input/Output channel sizes and the. internal DMA processor data transfers times for each. The timings shown are for a UPI·452 single cycle Burst Mode transfer at 16 MHz or 750 ns per machine cycle in or out of the FIFO channels. The 9·160 inter AP-281 machine cycle time is that of the MSC-51 CPU; 6 states, 2 XTAL2 clock cycles each or 12 clock cycles per machine cycle. Details on the MSC-51 machine cycle timings and operation may be found in the Intel Microcontroller Handbook. Table 8. UPI-452 Internal DMA FIFO Data Transfer Times FIFO Size: 32 43 Full or Empty % % % % % Time 64 85 I 96 128 bytes Full or Empty 24.0 32.3 48.0 64.6 72.0 96.01 ,..,s A larger than programmed FIFO channel size data block internal DMA transfer requires internal arbitration. The UPI-452 provides a variety of features which support arbitration between the two internal DMA channels and the FIFO. An example is the internal DMA processor FIFO Demand Mode described above. FIFO Demand Mode DMA transfers occur continuously until the Slave Status Request for Service Flag is deactivated. Demand Mode is especially useful for continuous data transfers requiring immediate attention. FIFO Alternate Cycle Mode provides for interleaving DMA transfers and instruction cycles to achieve a maximum of software flexibility. Both internal DMA channels can be used simultaneously to provide continuous transfer for both Input and Output FIFO channels. Byte by byte transfers between the FIFO and internal CPU timing is a function of the specific instruction cycle time. Of the III MCS-51 instructions, 64 require 12 clock cycles, 45 require 24 clock cycles and 2 require 48 clock cycles. Most instructions involving SFRs are 24 clock cycles except accumulator (for example, MOV direct, A) or logical operations (ANL direct, A). Typical instruction and their timings are shown in Table 9. Oscillator Period: @ @ 12 MHz 16 MHz = = 83.3 ns 62.S ns MOV directt, A MOV direct, direct Oscillator @12MHz @16MHz Periods 12 24 1 ,..,s 2,..,s A typical effective internal FIFO channel transfer rate using internal DMA is shown in Equation 4. Equation 5 shows the latency using byte by byte transfers with an arbitrary factor added for internal CPU block size calculation. These two equations contrast the effective transfer rates when using internal DMA versus individual instructions to transfer 128 bytes. The effective transfer rate is approximately four times as fast using DMA versus using individual instructions (96 ,..,S with DMA versus 492 ,..,S non-DMA). Equation 4. Effective Internal FIFO Transfer Time Using Internal DMA Effective Internal FIFO Transfer Rate with DMA FIFO channel size • Internal DMA Burst Mode Single Cycle DMA Time 128 Bytes * 750 ns 96,..,s Equation 5. Effective FIFO Transfer Time Using Individual Instructions Effective Internal FIFO Transfer Rate without DMA FIFO channel size * Instruction Cycle Time + Block size calculation Time 128 Bytes * (24 oscillator periods @ 16 MHz) + 20 instructions (24 oscillator period each @ 16 MHz) 128 * 1.5,..,s + 300,..,s 492,..,s FIFO DMA FREEZE MODE INTERFACE Table 9. Typical Instruction Cycle Timings Instruction channel. As described above in the FIFO Data Structure section, the block size would have to be determined by reading the channel read and write pointer and calculating the space available. Another alternative uses the FIFO Overrun and Underrun Error flags to manage the transfers by accepting error flags. In either case the instructions needed have a significant impact on the internal FIFO data transfer rate latency equation. 750 ns 1.5,..,s NOTE: t Direct = 8-bit internal data locations address. This could be an Internal Data RAM location (0-255) or a SFR [i.e., II o port, control register, etc.] Byte by byte FIFO data transfers introduce an additional overhead factor not found in internal DMA operations. This factor is the FIFO block size to be transferred; the number of empty locations in the Output channel, or the number of bytes in the Input FIFO 9-161 FIFO DMA Freeze Mode provides a means of locking the Host out of the FIFO Input and Output channels. FIFO DMA Freeze Mode can be invoked for a variety of reasons, for example, to reconfigure the UPI-452 Local Expansion Bus, or change the baud rate on the serial channel. The primary reason the FIFO DMA Freeze Mode is provided is to ensure that the Host does not read from or write to the FIFO while the FIFO interface is being altered. ONLY the internal CPU has the capability of altering the FIFO Special Function Registers, and these SFRs can ONLY be altered during FIFO DMA Freeze Mode. FIFO DMA Freeze Mode inhibits Host access of the FIFO while the internal CPU reconfigures the FIFO. AP-281 FIFO DMA Freeze Mode should not be arbitrarily invoked while the UPI-452 is in normal operation. Because the external CPU rnns asynchronously to the internal CPU, invoking freeze mode without first properly resolving the FIFO Host interface may have serious consequences. Freeze Mode may be invoked only by the internal CPU. The internal CPU invokes Freeze Mode by setting bit 3 of the Slave Control SFR (SC3). This automatically forces the Slave and Host Status SFR FIFO DMA Freeze Mode to -In Progress (SSTAT SST5 = 0, HSTAT SFR HSTl= 1). INTRQ goes active, if enabled by MODE SFR bit 4, whenever FIFO DMA Freeze Mode is invoked to notifY the Host. The Host reads the Host Status SFR to determine the source of the interrupt. INTRQ and the Slave and Host Status FIFO DMA Freeze Mode bits are reset by the Host READ of the Host Status SFR. During FIFO DMA Freeze Mode the Host has access to the Host Status and Control SFRs. All other Host FIFO interface access is inhibited. Table 10 lists the FIFO DMA Freeze Mode status of all slave bus interface Special, Function Registers. The internal DMA processor is disabled during FIFO DMA Freeze Mode and the internal CPU has write access to all of the FIFO control SFRs (Table 11). If FIFO DMA Freeze Mode is invoked without stop- ping the host, only the last two bytes of data written into or read from the FIFO will be valid. The timing diagram for disabling the FIFO module to the external Host interface is illustrated in Figure 7. Due to this synchronization sequence, the UPI-452 might not go into FIFO DMA Freeze Mode immediately after the Slave Control SFR FIFO 7 DMA Freeze Mode bit (SC3) is set = O. A special bit in the Slave Status SFR (SST5) is provided to indicate the status. of the FIFO DMA Freeze Mode. The FIFO DMA Freeze Mode INTRO OR DROIN/DROOUT operations described in this section are only valid after SST5 is cleared. Either the Host or internal CPU can request FIFO DMA Freeze Mode. The first step is to issue an Immediate Command indicating that FIFO DMA Freeze Mode will be invoked. Upon receiving the Immediate Command, the external CPU should complete servicing all pending interrupts and DMA requests, then send an Immediate Command back to the internal CPU acknowledging the FIFO DMA Freeze Mode request. After issuing the first Immediate Command, the internal CPU should not perform any action on the FIFO until FIFO DMA Freeze Mode is invoked. The handshaking is the same in reverse if the HOST CPUinitiates FIFO DMA Freeze Mode. After the slave bus interrace is frozen, the internal CPU can perform the operations listed below on the FIFO Special Function Registers. These operations are allowed only during FIFO DMA Freeze Mode. Table 11 summarizes the characteristics of all the FIFO Special Function Registers' during Normal and FIFO DMA Freeze Modes. For FIFO 1. Changing the Channel Boundary Reconfiguration Pointer SFR. 2. Changing the Input and Output Threshold SFR. To Enhance the 3. Writing to the read and write testability pointers of the Input and Output FIFO's. 4. Writing to and reading the Host Control SFRs. 5. Controlling some bits of Host and Slave Status SFRs. 6. Reading the Immediate Command Out SFR and Writing to the Immediate Command in SFR. .J RD#/WR# INTRO J ______ !__________________ _ ;: : A FIfO RD/WR AFTER , • -, • INTERFACE FREEZE IS , INVOKED WILL CAUSE , HST3 OR HST7 TO BE SET SC3 HSTI _ _ _ _ _ _ _ _ _ _ _ _ _...... 292018-7 NOTE: Timing Diagram of disabling of FIFO Module-External Host Interface. Figure 7. Disabling FIFO to Host Slave Interface Timing Diagram 9-162 AP-281 The sequence of events for invoking FIFO DMA Freeze Mode are listed in Figure 8. 4. The Immediate Command interrupt is responded to immediately-highest priority-by Host and internal CPU. 1. Immediate Command to request FIFO DMA Freeze Mode (interrupt) 5. "Respective interrupt response times a. Host (Equation 3 above) = approximately 1.6 ).ls b. Internal CPU is 86 oscillator periods or approximately 5.38 ).ls worst case. 2. Host/internal CPU interrupt response/service 3. Host/internal CPU clear/service all pending interrupts and FIFO data 4. Internal CPU sets Slave Control (SLCON) FIFO DMA Freeze Mode bit = 0, FIFO DMA Freeze Mode, Host Status SFR FIFO DMA Freeze Mode Status bit = 1, INTRQ active (high) 5. Host READ Host Status SFR Event Immediate Command from Host to UPI-452 to request FIFO DMA Freeze Mode (iAPX286 WRITE) Time 0.30 ).ls Internal CPU interrupt response/ service 5.38 ).ls 6. Internal CPU reconfigures FIFO SFRs Internal CPU clears FIFO-128 bytes DMA 7. Internal CPU resets Slave Control (SLCON) FIFO DMA Internal CPU sets Slave Control Freeze Mode bit 0.75 ).ls Freeze Mode bit = 1, Normal Mode, Host Status FIFO DMA Freeze Mode Status bit = O. 8. Internal CPU issues Immediate Command to Host indicating that FIFO DMA Freeze Mode is complete Immediate Command to HostFreeze Mode in progress Host Immediate Command interrupt response 2.3 ).ls Internal CPU reconfigures FIFO SFRs Channel Boundary Pointer SFR Input Threshold SFR Output Threshold SFR or Host polls Host Status SFR FIFO DMA Freeze Mode bit to determine end of reconfiguration Internal CPU resets Slave Control (SLCON) Freeze Mode bit = 1, Normal Mode, and automatically resets Host Status FIFO DMA Freeze Mode bit Figure 8. Sequence of Events to Invoke FIFO DMA Freeze Mode EXAMPLE CONFIGURATION Internal CPU writes Immediate Command Out An example of the time required to reconfigure the FIFO 180 degrees, for example from 128 bytes Input to 128 bytes Output, is shown in Figure 9. The example approximates the time based on several assumptions; Host Immediate Command interrupt service 1. The FIFO Input channel is full-128 bytes of data Total Minimum Time to Reconfigure FIFO 96.00 ).ls 0.75 ).ls 0.75 ).ls 0.75 ).ls 2.3 ).ls 0.75 ).ls 2.3 ).ls 112.33 ).ls Figure 9. Sequence of Events to Invoke FIFO DMA Freeze Mode and Timings 2. Output FIFO channel is empty-l byte 3. No Data Stream Commands in the FIFO. 9-163 AP·281 Table 10. Slave Bus Interface Status During FIFO DMA Freezer Mode Interface Pln~; A1 AO READ 1 0 0 1 1 0 1 1 1 0 0 0 DACK 1 1 1 1 CS 0 0 0 0 A2 .0 0 0 0 1 0 0 0 0 ·1 0 1 0 0 0 1 0 1 1 0 0 0 1 ,1 0 1 0 1 0 0 0 .1 1 0 1 0 0 1 0 0 X X X X 0 1 0 X ·X X X 1 0 WRITE 1 1 0 1 Operation In Normal Mode Read Host Status SFR Read Host Control SFR Write HQst Control SFR Data or DMA data from Output Channel Data or DMA data to Input Channel Data Stream Command from Output .Channel Data Stream Command to Input Channel Read Immediate Command Out from Output Channel Write Immediate Command In to Input Channel DMA Data from Output Channel DMA Data to Input Channel Status In Freeze Mode Operational Operational Disabled Disabled Disabled Disabled Disabled, Disabled Disabled Disabled Disabled NOTE: X = don't care Table 11. FIFO SFR's Characteristics During FIFO DMA Freeze Mode Label Name HCON HSTAT SLCON SSTAT IEP Host Control Host Status Slave Control Slave Status Interrupt Enable & Priority Mod~ Register .. InputFIFO Write Pointer Input F!FO Read Pointer Output FIFO Write Pointer Output FIF.O Read Pointer Charmel Boundary Pointer Immediate Command In Immediate Command Out FIFO IN CQMMANDIN FIFO OUT COMMAND OUT Input ,FIFO Threshold QtHer'FIFO Threshold MODE IWPA IAPR OWPR ORPR CBP IMIN IMONT FIN CIN FOUT COUT ITHR OTHR Normal Operation (SST5 = 1) Not Accessible Read Only Read & Write Read Only Read & Write Read & Write Read Only Read Only Read Only Read Only Read Only Read Only Read & Write Read Only Read Only Read & Write Read & Write Read Only Read Only Freeze Mode Operation (SST5 = 0) Read & Write Read & Write Re~d& Write Read & Write Read & Write Read & Write Read & Write Read & Write Read & Write Read & Write Reacl& Write Read & Write Read & Write Read Only 'Read Only Read & Write Read & Write Read & Write Read & Write ICETM-42 8042 IN-CIRCUIT EMULATOR • Precise, Full-Speed, Real-Time Emulation - Load, Drive, Timing Characteristics - Full-Speed Program RAM - Parallel Ports -Data Bus User-Specified Breakpoints • Execution Trace • - User-Specified Qualifier Registers - Conditional Trigger - Symbolic Groupings and Display -Instruction and Frame Modes • Full Symbolic Debugging • Single-Line Assembly and Disassembly • • • • for Program Instruction Changes Macro Commands and Conditional Block Constructs for Automated Debugging Sessions HELP Facility: ICETM-42 Command Syntax Reference at the Console User Confidence Test of ICE-42 Hardware Emulation Timer The ICE-42 module resides in the Intellec Microcomputer Development System and interfaces to any user-designed 8042 or 8041A system through a cable terminating in an 8042 emulator microprocessor and a pin-compatible plug. The emulator processor, together with 2K bytes of user program RAM located in the ICE-42 buffer box, replaces the 8042 device in the user system while maintaining the 8042 electrical and timing characteristics. Powerful Intellec debugging functions are thus extended into the user system. Using the ICE-42 module, the designer can emulate the system's 8042 chip in real-time or single-step mode. Breakpoints allow the user to stop emulation on user-specified conditions, and a trace qualifier feature allows the conditional collection of 1000 frames of trace data. Using the single-line 8042 assembler the user may alter program memory using the 8042 assembler mnemonics and symbolic references, without leaving the emulator environment. Frequently used command sequences can be combined into compound commands and identified as macros with userdefined names. 210818-1 9-165 November 1986 Order Number: 210818-002 inter ICETM_42 computer. Thus, the ICE-42 module provides the ability to debug a prototype or production system at any stage in its development without introducing extraneous hardware or software test tools. FUNCTIONAL DESCRIPTION Integrated Hardware and Software Development The ICE-42 emulator allows hardware and software development to proceed interactively. This approach is more effective than the traditional method of independent hardware and software development followed by system integration. With the ICE-42 module, prototype hardware can be added to the system as it is designed. Software and hardware integration occurs while the product is being developed. Figure 1 shows the ICE-42 emulator connected to a user prototype. The ICE-42 emulator assists four stages of development. SOFTWARE DEBUGGING This emulator operates without being connected to the user's system before any of the user's hardware is available. In this stage ICE-42 debugging capabilities can be used in conjunction with the Intellec text editor and 8042 macro-assembler to facilitate program development. Symbolic Debugging The ICE-42 emulator permits the user to define and to use symbolic, rather than absolute, references to program and data memory addresses. Thus, there is no need to recall or look up the addresses of key locations in the program, or to become involved with machine code. When a symbol is' used for memory reference in an ICE-42 emulator command, the emulator supplies the corresponding location as stored in the ICE-42 emulator symbol table. This table can be loaded with the symbol table produced by the assembler during application program assembly. The user obtains the symbol table during software preparation simply by using the "DEBUG" switch in the 8042 macroassembler. Furthermore, the user interactively modi~ fies the emulator symbol table by adding new symbols or changing or deleting old ones. This feature provides greatflexibility in debugging and minimizes the need to work with hexadecimal values. Through symbolic references in combination with other features of the emulator, the user can easily: HARDWARE DEVELOPMENT • Interpret the results of emulation activity collected during trace. The ICE-42 module's precise emulation characteristics and full-speed program RAM make it a valuable tool for debugging hardware. • Disassemble program memory to mnemonics, or assemble mnemonic instructions to executable code. SYSTEM INTEGRATION Integration of software and hardware begins when any functional element of the user system hardware is connected to the 8042 socket. As each section of the user's hardware is completed, it is added to the prototype. Thus, each section of the hardware and software is "system" tested in real-time operation as it becomes available. SYSTEM TEST When the user's prototype is complete, it is tested with the final version of the user system software. The ICE-42 module is then used for real-time emulation of the 8042 chip to debug the system as a completed unit. The final product verification test may be performed using the 8742 EPROM version of the 8042 micro- • Reference labels or addresses defined in a user program. Automated Debugging and Testing MACRO COMMAND A macro is a set of commands given a name. A group of commands executed frequently can be defined as a macro. The user executes the group of commands by typing a colon followed by the macro name. Up to ten parameters may be passed to the macro. Macro commands can be defined at the beginning of a debug session and then used throughout the whole session. One or more macro definitions can be saved on diskette for later use. The Intellec text editor may be used to edit the macro file. The macro definitions are easy to include in any later emulation session. 9-166 infef ICETM_42 The power of the development system can be applied to manufacturing testing as well as development by writing test sequences as macros. The macros are stored on diskettes for use during system test. Table 1. Major Emulation Commands Command COMPOUND COMMAND Compound commands provide conditional execution of commands (IF command) and execution of commands repeatedly until certain conditions are met (COUNT, REPEAT commands). Compound commands may be nested any number of times, and may be used in macro commands. GO BRO, BR1, BR Sets or displays either or both Breakpoint Registers used for stopping real-time emulation. STEP Performs single-step emulation. ORO,OR1 Specifies match conditions for qualified trace. TR Specifies or displays tracedata collection conditions and optionally sets Oualifier Register (ORO, OR1). Synchronization Line Commands Sets and displays status of synchronization line outputs or latched inputs. Used to allow real-time emulation or trace to start and stop synchronously with external events. Example: 'DEFINE.I=O ;Define symbol. I to 0 'COUNT lOOH ;Repeat the following commands lOOH times. • 'IF. I AND 1 THEN ;Check i f . I is odd •• 'CBYTE.I=.I ;Fill the memory at location. I to value. I •• 'END Description Begins real-time emulation and optionally specifies break conditions. Breakpoints .'.1-.1+1 ;Increment • I by l. .·END ;Command executes upon carriage-return after END (The asterisks are system prompts; the dots indicate the nesting level of compound commands.) Operating Modes The ICE-42 software is an Intellec RAM-based program that provides easy-to-use commands for initiating emulation, defining breakpoints, controlling trace data collection, and displaying and controlling system parameters. ICE-42 commands are configured with a broad range of modifiers that provide maximum flexibility in describing the operation to be per. formed. The ICE-42 hardware includes two breakpoint registers that allow halting of emulation when specified conditions are met. The emulator continuously compares the values stored in the breakpoint registers with the status of specified address, opcode, operand, or port values, and halts emulation when this comparison is satisfied. When an instruction initiates a break, that instruction is executed completely before the break takes place. The ICE-42 emulator then regains control of the console and enters the interrogation mode. With the breakpoint feature, the user can request an emulation break when the program: • Executes an instruction at a specific address or within a range of addresses. • Executes a particular opcode. • Receives a specific signal on a port pin. • Fetches a particular operand from the user program memory EMULATION The ICE-42 module can emulate the operation of prototype 8042 system, at real-time speed (up to 12 MHz) or in single steps. Emulation commands to the ICE-42 module control the process of setting up, running, and halting an emulation of the user's 8042based system. Breakpoints and tracepoints enable the ICE-42 emulator to halt emulation and provide a detailed trace of execution in any part of the user's program. A summary of the emulation commands is shown in Table 1. 9-167 • Fetches an operand from a specific address in program memory. inter ICETM-42 conditional trace activity. The qualifiers can be used to condition trace data collection to take place as follows: Trace and Tracepoints Tracing is used with real-time and single-step emulation to record diagnostic information in the trace buffer as a program is executed. The information collected includes opcodes executed, port values, and. memory addresses. The ICE-42 emulator collects 1000 frames of trace data. • Under all conditions (forever). • .only while the trace qualifier is satisfied. • For the frames or instructions preceding the time when a trace qualifier is first satisfied (pre-trigger trace). If desired this information can be displayed as assembler instruction mnemonics for analysis during interrogation or single-step mode. The trace-collection facility may be set to run conditionally or unconditionally. Two unique trace qualifier registers, specified in the same way as breakpoint registers, govern • For the frames or instructions after a trace qualifier is first satisfied (post-triggered trace). Table 2 shows an example of trace display. Table 2. Trace Display (Instruction Mode) T1 DBYIN o 0 66H DFH 02H 0 o o 0 DFH DFH o o o 0 0 66H 66H 66H ,0 o o o 0 0 0 99H 02H 02H 02H 02H DOH DOH 0 0 0 0 0 0 99H 99H 01H 01H 0 0 55H 55H o 0 99H 01H 0 o 55H 55H 55H 55H 55H 55H o 0 0 0 0 01H 01H 01H 01H 0 0 0 0 55H 55H 55H 55H 55H 55H o o 99H 01H 0LH 0 0 99H INC R1 DJNZ R2, .LOOP 55H 55H 55H 55H 01H 01H 0 0 99H 0L1i 0 FO Al MOV MOV A,@RO @Rl,A 55H 55H 99H D1H 0 10FH 18 INC RO 0060: 0062: 110H l11H 19 EAOD INC Rl DJNZ R2, .LOOP 0066: 113H 00 NOP 55H 55H 55H 55H 01H 01H 01H 01H 0LH 0 0 0 0 0 FRAME LOC OBJ INSTRUCTION Pl P2 0000: 0004: 0008: 0012: 0014: 0016: 100H 102H 103H 104H 105H 106H 2355 39 3A 22 37 02 . MOV OUTL OUTL IN CPL OUT A, # 55H Pl, A P2, A A,DBB A DBB,A FFH FFH 55H FFH FFH FFH 0018: 0022: 107H 109H BA03 B840 MOV MOV R2,#03H RO,#.TABLEO 55H 55H 55H 55H 55H 55H 55H 55H 55H 55H 0026: .LOOP 0030: 10BH B960 MOV Rl,#.TABLEl 55H 55H 10DH FO MOV A,@RO 0032: 0034: 0036: 0038: 10EH 10FH 110H l11H Al 18 19 EAOD MOV INC INC DJNZ @Rl,A RO Rl R2, .LOOP 55H . 55H • LOOP 0042: 0044: 0046: 0048: 0050: 10DH 10EH 10FH 110H l11H FO Al 18 19 EAOD MOV MOV A,@RO @Rl,A INC RO .LOOP 0054: 0056: 10DH 10EH 0058: TO o o o o 0 66H 66H 99H 66H 66H 66H 0 66H 66H 55H 55H o o 0 55H 55H 55H '55H o o 66H 0 0 0 o o DFH 66H 66H, 0 o 0 0 0 0 0 YOUT YSTS TOVF 99H 66H 99H 66H 66H 99H 99H 210818-2 9-168 intJ ICETM-42 INTERROGATION AND UTILITY Single-Line Assembler/Disassembler Interrogation and utility commands give convenient access to detailed information about the user program and the state of the 8042 that is useful in debugging hardware and software. Changes can be made in memory and in the 8042 registers, flags, and port values. Commands are also provided for various utility operations such as loading and saving program files, defining symbols, displaying trace data, controlling system synchronization and returning control to ISIS-II. A summary of the basic interrogation and utility commands is shown in Table 3. Two additional time-saving emulator features are discussed below. The single-line assembler/disassembler (ASM and DASM commands) permits the designer to examine and alter program memory using assembly language mnemonics, without leaving the emulator environment or requiring time-consuming program reassembly. When assembling new mnemonic instructions into program memory, previously defined symbolic references (from the original program assembly, or subsequently defined during the emulation session) Table 3. Major Interrogation and Utility Commands Command Description HELP Displays help messages for ICE-42 emulator command-entry assistance. LOAD Loads user object program (8042 code) into user-program memory, and user symbols into ICE-42 emulator symbol table. SAVE Saves ICE-42 emulator symbol table and/or user object program in ISIS-II hexadecimal file. LIST Copies all emulator console input and output to ISIS-II file. EXIT Terminates ICE-42 emulator operation. DEFINE Defines ICE-42 emulator symbol or macro. REMOVE Removes ICE-42 emulator symbol or macro. ASM Assembles mnemonic instructions into user-program memory. DASM Disassembles and displays user-program memory contents. Change/Display Commands Change or display value of symbolic reference in ICE-42 emulator symbol table, contents of key-word references (including registers, I/O ports, and status flags), or memory references. EVALUATE Evaluates expression and displays resulting value. MACRO Displays ICE-42 macro or macros. INTERRUPT Displays contents for the Data Bus and timer interrupt registers. SECONDS Displays contents of emulation timer, in microseconds. Trace Commands Position trace buffer pointer and select format for trace display. PRINT Displays trace data pointed to by trace buffer pointer. MODE Sets or displays the emulation mode, 8041 A or 8042. 9-169 intJ ICETM_42 Table 4, HELP Command -HELP Helpis available for the following items. Type HELP followed by the item name· The help items cannot be abbreviated. (for more information, type HELP HELP or HELP INfO.• ) Emulation: Trace Collection: Mi sc: GO GR SYO TR QR QRO QR1 SY1 BASE DB-ABLE BR BROBR1 STEP Trace Display: ENABLE < ICE 42 # keyword> TRACE MOVE PRINT ERROR EVALUATE OLDEST NEWEST HELP < masked#c onstant > Change/ Display/ Define/ Remove: INfO REMOVE CBYTE < LIGHTS > < numer i c .cons tant > SYMBOL DBYTE DASM LIST REGISTER ASM RESET LOAD MODE SECONDS WRITE SAVE ' DEFINE STACK SY SUffIX SYMBOLIC Macro: Compound < trace.re ference > DEfINE < unl imi ted.match.cond> DIR Commands: DISABLE ENABLE COUNT INCLUDE PUT If REPEAT -- - HELP If IF - The conditional command allows conditional execution of one or more commands based on the values of boolean conditions· If 'THEN : :=' @ ;;=' @ : :=An ICE-42 command. 'ORIf @ 'ELSE END The s are evaluated in order as 1b-bit unsigned integers, If one is reached whose value has low-order bit 1 (TRUEl , all commands in the following that are then executed and all commands in the other s and in the are skipped. If all s have value with loworder bit 0 (fALSE), then all commands in all s are skipped and, i f ELSE is present, all commands in the are executed. (EX: If. LOOP=5 THEN ' STEP ELSE GO END) --- H XIT 210818-3 9-170 intJ ICETM-42 may be used in the instruction operand field. The emulator supplies the absolute address or data values as stored in the emulator symbol table. These features eliminate user time spent translating to and from machine code and searching for absolute addresses, with a corresponding reduction in transcription errors. HELP The HELP file allows display of ICE-42 command syntax information at the Intellec console. By typing "HELP", a listing of all items for which help messages are available is displayed. Typing "HELP < Item>" then displays relevant information about the item requested, including typical usage examples. Table 4 shows some sample HELP messages. EMULATION ACCURACY The speed and interface demands of a high-performance single-chip microcomputer require extremely accurate emulation, including full-speed, real-time operation with the full function of the microcomputer. The ICE-42 module achieves accurate emulation with an 8042 emulator chip, a special configuration of the 8042 microcomputer family, as its emulation processor. Each of the 40 pins on the user plug is connected directly to the corresponding 8042 pin on the emulator chip. Thus the user system sees the emulator as an 8042 microcomputer at the 8042 socket. The resulting characteristics provide extremely accurate emulation of the 8042 including speed, timing characteristics, load and drive values, and crystal operation. However, the emulator may draw more power from the user system than a standard 8042 family device. Additional emulator processor pins provide signals such as internal address, data, clock, and control lines to the emulator buffer box. These signals let static RAM in the buffer box substitute for on-chip program ROM or EPROM. The emUlator chip also gives the ICE module "back-door" access to internal chip operation, allowing the emulator to break and trace execution without interfering with the values on the user-system pins. 9-171 210818-4 Figure 1. A typical B042 Development Configuration. The host system is an Intellec Series IV. The ICE-42 module is connected to a user prototype system. SPECIFICATIONS ICETM-42 Operating Requirements Intellec Model 800, Series II, Series III, or Series IV Microcomputer Development System (64K RAM required) System console (Model 800 only) Inteliec Diskette Operating System: ISIS (Version 3.4 or later). Equipment Supplied • Printed circuit boards (2) • Emulation buffer box, Intellec interface cables, and user-interface cable with 8042 emulation processor • Crystal power accessory • Operating instructions manuals • Diskette-based ICE-42 software (single and double density) ICETM-42 Emulation Clock Electrical Characteristics User's system clock (up to 12 MHz) or ICE-42 crystal power accessory (12 MHz) DC Power Requirements (from Intellec® system) Environmental Characteristics Operating Temperature: O°C to 40°C Operating Humidity: Up to 95% relative humidity without condensation. Physical Characteristics Printed Circuit Boards Width: 12.00 in. (30.48 cm) Height: 6.75 in. (17.15 cm) Depth: 0.50 in. (1.27 cm) Vee = +5V, ±5% lee = 13.2A max; 11.0A typical Voo = + 12V, ±5% 100 = 0.1 A max; 0.05A typical Vss = -10V, ±5% Iss = 0.05A max; 0.01A typical User plug characteristics at 8042 socket-8ame as 8042 or 8742 except that the user system sees an added load of 25 pF capacitance and 50 /LA leakage from the ICE-42 emulator user plug at ports 1, 2, TO, and T1. ORDERING INFORMATION Buffer Box Part Number Description ICE-42 Width: 8.00 in. (20.32 cm) Length: 12.00 in. (30.48 cm) Depth: 1.75 in. (4.44 cm) Weight: 4.0 Ib (1.81 kg) 9-172 8042 Microcontrolier In-Circuit Emulator, cable assembly and interactive diskette software iUP-200A/iUP-201A UNIVERSAL PROM PROGRAMMERS MAJOR iUP-200A/iUP-201A FEATURES: • Personality Module Plug-Ins Provide Programming Support for Intel and Intel-Compatible EPROMs, EPLDs, Microcontrollers, Flash Memories, and other Programmable Devices • PROM Programming Software (iPPS) Makes Programming Easy with IBM PC, XT, AT, and PC Compatibles • Supports Personality Modules and GUPI Base WI Adaptors • iUP-200A Provides On-Line Operation with a Built-In Serial RS232 Interface and Software for a PC Environment • iUP-201A Provides Same On-Line Performance and Adds Keyboard and Display for Stand-Alone Use • iUP-201A Stand-Alone Capability Includes Device Previewing, Editing, Duplication, and Download from any Source Over RS232C Port • Updates and Add-Ons Have Maintained Even the Earliest iUP-200 and iUP-201 Users at the State-of-Art The iUP-200A and iUP-201A universal programmers program and verify data in Intel and Intel compatible, programmable devices. The iUP-200A and iUP-201A universal programmers provide on-line programming and verification in a growing variety of development environments using the Intel PROM programming software (iPPS). In addition, the iUP-201A universal programmer supports off-line, stand-alone program editing, duplication, and memory locking. The iUP-200A universal programmer is expandable to an iUP-201A model. 210319-1 9-173 October 1988 Order Number: 210319-005 inter iUP-200AliUP-201A • Verifies device data with buffer data FUNCTIONAL DESCRIPTION • Locks device memory from unauthorized access (on devices which support this feature) The iUP-200A universal programmer operates in online mode. The iUP-201 A universal programmer operates in both on-line and off-line mode. • Prints device contents on the network or development system printer • Performs interactive formatting operations such as interleaving, nibble swapping, bit reversal, and block moves On-Line System Hardware The iUP-200A andiUP-201 A universal programmers are free-standing units that, when connected to a host. compu.ter with at least 64K bytes of memory, provide on-line programming and verification of Intel programmable devices. In addition, the universal programmer can read the contents of the ROM versions of supported devices. The universal programmer communicates with the host through a standard RS232C serial data link. Different versions of the iUP-200A and iUP-201 A are equipped with different cables, including the cable most commonly used for interfacing to that host. Care should be taken that the version with the correct cable .for your particular system is selected, as cable requirements can vary with your host configuration. A serial converter is needed when using the MDS 800 as a host system. (Serial converters are available from other manufacturers.) Each universal programmer contains the CPU, selectable power supply, static RAM, programmable timer, interface for personality modules, RS232C interface for the host system,and control firmware in EPROM. The iUP-201 Aalso has a keyboard and display. A personality module or GUPI Adaptor adapts the universal programmer to a family of devices; it contains all the hardware and software necessary to program either a family of Intel devices or a single Intel device. The user inserts the personality module into the universal programmer front panel. On-Line System Software • Programs multiple devices from the source file, prompting the user to insert new devices • Uses a buffer to change device contents All iPPS commands, as well as program address and data information, are entered through the host system ASCII keyboard and displayed on the system CRT. The iPPS software supports data manipulation in the following Intel formats: 8080 hexadecimal ASCII, 8080 absolute object, 8086 hexadecimal· ASCII, 8086 absolute object, and 80286 absolute object. Addresses and data can be displayed in binary, octal, decimal, or hexadecimal. The user can easily change default data formats as well as number bases. iPPS can also access disk files. For programming Intel EPLDs, the iUP-200Al201A can be controlled by Intel's Logic Programming Software (LPS). LPS programs EPLDs from JEDEC files produced by Intel's logic compiler. (iPPS can also program EPLDs, but only from pre-programmed device· masters.) System Expansion The iUP-200A universal programmer can be easily upgraded (by the user) to an iUP-201 A universal programmer for off-line operation. The upgrade kit (iUPPAK-A) is available from Intel or your local Intel distributor. Off-Line System The iUP-200A and iUP201 A includes your choice of one copy of Intel's PROM Programming software iPPS, selected from a list of versions for different operating systems and hosts. Each version includes the software implementation designed for that host and O.S. and the RS232C cable most commonly used. Additional versions may be purchased separately if you decide to change hosts at a later date. The iPPS software provides user control through an easy-to-use interactive interface. The iPPS software performs the following functions to make EPROM programming quick and easy: • Reads devices The iUP-201A universal programmer has all the online features of the iUp c200A universal programmer plus off-line editing, device duplication, program verification, and locking of device memory independent of the host system. The iUP-201A universal programmer also accepts Intel hexadecimal programs developed on non-Intel development systems. Just a few keystrokes download the program into the iUP RAM for editing and loading into a device. Off-line commands are entered via a 16-character keypad. A 24-character display shows programmer status. • Programs devices directly or from a file 9-174 intJ iUP-200AliUP-201A SYSTEM DIAGNOSTICS Both the iUP-200A and iUP-201 A universal programmers include self-contained system diagnostics that verify system operation and aid the user in fault isolation. Adaptors. GUPI Adaptors tailor the GUPI module base signals to a family of devices or an individual device. The GUPI module and GUPI Adaptors provide a lower-cost method of device support than if unique Personality Modules were offered for each device/family. Tables 2 and 3 show which Adaptors support which devices. PERSONALITY MODULES For some devices, a personality module is the interface between the iUP-200A/iUP-201A universal programmer (or an iPDS system) and a selected device. Personality modules contain all the hardware and firmware for reading and programming a family of Intel devices. Table 1 lists the devices supported by the different modules. For most devices, the GUPI module and interchangeable GUPI Adaptors provide the interface between the programmer and the device being programmed (see Figure 1). the GUPI (Generic Universal Programmer Interface) module is a base module that intefaces to the iUP-200A/201A and GUPI iUP-GUPI GENERIC BASE MODULE 210319-12 Figure 1_ GUPI Adaptor 9-175 inter iUP-200A/iUP-201A Table 1. iUP Personality Programming Modules Device Type Fast 27/K Module Fast 27/K U2 Kit Fast 271K-CON* Kit EPROM 2764 2764A 27128 27256 2764 2764A 27C64 87C64 27128 27128A 27256 27C256 27512 27513 2764 2764A 27C64 87C64 27128 27128A 27256 27C256 27512 27513 F27/128 Module F87144A Module F87151A Module 8041A 8042 8044AH 8741H 8742 8744H 8748 8748H 2716 2732 2732A 2764 27128 2815 2816 E2PROM 2817A 2817A Microcontroller 8755A -Quick·Pulse Programming™ algorithm 9-176 8749H 8751 8751H 8048 8048H 8049 8049H 8050H 8051 intJ iUP-200AliUP-201A Table 2. iUP-GUPI Adaptors for Programming Memories Device Type GUPI GUPI GUPI GUPI 27010 27011 27210 Flash EPROM GUPI 8742 GUPI MCS-51 GUPI 8796 GUPI GUPI GUPI 8796LCC 87C51GB MCS-96LCC 27010 27011 27210 Flash 27F64 27F256 28F256 Peripheral 8741AH 8742AH Microcontroller 8751H 87C51 8752BH 87C51FA 8794BH 87C51FB 8795BH 8796BH 8796BH 8797BH 8797BH 87C51GB 8797BH 87C196KB Package Types DIP DIP DIP DIP DIP PLCC DIP PGA DIP LCC PLCC PLCC Table 3. Programming Adaptors for EPLDs Device Type GUPI Logic-liD EPLD GUPI Logic-12 GUPI 40D44J GUPI Logic-18 GUPI Logic-18PGA GUPI 85EPLD28 GUPI Logic-BIC 5C031 5C032 5C060 5C090 5C121 5C180 5C180G 5CBIC 5AC312 5AC324 85C508 Package Types DIP' DIP DIP PLCC PLCC CJ • ADAPT Units available to adapt DIP socket for PLCC package. 9·177 PGA DIP PLCC PLCC intJ iUP-200A/iUP-201A 166043-001- Geffing Started with the iUP-200A/ 20tA (For DOS Users). 164853 - iUP-200A/201A Universal Programmer Pocket Reference. iUP-200A/iUP201A· SPECIFICATIONS Control Processor Intel 8085A microprocessor 6.144 MHz clock rate ORDERING INFORMATION Product Order Code iUP-200A 211A Memory RAM-4.3 bytes static ROM-12K bytes EPROM Interfaces Keyboard: 16-character hexadecimal and 12-function keypad (iUP-201A model only) Display: 24-character alphanumeric (iUP-201A model only) Software Monitor- system controller in pre-programmed EPROM iPPS - Intel PROM programming software on supplied diskette Physical Characteristics Depth: Width: Height: Weight: 15 inches (38.1 cm) 15 inches (38.1 cm) 6 inches (15.2 cm) 15 pounds (6.9 kg) Electrical Characteristics· Selectable 100, 120, 200, or 240 Vac ± 10%; 50-60 Hz Maximum power consumption-80 watts Environmental Characteristics 10·C to 40·C Reading Temperature: Programming Temperature: 25·C ±S· Operating Humidity: 10% to 85% relative humidity Reference Material 166041-001- iUP-200A/201A Universal Programmer User's Guide. 166042-001- Geffing Started with the iUP-200A/ 201A (For ISIS/iNDX Users). Description On-Line PROM programmer with· iPPS rei 1.4 on Single density ISIS . II floppy iUP-200A 2128 On-Line PROM programmer with iPPS rei 1.4 on Double density ISIS II floppy iUP-200A 213C On-Line PROM programmer with iPPS rei 2.0 for Series IV, on minifloppy iUP-200A 2160 On-Line PROM programmer with iPPS rei 2.0 for PC/DOS, and cable for PC or XT iUP-200A 2170 On-Line PROM programmer with iPPS rei 2.0 for PC/DOS, and cable for AT iUP-201A 211A Off-Line and on-line PROM programmer with iPPS rei 1.4 on Single density ISIS II floppy iUP-201A 2128 Off-Line and on-line PROM programmer with iPPS rei 1.4 on Double density ISIS II floppy iUP-201 A 213C Off-Line and on-line PROM programmer with iPPS rei 2.0 for Series IV on mini-floppy iUP-201 A 2160 Off-Line and on-line PROM pro~ gram mer with iPPS rei 2.0 for PC/ DOS, and cable for PC or XT iUP-201A 2170 Off-Line and on-line PROM programmer with iPPS rei 2.0 for PC/ DOS, and cable for AT iUP-200/201 U1" Upgrades an iUP-200/201 univerUpgrade Kit sal programmer to an iUP-200A/ 201 A universal programmer iUP-DL Download Support Kit for iUP200Al201 A upgrades programmer to support adaptors that use software programming (.DSS) files. iUP-PAK-A Upgrades an iUP-200/ A universal Upgrade Kit programmer to an iUP-201A universal programmer "Most personality modules can be used only with an iUP-200Al201A universal programmer or an iUP-200/iUP201 universal programmer upgraded to an A with the iUP-200/iUP-201 U1 upgrade kit. 9-178 infef iUP-200A/iUP-201A Product Order Code piUP-GUPI Description Generic Universal Programmer Interface (Base) 2170 Product Order Code Description 212B 213C 2160 Software Sold Separately 211A Product Order Code Description PROM programming software rei 1.4 on Single density ISIS II floppy PROM programming software rei 1.4 on Double density ISIS II floppy 9-179 PROM programming software rei 2.0 for Series IV on mini-floppy PROM programming software rei 2.0 for PC/DOS with cable for PC or PC XT PROM programming software rei 2.0 for PC/DOS with cable for PC AT Graphics Coprocessor Family 10 82706 INTEL VIDEO GRAPHICS ARRAY • Single Chip Video Graphics Array for IBM PC/XTlAT*, Personal System/2* and Compatible Systems • Inmos IMSG 171 Palette/DAC Interface • Available in 132-Pin Plastic Quad Flat Pack Package 4 mA Drive Capability on Output Pins • Implemented • Technology in High Speed CHMOS III 100% Gate, Register, and BIOS Level • Compatibility with IBM VGA • EGA/CGA/MDA BIOS Compatibility (See Packaging Spec. Order #231369) The 82706 is the Intel VGA compatible display controller. It is 100% register compatible with all IBM VGA modes and provides software compatibility at the BIOS level with EGA, CGA, and MDA. All video monitors designed for IBM PS/2' systems are supported by the Intel VGA controller. The 82706 provides an 8-bit video data path to any Inmos IMSG 171 compatible palette/DAC. It also acts as a CRT controller and video memory controller. The 82706 supports 256 Kbytes of video memory. The 82706 is designed for compatibility with the Intel 80286 and 80386 microprocessors and other microprocessors. Implemented in low power CHMOS technology, the 82706 VGA Controller is packaged in a fine pitch (25 mil) surface mount gull wing package. It can be enabled or disabled under software control via the 82306 Peripheral Bus Controller. 'IBM PC, XT, AT, Personal System/2, PS/2, and MicroChannel are trademarks of International Business Machines. OS2 For complete data sheet, see Volume I, Chapter 4 OS3 EXTCLK MO:7 ABO:7 AO:19 RAMEN 00:7 RASO:3# MCS# SETUP# CASH VGAEN WED RO# 10 WR# BLOCK 000:7 MIO 010:7 ROY 020:7 INTR 030:7 OEN# SFOBK# PO:7 SENSE ATTRIBUTE CONTROLLER RESET OACR# OACW# HSYNC L----I CRT CONTROLLER VSYNC BLANK OCLK 240194-2 Figure 1. Block Diagram 10-1 November 1988 Order Number: 240194-002 82716/VSDD VIDEO STORAGE AND DISPLAY DEVICE • • • • • • • • • • • • • Twin Mode Operation for Higher Throughput • Powerful External Sync and Overlay Capabilities • • Video Clock Rate up to 20 MHz Low Cost Graphics and Text Capability Minimum Chip Count Display Controller Displays Up to 16 Bit Map arid Character Objects of Any Size On-Chip 16/4096 Color Palette On-Chip DRAM Controller On-Chip 0/ A Converters Arbitration of Processor RAM Requests NAPLPS and CEPT Compatible Objects Allow Windowing or Animation Horizontal Resolution up to 640 4-Bit Pixels Up to 512K Bytes of Display Memory Compatible with 8 and 16 Bit Processors/Micro Controllers System Clock Rate up to 14.3 MHz (Cohtact FlIctory for up-to-date specifications) 82716IVSDD is a low cost, highly integrated video controller_ It displays graphics and textual information using a minimum of chips. It allows the management of up to 16 display objects on the screen at anyone time. These objects may be formatted as bit map or character arrays and can be used for windowing or animation. An on-chip color palette allows the selection of up to 16 colors, from a range of 4096. The palette can be programmed to drive a set of on-chip Df A converters. The VSDD also provides DRAM controller functions. DH,DL ADDR CASH, XTALIN MEMORY INTERFACE UNIT MIU XTALOUT VIDEO CLOCK t----+---J R G PIXEL UNIT B OVR BUS INTERFACE UNIT BIU TASK SCHEDULER VREF--!+ CTO I ~--------------l-------~ RST AD 231680-1 Figure 1. VSDD Block Diagram 10-2 October 1988 Order Number: 231680-003 inter 82716/VSDD 82716 VIDEO STORAGE AND DISPLAY DEVICE ADDITIONAL INFORMATION You can obtain a free copy of the most recent 82716 data sheet specs by: • Calling your local Intel sales office and ask for Order No. 231680 • Calling tOil-free (800) 548-4725 and ask for JB12 OFFER EXPIRES 12/31/89 10-3 intJ 82786 CHMOS GRAPHICS COPROCESSOR • • • • • Windows • Hardware Fast Bit-Block Copies Between System • and Bitmap Memories Software Support • Third-Party Multi-tasking Support • Provides Support for Rapid Filling with High Performance Graphics Fast Polygon and Line Drawing High Speed Character Drawing Advanced DRAM/VRAM Controller for Graphics Memory up to 4 Mbytes • • • Supports up to 200 MHz CRTs - up to 640 by 480 by 8 Bits (DRAMs) or 1400 by 1400 by 1 Bit (DRAMs) or 2048 by 2048 by 8 Bits (VRAMs) to 256 Simultaneous Colors • Up Integral DRAM/VRAM Controller, Shift • Registers and DMA Channel International Character Support • Interface Designed for Device• Independent Standards Patterns Programmable Video Timing Advanced CHMOS Technology • • Supports Dual Port Video DRAMs & Sequential Access DRAMs 88 Pin Grid Array and Leadless Chip Carrier - (See Intel Packaging; Order Number: 231369) The 82786 is a powerful, yet simple component designed for microcomputer graphics applications including personal computers, engineering workstations, terminals, and laser printers. Its advanced software interface makes applications and systems level programming efficient and straight-forward. Its performance and high-integration make it a cost-effective component while improving the performance of nearly any design. Hardware windows provide instantaneous changes of display contents and support multiple graphics applications from multiple graphics bitmaps. Applications programs written for the IBM Personal Computer can be run within one or more windows of the display when used with Intel CPUs. The 82786 works with all Intel microprocessors, and is a high-performance replacement for sub-systems and boards which have traditionally used discrete components and/or software for graphics functions. The 82786 requires minimal support circuitry for most system configurations, and thus reduces the cost and board space requirements of many applications. The 82786 is based on Intel's advanced CHMOS III process. " 0 'u " 0 "" " '"0 .., ... . , .., ., "" ... "" 0 0 0 0 -0 0 0 0 0 0 lILANK 0 "" 0 0 Hs,.,o Vda:to7 ",.. "'" 0 0 0 VdolGll 0 0 0 Vdala" Vdalo2 VdcrWO 0 0 0 VdGlaS Vdalol Vdotal '" 0 0 " '" '" 0 " '" 0 " " 0 " " " " " 0 0 DRAa '" RAS21 0 " '" 0 .. 0 • LOA 0 '" 0 0 . . , .. '"" " ' 0 0 0 0 0 0 0 R[ADl', D" DO' D" D" 0 0 0 0 0 0 0 DOl DO. D" '0" '" 0 '" 0 ,~ " " 0 " "'" " "''' 0 0 WD., " "''' 0 0 BEHOIt BEN1,1 " oro Dn RASO, 0 0 ."00 ",." 0 0 DlW,I RAS3, 0 ,m -", "" 0 0 ,,,. "'" 0 0 , "" DO.' .....0 ....0 , " '" '" 0 0 ,~ ., 0 ....0 , " "'" 0 ,...., 0 " "" 0 0 '"" ... . 0 ' DOD DO. lIAS!, 0 0 0 0 0 0 D" D" '" ' . " " 231676-27 Figure 1.82786 Pinout-Bottom View 10-4 November 1988 Order Number: 231676-004 infef 82786 INTRODUCTION The 82786 is an intelligent peripheral capable of both drawing and refreshing raster displays. It has an integrated drawing engine with a high level VOl like graphics commands. Multiple character sets (fonts) can be used simultaneously for text display applications. The 82786 provides hardware support for fast manipulation and display of multiple win· dows on the screen. It supports high resolution dis· plays with a 25 MHz pixel clock and can display up to 256 colors simultaneously. Using multiple 82786s andlor in conjunction with dual port video DRAMs (VRAMs), the 82786 is virtually unlimited in terms of color support and resolution. Table 1.82786 Pin Description Symbol Pin Number Type Description A21:0 A09,B08,A08,B07, A06,B06,A05,B05, A04,B04,A03,B03, A02,B02,B01,C02, C01 ,002,001 ,E02, E01, F02 015:0 N12,M12,M13,L 12, 1/0 Data Bus for the 82786 Graphics memory array and the External L13,K12,K13,J12, Bus. J13,H12,H13,G12, G13,F13,F12,E13 1/0 Address lines for the External Bus. Inputs for Slave Mode accesses of the 82786 supported Graphics memory array or 82786 internal memory or 110 mapped registers. Driven by the 82786 when it is the External Bus Master. BHE B13 1/0 Byte High Enable. An input of the 82786 Slave Interface; driven LOW by the 82786 when it is Bus Master. Determines asynchronous vs. synchronous operation for RD, WR and HLDA inputs at the falling (trailing) edge of RESET. A HIGH state selects synchronous operation. RD 013 1/0 Read Strobe. An input of the 82786 Slave Interface; driven by the 82786 when it is Bus Master. Selects normalltest mode at falling RESET. WR C13 1/0 Write Strobe. An input of the 82786 Slave Interface; driven by the 82786 when it is Bus Master. Selects normalltest mode at falling RESET. MilO C12 1/0 Memory or 1/0 indication. An input of the 82786 Slave Interface; driven HIGH by the 82786 when it is the Bus Master. Determines synchronous 80286 or 80186 interface at the falling edge of RESET. A LOW state selects a synchronous 80286 interface. CS 012 I Chip Select. Slave Interface input qualifying the access. MEN B11 0 Master Enable. Driven HIGH when the 82786 controls the External Bus. (Le., HLDA received in response to a 82786 HREQ.) Used to steer the data path and select source of bus cycle status commands. SEN A11 0 Slave Enable. Driven HIGH when the 82786 is executing a Slave bus cycle for an External Master into the 82786 graphics memory or registers. Used to enable the data path and a$ a READY indication to the External Bus Master. READY E12 I Synchronous input to the 82786 when executing External Bus cycles. Identical to 80286 READY. 10·5 82786 Table 1.82786 Pin Description (Continued) Pin Number Type Description HREQ B12 0 Hold Request. Driven HIGH by the 82786 when an access is being made to the External Bus by the Display or Graphics Processors. Remains HIGH until the 82786 no longer needs the External Bus. HlDA A12 I Hold Acknowledge. Input in response to a HREQ output. Asynchronous vs. synchronous input determined by state of BHE pin at falling RESET. INTR B10 0 Interrupt. The logical OR of a Graphics Processor and Display Processor interrupt. Cleared with an access to the Biu Control Register. RESET A10 I Reset input, internally synchronized, halts all activity on the 82786 and brings it to a defined state. The leading edge of RESET synchronizes the 82786 clock to phase 2. The trailing edge latches the state of BHE to establish the type of Slave Interface. It also latches RD, WR and MIO) t08et certain test modes. ClK B09 I Double frequency clock input. Clock input to which pin timings are referenced. 50% duty cycle. CASO M09 0 Column Address Strobe O. Drives the CAS inputs of the even word Graphics memory bank if interleaved; identical to CAS1 if non interleaved Graphics memory. Capable of driving 16 DRAMI VRAM CAS inputs. CAS1 N09 0 Column Address Strobe 1. Drives the CAS inputs of the odd word Graphics memory bank if interleaved; identical to CASO if non· interleaved Graphics memory. Capable of driving 16 DRAMI VRAM CAS inputs. M07,N08,M08 0 Row Address Strobe. Drives the RAS input pins of up to 16 DRAMsIVRAMs. Drives the first three rows of both banks of Graphics memory. DRA9/RAS3 N06 0 Multiplexed most significant Graphics memory address line and RAS3. DRA9 when using 1 Mb DRAMS; RAS3 otherwise. WEl N10 0 Write Enable low Byte; Active lOW strobe to the lower order byte of Graphics memory. WEH M10 0 Write Enable High Byte. Active lOW strobe to the higher order byte of Graphics memory. DRA8:0 M06,N05,M05, N04,M04,N03, M03,N02,M02 0 Multiplexed Graphics memory Address. Graphics memory row and column address are multiplexed on these lines. Capable of driving 32 DRAMsIVRAMs. BEN1:0 DT1:0 N11,M11 0 Multiplexed Bank Enable and Data Transfer Line. In normal memory cycle enables the output of the Graphics memory array on to the 82786 data bus, 015:0. In data transfer cycle, loads the serial register in dual port video DRAMs (VRAMs). BEN1 IDT1 and BENO/DTO control Bank1 and BankO respectively. BLANK F01 Symbol RAS2:0 1/0 Output used to blank the display at particular positions on the screen. May also be configured as input to allow the 82786 to be synchronized with external sources. 10·6 82786 Table 1.82786 Pin Description (Continued) Pin Number Symbol Type Description H02,J01,J02, K01 ,K02,L01, L02,M01 0 Video data output. VCLK H01 I Video Clock input used to drive the display section of the 82786. Maximum frequency of 25 MHz. HSYNC /WSO G02 1/0 Horizontal Sync. Window status is multiplexed on this pin. May also be configured as input to allow the 82786 to be synchronized with external sources. May also be configured to output Window status. VSYNC /WS1 G01 I/O Vertical Sync. Window status is multiplexed on this pin. May also VOATA7:0 be configured as input to allow the 82786 to be synchronized with external sources. May also be configured to output Window status. VSS A01 ,N01 ,A 13, N13 4 VSS pins. VCC N07,A07 2 Vcc pins. 82786 GRAPHICS PROCESSOR DISPLAY PROCESSOR SYSTEM ADDRESS BUS .J, SYSTEM MEMORY .. . f---+ "'" .... I .. BUS INTERFACE UNIT (BIU) DISPLAY DRAM/VRAM CONTROLLER CPU ~ ~ 82786 ... SYSTEM DATA BUS .... . DATA BUS X-CVER 1 ... ~ .... .... GRAPHICS MEMORY 231676-2 Figure 2 ARCHITECTURE Display Processor The 82786 is a high integration device which contains three basic modules (figure 2): The 82786 Display Processor controls the CRT timings and generates the serial video data stream for the display. It can assemble several windows on the screen from different bitmaps scattered across the memory accessible to the 82786. 1. Display Processor (DP) 2. Graphics Processor (GP) 3. Bus Interface Unit (BIU) with DRAMIVRAM Controller. 10-7 intJ 82786 Graphics Processor The 82786 Graphics Processor executes commands from a Graphics Command Siock (GCMS) (placed in memory by the host CPU) and updates the bitmap memory for the Display Processor. The Graphics Processor has high level VDI like commands and can draw graphical objects and text at high speeds. Bus Interface Unit (BIU) The SIU controls all communication between the 82786, external CPU and memory. The SIU includes an integrated DRAMIVRAM controller that can take advantage of the high speed burst access modes of page mode and fast page mode DRAMs to perform block transfers. The Display Processor and Graphics Processor use the SIU to access the bitmaps in memory. An 82786 request for the bus is indicated by a high level on the HREQ line. The 82786 drives the external bus (A21:0, D15:0, RD, WR, Mia and SHE) only after receiving a HLDA (acknowledge) from the external master. The HLDA line could be externally synchronized (82786 synchronous mode) or internally synchronized (82786 asynchronous mode). The 82786 will deactivate the HREQ line when it no longer needs to access external memory or when it senses an inactive HLDA. The 82786 indicates that it is in control of the external bus by a high level on the MEN output. Screen corruption can occur if the master mode bus cycle, including HREQ/HLDA latency, is too long. Slave Mode The 82786 Slave Interface allows an external CPU access into the graphics memory array or the 82786 Internal Registers. The external CPU directs a (read/write~ave access to the 82786 by asserting the 82786 CS input. When the 82786 is not driving the external bus, the A21 :0, RD, WR, Mia and SHE lines are inputs. The RD, WR, Mia and CS lines are constantly monitored by the 82786 to detect a CPU cycle directed at the 82786. After beginning a slave access to the 82786, the external CPU must go into a wait state. The 82786 will not process new slave commands from the CPU before the previous command has been serviced. The 82786 initiates a slave access by a high level on the SEN output and terminates the slave access when SEN is low. The data bus transceivers can be enabled by SEN. Memory Structure and Internal Registers The 82786 address range is 4 Mbytes. This is divided between the graphics memory directly supported by the 82786 and external system memory. The 82786 distinguishes between graphics memory and external system memory by assuming graphics memory space starts at address OH and goes up to whatever amount of graphics memory is configured. External system memory occupies the rest of the address space. The amount 0.1 graphics memory configured, and therefore the graphics memory/external system memory boundary, is controlled by the "DRAMIVRAM Control Register" in the SIU. The upper limit of configured graphics memory is 4 Mbytes. A 128 byte block (contiguous) of internal control registers is distributed throughout the three modules on the 82786. This block can be either memory or I/O mapped in the CPU address space. The base address and memory or I/O mapped for this register block is programmable through the "Internal Relocation Register" in the SIU. SEN as Slave Ready Indication Inverted SEN should be connected to the 82284 . ARDY input when the Slave Interface is set in synchronous 80286 mode. The number of wait states for a read cycle is a function of the DRAMIVRAM speed. Write cycles execute with .2 wait states because the 82786 issues SEN with different timing during write cycles. The 82786 supports byte accesses to graphics memory. The combination of SHE and AO generate the proper WEL and WEH signals. SHE and AO are ignored for read cycles. Since the Display and Graphics Processors always generate word addresses, the slave cycles directed to graphics memory are the only time WEL may not exactly follow WEH. External Memory Access (Master Mode) . The 82786 initiates "Master Mode" whenever it needs to access a memory address that is beyond the upper limit of configured graphics memory. This memory is typically external memory shared between the 82786 and the external CPU. The bus timings in this mode are similar to the 80286 style bus timings. The 82786 will acknowledge a slave access from an external CPU while waiting for an acknowledge (HLDA) to its own request for the external bus. This prevents a potential deadlock situation. 10-8 intJ 82786 Synchronous/Asynchronous Operation MEMORY ACCESS ARBITRATION The BIU receives requests to access the graphics memory from the Display Processor, the Graphics Processor and the External CPU. Additionally the internal DRAMIVRAM Controller also generates refresh requests. The DRAMIVRAM refresh requests are always highest priority. The other requests are arbitrated with programmable priorities. A higher priority request can interrupt lower priority memory cycles. Block transfers however can only be interrupted on doubleword boundaries. The synchronous/asynchronous mode is selected by the state of the BHE input at the falling edge of reset. A high state selects synchronous operation. The synchronous interface requires that the 82786 and the 80286/80186 clock inputs are shared. For the 80286 case, a common RESET ensures that the 82786 and the 80286 initialize to the same state. With the 80186, external hardware must ensure that the 82786 phase1 is coincident with the 80186 CLKOUT LOW. In the Master Mode, the HLDA line is sampled synchronously or asynchronously. The 82786 slave interface provides for synchronous or asynchronous sampling of the command lines (RD and WR). There are two priority levels for requests from the Display and Graphics Processors:· a First Priority (FPL) and a Subsequent Priority (SPL). The First Priority is the priority at which the first request of a bus cycle is arbitrated with. The Subsequent Priority is the priority associated with subsequent requests of a block transfer bus cycle. This allows for block transfers to execute with a different priority level. If a higher priority request occurs while a block transfer is executing, the BIU suspends the current block transfer and acknowledges the higher priority request. After completion of that higher priority memory access, the requests are arbitrated again. The suspended block transfer is arbitrated with its SPL priority since it is still executing a block transfer. The External Request has no Subsequent Priority level since it cannot execute block transfers. It does have an Altered Priority, though, which is the priority it assumes once every 42 CLK's (maximum bus latency for IBM PC's). The default priorities from highest to lowest following RESET are: EIGHT AND SIXTEEN BIT HOST On reset, the 82786 always assumes an 8 bit host interface. The first few accesses to the 82786 must be 8 bit accesses. The 82786 can be switched to a 16 bit interface by setting the "BCP" bit in the "BIU Control Register". In 16 bit mode, the Internal Register Block is only word addressable. Odd word or odd byte accesses to the internal locations will not produce the desired result. Even byte access, however will work as desired. The least significant address bit, AO, is ignored in 16 bit mode. In 8 bit mode, the internal registers must be accessed by two successive bus cycles. This is not necessary for reads, but is necessary for writes to the internal registers. The low byte (AO = 0) must be written first, followed by the high byte (AO = 1) of the register. A21:1 must be the same for both bus cycles. The register is not changed until the second byte (the high byte) is written to the 82786. There is no restriction on the time between the two bus cycles, but if successive low bytes are written before a high byte is written, the last low byte is the one written to the register. The BIU latches even bytes (AO = 0) of write data in a temporary register. When an odd byte is subsequently written to location address + 1, this byte and the even byte in the temporary register are written to the desired location. A lock out mechanism prevents a high byte write to modify an internal register if there is no valid word in the temporary register. External External Display Graphics Displays Graphics APL FPL FPL FPL SPL SPL 7 7 6 5 3 2 Three bits describe the priorities; 7 is the highest and 0 is the lowest. If two priority registers are programmed with the same value, a default priority chain is used. The default order is, from highest to lowest priority: 1. Display Processor 2. Graphics Processor 3. External Graphics Memory Interface The 82786 directly supports up to 32 DRAMs without additional external logic. This capability allows the use of cost effective memory devices and can result in significant performance improvement through the use of either standard Page Mode or the newer Fast Page Mode/Static Column Decode sequential access RAMs. The Fast Page Mode/Static There is no crossing done by the 82786 in 8 bit mode: low bytes are transferred on the low data lines D7:0 and the high bytes on D15:8. An external crossover creates the 8 bit bus for the host. This is not additional hardware since a crossover is needed for an 8 bit host accessing of the memory array anyway. 10-9 inter 82786 Column Decode parts enable the 82786 to cycle the DRAMs in 100 ns instead of the 200 ns used for Page Mode parts. The 82786 also allows the memory to consist of either standard single port memory devices or dual port Video RAM devices (VRAMs). The 82786 supports a wide range of DRAMIVRAM configurations. The choices include interleaving or non-interleaving (1 or 2 banks - one CAS line/bank), number of rows per bank (1, 2, 3 or 4 - one RAS line/row), width (x1, x4 or x8), height (16k, 64k, 256k or 1M) and performance (Page Mode or Fast Page Mode/Static Column Mode). The only limitation is the address space limit of 4Mbytes. The 82786 DRAMIVRAM address lines (DRAx) can directly drive 32 memory devices while the RAS, CAS, WE and BEN lines can directly drive 16 devices. When the memory array consists of more than 32(16) devices then external drivers must be used to drive the memory array. DRAMs with a HEIGHT of 64k are not allowed in the graphics memory of a system in which Master Mode will be used. There is no limitation on the total DRAM density (64k x 4 DRAMs cannot be used; 256k x 1 DRAMs are okay). There are some special DRAM configurations: i) When 1 Mb x 1 DRAMs are used, RAS3 is used as DRA9. ii) When only one interleaved row is configured (32 devices), RAS1 is identical to RASO.Additional buffering on RASO is therefore not required. iii) When two non interleaved rows are configure? (32 devices), CAS1 is identical to CASO. Additional buffering on CASO is therefore not required. DRAM Cycle Types The 82786 supports two fundamental memory cycle types: single and block. A single cycle involves a single 16 bit word, while a block transfer is a minimum of 2 16 bit words with no maximum length. The single cycle types supported and their cycle times are given below. The cycle times are counted in system clocks, % the ClK input frequency. 1. Single Reads 3 cycles 300 ns 2. Single Writes 3 cycles 300 ns 3. Read-Modify- 4 cycles 400 ns Writes @ @ @ 10 MHz 10 MHz 10 MHz The block cycles use the high speed sequential access modes of page mode, fast page mode (ripple mode) and static column DRAMs. Typical performance numbers for this case are: 1. Page Mode, Non-Interleaved , 2 cycles 10 Mb/ s @ 10 MHz 2. Page Mode, Interleaved 3. Fast Page Mode, Non-Interleaved 4. Fast Page Mode, Interleaved 1 cycle 20 Mb/s @ 10 MHz 1 cycle 20 Mb/s @ 10 MHz .5 cycles 40 Mb/s @ 10 MHz All accesses into the graphics memory by the Display Processor use the high speed sequential access mode whenever possible. The Graphics Processor uses a single Read-Modify-Write cycles for all pixel drawing operations. Block copy operations by the Graphics Processor use the high speed sequential access modes. External CPU access into graphics memory is always a single read or write cycle. When configured to interface with dual port VRAMs, the 82786 generates Page Mode and Fast Page Mode style control signals for memory access through the normal random access port. It also executes a data transfer cycle when the video shift register in the VRAMs have to be loaded. Graphics Memory Refresh The BIU has an internal DRAMIVRAM refresh controller. The refresh period is programmable through the "DRAMIVRAM Refresh Control" Register in the BIU. All configured rows are. refreshed simultaneously by activating the corresponding RAS lines periodically (RAS only refresh). The refresh row address (10 bits) is generated internally. On power up, the refresh row address is undefined. On normal reset, the refresh row address is not affected. It is initialized only if the 82786 is reset into .the "BIU Test Mode". Not modifying the refresh address during RESET allows for a "warm RESET" implementation: contents of DRAMIVRAM can be insured to remain valid if RESET is short enough (less than three DRAMIVRAM refresh cycles). DRAMIVRAM refresh will continue at the proper row after RESET goes inactive again. The graphics memory refresh cycles are always th~ highest priority cycles. There is some latency POSSIble between the internal refresh request and the actual refresh cycle. This latency is critical only in one case: The 82786 is in a wait state while executing a bus cycle on the External Bus. The worst case is a refresh request occurring just after the 82786 receives a HlDA from the host CPU to execute a block transfer on the external bus. Refresh requests can interrupt block transfers, but only on doubleword boundaries - the 82786 must execute 2 full bus cycles on the external bus before the refresh cycle is run. The possibility of many wait states when executing these two bus cycles creates a need for a large refresh latency tolerance. The 82786 can queue up to 3 refresh requests internally. 10-10 82786 In the default mode (a refresh request occurs every 15.2 micro seconds and at 10 MHz operation), this implies that each bus cycle to external memory should not have more than 225 wait states. wait states. For instance, the 80286 can execute 2 wait state synchronous write cycles. The 80186 can execute write cycles with one less wait state than mentioned above. There is no warm up logic on the 82786. The system must either wait for sufficient number of refresh cycles to execute or the boot software on the host can quickly access the memory array for the required number of cycles. For asynchronous interfaces, if the CPU is operating at the same frequency as the 82786, the number of wait states are typically 1 more than those indicated above. For CPUs operating at a slower frequency than the 82786, the number of wait states are, on the average, less than 1 greater than those given above. In some cases, (eg. a 6 MHz 80286) an asynchronous interface acutally has less wait states than those quoted above for the synchronous interface. The default value of the DRAMIVRAM Control Register configures the array as 4 rows of Non-Interleaved Page Mode 256k x 1 with refresh requests generated every 15.2 micro seconds. INTERNAL REGISTERS Internal Register and Graphics Memory Slave Access The 82786 Internal Register block is relocatable by programming an even byte address in the "Internal Relocation Register" in the BIU. The register block can be memory or liD mapped based on the state of the MilO bit. The Register Block is physically distributed between the three 82786 modules, BIU, Graphics Processor and Display Processor. The external master can access either 82786 internal memory liD mapped registers or the Graphics memory. The 82786 internal address space consists of a contiguous 128-byte block that starts on an even byte address. It is mapped to memory or'110 space depending on the state of the MilO bit in the "Internal Relocation Register". If the MilO bit is set to one, the Internal Register Block is memory mapped. If the MilO bit is zero, the Internal Register Block is liD mapped. An address comparison is done between the Internal Relocation Register and the incoming address to determine if the CPU access is directed to internal memoryllO mapped registers. Accesses to reserved locations have no effect; they execute normally but may produce indeterminate read data. No register is altered when a write is executed to a reserved location. Location of Internal Registers within 128 byte block: Byte Address 'OO-OFH Intel reserves the right to add functions to future versions of the 82786. Users should not use reserved locations in order to ensure future compatibility. PERFORMANCE Slave performance is measured here by assuming a request is made to an idle 82786. A synchronous interface is assumed. '10-1FH reserved '20-2B H GP Registers '2C-3F H reserved '40-4A H DP Registers '4B-7F H reserved 8 words 6 words 5 words The BIU register map is as follows: Minimum 80286 Wait States = 3 (10 MHz 80286 and 82786) Byte Address Minimum 80386 Wait States = 8 (16 MHz 80386,8 MHz 82786) BASE Minimum 80186 Wait States = 3 (10 MHz 80186 and 82786, WT BASE BASE = 1) BASE Minimum 80186 Wait States = 2 (10 MHz 80186 and 82786, WT BIU Registers + 8H BASE + AH BASE + CH BASE + EH BASE = 0) The values mentioned above are for read cycles. In some cases, write cycles can operate with fewer 10-11 + OH + 2H + 4H + 6H Internal Relocation Reserved BIU Control Refresh Control DRAM Control Display Priority Graphics Priority External Priority inter 82786 The field definitions for the BIU Registers are as follows: Refresh Control 6 Internal Relocation 15 14 13 12 ... 4 3 2 0 Addr = I Base Ad-d-re-s-s----,-I-M-IO-.I BASE + OH " " Reset valueL.s-:xxx---:O=---The Base Address determines the location of the 128 byte Internal Register Block. The MIO bit "selects between memory or I/O mapping. If it is set (1), the Register Block is memory mapped. At RESET, the Base Address is set so that the Internal Relocation Register is located at every 128-byte address in the entire liD space whenever CS is asserted. The Bas"e Address must be written into this register before any other registers can be accessed. WT: BCP: GI: 0 0 0 0 Addr=BASE+8H IRW1IRWoIDC1IDCoIHT2IHT1IHTOI RESET value: Write Protection Two. When set (1), all BIU Register contents are write protected, including WP1 and this bit, WP2. The only way to regain write access to the" BIU registers after this bit is set, is to RESET the 82786. o 0 RWO o o 0 1 0 1 1 Rows 2 Rows 3 Rows 4 Rows DC1 :0: DRAMIVRAM" Configuration. Controls the rate of block transfers and orientation of " CAS1 and CASO. DC1 DCO o 0 1 0 1 o 1 1 Page Mode, Non"lnterleaved Page Mode, Interleaved Fast Page Mode, Non"lnterleaved Fast Page Mode, Interleaved Height. Defines the HT2:0: DRAMIVRAM HEIGHT (not size) of each DRAMIVRAM chip in the system, All DRAMslVRAMs must be the same size. Graphics Processor Interrupt. Set when the Graphics Processor issues an Interrupt. Cleared with RESET or a read of this register. WP2: RW1 1 1 Determines whether the Internal Register block is accessed as bytes or words by the external CPU. If set (1), a 16 bit interface is selected. Write Protection One. When set (1), all BIU Register contents except for the WP1 and WP2 bits of this register are write protected. o 1 RW1 :0: Number of Graphics memory Rows. One of the variables in defining the Graphics memorylExternal system boundary. Also disables RAS signals not driving any DRAMsIVRAMs. Determines the minimum number of wait states possible in a synchronous 80186 interface. If set (1), there is a minimum of 2 (3) wait states during memory write (read) cycles. WP1: o 0 6543210 0 Display Processor Interrupt. Set when the Display Processor issues an Interrupt. Cleared with RESET or a read of this register. o o DRAM/VRAM Control If set (1) then the 82786 generates dual port video DRAM (VRAM) tYpe memory cycles for display data fetch. If reset (0) then conventional page m"ode type memory cycles are performed to fetch display data. DI: 0 Refresh interval = (Scalar + 1)· 16 • Input clock period 6543210 1 1 The Refresh Scalar is a 6 bit quantity that determines the frequency of refreshcycles to the Graphics memory. Addr = BASE + 4H IVRlwTIBCpIGdDdWpllWP21 RESET value: 0 432 Refresh Scalar RESET value: BIU Control VR: 5 Addr = BASE + 6H HT2 HT1 HTO 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 8KDevices 16K Devices 32KDevices 64K Devices 128K Devices 256K Devices 512K Devices 1M Devices Display Processor Priority 6 "5 Addr 10-12 = BASE + AH RESET value: 4 3 2 FPL 1 SPL 0 0 0 I infef 82786 Graphics Processor Priority Addr = BASE + CH -'j--F-P-L~'---S-P-L--' RESET value: 0 0 0 External CPU Priority Addr = BASE + EH -'j-=---F-P-L---'--A-P-L- RESET value: Specifies the priorities of the Display Processor, Graphics Processor and External CPU requests for the first request (FPL) and subsequent requests for block transfers (SPL). Code 111 is highest priority. Code 000 is lowest priority. The Graphics Processor draws into a predefined area in the memory which is referred to as a "bitmap". A bitmap can be thought of as a rectangular drawing area composed of pixels. A coordinate system is defined for this bitmap with the origin at the upper left corner, the x-coordinate increasing from left to right and the y-coordinate increasing from top to bottom. A bitmap can be up to 32K pixels wide and 32K pixels high. The 82786 can draw several graphics primitives such as points, lines, arcs, circles, rectangles, polygons and characters. During the figure drawing process, the 82786 follows several programmable attributes. The graphics attributes supported by the 82786 are: color depth (bits/pixel) texture logical operation color bit mask clipping rectangle RESET AND INITIALIZATION The state of BHE at trailing RESET determines synchronous vs. asynchronous operation. In Master mode, synchronous/asynchronous operation affects the sampling of the HLDA signal only. In Slave mode, synchronous/asynchronous operation affects the sampling of RD/WR signals. Synchronous operation is set if BHE is sensed HIGH at trailing RESET. This enables direct connection of the 80286 BHE pin in synchronous systems since it is driven HIGH during RESET. The 80186 "tristates" its BHE during RESET so a small static load on this line can select asynchronous operation. All internal registers are set to their default values on reset. The first slave I/O write access to the 82786 will always be directed at the Internal Registers (ignoring the upper fifteen address bits). The Internal Relocation Register must be programmed before any other Internal registers can be accessed. The DRAMIVRAM configuration registers must also be programmed to conform to any specific environment. The 82786 assumes an 8 bit external CPU interface on reset. The graphics memory interface is always 16 bits wide. The BCP bit in the "BIU Control Register" must be set to 1 to enable a 16 bit external interface. Interrupts are cleared on reset. GRAPHICS PROCESSOR Introduction The Graphics Processor (Graphics Processor) is an independent processor within the 82786. Its primary task is to draw bitmap graphics. It executes commands residing in the memory, accessing the memory through the Bus Interface Unit (BIU). The Graphics Processor addresses 4 MB of linear memory (22 bit addresses). Each graphics primitive can be drawn in anyone of 2,4,16 or 256 "Colors". The color details (bits/pixel and exact color) are programmable. The "Texture" controls the appearance of any line (or figure). The texture pattern can be up to 16 bits long thus enabling drawing of solid, dashed, dotted, dot-dash etc. types of lines. Each bit in the Texture corresponds to one pixel. The 82786 supports all sixteen binary "Logical Operation" between a figure being drawn in bitmap memory and the existing contents of memory. It is thus possible to overlay a figure on a background. The "Color Bit Mask" restricts the drawing operation to only some "color planes". The clipping rectangle restricts the drawing operation to a specific area in the bitmap. The pixel information is stored in the bitmap memory in a packed pixel format. Different color bits for the same pixel are stored in adjacent bit positions within the same byte. Each byte represents 1, 2, 4 or 8 pixels (in one of 256, 16, 4 or 2 colors). The Graphics Processor fetches its commands directly from a linked list Memory-resident Graphics Processor Command Block (GCMB). The GCMB is created and maintained by the CPU. The initial address for the GCMB is contained in a Graphics Processor Opcode Register in the 82786. Addresses for subsequent (next) GCMBs are contained in the previous GCMBs. The Graphics Processor cah be forced to stop by appropriate commands. When the Graphics Processor is idle, it is said to be in the "Poll State'~. This is the default mode after reset. While in the Poll State, the Graphics Processor continuously monitors its internal "Opcode Register". A valid command in this register starts the 10-13 inter 82786 Graphics Processor. The first command placed in the internal Opcode Register must always be a Address BASE BASE BASE "LINK" command directing the Graphics Processor to the main GCMB in memory. Function Register + 20h + 22h + 24h I GRO OPCODE GR1 Parameter 1 (Link Address Lower) GR2 Parameter 2 (Link Address Upper) GECL Graphics Processor Internal Registers used in Poll State Graphic Processor Command Format Each command to the Graphics Processor consists of an opcode, a Graphics End of Command List (GECL) bit and a list of parameters as required by the command. The opcode is 8-bits wide. The remaining 7-bits in the first word of the command must be all zeroes to ensure future compatibility. Also, whenever a parameter for the command is an address, 32-bits have been set aside but the 82786 uses only 22-bit addresses. The user must ensure that the higher 10-bits in the address parameter are always all zeroes All commands must lie at even byte addresses. The commands are placed (along with their parameters) sequentially in memory. Several GCMBs may be linked together through a LINK command. All commands have a standard format as described below: o 8 7 15 OPCODE 10 0 0 0 0 0 01 GECL Parameter 1 " • 10 After fetching each command, the Graphics Processor checks the GECL bit. If the GECL bit is zero, the command executes and the next command is then fetched from the GCMB. If the GECL bit is set to one, the Graphics Processor does not execute the command and enters a POLL state. Parameter n etc. Graphics Processor Status Register One of the 82786 Internal Registers contains the Graphics Processor Status Byte. The bits in the Status Byte are represented as: Address BASE + 26H 1. GPOLL - Poll State Indicates if the Graphics Processor is in a POLL state. 2. GRCD - Reserved Command This bit is set if the Graphics Processor encounters an illegal opcode. 3. GINT - This bit is set as a result of the INTR_GEN command. 4. GPSC - Pick Successful This bit is set or cleared while the Graphics Processor is in the PICK mode. The bit is set if the pick operation resulted in success on "any command. 5. GBCOV - bitmap Overflow for BitBlt or CharBlt An attempt to execute a CHAR or a BitBlt command with any portion of the destination rectangle lying outside the clip rectangle causes this bit to be set. 10-14 6. GBMOV - bitmap Overflow for Geometric Commands An attempt to draw a pixel lying outside clip rectangle as a result of any geometric drawing commands (LINE, CIRCLE etc.) causes this bit to be set. The reason for separating these two bits is the difference between the clipping operations for the two types of commands. 7. GCTP - Character Trap This bit indicates that a character specified in the character string as a parameter for the CHAR command had its TRAP bit set. 8. GIBMD - Illegal Bit Map Definition This bit is set if the DEF_BIT_MAP command is executed with illegal parameters. The illegal parameters are bits per pixel defined to be other than 1, 2, 4 or 8, Xmax defined to be greater than 32k-1, or the following equation not being met: ((Xmax + 1) • Bpp) mod 16 = O. infef 82786 All the status bits except GPOll are cleared upon reset. The GPOll bit is set on reset. Graphics Instruction Pointer The Graphics Processor Instruction Pointer is a 22 bit quantity stored in two registers in the Graphics processor. It points to the current command in the GCMB. Address BASE BASE + 28h + 2Ah Register Function Character Font Storage The character fonts are stored in memory. Starting from an even address, the character information is stored in consecutive words of memory forming a character block. Each block can be of different lengths for different characters. A character font is selected by programming its base address into the 82786 through the DEF_CHAR_SET command. The font could be established for 8 or 16 bit character codes. Each character block within a font has the following format: GCIPL Instruction Pointer Lower 15 GCIPH Instruction Pointer Upper S 8 I WidthW o 7 I T I HeightH Dot Pattern for 1st row Dot Pattern for 2nd row Clipping Rectangle The 82786 can be instructed to restrict drawing to . certain portion of the bitmap only. This portion is called the "Clipping Rectangle". The default clipping rectangle is the entire bitmap. The clipping rectangle must be redefined after a DEF_BIT_MAP command. For figures that are partially inside and partially outside the clipping rectangle, only the part inside the clipping rectangle is updated in the bitmap. Character clipping is supported for word mode. In order for the clipping to have predictable results, there are some restrictions on the x,y coordinates of each pixel. The rules to be observed are: 1. For lines, circles, polygons, polylines, BitBlts and CharBlts, each pixel lying on the figure (both the visible and the invisible parts) must not have its x or y coordinate outside ± 32K range. 2. For circular arcs, the above restriction applies to the circle of which the arc is a part. 3. If the top of characters are to be clipped, the top row of pixels of the character must begin on an even-numbered scan line (scan lines are numbered from.top to bottom beginning with number 0). Pick Mode The Graphics Processor can be put in "PICK Mode" by executing the ENTER_PICK command. In the PICK Mode, the Graphics Processor performs all pixel computations for all drawing, BitBlt and Character commands. However, the bitmap memory is not updated. Instead every computed pixel is compared against the clipping rectangle. If any computed pixel is found to lie within the clipping rectangle, the GPSC bit in the Graphics Processor Status Register is set. Pick mode is not supported for circles and arcs. Dot Pattern for Hth row s - Character Space bit T - Trap Bit Each character block must start at a word address and the dot patterns for each line of the font must reside in separate words. The height and width of each character cannot be more than 16 pixels. In case the width of a character is less than 16 pixels, the dot pattern for each line must be stored as right justified within the word. Note that width and height of the character refer to the difference between their limiting x and y coordinates respectively. Thus width = 0 specifies a character one pixel wide and a height = 0 specifies a character one pixel high. Graphics Processor Control and Context Registers All Control and Context Registers in the Graphics Processor can be read from or written into, through the Graphics Processor commands DUMP_REG and lOAD_REG. Each register is identified by a 9bit Register Id. These registers are not directly addressable like the registers that are mapped into the 82786's On-ChipMemory (1/0) space, i.e., they are accessible only through the DUMP_REG and the lOAD_REG commands. The four user accessible graphics control registers are listed below. 10-15 REGISTER NAME REGISTER-ID (# of bits) GPOEM GIMR GSP GCNT 0003 ( 6) 0004 ( 8) 010e (21) 0015 (16) REGISTER FUNCTION Poll Mask Interrupt Mask Stack Pointer Character Count while drawing characters in bitmap inter 82786 The Graphics Processor also has Context Registers, which are normally of no use to a user except in the event of saving and restoring them during a CPU context switch. Any other direct access to these registers must be avoided. Name 10 Bits Function (16) Command (2,2) Character Orientation and Path' GCHA 010B (21) Character Font Base AddressGCA 0100 (21) Memory Address of Current Position (X, Y)GBORG 010F (21) Bitmap Origin AddressGCX 0010 (16) Current X Position 0011 (16) Current Y Position GCY GPAT 0012 (16) Line Pattern GSPAC 0013 (16) Spacing between Characters and Bitblts GN 0016 (16) Number of 16-Bit Words Spanning Width of Bitmap GVERS 0017 (16) Version Number'" (D Step Value = 5) TEMP 0019 (16) Temporary Storage GXMAX 0090 (16) Maximum X for Clipping Rectangle GYMAX 0091 (16) Maximum Y for Clipping Rectangle GXMIN 0094 (16) Minimum X for Clipping Rectangle' GYMIN 0095 (16) Minimum Y for Clipping Rectangle' GMASK 0099 (16) Pixel Mask 009B (16) Background Color GBGC GFGC 009C (16) Foreground Color (4) Function Code" GFCOOE 009E GCIP 01AC (21) Current Instruction PointerGBPP(RO) 009F (4) Used with Dump Register Command to Get Current Bits per Pixel Value'" GBPP(WO) 0008 (4) Used with Load Register Command to Write Current Bits per Pixel Value'" GCOMM GCHOR 0002 0007 NOTE: The following information is not saved by saving the state of these registers; 1) Type of character font, word, or byte. 2) Whether or not you are in pick mode. 3) Transparent or opaque drawing. Graphics Processor Exception Handling The status bits GPOLL, GRCO, GINT, GPSC, GSCOV, GSMOV, GCTP, and GISMO are capable of generating an interrupt to the CPU depending upon the Interrupt Mask Register (GIMR). If the corresponding bit in the GIMR is a "0" an interrupt is generated. If another bit in the Graphics Processor Status Register is set before an acknowledgement for a previously generated interrupt, then another interrupt is not generated. Reading the Status Register and the SIU Control Register serves the purpose of an Interrupt Acknowledge to the Graphics Processor. Reading the Graphics Processor Status Register clears the offending status bit(s) - bits not masked out in the Interrupt Mask. If the interrupt is generated due to the GPOLL bit, then this bit is not cleared on an interrupt acknowledge. However this does not generate repeated interrupts. - 21-bit registers use 2 consecutive words. 'These bits are right justified in each byte of the word in which they are stored. Two bits are stored in bits 1 and 0 and two bits are stored in bits 8 and 9; the remaining upper bits in each byte are zeroed. -"lnO-Step, valid after RESET and prior to drawing or drawing control commands. 'Correction to previous GXMIN 10 0096 and GYMIN 0097 assignments. "GFCOOE 10 reassigned from 001 C to 009E in O-Step. This code is read out inverted. The value read out must be inverted in order to restore it properly. '''New O-Step Bpp Registers. The status bits GINT, GPSC, GSCOV, GSMOV, GTRP and GISMO can also cause the Graphics Processor to stop its normal instruction fetch/ execution and enter the POLL state. This is determined by the contents of the POLL On Exception Mask register (GPOEM). The GPOEM is 6 bits wide. If the corresponding bit in the GPOEM is a "0", POLL state is entered. On entering POLL state, the GECL bit in the Opcode (GRO) register is automatically set. When the Graphics processor is in POLL state, it can be restarted by writing the appropriate opcode into the Opcode register (GRO) and writing a zero into the GECL bit. The act of clearing the GECL bit also causes the status bits that caused the POLL state to be cleared. Interrupt generation due to the GPOLL bit is enabled on exit from the POLL state. The status bit GRCO when set, always causes the Graphics Processor to enter the Poll State. The Interrupt and the POLL mechanisms are two independent mechanisms. It is possible for the Graphics Processor to issue an interrupt and not POLL, or to issue an interrupt and POLL, or not to issue an interrupt and POLL or do none of them -' all depending upon the GIMR and GPOEM Registers. 10-16 intJ 82786 Initialization And Software Abort The ABORT signal causes the Graphics Processor to enter POLL state after the execution of the currently executing command. The two ways to initiate a software ABORT and force the Graphics Processor to enter POLL state are: i) An attempt to write into the Graphics Processor Status Register ii) An attempt to write into the Graphics Current Instruction Pointer. Upon RESET, the Graphics Processor immediately enters a well defined state. The following events take place: 1. Command execution is halted and the Graphics Processor enters POLL state. 2. The GECL bit of the Opcode register (GRO) is set to one to indicate an End of Command List. 3. All status bits except GPOLL are cleared. GPOLL is set. 4. Interrupt Mask Register (GIMR) is set to all ones (disabled). 5. Poll on Exception Mask register (GPOEM) is set to all ones (disabled). 6. Graphics Processor exits pick mode. The Graphics Processor command set is divided into the following classes: 1. 2. 3. 4. 5. Non-Drawing Commands Drawing Control Commands Geometric Commands Bit Block Transfer (BitBlt) Commands Character Block Transfer (CharBlt) Commands List of Graphics Processor Commands (Higher Byte· Hex) Command Opcode Command Opcode LINK NOP DEF_TEXTURE_OPAQUE DEF_ TEXTURE_TRANSPARENT DEF_CHAR_SET_WORD DEF_CHAR_SET_BYTE INTR_GEN CALL RETURN DEF_BIT_MAP DUMP_REG LOAD_REG DEF_COLOR DEF_LOGICALOP ENTER_PICK EXIT_PICK DEF_CLIP_RECT DEF_SPACE DEF_CHAR_ORIENT ABS_MOVE RELMOVE 02 03 06 07 OA OB OE OF 17 1A 29 34 3D 41 44 45 46 40 4E 4F 52 POINT LINE LlNE_OE RECT BIT_BLT ARC_EXCLUSION ARC_INCLUSION POLYGON POLYLINE CIRCLE CHAR_OPAQUE CHAR_TRANSPARENT CHAR_OPAQUE/REVERSE CHAR_TRANSPARENT/REVERSE BIT_BLT_M INCR_POINT HORILLINES BIT_BLT_EO BIT_BLT_ET BIT_BLT_ERO BIT_BLT_ERT 53 54 55 58 64 68 69 73 74 8E A6 A7 A8 A9 AE B4 BA 04 05 06 07 10-17 infef 82786 NON-DRAWING COMMANDS NOP = No Operation 0300h LINK = Link to Next Command 0200h 2900h LOAD_REG = Load Register 3400h CALL = Call Subroutine OFOOh = Link Address High I ~==O=E=O=O=h==:;-_ _ _ _ _----,-_ _ _ _ _ _, -_ _ _ _ _---, INTR_GEN = Generate Interrupt DUMP_REG = Dump Register RETURN Link Address Low Return from Subroutine I IDump Address Low IDump Address High I I Load Address Low I Load Address High I Call Addr Low Register 10 Register ID Call Addr High 1700h HALT = Enter Poll State xx01 h DRAWING CONTROL COMMANDS DEF_BIT_MAP = DEF_CLIP _RECT DEF_COLORS = Define bitmap 1AOOh Define Clip Rectangle 4600h = Define Colors 3DOOh I DEF_TEXTURE = Define Texture 0600/0700h Opaque/Transparent DEF_LOGICALOP = Define Logic Operation I Origin Addr Low I Origin Addr High I xmin ymin Xmax Ymax xmax ymax Bits/pixel IForeground Color IBackground Color I I . 4100h Pattern Color Bit Mask Function Code (see table below) The functions performed and their codes are: FCODE 0000 0001 0010 0011 0100 0101 0110 0111 FUNCTION FCODE FUNCTION 1000 1001 1010 1011 1100 1101 1110 1111 CMP (source) AND CMP (dest) CMP (source) XOR dest CMP (source) CMP (source) OR dest CMP (dest) source OR CMP (dest) CMP (source) OR CMP (dest) 0 source AND dest CMP (source) AND dest dest source AND CMP(dest) source source XOR dest source OR dest DEF_CHAR_SET = Define Character Set (Word/Byte mode) DEF_CHAR_ORIENT = Define Char Orientation I 1 OAOO/OBOOh Font Addr Low 4000h Path /Rotation 10-18 Font Addr High I inter 82786 There are four defined values for both the path and rotation. They are: DEF_SPACE = Define Inter Char and Bit Bit GCX Update Space CODE INCREMENT 00 01 10 11 o degrees 90 degrees 180 degrees 270 degrees 4DOOh Space ABS_MOV = Move 4FOOh x coordinate y coordinate RELMOV = Relative Move 5200h dx dy ENTER_PICK = Enter Pick Mode 4400h 4500h EXIT_PICK = Exit Pick Mode GEOMETRIC COMMANDS POINT = Draw Point INCR_POINT = Draw Incremental Points 5300h dx dy B400h Array Addr Low Array Addr High N (# of pts) INCREMENTAL POINTS ARRAY INC3 INC4 INC2 - - - - INCN INCN-1 INC1 INCN-2 The largest allowable single array of incremental points is 32K points. The upper two bits of the "inc" field specify the increment for the x coordinate while the lower two bits specify the increment for the y coordinate, The encoding for the two bits is as follows: CODE INCREMENT 00 01 10 11 0 +1 -1 Unused NOTE: Transparent mode is not supported with the INCR_POINT command if the texture is non-solid. 5400/5500h dx CIRCLE = Draw Circle BEOOh radius RECT = Draw Rectangle 5BOOh dx dy POLYLINE = Draw Polyline 7400h Array Addr Low Array Addr High N (# of lines) POLYGON 7300h Array Addr Low Array Addr High N (# of lines) LINE = Draw Line (With End Point! without End Point) = Draw Polygon 10-19 dy intJ 82786 POL YLiNE/POLYGON ARRAY HORIZONTAL LINE ARRAY dx1 dy1 dxy dyl deltaX1 dxN dyN dxN dyn deltaXN ARC = Draw Arc (Exclusion/Inclusion) 6800/6900h dxmin dymin I· dxmax 1 dymax 1 radius 1 SCAN_LlNES= Draw Series of 1 BAOO/BA01 h 1 Array Addr Low 1 Array Addr High 1 N (# of lines) 1 Horizontal Lines NOTE: Transparent mode is not supported with the circle and arc commands if the texture is non-solid. BITBLT COMMANDS BIT_BL T = Bit Block Transfer within bitmap 1 6400h I Source x coord I Source y coord I AEOOh ISource Addr LowlSource Addr Highl BIT_BL T_M = Bit Block Transfer 1 across bitmaps I Source Ymax I Source x coord I Source y coord I BIT_BL T_E = Bit Block Transfer across bitmaps (opaque, transparent, opaque/reverse, transparent! reverse) 1 Source Ymax I Source x coord I Source y coord I CHAR = Draw Character String (opaque, transparent, opaque/reverse, transparent! reverse) I A600/ A700/ ABOO/A900h dx Mode char1 char2 char2 char4 char1 char3 charN charN charN-1 String Ptr Low I dy I SourceXmax dx String Ptr High I I I I I I dy N( # of char) I I DISPLAY PROCESSOR CHARACTER STRING FORMAT Byte I dy I SourceXmax I 0400/0500/ Isource Addr Lowlsource Addr Hi9hl 0600/0700h CHARBLT COMMANDS Word Mode dx .-~---.-------. NOTE: In byte mode, the character code of the first character to be drawn must reside at an even address. Introduction The Display Processor (Display Processor) is an independent processor responsible for controlling the display of video data on a CRT, laser printer and other display devices. Its functions include the generation of horizontal and vertical timing signals, blanking signal and the control of 8 Video Data output pins. 10-20 intJ 82786 The 82786 can function in two distinct types of graphics memory environments - i) using single port DRAMs (normal display mode) and ii) using dual port video DRAMs (VRAM mode). When the 82786 is configured to interface with single port DRAMs, the Display Processor uses the BIU to fetch the screen parameters and display data from memory. The Display Processor then internally shifts the video data into the video stream for screen refresh. When configured to run with VRAMs, the Display Processor uses the BIU to load the shift registers in the VRAMs at the beginning of every scan line. The screen refresh is then done by the second port of the VRAMs. The BIU and Graphics Processor have the rest of the scan line time to access the graphics memory. Video Rates (Normal Display Mode) The Display Processor is clocked from an external Video Clock. In this mode, the 82786 fetches video data from memory into an internal FIFO. An internal shift register then generates the serial video data stream to the display. The 82786 will support CRT screens of up to about 640 x 480 pixels at 8 bits/pixel and 60 Hz non-interlaced, or about 1024 x 640 x 8 at 60 Hz interlaced. The Display Processor supports Interlaced, non-interlaced and interlace-sync displays. The Display Processor also has higher speed modes which enable the user to trade off bits/pixel for dotrate. Thus it is possible to run at a maximum of 8 bpp with a 25 MHz dot-rate, 4 bpp at a 50 MHz dot-rate, 2 bpp at a 100 MHz dot-rate or 1 bpp at 200 MHz dot-rate; with corresponding increase in size and resolution. Note that in the high speed modes, horizontal window and cursor placement resolution is reduced to 2, 4 or 8 pixel resolution at 50 MHz, 100 MHz, or 200 MHz rates respectively. Bitmap Organization The Display Processor is optimized to display data in packed bitmap form. The Graphics Processor writes pixel data in the memory in this form. The Display Processor supports display of 1, 2, 4 or 8 bits/pixel data, stored in sequential bitmap form, with the first (left-hand) pixel to be displayed occupying the Most Significant Bit(s) of a word in memory, and subsequent pixels occupying sequentially lower bits in the word. Ascending word addresses represent subsequent pixels, moving left to rig!1t and top to bottom on the screen. Windows and Normal Display Mode In the normal display mode, Windows may be displayed on the screen in a flexible format. There can be up to 16 window segments or tiles appearing on any single display line. There is no limit on the number of windows vertically (limited by the number of scan lines in the active display area). At the basic Video rate (25 MHz, 8 bpp), these windows may be placed at pixel resolution on the screen, and mapped at pixel resolution into the bitmap. Windows can be made to overlap, by breaking the windows into tiles and assembling the tiles on the screen. Cursor (Normal Display Mode) The Display Processor supports a single hardware cursor which may be 8 x 8 pixels or 16 x 16 pixels. This cursor may be positioned anywhere on the screen with a pixel resolution. The cursor may be defined to be transparent or opaque, and may be either a block cursor with its hot-spot at the top-left of the cursor pattern, or a cross-hair cursor one pixel across, stretching the width and height of the screen with its hot-spot at the center of the cross. The cursor color and pattern (shape) are programmable. The cursor may be programmed off if not required, or to implement a blinking cursor. VRAM Mode In the VRAM mode, the first tile for every scan line is used to load the shift register in the VRAMs by executing a data transfer cycle. Subsequent tiles (if any) for all strips will still be available through the VDATA pins of the 82786. The window status bits can be used to internally multiplex the VRAM video stream and the 82786 generated video stream. The address for this data transfer cycle is determined from the Tile Descriptor. The 82786 BEN# pin is used as a DT pin for this case. If the graphics memory banks are interleaved, then both banks are loaded in the transfer cycle. During the Blank period, Default VData appears on the VDATA pins. CRT Controller CRT timing signals HSYNC, VSYNC, and BLANK are each programmable at a pixel resolution, giving a maximum display size of 4096 x 4096 pixels. If High Speed, Very High Speed, or Super High Speed display modes are selected, the horizontal resolution of the CRT timing signals becomes 2 pixels, 4 pixels or 8 pixels at 50 MHz, 100 MHz and 200 MHz respectively. Window Status The HSync and VSync CRT timing pins may be configured to serve as Window Status output pins, which can be programmed to present a predefined code while the Display Processor is displaying a tile. This code is programmable as part of the Tile De- 10-21 82786 scriptor, and may be used externally to multiplex in video data from another source, or select a pallette range for a particular window, etc. External logic must be used to enable VSync and HSync as CRT timing signals when Blank is high, and as encoded Window Status signals when Blank is low. This is valid in both DRAM and VRAM modes. Zoom Support The Display Processor allows windows to be zoomed in the normal display mode. The zoom factor is an integer between 1 and 64. There are independent zoom factors for the x and y direction. The zoom function results in pixel replication. All zoomed windows on a display are zoomed by the same amount. A window is therefore either zoomed or not zoomed. Zoom offset is not supported-a pixel must either be fully displayed or not displayed at all. This places a restriction on window placementa window may not be placed such that a zoomed pixel is partially obscured. VRAM displays can be zoomed vertically by using this feature. Horizontal zooming of VRAM windows requires external hardware support. Only even zoom factors are supported in the Y direction with interlaced displays. In addition, when zooming, both descriptor lists (interlaced" systems use two descriptor lists, one for each frame) must point to the same place in memory, i.e., they must be identical list. Extended 82786 Systems The CRT timing signal pins may be configured as output pins (for the normal stand-alone 82786 system), or as input pins for a system in which multiple 82786's are ganged in parallel to provide a greater number of bits/pixel, higher dot rates, larger display area, or more windows. In multiple 82786 systems, each of the Display Processors run in lock step, allowing the individual outputs to be combined on a single display. The HSync, VSync and Blank pins for the "Slave" 82786 are configured as inputs and are driven by the "Master" 82786. Memory Bandwidth Requirements The memory bandwidth required by the Display Processor depends on the display size and mode of operation. The 82786 has a 40 Mbyte/sec maximum bandwidth during fast block accesses to graphics memory. In the normal display mode the Display Processor makes use of these fast block reads for screen refresh, thereby minimizing its use of the memory bus, which the other 82786 modules share. For worst-case displays, when the Display Processor is running at its maximum speed of 25 MHz and 8 bits/pixel, about 50% of the memory bandwidth is used for display refresh. Correspondingly, at only 1 bit/pixel the Display Processor's bus requirements are reduced to about one-eighth of its requirement at 8 bpp. In the VRAM mode, the Display Processor does not fetch any of the display data. The display data is passed directly from the graphics memory to the pixel logic. In this case about 1% of the graphics memory bandwidth is required by the Display Processor to fetch the Strip Descriptors. Display Processor Registers There are two different register sets for the Display Processor. Six of the 82786 Internal Registers are dedicated to the Display Processor. These registers are memory (or I/O) mapped in the external CPU address space. They can therefore be directly accessed by the external CPU. Another set of registers is totally local to the Display Processor. These are the display control registers and are used for display parameters. 82786 Registers For Display Processor There are six of these Registers. They are listed below: Address External Video Source The HSync and VSync pins on the 82786 can be configured as inputs to synchronize the 82786 to external video sources (VCR, broadcast TV etc.). In this case, the Blank pin is configured as output and the active 82786 display period is determined by the programmed 82786 parameters. + 40 Base Base + 42 + 44 + 46 + 48 Display Processor Status Base + 4A Default Video Base Base "When programmed as inputs, VSync and HSync still serve as outputs for Window Status while Blank is inactive. Function Base Display Processor Opcode Param1 Param2 Param3 The Display Processor Opcode and the three parameter registers are used to send a command to the Display Processor. The Display Processor Status Register contains the status for the Display Processor. This is described in more detail later. The Default Video Register contains the data that appears 10-22 82786 on the Video Out pins during the blanking intervals. The CPU can use this register to address an external pallette RAM while loading the pallette, thereby eliminating a separate address path and external logic. sor Position registers). The register 10 must be an even number for this command. LOAD ALL (LD-ALL): o 0 0 0 0 1 0 1 0 0 0 0 Mem Address lower Mem Addr Upper Display Control Registers The display control registers can be loaded under control of the Display Processor during the Vertical Blanking interval. This synchronizes parameter updates with display refresh and ensures that the display remains clean, with no updates occurring during data display. The Display Processor may also be programmed to provide a Frame Interrupt once per certain number of frames. This may be used to facilitate blinking, scrolling, panning, animation or other periodic functions. This command loads the entire block of display control registers in a block read starting from the Memory Address given in the command. The Memory Address must be an even byte address. This command must be the first command executed and has to be executed after reset to enable the display operation. The registers are listed below. DUMP (DMP-REG): o I I 0 I 0 I 0 I 0 Command Execution At the beginning of each Vertical Blanking time, the Display Processor checks the ECl bit in the Display Processor Opcode Register. If the ECl bit is 1, the Display Processor status remains unchanged. If the ECl bit is 0, the Display Processor executes the command. Only one command is executed per frame. On completion of the command, the Display Processor sets its ECl bit back to 1, indicating to the CPU that a new command may be written into the Command Register. This handshake prevents the CPU from writing a new command before the old one has finished executing. The commands for the Display Processor are: 1. load Register 2. load All Registers 3. Dump Register 4. Dump All Registers The command formats are: 0 0 0 0 1 0 0 0 0 0 0 Memory Address lower Mem Addr Upper Register 10 I I I II 1 1 0 0 0 0 0 Memory Address lower Mem Addr Upper Register 10 0 WP lP Eel This command causes the Display Processor to write the contents of the display control register pair specified by Register 10 to the location in memory specified by Memory Address. The Memory Address must be an even byte address. The register 10 must be an even number for this command. DUMP All (DMP-ALl): o 0 0 0 0 1 1 1 0 0 0 0 Mem Address lower Mem Addr Upper 0 WP lP Eel This command causes the Display Processor to write its entire display control register block out to a block in memory, starting at the Memory Address specified. The Memory Address must be an even byte address. The write occurs as a series of single write cycles. For any of the Display Processor's four commands, setting the lP bit to 1 will cause that command to execute at the start of each VSYNC period. While in loop Mode, the DP does not set the ECl bit back to 1 at the end of each execution. Exit loop Mode by writing 0 to the lP bit. LOAD REGISTER (lD-REG): o 0 WP lP Eel 0 WP lP Eel This command loads a pair of display control registers with values stored in memory starting at the location given by Memory Address. The Memory Address must be an even byte address. The Register 10 for the register pair is given in the register block description below. This command may be used to update individual pairs of registers (such as the Cur- The Write Protect bit (WP, bit 2 of the DP opcode register) allows the user to write protect the CRT Timing parameter registers (Display Control Register Block registers 06h-ODh). Write protect is not enabled until after the firstDP command has executed. This must be a lOAD ALL. Before changing the WP bit, the user should exit loop Mode and wait for the ECl bit to return to 1. 10-23 inter 82786 Display Control Register Block The display control register block is shown below. Each register is 16-bits wide. The numbers in parentheses are the number of bits per parameter. 15 14 13 12 11 10 9 OOh VStat: 01h 02h 03h 04h 05h CRTMode: B 7 6 5 4 3 2 1 0 C D C- CsrOn(1); D- DspOn(1) IntMsk ITripPt Frint-1 Reserved AA IL - Interlace(2): 00 ~ Non-Interlace 01 ~ Reserved 10 ~ Interlace 11 ~ Interlace-Sync W - Window Status Enable(1) S - HSYNC, VSYNC Slave Mode(1) B - Blank Slave Enable(1) AA - Accelerated Video (High Speed Video, etc.)(2) 00 ~ Normal (25 MHz) 01 ~ High Speed (50 MHz) 10 ~ Very High Speed (100 MHz) 11 ~ Super High Speed (200 MHz) 15 14 13 12 11 10 06h 07h OBh 09h OAh OSh OCh ODh OEh OFh 10h 11h 12h 13h 14h 15h 16h 17h 9 B 7 6 5 4 3 2 HSynStp-3 HFldStrt-3 HFldStp-3 LineLen-3 VSynStp-1 VFldStrt-1 VFldStp-1 FramLen-1 Descriptor Addr. Pointer (L) Descriptor Addr. Pointer (U) Reserved XZoom-1 YZoom-1 FldColor BdrColor 1Bpp Pad 2Spp Pad 4Bpp Pad CsrMode: SIXITI CSt CsrPad CSC 1 1- CsrStyle: S - CsrSize(1): 0 ~ B x B Csr 1 ~ 16x16Csr X - CsrX-Hair(1) T - CsrTransparent(1) CSt - CursorStatus (to Window Status output)(2) CSC - CursorStatusControl(2): 00 ~ Current Window Status 01 ~ Foreground 10 ~ Background 11 ~ Block 10-24 o 82786 15 14 13 12 11 10 18 19 1A 1B 1C 10 1E 1F 20 21 22 23 24 25 26 27 28 29 I 9 876 5 4 3 2 o CsrPos X-2 CsrPos Y-1 GsrPatO GsrPat1 GsrPat2 CsrPat3 CsrPat4 CsrPat5 GsrPat6 CsrPat7 CsrPat8 CsrPat9 CsrPatA CsrPatB GsrPatG CsrPatD CsrPatE CsrPatF The functions of the preceding registers are described in more detail below: o. VStatGsrOn(1) DspOn(1) If set, the internally generated display or cursor are turned on. 1.lntMsk Interrupt Mask Register. This register enables an 82786 interrupt whenever the corresponding bit in the Display Processor Status Register is set. A o for any bit enables the interrupt. This Interrupt Mask is different from the Interrupt Mask for the Graphics Processor. If using interrupts, mask bit 5 of this register. 2. TripPt The Trip Point register is a reserved field and must be programmed to OOh. 3. Frint Frame Interrupt Register. Enter the number of frames minus one elapsed between successive setting of the FRINT bit in the Display Processor Status Register. 4. Reserved field should always be set to zero. 5. GRTMode -IL(2) W(1) S(1) B(1) M(2) These bits control the various modes of the CRT Controller. IL are the Interlace Control bits-if IL is 00, the display is Non-Interlaced. If IL is 10, the display is Interlaced (displaying the even lines (Field 1) of the frame and then the odd lines (Field 2». If IL is 11, the display is interlace-sync (similar to interlace, except that the odd field display is identical to the even field display). W is the Window Status Enable bit. If W is 0, HSYNG and VSYNC will have normal operation. If W is 1, the Window Status Gode programmed into the Tile Descriptors will be output on VSYNC and HSYNC pins while display data for that particular window is being displayed. VSYNC represents the MSB and HSYNC the LSB of the Window Status Code. S is the HSYNGIVSYNC Slave Mode bit. If S is 0, the VSYNC and HSYNC pins are outputs. If S is 1, they are inputs. In the Slave Mode, if Window Status is enabled, HSYNG and VSYNG will still be outputs while BLANK is low. B is the Blank Slave Mode bit. If B is 0, the BLANK pin is an output. If B is 1, it is an input. NOTE: Always program the slave 82786 first, then the master. The slave VSYNC, HSYNC, and BLANK pins must be held high until they are programmed. AA are the Accelerated Video Mode bits. By using an external latch or shift register, 50, 100 or 200 MHz video. data rates can be generated. In the Accelerated Video Modes, each memory byte represents 2, 4 or 8 physical pixels. The upper bit(s) of each byte represent the pixels that appear on the left on the display medium. Used in DRAM display mode. Must be programmed to zero for the first tile in the VRAM Mode. 10-25 6. HSynStp Enter the HSYNC width in number of VClks minus 3. (For a graphical representation of all the CRT timing signals, see Figure 3). inter 82786 7. HFldStrt Enter the number of VClks minus 3 between the rising edge of HSYNC and the falling edge of BLANK (the start of Video Data). 8. HFldStp Enter the number of VClks minus 3 between the rising edge of HSYNC and the rising edge of the next BLANK (the end of Video Data). 9. LineLen Enter the number of VClks minus 3 between the rising edge of HSYNC and the rising edge of the next HSYNC. 10. VSynStp The number of Horizontal Synchronizations (HSYNCs) between the beginning of Vertical Synchronization (VSYNC) and the end of VSYNC. Enter VSYNC width as the number of HSYNC periods minus one. In the non-interlaced mode, VSYNC rises and falls on the rising edge of HSYNC. In interlaced and interlace-sync mode, VSYNC has the same timing as in non-interlace mode at the start of each Even Field (lines 0, 2, 4, etc), but is delayed by half Line Len at the start of each Odd Field (lines 1, 3, 5, etc). (See Figure 3.) 11. VFldStrt Enter the number of HSYNCs minus one between the beginning of VSYNC and the end of Vertical Blanking. 12. VFldStp Enter the number of HSYNCs minus one between the beginning of VSYNC and the beginning of the next Vertical Blanking. 13. FramLen Enter the number of HSYNCs minus one between the beginning of VSYNC and the beginning of the next VSYNC. 14. Descriptor Address Pointer (L) The address of the first Strip Descriptor for the display. After fetching the first descriptor the Display Processor uses the Link Address in the descriptor to fetch the next descriptor. The Descriptor address must be an even byte address. 15. Descriptor Address Pointer (U) The most significant bits of the Descriptor Address Pointer. 16. Reserved field should always be set to zero. 17. ZoomX, ZoomY Enter the x-zoom factor minus one and y-zoom factor minus one for the zoomed windows. The zoom factor can be any integer number between 1 and 64. In the VRAM mode, ZoomX is not used unless additional logic is added. 18. Field Color An 8-bit value indicating the color of the background field to be displayed in the absence of windows. 19. Border Color An a-bit value indicating the color of the border to be displayed inside selected windows. 20. 1Bpp Pad An a-bit value where the upper 7 bits represent the upper 7 bits of video data concatenated to the 1 bit video data from a 1 bit/pixel bitmap. 21. 2Bpp Pad An a-bit value where the upper 6 bits represent the upper 6 bits of video data concatenated to the 2 bit video data from a 2 bit/pixel bitmap. 22. 4Bpp Pad An a-bit value where the upper 4 bits represent the upper 4 bits of video data concatenated to the 4 bit video data from a 4 bit/pixel bitmap. 23. CsrStyle:S(1) X(1) T(1) CSt(2) CSC(2) CsrPad The Cursor Mode Register. The Cursor Pad is an 8-bit value where the upper 7 bits are the higher 7 bits for the cursor color. Cursor Style: S is the size bit. If S is 0 an 8 x a pixel cursor will be displayed. If S is 1, a 16 x 16 pixel cursor will be displayed. X is the CrossHair Mode bit. If X is 0, a block cursor will be displayed. The pattern for the cursor is specified in the Cursor Pattern registers. The cursor hot-spot is at the top-left of the cursor block. If X is 1, a cross hair. cursor will be displayed. Its hot-spot is at the center of the cross, and it will stretch the full height and width of the display. T is the Transparent Mode bit. If T is 0, the cursor is opaque. Its forground color is determined by the concatenation of the cursor padding bits (7 MSB's) with 1. The background color is determined by the concatenation of the cursor padding bits with 0. If T is 1, the cursor background reverts to whatever bitmap data is. being displayed "behind" the cursor. CSt is the Cursor Status. The code to be output onto the Window Status outputs while the Cursor is being displayed. . 10-26 inter 82786 CSC is the Cursor Status Control (2 bits). The cursor status may be output whenever the cursor foreground color is being output, whenever the cursor background color is being output, or whenever the cursor block is active, whether it is displaying background color or foreground color or transparent pixels (useful for inverse video), or else the cursor status may default to the current Window Status. The code is shown in the Display Control Register Block. 25. CsrPos Y This is the Cursor Y-Position Register-the position of the cursor hot-spot relative to the beginning of the frame (the beginning of the previous VSYNC). Enter the value minus one. 26. CsrPatO:F These 16 registers contain the pattern to be displayed as a cursor. CsrPatO is the top row of the cursor, and the MSB is the left bit of the cursor. For an 8 x 8 cursor, the cursor pattern used is the higher byte of the first eight cursor registers. CsrPad: Cursor padding bits. 24. CsrPos X This is the Cursor X-Position Register-the position of the cursor hot-spot relative to the beginning of the line (the rising edge of the previous HSYNC). Enter the value minus 2. (HSYNCSTRT) I HSYNCSTP HFLDSTRT HFLDSTP I I L1NELEN I :.--....:..1- - . - : . . - - - - - - - - - - - - ' - - - - - 11 (VSYNCST,RT) HSYNC~ BLANK (HORIZ) - VSYNSTP ; - - - - - - - - - - - - - ; - - - - VFLDSTRT ACTIVE DISPLAY PERIOD - VFLDSTP '--_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _-1_ FRAME LEN 231676-3 Figure 3. Timing Parameters NOTE: In slave video mode, at least a 1-line vertical front porch and a 7-line vertical back porch are required. Windows The CPU creates Strip Descriptors in memory that describe windows for the Display Processor. The Strip Descriptors are organized as one Descriptor per strip of window segments (tiles) as shown in Figure 4. Each Descriptor contains information for the tiles within that strip in the order they are displayed on the screen (left to right). The Descriptor for a particular strip must be contiguous in memory. The Strip Descriptors for several strips are linked to each other in the order they are displayed (top to bottom). The linking is done through the Link to Next Strip Descriptor parameters in each Descriptor, which points to the following Descriptor. The Descriptor for the first strip is accessed during the VBlank interval, using an address specified by the Descriptor Address Pointer, one of the Display Control Register pairs. The Strip Descriptor consists of a header followed by one or more Tile Descriptors. The header and Tile Descriptors must occupy one contiguous block in memory. 10-27 intJ 82786 The format of the Window Strip Descriptors is: 15 14 13 12 11 Header C 1st Tile Descr. T B L R L R I 7 6 5 4 3 2 Z PC Bitmap Width Mem Start Address (L) Mem Start Address (U) Bpp I StartBit Fetch Count (bytes - 2) I I WSt 0 Stop Bit I WSt I B 8 Number of Lines in Strip-1 Link to Next Strip Descr. (L) Link to Next Strip Descr. (U) Number of Tiles in Strip-1 Bitmap Width Mem Start Address (L) Mem Start Address (U) Bpp I StartBit Fetch Count (bytes - 2) 2nd Tile Descr. T 9 10 I I F Stop Bit PC IZ IF etc ... NOTE: The first tile of any scan line must be greater than 1 pixel. STRIP 1 TILE 1 STRIP 2 TILE 1 STRIP 3 TILE 1 -- -- - STRIP 4 TILE 3.3 TILE 2 1 TILE 2 TILE 1 -- -STRIPS TILE 3 TILE 2 TILE 4 -TILE 3 TILE 1 231676-26 Figure 4. Display Shows Strips and Tiles with Two Overlapping Windows The Strip Descriptor Header is programmed with values for the number of display lines minus one and the number of tiles in the strip minus one. There may be any number of lines in a strip, up to the number of lines on the display (within their restrictions imposed by zoom, if used). The first VRAM strip must be at least 2 lines. In DRAM mode there may be up to 16 tiles within a single strip. In" the VRAM Mode the first tile is used to load the VRAM shift register, leaving up to 15 tiles to be used by the Display Processor. The header also contains Link to Nex1 Strip Descriptor parameters. NOTE: You must only define in the strip descriptors the number of scan lines that will actually be displayed. 10-28 intJ 82786 The C bit (the most significant bit) in the Number of Tiles in Strip parameter tells the DP to color the display area following the current strip with FldColor data or link to the next strip. If the C bit is set to one, the DP colors the remainder of the display with the background color defined in the FldColor Register of the Display Control Register Block. If the C bit is zero, the DP links to the next strip. Each Tile Descriptor contains the following parameters: 1. Bitmap Width-the width of the bitmap in bytes. This must be an even byte address. Bitmap Width is added to the Memory Address for each scan line in the window (each HSync period within the strip) to get the start address of the next display line (if y-zoom inactive or counted out). In case of interlaced displays, the Memory Address is incremented by twice the bitmap width. In the VRAM Mode, the bitmap width of the first tile must be a power of 2 and must be less than the maximum width of the VRAM shift register. 2. Memory Start Address-the memory address for the window. This is an even byte address, corresponding to the address of the first word of bitmap data for the window tile (top left corner). In the VRAM mode the start address for the first tile must guarantee that the entire scan line is contained in a single row of the VRAM. 3. Bpp-The number of bits/pixel in the current window-must be programmed to .1, 2, 4, or 8 in the normal mode. In the VRAM mode this field should be zero. 4. StartBit-The bit position in the corresponding memory word for the first bit of the first pixel in the window. Gives bit resolution to the Memory Start Address (and pixel resolution to the start of the window). In the normal mode this must be programmed to be consistent with the Bpp defined for that window. In the VRAM mode, this must be programmed to zero for the first tile. 5. StopBit-The bit position in the corresponding memory word for the last bit of the last pixel in the widow. Gives bit resolution to the window width. In the normal mode this must be programmed to be consistent with the Bpp defined for that window. An illegal value will result in incorrect display. In VRAM mode, this must be programmed to zero for the first tile. 6. Fetch Count-In the DRAM mode, this specifies the number of bytes minus two from the bitmap to be fetched for each scan line in the current window tile. This must be an even quantity. The value programmed in this field is 2 less than the number of bytes to be fetched rounded off to the next higher even number. In the VRAM mode, this must be programmed to zero for the first tile. 7. TBLR-Border Control Bits-When a bit is set to one, it turns on the border on Top, Bottom, Left or Right of window tile. This is a four bit field with one bit controlling each border. The most significant bit controls the top border and the least significant bit controls the right border. All four bits must be programmed to zero for the first tile in VRAM Mode. 8. WST-Window Status (2 bits)-The code to be presented on the Window Status pins while the window is being displayed. 9. PC-IBM PC Mode-Indicates that this window is being displayed from a bitmap created in IBM PC format. The Display Processor supports the IBM Color Graphics Adapter bitmap format in which the least significant byte of a word appears on the left of the most significant byte on the screen as opposed to the 82786 format in which the least significant byte appears to the right of the most significant byte. Also, the 2-bank and 4-bank bank oriented bitmaps used in the PC and PCjr systems are supported. These modes enable bitmaps created by IBM PC or PCjr (or compatible) systems to be upward compatible with 82786 displays, with the PC format bitmaps being displayed either as the whole screen, or as windows on a screen together with 82786 created bitmaps. The PC mode bitmaps can be zoomed or used with interlaced or accelerated displays. In the VRAM mode, this field must be programmed to zero for the first tile. Note that although the Display Processor can display bitmaps created in these formats, the Graphics Processor always draws bitmaps in 82786 format. The vertical mapping of IBM format bitmaps is restricted in that the Memory Start Address of an IBM format window must be in the first of the 2 or 4 banks. The coding for IBM PC mode is given below: 00 01 10 11 ~ ~ ~ ~ 82786 Mode Swapped Byte Mode Swapped Byte, 2 banks' Swapped Byte, 4 banks' 'Not supported in Interlaced mode. Bitmap formats in 82786 and PC Modes are shown below: Pixel # (from left as displayed on screen): o1 234 567S9101112131415 MOSd2::~ #H1++++019IsI71615141312111 01 10-29 p~~~de 171615141312111 OH1++++019I sl inter 82786 ister. The format of the Display Processor Status Register is: ADDRESS 7 6 5 4 3 2 1 0 10. Z-Zoom-This bit if set, indicates that in the normal display mode the window is to be zoomed using. the zoom parameters programmed into the ZoomX and ZoomY registers. 11. F-Field-This bit if set, indicates that the window tile is background field. In the normal mode the field color is displayed for the window. The number of pixels of Field to be displayed should be programmed into what would normally be the Bpp, StartBit, StopBit fields. This bit must be set to zero for a the first, tile in the VRAM mode. BASE + 48 hL!F_R..L.I!R_C_DL!--L!F_M_T!LB_LK.,L!E_V...JN!L-0_DD..L.!E_C....JL! Display Processor Status Register The functions of each bit, and the action taken in the case of exceptions is described below: FRI-Frame Interrupt. This bit is set every n frames, where n is a value between 1 and 256 loaded into the Frint Register. This may be used, for example, for timing in animation applications, or to time blink rates. If the Strip Descriptor list causes a window to be displayed that extends beyond the active display area, then only the upper left hand portion of the window is displayed and the rest of it is truncated. RCD-Reserved Command. This bit is set if the Display Processor does not recognize the Opcode it has been instructed to execute. The Display Processor will not execute the command. In interlace mode, in order to maintain a line resolution on vertical positioning of windows, a doublelength Descriptor Table must be used. The first part contains window position information for the even lines, the second part for the odd lines. Also note that in interlace mode, one frame takes two fields to display. Command execution occurs at frame boundaries, not field boundaries, so the instruction execution frequency will typically be 25/30 Hz instead of the non-interlaced 50/60 Hz. Reserved Initialization The Display Processor is reset during the main 82786 reset process. Upon reset it enters a well defined reset state described below: 1. Any command execution is immediately halted. 2. Parameter, Descriptor, or Display Data fetches are terminated. 3. Display Outputs VDATA7:0 are all reset to default video. 4. HSync, VSync, Blank are tristated (Display Processor defaults to Slave Operation). These stay tristated until the first lOADJll instruction. 5. Display Processor Status Register is cleared. 6. Display Processor Interrupt Mask to set to all 1 's (all interrupts disabled). 7. ECl bit is set to 1. Display Processor Interrupts, Status Register and Exception Handling The Display Processor Status Register is an 8-bit memory (or I/O) mapped register which indicates the current status of the Display Processor, and allows the generation of interrupts depending on the state of individual bits. Interrupts may be masked off using the Display Processor Interrupt Mask Reg- FMT-FIFO Empty. This indicates that the Display FIFO has underrun. This forces an End of Line condition and the rest of the Display Line will display the FldColor defined in the Display Control Register Block. At the beginning of HBlank, the Display Processor uses the current Descriptor to start a new Display Data fetch. A FIFO underrun therefore does not necessarily mean that the whole field is lost-just the current display line is corrupted. BlK-Blank. This indicates that the BLANK pin is currently active for Vertical Sync. EVN-Even Field. In Interlace and Interlace-Sync modes, this bit is set during the even field (Field 1). ODD-Odd Field. In Interlace and Interlace-Sync modes, this bit is set during the odd field (Field 2). The Even and Odd status bits assist in synchronizing the 82786 with other interlaced display systems. ECl-End of Command List. This is set at the same time the ECl bit in the Opcode Register is set, and allows the Display Processor to inform the CPU as soon as it has completed execution of a command. In loop Mode, the ECl bit is not set. It will be set upon exiting loop Mode. All active interrupts are OR'ed together to drive a single 82786 interrupt line. Once set, the interrupt line remains active until the Status Register is read. The active bits in the Status Register (bits with 0 in the corresponding bit in the Interrupt Mask) are reset to zeroes after the Status Register is read. 10-30 inter 82786 Pin Conditioning Test Modes VOL/VOH The 82786 implements several special modes of operation beyond normal use to aid in debug, characterization and production testing. When RESET goes inactive, the RD and WR pins are sampled. If either of these two pins is low, one of the special test modes is enabled according to the state of RD, WR and MIO pins. The 82786 has the capability to bring all its output pins to a constant logic high or low state. This feature can be used for testing the output buffers on the 82786. A 16-bit Linear Feedback Shift Register signature analyzer is placed on the Video output bus to compress the video data stream into a single signature that is output onto the Video Data pins during Blank time. The signature is also readable by the CPU at the end of a Frame using the Dump_Reg command at Register 10 3D. This signature analyzer output onto the VDATA lines is activated in DP Test Mode. Once in DP Test Mode, the signature Analyzer is enabled by setting bit 14 of the DP Opcode register to 1. The 82786 has the ability to tristate all of its 1/0 and output pins to effectively isolate the 82786 from any connected circuitry. This allows testing a completely assembled PC board by isolating the 82786. leakage on all 1/0 pins can also be tested in this mode. The 82786 implements three global pin conditioning features. Specifically, the 82786 can drive all output and 1/0 pins high, or low, or can tristate all pins. The test modes are' activated according to the following table: Storage Temperature Operating Temperature RD# WR# MIO 0 0 0 0 0 1 Reserved 0 1 0 DPTest Mode Drive Output Pins High Tristate Feature 82786 PARAMETRICS ABSOLUTE MAXIMUM RATINGS Voltage Vee-Vss Voltage on Other Pins - 65·C to + 150·C O·Cto 70·C -0.5Vto +6.5V -0.5VtoVee + 0.5V Mode Reserved 0 1 1 1 0 0 Drive Output Pins low 1 0 1 Tristate Pins 1 1 X Normal Operation NOTE: All timing numbers in the parametriC section are preliminary and are subject to change. D.C. CHARACTERISTICSTA = O·to 70·C, Vee = 5V ±5% Parameter Notes Min Max Units VILe Input low Voltage -0.5 +0.8 V ClK Input VIHe Input High Voltage +2.0 Vee + 0.5 V ClK Input Symbol VILve Input low Voltage -0.5 +0.8 V VeLK Input VIHve Input High Voltage +3.9 Vee + 0.5 V VeLK Input VIL Input low Voltage -0.5 +0.8 V All Other Pins VIH Input High Voltage +2.0 Vee + 0.5 V All Other Pins VOL Output low Voltage +0.45 V All Pins IOL = 2.0mA VOH Output High Voltage - V All Pins IOH = - 400 p.A +2.8 10-31 82786 D.C. CHARACTERISTICS TA = Symbol Min - ,III Input leakage Current ILO Output leakage Current Icc Power Supply Current A.C. CHARACTERISTICS T A = = 0° to 70°C, VCC Parameter - 0° to 70°C, Vcc = 5V ± 5% (Continued) Max Units Notes ±1 p.A o _ 231676-14 10-41 82786 DRAM SIGNALS-NON-INTERLEAVED FAST PAGE MODE WRITE ClK RAS X \~------------------------------------------------------- CASO DRA9:0 WEL, WEH 015:0 ROW ADDRESS COLUMN ADDR n+2 COLUMN ADDRESS n -------------'1<- ------------{:::::J ',,"(0) J,..----x:: 231676-15 DRAM SIGNALS-INTERLEAVED FAST PAGE MODE READ ClK RAS X \~----------------------------------------------------- CASO CAS1 DRA9:0 ROW ADDRESS COLUMN ADDRESS n BENO BEN1 TC~C D15:0 TOAC(i) ___________~~r---------~.--~~IT~ ____ ___ «XI TCAA ~ 231676-16 10-42 intJ 82786 DRAM SIGNALS-INTERLEAVED FAST PAGE MODE WRITE CLK RAS \~------------------------------------------------------ X CAS1 CASO DRA9:0 ROW ADDRESS COLUMN ADDRESS n WEL. - - - - - - - - - - - - - - - - - - - - - - - " ' ~----------------------H---~-------- WEH D15:0 -----------------------<======J '-__ .I ' - _ - - - ' 231676-17 DRAM SIGNALSNON-INTERLEAVED PAGE MODE AND FAST PAGE MODE VRAM DATA TRANSFER CYCLE CLK RAS X CAS X DRA9:0 I , , X -- TDTHj COLUMN ADDRESS ROW ADDRESS ~-}CDHj ~DTR- TDLS-li. TRDHN DT1:0 I y TDTC - 231676-18 10-43 infef 82786 INTERLEAVED FAST PAGE MODE VRAM DATA TRANSFER CYCLE - ClK OTO, on - LJU- LrLr LrLr Lr Lr LrU-II tTOlSf- TRDHF TOTR RAS CASO / \ \ CAS 1 - DRAg: 0 ... t tx 231676-28 INTERLEAVED PAGE MODE VRAM DATA TRANSFER CYCLE - LJLrU- Lr LrLr LILr LJ LrII ClK OTO, on i. . - TRDHP 1\ RAS -TOTR -1 \ CASO CAS 1 DRAg: 0 TDlS~ - \ - J... 231676-29 10-44 82786 ENTERING AND LEAVING MASTER MODE 01 02 02 01 02 01 02 HREQ HlOA MEN ____________ ~ ____J __________________-+~J RD,WR, A21 :0, MIO,BHE -----------------------C=J ~=l====)-------- D15:0 ---------------~ p~~§:}------231676-19 MASTER MODE TIMINGS 02 01 02 01 02 01 02 01 02 01 02 ClK RD,WR A21:0 READ CYCLE· - - - - - - - - - - - TMB D15:0 WRITE -------~,r_----CYCLE D15:0 TM9 Jt----i _ __ -------------------- HC3) until the CPU has written the correct values into DRAM. The timings listed assume a 125 nsec clock (8.0 MHz) at XTALIN. Most important to the initialization procedure are the reset values of the Register and Data Windows: After the Register Segment is completely initialized, CPU sets the UCF bit by writing to RO. RO 011 00000 011 1 0 0 1 6073H The VSDD would now update its on-chip control registers with the data programmed by CPU in the Register Segment. The CPU then programs the display data through the data window,. After the data has been written into memory, the CPU enables the. display by setting DEN bit. RO 011 00000 011 0 1 607BH Register Window Base Address: 00400H Data Window Base Address: (undefined) INITIALIZATION PROCEDURE The first access must be a write cycle to Register RO at 00400H. In the first write cycle the CPU should program the DRAM configuration bits DSI, DSO and DOF for 64K x 4 DRAMS employed in this design. This first write cycle should leave DEN and UCF at O. UCF (Update Control Flag) should be left clear till the The register segment is programmed as follows to obtain a display shown in Figure 4. The VSDD reads the register segment on every frame to update its on-chip registers. The reader should refer to the user's manual for description of the bits in the register segment. See Appendix A for horizontal and vertical sync constants. The VSDD DRAM is word addressable while the CPU address space is byte addressable. 10-53 inter AP-268 0,0 96 400 ~~~~~~~~~------------------------------------------------------------~ 160,20..--_ _ _ _---,288,20 VIDEO STORAGE AND DISPLAY DEVICE 82716 INTEL 160,70 288,70 OBJECT 3 40,115 L..J Fl.· .. ·.·•·•·.· 56,134 OBJECT 1 OBJECT 2 200 231679-3 Figure 4. Display Screen REGISTER SEGMENT OOOOH DRAM WORD ADDR OOOOOH 0002H 00001H R1 0004H 00002H R2 CPU ADDR REGISTER CONTENTS COMMENTS RO o1 1 00000 0 11 11 0 11 Duty Cycle 011 Blink Rate 00000 DS1 DSO DOF 011 HRS 1 DEN 1 SAB 0 DEI 1 UCF 1 1010 010 00 00101 0 0 Char height 1010 INL 0 MAS 1 SM 0 TMM, TMS 00 EVC 0 PCE 1 FAE 0 RE 1 PSA 0 PRE 0 0000 0000 00000 11 0 RWBA OOOH TF2 TF1 11 ME 0 607BH 50% 7.5 Hz for 60 Hz frame rate 64Kx4 DRAMs 640 Pixels horizontally Display Enabled Fast DRAM Digital Outputs on RGB & OVR pins Update all the registers on every frame A414H 10 Scan lines Non interlaced HSYNC, VSYNC are outputs Non composite SYNC mode Twin mode is disabled CKIO is O/P. Video Clk derived from XTALIN. Priority counter enable Use RDY as ready signal CPU elm read the DRAM GCLK = 1/16XTALIN Disable pipeline read 0006H RWBA = 0 Digital pixel codes No margin 10-54 infef AP-268 REGISTER SEGMENT (Continued) REGISTER CONTENTS COMMENTS 0006H DRAM WORD ADDR 00003H R3 0008H 00004H R4 OOOAH 00005H R5 0000 00 0101000 000 DWBA 00000 Screen 0101000 111 Boundary 1 0000 00000000000 Length Mask 10000 0000 0000 0000 0000 Data Segment Base S16-S12 00000 Bank Select Bits o0 0000 0000 0000 1010 PAQ 1010 0140H A 16 Should be low = Rt edge of the screen is at X=327 8000H 64K byte data window OOOOH CPU ADDR OOOCH 00006H R6 OOOEH 00007H R7 0000 0101 0000 0000 ODTBA 0500H 0010H 00008H R8 0012H 00009H R9 0000 0000 0010 0000 0010H ATBA 0000 0001 1000 0000 CTBA 0180H 0014H OOOOAH R10 0000 0000 0010 0011 CGBAO 0010 CGBA2 0011 0016H OOOOBH R11 0000 0000 0010 0000 0018H OOOOCH R12 000001 HCO VCO 000100 HC1 VC1 011101 HC2 VC2 100000 001AH 001CH 001EH OOOODH OOOOEH OOOOFH R13 R14 R15 BankO OOOAH CPU is allowed 10 DRAM accesses during line building 0500 H Object descriptor table starts at 0500H in bank 0 0010 H Access table starts at 001 OH in bank 0 0180H The color table is not used in this design. The space is reserved for future use. 0023H Char gen 0 starts at 2000H in bank 0 Char gen 1 starts at 3000H in bank 0 Access table address counter = access table base address (initially) = 0010H 0000000010B HSYNC Width = 4 p.s VSYNC Width = 198 p.s 0000100100B AHZ Start = 10 p.s AVZ Start = 2.5 ms 0011101100 0011110100 NOTE: See Appendix I on how to program registers R12-R15. 10-55 AHZ Stop = 60 p.s AVZ Stop = 16.17 ms Hori. sweep rate = 66 p.s Vert. sweep rate = 16.67 ms AP-268 3.0 THE DATA SEGMENT The actual object data and the different tables are stored in the data segment by the 80186. There are 5 tables in the data segment: The access table, the object descriptor table, the color lookup table and two character generators. Since digital outputs are used to drive the monitor in this design, the color lookup table is left blank. 3.1 Access Table The access table contains the vertical start and end locations of each object. The table begins at the locations designated by access table base address register, R8, in the register bank. Each entry in the table contains 16 bits--each bit representing one object. Bit number 0 has the lowest priority and bit number 15 the highest. The first entry in the table corresponds to the topmost line on the screen and so on. Each entry indicates to the VSDD which objects are to be present on this line of the display. If a bit is set (1), then there is no change in the objects display status; that is, if the object did not appear on the previous line, it will also not appear on this line. If the object's access flag is set to zero, then the display status is reversed from what it was on the previous line. The VSDD assumes that at the beginning of a frame all objects are turned off (1 's). The access table for the screen in Figure 4 is shown in the following pages. The screen has 400 x 200 resolution. There are 200 entries in the table for 200 vertical lines on the screen. Object 0 starts on line 1 and ends at line 75. Bit 0 is set to zero at line 1 to tum the object 0 on and again set to 0 at line 76 to tum the object off. Note that the 80186's address space is byte addressable and the VSDD's space is word addressable. Ib151b141b131b121b11 Ib10lb91bBlb71b61b51b41b31b21b1 IbOI Figure 5. Access Table Word ACCESS TABLE CPU ADDR DRAM WORD ADDR 0020H 0022H 0024H 0026H 0028H 002AH 002CH 002EH 0030H 0032H 0034H 0036H 0038H 003AH 003CH 003EH 0040H 0042H 0044H 0046H 0048H 004AH 004CH 004EH 0050H 0052H 0054H 0056H 0058H 00010H 00011 H 00012H 00013H 00014H 00015H 00016H 00017H 00018H 00019H 0001AH 0001BH 0001CH 0001DH 0001EH 0001FH 00020H 00021H 00022H 00023H 00024H 00025H 00026H 00027H 00028H 00029H 0002AH 0002BH 0002CH ACCESS FLAGS b b b b b 15 14 13 12 11 b 10 bbbbbbbbbb 9 8 7 6 5 4 3 2 0 0 1 Line 1 1 1 .1 Line 10 1 o 1 10-56 Line 20 Turn on the character object inter AP-268 ACCESS TABLE (Continued) CPU ADDR 005AH 005CH 005EH 0060H 0062H 0064H 0066H 0068H 0070H DRAM WORD ADDR ACCESS FLAGS b 15 b 14 b 13 b 12 b 11 b bbbbbbbbbb 10 9 B 7 6 5 4 3 2 0 Line 30 0002DH 0002EH 0002FH 00030H 00031 H 00032H 00033H 00034H 00035H Line 37 Line 38 1 1 1 1. 1 1 o 00B4H 0005AH 10-57 Line 71 (Turn off the character object) Line 74 AP-268 ACCESS TABLE (Continued) CPU ADDR DRAM WORD ADDR 00B6H 0005BH b 15 b 14 b 13 b 12 b 11 ACCESS FLAGS b b b b b 10 9 8 7 6 b 5 b 4 b 3 b 2 b b 0 o 1 Line 76 (Turn off Obj.O) 1 1 1 1 OOFEH 0007FH Line 111 10-58 inter AP-268 ACCESS TABLE (Continued) CPU ADDR DRAM WORD ADDR 00100H 00080H ACCESS FLAGS b b b b b b 15 14 13 12 11 10 bbbbbbbbbb 9 8 7 6 5 4 3 2 0 Line 112 o Line 115 (Turn on Obj. 1) Line 120 Rectangle Object #1 Line 125 1 1 Line 130 1 1 o .1 Line 134 Line 135 (Turn off Obj. 1) 1 o 1 Horizontal Line Object #2 o Line 140 (Turn on Obj. 2) Line 142 (Turn off Obj. 2) Line 151 Up to 200 Lines 10-59 AP-268 ACCESS TABLE (Continued) CPU ADDR DRAM WORD ADDR b b b b b ACCESS FLAGS b b b b b b b b b 15 14 13 12 11 10 5 4 3 2 9 8 7 6 b b 0 1 1 1· 1 1 1 1 Line 200 10-60 intJ AP-268 3.2 Object Descriptor Table: This table contains a 4-word object descriptor field for each object in the display. The table starts at the location specified by the OBTBA register, R7. This field specifies the base address of the object in the RAM, horizontal position, its width and other attributes. The descriptor fields for bit-map and character objects are shown in Figure 6. Bitmapped I I I I I N: qurrentlObjelct EntrylAddres~ I I I I ~: XO Coprdinatel I I I 0: Object Base Address v:': O~ject yvidth I o I0 I0 I 0 I I I C/B J R1 -' I RO I I N15 i NO HI 015-00 1 0 J 017 J 016 J OBL I BLA J 0 I TOE I C1 I CO LO Character ,Z: SIi5e NO. 1 J I I I IN: Curr~nt Objlect EntfY Add~ess L 0: Object Base Address ~: Obj~ct Wi~th I Y: Slice No. ~11-NOI I I C/B I R1 I RO I I HI 015-00 I I , X}O Coprdinatr I I I I I CRS I PSE I FAD I OBL I BLA I HCR I TOE I C1 I CO LO Figure 6 Objects are rectangular windows on the screen. The object data begins in the display RAM at the object base address specified in the object descriptor field. The length of the data file depends on the objects height, width and resolution. The width is specified in 4-word units by the "W" field. In this design a 4 bits/pixel specification is chosen. Hence, each 4-word unit represents 16 pixels. Objects 0 in Figure 4 is 6 x four word wide, that is 96 pixels wide. The object descriptor field and object data for each of the objects in Figure 4 are as follows: OBJECT 0 DESCRIPTOR FIELD Fill 75 Lines on the Screen with One Color DRAM CPU WORD CONTENTS ADDR ADDR OAOOH 00500H OA02H 00501H 0000011000000000 C/B = 0 R1RO = 11 017,016 = 00 OBL = 0 BLA = 0 TOE = 0 C1CO = 00 0001100000000000 WIDTH: 000110 x OA04H 00502H OA06H 00503H 0000000000 0001 0000 0000 0000 Object base address 0001 0000 0000 0000 Current object entry 10-61 COMMENTS 0600H Bit mapped object 4 bits/pixel Object is in bank 0 No blinking Object is not turned off Non transparent pixels Don't care for 4 bits/pixel 6 four word wide = 96 pixels wide Object starts at the left edge of the screen 01000H 01000H infef AP-268 OBJECT DATA OBJECT 0 OBJECT BASE ADDR = OlOOOH CPUADDR DRAM WORD ADDR 2000H 2002H 2004H 2006H 2008H 202EH PIXEL DATA 01000 01001 01002 01003 01004 01005 01006 01007 01008 01009 0100A 01008 0100C 0100D 0100E 0100F 01010 01011 01012 01013 01014 01015 01016 01017 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 10-62 Line 1 24 Words = 96 Pixels wide @ 4 bits/pixel End of Line 1 AP-268 OBJECT 0 DATA CPU AD DR 2060H DRAM WORD AD DR 01030H PIXEL DATA 8888H 016FOH 016F1H 016F2H 016F3H 016F4H 016F5H 016F6H 016F7H 016F8H 016F9H 016FA 016FB 016FC 016FD 016FE 016FG 01700 01701 01702 01703 01704 01705 01706 01707 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 8888H 2EOE Line 3 Line 75 End of line 75 OBJECT 1 DESCRIPTOR FIELD RECTANGLE 20 SCAN LINES/ 16 PIXELS WIDE CPU ADDR DRAM WORD ADDR OA08H 00504H OAOAH 00505H OAOCH OAOEH 00506H 00507H CONTENTS COMMENTS 00000 11 00 00 00 00 C/B = 0 R1RO = 11 017,016 = 00 OBL = 0 BLA = 0 TDE = 0 C1CO = 00 000001 0000010100 WIDTH = 000001 0600H Bit Mapped Object 4 Bits/Pixel Object in bank 0 No Blinking Object is not turned off Non-transparent pixels Don't care *X = 0000010100 0001 0111 0000 1010 0001 0111 0000 1010 1 Four word wide = 16 Pixels wide Objects starts at X = 20 Object base addr 0170AH Current obj. entry 0170AH 'NOTE: When HRS = 1, unit displacement in X direction moves the object by 2 pixels. Thus the object 1 will start at pixel number 40. 10-63 inter AP-268 OBJECT 1 DATA CPUADDR 2E14 DRAM WORD ADDR 01070H 0170EH ' 0170FH 01710H 01711H PIXEL DATA 7777H 7777H 7777H 7777H 7777H 7777H 7777H 7777H 01756H 01-757H ,01758H 01759H 2EB2 7777H 7777H 7777H 7777H Line 1 Line 2 Line 2 Line 2 Line 2 Line 20 OBJECT 2 DESCRIPTOR FIELD HORIZONTAL CPU ADDR OA10H OA12H OA14H OA16H 2 SCAN LINES/ 240 PIXELS WIDE DRAM WORD' .ADDR 00508H 00509H 0050AH 0050BH CONTENTS COMMENTS 0000 011 00 00 00 00 001111 00001 00 11 0 WIDTH = 001111 Same as obi 0 and obi 1 X = 38 0001 0111 0110 0000 0001 0111 01100000 10-64 15 four word wide = 250 pixels wide Obi base addr. 01760H Current obi entry = Obi base address (Initially) inter AP-268 OBJECT 2 DATA CPU AD DR DRAM WORD ADDR PIXEL DATA 01760H 5555H 5555H 5555H 5555H 5555H 5555H 2ECOH Line 1 60 Words 5555H 2FAEH 0179C 5555H 5555H 5555H 01707 5555H Line 2 OBJECT 3 DESCRIPTOR FIELD TEXT 50 SCAN LINES/ 16 CHARACTERS WIDE CPU ADDR DRAM WORD ADDR OA18 0050CH OA1A OA1C OA1FH 0050DH 0050EH 0050FH CONTENTS COMMENTS 1010 1 10 0 0 0 0 0 0 100 Y: Slice No. = 1010 C/B = 1 R1RO = 10 CRS = 0 PSE = 0 FAD = 0 OBl = 0 BLA = 0 HCR = 0 TOE = 1 CICO = 00 000010 0001010000 WIDTH = 000010 X = 0001010000 0001 0111 1101 1010 0001 0111 1101 1010 10-65 Start Slice Number Character Object 8 Pixels/Character Character Generator 0 Monospace Characters 1 Byte/Character No blinking Object is not turned off Don't care Transparent pixels Default color bits 2 four word wide = 16 characters wide Object starts at X = 80 Object Base Address 017DAH Current Object Entry 017DAH intJ AP-268 OBJECT 3 DATA CPUADDR 2FB4 2FC4 DRAMADDR ASCII CODE 0170A 01708 0170C 01700 0170E 0170F 017EO 017E1 017E2 017E3 5620 4449 4F45 5320 4F54 4152 4547 2020 2020 2020 2020 4E41 2044 2020 2020 2020 4420 5349 4C50 5941 4420 5645 4359 2045 2020 2020 2020 2020 3238 3137 2036 2020 2020 2020 2020 4E49 4554 204C 2020 2020 2F04 017EA 2FE4 017F2 2FF4 017FA 10-66 Line 1 Line 2 Line 3 Line 4 Line 5 intJ AP-268 CHARACTER GENERATOR 0 The pixel data for characters are stored in one of 2 character generators in the display RAM. Character generator 0 is used in this design. The base address of character generator 0 as obtained from RIO, is 02000H in bank O. Character height as defined in Rl is 10 scan lines. The character set 0 consists of 10 blocks of 256 words each. Block No.1 contains the 1st slice of each of 256 characters, block 2 has the 2nd slice of all the 256 characters and so on. In this example, 26 alphabets and 10 numerals are defined. The VSDD addresses character generator as shown in Figure 7. Individual slices are addressed by concatenating the four bits of the character generator base address with the slice number Z and the ASCII code itself. Slice number 0 is the bottom scan line for the character and slice number H -1 is the top line. Each slice is encoded as a sequence of pixel bits. If a pixel bit is 1, then the pixel is given the foreground color. If the bit is 0, the pixel is displayed in background color. This is shown in Figure 8. Figure 9 shows how the pixels are encoded for character "F" (ASCII code = 46H). CHAR GEN 1 CHAR GEN BASE ADD R 2S6 ' H BASE ADDR 2S6' H SLICE H-1 a t-------1 SLICE H-1 0 0 0 SLICE 2 SLICE 2 SLICE 1 SLICE 1 BASE ADDR 2S6'H SLICE SLICE a a BASE ADDR : BASE ADDR: SLICE INFORMATION 256 WORDS (ONE FOR EACH ASCII CODE) 1 REGISTER SEGMENT R10 t SLICE NO • ...L. t--------I t--------I OBJECT 1 DESCRIPTOR DATA H CHARACTER HEIGHT 231679-4 Figure 7. Addressing Character Slices 10-67 inter Ap·268 OBJECT 1 DESCRiPTOR SLICE WORD ~ BOND l .I Cl I CO I 0 I bl I, \ 231679-6 TO PIXEL PROCESSOR b) FAD = 1 231679-5 a) FAD = 0 Cl CO 0 O-BGND Color Cl CO 0 l-FGND Color Figure 8. Character Generator Pixel Construction DRAM ADDRESS SLICE 9 SLICE 0 PIXEL BITS P7 P6 P5 02946H 00000000 0 0 0 02846H 00000000 1 1 0 02746H 00000000 0 0 0 02646H 00000000 0 0 0 02546H 00000000 0 0 0 02446H 00000000 0 0 0 02346H 00000000 0 0 0 02246H 00000000 0 0 0 02146H 00000000 0 0 0 02046H 00000000 0 0 0 Character Width = 8 Pixels Character Height = 10 Scan Lines P4 0 1 0 0 1 0 0 0 0 0 P3 0 1 0 0 1 0 0 0 0 0 P2 0 1 1 1 1 1 1 1 0 0 P1 0 1 1 1 1 1 1 1 0 0 PO 0 0' 0 0 0 0 0 0 0 0 CPU ADDRESS HEX DUMP 0528CH 0508CH 04E8CH 04C8CH 04A8CH 0488CH 0468CH 0448CH 0428CH, 0408CH OOOOH 007EH 0006H 0006H 001EH 0006H 0006H 0006H OOOOH OOOOH = 02000H Character Generator Base Address , NOTE: The leftmost pixel corresponds to the LSB in the slice word. Figure 9. Bit Storage for Character "F" The 80186 used in this design is resident on a single board computer known as SDV-186 board. This board is available from Red River Technology, Inc. in Addison, Texas. The VSDD board is connected to the 186 board via expansion connectors. The memory maps for the SDV-186 board and the VSDD are shown on the following pages. The CPU address space from 60000H-6FFFFH is used for 64K data window. This data window maps onto the data segment in the .VSDD's memory space. 10-68 intJ AP-268 VSDD MEMORY MAP VSDD DRAM AD DR 00000 CPUADDR 60000 RO CONTROL REGISTERS 6001E 60020 OOOOFH R15 SCAN LINE 0 FLAGS ACCESS TABLE 601BOH SCAN LINE 200 FLAGS 6022A BLANK 602FE 60300 COLOR 0000 00180H COLOR LOOKUP TABLE 6031E COLOR 1111 60320 BLANK 603FE 00500H 60AOO OBJECT DESCRIPTOR TABLE 60A18 BLANK 61FFE 01000H '62000 OBJECT DATA 63FFE 02000H 64000 CHARGENO 65FFE 03000H 66000 CHAR GEN 1 67FFE 68000 BLANK 10-69 AP-268 Memory Mapaf the SDV-186 Board 00000H-003FFH INTERRUPT VECTORS 00400H-0076FH PROGRAM DATA 00770H-007FFH STACK 00800H-00FFFH MEMORY 01 000H-1 FFFFH VACANT 20000H -3FFFFH VACANT LCSI 40000H-4FFFFH 64-K MEMORY MCSOI 50000H-5FFFFH 64-KMEMORY MCS11 60000H-6FFFFH 64-K MEMORY (VACANT) MCS21 70000H-7FFFFH 64-K MEMORY (VACANT) MCS31 80000H-FBFFFH VACANT FCOOOH-FFFFFH MONITOR CODE 10-70 UCSI AP-268 APPENDIX A PROGRAMMING HORIZONTAL AND VERTICAL CONSTANTS FOR IBM MONITOR The constants will be programmed for a resolution of 400 x 200 at 60 Hz, non-interlaced mode. 60 Hz givc;:s a frame period of 16.67 ms. For IBM Color Monitor, vertical blanking = 3 ms. Active Vertical zone = 16.67 - 3 = 13.67 ms. There are 200 lines in one frame. .. Line Time 13.67 "'S = 200 = 68.35 Horizontal Blanking = 16 "'S Active Horizontal zone = 68.35 - 16 = 52.35 ",S . 1 HOrizontal Sync Frequency = Line Time 68.35 = 14.6 kHz Pixel CLOCK PERIOD = Active horizontal time no. of pixels/ scan line = 52.35 "'S = 130.1 ns 400 1 PIXEL CLOCK = - - = 7.7 MHz 130.1 We will use a pixel CLK of 8 mHz. As EVC = 0, System CLK is also 8 MHz. Horizontal Blanking for the monitor = 16 /Ls. This blanking time includes the front porch, sync width and the back porch. 10-71 AP-268 RASTER TIMINGS HSYNC - - - , i (VSYNC) L...J JL U HCO - 1 -I(VCO) HC3 - - - - - - ( V C 3 ) -------~. (A~~~"---+-----,I"""-------"'I--FP· I--(,~g:)--l BP-.j---- LBLANKING I TIME. ----I -------.J.! (VC2) 1---'-----'_ _ _ _ HC2 231679-7 HORIZONTAL CONSTANTS HC2· = 60 p's For IBM color monitor, Hsync width = 4 JLs HC2 = 011101B HC3 = 66 p's Horizontal blanking = 16 p.s = 30 GCLK Periods 33 GCLK Periods HC3 = 100000B Assume: FP = 6 p.s VERTICAL CONSTANTS BP = 6 p.s Vertical Blanking HCO = 4 p's HC1 = 4 HC3 + 6 = 10 p.s + = 52.3 = Line Time = 66 p.s 10 = = + HC1 For IBM Monitor 62.3 p's VCO = VSYNC Width = 198 p's 68.3 p's = 3 Line times For 8 MHz Video Clock, the period is 125 ns. NOW, PSA = VCO = 0000000010B 0 Assume, FP = 0,5 ms GCLK PERIOD = 16 X 125 = 2000 ns = 2 p's BP = 2.3 ms VC1 = VCO HCO - HC3 are programmed in terms of GCLK = 3 ms = Line Time = 33 GCLK Periods HC2 = Active Horizontal Time HCO = 2 GCLK PERIODS = = 4 p.s VC1 HCO = 000001 B = + BP 0.198 + 2.3 = .2.5 ms = 0000100100B VC2 = Active vertical time NOTE: HCO- HC3 and VCO- VC3 values are offset by 1, i.e. if HCO is 2, then time programmed is 3 GCLK periods. HC2 and HC3 had to be tweeked to obtain a steady display on the screen. The following values give a flicker-free display. HC1 = 10 p's = HC1 = 000100B 5 GCLK Periods 10-72 37 Line times = 13.67 + 2.5 = + VC1 16.17 ms = 237 Lines time VC2 = 0011101100 VC3 = VC3 = 0011110100 Vertical sweep rate = 16.67 ms = 245 Line times inter AP-268 APPENDIX B CHARACTER GENERATOR 0 This character set is located in the VSDD's DRAM in bank O. It starts at 02000H. 26 alphabets, 10 numerals and a blank space are defined here. The ASCII code for the characters are as follows: CHARACTER ASCII NUMERALS ASCII CODE 41H 0 30H A B 42H 1 31H 43H 2 32H C 44H 3 33H D 45H 4 34H E F 46H 5 35H 47H 6 36H G H 48H 7 37H 49H 8 38H I 4AH 9 39H J 4BH K L 4CH M 4DH N 4EH 4FH o 50H P Q 51H 52H R S 53H T 54H 55H U V 56H W 57H X 58H y 59H Z 5AH BLANK SPACE 20H The character set has 10 blocks of 256 words each. All the locations except those corresponding to above 37 characters are blank in the display RAM. They are programmed with O's. The hex dump for the characters is as follows: 10-73 inter AP-268 SLICE 0 DRAM HEX LOCATION DUMP 2020H 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2041 2042 2043 2044 2045 2046 2047 2048 2049 204A 204B 204C 2040 204E 204F 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 205A OOOOOH 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 SLICE 1 DRAM HEX LOCATION DUMP 2120H 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2141 2142 2143 2144 2145 2146 ·2147 2148 2149 214A 214B 214C 2140 214E 214F 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 215A OOOOOH 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 10-74 SLICE 2 DRAM HEX LOCATION DUMP 2220H 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2241 2242 2243 2244 2245 2246 2247 2248 2249 224A 224B 224C 2240 224E 224F 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 225A OOOOOH 003C 007E 007E 003C 0060 003C .003C 0018 003C 003C 0066 003E 0038 001E 007E 0006 0038 0066 003C 003C 0066 007E 0066 0046 003C OOOC 007C 0066 003C 0018 003C 0018 003C 0066 0018 007E CHARACTER BLANK SPACE 0 1 2 3 4 5 6 7 8 9 A B C 0 E F G H I J K L M N 0 P Q R S T U ·V W X Y Z intJ AP·268 DRAM LOCATION HEX DUMP DRAM LOCATION· HEX DUMP SLICES DRAM HEX LOCATION DUMP 2320H 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2341 2342 2343 2344 2345 2346 2347 2348 2349 234A 2348 234C 234D 234E 234F 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 235A OOOOH 0066 0018 0006 0066 0060 0066 0066 0018 0066 0066 0066 0066 006C 0036 0006 0006 006C 0066 0018 0066 0036 007E 0066 0066 0066 0006 0026 0036 0066 0018 0066 0018 007E 0066 0018 0006 2420H 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2441 2442 2443 2444 2445 2446 2447 2448 2449 244A 2448 244C 244D 244E 244F 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 245A OOOOH 0066 0018 OOOC 0060 007E 0060 0066 0018 0066 0060 007E 0066 0006 0066 0006 0006 0046 0066 0018 0060 OOOE 0006 0066 0076 0066 0006 0036 001E 0060 0018 0066 003E 005A 003C 0018 OOOC 2520H 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2541 2542 2543 2544 2545 2546 2547 2548 2549 254A 2548 254C 254D 254E 254F 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 255A SLICE 3 SLICE 4 10-75 OOOOH 006E 0018 0030 0038 0066 0060 003E 0018 003C 007C 0066 003E 0006 0066 001E 001E 0066 007E 0018 0060 0006 0006 0066 007E 0066 003E 0066 003E 003C 0018 0066 0024 005A 0018 003C 0018 CHARACTER SPACE 0 1 2 3 4 5 6 7 8 9 A 8 C D E F G H I J K L M N 0 P Q R S T U V W X Y Z inter Ap·268 SLICE 6 SLICE 8 SLICE 7 DRAM LOCATION HEX DUMP DRAM LOCATION HEX DUMP 2620H 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2641 2642 2643 2644 2645 2646 2647 2648 2649 264A 264B 264C 264D 264E 264F 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 265A OOOOH 0076 001C 0060 0060 0078 003E 0006 0030 0066 ' 0066. 003C 0066 0006 0066 0006 0006 0006 ' 0066 0018 0060 OOOE 0006 007E 006E 0066 . 0066 0066 0066· 0006' 0018 0066 0066 0042' 003C 003C· 0030 2720H 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2741 2742 2743 2744 2745 2746 2747 2748 2749 274A 274B 274C 274D 274E 274F 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 275A OOOOH 0066 0018 0066 0066 0070 0002 0066 0066· 0066 0066 003C· 0066 006C· 0036 0006 0006· 006C 0066 0018 0060 0036 0006 0066 . 0066· . 0066· 0066 0066·. 0066 0066 0018 0066 0042 0042 0066 0066 0060 10-76 DRAM LOCATION. 2820H 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2841 2842 2843 2844 2845 2846 2847 2848 2849 284A 284B 284C 284D 284E 284F 2850 2851 2852 2853 2854 2855 ·2856 2857 2858 2859 285A HEX DUMP OOOOH 003C 0018 003C 003C· 0060 007E 003C 007E 003C 003C 0018 003E 0038 001E 007E 007E 0038 0066 003C 0070 0066 0006 0024 0062 003C 003E 003C 003E 003C 007E 0066 0042 0042 0066 0066 007E CHARACTER SPACE 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K' L M N 0 P Q R S T U V W X Y Z inter AP-268 SLICE 9 DRAM LOCATION HEX DUMP 2920H 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2941 2942 2943 2944 2945 2946 2947 2948 2949 294A 2948 294C 294D 294E 294F 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 295A OOOOH 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000. 10-77 CHARACTER SPACE a 1 2 3 4 5 6 7 8 9 A 8 C D E F G H I J K L M N 0 P Q R S T U V W X Y Z AP-268 APPENDIX C ANALOG OPERATION In the example described in the application note, digital video outputs were used. For analog operation, DEI (digitally encoded color information) bit in register RO is set to O. The on-chip color look table (CLUT) is loaded with 16 entries from the external DRAM. These 16 words of data are stored in the memory starting at color look up table base address. (Register R9). Each entry is 16 bits long-with lowest 4 bits specifying the address of the entry in the CLUT and upper 12 bits specifying the color as shown in Figure 10. Four bit pixel code is used to address the CLUT. The pixel code is matched with the lowest four bits of the CLUT RAM and the pixel is given the color specified by the upper 12 bits. The address entries need not be sequential from 0-15 but they can be random. The color corresponding to address 0010 in the CLUT is reserved for the background color. ON CHIP COLOR lOOK UP TABLE (ClUT) 4 ~~ 4 ~...--. 4 --.. ••• • -- ENTRY ADDR ESS 16 •• •• tCOlOR IN THE DRAM STARTING AT COLOR lOOK UP TABLE BASE ADDRESS (R9) I R3 R2 Rl RD:G3 G2 Gl GD:B3 B2 Bl BO:A3 A2 Al AD I - - - - - - 1 2 B I T S - - - - -.... - 4 BITS- R3-Ro: Red color component G3-GO: Green color component B3-Bo: Blue color component A3-Ao: Entry address Figure 10. Filling the CLUT 10-78 231679-8 inter AP-268 The color look up table outputs-4 bits/color-drive 3 internal DACs (digital-to-analog converter). RGB signals are generated by the DACs. An externally supplied reference voltage (VREF) is used to drive the DACs. The value of VREF should be between 0 and 2V. As DACs have high output resistance, external analog buffers are used to interface them to low input resistance monitors as shown in Figure 11. +5V ANALOG SIGNAL FROM 82716 R, G, OR B 33.[1 TO 75.[1 ......-111\1\1-_ MONITOR INPUT 100.[1 231679-9 Figure 11. Buffering 82716 Analog Output to Low Input Resistance Monitor 10-79 inter AP-268 APPENDIX D CLOCKING SCHEMES The VSDD uses two clock signals: system clock and video clock. The video clock can be derived from the system clock or may be external. An external clock may also be fed to the XTALIN pin (instead of using a crystal). For example, CLKOUT pin of 80186 can be used to drive the VSDD system clock. The system clock is generated by an internal oscillator using an external crystal at XTALIN and XTALOUT pins. The crystal frequency can be between 5 MHz and 15 MHz. If an independent video (dot) clock is desired (EVC = 1) CKIO is used to input this clock. Maximum video clock frequency can be 25 MHz. EVC should be set to zero if video clock is derived from system clock. Figure 12 explains various clocking schemes. VSDD SYSTEM CLOCK (T-STATES) XTALIN VIDEO CLOCK 231679-10 (a) VSDD Timing Unit 82716 VSDD ~: If:+ 82716 VSDD EXTERNAL OSCILLATOR - - . XTALIN SIGNAL XTALIN XTALOUT - NC- XTALOUT 231679-12 231679-11 (b) With Crystal (c) With External Clock Figure 12. Clocking Schemes 10-80 ( 9-PIH 0 CONNECTOR 17 ADD ADl AD2 AD3 AD4 ADS AD6 AD7 AD8 AD. AD10 AD11 AD12 AD13 ADt4 1 ~ ~ ADO VSYNCI ADl HSYNCI "i14 AD2 OVR AD3 R "66 AD4 G ADS B 28 ""i6'1o AD6 ...-----. .---, ..,..--;;"i2"i2 ADtS ~ MC521 ~ o - AD. AD10 CASH/ 63 CA5LI A012 ADORO AD13 AORRl ADt4 ADRR2 ADtS ADRR3 NO 27 NO~ CKID PLLCTL 82716 ADRR5 VSDD ADRR6 ADRRB OLD VPEF DU eTO DL2 DL3 ~ BHEI RDI ~ RDI WRI ~ WRI ALE ~ ALE 8HEI DL4 DL5 DL6 DL7 DHO RESET ROY ~ ~ DHl RESET ROY DH2 DH3 DH4 ClKOUT £ 66 XTALIN DH5 DH6 XTALOUT ~ GI TO IBI.4 PC VSYNC ~HSYNC TYPE COLOR IoiONITDR ~ INTENSITY 74244 ~REO ~ 55. R GREEN BLUE 61 ADRR7 NO 68 ~ ~ 25 WEI 62 A16 GI ~ 24 RAS/ 64 ~ N03t ~: AD8 ADRR4 -' ~ 23 AD7 ~ AD" ~ ~ ~ ~ I I OH7 5. 10 58 6 57 7 56 8 55 11 54 12 53 13 52 14 34 17 35 15 36 3 37 2 38 40 41 42 44 45 46 47 48 4. 50 A6 AS A4 A3 A2 Al AO 4464-15 ~ 3. A7 GI - GI A7 A6 AS A4 A3 A2 -Al AD II rrrrrrrr- A7 A6 AS A4 A3 A2 Al AD GI I I-I-I-I-I-I-I-I-- I A7 GI » ." A6 AS A4 ." ITI AJ A2 Z Al o >< AD 004 4464-15 003 ITI 002 001 004 4464-15 003 002 001 004 4464-15 003 002 001 004 003 002 001 231679-13 » "tJ I I\) Q) CIO ( SERE~'':-:- i l l 8086/87/88/186 i1ACRQ ASSEMBLER V2.0 ASSEMBLY OF MODULE VSDD_PIC1UUF ',,:jQULE PLACED IN . F3: APPSQF. OBJ O~,-'t.: ASSEM'81_~':~~ LOC oFr.) INVOKED BY: ASN86.86: F3: APPSOF. ASM LINE SOURCE 1 +1 $mod186 2 +1 $xref 3 4 name YSdd_picture 5 6 7 8 9 0001 _iGfJ;":, 60n -' o ~ 6073 A414 0006 10 11 12 13 14 15 16 17 IS 19 20 21 22 23 24 25 26 27 2B 29 30 31 32 33 34 35 30 37 3B 39 JA routine to display a simple pictuT'P on the displa~ 3 bit-map and 1 character obJects al'C displaloled. i this routine also shows hOllJ to move windollJs. UCF DEN rO_res equ equ equ Ih Bh 6072h 014G 8000 0000 50 msb 011 dutg eye Ie 50 percent J 00000 blink rat. 7. 5Hz , 011 64k,4 DRAMS ;.1 HRS o DEN o 1 o rO_up equ rO_disp equ rl_d r2_d equ equ h-O_res OR UCf') (rO_res OR UCr OR DEN) OA414h SAS 640 pixels.l!ine display is disabled fast DRAMS DEI Digital video outputs UCF No register update ; set the UCF bit ; set the DEN bit J 1010 character height 10 scan 1 ines ; 0 INL non interlaced mode i 1 MAS VSYNK & HSYNe are outputs o SM Non composite sgnc mode 00 TMM TMS t~in mode is disabled o dont care bit J 0 EVC CKIO is output. video elk is derived from XTALIN 1 PC~ priorttv counter enabled 1 0 FAE use RDY as- READY signal I RE CPU can read the DRAM o PSA GCLK = 1/16 XTALIN o PRE disable pipeline read 0006h 40 41 42 43 44 45 46 47 48 49 Jupdate control flag idisplay enable bit lioitial value of RO after reset ; 1 register ~tndo~ base addr is OOOOh 11 TF2 TFt digit.l pixel codes ME no margin a r3_d equ 0140h r4_d equ BOOOh I data window length 64k bVtes r5_d equ ooaOh J data ~indo~ base addr is OOaOh right edge of the screen is at x = 327 J data segment ba •• addT i . OOaOh note data segment and register 231679-14 » "tJ "tJ m Z C ->< ." . ):0 "D N Q) CD LOC OBJ LINE cl SOURCE 'I :;'2 53 5'! i i i i !".egment overlap, In the overlapped region register segment will overwrite the data segment 00 BS1 SSO bank 0 5~ 00:..''; o=<.;,j ,~.,) ~ i--' 0180 0010 0402 ::02q ....o 74EC dOF4 Co Ul 0000 (1 56 57 58 r6_d equ OOOAh CPU. is allollled 10 accesses during each line building process. 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 r7_d equ 0500h obJect descriptor table starts at 0500h in bank 0 r8_d equ DOIOh access table at OOlOh r9_d equ 0180h color look up table base .ddr rlO_d equ 0023h char genO at 200Qh char gen1 at 3000h rll_d equ 0010h r12_d equ 0402h r13_d equ 10;?4h rl4_d equ 74ECh r15_d equ 80F4h IICO.VCO J HCI. VCI » 11C2. VC2 J l' IiC3.VC3 I\) ; aI allocate memory for register and data segments video_vsdd CO at 60001i segment rO_v dw dup(?) ) 0002 (1 ???? 85 r1_v dw dupe?) 0004 (1 ???-? 86 r2_v dw dupe?) (1 87 r3_v dw dupe?) 0006 ?-,.~-? ) 0008 (1 7'";"'·-:">7 88 1'4_.v dw dupe?) OODA (1 ???? 89 r5_v dw dupe?) (1 90 r6_v dw dUIJ(?) 91 r7_v dw dup (?) OOOC ???? ) OOOE o ???? OO~O 0020 (512 ???? 0400 0400 100 101 102 » "U org aat._v 103 104 105 (1 dOl 020h 512 . dupe?) N Q) ;ObJect Access Table(m.x length) CCI ; power up IDcations or- l"t'Histers o1"g 400h d .. dupe?) lOb irO_v 107 irl_v dbJ dupe?) 108 ir2_v dOl dupe?) 109 ir3_v dbJ dupC?) 110 ir4_v dOl dup III ir5_v dw dupe?) 112 ir6_v dw dup.(?) ???? ) 0402 (I ???? ) 0404 (I ??77 ) 0406 (1 ???'? ) 0408 (1 (?) ???? 040A (1 ??7? 040C (1 ???? 231679-16 LOC DB.! 040E (1 LINE SOURCE 11:, i1'7_v dw dupe?) 114 irB._v d.. dul'(?) 115 iT'9_v dw dupe?) 116 irlO_v dw duv 117 ir-l1._v dw dupe?) 118 ir12_v dw dupe?) 119 ir13_v dw dupe?) 120 ir14_v dw dupe?) 041E (I ???? 121 ir15_v dw dupe?) 0300 122 123 ???? 0410 (1 ??;'"? -. I~ ) 0'112 (1 ???? ) '0414 (1 ?T?? (?) ) 0416 (1 ?'??? ) 0418 (I ???? ) 041A (I ???? ) 041C (I ???? ) '? 0) CJ1 0300 » . ." (16 org clut_v dw ???7 OAOO 300H 16 dupe?) 124 125 QdtO_v dw 4 dupe?) 126 odtl_v dw 4 dupe?) 127 odt2_v dw 4 dupe?) 129 odt3_v dw 4 dupe?) 129 130 131 obJect_O_v dw 1800 dupe?) 2EI4 2EI4 (80 ???? 132 133 org ob Ject_l_v dw 80 dupe?) 2ECO 2ECO (120 134 135 org obJect_2_v 120 dupe?) CADO (4 org ???? N en icolour lookup tabl. CO OAOOH ;ObJect descriptor table ) OA08 (4 ???? ) OAIO (4 ?7?? DAIS (4 ???? 2000 2000 (1800 ???? .org 2000H i3.6K-bytes i4 bits/pilei 75*96 bit mapped 2EI4H 2ECOH dw 231679-17 -- LOC OBJ LINE I SOURCE ???-, 2FB4 org 2FIl4H d .. 100 duVC?) cgO_91ice_O_v 04000H d .. 256 dupe?) 140 egO_51 ice_l_v d .. 256 dupe?) 141 cgO_slice~_v dOl 256 dupe?) 142 cgO_slice_3_v do. ·256 ·143 c gO_51 i c e_4_v d .. 256 dupe?) 144 egO_sl ice_::5_v do. 256 du,.C?) 145 egO_sl ice_6_v do. 256 dupe?) )0 146 cgO_slice_7_v do. 256 dupe?) N 01 00 147 cgO_slice_8_v dOl 256 dup (7) 148 cgO_slice_9_v do. 256 dupe?) 149 cgO.....;.51 ice_l0_v dOl 256 dup(?) 150 cgO_slice_l1_v dOl 256 dupe?) 151 cgO_slice_12_v dOl 256 dupe?) 152 cgO_slice_13_v dw 256 dupe?) 153 cgO_slice_14_v dw 256 dupe?) 154 cgO_slice...:,15_v dOl 256 dupe?) 136 2FB4 (100 ( 137 ob Jec t._3_v 138 139 ???? 4000 4000 (256 org ;Character O.nerator 0 ???? ) 4200 (256 ???? ) 4400 (256 ?"'1?? ) 4600 (256 df,Jp (?) ?7?? ) 4800 (256 '???? 4AOO (256 '???? ) -'" 0 Co OJ 4COO (256 'U ???? • ) 4EOO (256 ???? ) 5000 (256 ???? ) 5200 (256 ???? ) 5400 (256 ???? ) 5600 (256 ???? ) 5800 (256 ???? ) 5AOO (256 ???? ) 5COO (256 ???? ) 5EOO (256 ???? 231679-18 LOC OB~ 0000 205b4944454F20 53544F52414745 2020 0010 2020202020414E 44202020202020 2020 0020 20444953504C41 59204445564943 4520 0030 20202020383237 313102020202020 2020 .... 0040 20202020494E54 454C0920202020 20 LINE 155 156 157 ISB 159 160 1101 ends video_data segment· obJect_3_data , VIDEO STORAGE db db 1104 165 db 11010 1107 db 82711. 168 169 db INTEL 174 Dat. fOT character generator 0 Characters are 10 scan line. high Slice .0,1 and 9 are emptu(O~ti) 26 alphabets and 10 numbers are defined 175 171. slice information for 10 numbers 172 173 ~ video_vsdd 162 163 170 171 9Q) l SOURCE AND , DISPLAY-DEVICE' ~ N G) CD 177 178 179- 004F 0050 0051 0052 0053 0054 0055 00510 0057 0058 0059 005A 0058 OO:;C 005D 3C 7E 7E 3C 100 IBO 3C. 3C 18 3C 3C lob 18 010 lob 100 lob lob OOSE 005F 00100 IS 00101 lob 00102 lob numb.,.s_data db 3Ch,· 7Eh, 7Eh. 3Ch. 181 db 3Ch, 3Ch, ISh, 3Ch, 3Ch 182 db 66h. 183 db I.I.h. I!.I!.h. ISh. I.I.h. I!.I!.h tSh, 06h, 66h. 60h J 51 tce a 60h.J slice 3 231679-19 l ISh, OCta. 60h. 7Eh • sUce 4 db 66h. db 6Oh, 66h. db 6Eh. db 60h. 3Eh. db 76h. db 3Eh. 06h. 3Oh. 66h. 66h lSh. Mh. 60h ISh, 30h, 3Bh. 6611 J .lice ~ lSh. 3Ch. 7Ch lCfl, 6011, 60h, 7Bh ,".Iice 6 I I :. "D • I\) G) CD 18h. 66h. 66h, 70h",.l1c.· 7 db Mh. db 02h. 66h. 66h. 66h. Mh db 3Ch. db 7Eh. 3Ch. 7Eh. 3Ch. 3Ch lSh. 3Ch, XII, 60h J .lice a slice in'OTmation"'OT 26 alphabets Icharacter_aet_O 231679-20 _. LOC OBJ 0095 66 0096 3E 0097 38 LINE 199 200 201 SOURCE ; !.lices 0. slice_2_d I 1 and 9 are O's (empty> db (-.611, 3EH. 202 db 3CIi. 3CH. 66H, 7EH. 66H, 46H. 3CH. OCH 203 db 7CIi. 66H. 3CH. 204 db 1E1I1. 7EH db b61{, 66H. 206 db 181l. 66H. 36H. 7EH. 66H. 66H. 66H. 06H 207 db 2bJ'h 36H. db ISH. 06H db 7EIi. 66H. 06H. 66H. 06H, 06H. 46H. aSH. lEH. 7EH, cf 06H. 38H. 66H 0098 IE ..... CX> <0 0099 009A 009B 009C 0090 009E 009F OOAO OOAI OOA2 OOA3 OOA4 OOA5 00A6 OOA7 OOA8 00A9 OOAA OOAB OOAC OOAO OOAE OOAF OOBO OOBI 00B2 00B3 00B4 00B5 00B6 00B7 00B8 00B9 OOBA OOBB OODC OOBO OOBE OOBF OOCO OOCI 00C2 00C3 7E 06 38 66 3C 3C 66 7E 66 46 3C OC 7C 66 3C 18 3C 18 3C 66 18 7E 66 66 6C 36 06 06 6C 66 18 66 36 7E 66 66 66 06 26 36 66 18 66 205 18H. 3CH. ISH. 3CH. 66H ~ slice_3_d "U I 6CH, 66H. 36H, II 06H. 06H. 6CH. 66H 18H. 66H. ISH. 7EH. 66H OOC4 18 00C5 00C6 00C7 00C8 00C9 7E 66 18 06 7E 208 209 slice_4_d 66H 231679-21 PI) 01 CI) LOC ..... o ~ DB.! OOCA 66 OOCD 06 OOCC 66 OOCD 06 OOCE 06 OOCF 46 OODO 66 OODI IS 00D2 60 00D3 OE 00D4 06 OODS 66 0006 76 00D7 66 OODS 06 00D9 36 OODA IE OODD 60 OODC IS OODD 66 OODE 3C OODF SA OOEO 3C OOEI IS 00E2 OC 00E3 66 00E4 3E 00E5 06 00E6 66 00E7 IE OOES IE 00E9 66 OOEA 7E OOED IS OOEC 60 OOED 06 OOEE 06 OOEF 66 OOFO 7E OOFI 66 00F2 3E 00F3 66 00F4 3E OOFS 3C OOF6 IS 00F7 66 OOFS 24 00F9 5A OOFA IS OOFS 3C OOFC 18 OOFD 3C OOFE 66 OOFF 06 0100 66 LINE ( SOURCE 210 db 1m . . , 60H. OEH, 06H. 66H, 76H. 66H, 06H 211 db 361-1. 212 213 slice_5_d lEH, 6OH. ISH. 66H,' 3tH. db ISH. OCH db 66", 3EH, 06H. 66H. IEH. ~AH. 3CH I I lEH. 66H, 7EH l> '1J • N G) m 214 db lBI-I, 6QH. 06H. 06H. 66H. 7EH. 66H. 3EH 215 db 661-1, 216 217 slice_6_d db 3CH. db - XU, 3EH. 3CH. ISH, 66H. 24H, ~H, ISH ObH. 66H. 06H. 06H. 06H. 66H II lBH 66H , 231679-22 -- LOC OBJ 0101 0102 0103 0104 0105 0106 0107 0108 0109 010A 010B 010C 0100 010E OIOF 0110 0111 0112 0113 0114 06 06 06 66 18 60 OE 06 7E 6E 66 66 66 66 06 18 66 66 42 3C 0115 3C 0116 30 0117 3C LINE 218 db 1011. 219 db 66H. 66H. 06H. db ::::tCH. 30H db 3CH. 66H. 6CH. 36H. 06H. 06H. 6CH. 66H 220 221 0118 66 ~ a :'1 0119 011A 011B 011C 0110 011E 011F 6C 36 06 06 6C 66 18 I SOURCE slice_.7_d bOH. OEH. 06H. 7EH. 6EH. 66H. 66H 18H. 66H. 66H. 42H. 3CH » 'U I 222 db 181i. 60H. 36H. 06H. 223 db 66H. 66H. 66H. db 6611. 60H db JSH, 3EH. 38H. 0120 60 I I 66H. 66H. 66H. 66H 0121 36 0122 06 0123 66 0124 66 0125 66 0126 66 0127 0128 0129 012A 012B 012C 0120 012E 012F 0130 0131 66 66 66 18 66 42 42 66 66 60 18 0132 3E 0133 0134 0135 0136 0137 t 224 225 51 ice_8_d 18H. 66H. 42H. 42H. 66H lEH. 7EH, 7EH, 38H. 66H 38 IE 7E 7E 38 231679-23 I\) en ~ org 0 reset mon i d", 1 dupe?) i en 01) a label ends tOT' Main routine. This routine loads the DRAM with access table the object descriptor table. the character generator and the actual object data. The VSDD is also initialized. ;--------------------------------------------------------------------prog_code segment assume simple_display cs: pT'og_code. proc ds: video_data. es: video_vsdd far start: mava •• video_data mav ds.ax linitializ& the data s.gm&nt mov ax.video_vsdd linitializ. the extra 1 segment mav es,ax initialize the T'egister segment. the register segment is located at 0400h aFter re!i>et. 231679-24 _. LOC OBJ OOOA 26C70600047260 0011 26C706020414A4 0018 26C70604040bOO OOIF 0026 002D 0034 003B 0042 0049 0050 0057 26C70606044001 26C70608040080 26C70bOA040000 26C7060C040AOO 26C7060E040005 26C70610041000 26C70612048001 26C70614042300 26C70616041000 OOSE 26C70b18040204 0065 26C7061A042410 006C 26C7061C04EC74 0073 26C7061E04F480 007A 26C70600047360 ..... ?CO 0081 B94700 0084 E2FE U) 0086 26C706000AOO06 008D 26C706020AOO18 0094 26C706040A0010 009B 26C706060A0010 00A2 00A9 OOBO 00B7 26C706080AOO06 26C7060AOA1404 26C7060COAOA17 26C7060EOAOA17 OOBE OOCS OOCC 0003 26C706100AOO06 26C706120A263C 26C706140A6017 26C706160A6017 LINE SOURCE 263 264 265 266 267 irl __v. ir2_v. mav ir3_v. ir4_v, irS_v. irb_v. mav i 1'7_VI 2b8 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 I mov i l'O_v. rO_1"l:'s rl_d r2_d r3_d r4_d r5_d T'o_d cf 1'7_d mav irB_v.rB_d mov ir9_v. r9_d mav triO_v. T'10~.d mov irll_v. rU. d mov mov mov mov ir12_v.r12_d ir13_v. r13_.d ir14_v.r14_d irIS_v. 1'15_ d all the registers are initialized in the DRAM. Enable the UCF flag to allow the VSDD to' update it!. on thip registers. mov i rO_v, rO_up wait 150U5 for the VSDD to update its em chip registers the loop assumes that the 80186 runs ~t OMhz. , , » -a movex.7l loop 1: loop loopt the register window is initialized to bOOOOh the cpu programs the display data thrD~gh newly defined data window in ,R3. I II iload the obJect descriptor fields for four obJects ; obJect 0 mov odtO v, bOOh mov odtO:vC2J.leOOh mav odtO_vC4l,IOOOh mov odtO_vC6l.1000h J4bits/pixel.non-transparent lobJect starts.t x = 0 ithe width is 96 pixels lobJect base addTess ; obJect I mav ,maY mov mov Ddtl v,600h odtl=vC2],0414h adt1 v[4l. t70ah odt1:vC6],110ah x z aO,width - 16 pixels iobJect2 mav adt2_v.600h mav adt2 vt2l.3c?6h mavadt2:vt4l,1760h mov odt2_v[6l,17bOh , x e 3Siwidth .240 pi.el. 231679-25 N CD CO _. LOC on.) OOOA 26C706180A04AC OOEl 26C7061AOA5008. 00E8 26C7061COAOA17 OOEF 26C7061EOAOA17 00F6 BA0200 00F9 BBOOOO OOFC B90807 OOFF B88888 ... 0102 2689870020 0107 030A 0109 E2F7 0 cO ./>. 010B BBOOOO alOE B9:1000 0111 B87777 0114 268987142E 0119 030A 011B E2F7 0110 BBOOOO 0120 B93COO 0123 B85.555 0126 268987C02E 012B 030A 0120 E2F7 012F BBOOOO 0132 892800 0135 8B07 LINE 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 339 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 I I SOURCE cf ; obJect :3 mav odt3_v,OAC04h mav odt3_v[2J,OB50h cha,..cter obJect pixels/charact.r transparent pixel , = 80. Width = 16 cha'racters e mav odt3 vC41.J7DAh mav odt3=v[6],1?DAh J set up the obJect data mav dx,2 mav bx,a ; obJect 0 mav CI,24*75 f i II_ob J_O: ~o,.ds I1n8s,24 words(96 pixels) ; numb.,. of data ;7~ al.88aSh ipixel data mav obJect-=..O_.vtbxJ, ax add bl,dx l> loop fi II_Db J_O "U I ; obJect 1 I\) 0) bx.O ,mav cI,4*20 mav a x, 7777h fill_obJ_l: CD inumber of data words ; pixel data may obJect_l_Y[bxJ. ax add bx,dx loop fill_obJ_t ; ObJect 2 mav bx.a mav ex. 15*4 ax, fi ll_ob J_2: 5555h mav obJect_2_YCbxJ. ax add bx. dx loop fi 11_ob-J_2 ;obJect 3 - character object may b x, 0 may cx,40 fil1_obL3: Jtatal 80 char~cter. Jin the obJact.2/~ord moy ax, word ptr obJect_3_dataCbxl J read the ASCII code for 2 char4lcters , 231679-26 LOC OB.! 0137 268987B42F OI3C 03DA OI3E E2F5 0140 B80000 0143 BBOOOO 0146 BE6000 0149 B90AOO 014C BA0700 014F 014F 8A474F 0152 2689840044 0157 43 0158 83C602 ....0 cb C11 0159 E2F2 0150 81C6ECOl 0161 B90AOO 0164 4A 0165 75E8 0167 016A 0160 0170 B80000 B80000 B91AOO BE8200 0173 BA0700 0176 0176 017A 017F 0180 8A879500 2689840044 43 83C602 0183 E2Fl 0185 0188 018C 0180 B91AOO 81C6CCOl 4A 75E7 LINE 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 l SOURCE mav obJect_3_v[bxl,ax I.dl"ite the data add bx. dx loop fill_obJ_3 ; load the charactor generator mavax.O mav bliO ; load the numbers mav si,30h*2 i.tore at proper ASCII Jlocation. Note cpu space ibyte addressable mov cillO mav dx.7 ilO numbers J 7 slices write_a_number: mav al.number~pdata[bx] cgO_slice_2~.v[f,ii]. ill inc bx add si,2 loop write_8_number ; read data bljte I~rite data ~ord in ,the DRAM I next b~te next location in I the DRAM )0 add si. (256*2)-20 mav cx,IO ;g inext Blice dec dx (J) CD Jnt write_a_number istoTe the 26 alphabets mav ax.O mav bllQ mav cx,26 mav si.41h*2 mav dx,7 J 26 alphabets Jproper offset into Jcharacter generator J 7 slices IIJri te_a_character: mav al. slice_2_.d[bxl mav cgO_slice_;!_.v[siJ, ax inc bx add a1.2 Jread data bljt. J write a word J next bgte Jnext location loop lII"i te_a_c haracter mav cI,26 add 01. (256*2)-52 inext slice dec dx Jnz write_a_character 231679-27 LOC OD.! OIBF DDOOOO 0192 890002 019~ BBFFFF 019B 8A0200 019D 2bB94720 019F 03DA OIAI E2FB 01A3 DBFEFF OIAb 2bA32000 OIAA 2bA3DbOO LINE .load the acceS5 table 43b fill_oat: 437 43B 439 440 441 442 443 444 445 l SOURCE 427 42B 429 430 431 432 433 434 435 may br,O may ex,leng:th oat._v may a'x,Of,.pfh may dx.2 fill the access table with all Is mov ojlt_vtbxl,ax add bx. dx loop fill_.oat i.nabla the obJects mayax,Of"eh mav oat_v. ax may aat_v[7'*~]rBX ienabl. obJect 0 at line 0 ,dis.ble obJect 0 at line 7~ 44b OIAE DBFDFF' OIBI 2bA30bOI 01B~ 2bA32COI ...o cD en 01D9 DBFDFF OIDC 2bA33BOI OICO 2bA33AOI 01C4 DBF7FF 01C7 2bA34BOO OICD 2bA3ACOO OICF 2bC70b00007BbO OIDb OIDb 2bC70b020A001B OIDD BA4201 OlEO BBOOOO 447' 44B 449 450 451 452 mavax,Of"dh mav oat_v[11:5*2J,ax mav oat_v[134*2l, ax J J enable object 1 at line 11:5 di,able obJect 1 at line 131 mavax,Offfbh 4~3 454 455 45b' 457 45B 459 mav oat_v[140*2l, ax J mav' o,at_v[141*2J, in: J may a'x,Off.p7h mav oat v[20*2),ax ;.nable obJect 3 at line 20 mav oat=-v[70*?J, ax .disable obJect 3 at line 70 4bO thR display data is initialized bV the B01B6. 461 462 463 464 465 466 467 46B 469 470 471 472 473 474 475 476 set the displa" enable bit (DEN) in thE" VSDD to enable the displav. 01E3 2bB30b020AOI 01E9 4A 477 478 OlEA 2bBlb720FDFF 479 4BO 4Bl may 'I'O_v. ",O_dis, l> enable obJect iZ at line 140 disable object 2 at line 141 l' ~ CD No .. enable the I the regi.ter .egment at 60000h ts no. located a simple l"outine to .croll obJects horizontally and verticallv ; obJect 0 is moved hOT"DZontaIlv while abJect 1 is moved vert;icall" ' I mavexv: may adtO_v[2l,lBOOh may dx.322 ma,v bx,Q Rlovex: add adf:O_v[2l,1 'MOY I rna. imum value of x fOl" ob J 0 start II value for obJ t obJ 0 by 2 pixels in x direction dec dx mave,,: and aat_vCbx],Of:ffdh J ob Ject 1 .ta1"t 231679-28 LOC OB.! OlFO 01F6 01F9 0200 0202 26816748FDFF B97017 26C7060BOA0006 E2FE 26C7060BOA1006 0209 020F 0215 0218 26814F20F2FF 26814F4BF2FF 83C302 81FB3403 021C 74B8 021E 83FAOO 0221 74C7 0223 EBBE 0225 EAOOOOFOFF .... o ~ COLUtlN X ~---------- COLUMN >< ~--------~ COLUMN >< ----~------ ~--------- 292007-4 Figure 5. Fast Page Mode Burst-Access Read Cycle Fast-page-mode burst accesses for block transfers are supported directly by the 82786 to take advantage of the fast sequential addressing capability of DRAMs (see Figure 5). Once the DRAM is set-up with the row address, the column addresses can be quickly scanned in for several burst-accesses to the same page. With the 82786, Fast Page Mode bursts for block transfers run at twice the speed of page mode. The following table shows the burst-access rate of these various configurations for a 10 MHz 82786. Interleaving of two banks of DRAMs is also supported directly by the 82786. For a sequential burst access, DRAM cycles for both banks can be initiated. Then, during the burst access, the 82786 can alternate accesses between the two banks, thus cutting the effective DRAM access time in half (see Figure 6). Page Mode Fast Page Mode and Static Column Noninterleaved: 10 Mbyte/ sec (2 cycles) 20 Mbyte/sec (1 cycle) Interleaved: 20 Mbyte/sec (1 cycle) 30 Mbyte/sec (0.5 cycle) The other cycle times, and speeds at 10 MHz, are the same for all DRAM configurations: Static Column DRAMs can also be used to get the same performance as Fast Page Mode. The only difference between the two types is that Static Column DRAMs do not latch the column address, whereas, Fast Page Mode DRAMs do latch the column address on the falling edge of CAS. In noninterleaved configurations, Static Column DRAMs can directly replace Fast Page Mode. However, in an interleaved configuration, the column address must be latched externally for Static Column DRAMs. Single Reads 3 cycles Single Writes 3 cycles 300 ns 300 ns Read-Modify-Writes 4 cycles 400 ns Burst-Access Set-Up 2 cycles 200 ns Refresh 3 cycles 300 ns All burst-accesses for block transfers· perform an even number of 16-bit word accesses. RAS~, //-- .~------------------------~-------------- ADDRESS =><,~~ ___~__ O_L_U_t1_N___>.<~ __ O_L_U_t1_I~_~X~ r__ _ _r__o_L_U_t1_H_~X_________ DA~ ~----------~~'~~r-----~~DRAETAAD ..·.>~------~/ .'·_.!Bl~_./ \ / READ"~" .~ DATA1 ----------------\~/ '."..!!B.IB.,/>-------;", DATA / 292007-5 Figure 6. Interleaved Fast-Page-Mode Burst-Access Read Cycle 10-106 inter AP-270 Burst-accesses for block transfers are used by all Dis" play Processor memory accesses except the operand for LD_REG and DMP_REG commands. Block-read accesses are used by the Graphics Processor for command-block fetching and to fetch the character fonts. The Graphics Processor uses a block-read followed by a block-write. for the read-modify-write operations of BitBlt, Scan_Line, and Character drawing. All other pixel drawing commands use single read-modify-write cycles. tions is handled internally by the 82786. This is also the connections required for x 4 VRAMs which use the BEN signal to control their OE/DT input which is used to determine when to load their internal shift register (Figure 9). If Static Column DRAMs are used in an interleaved configuration, an external latch is required to latch the column address for the second bank (Figure 8a). The 82786 can directly drive up to thirty-two DRAM devices. For configurations requiring more than thirty-two devices, external buffering must be used. 3.1 DRAM Configurations Up to 4 rows per bank, and 1 noninterleaved or 2 interleaved banks are supported (see Figure 7). Each bank must always be 16 bits wide. If only one noninterleaved bank is used, it must be bank 0 (using CASO and BENO). If interleaving is used, both banks must have the same number of rows. In either case, if only one row is used, it must be row 0 (using RASO). For only two rows, row 0 and 1 are used (RASO and RASI). Similarly, three rows use row 0, I, and 2. The 82786 can directly drive up to 32 DRAM/VRAM chips. One 82786 pin shares two DRAM functions DRA9/RAS3. These functions are never both used in the same configuration. DRA9 is only used by 1M x 1 DRAMs, which limit the number of rows to only two due to both addressing (4 Megabytes) and drive (32 chips) limitations. Figure 8 shows a full connection diagram for thirty-two 64K x 4 DRAMs. Two interleaved banks of four rows each are used. Unlike most DRAM/VRAM controllers, no impedance-matching resistors are usually needed between the 82786 chip and the DRAM/VRAM chips. The impedance-matching for most configura- DRAMs with separate data-in and data-mit pins (such as the x 1 DRAMs) require a tristate buffer for the data-out lines of each bank. (All of the rows within each bank may share the same tristate buffer). Figure 10 shows a full connection diagram for thirty-two 256K x 1 DRAMs including the tristate buffers. Two interleaved banks of one row each are used. This is a special case for the RAS lines. Normally RASO would drive all of the DRAMs in both banks for the one row as in Figure 7. However, because the RAS lines have drive capability for only 16 DRAMs, both RASO and RASI are used. The 82786 recognizes this special case and automatically drives RAS I identically to RASO. The other special DRAM case is using two rows of x I DRAMs in a noninterleaved configuration. This configuration has the advantage that only one bank of transceivers is required, but burst access time is reduced by half from the previous example. Normally, CASO would be used to drive all 32 DRAMs, but because of drive limitations, both CASO and CASl are used, (one for each bank). Again the 82786 recognizes this special case and automatically drives CASI identically to CASO. WEH CAS! BEN! RASS --i ttl --i --i --i I II III RAS2 III RAS! III RAse III II l-i l-i l-i l-i III II WEL CAse BENe ROW 3 III ROW 2 II II ROW 1 II DAHK 1 III ROW DAHK I) I) 292007-6 Figure 7. 82786 Supports up to 4 Rows of 2 Interleaved Banks of DRAMs 64K x 4 Video RAMs with 82876 1 Row, 2 Banks, 4 Bits/Pixel 10-107 _. t II !! co c: Ci !XI co I\) ..... co en ...:e-C S· D3:0 II?· ... Illl :9 D15: 12 """' = rna mIT = iiEH CO .... :rJ 0 ~ II) .... ~ 0 CD = 0~ ~ .. 0 82786 ~ II S' ID ::!. ID I\) < = ID a. ID I\) ::l ~ II) 0~ ....en ~ )C .... C :rJ ):0 3C II) . »'U -I ""'" DF:H?0 292007-7 N ...... 0 _. I I ." cS' ...CD c ct 0> !II 0> N ...... 0> en ... C ,;C' S' CQ _I'11;$ 01>0 III S, 12 :II 0 c;:;-;-r 11/ iTIT ITEii ~ ~ mrr :IE .... 0 -t :IE 0 .... ~ 0 S' ...iDCD 82786 h .. S;2 I III co < CD ffij DO: I~~O I .:iJ I LIE ~ 64K x4 DRAH , I IEtl U .. S I to.;: I I oJ C. IJI III :;, ~ 11/ .... 0 en 01>0 " >< 01>0 CJl Dr n' 0 0 C 3 :;, C :II )l- s:: 11/ 292007-8 ~ 'U I I N ..... 0 l ." cO' e... CD eo !" en .... "....>< J.A'11"IS'" < c:CD ~ r---- 3 111 :§, ~ :;: .... eo N 0 ..... eo en ::c 0 DRR 7 _e VQ.K I» DOT Q.'_00< SOE RAS 1£ -1£ ADDR ADDR SCLK 0.,."" - SCLK 031-311 CAS ADDR t- SCLK °23." II 7 l} U 1£ OEIOT 0"_08 OE!ET N ID HSYNC ILfN< S ~ r---- U - OEIOT 0,,_.. -CAS -SOE -RAS ~ B278S 0 ::c I» U U EEN0 ~ OEIOT 0"_,, CA59 CAS SOE r - - - RAS J-I COlJ.ITER MOD B U BENI- OEIOT 0"_,, CASI- CAS SOE RAS t- DE lOT 0"_00 f- CAS f- SOE f- RAS f-I£ f- ADDR I-- 1£ 5CLK 015-12 ~ ~ ,ill 0123 4 'It 8 TO 1 f1JX U I- SOE I- RAS I- SOE I- RAS I- SOE I- RAS I- ADDR ~ 5CLK 0Il .... ~ ~S U I- OEIOT 0.,_00 I- CAS 1-1£ ADDR SCLK 019--16 U I- OEIOT 0"_08 I- OEIOT 0,,_.. I- CAS I- CAS 1-1£ 1-1£ I- AODR I- 5CLK 0",... I- ADDR I- 5CLJ< 0 ..... J> II "P I\) ...... _0 llh 6 7 VlOE03 _0 ~ :::J ~ !!' .... ID ;:;: 111 ""'II>< !. 292007-9 inter AP-270 The table in Figure II shows all the possible configurations for 64K bit, 256K bit and 1M DRAMs. The critical parameters for Fast Page Mode and Static Column DRAMs are generally: Fast-page-mode Single Single wrt RMW rd/wrt rd/wrtlRMW 3.2 DRAM Timing Parameters Trp Trah Tase Care should be taken to ensure that all of the timings of the DRAMs used, fit with those in the 82786 data sheet. To make the comparisons easier, the names of the parameter in the 82786 data sheet correspond to the names in most DRAM data sheets. In addition, the parameters have been broken into the same four groups used by most DRAM data sheets. The critical parameters for page mode DRAMs are generally: Single Single wrt rd/wrtlRMW Teae Trp Tred Trah Tase Ton Trwl Tewl RMW Page rd/wrt Tds(rw) Toft Tds(i) ~ ~ Tase Tase + + Tds(rw) Toff Tep Teaa Teap Tds(n) Teah(i) Tds(i) Tdh(i) Ton(ri) For interleaved Static Column DRAMs, the address latch delay must be added to the DRAM parameters corresponding to the row and column addresses. These parameters are: -Tasr -Tasc -Tcaa Some of the 82786 parameters may not be found in all Page Mode data sheets. If no corresponding DRAM parameters for Tcaa or Tcar are specified, then the 82786 spec may be ignored. The reason is that, if no such DRAM parameters exists, then the resulting minimum values for these parameters are at most: Teaa Tear Trwl Tewl Teae Trsh Then as long as the Tasc, Tcac, and Trsh specs fit, the 82786 timings guarantee Tcaa and Tcar to fit. A third parameter that may not be found in all Page Mode data sheets is Ton. If x 1 DRAMs are used, the external data transceiver is responsible for meeting this and the DRAM is not required to meet this spec. If, however, x 4 or x 8 DRAMs are used, without the data transceiver, care must be taken to ensure that this spec is met. For all types of xl DRAMs, Page Mode, Fast Page Mode and Static Column, the transceiver delay must be added to the DRAM parameters which correspond to read-data. These parameters are: -Trac -Tcac -Tcaa Notice that all of the 82786 DRAM timings are specified relative to the bus clock (eLK). This has two implications. First, a slower bus clock can be used to allow the 82786 to use slower DRAMs. Secondly, many of the parameters are determined by the duty cycle of the bus clock (as their specification is dependent on clock high or low time). A slightly nonsymmetric clock, such as the clock for the 80286, can be used for the 82786 CLK, but care should be taken to examine the effects on the DRAM timing. In some circumstances, it may be advantageous to use a slightly nonsymmetric clock. Some of the specifications are relative to the 82786 clock period (Tc), while others are relative to a specific phase (THigh, TLow). 10-111 AP-270 292007-10 Figure 10. Two Interleaved Banks of 256K x 1 DRAMs 1-row Non-Interleaved 2-rows 3-rows 4-rows 1-row Interleaved 2-rows 3-rows 4-rows 64Kx1 128K 16 256K 32 384K 48- 512K 64- 256K 32 512K 64* 768K 96' 1024K 128' 16Kx4 32K 4 64K 8 96K 12 128K 16 64K 8 128K 16 192K 24 256K 32 8Kx8 16K 2 32K 4 48K 6 64K 8 32K 4 64K 8 96K 12 128K 16 256K x 1 512K 16 1024K 32 1536K 48' 2048K 64' 1024K 32 2048K 64* 3072K 96* 4096K 128* 64Kx4 128K 4 256K 8 384K 12 512K 16 256K 8 512K 16 768K 24 1M 32 32Kx8 64K 2 128K 4 192K 6 256K 8 128K 4 256K 8 384K 12 512K 16 1M x1 2M 16 4M 32 - - 4M 32 - - - 256K x4 512K 4 1M 8 1.5M 12 2M 16 1M 8 2M 16 3M 24 4M 32 128K x8 256K 2 512K 4 768K 6 1M 8 512K 4 1M 8 1.5M 12 2M 16 'Requires external buffering Figure 11. Possible DRAM configurations for 64K, 256K and 1 Mbit DRAMs. The top number in each box is total memory size in bytes, the bottom is the number of DRAM chips required. Look at this example. Suppose you use 51C256H Fastpage-mode DRAMs with the 82786 as in Figure 10. First, look at the critical parameters shown above. Since it is not possible to create a precisely 50% duty cycle clock, you must consider clocks with a few percent tolerance. The table compares the 82786 using several clock frequencies and duty cycle tolerances with two versions of the 51C256H. The table is ordered with the tightest timings first. From the table, you can see that the fast 120 ns access DRAMs can be used with the 82786 with a 10 MHz clock with as much as a 40%-60% duty cycle skew. The slower DRAMs can be used at 9 MHz with a tighter 45%-55% duty cycle skew or at 8 MHz with a 40%-60% skew. 10-112 AP-270 292007-49 Figure 10. Two Interleaved Banks of 256K x 1 DRAMs (Continued) 82786 Specifications Parameter 10MHz 45-55% 10 MHz 40-60% 51C256H DRAM Specs 9MHz 45-55% 8MHz 40-60% -12 120 ns -15 150 ns Tdh Min Tph 22.5 20 25 25 20 25 Toft Max 25.5 23 28 28 20 25 26.5 Tcah Min +3 Tch + 2 22 24.5 27 15 20 Tcp Min Tcl- 5 17.5 15 20 20 10 10 Tds Min Tcl- 8 14.5 12 17 17 0 0 T1 , Tcaa Max 2Tc - 27 73 73 83 98 55 70 Tcap Max 2Tc - 21 79 79 89 104 60 75 Tasc Min Tcl- 5 17.5 15 17.5 17.5 5 5 Trp Min 2Tc - 5 95 95 105 120 70 85 Trwl Min Tc - 9 41 41 46 53.5 25 30 Tcwl Min Tc - 12 38 38 43 50.5 25 30 + Trah Min Tc Ton Max Tc - 24 3 53 53 58 65.5 15 20 26 26 31 38.5 25 30 Because these x 1 DRAMs require transceivers between their data outputs and the 82786, the transceiver delays must also be considered. The two parameters in the table above, that are affected are Tcaa and Tcap. The transceiver delay must be added to the DRAM access time for these parameters. This implies that the data-in to data-out time of the transceivers must be 18 ns or less for the 10 MHz -120 ns case and the 8 MHz -150 ns case. The delay must be 28 ns or less for the 9 MHz -150 ns case and the 8 MHz -150 ns case. 3.3 Initializing the DRAM Controller Two of the 82786 Internal Registers are used to configure the DRAM/VRAM Controller. Both of the regis- ters are typically set once during initialization and then never changed. The DRAM/VRAM Control Register is set to indicate the configuration of the DRAMs/ VRAMs used. The DRAM/VRAM Refresh Control Register is set to indicate the frequency of refresh cycles. Once programmed, the settings can be write-protected using the write-protect bits discussed in Section 4.2. It is recommended that all fields of the DRAM/ VRAM Control Register be written simultaneously to avoid illegal combinations. Also, no DRAM accesses should be attempted until the DRAM/VRAM Control Register has been set. For the configuration in Figure 10 using one row of 256K Fast Page Mode DRAMs in two interleaved banks: 10-113 intJ AP-270 DRAM/VRAM Control - Internal Register Offset OSh 15 7 RESERVED 6 5 4 3 2 1 0 IRW1: Rwol DCl : DCO I HT2: HTl : HTO RESET DEFAULT: D 1 0 I 0 I DRAM!VRAM HEIGHT (SIZE OF DRAM CHIPS) 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 aK ( 1 ROW, 0 1 16K (7 ROW, 0 32K ( 7 ROW, 1 64K ( a ROW, 0 12aK ( a ROW, 1 256K ( 9 ROW, 0 512K (9 ROW, 1 1M (10 ROW, a 7 a a 9 9 10 10 COLUMN) COLUMN) COLUMN) COLUMN) COLUMN) COLUMN) COLUMN) COLUMN) INTERLEAVE (1 = INTERLEAVED DRAM BANKS) (0 = NONINTERLEAVED BANKS) FAST PAGE MODE (1 (0 = FAST PAGE MODE DRAM) = PAGE MODE DRAM) DRAM!VRAM ROWS (NUMBER OF ROWS OF CHIPS CONFIGURED) o o 1 1 DRAM!VRAM CONTROL REGISTER 0 1 0 1 001 1 1 01 ONE ROW· TWO ROWS THREE ROWS FOUR ROWS = 292007-15 MHz 82786 CLK, we can determine the value for the DRAMIVRAM Refresh Control register as follows: lDH Ul ll~L~;~~D Refresh Count FAST PAGE MODE ONE ROW = Tref x ClK _ 1 16 x Refresh_Rows 292007-16 DRAM!VRAM Refresh Control, Internal Register Offset 06H, is set to 18 as shown below. 15 6 5 4 3 2 1 0 Reserved RESET Default: : o Re~res~ SC~lar: o 0 o The 82786 CLK input is internally divided by 16 and then divided by the Refresh Scalar + 1 in the DRAM! VRAM Refresh Control Register to determine the time between refresh cycles. Only one row of each DRAM! VRAM is refreshed at a time so refresh of the entire DRAMIVRAM requires 128, 256, 512 or 1024 of these refresh cycles depending on the number of rows in the DRAMIVRAM. For example, the 51 C256H DRAMs require a complete refresh every 4 ms (Tref). These DRAMs consist of 512 address rows of 512 address columns. However, for refresh purposes, only 256 row addresses (AO-A7) need to be refreshed within the 4 ms refresh time. The A8 input is not used for refresh cycles. (The 82786 maintains a full lO-bit refresh address, the upper 2 bits are simply not used in this configuration). Assuming a 10 The result should always be rounded down, so the DRAMIVRAM Refresh Control Register should be programmed with 18. This result is dependent only on the DRAMIVRAM type and the 82786 CLK frequency. The configuration of the DRAMIVRAM chips does not matter. There is a latency time between the refresh request generated by this count and the actual refresh cycle. The refresh will always occur as soon as the current bus cycle finishes. Refresh cycles can interrupt block transfers, but only at double-word boundaries. The worst case is if a refresh request occurs just after the 82786 receives HLDA to begin a master mode block transfer. The 82786 must complete two master cycles before the refresh cycles can be performed. During this latency, further refresh requests may be generated. The 82786 contains a refresh request queue that allows up to three refresh requests to be pending. As soon as the bus is freed, all queued refresh cycles will be run consecutively. For the above example, refresh requests are generated every 15.2 J-Ls which is derived using the following formula. 10-114 intJ AP-270 . 16 x (RefreshCount + 1) RequesLtlme = ClK BHE MIO 1 1 0 0 1 X Synchronous 80286 bus Synchronous 80186 bus Asynchronous bus = 16 x (18 + 1) = 15.2 s 20 MHz ,... The amount of latency that the DRAMs will tolerate for each row is: Allowed_latency = Tref- (RequestTime )( Refresh_ Rows) = 4 ms- (15.2 ,...s )( 256) = 108.8 ,...s But the real latency limit is that the 82786 allows only three requests to be queued: Maximum_latency = Queue_Size x Refresh_Time = 3 X 15.2 = 45.6 ,...s Therefore, the maximum number of wait-states allowed for a 82786 master mode transfer is: WaiLStates = «Maximum_latency x PClK) overhead)/bus-cycles «45.6,...s x 10 MHz) - 7 cycles)/2 = 224 Clearly, in this situation, refresh latency is not a problem. If the system memory caused the 82786 to delay over 224 wait-states for a master-mode access, not only would DRAM/VRAM refresh be missed, but the display refresh would also be lost. The 82786 always issues three refresh cycles following a RESET. Besides these first three refresh cycles, the 82786 does not perform any other DRAM/VRAM initialization after cold or warm-reset. If the DRAMs/ VRAMs require other initialization cycles, the CPU should either perform dummy cycles to the DRAM/ VRAM or wait until the refresh counter has requested enough refresh cycles to occur. For synchronous 80286 interfaces, the Reset and Clock inputs into the 80286 and 82786 must be common. For synchronous interfaces to 80186, the 80186 CLKIN must be the same as the' 82786 CLK (so an external clock source must be used). The RES input into the 80186 must meet a set up and hold time with respect to the CLKIN. The RESET for the 82786 should ~en erated from the RES (for 80186) by delaying RES by one CLKIN cycle and inverting it. This ensures that the 82786 phI is coincident with 80186 CLKOUT low. These pin states are easy to achieve for the synchronous modes. During RESET, the 80286 always drives BHE high and MIO low. CPUs with timings different from the 80286 must use asynchronous mode (however, CPUs such as the 80386 can easily generate 80286 style timings). Care should be taken in this case to ensure BHE is low during RESET. In each of these three modes it is possible to configure the 82786 to allow both master and slave accesses or to simplify the logic to allow only slave access. In master mode, the 82786 always generates 80286 style bus signals. If the 82786 is used as a master, it will activate its HREQ line when it needs to become the bus master to access system memory. It waits until HLDA is received and then begins driving the system bus. Once HLDA is received, a 10 MHz 82786 can perform system bus accesses at the following rate (assuming 0 wait-states). single reads/writes 4 cycles read-modify-writes 6 cycles burst-access read/write 2 cycles If the DRAM/VRAM Refresh Control Register is set to all ones, refresh cycles are disabled. 4.0 SYSTEM BUS INTERFACE The 82786 system bus structure allows the 82786 to be easily connected to a variety of CPUs. The 82786 can act as both a slave and a master to the CPU's bus. As a slave, the CPU or DMA can perform read and write cycles to the 82786 Internal Registers or to the 82786 DRAM/VRAM. As a master, the 82786 Graphics and Display Processors can perform read and write cycles to the CPU's system memory. The 82786 bus can operate in three different modes to handle various CPU interfaces. The 82786 determines which mode to use by sampling the BHE and MIO pins during RESET: 5 Mbyte/sec 3.3 Mbyte/sec 10 Mbyte/sec The 82786 will begin the first master bus access on the cycle after HLDA is activated. The only delay is the time between when the 82786 activates HREQ and the system can release the bus and return HLDA. Most synchronous CPUs require a minimum of three cycles between the time HOLD is activated until they can return HLDA. The 82786 will keep HREQ activated until it no longer has more accesses to perform to system memory (until either the next 82786 access is to the dedicated graphics DRAM/VRAM or until neither the Graphics or Display Processors require the bus.). Once the 82786 is done using the system bus, it will remove HREQ and is able to immediately access its Graphics DRAM/VRAM on the next cycle. 10-115 intJ AP-270 It is potentially possible for the 82786 to require the system bus for a lengthy period of time. For example, if the 82786 has been programmed to give the Graphics Processor high priority, and the Graphics Processor executes a command that requires a lot of access to system memory, then the system bus could potentially be held by the 82786 for several consecutive accesses. Drawing a long vector into a bitmap residing in system memory is such a command. In this case, the maximum time the 82786 can potentially keep the system bus is determined by the frequency of DRAM/VRAM refresh cycles programmed into DRAM/vRAM Refresh Control Register. If the CPU needs to regain control of the bus before the 82786 is done, it may remove HLDA eady. The 82786 will then complete the current access and remove HREQ to indicate to the CPU that it may now takeover control of the bus. If the 82786 still requires more access to the system bus, it will re-activate HREQ two cycles after it had removed it and wait until the next HLDA. Since the 82786 removes HREQ for only two cycles, it is important that the CPU recognize it immediately. Otherwise a lock-out condition will occur in which the CPU is waiting for the 82786 to remove HREQ and the 82786 is waiting for the CPU to issue HLDA. This is not a problem for the synchronous interfaces. Extra logic may be required to prevent this situation if the 82786 is used as a master in an asynchronous interface and HLDA is ever removed prematurely, especially if the CPU clock is significantly slower than the 82786 clock. 4.1 Memory Map Figure 12 shows the memory map as it appears to both the 82786 Graphics and Display Processors. These processors both use a 22-bit address which provides for up to 4 Megabytes of address space. They are only allowed to make memory accesses so no I/O map is applicable. 3FFFFFh SYSTEH HEHOR't GRAPHICS HEHOR't eeeeeeh '--______--' 292007-11 Figure 12. Memory Map for Graphics and Display Processors FFFFFFh SYSTEH HEHOR't GRAPHICS HEHOR't ] I NTERNAL REG I STERS MA~ BE LOCATED IN MENOR~ OR I/O SPACE S'x'STEH HEHOR't 000eSCh '--_ _ _ _ _ _- ' 292007-12 Figure 13. Memory Map for System CPU The 82786 dedicated graphics DRAM/vRAM always starts at location OOOOOOh and grows upwards. The upper address depends on the amount of DRAM/VRAM memory configured in the DRAM/VRAM Control Register. The system bus memory begins where the DRAM/vRAM ends and continues to the highest addressable memory location 3FFFFFh. The memory map as it appears to the system CPU is shown in Figure 13. The area that the 82786 Graphics DRAM/vRAM is mapped into can be anywhere in the CPU address space and is completely defined by the address decode logic of the CPU system. Normally only the space for the configured graphics memory is mapped into CPU address space. If addresses above the configured graphics memory are mapped into the CPU address space, and the CPU writes to addresses above the configured 82786 memory, the write is ignored. If it reads from these locations, the data returned is undefined. The 82786 Internal Registers may be configured to reside in memory or I/O address space. If configured to reside in memory, then they will override a 128 byte area of the 82786 memory address space for external (CPU) accesses. The Internal Registers are only accessible by the external CPU and therefore are never found in the 82786 Graphics or Display Processor memory maps. Suppose the 82786 is configured with 1 Megabyte of Graphics DRAM/VRAM and is used in an 80286 system. A possible memory map and connection diagram is shown in Figure 14. All of the 82786 memory is m -" ~u '139 , - - AI 88186 GRAPHICS HEHORY GRAPHICS HEtiORY \r- 0eee0h ..................... .... , .. V .... ...................... ...... I- SYSTEH HEHORY ... r - Ae ~; I.!!.!.IQ0 I- MIlO CS .nl . 174LS36~EI I 1'119 1'118 MEN 82786 A21 1'120 1119 AIS A17,e A17,e 292007-17 Figure 16. Possible Memory Mapping for 80186/82786 Because graphics memory can be quite large, some sys· tern designs might not allow all of the confignred Graphics DRAM/VRAM to be directly mapped by the cpu. For example, if the 82786 has 2 Megabytes of Graphics DRAM/vRAM and is used with a 80186 processor, which can only address 1 Megabyte, then the 80186 can not directly access all of the 82786 memory. In this case the CPU can be permitted to only access a portion of the graphics DRAM/VRAM. Figure 16 shows a memory map and connection diagram for such a system. Since the 82786 has two more address bits than the 80186, a tristate buffer is used to supply the two highest address bits when the 82786 is in slave mode. In many cases the CPU does not require access to all of the graphics memory. For example, many situations will not require the CPU to directly access the bit· maps. If the CPU must gain access to the graphics memory which is not directly mapped to the CPU, the 82786 Graphics Processor can be instructed (using the BitBlt command) to move portions' of the Graphics memory to and from the area accessible by the CPU. Alternatively, the Graphics DRAM/VRAM areas can be bank switched to allow the CPU direct access at any portion of the graphics memory. Figure 17 shows the use of an I/O port (74LS173 latch) to which the CPU can write the highest 3 bits of the address for the 82786 slave accesses. In both Figures 16 and 17, it is possible for the 82786 in master mode to access the CPU memory addresses that 10·119 inter AP-270 3FFFFFh SYSTEM MEHORY 20eeeeh IFFFFFh FFFFFh SYSTEM MEMORY ce990h IIFFFFh 82~!I.? ..1. H.'!'.~RH.~.I, .. R.E.G~ GRAPHICS MEMORY GRAPHICS MEMORY 80900h 7FFFFh SYSTEM MEMORY 00geeh 000e00h 88186 M£HORY-MAP 82786 MEMORY-MAP MilO MIlO CS Lv-" -J '139 ~~ -- 88186 AI A0 TO I QI Q0 CPU~ MEN 74LS173OE AIS AIS -l..OE Q D Q D AI?:0 -'367 II' 82786 A21 A2B AI9 AI8 AI?:0 292007-18 Figure 17. Possible Memory Mapping for 80186/82786 Bank-Switching Allows 80186 to Access All 82786 Memory correspond to the 82786 slave addresses. In this case, the circuit will generate a 82786 chip-select, but the 82786 will not respond to this chip-select while it remains in master mode. As long as the READY logic goes high (it may not since the 82786 will not perform the slave-access) then the 82786 will complete the master-mode cycle. By the time the 82786 returns to slavemode, the chip-select will have gone away. to control the system configuration (Figure 4). These registers are normally set once during power-up intialization and never changed. Two of these registers, DRAM/VRAM Refresh Control and DRAM/VRAM Control have already been discussed in Section 3.3. The rest of the registers are discussed in this section. The Internal Relocation Register defines the location of the 82786 Internal Registers anywhere in the 82786 memory or 110 address space. 4.2 BIU Registers Within the 82786 Internal Register block, the registers at offsets OOh-OFh are used by the Bus Interface Unit 10-120 inter AP-270 Internal Relocation Register Orrset OOh 15 I Reset: 14 13 12 11 10 9 8 7 B~eA~s 6 5 4 3 2 xxxxxx xxxxxxxxx o , IMIlol ~ Base Address: detennines bilS 21:7 of the Internal Register Block address (bits 6:0 of the address are used as the offset). o 0= VOMapped 1 = Memory Mapped 292007-86 After RESET, any CPU slave I/O address to the 82786 (which activates the 82786 Chip-Select) will access the Internal Register Block. During initialization, a write to the Internal Relocation Register should be performed to locate the Internal Register Block at specific even byte memory or I/O address. Once the write to the Internal Relocation Register occurs, the 82786 Internal Register Block no longer occupies alI of 82786 1/ o space, rather it is restricted to just the 128 memory or I/O bytes specified. The Internal Registers can be located anywhere accessible by the CPU. However, if they are memory-mapped and located over configured graphics memory, they will take precedence over the memory for CPU accesses to those addresses. Graphics or Display Processor accesses to these addresses will still be directed to DRAM/VRAM. For example, writing the value of 03F8h locates the Internal Registers at I/O addresses FEOOh - FE7Fh. 03F8h = 00 0000 1111 11100 I I 0 SPL - Subsequent Priority Level - priority used for processor to maintain bus. during a block transfer. If a block transfer is interrupted, this is also the priority used to regain the bus to complete the burst access. When a processor first requests' the 82786 bus, its FPL value is used. The processor with the highest priority gets access to the bus. Once the bus is granted, the first access occurs. If a multiple-word block transfer is performed the SPL value is then used as the priority to maintain the bus for subsequent cycles. As long as no other processor of higher priority requests the bus, the burst-access is alIowed to continue to completion. If a higher priority request is made, the block transfer will be suspended and the bus granted to the new request. The suspended block transfer will not get the bus back until its SPL value is again the highest priority request. A separate register is used to program the priority for each of the three processors. Because the External Processor can not perform block transfers, no External SPL value is required for it. I I/O mapped Base Address OOFEOOh(offsets 0-7Fh) Note that the address written to the Internal Relocation Register determines the memory or I/O address that is required to be placed on the 82786 address pins during a CPU access to the 82786 Internal Registers. The actual CPU address used may be different, and is dependent on the chip select and memory mapping logic described in Section 4.1. There are four sources of requests for the 82786 bus: - DRAM/VRAM refresh - Display Processor - Graphics Processor - External Processor (CPU or DMA slave accesses) TheDRAM/VRAM refresh requests are always top priority. That is, once the DRAM/VRAM refresh request is made, the 82786 bus will complete the current bus access and then perform the DRAM/VRAM refresh. Three BIU registers are used to set the priorities of the other three bus requests. Two priority values are used: FPL - First Priority Level- priority used when processor first requests bus. Display Priority - Internal Register Offset OAh 15 6 5 4 3 2 1 Reserved I FPL o RESET Default: S PL 0 Graphics Priority - Internal Register Offset OCh 15 6 5 4 3 2 1 Reserved RESET Default: I FPL I o 1 I FPL I o S PL o External Priority - Internal Register Offset OEh 15 6 5 4 3 2 1 Reserved o o 0 Reserved RESET Default: AlI of the priorities are programmable values from 0 to 7, with 7 being the highest priority. If two processors 10-121 AP-270 that are programmed with the same priority both request the bus, the priority in which the bus will be' granted for the two will be (from highest to lowest): - Display Processor - Graphics Processor - External Processor the FIFO when the bus request is made. If the FIFO drains completely before the bus has been granted, then the FldColor Register value will be used from the current pixel through the end of the current scan line. The TripPt may be programmed to 16 or 20 using the Display Processor LD_REG or LD_ALL commands. There are two exceptions to these programmable priorities, If the CPU makes a slave request while one of the 82786 processors makes a master request, the CPU's request will always be handled first by the 82786 regardless of priority settings, This is necessary to prevent the lock-out situation where the CPU will not grant HLDA until it completes the bus access to the 82786 and the 82786 will not complete th~ CPU bus cycle until the higher priority master cycle completes. The other exception is refresh cycles; they always will be handled while the 82786 is in a HLDA loop, The Display Processor also keeps busy during Blank times. During Vertical Blank time it performs any command loaded into its Opcode Register. During Horizontal Blank time it loads a new Strip Descriptor if necessary and begins fetching the first pixels on the line. The descriptor fetch begins as soon as the last pixel of the last line has been placed in the FIFO, If the Display Processor priority is not high enough to allow these fetches during Blank time, then again part of the display can not be generated correctly and FldColor will be used. Two bits in the Display Processor Status Register can be used to determine if the Display Processor ever gets behind: bit-5 - DOV -Descriptor Overrun - set if strip descriptor fetch does not complete by the time horizontal blanking ends. bit-4 - FMT - FIFO. Empty - set if the Display FIFO empties. The values programmed into these priority registers should be selected carefully. There is a performance penalty whenever a block transfer is interrupted. However, if block transfers are not interrupted, then it is possible that one processor must wait a long time to get the bus while another is finishing. A balance between overall bus performance and maximum tolerable latency must be made. For example, if the Display Processor is not given high enough priority, it may not always be able to fetch the bitmapped display data fast enough to keep up with the CRT. When this happens, the Display Processor will not be able to send the correct video data to the CRT and will instead place the value in the FldColor Register on the VDATA pins. To prevent this, the Display Processor can be programmed for the highest priority (after DRAMlVRAM refresh). The Display Processor internally contains a FIFO which is used to buffer the bitmap data to be displayed. The FIFO consists of 32-double-words of 32 bits each. Each FIFO double-word contains the results of a 32-bit fetch from the bitmap memory. A dQuble-word can therefore contain as many as 32 pixels, or as few as 1 pixel (such as at window borders). Display Control Processor Register Block 2. TripPt Register controls when this FIFO is loaded, If the TripPt value is set at 16, the Display Processor waits until the FIFO is half empty (only 16 double-words left) before it requests a new block transfer to reftli the FIFO. The block transfer request will not end until the FIFO is again full (although the blOCk transfer may be interrupted by a higher priority request). If the TripPt value is set at 20, the Display Processor will begin requesting a new block transfer after only 12 FIFO double-words are emptied (20 left remaining), A low TripPt value generates fewer but longer block transfers and therefore the overall Display Processor bus efficiency is increased. However, a low TripPt value also requires that the bus latency be smaller. A low TripPt value means that there are less double-words left in Both bits are reset after reading the Status Register. The setting of the External Priority Register can greatly affect the performance of the external CPU when it performs an access to the 82786. Unless the External Priority is greater than the GraphicS Processor, whenever the Graphics Processor is busy with a command stream that demands significant bus bandwidth, the CPU may have to wait a significant amount of time before it can complete an access to the 82786. The CPU waits for the 82786 in the middle of a bus access until the 82786 returns the READY signal. During this wait time, the CPU will not be able to process anything, including interrupts. Of course, if the application is very graphics intensive and the CPU throughput is of lesser concern, then the Graphics Processor can be programmed with a higher priority; Use the following priority values during your initial design. Once the system is working properly, you may wish to tweak the values for optimum performance. The optimum values are dependent on the CPU and video speeds as well as the CPU and graphics instruction mix and the window arrangement. In most cases, these registers will be initialized once and never changed, It may be advantageous in some specialized applications to adjust these values when the application changes modes. 10-122 FPL SPL 6 6 Graphics Processor 2 2 External Processor 4 Display Processor Trip Point 20 inter AP-270 15 RESERVED RESET DEFAULT: 6 5 4 3 VR WT BCP GI o 0 I I I I 0 2 0 0 0 0 I WRITE PROTECTION 2 WHEN SET: ALL BITS OF ALL BIU REGISTERS ARE PREVENTED FROM CHANGING DURING WRITES. WRITE PROTECTION 1 WHEN SET: ALL BITS OF ALL BIU REGISTERS ARE PREVENTED FROM CHANGING DURING WRITES EXCEPT WPl AND WP2. DISPLAY PROCESSOR INTERRUPT SET WHEN DISPLAY PROCESSOR ISSUES AN INTERRUPT. CLEARED BY READ OF THIS REGISTER. GRAPHICS PROCESSOR INTERRUPT SET WHEN GRAPHICS PROCESSOR ISSUES AN INTERRUPT. CLEARED BY READ OF THIS REGISTER. EXTERNAL BUS SIZE 0=8 BIT BUS 1 = 16 BIT BUS WAIT STATE FOR iAPX 186 0- MAX 1 (2) WAIT STATES 1 - MIN 2 (3) WAIT STATES VRAM CONTROL 0- USING STANDARD DRAMS 1 - USING VIDEO DRAMS The BIU Control Register contains a miscellaney of bits. After the BIU Registers have been initialized, the WPI and WP2 bits can be used to protect all of the BIU Registers (82786 Internal Register offsets OOh - OFh) from being rewritten. This will prevent faulty software from going wild and placing the 82786 into an unwanted state. Once WPI is set, the only way to change the BIU registers is to reset WP I first. Once WP2 is set, there is no way for the software to modify the BIU registers until a 82786 hardware RESET is performed. After the 82786 causes an interrupt, the GI and DI interrupt bits are used to allow the software to determine whether the Graphics or Display Processor caused the interrupt. It is possible that both of these bits may be set if both processors have caused an interrupt by the time the interrupt handler reads this register. In this case, both interrupts should be handled by the interrupt handler. Although it is not absolutely necessary to allow the 82786 to interrupt the CPU, it is very desirable. Graphics Processor interrupts can inform the software when 292007-19 it has completed all the commands as well as to report error conditions. Display Processor interrupts can inform the software when a new display field has begun. A new command can then be loaded into the Display Processor to be executed before the next display field. This facilitates operations such as smooth scrolling and blinking. The only hardware requirement to permit 82786 interrupts is that the 82786 INTR pin is tied to one of the interrupt controller inputs. Although the 82786 always uses 16 bits, the 82786 can be used with both 8 and 16 bit processors. For an 8-bit CPU, separate transceivers are required for the low and high bytes to the 82786 (Figure 18). In both 8 and 16 bit modes, graphics memory may be accessed a byte at a time. Although the 82786 internal registers may be read a byte at a time, they all are considered to be 16 bits (even if some of the bits aren't used) and must always be written in 2-byte even-word pairs. In 16-bit mode, they must be written as a 16-bit word. In 8-bit mode, first the lower (even-address) byte is written and then the upper (odd-address) byte is written. With an 8bit processor such as the 8088, both of the following assembly r~)Utines may be used to load the 16-bit BIUControl Register with AX. 10-123 AP-270 <}- BHE DEN 00188 Ae ~ ~ SEN / - DE r--- Dls,a '245 82786 L:f) ~ DE D7:0 D7,e '245 292007-20 Figure 18. 8-Bit CPU Uses Two Data Transceivers to Connect to 82786 mov out mov inc out dX,BIUControl dX,al ;write AL into low-byte of BIUControl al,ah dx dX,al ;write AH into high-byte of BIUControl or: mov dX,BIUControl out dX,ax ;write AX into BIUControl word In 8-bit mode, an even-byte write to an 82786 Internal Register does not change any of the 82786 Internal Registers, the data is simply saved until an odd-byte write to a 82786 internal register is performed. Then both the high and low bytes are written into that register. In effect, the even-byte address is ignored and an odd byte write will write into the register both the odd-byte data and whatever even byte data was last written, into the register address specified by the odd-byte access. There is no limit to the amount of time allowed between the even byte and corresponding odd-byte writes. An odd-byte write that is not preceded by an even byte will be ignored. The 82786 always comes up in 8-bit mode after RESET. This means that a 16-bit CPU should change the BCP bit to one. It must perform two byte-wide accesses to do this. The following initialization code can be used. mov dX,BIUControl mov al,30h out dX,al ;write 30h into low-byte of BIUControl xor al,al inc dx out dX,al ;write OOh into high-byte of BIUControl mov dX,InternalRelocation mov aX,03F8h out dX,ax ;write 03F8h into InternalRelocation word The 82786 is first placed in 16-bit mode (using two 8-bit writes), then the 82786 Internal Registers are located at the desired address (which is done with a 16-bit write). Next, the DRAM/VRAM and priority registers should be initialized. Byte-wide writes into the 82786 Internal Registers can not be performed while BCP ~ 1. All the 82786 master mode operations are 16 bits wide independent of the BCP bit. This means that system memory must be accessible 16-bits at a time if master mode is to be used. The WT bit is set to 1 on reset. The VR bit is reset to o at reset. 10-124 infef AP-270 4.3 80286 Synchronous Interface The 82786 has been optimized for the 80286, which minimizes the interface logic requirements. Figure 19 shows a 82786 connected synchronously to an 80286. Much of the logic, such as the 82288, chip-select, and ready, can be shared by the rest of the 80286 system. This configuration allows both master and slave accesses. The data transceivers allow the 80286 to access the 82786 and graphics memory and the 82786 to access the 80286 system memory. They also provide the isolation required to allow the 80286 to access system memory while the 82786 accesses graphics memory simultaneously. The tristate buffer 74LS367 is used to pull the .80286 upper address lines, COD/INTA, LOCK and PEACK to their proper states during master mode. If any of these signals are not used by the rest of the system, they need not be driven by a tristate buffer. If master mode is not required, MEN will stay low and three of the four gates driving the data transceivers can be eliminated. Also, the tristate buffer, which is only used in master mode, may be eliminated. HREQ should be left open and the 82786 HLDA pin should be tied to ground so that the 82786 will never enter master mode. Both the 80286 and the 82786 internally divide-by-two the CLK input and use both phases. For the 82786 to run correctly with the 80286, these phases must be correlated correctly. This can easily be done by observing the setup and hold times for rising RESET for both chips (see 80286 data sheet specifications and 82786 data sheet specifications). The 82C284 chip will meet this requirement. Depending on the CLK speed and the type of DRAM/ VRAM used, the 82786 may have very stringent CLK duty cycle requirements (see Section 3.2). It may not be possible to use the internal oscillator of the 82C284 chip but it may be possible to use an external oscillator to drive the 82C284 external clock (EFI) pin. Clock skew between the 80286 and the 82786 should be kept to a minimum so the chips should be placed as close together as possible. When the 82786 bus is free, the circuit in Figure 19 permits CPU slave accesses using 2 wait-states for writes and 3 wait-states for reads. Using DRAMs/ VRAMs with slightly faster access times, the circuit in Figure 20 permits both read and write slave accesses using 2 wait-states. The 82C284 SRDY input is used instead of ARDY. The 82786 SEN timing is such that a minimum of 2-wait states are always generated for writes but a minimum of 2 or 3 wait-states are used for reads depending on the use of SRDY or ARDY. Notice that with 2 wait-state reads, the SEN signal must be qualified with CS so that SEN does not extend into the cycle following the slave write. The most critical relationship to be satisfied in order for 2 wait-state writes is: Tcac < Tc + Tch - 15 - 45 For a 10 MHz 82786 the DRAM/VRAM column access time must be: Tcac < 50 + 25 - 45 = 30 ns Note that x 1 DRAMs have two transceiver delays. 10-125 inter AP-270 The critical timing calculations for slave mode are calculated as follows. The actual numbers calculated are for an 80286/82786 system running at 8 MHz. chip-select-logic < < < < ready-logic (if ARDY is used as in Figure 19) < < < < ready-logic (ifSRDYis used as in Figure 20) < < < < read data valid 2 82786.Ts22 + path from 80286 address to 82786 CS pin 2 X clock period address valid 286.T13 2 X 286.T1 2 X 50ns 35 ns 60 ns path from 82786 SEN to 82C284 SRDY pin clock period SEN active 286.T1 82786.S18 25 ns 50 ns 25 ns path from 82786 SEN to 82C284 ARDY pin clock period SEN active 286.T1 82786.S18 SOns 25 ns 10 ns from SEN active to read data valid transceiver delay from SEN active to write data valid setup 82786.Tsl 5 ns ARDY setup 82C284.T13 Ons SRDYsetup 82C284.T11 15 ns write data valid 2 82786.Ts20 The master mode signals generated by the 8278'6 are all within the specification range guaranteed by the 80286. In other words, if the system memory is designed to function with the 80286, it will also be able to function with the 82786. The only signals that may not be within the range of the 80286 specifications are the data bus signals due to the transceiver delays. Care must be taken to ensure that the memory subsystems that the 82786 is to be able to access in master mode can meet these more stringent requirements: read data setup > > > write data valid < < < data valid to falling clock after Tc phase 2 + transceiver-delay 82786 read data setup + data in to data out 82786.T8 5 ns + Tprop data valid delay from falling clock after Ts phase I 82786 write data valid transceiver delay 82786.T14 data in to data out 40 ns Tprop The clock skew between the 80286 and the 82786 must be considered in all these calculations. 10-126 t ( 'READ'Y EFI iOOiV _ F/~ i!EIliiY DEN CLK g 82C284 ~ RESET ell( 82288 DT/R t---- CLOCK f--- GENERATOR MID '---------' Uo -a::!! IDC ... C §!. iil r I I IiEAi'l Rr.DY RESET ur~ a:. -N ~K ~K HOLD HLDA HREQ HLDA 2.s: Sa §~ BilE 2.s: NUl .:. I\) =eo< !!!.g Ie g0 ..... ID C o..... -:r .... _ =e lll "'a: ;:;:111 PEAC. 1IIrZ86 . A21'0 Ie! -a 0150 ll:::l &2 !UFFER ! 1r =~~ ~ =e::::' ID III rr=;:r DE 74ALS367 CDD/INTA _ III WID ID ID ~ IOcK wID 1115a -III 7'< ~ ~ MID ~ MID 3 ..... Vt . l\r L-_ _ _ _ _ _ _--' RESET ~ BilE ~c DTHER~ :1 ~ READ~~ ~ a~~9-E-- SEN INT. INPUTS 82786 . l> E "D MEN LV- tALSl38 ~ DECODER I\) ~ Q rI II T/R ~ -V ; A21,. C'E It-\ 1\ J L E A 74ALS245! [\r Ii TR'ANSCEIUER 015,. DRAg,. T:N;Y:i;tPHMEE::~i ~ t-. ~\ -----v CAS.m. JEti.liE J~ J DRAg. m . CAS. BEN.liE 015,. 82786DRAM/VRAM 292007-21 I EFI tF/C SR~ 82C284 SI READ'1 - ely. sa Sf se elK READ'x' c "TI:!! lllea (/I r::: ;;C;; I eLK eLK HOLD HREQ HLDA HLDA se 3_. '0) ..... Rii MIO BHE MID BHE SEN LOCK "en PEACK !;en ::J'< _. ::J 88286 CODII NTA A23 A22 NIji ::EiiC ~~ CD III ...... CD_ ::0 111 CD < III CD 11- - ... a ::E!!l .,;:;m CD n CD A21 RESET iiR Sf ., N en... .."en ., l READY 0) ~ 3 0 I\) o_ 0::J CD ALE l -- CLOCK GEHERA1UR RESET 0) 3 n r::: :::r DT/R - 1 READY ,,~ ~ 82288 MID RESET ::oN >p iiC N (/I CD DEN ~ B ~ nr='~:=' ~ Vce OE uc;;r/ E 74LS373 l.'~'': r' ~ \J 82786 :I> "P ....N o CS r--- ____.1\ e I 015: 13 INTR MEN '"""+1> ~)-- nr::CODER /1 T09~ 8259 J CJ, ..........{ T/R I -V CE ~\ l,/~\ \ ' V A A21 : e 74ALS245 B TRANSCE I IJER \r IV' ._-....-.,./ ro S\'STEM NEtIOR',' AND PERIPHERf.lLS ~ / DIS :0 DRA9 e CAS , RAS , BEN. LiE f~ r~ DRA9 13 CAS, RAS , BEN. DIS: iiE e 82786DRAM/VRAM 292007-22 AP-270 4.4 80186 Synchronous Interface The 82786 supports a synchronous status interface to the 80186. The 82786 bus clock and the 80186 x 1 Crystal Input must be driven with the same external clock (EFI). The Reset inputs to the 82786 must be generated from the RES for the 80186 by delaying it by one clock (input). This guarantees that the 82786 Clock phase 1 is coincident with 80186 CLKOUT low. A synchronous 80186 interface is selected ifBHE is high and MIO is high prior to falling 82786 RESET. Generally this configuration will be used with a minimum of 3 wait states for the 82786 slave read and write accesses. Therefore the WT bit in the 82786 BIU Control Register should be set. The 82786 slave accesses will then only be initiated when the 82786 CS is actually activated. There is, however, a way to allow this interface to use a minimum~f 2 wait states (set WT = 0). Rather than wait for CS to go active, the 82786 can be allowed to request a slave access as soon as the 80186 status lines go active. If the 82786 is not in the midst of another bus cycle and the CPU request is the highest priority, the bus will immediately be granted to the CPU and a bus cycle started. If the CS then goes active the 82786 can complete the access within 2 wait-states. If CS does not go active (because the 80186 is not accessing the 82786 but rather its own memory or I/O) then the 82786 will abort the bus cycle by running a dummy 82786 bus cycle. If there is other RAM or ROM in the system besides the 82786 graphics DRAM/VRAM that the 80186 often accesses, then this 2 wait-state will probably hinder rather than help performance. Every time the 80186 fetches from its own system memory (such as an opcode fetch or operand access), and the 82786 bus is idle, the 82786 will waste time running a dummy cycle. Fortunately, the busier the 82786 bus is, the less likely it will be free when the 80186 initiates a bus cycle, and therefore the less likely the 82786 will waste time running a dummy cycle. 4.5 Asynchronous Interface An asynchronous interface can be used to interface the 82786 with nearly any CPU. The CPU clock and the 82786 clock are independent and may run at different speeds. If the 80286 is connected asynchronously with the 82786 and both processors are run at approximately the same clock frequency, then the minimum possible wait-states is one more than for the corresponding synchronous mode. Figure 21 shows a slave-only 10 MHz 82786 interface to an 8 MHz 80186. At 10 MHz, the 82786 r~res that the address becomes valid S17 = 80 ns after RD or WR falls and remains valid for S16= 130 ns. Because ~80186 address disappears the same cycle RD and WR fall, the address must be latched. This latched address can be shared by the other components on the 80186 bus. Due to the indeterminate phase relationship between the CPU and 82786 clocks, care must be taken to ensure the read/write data timings have enough slack. When the read data is sampled, and when the write data is removed is determined by the CPU's ARDY input. The 82786 SEN signal is used to generate the ready signal which ensures that the data is indeed available. D-flip-flops can be used to delay the SEN signal to delay the CPU Ready signal. For a 10 MHz 82786: from SEN active to read data valid read data valid;;:: 82786.Ts22 + Tprop from SEN active to write data valid write data valid;;:: 82786.Ts20 To initially place the 82786 into the asynchronous interface mode, the 82786 BHE pin must be low during the fallin~e of RESET. To ensure this, the 74LS373 latch for BHE is tristated and an open-collector inverter pulls down BHE during RESET. The 80386 processor can be interfaced to the 82786 either synchronously or asynchronously. For a synchronous interface, standard logic can be used around the 80386 to emulate a 80286 style bus for use with the interface described in Section 4.3. IIi this configuration the 82786 bus would run at half the clock rate of the 80386 (a 16 MHz 80386 would run with an 8 MHz 82786 bus). For an asynchronous interface, the standard local bus controller logic used by the 80386 to interface most peripherals can be used (Figure 22). Although the actual bus transfers of a synchronous bus are faster than for an asynchronous bus, there are cases where an asynchronous interface provides the highest performance. For example, for a given display resolution, the Display Processor overhead of a 10 MHz 82786 is a lower percentage of the total bus throughput than for an 8 MHz 82786. If the 82786 is used with a 16 MHz 80386, then an asynchronous 10 MHz 82786 would have more bandwidth for the CPU and Graphics Processor than a synchronous 8 MHz 82786 and therefore CPU accesses, generally, will be completed faster with the asynchronous interface. 10-129 l ARDY !! IQ c: L ID ...... GEHERAmR '7 RESET .. I\) ~ iiR ~ '---- XI OPEN CO ~CTOR ..., I\) DEH CO DT/R 0 . 98196 = n- 0 ::J 0 c: f/) 1\ AIS; 16 11 6::J -< 5' -. CD III () ID ~ 'fe A21 A20 F ~ = MI0 1\\ LATCH 92786 "~. ):0 N A19: 16 1/ E ALE en iii < ID SEH ilE F>ff () :::r iW READ";S~ ...... f/) ...... '< ::J ClK HLDA HOLD INPUTS en ..... CO ~ (,) I RESET IHTR OTHER 0 en = Jfi! INTI co > ( CLOCIC CLOCK GENERATOR E ;;1 HlJ16: 0 h 'I r' LATCH nI {/~ ~). ~ A1S:9 V 1/" -"\ V A ~ /L-__l\ • TRAHSCEIOEFi' '-..r- tV TO S'iSTEM MEMORY AHD PERIPHERALS U\ L--yl D15: 0 .=.~ DRAS: 0 Jrn.~ DRA9' 0 CAS,~ Jrn.~ 1J· 11 DIS: 0 82786 DRAM/VRAM 292007-25 ,w~ J cf GEHERA'lUR _ "TI I .., ARDY cE' I: ~ ~ C1I ~ TIR CD 0 W CD aI IHT! I» LOCAL CD aI BUS l> III ..... < o ::J .:.. n c.:> ::r .., ..... CONTROL LOGIC READ'~~>-- IUPUTS OPEN L-{00LLECTOR .->0- DEH 0 I: III en iii' < C1I 6::J -< ...., 5' C1I Q;' n C1I LE BHE 0 A3!,e 88386 TIR IHTR OTHER SEH ~}- [11 l\r 'liD D!S, e t\ ~/ \J » ." A20 82786 cs I '"....o MIO BHE DE 74LS373 nJ LATCH ~ \ A21 F DT/R SELECT ALE ::J HLDA HOLD RD RD ..... "" RESET eLK I» !" CD 1 I READ'l RESET J ~ ] L TO S.:'~'STEt1 MEMOR':.;' "/ "-../'~' ANI! PERIPHERAL::: \ I T/R CE /~\ J\ \ 1·/ A I=H9'e 74LS245 B TRAtlSCE I UER I\r DIS: I) [ fl t/ DRA9: () CAS, RAS , BEH • liE e CAS, RAS , DRA9 / BEN, liE D!Se 82786 DRAM IV RAM 292007-85 intJ AP-270' 4.6 Multiple 82786 Interface For higher performance, it is possible to use several 82786 chips in the. same system. Any of the above CPU/82786 interfaces can be used to attach multiple 82786s to one CPU in the system. Each 82786 will require its own separate DRAM/VRAM array. The driving software for these multiple CPUs would most likely be sending nearly the same commands to all of the 82786s. Rather than forcing the software to write commands to each 82786 individually, it is possible to allow write commands to go to several or all the 82786s. One method of determining which 82786s should receive the write command would be to first write to an I/O port in which each bit corresponded to a different 82786. In Figure 23, the port bits set to 0 enable the corresponding 82786 for CPU writes. When a write to 82786 address-space occurs, all of the selected 82786s are chip-selected. The CPU will then wait for READY from all the selected 82786s before completing the bus cycle. In this manner, one, all, or any combination of 82786s can be written into at once. Because it is impossible to read from several 82786s at once, a priority scheme is used on the I/O port to allow a read from only one of the selected 82786s. The circuit in Figure 23 only allows slave-accesses, the 82786s may not enter master-mode. If master-mode operation of the multiple 82786s is desired, each 82786 must access the bus separately. A priority scheme is used to determine which 82786 is awarded the bus when the CPU issues HLDA. With only two possible 82786 masters, the random circuitry to hold one 82786 off the bus while the other is using it is straight-forward (Figure 24). With more 82786 masters, it is more feasible to use a state-machine (possibly implemented in PALs) to perform the arbiting. ed to allow a color look-up table or to trade-off the number of bits/pixel for higher display resolutions, or to use VRAMs. Some of the possible display configurations are shown below. The calculations assume a 60 Hz refresh rate. High resolution CRTs are often run at a slower rate, which permits the 82786 to generate significantly higher resolutions than those in the following table. All eases assume a CRT horizontal retrace time of 7 ,....s, except the 512 X 512 X 8 (10 ,....s) and 640 X 400 X 8 (13 ,....s) cases. With Standard DRAMs Non· Interlaced Interlaced 8 Bits/Pixel (256 colors) 512 X 512 640X400 640X480 900X675 4 Bits/Pixel (16 colors) 870X650 1290X968 2 Bits/Pixel (4 colors) 1 Bit/Pixel (monochrome) . 1144X860 1740X1302 11472X 1104 2288 X 1716 Multiple 82786s can be used together to generate even higher resolutions with more colors. For example, two 82786s allow a non-interlaced 1144 X 860 sixteen color display. With Video DRAMs' Non-Interlaced 8 Bits/Pixel (256 colors) 4 Bits/Pixel (16 colors) 2 Bits/Pixel (4 colors) 1 Bit/Pixel (monochrome) 1024 2048 2048 4096 X 1024 X 1024 X 2048 X 2048 'For 64K by 4 - with 256K by 4 higher resolutions are supported 5.0 VIDEO INTERFACE 5.1 Various CRT Interfaces The video interface connects the 82786 to the video display. The 82786 is optimized to drive CRT monitors but may also be used to drive other types of displays. Because CRTs provide an inexpensive. method of generating moderate and high resolution, monochrome and color displays, this application note will concentrate on CRT interfaces. Section 5.10 briefly describes other display interfaces. . CRT monitors use a wide variety of interfaces. Some use TTL-levels on all inputs, others require analog inputs. Some use separate color inputs (red, green and blue) and separate horizontal and vertical sync while others require that some or all of these signals be combined into composite signals. This application note will concentrate on the generation of separate color and horizontal and vertical sync signals. Standard techniques can be used to convert these separate signals into composite signals to meet the requirements of other displays. The video interface for a CRT is very dependent on the CRT requirements and the resolution and depth (bits/ pixel) of the image desired. The 82786 can be programmed to directly generate all the CRT signals for up to 8 bits/pixel (256 color) displays at video rates up to 25 MHz. In addition, external hardware can be add- The video clock (VCLK) required 'by the 82786 may be generated by a simple oscillator with TTL-outputs. Alternatively, the VCLK can be tied to the bus clock (CLK) (or any other available clock) if they are to run at the same speed.. 10-132 infef AP-270 ~ f-\i~ :=-=-=-=-=-=-=-============: ~U ,--------------------------vv;i ri~f t-= =.,~ '- 0 g ~ ~~~ : . M " gr-- g " '----------------~ Figure 23. This Configuration Allows Several 82786s to be Written by 80286 Simultaneously-Only Slave Accesses are Supported 10-133 inter AP-270 - Figure 24. Two 82786s Connected to 80286, Permits Slave and Master Accesses 10-134 inter AP-270 I VIDEO CLOCK GEHERA1UR J I VCLK HS'lNC HSYNC/WSO VSYNC/WS1 VSIINC BLAI~K BLANK 82786 CRT IHTERFACE 'JDATA3 INTENSITII ')DATA2 VDATAI RED LJDATAO BLUE GREEI~ 292007-28 Figure 25. 82786 Can Directly Drive TTL-Input CRT Interface I VIDEO CLOCK GEHERA1UR I ')CLK HSYNC/WSO D Q HS'lNC VSYNC/WS1 D Q LJSIINC BLANK D Q BLANK UDATAS D VDATA2 ,)DATAI DFLIP/FLOpQ Q D VDATAO D 82786 CLK 748374 Q a CRT IHTERFACE INTENSITII RED GREEN BLUE 292007-29 Figure 26. Buffer Used to Drive TTL-Input CRT Interface 5.2 CRTs with TTL-level Inputs 5.3 CRTs with Analog Inputs The simplest interface is to CRTs that use TTL-level inputs. The 82786' can generate these signals directly (Figure 25). However, the drive requirements of the CRT and cabling may make it necessary to buffer the signals (Figure 26). The example monitor in both of these cases happens to use a CRT that uses four-bits of color information per pixel. This means that 16 different colors are available and the CRT can use the 82786 1,2, and 4 bits/pixel modes but can not take advantage of the 8 bit/pixel (256 color) mode. A monochrome monitor with only one TTL-level input could be connected directly to VDATAO and use the 82786 1 bit! pixel mode but it then can not take advantage of any of the higher bit/pixel modes. Taking advantage of the 8 bit/pixel mode of the 82786 usually requires using a CRT with analog inputs. Signals for color CRTs with three separate analog video inputs, (red, green, and blue) can be generated using three digital-to-analog converters (Figure 27). Often these digital-to-analog converters can be constructed using simple resistor ladders (Figure 28). With 8 bits/ pixel, usually three bits are used to select red, three for green and two for blue. This is because our eyes are much more sensitive to variations of red and green than of blue. These configurations can take advantage of all the 82786 modes; 1, 2, 4, and 8 bits/pixel. The VDATA pins may be assigned to the three colors in any manner desired. In Figure 29 they are assigned so that a variety of colors are available for each mode (1, 2, 4, and 8 bits/pixel). 10-135 inter AP-270 I VIDEO CLOCK GENERATOR J I VCtK HSYNC/WSO VSYNC/WS1 BLANK HSIINC USIINC BLANK I LEVEL I I SHIFTER I VDATUl VDATA3 82786 l'DATA6 I I D/A I I GREEN UDATAI l'DATA4 UDATA? I I D/A I I RED IJDATA2 VDATA5 J D/A I I BLUE CRT INTERFACE 292007-30 Figure 27. Analog CRT Interface Allows 256 Colors I VCtK HSYNC/WSO VSYNC/WS1 BLANK VDATA9 UDATA3 82786 UDATA6 VIDEO CLOCK GENERATOR I I HSIINC USIINC BLANK LEVEL J SHIFTER .~ 2R 4F 1 T r- GREEN CRT INTERFACE .~ UDATAI UDATA4 UDATA? --<2F VDATA2 'JDATA5 2F 4F 1 T .~ -.t- ANALOG RED BUFFER r- r- BLUE 292007-31 Figure 28. Resistor-Ladder Used for 01 A 10-136 inter VDATA7 AP-270 VDATA6 VDATA5 VDATA4 VDATA3 VDATA2 VDATA1 VDATAO Figure 29. VDATA Pin Assignments - The most-significant Green bit is connected to VDATAO so that in the one bit/pixel mode this bit is controlled while the other bits are set to a constant level by the padding register internal to the Display Processor. If, for example, the padding bits are all set to zero, then a green and black image is shown in one bit/pixel windows. - With two bits/pixel the most significant Green and Red bits are controlled while the rest are padded to a constant value. If, for example, the padding bits are set to zero then the colors black, green, red, and yellow are available in two bits/pixel windows. - Four bit/pixel windows contain two Green bits and the most significant Red and Blue bits making 16 colors available. - Eight bit/pixel windows allow control of all eight bits to make all 256 colors available. 5.4 Using a Color Look-Up Table Color Look-up Tables, also known as Video Palette RAMs, allow more colors to be available with a minimal of actual bits/pixel and thus a minimal amount of display memory is required for the bitmap. For example, in a system using 16 bits of color information, 65536 different colors are possible. In such a system it is rarely necessary to display all 65536 colors on the screen simultaneously. It may be feasible to support a maximum of 256 colors simultaneously, providing that these 256 selections can be any combination of the 65536 available colors. Color look-up tables permit such a cost-effective system. A block diagram of such a system is shown in Figure 30 and Figures 30a and 30b show actual circuits. The color look-up table can be loaded with up to 256 l6-bit colors. In this wayan 8-bit/pixel bit-map can be used to control the l6-bit colors. The host CPU is responsible for loading the l6-bit colors into the look-up table. To load a color into a specific location in the look-up table, the 82786 Display Processor can be programmed to output the 8-bit address on the 8 VDATA pins during the horizontal and vertical blank times or on RESET by setting the Default Video Register. Then the CPU can load the color value into the l6-bit latch. The circuitry in Figure 30 wiII then automatically write the l6-bit value into the look-up table during the next horizontal sync time. The CPU should generate the 74AS373 latch enable input so that the latch can be mapped into memory or I/O space and loaded by a CPU write. The register between the 82786 and the Palette RAM is used to allow the use of a RAM with a slower access time. This register is not necessary if a faster RAM is used. The CPU program should wait until the color is loaded into the look-up table before loading the next color. One way to ensure this is to route the LookupLoading signal through a port which the CPU may poll. Sample assembly language code for this configuration follows this section. Another way is for the CPU program to delay a sufficient amount of time to ensure that HSync has occurred before writing the next value. Hybrid circuits can be used which combine the functions of the look-up table, analog-to-digital conversions, and voltage shift for composite sync signals into one package. Figure 30b shows such a configuration. This particular hybrid circuit internally contains a 16 X 12bit look-up table, 4 bits for each red, green, and blue. r---~:::U~C~L;K~============~====~==~======~~~ __Q}f-----I ____-J r.-------------------------------l BLANK I.-;:::;=::::===;-__~====j__:_--~ BLANK I eLK HSYNC/WSO HSl'HC VSYNC/WS, US'NC f-----l 82786 CRT IHTERFACE FLIP/FLOP VDATA7: a D15:8 Q1S:8 VIDE01S: B 292007-32 Figure 30. Block Diagram of Color Look-Up Table Used to Generate 16 Video Bits From 8 10-137 inter AP-270 UCLKt~======l==========================={i~~~~~____~ HSYHC USYHC 82786 BLAHK MT====j====:---~r==~==:=:l_:_--_:~~~i;~~:_--~1 BLAHK UDATA7,e HSYNC/WSO VSYNC/WS1 H--------+-----------------------------j CRT IHTERFACE VIDEOls,e BIT DATA 16 CPU IHTERFACE 292007-33 Figure 30a. Circuit for Color Look-Up Table Used to Generate 16 Video Bits From 8 VCLKr-----------~~:_----~------------~===;~_, HSYNC/WSO f---~------\ VSYNC/WS11--_+-_ _--I 82786 )-------------------jSYNC BLAHK f----t-----.....,~-----------------------j CRT IHTERFACE VCLK BLANK RED VIDEO 1 - - - - - 1 GREW VIDEO VOATA7:0 !==+:]8C§B!i1IT:§:S::::j~===========~ P7:0 INTEL .-------j BLUE VIDEO 81C38 R/W PALETIE DAC A07:0 DATA CPU INTERFACE 292007-34 Figure 30b. Hybrid Color Look-Up Table and DAC Simplifies Interface 10-138 intJ AP~270 Wait: in test jnz mov mov mov out al,StatusPort al,LookupLoadingBit Wait ax,EightBitAddr DefaultVDATA,ax aX,SixteenBitColor LookupLatch,ax The look-up table is loaded by first writing the location into the 82786 DefaultVDATA register. Then a 4-bit color value is loaded into the latch along with color-select information. Therefore, in one load it is possible to place this 4-bit color value into any combination of the red, green, and/or blue tables. 5.5 Using the Window Status Signals A graphics system design may require that the video data bits for different windows be interpreted in different ways. For example, the attributes controlled by various video data bits may need to be changed between windows for different tasks or number of bits/pixel. For these reasons, two Window Status bits are available externally which reflect a value which may be individually programmed for each window. These two pins always reflect the window which the display is currently scanning. The software is responsible for placing the' two bit values for each window in the Tile Descriptor list. In addition, the cursor can be programmed with a value for the window status bits which can be programmed to override the status bits from the windows for the portion of the display where the cursor resides. The Window Status bits are multiplexed onto the HSync and VSync pins. Since they are only applicable during the visible display time, and since HSync and VSync are only applicable during the non-visible display time, Blank can be used to de-multiplex these pins (Figure 31). A mode bit (bit 4 of CRTMode) in the Display Processor enables the Window Status bits so they become multiplexed onto the HSync and VSync signals. This bit must be set when the Window Status signals HS\lNC/IJSe are used. In systems where the Window Status bits are not needed, this bit can be reset so that the HSync and VSync pins remain low during the visible display. This allows simpler systems to use HSync and VSync directly eliminating the need to AND these pins with Blank. As an example, suppose the interpretation of the video data bits by a color look-up table was to be different for different windows. Possibly four different look-up tables are required for four different types of 8 bit/pixel windows. A large look-up table (1024 words) could be divided into four areas, one for each of the window interpretations. Then the Window Status bits could be used to select the area of the look-up table to be used for each specific window. Essentially four look-up tables would be available, one for each of four different types of windows. Figure 32 illustrates such a system. The system also requires circuitry to load the look-up table such as that in the previous section. Note that the look-up table's Window Status inputs must be generated directly from the CPU when the RAM is to be loaded since they can not be programmed in specific states during the blank time as the VDATA pins can. Another use of the Window Status bits is to allow 1, 2, 4, and 8 bit/pixel windows to each use a different lookup table along with a fifth look-up table for the cursor. A 1024 word look-up table above could be split up into four areas as above. Two of the areas can be used for two separate 8 bit/pixel look-up table and the other two shared by the I, 2, and 4 bit/pixel windows for two separate look-up table for each of I, 2, and 4 bits/pixel (Figure 33). The padding bits can be used to sub-divide this second area into separate tables for 1, 2 and 4 bit/ pixel windows. Finally, this same table could also be used for twelve look-up tables, four each for 1, 2, and 4 bit/pixel windows. rLJ rLJ VSIINC/lJSl 82786 ;read port ;test LookupLoading bit ;wait til last load completed ;get 8-bit value to load ;make 82786 output during BLANK ;get 16-bit color ;write color into latch BLANK 4 " .r IoIINDOIJ STATUS HSIINC VSIINC BLANK CRT IHTERFACE 292007-35 Figure 31. Using Blank to De-Multiplex Window Status 10-139 intJ AP-270 HSYHC USYNC BLAN" CRT I HTERFACE 292007-,36 Figure 32. Four Color Look·Up Tables-Selectable by Window Status Outputs FFh FFh FFh FFh ISh I~h 8 BIT/PIXEL 8 BIT/PUCEL PALE1TE 1 PALETTE 2 ISh 1 Bn/PUCEL ISh PALETTE I I4h 1 BlT.tPUCEL PALETTE I ISh 2 BIT/PIXEL PALETtE 1 ISh SFh PALETTE 1 UIEUPORT STATUS 99 ; UIEUPORT STATUS 91 4 "BIT/PIXEL PALETTE I 4-BIT/PIXEL PAD: e0e9X>O:XX'b 9Sh aah B6h 2-BlT/PIXEL PAD: e99109XXh ISh 9Fh 4 BIT/PIXEL a9h I-BIT/PIXEL PAD: 9001818XI) 2 BIT/PIXEL PALETTE 1 VIEWPORT STATUS. 11 VIEUPORT STATUS 18 292007-37 Figure 33. Window Status and Padding Bits Allow Two Separate Look-Up Tables for Each of 1, 2, 4, and 8 BIt/Pixels I I 58 MHz CLOCX GENERATOR UCLK a--.J a, HSYNC D Q USYNC D Q BLANK HSYNC/WSO {>-D D VSYNC/WS, BLANK 82786 UDATAa _ D UDATAI _ D UDATA2 _ D UDATAS _ D CLK Q - IA Q- 2A Q- aA Q- 4A FLIP/FLOP Q~ IB UDATA4 _ D _ D Q - 2B UDATAS Q - aB unArAS _ D UnATA? _ D Q- 4B CLK CRT A/B IHTERFACE FLIP/FLOP IV_D 2Y _ D av _ D Q INTENSITV Q RED Q GREEN 4V ' - - - D Q BLUE 2, I NUX 292007-38 Figure 34. External Multiplexer Allows Up to 50 MHz Video with 4 Bits/Pixel 10-140 inter AP-270 5.6 Higher Resolutions with Standard DRAMs HFldStp, and LineLen registers are programmed for half the number of dot clocks (because the 82786 VCLK is half the speed of the pixel dot clock). The Video Clock rate on the 82786 can be a maximum of 25 MHz. For a non-interlaced display refreshed 60 times per second this limits the resolution to 512 X 512 or 640 X 400 or equivalent displays. 640 X 480 can also be achieved using a CRT with fast horizontal retrace. Still, some graphics system designs may require more detailed displays and therefore more resolution. It may very well be cost-effective to trade-off the number of bits/pixel for higher resolution. This is especially true in the case of monochrome displays where 256 grey-shades are not required but high resolution is. The Strip and Tile Descriptors list also change only slightly. Windows are programmed for same number of bits/pixel and FetchCount as they would be for non-a~ celerated modes. However, windows may only be POSItioned horizontally to start on even pixel boundaries. That is, they may only start at every-other pixel, not at any pixel as permitted with non-accelerated modes. This is because both an even and odd pixels are output on the VData pins simultaneously and it is not possible to mix windows during a single VCLK. The only valid values for the start/stop bits are listed in the following table. Notice that the Accelerated Modes do not permit all possible bitmap depths because fewer than 8 bits/ pixel are available to the display. The 82786 allows this trade-off to be made very effectively. Figure 34 shows how a video data rate of up to 50 MHz may be obtained with 4 bits/pixel (16 colors). The 82786 is used to output 8 bits of video data at a 25 MHz rate. The external multiplexer switches between the low 4 bits and the high 4 bits at a rate of 50 MHz. The register before the multiplexer is used to ensure that enough set-up time is provided for the multiplexer. The register after the multi~l~xer ensure~ th~t the video data out has smooth transItIOns. The CIrcUIt uses an inverter and one register stage to divide the 50 MHz clock by 2 to create the 25 MHz video clock for the 82786. Instead of a multiplexer such as the 74S157, a 74AS298 chip could be used which contains the multiplexer and the register iIi the same package. The software has a minimum number of changes. The Graphics Processor is programmed identically and manipulates the bitmaps in the conventional. man.ner (~l though it does not make sense to use 8 bIts/pIxel bItmaps since they cannot be displayed). The display processor programming is slightly different. The Accelerated Video control bits (CRTMode bits 1,0) are set for High Speed video (01). The HSynStp, HFldStrt, Bitmap Depth 1 bit/pixel None (25 MHz) Vertically, the windows may still be positioned at any pixel. The programming of the one pixel horizontal and vertical borders also does not change. High-Speed video mode also requires that the Field windows are programmed with half the number of actual pixels for the pixel count (BPP/Start/Stopbit) register which again restricts horizontal positioning to a two pixel resolution. The horizontal cursor position is programmed as half the actual value so the positioning is also restricted to a two pixel resolution. Vertically, the. cursor is p~o grammed as normal. Since the cursor IS only a 1 blt/ pixel region, every other horizontal pixel reflects only the cursor padding value so although simple cursor patterns are possible, arbitrary shapes are not possible with the box cursor. For this reason, the programmer may wish to create the cursor in software when using these high-resolution modes rather than use the 82786 hard- High-Speed (50 MHz) Very-High-Speed (100 MHz) Super-High-Speed (200 MHz) Start Bit Stop Bit Start Bit Stop Bit Start Bit Stop Bit Start Bit Stop Bit 0-15 0-15 odd even 15,4,7,3 12,8,4,0 15,7 8,0 15,7 8,0 2 bit/pixel odd even 15,11,7,3 12,8,4,0 4 bit/pixel 15,11,7,3 12,8,4,0 15,7 8,0 8 bit/pixel 15,7 8,0 - - 10-141 AP-270 ware cursor. The crosshair cursor works well in Accelerated Mode, although the horizontal and vertical lines become two pixels wide and horizontal positioning is also limited to two pixels. The timing in Figure 35 is very tight and the circuit may not operate at 100 MHz over all operating temperatures. The limiting speed path is the 74F195 shift-register parallel-load time (delay from clock to outputs valid) which must meet the set-up time of the 74AS374. It is also possible to use external hardware to create the cursor. One method is to program the cursor as invisible (transparent and all background) and use the cursor's window status signals to activate the external hardware. The horizontal zoom capability is also affected. Rather than replicating each individual pixel, pairs of pixels are replicated. Vertical zoom works as normal. Figure 35 shows a configuration for video data rates of up to 100 MHz with 2 bits/pixel. A shift-register is used to multiplex the 8 video bits from the 82786 into 2-bit streams. A 74AS74 flip/flop is used to divide the 100 MHz clock by four. Every fourth clock the 82786 VCLK is raised and the shift registers are loaded with the previous 82786 VDATA. The video data is delayed two cycles by this circuit while the Sync and Blank are delayed only one. This should not be a problem if the 82786 is programmed to generate the correct Sync. The 82786 is limited to positioning the sync transitions at multiples of four pixels. If more accurate positioning is required, extra flip/flops can be used to delay sync for more cycles. Figure 36 shows a configuration for video data rates of up to 200 MHz with i bit/pixel. Unfortunately, there is no TTL-logic available today which will run at the speeds required for 200 MHz. Therefore ECL or some other high-speed logic must be used to generate video at these high rates. Figure 36 converts the video data signals from the 82786 from TTL to ECL levels and then uses ECL shift-registers to generate the 200 MHz signal. The software for the configurations in Figures 35 and 36 requires changes similar to the Figure 34 case. The window StartBits and StopBits are programmed restricted as shown in the preceding table. The pixel count for Field regions is also one-fourth or one-eighth the actual size. Horizontal positioning is also restricted to four and eight pixels for the 100 MHz and 200 MHz rates respectively. The Accelerated Video control bits must also be programmed for these configurations. After the video signals are accelerated to these higher speeds, color look-up tables and analog-to-digital converters may be used. The circuits in the previous sections must be adapted for these higher speeds. I DIVIDE BY FOUR 188 "Hz CLOCK GEHERAIDR J ClKIN +40UT VCLK HSYNC/WSO VSYNC/WSl BLANK UDATA6 IJDATA4 92786 UDATA2 IJDATA0 VDATA7 VDATA5 IJDATA3 UDATAI D D D , CLK Q Q Q HSYNC VSYNC BLANK lOADCLK DpARALLEl C FL IP/FLOP B SHIFT-REG Q QD _ D A VIDEO a lOAD eLK DpARALLEl C B SHIFT-REG QD I - - - D A VIDEO 1 Q CRT IHTERFACE 292007-39 Figure 35. External Shift-Register Allows Up to 100 MHz Video with 2 Bits/Pixel 10-142 Ap·270 I 21111 KHz D TTL Q CONVERTER ( INUERTING) UClK CLOCK GEHERAIDR B I NAR~ COUNTER Eel 10 _ 02 01 00 I ClK I ~- 1 - I ECl PUlLDOWN HS~NC HSVNC/WSO VSVNC/WS1 U5~NC BLANK BLANK 82786 QD QD TTL TO QD ECl D CONUERTER Q STB UDATA? VDATA£> UDATA5 UDATA4 - ClK 52 SI 00 D0 DI SHIFT D2 REGISTER D3 TTL CRT IHTERFACE DR ClK S251 00 Q . . . - - D0 D DI O r SHIFT D TTL TO D ECL Q ' - - - ~~ REGISTER DCOHUERTERQ I---STB UDATA3 UDATA2 UDA!AI VDATA0 UIDEO J PULLUP 292007-40 Figure 36. External ECl Shift-Register Allows Up to 200 MHz Video with 1 Bit/Pixel I 25 KHz CLOCK GEHERA'lUR j UClK eLK 0 HS~NC HSVNC/WSO D VSYNC/WS1 D Q US~NC BLANK D Q BLANK I.,.IDAfA0 D D D D D D D D 82786 UDATAI UDATA2 UDATA3 UDATA4 UDATAS UDATA£> ~IDATA? 0 Q Q Q Q Q Q Q VIDEO UIDEO VIDEO VIDEO VIDEO VIDEO VIDEO VIDEO 0 2 4 £> a A C E CRT IHTERFACE UClK HSYNC/WSO VSYNC/WS1 BLANK 82786 VDATA0 UDATAI UDATA2 UDATA3 UDATA4 UDATAS IJDArA6 UDATA? FLIP/FLOP -NO -CONNECT D D D D D D D D 0 0 0 Q 0 Q 0 0 VIDEO UIDEO UIDEO UIDEO VIDEO UIDEO VIDEO VIDEO I 3 5 ? 9 B D F 292007-41 Figure 37. Two 82786s Can Generate 25 MHz Video with 16 Bits/Pixel 10-143 intJ AP-270 5.7 Multiple 827865 If more colors or resolution are required than possible with one 82786 at a given resolution, Several 82786s can be used together to generate the necessary bits/pixel. Figure 37 shows two 82786s used together to generate 16 bits/pixel at a 25 MHz video rate. This configuration would Iillow a 640 X 480 display with 65536 colors. Both 82786s' video must be kept in sync. To allow this, one 82786 is programmed as normal to generate the master video horizontal and vertical sync. The second 82786 is prograinmed' for slave video sync with the Slave CRT control bit in the CRTMode Register (Display Processor register 5-bit 3 set). The HSync and VSync lines of the shive 82786 then become inputs and are driven by the HSync and VSync output lines of the master 82786. If the window status signals are used, the master's HSync and VSync signals should be qualified with the Blank signal (similar to Figure 31) to correctly drive the slave 82786 HSync and VSync inputs. Window Status signals are only available from the master 82786 since the slave uses these pins as inputs. Both 82786s should have six of their eight video timing' registers (HSyncStp, HFldStrt, HFldStp, LineLen, VSyncStp, VFldStp, VFldStrt, FrameLen) programmed identically; HFldStrt and HFLdStp should be programmed to be 2 less than the master. (These parameters are calculated in Section 5.1l.) The slave 82786 will then automatically sync itself up to the master 82786 by waiting for its HSync ,input to fall before each scan line and waiting fpr its VSync input to fall before beginning a new display field. If a non-interlaced display is used, the two 82786s will always be in sync. If an interlaced display is used, care must be taken to ensure both 82786s start on the same field. The easiest way to ensure they lock in sync correctly is to ensure they start scanning the display simultaneously. First set up the slave 82786 CRTMode and video timing registers with a LD.-ALL command. The slave 82786 will then be ready to begin scanning the display but will wait until HSync and VSync fall. HSync and VSync will be floating because they are tristated by all the 82786s. Then the master 82786 can be set up with a LD.-ALL command to prograin its CRTMode and video timing registers. Once the master starts scanning; the HSync and YSync signals will be driven by the master and all 82786s will begin on the even interlaced field. To create a 16 bit/pixel bitmap, both 82786 Grap~cs Processors should be programmed for 8-bit/pixel bitmaps of identical size. To draw in both bitmaps, a graphics command block (GCMB) can be created for both 82786s. These GCMBs are generally identical for both 82786s except for the color values for the Def_ Color and the mask value for the DefJogicaLOp commands. To display 16 bit/pixel bitmaps, both 82786s should be given an identical Strip Descriptor list for each to display 8 bits of each 16 bit pixel. Similarly, 8-bit/pixel bitmaps could be created by splitting the bitmaps between both 82786s having each 82786 responsible for 4 of the 8 bits/pixel. This would split the work between the two 82786s so that the BitBlt and ScanJine fill graphic commands will execute twice as fast. Also, because the Display Processor bus overhead is split between the 82786s, there will be less bus contention so all other drawing commands will be faster. Alternatively, 8-bit/pixe1 bitmaps could be generated by only one of the 82786s. This would minimize .the overheat! between the host CPU and the 82786 since the CPU must commuuicate with only one 82786. The method in which the 16 video data bits are mapped into colors for the display interface will determine which of the two above methods will be used for bitmaps of 8 bits/pixel or less. If the mapping is flexible enough,' it may be feasible to create any bitmap depth. For example, 9 bits/pixel bitmaps could potentially be created using one 82786 for 8 bits and the other for only 1 bit of each pixel. The displays discussed in the, previous section obtained high resolutions at' the expense of bits/pixel. Several 82786s can be combined to provide more bits/pixel at these high resolutions. Fignre 38 shows a configuration that uses two 82786s to create a 4-bit/pixel display at a video rate of 100 MHz. This configuration would support a 1144 X 860 sixteen-color non-interlaced 60 Hz display. Each , 82786 is required to generate 2 bits of each 4-bit/pixe1. Therefore, both 82786s draw and maintain half of the bitmap in their own graphics memory, 4-bit/pixel windows are divided into two 2-bit/pixel bitmaps, one generated by each 82786. The Graphics Processors are programmed as normal for 2-bit/pixel bitmaps. The Display Processors are programmed the way mentioned in the previous section. Each window is programmed with one-fourth the horizontal positioning resolution. 10-144 inter AP-270 5.8 Video RAM Interface The 82786 can use dual-port video DRAMs (VRAMs) to generate the video data stream. The VR bit in the BIU Control Register must be set to I to enable the mode. In this mode the first tile in each strip generates VRAM cycles; the second tile and any subsequent tiles in the strip generate DRAM cycles. In VRAM Mode, a minimum of two tiles must exist. The first tile is programmed for the VRAM. The second tile must be programmed to be a field tile detailed by the F bit in the Tile Descriptor if no hardware overlays are required. There is no limit on the number of strips. The pixel data for every scan line in the entire display must be contained in a single row in memory (256 words for non-interleaved memory and 512 words for interleaved memories). The Strip Descriptors for each VRAM tile are set up to indicate only I pixel. The address specified for this pixel corresponds to the first display pixel. During the horizontal retrace period, the 82786 transfers the contents of the memory row containing the first pixel into the VRAM shift register. The VRAM shift clock is gated with a Blank signal. During the active display time, the shift clock is active and periodically clocks out the video data. External multiplexers must be used to convert the 16-bit (32 interleaved) data stream into a serial stream depending upon the bits per pixel needed (Figure 9). In this mode, pixel depth is fixed by external hardware and all Display Processor registers referring to video data fetch should be programmed to zero. I DIVIDE BY FOUR lBB HHz CLOCK GENERATOR I ClKIN "'"4 OUT UCLK HSYNC/WSO VSYNC/WS1 BLANK D Q Q D Q UDATA? UDATA5 82786 VDATAS UDATAI lOAD elK· A PARALLEL B C SHIFT-REG QD I - - - D D UDATA6 UDATA4 VDATA2 UDATA0 ClK A LOAD PARALLEL ," SHIFT-REG QD ' - - - - D D UCLK ,, HSYNC/WSO VSYNC/WS1 BLANK CLK D HS'>!NC VS'>!NC BLANK CRT INTERFACE Q UIDEO 0 B - Q VIDEO 1 FLIP/FLOP - -CO~~ECT UDATA? ~'DATA5 ClK A lOAD PARALLEL c SHIFT-REG OD I - - D D B 82786 VDATA3 VDATAI Q ~'IDEO 2 I VDATAb UDATA4 lOAD eLK A PARALLEL SHIFT-REG ~'DATA2 B C VDATA0 D olD I - - - D Q VIDEO 3 292007-42 Figure 38. Two 82786s Can Generate 100 MHz Video with 4 Bits/Pixel 10-145 AP-270 For downward compatibility reasons, however, it may be necessary to provide the character ROM function in a 82786 system. Figure 39. illustrates a system capable of displaying both character ROM text and 82786 graphics. A multiplexer is used to switch between the character ROM output and the direct 82786 output. One of the window status bits is used to switch the multiplexer so both the character ROM and the 82786 graphics windows can be shown simultaneously on the same screen. It is important to delay the direct 82786 VDATA and window status signal the same number of clocks as the character-cell video so that all signals get to the multiplexer on the same clock. The extra D-flipl flops before the multiplexer are used to perform the needed delay. 5.9 External Character ROM Few 82786 applications will require, or even benefit froin, the use of an external character ROM. The 82786.Graphics Processor can very rapidly draw characters. It can fill an 80x25 character screen with highly detailed 16x 16 characters in less than one tenth ofa second. The Graphics Processor is also very flexible in the way it draws characters. Characters may be: - formed from an unlimited number of character fonts - placed at any pixel. on the screen - rotated in 4 directions with 4 paths - combined with graphics - drawn in any color - have transparent or opaque J>ackground The character ROM in Figure 39 is capable of displaying 256 characters using a 9x 14 pixel character-cell. The characters are stored as an 8-bit pixels within a 82786 bitmap. To display the character, the window is programmed as an 8-bit/pixel bitmap with a horizontal zoom of 9 and a vertical zoom of 14. The 82786 will then place the 8-bit character code on its VDATA pins A character ROM display forces characters from a predefined fon.t to be restricted to character-cell positions on the screen with few, if any, of the above flexibilities. J 25 "Hz CIJJCK GEHERAlUR I UCLK ID HSYNe/WSD VSYNC/WS1 ~r- 01 DFLIP/F;LOP: BLANK 82786 CLK UDAfA9 UBArA1 IJDAtA2 UDAfA3 UDAfA4 VDAfA5 IJDATA6 UBArA? CLK D 0 1A A Q 0 ••• VIDEO S • CRT B IHTERFACE t-- 1A A A A/8 4A 1Y UIDEO 4 2'1 VIDEO e; VIDEO Ii ~: ...::::: I-t-- I -t-- ~ ~ :~ RIJJ1 0 1 2 E• 00 .1 02 Q• ! RO" COUNTER CLK l If rq: .? A. A. A18 All ~ 51 S0 eLK .0 P0 PI P2 SHIFT pa REG Dst SI SO CLK 00 .4 _ p e PI P2 SHIFT '5_ ~~=== P3 .8 DSL VIDEO? • "YO .0 .1 .2 Q3 BLANK VIDEO 2 U2:1 MUX 3y 4Y Ae " - AI A2 A3 A4 CHAR USVHC VIDEO e VIDEO I til: 2: 1 Nil>:: 3V 4Y B lill - Al8 !:74S157 ~~ • DFLIP/FL~PQ D "'-L.J. -L HSYNC Vee .~ e PI W~ REG J CLK TC 2 P3 DOT COUNTER ~ rq:~ .'l. 292007-43 Figure 39. Support of Character-ROM and Bit-Mapped Graphics on Same Screen 10-146 inter AP-270 during the scan lines when the character is to be displayed. The pixel counter is used to load the shift register every 9 pixels. This counter is synchronized to the beginning pixel of the window by starting when the window status pin falls. The row counter is used to supply row information to the character ROM. This counter is synchronized to the frame by starting from the end of the VSync pulse. Therefore, any character ROM window must begin at a multiple of 14 scan lines after VSync. Another situation in which a character ROM display may be practical is if a very large character set is required. The Japanese Kanji characters are an example. The size of this character set is so large that it may be more practical to store the characters in a character ROM rather than load them from disk into the 82786 graphics memory. Figure 40 illustrates a configuration that can display up to 65536 characters from a very detailed (32x32) font. This circuit allows both text and graphics windows to be displayed on the screen simultaneously. One of the window status signals is used to select between text and graphics. broadcast TV, video recorders, and video laser disc players. The main requirement to perform such a feat is that both 82786 and the video source are locked in sync. The 82786 has two independent Video Slave modes and HSync/VSync and Blank can be independently configured as outputs or inputs. When HSync/VSync are programmed as inputs, then they are still outputs during the active display period if the window status is enabled. External HSync/VSync reset the 82786 horizontal and vertical counters respectively. When Blank is configured as output, the active display period is determined by the programmed values of VFldStrt, VFldStp, HFldStrt, and HFidStp. When Blank is configured as an input, the external system determines the active display period. The internal video shift register generates video data only during the active display period. HSync/VSync and Blank would normally be programmed as input/output as follows: Such a character set requires a high resolution, generally monochrome display. The circuit in Figure 40 allows up to 200 MHz video (one bit/pixel) for very high resolution screens. The 82786 is programmed in super High-Speed Acceleration Mode as described in Section 5.6. The character-codes to be displayed should be placed in one bit/pixel bit-maps with 16 consecutive bits for each character. The hardware combines the 8-bit VDATA values from two consecutive pixels to generate the 16bit character-code for the Character-ROM. If less than 65536 characters are required, not all of the 16-bit character code addresses need be used for the character-ROM. Some of these bits may be used for attributes such as blinking and reverse video. The ROM contains a 32x32 character font, each character is split up into 32-lines of four 8-bit bytes. The "pane" counter selects one of the four 8-bit bytes at a time. The "row" counter determines the current row of the character. Character cell windows should be zoomed by 2 horizontally and by 32 vertically. The window must be placed at a multiple of 4-pixels from HSync and a multiple of 32-lines from VSync. It is possible to place windows at non-multiples from HSync and VSync if the "pane" and "row" counter parallel inputs are tied to other than ground. 5.10 Combining the 82786 With Other Video Sources HSync/ VSync Blank Output Output Normal display generated by 82786 Input Output 82786 generated display superimposed on externallygenerated video or Multiple 82786 systems or Input Input Application The 82786 sync timing registers should be programmed to be as close to the frequency of the video source as possible. The 82786 should also be programmed for slave video-sync. The sync signals from the video source must be converted into separate TTL-level horizontal and vertical sync and fed to the 82786 HSync and VSync pins. The 82786 will then automatically sync itself up to the video source by waiting for its HSync input to fall before each scan line and waiting for its VSync input to fall before beginning a new display field. For many applications, the 82786 video clock can be derived directly from a crystal oscillator. Since the 82786 syncs up to the nearest pixel on every scan line, even video sources with imperfect timings, such as video recorders where speed variations are common, will produce an acceptable picture. The frame-to-frame deviation of the 82786 graphics information on the screen relative to the video source will never be more than one pixel. It is possible to combine graphics output from the 82786 with output from other video sources such as 10-147 cl "TI iEi c ~ ?"'" ~--,.-----~-------------l HSVHC +-=-'---+------------------1 til c "0 "0 o ::l. o < CD --< .. .... r o, fi"--.I-----+---l=-r HSYNCfWSO BLAH I( IJS't'HC VSYNC/WSt BLANK 8Z786 eLK CRT UCLK IHTERFACE eLI( UDATA0 UDATAl VDATA2 VDRTAg I)nA!A'" UDATA5 UDATA6 ~ III .... 10 ./>. CD ex> 0 :: III ; eLK It ~ ";' ::II o i!: III :3 Q. III 7= i!: III "0 4. .," ::r AS A.04 Q6 Q7 ~~ :; ..",. ~~~~~~J 1 II I 2:1 LJ I. J I:~ ." I ----::J I r 288""£ CLOCK I GEHERA'IOR· .- A120V11R ::! Uoo .&1: eLK ~: I ! .,. .,. .2. ""'--__-".1--,.,6 ." ROtt Al' A21 ." s- ' ~'<::_---------'C---- UF IdStp+1 - - - - - - - - - - ) " ' : ~<:----------''----- FrameLen +1 _ _ _ _ _ _ _ _-'-_ _..:::;,> US'rtlC Vert. Vert. Front Porch Porch Active Back Video l/Ufreq _ _ _ _ _ _ _~_ _~): HS'rtIC BLANK :.e:-(- UBI "nk_----"") 292007-47 Figure 43. Vertical Sync and Blank Timing Parameters Hfreq-horizontal frequency - the frequency at which horizontal lines are scanned. Monitors typically range from 15-36 kHz. Vfreq-vertical frequency - the frequ~ncy at which the display field is scanned. Monitors typically range from 40-70 Hz. BPP-bits per pixel - monitors with digital inputs restrict the number of usable bits/pixel. Monitors with analog inputs allow a virtually unlimited range of intensities with the use of Digital-to-Analog converters. This parameter is mainly dependent on the video interface hardware described in the previous sections. Color monitors generally limit the perceivable horizontal lind vertical resolution due to their shadow mask. See the specific monitor specifications for more details. Video interface parameters: these are dependent on the 82786 component and the video interface logic. VCLK-video clock frequency - the video input clock into the 82786. It has a maximum rate of 25 MHz and may be chosen so that the frequency evenly divides by both Hfreq and Vfreq. Accel-82786 video acceleration - this parameter is determined by what mode the 82786 is used in. Normally Accel = 1. If the trade-offs mentioned in Section 5.6 are used to attain higher video rates at the expense of fewer bits/pixel, then the value for Acce1 should be 2,4, or 8. Video Mode Max Programmed DotClk Accel Bits Accel = 1 Normal 25 MHz 00 Accel = 2 High Speed 50 MHz 01 Accel = 4 Very High Speed 100 MHz 10 Accel = 8 Ultra High Speed 200 MHz 11 DotClk-pixe1 dot clock frequency - this is normally the same as VCLK. However, when accelerated video modes are used, this is either 2, 4, or 8 times VCLK. DotClk = VCLK X Accel HSyncStp, HFidStrt, HFidStp, LineLen-these are values programmed into the 82786 Display Processor to determine the horizontal scan timing (Figure 42). They may be set to any value from 0 to 4095. Their values should also fit the formula: HSynStp < HFldStrt < HFldStp < LineLen VSyncStp, VFldStrt, VFldStp, FrameLen-these are values programmed into the 82786 Display processor to determine the vertical scan timing (Figure 43). They may be set to any value from 0 to 4095. Their values should also fit the formula: VSyncStp < VFldStrt < VFldStp < FrameLen Once the above parameters are evaluated, the video parameters can actually be calculated. The parameters interact quite heavily so that, for example, if a specific 10-152 inter AP-270 horizontal and vertical resolution at a specific field rate is required, the monitor frequencies and blank times may need to be altered. It may take several iterations to optimize all the parameters. The calculations can be performed by hand. However, a much easier way to manipulate these values is by using a spreadsheet program. A spreadsheet allows the parameters to be easily manipulated with their affects immediately displayed. A spreadsheet template for this purpose is given in Section 5.13. The following formulas are used to determine the video parameters. Along with the formulas is an example calculation. For the example, let's generate a 640 X 400 X 8 bit/pixel (256 color) screen at 60 Hz non-interlaced. We will assume: Hres Vres Vfreq% Hblank% Vblank% Accel 640 pixels 400 pixels 60 Hz 12 ,...s = 1300,...s 1 (no external acceleration) DotClkO/O = 1. DotPenod% Hres (lIHfreq%) - Hblank% 640 (1/26.03 kHz) - 12,...s = 24.23 MHz And then calculate the actual 82786 VCLK. Since external acceleration circuits are not used in our example, it turns out to be the same as the DotClk. VCLKO/O = DotClkO/O / Aceel = 24.23 MHz / 1 = 24.23 MHz . Great, now all we need is a 24.23 MHz crystal is needed to generate VCLK. But since such a crystal is tough to find, try a 25 MHz crystal instead and see how it affects the rest of the parameters. First of all, the pixel dot clock changes. DotClk = VClk x Accel = 25.00 MHz x 1 = 25.00 MHz Now, see how many VCLK's are required for the horizontal blank time. Variables with a percent (%) after them represent desired values, the actual value will be calculated below. HblankClks = ROUND (VCLK x HblankO/O) = ROUND (25 MHz x 12 ,...s) = 300 ROUND(X) will be used to denote rounding off X to the nearest integer. Now, calculate the actual horizontal Blank time. Hbl First, calculate the vertical resolution per field. Since. our display is noninterlaced, the value is the same as the vertical resolution. If interlaced then: VresFld = Vres/2 else: VresFld = Vres Vresfld = 400 pixels The actual horizontal period is then the time required to display one line of pixels plus the Blanking time. Hfreq With interlaced screens, VresFld is half the vertical resolution. For example, with 525 lines, use 262.5 for VresFld. Now, calculate the horizontal frequency required. Subtract the vertical Blank time from the vertical period and divide by the active vertical lines to obtain the horizontal period. Inverting all that gives the horizontal frequency. 1 Hfreq% = Hperiod% k _ HblankClks _ 300 _ an VCLK - 25 MHz - 12,...s VresFld (1IVfreq%) - Vblank% = 1 . -::-:--c-=c-::::-:---:-::-:--:(Hres / DotClk) + Hblank = (640 / 25 MHz) + 12,...s = 26.60 kHz The number of horizontal lines per frame can now be calculated: VFrameLines = ROUND(Hfreq / Vfreq%) = ROUND(26.60 kHz / 60 Hz) = 443 If an interlaced display is used, VFrameLines should be rounded-off to the closest odd integer. The number of scan lines determines the actual vertical frequency: 400 (1/60) - 1300,...s = 26.03 kHz In a similar manner, calculate the pixel dot clock required. Vfreq = Hfreq / VFrameLines = 26.60 kHz / 443 = 60.05 Hz 10-153 AP-270 Now that the major parameters are calculated and we are satisfied with them, we can break up the Blanking times into sync, front and back porch times. Typical monitor values are: HSync = 21-'s HBack = 61-'s VSync = 300 1-'5 VBack = 800 1-'5 HSyneClks = = HBaekClks = = ROUND (VCLK x HSYNCj ROUND (25 MHz x 2 1-'5) = 50 ROUND (VCLK x HBaek) ROUND (25 MHz x 6 1-'5) = 150 VSyneClk5 = = VBaekClks = = ROUND ROUND ROUND ROUND = 8- 1 = (VSyncLine5 x 2) - 1 VSyneStp + (VBackLine5 x 2) VRes Total VFrameLine5 - 2 VResTotal = VResFieldl + VResField2. VFrameLines equals the total number of HSyncs in an entire frame. Make sure LineLen > HFldStp and that FrameLen > VFrameLines. If not, your parameters are inconsistent and you should modify your requirements and re-calculate. FinalIy, the bits for the CRTMode Register should be determined. For our example, non-interlaced mode is used and no accelerated video is required. Assuming the 82786 is used to generate the HSync, VSync and Blank signals and assuming the window Status pins are not used, the CRTMode registers should be loaded with alI zeros. VSyncStp = VSyneLine5 - 1 VFldStrt = = VFldStp = = = = = = In the preceding formula, VResTotal equals the Vertical Resolution for Field 1 plus the Vertical Resolution for Field2 as shown below. Now it's a simple matter to calculate the values for the eight 82786 Display Processor video timing registers. For noninterlaced displays: For interlaced and interlace-sync displays: VSyneStp VFldStrt VFldStp FrameLen (Hfreqx VSYNCj (26.6 kHz x 300 1-'5) = 8 (Hfreq x VBaek) (26.6 kHz X 800 1-'5) = 21 HSyncStp = HSyneClk5 - 3 = 50 - 3 = 47 HFldStrt = HSyneStp + HBaekClks = 47 + 150 = 197 HFldStp = HFldStrt + (Hre5 / Aecel) = 197 + (640 / 1) = 837 LineLen = HBIankClk5 + (Hres / Aceel) - 3 = 300 + (640 / 1) - 3 = 937 FrameLen = VFrameLine5 - 1 =443-1=442 7 VSyneStp + VBaekLine5 7 + 21 = 28 VFldStrt + Vres 28 + 400 = 428 10-154 inter CRTMode - AP-270 Display Processor Register # 5 15 7 RESERVED 6 5 I~ 1 4 3 2 W S B 0 I ACCELERATED VIDEO BITS o o 0 NORMAL SPEED 1 HIGH SPEED VERY HIGH SPEED 1 SUPER HIGH SPEED a BLANK SLAVE MODE (1 (UP (UP (UP (UP TO 25 MHZ) TO 50 MHz) TO 100 MHz) TO 200 MHz) =EXTERNAL BLANK) =EXTERNAL SYNC) HSYNC. VSYNC SLAVE MODE (1 WINDOW STATUS PINS (1 =ENABLE) INTERLACE a a 1 1 a 1 a 1 NON-INTERLACED RESERVED INTERLACE INTERLACE-SYNC The host CPU software is required to load the values of the eight video timing registers and the CRTMode Register. Generally, this is done during system initialization. The registers should all be loaded simultaneously using the LD_ALL command rather than using individual LD_REG commands. This ensures that the video sync signals are never invalid while registers are being loaded. Some CRTs can be permanently damaged by supplying the wrong sync frequencies to them. To prevent invalid video sync signals, the HSync, VSync, and Blank pins 292007-48 are tristated after RESET until the CRTMode Register has been written to. 5.13 A Spreadsheet for Calculating Video Parameters As seen in the previous section, quite a number of calculations are required to determine the 82786 video parameter constants. Often several iterations through the calculations are required to optimize the display format. This process can be greatly simplified by using a spreadsheet. 10-155 AP-270 An example of the output from such a spreadsheet is shown below. This example illustrates a 1290 x 968 x 4-bit/pixel (16 color) interlaced 60 Hz display. The user has supplied all of the values under the "DESIRED" column and the spreadsheet program has calculated the rest. The "ACTUAL" column shows the closest timings and parameters that the 82786 can actually supply. The "82786 DP REGISTER VALUES" shows the values that should be programmed into the Display Processor Registers to generate such a display. V IDE 0 8 2 7 8 6 The user can easily modify the "DESIRED" values until the "ACTUAL" values meet the application's needs. Care should be taken to ensure that all "ACTUAL" values are logically correct. If for example, any of the calculated parameters are negative, then the set of "DESIRED" parameters can not produce such a display, so some parameters must be adjusted. PAR A MET E R S Type under DESIRED column only: ACTUAL & REGISTER columns are calculated PARAMETER DESIRED Video Clock VCLK (MHz): 25 Acceleration (1,2,4 or 8) : 2 Interlacing (1 no, 2 yes): 2 Horiz Resolution (Pixels): 1290 Vert. Resolution (Pixels): 968 = = Horiz Horiz Horiz Horiz Line Rate (kHz) : Sync Width (I-'s) : Back Porch (I-'s) : Front Porch (I-'s) : Vert. Vert. Vert. Vert. Frame Rate Sync Width Back Porch Front Porch (Hz) (I-'s) (I-'s) (I-'s) : : : : ACTUAL 25 2 2 1290 968 --- 30.487 2 2 4 4 1 1 LineLen: HSyncStp: HFldStrt: HFldStp: 818 48 148 793 60 59.956 200 196.8 400 393.6 213.2 FrameLen: VSyncStp: VFldStrt: VFldStp: 1015 The template follows. This template should be easily adaptable to nearly any spreadsheet program. This particular spreadsheet program uses @ROUND(X,O) to denote rounding to the nearest integer. If no rounding function is available in your spreadsheet program, you can substitute the integer function (which truncates the fractional portion to return the next lowest integer) for the round function: substitute @INT(X+O.S) for 82786 DP REGISTER VALUES 10 34 1002 After entering the template into your favorite spreadsheet, you may wish to verify that it is working correctly by entering the "DESIRED" values of the above example and checking that the "ACTUAL" and "REGISTER" results match .. @ROUND(X,O) 10-156 l 1: ------------A------------ ---B--- ------------C------------- ---D--- -----------------E------------------S 2 7 S 6 V IDE 0 PAR A MET E R S Type under DESIRED column only: ACTUAL & REGISTER columns are calculated 2:TY~~~~~~~~~~====~~~~~~~~~_ _ _ _ _ _ _ ___ 3: ---- PARAMETER 4: DESIRED ACTUAL 5: 6: Video Clock VCLK (MHz): +B6 +B7 7: Acceleration (1,2,4 or S) : ~ S: Interlacing (l=no, 2=yes): 9 : Horiz Resolution (Pixels): 10 : Vert. Resolution (Pixels) : -.J 11: ()1 12 : 13 : 14 : 15 : 16 : 17 : IS: 19 : 20: S27S6 DP REGISTER VALUES +BS @ROUND(B9/C7,0)*C7 @ROUND(BIO,O) > l' Horiz Horiz Horiz Horiz Line Rate (kHz) : Sync Width (JLs) : Back Porch (/Ls) : Front Porch (/Ls) : (C6*1000)/(E12+2) (E13+2)/C6 (E14-El3)/C6 (E12-El5)/C6 LineLen: @ROUND(C6*B15,0)+E15 HSyncStp: @ROUND(C6*B13,0) -3 HFldStrt: @ROUND(C6*B14,0)+E13 HFldStp: +E14+(C9/C7) Vert. Vert. Vert. Vert. Frame Rate Sync Width Back Porch Front Porch (CS*C12*1000)/(E17+CS) ((ElS+CS)*1000)/(C12*CS) ((E19-ElS)*1000)/(C12*CS) (E17-E20)*1000/(C12*CS) FrameLen VSyncStp VFldStrt VFldStp: (Hz) (/Ls) (JLs) (/Ls) : : : : @ROUND((C12*1000)/B17-(CS-l)/2,0)*CS-l (@ROUND((C12*BlS)/1000,0)-1)*CS @ROUND((C12*B19)/1000,0)*CS+ElS +E19+CIO '"......o infef AP·270 APPENDIX A SAMPLE INITIALIZATION CODE Many registers within the 82786 must be initialized to configure the 82786 for the particular hardware environment it resides in. This appendix contains assembly language code to initialize the 82786 for one particular configuration: synchronous 10 MHz 80286 interface (Sections 4.2 and 4.3, Figure 18) one row 'of two interleaved banks of 51C256 Fast Page Mode DRAM (Section 3.3, Figure 9) 640 x 300 x 8-bit/pixel non-interlaced 60 Hz display, 25 MHz VCLK (Section 5.11, Figure 27) All of the parameters to be initialized for this configuration are calculated under their corresponding sections in the body of this application note. To calculate the parameters for other configurations, refer to these sections. This example of initialization code can be used to initially test many of the hardware functions. The code should create a stable display on the CRT. The display will consist of a black field which covers the entire screen (a 640 x 400 black rectangle). In the center of the rectangle is a 16 x 16 pixel arrow-shaped red and yellow cursor. name Initialization82786 Memory82786 segment at OCOOOh ;segment located at start of CPU-mapped 82786 memory ;define locations of 82786 internal registers org 0 Internalrelocation Reserved BIUControl RefreshControl DRAMControl DisplayPriority GraphicsPriority ExternalPriority dw dw dw dw dw dw dw dw ? ? ? ? ? ? ? ? ;BIU registers ? ? ? ? ? ? ;Graphics Processor registers ? ? ? ? ? ? ;Display Processor registers org 20h GPOpcode GPLinkAddressLower GPLinkAddressUpper GPStatus GPlnstructionPtrLower GPlnstructionPtrUpper dw dw dw dw dw dw org 40h DPOpcode DPParameterl DPParameter2 DPParameter3 DPStatus DefaultVDATA dw dw dw dw dw dw 10-159 inter AP-270 ;location of values for Display Processor LD_ALL instruction org 80h DPLdAllRegs label word dw 3 ;VStat: turn on display and cursor dw OFFh ;IntMask: mask all interrupts dw 20 ;TripPt: trip point 20 FIFO dwords dw ;Frint: o cause interrupt every frame (interrupt is 'masked) reserved dw o dw o ;CRTMode: non-interlaced, non-accelerated,master sync/l:blank 47 dw ;HSyncStp: horizontal sync stop 197 ;HFldStrt: horizontal field start dw dw 837 ;HFldStp: horizontal field stop 8 video timing registers dw 937 ;LineLen: horizontal line length are programmed for dw 7 ;VSyncStp: vertical sync stop 640 x 400 at 60 Hz dw 28 ;VFldStrt: vertical field start with 25 MHz VCLK dw ;VFldStp: vertical field stop 428 dw 442 ;FrameLen: vertical frame length dw offset WinDescl ;DescAddrL:descriptor address pointer lower dw 0 ;DescAddrU:descriptor address pointer upper dw ; (Reserved) o db o ;ZoomY: no vertical zoom db o ;ZoomX: no horizontal zoom dw ;FldColor: black field color o dw OFFh ;BdrColor: white border color dw ;PadlBPP: pad with zeros for 1 bit/pixel o dw ;Pad2BPP: pad with zeros for 2 bits/pixel o dw ;Pad4BPP: pad ,with zeros for 4 bits/pixel o db 2 ;CursorPad:pad with red for cursor (yellow cursor in red box) 80h db ;CsrStyle: opaque l6x16 block cursor, no window status dw 510 ;CsrPosX: put cursor in middle of screen (horizontally) 220 dw ;CsrPosY: put cursor in middle of screen (vertically) = dw dw dw dw dw dw dw dw dw dw dw dw dw dw dw dw OOOOOOOllOOOOOOOb OOOOOOllllOOOOOOb OOOOOllllllOOOOOb OOOOllllllllOOOOb OOOllllllllllOOOb OOllllllllllllOOb OllllllllllllllOb llllllllllllllllb OOOOOllllllOOOOOb OOOOOllllllOOOOOb OOOOOllllllOOOOOb OOOOOllllllOOOOOb OOOOOllllllOOOOOb OOOOOllllllOOOOOb OOOOOllllllOOOOOb OOOOOllllllOOOOOb ;CsrPatO: ;CsrPatl: ;CsrPat2: ;CsrPat3 : :CsrPat4: ;CsrPat5 :' :CsrPat6 : :CsrPat7 : ;CsrPat8 : :CsrPat9 : ;CsrPatA: ;CsrPatB: :CsrPatC: ;CsrPatD: ;CsrPatE: ;CsrPatF: create arrow-shaped cursor.pattern ;location of strip descriptor list WinDescL label word ;strip descriptor list , ;header of strip descriptor dw 399 ;lines in strip (400 covers entire screen) dw 0 ;lower link to next strip descr (there is none) dw :upper link to next strip descr (there is none) 0 dw ;number of tiles in strip (only one) 0 10-160 inter AP-270 o o dw dw dw dw dw dw o 639 o OOOOlh ;first (and only) tile descriptor ;bitmap width (not applicable, this is field) ;memory start lower addr (not applicable) ;memory start upper addr (not applicable) ;field width (640 covers entire screen) ;fetch count (not applicable, this is field) ;set field bit,use top,bottom,left,right borders Memory82786 ends Initialize82786 segment mov ax,seg BIUControl mov ds,ax ;code to initialize 82786 ;put 82786 register segment in ds assume cs:lnitialize82786, ds:Memory82786 mov byte ptr BIUControl, 30h mov byte ptr BIUControl+l, 0 ;convert 82786 to 16-bit bus ••• ; ••• must use two 8-bit transfers mov InternalRelocation, Olh ;locate reg's at 82786 mem addr Oh mov mov DRAMControl, IDh RefreshControl, 18 ;1 row, interleaved 51C256 DRAM ;request refresh every 15.2 uS mov DisplayPriority, mov mov GraphicsPriority, OlOOlOb ExternalPriority, 100000b mov mov mov DPParameterl, offset DPLdAllRegs ;address for LD_All command DPParameter2, OCH DPOpcode, 5 ;let DP perform LD_All command ;set Display 1l01l0b FPL, SPL = 6 ;set Graphics FPL, SPL = 2 ;set External FPL =4 ret ;end of initialization subrtn Initialize82786 ends If the constants in the CPU-mapped 82786 memory for the LD_ALL command and the Strip Descriptor list (in Memory82786 segment) cannot be loaded into 82786 memory by the system's program loader, they will have to be loaded by the initialization code. One method is to have the loader load them into CPU system memory and use a repeat-move-string command in the initialization code to move these constants into the 82786 graphics memory. Alternatively, it is possible to place these constants in the 82786-mapped CPU memory and allow the 82786 to fetch them using mastermode. This method, however, is not as efficient because the 82786 must re-fetch the Strip Descriptor list for every display frame. The Graphics Processor is not used in this initialization code. To fully initialize the Graphics Processor, the following commands are required: DeL_Bit_Map for all drawing and BitBIt commands Def_Logical_Op for all drawing and BitBIt commands Def_Colors if line/character drawing used Def_Texture if line drawing used Def_Char_Set if character drawing used Def_Char_Orient if character drawing used Def_Char_Space if character drawing used Load~eg initialize stack pointer if macros used Load_Reg set poll-on-exception mask if used Load_Reg set interrupt mask if interrupts used 10-161 APPLICATION NOTE AP-408 October 1987 An Introduction to Programming the 82786 Graphics Coprocessor RAY TORRES APPLICATIONS ENGINEER Order Number: 240048-001 10-162 inter AP-408 RELATED DOCUMENTATION This software applications note should be used with the 82786 User's Manual (Order Number: 231933-002). Other documentation available for the 82786 includes: Hardware Configuration Applications Note (Order Number: 292007-003), The 82786 Architectural Overview (Order Number: 122711-003), The 82786 Data Sheet (Order Number 231676-003), and 82786 Design Example-Interfacing to the IBM PC/AT (Order Number: 240049-001). CHAPTER 1 INTRODUCTION 1.0 INTRODUCTION This application note shows, by example, how to program the 82786. These software interface examples are written for an Intel 82786-based graphics board as described in the Application Note: 82786 Design Example-Interfacing to the IBM PC/AT. However, the concepts presented in these examples can be applied to any system using the 82786. With the appropriate modifications, these programs will run on other .82786 systems. Contact your nearest Intel Sales Office for more information about availability of 82786 graphics boards and availability of machine-readable copies of the software presented in this Application Note. Chapter 2 presents an overview of the programmers model of the 82786. Chapter 3 presents an 80286 Assembly Language example. The objectives of this example program are: 1) Initialize the 82786 registers, 2) Program the Display Processor (DP) for one full-screen window, 3) Draw a simple graphics image using the Graphics Processor (GP). Chapter 3 also suggest several modifications to the Example Program as exercises for the reader. Solutions to the exercises are provided in the appendix. By working through these exercises, the reader gains an understanding of the concepts of programming the 82786. Chapter 4 provides a Quick Reference Section, containing information frequently used by 82786 programmers. 1.1 Hardware System Requirements Hardware system requirements to run the programming examples: (1) An 82786 graphics board as described in the Application Note: 82786 Design Example-Interfacing to the IBM PC/AT. (2) 6 MHz or 8 MHz-IBM AT computer. NOTE: (3) The Intel Evaluation Board cannot be used in a computer in which the EGA Graphics Adapter is installed. (For your text display, use the Monochrome Adapter or CGA adapter.) Any other peripheral device that uses the A-segment of CPU address space or CPU addresses C4400-C4474 cannot be used with the 82786 Evaluation Board. (4) NEC Multisync monitor (Model No: JC-1401P3A) or SONY Multiscan monitor (Model no: CPD-1302) You may need to adjust the monitor controls for vertical and horizontal hold, size, position, etc. Settings for the NEC Monitor: Set the switches on the rear of the NEC Multisync monitor as follows: (1) Set the "MANUAL" switch to "ON". (2) Set the TTL-ANALOG switch to "TTL". (3) Set DIP switch 5 to "ON". Set DIP switch 6 to "OFF". Settings for the SONY Monitor: Set the Digital-Analog switch to "DIGITAL". 10-163 inter AP-408 CHAPTER 2 PROGRAMMER'S MODEL OF THE 82786 2.0 INTRODUCTION This Chapter presents an explanation of the programmer's model of the 82786. There are 5 sections in this chapter: 2.1) Overview 2.2) Graphics Processor 2.3) Display Processor 2.4) Bus Interface Unit 2.5) Summary 2.1 Overview PROGRAMMING MODEL 82786 . . • OVERVIEW • GRAPHICS PROCESSOR (GP) • OISPLAY PROCESSOR (OP) • BUS INTERFACE UNIT (BIU) 240048-1 Here is a block diagram of a typical 82786 system. The Display Processor and Graphics Processor are programmed independently. The Bus Interface Unit has programmable priority levels to control bus arbitration between the DP, GP, Host CPU, and DRAM refresh. The Host CPU can write directly to the 82786 registers and directly into graphics memory. 10-164 inter AP-408 82786 PROGRAMMING MODEL GRAPHICS PROCESSOR DISPLAY IMAGE GRAPHICS MEMORY CPU 240048-2 To program the Graphics Processor, the host CPU writes a GP command list into graphics memory. Then, the GP executes the command list, drawing geometric shapes and text into the bitmaps in graphics memory. To program the Display Processor, the host CPU writes a Screen Descriptor List into graphics memory. The DP reads the Descriptor List and sends graphics data, in the desired format, from the bitmaps to the display device. The DP clm simultaneously display data from many different bitmaps. This is called Hardware Windows. Hardware Windows provides window movement, scrolling, and spanning and allows instantaneous changes in window content and screen format. 10-165 AP-408 2.2 Graphics Processor Programming BITMAPS A BITMAP IS A RECTANGULAR DRAWING AREA COMPOSED OF PIXELS • MAXIMUM BITMAP SIZE· 32K BY 32K PIXELS • 1, 2, 4 OR 8 BITS/PIXEL • PACKED-PIXEL ORGANIZATION - EFFICIENT MEMORY UTILIZATION (2, 4, 8 OR 16 PIXELSIWORD) • NO LIMIT TO NUMBER OF BITMAPS (0.0) 32K ••. ---~x::---- 1 110111 PIXEL LOCATION 32K Y DISPLAY SCREEN BITMAP IN GRAPHICS MEMORY 240048-3 A bitmap can be thought of as a rectangular drawing area composed of pixels. Bitmaps are located in graphics memory. The 82786 supports: - VERY LARGE bitmaps, up to 32K x 32K. - Flexible color capacity: 1,2, 4, or 8 bits/pixel providing 2, 4, 16, or 256 colors - Packed pixel organization allows for efficient memory utilization - Unlimited number of bitmaps, limited only by amount of available graphics memory. 10-166 intJ Ap·40B GRAPHIC PROCESSOR REGISTERS INDIRECT ACCESS REGISTERS DIRECT ACCESS REGISTERS OFFSET 20H OP CODE I ECl r-------------~ 0 GP CONTROL REGISTERS PARAMETER 1 PARAMETER 2 GP CONTEXT REGISTERS STATUS INSTRUCTION POINTER (22 BITS) 2BH 1....-_ _ _ _ _ _ _ _-1 • GP INTERNAL REGISTERS 22 WORDS • GP CONTROL REGISTERS • GP CONTEXT REGISTERS • DUMP_REG, lOAD_REG 240048-4 Overview of Graphics Processor Registers The Graphics Processor has 2 sets of registers: directly accessible and indirectly accessible. The directly accessible registers include: An Opcode register, two parameter registers, a Status Register, and an Instruction Pointer. The indirectly accessible registers include the GP Control registers and the Context Switching registers used in multi-tasking systems. The indirectly accessible registers are loaded with the LOAD~G command and read with the DUMP~G command. 10-167 intJ AP-408 , GRAPHICS· PROCESSOR COMMAND LIST GECL 82786 GP REGISTERS 1 10 OPCODE 2 10 GRO LINK GR1 ADDRESS LOW PARAM GR2 ADDRESS HIGH PARAM OPCODE 10 OPCODE 1 PARAM PARAM PAI;IAM OPCODE 3 10 PARAM PARAM HALT 11 + GECL 240048-5 The graphics processor command list is composed of a sequence of Graphics opcodes and· parameters. This command list is written into graphics memory by the host CPU. The GP begins execution of the command list when the host CPU writes a LINK instruction and the address· of the command list into the GP registers. The GP halts execution when it reaches the HALT instruction. 10-168 AP-408 GRAPHICS PROCESSOR COMMAND SET FOUR TYPES OF COMMANDS: GEOMETRIC - POINT, INCR POINT, LINE, POLYLINE, POLYGON, ARC, CIRCLE, HORIZ-LlNE TRANSFER - BIT-BLT, CHARACTER DRAWING CONTROL - DEFINES: TEXTURE, COLOR, LOGIC OPERATIONS, CHARACTER ATTRIBUTES, DRAWING AREA (BIT-MAP), ETC. MOVE (DRAWING POINTER) NON DRAWING - NOP, LINK (JUMP), MACRO (SUBROUTINE), INTERRUPT; LOAD/DUMP REGISTER 240048-6 Overview of Graphics Processor commands. The Graphics Processor has 4 types of commands: - Geometric drawing commands - Transfer commands - Drawing Control - Non-drawing commands. The GP commands provide a CGI-like graphics interface. These graphics primitives are extremely fast, since they are implemented in hardware. The Geometric commands provide primitives for POINT, LINE, ARC, and CIRCLE. The INCREMENTAL_POINT, POLYLINE, POLYGON, and HORIZONTAL_LINE (SCAN_LINES) commands can draw many points or lines with only one GP command for maximum efficiency. The SCAN_LINES command is used for Area Fill. The GP Transfer commands provide high-speed BLOCK DATA TRANSFER and Text CHARACTER support. The Drawing Control commands provide settings for COLOR, TEXTURE, LOGICAL OPERATOR, DEFINING BITMAPS, CLIPPING RECTANGLE, AND CHARACTER ATTRIBUTES. , The Non-drawing commands provide LINK, MACRO (SUBROUTINE) CALL and RETURN 'commands, as well as an INTERRUPT and LOAD/DUMP REGISTER commands. The LINE and CIRCLE commands are implemented by Breshenham's Algorithm (in a state machine). 10-169 AP-408 BIT BLOCK TRANSFER COMMAND : BIT·BLT 10 X (0,0) SOURCE X SOURCE Y DX OX (X,V) DY HALT SOURCE RECTANGLE 11 GCPP OV V ~ NEW GCPP DESTINATION RECTANGLE BIT BLOCK TRANSFER 240048-7 Here is an example of a Graphics Processor command, showing the format of the Bit_Blit (Bit Block Transfer) command. The opcode comes first followed immediately by its associated parameters, the Source X and Y co·ordinates and the width (dx) and height (dy). This command copies a block of data to the destination indicated by the Graphics Current Position Pointer (GCPP). 10-170 inter AP-408 GRAPHICS PROCESSOR DRAWING EXAMPLE COMMAND LIST GRO GRl t--.::.LlNc::.K'--J-".O-lV ADDRESS lOW BIT MAP r-----------------------~ 0,0 X V 1-----1 GR2 ABSOLUTE MOVE CIRCLE RADIUS ADDRESS HIGH '----_...... RECTANGLE OX DV LINE OX DV RELATIVE MOVE OX DV POLY LINE AARA Y PXR LOW ARRAY PXR HIGH NUMOFLINES , , L-. HALT DXl DVl , DXN DVN 240048-8 This Figure shows a specific example of a GP command list and its resultant drawing in the bit map. This. demonstrates the capability of the Graphics Processor and how easy it is to create a drawing using the built-in graphics commands. This GP command list example shows the ABSOLUTE_MOVE, CIRCLE, RECTANGLE, LINE, and POLYLINE commands. First, the CPU writes the command list into graphics memory. The GP command list is executed when its address and the LINK instruction is written into the GP opcode registers. The ABSOLUTE~OVE instruction moves the Position Pointer to the given (x, y) coordinate, the CIRCLE command draws the circle with the given radius, the RECTANGLE command draws a rectangle with the given width and height, the LINE command draws a line with the given offset for the endpoint. The POLYLINE command draws a series of lines with only one GP command. The parameter for a POLYLINE command is a pointer to an array of endpoints for several lines. 10-171 intJ AP-408 82786 PROGRAMMING MODEL 82786 GRAPHICS PROCESSOR DISPLAY PROCESSOR DISPLAY IMAGE GRAPHICS MEMORY GP COMMAND LIST' CPU 240048-2 In summary, to program the 82786 OP:.f1I'St the CPU writes a command list into graphics memory, as shown here. We have seen the details of the command list structure and details of some of tjle OP commands. The CPU instructs the OP to execute a command list by f1I'St writing the address of the command list into the OP registers OR! and OR2, and then writing the LINK opcode into the OP Opcode Register, ORO. The graphics processor then executes the command list and draws the images into the bitmaps. 10-172 AP-408 2.3 Display Processor Programming This section describes general concepts of programming the Display Processor. As mentioned earlier, the DP reads a Screen Descriptor List that was written in graphics memory by the host CPU. This descriptor list determines how graphics data contained in the bitmaps is displayed on the screen in windows. 82786 SCREEN CONFIGURATION BASIS OF HARDWARE WINDOW • SCREEN IS DIVIDED INTO STRIPS • EACH STRIP HAS SEVERAL TILES (MAX 16/STRIP) • EACH TILE CAN DISPLAY DATA FROM DIFFERENT BIT MAP • EACH TILE CAN HAVE DIFFERENT DEPTH (BITS/PIXEL) • ANY TILE CAN BE ZOOMED (PIXEL REPLICATION) • j TILES STRIP 1 TILE 1 STRIP 2 TILE 1 STRIP 3 TILE 1 TILE 4 STRIP 4 TILE 1 TILE 3 UI a. ir IUI STRIP 5 TILE 1 240048-10 Explanation of Display Processor Screen. Descriptor List. The 82786. uses a flexible and powerful method for describing the screen composition. The screen is described in terms of Strips, each strip is composed of Tiles. Each tile can display data from a different bitmap of a different depth (bits/pixel). Each tile may be zoomed independently. The screen format can be completely changed every frame refresh cycle. (This is typically every 1/60 second.) 10-173 inter AP-408 DISPLAY PROCESSOR REGISTERS INDIRECT ACCESS REGISTERS DIRECT ACCESS REGISTERS OFFSET40H OP CODE Eel CURSOR ON 'OFF PARAMETER' INTERRUPT MASK PARAMETER 2 PARAMETER 3 tNTERLACEINON-tNTERLACE MASTER/SLAVE MODE r STATUS 4BH DEFAULT VIDEO 42 ViDEO TIMING WORDS PARAMETERS DESCRIPTOR POINTER ZOOM FACTOR COLOR PAD REGISTERS CURSOR PQSTlON CURSOR BIT PAITERN • DP INTERNAL REGISTERS • DISPLAY CONTROL BLOCK REGISTERS • ACCESS BY LOAD, DUMP REGISTER COMMANDS 240048-11 The Display Processor has 2 sets of registers: directly accessible and indirectly accessible. The Directly accessible registers include: An Opcode register, three parameter registers, and a Status Register. The Indirectly accessible registers are also known as the DP Control Block Registers. These registers contain parameters for controlling DP operations such as the Video Timing Signals, location of the Descriptor list, cursor position, cursor pattern, etc. The indirectly accessible registers are loaded with the DP LOAD and DUMP commands. 10-174 Ap·408 HOW TO CHANGE SCREEN FORMAT GRAPHICS MEMORY 82786 DP DIRECT ACCESS REGISTERS OP CODE LOAD· REG PARAMETER 1 ADDRESS LOWER PARAMETER 2 ADDRESS HIGHER PARAMETER 3 REG 1.0. } [ DESCRIPTOR POINTER LOWER DESCRIPTOR POINTER UPPER NEW DP DESCRIPTOR LIST 240048-12 The screen format is changed by writing a new Descriptor list into graphics memory or modifying a copy of the current descriptor list. Next, a pointer to the new descriptor list is written into graphics memory. Lastly, the address of the pointer, the LOAD_REG command, and. register ID (OE Hex for Descriptor Address Pointer) are written into the DP parameter and opcode registers. . This is all that is necessary to change the screen format. The new screen appears during the next screen frame. 10-175 inter AP-408 HOW TO DEFINE THE STRIP DISPLAY PROCESSOR DESCRIPTOR LIST STRIP HEADER TILE DESCRIPTOR NUMBER OF LINES IN STRIP LINK TO NEXT STRIP HEADER NUMBER OF TILES IN STRIP BITMAP WIDTH START ADDRESS TILE WIDTH BORDEI:tS I ZOOM I FIELD 240048-13 As mentioned earlier, a Screen Descriptor List is composed of Strip and Tile descriptors. Here, we see an overview of a strip and tile descriptor. See Figure 3.2 for a more detailed diagram of a strip and tile descriptor.· . The Strip descriptor contains the number oflines in the strip, link to the next strip descriptor, and the number of tiles in the strip. . The Tile Descriptor contains the width of the source bitmap, the starting address of graphics data to be displayed, the tile width, and settings for turning borders, zoom and field color on or off. Each tile has its own tile descriptor. 10-176 AP-408 SCREEN CONFIGURATION EXAMPLE SCREEN DESCRIPTOR LIST HEADER STRIP 1 500 LINES LINK 2 TILES BITMAP WIDTH DESCRIPTOR TILE 1 START ADDRESS TILE WIDTH BORDERS ZOOM SCREEN t- 12BO -, +-------PIXELS------+ 600 "-'-'PIXELS----+ t STRIP 1 500 LIT 1024 LINES 1 DESCRIPTOR TILE 2 STRIP 2 524 524 LINES HEADER STRIP 2 LlTS 1 TILE' DESCRIPTOR TILE 1 240048-16 Here. we see an example of a Descriptor List and its resultant display screen. The first strip. containing 500 lines vertically. is composed of two tiles. The second strip. containing 524 lines vertically. is composed of one tile. 10-177 intJ Ap·408 82786 PROGRAMMING MODEL DISPLAY IMAGE GRAPHICS MEMORY CPU 240048-2 In summary, to program the 82786 DP: first the CPU writes a DP descriptor list into graphics memory, as shown here. We have seen the details of the descriptor list. The display processor reads this descriptor list to determine how graphics data contained in the bitmaps is displayed on the screen in windows. The screen format may be changed by simply writing a new ,descriptor list into graphics memory and changing the Descriptor Pointer to point to the new Descriptor List. 10-178 intJ AP-408 2.4 Bus Interface Unit This section describes an overview of programming the Bus Interface Unit. The Bus Interface Unit is programmable and controls the following functions: o The base address for access of the 82786 registers • The Graphics Memory Configuration - VRAM/DRAM type - Memory Access Mode - Bank Configuration - DRAM Refresh frequency. • Memory Access Priority - Sophisticated Bus Access Arbitration - 8 Priority Levels BUS INTERFACE UNIT REGISTERS OFFSETOOH REGISTER BASE ADDRESS J MIO BIU CONTROL REFRESH CONTROL DRAMNRAM CONTROL DP PRIORITY GP PRIORITY OE EXT CPU PRIORITY • SYSTEM CPU/MEMORY INTERFACE PROGRAMMING • GRAPHICS MEMORY CONFIGURATION • MEMORY ACCESS PRIORITY 240048-18 Programming the BIU is simple and straightforward. The programmer must simply write the correct values into each of the seven BIU registers. After these registers have been set, they do not need to be changed unless the chip is reset. The GP, DP and CPU priorities may be changed at any time, if desired. 2.5 Summary This concludes the overview of the 82786 programming modeL We have seen an overview ofthe powerful Graphics commands and how these commands are used. We also talked about the concepts of programming the Display Processor and how to use the powerful hardware windowing capabilities of the 82786. Chapter 3 provides a specific programming example and more specific programming details. 10-179 AP-408 CHAPTER 3 EXAMPLE PROGRAM 3.0 INTRODUCTION This Chapter presents an example 82786 program written in 80286 Assembly Language. The objectives of the Example program are: 1) Initialize the 82786 registers 2) Program the Display Processor (DP) for one full-screen window 3) Draw a simple graphics image using the Graphics Processor (GP). Section 3.1 presents an overview of the program. Section 3.2 presents a detailed explanation of the program, section by section. Section 3.3 presents the complete source-code listing. 3.1 Overview Of Example Progra'm 3.1.0 PROGRAM OUTLINE Constant Definitions - Special Addresses - DP Opcodes - GP Opcodes Register Segment - Define 82786 Internal Register Block Addresses Data Segment - Define DP Control Block Register Values - Define DP Descriptor List . - Define GP Command List Code Segment - BIU Initialization-Load BIU Registers - <;::lear Page 0 of Graphics Memory - Copy DP Control Block Registers from CPU Memory to Graphics Memory - Copy DP Descriptor List from CPU Memory to Graphics Memory - Copy GP Command List from CPU Memory to Graphics Memory - ·Start DP by Loading DP Control Block Registers - Execute GP Command List to Draw Image 10-180 inter AP-408 Program Outline 82786 Graphics Memory Bitmaps IBM AT System Memory ~_:_.II 82786 Orllphh:. ProcellOr DJ.pl.y Proc...or Control Block ~~~~'__y.I~~R_.gl_d.r_·~1 DP_Control Block flegl.tl,. LCtaId_AII DP_VCon·I~,toBrl".ktl -- FFOOO I DP D•• crlptor UI'! Real,'.r. 'I Deacrtplor Pointer / . i i / - i"---.. -....I..-----','-FFtOO Unk DP DlI~tor I~ '-----"'--~::::::::~_[ Ult , / FF200 GP Commlnd ust! ~ :I , I J - - - QP Command Ult 240048-19 Figure 3.1 3.1.1 OVERVIEW OF PROGRAM Figure 3.1 shows a graphical description of the Example program. First, the correct values are written into the 82786 BIU Registers. Section 3.2 explains how the values for these registers have bee~ determined. Next, Page 0 of graphics memory is cleared (used for bitmaps). Next, values for the DP Control Block Registers, DP Descriptor List and GP Command List are copied from CPU memory space to Graphics memory space. 10-181 AP-408 The values for the DP Control Block Registers are loaded from graphics memory into the 82786 registers by the DP LOAD-.ALL command. Two of the DP Control Block Registers, the Descriptor Pointer Upper and Descriptor Pointer Lower, are combined to give a 22-bit address. This is the address of a valid DP Descriptor List located at location FFlOO in graphics memory. The DP Descriptor List instructs the DP to fetch bitmap data starting at location 0 in graphics memory. Now the Graphics Command list is executed by writing its address into the GP Parameter Registers and then writing a LINK command into the GP Opcode Register. The GP now draws the image into the graphics memory bitmap area. 3.2 A Detailed Description of the Example Program 3.2.0 TECHNICAL FACTS This section provides technical facts used in the Example program. Graphics Memory Addressing: The graphics board uses 64 Kbytes of CPU address space from AOOOO to AFFFF. The page selection register chooses one of 16 pages. This allows addressing of a total of I Megabyte of graphics memory. The page selection register. on the graphics board is set by outputting the page number (using the 80286 OUT instruction) to port lo~ation OxOO300. This technique will vary on other hardware systems using the 82786. Bitmap Location: The example program stores bitmaps in Graphics memory starting at location O. Graphics Command Buffer Location: Starts at Graphics memory location FF200 Display Processor Descriptor List Locatiori: DP Descriptor list FFlOO (base address in graphics memory) 82786 Register Access: The 82786 Internal Register Block is accessed by memory access to CPU memory locations C4400 through C447F. The Graphics board decodes these addresses and issues an 1/0 access. Video Timing Parameters: The initialization values for the video timing parameters assume an 18 MHz VCLOCK. Assembler: The example programs were assembled with the Microsoft Macro Assembler Version 4.0 10-182 AP-40B 3.2.1 CONSTANT DEFINITIONS SEG_GR_MEM SEG_786_REG DP_REG_MAP ;***************** equ OAOOOh equ OCOOOh equ OFOOOh ***************** Program Constant definitions: Segment to access graphics memory. Segment to access 82786 registers. Address in graphics memory used to load DP control values to/from DF registers DP_REG_MAP_LO DP_REG_MAP_HI DESC_PTR_LO DESC_PTR_HI GP_LIST_PTR_LO GP_LIST_PTR_HI BITMAP_O_LO BITMAP_O_HI PAGE]ORT equ equ equ equ equ equ equ equ equ DP_REG_MAP OOOOFh OFlOOh OOOOFh OF200h OOOOfh OOOOh OOOOh 0300h DP Discriptor List address in graphics memory Address in graphics memory of GP command list Starting address of bitmap_O (lower byte) Starting address of bi tmap_O (high byte) I/O address for graphics mem page select reg. ;******************** Display Processor opcodes: ;******************** Graphics Processor opcodes: LOADREG LOADALL DUMPREG DUMPALL equ equ equ equ 400h 500h 600h 700h ABS_MOV ARC_EXCL ARC_INCL CIRCLE DEF_BITMAP DEF COLORS DEF=LOGICAL_OP DEF_TEXTURE_OP LINE LINK POINT ~tTMOV equ equ equ equ equ equ equ equ equ equ equ ************************* 4FOOh 6800h 6900h BEOOh lAOOh 3DOOh 4l00h 0600h 5400h 0200h 5300h ************************ :~~ ~;g~~ 240048-33 3.2.2 LOCATIONS FOR THE 82786 INTERNAL REGISTER BLOCK The REGISTER SEGMENT defines a template of locations for access to the 82786 Internal Register Block. The register segment is set to begin at memory location OC440 (hex). As mentioned above, the Intel board issues an I/O access when .the CPU accesses memory at addresses C4400-C447F. ;*********** Locations for the 82786 Internal Register Block: register SEGMENT at OC440h INTER_RELOC db 2 DUP(?) dw (7) BIU_CONTROL db 2 DUP (7) DRAM_REFRESH dw (7) DRAM_CONTROL dw (7) DP_PRIORITY dw (7) dw (7) GP_PRIORITY dw (7) EXLPRIORITY dw 8 DUP (7) GP_OPCODE_REG dw (7) GP_PARM1_REG dw (7) GP_PARM2_REG dw (?) GP_STAT_REG dw (7) dw 12 DUP (7) dw (?) DP_OPCODE_REG DP_PARM1_REG dw (7) DP_PARM2_REG dw (7) DP_PARM3_REG dw (?) DP_STAT_REG dw (7) DEF_VIDEO_REG dw (7) register ENDS ************* Internal Relocation Register reserved location 13 62786 Register Block BIU Control Register DRAM Refresh control register DRAM control register DP priority register GP priority register External Priority Register reserved location. in 82786 Register Block GP opcode register GP Parameter 1 Register GP Parameter 2 Register GP Status Register reserved locations in 82786 Register Block DP opcode register DP Parameter 1 Register DP Parameter 2 Register DP Parameter 3 Register DP Status Register DP Default Video Register 240048-34 10-183 inter AP·408 3.2.3 VALUES FOR DP CONTROL BLOCK The following program segment defines values for the Display Processor Control Block. Refer to the 82786 User's Manual for an explanation of each register. The comments in the program explain this setting used in our example. data SEGMENT ;************* Values for the Display Processor Control Block: beg_dp_ctrl_blk LABEL word REGISTER NAME SETTING dw dw dw dw dw dw 3 llllh 00010h OOOOOh OOOOOh OOOOOh Video Status' Interrupt Mask Trip Point Frame Interrupt Reserved CRT Mode ************* cursor ON, and display ON all interrupts disabled controls when DP fifo is loaded no interrupts on frame count non-interlaced, window status off. DP, master mode Blank master mode I acceleration mode off The following 8 registers contain the video timing parameters for a screen resolution of 640 X 381 pixels. These values assume VeLOeR = 18MHz. These values achieve a .screen refresh of 60 Hz. dw dw dw dw dw dw dw dw 86 95 735 753 11 15 396 398 Hsyncstp Hfldstrt Hfldstp Linelength Vsynstp Vfldstrt Vfldstp Framelength dw DESC_PTR_LO ; DP de.cr ptr low dw DESC_PTR_HI ; DP descr ptr high Reserved Zoom factor X-zoom 2, Y-zoom 2 dw 00006h Field color dw 00003h Border color dw OOOOOh 1 BPP pad dw OOOOOh 2 BPP pad dw OOOOOh' 4 BPP pad dw OAOFFh ; Cursor Style Size 16 X 16, transparent, cursor pad dw 500 ; Cursor X-position dw 160 ; Cursor Y-position dw OOOOOh dw 00101h ~~eo~g~~~~i~~o6go~~~isters define the cursor bit pattern (an upward arrow): dw OOOOOOll10000000b dw 0000011111000000b dw 0000111111100000b dw 000l111111110000b dw 0011111111111000b dw Oll1011111011100b dw 110000lllOOOOllOb dw 0000001110000000b dw OOOOOOll10000000b dw 000000l110000000b dw 000000l110000000b dw OOOOOOl110000000b dw 000000l110000000b dw 000000ll10000000b dw 0000001110000000b end_DP_ctrl_blk LABEL word 240048-35 10·184 inter AP-408 3.2.4 DISPLAY PROCESSOR DESCRIPTOR LIST The following program segment defines a Display Processor Descriptor List. The DP reads the Descriptor List every frame, starting over at the beginning of the Descriptor List during vertical retrace. The Descriptor List determines the graphics memory addresses from which display data is fetched. A Screen Descriptor List is composed of a header for each strip and a Tile Descriptor for each tile in a strip. (See Figure 3.2) 15 14 13 12 11 10 9 B 7 6 5 4 3 2 0 HEADER I I NUMBER OF UNES IN STRIP· 1 LINK TO NEXT STRIP DESCRIPTOR (LOWER) 011 15 FIRST TILE DESCRIPTOR Il II SECOND TILE DESCRIPTOR JII ~UIIBER OF TILES IN STRIP· 1 RESERVED 14 13 12 11 10 9 B 7 6 5 4 3 2 0 J BITMAP WIDTH MEMORY START ADORESS (LOWER) II II II II UNK TO NEXT STRIP DESCRIPTOR (UPPER) 111 RESERVED III RESERVED RESERVED RESERVED T B L 15 14 13 II II 'I I 'I R II II II[ 12 111 BPP MEMORY START ADDRESS (UPPER) III STARTBIT STOPBIT J FETCH COUNT WST 11 JII 10 1101010 RESERVED 9 8 7 6 5 4 3 2 J BITMAP WIDTH MEMORY START ADORESS (LOWER) II T RESERVED II III RESERVED RESERVED B L R 0 111 BPP III STARTBIT FETCH COUNT WST III RESERVED •• • Figure 3.2 10-185 MEMORY START ADORESS (UPPER) III STOPBIT I I I J 1101010 240048-20 inter AP-408 3.2.4.1 Strip Header The Strip Header defines the number of scan lines in the strip, the address of the next Strip Descriptor (link), and the number of tiles in the strip. The descriptor list in our example defines one strip, 381 lines long, composed of one tile, 80 bytes wise (640 pixels). 3.2.4.2 Tile Descriptor The Tile Descriptor defines the Bitmap Width, Memory Start Address, BPP, StartBit, StopBit, Fetch Count, Border Control bits, Window Status (Window ID number), Zoom Control, and Field Tile Control. The Bitmap Width gives the width of the source bitmap as defined by the GP DEF_BITMAP command when the bitmap was drawn. NOTE: The Bitmap Width value is not related to the tile width. The Memory Start Address determines the beginning location in graphics memory where data is to be fetched for a given tile. This address is not necessarily the beginning address of the bitmap. If the Memory Start Address is higher than the beginning address of the bitmap, the tile will contain an image beginning at the corresponding location in the bitmap. The width of a tile is determined by the FETCH COUNT value of the tile descriptor. The FETCH COUNT determines the amount of data to be fetched from graphics memory and displayed in a given tile. The value to be programmed into FETCH COUNT is the (Number of bytes - 2). Fetch Count can be determined as follows: FETCH COUNT = (Desired tile width in pixels • bpp/8) - 2 The bitmap in our example is 1 bpp and the desired tile width is 640 pixels; therefore: FETCH COUNT = (640 • 1/8) - 2 = 78. BPP is a 4-bit field containing the bpp of the source bitmap as defined by the DEF_BITMAP when the bitmap was drawn. The STARTBIT and STOPBIT fields are both 4-bits wide. Although FETCH COUNT is specified as a number of bytes, STARTBIT and STOPBIT are specified as a bit location within a word (O-F). These fields give pixel resolution to the beginning and ending of a tile. In our example, the STARTBIT is F and the STOPBIT is O. It is the responsibility of the programmer to ensure that the STARTBIT and STOPBIT settings result in a valid number of bits for the given bitmap depth (bpp). For example, when the bitmap is 4 bpp, the total number of bits fetched must be a multiple of 4. See Figure 3.3. 10-186 infef AP-408 Tile Width 60 Pixels (1 Bit/Pixel) Stop : i t \ liS;ort Bit F 0 I M I I I I I ~ J I Number of words fetched 240048-21 FETCH COUNT ~ ~ (numbers of words fetched' 2) - 2 (number of bytes fetched) - 2 Figure 3.3. STARTBIT and STOPBIT Valid STARTBIT and STOPBIT Values Bits/Pixel Valid STARTBIT Valid STOPBIT F,E,D,C,B,A,9,B,7,6,5,4,3,2,1,0 1 F,E,D,C,B,A,9,B,7,6,5,4,3,2,1,0 2 F,D,B,9,7,5,3,1 E,C,A,B,6,4,2,0 4 F,B,7,3 C,B,4,0 B F,7 B,O Field Tiles When the field bit (bit zero of the last word) in a tile descriptor is set to one, the tile is filled with the color programmed in the FIELD COLOR register. When the field bit is set, the STARTBIT, STOPBIT, and BPP parameters become one 12-bit parameter that specifies the tile width in pixels. All other bits except WINDOW STATUS and Zoom should be programmed to zero. Although field tiles are not used in our examples, they are useful for filling a tile with a solid color. See Figure 3.4. 15 14 13 12 11 10 9 8 7 6 5 4 3 2· 1 0 BianapWidth Memory Stan Address (U>wer) I Mem Stan Addr (Upper) Reserved I Bpp I StanBit I StopBit Reserved Fetch Cou .t - 2 (tile width in bytes) I T B L R I WSt I Reserved 15 14 13 12 11 10 9 8 7 6 5 4 I PC I zl F 3 2 1 0 Normal Tile Descriptor i] Reserved Reserved Field TIle Decsriptor I Reserved Field Pixel Count - 1 (tile width in pixels) Reserved Reserved Reserved I Reserved Reserved IReserv~ Z I F WSt I 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1. ~ =1 240048-22 NOTE: Reserved fields must be programmed to zero for future compatibility. Figure 3.4 Refer to the Intel 82786 User's Manual for more information on the Display Processor Descriptor List. 10-1 B7 inter AP-408 ;************ Definition of Display Processor Descriptor List: ************ dp_descl LABEL word ; Header of DP descriptor: dw 380 (number of lines - 1) dw DESC_PTR_LO+20 lower link to next strip descriptor (there is none, but i f one were added, this is the link) dw DESC_PTR_HI upper link to next strip descriptor (there is none) dw 0 ; (number of tiles - 1) First (and only) Tile Descriptor dw 0080 Bitmap width (number of bytes) dw OOOOh Bi tmap start address lower dw OOOOh Bi tmap start address upper dw OlFOh 1 bpp, start bit F, stop bit 0 dw 0078 Fetch count = (number of bytes - 2) dw OFOOOh ; All 4 borders on,window status=O,PC mode off,field off end_dp_descl LABEL word ; *********** End of DP descriptor list. ********* 240048-36 3.2.5 GRAPHICS PROCESSOR COMMAND LIST The following program segment defines a Graphics Processor Command List. A GP command list consists of a series of GP opcodes and parameters. The Graphics Processor reads and executes the command list, until a halt instruction is encountered. The first command (DEF_BITMAP) sets the beginning address in graphics memory of the bitmap to be modified. This command also sets the bitmap dimensions and the number of bits per pixel (bpp) of the bitmap. All subsequent drawing commands will affect this bitmap until a new DEF_BITMAP command is issued. It is the resonsibility of the programmer to ensure the BPP in the tile descriptor is the same as the BPP used by the GP when drawing the picture. Bitmaps must begin at a word (even byte) address. Also, a bitmap must be an integral number of words wide. The value for xmax must satisfy the following equation: [(xmax + 1) • bpp] MOD 16 = 0 Next, the DEF_TEXTURE, DEF_COLORS, and DEF_LOGICAL_OP commands are issued. These settings stay in effect for all subsequent drawing commands. They can be reset whenever necessary. Next, an ABS~OVE command is issued to move the Graphic Current Position Pointer (GCPP) to the beginning location of the drawing. The remainder of the GP Command List in our Example is composed of REL_MOV, LINE, and ARC_INCL commands. Figure 3.5 illustrates the result of the command list in the example program. The HALT command at the end of the GP command list is very important. The GP continues execution until it encounters a HALT instruction (a NOP with the ECL bit set). If the HALT instruction is not present, the GP will continue fetching and trying to execute instructions until it reaches a "command" with the low bit set. Several different GP command lists may be kept in graphics memory at the same time. Each command list maybe executed by writing the appropriate address into the GP parameter registers and then writing a LINK command into the GP Opcode Register. 10-188 inter AP-408 (0,0) ,ASS_t.lOV, 10,10 1':' 1"'' ' REL_t.lOV, " - 35,45: , ," LINE, 35, 0 RECTANGLE, 35,135 2--: ARCINCL, -30,10, - 5, 35, - 5 240048-23 Figure 3.5 10-189 intJ AP-408 ;********** Definition of Graphics Processor Command List: gp_1i.t1 LABEL word dwDEF_BITMAP, BITMAP_O_LO, BITMAP_O_HI, 639 , 380 , 1 address 10 . address hi dw DEF_TEXTURE_OP, OFFFFh dw DEF_COLORS, OFFFFh, OOOOOh dw DEF_LOGI CAL_OP, OFFFFh, 00005h X equ 10 Y equ 10 ABS_MOV, X, Y LINE, 35, 0 solid texture replace destination with source Draw Intel logo: ************************ ; Move to beginning position for drawing. ; Dot the "1" LINE, 0, 35 LINE, -35, 0 LINE, 0, -35 REL_HOV, 0, 45 dw LINE, 35, dw dw dw LINE, LINE, LINE, 0, 135 -35, 0 0, -135 dw REL_HOV" dw dw dw dw dw dw dw dw dw dw dw dw dw dw dw dw dw dw d.. dw dw dw d.. d.. d.. dw d.. dw d.. dw LINE, 35, 0 LINE, 0 , 12 REL_HOV, 0, 32 LINE, 0, 90 LINE, -35, 0 LINE, 0, -135 REL_HOV, 51, 47 ARC_INCL, -20, -20, REL_HOV, 12, -4 ARC_INCL, -27, -50, REL_HOV, 5, 3 LINE, 0, 90 LINE, 35, 0 LINE, 0, -105 REL_HOV, 15, 90 LINE, 0, -95 LINE, -12,0 LINE, 0, -25 LINE, 12, 0 LINE, 0, -45 LINE, 35,0 LINE, 0,45 LINE, 15,0 LINE, 0, 25 LINE, -15, 0 LINE, 0, 77 LINE, 15, 0 REL_HOV, 0, 30 LINE, -31, 0 REL_HOV, 5, -25 dw xmax, ymax, bits per pixel I ; X-coordinate of starting location for drawing ; V-coordinate of starting location for drawing ;************************* dw dw dw dw dw dw ************ 0 42. 0 Draw body of "1" re-po.si tion for "N" Draw "N" 40, 0, 16 50, -10, 42 re-position to drsw "t" ARC_INCL. -30, 10, -5, 35, 25 d.. REL_HOV, 60 , - 5 dw LINE, 45,0 dw REL_HOV, 31, 0 dw LINE, 6,0 dw LINE, 0, -150 Draw "1" dw LINE, 35, 0 dw LINE, 0, 180 dw LINE, -120, 0 dw REL_HOV, 52, 10 dw LINE, 37, 0 dw REL_HOV, -65, -40 dw ARC_INCL, -30, -30, 30, 0, 22 dw ARC_INCL, -65, -65, 65, 0, 54 dw REL_HOV, 2, 30 dw ARC_INCL, -30, 0, 25,30,,27 dw REL_HOV, 3, 0 d" ARC_INCL, -65, 0, 59, 65 ,60 dw HALT 1en_BP_1ist1 LABEL word ; draw curve at lower left of "t" Draw "e" 240048-37 10-190 AP·408 3.2.6 PROGRAM CODE SEGMENT HEADER ;************************ main: mov ax. data mav ds. ax mav aX,register Program execution begins here. ********~********** Load data segment location into DS register mav eS,ax 240048-38 This section of code provides a standard Assembly Language program header. This code loads the DS (Data Segment Register) and the ES (Extra Segment Register). The ES register is used to access the 82786 Internal Registers. 3.2.7 SOFTWARE RESET i*********************** Software Reset of 82786 *************************** To reset the 82786 on the Intel Evaluation Board (Rev C2): Set and then reset bit 4 at I/O location 300. mov aX,D010h mov dX,PAGE_PORT out dX,ax Set hit 4 at I/O location 300. mav aX,OOOOh out dX,ax Reset bit 4 at I/O location 300. 240048-39 This section of code performs a reset of the 82786 by setting and then resetting bit 4 of the CPU I/O port 300 (hex). . The EVB then issues a reset signal to the 82786 RESET pin. 3.2.8. BlU INITIALIZATION The following sections of code initialize the 82786 Bus Interface Unit (BIU). BIU initialization is accomplished by writing the correct values into each of the BIU registers. A brief description of each register follows. 3.2.8.1 Internal Relocation Register The following two lines write a value of 0110 (hex) into the internal relocation register. This sets the 82786 registers for I/O - mapped access at I/O locations 4400 through 447F. The Intel Evaluation Board decodes a CPU memory access at memory locations C4400 through C447F and generates an I/O access to the 82786. and byte mode after reset. The 82786 comes up in I/O mode Access to the registers must be one byte at a time until WORD mode is set. mov INTER_RELOC,lOh ; Write low byte into internal relocation register. mov INTER_RELOC[l],Dlh ; Write high byte into internal relocation register. 240048-41 The INTERNAL RELOCATION register is set first. The 82786 comes up in byte mode after RESET; therefore, this register is set by writing one byte at a time. The desired base address for the 82786 registers is 004400 (hex). The base address must always be located on a 128 word boundary. (The registers are accessed at locations 004400 through 00447F.) An 82786 address is 22 bits long. The upper 15 bits of the desired base address is written into the upper 15 bits of the Internal Relocation Register. 10-191 AP·408 We want to set the chip for I/O mode, therefore, a zero is written into the M/IO bit. Therefore, we write a value of 0110 (hex) into this register. See Figure 3.6. BIU Internal Relocation Register 00 0000 0100 0100 0 o 0 4 4 0 ----- + Desired Location of 82786 Registers 000 = 0000 4400-447F Upper 15 bits of Base Address I -----------~ I MilO +-E 0000 0001 0001 0000 I 0 Value written in register = 0110 Hex Figure 3.6 3.2.8.2 BIU Control Register The following two lines write a value of 0011 (hex) into the BIU control register. This sets the Internal Register Block for l6-bit WORD access by the External CPU. All subsequent access to the 82786 registers i5 by ; WORD access. mov BIU_CONTROL,lOh ; Write low byte into BIU control register mov BIU_CONTROL[ll,OOh ; Write high byte into BIU control register 240048-42 These two lines set the BIU Control Register. Because the 82786 is in byte mode after RESET, this register is written one byte at a time. After setting this register for word mode, all subsequent register access is by word mode. BIU Control Register 15 14 13 12 11 10 9 8 7 0 0 0 0 0 0 0 0 o I Unused 6 5 4 3 2 0 0 1 0 0 0 0 VR WT BCP GI DI WP1 WP2 0 Figure 3.7 The BIU Control Register has seven one-bit fields as shown in Figure 3.7. The settings for our Example program follow: VR = 0 Set for conventional DRAM memory cycles (not VRAM). WT =0 Number of wait states in synchronous 80186 interface. The synchronous 80186 interface is not used in our example; therefore, this is a "don't care" setting. Bep = I This sets the External CPU for 16-bit word access. GI and DI When the 82786 issues an'interrupt, these two bits can be read to determine which processor has issued the interrupt, then either the DP or GP Status Register can be read to determine the cause of the interrupt. 10-192 AP-408 WPI and WP2 The write protect bits are not set in our Example program. 3.2.8.3 DRAM Refresh Control Register mav DRAM_REFRESH,0018h j Write value into DRAM refresh control register. 240048-43 This register is programmed with a 6-bit Refresh Scalar for controlling the frequency for DRAM refresh cycles. The value programmed in this register depends on the refresh requirements of the DRAMs, the clock speed, and the number of DRAM row addresses. The value for the Refresh Scalar can be calculated by the following formula: T,et xCLK _ 1 16 x Refresh Rows Where: T ref = Refresh Time interval CLK = 82786 System Clock speed Refresh rows = Number of DRAM rows requiring refresh In our example, we have: 4 msx20 MHz ..:...:.:.:.:...:.:-=..:...:.:.= - 1 = 18.53 16 x 256 NOTE: DRAM refresh cycles can be turned off by programming a value of 3F (hex) into the DRAM Refresh Register. 3.2.8.4 DRAM Control Register mov DRAM_CONTROL, OOlDh ; Write value into DRAM control register. 240048-44 Figure 3.8. DRAM/VRAM Control Register 15 14 13 12 o o o o 11 10 9 8 7 o o o o o Unused 6 5 o o RW1 RW2 4 3 2 DC1 DCO HT2 o o HT1 HTO The DRAM Control Register has seven one-bit fields as shown in Figure 3.7. The settings for our Example program follow: RWI and RWO indicate the number of rows of graphics memory. RWI = 0, RWO = indicates one row of graphics memory. DCl and DCO indicate DRAM/VRAM configuration. DCl = I, DCO = 1 indicate Fast Page Mode, Interleaved. HT2, HTl, and HTO indicate the DRAM/VRAM Height of graphics memory. HT2 = I, HTl = 0, HTO = 1 indicates 256K x N-type DRAMs. ° 10-193 inter AP-408 3.2.8.5 Display Processor, Graphics Processor and External Priority Registers mov DP_PRIORITY, 003Fh Write value into DP priority register. mov GP_PRIORITY,0009h Write value into GP Priority register mov EXT_PRIORITY,0028h Write value into External Priority register. 240048-45 DP Priority I 15 14 13 12 11 10 9 8 7 6 0 0 0 0 0 0 0 0 0 0 5 I0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 First Priority Reserved 0 2 Second Priority 0 First Priority Reserved External 3 First Priority Reserved GP Priority 4 0 Second Priority 0 0 0 Reserved Bus access priorities are programmable for the GP, DP and External Processor. Note that DRAM refresh is not programmable and always has highest priority. The First Priority Level (FPL) is used to obtain bus access; Secondary Priority Level (SPL) is used to keep the bus when another processor makes a request. The highest priority is 111 (binary). The lowest priority is 000. Refer to the "82786 User's Manual" Section 4.3-Bus Cycle Arbitration. In our Example program, DP has highest priority, External CPU has second priority, and GP has lowest priority. NOTE: These priorities may be changed at any time during program execution. 3.2.9 CLEAR PAGE 0 OF GRAPHICS MEMORY j *************** movax,SEG_GR_MEM mov ds, ax *************** Clear Page 0 of Graphics memory (64K bytes): Graphics memory space is in the 'A' segment mov ax,O mov dx,PAGE_PORT out dx. ax Select page 0 of graphics memory mov bx,O mov cx,32767 mov 51,0 CLEAR_MEMORY: mov (51], bx add 51,2 loop CLEAR-HEMQRY Clear page 0 of graphics memory (to be 32767 word. of memory to be cleared = 64K byte. used 85 a bitmap for drawing commands.) 240048-46 Page zero of graphics memory is used for storing the bitmap. Before drawing into the bitmap, it must be cleared (filled with zeroes). This section of code clears page 0 of graphics memory by writing zeros into each memory location. First, the segment address of Graphics Memory space is written into the CPU DS register. Next, page zero of graphics memory is selected by writing a zero into the Page Select Register on the Evaluation Board. The loop command is used to clear 32767 words (64 Kbytes) of memory. The GP bit_blit command using logical operator 0, or the scan_lines command using color 0 may also be used as a fast technique for clearing a section of graphics memory. 10-194 inter Ap·408 3.2.10 PREPARE DS, ES, AND DIR FLAG FOR USE WITH REP MOVSB INSTRUCTION ;****** Prepare DS. ES. and Dir Flag for use with REP MOVSB instruction. mov ax,OFh ****** mov dx.PAGE_PORT out dX,BX mov Bx,SEG mov ds,ax Select page F of graphics memory beg_dp_ctrl_blk Set data segment mov ax.SEG_GR_MEM mav eS,ax and extra segment. cld Clear Direction Flag, sets auto-increment of 51 and DI when using REP instruction. 240048-47 This section of code performs the necessary preparation for the next three sections: moving the DP Control Block, DP Descriptor List, and GP command list from CPU memory to Graphics Memory. Page F of graphics memory is the desired destination of these three blocks of data, .therefore page F of graphics memory is selected by writing to the PAGE_PORT. Next, the Data Segment and Extra Segment registers are written. Lastly, the Direction Flag is cleared. This is necessary to cause the string instruction to auto-increment the SJ and DJ index registers. 3.2.11 COpy DP CONTROL BLOCK REGISTERS FROM CPU MEMORY TO GRAPHICS MEMORY :***** Copy OP CONTROL BLOCK REGISTERS lea ex, end_DP_ctrl_blk from CPU memory to Graphics Memory. **** sub ex, offset beg_dp_ctrl_hlk lea s1. beg_dp_ctrl_blk mov d1. offset OP_REG_MAP Move CX bytes from DS:[SI] to ES:[OI] rep movab thus, copying DP Control Block Registers from CPU memory to Graphic5 memory. 240048-48 This section of code copies the values for the DP Control Block registers from CPU memory to Graphics Memory beginning at address FFOOO (hex). 3.2.12 COpy DP DESCRIPTOR LIST FROM CPU MEMORY TO GRAPHICS MEMORY ;******* COpy DP Descriptor List from CPU memory to Graphics memory. lea cx, end_dp_descl sub cx, offset dp_descl lea 51, dp_descl mov di, offset OESC_PTR_LO rep movsb ******** Move CX bytes from OS:[SI] to ES:[OI] thus copying DP descriptor list from CPU memory to graphics memory. 240048-49 This section of code copies the values for the DP Descriptor List from CPU memory to Graphics Memory beginning at address FFIOO (hex). 3.2.13 COpy GP COMMAND LIST FROM CPU MEMORY TO GRAPHICS MEMORY i********* Copy GP command list from CPU memory to graphics memory; ********* lea ex, len_gp_listl sub cx, offset gp_Iistl lea si, gp_listl mov d1. offset rep movsb GP_LIST~PTR_LO Move CX bytes from OS:[SI] to ES:[OI] thus copying GP command list from CPU memory to graphics memory. 240048-50 10-195 AP-408 This section of code copies the GP command list from CPU memory to Graphics Memory beginning at address FF200 (hex). The labels in the program marking the beginning (gp_listl) and ending (Iell.-gp_listl) of the GP command list provide a convenient method for determining the length of the GP command list. Commands may be added or deleted from the command list, the program computes the number of bytes to be copied into graphics memory. 3.2.14 START THE DISPLAY PROCESSOR ********************* mov mov mov mov . Start up the Display Processor: DP_PARM1_REG,DP_REG_MAP_LO DP_PARM2_REG,DP_REG_MAP_HI DEF_VIDEO_REG,O DP_OPCODE_REG, LOADALL ******************** parameter 1 for dp command parameter 2 for dp command Write 0 in Default Video register Write opcode register, thus starting up the Display Processor 240048-51 This section of code starts up the Display Processor. First, the address of the values for the DP Control Block Registers are written into the DP Parameter registers. The lower part of the address is written into PARAMETER 1 Register; the upper part of the address is written into PARAMETER 2 Register. The Default Video Register is assigned zero. Lastly, the LOAD ALL opcode is written into the DP OPCODE register, thus starting operation of the DP by loading the values for the DP Control Block. It is important to write the address for the LOADALL command into the Parameter registers before the LOADALL command is written into the opcode register. If the LOADALL command is written first, the registers .will be loaded immediately, from an erroneous location. Now, all the pointers and data structures for the Display Processor are in place. The Descriptor Pointer now points to a valid Descriptor List which points to a valid bitmap area in graphics memory. Refer to Figure 3.9. 10-196 AP-408 82786 Graphics Memory Bitmaps IBM AT System Memory 82786 Graphic. Proc•••or oJaplay Prace••or ., , Valu•• tor DP Control Block Regll'er • / r -Valu -••-forl '.J-FFOOO DP_Control Block Ragllt .. a DP_Control Blockr I-----l DP O•• crlptor Ua. Regilt.,. Load All / I o.lcrtptor Pointer '" / -~ ~-----"-YrF·F1DD ...... I 'i GP Command uat! Jf/'-----, W_""'U'I/ : Unk '-------"......-----!;;;;;;;;;:::::::::~-_J .1 FF211D - j GP Command Ult a I J --- 240048-19 Figure 3.9 3.2.15 EXECUTE THE GRAPHICS PROCESSOR COMMAND LIST command list: ******************* Execute the GP parameter mov GP_PARH1_REG.GP_LIST_PTR_LO 1 for GP command GP_PARH2_REG.GP_LIST_PTR_HI parameter 2 for GP command Write ope ode register, thus starting mov GP_OPCODE_REG. LINK execution of the GP command list. ********************* MOV 240048-52 This section of code starts up the Graphics Processor. First the lower and upper address of the GP command list are written into the GP Parameter Registers I and 2, respectively. Next, the opcode for the GP LINK command is written into the GP opcode register. When a zero is written into the End of Command List (ECL) bit (lowest bit) the GP begins execution. The LINK command causes the GP execution to continue at the indicated address. 10-197 intJ AP-408 It is important to write the link address into the parameter registers before writing the LINK opcode into the opcode register. If the LINK command is written first, the GP will begin execution immediately, executing an erroneous command list. See Figure 3.10. . Execute GP Command List • Write addresses of GP Command List into GP Parameter Registers GP Parameter Registers Lower Part of Address -+ Parameter Register 1 Upper Part of Address -+ Parameter Register 2 • Write GP opcode for Link command into GP Opcode Register Offset Opcode 20 Opcode Parameter 1 22 Link Address Lower Parameter 2 24 Link Address Upper Status 26 Figure 3.10 3.2.16 TERMINATE PROGRAM i************************ mov ah,4Ch Terminate program: int 21h ************************* Call BIOS terminate fUnction to return to MS-DOS operating 5ystem. code ENDS These two lines call the BIOS routine to return control to the operating system. 3.3 Example Source Code Listing This section provides the complete source code listing of the EXAMPLE program. ****************************************************************************** Program name' EXAMPLE1.ASM Description: Initialize the 82786 ~egisters. program the Display Processor (DP) for one full-screen window. and draw a simple graphics image using the Graphics Processor (GP). Direct questions to your nearest Intel Sales Off ice. ****************************************************************************** 10-198 AP-408 ***************** ;***************** Program Constant definitions: SEG_GR_MEM SEG_786_REG DP_REG_MAP equ OAOOOh equ OCOOOh equ OFOOOh DP_REG_MAP_LO DP_REG_MAP_HI DESC]TR_LO DESC_PTR_HI GP_LIST]TR_LO GP_LIST_PTR_HI BITMAP_O_LO BITMAP_O_HI PAGE_PORT equ equ equ equ equ equ equ equ equ DP_REG_MAP OOOOFh OFlOOh OOOOFh OF200h OOOOfh OOOOh OOOOh 0300h Segment to Segment to Address in DP control access graphics memory. access 82786 registers. graphics memory used to load values to/from DP registers Df Discriptor List address in graphics memory Address in graphics memory of GP command list Starting address of hi tmap_O (lower byte) Starting address of bitmap_O (high byte) I/O address for graphics mem page select reg. ;******************** Display Processor opcodes: ;******************** Graphics Processor opcodes: LOADREG LOADALL DUMPREG DUMPALL equ equ equ equ 400h 500h 600h 700h ABS_MOV ARC_EXCL ARC_INCL CIRCLE DEF_BITMAP DEF_COLORS DEF_LOGICAL OP DEF_TEXTURE-OP LINE LINK POINT REL_MOV HALT equ equ equ equ equ equ equ equ equ equ equ equ equ ************************* 4FOOh 6800h 6900h 8EOOh 1AOOh 3DOOh 4l00h 0600h 5400h 0200h 5300h 5200h 0301h ************************ i*********** Locations for the 82786 Internal Register Block: ************* register SEGMENT at OC440h INTER_RELOC db 2 DUP(?) Internal Relocation Register d .. (7) reserved location is 82786 Register Block BIU_CONTROL db 2 DUP (7) BIU Control Register DRAM_REFRESH d .. (7) DRAM Refresh control register DRAM_CONTROL d.. (7) DRAM control register dw (7) DP priority register DP _PRIORITY GP priority register GP_PRIORITY dw (7) External Priority Register dw (7) EXT]RIORITY dw 8 DUP (7) reserved locations in 82786 Register Block GP opcode register GP_OPCODE_REG dw (7) GP Parameter 1 Register GP_PARMl_REG dw (7) GP Parameter 2 Register GP_PARM2_REG dw (7) GP Status Register GP_STAT_REG dw (7) reserved locations in 82766 Register Block dw 12 DUP (7) dw (7) DP opcode register DP_OPCODE_REG DP_PARMl_REG dw (7) DP Parameter 1 Register DP_PARM2_REG dw (7) DP Parameter 2 Register DP_PARM3_REG dw (7) DP Parameter 3 Register dw (7) DP Status Register DP_STAT_REG DEF_VIDEO_REG dw (7) DP Default Video Register regbter ENDS 10-199 intJ AP-408 data SEGMENT ;************* Values for the Display Processor Control Block: beg_dp_ctrl_blk LABEL word ; REGISTER NAME SETTING ; d .. dw dw dw dw dw 3 1111h 00010h OOOOOh OOOOOh OOOOOh ************* --------------- ; Video Status ; Interrupt Mask ; Trip Point ; Frame Interrupt ; Reserved ; CRT Mode ; ; : cursor ON, and display ON : all interrupts disabled : controls when DP fifo is loaded : no interrupts on frame count : non-interlaced, window status off, : DP master mode Blank master mode, : acceleration mode off The following 8 registers contain the video timing parameters for a screen resolution of 640 X 381 pixels. These values assume VCLOCK = 18MHz. These values achieve a screen refresh of 60 Hz. dw 86; Hsyncstp d" 9 5 ; Hfldstrt dw 735 ; Hfldstp dw 753 ; Linelength dw 11; Vsynstp dw 1 5 ; Vfldstrt dw 396 ; Vfldstp dw 398 j Framelength dw DESC_PTR_LO ; DP descr ptr low dw DESC_PTR_HI • DP descr ptr high dw OOaDOh ; Reserved dw 00101h j Zoom factor : X-zoom = 2, Y-zoom = 2 dw 00006h ; Field color dw 00003h j Border color d" OOOOOh ; 1 BPP pad dw OOOOOh ; 2 BPP pad dw OOOOOh ; 4 BPP pad dw OAOFFh Cursor Style : Size = 16 X 16, transparent, cursor pad dw 500 ; Cursor X-position dw 180 ; Cursor Y-position The following 16 registers define the cursor bit pattern (an upward arrow): dw 0000000100000000b dw 0000001110000000b dw 0000011111000000b dw 0000111111100000b dw 0001111111110000b dw 0011111111111000b dw 0111011111011100b dw 1100001110000110b dw 0000001110000000b dw 0000001110000000b dw 0000001110000000b dw 0000001110000000b dw 0000001110000000b dw 0000001110000000b dw 0000001110000000b dw 0000001110000000b end_DP_ctrl_blk LABEL word j************ Definition of Display Processor Descriptor List: dp_desc1 LABEL word ************ ; Header of DP descriptor: dw 380 ; dw DESC_PTR_LO+20; ; (number of lines - 1) lower link to next strip descriptor (there is none, but if one were added, this is the link) upper link to next strip descriptor (there is none) dw DESC_PTR_HI j dw 0 (number of tiles - 1) ; First (and only) Tile Descriptor dw 0080 ; Bitmap width (number of bytes) dw OOOOh ; Bi tmap start address lower dw OOOOh j Bi tmap start address upper dw 01FOh ; 1 bpp. start bit F. stop bit 0 dw 0078 ; Fetch count = (number of bytes -' 2) dw OFOOOh All 4 borders on, window status=O, PC mode off, field off end_dp_desc1 LABEL word; *********** End of DP descriptor list. ********* 10-200 inter Ap·408 ;********** Definition of Graphics Processor Command List: ************ gp_li.t1 LABEL word dw DEF_BITHAP, BITHAP_O_LO, BITHAP_O_HI, 639 , 380 , 1 address 10 . address hi . xmax, ymax, bits per pixel dw DEF_TEXTURE_OP, OFFFFh dw DEF_COLORS, OFFFFh, OOOOOh dw DEF_LOGICAL_OP, OFFFFh, 00005h X equ 10 Y equ 10 solid texture replace destination with source ; X-coordinate of starting location for drawing ; Y-coordlnate of starting location for drawing ;************************* dw dw dw dw dw dw dw dw dw dw ABS_HOV. X. Y LINE, 35, 0 LINE, 0, 35 LINE, -35, 0 LINE, 0, -35 REL_HOV, 0, 45 LINE, 35, 0 LINE, 0, 135 LINE, -35, 0 LINE, 0, -135 Draw Intel logo: ************************ ; Move to beginning position for drawing. ; Dot the "i" Draw body of "1" dw REL_HOV, 42, 0 re-posi tion for "N" dw LINE, 35, 0 Draw "N" dw LINE, 0 , 12 dw REL_HOV, 0, 32 dw LINE, 0, 90 dw LINE, -35, 0 dw LINE, 0, -135 dw REL_HOV, 51, 47 dw ARC_INCL, -20, -20, 40, 0, 16 dw REL_HOV, 12, -4 dw ARC_INCL, -27, -50, 50, -10, 42 dw REL_HOV, 5, 3 dw LINE, 0, 90 dw LINE, 35, 0 dw LINE, 0, -105 dw REL_HOV, 15. 90 re-posltion to draw "t" dw LINE, 0, -95 dw LINE, -12,0 dw LINE, 0, -25 dw LINE, 12, 0 dw LINE, 0, -45 dw LINE, 35,0 dw LINE, 0,45 dw LINE, 15,0 dw LINE, 0, 25 dw LINE, -15, 0 dw LINE, 0, 77 dw LINE, 15, 0 dw REL_HOV, 0, 30 dw LINE, -31, 0 dw REL_HOV, 5, -25 dw ARC_INCL, -30, 10. -5, 35. 25 ;draw curve at lower left of "t" dw REL_HOV, 60, -5 dw LINE, 45,0 dw REL_HOV, 31,0 dw LINE, 6,0 dw LINE, 0, -150 Draw "1" dw LINE, 35, 0 d" LINE, 0, 180 d" LINE, -120, 0 dw REL_HOV, 52, 10 dw LINE, 37, 0 d" REL_HOV, -65, -40 d" ARC_INCL, -30, -30, 30, 0, 22 Draw "e" dw ARC_INCL, -65, -65, 65, 0, 54 d" REL_HOV, 2, 30 dw ARC_INCL, -30, 0, 25,30 ,27 d" REL_HOV, 3, 0 dw ARC_INCL, -65, 0, 59, 65 ,60 d" HALT len_lP_list1 LABEL word data ENDS 10-201 intJ AP-408 code SEGMENT ASSUME cs: code, ds: data. BS: ;************************ main: mav ax, data register Program execution begins here. ******************* Load data segment location into DS register mav ds,ax mev ax,register mov eS,ax /' ;*********************** Software Reset of 82786 *************************** To reset the 82786 on the Intel Evaluation Board (Rev C2): Set and then reset bit 4 at I/O location 300. mov aX,OOlOh mov dX,PAGE_PORT out dX,ax Set bit 4 at 1/0 location 300. mav aX,OOaOh out dX,ax Reset bit 4 at 1/0 location 300. ;*********************** BIU initialization: *************************** The following two lines write a value of 0110 (hex) into the internal relocation register. This sets the 82786 registers for I/O - mapped access at I/O locations 4400 through 447F. The Intel Evaluation Board decodes a CPU memory access at memory locations C4400 through C447F and generates an I/O access to the 82786. The 82786 comes up in I/O mode and byte mode after r~set. Access to the registers must be one byte at a time until WORD mode is set. mov INTER_RELOC, 10h ; Write low byte into internal relocation register. mov INTER_RELOC[ll,Olh ; Write high byte into internal relocation register. The following two lines write a value of 0011 (hex) into the BIU control register. This sets the Internal Register Block for la-bit WORD access by the External CPU. All subsequent access to the 82786 registers i5 by WORD access. mov BIU_CONTROL,10h Write low byte into BIU control register mov BIU_CONTROL[ll,OOh Write high byte into BIU control register mov DRAM_REFRESH,0018h mov DRAM_CONTROL, OOlDh Write value into DRAM refresh control register. ; Write value into ORAM control register. mov OP_PRIORITY, 003Fh Write value into OP priority register. mov GP_PRIORITY,0009h Write value into GP Priqrity register mov EXT_PRIORITY,0028h Write value "into External Priority register. ;*************** mav ax,SEG_GR_MEM mov ds.ax Clear Page 0 of Graphics memory (64K bytes): **************~ Graphics memory space is in the 'A' segment mav ax,O mov dx,PAGE_PORT out dX,ax mov bx,O mov cx,32767 mov si,O CLEAR_MEMORY: mov [siJ,bx add si,2 loop CLEAR_MEMORY Select page 0 of graphics memory 32767 words of memory to be cleared =" 64K bytes Clear page 0 of graphics memory (to be used as a bitmap for drawing commands. ) 10-202 AP-408 ;****** Prepare DS, ES. and Dir Flag for use with REP MOVSB instruction. mov ax,OFh mov dx,PAGE_PORT out dx, ax mov ax,SEG ****** Select page F of graphics memory beg_dp_ctrl_blk mov dS,BX Set data segment mov ax,SEG_GR_MEM moves. ax and extra segment. Clear Direction Flag, seta auto-increment cld of SI and DI when using REP instruction. ;***** Copy DP CONTROL BLOCK REGISTERS from CPU memory to Graphics Memory. **** lea cx, end_DP_ctrl_blk sub ex, offset beg_dp_ctrl_blk lea si" beiLdp_ctrl_blk mov di, off set DP_REG_MAP rep' movsb Move CX byte. from DS:[5I] to ES:[DI] thu., copying DP Control Block Regi.ters from CPU memory to Graphics memory. i******* COpy DF Descriptor List from CPU memory to Graphics memory. lea ex, end_dp_descl sub ex, offset dp_descl lea si, dp_descl mov di, off.et DESC_PTR_LO ******** Move ex bytes from DS:[SI] to ES:[DI] thus copying DP de.criptor li.t from CPU rep movsb memory to graphics memory. ;********* Copy GP command list from CPU memory to graphics memory: lea ex, len_BP_listl sub ex, offset gp_listl ********* lea 5i. gp_listl mov di, offset GP_LIST_PTR_LO rep movsb Move CX byte. from DS:[SI] to ES:[DI] thuB copying GP command list from CPU memory to graphics memory. mav ax, register mav as.ax ********************* Start up the Display Processor: ******************** mov DP_PARM1_REG,DP_REG_MAP_LO parameter 1 for dp command mov DP_PARM2_REG,DP_REG_MAP_HI parameter 2 for dp command mov DEF_VIDEO_REG,O Write a in De1ault Video register mov DP_OPCODE-REG, LOADALL Write opcode register. thus starting up the Display Processor ********************* Execute the GP command list: mov GP_PARMLREG,GP_LIST_PTR_LO mov GP_PARM2-REG,GP_LIST_PTR_HI mov GP_OPCODE_REG, LINK i************************ mov ah,4Ch int 21h ******************* parameter 1 for GP command parameter 2 for GP command Write opcode register, thus starting execution of the GP command list. Terminate program: ************************* Call BIOS terminate function to return to MS-DOS operating system. code ENDS stack SEGMENT stack DW 64 DUP(?) stack ENDS Program stack segment Define unltlalized data space for stack. END main 10-203 AP-408 3.4 Exercises This section provides some exercises for the reader in the form of suggested modifications to the Example 1 program. By working through these exercises in succession, the reader will gain an understanding of important concepts and .valuable experience in programming the 82786. Solutions to the Exercises are provided in the Appendix. Exercise 1: • Tum cursor off • Video Status Register, Register 0 in DP Control Block, controls the cursor Register Offset VSTAT IZero unused upper bits IC ID I 00 C= 1 C= 0 Cursor On Cursor Off D =,1 ' Display On D = 0 Display Off Exercise 2: " Replac,e GP Command List· in Example 1 with' new. GP Command List to draw the straight lines in the graphic Center -of Circle at (200, 182) RadiilS .= 50 50 '011 150 200 50 100 150 200 250 300 350 50 100 150 200 250 300 350 400 (640 x 381) 450 500 550 500 240048-26 Hint: Replace GP Command List in Exercise 1 with a new Command List. See description of Abs~ov, Line, and Circle commands. 10-204 inter AP-408 Exercise 3: • Modify the program from Exercise 2. • Change from I-bit per pixel (bpp) to 4 bpp. • Use the Def_Color Command to change the color of each line in the drawing. Hint: Change Def_Bitmap parameters and Tile Descriptors. Clear an additional page (Page I) of Graphics Memory to allow room for the larger bitmap. Exercise 4: • Write a new DP Descriptor List and turn on the borders for two windows, not overlapping, as shown below. • The left window should contain the 4 bpp multi-colored image drawn in Exercise 3. • The right window should contain the I bpp image drawn in Exercise I (the Intel Logo). • Change I bpp pad register to accentuate the two different windows. in\! 240048-27 Hint: Change Def~itmap parameters. Modify strip and tile descriptors. Combine the two GP command lists from Exercise 3 and Example I programs. Before starting the second command list, be sure to use a new Def_Bitmap command. Clear page 2 of Graphics memory. 10-205 AP-408 Exercise 5: Same as Exercise 4, except make the two windows overlap as shown below.. • In 240048-28 Hint: Create two strips. Strip 1: Contains 1 tile consisting of 100 lines. Strip 2: Contains 2 tiles consisting of 281 lines; the first tile is 320 pixels wide. 10-206 inter Ap·408 CHAPTER 4 QUICK REFERENCE SECTION 4.0 Introduction 4.1 82786 Directly Accessible (Internal) Registers 4.2 GP Indirectly Accessible (Context Switching) Registers 4.3 GP Commands, Opcodes, Parameters 4.4 DP Indirectly Accessible Registers (DP Control Block Registers) 4.5 DP Commands, Opcodes, Parameters 4.6 Strip and Tile Descriptor Formats 4.7 Example Video Timing Parameters 4.0 INTRODUCTION This Chapter provides a compilation of data frequently used by 82786 programmers. It contains data for all 82786 registers, commands, command parameters, opcodes, strip and tile descriptor format, video timing parameters. 10-207 inter AP-408 4.1 82786 Directly Accessible (Internal) Registers Regist.r Off ••1 (HI 15 .4 '3 .2 11 10 M.D Internal Relocation 00 Base Address Reserved 02 Reserved (zero 'or future compatibility) BIU Control 04 06 8 DRAMJVRAM Control Reserved (zero lor future compatlblhty) Refresh Control Reserved (zero for future compatibility) ••u 'OO-OFH A Reserved (zero for future compatibility) GP Priotlfy DC Reserved (zero 'or future compatibility) External Priority 0E 0 1• 2 Reserved (zero tor future compahbillty) 4 Reserved (zero for future compatibility) 6 Reserved (zero lor future compatibility) [ Instruction POinter 8 Reserved (zero for future compatibIlity) A Reserved (zero for future compatIbIlity) C Reserved (zero lor luture compatIbIlity) '2C·3FH Opcode WP2 DC' FPl FPl FPl OCO HT2 HTl SPl SPl HTO Reserved I Reserved (zero lor future compatIbIlIty) GECl Lmk Address (lower) • lmk Address tUpper) GPOll GRCD Reserved 6 8 InstructIon POInter (lower) C E 0 2 Reserved (zero for future compatIbIlity) 4 ReserVed (zero for future compatIbIlIty) GINT Reserved (zero for future compatibIlity) GPSC GBCOV GBMOV/GCTP IG.BMC Instruchon Pomter (Upper) Reserved (zero for future compatIbIlity) Reserved (zero fat luIure compatIbIlity) Reserved (zero lor future compatIbIlity) 6 Reserved (zero for future compatibIlity) 8 Reserved (zero for future compatIbIlity) A Reserved (zero for future compallblllty) Reserved (zero for luture compatIbility) 3E Reserved (zero lor lulUre compatIbility) 40 Opcode Reserved (zero lor luture compatlblhty) Parameter 1 42 Memory Address (lOwer) Parameter 2 44 Reserved (zero for futurg compatibility) Parameter 3 46 Reserved (zero for future compatlblllly) Status Register 48 Reserved Delault Video 4A Reserved A•••nH 4C Reserved (zero for future compatIbilIty) '4C·7FH 4E Reserved (zero for future compatibility) 50 52 Reserved (zero for future compatibility) S4 Reserved (zero lor luIure compatibility) 56 58 Reserved (zero lor future compatIbility) Reserved AWO Reserved 3C DP '41>48H WP. Reserved (zero lor future compallblllty) Opcode ~ ~A R••• rv.d D. G' Reserved (zero for future compaltbihlYI E GP GRO Opcode 20 '2G-2BH GA1 Parameter 1 2 2 GR2 Parameter 2 BCP Reserved (zero lor future compatibility) -- i Status Register IGSTAT) WT Refresh Scaler AW. Reserved (zero lor future compalibillty) Display Pnonty R... rved '1D-1FH VA 1 ECl Memory Address (Upper) Register Identification FA. ACO OOV I FMT BlK EVN 000 ECl Default VIdeo Reserved (zero for future compatIbilIty) Reserved (zero lor luture compatibIlity) 5A Reserved (zero for future compatibility) 5C Reserved (zero lor luture compatibIlity) 5E Reserved (zero for future compatibility) 60 62 64 66 68 Reserved (zero for luture compatibility) Reserved (zero for luture compahbllity) Reserved (zero for future compahbllltYI Reserved (zero for future compatibility) Reserved (zero lor luture compatibility) 6A Reserved (zero lor luture compatibIlity) 6C 6E Reserved (zero lor luture compatibility) Reserved (zero lor luture C:ompahblhty) 70 Reserved (zero lot luture compahblflty) 72 Reserved (zero lor future compallbthly) 7. Reserved (zero lor future compatibility) 76 Reserved (zero lor luture compaltblhly) 78 Reserved (zero lor luture compatibility) 7A Reserved (zero lor future compatibility) 7C Reserved (zero for luture compalibillty) 7E Reserved (zero tor future compatibIlity) '5 14 '3 12 .11 '0 240048-29 82786 128-byte Internal Register Block 10-208 infef AP-408 4.2 GP Indirectly Accessible Registers Context Registers 10 Name GCOMM GPOEM GIMR GCHOR GCHA GSP GCA GBORG GCX GCY GPAT GSPAC GCNT GN GVERS 0001 0003 0004 0007 010B 010C 010D 010F 0010 0011 0012 0013 0014 0016 0017 Bits (16) (6) (6) (2,2) (21) (21) (21) (21) (16) (16) (16) (16) (16) (16) (16) Function Command Poll Mask Interrupt Mask Character Orientation and Path' Character Font Base Address Stack Pointer Memory Address of Current Position (x, Y) Bitmap Origin Address Current X Position Current Y Position Line Pattern Spacing between Characters and All Bitblts Character Count' , Number of 16-bit Words Spanning Width of Bitmap Version Number'" (D Step Value = 5) GXMAX GYMAX GXMIN GYMIN GMASK GBGC GFGC GFCODE GCIP GBPP (RO) 0090 0091 0094 0095 0099 009B 009C 009E 01AC 009F (16) (16) (16) (16) (16) (16) (16) (4) (21) (4) GBPP (WO) 0008 (4) Maximum X for Clipping Rectangle Maximum Y for Clipping Rectangle Minimum X for Clipping Rectangle' Minimum Y for Clipping Rectangle' Pixel Mask Background Color Foreground Color Function Code for Pixel Updates" Current Instruction Pointer Used with Dump Register command to get Current Bits per Pixel Address AM Used with Load Register command to write Current Bits per Pixel Address AM These bits are right justified in each byte of the word in which they are stored. Two bits are stored in bits 1 and .., " AA, o and two bits are stored in bits 8 and 9; the remaining upper bits in each byte are zeroed. GCNT ID reassigned from 0015 to 0014 in D-Step. In D-Step, valid after RESET and prior to drawing or drawing control commands. Correction to previous GXMIN ID 0096 and GYMIN 0097 assignments. GFCODE ID reassigned from OOlC to oo9F in D-Step. New D-Step Bpp Registersd. NOTE: Simply saving and restoring the context registers is not sufficient to restore the state of the graphics processor. 10-209 inter AP-408 4.3 GP Commands, Opcodes, Parameters CjlQMljmc CCMIANJ)S ARC_EXCL ARC_INCL CIRCLE INCR_POINT LINE POINT POLYGON POLYLINE RECTANGLE SCAN_LINES OPCQDI 6800 6900 8£00 8400 PAAMIUIM dxmin, dymin, dxmax. dymax, radiu", dxmin, dymin. dxmax. dymax, radius radius 5800 array addre.ss low, high dx. dy dx. dy array address low, high array address low, high dx. dy BACO array address low, high, number of 5400 5300 7300 1400 line" DAn TJW(SFIR CQMMANI)S BIT_SLT OPCQDZ 6400 PARAMli1ZRS source x, source y, dx, dy 301.\%,C8 addr low, l!Iource addr hiqh, source x-max, source y-max, source x, source y, dx' (rect width - 1), dy (rect height - OPAQUE TRANSP REVERSE OPAQUE REVERSE TRANSP AEOO source addr low, source addr high, source x-max, source y-max, source x, source y, dx (rect width - 1), dy (rect height - 1) string pointer low, high, number of characters CHAR OPAQUE TRANSP REVERSE OPAQUE REVERSE TRANSP 1) 0400 0500 0600 0700 A600 A700 A800 A900 pMWIJ!G cmmtOL oms QpCOOI 'MAMlj1lRS ABS_MOV 4FOO 4EOO OAOO x, Y path-rotation (one word) char font addr low, char font &ddr high char font addr low, char font addr hiqh x-min, y-min, x-max, y-max foreqround, backqrouncl color bit mask, function code number of pixel" of ,space pattern pattern no parameters no parameters dx. dy , DEF_CHAR_ORIENT DEF_CHAR_SET_BYTE 0800 REL_MOV 4600 3000 4100 4000 0600 0100 4400 4500 5200 HOM-DRAWING COMMANDS OPCOO& 'ARAMIjTlItS CALL OFOO 2900 0301 OEOO 0200 3400 0300 1100 call addr low, dump addr low, no parameters no parameters link addr low, load addr low, no pArameters no parameters CEF_CLIP_RECT DEF_COLORS DEF_LOGICAL_OP DEF SPACE OEr-TEXTURE OPAQUE DEF::TEX'l'UR.E::TRANSP ENTER_PICK EXIT_PICK HALT INTR_GEN LINK LOAD_REG NOP RETURN call addr high clump addr high, req 10 link addr high load addr high, req ID 240048-68 10-210 intJ AP-408 4.4 DP Indirectly Accessible Registers (DP Control Block Registers) Regllt.r 01t•• 1 (HIlS 14 13 Video SI.luI 00 Reserved Interrupt Mask 0 1 Reserved 02 Reserved 03 Reserved 04 Reserved CRTllad. 05 Reserved 12 11 10 FRI ooV RCD FMT BlK EVN Trip POlOt I I l I w I 00 Nonlnterlace 10 Inlerlace 11 Interlace-Sync lowL HSync/VSync Slave Mode II) Reserved 7 Reserved Horllontal Field SlarllHFldStrt) 8 Reserved HOrizontal Field Stop (HFldStp) A Accelerated V,deo (2) 00 06 l A B S Wmdow Slatus Enable (I) Normal (25 MHz, 01 High-Speed (50 MHZ) 10 Very Hlgh·Speed (100 MHz) 11 Super High-Speed (200 MHz) Honzontal SynchrOnization SlOp (HSyncSlp) 09 ReseJv~d Lme Length (lmelenl OA Reserved Vertical Synchronization Stop (VSyncStp) Vertical Field SlarllVFldSlrl) B Reserved OC Reserved Vertical Field Stop IVFldStpl 0 Reserved Frame Length (Framelenl Descriptor Address Pointer (Lowerl E Reserved Descripior Address POinter (Upper) . Reserved 10 1 0 ECl Frame Interrupt I Interlace ·(21Il~ 01 Reserved F C 000 Reserved XZoom Reserved YZoom 12 Reserved Field Color (FldCOlorl 13 Reserved Border ColOr (BdrColor) 14 Reserved 1 8pp Pad 15 Reserved 2 8pp Pad 16 Reserved C.rMode 17 4 8pp Pad X S I T CSI CSC Res. CsrPad I IRe •. I Reserved Reserved IRe•. 1 ... Cursor Size (11 CsrSlze 0 = 8x8 Csr 1 "" 16x16 Csr X "'" Crosshair Cursor (11 T ""' Transparent Cursor (I) CSt ~ Cursor Status to Wmdow Status Output (2) CSC Cursor Status Control (2) 00 - Current Window Status 01 ~ Foreground 10 ,.., Background 11 '" Block CsrStyle: S 18 Reserved 19 Reserved I I Cursor Position X (CsrPosXI Cursor Position Y (CsrPosY) lA Cursor Pattern a (CsrPalOI lB lC Cursor Pattern 1 (CsrPal1l Cursor Pattern 2 (CsrPat2) 10 Cursor Pattern 3 (CsrPat31 IE Cursor Pattern 4 (CsrPal") IF Cursor Pattern 5 (CsrPatS) 20 Cursor Pattern 6 (CsrPat6) 21 Cursor Pattern 7 (CsrPaI7) 22 Cursor Pattern 8 (CsrPatS) 23 Cursor Pattern 9 (CSrPaI91 24 Cursor Pattern A (CsrPalA) 25 Cursor Panern B (CsrPaIB) 26 Cursor Pattern C (CsrPatel 27 Cursor Pattern 0 (CsrPatDI 28 Cursor Panern E (CSrPaIEI 29 Cursor Pattern F (CsrPaiFI 15 14 13. 12 11 . 5 10 240048-30 10-211 inter AP-408 4.5 DP Commands, Opcodes, Parameters . pp CO"?"P' LOAD_REG LOAD.;,.ALL DtJIG_REG DUMP_ALL gpc;gpa 'Y'MI'l'IBI 0400 0500 0600 0700 load _cicir low, load ad.clr high clump aclciJ: 1011, load addr hlqh, :reg It) ~ add.:r low, l~ad ac1d.r hiqh load adclr low. 10al1 aclclr high, reg ID 240048-69 4.6 Strip and Tile Descriptor Formats Strip and Tile Descriptors 15 14 13 12 11 10 9 8 7 8 5 4 3 2 HEADER J J NUMBER OF UNES IN STRIp· 1 LINK TO !EXT STRIP DESCRIPTOR (LOWER) 15 FIRST TILE DESCRIPTOR II LINK TO NEXT STRIP DESCRIPTOR (UPPER) III RESERVED ~II JIl RESERVED 14 13 12 11 10 9 0 NUllSEA OF TILES INSTRIP·' 8 7 6 5 4 3 2 0 J BITMAP WIDTH MEMORY START ADORESS (LOWER) II T 15 SECOND TILE DESCRIPTOR Il II RESERVED BPP RESERVED FETCH COUNT B L 14 13 R 11 10 8 7 6 STOPBIT . J~010 RESERVED 9 UI STARTBIT 5 4 3· 2 MEMORY START ADDRESS (LOWER) JII RESERVED II RESERVED II RESERVED T B L II 'I R JII STARTBIT BPP Jil RESERVED •• • 10-212 MEMORY START ADDRESS (UPPER) Jil STOPBIT I J J FETCH COUNT WST 0 J J BITMAP WIDTH Il II 1lI 1811 12 MEMORY START ADDRESS (UPPER) Jil RESERVED JIGJl010 240048-20 infef AP-408 Field Tile Descriptor Format 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bianap Widlh Memory Stan Address (l.o~) I Mem Stan Addr (Upper) Reserved I Bpp I StanBit I StopBit Reserved I Fetch Cou .t· 2 (tile widlh ill bytes) Reserved T B L R I WSt~ 15 14 13 12 11 10 9 8 7 6 5 4 I PC I zl F 3 2 1 0 Normal Tlle Descriptor r+ =0 Reserved Reserved Field Tue Deesriptor Reserved Fieid Pixel Count - 1 (tile widlh in pixels) Reserved Reserved Reserved I Reserved Reserved IRcserv~ Z I F WSt 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 I n =1 240048-22 4.7 Example Video Timing Parameters The following table of Video Timing Parameters satisfy the requirements of NEC Multisync-compatible monitors. These parameters provide the given resolution and refresh rate when using the VCLK frequency indicated in the table. VCLK (MHz) Xmax Ymax Screen Refresh (Hz) 25 640 480 60 25 512 512 60 20 512 512 60 20 640 350 60 20 640 455 60 HSync Stop HFld Start HFld Stop Line Len VSync Stop VFld Start VFld Stop Frame Len 75 145 785 827 3 14 494 501 97 184 696 752 6 26 538 551 47 94 606 633 2 8 520 524 89 168 808 861 5 23 373 385 37 10-213 77 717 737 0 3 458 458 AP-408 APPENDIX A SOLUTIONS TO EXERCISES SOLUTION FOR EXERCISE 1 ; ****************************************************************************** Program name: EXERl. ASH . ; Description: Same 88 EXAMPLE! program J except cursor i3 turned off. ; ****************************************************************************** j************* Values for·the Display Processor Control Block: beS_dp_ctrl_blk LABEL word ; REGISTER NAME d" 1 "--------------- ; Video Status ************* ------------------------------------SETTING : cursor OFF. and display ON 240046-59 10-214 intJ Ap·408 SOLUTION FOR EXERCISE 2 ;****************************************************************************** Program name: EXER2. ASM Description: Modify the program from EXER1. Write a new GP command list to draw an interesting image as shown in accompanying documentation. The drawing contains 12 lines and one circle. ; ;****************************************************************************** ;********** Definition of Graphics Processor Command List: ************ gp_list1 LABEL word dw DEF_BITMAP. BITMAP_O_LO. BITMAP_O_HI. 639 • 380 • 1 address 10 , address hi I xmax, ymax, bits per pixel dw DEF_TEXTURE_OP. OFFFFh dw DEF_COLORS. OFFFFh. OOOOOh dw DEF_LOGICAL_OP. OFFFFh. 00005h X equ 10 y equ 10 501id texture replace destination with source X-coordinate of starting location for drawing Y-coordinate of starting location for drawing dw ABS_MOV. 600.380 dw LINE. -600. -30 dw ABS_MOV. 550.380 dw LINE. -550. -80 dw ABS_MOV. 500. 380 dw LINE. -500. -130 dw ABS_MOV. 450.360 dw LINE. -450. -180 dw ABS~MOV. 400.380 dw LINE. -400.-230 dw ASS_MOV. 350.380 dw LINE. -350. -280 dw ASS_MOV. 300.380 dw LINE. -300. -330 dw ASS_MOV. 250. 380 dw LINE. -250. -380 dw ASS_MOV. 200. 380 dw LINE. -150. -380 dw ASS_MOV, 150.380 dw LINE, -50, -380 dw ABS_MOV, 100.380 dw LINE, 50, -380 dw ASS_MOV. 50,360 dw LINE, 150. -380 dw ABS_MOV. 0.380 dw LINE. 250. -380 dw ABS_MOV,200.182 dw CIRCLE, 50 dw HALT len_gp_listl LABEL word 240048-60 10-215 intJ AP-408 SOLUTION FOR EXERCISE 3 -****************************************************************************** , Program name: Description: j EXER3 . ASH . Modify the program from Exercise 2. Change the hi tmap from 1 bit 'per pixel to 4 bits per pixel. Use the DEF COLORS command to chanse the color of each line in the drawIng. ;*************************************************************~*****~********** j ************ Defini tion of n"isplay Processor Descriptor List: ************ dp_descl LABEL word Header of DP descriptor: dw 380 (number of lines - 1) dw DESC PTR LO+20 lower link to next strip descriptor (there is none, but i f one were added, this is the link) dw DESC_PTR_HI upper link to next strip descriptor (there is none) dw 0 (number of tiles - 1) First (and only) Tile Descriptor dw 0320 Bi tmap width (number of bytes) dw OOOOh Bi tmap start address lower dw OOOOh Bitmap start address upper dw 04FOh 4 bpp, start bit F, stop bit 0 Fetch count = (number of bytes - 2) dw 0318 dw OFOOOh All 4 borders on,window status=O,PC mode off,field off end_dp_desc1 LABEL word ; End of DP descriptor list. *********** ;********** ********* Definition of Graphics Processor Command List: 240048-61 ************ gp_listl LABEL word dw DEF_BITMAP, BITMAP_O_LO, BITMAP_O_RI, 639 , 380 , 4 ; address 10 I address hi , xmax, ymax, hits per pixel dw DEF_TEXTURE_OP, OFFFFh solid texture dw DEF_COLORS, OFFFFh, 0 dw DEF_LOGICAL_OP, OFFFFh, 00005h replace destination with source X equ 10 Y equ 10 dw dw dw dw X-coordinate of starting location for drawing Y-coordinate of starting location for drawing ABS_MOV, 600,380 LINE, -600, -30 ABS_MOV, 550,380 DEF_COLORS, 1110111011101110b, dw LINE, -550, -80 dw ABS_MOV, 500, 380 dw DEF_COLORS, 1101110111010010b, dw LINE, -500, -130 dw ABS_MOV, 450,380 dw DEF_COLORS, 1100110011001100b, dw LINE, -450, -180 dw ABS_MOV, 400,380 dw DEF_COLORS, 1011101110111011b, dw LINE, -400,-230 dw ABS_MOV, 350,380 dw DEF_COLORS, 1010101010101010b, dw LINE, -350,-280 dw ABS_HOV, 300,380 dw DEF_COLORS, 1001100110011001b, dw LINE, -300, -330 dw ABS_MOV, 250,380 dw DEF_COLORS, 1000100010001000b, dw LINE, -250, -380 dw ABS_MOV, 200,380 dw DEF_COLORS, 0111011101110111b, dw LINE, -150, -380 dw ABS_HOV, 150,380 dw DEF_COLORS, 0110011001100110b, dw LINE, -50, -380 dw ABS_MOV, 100,380 dw DEF_COLORS, 0101010101010101b, dw LINE, 50, -380 dw ABS_MOV, 50,380 dw DEF_COLORS, 01'000100010001 OOb, dw LINE, 150,-380 dw ABS_MOV, 0,380 dw DEF_COLORS, 0011001100110011b, dw LINE, 250, -380 dw ABS_MOV,200,182 dw DEF_COLORS, 0010001000100010b, dw CIRCLE, 50 dw RALT len_sp_list1 LABEL word foreground color is 1110 (binary); must be repeated to fill the entire word. foreground color is 1101 (binary) . foreground color is 1100 (binary) . 0 foreground color is 1011 (binary) . 0 foreground color is 1010 (binary) . 0 foreground color is 1001 (binary) . 0 foreground color is 1000 (binary) . 0 foreground color is 0111 (binary) . 0 foreground color is 0110 (binary) . 0 foreground color is 0101 (binary) . 0 foreground color is 0100 (binary) . 0 foreground color is 0011 (binary) . 0 foreground color is 0010 (binary) . 240048-62 10-216 inter AP-408 ;*************** mav ax,SEG_GR_MEM Clear Page 0 of Graphics memory (64K bytes): mav ax.O mov dx,PAGE_PORT out dx.ax Select page 0 of graphics memory mav bx,O mav cx.32767 mav si,O 32767 words of memory to be cleared CLEAR_MEMORY: mov [5i],bx add 5i,2 loop CLEAR_MEMORY ;*************** mavax.l mov dx,PAGE_PORT out dx.ax mav bx,O mov eX,32767 mav si,O CLEAR_PAGE 1 : mov [si],bx **************) Graphics memory space is in the 'A' segment mov ds,ax Clear Page add 5i, 2 loop CLEAR_PAGEl = 64K bytes Clear page 0 of graphics memory (to be used as a bitmap for drawing commands. ) of Graphics memory (64K bytes): **************) Select page 1 of graphics memory 32767 words of memory to be cleared = 64K bytes Clear page 1 of graphics memory (to be used as a bitmap) 240048-63 10-217 infef AP-408 SOLUTION FOR EXERCISE 4 ;****************************************************************************** Program -name: EXER4 . ASH Description: Modify the program from Exercise 3. Modify the DP·descriptor list for 2 windows, not overlapping, as shown in the accompanying documentation. The left window should contain the 4 BFP multi-colored image drawn in EXERCISE 3. The right window should contain the 1 BPP image drawn in the EXAMPLE1 program (the Intel logo). ; ;****************************************************************************** ;************ Definition of Display Processor Descriptor List: dp_descl LABEL word Header of DP descriptor: dw 380 dw DESC_PTR_LO+20 (number of lower link but if upper link (number of ************ lines - 1) to next strip descriptor (there is none, one were added, this is the link) to next strip descriptor (there is none) tiles - 1) dw DESC_PTR_HI dw 1 ·First Tile Descriptor: dw 0320 Bi tmap width (number of bytes) dw 7720h Bi tmap. start address lower dw OOOOh Bi tmap start address upper dw 04FOh 4 bpp, start bit F, stop bit 0 dw 0158 Fetch count = (number of bytes - 2) dw OFOOOh borders on,window status=O,PC mode off,field off Second Tile Descriptor: . dw 0080 Bitmap width (number of bytes) dw OOOOh Bi tmap start address lower dw OOOOh Bi tmap start address upper dw 01FOh 1 bpp, start bit F, stop bit d .. 0038 Fetch count (number of bytes - 2) dw OFOOOh j A!!*!*~~!~;;S ~~d W~~d~; ~::~~~;~~~c l~~~~ ~!;*!~:;~ off end_dp_desc1 LABEL ; All 4 = word 10-218 240048-64 AP-408 :********** Definition of Graphics Processor Command List: gp_Iistl LABEL word ************ dw DEF_BITMAP. BITMAP_O_LO. BITMAP_O_HI. 639 • 380 . 1 address 10 , address hi dw DEF_TEXTURE_OP. OFFFFh dw DEF_COLORS. OFFFFh. OOOOOh dw DEF_LOGICAL_OP. OFFFFh. 00005h X equ 10 ;************************* dw ABS_MOV. X. Y LINE. LINE. xmax, ymax, bits per pixel solid texture replace destination with source ; X-coordinate of starting location for drawing ; Y-coordinate of starting location for drawing Y equ 10 dw dw I 35. O. 0 35 ;***************** Draw Intel logo: ************************ ; Move to beginning posi tien for drawing. ; Dot the "i" Draw figure from EXER3 program: dw DEF_BITMAP. 1120h. O. 639 • 380 • 4 *********************** address 10 , address hi , xmax, ymax, hits per pixel dw dw dw dw ABS_MOV. 600.380 LINE. -600. -30 ABS_MOV. 550.380 DEF_COLORS. 1110111011101110b. dw LINE. -550. -80 foreground color is 1110 (binary); must be repeated to fill the entire word. 240048-65 10-219 inter AP-408 ;*************** mov ax. SEG_GR_MEM mev ds,ax Clear Page 0 of Graphics memory (64K bytes): **************> Graphics memory space is in the • A' segment mevax,O mov dX,PAGE_PORT Select page 0 of gr~phic5 memory out dx. ax mev bx,O mav ex, 32767 32767 words of memory to be cleared = 64K bytes mev si,O CLEAR_MEMORY: mov [si],bx add 51,2 loop CLEAR_MEMORY ;*************** movax,l Clear Page Clear page 0 of graphics memory (to be used as a hi tmap for drawing commands.) of Graphics memory (64K bytes): **************' mov dX,PAGE_PORT out dx, ax Select page 1 of graphics memory mav bx,Q mav cx,32767 mav si,O 32767 words of rhemory to be cleared = 64K bytes CLEAR_PAGEl: Clear page 1 of graphics memory (to be mav [si].bx add 5i,2 loop CLEAR_PAGEl ;*************** movax.2 1,lsed as a hi tmap) Clear Page 2 of Graphics memory (64K bytes): mov dX,PAGE_PORT out dx, ax mov bx,O mov cx,32767 mov si,O CLEAR PAGE2: mov [si], bx add 51, 2 loopCLEAR_PAGE2 **************) Select page 1 of graphics memory 32767 words of memory to be cleared ::: 64K bytes Clear page 1 of graphics memory, (to be used as a bitmap) 240046-66 10-220 AP-408 SOLUTION FOR EXERCISE 5 ;; ****************************************************************************** Program name: EXER5. ASH ; Description: Same as EXERCISE 4 but the 2 windows are overlapping. ;****************************************************************************** ;************ Definition of Display Processor Descriptor List: dp_desc1 LABEL word ************ Header of First Strip descriptor: dw 99 ; (number of lines - 1) dw DESC PTR LO+20 ; lower link to next strip descriptor dw DESC:::PTR:::HI upper link to next strip descriptor (there is none) dw 0 (number of tiles - 1) First Tile Descriptor of first strip: dw dw dw dw dw dw 0080 OOOOh OOOOh 01FOh 0078 OBOOOh Bi tmap width (number of bytes) Bitmap start address lower Bitmap start address upper 1 bpp, start bit F, stop bit 0 Fetch count = (number of bytes - 2) Bottom border off, window stat=O, PC mode off, field off Header of Second Strip descriptor: dw 280 (number of lines - 1) dw DESC_PTR_LO+52 dw DESC_PTR_HI dw 1 lower link but if Upper link (number of to next strip descriptor (there is none, one were added, this is the link) to next strip descriptor (there is none) tiles - 1) First Tile Descriptor of Second Strip: dw 0080 Bitmap width (number of bytes) dw 8000 Bi tmap start address lower dw 0000 Bi tmap start address upper dw 01FOh 1 bpp, start bit F, stop bit dw 0040 Fetch count = (number of bytes - 2) dw 07000h Top border off, window stat=O,PC mode off,field off Second Tile Descriptor of Second Strip: dw 0320 Bitmap width (number of bytes) dw 7720h Bitmap start address lower dw OOOOh Bitmap start address upper dw 04FOh 4 bpp •• tart bit F. stop bit 0 dw 0150 Fetch count = (number of bytes - 2) dw OFOOOh All 4 borders on. window status=O, PC mode off. field off end_dp_descl LABEL word i *********** End of DP descriptor list. ********* 10-221 240048-67 APPLICATION NOTE AP-409 October 1987 82786 Design Example Interfacing to the IBM PCIAT* Computer. RICHARD SHANKMAN APPLICATIONS ENGINEER 'IBM PCI AT is a trademark of International Business Machines Corporation. Order Number: 240049-001 10-222 infef AP-409 1.0 INTRODUCTION 2.2 Address Map Many applications require greater graphics capability than is available through IBM's CGA or EGA. The 82786 allows the design of very high performance graphics systems at low cost, both in terms of component count and development time. When placed in Protected Mode, a full 24 bits (16 Mbytes) of addressing are available. However, most applications use Real Mode, providing 20 bits of addressing. This provides a usable address space of 1 Mbyte. Our design example will use Real Mode. This application note will present a basic design interfacing a graphics board based on the 82786 to the IBM PC/AT computer. Only those portions of the design related to the interface itself will be covered in detail. Other aspects of graphics system design using the 82786, such as graphics memory design and video interfacing are covered in detail in the Hardware Configuration Application Note (AP-270-refer to section 1.1 below on related literature). As shown in Figure I, the lower 512 kb of the 1 Mb address space is reserved for system memory. 384 kbytes of the upper 512 kb are available for our use, although various adaptor cards which use some of this space may be installed in the system. We need to use care in selecting where our graphics card resides in the PC memory space in order to remain compatible with most system configurations. Throughout this application note the following naming convention applies: The term "PC" will be used throughout this document to refer to both IBM's 8-bit PC and their 16-bit AT computer systems. 1.1 Related Literature Additional material concerning the 82786 can be found in the following Intel publications: 82786 Graphics Coprocessor User's Manual, Order Number 231933 82786 CHMOS Graphics Coprocessor Data Sheet, Order Number 231676 82786 Hardware Configuration Application Note, Order Number 292007 An Introduction To Programming the 82786 Graphics Coprocessor, Order Number 240048 2.0 I/O CHANNEL 2.1 Overview There are eight connector slots on the mother board of the PC into which peripheral cards may be inserted. All interface to the PC is through these connectors, which are known as the I/O CHANNEL. The I/O CHANNEL supports 24-bit memory addresses, data accesses of either 8- of 16-bits, interrupts, DMA channels, and wait state generation. The connectors consist of eight 62-pin and six 36-pin connector sockets. The two positions that have only the 62-pin connectors can only support an 8-bit IBM PC interface. The 128 kb section of memory located at address 80000H-9FFFH is normally reserved for expansion memory, so using this space for our design would preclude adding memory to the system. The 128 kb address range of COOOOH through DFFFFH is also available. This section of the memory space is reserved for ROM on I/O adapters, such as our card. Since many commercially available peripheral cards use portions of this address space, we would like to avoid using a large portion of this area in order to remain compatible with them. We will map the 82786 Internal Registers into address C4400H-C447FH. There is one other section of memory available to us without going into Protected Mode. This is the address range AOOOOH-BFFFFH, which is reserved for the graphics display adapters. The AOOO segment is used by the EGA, whereas the BOOO segment is used by the CGA (and MDA). Since we are designing a graphics card, we will use a portion of this memory space. It is desirable to use as large a portion of the PC's memory space as possible in order to reduce the amount of paging required to access graphics memory. Let us choose the 64 kbyte AOOO segment. This means that our design will work along with a CGA card in the system, but not with an EGA. This is a reasonable choice since, if people require a higher performance graphics system, the 82786 based design will provide much more power than the EGA. The CGA can still be used for most text and low resolution graphics applications. The 80286 microprocessor can address a full 64 kbyte I/O space. However, the PC only supports I/O addressing from 000-3FFH, as shown in Figure 2. I/O addresses OOO-OFFH are reserved for the system board I/O, leaving addresses 100H-3FFH available on the I/O CHANNEL. A look at the I/O address map will show that most of this space is reserved for various peripheral devices that might be installed in the system. Once again, if I/O addressing is required, we must be careful in choosing which portion of I/O space we use in order to remain compatible with these peripherals. 10-223 AP-409 Address Name Function 000000 to 07FFFF 512 kb System Board System Board Memory 080000 to 09FFFF 128 kb I/O Channel Memory-IBM Personal Computer AT 128 kb Memory Expansion Option OAOOOOto OBFFFF 128 kb Video RAM Reserved for Graphics Display Buffer OCOOOO to ODFFFF 128 kb I/O Expansion ROM Reserved for ROM on I/O Adapters OEOOOO to OEFFFF 64 kb Reserved on System Board Duplicated Code Assignment at Address FEOOOO OFOOOO to OFFFFF 64 kb ROM on the System Board Duplicated Code Assignment at Address FFOOOO 100000 to FDFFFF Maximum Memory 15 Mb I/O Channel Memory-IBM Personal Computer AT 512 kb Memory Expansion Option FEOOOO to FEFFFF 64 kb Reserved on System Board Duplicated Code Assignment at Address OEOOOO FFOOOOto FFFFFF 64 kb ROM on the System Board Duplicated Code Assignment at Address OFOOOO Figure 1. IBM AT System Memory Address Map Hex Range Device 000-01F 020-03F 040-05F 060-06F 070-07F 080-09F OAO-OBF OCO-ODF .oFO OF1 OF8-0FF 1FO-1F8 200-207 278-27F 2F8-2FF 300-31F 360-36F 378-37F 380-38F 3AO-3AF 3BO-3BF 3CO-3CF 3DO-3DF 3FO-3F7 3F8-3FF DMA Controller 1, 8237 A-5 Interrupt Controller 1, 8258A, Master Timer, 8254.2 8042 (Keyboard) Real-Time Clock, NMI (Non-Maskable Interrupt) Mask DMA Page Register, 74LS612 Interrupt Controller 2, 8259A DMA Controller 2, 8237 A-5 Clear Math Coprocessor Busy Reset Math Coprocessor Math Coprocessor Fixed Disk Game I/O Parallel Printer Port 2 Serial Port 2 Prototype Card Reserved Parallel Printer Port 1 SDLC, Bisynchronous 2 Bisynchronous 1 Monochrome Display and Printer Adapter Reserved Color/Graphics Monitor Adapter Diskette Controller Serial Port 1 Figure 2. IBM AT System I/O Address Map 10-224 infef AP-409 I/O address range 300H-31FH is reserved for prototype cards, so we will use a portion of this space in our design, as will be discussed later. Another possibility would be to use the game controller address range 200H-207H, if it is known that the game controller will not be used. "I/O CH RDY", I/O CHANNEL ready, is pulled low by a peripheral device in order to insert wait states. This signal must be driven low very quickly upon detecting a valid address and a Read or Write command. This timing will be discussed in more detail in a subsequent section. As mentioned earlier, this signal should be held low for no more than 2.5 microseconds. 2.3 Signal Description MEM CS16 is pulled low to signal the system board that the current data transfer is a I wait state, 16-bit memory cycle. If this signal is not brought low in time to be recognized by the system, the memory access will automatically be broken into two 8-bit accesses, even if a 16-bit access was desired. In addition, this signal is an input to the CMDLY pin of the 82288 bus controller chip on the system board. It can delay the issuance of the MEMR, MEMW, lOR, and lOW signals in order to allow more address setup time. As will be discussed later, this signal should be derived from the decode of LAI7 through LA23. Interfacing to the PC is quite simple since all address, data, and control signals are decoded and demultiplexed for us. In addition, wait states can be inserted, in which case these signals are held valid as long as we wish. Wait states must last no longer than 2.5 microseconds (2.1 microseconds for the 8-bit PC), in order to meet IBM specifications. The signals used in this basic interface are listed in Table 1. Other signals, incorporating other features, could be used, such as interrupt and DMA control lines. We will discuss only the signals used in this design. The final signal we have used in this design is RESET DRV. This is the active high power on reset signal. Address Latch Enable, BALE, is used on the system board to latch valid addresses. Address lines SAO-SAI9 are used to address the memory and I/O devices in the system. They are gated onto the system bus when BALE is high and are latched on the falling edge of BALE. There is another set of address lines, LA 17-LA23, which gives the system up to 16 Mb of addressability. These signals are unlatched and remain valid only as long as BALE is high. They become valid earlier than the SA lines and are intended to generate decodes for memory or I/O cycles. They should be latched by I/O adapters on the falling edge of BALE when needed. There are 16 data lines, SDO-SDI5, which are demultiplexed (the 80286 in IBM AT computer has separate address and data lines) and held valid as long as the system is held in a wait state. 8-bit interfaces will only use SDO-SD7. Data transfers on the upper byte of the data bus are indicated by a low signal on the SBHE pin. The control signals have been decoded and, like the data lines, are held valid as long as the PC is held in a wait state. lOR and lOW are active low signals that indicate an I/O read and write, respectively. Similarly, MEMR and MEMW indicate a memory read or write bus cycle. 10-225 Table 1. I/O CHANNEL Signal Description SAO-SA19 Latched Address Lines LA17-LA23 Unlatched Address Lines Used to Generate Decodes for 1 WaitState Memory Cycles RESETDRV Power On Reset Signal from the SDO-SD15 Latched Data Lines IIOCH ROY Ready Signal to Generate PCI AT Wait-States lOR Indicates an liD Read lOW Indicates an liD Write MEMR Indicates a Memory Read PCIAT MEMW Indicates a Memory Write MEMCS16 Signals the AT to Perform a 1 Wait-State 16-Bit Memory Cycle SBHE Indicates Data Transfer on Upper Byte of Data Bus intJ AP-409 3.0 82786 BUS INTERFACE 3.1 Overview The Bus Interface Unit (BIU) controls all communication between the 82786, the external bus master and memory. The 82786 is capable of being a bus ~aster (Master Mode) or a bus slave (Slave Mode). The 82786 operates as a master whenever it accesses external system memory and the bus timings are similar to 80286 style bus timings. It acts as a slave when the host CPU accesses graphics memory or the 82786 registers. In Master Mode, the 82786 drives the Hold Request (HREQ) pin high to indicate it is requesting the bus. The 82786 drives the external bus only after it receives a Hold Acknowledge (HLDA) from the external bus master and drives HREQ low when it no longer needs the bus or when it detects an inactive HLDA. The 82786 indicates it has the bus through a high level on the Master Enable (MEN) pin. The state of the BHE pin at the trailing edge of RESET determines whether the interface is synchronous or aysnchronous. A high BHE sets the 82786 in synchronous operation. In Master Mode, synchronous/asynchronous operation affects the sampling of the HLDA signal only. In Slave Mode, synchronous/asynchronous operation affects the sampling of the RD and WR signals, as will be seen, and allows for direct connection to an 80286 (80186 and 80386 can also be supported). Every design must support Slave Mode. The great majority of applications do not require Master Mode and it need not be supported. Our design uses an asynchronous slave interface, which we will focus on in more detail. 3.2 Aysnchronous Slave Interface The following pins make up the 82786 Slave Interface: I. 22 address inputs, A21 :0. 2. BHE input used to indicate valid data on the upper data bus, D8-DI5, of the 82786 graphics memory. 3. Bus command input signals RD, WR, and M/IO. 4. Chip select input, CS. 5. Slave Enable output, SEN, is used to signal the system that the requested slave access is currently being serviced. This signal is used to enable the connection of the 82786 data bus to the external data bus and also as a source of READY to the external master. All of the input signals, with the exception of CS, are bidirectional pins driven by the 827.86 when it is executing Master Mode cycles. Whenever the 82786 is in Slave Mode, these signals are monitored by the Slave Interface logic. The correct combination of bus commands on these pins generate a slave cycle request. Figure 4 shows the timing relations for the Asynchronous Slave interface. When either RD or WR are detected low, CS is sampled. If CS is found to be low, the 82786 will generate a slave cycle request. Note that the address pins, along with BHE and M/IO have the same setup and hold timing as CS. Once the setup and hold times have been met, the valid addresses may be removed since they will have been latched internally by the 82786. A slave cycle request is arbitrated between DRAM refresh, Display Processor requests, and Graphics Processor requests for bus bandwidth and is serviced according to the programmed priority of each type of request. Notice the break in Figure 4 between the control signals going active and SEN going high, indicating the indeterminate amount of time before the 82786 begins to execute the slave cycle. Even if external slave accesses are programmed to be higher priority than graphics or display processor requests for the bus, DRAM refresh cycles always have highest priority and can occur at any time. This can hold off execution of the slave cycle for a few clocks. Therefore, once the PC makes a slave request to the 82786, it will have to be held in a wait state (by pulling IOCHRDY low) until SEN goes high and the slave cycle begins. Figure 5 shows the timing relations for the slave cycle during the SEN active high time. SEN remains high for the entire cycle, which lasts four clocks. for a write and five clocks for a read. 10-226 inter AP-409 RESET VCLK -. -.-.-. -. -. -.-. AO-21.= DO-1S.= BHE __ Figure 5. 82786 SEN/DATA Slave Interface 10-227 240049-3 intJ AP-409 SA7-19 IBM PC/AT" 82786 240049-4 Figure 6. Generating 82786 Control Signals AO-15 r='_______ XCVR J\.I82786 AO-15 1-_ _ _...,....._ _ _ _-./1 IBM PC/AT" 00-15 240049-5 Figure 7. Block Diagram of Data/Address Bus S O O - 7 1 - - - - - : . - - - - - r : : : : : - " - - - - - - - - 00-7 IBM PC/AT" 1-------....,.- S08-15 I -_ _ _ _~--_I 8 BIT INTERFACE WRITE TO HIGH BYTE 16 BIT INTERFACE WRITE TO HIGH BYTE Figure 8. 8/16-Bit Crosser for Write Data 10-228 08-15 8/16 BIT INTERFACE WRITE TO LOW BYTE 240049-6 Ap·409 4.0 INTERFACING THE 82786 TO THE 1/0 CHANNEL 4.1 General Considerations Our graphics board will decode the address, MEMR, MEMW, lOR, and lOW signals from the PC and, if a slave cycle r~es~detected, generate the proper con· trol signals (RD, WR, M/IO, BHE and CS) along with gating the address and data to the 82786. Refer to Fig· ure 6 for a block diagram of generating the 82786 con· trol signals. The IOCHRDY signal will immediately be pulled low in order to place the PC into a wait state. If our design is to a 16·bit interface, we must also pull the MEMCSl6 signal low. This signal is not used for an 8· bit interface. Once 10CHRDY has been pulled low, the PC will be held in a wait state. This will cause the demultiplexed address, data, and control signals to be held valid for us. This means that we do not have to latch these sig· nals on our board. Figure 7 shows a block diagram of the address and data bus interface for our design. Once our board is selected, control logic can tum on the ad· dress and data transceivers/latches. 4.2 Loading IBM specifies no more than two TTL loads per pin per slot for the I/O CHANNEL. This is to assure that the PC system board can properly drive all peripheral cards that may be plugged into the I/O CHANNEL. In or· der to meet this spec, it is necessary to buffer any sig. nals that drive more than two loads in our design. 4.3 Write Data Figure 7 shows a data path consisting of two levels of transceivers for the write path. Working our way from the I/O CHANNEL side, the first bank of transceivers encountered buffer and gate the data bus onto our board. The second bank of transceivers isolate the 82786 from the board's data bus. Upon receiving a decode, the first transceivers will tum on, gating data onto the board. The second transceivers only tum on when SEN goes high, indicating the start of the slave cycle. In this way, the PC's data can gate onto the board without interfering with any other 82786 memory cycles in progress to the graphics mem· ory. This allows the PC to access the Page Select regis· ter (which will be discussed later) without disturbing 82786 memory cycles. In addition, if we were to insert a dedicated on·board CPU, it would interface between these two sets of transceivers, allowing the PC to talk to the local CPU without disturbing 82786 memory activi· ty. A crosser network for write data is shown in Figure 8. All three transceivers are needed only if the design will interface to both an 8·bit and a 16·bit system, as in our example. If the design is only to the 8·bit PC or to the IBM AT computer, then only two transceivers are re· quired. 4.4 Read Data Read data from the 82786 or graphics memory must be latched. This is shown in Figure 5, where it can be seen that read data will only be valid for 3 -4 clocks. De· pending upon when 10CHRDY is released, read data may come and go before the PC can come out of its wait state (refer to Section 4.5), so it must be latched and held. The read data latches shown in Figure 9 are configured similarly to the write data transceivers of Figure 8. Once again, all three latches are needed only if the de· sign will interface to both a PC and an IBM AT com· puter, as in our example. The data latch control can be implemented by counting 82786 clocks from the rising edge of SEN until read data is valid, as shown in Figure 5, and then latching the data. This data can be held and made available for when the I/O CHANNEL exits its wait state. 10·229 intJ AP-409 SOO-7 1--------- 00-7 IBM PC/AT' '--------'-,08-15 S08-15 8 BIT INTERFACE READ HIGH BYTE 16 BIT INTERFACE READ HIGH BYTE 8/16 BIT INTERFACE READ LOW BYTE 240049-7 Figure 9. Read Data Latches 4.5 Exiting Wait States 4.6 Page Selection There are many choices of clock speeds to run the 82786 in a graphics design. In addition, our design may be interfaced to several different speed PC's. As a resuit, once IOCHRDY is released you cannot know exactly when the PC will come out of its wait state in relation to SEN and the slave cycle. As previously mentioned, our design uses the 64 kbyte section of the PC's memory space located at the AOOO segment. Our graphics board will contain 1 Mbyte of memory, however. We must have some method of accessing the entire 1 Mbyte of graphics memory from the PC's 64 kbyte window. This is accomplished through the use of a simple paging scheme, as shown in Figure 10. For example, if the PC is writing to our graphics board, write data will be held valid as long as the PC is kept in a wait state. We need the write data to remain valid to meet the data hold time as shown in Figure 5. If IOCHRDY is released at the rising edge of SEN and the PC is running at a fast clock rate, it is possible for the PC to exit its wait state and remove the write data too early in the SEN/DATA cycle. This can, of course, be predicted exactly if all possible combinations of the 82786 and PC clock speeds are known. The exact time to release IOCHRDY in order to hold data long enough, yet not insert extra wait states, can be calculated. A more conservative approach is to release IOCHRDY off the falling edge of SEN, which has been done in this design. For write cycles, this guarantees that write data will be held past the entire SENIDATA cycle. Since we are latching read data, it is held valid for whenever the wait state ends. The tradeoff here is that performance will be degraded somewhat since extra clocks. are inserted into every slave access. 10-230 827861 MEG ADDRESS SPACE IBM AT" o ADDRESS SPACE OAOOOOht-_1-_ _ _- _ OAFFFFh I-_.J---.a..;.;.;;.;...... OFFFFFh 240049-8 Figure 10. Page Selection infef AP-409 Pins SAO-SA15 directly drive 82786 pins AO-A15 to address within a given 64 kbyte section of memory. 82786 pins A16-A19 determine which 64 kbyte memory section, or page, we address. We can drive these page selection address lines with a latch which will contain the desire page number from 0 to FH. Figure II shows a block diagram of the page select circuit. SDO-3 74374 G IBM PC/AT" lOW ADDH.ES5....J 0300 f==: A16-19 Lines LA17-LA23 provide for address decoding down to 128 kbyte resolution. Decoding addresses in 64 kbyte sections would require an LA16 pin, which is not provided. Recall, however, that we were unable to find a convenient 128 kbyte section of the IBM system memory space to use for our design. This means that we must use address pin SA 16 for part of our decode. Since the SA lines become valid later than the LA lines, we have less time in which to decode an address and generate a MEMCSI6. Although both IOCHRDY and MEMCSI6 must be brought low quickly, MEMCSI6 is the most critical timing of the two. For an 8 MHz PC, we have 24 ns from SAO-SAI6 valid to issue a MEMCSI6low signal in order to cause a 16-bit access and -II ns to cause a command delay. Fortunately we do not care about the command delay. If we miss the window, any 16-bit accesses will automatically be broken into two 8-bit accesses. 82786 J 240049-9 Figure 11. Page Select Circuit Our design latches the page number from data bits DO-D3 by writing to I/O address 0300H. The output of the latch will then drive 82786 pins A16-AI9. 5.0 SPECIAL CONSIDERATIONS The circuit used to generate IOCHRDY and MEMCS16 can be found in the complete board schematic in the Appendix. Figure 12 focuses on the particular circuitry of interest here. Fast logic devices are required and the decode PAL must have a short propagation delay. This is particularly important since an extra flip-flop is used to cause IOCHRDY to be released from the falling edge of SEN. 5.1 IOCHRDY and MEMCS16 Timing For 16-bit accesses, IOCHRDY and MEMCS16 must be brought low very quickly upon decoding an access to the peripheral board. The purpose of signals LA17-LA23 is to provide address lines for such decodes. These address lines become valid at the I/O CHANNEL earlier than the latched address lines SAO-SA19, providing more setup time for the decode and generation of MEMCSI6. For this reason it is desirable to use the LA lines for decodes whenever possible. 5.2 Maximum Wait States For medium and high resolution displays using DRAM's, a significant portion of the available memory bandwidth is required for the display process. To accomodate this, the display processor is programmed for highest priority access into the graphics memory. In the worst case the display processor can stay on the 10-231 inter AP-409 memory bus continuously for more than 5 microseconds. This will happen while fetching 16 tile descriptors (96 words). The IBM AT Technical Reference Manual warns us not to hold IOCHRDY low for more than 2.5 microseconds, which is 15 wait states in a 6 MHz machine and 20 wait states in an 8 MHz machine. During wait states the DMA controller can't obtain the bus to refresh memory, which results in delayed memory refresh cycles. If the 82786 is programmed with highest priority for the display processor, then the external CPU will have to stay in a wait state until the display processor releases the memory bus and SEN goes high. Although this may not result in any erroneous operation, it will certainly violate the bus spec for wait state duration. In order to meet the bus spec, the 82786 must be programmed with the highest priority for the external CPU. This will be acceptable if the CPU accesses the 82786 and graphics memory only during noncritical periods. However, if the CPU needs to access the 82786 very frequently, then the display processor may not be able to refresh the screen in the required amount of time. Therefore, if the CPU is programmed to highest priority, it must be restricted in its access to the 82786. The latency between successive accesses from the CPU to the 82786 can be approximated by the expression. latency (in 82786 system clock cycles) ;0, 2' [8/((MMXR/DPXR)-1)] where: MMXR maximum memory data transfer rate (40 Mbytes/s if using interleaved, fast page mode DRAM's at maximum 82786 bus clock speed) DPXR = ((Xmax • Ymax • Bpp)/8) * Display refresh rate Xmax = no. of pixels in the x direction Ymax = no. of pixels in the y direction Bpp = no. of bits/pixel NOTE: "System clock cycles" refers to internal 82786 clock cycles. 2 pin clocks = 1 system clock. For example, 20 MHz pin clock is equivalent to an 82786 10 MHz system clock rate. 74F125 MEMCS16 A7-19 74F04 PAL to IOCHRDY decode address AOOO MEMW MEMR 240049-10 Figure 12. IOCHRDY and MEMCS16 Circuitry 10-232 AP-409 One way to force this restriction on the CPU is to ensure that this latency is built into the software. This implies that: I) there are no block accesses into the graphics subsystem and 2) all single accesses are separated by instructions (e.g. NaP) that will guarantee that the CPU stays away from the 82786 for the desired time. 82786 sees the CS from the external CPU and services it immediately since the request comes from a higher priority source. The CPU does not stay in a wait state for more than the maximum specified period. This hardware method of restricting CPU accesses effectively increases the priority of the display processor even though the external CPU is programmed for highest priority. At the same time, this method ensures adequate bus sharing between the display processor and the external CPU. This software method to control the CPU accesses will allow single accesses into the graphics memory to be serviced quickly, but at the same time, it imposes a lot of restrictions on the programmer. Additionally, the software becomes very specific to the hardware environment and portability of the software becomes limited. An alternative is to design the hardware to restrict CPU access to the 82786. A feature has been added to the D-stepping of the 82786 which allows for altered priority for external CPU slave requests. The CPU will assume this altered priority every 42 CLK's and will switch back to the standard priority only upon execution of the slave CPU bus cycle. The scheme shown in Figure 13 delays the CS input into the 82786 by some delay time. When the CPU begins a memory cycle to the 82786, the address decode logic pulls IOCHRDY low, putting the PC into a wait state. The 82786 does not see this request immediately and so the SEN output stays low, which will cause the PC to remain in the wait state. Therefore, the display processor, which is programmed for second priority, can use the memory bus. After the delay time, the By programming the CPU to have a standard priority below that of the display processsor and an altered priority higher than the display processor, the previously discussed software and hardware methods of restricting CPU slave accesses to the 82786 are not necessary. This new feature will allow the CPU to get a bus cycle every 2.1 microseconds (assuming an 82786 pin clock rate of 20 MHz) and still give the display processor highest priority the rest of the time. CPU ADDRESS 82786 CLOCK CPU 82786 SEN READY 240049-11 Figure 13. Limiting the Rate of CPU Accesses to the 82786 10-233 inter AP-409 APPENDIX A 82786 GRAPHICS BOARD DESCRIPTION The 82786 based graphics board presented in this application note contains I Mbyte of fast page mode DRAM's, which comprise the graphics memory for the board. The memory is visible to the PC at address space AOOOOH-AFFFFH, which is a 64 kbyte section of memory. The entire I Mbyte of graphics memory is addressable as 1664 kbyte banks, which are selected by 82786 address bits AI6-AI9. The desired bank is selected by writing the value on the lower four bits of the data bus (DO-D3) to I/O address 0300H. There is one other section of the PC address space that can access the board. That is address C4400HC447FH. Accesses to this section of memory will cause I/O accesses to be seen by the 82786. This allows access to the Internal Registers, which reside in I/O space when the 82786 comes out of RESET. The Internal Registers remain I/O mapped and must be relocated to I/O space base address 4400H (I/O space for the 82786 is only 64 kbytes-the upper address bits are ignored. However, the upper 7 bits of the Internal Relocation register must be programmed to O's when locating the Internal Registers in I/O space). The board supports a software reset. This is accomplished by writing a "I" on data bit 4 to I/O address 0300H and then a "0" on the same data bit to the same address. When using software reset, care must be taken to assure the proper values appear on data bits DO-D3 in order to not reprogram the page select register. The board contains several jumpers which are described here: I) There is a jumper to select a 16-bit vs. 8-bit interface. 16-bit interface is selected by inserting the jumper. 2) There are two jumpers to select between synchronous and asynchronous VCLK operation. In synchronous operation, VCLK is tied to CLK on the 82786. In asynchronous operation, VCLK comes from a separate clock oscillator source. Only one of these jumpers may be inserted at anyone time. 10-234 AP-409 APPENDIX B 82786 GRAPHICS BOARD PAL EQUATIONS modul e UIO title 'PAL I -- UIO date april 2,1986' UIOal device 'P20l8'; PCAI9, PCAIS,PCAI7, PCAI6, PCAIS, PCAI4, PCAI3, PCAI2, PCAII, PCAID, PCA09, PCADS, PCA07 pin I, 2, 3, 4, 5, 6, 7, 8, 9,10,11,13,14; PCMEMR, PCP6IR, PCMEMW, PC lOW, lOCH ROY SELECT ,NCI, NC2,PCIOR,PCP61 pin 23,22,21,20,19,18,17 ,16, 15; equations ! PCP61 • PCAI9 & JPCAI8 & PCA17 & l PCAI6 & (PCMEMR $ PCMEMW) & PCIOR & PCIDW; IPCP61R • PCAI9 & PCAl8 & !PCA17 & lPCAI6 & JPCAlS & PCAl4 & l PCA13 & l PCAl2 & ! PCAll & PCAlD & J PCAD9 & JPCACS & l PCAD7 & (PCMEMR $ PCMEMW) & PCIDR & PCIOW; l!DCHRDY_SELECT - (PCAI9 & lPCAlS & PCAI7 & !PCAI6) # (PCAI9 & PCAlS & lPCA17 & !PCAI6 & lPCAIS & PCAI4 & lPCAI3 & JPCAl2 & ! PCAll & PCAIO & JPCAD9 & I PCADS & I PCA07); end UID 240049-12 10-235 inter AP-409 modul e Ull title 'PAL 2 -- Ullq date april 2, I 9S6' Ullal device 'P20LS'; PCA09,PCAOS, PCA07, PCA06, PCA05, PCA04,PCA03, PCA02, PCAOI ,PCAOO,NCI pin 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11; PCMEMR, PAGE SELECT ,NC2,NC3,NC4,NC5, PAGE SEL, PCMEMW,NC6, PCIOW, PCIOR pin 23,22,21,20,19, IS, 17,16,1"5,14,13; equat ions IPAGE_SEL - (PCA09 & PCAOS & !PCA07 & !PCA06 & I PCA05 & !PCA04 & ! PCA03 & ! PCA02 & I PCAO I & I PCAOO & I PC I OW & PCMEMR & PCMEMW) ; PAGE_SELECT. PAGE_SEL; end Ull 240049-13 modul e U26 title 'PAL 5 -- U26 date april 2, 1986' U26al device 'P20L8'; PCP61 ,SBHE, PCP61R, PCMEMR, P6SEN, LTCHBQ, NCI, PCAO, NCZ, NC3 ,NC4 pin 1,2,3,4,5,6,7,8,9,10,11; NC9, CLRL TCHCNTR, PCP6CS, PCLATCHLO, PCLATCHHI, NC8, PC AT, P6BHE, NU,~6,~5 pin 23,22,21,20,19,IS,17 ,16,15,14,13; equations ! PCLATCHLO . ! PCAO & (! PCP61 # ! PCP6IR) & I PCMEMR; !PCLATCHHI - PCAO & (!PCP61 # !PCP6IR) & !PCMEMR & PC_AT; CLRLTCHCNTR - (!PCP61 # IPCP6IR) & I PCMEMR & P6SEN & !LTCHBQ; PCP6CS - (!PCP61 # !PCP6IR); P6BHE - (!PC_AT & SBHE # PC_AT & !PCAO) & (IPCP61 # ! PCP6IR); end U26 240049-14 10-236 intJ AP-409 module U35 title 'PAL 6 -- U35 date april 2,1986' U35al device 'P20l8'; HC1, NC2, PCP6IR, PCP61, PCP6CS, NC3, NC4, PCMEMR, PCMEMW,NC5,NC6 pin I, 2, 3, 4, 5, 6, 7, 8, 9,10,11; NCIO,NC9,NC8, P6CS, P6WR, P6RD, P6RDYClK, T R, P6DEN, NC7, P6SEN pin 23,22,21,20,19,18,17,16,15,14,13; equations I P6CS = PCP6CS; IP6WR • (IPCMEMW & (IPCP6IR !P6RD - (IPCMEMR & (IPCP6IR IP6DEN - «IPCP61 # IPCP6IR) & IPCMEMW & P6SEN); T_R ((!PCP61 P6RDYClK * IPCP61»; * IPCP61»; * IPCP6IR) & IPCMEMW); • (PCP6CS S P6SEN); end U35 240049-15 modul e U48 title 'PAL 7 -- U48 date april 2,1986' U48al device 'P20l8'; SBHE, PCMEMR, PC AT ,NCI, PCP6IR,PCP61 ,ClK,lAI6, lA17, lA18, lAI9 pin 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11; SAI7 ,ATOC,ClKI ,RESET_NOT ,RESET, NC2,NC3, P6_MIO,ACCI6,SAI9, SAI8 pin 23,22,21,20,19,18,17,16, IS, 14, 13; equat ions IATOC - IS8HE & IPC_AT & IPCMEMR & (IPCP61 , IPCP6IR); !ACCI6 = SAI9 & ISAl8 & SA17 & IlAI6 & IPC_AT; IP6_MIO - IPCP6IR; ClKI - IClK; RESET_NOT • I RESET; end U48 240049-16 10-237 intJ AP-409 module US2 title 'PAL S -- US2 date april 2,1986' US2al device 'P20LS'; NCI, PAGE_SELECT ,NC2, P6SEN, PCP6IR,PCP61 ,PCHEMW, PCAO, PCION, PCMEMR,PCIOR pin 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11; ~~~EmTAg~~p~:m~D:~~ s~~~L~E~~¥ET , 10CHRDV ,NC4, - pin 23,22,2I,20,19,IS,17,16,IS,14,13; equations _24ST_RI - (PCMEMR & PCIOR) , (!PCHEMW , IPCION); !PCDLO - ((IPCP61 , IPCP6IR) & !PCAO & (IPCHEMW , !PCION» , I PAGE_SELECT; RESET - (HANURESET , PCRESETDRV , SOFT_RESET); !IOCHRDV - (IPCP61 , IPCP6IR) & !P6SEN; IADDR_ENABLE - (!PCP61 , !PCP6IR); end US2 240049-17 module US4 title 'PAL 9 -- U54 date april 2,I9S6' U54al device 'P20LS'; PCP61, PCHEMR, PCP61R, NCI, NC2, NC3, PCAO, PCMEMW ,NC4,P6SEN,SBHE pin 1, Z, 3, 4, 5, 6, 7, 8, 9',10,11; PCIOR,NCIO,NC9,NCS,PCD AT,PCD HI, NC7,NC6,NCS,PC AT,PCIOW pin 23,22,21,20,19, IS,17 ,16,IS,14,13; equations IPCD_HI • (IPCP61 , IPCP6IR) & PCAO & PC_AT & PCMEMR; IPCD_AT • (IPCP61 , IPCP6IR) & fPC_AT & !SBHE & PCMEMR; end US4 240049-18 10-238 inter AP-409 APPENDIX C 82786 GRAPHICS BOARD SCHEMATICS 10-239 . . ~ n PCA12 A. AS ..... ~ 22 •• 20 ~ • 2 •4 ~ j:~ ~~:~ 28L8 r DA2 DAa DA4 w.: ll~~ I I ? 8 13: 3D 4D 5D 30 4Q 50 # &D -H-" -M- aD Eo 9 12 II ........ .... C » A.S AI1 AlB AU 'P olio .... SOFT RESET 6Q~ 'Q~ BQ~ ~~ o..-.!!!.L I I C ~ fft~2 DAI .. 2D 2Q '6 I MEMCSI6 0'"' 74ALS3?" 20 .0 ill L...!!.!L- J •• !:ft"C ~HC B 9 +12U pet 14 ~ .S • - sBHEk. 0 - •• S S ", • •'r DM1 ..... n I- PAGE SELECT 1lII! 1'liiI r-"' ......... f-- iffiiII • OM. . SHftl I lI~i Dl .0 IOCHRDY ~ ~ o PCPSI peME"'" PCP61R [OCHRDY SELECT peAS peA2 peAl PCAI Ate AS ~ SntS , • ..... PCA'" AI9 A4 LAI? A2 !~:~. ~:; ~:: :~ ~~:~ :~ !~:g ~:: Is'" n4 D3 !~::: ~:; SDlS SD!" 12 ~ ~ cl ..... LA PCAS ~ c .. ., ..- 104 .S .S S .0 . l -~ 2eL8. . ~ peA6 ~ ., LAl8 2 • •• •• peAII peAte peA9 peAS peA? •• •• •• LAI? • peAlS peAlS PCAI? PCAI6 peAl6 peAl ... peAlS A.9 AIS AI7 AIG A'S A'. A.S A.2 All A.O . a.t'n.:I. .,s PCI1EI1R pelOR SM. BaHE Sft'2 •••• -- C) CD I H' i.;' ··T.O-" P.2 . 0.. Intel Corporation Graphics COMponent.s Ope rat. ion 4El8 Ench" .. ! St .. Sant .. Cr-u.z. CI , tl1'LE 8Z?B6 DEHO BDARD IR~V 74F126 • SI;EJ CO'EJ NU"BE • 1181 U16A SHT. IOCHRDY seLECT • 1 • I • DATE I 6 I s I 4 I 3 12-8-86 2 SHEET I • • IF B 240049-19 w 0 w l - w ~ SHr 1 PC D0-7 -,. P AO-1S , AD DR EHABL SHTli +5" 3 A2 B2 I? 4 peAS 5 AS A4 AS A6 A? AS B3 84 B5 B6 B7 B8 16 15 14 13 12 11 PCA4 peAS peAS PCA? I 2 6 7 8 9 I 19 peAS peA9 peAt0 peAt 1 peAI2 peAl3 peAl4 C ~ Al III PCA0 peAl peA2 peAlS 2 3 4 5 6 7 9 9 I 19 18 Aa AI A2 A' A4 AS A. A7 ~ A2 AS A4 AS B2 B3 B4 B5 17 16 15 14 DS H7 .9 DI. Be 13 12 11 ••.7 A9 A9 Ala All AI2 AI3 AI4 AT OC StiTt; PC .... AT o N e 13 14 17 18 r-f!. ID lQ 2D aD 4D 5D 6D 7D 8D 2Q 3Q 4Q SQ 60 7Q 80 peDe 2 5 6 9 12 15 .,5 74ALS374 ~3D ~4D ~D12 13 ~ ~ 5Q ~ ~:D BQ~ ~;~ ~~~ 19 G I I n ~ ( I ! ~~ ;~~ ~ !~ ~~ PCD4 13 14 17 5D 6D 7D 18 eD 3Q~ 4Q~ 5D 16 ~4 Da Dl D2 D, D4 DS D. D7 5wr:t ~~~ ~2D 2Q~ PCDt PCD2 peDS f--1-.~ L.J:!l.L. SHT ... 4 7 Dte Dl1 D12 DI3 D14 D15 "2. ~4 a D8 D9 DI. ~5 Al III 16 .H= P< De-I' SQ GCI 12 15 peDS 7Q 8C1 IG 19 PCD6 PCD? SD B- 5 "'TO t- ~G r ~~ 1 PCPGl SHT 1 ~ SBHE i>H'l' 1 PCP6IR • SMT 1 PCMEMR :'.;, 1 PE> SEN 4 5 1=fir SH'l' t PCA0 . - - - 13 zeLS ~ I PCPSCS 19 2a • ~; IT L U25 fli -- SHT<4 -.., ,, pe, BHE 17 ~ +6U . ~ ~ 4 1 2 eLK S "!! D Q 5 ~. 10 ~ IS"!! 12 D 11 U:2SA • Q 9 ~ 8 t-- I nte 1 Corpora.t.ion U2SB Graphics COJllpon.nt. Op.r-at ion 489 ETlci nal St., Sqnt a Cruz, CA A TITLE 82786 DEttO _RD SIZE B • I 7 I • I • lATE I 4 I "'o" CD" I fit ~HC » "'0 I 3 I I CODE HU"BER 12-8-86 2 IR~V 881 SHEET I :2 cf 8 I 240049-20 _~ .... ~I: I _I P6 RESET I II 89~: ' 1-'! j~ l B2?II6 ..... o N :I> l' .co. ~ o CD • 1 2 3 •• 28L8 uas Int.el SH'Z',.a ... Corpora'tfon Graphics Co.po"."t.. ·O •• ration ~8_ !;.,.c.l.nal St .• Santa Cruz. CA F l SIZE B DAtE 82786 DEtIO IDARD I REU tODE--rHUI1BER 881 12':':9-96 B SHEET :3 of 8 240049-21 I S>iTt I I I I I ( I SBHE e M10 .. - f-- SHTt PCMEMR 5H'rS~ ~~ ~:~~~ '"" DATA H o r\:, .j:>. w I 5 II I - II 740L5245 III 18 AZ B2 17 B3 16. peDe PCDI peD2 ~~~! 6 AS A6 A7 AS PCDS PCDG peD? 19 soe :;:. SD9 3 SDle 4 ~~ ~~ ~~:; ~~!; ~ ll6 B7 BB 5D137 5D148 SDIS 9 13 DI R G D~B DAS DAle D.:I13 DA14 DA15 19 U45 ?4OLS'" ..I 111 ~2 112 A3 Is3 AS AE. A1 AS :~ ~ I!!i 111 118 ~ - i U47 I rr-~::::::::::::::j---------~'~~~L~~~T ~ ,25"H"l3 j ( .. 12 3' 4 11 _ 5 b I ntc 1 Corporat ion J05 e~t~CT 1"I5\'NC 10 r 9 S Graphlcs COI'IPone-nls Ot@ratl':O" <400 En':::lnal 51 SilT,\. Cruz ITLE SELECT S;'>.N':: 'J':L>< B I SHU SO 15 II-! BZ7Bb DEHO BOARD U4b (LI..: 681 I SHEET ""o" I CD DJ R b PCPE.I 245 f/Rl PCP61R PC D HIGH » ~ L 4_Z:'_'_ , _ 240049-22 I I l ~ -4eMHZ • ..SV ...... ...... ..... PC D HIGH PC D AT , , 'RS9 '2K CLK P6 RESET • NTI~ PCA8 _MHZ rr?mJ - .>-'=-".~lAl r=r=~rf~~~~~~~~~~~~~j]-rf1 r f;it~::::::~:::j~~J _ L~=B~.f:-'~ ~ ~jJ.l ~3!:.Jl~: :~ ~~:2Y~:~~:~~2 ...._____J I I'll 18 ~~ L t P I H D-SHELL 14L5244 15 2.2 17 2.3 1 2.. ..... o ~ !•5 2Y2 7 2Y3 5 3 ~: usa - .j>. 5HT:J~ t- : 7 Jet CO 7~ ,.. VU8 1 2 SlotT, PAGE SELECT 3 ~ _.u PCP6IR SHT II. S • P'C'P'6l" SH't'1 PCnE"'" - 245 T.lRl • SH'I'l PCMEMR SHTt~ ? JOCHRDY 910 PC D LOU 11 US2 +5U SHT:t P6READV DELAV INSERT JUMPER FOR +SU I ,,!B_l fa IBM lIT INTERFACE. 2 C 5,,. FOR MANUAL RESET' ---.... PRESS CLOSE . sue I AHD OPEN SU82 ~!,Lf sue1 NO JUI1PER FOR IBM PC ..... )(T INtERFACE. ~'---- ~ J n'te I Corporat Ion Gr .. phics COfllPon.nts O•• r.t ion 82786 DEItO _aD -SIZE-rC-~UI18ER B RitZ DATE I I I ~ I IA ~ITL"'eee Encinal St .. Santa Cruz. CA ""82 S. lK I ADDR EHAIL R.3 5.11< , I t- PC .... AT ---- - - ,, 5&.182 +su "0 ./:00 o SH'I'I PC RESET DRV SH,!".f£!.!!!:!. . ~ t- +-- SHTl SOFT RESET I REV 881 B SHEET 12-8-86 &; of' 8 I 240049-23 I I I ~ I I l ~ MRX 256)<1 .,2 04 110121 S~ 15 •• CAS "E 3 DOUTt U72 P6 - ..,,,,e 256)<1 5 AB 1 2 3 4 IS 6. Dour III 14 DOl RAiS 4 RAS 4 CAS 15 UE 3 CAS IS "'E3 9 H1'18 U6.1 ... """liD 5 "'.... 7 - D5 :2 14 1 9I\) ..lJ0~_5 r 2'56)(1 DIH 2 DIN :2 DOS Dour 14 D091 MA.i . U1 """ ...'" 10 13 9 ""'8 I .., ... 7 ~5 Ae. A7 AS RAS 4 RAS 4 CAS 15 L.lE 3: CAS 16 UE 3 U6~ USE> CD U7. U70 D. 01 •• s~ CAS IS - o 'AS~ "E • CAS IS. '.S~ f- CAS 15 "E 3 "E 3 u•• H' I R.51 'NT> CAS1 : : : IJEL iiiH'l'J II I I II Intel Corporat. ion 'I Graptllcs: COlllpo ... ents O ... ratlon ITITLE 400 En"::ln;al Sl , s .. r.t .. ClUi:' CA IA B2?86 DEI10 BllARD .!:!!!! SIZE I I I I I I~" CODEJ NUMBER 11111 B DHTE 12-8-86 SHEET 6 of S I 240049-24 • l~--- DOe0 - ~I t:W:? DIH 2 Dour I. DO .. a 0089 PAS .. CAS IS "E • l rI.BX Dg~~I~" Dgge '.S~ IS CAS "E • 0- DS . IDO~~~ 14 .. •• s~ C.AS 15 •• S CAS IS 3 ~ MB UE _3 "E :G ~ 0) I 1 014 L ID. 14 »069. :.. ~- "P ~ oU) RAS~_ (AS IS "E • ~ 266xl 256:..:1 DIH Dour 'AS CAS "E ~ AI ::: I. 4 IS • •• Al DIH DOUT •• s CAS "E •IS 3 '~ ~ - :;) IQ 212 30 4D 5D 6D 1D 4Q SO 6Q 1Q r=l~' OE ~D 1 so U711 R.X. uo' ~:~: 02796 DEI10 ~RD :!HoT:;- IJEL =HT'~'"!. ID 2)) 3D ~SIZE I CODE I HUMBEP REV 11111 B tnm:1--L.-_--1-y.'HEE'T"7.0'fS. B DATE ~ 2-~-~~__ 1 240049-25 I I I 1 I i I I P6 D0-16 DOUT! Doel DbTI 'D02i Do3i 0041 Do5i n06! - DO""7i" SHTl !lEN 1 .. ., 74ALS24S 2 9 4 •• •• e ? S 1 19 IS 17 I. BI B2 .2 •3 .4 B4 14 13 12 BI;, AO A7 BO '7 88 •• D. DI D2 D9 D4 DS DO D7 ~ DJR G USB 180hms IR1~ ,R~ ISohtl$' [i""()§""i DOT0i" 'DoTTI '!iOi2i" DOtS1 'iiO"i'41 nom ..... o ~ 3 4 S A2 .3 .4 • •• •• ,R~ ,R~; leohl'l~ .7 •• B4 IS DII 14 13 12 \I DI2 DI3 DI4 DIS MAX5 t Bohrns tlAXE> 1 ~,21 ----.. MIIXX DO\10 D010 Doze 3 4 Dose •• DOf>B 8 DO?e 9 I t9 D030 0040 :;;HT~ .. 74ALS2.04S DOUTe BENa ? 18 17 IS 15 1-4 BI AI A2 A3 A4 AS B2 B4 B5 :96 B7 .0 A. A7 13 12 BE! II DO D2 D3 lR~ z lR~ I RS,e. 1 MB2 M!lX3 IBohm!" R26 180hll:5 .27 180hllls I R2S 2 MB4 ISoh ... s MBS IR~l :;: MB7 1801"'.$ MB. tl!lXe. 180hm5 R3e ~ "lIX? I1!1XB 1 Bonms R32 DOT3"0 D0140 iiCiT5"0 +su 4 5 ~ Lv R33 RAse 300hniS cs. IR~..5 1 30oh~s 3eohn,s IR~6. 1 3eoh.,s "EL !R..:::~~ "EH I l IR~? 1 "L 300hms "" D8 09 ole 011 012 013 DI4 DIS "_,, I R~..4 CAse CASt f-- 300hll5 I nte I Corporat ion Graph) Cl> COlllponent s Of'.rat 1 0 4139 En':ln.-l St S .. nt .. Cruz iTITLE S I RASt i t91~1~93 I ~ RSI 74ALS245 DOlle 00120 ....... RS. U92 Do"i""00 I MB9 MBS DS CSt 18 17 16 15 14 13 12 11 MB. 180hms D4 DO D7 DIR BI :92 B3 B4 85 86 B7 88 MA. 180hms '6 Al H2 A3 1'14 AS A6 A? AS tElot,ll:!; "BXl Dl 00130 0090 lR~ IF';; l MBX2 MBX4 -...j MT:;" f-- MA, ISohln!' nBXe MBXS , M04 lR,~~ IBoh .... s 1 180hll15 1~ U99 - 2 , MA2 ISohm:;; MAX4 D. D. DIe BS BO B7 B8 i! MAX3 "AXe Ie 17 I. BI B2 B3 MA. I MAXI MAX? ., 74ALS245 D081 R~~ z "AXe MAX2 -1 I I~E DATE f' CH 827116 DElIO BOARD I I CODE H"MFER 881 1:: 8-86 SHEET £ S of S I 240049-26 . » "tI I I "" 0 CO Development Tools 11 805. SOFTWARE DEVELOPMENT PACKAGES COMPLETE SOITWIIRE DEVELOPMENT SlIPPORTFOR THE IfICS1'-51 FlllfIlLY OFIfIICROCONTROLLERS Intel supports application development for its MCSQl-51 family of microcontrollers with a complete set of development languages and utilities. These tools include a macrtJasspmbler, a PUM compiler, linkerirelocator program. a librarian utility, and an object-to-hex utility. Develop code in the language(s) you desire. then combine object modules from different languages into a single, fast program. These tools were designed to work with each othCI~ with the MCS-51 architecture, and with the Inte11C"5100 in-circuit emulator. FEIlTlIRES • Support for all members of the Intel MCS-51 family of embedded microcontrollers • ASM-51 Macroassembler • PUM-51 high-level language • LinkerlRelocator program • • • • Library utility Object to hexadecimal converter Hosted on IBM PC XTiAT V. 3.0 or later Worldwide service and support imJ-----------------------Inld COrjMlrtlllun as:';l.Iml':~ nil n'SJlonsilli1il~ rill' WI.' lL-" or nil)" (irmitr)' (Ilh('r tll.1n l'II'('ullr~ l'mhu(il{'ti in an 10l.\'lllrullll(1. Nn utlll'I' fll'I'U!lll :gisten:'C:I trall('maitl'! (If InLernational Bu:dnrKs Marhmr.'s CUllMlrallun 11-3 €OMrU'I'E SOITWIIRE DEt'EWPMENT SIJProR'I' I!OR THE B0961196 FIIMILY OF MI€RO€ON'I'ROJ,J.ERS Int.el supports application development for its 8096 and 80C 196 family of microcontrollers with a complete set of development languages and utilities. These tools include a macroassembler. a PUM compiler. a C compiler. Iinker/relocator program. noating point arithmetic library. a librarian utility. and an object·to·hex utility. Develop code in the language(s) you desire. then combine object modules from different languages into a single. fast program. FEII'I'IJRES • Software Tools support all members of Inters MCS·96 family • ASM·961196 macroassembler for speed critical code • PUM·96/196 package for the maintainability and reliability of a high·levellanguage with support for many low· level hardware functions • iC·96/196 package for structured C language programming. with many hardware speCific extensions • LinkerlRelocator program for linking modules generated in assembler. PUM or C and assigning absolute addresses to relocatable code. RL·96 prepares your code for execution in target with a simple. one-step operation • 32·bit Floating Point Arithmetic Library to reduce your development effort and to allow fast. highly optimiZl'U nunwrics'intrnsive processing • Lihrary utility for creating and maintaining software object module lihraries • PRO\l building utility that converts object modules into standard hexadecimal format for easy download into a rum·lntel PROM Programmer • Hosted on IBM PC XT/AT with PC-DOS 3.0 or above iMJ----------------- 1ntl'l GJrpuraLlOn nS:\lIm~'S nn rt'SpunSlhllll~ fur Ihr us..' ,I an} rJrC'ulll) ulhl'r lhan t'lrrullr~ t'lTlhlldil'd III .111 I1II.1'Ivm1.!LK't. Nu utht'r rirl'UlllJall'nt Ikl'nSl't! iln' ImplKiI Inlnrmallofl ('ontalf'lrd tll.'fl'm :mpc.'r§C'drs fII't'\'lIll1Sl~ publisht'd IIp'-'C'lrl(,Cllluns un thl'Sl'Ik'\-,n,.. f","llnt,~ aud iK ,;Uhll'\'! W I'h:IIII.'I.' '101111111.1\ nuti,\'. &·lltl'l11hl.... IfIHH .g;; rlllt'l Q'rJJlJrilllulI H1RS Clrlll'f Numhl.'f. :mnmJ'(1I12 11-4 1-_~~-+.'1CE1"PC C( ~i ---L1J I I r9' N j 1nc;1udo Floating Point Llbrarl•• With Figure •. \lCS@·96 Application Development Process ASItI-96/196 ItIACROASSEItIBLER '\S~I·96J 196 is the macroassembler For the \ICS·96 Family of mit'roconll'Oliers. inclu(ling lIw 80CIH6 ..\SM·fJ6JI96 translat('s symbolic assemhly language mn.'monies int.o rl'locatahle ohjl'l'l cO(lc. 'I'hl' macl'O facility in ASM+)(l1l 96 saves iI('l'l'Iopl1l1'l1I. allil maintL'mncc tinll', sincL' I'IImmon ('mit' sL'qucnL'es l1I'I'Ii only be IIL'VI'lopL'd oncL'. 'I'lli' "ss('mhler also SUppOl'ts symilolic W'L'('SS to 1.I1l' Illany 1'l' ;,Ps~r::I~~~a~~;ntt. ;8087slock :Wtthth. t.:rIlnput, OUTPUTVALU[lsn(lw abaut :-0,5511280J 8087 SUPPORT LIBRARY 231613-1 Figure 1. Use of 8087 Support Library with PL/M-86 and ASM-86 11-19 October 1988 Order Number: 231613-002 inter 8087 SUPPORT LIBRARY CEL87.LlB THE COMMON ELEMENTARY FUNCTION LIBRARY mqerSNH, FUNCTIONS mqerAT2 CEl8?LlB contains commonly used floating point functions. It is used along with the 808? numeric coprocessor. It provides a complete package of elementary functions, giving valid results for all appropriate inputs. Following is a summary of CEl8? functions, grouped by functionality. mqerlEX, mqerlAX, mqerlCX, mqerlE2, and mqerlE4. Round a real number to the nearest integer; to the even integer if there is a tie. The answer returned is real, a 16-bit integer or a 32-bit integer respectively. mqerlA2, mqerlA4. Round a real number to the nearest integer, to the integer away from zero if there is a tie; the answer returned is real, a 16-bit integer or a 32-bit integer, respectively. mqerlC2, mqerlC4. Truncate the fractional part of a real input; the answer is real, a 16-bit integer or 32-bit integer, repectively. Logarithmic and Exponential Functions: mqerlGD mqerlGE mqerEXP mqerY2X mqerY12 mqerY14 mqerYIS computes decimal (base 10) logarithms. computes natural base (base e) logarithms. computes exponentials to the base e. computes exponentials to any base. raises an input real to a 16-bit integer power. ' is as mqerY12, except to a 32-bit integer power. is as mqerY12, but it accommodates Pl/M-286 users. Trigonometric and Hyperbolic Functions: mqerSIN, mqerASN, Other Functions (of real variables): mqerDIM mqerMAX Rounding and Truncation Functions: mqerCOS, mqerTAN compute sine, cosine, and tangent. mqerACS, mqerATN compute the corresponding inverse functions. mqerCSH, mqerTNH compute the corresponding hyperbolic functions. is a special version of the arc tangent function that accepts rectangular coordinate inputs. mqerMIN mqerSGH mqerMOD mqerRMD is FORTRAN's positive difference function. returns the maximum of two real inputs. returns the minimum of two real inputs. combines the, sign of one, input with the magnitude of the other input. computes a modulus, retaining the sign of the dividend. computes a modulus, giving the value closest to zero. Complex Number Functions: mqercCMUl, and mqercCDIV perform complex multiplication and division of complex numbers. mqercCPOl converts complex numbers from rectangular to polar form. mqercCREC converts complex numbers from polar to rectangular form. mqercCSQR, and mqercCABS compute the complex square root and real absolute value (magnitude) of a complex number. mqercCEXP, and mqercClGE compute the complex value of e raised to a complex power and the complex natural logarithm (base e) of a complex number. mqercCSIN, mqercCCOS, and mqercCTAN compute the complex sine, cosine, and tangent of a complex number, mqercCASN, mqercCACS, and mqercCATN com- ' pute the complex inverse sine, cosine, and tangent of a complex number. mqercCSNH, mqercCCSH, and mqercCTNH compute the complex hyperbolic sine, cosine, and tangent of a complex number. ' 11-20 8087 SUPPORT LIBRARY mqercCC2C, mqercCR2C, mqercCC2R, mqercCCl2, mqercCCl4, and mqercCCIS return complex values of complex (or real) values raised to complex (real, short integer, or long integer) values. mqercCACH, mqercCASH, and mqercCATH compute the comples inverse hyperbolic sine, cosine, and tangent of a complex number. DC87.LlB THE DECIMAL CONVERSION LIBRARY DC87.L1B is a library of procedures which convert binary representations of floating point numbers and ASCII-encoded string of digits. The binary-to-deCimal procedure mqcBIN_DECLOW accepts a binary number in any of the formats used for the representation of floating point numbers in the 8087. Because there are so many output formats for floating point numbers, mqcBIN_ DEC LOW does not attempt to provide a finished, formatted text string. Instead, it provides the "building blocks" for you to use to construct the output string which meets your exact format specification. The decimal-to-binary procedure mqcDEC_BIN accepts a text string which consists of a decimal number with optional sign, decimal pOint, and/or powerof-ten exponent. It translates the string into the caller's choice of binary formats. Decimal-to-binary procedure mqcDECLOW_BIN is provided for callers who have already broken the decimal number into its constituent parts. The procedures mqcLONG_TEMP, mqcSHORT_ TEMP, mqcTEMP_LONG, and mqcTEMP_SHORT convert floating point numbers between the longest binary format, TEMP_REAL, and the shorter formats. EH87.lIB THE ERROR HANDLER LIBRARY EH87.L1B is a library of five utility procedures for writing trap handlers. Trap handlers are called when an unmasked 8087 error occurs. MAL in your trap handler, you eliminate the need to write code in your application program which tests for non-normal inputs. The 8087 error reporting mechanism can be used not only to report error conditions, but also to let software implement IEEE draft standard options not directly supported by the chip. The three such extensions to the 8087 are: normalizing mode, non-trapping not-a-number (NaN), and non-ordered comparison. The utility procedures support these extra features. SIEVE provides two capabilities for handling the "I" exception. It implements non-trapping NaN's and non-ordered comparisons. These two IEEE draft standard features are useful for diagnostic work. DECODE is called near the beginning of the trap handler. It preserves the complete state of the 8087, and also identifies what function called the trap handier, and returns available arguments and/or results. DECODE eliminates much of the effort needed to determine what error caused the trap handler to be called. ENCODE is called near the end of the trap handler. It restores the state of the 8087 saved by DECODE, and performs a choice of concluding actions, by either retrying the offending function or returning a specified result. FILTER calls each of the above four procedures. If your error handler does nothing more than detect fatal errors and implement the features supported by SIEVE and NORMAL, then your interface to EH87.L1B can be accomplished with a single call to FILTER. NORMAL provides the "normalizing mode" capability for handling the "0" exception. By calling NOR- 11-21 8087 SUPPORT LIBRARY SOS7.LIB, NULS7.LIB, ESOS7.L1B INTERFACE LIBRARIES E8087.L1B, 8087.L1B and NUL87.L1B libraries configure a user's application program for the run-time environment; running with the 8087 component or without floating point arithmetic, respectively. FULL 8087 EMULATOR SPECIFICATIONS The Full 8087 Emulator is a 16-kilobyte object module that is linked to the application program for floating-point operations. Its functionality is identical to the 8087 chip, and is ideal for prototyping and debugging floating-point applications. The Emulator is an. alternative to the use of the 8087 chip, although the latter executes floating-point applications up to 100 times faster than an 8086 with the 8087 Emulator. Furthermore, since the 8087 is a "coprocessor," use of the chip will allow many operations to be performed in parallel with the 8086. Operating Environment Intel Microcomputer Development Systems (Series , III, Series IV) Documentation Package 8087 Support Library Reference Manual ORDERING INFORMATION 8087 Support Library is included in ASM-86 Assembler package on the following hosts. Part Number D86ASM86NL VVSASM86 MVVSASM86 Description ASM-86 Assembler for PC XT or AT System (or compatible) running DOS 3.0 or higher. ASM-86 Assembler for VAXIVMS. ASM-86 Assembler for Micro VAXIVMS. Requires Software License SUPPORT Intel offers several levels of support for this product which are explained in detail in the price list. Please consult the price list for a description of the support options available. 11-22 PSCOPE-86 FOR DOS HIGH-LEVEL APPLICATION PROGRAM DEBUGGER Debugs PL/M-S6, Pascal-S6, iC-S6, • FORTRAN-S6, and ASMS6 Programs Program Text on the Screen • Displays During Debugging: Symbolic Debugging • Offers Capabilities: - Supports Access to Memory by Program Defined Variable and Program Names - Maintains Type Information About Variables - Allows Definition of User-defined Debugging Variables and Procedures - Uses the Listing File to Display Program Text - Displays Source Code on Program Step, at Execution Break POints, or on User Request Through Assembly Memory and Provides an • Single-steps • Disassembles Language Instructions, High-level Interactive Assembler Language Statements, or Procedures Creation of Program Patches • Permits Sets Break Points and Traces Program Using High-level Language Constructs • Execution Access to DOS Operating • Supports Runs Under the PC-DOS Version 3.0 or System Commands • Greater PSCOPE-86 for DOS is an interactive, symbolic debugger for high-level language programs written in iC-86, PL/M-86, Pascal-86, and FORTRAN-86, and for assembly language programs written in ASM86. PSCOPE-86 for DOS runs under the PC-DOS operating system, version 3.0 or greater. 'LIST a:debug.log "LOAD \progdir\leapyr .86 "SET :leapyr to \listdir\leapyr .1st lang pascal "DIR LINE DIR of :LEAPYR #1 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #21 #22 #23 #25 'PRESRC=O ;POSTCRC=O ;SOURCE=true ;GO TIL #13 Enter the number of a month. 2 Enter any year, like 1985. 1984 [Break at :LEAPYR#13] => 13 24 0 2 CASE month of +LSTEP [Step at LEAPYR#16] 2: (. leap year 0) => 16 27 0 3 IF (year mod 4 = 0) AND «year mod 100 <> 0) OR (year mod 400 = 0)) 280194-1 11-23 September 1988 Order Number: 280194-003 inter PSCOPE-86 MAJOR FEATURES With PSCOPE-86 for DOS, a user can load an application program, set break points at symbolic or numeric addresses, trace program execution, and view source code text. Program bugs can be patched using high-level PSCOPE commands or assembly code. The corrections can be tested without leaving the PSCOPE software. Other debugging aids include the ability to single-step a program through assembly language instructions, high-level-language statements, or procedures, to display and modify program variables, to inspect files, and to personalize the debugging environment. The following sections describe some of the major features of PSCOPE-86 for DOS. Source Display With the DOS version of PSCOPE-86, a user can correlate a module under debug to a source code file. Then, when break points are encountered, source text is displayed along with the break message and line number of the break point. The number of source lines displayed before and after a break point can also be defined by the user. View all or part of the listing file on command. The following example uses the PSCOPE command to list the current module. The asterisk (*) is the PSCOPE prompt, the command follows, and after pressing , PSCOPE responds with a list file. *SHOWSRC #1 LENGTH 28 0 0 program leapyr (input,output) ; 1 1 (* Input month and year, receive number of days *) 2 :integer; 5 0 0 var year month :integer; 3 0 6 0 4 7 nrdays :integer; 0 0 5 9 0 0 5 6 7 11 12 13 0 0 0 1 1 1 begin 8 9 10 15 16 17 0 0 0 1 1 1 11 19 0 1 11 12 21 22 0 0 2 2 13 14 15 16 24 25 26 27 0 0 0 0 2 3 3 3 17 31 0 3 CASE month of 4,6,9,11:nrdays := 30; 1,3,5,7,8,10,12:nrdays := 31; 2: (* 1.eap year *) IF (year mod 4 = 0) AND ((year mod 100 <> 0) OR (year mod 400 = 0)) THEN nrdays : = 29 ELSE nrdays: = 28; 19 33 0 3 end; 21 35 0 2 22 23 37 38 0 0 2 2 25 40 0 1 month := 0; year := 0; nrdays .= 0; writeln('Enter the number of a month.'); readln(month) ; while month < > 999 do begin writeln('Enter any year, like 1985.'); readln(year) ; writeln('Number of days in the month is',nrdays); writeln('Enter the number of a month.'); readln(month) end; end. 11-24 PSCOPE-86 Single-Stepping PSCOPE has two commands to single-step through high level instructions and display source code. The commands,differ in how they handle program calls. The following example illustrates the LSTEP command. 'LSTEP [Step at => 17 19 "LSTEP [Step at => 21 :LEAPYR#17] 31 0 3 33 0 3 :LEAPYR#21] 35 0 2 ELSE nrdays ._ 28; end; write1n('The number of days in the month is',nrdays); PSCOPE can single-step through code at assembly level and display assembly mnemonics as in the following example which uses the ISTEP command. 'ISTEP :LEAPYR 512A:00FEH C70600000000 MOV WORD PTR OOOOH,O Symbolic Debugging With symbolic debugging, a user can examine or modify a memory location by using its symbolic reference. A symbolic reference is a procedure name, variable name, line number, or program label that corresponds to a location in the user program's memory space. For example, to display the value of the program variables, users need only execute the program until the variable is active and type that variable's name. 'LSTEP [Step at :LEAPYR#22] => 22 37 0 2 "month +2 'year +1900 "nrdays +28 write1n('Enter the number of a month.'); Define the Debug Environment With the PSCOPE high-level program debugger, a user can define the debugging environment within PSCOPE software. You can define break points and trace points. With PSCOPE, you can write macros that set the debug environment when PSCOPE is invoked, or these macros can be included at any time during the debugging session. Shorten commands with literal definitions, try program bug fixes with patches and procedures, or write procedures to control program execution. All debug variables and procedures can be saved in files and reused. BREAK REGISTERS AND TRACE REGISTERS Breaks occur at addresses in the program under execution. The user can enter physical addresses or symbolic addresses to halt program execution. With PSCOPE, you can easily break at executable statement addresses by using line numbers. Simply use the PSCOPE directory command with the line option (DIR LINE) to get a directory of line numbers. Then define a break register or a trace register to stop at these addresses. A break register (BRKREG) stops program execution and returns a PSCOPE prompt (*). A trace register (TRCREG) displays a message and continues program execution. Following are examples of how to define a break register and a trace register. 'DEFINE BRKREG stop = #22 *DEFINE TRCREG stop2 = #17 11-25 intJ PSCOPE-86 DEBUGGING PROCEDURES Debugging procedures are groups of PSCOPE commands that have been labeled. Writing procedures with PSCOPE commands is much the same as writing high-level language procedures. A procedure can be used for any definable function during a debugging session, and it can be used with a program under execution. In the LEAPYR program, the while loop continues until 999 is entered for a month number. The following example of a PSCOPE procedure (PROC) that querys the user about halting execution. If the answer is yes CY' or 'y'), the procedure sets month to 999. 'DEFINE PROC query = DO • 'WRITE USING ('Do you want to quit ?Enter Y for yes.') • *DEFINE CHAR ccc = CI • *WRITE ccc • 'IF ccc = = 'Y' or 'y' then • • *month = = 999 • • *RETURN = true • • *else RETURN = false • *endif • *END To call this procedure while the program is executing, define a break register and use it with the GO command as follows: *DEFINE BRKREG stop = *GO USING stop #22 CALL query. PSCOPE PATCHES A PSCOPE patch is used to temporarily correct run-time errors in the program under debug. A patch can be an additional line (or lines) in a program, or can be used to replace lines in a program. PSCOPE enables both high-level patches (the PATCH command) and assembly-level patches (the ASM command). High-Level Patch In the LEAPYR program, the way to exit the program is to enter 999 for the month. However, nothing instructs the user to do this. With a high-level patch, it is simple to add a line of code to the program. Following is an example. 'DEFINE PATCH #22 = WRITE 'To exit the program, enter 999.' When the program is executed, the patch is used automatically. There is no need for a break register. Program execution stops at line number 22, the patch message is displayed, and program execution continues at line number 22. It is also possible to replace lines by using the TIL option in a high-level patch. Then program execution continues from the line number, or address, defined after the TIL. To simply eliminate lines of code, set the line to NOP as follows: 'DEFINE PATCH # 18 = NOP Assembly-Level Patch Assume there is a typo in the LEAPYR program. Instead of the else condition setting nrdays to 28, it sets nrdays to 29, making every year leap year. Use the ASM command first to display assembly code as in the following example. 'ASM #17 LENGTH 4 :LEAPYR 521A:01EOH C70600001DOO 521A:01E6H EB06 => 17 31 0 3 521A:01E8H C70600001DOO. 521A :OlEEH EBOO JMP $ + 0002H MOV JMP WORD PTR OOOOH,OOlDH ;+29T $+0008H ; A=OlEEH ELSE nrdays : = 29; MOV WORD PTR OOOOH, OOlDH ; + 29T ; A=OlFOH 11-26 intJ PSCOPE-86 Notice that source code can be displayed to assist you in finding the ELSE statement. However, source display can be eliminated simply by setting the variable SOURCE to false. After finding the address for the correct line of code, use the ASM command to change the second 29 to 28. Notice in the following example, 'word' is sufficient for the assembly mnemonic. The 'ptr' mnemonic is unnecessary. 'ASM 521A:OIE8H = 'mov word OOOOH,OOlCh' 521A:OIE8H C70600001COO MOV WORD OOOOH,OOlDH LlTERALLV DEFINITIONS LITERALLY definitions are shortened names for previously defined character strings. LITERALLY definitions save keystrokes or improve clarity. For example, the following LITERALLY definition replaces the command DEFINE with the abbreviation DEF. 'DEFINE LITERALLY def = 'DEFINE' Save and Restore the Debug Environment All debug variables and procedures can be saved in a file for future debug sessions. To save everything in a file, use the PUT command as follows: 'PUT a:debug.mac DEBUG The saved file can be used as a macro and invoked automatically with PSCOPE by using the following invocation command to start PSCOPE. C: >PSCOPE MACRO (a :debug.mac) After PSCOPE is loaded, a list of all the commands in the macro will print to the screen and will be included in the debug environment. It is also possible to include a macro after PSCOPE is loaded. The following example uses the NOLIST option to prevent the commands from writing to the screen. 'INCLUDE a:debug.mac NOLIST The Internal Editor PSCOPE has an internal editor that is a version of Intel's Aedit. Use this editor to correct source code as program fixes are confirmed with PSCOPE. The editor can also be used to create macros, procedures, or correct command lines. Escape to DOS PSCOPE has an escape function to enable access to the DOS operating system commands. This is very useful to verify a file location or print a file. Any DOS operating system command is accepted after entering the 'bang', explanation point, (!). The following is an example of the ESCAPE command. • !print a:debug.mac The DOS print message will appear on the screen, and then the PSCOPE prompt. Once the printing is complete, you are again in PSCOPE withoutaltering the debug environment. The PSCOPE Command Language The syntax of PSCOPE commands resembles that of a high-level language. The PSCOPE command.language is versatile and powerful while remaining easy to learn and use because commands are often self explanatory like GO. GO starts execution of the user program. 11-27 inter PSCOPE·86 The PSCOPE command language can be divided into functional categories. • Emulation commands instruct PSCOPE to execute the user program. They consist of GO and the three stepping commands, ISTEP, LSTEP, and PSTEP. • Debugging environment commands define PATCHes, debugging PROCedures, debugging variables, LlTERALLYs, break registers (BRKREG), and trace registers (TRCREG) using the DEFINE command. A user can also delete these definitions with the REMOVE command. • Block commands consist of DO-END, COUNT-END, REPEAT-END, and IF-THEN-ELSE constructs. They can be used alone or within debugging procedures and patches. • String functions concatenate strings (CONcAT), return the string length (STRLEN), return a substring (SUBSTR), and accept console input (CI). • Utility commands are general-purpose commands for use in a debugging environment. They consist of the following: accesses the DOS operating system commands. $ is a pseudo-variable that represents the current execution point. ACTIVE is a function that determines whether a specified dynamic variable is currently defined on the stack. ASM assembles or disassembles memory. BASE sets or displays the current radix. CALLSTACK displays the dynamic calling sequence stored on the stack. DIR displays all objects of a specified type. EDIT invokes the internal, menu-driven text editor. EVAL returns the value of a symbol in binary, decimal, hexadecimal, and ASCII. EXIT returns control to the host operating system. HELP provides on-line help for selected topics and selected error messages. NAMESCOPE is pseudo-variable that represents the current scope of a variable. It gives access to variables without requiring a fully qualified symbolic reference. OFFSET$OF is a function that returns the offset of a specified address (virtual or symbolic). SELECTOR$OF is a function that returns the selector of a specified address (virtual or symbolic). WRITE writes variables and strings to the console's screen. • File handling commands access disk files. The user can load program files to be debugged (LOAD), save patches, debugging procedures, debugging variables, LlTERALLYs, and debugging registers in a disk file (PUT and APPEND), read-in these definitions during later debugging sessions (INCLUDE), and record a debugging session in a disk file for later analysis (LIST and NOLlST). • Register access commands provide access to the 8086/8088 registers and flags. The REGS command displays the 8086/8088 registers and flags. Users can also inspect or change an individual register by specifying its mnemonic. For example, CS represents the code segment register. The FLAG pseudo-variable represents the 8086/8088 flag word. The user can also inspect or change each flag separately as a Boolean variable. (For example, TFL represents the trap flag). PSCOPE provides register access for programs that perform real arithmetic. There is a built-in 8087 math coprocessor emulator, or there is a CH8087 option with the LOAD command to tell PSCOPE to access the hardware (8087 math coprocessor chip) registers. Access or change the 8087 registers by name. • Source display commands are used to view a specified number of lines of source text at break points or on demand. LPATH or SET directs PSCOPE to the source text file. SOURCE is the pseudo-variable used to determine if source text will be displayed at break points. With PRESRC and POSTSRC, the user can determine how many lines of source code will be displayed before and after the line at the break point. The SHOWSRC command enables the display of source code outside of program execution. 11-28 PSCOPE-86 SPECIFICATIONS Memory Requirements PSCOPE-86 for DOS requires approximately 300KB of memory for PSCOPE software and buffers. DOS Version PSCOPE is designed to run on the DOS operating system version 3.0 or greater. Language Support iC-86 PLlM-86 FORTRAN-86 ASM86 PASCAL-86 ORDERING INFORMATION Order Code Description D86PSC86NL High-Level Software Debugger 11-29 INTEl. 1(;-86 (; (;OMPII.ER IN'I'E£ 1£-861l4.0 £OItlPlLEIl Intel's ie-86 R4.0 is a new generation C compiler for the 80861186 family of mi('l'Ilpl"Ill'l'Ssors, providing unparalleled performance for embedded micmpI'IlC('ssor designs. In addition to , outstanding execution speed, Inters iC·86 also offers low memory consumption, RO\lability, and easy debug. 1£-861l4.0 £OItlPlLEIl J'EA'I'IJIlES • State-of-the-art code generation teChnology • Built-in functions for automatic machine code generation • ROMabie code and libraries • Outstanding optimization • Inte{lrated debugging with Intel ICE'" and 12IC~'" • Compliance with draft ANSI standard • Supports multiple memory models: Small, Medium. Compact, and Large i~ • Linkable with oLilt'r Inl.l'IIlOH6 lanllua!.~'S such as ASM-8ti amiI'I J~I-Hti • ROMahie and rt't'ntrant lihraril's • Ability 1.l1 mix m('mory mm\l'ls with "nt'Hr" and "far" pointers • Compatible with oth('r C(~lml)II('rs and PIJM providing both standal'l! C and PIAl callinll conventions __~______~____~ If1'; and FICIo; an' trade'man.s Illnll'l Curpural.llln. Intl'! rJlI"lJlltnUnn a~:o!umt':t nu n'SplllINlbllll> fnr lilt' u:II:' I~ an) I'if'j·uil.r~ !llhI'r loon t'ln'OIlr) l'IfIIlIIIII"I," an Inll'IlJrlllhK1. Nu "thl'!' I1n'llll~nl'lllIK,·n:;.,'S iln' ,"11!lit'll. InfurmallUn ('lInlalFll'd !lITt'!n ~Pl'I'N('dt'S IIA'\lllIJSI~ publlsht'd !I'II~"iraUnn!l 1m Uk':il' dl'\II't'N fmm In1l'1. ~i·hru.;u~. @ IAIiM OrtiL'r ·'\IImb,'S'. 2Htl7HNIU3 tml'! (~"lMlI'ilUlln 19HH 11"30 1J1J1l.1'-IN I'IlNt;I'IONS RlIN-I'IME SlIPrtlRI' 1C-86 R4.0 is loaded with built·in functions that directly generate machine code within the C language. iC·86·s built· ins eliminate the need for in·line assembly language programming by allowing you to program in a high·level language ali the time. speeding software development and simplifying software maintenance. The built·ins also allow you to develop highly optimized code by extending the compiler instruction set-with built-ins you r.an enable or disable interrupts and directiy control hardware VO without having to exit C for assembler. This means you can write high performance software for real time applications without having to keep track of every architectural detail. as you would in assembly language. For example. to generate an INT instruction. you simply type: STOIO run-time libraries for iG86 are targeted to a generiC POSIX interface. with d!lCUmentation provided for interfacing with your embedded target system. This means you can r.asily retarget the libraries for use in your target application. regardless of operating system. These libraries support the complete draft ANSI standard. For iCr86 versions on DOS. Intel provides the interface between the STOIO libraries and the DOS operating system_ This allows you to develop. test. and debug your embedded application code on ~OS. or write applications directly for ~OS. causeinterrupt(number) Or. the following iC-86 instruction will cause thn pnlCessor to come to a halt with interrupts enabled: halt( ) EMIlEDDBD COMPONENI'SlIPrtlllT ie-S6 was designed specifically for embedded microprocessor applications. Ie-B6 produces ROMabie mde which can be loaded directly into target systems via Intel ICE emulators and debugged without modific1Jtion for fast. easy. development and debugging. HIGlUl' OPl'IMIZED iGS6 Is based on Intel's latest code generation techniques for developing high-performance applications. and has been optimized for developing embedded applications. Four levels of optimization are available. Important optimization features include a jump optimizer and improved register manipulation via register history. In addition. the PUM calling convention will improve performance significantly. An example of the optimization in iC-86 R4.0 is its outstanding performance on the Ohrystone benchmark. Using a Compaq 386. iC-86 produced the following resulLs: Microsoft 4.0 Microsoft 5.0 Intel iC-86 Execution Speed (dhrylscc) 3571 3333 3369 INI'EGR!lI'ED DEIJIJG 'I'fJfIl.S 1m iGS6 has been designed to work with Intel's family of in-circuit emulators (1 2ICE. ICE-186. ICE-2B6. and ICE-386) and performance analysis 1.!MIls (iPAT). Inlel software debuggers. linkers. 1!lC8tors. and other software development 1.!Xlls. In addition to the object records required for program execution. iC-86 object code contains detailed debug records that describe the actual symbols and variable names you defined in your source code. A complete listing file can also be pnlduced. Intel's "Integration by design" of ali development tools. including iCrRB. will speed the development of your embedded mlcnlprocessor applications. Figure 1 illustrates the steps in going [mOl Csource code to PROM- or ICE-loadable object elide with IC-86. SERl'ltJE !lND SlIPPOIlI' Intel's development tools are backed by our worldwide service and support organization. which is set up to deal with pmblems encountered by embedded component designers. Our field apillir.atinn experts get you up and running quickly. and our hands-on training workshops ensure that you have a thorough understonding of how our tools work. Intel compilers come with 90 days of technical support. troubleshooting guides. applicotion newslcttcl'8. and optional support contracts. 11-31 @ o 1--F:l LtJ la ICE ......... CODE SPEt:IFIt:ATIONS ENnRONItIEIW'I' II '~ Ilulilil'>llttl:'jll.'["lfk,llion.' lin 111\,:;1' d("'ln'~ frllm Imd ,1011 IS 1'I1Ihll'll ttl rhan;,:!' .... UhllUl flIlIU,' Sq)\l'mtwf.19M © Inll'i (mpllratlufl 19BH flrcln 11-51 ~umh:r 1HII7IlHltJ:l MEl' tJfllfIPII.,t'I'IflN I"tttJlLf6B 1'BA.I'IJIlBS • Tight, efficient, 32-bit 80386 code -Generated code designed and optimized for the 80386 architecture • BUilt-in support for the 80386 -Full representation specifications, including address clauses -Machine code insertion • 80387 coprocessor support -Full IEEE numerics support • pragma INTERFACE -Call modules written in other Intel languages: ASM-386, PUM-386 & C-386 • Highly optimized interrupt handling -Fast execution of interrupt handlers wlthont requiring a context switch • Pre-emptive delay -Force synchronization at the end of programmed "delays" • Optional download and debug paths using the VAX-hosted Ada debugger -With a ROM-resident target debug monitor (included). or -ICE-3B6 (80386 In-Circuit Emulator) for less intrusive debugging • Modular, configurable runtime system , -Linker excludes routines not required by the embedded application (no overhead penalty) -Easily configured for dilTerent hardware environments IlE"1. TI_ ""a I'IlfIlfI INTEl. Inters Ada development environment makes developing real· time embedded applications convenient and easy. All steps in the development process can proceed, start to finish. from a VAX terminal-from initial unit testing with the VMS· targeted compiler to compiling and linking using the 80386targeted cross compiler. Downloading to the 80386 target and debugging can also be accomplished from the VAX terminal. tJfllfIPIldTIfIN P"CILtGB tJfllfIPflNENTS '8 • ......JlUel'8 A Ultrary ..... Both compilers. the VMS targeted version and the 80386 cross targeted version, use the same user interface, commands and library management tools so the programmer learns them only once. The cross compiler has an optional switch which directs the complier to produce assembly language text interspersed with Ada source text as comments. This feature gives the programmer a convenient way to hand-inspect the code. The assembly language text can also be assembled using the Intel 80386 Assembler. The cross compiler has important optimizations to help meet real-time needs. For example. when response times to interrupts are critical. the programmer can speed up response times by invoking the ·"function mapped" optimization via a special compiler directive. "pragma INTERRUPT.· This functi~n mapping enables an Interrupt handler to execute without first requiring a task switch. i.e.. within the context of the interrupted task. • 5 ..... OJltblizer The Global Optimizer is used to reduce the size and increase the speed of embedded application code. This tool is invoked at the user's option. but usually after most of the coding and debugging is complete. Some key functions performed by the Global Optimizer include: dead code elimination unused subprogram deletion common subexpression elimination constant folding and propagation static evaluation of conditional expressions removes all unnecessary code from the application combines and substitutes constants where appropriate reduces conditional expressions to boolean equivalents where possible • ....Iler The Linker combines separately compiled Ada modules, imported non-Ada modules (see Importer below), and the Ada runtime system into one executable image. To reduce .target code size. the Linker also eliminates' subprograms in the application code and in the runtime system that are not actually required by the application. The programmer may also use the Linker to produce output in, a format suitable for burning PROMs. • ' ....rl.er The Importer can help preserve previous software investments. The Importer converts object modules from Inters OMF·386 format to a format suitable for linking with Ada modules. An Ada application can call these imported non-Ada modules through "pragma I),;TERFACE." Pragma INTF.RFACE is supported for Inters ASM-3B6. PUM-386 and C-386 languages. • Ada lIIuIU.e SY8te. All the necessary low-level support routines for executing programs on a bare 80386 microprocessor are provided in the Ada Runtime System. These routines are responsible for managing taSking, interrupts, the realtime clock and memory. Also included are predefined Ada packages. such as Text_UO, IO_Exceptions. Unchecked_Conversion and Calendar. The Ada Runtime System is written almost entirely in Ada, with a small number of packages written in 80386 assembly language to support key low-level functions. The Runtime System is easily conligured for dilTerent 80386 hardware environments, and source code Is provided for this purpose. 11-52 • Symltoll~ Deltuuer A Vr,X·residem symbolic debugger is supplied for each compiler. The debugger allows the programmer to debug at the s{)urce level while the code is executing on the target. Log and script files may be used to automate rt'fJ€titivf. debug ~C&~ions. Important debugger features include: Feature Be.ent machine lewl interface step through machine instructions; read/write to registers. memory. and 110 ports singleJmultiple stell step through source code hy single or multillit' statements hreRkpoints IJalt execution at specified points call chain display display til(' dynamic nesting of a program at a particular point in time task status display dt,termine the status of a task at a particular point in time variable display examine values of program varia hies trap unhandled exceptions examine state of the target program when an unhandled exception occurs • Lall8uaMe Tools Inters Ada development environment includes tools that help development projects run more smooth Iy. A Cross Referencer provides a cross·reFercncc listing of all source file locations where a user·defined symbol in an Ada compilation unit is defined. A Source Dependency Lister produces a valid compilation order list for compilation units in an Ada program and lists dependencies among units. A Source PormaUer (or ··pretty printer··) takes as input a non· formatted Ada source file anrl outputs a formatted version of the same text that adheres to standardized language conventions. 1\ small dehllg monitor. supplied in PROM. is used with the Symbolic Dehugger. The code can also be downloaded and debugged using Intel·s IO;'3H6 in·circuit emulator'. VAXNMS HOST CODE GENERATION LANGUAGE TOOLS PROM PROGRAMMER GLOBAL OPTIMIZER nunJ~un~rSuEnRIJA~L~~ DEBUG MONITOR I 11-53 ICE-386 ~EJ WORLDWIDE SERJ'ICE liND SlJrPORT Complete hardware and software support is provided. The Ada-386 Compilation Package comes with Intel's slamlarti gO-day warranty plus an extended one-year maintenance agreement. ensuring nninterrupted support for a full 15 months. One-year maintenance contract renewals arc available from Intel annually. ORDERING INI'ORMIITION Orller c:otIIe VVSAda386- 75 ·82 -A3 -8:' ·88 llesl (;eafl8uralloR VAX 730. 750 VAX 78X. 8200 VAX 8300 VAX 8:iXX. 86XX. 87m VAX 8800 M\I\ISAda31l6-VS ·02 VAXStationll MicroVAXIl ICE386HW N/A ProcIuCI Ada-386 Cross-()mlpilation Package. Included are the following tools hosted on VAXNMS: • 80386-targeted Ada cross compiler & lihrary tools • VMS self-targeted Ada compiler & library tmls • For each compiler a Symbolic Dehugger. a (liohal Optimizer and Language Tools • Ada-3S6 Linker and Importer • Ada-3S6 Runtime System The Compilation Package also includes full dOfumentation. Intel's standard gO-day warranty. and an extended one-year maintenance mntract. 80386 In-Circuit "mulator (hardware only). Used with the VAX-hosted Symbolic Debugger. the Im-386 orfers the programmer an altel'llative download method to using the ROM-reSident debug kernel supplied with the Compilation Package. Note: Ada-3S6 software license required for each host CPU. Multiple copies require multiple licenses. 11-54 INTEL38fP' FAMILY DEVELOPMENT SUPPORT COMPREHENsn'E DEVELOPMENT SIJPPORT FOR THE INTEL:JB6'" FAMILI' OF MICROPROCESSORS The perfect complement to the Inte1386'" Family of microprocessors is the optimum development solution. From a single source, Intel, comes a complete, synergistic hardware and software development toolset, delivering full ac<;ess to the power of the Intel386 architecture in a way that only Intel can. Intel development tools are easy to use, yet powerful. with contemporary user interface techniques and productivity boosting features sllch as symbolic debugging. And YOII'll find Intel first to market with the tools needed to start development, and with lasting product quality and comprehensive support to keep development on-track. If what interests you is getting the best product to market in as little time as possible, Intel is the choice. FEATIJRES • Comprehensive support for the full 32 bit Intel386 architecture, including protected mude and 4 gigabyte physical memory addressing • Source line display and symbolics allow debugging in the context of the original program • Architectural extensions in Intel high·level languages provides for manipulating hardware directly without assemhly langllage routines i~ • A common object code format (OMF-386) supports the intermixing of modules written in various languages • ROM-able code is output directly from the language tools, significantly reducing the elTort necessary to integrate software into the final target system • Support for the 80387 numeric coprocessor _________________________ Intel DJrporation assumes no responsibility for tile use of any dreullry oIJJer lIlan circuitry embodied In an InLel prodllct. ~~other Cireuit pa1.CnL llrenses are Implied. [nfonnatlon oontaJocd herein supersedes pI'C'o'IOusly published speeirlcations on these devices from Intel and Is sllbject r.o cnanee wiUJouL notice. September, 1008 Order Number: 28OB08{101 © IIlIeI Corporation 1968 11-55 CR£AT!AND COIIPLE WITH MAINTAN UBRARIES WITH W i...... @ o LINK MODULES }- TOGETHER WITH ~..L-_I~N? ""are •. Intel Microprocessor Development ~:nvironment ASM-3B6 MACRO ASSEMBLER ASM·386 is a ··high·level" macro assembler for the Intcl386 Family. ASM·386 offers many features normally lbund only in high·level languages. The macro faCility in ASM·386 saves development time hy allowing CAlmmon program sequences to be coded only once. The assembly language is strongly typed. performing extensive checkS on the usage of variables and labels. Other ASM·386 features include: • "High·level" assembler mnemonics to simplil'y the language • Structures and records for data representation • Upward compatibility with ASM·286 PI.IM-3B6 COMPILER PL/M·386 is a structured high· level system implementation language for the Intel386 Family. PUM·386 supports the implementation of prol<'cted operating system soFtwarc by providing built·in procedures and variables to access the Intel386 architecture. I'lj~I·:lfl(i comiJines Ih(' h{'nerits of a high·levt'l languag!' Ilith Ihe ahility to a['('l'ss th{'lntl'i386 archit{'['tur{'. "'n' th{'. d{'wlopm{'nL of systl'lTIs softwan'. PiJ\I·38G is a {'Ost-em','li\{' alt{'rnatiw to assl'mhlv languagt' programming. . C-3B6 COMPILER C nSlJ>jIlIY lor the used any drcuilry other than Circuitry embodied in an Intel product. No other circuit patent licenses arc Implied. Inrormallon oontalfftt herein supersedes previously published specifications OIl these de\'1~ rrom Inl£1. June. 1988 Order Number: 2807B6-002 htcl Caporal.lon 1988 e 11-61 FEATURES MOST COMPLETE REAL-TIME ANALI'SIS AVAILABLE TODAI' FROM ROM-WADED TO OPERATING SYSTEM WADED APPLICATIONS iP.-\T Performance Analysis Tools use in-circuit probes containing proprietary chip technology to achieve full sampling in real-time non-intrusively, The software analysis provided by iPAT watches absolute execution addresses in-circuit in real timc. but also supports use of variolls iPAT utilities to determine the load locations for load-time located software. such as applications running under iRMXII. DOS. Microsoft Windows*. or MS*-OS/2. MEETS THE REAL-TIME DESIGNER'S NEEDS The iPAT products include support for interactions between real-time software and hardware interrupts. real-time operating systems. "idle" time. and full analysis of real·time process control systems. SPEED-TIlNING 1'0llR SOFTWARE By examining iPAT histogram and tabular information about procedure usage (including or not including their interaction with other procedures. hardware. operating systems. or interrupt service routines) for critical functions. the software engineer can quickly pinpoint trouble spots. Armed with this information. bottlenecks can be eliminatrd by means such as changes to algorithms. recoding in assembler. or adjusting system interrupt priorities. Finally. iP.,\T can be used tn prove the acceptability of the developer's results. EFFICIENCI' AND EFFECTIVENESS IN TESTING With iP.AT code execution coverage information. product evaluation with test suites can be performed more effectively and in less time. The evaluation team can quickly pinpoint areas of code that are executed or not executed under real-time conditions. By this means. the evaluation team can substantially remove the "black box" aspect of testing and assure 100% hits on the softwace under test. Coverage information can be used to document testing at the module. procedure. and line level. iP.AT utilitiPB alBa support generation of instruction-level code coverage information. ANALI'SIS WITH OR WITHOIlT SI'MBOLICS IlSE STANDAWNE OR WITH ICE The iPAT-386. iPAT-286. and iPAT-86/88 prohes. together with an iPATCORE system. provide standalone software analysis independent of an ICE (in-circuit emulator) system. The iPATCORE system and DOS-hosted software also can be used together with ICE-386. ICE-286. ICE-186. and PICE-86/88. 186/188. or 286 in-circuit emulators and DOShosted software. Under the latter scenario. the user CHn examine prototype software characteristics in real-time on one DOS host while another DOS host is used to supply input or test conditions to the prototype through an ICE. It also is possible to use an iPATCORE and PICE system with integrated host software on a single Intel Series III or Series IV development system. or on a DOS computer, IlTILlTlES FOR 1'0llR NEEDS Various utilities supplied with iPAT products support generation of symbolic information from map files associated with 3rd-party software tools. extended analysis of iPAT code execution coverage analysis data. and convenience in the working environment. For example. symbolics can be generated for maps produced by most software tools. instruction-level code execution information can be produced. and iRMXII·format disks can be readl written in DOS floppy drives to facilitate file transfer. WORLDWIDE SERVICE AND SlJPPORT All iPAT Performance Analysis Tool products are supported hy Inlel's worldwide service and support. Total hardware and software support is available. including a hotline number when the need is there. If your application is developed with "debug" symbolics generated by Intel 8086. 80286. or 80386 assemblers and compilers. iPAT can use them-automatically. Symbolic names aIso can be defined within the iP.-\T environment. or conversion tools supplied with the iP.,\T products can be used to create symbolic information from virtually any vendor's map files for R086. 80286. and 80386 software tools. REAL OR PROTECTED MODE iP.,\T supports 80286 and 80386 protected mode symbolic information generated by Intel 80286 and 80386 software UJols. It can work with absolute addresses. as well as base:offset or selector:offset references to partitions in the prototype system's execution address space, ·"Inltso't \\ indl/I\$ and Olrpr)ralion ~lS an' tradl'mar~s II \liff'llS(il ulrpllratiun. IHM antil'Sf2 an' tradl'marls Ilf InLl'rnatlonal Husincs:-I Ma('hln('~. II'A1: IGI-.:, i~MK 121r;~, iRMX II. Intd381l an.~ tTfl(jI~milrls tlllntd [FEATURES 1 CONI'lGfJllATION til/IDE For all·of the following application requirements. the iPAT system is supported with iPAT 2.0 (or greater) or iPAT/FICE 1.2 (or greater) host sortware. as footnoted. Application Software 80386 Embedded iRMK on 80386 iRMXII OS·Loaded or r.mbedded on 386 OS/2· Loaded on 386 iRMXII OS·Loaded or r.mbedded 80286 Embedded Option OS/2 OS-Loaded 80286 801861188 r.mbedded DOS OS· Loaded 8086/88 8086188 Embedded Host System iPAT386DOS 1• iPATCORE DOS iPAT386DOS. iPATCORE iPAT386DOS. iPATCORE DOS DOS iPAT386DOS. iPATCORE DOS "1 #1 "2 "3 #4 #5 iPAT286DOS. iPATCORE iPAT286DOS. iPATCORE ICEPATKIT2 )2ICEPATKITJ IIIPATD. iPATCORE3 IIIPATB. iPATCORE:l [[[PATC. iPATCORE:3 DOS DOS DOS DOS4 Series 1114 Series IV4 iPAT286DOS. iPATCORr. DOS iPAT286DOS. iPATCORE ICEPATKIT2 )2ICEPATKITJ IllPATD. iPATCORE3 IllPATB. iPATCORE3 IIIPATC. iPATCORE3 DOS DOS DOS DOS4 Series 1114 Series IV4 iPAT88DOS. iPATCORE DOS DOS DOS DOS4 Series 1114 Series IV4 "6 DOS OS·Loaded 80286 iPAT Order Codes "1 "1 "1 #1 #1 #1 #1 "2 "3 #4 #5 #1 #1 "2 "3 #4 #5 iPAT88DOS. iPATCORE FICEPATKIT3 IIIPATD. iPATCOREa lllPATB. iPATCOREa lllPATC. iPATCORE3 DOS Notes: 1. Operable standalone or with ICE·386 (separate product: separate host). iPAT·386 probe connects directly to prototype system socket. or to optional 4' probe-to·socket hinge cable (order code TA386A). or to ICE·386 probe socket. 2. Requires ICE·I86 or ICE·286 in-circuit emulat.or system. 3. Requires FICE in-circuit emulator system. 4. Includes iPAT/PICE inte{:rated software (iPAT/PICE 1.2 or greater). which only supports sequential iPAT and ICE operation on one host. rather than in parallel on two hosts (iPAT 2.0 or greater). 11-63 SPECIFICATIONS 'I HOST COftlPIfTER REt)IfIREftlENTS ELECTRICAL CONSIDERATIONS All iPAT Performance Analysis Tool products are hosted on IBM PC AT. PC XT. or PS/2 Model 80 personal computers. or 100% compatibles. and use a serial link for host·to·iPAT communications. At least a PC AT class system is recommended. Th.e DOS host system must meet the following minimum requirements: •. 640K Bytes of Memory • 360K Byte or I.2M Byte floppy disk drive • Fixed disk drive • A serial port (COM 1 ur COM2) supporting 9600 baud' data transfer • DOS 3.0 or later • IBM ur 100% cumpatible BIOS The iPATCORE system power supply uses an AC power source at 100V, 120V, 220V, or 240V over 47Hz to 63Hz. 2 amps (AC) at 100Vor 120V; 1 amp at 220V or 240V. PHYSICAL DESCRIPTIONS Unit iP.4,TCORE: Power Supply iP.4,T·38B probe iPAT·286 probe iP.4,T·86 probe iPATCABLJ<: (to ICE:· 186/286) IIIPATB.C,f) (FICE board) Serial cables PC AT/XT PS/2 Width Inches Cm. 8.25 4.5 11.0 1.3 2.8 2.B 13.75 11.0 4.0 6.0 6.0 35.0 28.0 10.1 15.3 15.3 4.0 10.2 .25 .6 36.0 91.4 12.0 30.5 30.5 .5 1.3 12.0 Operating Temperature: Length Inches, Cm. 1.75 4.25 0.50 1.12 1.12 3.0 4.0 4.0 ENJ'IRONftlENTAL SPECIFICATIONS Operating Humidity: Height Inches Cm. 21.0 20.0 7.B 10.2 10.2 7.75 iPAT·386, iPAT·286 and iPAT·86/88 probes are externally powered, impose no power demands on the user's prototype, and can thus be used to analyr.e software activity through power down and power up of a prototype system. For ICE·386, ICE·286, ICE·186, and PICE microprocessor probes. see the appropriate in·circuit emulator factsheets. 144.0 370.0 11-64 10°C to 40°C (50?F to 104 OF) ambient Maximum of 85% relative humidity, non·condensing ICE-5100/452 In-CI.,()ult Emulator IN-CIRCIJIT EINlJLA'I'OR I'OR THE lJPI'"-452 IilINILt 01' PROGRAIfIIfIABLE 110 PROCESSORS The ICE-5100/452 In-Circuit Emulator IS a complete harrJwar~J~onwar~ dehug l'nvironment for developing embedded control applic,ations hased on the IntelliPIN-4fi2 family of I/O peripherals. With high-performance full-speed emulation, symbolic dehugging, and fiexibk 1Ill'IIlOl'Y lIlapping, the ICE-j 100/452 emulator expedites all stages of development: hardware devclu[JIlIl'IIt. softwarl' development, system integration, and system test; shortrning yuur projl'ct's tim!' to ITwrkl't. FEA'TlJRES • • • • • Full speed to the speed of the component. 64KB of emulation mapped memory_ 254 frames of execution trace. Symbolic debug. Serial link to an IBM PC Xl AT, 100% compatible. • Four address breakpoints with in-range, out-of-range, and page breaks. • On-line disassembler and single line assembler, • Full emulatiun and debug support for the Flm Buffer. • • • • • • • • Sourl'~ code display. ASM-51 and PUM-:; I language support. Pop-up help. DOS shell escape. On-line tutorial. Built-in CI<'I' ha~l'lll'ditol', System sPif-tl'st diagnlJstil'~. \\!(Jrldwicie Sl'rVICI' and SUPP0I't. imJ-----------------------IOld (~'rr~'r I 0014">2 ('mulaLor's singlt'·line assernhl!'r, \Iachine' md(' can 11(' disasSt'mllll'd to mn!'lllonics Ihl' signifi(' 2 elllulator is supporl['d hy Intel's wOl'ldwilll' St'rlil't' and SIlJlJlort organiwtion, In add iLion to an l'xt(,l1(/ed lIal'ranty, you ('an elloOS(' fmm hOllim' support.. on·sitt' system ('ngim'('J'ing assistanc(', and a I'ariely of hands-on training lIorksliops, FLEXIBLE BREAlt.POINTlNG ,.'OR f)IJICIt. PROBLEM ISOLATION The ICE·;' 100/452 cmlilator sllpporLs tim't' diffm:nl t.ypes of break specificaLiolls: spP{'ifi{' addn'Ss breaks Iln up 10 54,000 pllssihl(~ addn'sses; range hreaks, hoth within and outSide a user-defined range; and page tweaks, up to 2~6 pages on 256·byte tlOunoaries. 254 i'rames of execution trare memory provide ampll' debug informali(m, wit.h each frame divided into 16 bits of program l'xtx'ut.ion address and Hhit.s of external event inforIllHl.ion. A maximlllli of fOllr trarepoints al/ows qU8lifil'd trace for a varieLy of (/ehug conditions. SYMBOLIC DEBIJGGlNG E'OR E'AST IJEJ'ELOPMENT Dt'sign team prlK/tH't.ivity is mlwnc('lilly till' USt' of sYIlI!>olic 1I1'1l11g rl'l'('I'l'IlI'('S to progl'alll line. high·levd stat!'IlI('nts, and llIodule and varia!>le nanll'S, The terills llSl'lI to d['wlop pmgraills <11'1' thl' salll!' us(xl I()r syst('rn IIdlugging. 11-66 ELECTRICAL CONSIDERATIONS 'I'IIP ('mulation processor's user-pin timings ami 10arlings are identieal to the 4~2 component l'~cept as [ollo\\s: • L'p to 2::; pF of addltHmal pin capacitance is l'lmtl'ihulril IJ) tilt' processor morlull' and target adaptor assemhlir's. PROCESSOR MOD(!LE DIMENSIONS PIN' f'lcu~ 1: Processor \Iodulf DimenSions SPECIFICATIONS Hosl RequlrellleRrs: Electrical Characterisllcs: IB\I PC-'\l .~T or compatible PC-DOS 3.0 or later 1'0\\('1' supply 100-120\1 or nO-240\ sel{'ctahle :'0-50 Hz 2 amps (AC max) @ 120\ I amp ('\C max) @ 240V 5 12" R~\I One flopp) dl'ill' and hard disk Physical Character/sties: E""lro".,e"tal Characterisllcs: Opl'rating temperature: + 10°C to + 40°C niOor to 104 OF) The ICJ-:-SI 00/452 emulator consists of the folloll ing components: Uull Contl'oll('1' Pori L'srr Cable Processor \lodule* PO\I(,I'Suppl) Serial Cable "1\ ith Wldlh Helpl te-clh 10.:11 em lo.:h C:m ID.:h (;m 8.20 21.0 1.5 :lB 1:1.~ 34.3 39.0 3.8 7.6 9.7 18.1 t.:i 4.0 3.8 10.2 Operating humidit): \la\imulII of !l:i'Yr, relative humidity. non'Clmdensing 99.0 4.0 10.2 11.0 28.0 1.J.jO 360.0 supplied target adapter. 11-67 ORDERING INFORMATION Order Code Description pl452KITAD Kit oontains ICE-51001452 user probe assembly_ power supply and cables. serial cables. targft. adapter. crystal power accessory. emulator controller pod. emulator software. DOS host communication cables. ASM-51 and AEDIT text editor (requires software license). . pl452KITD Kit contains the same components as p1452KITAD. excluding ASM-51 and the AEDIT text editor (requires software license). pC452KITD Conversion kit [or ICE-51001451. ICE-51001252. or ICE-5100/044 running PC-OOS 3.0 or later. to provide emulation support ror 80C452 components (requires software license). TA452E Target adapter [or 68-pin PLCC package support. D86ASM51 ASMIRL 51 package for PC-DOS (requires software license). D86PLM51 PIJMJRL 51 package for PC-DOS (requires software license). D86EDlNL AEDIT text editor ror PC-DOS. For direct information on Intel·s Development Tools. or for the number of your nearest sales omce or distributor. call 8(J().874-6835 (U.S.). For inrormation or literature on . additional Intel produCts. call8O(),548-4725 (U.S. and Canada). MCS is a registered trademark and ICE is a trademark of Intel Corporation. IBM and PCfAT are registered trademarks and PGlXT a trademark or International Business Machines Corporation. 11-68 I~ETII-51 00/044 ID-~ir~uit ElDulator IN..CIIlfJIJII'EMIJ"A.I'OR FOR I'HE RIJPI"'-44 I'A.MI"" OF PERIPHERA."S Tht' leR·51 001044 In·Clrcuit Emulator is a complete har!lwarrJsol'I,ware rtehug environment for developing embedded control applicatiuns uascd un the Intel RLJPI'"·44 family of peripherals. Including the 8044·based IIITIIUS'" board products. With high·perfurmance 12 Mllz emulation. symbolic debugging. and fiexible memory mapping. the IC«;·5100/044 emulator expedites all stages of development: hardware development. soi'tware development. system intt'{lration. and system test: shortening your projeCt's time to market. I'EA.I'IJRES Full speed to 12 MHz. 64KB of emulation mapped memory. 254 frames uf execution trace. Symbolic debug. Serial link to an IBM PC XT. AT. 100% compatible. • Four address breakpoints with in·range. out -of· range. and page hreaks. • On·line disassembler and single line assembler. • • • • • • • • • • • • • Source cude display. ASM·51 and PIJM·~ I language support. Pop·up help. DOS shell escape. On·line tutorial. Ruilt·in CRT based editor. System self·test diagnostics. Worldwide service and support. imJ-------------------Intrl fllI'pnralllln i1s:.uml'll nil n'Spom!1btlil~ fur 11K' uS(' III a~ rJrrUIU~ ntB.'r than rlrrultr) !'mblldic'l1 in Cln Irtl'lllMlIlUI'1 Nlllltht'r rlrrUI! pall'n! 1I"'n:\l':O llI'j' Implil>O. InIurmalmn ('umaill{'d ht'l'rln I>Upl'rl'l.'fX't'\ pn"l iml:\l~ pUhli:;htod S,n"irltilliorL'i lin tlU'l'!t' dt"wln'll rrum Irt4.'l (lfld I~ suh~'t't In ('t)'ln!;'t' ",lIhuul nulln', , St'plt'mbc'r, 19M © lr1ll'l CII..pllral.iUR 19M Ol'dl'r -'umht'r: 2H08IIH)OI 11-69 ONE TOOL FOR ENTIRE DEJ'EWPMENT CYCLE SYMBOl.lC DEBIJGGING FOR I'It.ST .DI?J'ElOPItIENT The ICE-51 00/044 emulator speeds target system development by allowing hardware and software design to proCl'('d simultanl~lusl~_ You can d(wlop software ('VI'n before p['()totypl' hardware is finished. Ann hl'cause thl' IC~;-!i 100/044 emulator pl1'cisl'iy matches till' component's l'il'l'lri('al and timing chal'ill'lrristil's. it's a valuahif' tool for hardwarl' (iI'Vf'lopml'llt and dehug. Thus, the IC~:·:; 100/044 emulator ran debug a prototypl' or proliuction sySU'nI at any.slilgl' in its d(wiopml'nt. without introfiueing l'xtram'OIlS liil{'dw:ll'l' III' softwarc tl'sl tools, Design team productivity is l'llhanc('cI hy the USi' of symholic dl'hug J't'f('J'I'ncl's to pJ'ogrilm lim', high·lewl stal.em('nts. and moduli' aOiI variahl(' names. The tl'rms uSI'd to develop programs i1l'l' till' saml' uSl'd fUI' sysh'J11 dl'llugging. HIGH-SPEI;D, REAl-TIME EMlJllt.TION Till' lel,;-;, I ()0/044 I'flIulalol' p[,()lidl's fllll-"JWt'd. I'I'iIHil111' ('{llUtalio{) lip to 12 ~lIlz. Ill-calise till' l'flIulatol' is fully tr,lJlsparl'lll tothc tal'gl'l system. you haw compll't(' control OWl' Il!lrcJII!lJ'1' and softwa['(' debug and syst('1ll intl'gratio[). (i4f..11 (If zero wait-stah' ('Illulation memory is mailabl(' to n'plm'e Wrget system colie Im'mory, allowing software dl'llug W Iwgin I'v('n I)('forl' prototYJl(' hardware is finished. I'l.EXIBlE BREA"POINTING FOR (lIJIC" PROBLEItI ISOlATION Thl' IC:~;-!i 100/044 emulator supports three diffen'nt types of break specifications: speCific address breaks on up to 64,OOD possibl(~ addressl's; J'ange bre uml'S no f('spHnslhllll~ [lit' (hI' us(' of an} Clrrutlr~ ulllt'f than drrultf) t'mhoKlIl'd In itO Intl'lllfllllun. Nu ulht'j" fiN U111hl!t'nt Iln'ns('l\ &'lllt'mlM.'r.l!lKfl IINli'r Numher: 2H1179H'(XJ2 © Intel Curporaliol\ 19HH 11-73 ONE mOL FOR ENTIRE DEJlEUJPttlEN'I' Ct'CLE The ICE·5100/252 emulator speeds Iilrget system development by allowing hardware and software design to proceed simultaneously. You can develop software even hefore prototype hardware is finished. And because the ICE·51001252 emulator precisely matches the component"s electrir,al and timing characteristics. it's a valuable tool for hardware development and debug. Thus. the ICE·51001252 emulator mn debug a prototype or production system at any stage in its development. without introducing extraneous hardware or software test tools. HIGH-SPEED, REAL-TIttlE EttlIJLA'I'ION The ICE·5100/252 emulator provides full·speed. rt' r 2R()721-004 e 11M(! Q)rporauon 1988 11-84 TRAt:E BIlFFER STANDA£ONE OPERATION The ICr:-196KB/PC mntains a 2K (2048) entl'Y trace buffer for keeping a history of actual instruction execution_ The trace buffer can be conditionally turnt'd off to coliI'd H userspecified number of trace frames_ Trace information can be displayed as disassembled instructions or, optionally, disas..<;embled instructions and the original C-96 and PLiM-li6 source code, Product softwal'e can be developed prior to hardwaJ't: availability with the optional Crystal Power Accessory (CP.") and the ICE-l 96KBlI'C mappahle memory, The CI'" also jlJ'()vides diagnostic te,~ting In as..~ure full functionality of the BREAK SPEt:IFIt:ATlON Three execution address hJ't~akpoints or one range of addr('!;ses can hl' aClivt' at any time, Tilt' ICr:-196PC allows any number of hreakpoints to bt' defint'd and aC'livated wht'll 1lf~'dl~1. SI'ItIBO£It: SlfPPOIlT AND SIIlfReE t:ODE DISPMI' Full "SM-!lti, 1'11\1-96 and C-96 IHnguagl' symholil's, ineluding variahle typing and S('opt', art' support(~j hy th(' ICIo:-1 !)lil\B/l'C m('mory H('(,f'SSt'S, traCt' hum'r display, 1)I,'all~linl spI'I'ifi('ation, and ass('llIhl('r/diSiISS('rnhlt'r_ .·\dditionally, C-mi allli I'IJ~H16 Sllllr('f' [,(KII' ('an hI' IlisplaYl'd to llIalt' d('Il'lopllll'nl and ddmg msi('I', ICI~-196KIlII)C. J'ERSATILE AND POWERFlf£ HOST SOFl'WARE The IC~;'196KB/PC comes equipped with an on-line help facility, a dynamic command entry and syntax guide. builtin editor, assemhler and disassembler, and the ability to ('uslHlnize lh(~ command St't via lilt~ral definitions and dt'hug pl'Oc('duJ't's, - HOSTING The IC~:-lf)61\BII'C is husted un the IBM PC X'I: ,\'1' ur mmpalihlt's with PC-DOS :l.Il 01' later, SPECIFICATIONS REl)lflREMENTS Host IBM PC XI: AT (or (x)mpatihle) 5121\ hytt's RAM, Hard Disk PC-DOS 3,0 or Later Om' lInIlS(~dl'("'iphel'al Slot DC Currt'nt 2,:'A ICr:-196t.:1~/I'C 2 Bytl\~ of lISt'r Sta(,k Spac(, TARGET INTERFAt:E BOARD I.~ngth Ileight Width 2,0" (:'_lcm) 1,2" (:I_O('IlI) 2.3" (fiJlt'm) ORDERING INFORMATION Onle,. CfHle IJescrl,,".B r:mulation Iloanl. IIser mlll(', lfll'~~t inWI'[an' IKlaJ'd (pl.eC), host, diHgnostit', and tutorial I.ength I fi'(i" (3fHkm) SO[tWall' on DOS diskeUt'., 111111 Crystal Powel' At-c('s..~OI'Y with Iltlwel' mlll(' PROBE ELEt:TRIt:A£ ICr: If)lil\BI'CB San](' as aIKIV(' eX('('llt (Ioes not indlltl(' Crystal I'owel' A(ws.~oI'Y 50pf luwling HOC I 961\B 1)lus lit'" pin 'Ii\ If)lipl.(XAillpGA liH pin p(;A lIlI'lWt adallll'l' 5ns JlllIpugHtion delHY CI~-\ J!)lil\At.:B Crystal Powel' Am~s..'i{II'Y ami P0w\'I' mhle only 50mA @ 12 Mill. In' (frum tarlwt systt'm) (~O(i Olillpilel'* 3,5 to 12 Mill., 12 Mllz only IlHBC[)(iNI. Operaling f'retjllmt'Y IlHlipl.MOliNI. I'IJM-Oli (~lIl1pilt'I'* with CI'A IlHBASMfllil\ I. ASM-f)(i Assemhlel'* I(:r: IflHI\BI'C lfSER t:ABLE "V." ENJ'IRONItlENTA£ t:HARAt:TERISTIt:S OIK~I'ating lIumidity IOOG to ,10°C :175°1,' ttl 104°1" Ma,\imum fir, % J.1datiVt' Ilumitlil,Y, nun-coudensing *lndu(lt~s: J.1d(It~ltor/l.inker, Ohj(xt-to-Iwx CtlllVt'rtt'l~ Floating Point Al'ithlll(tic I.ihrary, l,ihl'1lrian Note: lel':- J!)lil\B/I'C USt'S two hytes of Ihl' IISt'I' starl, 11-85 [}ll[gJ~IUIli£jj~[N]ffi\IJ2dW I (; E TM_ 1 9 .. K B / x X I N - (; I R (; U I T EMU .. AT 0 R S MODlILAR IN-CIRClIIT EMlILAf'fJRS FOR THE BxCI96lt.B FAMILY OFMICROCONTROJ,LERS The ICt<;"-196KB/\!X and IC/<:-196KBII1X in-circuit emulators deliver a complete, real-tim~, hardwm'eJ software debug environment tor developing, inleilrating, and testing 8xC WoKR-bused designs. The ICF:-196KB/MX emulator is a mid-range modular debugging sysLem featuring high performance 12 ~IHz emulation, high-level symbolic debugging, 64k bytes zero-waitstate mappable memory, ami emulation trace_ ICE-196KBIHX emulator is a high-end syst.em wit.h all the functionality of ICE-196KB/MX plus additional breakltracc capabilities and expanded mappable memory, The ICE-196KB/MX emulator can be upgraded to an ICE-196KB/HX emulator with optional add,in boards. Both syst.ems feature an identical human interface, utilize the sHine haSt' chassis, and are serially hosted on IBM* PC XTs and A'I's, and 100% compatibles. ICE-196lt.BlxX IN-CIRClIl'I' EMlILAf'fJRS CORE FEA'I'lIRES • Predsely malches the component's electrical and tillling characteristics • Supports the ROM less and (EP)ROM versions or thl' 8xCHJ6KR • Does not introduce extraneous hardware or software O\'erhead • ~Iodular base for future groMh and migration infel'--------·IBM Is a It',gistP.tOO Itoof'mark of [nt{'rnatiolllli Ruslness Machllle'S [lllel Corpuralion aSSlimrs no rcsponsibilit~ ror till' usc of ally drcuitry (t,/)P.r than r.irruilry I'mhodk'l.i in an IOld proc1urt. ~() other circuit patt:nt licenses are implied. Inrormalion cont.aillffi herein supersedes prcviously published specificaUons on these dL·... jr~ from Inld and Is suhjlll:l tv chan~ 'Nil1lOut nutlce Octoher, 19R8 © Inlel Corporalion 19RB Order Number: 28004HlOl 11-86 I ICETII-'96IlBIMX IN-t:IRCIJIT EMIJM'l'tJR FEA'I'IJRES • Real·time transparent emulation of the 8xC196KB mieroeontroller family up to 12 MHz. including ROM and EPROM versions • 64k byte~ uf zeru-wai~tate mappable mp,mory to allow early software debug and (EP)ROM simulation. expandable to 128k bytes o 64k hardware executiun breakpoints • • Symbolic debugging and source code display for faster and easier access to memory location and program variables • 2k frame trace buffer displaying e,xecution address • Multi·ICE synchronization to start and stop multiple emulators in multi·processor designs • Run·time viewable e,xecution trace • Watch winduw feature autumatically displays variables when breaking emulation • Serially·hosted (RS232C) with vcry high·speed download capability • ONCE'" ~uppurt for on-clrcult emulation of ~urface-JIIount target systems • Trigger out for synchronization with external logic analyzer or scope • capable of suspension mounting for remote debug • Full language support with ASM-96. PI JM-96. and C-90 • On·line di~ssembler and single-line assembler • Context·sensitive drop-down "help" window to speed development • On-line tutorial • Self·test diagnostics to ensure system integrity • World·wide service and support ICE ....-'96IlBIHX IN-t:IIlCIJIT EMIJM'l'tJR FEA'I'IJRES Includes all features In IC"'''"·196KB/MX emulator plus fhe follow/DR: • Additional cumplex event recognizers for bus break/trace to allow debugging on data values, events. or addres~es • DynamiC trace allows user to view trace buffer Without stopping emulation • • • • • • • • • Fa~tbreak~ to allow the user to access program variables and SFRs during emulation Additional fi4k hytl'~ of zero·waitstate mapped memory (12Bk bytes total) Emulation timer and event timer for debugging speed· critical applicntion~ and to allow performance analysis capabilitit'S Conditionaltl' . hyl('s trace memory, and single-step program execution art' stlmilaril on t hi' ICr:- I fll) l'mulalo)', Inl('1 provides a complete development environment using assl'mhl(')' (:\S~IIIl)) aH weI! UH high-il'Il'l languag~s such as lntd's iC86, PUM86, Pascal 86 and Fortran fl() to at,:l'il'I'all' ill'\l'lopnlt'nt schedules, Thl' ICE-186 emulator supports a subset of the ROC 1SCI fl'alun's at 12,;; \11170 anil at till' '1"1'1. lel'pl characteristics of the component. The cmulatm is hosted on lB~rs l'l'l-:;onal Computl'l' II: alread~ al'ailable as a standard development solution in most of tllllay's (')1gimwing 1'llIironnll'nts, The leR-186 emulator operates in prototype or standalonp mlKll'. a1101\ ing soft\\an' 1li'\plopnll'lil and debug before a prototype system is available, Thl' Iq:-llIl) 1'111111<1101' i~ idmll; suitl~1 [01' ilt'll'Ioping real-lime applications such as industrial autolTlation, (,()lTIlllilPI' pl'l'iplll'rals, COl1lmllllirations, officI' automation, or othcl' applicatiol1s requiring thl' full pow~'r of thl' 12,~ \11170 HOC IHH l1liCl1IPI'Ol~'SSOI', ICETM-I B6 FEATIJRES • Full 12,5 \IHz Emulation Speed • 21\ Frames Dl'ep Trace Memory • Two-Lcvcl Breakpoints with Occurrenct' Counters • Single-Step capahilit~ • 1281\ Bytes Zcro \\'ait,Stale Mapped \Iemory • Supports DR:\\l Re[resh • High-Le\'el Language SUPIJOrt i~ • Symliolic lli'liug • RS-ZI2-C I'n'\hlu:-I~ I,ulllrslk'c! sl~'rirll';nIlUls 11!I11""~1' d,,\iI1,,, !tllm 11111'1 011111 IS s,lh~"1 tn d1.l1l/.!!' '-111111111 IiI~h1' ~, Intl'll~lrl~lra"II'l ~'IIII'llIIM·r. IlIHH :!Jln"j21i~lm l!IHH 111'01"1 \umln 11-90 HIGHEST EMfJLATlON SPEED AJ'AILABLE TODAI' fJSER-FRIENDLI' SI'MBOLICS AID IN DEBfJG The ICE-186 emulator supports development and debug of time-critical hardware and software using Intel's 12.5 Mllz ROC 1R6 microprocessor_ Symbolics allow access to program symbols by name rather than cumhersome physical addresses. Symbolic debug speeds the debugging process by reducing reliance on memory maps. In a dynamic development process, user variables can be used as parameters for Im-186 commands resulting in a consistent debug environment. RETRACE SOFTWARE TRACKS This emulator captures up to 2.048 frames of processor actil'ity_ including both execution and data bus activity. With this trace memory_ large blocks of program code can be traced in real time Hlill vicwed for program flow and behavior characteristics_ HARDWARE BREAKPOINTS FOR COMPLEX DEBfJG User-derined "TII,-'I'HI<:N" breakpoint statements stop emulation at speciric execution addresses or bus events. During the hardware and software integration phase_ hreakpoint statements can be deriDed as execution addresses and/or bus addresses and/or bus access types such as memory and I/O reads or writes. Additionally, event counters provide another level of breakpoint control for sophisticated state machine constructs used to specify emulation breakpointsltracepoints. SMALL OR LARGE STEPS ;\ stepping command can bc used to view program eXf(,lItion one instruction at a time or in preset instruction blocks_ When used in conjunction with symbolic debug, code execution can Iw monitored quickly and precisely. DEBfJG CODE WITHOfJT A PROTOTI'PE Even before prototype hardware is availahle, the ICE-186 emulator working in conjunction with the Crystal Power Accessory (CPA) creates a "virtual" application environmmt. 128K bytes of zero wait-state memory is available for mapped memory and 110 resource addressing in 4K increments. The CPA provides er,Ilulator diagnostics as well as the ability to usc the emulator without a prototype. DON'T LOSE MEMORI' The ICE-186 emulator continues DRAM refresh signals even when emulation has been halted, thus ensuring DRAM memory will not be lost. During interrogation mode the ICE-186 emulator will keep the timers functioning and correctly respond to interrupts in real-tiIllP_ SfJPPORTS FAST BREAKS "Fastbreaks" is a feature which allows the emulatiun processor to halt, access memory, and return to emulation as quickly as possible, i\ fastlll'eak never takes more lIlan 5625 clock cycles (most types of fastbreaks arc considerably less). This feature is particularly useful in embedded applications. MfJLTIPLE HIGH-SP':ED COMMfJNICATlON LINKS Two communication links are availahle for use in conjunction with the host IBM PC AT. The ICE-186 emulator uses either serial (RS-232-C) or a parallel (GPIB) link. A user supplied Nationallnstruml'llts (IEI<:E-488) GPIB communication board pmvides parallel transfers at rates up to 300K bytes per second_ SOFTWARE ANALI'SIS (iPAT) Intel's Performance Analysis Tool (il~\T) is designed to incre2se team productivity with [eatur('S like interrupt latency measurrm('Jlt, code covrraw analysis and software modo Ie pl'rformance analysis. These fealurl'S enable the user to dl'sign reliable, high performance embedded contml products_ The IC~;'I H6 l'mulator has an external 60 pin connector for iP,\T. BllILT-IN SfJPPORT FOR LOGIC ANALI'SIS General-purpose logic analyzers can be used in conjunction with the ICE-ISG to pl'OIitil'.tietaih'd timing of spccit'ic events. The ICE-186 emulator provides an external sync signal for triggering logi(' analysis, making complex trigger seqUl'nCl' programming easy. :\n additional 60 pin connector is included fill' thl' logic analyzl'r. WORLDWIDE SERJ'lCE AND SfJPPORT HIGH LEJ'EL LANGfJAGE SfJPPOR'I' OPTIMIZED FOR INTEL TOOLS The ICE-IBG l'mulator is supported by Intel's worldwide servin' ami support organization. Total hardware and software support is availahll' including a hotline number when the nl'l~1 is there_ The ICF:-186 supports emulation for programs written in Intel'S ASM86 or any of Intel's high-level languages: ['iote: This emulator dOl'S not support use of the 8087. PUM-86 Pascal-86 Fortran-86 C-86 These languages are optimized for the Intel HOIHG180188 component architcctures to deliver a tightly integrated, high performance development environment. 11-91 SPECIFICATIONS PERSONAL COMPIJTER REt)IJIREMENTS ELECTRICAL CONSIDERA'I'IONS The IC~·186 emulator i, hosted on an IBM PC .-\T. The emulator has heen tt'Sted and elaluated on an IBM PC AT. The PC :\T ITIllslllWel the folio\\'ill~ minimum requirements: • 640l\ Byles of \Iemory • Intel .\bole Iloard Ilith al Least I M Il~lt' of ~xpansion 1<'1' ImOm" 70w\ ~Iax, 111, - J 5m'\ ~Ia\ 1,," - 1.0111:\ ~Ia,\, 1111 TIMING CONSIDERATIONS ~Iemor~ One 360l\ [J~ Ie, or One 1.2\1 Bytes floppy Disk Drive One 20\1 Bytes Fixed·Disk Dril·e PC DOS 3,2 or Lat!'r .\ serial Port (CO~I J or C()~12) Supportin~ \1inimaliy al 9600 Baud Data Transfers. or a :-;ational Instruments GPIIHC2.\ boaI'll. • IB~I PC .\T BIOS • • • • ,'iPfiC . l)at,1 in ~'(lJP 11111) IC~·186 ~mulat{)1' ""-. ilia",. \S\IlI' ~('wl\ 11~1l\) , Kc'solutloll Transit inll S!'tlJlI 'l'inll' PHYSICAL DESCRIP'I'ION AND CHARACTERIS'I'ICS The 'CII·'.6 snc COIfIroNli,fT ""_. ...."'. L-, :-i\lll'hnJrillll:-: J.t~';ul~ (SKm ) ('(.Illsists uf the folioll jug 1~)llIpOIll·ntS: :!:i TrillisilulIl S,'lllj) '1'11111' ~;Jl1ulat(Jr C(Jntrol l nrl IIJ.~O 2h,-W SUPfll\ i,(iO HJ DO 1.70 -1.1;-, ~'.-If) .6;, 1'0\,1'1' l:in ('mil(' :i.70 ~,:j() 211.711 IlLiIi 1.1;11 II.IKI 7.00 :i2.till 2i.HII 17,1111 n.on :iiHtl l ~!'r Cahh', PlfT III1l/.!t'C no 1II.!IO ,60 1..iO \\11 I.. :~2 I ~I :11 I\T~,Tll11':~I\ I:. Ii I:, 111 S"!llpTllllf' 1l~1,11I, II~I.II. Sl'ltlpTilllt' :1.411 A.no (DO 17.00 fUIII :r! I:. IIOLD :-it'lull (rEST '1~:l.v. '\[lIln'ss Fhtill Iklm ~E '·1) (:~f'h's '\'1'\ ('\I'h'''' '1":.1.\\ 'I~.I. \\ 1I1.1l\· 22.HII \I.E \\iflill Ullin] 'till II " :lIi II 2:i III ,iO leu ':12 'I.E klh,· J)dil~ (\/\J '1:.1 'I; •',I ':~II :!;, :!;I :!;-I .. CLh.Ol T 1.41\\ 10 :!,-, ~2 1\,\1 J!) \I.E kliw U 'I~ .1' • .1 \I.E IlIlI('! iw :.c, D['la~ Tu. \\ \ddJ,('ss lIold III \I.E Ill I':\ In,)I'\I'I'11I III if..:. '1;.1111 HI :m :~:i -7 1,11\\ CI.t-..J\ III CU,()I T S.", (~lIlslllll ~I SIT (;lIid,'loJ' '''dillonal Spl't'ifj(,:ltillllS. .. \!,plil's tll1l~ "hl'l1lhl' \I.E\11111E \ilrinhh' 1:-; :-;1'1 to ST-\t.:T. n \ppJIt'S IInl~ \\he'll Ihl' \I.E\I(JIW \ . 11-92 :!i ENI'IIlONMENf',tL SrECII'IC,tf'lONS I T. T1 I h I n I yt I Operating Temperature 10 0 e to 40°C Ambient StorHge Temperature - 400C to 700C OIlDEIlINGINI'OIlM,tf'ION ICEl86 ICE-186 System including ICE software DOS 3.XX PC AT with Above Board) (R~luires ICE 186AB ICE18611'AT ICE 186 with Above Board included ICE-186 System including ICE SIW packages and the iPAT system (Requires OOS 3.XX PC AT with Above Board) D86ASM86NL 86 macro assembler 86 builderlbinderl mapper utilities for OOS 3.XX. D86C86NI. 116 C compiler and run time libraries for DOS 3.XX. D86P.AS86NL 86 Pascal Compiler fur DOS 3.XX. D86PI.M86NL 86 PUM compiler for DOS 3.XX. D86fOR86NL 86 I"ortran compiler for OOS 3.XX. ICEPAT KIT iPAT Kit (performance Analysis T(xll) fol' ICE 186 ICRXONeE Adapter for on-circuit emulation ICEXLCC Adapter fur LCe component ICEXPGA Adapter for PGA component 11-93 HIGH PEIlI'OIlIfI.4NCE IlE,41.-TIIflE EIfIIJ£.4TION Inters ICE·188 emulator delivers real-tiine emulation for the 80C188 miCl'llprlK'l'ssorat Spl'l'US up to 12.5 ~IHz. The in·circuit emulator is a versatile and efficient tlXJI for dlwlolling, ul'IlUgging and testing products designed with the Intel 80C 188 microp[,(ffSsor. Thl' IC~:·188 l'mulatlJr provides real time, full spccd emulation in a user's system. Popular feutul'l'S such as symbolil' ul'hug, 21\ by\('s trace memory, and single-step p['()gram execution are standard on thl' IC~:·188 I'llIulator. Intl'l II[,(J\ iues a complete dcvclopment environment using assembler (I\SI\I86) m; \wll as higlHl'wl languages such as Intel's iC86, PLlM86. Pascal S6 and Fortran S6 to aln'll'ratl' d('wlollml'nt schedules. The ICE·1SS emulator supports a subset of the SOC 188 fl'utul'l'S at 12.5 ~lIlz and at thl' TTl, I~vel characteristics of the component. The emulatlJr is hosted on IBM's Personal Computl'r :\1 all'l'ady a\'ailable as a standard development solution in most uf tlJday's l'ngim\'ring 1'l1\ilUTllll('ntK Thl' ICE·IBB emulator operates in prototype or standalone modI'. allowing softwal'l' dewlopment and debug before a prototype system is available. l'he ICE·188 l'mulatol' is illl'ally suiu'd for d~\,l'loping real-time applications such as industrial automation, computer IIt'riphemls. mmmuniraUons, office automation. or other applications requiring the full pow!'r of the 12.5 ~1I1~ Il(K: I RR mi('roprul'l'SSlJr. ICE"'·'BB FE.4TIJIlES • Full 12.5 ~IHz Emulation Speed • 2K Frames Deep Trace Memory • Two·Level Breakpoints with Occurrence Counters • Single·Step Capability . • 12BK Bytes Zero Walt·State \Iapped Memory • Supports OKAM Kefresh • High·Level Language Support Symb~JIi(' Debug RS·232·C and GPIIl Communil'lltion I,inks Crystal PO\\\'I" i'll'l'l'ssory Intl'rfact' for Inll'l I't'rformmll\' :\nalvsis TIXJI (iPAT) • • Intl'rface for Optional GI'm'rall'urplJsc IAJgic '\nalvZl'I' • Tutlli-ial Sortwart' • Complclt' Inu'l Srrvict' ani! SnPIIlJrt. • • • • imJ----~-----------------10\1'1 (~lqKlriHilin ilSSUITI'~ nu rt'SJJllllslhllll~ fur Iht' 1!SI'ul' II~ "ITI'Ullr~ '1I.1ll'r lhan nr"ullr) l'mtIlMllt~lln ,UI Inll'II",.1I1I1. \II,lI.h,'r Iln'\l1I1~11I'11I. III'I'IIN'S .ITt' 1n111l1t~l.lnf',rnl :-'lIhl'~·IIIl'·hillij.~· '4IIIMIlR I\ulll,' ~ :-;"I'II'IIII.'I".IIIIUI II,d,'r \nmh'T ~H&lKlli 11111 lit,·; 4;ur,_tralll,n 19HH 11-94 IIIGIIEST EMIlLATlON t.,PEED A"AILAIIU'TOIMI' IlSER-FIIIENDLI' SI'MBO£lCS AID IN DEBIlG The ICE·18B emulator supports develupment and dl'bug uf lifTIf-Critical hardware and softwa['(' using Imel's 12." MHz 1l0C 1118 mic['()p['()cessor. Symbolics allow acc~ss to pl'Ogralll symbols by naml' ratlll'r than cllmtlt,rSollll' physical addn'ssl's. Symbolil' ddlllg speeds th.. dt'bugging Pl'llct'ss by rc~lul'illg rt'iiallt'l' on Illl'mory maIlS. In it tlynamil' til'\l'loplll('nl pron'ss, uSl'r I'ariabl!'s mn bl' uSI~1 as param!'ll'rs iiII' I(XIHH t"Ollullantis n'slilling in it I'OlisisU'nt tiebug I'm·ironment. RETRACE SOFl'WARE TRACN.'" This I'mulator captu['('s up tu 2,048 frallll's of Jl[,()I'I'S.~or m:tivity, including 1~lth executiun and data hus ('\11(1 \\11 II'I';S'I' The ICE·18B Emulator conSists o[ the following components: Emulator Control l nil PIJV,t'f SlJPpl~ lsl'r Pruhi' W""1r 1kIIr1r. I".~U ]H.-HI 7.!iO :170 I~.m) 1,7() 1.1:; 4.:1O 10.70 H.... n '(i;, I.GO "".,,'Ir :W.7(J IU)U 7.t)U 1\,IK'I'I\I~:RI\ ;12.tltl 27.HO Sl'tlJ]I Tinlt' 1l~1)1I. IlKI,II. S!'llIp Tinl!' II.HO l :-;('r (atilt'! Plf(, fling!' r.ahlr' 22.00 55,Htl :l.~0 8,(}0 '1~:1. \"I. -\nl'sStU-,\ -.1.:\0 10.00 .fin 1,;iO 6.7(1 17.00 1'0\\1'1' (~llilt' !UJII 2~ 2:1 l:i :l:l Li :l2 :l2 l:i Iii Ifi :11 Ii 1:-, III ,\dlll'{':-;s Flual j)t'la~ Cr~ stal PO\\I'I" c.P\ I;, I:, /lfalr, (ARIll! PHl'SlfJIIL DESfJRIPTlON liND fJH!lR!lfJTERISTlfJS "'If 'CsrliC E-'•• Iffl., 22.HO RI';,\!) C)rh's '1":1 \\ I\T'\Qt'lc':-i Tel ,\\ III.D·\ '1",1,\\ l;i 1;-) :!:-"t \1.1'; \\iilllllmin) \.I,n::m 1\111 a() II III '1;':I,.:I,:n 2;) ;,0 ,11.1,: .Irillt' Dt'lay· :(i 4~ CU,t)VT 1.0\\ III (\11) HI \I.E :\('11\"('*· \1.1': In \ I,IIJ\' Stalll!i I)d :1'\1' ~I'I' I'IJ~I 1'0IlJpil"I' i'lli' DOS :1..\\. il'\'I' ~il ti'ITJ(JI'IIIi1I1('IIel-: IHH .\II"I~sis 'Ihol) li)1' ICI-:\ONCE \d"pll'l' liw IIIH'U'I'IIII l'IIII1I"lillll ICI':\I.CC \daplt'1' Jill' I.CC Ctllltlllllll,.1i ICE\I'(;\ \dapll'l' fill' 1'(;\ t'tJIIlPIlIIt'11i t'I'IBII list'1' pl'(Illt'lo t'OtI\('I'1 ICE·IIIlllo Sllpp"rt BOCIBB ('(Ill1lltlllt'lll 11-97 IN-€IIltJIJI'I' BMIJI"tlYJIlIYJIl 'l'HB BOBfilBO I BfiIBOZBfiFAMI£t' 01' MIQlOPIlOt:BSSORS The FICE- In·Circuit Emulator is a high·performanoe. cost-effective debug environment for developing systems with the Intel 8086180186180286 family of microprocessors. With 10 MHz emulation. a window-oriented user interfaoe. and compatibility with Intei's iPA1'"' Performanoe Analysis Tool. the PICE Emulator gives you unmatched speed and control over all phases of hardware/software debug. FBA'I'IJIlBS • Emulation speeds up to 10 MHz with 8086/88. 80186/188 and 80286 microprocessors • 8087 and 80287 numeric coprocessor support • Hosted on IBM PC AT*. AT BIOS. or compatibles • ICEVlEW- window-oriented user interfaoe with pull·down menus and context·sensitive help • Source and symbol display using all Intel languages i~ • 1K frame bus and execution traoe buffer • Symbolic debugging for flexible access to memory location and program variables • Flexible breakpointing for quick problem isolation • Memory expandable to 288K with zero wait states • Worldwide servioe and support • iPAT option for software speed tuning ______~_________________ 121CE, ICEVIEW. Bnd i~T are lradcmarb II IIl\CI Col'JlDl'oIIllon. "IBM IS a trademark II lrt.emaLional Business Machines cOrp. In.Li CorporaUon assU/OOi no m!plInsiblllly for UK! If£ II an)' CII'C\lIU')' llLhcr Lhan t'lftUllly embodied in 8n IrlCl pruduct. No lllhcr circuli. patelll.lmscs are lmplkld. InformatIOn curtained herein IIUJ)CfSlXIes Ilf'CYlOUSly publl8tJcd Ilpeclfica~~ nR these dcYlalS fr.1I1l11'lC1 and IK suhllrL 10 changr. wlthlu nWec. JIlIY.I988 OrGer rtlmber: 2808()O.OO1 @htelOJrporatjoo 1988 11-98 Plate t. An example of the ICIWIEW'" user interface showing source. memory. watch. and trace. ONE TOOL FOR THE ENTIRE DEJlELOPMENT PROCESS St'MBOLIC DEBllG SPEEDS DEJlELOPMENT The 12 1CE Emulater allows hardware and software design to proceed simultaneously. SC you can develop sofLware even betbre prototype hardware is available. With 32K of zero wait-state mappable memory (and an additional 256K with optional memory boards). you can use t.he FICE Emulator to dehug at any stage of the development cycle: hardware development. software development. system integration or system test. The extensive debug symbolics generated by the Intel 8086 and 80285 assemblers and compilers can increase your development productivity. Symbolics with allWmatic formatting are available for all primitive types. regardless of whether the variables arc globals. locals (stack'resident) 01' pointers. The virtual symbol table supports all symbolies. even in very large programs. Aliasing can be used to reduce keystrokes and save time. HIGH-SPEED, REAL-'I'IME EMllLA'I'ION POWERFllL BREAK AND TRACE CAPABILlTt' FOR FAST PROBLEM ISOLATION The 121CP. f:mulator delivers full-speed. real-time emulation at spt'.:ds up to 10 MHz. Based on Intel's exclusive microprocessor technology. the 12ICE Emulator matches (,8eh chip's electrical and timing characteristics without memory or interrupt intrusions. ensuring design 3cfuracy and t'liminating surprises. Tht' performance of your prott~ype is the performance you can expect from your nnal prtKilKt. EASt'-TO-llSE ICEJlIEW'" INTERFACE The ICEVIr:W interface makes the 12ICE Emulator easy to learn and use hy providing l'8SY access to applieation information and ICI': functions. Pull·down menus and window~ boost productivity for hoth new and cxpef'it'm~'d USl'r~. Multiple on·scl't~'n wintiows allow you to access the Sl)urce display. execution trace. register. and other imporUmt information. all at the same time. You ran wau:h the information change as you modify and step through your program. You !:an even custtlmizc wilillow siw and screen positi~)Ils. The 121CE Emulator allows up to eight simultaneous bl't'akJ trace condition~ ttl be set (four execution. fOllr hus). a timesaver whtm solving hardwart'isoftware integration problems. Break and trace points can be ~et 011 speciFied line numbers. on procedurt's, 01' on symholic data ewnts. such as writing a vllI'iahle to a value or rangl' of values. You ('an hreak or traL~' on specific hardware cvmts. such as 11 read or write to a specific address. data or 1/0 port. or on a comhination of events. ltJllLTIPROCESSOR, PROTECTED MODE, AND COPROCESSOR SllPPORT lip to four 12IC~: systems can be linked Wid (xlIlll'Olit'.d simullanmusly from one PC host. enahling you to debug multipl'tlcessor systems. The 12IC~: f:mulator with an 802H£l [Irohe support.~ all 8028£l pl'tlttxttxl mode I'apabilitil:s. It also supports tht' 8087 and 80287 numeric coprocessors. II cOIllIll,mtl linl' Illter'face is also availahlt' with syntax ('hl~'killg alltil'lllltl,xt'St'lIsitivl' IlroIllPt.~. ICEVIJo:W wOl'ks with lIIolI~X'hr1mw. (X:A and tht' Im.est ~:CII ('0101' displays. 11-99 IPA.,.." f'OIl SOFTWARE ELECTIlICtU, CHAIlACTERISTlCS PERFORMANCEANDCODECO~ERAGE 90-132 V or 1Il0-2ti4 V (sel('ctabll') 47-63 liz 12 ampo (AC) ANALt'S/S The I'ICE Emulator interfaces to Int(·i's iPAT Performance Analysis Tixil for examining softw mil(' hast' 21(i IIl1stidl:lssis rahl(' 17.ll II.!', IklRhl I. na ('". ,. KitOlti(' plll0101-.1'1'I) Contl'llts 1~1(;r: system 10 Mllz HOH(i/HOHH support kit [01' IBM PC hoot. Inl'lucll'o probe. chassis. and host int1'l'fal'(' 1ll0dlll(' anti SOn.I\'lI\·. 1~ICr: syotl'1II 10 ~ll1z HO 1!Iii support plllllll-.ITIl kit lill' IIl~1 I'C host. Incilld!'o proiM', l'hasois. host illlel'fa,'!' 1II0duli' anti soll\\w'('. "I)tt·: 1'0[' Hll I HH support. till' IIIIOH optionlwlOl\' nUlSt also 11(' o('(It·I'c·d. III WI! 10 -'ll1z HOIHH support ('01l1t'l'si'H1 kit to ('011\('l't HOIBIi pl'oil(' to HOIHH pl'olll'. 1~ICr: systl'm, I 0 ~llIz H02Hti support pl1l2121-.ITIl kit lill' IB~I I'C XI' IlOot. Includc's proil('. dlassis. host int('rf,I!'I' mociuli' and son wal\·. 1110 I tlI'·\'I'CH!iIl 1~ICr: sYst('m III ~llJz HOHG/IIllHH support kit with iI'IIl' Perthrmance '\nalysis 'Ihol [01' PC :\T host. Includes !"Ief: proill'. {'hassis, hm;t intl'l'far(' module, il"\'I' toolOptiOIl, !'ailles and :-;0[(11'<1(,['. Also inrlull('s iC-Hn (,()1lIf1ili·r. Hn ~lat'ro :\ss('llIhl('I', Utilities. an(1 Ar:IlIT tnt 1~liltll'. 11111 W\TCHliIJ As al>ovl'lill' 10 Mllz 110 IIIIi sllflport. 1112121WI'CHI)IJ As al>o\1' lill' 10 Mllz H02111i sllpport. Notl': C-2Hli alld RLL·2Hll ;md M;M-2Hn llIust 1>1' o('[lc'n~1 separately. 1"ICr: I'C AT hOot software. Iliciudes ICr:VII·:W'· wintilllwd hlillHIII illt(·I-I' C AT. Thr PC AT must meet the following minimllm rt'qlliremt~nts: • 640K Bytes or Memory • Intrl Above Board with at Lt'llst 1M Byte OIl' r:xpansion Memory • Ofl(' 3601\ l3ytrs or One 1.2M llytl'S Jo'loPI)Y Disk Drive • Ofl(' 20M Ilytrs f'ixed·Disk Driv(' • PC· DOS 3.2 or LaIN • ,\ &'rial Port (mM I OIl' OlM2) Slipporting Minimally at g6m B .based target system. With iPAT·386. it is possible to speed·tune applications. optimize use of operating systems. determine response characteristics. and identify code execution coverage. . fur direct information on Intel's Development Tools. or for the number of your nearest sales office or distributor. call 800-874·6835 (U.S.). fur information or literature on additional Intel products. call 800-548·4725 (U.S. and Canada). By examining iPA'I~386 histogram and tabular information about procedure usage (with the option of including Interaction with other procedures. hardware. the operating system. or interrupt service routines) for critical functions. performance bottlenecks can be identified. With iPAT·386 code execution coverage information. the completeness of testing can be confirmed. IPAT·386 can be used in conjunction with Intel's ICr.·386'" in-circuit emulator to control test conditions. IPAT·386 provides real·time analysis up to 20M Hz. performance profiles of up to 125 partitions. and code execution coverage analysis over 252K. fjEllI'IfJE, SIJPPfJIl'l', .4ND 'I'Il.4ININ6 '1'0 augment Its development tools. Intel otTers a full array uf seminars. classes. and Workshops. field application engineering expertise. hotllne technical support. and on·site service. -- PIlOIIIJCI' SIJPPfJIlT ItI.4TIUX - ASM-386 Macro Assembler .. -- ~ ... PUM·386 C.ompilf!r ... C-386 Complier ". RLL-386 Relocation. Linkage. and Library tools ". Ada-386 CmM CrunpilaUon ". raclage Intel386 Family In-(''ircult Emulators Monl1.Or-386 Stilware Debu_ IPAT·388 l\'rfonnal1l'l' ... ". ... ... ". ... ... ... ... 3'1. II4IXIJ\tIS . ... ... ... ... ... ... ... ". .. ... ... ... ... . ... ... ... Anolyms Toul InI 7 lArrow Electronics, Inc. Perimeter Road ManChester 03103 NEW JERSEY tArrow Electronics, Inc. Four East Stow Road Unit 11 Marlton 06053 Tel: (609) 596-6000 TWX: 710-897-oS29 ~Arrow Electronics CenruryDrive ~:r:s'C8~)n13~~ tHamiiton/Avnet Electronics 1 Keystone Ave .• Bldg. 36 ~~1~~:2 tHamilton/Avnet ElectronIcs 10lndustnal Fairfield 07006 ~i~~~51i4~3:8 1MTI ~ystems Sales 7 KuliCk Rd. Fairfield 07006 Tel: (201) 227-5552 tP!oneerElectronics 45 Route 46 Pinebrook 07058 Tel: (201)575-3510 TWX: 710-734-4382 MICHIGAN NEW MEXICO Arrow Electronics, Inc. 755 Phoenix Drive Ann Arbor 48104 Tel: (313) TWX: 810-223-6020 Alliance Electronics Inc. 11030 Cochiti S.E 971-8220 Hamliton/Avnet Electronics 2215 29th Street S.E. Space AS Grand Rapids 4950S ~~~J~~~?~9~~ Pioneer Electronics 4504 Broadmoor S.E. Grand Rapids 49508 FAX: 616-698-1831 tHamilton/Avnel ElectroniCS 32467 Schoolcraft Road l.lvonia48150 Tel: (313) 522-4700 TWX: 810-282-8775 ~~~Vb~::~t~ Hamilton/Avnet Electronics 2524 Baylor Drive S.E. ~~8~~~i~ii~ NEW YORK tArrow Electronics, Inc. 3375 Brighton Henrietta Townline Rd. Rochester 14623 ~;Jn~I~~DJl6 Arrow Electronics. Inc. 20 Oser Avenue ~:I~fGla6ig;3~ ~ i8& TWX: 510-227-6623 Hamiiton/Avnet 933 Motor Parkway tPioneer Electronics 6408 Castl.&place Drive ~Hamilton/Avnet Electronics 219 Quivera Road Overland Park 66215 ~~gn:;53~:l7 ~:~~"Nf~~~~~ ~~Jrb~~~ ~P~~~~~5~~6 ~~I~ek!~~~ Drive Arrow Electronics, Inc. 25 Upton Dr. Carmel 46032 KANSAS tArrow Electronics, Inc. 400 Fairway Drive Suital02 Deerfield Beach 33441 MASSACHUSETTS 495 Directors Row. Suite H CONNEcnCUT Hamilton/Avne! Electronics Commerce Industrial Park Commerce Drive tHamilton Electro Sales 10950 W. Washington Blvd. ~1:0Sw~t~~~~J~f: ¥~P:'~ro)19BJ'-lli.t ~~nb!~J,~~ 650 Desoto Avenue Chatsworth 91311 Tel: (818)700-1161 ~~j~~~2~o,o6 tPioneerfTechnologles Group, Inc. 9100 Gaither Road Gaithersburg 20877 Tel: (301) 921-0660 TWX: 710-S28-0545 NEW HAMPSHIRE MINNESOTA tArrow Electronics, Inc, 5230 W. 73rd Street Edina 55435 ~~~~b~7°6-tr,~5 l~:oJ'~hft~a~~~~:nics Minnetonka 55434 Tel: (612) 932-0600 tPioneer Electronics 7625 Golden Trlange Dr. SuiteG Eden Pralri 55343 Tel: (612) 944-3355 MISSOURI tArrow Electronics, Inc. 2380Schuelz St. Louis 63141 Tel: (314) 567-6888 TWX: 910-764-0882 tHamiiton/Avnet Electronics 13743 Shoreline Court Earth CI~ 63045 ~314 344-1200 : 91 -762-0684 ~~CJaf~~32~is ~milton/Avnet Electronics Metro Park Rochester 14623 ~~n~;:s'..a?o t~~~~i~%~~~e6~~e;tronics Syracuse 13206 ~~~ibW,~~o tMTI Systems Sales 38 Harbor Park Drive ~1~(~~)hJ~~~~66 050 1PioneetElectro.nics 8 Corporate Dnve Blnghamton 13904 ~~n:i;2?c?8DJla Pioneer Electronics 40 Oser Avenue ~:I~fC:6)g:3~ ~~~60 ~:~i(g) 2~~~U75 33102 ~~Jr~5l=704 tMlcrocomputer System Technical Distributor Center CG/SALE/l110BB intJ DOMESTIC DISTRIBUTORS (Cont'd.) NEW YORK (Conl'd.) OKLAHOMA TEXAS (Cont'd.l WISCONSIN ~iOn&8r Arrow Electronics, Inc. ~HamiltonfAvnet ~tectronics Arrow Electronics. Inc. 200 N. Patrick Blvd., Sle. 100 Electronics Crossway Park West ~n[~\i~~and ~ioneer 11797 Electronics o Fairport Park Fairport 14450 1211 E.51stStreet Suite 101 R~~~ Stf~eoltesl ~8~~~S;2~~6 Drive ~~~~~~~~~~~:~! ~r~.p, Inc. Charlotte 28210 ~919) 527-8188 : 810-621-0366 ~;Jr~~~?l53ff3 tAlmac Electronics Corp. 1885 N.W.169th Place Beaverton 97005 Tel: (503) 629-8090 TWX: 910-467-8746 ~amilton/Avnet Electronics 24 5.w. Jean Road Bldg. C, Suite 10 ~~(5~)~~J~r TWX: 910-455-8179 Wyle Distribution Group 5250 N.E. Elam Young Parkway Suite 600 Hillsboro 97124 Tel: (503) 640-6000 TWX: 910-460-2203 OHIO PENNSYLVANIA Arrow Electronics, Inc. 7620 McEwen Road Centerville 45-459 ~~J~~i9~56~ Arrow Electronics. Inc. 650 Seco Road Monroeville 15146 Tel: (412) 85&-7000 tArrow Electronics, Inc. 6238 Cochran Road Solon 44139 Hamilton/Avnet Electronics ~~J~~4Jli:~~ Tel: tHamiltOn/Avnet Electronics 54 Senate Drive ~~J;~~~:' Hamilton/Avnet Electronics ~:e~~~:7e 1~~~am21' ~~b~~beh"5~38' (41~) 281-4150 Pioneer Electronics 259 Kappa Drive ~~~:s(~1rgh7~~~g~oo lWX: 710-795-3122 tPioneer{TechnologiesGroup.lnc. Delaware Valley 261 Gibralter Road Horsham 19044 ~~Jfb!'2~~~52 w~~n~~~~08 wamilton/Avnet Electronics TEXAS Tel: (614) 882-7004 tArrow Electronics, Inc. 3220 Commander Drive Carrollton 75006 w:s~~~s:g881Blvd. lmn~~=~'iro~~evard ~~J1~~~3~ ~~J~~~~ tArrow Electronics. Inc. 10899 Kinghurst Suite 100 Houston 77099 Dayton 45424 tPioneer Electronics 4800 E. 131 sl Street Cleveland 44105 ~~J~l&8b~2~ tZentronics B Tilbury Court Tel: (414) 784-4510 TWX: 910-262-1182 tPioneer Electronics 18260 Kramer Austin 78758 Tel: (512) 635-4000 TWX: 910-874-1323 tPioneer Electronics ~Hamilto':l/Avnet Electronics Hamilton/Avne! Electronics 2975 Moorland Road OREGON ~~r~r8~W6 Napean K2E 7lS ~:t~jb?2~~~~3 i~!~:~}~f1~d~~ ~~:~9~S 60..5929 ~J~~~ tArrow Electronics. Inc. 2227 W. Braker lane Austin 78758 Tel: (512) 835-4180 TWX: 910-874-1348 b~~!~ ~5~a Road ~~~1~3:S'i5~ tPioneer Electronics 5853 Point West Drive Houston 77036 Tel: (713) 988-5555 TWX: 910-881-1606 Wyle Distribution Group 1810 Greenville Avenue Richardson 75081 Tel: (214) 235-9953 UTAH Arrow Electronics 1946 Parkway Blvd. New Berlin 53151 CANADA ALBERTA Hamilton/Avnet ElectrOniCS 2816 21st Street N.E. ~~~:2~7~!~286 Zentronlcs ~aooNl04t~ Avenue N.E. ~:i~(~~3I~~2~~21 BRITISH COLUMBIA l~~~~on~~~~~~~onics Tel: (604) 437-8667 Zentronics ~~!~~~ ~J~~wrt Road ¥:i~ (~~i ~j~::~~9 Tel: (604) 273-5575 lWX: 04-5077-89 tHamilton/Avnet ElectroniCS 1585 West 2100 South MANITOBA i::~ (~~i ~j~_::JJ9 Zentronics 60-1313 Border Unit 60 lWX: 910-925-4018 Wyle Distribution Group 1325 West 2200 South Suite E ~j:s:~~!:eg'7f-~~g3 WASHINGTON tAlmac Electronics Corp. 14380 S.E. Eastgate Way Bellevue 98007 Tel: (206) 643-9992 lWX: 910-444-2067 ~~t(~ ~~~I~~i TWX: 05-349-71 ~~f:(.rll~) 4~~~9~ TWX: 06-97&-78 tZentronics 155 Colonnade Road Unit 17 Nepean K2E 7Kl Tel: (613) 22&-8840 Zentronics 60-1313 Border 51. ~t(~ ~~~7~~7 QUEBEC tArrow Electronics Inc. 4050 Jean Talon Quest Montreal H4P lWl ~~~6~~15~9g511 Arrow Electronics, Inc. 909 Charest Blvd. Quebec JIN 2C9 Tel: (418) 687-4231 TWX: 05-13388 Hamilton/Avnet Electronics 2795 Halpern SI. laurent H2E 7Kl ~~~J{~2~-1~ Zentronics ~~.7~~~~~~1r 1M3 ~~6~!;il.t-I500 ONTARIO Arrow Electronics. Inc. 36 Antares Dr. Nepean K2E 7W5 Tel: (613) 22&-6903 Arrow Electronics. Inc. 1093, Meyerside ~~~s(~f:lu~::::~~6~M4 TWX: 06-218213 Arrow Electronics. Inc. 19540 68th Ave. South Kent 98032 Tel: (206) 575-4420 tHamilton/Avnel Electronics 6845 Rexwood Road Units 3-4-5 t~:~il:fW~~~~tS~:~onics lWX: 6'0-492-8867 Bellevue 98005 Tel: (206) 643-3950 lWX: 910-443-2469 Hamilton/Avnet Electronics 6845 Rexwood Road Unit 6 '1"?i8J>~~i.b=ns~:~p tHamilton/Avnet Electronics 190 Colonnade Road South Tel: (613) 226-1700 r~f~jl~~~fs~n~:.~~~~or~~ : 91 ONTARIO (Cont'd.) Brookfield 53005 Tel; NORTH CAAOUNA tArrOw Electronics.lnc. 240 Greensdairy Road ~75038 14~50-6111 Tulsa 74146 Tel: (918) 252-7537 Tulsa 74146 Tel: (918) 252-7297 ~;J~~a:d3?lk~ 111 W.Walnut HJlILane ~~n~f:)uSh~~I31R2 ~~f:(~;:)u~:7~i.r2 Redmond 98052 Tel: (206) 881-1150 tHamiiton/Avnet Electronics 1807 W. Braker lane Austin 78758 Tel: (512) 637-8911 TWX: 910-874-1319 tMicrocompute1" Sy$tem Technical Distributor Center CG/SALEfl11088 inter EUROPEAN SALES OFFICES DENMARK WEST GERMANY ISRAEL SPAIN Intel Glentevej 61, 3Td Floor Intel· Dornacher Strasse 1 8016 Feldkirchen bei Muenchen Inlel FAX: 904-3948 Intel· Atidim Industrial Park-Neve Sharet P.O. Box 43202 Tel-Aviv 61430 Tel: (972) 03-498060 TLX: 371215 Intel ITALY ~!~4~ro~r:~O ~ TLX: 19567 irX~~:~g~~?90992-0 FINLAND SWEDEN 00390 Helsinki Hohenzollern Strasse 5 3000 Hannover 1 Tel: (49) 0511/344081 Tel: (358) 0 544 644 TLX: 9-23625 Inlel' Milanofiori Palazzo E 20090 Assago Milano Intel Abraham Lincoln Strasse 16-18 it:~~1~~~ 8244071 6200 Wiesbaden Tel: (49) 06121/7605-0 NETHERLANDS Intel RuosUanlie2 Tl.X: 123332 FRANCE Intel '. Rue Edison-BP 303 TLX: 4_186183 78054 51. Quentin-en·Yvelines Cedex ~~~~9~~ ~O 57 70 00 Intel Inlel· ~lli~~1fiflg8728-0 4, Quai des Etroits 69321 Lyon Cedex 05 Zurbaran,28 28010 Madrid Tel: (34) 410 40 04 TLX: 46880 Inlel' Zettachring IDA i~~~1M~~! 78424089 Intel' ~7\V~~esof~a Tel: (46) 8 734 01 00 TLX: 12261 SWITZERLAND Intel Zuerichstrasse 8185 Winkel·Rueli bel Zuerich ~6~eAVM~~~:~a~3 it::(~~5~VrO 62 62 Tel: (31) 10.407.11.11 TLX: 22283 UNITED KINGDOM NORWAY Intel' Intel Hvamveien 4·PO Box 92 2013 Skjetten i~f~~o(fh 842 420 ~~~Jo~.a~iltShire SN3 lRJ i~~~~~m 696000 EUROPEAN DISTRIBUTORS / REPRESENTATIVES AUSTRIA WEST GERMANY NETHERLANDS UNITED KINGDOM Bacher Electronics G,m.b.H. AOlenm,uehlgasse 26 1120Wlen i~~~W1W~i2) 83 56 46-0 Electronic 2000 AG Koning en Hartman Accent Electronic Components ltd. Jubilee House. Jubilee Road Letchworth, Herts SG6 tTL BELGIUM Inelco Belgium SA Av. des Croix de Guerra 94 1120 Bruxelles ?f;boa~~~~~tenlaan, 94 ~l:,~~~':n~~~~ 1~ i~f~6~g2) ITT Multikomponent GmbH Postiach 1265 Bahnhofstrasse 44 NORWAY ~~~hw~~~~at~lt~~ms Nordisk Eleklronikk (Norge) A/S Postboks 123 Smedsvingen 4 1364 Hvalstad i~:(WJ1ll) 84 62 10 Western Road Bracknell RG121RW ~~~(W!~~~i£S79 Jermyn GmbH 1m Dachsstueck 9 DENMARK t TLX: 415257-0 i~~~ !Wl 45 66 45 ~~~~ 4~i:tj 1508·0 PORTUGAL ~o:,~i~~;~~~!~e.,~9 Ditram Avenida Marques de Tomar, 46-A 1000 Lisboa Tel: (351)(1) 73 48 34 TLX: 14182 Tel: (49) 089[78042-0 TL.X: 5213189 SPAIN Metrologie GmbH FINLAND OY Fintronic AB Melkonkatu 24A 00210 Helsinki i::i~~~2~k 6926022 Proelectron Vertriebs GmbH Max Planck Strasse 1-3 6072 Dreieich Tel: (49) 06103/3040 TLX: 417903 IRELAND FRANCE Generim Z.A. de Courtaboeuf Av. de la Baltiqu&-BP 88 91943 Les Ulis Codex m~W,9!.\'9 07 7. 7. Micro Marketing Ltd. Glenageary Office Park Glenageary Co. Dublin Tel: (21) (353) (01) 85 63 25 TLX: 31584 ISRAEL ~3~rrl.ntue des Solels SiUc 585 94663 Rungis Cedex i~~~~:5 60 04 00 ~:~~°ci?K!~ieres 4, avo Laurent--Cely 92606 Asnieres Cedex Tet: (33) (1) 47 90 62 40 TLX: 611448 Tekelec·Airtronic Rue Carle Vernel • BP 2 92315 Savres Cedex i~:(~J.lJU5 34 75 35 686666 i~~1~2~~/42oo1'0 i~r~~o/~) 216 01 60 ITT-Multikomponenl Naverland 29 2600 Gloslrup 16~7e~~eo~ Tel: (31) 15609906 TLX: 38250 Eastronics Ltd. 11 Rozanis Street P.O.B.393OO Tel·Aviv 61392 Tel: (972) 03-475151 TLX: 33638 ITALY Intesl Divisione In Industries GmbH Viale Milanofiori Palazzo 20090 Assago Milano E/5 i~~~~)I~~1824701 t~f! ~~I~rg~;:t~f2~' ATC Electronica, SA Plaza Ciudad de Viena, 6 28040 Madrid i~:(~i7~ 40 00 ITT-SESA ~:~~oMjlad~\:ngel, 21-3 i~!~;4~~9 09 57 SWEDEN Nordisk Elektronik AB Huvudstagatan 1 Box 1409 171 27 Solna i~~~~50t734 97 70 iEif~7~ogr) 55333 Jermyn Vestry Estate OtfOfd Road Sevenoaks Kent TN14 5EU i~~t~I~I32) 450144 MMD Unit 8 Southview Park Caversham Reading . Berkshire RG4 OAF i~t~~Mgx:,) 4816 66 Rapid Silicon Rapid House Denmark Street High Wycombe, Buckl~hamshlre HP11 2ER Tel: (44 (0494) 442266 TLX: 7931 Rapid Systems Rapid House Denmark Street High Wycombe Bucki~hamShir& i~~44 7~r) HP11 2ER 450244 YUGOSLAVIA SWITZERLAND Industrade A.G. Hertistrasse 31 8304 Wallisellen Tel: (41) (801) 83 05 04 0 TLX: 56788 Rapido Electronic Components S.p.a. Via C. Beccaria. 8 34133 Trieste Italia i~~~%.t~f360555 TURKEY EMPA Electronic Lindwurmstrasse 95A 8000 Muenchen 2 i~!~~8~~W53 80 570 20092 Cinisello Balsamo Milano i~~~2~~440012 'Field Application Location CGfSALE/111088 inter INTERNATIONAL SALES OFFICES AUSTRALIA JAPAN JAPAN (Cont'd_) KOREA Intel Australia Ply. Ltd.' Intel Japan K.K. 5-6 Tokedal, Tsukuba·shi ~R~~:~~!~~~~9i Bldg. Crows Nest, NSW, 2065 Tel: 029747-8511 Tel: (2) 957-2744 TLX: AA 20097 FAX: (2}923-2632 TL.X:3656-160 FAX: 029747-8450 Intel Technology Asia, Ltd. Business Center 16th FlOor 61. YOi
Source Exif Data:File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.6 Linearized : No Create Date : 2016:06:28 10:13:48-08:00 Modify Date : 2016:06:28 11:22:26-07:00 XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19 Metadata Date : 2016:06:28 11:22:26-07:00 Producer : Adobe Acrobat 9.0 Paper Capture Plug-in Format : application/pdf Document ID : uuid:a31bc73f-aff3-8f40-8451-137fb1738c04 Instance ID : uuid:ca528ff2-dc37-ce41-b51c-fdfab6eb4fe8 Page Layout : SinglePage Page Mode : UseNone Page Count : 1137EXIF Metadata provided by EXIF.tools