1988_National_Series_32000_Microprocessors_Databook 1988 National Series 32000 Microprocessors Databook
User Manual: 1988_National_Series_32000_Microprocessors_Databook
Open the PDF directly: View PDF .
Page Count: 1072
Download | |
Open PDF In Browser | View PDF |
~ National ~ Semiconductor 400093 Rev. 1 MICROPROCESSOR DATABOOK • Series 32000 • NSC800 1988 Edition Series 32000 Overview CPU-Central Processing Units Slave Processors Peripherals Board Level Family Development Tools Software Support Application Notes NSC800 Family Physical Dimensions! Appendices iii III •II• II II II II II III TRADEMARKS Following is the most current list of National Semiconductor Corporation's trademarks and registered trademarks. Abuseable™ AnadigTM ANS-R-TRANTM APPSTM Auto-Chem Deflasher™ BCPTM BI-FETTM BI-FET IITM BI-L1NETM BIPLANTM BLCTM BLXTM Brite-LiteTM BTLTM CheckTrackTM CIMTM CIMBUSTM Clock....-ChekTM COM BOTM COMBO ITM COMBO IITM COPSTM microcontrollers Datachecker® DENSPAKTM DIBTM Digitalker® DISCERNTM DISTILLTM DNR® DPVMTM ELSTARTM E-Z-L1NKTM FACTTM FASTTM 5-Star ServiceTM GAL® GENIXTM GNXTM HEX 3000TM HPCTM ICMTM INFOCHEXTM Integral ISETM IntelisplayTM ISETM ISEI06™ ISE/08TM ISEI16™ ISE32™ KeyScan™ LMCMOSTM M2CMOSTM Macrobus™ MacrocomponentTM Meat....-ChekTM Microbus™ data bus MICRO-DACTM /Jotalker™ Microtalker™ MICROWIRETM MICROWIRE/PLUSTM MOLETM MSTTM Naked-8TM National® NAX800™ Nitride PIUS™ Nitride Plus Oxide™ NMLTM NOBUSTM NSC800™ NSX-16TM NS-XC-16TM NURAMTM OXISSTM p2CMOSTM Perfect WatchTM Pharma....-ChekTM PLANTM PMPTM Polycraft™ POSitalker™ Power & Control™ QUAD3000TM QUIKLOOKTM RATTM RTX16TM SABRTM Script....-Chek™ SCXTM SERIES/800TM Series 3000™ Series 32000® Shelf.....Chek™ SPIRETM STARTM StarlinkTM STARPLEXTM STARPLEX IITM SuperChipTM SuperScript™ SYS32TM TapePak® TDSTM TeleGate™ The National Anthem® Time.....ChekTM TINATM TLCTM Trapezoidal™ TRI-CODETM TRI-POLYTM TRI-SAFETM TRI-STATE® TURBOTRANSCEIVERTM VIPTM VR32TM WATCHDOGTM XMOSTM XPUTM Z STARTM 883B/RETSTM 883S/RETSTM Postscript™ is a trademark of Adobe Systems Inc. CCS-Page™ is trademark of Control-C Software Inc. Laserjet™ and PCLTM are trademarks of Hewlett Packard VERDIX and VADS are trademarks of the VERDIX Corporation UNIX® and DWB are registered trademarks of AT&T. IBM® is a registered trademark and IBM-PC, XT and ATTM are trademarks of International Business Machines Corporation VisiCalc is a trademark of Visi Corporation VAXTM, VMSTM, DECTM, PDP-11 TM, RSX-11TM are trademarks of Digital Equipment Corporation CP/MTM is a trademark of Digital Research Corporation Z80® is a registered 'trademark of Zilog Corporation MULTIBUS® is a registered trademark of Intel Corporation Model 19TM is a trademark of DATA I/O Corporation VRTX®, 10X®, FMX® are registered trademarks of Hunter & Ready Corporation TRACERTM is a trademark of Hunter & Ready Corporation PAL® and PALASMTM are trademarks of and are used under license from Monolithic Memories, Inc. OpUS5™ is a trademark of Opus Systems LIFE SUPPORT POLICY NATIONAL'S PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFE SUPPORT DEVICES OR SYSTEMS WITHOUT THE EXPRESS WRITTEN APPROVAL OF THE PRESIDENT OF NATIONAL SEMICONDUCTOR CORPORATION. As used herein: - 1. Life support devices or systems are devices or systems which, (a) are intended for surgical implant into the body, or (b) support or sustain life, and whose failure to perform, when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in a significant injury to the user. 2. A critical component is any component of a life support device or system whose failure to perform can be reasonably expected to cause the failure of the life support device or system, or to affect its safety or effectiveness. National Semiconductor Corporation 2900 Semiconductor Drive, P.O. Box 58090, Santa Clara, California 95052-8090 (408) 721-5000 TWX (910) 339-9240 National does not assume any responsibility for use of any circuitry described, no circuit patent licenses are implied, and National reserves the right, at any time without notice, to change said circuitry or specifications. iv '"tJ (; Co c ~NatiOnal --o·s· n Semiconductor en I» C Product Status Definitions C/l C (I) ;:; ::l Definition of Terms C/l Data Sheet Identification Product Status Advance Information Formative or In Design This data sheet contains the design specifications for product development. Specifications may change in any manner without notice. Definition Preliminary First Production This data sheet contains preliminary data, and supplementary data will be published at a later date. National Semiconductor Corporation reserves the right to make changes at any time without notice in order to improve design and supply the best possible product. No Identification Noted Full Production This data sheet contains final specifications. National Semiconductor Corporation reserves the right to make changes at any time without notice in order to improve design and supply the best possible product. National Semiconductor Corporation reserves the right to make changes without further notice to any products herein to improve reliability, function or design. National does not assume any liability arising out of the application or use of any product or circuit described herein; neither does it convey any license under its patent rights, nor the rights of others. v Table of Contents Alphanumeric Index .......................................................... . viii Section 1 Series 32000 Overview Introduction ................................................................. . Key Features of Series 32000 ................................................. . Series 32000 Component Descriptions ......................................... . Hardware Chart ............................................................. . Systems and Software Chart .................................................. . Support Devices ............................................................. . Military Aerospace Program ................................................... . Series 32000 Programs and Services .......................................... . 1-3 1-4 1-5 1-6 1-7 1-8 1-9 1-12 Section 2 CPU-Central Processing Units NS32532-20, NS32532-25, NS32532-30 High-Performance 32-Bit Microprocessors .. . NS32332-10, NS32332-15 32-Bit Advanced Microprocessor ...................... . NS32C032-10, NS32C032-15 High-Performance Microprocessors ................. . NS32032-10 High-Performance Microprocessor ................................. . NS32CG16-10, NS32CG16-15 High-Performance Printer/Display Processor ........ . NS32C016-10, NS32C016-15 High-Performance Microprocessors ................. . NS32016-10 High-Performance Microprocessor ................................. . NS32008-10 High-Performance 8-Bit Microprocessor ............................ . 2-3 2-94 2-168 2-233 2-298 2-299 2-363 2-427 Section 3 Slave Processors NS32382-10, NS32382-15 Memory Management Units (MMU) .................... . NS32082-10 Memory Management Unit (MMU) ................................. . NS32381-15, NS32381-20 Floating-Point Units .................................. . NS32081-10, NS32081-15 Floating-Point Units .................................. . NS32580-20, NS32580-25, NS32580-30 Floating-Point Controllers ................ . 3-3 3-42 3-81 3-111 3-128 Section 4 Peripherals NS32C201-10, NS32C201-15 Timing Control Units .............................. . NS32202-10 Interrupt Control Unit ............................................. . NS32203-10 Direct Memory Access Controller (DMAC) ........................... . 4-3 4-25 4-50 Section 5 Board Level Products VME532 High Performance 32-Bit CPU VME Board with Cache, Memory Management and Floating Point ......................................................... . DB332-PLUS Development Board ............................................. . DB32000 Development Board ................................................. . DB32016 Development Board ................................................. . 5-3 5-6 5-10 5-15 Section 6 Development Systems and Tools SYS32/30 PC-Add-In Development Package .................................... . SYS32/20 PC Add-In Development Package .................................... . ISE32 NS32032 In-System Emulator ........................................... . SPLICE Development Tool ................................................... . 6-3 6-9 6-12 6-21 Section 7 Software Support Series 32000 GENIX Native and Cross-Support (GNX) Language Tools (Release 2) .. . Series 32000 Ada Cross-Development System for SYS32/20 Host ................. . Series 32000 Ada Cross-Development System for VAXIVMS Host ................. . GENIX V.3 Operating System ................................................. . Series 32000 Real-Time Software Components VRTX, lOX, FMX and TRACER ...... . Series 32000 EXEC ROMabie Real-Time Multitasking Executive ................... . 7-3 7-7 7-11 7-16 7-19 7-39 Section 8 Application Notes AB-26 Instruction Execution Times of FPU NS32081 Considered for Stand-Alone Configurations ................................... . . . . . . . . . . . . . . . . . . . . . . . . . . vi 8-3 Table of Contents (Continued) Section 8 Application Notes (Continued) AB-27 Use of the NS32332 with the NS32082 and the NS32201 . . . . . . . . . . . . . . . . . . . . AN-383 Interfacing the NS32081 as a Floating-Point Peripheral. . . . . . . . . . . . . . . . . . . . . AN-404 10 MHz, No Wait States NS32016 System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AN-405 Using Dynamic RAM with Series 32000 CPUs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AN-406 Interfacing the Series 32000 CPUs to the MULTIBUS ...................... AN-464 Effects of NS32082 Memory Management Unit on Processor Through Put. . . . AN-513 Interfacing Memory to the NS32532 ..................................... AN-524 Introduction to Bresenham's Line Algorithm Using the SBIT Instruction; Series 32000 Note 5 .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AN-526 Block Move Optimization Techniques; Series 32000 Graphics Note 2 ........ AN-527 Clearing Memory with the 32000; Series 32000 Graphics Note 3 . . . . . . . . . . . . . AN-528 Image Rotation Algorithm; Series 32000 Graphics Note 4 . . . . . . . . . . . . . . . . . . . AN-529 80 x 86 to Series 32000 Translation; Series 32000 Graphics Note 6 . . . . . . . . . . AN-530 Bit Mirror Routine; Series 32000 Graphics Note 7 . . . . . . . . . . . . . . . . . . . . . . . . . . Section 9 NSC800 NSC800 High-Performance Low-Power CMOS Microprocessor. . . . . . . . . . . . . . . . . . . . . NSC810A RAM-I/O-Timer..................................................... NSC831 Parallel 1/0 .. ... .. . . .... .. . .. .. .. . ... . .. .. . . . .. ... .. .. . ... .. .. .. .... . NSC888 NSC800 Evaluation Board.. . .. . . .. .. .. . .. .. . . . .. .. ... .. .. .. .. . ... .... . Comparison Study NSC800 vs. 8085/80C85/Z80/Z80 CMOS.. .... ... . ... .... .... . Software Comparison NSC800 vs. 8085, Z80 .................................... Section 10 Physical Dimensionsl Appendices Glossary of Terms. ... . .... . . ... . ... .. . . .. .. .. . .. .. . . . .. ..... .. .. . . .. . ... .... . Physical Dimensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bookshelf Distributors vii 8-4 8-6 8-14 8-25 8-32 8-37 8-41 8-67 8-77 8-80 8-84 8-93 8-99 9-3 9-76 9-97 9-111 9-115 9-118 10-3 10-10 Alpha-Numeric Index AB-26 Instruction Execution Times of FPU NS32081 Considered for Stand-Alone Configurations ..... 8-3 AB-27 Use of the NS32332 with the NS32082 and the NS32201 ................................. 8-4 AN-383 Interfacing the NS32081 as a Floating-Point Peripheral .................................. 8-6 AN-404 10 MHz, No Wait States NS32016 System ............................................ 8-14 AN-405 Using Dynamic RAM with Series 32000 CPUs ......................................... 8-25 AN-406 Interfacing the Series 32000 CPUs to the MULTIBUS .................................. 8-32 AN-464 Effects of NS32082 Memory Management Unit on Processor Through Put ................ 8-37 AN-513 Interfacing Memory to the NS32532 ................................................. 8-41 AN-524 Introduction to Bresenham's Line Algorithm Using the SBIT Instruction; Series 32000 Note 5 .................................................................... 8-67 AN-526 Block Move Optimization Techniques; Series 32000 Graphics Note 2 .................... 8-77 AN-527 Clearing Memory with the 32000; Series 32000 Graphics Note 3 ......................... 8-80 AN-528 Image Rotation Algorithm; Series 32000 Graphics Note 4 ............................... 8-84 AN-529 80 x 86 to Series 32000 Translation; Series 32000 Graphics Note 6 ...................... 8-93 AN-530 Bit Mirror Routine; Series 32000 Graphics Note 7 ...................................... 8-99 Comparison Study NSC800 vs. 8085/80C85/Z80/Z80 CMOS ................................ 9-115 DB332-PLUS Development Board ........................................................... 5-6 DB32000 Development Board .............................................................. 5-10 DB32016 Development Board .............................................................. 5-15 GENIX V.3 Operating System .............................................................. 7-16 ISE32 NS32032 In-System Emulator ........................................................ 6-12 NS32C016-10 High-Performance Microprocessor ........................................... 2-299 NS32C016-15 High-Performance Microprocessor ........................................... 2-299 NS32C032-10 High-Performance Microprocessor ........................................... 2-168 NS32C032-15 High-Performance Microprocessor ........................................... 2-168 NS32C201-10 Timing Control Unit ........................................................... 4-3 NS32C201-15 Timing Control Unit ........................................................... 4-3 NS32CG16-10 High-Performance Printer/Display Processor .................................. 2-298 NS32CG16-15 High-Performance Printer/Display Processor .................................. 2-298 NS32008-10 High-Performance 8-Bit Microprocessor ........................................ 2-427 NS32016-10 High-Performance Microprocessor ............................................. 2-363 NS32032-10 High-Performance Microprocessor ............................................. 2-233 NS32081-10 Floating-Point Unit ........................................................... 3-111 NS32081-15 Floating-Point Unit ........................................................... 3-111 NS32082-10 Memory Management Unit (MMU) .............................................. 3-42 NS32202-10 Interrupt Control Unit .......................................................... 4-25 NS32203-1 0 Direct Memory Access Controller (DMAC) ........................................ 4-50 NS32332-10 32-Bit Advanced Microprocessor ............................................... 2-94 NS32332-15 32-Bit Advanced Microprocessor ............................................... 2-94 NS32381-15 Floating-Point Unit ............................................................ 3-81 NS32381-20 Floating-Point Unit ............................................................ 3-81 NS32382-10 Memory Management Unit (MMU) ............................................... 3-3 NS32382-15 Memory Management Unit (MMU) ............................................... 3-3 NS32532-20 High-Performance 32-Bit Microprocessor ......................................... 2-3 NS32532-25 High-Performance 32-Bit Microprocessor ......................................... 2-3 NS32532-30 High-Performance 32-Bit Microprocessor ......................................... 2-3 NS32580-20 Floating-Point Controller ...................................................... 3-128 NS32580-25 Floating-Point Controller ...................................................... 3-128 NS32580-30 Floating-Point Controller ...................................................... 3-128 NSC800 High-Performance Low-Power CMOS Microprocessor .................................. 9-3 NSC810A RAM-IIO-Timer ................................................................. 9-76 viii Alpha-Numeric Index(continUed) NSC831 Parallel 1/0 ...................................................................... 9-97 NSC888 NSC800 Evaluation Board ........................................................ 9-111 Series 32000 Ada Cross-Development System for SYS32/20 Host ............................... 7-7 Series 32000 Ada Cross-Development System for VAXIVMS Host .............................. 7-11 Series 32000 EXEC ROMabie Real-Time Multitasking Executive ................................ 7-39 Series 32000 GENIX Native and Cross-Support (GNX) Language Tools (Release 2) ................ 7-3 Series 32000 Real-Time Software Components VRTX, lOX, FMX and TRACER ................... 7-19 Software Comparison NSC800 vs. 8085, Z80 ............................................... 9-118 SPLICE Development Tool ................................................................ 6-21 SYS32/20 PC Add-In Development Package .................................................. 6-9 SYS32/30 PC-Add-In Development Package .................................................. 6-3 VME532 High Performance 32-Bit CPU VME Board with Cache, Memory Management and Floating Point ........................................................................... 5-3 ix Section 1 Series 32000 Overview • Section 1 Contents Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Key Features of Series 32000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Series 32000 Component Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hardware Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systems and Software Chart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . Support Devices ................................................................... Military Aerospace Program. . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . Series 32000 Programs and Services ................................................. 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-9 1-12 Introduction Series 32000 offers the most complete solution to your 32-bit microprocessor needs via CPUs, slave processors, system peripherals, evaluation/ development tools and software. We at National Semiconductor firmly believe that it takes a total family of microprocessors to effectively meet the needs of a system designer. This Series 32000 Databook presents technical descriptions of Series 320008-, 16- and 32-bit microprocessors, slave processors, peripherals, software and development tools. It is designed to be updated frequently so that our customers can have the latest technical information on the Series 32000. Series 32000 leads the way in state-of-the-art microprocessor designs because of its advanced architecture, which includes: • 32-Bit Architecture • Demand Paged Virtual Memory • Fast Floating-Point Capability • High-Level Language Support • Symmetrical Architecture When we at National Semiconductor began the design of the Series 32000 microprocessor family, we decided to take a radical departure from popular trends in architectural deSign that dated back more than a decade. We chose to take the time to design it properly. Working from the top down, we analyzed the issues and anticipated the computing needs of the 80's and 90's. The result is an advanced and efficient family of microprocessor hardware and software products. Clearly, software productivity has become a major issue in computerrelated product development. In microprocessor-based systems this issue centers around the capability of the microprocessor to maximize the utility of software relative to shorter development cycles, improved software reliability and extended software life cycles. In short, the degree to which the microprocessor can maximize software utility directly affects the cost of a product, its reliability, and time to market. It also affects future software modification for product enhancement or rapid advances in hardware technology. Our approach has been to define an architecture addressing these software issues most effectively. Series 32000 combines 32-bit performance with efficient management of large address space. It facilitates high-level language program development and efficient instruction execution. Floating-point is integrated into the architecture. This combination gives the user large system computing power at two orders of magnitude less cost. But we didn't stop there. Advanced architecture isn't enough. Our topdown approach includes the hardware, software, and development support products necessary for your design. The evaluation board, insystem emulator, software development tools, including a VAX-11 cross-software package, and third party software are also available now for your evaluation and development. The Series 32000 is a solid foundation from which National Semiconductor can build solutions for your future designs while satisfying your needs today. For further information please contact your local sales office. 1-3 • ~National ~ Semiconductor Key Features of Series 32000® Some of the features that set the Series 32000 family apart as the best choice for 32-bit designs are as follows: FLOATING-POINT SUPPORT The Series 32000 offers a complete set of floating-point solutions. This includes the NS32081 Floating-Point Unit, the NS32381 Floating-Point Unit and the NS32580 FloatingPoint Controller. The NS32081 provides high-speed arithmetic computation with high preCision and accuracy at low cost. The NS32381 provides low power consumption and even greater performance than the NS32081 while maintaining high-precision and accuracy. The NS32580 is a floating-point controller that provides a direct interface between the Weitek WTL 3164 FloatingPoint Data Path and the NS32532 CPU. This two chip combination, NS32580/WTL3164, provides optimum performance for speed critical floating-point applications. FAMILY OF MICROPROCESSOR CHIP SETS Series 32000 is more than just a single chip set, it is a family of chip sets. By mixing and matching Series 32000 CPUs with compatible slave processors and support chips, a system designer has an unprecedented degree of flexibility in matching price/performance to the end product. CLEANEST 32-BIT SUPER MINI COMPUTER ARCHITECTURE Series 32000 was designed around a 32-bit architecture from the beginning. It has a fully symmetrical instruction set so that all addressing modes and all data types can be operated on by all instructions. This makes it easy to learn the architecture, easy to program in assembly language, and easy to write code-efficient, high-level language compilers. OPERATING SYSTEM SUPPORT Series 32000 features such as hardware support for Demand-Paged Virtual memory management, user software protection and modular programming make it much easier to implement powerful, reliable and efficient operating systems. These features along with its symmetrical architecture and powerful instruction set make the Series 32000 the most efficient and highest performance UNIX engine. DEMAND-PAGED VIRTUAL MEMORY MANAGEMENT Series 32000 provides hardware support for Demand-Paged Virtual Memory Management. This allows use of low-cost disk storage to increase the apparent size of main memory, and is an efficient method of managing very large address spaces. It is also the same popular memory management method used by DEC and IBM in their minicomputers and mainframes. HIGH· LEVEL LANGUAGE SUPPORT Series 32000 has special features that support high-level languages, thus improving software productivity and reducing development costs. For example, there are special instructions that help the compiler deal with structured data types such as Arrays, Strings, Records, and Stacks. Also, modular programming is supported by special hardware registers, software instructions, an external addressing mode, and architecturally supported link tables. APPLICATION·SPECIFIC SLAVE PROCESSORS Series 32000 architecture allows users to deSign their own application-specific slave processors to interface with the existing chip set. These processors can be used to increase the overall system performance by accelerating customized CPU instructions that would otherwise be implemented in software. At the same time, software compatibility is maintained, i.e., it is always possible to substitute lower-cost software modules in place of the slave processor. 1-4 en (I) ::lI, ~NatiOnal (I) UI Semiconductor Co) N o o o o o Series 32000® Component Descriptions 3 't:J o ::lI (I) ::lI Bus Width Device Description C External Internal Process Address Data Package Type (I) UI n ..,. - -6' 0' CENTRAL PROCESSING UNITS (CPU's) NS32532 High-Performance 32-Bit Microprocessor 32 32 32 M2CMOS 175-pin PGA NS32332 32-Bit Advanced Microprocessor 32 32 32 XMOS (NMOS) 84-pin PGA NS32C032 High-Performance Microprocessor 32 24 32 CMOS 68-pin LCC Leadless Chip Carrier NS32032 High-Performance Microprocessor 32 24 32 XMOS (NMOS) 68-pin LCC Leadless Chip Carrier NS32C016 High-Performance Microprocessor 32 24 16 CMOS 48-pin DIP Dual-In-Line Package NS32016 High-Performance Microprocessor 32 24 16 XMOS (NMOS) 48-pin DIP Dual-In-Line Package NS32008 High Performance 8-Bit Microprocessor 32 24 8 XMOS (NMOS) 48-pin DIP Dual-In-Line Package NS32CG16 High Performance PrinterIDisplay Processor 32 24 16 CMOS 68-pinPCC SLAVE PROCESSORS NS32382 Memory Management Unit 32 32 32 XMOS (NMOS) PGA NS32082 Memory Management Unit 32 24 16 XMOS (NMOS) 48-pin DIP Package NS32081 Floating-Point Unit 64 - 16 XMOS 24-pin DIP Dual-In-Line Package NS32381 Floating-Point Unit 64 CMOS 68-pin PGA Floating-Point Controller 64 - 16 NS32580 16or32 CMOS 172-pin PGA CMOS 24-pin DIP Dual-In-Line Package PERIPHERALS NS32C201 CMOS Timing Control Unit - - - NS32202 Interrupt Control Unit 32 - 16 XMOS (NMOS) 40-pin DIP Dual-In-Line Package NS32203 Direct Memory Access Controller - - 16 XMOS (NMOS) 48-pin DIP Dual-In-Line Package 1-5 ::lI UI • ~National ~ Semiconductor Hardware Chart PROCESSORS SLAVE PROCESSORS PERIPHERALS NS32C032 CMOS NS32032 NS32C016 CMOS NS32016 NS32081 Flce.tIng Point Unft NSI6450 UART with nrc NS32580 with Wll3164 Floating Point Controller CUSTOM TL/XX/OOB4-1 1-6 ,--------------------------------------------------------------------------, 0 ~ ~National CD 3 ~ Semiconductor UI I» ::::I C. o Systems and Software Chart BOARD LEVEL PRODUCTS EI.lULATORS SOFlWARE 2- in; o:::T ...I» HOST DEVELOPI.lENT ENVIRONI.lENTS COI.lPILERS FOR C, PASCAL, I.lODULA-2, FORTRAN, ADA REAL TII.lE OPERATING SYSTEI.lS VRTX TM, EXEC TL/XX/0083-1 1-7 • -... ca .c 0 rn CI) Support Devices Chart SUPPORT DEVICES U os; CI) Q 1: 0 Do Do :::lI rn DP8455 Disk Daia Synchronizer DP8390 LAN Interface Controller DP8461 Disk Data Separator DP8391 Serial Network Interface DP8462 Disk Daia Synchronizer For 27 RLL Code DP8392 COAX Transceiver Interface DP84648 Disk Pulse Detector DP8465 Disk Daia Separator DP8466 Disk Daia Controller DP8468 Pulse Detector And Embedded Servo BIT-MAPPED GRAPHICS DP8470 Floppy Daia Separator II: Write Precom ensatlon DP8472/74 Floppy Disk ComrrJIIer/ Data Se arator TLIXXIOlll-l 1·8 ~ s= -<........ » ... o ~National ~ Semiconductor CI) MilitaryI Aerospace Programs from National Semiconductor til 'a I» n CI) -a o CCI iil This section is intended to provide a brief overview of military products available from National Semiconductor. For further information, refer to our t 986 Reliability Handbook which is expected to be available by mid t 986. MIL-STD-883 Although originally intended to establish uniform test methods and procedures, MIL-STD-883 has also become the general specification for non-JAN military product. Revision C of this document defines minimum requirements for a device to be marked and advertised as 883-compliant. Included are design and construction criteria, documentation controls, electrical and mechanical screening requirements, and quality control procedures. Details can be found in paragraph 1.2.1 of MIL-STD-883. MIL-M-38510 The MIL-M-38510 Program, which is sometimes called the JAN IC Program, is administered by the Defense Electronics Supply Center (DESC). The purpose of this program is to provide the military community with standardized products that have been manufactured and screened to governmentcontrolled specifications in government certified facilities. All 3851 0 manufacturers must be formally qualified and their products listed on DESC's Qualified Products List (QPL) before devices can be marked and shipped as JAN products. There are two processing levels specified within MIL-M38510: Classes Sand B. Class S is typically specified for space flight applications, while Class B is used for aircraft and ground systems. National is a major supplier of both classes of devices. Screening requirements are outlined in Table III. Tables I and II explain the JAN device marking system. National offers both 883 Class Band 883 Class S product. The screening requirements for both classes of product are outlined in Table III. As with DESC specifications, a manufacturer is allowed to use his standard electrical tests provided that all critical parameters are tested. Also, the electrical test parameters, test conditions, test limits, and test temperatures must be clearly documented. At National Semiconductor, this information is available via our RETS (Reliability Electrical Test Specification) program. The RETS document is a complete description of the electrical tests performed and is controlled by our QA department. Individual copies are available upon request. Some of National's older products are not completely compliant with MIL-STD-883, but are still required for use in military systems. These devices are screened to the same stringent requirements as 883 product but are marked "-Mil". Copies of MIL-M-38510, the QPL, and other related documents may be obtained from: Naval Publications and Forms Center 5801 Tabor Avenue Philadelphia, PA 19120 (212) 697-2179 DESC Specifications Military Screening Program (MSP) DESC specifications are issued to provide standardized versions of devices which are not yet available as JAN product. MIL-STD-883 Class B screening is coupled with tightly controlled electrical specifications which have been written to allow a manufacturer to use his standard electrical tests. A current listing of National's DESC specification offerings can be obtained from our franchised distributors, sales representatives, or DESC. DESC is located in Dayton, Ohio. National's Military Screening Program was developed to make screened versions of advanced products such as gate arrays and microprocessors available more quickly than is possible for JAN and 883 devices. Through this program, screened product is made available for prototypes and brassboards prior to or during the JAN or 883 qualification activities. MSP products receive the 100% screening of Table III, but are not subjected to group C and D quality conformance testing. Other criteria such as electrical testing and temperature range will vary depending upon individual device status and capability. 1-9 -o 3 til 3 z a c)' ::J !!!. en CI) 3 (;" o ::J a.. c 2o ... III TABLE I. The MIL-M-38510 Part Marking TABLE II. JAN Package Codes C'- JM38!1 ~ O/XXXXXYVY 38510 Package Designation A= Solder Dipped B=Tin Plate C = Gold Plate X= Any lead finish above is acceptable Dovlce Package (see Table III) '-- Screening Lovel S, B, or C '--- Dovice Number on Slash Sheet ' - - - - Slash Sheet Number For radiation hard devices this slash is replaced by the Radiation Hardness Assurance Designator (M, D, R, or H per paragraph 3.4.1.3 of MIL-M38510) MIL-M-38510 JAN Prefix (which may be applied only to a fully conformant device per paragraphs 3.6.2.1 and 3.6.7 of MIL-M-38510) A B C D E F G H I J K L M N P Q R S T U V W BllK1S-l X y Z 2 3 Microcircuit Industry Description 14-pin 1/4" x 1/4" (metal) flat pack 14-pin 3/16" x 1/4" flat pack 14-pin 1/4" x3/4" dual-in-line 14-pin 1/4" x 3/8" (ceramic) flat pack 16-pin 1/4" x 7/8" dual-in-line 16-pin 1/4" x3/8" (metal or ceramic) flat pack 8-pin TO-99 can or header 10-pin1/4" x1/4" (metal) flat pack 1O-pin TO-1 00 can or header 24-pin 1/2" x 1-1/4" dual-in-line 24-pin 3/8" x 5/8" flat pack 24-pin 1/4" x 1-1/4" dual-in-line 12-pin TO-1 01 can or header (Note 1) 8-pin 1/4" X 3/8" dual-in-line 40-pin 3/16" X 2-1/16" dual-in-line 20-pin 1/4" X 1-1/16" dual-in-line 20-pin 1/4" x 1/2" flat pack (Note 1) (Note 1) 18-pin 3/8" x 15/16" dual-in-line 22-pin 3/8" x 1-1/8" dual-in-line (Note 1) (Note 1) (Note 1) 20-terminal 0.350" x 0.350" chip carrier 28-terminal 0.450" x 0.450" chip carrier Note 1: These letters are assigned to packages by individual detail specifi· cations and may be assigned to different packages in different specifica- tions. TABLE 111.100% Screening Requirements ClassB ClassS Screen Reqmt Method Method Reqmt 1. Wafer Lot Acceptance 5007 All Lots 2. Nondestructive Bond Pull 2023 3. Internal Visual (Note 1) 2010, Condition A 100% 2010, Condition B 100% 4. Stabilization Bake 1008, Condition C, Min, 24 Hrs. Min 100% 1008, Condition C, Min, 24 Hrs. Min 100% 5. Temp. Cycling (Note 2) 1010, Condition C 100% 1010, Condition C 100% 6. Constant Acceleration 2001, Condition E (Min) y 1 Orientation Only 100% 2001, Condition E (Min) Y1 Orientation Only 100% 100% 7. Visual Inspection (Note 3) 8. Particle Impact Noise Detection (PIND) 9. Serialization 100% 2020, Condition A (Note 4) 100% (NoteS) 100% 10. Interim (Pre-Bum-In) Electrical Parameters Per Applicable Device Specification (Note 13) 100% 11. Burn-In Test 1015240 Hrs. at 125'C Min (Cond. F Not Allowed) 100% 1-10 100% Per Applicable Device Specification (Note 6) 1015, 160 Hrs. at 125'C Min 100% TABLE III. 100% Screening Requirements (Continued) ClassB ClassS Screen Method Reqmt 12. Interim (Post-Burn-In) Electrical Parameters Per Applicable Device Specification (Note 13) 100% 13. Reverse Bias Burn-In (Note7) 1015; Test Condition A, C, 72 Hrs. at 150'C Min (Cond. F Not Allowed) 100% 14. Interim (Post-Burn-In) Electrical Parameters Per Applicable Device Specification (Note 13) 100% 15. PDA Calculation 5% Parametric (Note 14) 3% Functional- 25'C 16. Final Electrical Test a) Static Tests 1) 25'C (Subgroup 1, Table I, 5005) 2) Max & Min Rated Operating Temp (Subgroups 2, 3, Table I, 5005) b) Dynamic Tests & Switching Tests, 25'C (Subgroups 4, 9, Table I, 5005) c) Functional Test, 25'C (Subgroup 7, Table I, 5005) Per Applicable Device Specification 17. Seal Fine, Gross 1014 18. Radiographic (Note 10) 2012 Two Views 19. Qualification or Quality Conformance Inspection Test Sample Selection (Note 11) 20. External Visual (Note 12) 2009 All Lots Method Per Applicable Device Specification 5% Parametric (Note 14) Reqmt 100% All Lots Per Applicable Device Specification 100% 100% 100% 100% 100% 100% 1000/0 1000/0 100% (Note 8) 1014 1000/0 (Note 9) 1000/0 (Note 11) Samp. Samp. 1000/0 1000/0 Note 1: Unless otherwise specified, at the manufacturer's option, test samples for Group B, bond strength (Method 5005) may be randomly selected prior to or following internal visual (Method 5004), prior to sealing provided all other specification requirements are satisfied (e.g. bond strength requirements shall apply to each inspection lot, bond failures shall be counted even if the bond would have failed internal visual). Note 2: For Class B devices, this test may be replaced with thermal shock method 1011, test condition A, minimum. Note 3: At the manufacturer's option, visual inspection for castastrophic failures may be conducted after each of the thermal/mechanical screens, after the sequence or after seal test. Catastrophic failures are defined as missing leads, broken packages or lids off. Note 4: The PI NO test may be performed in any sequence after step 9 and prior to step 16. See MIL·M-38510, paragraph 4.6.3. Note 5: Class S devices shall be serialized prior to interim electrical parameter measurements. Note 6: When specified, all devices shall be tested for those parameters requiring delta calculations. Note 7: Reverse bias burn-in is a requirement only when specified in the applicable device specification. The order of performing burn-in and reverse bias burn-in may be inverted. Note 8: For Class S devices, the seal test may be performed in any sequence between step t 6 and step 19, but it shall be performed after all shearing and forming operations on the terminals. Nate 9: For Class B devices, the fine and gross seal tests shall be performed separate or together in any sequence and order between step 6 and step 20 except that they shall be performed after all shearing and forming operations on the terminals. When 100% seal screen cannot be performed after shearing and forming (e.g. lIatpacks and chip carriers) the seal screen shall be done 100% prior to those operations and a sample test (LTPO = 5) shall be performed on each inspection lot following these operations. If the sample fails, 100% rescreening shall be required. Note 10: The radiographic screen may be performed in any sequence after step 9. Note 11: Samples shall be selected for testing in accordance with the specific device class and lot requirements of Method 5005. Nate 12: External visual shall be performed on the lot any time after step 19 and prior to shipment. Note 13: Read and Record when post bum-in data measurements are specified. Note 14: PDA shall apply to all static, dynamic, functional and switching measurements at either 25°C or maximum rated operating temperature. 1-11 o ,--------------------------------------------------------------------------, CD '~ ~ '1:1 c tV o eE e £L ~ National ~ Semiconductor Series 32000 Programs and Services CD C) C) C) N C") ~ 't; CD U) Technical Support Engineering Center (TSEC) National Semiconductors Technical Support Engineering Center offers full aftersales service support. The Technical Support Staff is available to answer technical questions, and has the ability to utilize all of the resources within the company to resolve issues or problems. Extended maintenance contracts are available extending the warranty period of the product one full year, allowing full technical support, software and/or hardware maintenance. details and qualifications on the evaluation program, please call one of the Service Center phone numbers listed above or your local sales office. The University Program Begun as merely a concept several years ago, National Semiconductor's University Program has now emerged as one of the company's most successful programs. The University Program was originally created to establish a relationship between National and the academic community that would foster the exchange of information and keep students abreast of modern advancements in technology. The University Program catalog provides a complete, up-todate list of all student/university services as well as program application forms and course materials to guide instructors in introducing students to advanced microprocessors. Because tomorrow's technology is dependent upon today's nurturing of up-and-coming scientists and engineers, National is committed to supporting universities, particularly in the area of microprocessor technology. National hopes that more universities will share in this commitment by becoming a part of the University Program. For more information on any of these programs, contact the Series 32000 University Program Manager, National Semiconductor Corporation, P.O. Box 58090, M/S D3-667, Santa Clara, California 95052-8090, 408-721-7295. HIGHLIGHTS OF THE EXTENDED MAINTENANCE PROGRAM 1. Unlimited Technical Assistance-access to 24 hour Hot Line and factory engineering staff' 2. Automatic Software Updates allowing customers to receive all software enhancements or bug fixes free of charge whenever they become available for the products covered. 3. Software Bulletin-Informative newsletter showing current software revisions, bug listings, work arounds, and new product information. 4. Equipment repairs-Factory repair for all products covered, including equipment on loan. OBTAINING A MAINTENANCE CONTRACT 1. Determine which product(s) are to be placed under maintenance (refer to the Service Products Guide). 2. Fill out the Maintenance Contract and return to the Service Center along with a purchase order, or call any of the TSEC 800 numbers and a completed contract will be sent to your attention for signature. Return the contract along with a purchase order to us. Microcomputer Systems Division The Microcomputer Systems Division's goal is to become a leading force in the microcomputer systems marketplace. To achieve this goal, a total systems approach has been taken on the Series 32000 program to provide the customer with the necessary hardware and software support, evaluation and development tools, training, service and technical literature. The focus is on upward migration paths, system integration at all levels and the preservation of the user's software investment. Three groups (Microprocessor, Software Products and Development Systems) offer a broad capability to solve customer needs at various levels of performance and integration. TOLL-FREE NUMBERS (800) 538-1866 (OutSide of California) (800) 672-1811 (Inside California) (800) 223-3248 (Canada) (408) 749-7306 (Rest of World) 49-08141-103-0 (Europe) FACTORY REPAIRS The Service Center provides highly trained technicians and a complete range of Depot Services to meet your service needs. For more information on depot services and pricing, call one of the Service Center phone numbers listed above. EVALUATION PROGRAM The Series 32000 Development hardware and software products are available for a free 30 day evaluation. For full 1-12 Section 2 CPU-Central Processing Units fII Section 2 Contents NS32532-20, NS32532-25, NS32532-30 High-Performance 32-Bit Microprocessors. . . . . . . . . NS32332-10, NS32332-15 32-Bit Advanced Microprocessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NS32C032-10, NS32C032-15 High-Performance Microprocessors. . . . . . . . . . . . . . . . . . . . . . . . NS32032-10 High-Performance Microprocessor. .. . . ... . .. .. . . . .. . .... .. ... . .. .. . . .. ... NS32CG16-10, NS32CG16-15 High-Performance Printer/Display Processor............... NS32C016-10, NS32C016-15 High-Performance Microprocessors........................ NS32016-10 High-Performance Microprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. NS32008-10 High-Performance 8-Bit Microprocessor.. .. . .. . . .. .. .. .... . ... .. .. . .. .. ... 2-2 2-3 2-94 2-168 2-233 2-298 2-299 2-363 2-427 z ~National PRELIMINARY ~ Semiconductor en w N U1 W ~ N Q ....... Z NS32532-20/NS32532-25/NS32532-30 High-Performance 32-Bit Microprocessor en w N U1 W N I N U1 General Description Features The NS32532 is a high-performance 32-bit microprocessor in the Series 32000® family. It is software compatible with the previous microprocessors in the family but with a greally enhanced internal implementation. III Software compatible with the Series 32000 family II 4-GByte uniform addressing space II II II II The NS32532 integrates more than 370,000 transistors fabricated in a 1.25 I-'m double-metal CMOS technology. The advanced technology and mainframe-like design of the device enable it to achieve more than 10 times the throughput of the NS32032 in typical applications. In addition to generally improved performance, the NS32532 offers much faster interrupt service and task switching for real-time applications. II II II II translation look-aside buffer 4-Stage instruction pipeline 512-Byte on-chip instruction cache 1024-Byte on-chip data cache High-performance bus - Separate 32-bit address and data lines - Burst mode memory accessing - Dynamic bus sizing Extensive multiprocessing support Floating-point support via the NS32381 or NS32580 1.25 I-'m double-metal CMOS technology 175-pin PGA package Block Diagram 4-STAGE INSTRUCTION PIPELINE LOADER INSTRUCTION CACHE (IC) CONTROL '--=--"\I7TT.rT7"TT:I---'\ ADDRESS BUS INTERFACE UNIT (BIU) DATA CACHE (DC) DATA INTERFACE DATA TL/EE/9354-1 FIGURE 1 2-3 Z N II On-chip memory management unit with 64-entry The high-performance specifications are the result of a fourstage instruction pipeline, on-chip instruction and data caches, on-chip memory management unit and a significantly increased clock frequency. In addition, the system interface provides optimal support for applications spanning a wide range, from low-cost, real-time controllers to highly sophisticated, general purpose multiprocessor systems. ....... en w II 32-bit architecture and implementation U1 W N I W Q ~ ~ ~ N Table of Contents CO) 1.0 PRODUCT INTRODUCTION z 2.0 ARCHITECTURAL DESCRIPTION rn Ln N ~ CO) Ln N CO) tJ) Z o 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.1.3 Instruction Pipeline 3.1.3.1 Branch Prediction 2.1 Register Set 3.1.3.2 Memory Mapped lID 2.1.1 General Purpose Registers 3.1.3.3 Serializing Operations 2.1.2 Address Registers 3.1.4 Slave Processor Instructions 2.1.3 Processor Status Register 3.1.4.1 Regular Slave Instruction Protocol 2.1.4 Configuration Register 3.1.4.2 Pipelined Slave Instruction Protocol N 2.1.5 Memory Management Registers 3.1.4.3 Instruction Flow and Exceptions CO) 2.1.6 Debug Registers 3.1.4.4 Floating-Point Instructions ~ Ln N CO) tJ) Z 3.1.4.5 Custom Slave Instructions 2.2 Memory Organization 3.2 Exception Processing 2.2.1 Address Mapping 3.2.1 Exception Acknowledge Sequence 2.3 Modular Software Support 3.2.2 Returning from an Exception Service Procedure 2.4 Memory Management 3.2.3 Maskable Interrupts 3.2.3.1 Non-Vectored Mode 2.4.1 Page Tables Structure 2.4.2 Virtual Address Spaces 3.2.3.2 Vectored Mode: Non-Cascaded Case 2.4.3 Page Table Entry Formats 3.2.3.3 Vectored Mode: Cascaded Case 2.4.4 Physical Address Generation 3.2.4 Non-Maskable Interrupt 2.4.5 Address Translation Algorithm 3.2.5 Traps 3.2.6 Bus Errors 2.5 Instruction Set 3.2.7 Priority Among Exceptions 2.5.1 General Instruction Format 3.2.8 Exception Acknowledge Sequences: Detailed Flow 2.5.2 Addressing Modes 3.2.8.1 Maskable/Non-Maskable Interrupt Sequence 2.5.3 Instruction Set Summary 3.0 FUNCTIONAL DESCRIPTION 3.2.8.2 Abort/Restartable Bus Error Sequence 3.1.1 Operating States 3.2.8.3 SLAVE/ILL/SVC/DVZlFLG/BPT lUND Trap Sequence 3.1.2 Instruction Endings 3.2.8.4 Trace Trap Sequence 3.1 Instruction Execution 3.1.2.1 Completed Instructions 3.1.2.2 Suspended Instructions 3.1.2.3 Terminated Instructions 3.1.2.4 Partially Completed Instructions 2-4 Table of Contents (Continued) 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.0 FUNCTIONAL DESCRIPTION (Continued) z en w N U'I W N I N 3.2.B.5 Integer-Overflow Trap Sequence 3.5.B Interfacing Memory-Mapped I/O Devices 3.2.B.6 Debug Trap Sequence 3.5.9 Interrupt and Debug Trap Requests 3.2.B.7 Non-Restartable Bus Error Sequence 3.5.10 Cache Invalidation Requests en w 3.5.11 Internal Status U'I 3.3 Debugging Support 4.0 DEVICE SPECIFICATIONS 3.3.1 Instruction Tracing 3.3.2 Debug Trap Capability 4.1 Pin Descriptions 3.4 On-Chip Caches 4.1.1 Supplies 3.4.1 Instruction Cache (IC) 4.1.2 Input Signals 3.4.2 Data Cache (DC) 4.1.3 Output Signals 3.4.3 Cache Coherence Support 4.1.4 Input/Output Signals 3.4.4 Translation Look-aside Buffer (TLB) 4.2 Absolute Maximum Ratings o ........ Z N W N I N U'I ........ Z en w N U'I W ~ W o 4.3 Electrical Characteristics 3.5 System Interface 4.4 SWitching Characteristics 3.5.1 Power and Grounding 3.5.2 Clocking 4.4.1 Definitions 3.5.3 Resetting 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays 3.5.4 Bus Cycles 3.5.4.1 Bus Status 4.4.2.2 Input Signal Requirements 3.5.4.2 Basic Read and Write Cycles 4.4.3 Timing Diagrams 3.5.4.3 Burst Cycles 3.5.4.4 Cycle Extension Appendix A: Instruction Formats 3.5.4.5 Interlocked Bus Cycles B: Compatibility Issues 3.5.4.6 Interrupt Control Cycles B.1 Restrictions on Compatibility 3.5.4.7 Slave Processor Bus Cycles B.2 Architecture Extensions 3.5.5 Bus Exceptions B.3 Integer-Overflow Trap 3.5.6 Dynamic Bus Configuration B.4 Self-Modifying Code 3.5.6.1 Instruction Fetch Sequences B.5 Memory-Mapped I/O 3.5.6.2 Data Read Sequences C: Instruction Set Extensions 3.5.6.3 Data Write Sequences C.1 Processor Service Instructions 3.5.7 Bus Access Control C.2 Memory Management Instructions C.3 Instruction Definitions 2-5 • C) r-------------------------------------------------------------------------------~ ~ CO) ~ CO) tn Z ~ an C'oI CO) tn Z ~ an C'oI ~ Z List of Illustrations CPU Block Diagram ............................................................•................................ 1 NS32532 Internal Registers .................................................................................... 2-1 Processor Status Register (PSR) ....•.....•...................•................................................. 2-2 Configuration Register (CFG) ................................................................................... 2-3 Page Table Base Registers (PTBn) .......•.......................•.............................................. 2-4 Memory Management Control Register (MCR) .................................................................... 2-5 Memory Management Status Register (MSR) ......•..............•..........................•.................... 2-6 Debug Condition Register (DCR) .................................................................•.............. 2-7 Debug Status Register (DSR) ................................................................................... 2-8 NS32532 Address Mapping .....................•................•............................................. 2-9 NS32532 Run-Time Environment ............•................................................................. 2-10 Two-Level Page Tables ..................•.................................................................•.. 2-11 Page Table Entries (PTE's) ............................................•....................................•.. 2-12 Virtual to Physical Address Translation .......................................................................... 2-13 General Instruction Format .................................................................................... 2-14 Index Byte Format ..•........................................................................................ 2-15 Displacement Encodings .......................•......•.......•............................................... 2-16 Operating States ............................................................•................................. 3-1 NS32532 Internal Instruction Pipeline ...•........................................................................ 3-2 Memory References for Consecutive Instructions .............•.........................•......................... 3·3 Memory References aiter Serialization ......................•.•.................................................. 3-4 Regular Slave Instruction Protocol: CPU Actions .................................................................. 3-5 ID and Operation Word ......................................................................................... 3-6 Slave Processor Status Word ................................................................................... 3-7 Instruction Flow in Pipelined Floating·Point Mode .................................................................. 3-8 Interrupt Dispatch Table ....................................................................................... 3·9 Exception Acknowledge Sequence: Direct-Exception Mode Disabled ............................................... 3-10 Exception Acknowledge Sequence: Direct·Exception Mode Enabled ................................................ 3-11 Return From Trap (RETIn) Instruction Flow: Direct-Exception Mode Disabled ........................................ 3·12 Return From Interrupt (RETI) Instruction Flow: Direct-Exception Mode Disabled ...................................... 3-13 Exception Processing Flowchart ............................................................................... 3-14 Service Sequence ........................................................................................... 3·15 Instruction Cache Structure ................................................................................... 3·16 Data Cache Structure ......................................................................................... 3·17 TLB Model .................................................................................................. 3-18 Power and Ground Connections ............................................................................... 3-19 Bus Clock Synchronization .................................................................................... 3·20 Power·On Reset Requirements ................................................................................ 3·21 General Reset Timing ...............................•........................................................ 3-22 Basic Read Cycle ............................................................................................ 3·23 Write Cycle .................................................................................................. 3·24 Burst Read cycles ............................................................................................ 3-25 Cycle Extension of a Basic Read Cycle ......................................................................... 3·26 Slave Processor Write Cycle ................................................................................... 3·27 Slave Processor Read Cycle .................................................................................. 3-28 Bus Retry During a Basic Read Cycle ........................................................................... 3-29 Basic Interface for 32·Bit Memories ...............•............................................................ 3·30 Basic Interface for 16-Bit Memories ............................................................................ 3-31 Hold Acknowledge: (Bus Initially Idle) ........................................................................... 3·32 Typical 1/0 Device Interface ................................................................................... 3-33 2-6 List of Illustrations (Continued) NS32532 Interface Signals ..................................................................................... 4-1 z en (0) I\) CJ1 (0) I\) I 175-Pin PGA Package ......................................................................................... 4-2 I\) Timing Specification Standard (Signal Valid after Clock Edge) ....................................................... 4-3 ....... Timing Specification Standard (Signal Valid before Clock Edge) ..................................................... 4-4 en Basic Read Cycle Timing ....................................................................................... 4-5 Write Cycle Timing ............................................................................................ 4-6 Interlocked Read and Write Cycles .............................................................................. 4-7 Burst Read Cycles ............................................................................................ 4-8 External Termination of Burst Cycles ............................................................................ 4-9 Bus Error or Retry During Burst Cycles .......................................................................... 4-10 Extended Retry Timing ....................................................................................... 4-11 HOLD Timing (Bus Initially Idle) ................................................................................ 4-12 HOLD Acknowledge Timing (Bus Initially Nolldle) ................................................................ 4-13 Q Z (0) I\) CJ1 (0) I\) I I\) CJ1 ....... z en (0) I\) CJ1 (0) I\) I (0) Q Slave Processor Read Timing ................................................................................. 4-14 Slave Processor Write Timing .................................................................................. 4-15 Slave Processor Done ........................................................................................ 4-16 FSSR Signal Timing .......................................................................................... 4-17 Cache Invalidation Request ................................................................................... 4-18 INT and NMI Signals Sampling ................................................................................. 4-19 Debug Trap Request ......................................................................................... 4-20 PFS Signal Timing ........................................................................................... 4-21 ISF Signal Timing ............................................................................................ 4-22 Break Point Signal Timing ..................................................................................... 4-23 Clock Waveforms ............................................................................................ 4-24 Bus Clock Synchronization .................................................................................... 4-25 Power-On Reset ............................................................................................. 4-26 Non-Power-On Reset ......................................................................................... 4-27 LPRilSPRi Instruction Formats ................................................................................. C-1 CINV Instruction Format ....................................................................................... C-2 LMRISMR Instruction Formats ................................................................................. C-3 List of Tables Access Protection Levels ...................................................................................... 2-1 NS32532 Addressing Modes ................................................................................... 2-2 NS32532 Instruction Set Summary .............................................................................. 2-3 Floating-Poinllnstruction Protocol ............................................................................... 3-1 Custom Slave Instruction Protocols .............................................................................. 3-2 Summary of Exception Processing .............................................................................. 3-3 Interrupt Sequences ........................................................................................... 3-4 Cacheable/Non-Cacheable Instruction Fetches from a 32-Bit Bus ................................................... 3-5 Cacheable/Non-Cacheable Instruction Fetches from a 16-Bit Bus ................................................... 3-6 Cacheable/Non-Cacheable Instruction Fetches from an 8-Bit Bus ................................................... 3-7 Cacheable/Non-Cacheable Data Reads from a 32-Bit Bus ......................................................... 3-8 Cacheable/Non-Cacheable Data Reads from a 16-Bit Bus ......................................................... 3-9 Cacheable/Non-Cacheable Data Reads from an 8-Bit Bus ........................................................ 3-10 Data Writes to a 32-Bit Bus .................................................................................... 3-11 Data Writes to a 16-Bit Bus .................................................................................... 3-12 Data Writes to an 8-Bit Bus .................................................................................... 3-13 LPRi/SPRi New 'Short' Field Encodings ......................................................................... C-1 LMRISMR 'Short' Field Encodings .............................................................................. C-2 2-7 fJI C) r-----------------------------------------------------------------------------------------~ 2 C") In N C") U) z ...... In N ~ In N C") U) z ~ C") In N C") U) z 1.0 Product Introduction The NS32532 is an extremely sophisticated microprocessor in the Series 32000 family with a full 32-bit architecture and implementation optimized for high-performance applications. Large, Uniform Addressing. The NS32532 has 32-bit address pointers that can address up to 4 gigabytes without requiring any segmentation; this addressing scheme provides flexible memory management without added-on expense. Modular Software Support. Any software package for the Series 32000 family can be developed independent of all other packages, without regard to individual addressing. In addition, ROM code is totally relocatable and easy to access, which allows a Significant reduction in hardware and software costs. Software Processor Concept. The Series 32000 architecture allows future expansions of the instruction set that can be executed by special slave processors, acting as extensions to the CPU. This concept of slave processors is unique to the Series 32000 family. It allows software compatibility even for future components because the slave hardware is transparent to the software. With future advances in semiconductor technology, the slaves can be physically integrated on the CPU chip itself. By employing a number of mainframe-like features, the device can deliver 15 MIPS peaks performance with no wait states at a frequency of 30 MHz. The NS32532 is fully software compatible will all the other Series 32000 CPUs. The architectural features of the Series 32000 family and particularly the NS32532 CPU, are described briefly below. Powerful Addressing Modes. Nine addressing modes available to all instructions are included to access data structures efficiently. Data Types. The architecture provides for numerous data types, such as byte, word, doubleword, and BCD, which may be arranged into a wide variety of data structures. Symmetric Instruction Set. While avoiding special case instructions that compilers can't use, the Series 32000 architecture incorporates powerful instructions for control operations, such as array indexing and external procedure calls, which save considerable space and time for compiled code. To summarize, the architectural features cited above provide three primary performance advantages and characteristics: • High-level language support • Easy future growth path Memory-to·Memory Operations. The Series 32000 CPUs represent two-address machines. This means that each operand can be referenced by anyone of the addressing modes provided. • Application flexibility 2.0 Architectural Description This powerful memory-to-memory architecture permits memory locations to be treated as registers for all usefull operations. This is important for temporary operands as well as for context switching. 2.1 REGISTER SET The NS32532 CPU has 28 internal registers grouped according to functions as follows: 8 general purpose, 7 address, 1 processor status, 1 configuration, 7 memory management and 4 debug. All registers are 32 bits wide except for the module and processor status, which are each 16 bits wide. Figure 2-1 shows the NS32532 internal registers. Memory Management. The NS32532 on-Chip memory management unit provides advanced operating system support functions, including dynamic address translation, virtual memory management, and memory protection. +- Address 32Bits PC SPO SP1 FP SB INTBASE I I General Purpose 32 Bits ~ RO R1 R2 R3 R4 R5 R6 R7 +- ~ MOD Processor Status PSR I Debug DCR DSR CAR BPC Memory Management PTBO PTB1 IVARO IVAR1 TEAR MCR MSR Configuration CFG FIGURE 2-1. NS32532 Internal Registers 2-8 z 2.0 Architectural Description CJ) Co) (Continued) N U1 . Co) 2.1.1 General Purpose Registers INTBASE-Interrupt Base. The INT8ASE register holds the address of the dispatch table for interrupts and traps (Section 3.2.1). There are eight registers (RO-R7) used for satisfying the high speed general storage requirements, such as holding temporary variables and addresses. The general purpose registers are free for any use by the programmer. They are 32 bits in length. If a general purpose register is specified for an operand that is eight or 16 bits long, only the low part of the register is used; the high part is not referenced or modi· fied. MOD-Module. The MOD register holds the address of the module descriptor of the currently executing software module. The MOD register is 16 bits long, therefore the module table must be contained within the first 64 kbytes of memory. The Processor Status Register (PSR) holds status information for the microprocessor. The PSR is sixteen bits long, divided into two eight-bit halves. The low order eight bits are accessible to all programs, but the high order eight bits are accessible only to programs executing in Supervisor Mode. C The C bit indicates that a carry or borrow occurred after an addition or subtraction instruction. It can be used with the AD DC and SU8C instructions to perform multiple-precision integer arithmetic calculations. It may have a setting of 0 (no carry or borrow) or 1 (carry or borrow). sPa, SP1-Stack Pointers. The SPO register points to the lowest address of the last item stored on the INTERRUPT STACK. This stack is normally used only by the operating system. It is used primarily for storing temporary data, and holding return information for operating system subroutines and interrupt and trap service routines. The SP1 register pOints to the lowest address of the last item stored on the USER STACK. This stack is used by normal user programs to hold temporary data and subroutine return information. When a reference is made to the selected Stack Pointer (see PSR S-bit), the terms 'SP Register' or 'SP' are used. SP refers to either SPO or SP1, depending on the setting of the S bit in the PSR register. If the S bit in the PSR is 0, SP refers to SPO. If the S bit in the PSR is 1 then SP refers to SP1. The NS32532 also allows the SP1 register to be directly loaded and stored using privileged forms of the LPRi and SPRi instructions, regardless of the setting of the PSR S-bit. When SP1 is accessed in this manner, it is referred to as 'USP Register' or Simply 'USP'. Stacks in the Series 32000 family grow downward in memory. A Push operation pre-decrements the Stack Pointer by the operand length. A Pop operation post-increments the Stack Pointer by the operand length. The T bit causes program tracing. If this bit is set to 1, a TRC trap is executed after every instruction (Section 3.3.1). L The L bit is altered by comparison instructions. In a comparison instruction the L bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as unsigned integers. Otherwise, it is set to "0". In Floating-Point comparisons, this bit is always cleared. The V-bit enables generation of a trap (OVF) when an integer arithmetic operation overflows. F Z N FP-Frame Pointer. The FP register is used by a procedure to access parameters and local variables on the stack. The FP register is set up on procedure entry with the ENTER instruction and restored on procedure termination with the EXIT instruction. The frame pointer holds the address in memory occupied by the old contents of the frame pOinter. SB-Static Base. The S8 register points to the global variables of a software module. This register is used to support relocatable global variables for software modules. The S8 register holds the lowest address in memory occupied by the global variables of a module. P T V U S The F bit is a general condition flag, which is altered by many instructions (e.g., integer arithmetic instructions use it to indicate overflow). The Z bit is altered by comparison instructions. In a comparison instruction the Z bit is set to "1" if the second operand is equal to the first operand; otherwise it is set to "0". The N bit is altered by comparison instructions. In a comparison instruction the N bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as signed integers. Otherwise, it is set to "0". If the U bit is "1" no privileged instructions may be executed. If the U bit is "0" then all instructions may be executed. When U = 0 the processor is said to be in Supervisor Mode; when U = 1 the processor is said to Z F FIGURE 2·2. Processor Status Register (PSR) 2-9 V N o ....... Z CJ) Co) N U1 . Co) N N U1 ....... 2.1.3 Processor Status Register 2.1.2 Address Registers The seven address registers are used by the processor to implement specific address functions. A description of them follows. PC-Program Counter. The PC register is a pOinter to the first byte of the instruction currently being executed. The PC is used to reference memory in the program section. N L T Z CJ) Co) N U1 Co) ~ Co) o 2.0 Architectural Description (Continued) S P be in User Mode. A User Mode program is restricted from executing certain instructions and accessing certain registers which could interfere with the operating system. For example, a User Mode program is prevented from changing the setting of the flag used to indicate its own privilege mode. A Supervisor Mode program is assumed to be a trusted part of the operating system, hence it has no such restrictions. The S bit specifies whether the SPO register or SP1 register is used as the Stack Pointer. The bit is automatically cleared on interrupts and traps. It may have a setting of 0 (use the SPO register) or 1 (use the SP1 register). The P bit prevents a TRC trap from occuring more than once for an instruction (Section 3.3.1). It may have a setting of 0 (no trace pending) or 1 (trace pending). If I = 1, then all interrupts will be accepted. If I = 0, only the NMI interrupt is accepted. Trap enables are not affected by this bit. F Floating-point instruction set. This bit indicates whether a floating-point unit (FPU) is present to execute floating-point instructions. If this bit is 0 when the CPU executes a floating-point instruction, a Trap (UNO) occurs. If this bit is 1, then the CPU transfers the instruction and any necessary operands to the FPU using the slave-processor protocol described in Section 3.1.4.1. M Memory management instruction set. This bit enables the execution of memory management instructions. If this bit is 0 when the CPU executes an LMR, SMR, RDVAL, or WRVAL instruction, a Trap (UNO) occurs. If this bit is 1, the CPU executes LMR, SMR, RDVAL, and WRVAL instructions using the on-chip MMU. Custom instruction set. This bit indicates whether a custom slave processor is present to execute custom instructions. If this bit is 0 when the CPU executes a custom instruction, a Trap (UNO) occurs. If this bit is 1, the CPU transfers the instruction and any necessary operands to the custom slave processor using the slave-processor protocol described in Section 3.1.4.1. C 2.1.4 Configuration Register The Configuration Register (CFG) is 32 bits wide, of which nine bits are implemented. The implemented bits enable various operating modes for the CPU, including vectoring of interrupts, execution of slave instructions, and control of the on-chip caches. In the NS32332 bits 4 through 7 of the CFG register selected between the 16-bit and 32-bit slave protocols and between 512-byte and 4-Kbyte page sizes. The NS32532 supports only the 32-bit slave protocol and 4-Kbyte page size: consequently these bits are forced to 1. DE DC Data Cache enable. This bit enables the on-Chip Data Cache to be accessed for data reads and writes. Refer to Section 3.4.2 for more information. LDC Lock Data Cache. This bit controls whether the contents of the on-chip Data Cache are locked to fixed memory locations (LDC = 1), or updated when a data read is missing from the cache (LDC=O). IC Instruction Cache enable. This bit enables the onchip Instruction Cache to be accessed for instruction fetches. Refer to Section 3.4.1 for more information. LIC Lock Instruction Cache. This bit controls whether the contents of the on-chip Instruction Cache are locked to fixed memory locations (LlC= 1), or updated when an instruction fetch is misSing from the cache (LlC=O). When the CFG register is loaded using the LPRi instruction, bits 13 through 31 should be set to O. Bits 4 through 7 are ignored during loading, and are always returned as 1's when CFG is stored via the SPRi instruction. When the SETCFG instruction is executed, the contents of the CFG register bits o through 3 are loaded from the instruction's short field, bits 4 through 7 are ignored and bits 8 through 12 are forced to O. The format of the CFG register is shown in Figure 2-3. The various control bits are described below. I Interrupt vectoring. This bit controls whether maskable interrupts are handled in nonvectored (I = 0) or vectored (I = 1) mode. Refer to Section 3.2.3 for more information. I Reserved I PF I LlC I IC I LDC I DC I DE Direct-Exception mode enable. This bit enables the Direct-Exception mode for processing exceptions. When this mode is selected, the CPU response time to interrupts and other exceptions is significantly improved. Refer to Section 3.2.1 for more information. PF I 1 Pipelined Floating-point execution. This bit indicates whether the floating-point unit uses the pipelined slave protocol. When PF is 1 the pipelined protocol is selected. PF is ignored if the F bit is O. Refer to Section 3.1.4.2 for more information. I 1 I 1 I FIGURE 2-3. Configuration Register (CFG) Bits 13 to 31 are Reserved; Bits 4 to 7 are Forced to 1. 2-10 01 I z 2.0 Architectural Description (J) w (Continued) ~ 2.1.5 Memory Management Registers OS Dual Space. While this bitis 1, then PTB1 contains the level-I page table base address of all addresses specified in User-Mode, and PTBO contains the level-I page table base address of all addresses specified in Supervisor Mode. While this bit is 0, then PTBO contains the level-I page table base address of all addresses specified in both User and Supervisor Modes. AO Access Level Override. When this bit is set to 1, UserMode accesses are given Supervisor Mode privilege. The NS32532 provides 7 registers to support memory management functions. They are accessed by means of the LMR and SMR instructions. All of them can be read and written except IVARO and IVARI that are write-only. A description of the memory management registers is given in the following sections. PTBO, PTB1-Page Table Base Pointers. The PTBn registers hold the physical addresses of the level-I page tables used in address translation. The least significant 12 bits are permanently zero, so that each register always points to a 4-Kbyte boundary in memory. Base Address 11 000000000000 I ~ Z (J) w ~ (J1 W ~ ~ Z (J) Reserved FIGURE 2-5. Memory Management Control Register (MCR) w ~ (J1 w ~ I W MSR-Memory Management Status. The MSR register provides status information related to the occurrence of a translation exception. Only eight bits are implemented. Bits 8 to 31 are ignored when MSR is loaded and are returned as zeroes when it is read as a 32-bit word. MSR is only updated by the MMU when a protection violation or page fault is detected while translating an address for a reference required to execute an instruction. It is not updated if a page fault is detected during either an operand or an instruction prefetch, if the data being prefetched is not needed due to a change in the instruction execution sequence. The format of MSR is shown in Figure 2-6. Details on the function of each bit are given below. ° FIGURE 2-4. Page Table Base Registers (PTBn) IVARO, IVARI-invalidate Virtual Address. The Invalidate Virtual Address registers are write-only registers. When a virtual address is written to IVARO or IVARI using the LMR instruction, the translation for that virtual address is purged, if present, from the TLB. This must be done whenever a Page Table Entry has been changed in memory, since the TLB might otherwise contain an incorrect translation value. TEX Another technique for purging TLB entries is to load a PTBn register. Turning off translation (clearing the MCR TU and/ or TS bits) does not purge any entries from the TLB. DDT UST Translate Supervisor. While this bit is 1, address translation is enabled for Supervisor Mode memory references. While this bit is 0, address translation is disabled for Supervisor-Mode memory references. 2-11 o Translation Exception. This two-bit field specifies the cause of the current address translation exception. (Trap(ABT)). Combinations appearing in this field are summarized below. 00 01 TEAR-Translation Exception Address Register. The TEAR register is laoded by the on-chip MMU when a translation exception occurs. It contains the 32-bit virtual address that caused the translation exception. TEAR is not updated if a page fault is detected while prefetching an instruction that is not executed because the previous instruction caused a trap. MCR-Memory Management Control. The MCR register controls the operation of the MMU. Only four bits are implemented. Bits 4 to 31 are reserved for future use and must be loaded with zeroes. When MCR is read as a 32-bit word, bits 4 to 31 are returned as zeroes. The format of MCR is shown in Figure 2-5. Details on the control bits are given below. TU Translate User. While this bit is 1, address translation is enabled for User-Mode memory references. While this bit is 0, address translations is disabled for UserMode memory references. TS ~ o ........ ........ The format of the PTBn registers is shown in Figure 2-4. 12 w (J1 When either PTBO or PTBI is loaded by executing an LMR instruction, the MMU automatically invalidates all entries in the TLB that had been translated using the old value in the selected PTBn register. 31 (J1 No Translation Exception First Level PTE Invalid 10 Second Level PTE Invalid 11 Protection Violation During address translation, if a protection violation and an invalid PTE are detected at the same time, the TEX field is set to indicate a protection violation. Data Direction. This bit indicates the direction of the transfer that the CPU was attempting when the translation exception occurred. DDT = 0 = > Read Cycle DDT = 1 = > Write Cycle User/Supervisor. This bit indicates whether the Translation Exception was caused by a User-Mode or Supervisor Mode reference. If UST is 1, then the exception was caused by a User-Mode reference; otherwise it was caused by a Supervisor Mode reference. fII 2.0 Architectural Description 31 (Continued) 'I' Reserved 1 DDT "I FIGURE 2-6. Memory Management Status Register (MSR) STT CPU Status. This four bit field is set on an address translation exception according to the following encodings. 1000 Sequential Instruction Fetch 1001 Non-Sequential Instruction Fetch If a reference for an Interrupt-Acknowledge or Endof-Interrupt bus cycle (either Master of Cascaded) causes a Translation Exception, then the value of the STT-field is undefined. 2.1.6 Debug Registers 15 Enable debug conditions BCP Bus interface unit FIFO disable. When this bit is 1, all data references, including Data Cache hits, appear on the system interface. Single-Instruction mode enable. This bit, when set to 1, inhibits the overlapping of instruction's execution. Branch Condition Prediction disable. When this bit is 1, the branch prediction mechanism is disabled. See Section 3.1.3.1. DSR-Debug Status Register. The DSR Register indicates debug conditions that have been detected. When the CPU detects an enabled debug condition, it sets the corresponding bit (BC, BEX, BCA) in the DSR to 1. When an addresscompare condition is detected, then the RD-bit is loaded to indicate whether a read or write reference was performed. Software must clear all the bits in the DSR when appropri· ate. The format of the DSR is shown in Figure 2-8; the various fields are described below. RO CBE2 Compare Byte Enable 2; when set, BYTE2 of an aligned double-word is included in the address comparison CBE3 Compare Byte Enable 3; when set, BYTE3 of an aligned double-word is included in the address comparison VNP Compare virtual address (VNP = 1) or physical address (VNP = 0) Enable Trap (DBG) when a debug condition is detected DEN SI CBE1 Compare Byte Enable 1; when set, BYTEl of an aligned double-word is included in the address comparison TR Enable debug conditions in User-Mode Enable debug conditions in Supervisor Mode BF The NS32532 contains 4 registers dedicated for debugging functions. These registers are accessed using privileged forms of the LPRi and SPRi instructions. OCR-Debug Condition Register. The DCR Register en· abies detection of debug conditions. The format of the DCR is shown in Figure 2-1; the various bits are described below. A debug condition is enabled when the related bit is set to 1. CBEO Compare Byte Enable 0; when set, BYTEO of an aligned double-word is included in the address comparison Address-compare enable for write references Address-compare enable for read references Address·compare enable PC-match enable UO SO The following 3 bits control testing features that can be used during initial system debugging. These features are unique to the NS32532 implementation of the Series 32000 architecture; as such, they may not be supported in future implementations. For normal operation these 3 bits should be set to O. 1010 Data Transfer 1011 Read Read-Modify-Write Operand 1100 Read for Effective Address CWR CRO CAE PCE BPC Indicates whether the last address-compare condition was for a read (RD = 1) or write (RD = 0) reference PC-match condition detected BEX BCA External condition detected Address-compare condition detected CAR-Compare Address Register. The CAR Register contains the address that is compared to operand reference addresses to detect an address-compare condition. The ad· dress must be double-word aligned; that is, the two leastsignificant bits must be O. The CAR is 32 bits wide. 9 Reserved 31 Reserved FIGURE 2-7. Debug Condition Register (OCR) BPC BEX Reserved FIGURE 2-8. Debug Status Register (DSR) 2-12 r--------------------------------------------------------------------------.z en eN 2.0 Architectural Description (Continued) BPC-Breakpoint Program Counter. The BPC Register contains the address that is compared with the PC contents to detect a PC-match condition. The BPC Register is 32 bits wide. stored at the lowest address and the most significant word of the double-word is stored at the address two higher. In memory, the address of a double-word is the address of its least significant byte, and a double·word may start at any address. 2.2 MEMORY ORGANIZATION The NS32532 implements full 32·bit virtual addresses. This allows the CPU to access up to 4 Gbytes of virtual memory. The memory is a uniform linear address space. Memory locations are numbered sequentially starting at zero and ending at 2 32 -1. The number specifying a memory location is called an address. The contents of each memory location is a byte consisting of eight bits. Unless otherwise noted, diagrams in this document show data stored in memory with the lowest address on the right and the highest address on the left. Also, when data is shown vertically, the lowest address is at the top of a diagram and the highest address at the bottom of the diagram. When bits are numbered in a diagram, the least significant bit is given the number zero, and is shown at the right of the diagram. Bits are numbered in increasing significance and toward the left. A+3 24 23 1 A+2 16 15 1 I I\) z en eN I\) (.J1 A+1 A LSB I\) (.J1 I\) I MSB Double-Word at Address A Although memory is addressed as bytes, it is actually organized as double-words. Note that access time to a word or a double-word depends upon its address, e.g. double-words that are aligned to start at addresses that are multiples of four will be accessed more quickly than those not so aligned. This also applies to words that cross a double-word boundary. 2.2.1 Address Mapping The NS32532 supports the use of memory-mapped peripheral devices and coprocessors. Such memory-mapped devices can be located at arbitrary locations in the address space except for the upper 8 Mbytes of virtual memory (addresses between FF800000 (hex) and FFFFFFFF (hex), inclusive), which are reserved by National Semiconductor Corporation. Nevertheless, it is recommended that high-performance peripheral devices and coprocessors be located in a specific 8 Mbyte region of virtual memory (addresses between FFOOOOOO (hex) and FF7FFFFF (hex), inclusive), that is dedicated for memory-mapped I/O. This is because the NS32532 detects references to the dedicated locations and serializes reads and writes. See Section 3.1.3.3. When making I/O references to addresses outside the dedicated region, external hardware must indicate to the NS32532 that special handling is required. A Byte at Address A Two contiguous bytes are called a word. Except where noted, the least significant byte of a word is stored at the lower address, and the most significant byte of the word is stored at the next higher address. In memory, the address of a word is the address of its least significant byte, and a word may start at any address. A A+1 I\) o ...... eN Figure 2-9 shows the NS32532 address mapping. MSB I\) (.J1 eN LSB In this case a small performance degradation will also result. Refer to Section 3.1.3.2 for more information on memory-mapped I/O. Word at Address A Two contiguous words are called a double-word. Except where noted, the least significant word of a double-word is Address (Hex) 00000000 Memory and I/O FFOOOOOO Memory-Mapped I/O FF800000 Reserved by NSC FFFFFEOO Interrupt Control FFFFFFFF FIGURE 2-9. NS32532 Address Mapping 2-13 ...... z en eN I\) (.J1 eN I\) I eN o 2.0 Architectural Description (Continued) 2.3 MODULAR SOFTWARE SUPPORT The NS32532 provides special support for software modules and modular programs. The Module Table is located within the first 64 kbytes of virtual memory. This table contains a Module Descriptor (also called a Module Table Entry) for each module in the address space of the program. A Module Descriptor has four 32-bit entries corresponding to each component of a module: • The Static Base entry contains the address of the beginning of the module's static data segment. Each module in a NS32532 software environment consists of three components: 1. Program Code Segment. This segment contains the module's code and constant data. 2. Static Data Segment. • The Link Table Base pOints to the beginning of the module's Link Table. Used to store variables and data that may be accessed by all procedures within the module. 3. Link Table. • The Program Base is the address of the beginning of the code and constant data for the module. • A fourth entry is currently unused but reserved. The MOD Register in the CPU contains the address of the Module Descriptor for the currently executing module. This component contains two types of entries: Absolute Addresses and Procedure Descriptors. An Absolute Address is used in the external addressing mode, in conjunction with a displacement and the current MOD Register contents to compute the effective address of an external variable belonging to another module. The Static Base Register (SB) contains a copy of the Static Base entry in the Module Descriptor of the currently executing module, i.e., it points to the beginning of the current module's static data area. This register is implemented in the CPU for efficiency purposes. By having a copy of the static base entry or chip, the CPU can avoid reading it from memory each time a data item in the static data segment is accessed. The Procedure Descriptor is used in the call external procedure (CXP) instruction to compute the address of an external procedure. Normally, the linker program specifies the locations of the three components. The Static Data and Link Table typically reside in RAM; the code component can be either in RAM or in ROM. The three components can be mapped into noncontiguous locations in memory, and each can be independently relocated. Since the Link Table contains the absolute addresses of external variables, the linker need not assign absolute memory addresses for these in the module itself; they may be assigned at load time. To handle the transfer of control from one module to another, the NS32532 uses a module table in memory and two registers in the CPU. In an NS32532 software environment modules need not be linked together prior to loading. As modules are loaded, a linking loader simply updates the Module Table and fills the Link Table entries with the appropriate values. No modification of a module's code is required. Thus, modules may be stored in read-only memory and may be added to a system independently of each other, without regard to their individual addressing. Rgurs 2-10 shows a typical NS32532 runtime environment. STATIC DATA SEGMENT SB REGISTER DISP I I I 31 I I I LINK TABLE a ABSOLUTE ADDRESS I OFFSET--+q)+-~ I I I I I I I I I DISP1.4 PROGRAM CODE SEGMENT DISP2 EXT. VARIABLE TL/EE/9354-2 Note: Dashed lines indicate information copied to registers during transfer of control between modules. FIGURE 2-10. NS32532 Run-Time Environment 2-14 z en w 2.0 Architectural Description (Continued) N 2.4 MEMORY MANAGEMENT The Memory Mangement Unit of the NS32532 provides support for demand-paged virtual memory. The MMU translates 32-bit virtual addresses into 32-bit physical addresses. The page size is 4096 bytes. The mapping from virtual to physical addresses is defined by means of sets of tables in physical memory. These tables are found by the MMU using one of its two Page Table Base registers: PTBO or PTB 1. Which register is used depends on the currently selected address space. See Section 2.4.2. Level-2 Page Tables contain 1024 32-bit Page Table entries, and so occupy 4 Kbytes (1 page). Each Level-2 Page Table Entry points to a final 4-Kbyte physical page frame. In other words, its PFN provides the Page Frame Number portion (bits 12-31) of the translated address (Figure 2-13). The OFFSET field of the translated address is taken directly from the corresponding field of the virtual address. 2.4.2 Virtual Address Spaces When the Dual Space option is selected for address translation in the MCR (Section 2.1.5) the on-chip MMU uses two maps: one for translating addresses presented to it in Supervisor Mode and another for User Mode addresses. Each map is referenced by the MMU using one of the two Page Table Base registers: PTBO or PTB1. The MMU determines the map to be used by applying the following rules. 1) While the CPU is in Supervisor Mode (UIS pin = 0), the CPU is said to be generating virtual addresses belonging to Address Space 0, and the MMU uses the PTBO register as its reference for looking up translations from memory. 2) While the CPU is in User Mode (UIS pin = 1), and the MCR DS bit is set to enable Dual Space translation, the CPU is said to be generating virtual addresses belonging to Address Space 1, and the MMU uses the PTB1 register to look up translations. 3) If Dual Space translation is not selected in the MCR, there is no Adress Space 1, and all virtual addresses generated in both Supervisor and User modes are considered by the MMU to be in Address Space O. The privilege level of the CPU is used then only for access level checking. Translation efficiency is improved by means of an on-chip 64-entry translation look-aside buffer (TLB). Refer to Section 3.4.4 for details. If the MMU detects a protection violation or page fault while translating an address for a reference required to execute an instruction, a translation exception {Trap (ABT)) will result. 2.4.1 Page Tables Structure The page tables are arranged in a two-level structure, as shown in Figure 2-". Each of the MMU's PTBn registers may point to a Level-1 page table. Each entry of the Level-1 page table may in turn point to a Level-2 page table. Each Level-2 page table entry contains translation information for one page of the virtual space. The Level-1 page table must remain in physical memory while the PTBn register contains its address and translation is enabled. Level-2 Page Tables need not reside in physical memory permanently, but may be swapped into physical memory on demand as is done with the pages of the virtual space. The Level-1 Page Table contains 1024 32-bit Page Table Entries (PTE's) and therefore occupies 4 Kbytes. Each entry of the Level-1 Page Table contains a field used to construct the physical base address of a Level-2 Page Table. This field is a 20-bit PFN field, providing bits 12-31 of the physical address. The remaining bits (O-ll) are assumed zero, placing a Level-2 Page Table always on a 4-Kbyte (page) boundary. ~ L-_ _ _- - l C) ....... Z en w N en W ~ N en ....... Z en w N en . W N W C) fII 4KBYTES ~-328ITS- 10Z4 11------1 1024 LEVEL·1 PAGE TA8LE . W Note: When the CPU executes a Dual-Space Move instruction (MOVUSi or MOVSUi), it temporarily enters User Mode by switching 1he state of the ufs pin. Accesses made by the CPU during this time are treated by the MMU as User·Mode accesses for both mapping and access level checking. It is possible, however, to force the MMU to assume Supervisor Mode privilege on such accesses by setting the Access Override (AO) bit in the MCR (Section 2.t.5). -328ITS-- PT8n en N N ENI . . ____. . / MEMORY LEVEL·2 PAGE TABLES TL/EE/9354-3 FIGURE 2-11. Two-Level Page Tables 2-15 . ~ N CO) LI) N CO) (I) 2.0 Architectural Description (Continued) R 2.4.3 Page Table Entry Formats Figure 2-12 shows the formats of Level-l and Level-2 Page Table Entries (PTE's). Z ..... LI) The bits are defined as follows: ~ V N Valid. The V bit is set and cleared only by software. V = 1 = > The PTE is valid and may be used for translation by the MMU. (I) V= 0 = N CO) LI) CO) Z ..... o . N N CO) ~ CO) (I) > The PTE does not represent a valid translation. Any attempt to use this PTE to translate and address will cause the MMU to generate an Abort trap. PL Protection Level. This two-bit field establishes the types of accesses permitted for the page in both User Mode and Supervisor Mode, as shown in Table 2-1. Z R M TABLE 2-1. Access Protection Levels U/S Protection Level Bits (PL) 00 01 10 11 User 1 no access no access read only full access Supervisor 0 read only full access full access full access NU CI ' I' 'I' USR 1 => The page has been referenced since the R bit was last cleared. > The page has not been referenced since the R bit was last cleared. Modified. This is a status bit, set by the MMU whenever a write cycle is successfully performed to the page mapped by this PTE. It is initialized to zero by the operating system when the page is brought into physical memory. M = 1 = > The page has been modified since it was last brought into physical memory. M = 0 = > The page has not been modified since it was last brought into physical memory. In Level-l Page Table Entries, this bit position is undefined, and is unaltered. USR User bits. These bits are ignored by the MMU and their values are not changed. Not Used. These bits are reserved by National for future enhancements. Their values should be set to zero. Cache Inhibit. This bit appears only in Level-2 PTE's. It is used to specify non-cacheable pages. PFN = R= 0 = The PL field is modified only by software. In a Level-l PTE, it limits the maximum access level allowed for all pages mapped through that PTE. Mode Referenced. This is a status bit, set by the MMU and cleared by the operating system, that indicates whether the page mapped by this PTE has been referenced within a period of time determined by the operating system. It is intended to assist in implementing memory allocation strategies. In a Level-l PTE, the R bit indicates only that the Level-2 Page Table has been referenced for a translation, without necessarily implying that the translation was successful. In a Level·2 PTE, it indicates that the page mapped by the PTE has been sucessfully referenced. PFN They can be used by the user software. Page Frame Number. This 20·bit field provides bits 12-31 of the physical address. See Figure 2-13. R NU : First Level PTE 8 31 1 PFN "1" USR : 'I M R CI Second Level PTE FIGURE 2-12. Page Table Entries (PTE's) 2-16 + NU : I + 'I I v + 'I V z 2.0 Architectural Description Co) N (J1 Co) VIRTUAL ADDRESS 2221 1211 31 l (J) (Continued) INDEX 1 INDEX 2 I OFFSET N I N I ~ I Z (J) Co) ,. BI I-I I lEVEl·1 PAGE TABLE N lEVEl·1 PTE N I N ~ PTBn 31 INDEX 1 1211 PFN DO 21 0 (J1 Co) I USR I NU IR IN+lv 31 0 ct (1) SElECT 1ST PTE IF 05=0 THEN --, Z I (J) Co) I I 1024 PTEs n=D ~ I N (J1 Co) ~ ELSE n = 1 FOR USER MODE n = 0 FOR SUPV MODE I I PFN 4 BYTES- ~ ,.. I I PFN 31 1211 " INDEX 2 000000000000 I lEVEl·2 PAGE TABLE Co) o lEVEl·2 PTE I I • 00 21 N ~ 0 PFN lus~ M I RICI \"uIPll V 1024 0 prEs 31 (2) SELECT 2ND PTE ~ PHYSICAL ADDRESS I 31 ,. PFN I 12 11 "' OFFSET (3) GENERATE PHYSICAL ADDRESS TL/EE/9354-4 FIGURE 2-13. Virtual to Physical Address Translation 2.4.4 Physical Address Generation by 4) to the base address taken from the Level-1 Page Table Entry. The PFN field of the selected entry provides the entire Page Frame Number of the translated address. The offset field of the virtual address is then appended to this frame number to generate the final physical address. When a virtual address is presented to the MMU and the translation information is not in the TLB, the MMU performs a page table lookup in order to generate the physical address. The Page Table structure is traversed by the MMU using fields taken from the virtual address. This sequence is diagrammed in Figure 2-13. 2.4.5. Address Translation Algorithm The MMU either translates the 32-bit virtual address to a 32bit physical address or generates an abort trap to report a translation error. The algorithm used by the MMU to perform the translation is compatible with that of the NS32382. Refer to Appendix C for differences between the two MMUs. Bits 12-31 of the virtual address hold the 20·bit Page Number, which in the course of the translation is replaced with the 20·bit Page Frame Number of the physical address. The virtual Page Number field is further divided into two fields, INDEX 1 and INDEX 2. Bits 0-11 constitute the OFFSET field, which identifies a byte's position within the accessed page. Since the byte pOSition within a page does not change with translation, this value is not used, and is simply echoed by the MMU as bits 0-11 of the final physical address. In the description that follows, the symbol 'u' takes the value 1 for a User-Mode memory reference. A reference is a User-Mode reference in the following cases: I. The reference is performed while executing in UserMode. 2. The reference is for the source operand of a MOVUS instruction. 3. The reference is for the destination operand of a MOVSU instruction. The 10-bit INDEX 1 field of the virtual address is used as an index into the Level·l Page Table, selecting one of its 1024 entries. The address of the entry is computed by adding INDEX 1 (scaled by 4) to the contents of the current Page Table Base register. The PFN field of that entry gives the base address of the selected Level·2 Page Table. The INDEX 2 field of the virtual address (10 bits) is used as the index into the Level·2 Page Table, by adding it (scaled The following notations are used in the algorithm. • • • • 2·17 AIIB --+ A concatenated with B A.B --+ B is a field inside register A (A) --+ object pointed to by address A (A).B --+ B field of the object pointed to by address A 2.0 Architectural Description (Continued) Each access is associated with one of two Address Spaces (AS), defined as follows: AS = U AND MCR.OS If AS = 1, Page Table Base Register 1 (PTB1) is used to select the first·level page table. If AS = 0, PTBO is used to select the first·level page table. • If (PTEV = 0) then • ,. PTE2 Invalid" - The access-level is a 2-bit value used to specify the privilege level of an access. It is determined as follows: • BIT1 = U AND (NOT(MCR.AO)) START TRANSLATION: If (U = 0 AND MCR.TS = 0 OR U = 1 AND MCR.TU = 0) • If ((write OR interlocked read) AND (PTER = 0 OR PTE.M = 0) then Read-Modify-Write a double-word interlocked (PTE Pointer).R = 1, (PTE Pointer).M = 1; then /* address translation disabled ., 6. Generate Physical address: • physical address - (physical address virtual address; ClOUT pin = 0); ,. Note: ClOUT = 0 in all MMU generated accesses '* *' *' • Select entry for replacement; • TLB. Virtual Page Number AS; • TLB.AS • TLB. Physical Frame Number • TLB.PL - • else (PTB = PTBO. AS = 0); 2. Fetch first level PTE: • Effective PL PTEPL 3. Validate First Level PTE: < access level) then *' ,. Protection Exception TEAR virtual address, clock MSR with MSR.TEX = 11, terminate translation; Note 2: If the MMU is translating a virtual address to check protection while executing a RDVAL or WRVAL instruction. then Trap (ABT) occurs only if the level·1 PTE is invalid and the access is permitted by the PL-field. 2.5 INSTRUCTION SET 2.5.1 General Instruction Format TEAR virtual address, clock MSR with MSR.TEX = 01, terminate translation; Figure 2-14 shows the general format of a Series 32000 instruction. The Basic Instruction is one to three bytes long and contains the Opcode and up to two 5-bit General Addressing Mode (uGen") fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes selected. • If (PTER = 0) then - Write a Byte (PTE Pointer) .R = 1; • 4. • • • PTE.PFN Effective PL Note 1: The TEAR and MSR are only updated when a Trap (ABT) occurs. It is possible that the MMU detects a page fault or protection violation on a reference for an instruction that is not executed, for example on a prefetch. In that event. Trap (ABT) does not occur. and the TEAR and MSR are not updated. • If (PTEV = 0) then • ,. PTE1 Invalid ., - INDEX111INDEX2; • TLB.CI PTECI • TLB.M (PTE Pointer) .M • Enable entry END • PTE Pointer = PTB.BASE ADDRESsIIINDEX11!00; • PTE (PTE POinter); /* Fetch PTE1 ., • - PTEPFNlloFFSET • ClOUT pin PTECI 7. Update Translation Buffer: • If (MCR.DS = 1 AND U = 1) then - PTB = PTB1, - AS = 1; • If (PTEPL TEAR virtual address, clock MSR with MSR.TEX = 10, terminate translation; • If (read AND NOT interlocked) AND PTE.R = 0) then Read-Modify-Write a double-word interlocked (PTE Pointer).R = 1; • BITO = 1 for write, or read with 'RMW' status o otherwise else BEGIN (see also Figure 2-13) 1. Select PTB: virtual address, TEAR clock MSR with MSR.TEX = 11, terminate translation; - Effective PL PTEPL Fetch second level PTE: Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before indexing. See Figure 2-15. PTE Pointer = PTE.PFNIIINDEX21100; '* PTE (PTE Pointer); Fetch PTE2 ., If (PTEPL < effective PL) then - Effective PL PTEPL; 5. Validate Second Level PTE: • If (PTEPL < access level) then • 1* Protection Exception ., 2-18 ,--------------------------------------------------------------------------, z 2.0 Architectural Description en Co) (Continued) I\) OPTIONAL EXTENSIONS en Co) BASIC INSTRUCTION ~ I\) r~----------------~A~----------------~\r~--------~~ ~ IMPUED IMMEDIATE OPERAND(S) DISP IMM DISP z en Co) I DISP2 DISPI DISP21DISPI ~ INDEX BYTE GEN ADDR MODE A INDEX BYTE IMM ~ l 1 I I I I ~ I : GEN ADDR MODE B I\) en Co) OPCODE ~ en ..... z en Co) I\) en Co) I\) TL/EE/9354-5 I' l GEN. ADDR. MODE REG. NO. 'I TL/EE/9354-6 FIGURE 2-15. Index Byte Format Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected addressing modes. Each Disp/lmm field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded with the top bits of that field, as shown in Figure 2-16, with the remaining bits interpreted as a signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most significant byte first. Note that this is different from the memory representation of data (Section 2.2). PC, SP, SB or FP. These registers point to data areas generally needed by high-level languages. Byte Displacement: Range -64 to +63 SIGNED DISPLACEMENT Word Displacement: Range -8192 to +8191 Some instructions require additional, 'implied" immediates and/or displacements, apart from those associated with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition (Section 2.5.3). 2.5.2 Addressing Modes The CPU generally accesses an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." Double Word Displacement: Range -(229 - 224) to + (2 29 - 1)* 0 7 Addressing modes are designed to optimally support highlevel language accesses to variables. In nearly all cases, a variable access requires only one addressing mode, within the instruction that acts upon that variable. Extraneous data movement is therefore minimized. 1 I I 1 I ~/- Addressing Modes fall into nine basic types: Register: The operand is available in one of the eight General Purpose Registers. In certain Slave Processor instructions, an auxiliary set of eight registers may be referenced instead. Register Relative: A General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. Memory Space: Identical to Register Relative above, except that the register used is one of the dedicated registers ~ TLlEE/9354-7 FIGURE 2-16. Displacement Encodlngs 'Note: The pattern "11100000" for the most significant byte of the displace- ment is reserved by National for future enhancements. Therefore. it should never be used by the user program. This causes the lower limit of the displacement range to be -(229 -224) instead of -229. 2-19 w CI FIGURE 2-14. General Instruction Format oCO) N CO) .." N CO) en z ".." ~ N CO) .." N 2.0 Architectural Description (Continued) Memory Relative: A pointer variable is found within the memory space pointed to by the SP, SB or FP register. A displacement is added to that pOinter to generate the Effective Address of the operand. Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written . CO) Absolute: The address of the operand is specified by a displacement field in the instruction. "o External: A pOinter value is read from a specified entry of the current Link Table. To this pointer value is added a displacement, yielding the Effective Address of the operand. en z ~ N CO) .." N CO) en z Format tables (Appendix A). The Instruction column gives the instruction as coded in assembly language, and the Description column provides a short description of the function provided by that instruction. Further details of the exact operations performed by each instruction may be found in the Instruction Set Reference Manual. Notations: i = Integer length suffix: B = Byte W = Word o = Double Word f Top of Stack: The currently-selected Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. = Floating Point length suffix: F = Standard Floating L = Long Floating gen = General operand. Any addressing mode can be specified. short = A 4-bit value encoded within the Basic Instruction (see Appendix A for encodings). imm = Implied immediate operand. An 8-bit value appended aiter any addressing extensions. disp = Displacement (addressing constant): 8, 16 or 32 bits. All three lengths legal. reg = Any General Purpose Register: RO-R7. Scaled Index: Although encoded as an addressing mode, Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by 1, 2, 4 or 8 and adding it into the total, yielding the final Effective Address of the operand. Table 2-2 is a brief summary of the addressing modes. For a complete description of their actions, see the Instruction Set Reference Manual. areg = Any Processor Register: Address, Debug, Status, Configuration. mreg = Any Memory Management Register. creg = A Custom Slave Processor Register (Implementation Dependent). cond = Any condition code, encoded as a 4-bit field within the Basic Instruction (see Appendix A for encodings). 2_5.3 Instruction Set Summary Table 2-3 presents a brief description of the NS32532 instruction set. The Format column refers to the Instruction 2-20 z 2.0 Architectural Description (J) w (Continued) I\) UI w TABLE 2-2. NS32532 Addressing Modes I\) I ENCODING Register 00000 00001 00010 00011 00100 00101 00110 00111 MODE ASSEMBLER SYNTAX EFFECTIVE ADDRESS Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 RO or FO R1 or F1 R2 or F2 R3 or F3 R40rF4 R5 or F5 R60rF6 R7 or F7 None: Operand is in the specified register. Register Relative 01000 01001 01010 01011 01100 01101 01110 01111 Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(R1) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp + Register. Memory Relative 10000 10001 10010 Frame memory relative Stack memory relative Static memory relative disp2(disp1 (FP)) disp2(disp1 (SP)) disp2(disp1 (S8)) Disp2 + POinter; Pointer found at address Disp1 + Register. "SP" is either SPO or SP1, as selected in PSR. Reserved 10011 (Reserved for Future Use) Immediate 10100 Immediate value None. Operand is input from instruction queue. Absolute 10101 Absolute @disp Disp. External 10110 External EXT(disp1) + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Disp1. Top of Stack 10111 Top of stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. Memory Space 11000 11001 11010 11011 Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(S8) *+disp Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Scaled Index 11100 11101 11110 11111 Index, bytes Index, words Index, double words Index, quad words mode[Rn:8] mode[Rn:W] mode[Rn:D] mode[Rn:Q] EA (mode) + Rn. EA (mode) + 2 x Rn. EA (mode) + 4 X Rn. EA (mode) + 8 x Rn. "Mode' and 'n' are contained within the Index Byte. EA (mode) denotes the effective address generated using mode. I\) 0 ....... Z (J) w I\) UI W I\) I I\) UI ....... Z (J) w I\) UI w w I\) 2-21 I 0 0 · CO) N CO) 2.0 Architectural Description Ln TABLE 2-3. NS32532 Instruction Set Summary N CO) (J) Z ...... Ln N N• CO) Ln N CO) (J) Z ...... 0 · N N CO) Ln N CO) (J) Z (Continued) MOVES Format 4 2 Operands gen,gen short,gen gen,gen,disp gen,gen gen,gen gen,gen gen,gen gen,gen Description Move a value. Extend and move a signed 4-bit constant. Move Multiple: disp bytes (1 to 16). Move with zero extension. Move with zero extension. Move with sign extension. Move with sign extension. Move Effective Address. INTEGER ARITHMETIC Format Operation 4 ADDI 2 ADDQi 4 ADDCi SUBi 4 4 SUBCi 6 NEGi 6 ABSi 7 MULi 7 QUOi 7 REMi 7 DIVi 7 MODi 7 MEli 7 DEli Operands gen,gen short,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Description Add. Add signed 4-bit constant. Add with carry. Subtract. Subtract with carry (borrow). Negate (2's complement). Take absolute value. Multiply. Divide, rounding toward zero. Remainder from QUO. Divide, rounding down. Remainder from DIV (Modulus). Multiply to Extended Integer. Divide Extended Integer. PACKED DECIMAL (BCD) Format Operation 6 ADDPi 6 SUBPi ARITHMETIC Operands gen,gen gen,gen Description Add Packed. Subtract Packed. INTEGER COMPARISON Format Operation 4 CMPi 2 CMPQi 7 CMPMi Operands gen,gen short,gen gen,gen,disp Description Compare. Compare to signed 4-bit constant. Compare Multiple: disp bytes (1 to 16). 7 7 7 7 7 4 Operation MOVi MOVQi MOVMi MOVZBW MOVZiD MOVXBW MOVXiD ADDR LOGICAL AND BOOLEAN Format Operation Operands 4 gen,gen ANDi 4 ORi gen,gen 4 gen,gen BICi 4 XORi gen,gen gen,gen 6 COMi 6 NOTi gen,gen 2 gen Scondi SHIFTS Format 6 6 6 Operation LSHi ASHi ROTi Operands gen,gen gen,gen gen,gen Description Logical AND. Logical OR. Clear selected bits. Logical Exclusive OR. Complement all bits. Boolean complement: LSB only. Save condition code (cond) as a Boolean variable of size i. Description Logical Shift, left or right. Arithmetic Shift, left or right. Rotate, left or right. 2-22 z 2.0 Architectural Description (J) Co) (Continued) TABLE 2-3. NS32532 Instruction Set Summary (Continued) BITS Format 4 6 6 6 6 6 8 8 8 5 5 N I Operation TBITi SBITi SBITIi CBITi CBITli IBITi FFSi Operands gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Operation CHECKi INDEXi Operands reg,gen,gen reg,gen,gen STRINGS String instructions assign specific functions to the General Purpose Registers: R4 - Comparison Value R3 - Translation Table Pointer R2 - String 2 Pointer RI - String I Pointer RO - Limit Count Format 5 Co) N Description Test bit. Test and set bit. Test and set bit, interlocked. Test and clear bit. Test and clear bit, interlocked. Test and invert bit. Find first set bit. BIT FIELDS Bit fields are values in memory that are not aligned to byte boundaries. Examples are PACKED arrays and records used in Pascal. "Extract" instructions read and align a bit field. "Insert" instructions write a bit field from an aligned source. Format Operation Operands Description 8 EXTi reg,gen,gen,disp Extract bit field (array oriented). INSi reg,gen,gen,disp Insert bit field (array oriented). 8 7 EXTSi gen,gen,imm,imm Extract bit field (short form). 7 INSSi gen,gen,imm,imm Insert bit field (short form). 8 CVTP reg,gen,gen Convert to Bit Field Pointer. ARRAYS Format N C1I Operation MOVSi MOVST CMPSi CMPST SKPSi SKPST Operands options options options options options options Description Index bounds check. Recursive indexing step for multiple-dimensional arrays. Options on all string instructions are: B (Backward): Decrement string pointers after each step rather than incrementing. End instruction if String I entry U (Until match): matchesR4. W (While match): End instruction if String I entry does not match R4. All string instructions end when RO decrements to zero. Description Move String I to String 2. Move string, translating bytes. Compare String I to String 2. Compare translating, String I bytes. Skip over String I entries. Skip, translating bytes for Until/While. 2-23 o Z (J) Co) N C1I Co) N I N C1I Z (J) Co) N C1I Co) N I Co) o C) C') r---------------------------------------------------------------------------------, ~ an 2.0 Architectural Description (I) JUMPS AND LINKAGE Format Operation 3 JUMP 0 BR 0 Bcond 3 CASEi 2 ACBi 3 JSR BSR CXP 3 CXPD 1 SVC FLAG BPT ENTER EXIT RET RXP RETT RETI ~ Z ...... an . N N C') an N C') (I) Z ..... C) N ~ C') an N C') (I) Z (Continued) TABLE 2-3. NS32532 Instruction Set Summary (Continued) Operands gen disp disp gen short,gen,disp gen disp disp gen [reg listl,disp [reg list] disp disp disp CPU REGISTER MANIPULATION Format Operation Operands 1 [reg list] SAVE [reg list] 1 RESTORE 2 LPRi areg,gen Description Jump. Branch (PC Relative). Conditional branch. Multiway branch. Add 4-bit constant and branch if non-zero. Jump to subroutine. Branch to subroutine. Call external procedure. Call external procedure using descriptor. Supervisor Call. Flag Trap. Breakpoint Trap. Save registers and allocate stack frame (Enter Procedure). Restore registers and reclaim stack frame (Exit Procedure). Return from subroutine. Return from external procedure call. Return from trap. (Privileged) Return from interrupt. (Privileged) 2 SPRi areg,gen 3 ADJSPi BISPSRi BICPSRi SETCFG gen gen gen [option list] Description Save General Purpose Registers. Restore General Purpose Registers. Load Processor Register. (Privileged if PSR, INTBASE, USP, CFG or Debug Registers). Store Processor Register. (Privileged if PSR, INTBASE, USP, CFG or Debug Registers). Adjust Stack Pointer. Set selected bits in PSR. (Privileged if not Byte length) Clear selected bits in PSR. (Privileged if not Byte length) Set Configuration Register. (Privileged) Operands gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen gen Description Move a Floating Point value. Move and shorten a Long value to Standard. Move and lengthen a Standard value to Long. Convert any integer to Standard or Long Floating. Convert to integer by rounding. Convert to integer by truncating, toward zero. Convert to largest integer less than or equal to value. Add. Subtract. Multiply. Divide. Compare. Negate. Take absolute value. Load FSR. Store FSR. 3 3 5 FLOATING POINT Format Operation 11 MOVf 9 MOVLF 9 MOVFL 9 MOVfi 9 ROUNDfi 9 TRUNCfi 9 FLOORfi 11 ADDf 11 SUBf 11 MUll 11 DIVf 11 CMPf 11 NEGf 11 ABSf 9 LFSR 9 SFSR 2-24 z 2.0 Architectural Description (J) w (Continued) TABLE 2-3. NS32532 Instruction Set Summary (Continued) MEMORY MANAGEMENT Format Operation 14 LMR 14 SMR 14 RDVAL 14 WRVAL 8 MOVSUi 8 MOVUSi MISCELLANEOUS Format Operation 1 NOP WAIT DIA 14 CINV CUSTOM SLAVE Format Operation 15.5 CCALOc 15.5 CCAL1c 15.5 CCAL2c 15.5 CCAL3c 15.5 CMOVOc 15.5 CMOV1c 15.5 CMOV2c CMOV3c 15.5 15.5 CCMPOc 15.5 CCMP1c 15.1 CCVOci 15.1 CCV1ci 15.1 CCV2ci 15.1 CCV3ic 15.1 CCV4DQ 15.1 CCV5QD 15.1 LCSR 15.1 SCSR 15.0 LCR 15.0 SCR Operands mreg,gen mreg,gen gen gen gen,gen gen,gen Operands options,gen Operands gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen gen creg,gen creg,gen Description Load Memory Management Register. (Privileged) Store Memory Management Register. (Privileged) Validate address for reading. (Privileged) Validate address for writing. (Privileged) Move a value from Supervisor Space to User Space. (Privileged) Move a value from User Space to Supervisor Space. (Privileged) Description No Operation. Wait for interrupt. Diagnose. Single·byte "Branch to Self" for hardware breakpointing. Not for use in programming. Cache Invalidate. (Privileged) Description Custom Calculate. Custom Move. Custom Compare. Custom Convert. Load Custom Status Register. Store Custom Status Register. Load Custom Register. (Privileged) Store Custom Register. (Privileged) 2·25 N U1 w · N N 0 ...... Z (J) w N U1 w N N U1 • ...... Z (J) w N U1 w N w · 0 3.0 Functional Description This chapter provides details on the functional characteristics of the NS32532 microprocessor. RST ACTIVE The chapter is divided into five main sections: Instruction Execution, Exception Processing, Debugging, On-Chip Caches and System Interface. 3.1 INSTRUCTION EXECUTION To execute an instruction, the NS32532 performs the following operations: • Fetch the instruction • Read source operands, if any (1) • Calculate results • Write result operands, if any • Modify flags, if necessary • Update the program counter Under most circumstances, the CPU can be conceived to execute instructions by completing the operations above in strict sequence for one instruction and then beginning the sequence of operations for the next instruction. However, due to the internal instruction pipelining, as well as the occurrence of exceptions, the sequence of operations performed during the execution of an instruction may be altered. Furthermore, exceptions also break the sequentiality of the instructions executed by the CPU. Details on the effects of the internal pipelining, as well as the occurrence of exceptions on the instruction execution, are provided in the following sections. TL/EE/9354-B FIGURE 3-1. Operating States tion is detected, the CPU enters the Processing-An-Exception state. The CPU enters the Halted state when a bus error or abort is detected while the CPU is processing an exception, thereby preventing the transfer of control to an appropriate exception service procedure. The CPU remains in the Halted state until reset occurs. A special status identifying this state is presented on the system interface. Note: 1 In this and following sections, memory locations read by the CPU to calculate effective addresses for Memory·Relative and External ad· dressing modes are considered like source operands, even if the effective address Is being calculated for an operand with access class of write. 3.1.1 Operating States The CPU has five operating states regarding the execution of instructions and the processing of exceptions: Reset, Executing Instructions, Processing An Exception, Waiting-ForAn-Interrupt, and Halted. The various states and transitions . between them are shown in Figure 3-1. Note: When the Direct·Exception mode is enabled. the CPU does not save the MOD Register contents nor does it read the module linkage infor· mation for the exception service procedure. Refer to Section 3.2 for details. Whenever the RST Signal is asserted, the CPU enters the reset state. The CPU remains in the reset state until the RSf signal is driven inactive, at which time it enters the Executing-Instructions state. In the Reset state the contents of certain registers are initialized. Refer to Section 3.5.3 for details. 3.1.2 Instruction Endings The NS32532 checks for exceptions at various points while executing instructions. Certain exceptions, like interrupts, are in most cases recognized between instructions. Other exceptions, like Divide-8y-Zero Trap, are recognized during execution of an instruction. When an exception is recognized during execution of an instruction, the instruction ends in one of four possible ways: completed, suspended, terminated, or partially completed. Each type of exception causes a particular ending, as specified in Section 3.2. In the Executing-Instructions state, the CPU executes instructions. It will exit this state when an exception is recognized or a WAIT instruction is encountered. At which time it enters the Processing-An-Exception state or the WaitingFor-An-Interrupt state respectively. While in the Processing-An-Exception state, the CPU saves the PC, PSR and MOD register contents on the stack and reads the new PC and module linkage information to begin execution of the exception service procedure (see note). 3.1.2.1 Completed Instructions When an exception is recognized after an instruction is completed, the CPU has performed all of the operations for that instruction and for all other instructions executed since the last exception occurred. Result operands have been written, flags have been modified, and the PC saved on the Interrupt Stack contains the address of the next instruction to execute. The exception service procedure can, at its conclusion, execute the RETT instruction (or the RETI instruction for vectored interrupts), and the CPU will begin executing the instruction following the completed instruction. Following the completion of all data references required to process an exception, the CPU enters the Executing-Instructions state. In the Waiting-For-An-Interrupt state, the CPU is idle. A special status identifying this state is presented on the system interface (Section 3.5). When an interrupt or a debug condi- 2-26 z 3.0 Functional Description (J) Co) (Continued) 3.1.2.2 Suspended Instructions An instruction is suspended when one of several trap conditions or a restartable bus error is detected during execution of the instruction. A suspended instruction has not been completed, but all other instructions executed since the last exception occurred have been completed. Result operands and flags due to be affected by the instruction may have been modified, but only modifications that allow the instruction to be executed again and completed can occur. For certain exceptions (Trap (AST), Trap (UND), Trap (ILL), and bus errors) the CPU clears the P-f1ag in the PSR before saving the copy that is pushed on the Interrupt Stack. The PC saved on the Interrupt Stack contains the address of the suspended instruction. For example, the RESTORE instruction pops up to 8 general-purpose registers from the stack. If an invalid page table entry is detected on one of the references to the stack, then the instruction is suspended. The general-purpose registers due to be loaded by the instruction may have been modified, but the stack pOinter still holds the same value that it did when the instruction began. 1. The service procedure can simulate the suspended in· 3.1.2.4 Partially Completed Instructions (J) When a restartable bus error, interrupt, abort, or debug condition is recognized during execution of a string instruction, the instruction is said to be partially completed. A partially completed instruction has not completed, but all other instructions executed since the last exception occurred have been completed. Result operands and flags due to be affected by the instruction may have been modified, but the values stored in the string pOinters and other general-purpose registers used during the instruction's execution allow the instruction to be executed again and completed. N U1 The NS32532 executes instructions in a heavily pipelined fashion. This allows a significant performance enhancement since the operations of several instructions are performed simultaneously rather than in a strictly sequential manner. The CPU provides a four-stage internal instruction pipeline. As shown in Figure 3-2, a write buffer, that can hold up to two operands, is also provided to allow write operations to be performed off-line. I....._-..,..-----'I 2. The suspended instruction can be executed again after the service procedure has eliminated the trap condition that caused the instruction to be suspended. The service procedure should execute the RETT instruction at its conclusion; then the CPU begins executing the suspended instruction again. This is the action taken by a debugger when it encounters a SPT instruction that was temporarily placed in another instruction's location in order to set a breakpoint. Fetch Instruction ._______t_______ . : 8 Byte Queue Decode Instruction ._______t_______ . Note 1: Although the NS32532 allows a suspended instruction to be execut· ed again and completed, the CPU may have read a source operand for the instruction from a memory.mapped peripheral port before the exception was recognized. In such a casa, the characteristics of the peripheral device may prevent correct reexecution of the instruction. Note 2: It may be necessary for the exception service procedure to alter the P·flag in the PSR copy saved on the Interrupt Stack: If the exception service procedure simulates the suspended instruction and the p. flag was cleared by the CPU before saving the PSR copy, then the saved T·flag must be copied to the saved P·flag (like the floating· point instruction simulation described above). Or if the exception service procedure executes the suspended instruction again and the P·flag was not cleared by the CPU before saving the PSR copy, then the saved P·flag must be cleared (like the breakpoint trap de· scribed above). Otherwise, no alteration to the saved P·flag is nec· essary. : 1 Decoded Instruction Stage 1 : Buffer --------1-------· I I Stage 2 : Buffer --------1-------· I Calculate Results Write Destination Operands I Stage 4 ._______t_______ . : 2 Memory Results : Buffer ._-------------_. TL/EE/9354-9 FIGURE 3-2. NS32532 Internal Instruction Pipeline 3.1.2.3 Terminated Instructions Due to the pipe lining, operations like fetching one instruction, reading the source operands of a second instruction, calculating the results of a third instruction and storing the results of a fourth instruction, can all occur in parallel. An instruction being executed is terminated when reset or a nonrestartable bus error occurs. Any result operands and flags due to be affected by the instruction are undefined, as 2-27 Co) N N Z Co) 3.1.3 Instruction Pipeline struction's execution. After calculating and writing the in· struction's results, the flags in the PSR copy saved on the Interrupt Stack should be modified, and the PC saved on the Interrupt Stack should be updated to point to the next instruction to execute. The service procedure can then execute the RETT instruction, and the CPU begins executing the instruction following the suspended instruction. This is the action taken when floating-point instructions are simulated by software in systems without a hardware floating-point unit. . o ..... The CPU clears the P-f1ag in the PSR before saving the copy that is pushed on the Interrupt Stack. The PC saved on the Interrupt Stack contains the address of the partially completed instruction. The exception service procedure can, at its conclusion, simply execute the RETT instruction (or the RETI instruction for vectored interrupts), and the CPU will resume executing the partially completed instruction. To complete a suspended instruction, the exception service procedure takes either of two actions: N U1 is the contents of the PC. The result operands of other in· structions executed since the last serializing operation may not have been written to memory. A terminated instruction cannot be completed. Co) ~ N U1 ..... Z (J) Co) N U1 Co) N • Co) o 3.0 Functional Description (Continued) The order of memory references performed by the CPU may also differ from that related to a strictly sequential instruction execution. In fact, when an instruction is being executed, some of the source operands may be read from memory before the instruction is completely fetched. For example, the CPU may read the first source operand for an instruction before it has fetched a displacement used in calculating the address of the second source operand. The CPU, however, always completes fetching an instruction and reading its source operands before writing its results. When more than one source operand must be read from memory to execute an instruction, the operands may be read in any order. Similarly, when more than one result operand is written to memory to execute an instruction, the operands may be written in any order. formed in the order implied by the program. Refer to Section 3.1.3.2 for details. It is also to be noted that the CPU does not check for dependencies between the fetching of an instruction and the writing of previous instructions' results. Therefore, special care is required when executing self-modifying code. 3.1.3.1 Branch Prediction One problem inherent to all pipelined machines is what is called '"Pipeline Breakage". This occurs every time the sequentiality of the instructions is broken, due to the execution of certain instructions or the occurrence of exceptions. The result of a pipeline breakage is a performance degradation, due to the fact that a certain portion of the pipeline must be flushed and new data must be brought in. The NS32532 provides a special mechanism, called branch prediction, that helps minimize this performance penalty. When a conditional branch instruction is decoded in the early stages of the pipeline, a prediction on the execution of the instruction is performed. More precisely, the prediction mechanism predicts backward branches as taken and forward branches as not taken, except for the branch instructions BLE and BNE that are always predicted as taken. Thus, the resulting probability of correct prediction is fairly high, especially for branch instructions placed at the end of loops. An instruction is fetched only after all previous instructions have been completely fetched. However, the CPU may begin fetching an instruction before all of the source operands have been read and results written for previous instructions. The source operands for an instruction are read only after all previous instructions have been fetched and their source operands read. A source operand for an instruction may be read before all results of previous instructions have been written, except when the source operand's value depends on a result not yet written. The CPU compares the physical address and length of a source operand with those of any results not yet written, and delays reading the source operand until after writing all results on which the source operand depends. Also, the CPU ensures that the interlocked read and write references to execute an SBITli or CBITli instruction occur after writing all results of previous instructions and before reading any source operands for subsequent instructions. The sequence of operations performed by the loader and execution units in the CPU is given below: • Loader detects branches and calculates destination addresses The result operands for an instruction are written after all results of previous instructions have been written. • Loader uses branch opcode and direction to select between sequential and non-sequential streams The description above is summarized in Figure 3-3, which shows the precedence of memory references for two consecutive instructions. INSTRUCTION N • Loader saves address for alternate stream • Execution unit resolves branch decision Due to the branch predicition, some special care is required when writing self-modifying code. Refer to the appropriate section in Appendix B for more information on this subject. INSTRUCTION N+ 1 INSTRUCTION FETCH ~UCTION FETCH \ ~\WO DATA WRITE • ~"\'l ~ 3.1.3.2 Memory-Mapped I/O The characteristics of certain peripheral devices and the overlapping of instruction execution in the pipeline of the NS32532 require that special handling be applied to memory-mapped 110 references. 110 references differ from memory references in two significant ways, imposing the following requirements: DATA WRITE TLlEE/9354-10 FIGURE 3-3. Memory References for Consecutive Instructions (An arrow from one reference to another indicates that the first reference always precedes the second.) Another consequence of overlapping the operations for several instructions, is that the CPU may fetch an instruction and read its source operands, even though the instruction is not executed (e.g., due to the occurrence of an exception). In such a case, the MMU may update the R-bit in Page Table Entries used in referring to the fetched instruction and its source operands. 1. Reading from a peripheral port can alter the value read on the next reference to the same port or another port in the same device. (A characteristic called here '"destructive-reading".) Serial communication controllers and FIFO buffers commonly operate in this manner. As explained in '"Instruction Pipeline" above, the NS32532 can read the source operands for one instruction while the previous instruction is executing. Because the previous instruction may cause a trap, an interrupt may be recognized, or the flow of control may be otherwise altered, it is a requirement that destructive-reading of source operands before the execution of an instruction be avoided. Special care is needed in the handling of memory-mapped 110 devices. The CPU provides special mechanisms to ensure that the references to these devices are always per- 2-28 z 3.0 Functional Description en Co) (Continued) N 2. Writing to a peripheral port can alter the value read from another port of the same device. (A characteristic called here "side-effects of writing"). For example, before reading the counter's value from the NS32202 Interrupt Control Unit it is first necessary to freeze the value by writing to another control register. serializing operation takes place. This is necessary since the privilege level might have changed and the instructions following the LPRW instruction must be fetched again with the new privilege level and possibly with a different MMU mapping. See Section 2.4.2. The CPU serializes instruction execution after executing one of the following instructions: BICPSRW, BISPSRW, BPT, CINV, DIA, FLAG (trap taken), LMR, LPR (CFG, INTBASE, PSR, UPSR, DCR, BPC, DSR, and CAR only), RETT, RETI, and SVC. Figure 3-4 shows the memory references after serialization. However, as mentioned above, the NS32532 can read the source operands for one instruction before writing the results of previous instructions unless the addresses indicate a dependency between the read and write references. Consequently, it is a requirement that read and write references to peripheral that exhibit side-effects of writing must occur in the order dictated by the instructions. Note 1: LPRB UPSR can be executed in User Mode to serialize instruction execution. Note 2: After an instruction that writes a result to memory is executed, the updating of the result's memory location may be delayed until the next serializing operation. The NS32532 supports 2 methods for handling memorymapped 1/0. The first method is more general; it satisfies both requirements listed above and places no restriction on the location of memory-mapped peripheral devices. The second method satisfies only the requirement for side effects of writing, and it restricts the location of memorymapped 1/0 devices, but it is more efficient for devices that do not have destructive-read ports. Note 3: When reset or a nonrestartable bus error exception occurs, the CPU discards any results that have not yet been written to memory. INSTRUCTION N INSTRUCTION N+ 1 INSTRUCTION FETCH INSTRUCTION rETCH U1 Co) N I N o ...... Z en Co) N U1 Co) N I N U1 ...... Z en Co) N U1 Co) N I Co) o ~R\ /~R\ The first method for handling memory-mapped 1/0 uses two signals: 10lNH and 10DEC. When the NS32532 generates a read bus cycle, it asserts the output signal 10lNH if either of the 1/0 requirements listed above is not satisfied. That is, 10lNH is asserted during a read bus cycle when (1) the read reference is for an instruction that may not be executed or (2) the read reference occurs while a write reference is pending for a previous instruction. When the read reference is to a peripheral device that implements ports with destructive-reading or side-effects of writing, the input signal 10DEC must be asserted; in addition, the device must not be selected if 10lNH is active. When the CPU detects that the 10DEC input signal is active while the 10lNH output signal is also active, it discards the data read during the bus cycle and serializes instruction execution. See the next section for details on serializing operations. The CPU then generates the read bus cycle again, this time satisfying the requirements for 1/0 and driving 10lNH inactive. The second method for handling memory-mapped 1/0 uses a dedicated region of virtual memory. The NS32532 treats all references to the memory range from address FFOOOOOO to address FFFFFFFF inclusive in a special manner. DATA WRITE DATA WRITE TL/EE/93S4-11 FIGURE 3-4. Memory References after Serialization 3.1.4 Slave Processor Instructions The NS32532 recognizes two groups of instructions being executable by external slave processors: • Floating Point Instructions • Custom Slave Instructions Each Slave Instruction Set is enabled by a bit in the Configuration Register (Section 2.1.4). Any Slave Instruction which does not have its corresponding Configuration Register bit set will trap as undefined, without any Slave Processor communication attempted by the CPU. This allows software simulation of a non-existent Slave Processor. Note that the Memory Management Instructions, like Floating Point and Custom Slave Instructions, have to be enabled through an appropriate bit in the configuration register in order to be executable. However, they are not considered here as Slave Instructions, since the NS32532 integrates the MMU on-chip and the execution of them does not follow the protocol of the Slave Instructions. While a write to a location in this range is pending, reads from locations in the same range are delayed. However, reads from locations with addresses lower than FFOOOOOO may occur. Similarly, reads from locations in the above range may occur while writes to locations outside of the range are pending. It is to be noted that the CPU may assert 10lNH even when the reference is within the dedicated region. Refer to Section 3.5.B for more information on the handling of 1/0 devices. 3.1.4.1 Regular Slave Instruction Protocol Slave Processor instructions have a three-byte Basic Instruction field, consisting of an ID Byte followed by an Operation Word. The ID Byte has three functions: 1) It identifies the instruction as being a Slave Processor instruction. 2) It specifies which Slave Processor will execute it. 3) It determines the format of the following Operation Word of the instruction. Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Figure 3-5. While applying Status code 11111 (Broadcast ID Section 3.5.4.1), the CPU transfers the ID Byte on bits AD24-AD31, the operation 3.1.3.3 Serializing Operations After executing certain instructions or processing an exception, the CPU serializes instruction execution. Serializing instruction execution means that the CPU completes writing all previous instructions' results to memory, then begins fetching and executing the next instruction. For example, when a new value is loaded into the PSR by executing an LPRW instruction, the pipeline is flushed and a 2-29 • I C) C? C'I C') r---------------------------------------------------------------------------------, 3.0 Functional Description (Continued) Ln C'I ~ Z ...... Ln ~ C'I C') Ln C'I ~ ...... Z ~ SEND OPERAND (BUS STATUS = 11101) ~ Ln C'I C') U) z READ RESULT (BUS STATUS = 11101) TUEE/9354-12 FIGURE 3-5. Regular Slave Instruction Protocol: CPU Actions 2-30 3.0 Functional Description (Continued) o 31 IDBYTE OPCODE (LOW) OPCODE (HIGH) XXXXXXXX FIGURE 3-6. 10 and Operation Word 31 15 ZERO TS 7 ZERO N Z o o o L o ~I FIGURE 3-7. Slave Processor Status Word word on bits AD8-AD23 in a swapped order of bytes and a non-used byte XXXXXXXX (X = don't care) on bits ADOAD? (Figure 3-6). 3.1.4.2 Pipelined Slave Instruction Protocol In order to increase performance of floating-point instructions while maintaining full software compatibility with the Series 32000 architecture, the NS32532 incorporates a pipelined floating-point protocol. This protocol is deSigned to operate in conjunction with the NS32580 FPC, or any other floating·point slave which conforms to the protocol and the Series 32000 architecture. The protocol is enabled by the PF bit in the CFG register. All slave processors observe the bus cycle and inspect the identification code. The slave selected by the identification code continues with the protocol; other slaves wait for the next slave instruction to be broadcast. After transferring the slave instruction, the CPU sends to the slave any source operands that are located in memory or the General-Purpose registers. The CPU then waits for the slave to assert SDN or FSSR. While the CPU is waiting, it can perform bus cycles to fetch instructions and read source operands for instructions that follow the slave instruction being executed. If there are no bus cycles to perform, the CPU is idle with a special Status indicating that it is waiting for a slave processor. After the slave asserts SDN or FSSR, the CPU follows one of the two sequences described below. If the slave asserts SDN, then the CPU checks whether the instruction stores any results to memory or the General-Purpose registers. The CPU reads any such results from the slave by means of 1 or 2 bus cycles and updates the destination. If the slave asserts FSSR, then the NS32532 reads a 32-bit status word from the slave. The CPU checks bit 0 in the slave's status word to determine whether to update the PSR flags or to process an exception. Figure 3-7 shows the format of the slave's status word. If the Q bit in the status word is 0, the CPU updates the N, Z and L flags in the PSR. If the Q bit in the status word is set to 1, the CPU processes either a Trap (UND) if TS is 1 or a Trap (SLAVE) if TS is O. The basic methods of transferring data and control information between the CPU and the FPC, are the same as in the regular slave protocol. However, in pipelined mode, the CPU may send a new floating-point instruction to the FPC before the previous instruction has been completed. Although the CPU can advance as many as four floatingpoint instructions before receiving a completion pulse on SDN for the first instruction, full exception recovery is assured. This is accomplished through a FIFO mechanism which maintains the addresses of all the floating-point instructions sent to the FPC for execution. Pipe lined execution can occur only for instructions which do not require a result to be read from the FPC. In cases where a result is to be read back, the CPU will wait for instruction completion before issuing the next instruction. Instructions can be divided into three groups, depending on the amount of pipe lining permitted. Group A. Fully-Pipelined Instructions Instructions in this group can be sent to the FPC before previous group A instructions are completed. No instruction completion indication from the FPC is required in order to continue to another group A or group B instruction. Group A contains floating-point instructions satisfying all of the following conditions. 1. The destination operand is in a floating-point register. Note 1: Only the floating~point and custom compare instructions afe allowed to return a value 01 0 lor the Q bit when the FSSR Signal is activat· ed. All other instructions must always set the Q bit to 1 (to Signal a Trap). when activating FSSR. Note 2: While executing an LMR or CINV instruction, the CPU displays the operation code and source operand using slave processor write bus cycles, as described in the protocol above. Nevertheless. the CPU does not wait lor SON or FSSR to be asserted while executing these instructions. This information can be used to monitor the contents 01 the on-chip TLB, Instruction Cache, and Data Cache. 2. The source operand is not of type TOS or IMM. 3. The instruction format is either 11 or 12. Group B. Half-Pipelined Instructions Group B instructions can begin execution before previous group A instructions are completed. However, they cannot complete before the FPC signals completion of all the previous floating-point instructions. Group B contains floating-point instructions satisfying at least one of the following conditions. 1. The destination operand is either in memory or in a CPU register (this includes the CMPf instruction which modifies the PSR register). Note 3: The slave processor must be ready to accept new slave instruction at any time, even while the slave is executing another instruction or waiting lor the CPU to read results. For example. the CPU may terminate an instruction being executed by a slave because a nonrestartable bus error is detected while the MMU is updating a Page Table Entry lor an instruction being preletched. Note 4: II a slave instruction stores a result to memory, the CPU checks whether Trap (ABn would occur on the store operation belore read· ing the result from the slave. For quad-word destination operands, the CPU checks that both double·words 01 the destination can be stored without an abort before reading either double-word of the result from the slave. 2. The source operand is of type TOS or IMM. 3. The instruction format is 9. 2-31 • 3.0 Functional Description (Continued) PROCESS TRAP. GET INSTRUCTION ADDRESS FROM FIFO REMOVE INSTRUCTION ADDRESS FROM FIFO PROCESS TRAP. GET INSTRUCTION ADDRESS FROM FIFO TL/EE/9354-73 FIGURE 3-8. Instruction Flow in Pipelined Floating·Point Mode 2-32 3.0 Functional Description z en Co) (Continued) specifies a Floating Point size for the operand (F = 32-bit Standard Floating, L = 64-bit Long Floating). The Returned Value Type and Destination column gives the size of any returned value and where the CPU places it. The PSR-Bits-Affected column indicates which PSR bits, if any, are updated from the Slave Processor Status Word (Figure 3-7). Group C. Non-Pipelined Instructions Group C instructions can begin execution only after all other instructions have been completed. The CPU cannot proceed to other instructions before their execution is completed. Group C contains all the floating-point/integer conversion instructions. 3.1.4.3 Instruction Flow and Exceptions When operating in pipelined mode, the CPU will push the address of group A instructions into a five-entry FIFO after the ID, opcode and source operands have been sent to the FPC. The address will be pushed into the FIFO only if no exception is detected during the transfer of the source operands needed for the execution of the instruction. Other exceptions may occur while the FIFO is not empty. This may be the case when an interrupt is received or a translation exception is detected in the access of an operand needed for the execution of the next floating-point instruction. These exceptions will be processed as soon as the FIFO becomes empty, and after any floating-point exception has been acknowledged. Exceptions are special events that alter the sequence of instruction execution. The CPU recognizes three basic types of exceptions: interrupts, traps and bus errors. An interrupt occurs in response to an event signalled by activating the NMI or INT input signals. Interrupts are typically requested by peripheral devices that require the CPU's attention. Traps occur as a result either of exceptional conditions (e.g., attempted division by zero) or of specific instructions whose purpose is to cause a trap to occur (e.g., supervisor call instruction). A bus error exception occurs when the BER signal is activated during an instruction fetch or data transfer required by the CPU to execute an instruction. When an exception is recognized, the CPU saves the PC, PSR and optionally the MOD register contents on the interrupt stack and then it transfers control to an exception service procedure. Details on the operations performed in the various cases by the CPU to enter and exit the exception service procedure are given in the following sections. It is to be noted that the reset operation is not treated here as an exception. Even though, like any exception, it alters the instruction execution sequence. 3.1.4.4 Floating Point Instructions The Operand class columns give the Access Class for each general operand, defining how the addressing modes are interpreted (see Instruction Set Reference Manual). The Operand Issued columns show the sizes of the operands issued to the Floating Point Unit by the CPU. "D" indicates a 32-bit Double Word. "i" indicates that the instruction specifies an integer size for the operand (B = Byte, W = Word, D = Double Word). "f" indicates that the instruction The reason being that the CPU handles reset in a significantly different way than it does for exceptions. Refer to Section 3.5.3 for details on the reset operation. 2-33 Z en Co) N U1 Co) N U1 For the instruction encodings, see Appendix A. Table 3-1 gives the protocols followed for each Floating Point instruction. The instructions are referenced by their mnemonics. For the bit encodings of each instruction, see Appendix A. o 3.1.4.5 Custom Slave Instructions 3.2 EXCEPTION PROCESSING In the event of a non-restartable bus error, the acknowledge will occur immediately. The CPU will flush the internal FIFO and will reset the FPC by performing a dummy read of the slave status word. This operation is performed for both the regular and pipe lined floating-point protocol and regardless of whether any floating-point instruction is pending in the FPC instruction queue. The CPU may cancel the last instruction sent to the FPC by sending another ID and opcode, before the last source operand for that instruction has been sent. Figure 3-8 shows the instruction flow in pipelined floating-point mode. N I N - Table 3-2 lists the relevant information for the Custom Slave instruction set. The designation "c" is used to represent an operand which can be a 32-bit ("D") or 64-bit ("Q") quantity in any format; the size is determined by the suffix on the mnemonic. Similarly, an "i" indicates an integer size (Byte, Word, Double Word) selected by the corresponding mnemonic suffix. Any operand indicated as being of type "c" will not cause a transfer if the register addressing mode is specified. It is assumed in this case that the slave processor is already holding the operand internally. A floating-point exception may be received and serviced at any time after the CPU has sent the ID and opcode for the first instruction and until the FPC has signalled completion for the last instruction. Co) Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified. This is because the Floating Point Registers are physically on the Floating Point Unit and are therefore available without CPU assistance. Provided in the NS32532 is the capability of communicating with a user-defined, "Custom" Slave Processor. The instruction set provided for a Custom Slave Processor defines the instruction formats, the operand classes and the communication protocol. Left to the user are the interpretations of the Op Code fields, the programming model of the Custom Slave and the actual types of data transferred. The protocol specifies only the size of an operand, not its data type. Group A instructions are only stalled when the FIFO is full, in which case the CPU will wait before sending the next instruction. Group B instructions can begin execution while some entries are still in the FIFO, but cannot complete before the FIFO is empty (Le., before all previous instructions are completed). Group C instructions cannot begin execution until the FIFO is empty. When a normal completion indication is received, the instruction address at the bottom of the FIFO is dropped. If a trap indication is received and the FIFO is not empty, the instruction address at the bottom of the FIFO is copied to the PC register and the floating-point exception is serviced. The remaining entries in the FIFO are discarded. N U1 N I N U1 Z en Co) Co) N I Co) o (:) C') ~ C') 3.0 Functional Description an (Continued) TABLE 3-1. Floating Point Instruction Protocols C'I C') en Z .... an Mnemonic C'I C'I ADDI SUBI MUll DIVI MOVI ASSf NEGf CMPf FLOORfi TRUNCfi ROUNDfi MOVFL MOVLF MOVil LFSR SFSR • C') an C'I C') en ....z (:) C'I C'I • .C') an C'I C') en z Operand 1 Class read.1 read.! read.! read.! read.f read.! read.f read.f read.f read.f read.f read.F read.L read.i read.D Operand 2 Class rmw.! rmw.! rmw.! rmw.! write.f write.f write.! read.! write.i write.i write.i write.L write.F write.! Operand 1 Issued I N/A f F L i 0 N/A write.D N/A Operand 2 Issued I N/A N/A N/A Returned Value Type and Dest • ItoOp.2 ftoOp.2 Ito Op.2 ItoOp.2 ftoOp.2 ftoOp.2 ftoOp.2 N/A N/A N/A N/A N/A N/A N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 L toOp.2 FtoOp.2 ftoOp.2 N/A DtoOp.2 PSR Bits Affected none none none none none none none N,Z,L none none none none none none none none TABLE 3-2. Custom Slave Instruction Protocols Mnemonic CCALOc CCAL1c CCAL2c CCAL3c CMOVOc CMOV1c CMOV2c CMOV3c CCMPOc CCMP1c CCVOci CCV1ci CCV2ci CCV3ic CCV4DQ CCVSQD LCSR SCSR LCR· SCR· Operand 1 Class read.c read.c read.c read.c read.c read.c read.c read.c read.c read.c read.c read.c read.c read.i read.D read.Q read.D Operand 2 Class rmw.c rmw.c rmw.c rmw.c write.c write.c write.c write.c read.c read.c write.i write.i write.i write.c write.Q write.D N/A 0 Q 0 N/A write.D N/A read.D write. 0 N/A N/A N/A Operand 1 Issued c c c c c c c c c c c c c 0 Note: = Double Word i = Integer size (B,W,D) specified in mnemonic. o c = Custom size (D:32 bits or Q:64 bits) specified in mnemonic. • = Privileged instruction: will trap if CPU is in User Mode. NI A = Not Applicable to this instruction. 2-34 Operand 2 Issued c c c c N/A N/A N/A N/A Returned Value Type and Dest. ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 c c N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A i toOp.2 itoOp.2 itoOp.2 ctoOp.2 QtoOp.2 DtoOp.2 N/A DtoOp.2 N/A DtoOp.1 PSR Bits Affected none none none none none none none none N,Z,L N,Z,L none none none none none none none none none none z (J) 3.0 Functional Description (Continued) 3.2.1 Exception Acknowledge Sequence reads the double-word entry from the Interrupt Dispatch table at address 'INTBASE + vector x 4'. See Figures 3-9 and 3-10. The CPU uses this entry to call the exception service procedure, interpreting the entry as an external procedure descriptor. A new module number is loaded into the MOD register from the least-significant word of the descriptor, and the staticbase pointer for the new module is read from memory and loaded into the SB register. Then the program-base pointer for the new module is read from memory and added to the most-significant word of the module descriptor, which is interpreted as an unsigned value. Finally, the result is loaded into the PC register. When an exception is recognized, the CPU goes through three major steps: 1) Adjustment of Registers. Depending on the source of the exception, the CPU may restore and/or adjust the contents of the Program Counter (PC), the Processor Status Register (PSR) and the currently·selected Stack Pointer (SP). A copy of the PSR is made, and the PSR is then set to reflect Supervisor Mode and selection of the Interrupt Stack. Trap (TRC) and Trap (OVF) are always disabled. Maskable interrupts are also disabled if the exception is caused by an interrupt, Trap (DBG), Trap (ABT) or bus error. 2) Vector Acquisition. A vector is either obtained from the data bus or is supplied internally by default. 3) Service Call. The CPU performs one of two sequences common to all exceptions to complete the acknowledge process and enter the appropriate service procedure. The selection between the two sequences depends on whether the Direct-Exception mode is disabled or enabled. Direct-Exception Mode Enabled The Direct-Exception mode is enabled when the DE bit in the CFG register is set to 1. In this case the CPU first pushes the saved PSR copy along with the contents of the PC register on the Interrupt Stack. The word stored on the Interrupt Stack between the saved PSR and PC register is reserved for future use; its contents are undefined. The CPU then reads the double-word entry from the Interrupt Dispatch Table at address 'INTBASE + vector x 4'. The CPU uses this entry to call the exception service procedure, interpreting the entry as an absolute address that is simply loaded into the PC register. Figure 3-11 provides a pictorial of the acknowledge sequence. It is to be noted that while the Direct-Exception Mode Disabled The Direct-Exception mode is disabled while the DE bit in the CFG register is 0 (Section 2.1.4). In this case the CPU first pushes the saved PSR copy along with the contents of the MOD and PC registers on the interrupt stack. Then it ,.~ MEMORY / CASCADE TABLE t .. I"""""'..~I! REGISTER 1 ~ N <:) ....... Z (J) W N CJ1 W N I N CJ1 ....... Z (J) W N CJ1 W ~ W <:) rv iiI'" rIJ1 0 NVI 1 NMI NON-MASKABLE INTERRUPT 2 ABT ABORT 3 SLAVE S LAVE PROCESSOR TRAP 4 ILL I LLEGAL OPERATION TRAP 5 SVC S UPERVISOR CALL TRAP 6 DVZ DIVIDE BY ZERO TRAP 7 FLG FLAG TRAP 8 BPT BREAKPOINT TRAP 9 TRC T RACE TRAP 10 UNO UNDEFINED INSTRUCTION TRAP 11 RBE RESTARTABLE BUS ERROR 12 NBE NON-RESTARTABLE BUS ERROR 13 DVF I NTEGER OVERFLOW TRAP 14 DBG DEBUG TRAP 15 RESERVED CASCADE ADDR 0 ~ W N CJ1 W NON-VECTORED INTERRUPT ~~ 0 CASCADE ADDR 14 CASCADE ADDR 15 FIXED INTERRUPTS ANOTRAPS VECTORED INTERRUPTS I DISPATCH TABLE l: 16 VECTORED INTERRUPTS r~ r'" TLlEE/9354-13 FIGURE 3·9. Interrupt Dispatch Table 2-35 FII CI ~ C') 3.0 Functional Description (Continued) In ~ U) Z ..... In 1--32BITS- N N C') In N C') U) Z ..... CI ~ I I I (PUSH) RETURN ADDRESS PC I STATUS I I MODULE PSR LOWER ADDRESSES I(PUSH) I PSR MOD MOD INTERRUPT STACK C') In N HIGHER ADDRESSES C') TL/EE/9354-14 U) Z r-------------., I I I I CASCADE TABLE I I I I I INTERRUPT BASE VECTOR I I INTBASE REGISTER DISPATCH TABLE 1 04 Y DESCRIPTOR (32 BITS) ) -1S----r-°I_·-16-_"1 DESCRIPTOR I~' OFFSET MODULE 0 MOD REGISTER ~ I MODULE TABLE NEW MODULE I MODULE TABLE ENTRY J MODULE TiBlE ENTRY 32 - ----., STATIC BASE POINTER UNK BASE POINTER + PROGRAM BASE POINTER (RESERVED) SBREGISTER PROGRAM COUNTER I 4- ENTRY POINT ADDRESS NEW STATIC BASE FIGURE 3·10. Exception Acknowledge Sequence. Direct·Exceptlon Mode Disabled. 2-36 I Tl/EE/9354-15 z 3.0 Functional Description ~ N (Continued) U\ 32 BITS Co) LOWER ADDRESSES N I N C ....... Z (PUSH) RETURN ADDRESS en Co) PC N U\ Co) STATUS N I N U\ r--(=P~U=SH=)---------------------r-PSR ....... PSR Z INTERRUPT STACK en Co) HIGHER ADDRESSES TL/EE/9354-16 N U\ Co) N W C r-------- ------, I I I I I I I I CASCADE TABLE INTBASE REGISTER I I INTERRUPT BASE VECTOR .4 DISPATCH TABLE J ABSOLUTE ADDRESS ) PROGRAM COUNTER ENTRY POINT ADDRESS J TL/EE/9354-17 FIGURE 3-11. Exception Acknowledge Sequence. Direct-Exception Mode Enabled. direct-exception mode is enabled, the CPU can respond more quickly to interrupts and other exceptions because fewer memory references are required to process an exception. The MOD and SB registers, however, are not initialized before the CPU transfers control to the service procedure. Consequently, the service procedure is restricted from executing any instructions, such as CXP, that use the contents of the MOD or SB registers in effective address calculations. mode procedures, RETT can also adjust the Stack Pointer (SP) to discard a specified number of bytes from the original stack as surplus parameter space. RETI is used to return from a maskable interrupt service procedure. A difference of RETT, RETI also informs any external interrupt control units that interrupt service has completed. Since interrupts are generally asynchronous external events, RETI does not discard parameters from the stack. Both of the above instructions always restore the Program Counter (PC) and the Processor Status Register from the interrupt stack. If the Direct-Exception mode is disabled, they also restore the MOD and SB register contents. Figures 3-12 and 3-13 show the RETT and RETI instruction flows when the Direct-Exception mode is disabled. 3.2.2 Returning from an Exception Service Procedure To return control to an interrupted program, one of two instructions can be used: RETT (Return from Trap) and RETI (Return from Interrupt). RETT is used to return from any trap, non-maskable interrupt or bus error service procedure. Since some traps are often used deliberately as a call mechanism for supervisor 2-37 • C) C") N C") II) 3.0 Functional Description (Continued) N fo---- 32 BITS----O C") en z ...... II) ~ C") II) N C") en z ...... C) LOWER ADDRESSES PROGRAM COUNTER I I RETURN ADDRESS STATUS PSR I MODULE MOD ·1 (POP) PC +- (POP) - - - - - - - - - i r - - P SR I MOD INTERRUPT HIGHER ADDRESSES STACK ~ C") II) N C") en z o MODULE TABLE MODULE TABLE ENTRY MODULE T~BLE ENTRY STATIC BASE POINTER -h LINK BASE POINTER LOWER ADDRESSES PROGRAM BASE POINTER (RESERVED) PARAMETERS / n BYTES SBREGISTER STATIC BASE STACK SELECTED IN NEWLY· POPPEDPSR. HIGHER ADDRESSES POP AND DISCARD TL/EE/9354-18 FIGURE 3-12. Return from Trap (RETT n) Instruction Flow. Direct-Exception Mode Disabled. 3,2.3 Maskable Interrupts The INT pin is a level-sensitive input. A continuous low level is allowed for generating multiple interrupt requests. The input is maskable, and is therefore enabled to generate interrupt requests only while the Processor Status Register I bit is set. The I bit is automatically cleared during service of an INT, NMI, Trap (DBG), Trap (ABT) or Bus Error request, and is restored to its original setting upon return from the interrupt service routine via the RETT or RETI instruction. 3.2.3.2 Vectored Mode: Non-Cascaded Case In the Vectored mode, the CPU uses an Interrupt Control Unit (ICU) to prioritize many interrupt requests. Upon receipt of an interrupt request on the INT pin, the CPU performs an "Interrupt Acknowledge, Master" bus cycle (Section 3.5.4.6) reading a vector value from the low-order byte of the Data Bus. This vector is then used as an index into the Dispatch Table in order to find the External Procedure Descriptor for the proper interrupt service procedure. The service procedure eventually returns via the Return from Interrupt (RETI) instruction, which performs an End of Interrupt bus cycle, informing the ICU that it may re-prioritize any interrupt requests still pending. The ICU provides the vector number again, which the CPU uses to determine whether it needs also to inform a Cascaded ICU (see below). The INT pin may be configured via the SETCFG instruction as either Non-Vectored (CFG Register bit I = 0) or Vectored (bit I = 1). 3,2,3.1 Non-Vectored Mode In the Non-Vectored mode, an interrupt request on the INT pin will cause an Interrupt Acknowledge bus cycle, but the CPU will ignore any value read from the bus and use instead a default vector of zero. This mode is useful for small systems in which hardware interrupt prioritization is unnecessary. In a system with only one ICU (16 levels of interrupt), the vectors provided must be in the range of 0 through 127; that is, they must be positive numbers in eight bits. By providing 2-38 z 3.0 Functional Description en IN (Continued) I\) U1 IN I\) I I\) o ....... "END OF INTERRUPT" z en BUS CYCLE IN I\) U1 IN I\) I I\) U1 ....... INTERRUPT CONTROL UNIT z en IN I\) U1 IN I\) t<----- 32 BITS - ' t PROGRAM COUNTER I LOWER ADDRESSES IN o (POP) RETURN ADDRESS STATUS 1 MODULE PSR PC (POP) -t-----------+PSR I MOD MOD INTERRUPT STACK HIGHER ADDRESSES MODULE TABLE MODULE TABLE ENTRY • MOOULE TABLE ENTRY STATIC BASE POINTER -r------- LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) STATIC BASE SBREGISTER TL/EE/9354-19 FIGURE 3-13. Return from Interrupt (RETI) Instruction Flow. Direct-Exception Mode Disabled. 2·39 3.0 Functional Description (Continued) a negative vector number, an ICU flags the interrupt source as being a Cascaded ICU (see below). 3.5.4.6) when processing of this interrupt actually begins. The Interrupt Acknowledge cycle differs from that provided for Maskable Interrupts in that the address presented is FFFFFFOOI6. The vector value used for the Non-Maskable Interrupt is taken as 1, regardless of the value read from the bus. The service procedure returns from the Non-Maskable Interrupt using the Return from Trap (RETI) instruction. No special bus cycles occur on return. 3.2.3.3 Vectored Mode: Cascaded Case In order to allow more levels of interrupt, provision is made in the CPU to transparently support cascading. Note that the Interrupt output from a Cascaded ICU goes to an Inter· rupt Request input of the Master ICU, which is the only ICU which drives the CPU INT pin. Refer to the ICU data sheet for details. 3.2.5 Traps In a system which uses cascading, two tasks must be per· formed upon initialization: 1) For each Cascaded ICU in the system, the Master ICU must be informed of the line number on which it receives the cascaded requests. Traps are processing exceptions that are generated as di· rect results of the execution of an instruction. The return address saved on the stack by any trap except Trap (TRC) and Trap (DBG) is the address of the first bye of the instruction during which the trap occurred. 2) A Cascade Table must be established in memory. The Cascade Table is located in a NEGATIVE direction from the location indicated by the CPU Interrupt Base (INT· BASE) Register. Its entries are 32·bit addresses, pointing to the Vector Registers of each of up to 16 Cascaded ICUs. Figure 3·9 illustrates the position of the Cascade Table. To find the Cascade Table entry for a Cascaded ICU, take its Master ICU line number (0 to 15) and subtract 16 from it, giving an index in the range -16 to -1. Multiply this value by 4, and add the resulting negative number to the contents of the INTBASE Register. The 32-bit entry at this address must be set to the address of the Hardware Vector Register of the Cascaded ICU. This is referred to as the "Cascade Address." When a trap is recognized, maskable interrupts are not disabled except for the case of Trap (ABT) and Trap (DBG). There are 11 trap conditions recognized by the NS32532 as described below. Trap (ABT): An abort trap occurs when an invalid page table entry or a protection level violation is detected for any of the memory references required to execute an instruction. Trap (SLAVE): An exceptional condition was detected by the Floating Point Unit or another Slave Processor during the execution of a Slave Instruction. This trap is requested via the Status Word returned as part of the Slave Processor Protocol (Section 3.1.4.1). Trap (ILL): Illegal operation. A privileged operation was attempted while the CPU was in User Mode (PSR bit U = 1). Upon receipt of an interrupt request from a Cascaded ICU, the Master ICU interrupts the CPU and provides the negative Cascade Table index instead of a (positive) vector number. The CPU, seeing the negative value, uses it as an index into the Cascade Table and reads the Cascade Address from the referenced entry. Applying this address, the CPU performs an "Interrupt Acknowledge, Cascaded" bus cycle, reading the final vector value. This vector is interpreted by the CPU as an unsigned byte, and can therefore be in the range of 0 through 255. Trap (SVC): The Supervisor Call (SVC) instruction was executed. Trap (OVZ): An attempt was made to divide an integer by zero. (The FPU trap is used for Floating Point division by zero.) Trap (FLG): The FLAG instruction detected a "1" in the PSR F bit. Trap (BPT): The Breakpoint (BPT) instruction was executed. Trap (TRC): The instruction just completed is being traced. In returning from a Cascaded interrupt, the service procedure executes the Return from Interrupt (RETI) instruction, as it would for any Maskable Interrupt. The CPU performs an "End of Interrupt, Master" bus cycle, whereupon the Master ICU again provides the negative Cascade Table index. The CPU, seeing a negative value, uses it to find the corresponding Cascade Address from the Cascade Table. Applying this address, it performs an "End of Interrupt, Cas· caded" bus cycle, informing the Cascaded ICU of the com· pletion of the service routine. The byte read from the Cascaded ICU is discarded. Refer to Section 3.3.1 for details. Trap (UNO): An Undefined-Instruction trap occurs when an attempt to execute an instruction is made and one or more of the following conditions is detected: the INT line before the ICU deasserted it. This could cause the ICU to provide an invalid vector. To avoid this problem the above operation should be performed with the CPU interrupt disabled. 1. The instruction is undefined. Refer to Appendix A for a description of the codes that the CPU recognizes to be undefined. 2. The instruction is a floating point instruction and the F-bit in the CFG register is O. 3. The instruction is a custom slave instruction and the C-bit in the CFG register is O. 4. The instruction is a memory·management instruction and the M-bit in the CFG register is O. 5. An LMR or SMR instruction is executed while the U-flag in the PSR is 0 and the most significant bit of the instruc· tion's short field is O. 3.2.4 Non-Maskable Interrupt The Non-Maskable Interrupt is triggered whenever a falling edge is detected on the NMI pin. The CPU performs an "Interrupt Acknowledge, Master" bus cycle (Section 6. The reserved general adressing mode encoding (10011) is used. 7. Immediate addressing mode is used for an operand that has access class different from read. Note: If an interrupt must be masked off, the CPU can do so by setting the corresponding bit in the interrupt mask register of the interrupt con· troller. However, if an interrupt is set pending during the CPU instruction that masks off that interrupt, the CPU may still perform an interrupt acknowledge cycle following that instruction since it might have sampled 2-40 z en w 3.0 Functional Description (Continued) 8. Scaled Indexing is used and the base mode is also Scaled Indexing. 9. The instruction is a floating-point or custom slave instruction that the FPU or custom slave detects to be undefined. Refer to Section 3.1.4.1 for more information. Trap (OVF): An Integer-Overflow trap occurs when the V-bit in the PSR register is set to 1 and an Integer-Overflow condition is detected during the execution of an instruction. An Integer-Overflow condition is detected in the following cases: 1. The F-flag is 1 following execution of an ADDi, ADDQi, ADDCi, SUBi, SUBCi, NEGi, ABSi, or CHECKi instruction. Trap (DBG) for external condition, are eliminated. The PC value saved on the stack is undefined. The NS32532 does not respond to bus errors indicated for instructions that are not executed. For example, no bus error exception occurs in response to asserting the BER signal during a bus cycle to prefetch an instruction that is not executed because the previous instruction caused a trap. An exception to this rule occurs if the bus error is detected during an MMU write cycle to update the R-bit in a page table entry. In this case the CPU recognizes the bus error and considers it as non-restartable even though the bus cycle that caused it belongs to a non-executed instruction. If a bus error is detected during a data transfer required for the processing of another exception or during the ICU read cycle of a RETI instruction, then the CPU considers it as a fatal bus error and enters the 'HALTED' state. 2. The product resulting from a MULi instruction cannot be represented exactly in the destination operand's location. 3. The quotient resulting from a DEli, DIVi, or QUOi instruction cannot be represented exactly in the destination operand's location. 4. The result of an ASHi instruction cannot be represented exactly in the destination operand's location. I\) (J1 w I\) I I\) o ...... z en w I\) (J1 w I\) I I\) (J1 ...... z en w I\) (J1 w I\) I W o Note 1: If the address and control signals associated with the last bus cycle that caused a bus error are latched by external hardware, then the information they provide can be used by the service procedure for restartable bus errors to analyze and resolve the exception recog- 5. The sum of the 'INC' value and the 'INDEX' operand for an ACBi instruction cannot be represented exactly in the index operand's location. Trap (DBG): A debug trap occurs when one or more of the conditions selected by the settings of the bits in the DCR register is detected. This trap can also be requested by activating the input signal DBG. Refer to Section 3.3.2 for more information. nized by the CPU. This can be accomplished because upon detecting a restartable bus error, the NS32532 stops making memory references for subsequent instructions until it determines whether the instruction that caused the bus error is executed and the exception is processed. Note 2: When a non-restartable bus error is recognized, the service procedure must execute the CINV and LMR instructions to invalidate the on-chip caches and TLB. This is necessary to maintain coherence between them and external memory. Note 1: Following execution of the WAIT instruction, then a Trap (DBG) can 3.2.7 Priority Among Exceptions be pending for a PC-match condition. In such an event, the Trap (OBG) is processed immediately. The CPU checks for specific exceptions at various points while executing an instruction. It is possible that several exceptions occur simultaneously. In that event, the CPU responds to the exception with highest priority. Figure 3-14 shows an exception processing flowchart. A non-restartable bus error is assigned highest priority and is serviced immediately regardless of the execution state of the CPU. Before executing an instruction, the CPU checks for pending Trap (DBG), interrupts, and Trap (TRG), in that order. If a Trap (DBG) is pending, then the CPU processes that exception, otherwise the CPU checks for pending interrupts. At this pOint, the CPU responds to any pending interrupt requests; nonmaskable interrupts are recongized with higher priority than maskable interrupts. If no interrupts are pending, then the CPU checks the P-flag in the PSR to determine whether a Trap (TRC) is pending. If the P-flag is 1, a Trap (TRG) is processed. If no Trap (DBG), interrupt or Trap (TRG) is pending, the CPU begins executing the instruction. Note 2: If an attempt is made to execute a memory-management instruction while in User·Mode and the M·bit in the CFG register is 0, then Trap (UNO) occurs. Note 3: If an attempt is made to execute a privileged custom instruction while in User-Mode and the C-bit in the CFG register is 0, then Trap (UNO) occurs. Note 4: While operating in User-Mode, if an attempt is made to execute a privileged instruction with an undefined use of a general addressing mode (either the reserved encoding is used or else scaled-index or immediate modes are incorrectly used), the Trap (UND) occurs. Note 5: If an undefined instruction or illegal operation is detected, then no data references are performed for the instruction. Note 6: For certain instructions that Bre relatively long to execute, such as OEIO, the CPU checks for pending interrupts during execution of the instruction. In order to reduce interrupt latency, the NS2532 can suspend executing the instruction and process the interrupt. Refer to Section 8.5 in Appendix B for more informa~ion about recognizing interrupts in this manner. 3.2.6 Bus Errors A bus error exception occurs when the BER signal is asserted in response to an instruction fetch or data transfer that is required to execute an instruction. While executing an instruction, the CPU may recognize up to four exceptions: 1. trap (ABT) Two types of bus errors are recognized: Restartable and Non-Restartable. Restartable bus errors are recognized during read bus cycles, except for MMU read cycles (from Page Tables) needed to translate the address of a result being stored into memory. All other bus errors are non-restartable. The CPU responds to restartable bus errors by suspending the instruction that it was executing. When a non-restartable bus error is detected, the CPU responds immediately and the instruction being executed is terminated. In this case, any results that have not yet been written to memory are discarded, and any pending traps other than 2. restartable bus error 3. trap (DBG) or interrupt, if the instruction is interruptible 4. one of 7 mutually exclusive traps: SLAVE, ILL, SVC, DVZ, FLG, BPT, UND Trap (ABT) and restartable bus error have equal priority; the CPU responds to the first one detected. If no exception is detected while the instruction is executing, then the instruction is completed and the PC is updated to point to the next instruction. If a Trap (OVF) is detected, then it is processed at this time. 2-41 • CI ~ 3.0 Functional Description (Continued) ~ C') (I) Z ..... In N N C') In N C') (/) Z ~ N C') In N C') (I) Z NO TLfEEf9354-20 FIGURE 3-14. Exception Processing Flowchart 2·42 3.0 Functional Description (Continued) While executing the instruction, the CPU checks for enabled debug conditions. If an enabled debug condition is met, a Trap (DBG) is held pending until after the instruction is completed (see Note 3). If another exception is detected before the instruction is completed, the pending Trap (DBG) is removed and the DSR register is not updated. 7. If "Byte" is in the range -16 through -1, then the interrupt source is Cascaded. (More negative values are reserved for future use.) Perform the following: a. Read the 32-bit Cascade Address from memory. The address is calculated as INTBASE + 4* Byte. b. Read "Vector," applying the Cascade Address just read and Status Code 00101 (Interrupt Acknowledge, Cascaded). 8. Perform Service (Vector, Return Address), Figure 3-15. Note 1: Trap (DBG) can be detected simultaneously with Trap (OVF). In this event, the Trap (OVF) is processed before the Trap (DBG). Note 2: An address-compare debug condition can be detected while processing a bus error, interrupt, or trap. In this event, the Trap (DBG) is held pending until after the CPU has processed the first excep- 3.2.8.2 AbortlRestartable Bus Error Sequence tion. 1. Suspend instruction and restore the currently selected Stack Pointer to its original contents at the beginning of the instruction. 2. Clear the PSR P bit. 3. Copy the PSR into a temmporary register, then clear PSR bits T, V, U, S and I. 4. Set "Vector" to the value corresponding to the exception type: Abort: Vector = 2 Restartable Bus Error: Vector = 11 Note 3: Between operations of a string instruction. the CPU responds to pending operand address compare and external debug conditions as well as interrupts. If a PC-match debug condition is detected while executing a string instruction, then Trap (DBG) is held pending until the instruction has completed. 3.2.8 Exception Acknowledge Sequences: Detailed Flow For purposes of the following detailed discussion of exception acknowledge sequences, a single sequence called "service" is defined in Figure 3-15. Upon detecting any interrupt request, trap or bus error condition, the CPU first performs a sequence dependent upon the type of exception. This sequence will include saving a copy of the Processor Status Register and establishing a vector and a return address. The CPU then performs the service sequence. 5. Set "Return Address" to the address of the first byte of the suspended instruction. 6. Perform Service (Vector, Return Address), Figure 3-15. 3.2.8.3 SLAVE/ILL/SVC/DVZ/FLG/BPTlUND Trap Sequence 3.2.8.1 Maskable/Non-Maskable Interrupt Sequence This sequence is performed by the CPU when the NMI pin receives a falling edge, or the INT pin becomes active with the PSR I bit set. The interrupt sequence begins either at the next instruction boundary or, in the case of an interruptible instruction (e.g., string instruction), at the next interruptible point during its execution. 1. If an interruptible instruction was interrupted and not yet completed: a. Clear the Processor Status Register P bit. b. Set "Return Address" to the address of the first byte of the interrupted instruction. Otherwise, set "Return Address" to the address of the next instruction. 2. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits T, V, U, S, P and I. 3. If the interrupt is Non-Maskable: 1. Restore the currently selected Stack Pointer and the Processor Status Register to their original values at the start of the trapped instruction. 2. Set "Vector" to the value corresponding to the trap type. SLAVE: Vector = 3. ILL: Vector = 4. SVC: Vector = 5. DVZ: Vector = 6. FLG: Vector = 7. BPT: Vector = 8. UND: Vector = 10. 3. If Trap (ILL) or Trap (UND) a. Clear the Processor Status Register P bit. 4. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits T, V, U, Sand P. 5. Set "Return Address" to the address of the first byte of the trapped instruction. 6. Perform Service (Vector, Return Address), Figure 3-15. a. Read a byte from address FFFFFF0016, applying Status Code 00100 (Interrupt Acknowledge, Master). Discard the byte read. b. Set "Vector" to 1. c. Go to Step 8. 4. If the interrupt is Non-Vectored: 3.2.8.4 Trace Trap Sequence 1. In the Processor Status Register (PSR), clear the P bit. 2. Copy the PSR into a temporary register, then clear PSR bits T, V, U and S. 3. Set "Vector" to 9. a. Read a byte from address FFFFFE0016, applying Status Code 00100 (Interrupt Acknowledge, Master). Discard the byte read. 4. Set "Return Address" to the address of the next instruction. 5. Perform Service (Vector, Return Address), Figure 3-15. b. Set "Vector" to O. c. Go to Step 8. 5. Here the interrupt is Vectored. Read "Byte" from address 3.2.8.5 Integer-Overflow Trap Sequence FFFFFE0016, applying Status Code 00100 (Interrupt Acknowledge, Master). 1. Copy the PSR into a temporary register, then clear PSR bits T, V, U, Sand P. 6. If "Byte" ;;, 0, then set "Vector" to "Byte" and go to Step 2. Set "Vector" to 13. 8. 2-43 C) C") r---------------------------------------------------------------------------------, ~ 3.0 Functional Description (Continued) C'II C") 3. Set "Return Address" to the address of the next instruction. Z 4. Perform Service (Vector, Return Address), Figure 3-15. C") 1.1) tn ;;; C'II ~ C") 1.1) C'II C") 1. If PC-match condition, then go to Step 3. ~ 1.1) C'II C") tn Z Besides the Breakpoint (BPT) instruction that can be used to generate soft breaks, the CPU also provides instruction tracing as well as debug trap (or hardware breakpoints) capabilities. Details on these features are provided in the following sub-sections. 3.2.8.6 Debug Trap Sequence 2. If a String instruction was interrupted and not yet completed: ~ C") The NS32532 provides serveral features to assist in program debugging. A debug condition can be recognized either at the next instruction boundary or, in the case of the String instructions, at the next interruptible point during its execution. tn Z 3.3 DEBUGGING SUPPORT 3.3.1 Instruction Tracing Instruction tracing is a very useful feature that can be used during debugging to single-step through selected portions of a program. Tracing is enabled by setting the T -bit in the PSR Register. When enabled, the CPU generates a Trace Trap (TRC) after the execution of each instruction. a. Clear the Processor Status Register P bit. b. Set "Return Address" to the address of the first byte of the instruction. c. Go to Step 4. At the beginning of each instruction, the T bit is copied into the PSR P (Trace "Pending") bit. If the P bit is set at the end of an instruction, then the Trace Trap is activated. If any other trap or interrupt request is made during a traced instruction, its entire service procedure is allowed to complete before the Trace Trap occurs. Each interrupt and trap sequence handles the P bit for proper tracing, guaranteeing only one Trace Trap per instruction, and guaranteeing that the Return Address pushed during a Trace Trap is always the address of the next instruction to be traced. 3. Set "Return Address" to the address of the next instruction. 4. Set "Vector" to 14. 5. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits T, V, U, S, P and I. 6. Perform Service (Vector, Return Address), Figure 3-15. 3.2.8.7 Non-Restartable Bus Error Sequence 1. Set "Vector" to 12. Due to the fact that some instructions can clear the T and P bits in the PSR, in some cases a Trace Trap may not occur at the end of the instruction. This happens when one of the privileged instructions BICPSRW or LPRW PSR is executed. 2. Set "Return Address" to "Undefined". 3. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits T, V, U, S, P and I. 4. Perform a dummy read of the Slave Status Word to reset the Slave Processor. 5. Perform Service (Vector, Return Address), Figure 3-15. TABLE 3-3. Summary of Exception Processing Instruction Ending Cleared Before SavingPSR Cleared After SavingPSR Suspended Terminated P Undefined TVUSI TVUSPI Interrupt Before Instruction None/P· TVUSPI ABT ILL, UND SLAVE,SVC, DVZ, FLG,BPT OVF TRC DBG Suspended Suspended Suspended Completed Before Instruction Before Instruction P P None None P None/P· TVUSI TVUS TVUSP TVUSP TVUS TVUSPI Exception Restartable Bus Error Nonrestartable Bus Error .. *Nate: The P bit of the saved PSR IS cleared In case the exception IS acknowledged before the Instruction IS completed (e.g., Interrupted stnng instruction). ThiS IS to avoid a mid-instruction trace trap upon return from the Exception Service Routine. Service (Vector, Return Address): 1) Push the PSR copy onto the Interrupt Stack as a 16-blt value. 2) If Direct-Exception mode Is selected, then go to step 4. 3) Push MOD Register Into the Interrupt Stack as a lB-blt value. 4) Read 32·blt Interrupt Dispatch Table (lOT) entry at address 'INTBASE + vector x 4'. 5) If Dlrect·Exceptlon mode Is selected, then go to Step 10. 6) Move the LS. word of the lOT entry (Module Field) Into the MOD register. 7) Read the Program Base pOinter from memory address 'MOD Program Counter. + 8', and add to It the M.S. word of the lOT entry (Offset Field), placing the result In the 8) Read the new Static Base pOinter from the memory address contained In MOD, placing it into the SB Register. 9) Go to Step 11. 10) Place lOT entry in the Program Counter. 11) Push the Return Address onto the Interrupt Stack as a 32-blt quantity. 12) Serialize: Non·sequentially fetch first Instruction of Exception Service Routine. Note: Some of the Memory Accesses indicated in the service sequence may be performed in an order different from the one shown. FIGURE 3-15. Service Sequence 2-44 z fJ) 3.0 Functional Description (0) I\) (Continued) In other cases, it is still possible to guarantee that a Trace Trap occurs at the end of the instruction, provided that special care is taken before returning from the Trace Trap Service Procedure. In case a BICPSRB instruction has been executed, the service procedure should make sure that the T bit in the PSR copy saved on the Interrupt Stack is set before executing the RETT instruction to return to the program begin traced. If the RETT or RETI instructions have to be traced, the Trace Trap Service Procedure should set the P and T bits in the PSR copy on the Interrupt Stack that is going to be restored in the execution of such instructions. Iy with PFS. If the instruction is not completed because a higher priority trap (I.e., ABORT) is detected, the BP signal mayor may not be asserted. Note 1: While executing the MOVUS and MOVSU instructions, the campare-address condition is enabled for the User space memory reference under control of the UD-bit in the DCA. Note 2: When the LPRi instruction is executed to load a new value into the BPC. CAR or OCR, it is undefined whether the address-compare and PC-match conditions, in effect while executing the instruction, are detected under control of the old or new contents of the loaded register. Therefore, any LPRi instruction that alters the control of the address·compare or PC·match conditions should use register or im· mediate addressing mode for the source operand. Note: If instruction tracing is enabled while the WAIT instruction is executed, the Trap (fRC) occurs after the next interrupt, when the interrupt 3.4 ON-CHIP CACHES service procedure has returned. The NS32532 provides three on-chip caches: the Instruction Cache (IC), the Data Cache (DC) and the Translation Look-aside Buffer (TLB). 3.3.2 Debug Trap Capability The CPU recognizes three different conditions to generate a Debug Trap: The first two are used to hold the contents of frequently used memory locations, while the TLB holds address-translation information. The IC and DC can be individually enabled by setting appropriate bits in the CFG Register (See Section 2.1.4); the TLB is automatically enabled when address-translation is enabled. The CPU also provides a locking feature that allows the contents of the IC and DC to be locked to specific memory locations. This is accomplished by setting the LlC and LDC bits in the CFG register. 1) Address Compare 2) PC Match 3) External These conditions can be enabled and monitored through the CPU Debug Registers. An address-compare condition is detected when certain memory locations are either read or written. The doubleword address used for the comparison is specified in the CAR Register. The address-compare condition can be separately enabled for each of the bytes in the specified double-word, under control of the CBE bits of the DCR Register. The VNP bit in the DCR controls whether virtual or physical addresses are compared. The CRD and CWR bits in the DCR separately enable the address compare condition for read and write references; the CAE bit in the DCR can be used to disable the compare-address condition independently from the other control bits. The CPU examines the address compare condition for all data reads and writes, reads of memory locations for effective address calculations, Interrupt-Acknowledge and End-of-Interrupt bus cycles, and memory references for exception processing. An address-compare condition is not detected for MMU references to Page Table Entries. Cache locking can be successfully used in real-time applications to guarantee fast access to critical instruction and data areas. Details on the organization and function of each of the caches are provided in the following sections. Note: The size and organization of the on-Chip caches may change in future Series 32000 microprocessors. This however, will not affect software compatibility. 3.4.1 Instruction Cache (IC) The basic structure of the instruction cache (IC) is shown in Figure 3-16. The IC stores 512 bytes of code in a direct-mapped organization with 32 sets. Direct-mapped means that each set contains only one block, thus each memory location can be loaded into the IC in only one place. The PC-match condition is detected when the address of the instruction equals the value specified in the BPC register. The PC-match condition is enabled by the PCE bit in the DCR. Detection of address-compare and PC-match conditions is enabled for User and Supervisor Modes by the UD and SD bits in the DCR. The DEN-bit can be used to disable detection of these two conditions independently from the other control bits. An external condition is recognized whenever the DBG signal is activated. When the CPU detects an address-compare or PC-match condition while executing an instruction or processing an exception, then Trap (DBG) occurs if the TR bit in the DCR is 1. When an external debug condition is detected, Trap (DBG) occurs regardless of the TR bit. The cause of the Trap (DBG) is indicated in the DSR Register. Each block contains a 23-bit tag, which holds the most-significant bits of the physical address for the locations stored in the block, along with 4 double-words and 4 validity bits (one for each double-word). A 4-double-word instruction buffer is also provided, which is loaded either from a selected cache block or from external memory. Instructions are read from this buffer by the loader unit and transferred to an 8-byte instruction queue. The IC mayor may not be enabled to cache an instruction being fetched by the CPU. It is enabled when the IC bit in the CFG Register is set to 1 and either the address translation is disabled or the CI bit in the Level-2 PTE used to translate the virtual address of the instruction is set to o. If the IC is disabled, the CPU bypasses it during the instruction fetch and its contents are not affected. The instruction is read directly from external memory into the instruction buffer. When an address-compare or PC-match condition is detected while executing an instruction, the CPU asserts the BP signal at the beginning of the next instruction, synchronous- 2-45 U1 (0) I\) • I\) o ....... Z fJ) (0) I\) U1 (0) I\) · I\) U1 ....... Z fJ) (0) I\) U1 (0) · N (0) o =r----------------------------------------------------------- ~ 3.0 Functional Description (Continued) en z ...... TAG MEMORY C'II 23 ; ~ 32 32 INSTRUCTION MEMORY Z ~ CACHE TAG COMPARE INVALIDATE ADDRESS CI) ~ en z 32 23 31 9843210 INSTRUCTION AOORESS INSTRUCTION OOUBLE-WORD TL/EE/9354-21 FIGURE 3-16. Instruction Cache Structure When the IC is enabled, the instruction address bits 4 to 8 are used to select the IC set where the instruction may be stored. The tag corresponding to the single block in the set is compared with the 23 most-significant bits of the instruction's physical address. The 4 double-words in this block are loaded into the instruction buffer and the 4 validity bits are also retrieved. Bits 2 and 3 of the instruction's physical address select one of these double-words and the associated validity bit. 3.4.2 Data Cache (DC) The Data Cache (DC) stores 1,024 bytes of data in a twoway set associative organization as shown in Figure 3-17. Each of the 32 sets has 2 cache blocks. Each block contains a 23-bit tag, which holds the most-significant bits of the physical address for the locations stored in the block, along with 4 double-words and 4 validity bits (one for each double-word). The DC is enabled for a data read when all of the following conditions are satisfied. • The DC bit in the CFG Register is set to 1. If the tag matches and the selected double-word is valid, a cache 'hit' occurs and the double-word is directly transferred to the instruction queue for decoding; otherwise a cache 'miss' will result. • Either the address translation is disabled or the CI bit in the Level-2 PTE used to translate the virtual address of the data reference is set to O. In the latter case, if the cache is not locked, the CPU will take the following actions. • The reference is not an interlocked read resulting from executing a CBITI or SBITI instruction. If the DC is disabled, the CPU bypasses it during the data read and its contents are not affected. The data is read directly from external memory. The DC is also bypassed for MMU reads from Page Table entries during address translation and for Interrupt-Acknowledge and End-of-Interrupt bus cycles. When the DC is enabled for a data read, the address bits 4 to 8 are used to select the DC set where the data may be stored. The tags corresponding to the two blocks in the set are compared to the 23 most-significant bits of the phYSical address. Bits 2 and 3 of the address select one double-word in each block and the associated validity bit. First, if the tag of the selected block does not match, the tag is loaded with the 23 most-significant bits of the instruction address and all the validity bits are cleared. Then, the instruction is read from external memory into the instruction buffer. If the CII N input signal is not active during the fetching of the missing instruction, then the IC is updated and the instruction double-words fetched from memory are stored into it with the validity bits set. If the cache is locked, its contents are not affected, as the CPU reads the missing instruction from external memory. Whenever the CPU accesses external memory, whether or not the IC is enabled, it always fetches instruction double· words in a non-wrap-around fashion. Refer to Sections 3.5.4.3 and 3.5.6 for more information. If one of the tag matches and the selected double-word in the corresponding block is valid, a cache 'hit' occurs and the data is used to execute the instruction; otherwise a cache 'miss' will result. In the latter case, if the cache is not locked, the CPU will take the following actions. The contents of the instruction cache can be invalidated by software through the CINV instruction or by hardware through the appropriate cache invalidation input signals. Clearing the IC bit in the CFG Register also invaiidates the instruction cache. Refer to Sections 3.5.10 and C.3 for details. Note: If the IC is enabled for a certain Inslruction and a 'miss' occurs due 10 a tag mismalch, the CPU will updale the tag and clear all the validity bHs before fetching the Instruction from external memory. If the CIIN Input signal is activated during the fetching of that instruction, the validity bits are not set and the IC is not updated. 2-46 z 3.0 Functional Description U) Co) (Continued) N U1 Co) ~ ~ Z DECODE U) Co) N U1 5 23 Co) N 23 N U1 .... Z U) CACHE INVALIDATE ADDRESS TAG COMPARE Co) N U1 Co) ~ Co) o 23 31 DATA ADDRESS DATA TL/EE/9354-22 FIGURE 3-17. Data Cache Structure First, if the tag of either block in the set matches the data address, that block is selected for updating. Otherwise, if neither tag matches, then the least recently used block is selected; its tag is loaded with the 23 most-significant bits of the data address, and all the validity bits are cleared. ory. In software, the use of caches can be inhibited for individual pages using the CI-bit in the level-2 Page Table Entries. The CINV instruction can be executed to invalidate entriely the Instruction Cache and/or Data Cache; the CINV instruction can also be executed to invalidate a single 16-byte block in either or both caches. Then, the data is read from external memory; up to 4 double-word bits are read into the cache in a wrap-around fashion. Refer to Sections 3.5.4.3 and 3.5.6 for more information. If the CIIN and IODEC input signals are both inactive during the bus cycles performed to read the missing data, then the DC is updated, as each double-word is read from memory, and the corresponding validity bit is set. If the cache is locked, its contents are not affected, as the CPU reads the missing data from external memory. In hardware, the use of the caches can be inhibited for individual locations using the CIIN input signal. A cache invalidation request can cause the entire Instruction Cache and/ or Data Cache to be invalidated; a cache invalidation request can also cause invalidation of a single set in either or both caches. Refer to Section 3.5.7 for more information. An external "Bus Watcher" circuit can also be used to help maintain cache coherence. The Bus Watcher observes the CPU's bus cycles to maintain a copy of the on-chip cache tags while also monitoring writes to main memory by DMA controllers and other microprocessors in the system. When the Bus Watcher detects that a location in one of the onchip caches has been modified in main memory, it issues an invalidation request to the CPU. The CPU provides the necessary information on the system interface to help maintain an external copy of the on-Chip tags. The DC is enabled for a data write whenever the DC bit in the CFG Register is set to 1, including interlocked writes resulting from executing the CBITI and SBITI instructions, and MMU writes to Page Table entries during address translation. The DC does not use write allocation. This means that, during a write, if a cache 'hit' occurs, the DC is updated, otherwise it is unaffected. The data is always written through to external memory. The status codes differentiate between instruction fetches and data reads. The set, affected during the bus access (if ClOUT is low), as well as the tag can be determined from the address bits A4 through AS and A9 through A31 respectively. The contents of the data cache can be invalidated by software through the CINV instruction or by hardware through the appropriate cache invalidation input signals. Clearing the DC bit in the CFG Register also invalidates the data cache. Refer to Sections 3.5.10 and C.3 for details. During a data read the CPU also indicates, by means of the CASEC signal, which block in the set is being updated. Note: If Ihe DC is enabled for a certain data reference and a "miss" occurs due to tag mismatch, the CPU will update the tag of the least recently used block and clear all the validity bits before reading the data from external memory. If either CIIN or IODEC are activated during the data Whenever a CINV instruction is executed, the operation code and operand appear on the system interface using slave processor bus cycles. Thus, invalidations of the onchip caches by software can be monitored externally. read bus cycles, the validity bits are not set and the DC is not updated. Note, however, that the software is responsible for communicating to the external circuitry the values of the cache enable and lock bits in the CFG Register, since the CPU does not generate any special cycle (e.g., Slave Cycle) when the CFG Register is loaded. 3.4.3 Cache Coherence Support The NS32532 provides several mechanisms for maintaining coherence between the on-chip caches and external mem- 2-47 PI o · r-------------------------------------------------------------------------~ ('I) N ('I) It) N ('I) en z ...... It) · N N ('I) It) N ('I) en z ...... o N N• ('I) It) N ('I) en z 3.0 Functional Description (Continued) 3.4.4 Translation Look·aside Buffer (TLB) were not already set. For these reasons, there is no need to replicate either the V bit or the R bit in the TLB entries. Whenever a Page Table Entry in memory is altered by software, it is necessary to purge any matching entry from the TLB, otherwise the corresponding addresses would be translated according to obsolete information. TLB entries may be selectively purged by writing a virtual address to one of the IVARn registers using the LMR instruction. The TLB entry (if any) that matches that virtual address is then purged, and its space is made available for another translation. Purging is also performed whenever an address space is remapped by altering the contents of the PTBO or PTBI register. When this is done, all the TLB entries corresponding to the address space mapped by that register are purged. Turning translation on or off (via the MCR TU and TS bits) does not affect the contents of the TLB. It is possible to maintain an external copy of the valid contents of the on-chip TLB by observing the CPU's system interface during the replacement and invalidation of TLB entries. Whenever the CPU replaces a TLB entry, the page tables are accessed in external memory using bus cycles with a special Status. Because a FIFO replacement algorithm is used, it is possible to determine which entry is being replaced by using a 6-bit counter that is incremented whenever a Level-l PTE is accessed. The contents of the new entry can be found as follows: The Translation Look-aside Buffer is an on-chip fully associative memory. It provides direct virtual to physical mapping for 64 pages, thus minimizing the time needed to perform the address translation. The efficiency of the on-chip MMU is greatly increased by the TLB, which bypasses the much longer Page Table lookup in over 99% of the accesses made by the CPU. Entries in the TLB are allocated and replaced automatically; the operating system is not involved. The TLB entries cannot be read or written by software; however, they can be purged from it under program control. Figure 3-18 shows a model of the TLB. Information is placed into the TLB whenever a Page Table lookup is performed. If the retrieved mapping is valid (V = 1 in both levels of the Page Tables), and the access attempted is permitted by the protection level, an entry of the TLB is loaded from the information retrieved from memory. The on-chip MMU places the Virtual Page Number (VPN) and the Address Space qualifier (AS) into the tag portion of the TLB entry. The value portion of the entry is loaded from the Page Tables as follows: • The PFN field (20 bits) as well as the CI and M bits are loaded from the Level-2 Page Table Entry (PTE2). • The PL field (2 bits) is loaded to reflect the most restrictive of the protection levels imposed by the PL fields of the Level-l and Level-2 Page Table Entries (PTE 1 and PTE2). • VPN appears on A2 through All during the PTEI and PTE2 accesses. The most-significant 10 bits appear during the PTEI access, and the least-significant 10 bits appear during the PTE2 access. • AS can be determined from the U/S signal during the PTEI access. Not shown in the figure is an additional bit associated with each TLB entry which indicates whether the entry is valid. • PFN, M and CI can be determined from the PTE2 value read on the Data Bus. PL can be determined from the most restrictive of the PTEI and PTE2 values read on the Data Bus. Whenever a LMR instruction is executed, the operation code and operand appear on the system interface using slave processor bus cycles. Thus, the information is available externally to determine the translation modes controlled by the MCR and to identify that a TLB entry has been invalidated. When the PTBO register is loaded by executing the 'LMR PTBO src' instruction, the internal FIFO pointer is also reset to point to the first TLB entry. Address translation can be either enabled or disabled for a memory reference. If translation is disabled, then the TLB is bypassed and the physical address is identical to the virtual address. When translation is enabled and a virtual address needs to be translated, the high-order 20 bits (VPN) and the Address Space qualifier are compared associatively to the corresponding fields in all entries of the TLB. For a read reference, if the tag portion of a valid TLB entry, completely matches the input values, then the value portion of the entry is used to complete the address translation and protection checking. For a write reference, if a valid entry with a matching tag is present in the TLB, then the M bit is examined. If the M bit is 1, the value portion of the entry is used to complete the address translation and protection checking. If the M bit is 0, the entry is invalidated. Note that the contents of the TLB maintained externally include copies of all valid entries in the on-chip TLB, but the external copy may include some entries that are invalid in the on-chip TLB. For example, when the TLB is searched for a write reference and a matching entry is found with the M bit clear, then the on-chip entry is invalidated and a miss is processed. It is not possible to detect externally that the old matching entry on-chip has been invalidated. In either case, if a protection level violation is detected, a translation exception (Trap (ABT)) is generated. When no matching entry is found or a matching entry is invalidated because the M bit is 0 in a write reference, a Page Table lookup is performed. The virtual address is translated according to the algorithm given in Section 2.4.5 and the translation information is loaded into the TLB. The recipient entry is selected by an on-chip circuit that implements a First-In-First-Out (FIFO) algorithm. 3.5 SYSTEM INTERFACE This section provides general information on the NS32532 interface to the external world. Descriptions of the CPU requirements as well as the various bus characteristics are provided here. Details on other device characteristics including timing are given in Chapter 4. Note that for a translation to be loaded into the TLB it is necessary that the Level-l and Level-2 Page Table Entries be valid (V bit = 1). Also, it is guaranteed that in the process of loading a TLB entry (during a Page Table lookup) the Level-l and Level-2 R bits will be set in memory if they 3.5.1 Power and Grounding The NS32532 requires a single 5-volt power supply, applied on 21 pins. The logic voltage pins (VCCL 1 to VCCL6) supply 2-48 z 3.0 Functional Description CJ) Co) (Continued) TAG , . VALUE H AS· VPN (20 BITS) PL VIRTUAL ADDRESS 0 (Ufs, ZZZ) 11 xxx M CI PFN (20 BITS) 0 0 mmm 1 YYY 11 0 0 nnn 0 zzz 11 1 1 PPP COMPARISON N U1 Co) ~ N o Z TRANSLATED ADDRESS (PPP) CJ) Co) N U1 Co) www 1 1 00 0 ~ N U1 qqq TL/EE/9354-23 Z CJ) Co) ·AS represents the virtual address space qualifier. N U1 FIGURE 3-18. TLB Model Co) the power to the on-chip logic. The buffer voltage pins (VCCBl to VCCB14) supply the power to the output drivers of the chip. The bus clock power pin (VCCClK) is the power supply for the on-chip clock drivers. All the voltage pins should be connected together by a power (VCC) plane on the printed circuit board. 3.5.2 Clocking The NS32532 requires a single-phase input clock Signal (ClK) with frequency twice the CPU's operating frequency. This clock Signal is internally divided by two to generate two non-overlapping phases PHil and PHI2. One single-phase clock signal BClK in phase with PHil and its complement BClK, are also generated and output by the CPU for timing reference. The NS32532 grounding connections are made on 20 pins. The logic ground pins (GNDll to GNDl6) are the ground pins for the on-chip logic. The buffer ground pins (GNDBI to GNDB13) are the ground pins for the output drivers of the chip. The bus clock ground pin (GNDClK) is the ground connection for the on-chip clock drivers. All the ground pins should be connected together by a ground plane on the printed circuit board. Following power-on, the phase relationship between BClK and ClK is undefined. Nevertheless, in some systems it may be necessary to synchronize the CPU bus timing to an external reference. The SYNC input signal can be used to initialize the phase relationship between ClK and BClK. SYNC can also be used to stretch BClK (low) while ClK is toggling. Both power and ground connections are shown in Figure 3-19. SYNC is sampled on each rising edge of ClK. As shown in Figure 3-20, whenever SYNC is sampled low, BClK stops toggling and stays low. On the first rising edge that SYNC is sampled high, BClK is driven high and then toggles on each subsequent rising edge of ClK. Every riSing edge of BClK defines a transition in the timing state (ooT-State") of the CPU. +5V VCCL1 _ 6 14 veeBI-14 OTHER Vee VCCCLK I--+-+ CONNECTIONS One T -State represents the execution of one microinstruction within the CPU and/or one step of an external bus transfer. (Vee PLANE) NS32532 CPU Not.: The CPU requirement on the maximum period of BCLK must be satisfied when SYNC is asserted at times other than reset. 3.5.3 Resetting The RST input pin is used to reset the NS32532. The CPU samples RST synchronously on the rising edge of BClK. Whenever a low level is detected, the CPU responds immediately. Any instruction being executed is terminated; any results that have not yet been written to memory are discarded; and any pending bus errors, interrupts, and traps are eliminated. The internal latches for the edge-sensitive NMI and DBG signals are cleared. GNDL1- 6 GNDBI-13 OTHER GROUND GNDCLK I--+-+ (GND CONNECTIONS PLANE) 1..-_ _ _ _ _..... TL/EE/9354-24 FIGURE 3-19. Power and Ground Connections I I I I I I I I I , ClK [ :~Dllljj~ FIGURE 3-20. Bus Clock Synchronization 2-49 TLlEE/9354-25 ~ Co) o 3.0 Functional Description (Continued) The CPU stores the PC contents in the RO Register and the PSR contents in the least-significant word of R1, leaving the most-significant word undefined. The PC is then cleared to 0 and so are all the implemented bits in the PSR, MSR, MCR and CFG registers. The DEN-bit in the OCR Register is also cleared to O. After reset, the remaining implemented bits in OCR and the contents of all other registers are undefined. The CPU begins executing the instruction at Address O. On application of power, RST must be held low for at least 50 /Ls after Vee is stable. This is to ensure that all on-chip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain active for not less than 64 BCLK cycles. See Figures 3-21 and 3-22. 3.5.4.1 Bus Status The CPU presents five bits of Bus Status information on pins STO-ST4. The various combinations on these pins indicate why the CPU is performing a bus cycle, or, if it is idle on the bus, then why is it idle. The Bus Status pins are interpreted as a five·bit value, with STO the least significant bit. Their values decode as follows: 00000 The bus is idle because the CPU does not yet need to access the bus. 00001 The bus is idle because the CPU is waiting for an interrupt following execution of the WAIT instruc· tion. While in ~Reset state, the CPU drives the Signals ADS, BEO-3, BMT, CONF and HLDA inactive. The data bus is floated and the state of all other output signals is undefined. 00010 The bus is idle because the CPU has halted after detecting an abort or bus error while processing an exception. Note: If SYNC is asserted while the CPU is being rese~ then BClK does not toggle. Consequently. SYNC must be high for at least 200 ClK cycles while RST is low. 00011 The bus is idle because the CPU is waiting for a Slave Processor to complete executing an instruction. 00100 Interrupt Acknowledge, Master. The CPU is reading an interrupt vector to acknowledge an interrupt request. 00101 Interrupt Acknowledge, Cascaded. JLSL BCLK[._......j-...... R~[. The CPU is reading an interrupt vector to acknowl· edge a maskable interrupt request from a Cascaded Interrupt Control Unit. 00110 End of Interrupt, Master. i..-O!: 100 CLo;aCK ____~_______~__ CL__ ES - The CPU is performing a read cycle to indicate that it is executing a Return from Interrupt (RETI) instruction at the completion of an interrupt's service procedure. 00111 End of Interrupt, Cascaded. The CPU is performing a read cycle from a Cascaded Interrupt Control Unit to indicate that it is executing a Return from Interrupt (RETI) instruction at the completion of an interrupt's service procedure. 01000 Sequential Instruction Fetch. ; - - - - O!: 50 S's TL/EE/9354-26 FIGURE 3-21. Power-On Reset Requirements c _______......1.[ RST \\~ O!: 1 0 CLOCK :=r-0 CYCLES S The CPU is fetching the next double-word in sequence from the instruction stream. TUEE/9354-27 FIGURE 3-22. General Reset Timing 01001 3.5.4 Bus Cycles The NS32532 CPU will perform bus cycles for one of the following reasons: 1. To fetch instructions from memory. 2. To write or read data to or from memory or peripheral devices. Peripheral input and output are memory mapped in the Series 32000 family. Non-Sequential Instruction Fetch. The CPU is fetching the first double-word of a new sequence of instruction. This will occur as a result of any JUMP or BRANCH, any exception, or after the execution of certain instructions. 01010 Data Transfer. The CPU is reading or writing an operand for an instruction, or it is referring to memory while processing an exception. 01011 Read RMW Class Operand. 3. To read and update Page Table Entries in memory to perform memory management functions. 4. To acknowledge an interrupt and allow external circuitry to provide a vector number, or to acknowledge completion of an interrupt service routine. 5. To transfer information to or from a Slave Processor. The CPU is reading an operand with access class of read-modify-write. 01100 Read for Effective Address Calculation. The CPU is reading a pOinter from memory in order to calculate an effective address for Memory Relative or External addressing modes. In terms of bus timing, cases 1 through 4 above are identical. For timing specifications, see Section 4. The only external difference between them is the 5-bit code placed on the Bus Status pins (STO-ST4). Slave Processor cycles differ in that separate control signals are applied (Section 3.5.4.7). 01101 Access PTE1 by MMU. The CPU is reading or writing a Level-1 Page Table Entry while the on-chip MMU is translating virtual address. 2-50 3.0 Functional Description z ~ N (Continued) 01110 Access PTE2 by MMU. The CPU is reading or writing a Level-2 Page Table Entry while the on-chip MMU is translating a virtual address. 11101 Transfer Slave Processor Operand. T2 I T1 OR c.:I nI ~ N o ..... - IX: - AO-3{ 00-31 [ '/, The CPU is reading a status word from a slave processor after the slave processor has activated the FSSR signal. + Tl BCLK [ The CPU is transferring an operand to or from a Slave Processor. 11110 Read Slave Processor Status. 11111 Broadcast Slave Processor ID U1 ANY IT-STATE I Z rl/. 'I/, ~- c.:I IX ---- rG>- - _. N U1 c.:I N N U1 ..... Z ~ N I \. ODIN [ OPCODE. CJ) I-)( I-- U1 c.:I The CPU is initiating the execution of a Slave Instruction by transferring the first 3 bytes of the instruction, which specify the Slave Processor identification and operation. ADS [ BIIT [ 3.5.4.2 Basic Read and Write Cycles The sequence of events occurring during a basic CPU access to either memory or peripheral device is shown in Figure 3-23 for a read cycle, and Figure 3-24 for a write cycle. The cases shown assume that the selected memory or peripheral device is capable of communicating with the CPU at full speed. If not, then cycle extension may be requested through the RDY line. See Section 3.5.4.4. \.. I I\.V Vb I~ / CONr [ ROY [ A full speed bus cycle is performed in two cycles of the BCLK clock, labeled T1 and T2. For both read and write bus cycles the CPU asserts ADS during the first half of T1 indicating the beginning of the bus cycle. From the beginning of T1 until the completion of the bus cycle the CPU drives the Address Bus and other relevant control signals as indicated in the timing diagrams. For cacheable data read cycles the CPU also drives the CASEC signal to indicate the block in the DC set where the data will be stored. If the bus cycle is not cancelled (e.g., state T2 is entered in the next clock cycle), the confirm signal (CONF) is asserted in the middle of T1. Note that due to a bus cycle cancellation, the BMT signal may be asserted at the beginning of T1, and then deasserted before the time in which it is guaranteed valid (see Section 4.4.2). o v.tI II '/, If/, rl/. 'Iii 'Iii 'Iii 'A /J VLL 011 rl/. rl/. 'Iii 'Iii Vii V '< 'Iii 'IlL BRT [ '/, BER [ -I ~ \. J Z Vii 'Iii 'Iii Vii VI.. ~ 'Iii 'II! / BOUT [ BiN [ IJ 'Iii 'Iii 'Iii Vii 'II- '/Ii 'Iii 'Iii VII BWO-l, [ CIIN,IOOEC A confirmed bus cycle is completed at the end of T2, unless a cycle extension is requested. Following state T2 is either state T1 of the next bus cycle, or an idle T-state, if the CPU has no bus cycle to perform. In case of a read cycle the CPU samples the data bus at the end of state T2. If a bus exception is detected, the data is ignored. BEO- 3, STO- 4, [ U;S, CIOUT,IOINH CASEC [ 'J '1/ II/ VI; VII 7X )G 'II- rl/. Iff. '-0- Y.... X '-- IX: )( 0-I-- I-- I-- X I-- X I-I-- - ~TLlEE/9354-28 FIGURE 3·23. Basic Read Cycle For write bus cycles, valid data is output from the middle of T1 until the end of the cycle. When a write bus cycle is immediately followed by another write cycle, the CPU keeps driving the bus with the data related to the previous cycle until the middle of state T1 of the second bus cycle. The CPU always inserts an idle state before a write cycle when the write immediately follows a read cycle. Note: The CPU can initiate a bus cycle with a n·state and then cancel the cycle, such as when a TLB miss or a Cache hit occurs. In such a case, the CONF signal remains High and the eMT signal is driven High; the n·slale is followed by anolher noslale or an Idle Toslale. 2-51 • C) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , ~ C") ~ en z iij N C") an 3.0 Functional Description (Continued) 3.5.4.3 Burst Cycles The NS32532 is capable of performing burst cycles in order to increase the bus transfer rate. Burst is only available in instruction fetch cycles and data read cycle from 32-bit wide memories. Burst is not supported in operand write cycles or slave cycles. The sequence of events for burst cycles is shown in Figure 3-25. The case shown assumes that the selected memory is capable of communicating with the CPU at full speed. If not, then cycle extension can be requested through the ROY line. See Section 3.5.4.4. A Burst cycle is composed of two parts. The first part is a regular cycle (opening cycle), in which the CPU outputs the new status and asserts all the other relevant control signals. In addition, the Burst Out Signal (BOUn is activated by the CPU indicating that the CPU can perform Burst cycles. If the selected memory allows Burst cycles, it will notify the CPU by activating the burst in signal (BIN). BIN is sampled by the CPU in the middle of T2 on the falling edge of BClK. If the memory does not allow burst (BIN high), the cycle will terminate at the end of T2 and BOUT will go inactive immediately. If the memory allows burst (BIN low), and the CPU has not deasserted BOUT, the second part of the Burst cycle will be performed and BOUT will remain active until termination of the Burst. The second part consists of up to 3 nibbles, labeled T2B. In each of them a data item is read by the CPU. For each nibble in the burst sequence the CPU forces the 2 least-significant bits of the address to 0 and increments address bits 2 and 3 to select the next double-word; all the byte enable signals (BEO-3) are activated. As shown in Figures 3-25 and 4-8 (in Section 4), the CPU samples ROY at the end of each nibble and extends the access time for the burst transfer if ROY is inactive. The CPU initiates burst read cycles in the following cases. 1. An instruction must be fetched (Status = 01000 or 0(001), and the instruction address does not fall within the last double-word in an aligned 16-byte block (e.g., address bits 2 and 3 are not both equal to 1). 2.A data item must be read (Status = 01010,01011 or 0(100), and all of the following conditions are met. ANY ,T- STATE, Tl T2 ,T10RTI, BCLK[ IX AO-3{ X N C") en z ~ N C") an 'l. 'II, 'II, ~ K DO-3{ DATA OUT I ODIN [ "- N ~ Z \. / \. / ADS [ XU BtoIT [ i ~ \. / -I " 'II, 'II, 'II. 'II, 'II, ~ / CDNF [ 1/ ...... / \. - ROY [ 'l. ~ II //J 11/ BRT [ 'I 'II, 'II, '(fh rL!J '1h 'I '(; 'Iii 'Lit BER[Z'Iii Vii Vii '1h 'I/, XI VII VII I BOUT [ BiN [ IJ 'IIJ 'IIJ 'II. VIJ VIJ VI. BWO-{ '/, X -- - B[o-3, [~STO-4,U/S '1/ 'II 'II 'II ~ VIJ IIJ V// ex'II, 'II, 'II, ')( • The data cache is enabled and not locked. (DC = 1 and lOC = 0 in the CFG register.) X • The addressed page is cacheable as indicated in the level-2 Page Table Entry. TUEE/9354-29 • The bus cycle is not an interlocked data access performed while executing a CBITI or SBITI instruction. FIGURE 3-24. Write Cycle The Burst sequence will be terminated when one of the following events occurs. 1. The last instruction double-word in an aligned 16-byte block has been fetched. 2. The CPU detects that the instructions being prefetched are no longer needed due to an alteration of the flow of control. This happens, for example, when a Branch instruction is executed or an exception occurs. 3. 4 double-words of data have been read by the CPU. The double-words are transferred within an aligned 16-byte block in a wrap-around order. For example, if a source operand is located at address 104, then the burst read cycle transfers the double-words at 104, 108, 112, and 100, in that order. 2-52 ,----------------------------------------------------------,z 3.0 Functional Description en (0) (Continued) ANY IT - STATE I T1 I T2 I T28 I T28 I T28 I\) (11 (0) I\) I T1 OR Ti I I I\) o ..... 8CLK [ AO-3{ DO- 31 [ ADS [ CONF [ RDY [ 8EO- 3 [ I~ 8WO-I, CIIN,IODEC STO - 4,U/S ClOUT, 10lNH CASEC I'"'- I\) (11 (0) I\) I ~ I\) (11 ..... z en (0) 1\ 1/ \.V .\... / 1'% +--V I~ ~V II l/ I\.+-- 1: ~ V~ V~ VI; VI; VA Ii ~ h ~ Ii ~ lX 1\ BfN[Ii. 'ILl 'II; 'II, Vii VA 80UT [ r-r-- I'"'- ~ K! D- ~ p- ~ fJ I; VI; VII DDIN [ st,tT [ z en (0) X D< pc tx r-r-- I\) (11 (0) I\) w o II VI; VI, / Ii ~ Ii IA II VI; f// III, rl/ VI V 1\ [i, ru f/I, VI, VI; VII V/ ~ {/ [1: ~ fj~ 'Iii Vh VII V/ ~ '- - -. ...... Z en Co) N U1 L \. DDIN [ N U1 lX AO-3{ Co) N I Co) ADS [ \.V I\..V \. ..I Bt.H [ ~ ~ I~ t--V \1 \ CONF [ V o -/ I\. ~ RDY [ 'J VII III III 'I/, r//, rl ~~ fl VLi rtiL 8RT [ '/ rll (II (I/, (I/, rfiL rfh '(fi- rI '< r.tL r'!i 8ER [ '/ '1/ 'II 'II If/, 'fL, 'L/. V/, ~ 'fL, 'ffL \1 BOUT [ BiN [ IJ VI/ VI/ VII VII VI/, 'II 8WO-l, [ CIIN,IODEC 1/ VI/ VI/ '1/ 'II '1/ II/ ~ -- 8£0- 3, STO- 4, [ U/S, CIOUT,IOINH 'II 'I/, 'I/, ,/1 II~ - Dc t-t-- P< [fL; rLL(fl X X -- +-- t--- +-- pc t-- D< CASEC [ 3-26. Cycle Extension of a Basic Read Cycle 2-55 +-- DC +-- TLlEE/9354-31 . r---------------------------------------------------------------------------------, 3.0 Functional Description C) C") (Continued) C'\I C") In C'\I TABLE 3-4. Interrupt Sequences C") Data Bus r~------------~·------------~\ (f) z ..... In ~ Cycle Status Address C'\I C") In C'\I C") (f) z ..... C) ~ C") In C'\I C") (f) z ODIN BE3 BE2 BE1 BED Byte 3 A. Non-Maskable Interrupt Control Sequences Interrupt Acknowledge 1 00100 FFFFFF0016 0 0 X Interrupt Return None: Performed through Return from Trap (RETT) instruction . B. Non-Vectored Interrupt Control Sequences Interrupt Acknowledge 1 00100 FFFFFE0016 0 0 X Interrupt Return 1 00110 FFFFFE0016 X 0 0 C. Vectored Interrupt Sequences: Non-Cascaded Interrupt Acknowledge 1 00100 FFFFFE0016 0 0 X Interrupt Return 1 00110 FFFFFE0016 0 0 X Byte 2 Byte 1 ByteD X X X X X X X X X X X Vector: Range: 0-127 X X Vector: Same as in Previous Int. Ack. Cycle X X Cascade Index: range -16to-1 D. Vectored Interrupt Sequences: Cascaded Interrupt Acknowledge 1 00100 FFFFFE0016 0 0 (The CPU here uses the Cascade Index to find the Cascade Address) 001101 Cascade 0 See Note 2 Address Interrupt Return 1 00110 FFFFFE0016 o (The CPU here uses the Cascade Index to find the Cascade Address) 00111 Cascade 0 See Note 2 Address X = Don't Care Note: BEQ-BE3 signals will be activated according to the cascaded leu address 2-56 X Vector, range 16-255; on appropriate byte of data bus. o X X X X X X Cascade Index: Same as in previouslnt. Ack.Cycle X z (J) 3.0 Functional Description (Continued) ANY IT - STATEI T1 Co) N en Co) ANY IT - STATE I T2 T1 T2 I T1 or TI I 00-3{ SPC [ I }- K ..... I\.I--V SPC [ Z E3 00-3{ DATA OUT ~ N C BClK [ (J) Co) N en Co) . N N en ..... \. Z (J) ODIN [ / \. X X ODIN [ \. Co) / N en Co) ~ STO-4 [ STO-4[ Co) X C TL/EE/9354-33 TLlEE/9354-32 FIGURE 3-27. Slave Processor Write Cycle FIGURE 3-28. Slave Processor Read Cycle activating the BER signal. BER is sampled by the CPU at the end of state T2 or T2B on the rising edge of BCLK. When BER is sampled active, the CPU completes the bus cycle normally. If a bus error occurs during a bus cycle for a reference required to execute an instruction, then a bus error exception is recognized. However, if an error occurs during an acknowledge cycle of another exception or during the ICU read cycle of a RETI instruction, the CPU interprets the event as a fatal bus error and enters the 'halted' state. 3.5.5 Bus Exceptions The NS32532 has the capability of handling errors occurring during the execution of a bus cycle. These errors can be either correctable or incorrectable, and the CPU can be notified of their occurrence through the input signals BRT and! or BER. Bus Retry If a bus error can be corrected, the CPU may be requested to repeat the erroneous bus cycle. The request is done by asserting the BRT signal. BRT is sampled at the end of state T2 or T2B. In this state the CPU floats its address and data buses and places a special status code on the STO-4 lines. The CPU can exit this condition only through a hardware reset. Refer to Section 3.2.6 for more details on bus error. When the CPU detects that BRT is active, it completes the bus cycle normally, but ignores the data read in case of a read cycle, and maintains a copy of the data to be written in case of a write cycle. Then, after a delay of two clock cycles, it will start executing the bus cycle again. If the transfer cycle is multiple (e.g., for non-aligned data), only the problematic part will be repeated. Note 1: If the erroneous bus cycle is extended by means of wait states, then the CPU uses the values of BRT and/or BER sampled during the last wait state. Note 2: If the CPU samples both BRT and BER active. BRT has higher priority. The bus error indication is ignored, and the bus cycle is repeated. Note 3: If BER is asserted during a bus cycle of a multi·cycle data transfer. the CPU completes the entire transfer normally, but the data will be ignored. The CPU also ignores any subsequent assertion of BER during the same data transfer. For instance, if a non-aligned double-word is being trans· ferred and the second half of the transfer fails, only the second part will be repeated. Note 4: Neither BRT nor BER should be asserted during the T2 state of a slave processor bus cycle. The same applies for a retry during a burst sequence. The repeated cycle will begin where the read operation failed (rather than the first address of the burst) and will finish the original burst. Figures 3-29 and 4-10 (in Section 4) show the BRT timing for a basic access cycle and for burst cycles respectively. The CPU always waits for BRT to be HIGH before repeating the bus cycle. While BRT is LOW, the CPU places all the output signals shown in Figure 4-11 in a TRI-STATE® condi· tion. 3.5.6 Dynamic Bus Configuration The NS32532 is tuned to operate with 32-bit wide memory and peripheral devices. The bus also supports S-bit and l6-bit data widths, but at reduced efficiency. The CPU can switch from one bus width to another dynamically; the only restriction is that the bus width cannot change for locations within an aligned l6-byte block. The CPU determines the bus width in effect for a bus cycle by using the values of the BWO and BWl signals sampled during the last T2 state. Values of BWO and BWl sampled before the last T2 state or during T2B states are ignored. Whenever a bus width other than 32·bit is sampled by the CPU, the bus remains idle for 2 clock cycles before the next bus cycle can be initiated. Bus Error If a bus error is incorrectable the CPU may be requested to interrupt the current process and branch to an appropriate procedure to handle the error. The request is performed by 2-57 tI 3.0 Functional Description (Continued) ANY IT - STATE I T1 I T2 I T1 OR TI I -X- ~ TI I T1 I T2 I T1 or TI I X X DC ~ .-( 00-3{'I. 'II. 'II. /)'- -- _. ~ .. -- I-- _. -- I-- _. ~ .. -- _. ~ ~ AO-3{ I \. ODIN [ \. / \. / ADS [ BtotT [ ~ ~ r'0 -V / \. CONF [ I \. \. J I\.V \.V ~ I~ ~V ~ I--V .f \. I - / Iv I/V I, ROY [ 'l. 'II. 'II. 'Ih rll. 'II. ~ IJ VII III Iii Iii 'III 'III ~ BRT [ '1'1/ '1/ 'II. 'II. '1/ ~ I-r/h 'II. 'IJ VI) II- 'Iii V ~ 7l. ~ BER [ Z 'II. 'Ih 'Ih Vii 'II. 'G Vii Vii Vii 'Iii 'Ih 'Iii 'I ~~~ / BOUT [ ~[iJ 'I!J 'I!J 'Ih 'I!J 'III 'I!J I!J Iii III III VII VII III II) III VIJ V/ BWO-1, [ CIIN,IOOEC BEO-3,STO- 4, [ U/S, CIOUT,IOINH CASEC [ .. .. '/ VIJ 'I) II) (II vX ~ 'Ih 'I!J rh 'II. 'II 'IJ 'IJ 'I) 'I) vX ~ ~ ~ .-he ....- X .- ... --- ~ ~ ~ X... ~ X ~ ~ ,..... ~ X -- ')( - ~ ....- X- X FIGURE 3·29. Bus Retry During a Basic Read Cycle 2-58 X - X-TL/EE/93S4-34 z en Co) 3.0 Functional Description (Continued) N The various combinations for BWO and BW1 are shown below. The following subsections provide detailed descriptions of the access sequences performed in the various cases. .- BW1 BWO 0 0 0 1 1 0 1 1 Note: Although the NS32532 ignores the BIN signal for B·bit and 16-bit bus widths, it is recommended that BIN be asserted only if the system supports burst transfers. This is to ensure compatibility with future versions of the CPU that might support burst transfers for 8·bit and 16-bit buses. Reserved 8-Bit Bus 16-Bit Bus 32-Bit Bus CI1 Co) N I N o ...... Z en Co) N CI1 Co) N Al BE2 -""';;"---L...-; BEO--------, BE3---....., The bus width must always be 32 bits during slave cycles. An important feature of the NS32532 is that it does not impose any restrictions on the data alignment, regardless of the bus width. Bus accesses are performed in double-word units. Accesses of data operands that cross double-word boundaries are decomposed into two or more aligned double-word accesses. The CPU provides four byte enable signals (BEO-3) which facilitate individual byte accessing on either a 32-bit or a 16-bit bus. I N CI1 ...... Z en Co) 8El-----., N CACH----~H_-_, CI1 Co) ~ Co) o Figures 3-30 and 3-31 show the basic interfaces for 32-bit and 16-bit memories. An 8-bit memory interface (not shown) is even simpler since it does not use any of the BEO-3 signals and its single bank is always enabled whenever the memory is selected. Each byte location in this case is selected by address bits AO-31. AI-31 The NS32532 does not keep track of the bus width used in previous instruction fetches or data accesses. At the beginning of every memory transaction, the CPU always assumes that the bus is 32-bit wide and the BEO-3 signals are activated accordingly. The BOUT signal is also asserted during instruction fetches or data reads if the conditions for bursting are satisfied. If the bus is other than 32-bit wide, the BIN signal is ignored and BOUT is deasserted at the beginning of the T state following T2, since burst cycles are not allowed for 8-bit or 16-bit buses. 00-15 \,.._ _ _ _ _ _..J TL/EE/9354-36 FIGURE 3-31. Basic Interface for 16-Blt Memories 3.5.6.1 Instruction Fetch Sequences The CPU performs two types of Instruction fetch cycles: sequential and non-sequential. These can be distinguished from each other by the differing status combinations on pins STO-4. For non-sequential instruction fetches the CPU presents on the address bus the exact byte address of the first instruction in the instruction stream that is about to begin; for sequential instruction fetches, the address of the next aligned instruction double-word is presented on the address bus. The CPU always activates all byte enable signals (BEO-3) for both sequential and non-sequential fetches. BOUT is also asserted during T2 if the addressed doubleword is not the last in an aligned 16-byte block. Tables 3-5 to 3-7 show the fetch sequence for the various bus widths. A2-31 32-Blt Bus Width The CPU reads the entire double-word present on the data bus into its internal instruction buffer. If BOUT and BIN are both active, the CPU reads up to 3 consecutive double-words using burst cycles. Burst cycles are used for instruction fetches regardless of whether the accesses are cacheable. DO-31\r______________________ ~ TL/EE/9354-35 FIGURE 3-30. Basic Interface for 32-Blt Memories Note: The CACH signal must be asserted during cacheable read accesses. 2-59 • 3.0 Functional Description (Continued) Example: JUMP @5 Example JUMP @6 • The CPU performs a fetch cycle at address 5 with BEO-3 all active. • A fetch cycle is performed at address 6 with BEO-3 all active. • Two burst cycles are then performed and addresses 8 and 12 are output while BEO-3 are kept active. 16-Bit Bus Width • The word at address 4 is then fetched if the access is cacheable. 8-Blt Bus Width The instruction byte on the bus lines DO-7 is fetched. The CPU performs three consecutive cycles to read the remaining bytes within the required double-word, while keeping BEO-3 all active. The 4 bytes are then assembled into a double-word and transferred into the instruction buffer. For a non-sequential fetch, if the access is not cacheable, the CPU will only read the upper bytes within the instruction double-word starting with the byte at the instruction address. Example: JUMP @7 The word on the least-significant half of the data bus is read by the CPU. This is either the even or the odd word within the required instruction double-word, as determined by address bit 1. The CPU then complements address bit 1, clears address bit 0 and initiates a bus cycle to read the other word, while keeping all the BEO-3 signals active. These two words are then assembled into a double-word and transferred into the instruction buffer. In case of a non-sequential fetch, if the access is not cacheable and the instruction address selects the odd word within the instruction double-word, the even word is not fetched. • The CPU performs a fetch cycle at address 7 with BEO-3 all active. • Bytes at addresses 4, 5 and 6 are then fetched consecutively if the access is cacheable. 1. 2. TABLE 3-5. Cacheable/Non-Cacheable Instruction Fetches from a 32-Bit Bus In a burst access four bytes are fetched with the L.S. bits of the address set to 00. A 'C' on the data bus refers to cacheable fetches and indicates that the byte is placed in the instruction cache. An 'I' refers to non-cacheable fetches and indicates that the byte is ignored. Number of Bytes Address LSB 1 11 Address Bus Bytes to be Fetched - 2 10 81 BO - 3 01 B2 B1 BO - A 4 00 B3 B2 B1 BO A BO - A A BEO-3 LLLL LLLL LLLL LLLL Data Bus BO C/I C/I CII B1 BO CII C/I B2 B1 BO C/I B3 B2 B1 BO TABLE 3-6. Cacheable/Non-Cacheable Instruction Fetches from a 16-Blt Bus 1. A bus access marked with '0' in the 'Address Bus' column Is performed only if the fetch is cacheable. Number of Bytes Address LSB 1 11 Address Bus Bytes to be Fetched BO - - - A °A - 3 2 10 B1 BO - - A °A - 2 3 01 B2 B1 BO - A A+1 4 00 B3 B2 B1 BO A A+2 2-60 BEO-3 LlLL LLLL LLLL LLLL LLLL LLLL LLLL LLLL Data Bus - - BO C C/I C B1 C BO C - BO B2 C/I B1 - B1 B3 BO B2 - - - - - z 3.0 Functional Description en Co) (Continued) I\) U1 Co) I\) TABLE 3·7. CacheablelNon-Cacheable Instruction Fetches from an 8-Bit Bus Number of Bytes Address LSB 1 11 Address Bus Bytes to be Fetched BO - - - •A - 1 LLLL LLLL LLLL LLLL A A+1 •A - 2 *A - 1 LLLL LLLL LLLL LLLL A A+1 A+2 'A - 1 LLLL LLLL LLLL LLLL A A+ 1 A+2 A+3 LLLL LLLL LLLL LLLL A *A - 3 *A - 2 2 3 4 10 01 00 B1 B2 B3 BO B1 B2 - BO B1 - - BO 3.5.6.2 Data Read Sequences · I\) BEO-3 Data Bus - - - - - - - - - - - - - - - - - - - - - - - - - - 0 ....... Z BO C C C BO B1 C C BO B1 B2 C BO B1 B2 B3 16-Bit Bus Width The word on the least·significant half of the data bus is read by the CPU. The CPU can then perform another access cycle with address bit 1 complemented and address bit 0 cleared to read the other word within the addressed doubleword. If the access is cacheable, the entire double-word is read and stored into the cache. If the access is not cacheable, the CPU ignores the bytes in the double-word not selected by BEO-3. In this case, the second access cycle is not performed, unless selected bytes are contained in the second word. Example: MOVB @5, RO The CPU starts a data read access by placing the exact address of the operand on the address bus. The byte enable lines are activated to select only the bytes required by the instruction being executed. This prevents spurious accesses to peripheral devices that might be sensitive to read accesses, such as those which exhibit the characteristic of destructive reading. If the on-chip data cache is internally enabled for the read access, the BOUT signal is asserted at the beginning of state T2. BOUT will be deasserted if the data cache is externally inhibited (through CIiN or IODEC), or the bus width is other than 32 bits. During cacheable accesses the CPU always reads all the bytes in the doubleword, whether or not they are needed to execute the instruction, and stores them into the data cache. The external memory, in this case, must place the data on the bus reo gardless of the state of the byte enable signals. • The CPU reads a word at address 5 while keeping BE1 active. o If the access is not cacheable, the CPU ignores byte O. o If the access is cacheable, the CPU performs another access cycle, with BEO-3 all active, to read the word at address 6. 8-Bit Bus Width The data byte on the bus lines DO-7 is read by the CPU. The CPU can then perform up to 3 access cycles to read the remaining bytes in the double-word. If the data cache is either internally or externally inhibited during the access, the CPU ignores the bytes not selected by the BEO-3 signals. Data read sequences for the various bus widths are shown in tables 3-8 to 3·10. 32-Bit Bus Width The entire double·word present on the bus is read by the CPU. If the access is cacheable and the memory allows burst accesses, the CPU reads up to 3 additional doublewords within the aligned 16-byte block containing the first byte of the operand. These burst accesses are performed in a wrap·around fashion within the 16·byte block. Example: MOVW @5, RO If the access is cacheable, the entire double-word is read and stored into the cache. If the access is not cacheable, the CPU will only perform those access cycles needed to read the selected bytes. Example: MOVW @5, RO • The CPU reads a double-word at address 5 while keeping BE1 and BE2 active. o The CPU reads the byte at address 5 while keeping BE1 and BE2 active. • If the access is not cacheable, the CPU activates BE2 and reads the byte at address 6. o If the access is cacheable, the CPU performs three bus cycles with BEO-3 all active, to read the bytes at addresses 6, 7 and 4. • If the access is not-cacheable, BOUT is deasserted and the data bytes 0 and 3 are ignored. • If the access is cacheable, the CPU performs burst cycles with BEO-3 all active, to read the double·words at ad· dresses 8, 12, and O. 2-61 en Co) I\) U1 Co) I\) · I\) U1 ....... Z en Co) I\) U1 Co) I\) • Co) 0 3.0 Functional Description 1. 2. (Continued) TABLE 3·8. Cacheable/Non·Cacheable Data Reads from a 32·Bit Bus In a burst access four bytes are read with the L.S. bits of the address set to 00. A 'C' on the data bus refers to cacheable reads and indicates that the byte is placed in the data cache. An 'I' refers to non· cacheable reads and indicates that the byte is ignored. Number of Bytes Address LSB Bytes to be Read Address Bus BEO-3 Data Bus 1 00 - BO A HHHL C/I C/I C/I BO 01 - - 1 BO - A HHLH C/I C/I BO CII 1 10 - BO - - A HLHH CII BO C/I C/I C/I 1 11 BO - A LH H H BO C/I C/I 00 - - - 2 B1 BO A HH LL C/I CII B1 BO 2 01 - B1 BO A HLLH C/I B1 BO C/I 2 10 B1 BO - - A LLH H B1 BO C/I C/I 3 00 - B2 B1 BO A HLLL CII B2 B1 BO 3 01 B2 B1 BO - A LLLH B2 B1 BO C/I 4 00 B3 B2 B1 BO A LLLL B3 B2 B1 80 TABLE 3·9. Cacheable/Non·Cacheable Data Reads from a 16·Bit Bus 1. A bus access marked with '.' in the 'Address Bus' column is performed only if the read is cacheable. Number of Bytes Address LSB 1 00 1 1 01 10 Address Bus Data to be Read - - - - - BO - BO - BEO-3 NonCach. HHHL LLLL HHHL •A+ 2 - - A *A + 1 HHLH LLLL HHLH - - A *A - 2 HLHH LLLL HLHH - - - .- BO A 1 11 BO - - - A •A- 3 LHHH LLLL LHHH 2 00 - - B1 BO A *A + 2 HH LL LLLL HHLL A A+1 HLLH LLLL HLLH HLHH A LLHH LLLL LLH H •A- 2 2 2 01 10 - 81 B1 BO BO - Data Bus Cach. - - C/I C BO C BO C C/I C - C/I C BO C - BO C C/I C - B1 C BO C - - - - 80 C/I C/I 81 - - B1 C BO C - 3 00 - B2 B1 BO A A+2 HLLL LLLL HLLL HLHH - - 81 C/I BO 82 3 01 82 B1 BO - A A+1 LLLH LLLL LLLH LLH H - - BO B2 C/I B1 A A+2 LLLL LLLL LLLL LLH H - B1 B3 80 82 4 00 B3 B2 81 BO 2-62 - - z 3.0 Functional Description en w (Continued) N U1 W N TABLE 3-10. CacheableINon-Cacheable Data Reads from an 8-Bit Bus 08-12 I Number of Bytes Address LSB 1 00 1 1 1 2 2 2 3 3 4 01 10 11 00 01 10 00 01 00 Address Bus Data to be Read - - - BO - - Bl - B2 B3 - - BO - - Bl BO B2 Bl B2 - BO - - Bl BO - Bl BO Bl BO - - - BO - - BO - BO N BEO-3 o ....... Data Bus Z Cacho NonCach. A *A + 1 *A + 2 *A + 3 HHHL LLLL LLLL LLLL HHHL A 'A + 1 'A + 2 'A-1 HHLH LLLL LLLL LLLL HHLH A 'A+ 1 *A - 2 'A - 1 HLHH LLLL LLLL LLLL HLHH A 'A - 3 *A - 2 *A - 1 LH H H LLLL LLLL LLLL LH H H A A+l *A + 2 *A + 3 H H LL LLLL LLLL LLLL H H LL HHLH - A A+l *A+ 2 'A - 1 HLLH LLLL LLLL LLLL HLLH HLHH - - - A A+l *A - 2 'A - 1 LLH H LLLL LLLL LLLL LLH H LHHH A A+l A+2 *A + 3 HLLL LLLL LLLL LLLL HLLL HLLH HLHH A A+l A+2 *A - 1 LLLH LLLL LLLL LLLL LLLH LLHH LHHH A A+1 A+2 A+3 LLLL LLLL LLLL LLLL LLLL LLLH LLH H LHHH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BO C C C BO C C C BO C C C BO C C C BO Bl C C BO Bl C C BO Bl C C - BO Bl B2 C - BO Bl B2 C - BO Bl B2 B3 - - - - - 3.5.6.3 Data Write Sequences 32-Bit Bus Width In a write access the CPU outputs the operand address and asserts only the byte enable lines needed to select the specific bytes to be written. The CPU performs only one access cycle to write the selected bytes within the addressed double-word. Example: MOVB RO, @6 • The CPU duplicates byte 2 of the data bus into byte 0 and performs a write cycle at address 6 with BE2 active. In addition, the CPU duplicates the data to be written on the appropriate bytes of the data bus in order to handle 8-bit and 16-bit buses. The various access sequences as well as the duplication of data are summarized in tables 3-11 to 3-13. 16-Bit Bus Width Up to two access cycles are needed to complete the write operation. 2-63 en w N U1 W N I N U1 ....... Z en w N U1 W N ~ o oCO) '" CO) Ln N CO) U) Z ...... Ln N '" CO) Ln N CO) (f) Z ~ I N CO) Ln N CO) (f) Z 3.0 Functional Description (Continued) Example: MOVW RO, @5 signals. By asserting HOLD, an external device requests access to the bus. On receipt of HLDA from the CPU, the device may perform bus cycles, as the CPU at this point has placed all the output signals shown in Figure 3-32 into the TRI-STATE condition. To return control of the bus to the CPU, the external device sets HOLD inactive, and the CPU acknowledges return of the bus by setting HLDA inactive. The CPU samples HOLD in the middle of each T-state on the falling edge of BCLK. If HOLD is asserted when the bus is idle between access sequences, then the bus is granted immediately (see Figure 3-31). If HOLD is asserted during an access sequence, then the bus is granted immediately after the access sequence, including any retried bus cycles, has completed (see Figure 4-13). Note that an access sequence can be composed of several bus cycles if the bus width is 8 or 16 bits. o The CPU duplicates byte 1 of the data bus into byte 0 and performs a write cycle at address 5 with BE1 and BE2 active. o A write at address 6 is then performed with BE2 active and the original byte 2 of the data bus placed on byte O. 8-Bit Bus Width Up to 4 access cycles are needed in this case to complete the write operation. Example: MOVB RO, @7 • The CPU duplicates byte 3 of the data bus into bytes 0 and 1, and then performs a write cycle at address 7 with BE3 active. 3.5_7 Bus Access Control The NS32532 has the capability of relinquishing its control of the bus upon request from a DMA device or another CPU. This capability is implemented with the HOLD and HLDA TABLE 3-11. Data Writes to a 32-Bit Bus 1. Bytes on the data bus marked with '.' are undefined. Number of By1es Address LSB 1 00 1 01 1 Data to be Written - 10 - 1 11 BO 2 00 2 2 3 3 Address Bus BEO-3 Data Bus - BO A HHHL • • • BO BO - A HHLH 0 0 BO BO - A HLHH 0 BO • BO A LHHH BO • BO BO B1 BO A H HLL • 0 B1 BO 01 - - - B1 BO HLLH • B1 BO BO B1 BO - - A 10 A LLH H B1 BO B1 BO 00 - B2 B1 BO A HLLL • B2 B1 BO 01 B2 B1 BO - A LLLH B2 B1 BO BO 4 00 B3 B2 B1 BO A LLLL B3 B2 B1 BO Number of Bytes Address LSB 1 00 - 1 01 1 10 - BO TABLE 3·12. Data Writes to a 16·Bit Bus Data to be Written - • BO • • BO BO B1 BO 0 B1 BO • • • BO B1 B1 BO B1 BO • • B2 B1 • • BO B2 LLLH LLH H B2 B1 • 0 BO B2 BO B1 LLLL LLH H B3 B2 0 • B1 B3 BO B2 A HLHH • • • A LHHH BO A H H LL 0 A A+1 HLLH HLHH A LLH H A A+2 HLLL HLHH A A+1 A A+2 - - - B1 BO 2 01 - B1 BO - 2 10 B1 BO - - 3 00 - B2 B1 BO B2 B1 B2 BO BO HHLH BO B3 BO HHHL A 11 00 • BO A - 00 4 • • BO 1 01 Data Bus - 2 3 BEO-3 BO - BO Address Bus BO B1 BO 2-64 z (J) 3.0 Functional Description (Continued) (0) N c.n TABLE 3-13. Data Writes to an 8-Bit Bus Number of Bytes 1 1 1 1 2 2 Address LSB 00 01 10 11 00 01 - - 80 80 - - - - 81 - 80 80 - - 81 80 80 - 2 10 81 80 - - 3 00 - B2 B1 BO 3 4 01 00 Address Bus A A A A A A+1 Data to be Written 82 B3 B1 82 BO B1 A A+1 A A+1 A A+1 A+2 A A+1 A+2 A A+1 A+2 A+3 - BO (0) N BEO-3 HHHL HHLH HLHH LH HH HH LL HHLH HLLH HLHH LLHH LHHH HLLL HLLH HLHH LLLH LLHH LHHH LLLL LLLH LLH H LHHH N o ...... Data Bus • • ·• · 80 • 80 • 80 • • • • • • 80 81 B1 • • 81 80 • • BO B1 • • • • 82 B1 • • • • • • B2 81 BO • • • • • • B3 82 B1 • • • • • • • • • Z 80 80 80 80 80 81 80 81 BO B1 BO B1 B2 BO B1 82 BO B1 B2 B3 (J) (0) N c.n (0) N I N c.n ...... Z (J) (0) N c.n (0) N ~ o fJI 2-65 3.0 Functional Description TI (Continued) TI TI T1Jif[h TI BCLK [ } AO-31 [ 00-3{.-- ~ -- - -- -- I-- ODIN [ } ADS [ '\" BI.tT [ '\" CONF [ '\" -- -- ----- ---- -. -- -1--. -- I-- - -- - - - -- - (- -- - Iex -- -- -- ~S- ~S- ~S- ..IJ I\. / ~S- - J ~S- - J I' / ~ -- I\, r- V I\, HOLD [ _. I.{ X ~S- ir HLDA [ \. BOUT [ '\" BEO-3[ ~ - -- _. -- -- CASEC [ ~ - -- r-- ir -V ~S- - IJ ~S- ~S- .. " STO-4[ _.1.(... x "- - .(... x..---- -rf-- ~ X TL/EE/9354-37 FIGURE 3·32. Hold Acknowledge. (Bus Initially Idle.) Not.: The status Indicates 'IDLE' while the bus is granted. II the cause 01 the IDLE changes (e.g., CPU starts waiting lor an Interrupt), the status also changes. The CPU will never grant the bus between interlocked read and write bus cycles. Note: II an external device requires a very short latency to get control 01 the When 10DEC Is active during a bus cycle for which 10lNH is asserted, the CPU discards the data and applies the special handling required for 110 devices. Figure 3-33 shows a possible implementation of an 1/0 device interface where the address mapping of the 1/0 devices is fixed. bus, the bus retry signal (BRT) can be used instead 01 hold. See Section 3.5.5. 3,5.B Interfacing Memory-Mapped 1/0 Devices In an open system configuration, 10DEC could be generated by the decoding logic of each 1/0 device subsystem. In Section 3.1,3.2 it was mentioned that some special precautions are needed when interfacing 1/0 devices to the NS32532 due to its internal pipe lined implementation. Two special signals are provided for this purpose: IOINH and 10DEC. The CPU asserts 10lNH during a read bus cycle to indicate that the bus cycle should be ignored if an 110 device is selected. The system responds by asserting 10DEC to indicate to the CPU that an 110 device has been selected. 10DEC is sampled by the CPU in the middle of state T2. If the cycle is extended, then the CPU uses the IODEC value sampled during the last wait state. If a bus error or a bus retry occurs, the sampled 10DEC value is ignored. 10DEC must be kept high during burst transfer cycles. When the on-chip MMU is enabled, the ClOUT signal could also be used for this purpose, since 1/0 devices are located in noncacheable areas. In this case however, a small performance degradation could result, due to the fact that the special 1/0 handling is also applied on references to noncacheable program andlor data areas. Note 1: When IODEC is active in response to a read bus cycle, the CPU treats the reference as noncacheable. Note 2: lOiNR is kept inactive during write cycles. 2-66 3.0 Functional Description (Continued) CHIP SELECT 10lNH I/o DEVICE NS32532 CPU ADDRESS ~ .)1 DECODE INVIC, INVDC, INVSET and CIAO-CIA6 are all sampled synchronously by the CPU on the rising edge of BClK. The CPU can respond to cache invalidation requests at a rate of one per BClK cycle. As shown in Figures 3-16 and 3-17, the validity bits of the on-Chip caches are dual-ported. One port is used for acceSSing and updating the caches, while the other port is used independently for invalidation requests. Consequently, invalidation of the on-Chip caches occurs with no interference to on-going cache accesses or bus cycles. A cache invalidation request can occur during a read bus cycle for a location affected by the invalidation. In such a case, the data will be invalid in the cache if the invalidation request occurs during or after the T2- or T2B-state of the bus cycle. I L t'" TL/EE/9354-3B FIGURE 3·33. Typical 1/0 Device Interface 3.5.9 Interrupt and Debug Trap Requests Three signals are provided by the CPU to externally request interrupts and lor a debug trap. INT and NMi are for maskable and non-maskable interrupts respectively. DBG is used for requesting an external debug trap. The CPU samples INT and NMI on every other rising edge of BClK, starting with the second rising edge of BClK after RST goes high. Refer to Figure 4-18 in Section 4 for timing details. 3.5.11 Internal Status The NS32532 provides information on the system interface concerning its internal activity. The U/S signal indicates the Address Space for a memory reference (See Section 2.4.2). NMI is edge-sensitive; a high-to-Iow transition on it is detected by the CPU and stored in an internal latch, so that there is no need to keep it asserted until it is acknowledged. Note that U/S does not necessarily reflect the value of the U bit in the PSR register. For example, U/S is high during the memory access used to store the destination operand of a MOVSU instruction. INT is level-sensitive and, as such, once asserted, it must be kept asserted until it is acknowledged. The DBG signal, like NMI, is edge-sensitive; it differs from NMI in that the CPU samples it on each rising edge of BClK. DBG can be asserted asynchronously to the CPU clock, but it should be at least 1.5 clock cycles wide in order to be recognized. If DBG meets the specified setup and hold times, it will be recognized on the rising edge of BClK deterministically. Refer to Figures 4-19 and 4-20 for more details on the timing of the above signals. The PFS signal is asserted for one BClK cycle when the CPU begins executing a new instruction. The ISF signal is driven High along with PFS if the new instruction does not follow the previous instruction in sequence. More specifically, ISF is High along with PFS after processing an exception or after executing one of the following instructions: ACB (branch taken), Bcond (branch taken), BR, BSR, CASE, CXP, CXPD, DIA, JSR, JUMP, RET, RETT, RETI, and RXP. Note: If the NMI signal is pulsed to request a non-maskable interrupt. it may be necessary to keep it asserted for a minimum of two clock cycles to The BP Signal is asserted for one BClK cycle when an address-compare or PC-match condition is detected. If the BP signal is asserted one BClK cycle after PFS, it indicates that an address-compare debug condition has been detected. If BP is asserted at any other time, it indicates that a PCMatch debug condition has been detected. While executing an lMR or CINV instruction, the CPU displays the operation code and source operand using slave processor write bus cycles. This information can be used to monitor the contents of the on-chip TlB, Instruction Cache and Data Cache. During idle bus cycles, the Signals STO-ST4 indicate whether the CPU is waiting for an interrupt, waiting for a Slave Processor to complete executing an instruction or halted. guarantee its detection, unless extra logic ensures that the pulse oc- curs around the BCLK sampling edge. 3.5.10 Cache Invalidation Requests The contents of the on-chip Instruction and Data Caches can be invalidated by external requests from the system. It is possible to invalidate a single set or all sets in the Instruction Cache, Data Cache or both. The input signals INVIC and INVDC request invalidation of the Instruction Cache and Data Cache respectively. The input signal INVSET indicates whether the invalidation applies to a single set (16 bytes for the Instruction Cache and 32 bytes for the Data Cache) or to the entire cache. When only a single set is invalidated, the set number is specified on CIAO-CIA6. 2-67 4.0 Device Specifications AOORESS CLOCKING { DATA BUS ACCESS { CONTROL RESET EXCEPTION { REQUEST INTERNAL { STATUS BUS TIMING AND CONTROL OUlPUTS NS32532 SLAVE TIMING } AND CONTROL TL/EE/9354-39 FIGURE 4-1. NS32532 Interface Signals 4.1 NS32532 PIN DESCRIPTIONS Descriptions of the NS32532 pins are given in the following sections. Included are also references to portions of the functional description, Section 3. Figure 4·1 shows the NS32532 interface signals grouped according to related functions. 4.1.2 Input Signals ClK Clock. Input Clock used to derive all CPU Timing. Synchronize. When SYNC is active, BCLK will stop toggling. This signal can be used to synchronize two or more CPUs (Section 3.5.2). Hold Request. When active, causes the CPU to release the bus for DMA or multiprocessing purposes (Section 3.5.7). Note: An asterisk next to the signal name indicates a TRI-STATE condition for that signal when FKll1i is acknowledged or during an extended retry. 4.1.1 Supplies VCCl1-6 logic Power. + 5V positive supplies for on-chip logic. VCCB1-14 Buffers Power_ + 5V positive supplies for on-chip output buffers. VCCClK Bus Clock Power. + 5V positive supply for on-Chip clock drivers. GNDl1-6 logic Ground. Ground references for on-chip logic. GNDB1-13 Buffers Ground. Ground references for on-chip output buffers. GNDClK Bus Clock Ground. Ground reference for on-Chip clock drivers. Note: If the FKll1i signal is generated asynchronously. its set up and hold times may be violated. In this case it is recommended to synchronize it with CLK to minimize the possibility of metastable states. The CPU provides only one synchronization stage to minimize the HLDA latency. This is to avoid speed degradations In cases of heavy HOLD activity (i.e. DMA oontroller cycles interleaved with CPU cycles). Reset. When RST is active, the CPU is initialized to a known state (Section 3_5.3). Interrupt. A low level on this signal requests a maskable interrupt (Section 3.5.9). NMI 2-68 Nonmaskable Interrupt. A High-to-Low transition of this signal requests a nonmaskable interrupt (Section 3.5.9). z en Co) 4.0 Device Specifications (Continued) DBG CIAO-6 CIIN BWO-1 N Debug Trap Request. A High·to·Low transition of this signal reo quests a debug trap (Section 3.5.9). Cache Invalidation Address Bus. Bits 0 through 4 specify the set address to invalidate in the on-chip caches. CIAO is the least significant. Bits 5 and 6 are reserved (Section 3.5.10). Invalidate Set. When Low, only a set in the on-chip cache(s) is invalidated; when High, the entire cache(s) is (are) invalidated. Invalidate Data Cache. When Low, the Data Cache contents are invalidated. INVSET determines whether a single set or the entire Data Cache is invalidated. Invalidate Instruction Cache. When Low, the Instruction Cache contents are invalidated. INVSET determines whether a single set or the entire Instruction Cache is invalidated. Cache Inhibit In. When active, indicates that the location referenced in the current bus cycle is not cacheable. CIIN must not change within an aligned 16-byte block. I/O Decode. Indicates to the CPU that a peripheral device is addressed by the current bus cycle. The value of IODEC must not change within an aligned 16-byte block (Section 3.5.8). Force Slave Status Read. When asserted, indicates that the slave status word should be read by the CPU (Section 3.1.4.1). An external 10 kn resistor should be connected between FSSR and Vee· Slave Done. Used by a slave processor to signal the completion of a slave instruction (Section 3.1.4.1). An external 10 kn resistor should be connected between SON and Vee. Burst In. When active, indicates to the CPU that the memory supports burst cycles (Section 3.5.4.3). Ready. While this Signal is not active, the CPU extends the current bus cycle to support a slow memory or peripheral device. Bus Width. These lines define the bus width (8, 16 or 32 bits) for each data transfer; BWO is the least significant bit. The bus width must not change within an aligned 16-byte block-encodings are: OO-Reserved 01-8 Bits BRT BER 10-16 Bits 11-32 Bits Bus Retry. When active, the CPU will reexecute the last bus cycle (Section 3.5.5). Bus Error. When active, indicates that an error occurred during a bus cycle. It is treated by the CPU as the highest priority exception after reset. 4.1.3 Output Signals BCLK U/S CASEC ClOUT 2·69 Bus Clock. Output clock for bus timing (Section 3.5.2). Bus Clock Inverse. Inverted output clock. Hold Acknowledge. Activated by the CPU in response to the HOLD input to indicate that the CPU has released the bus. Program Flow Status. A pulse on this signal indicates the beginning of execution for each instruction (Section 3.5.11). Internal Sequential Fetch. Indicates along with PFS that the instruction beginning execution is sequential (ISF Low) or non·sequential (ISF High). User/Supervisor. User or supervisor mode status. Break Point. This signal is activated when the CPU detects a PC or operand-address match debug condition (Section 3.3.2). 'Cache Section. For cacheable data read bus cycles indicates the Section of the on·chip Data Cache where the data will be placed; undefined for other bus cycles. This signal can be used for external monitoring of the data cache contents. Cache Inhibit Out. This signal reflects the state of the CI bit in the second level page table entry (PTE). It is used to specify non-cacheable pages. It is held low while address translation is disabled and for MMU references to page table entries. I/O Inhibit. Indicates that the current bus cycle should be ignored if a peripheral device is ad· dressed. Slave Processor Control. Data strobe for slave processor transfers. "Burst Out. When active, indicates that the CPU is requesting to perform burst cycles. Interlocked Operation. When active, indicates that interlocked cycles are being performed (Section 3.5.4.5). c.n Co) · N N o ...... Z en Co) N c.n Co) · N N c.n ...... Z en Co) N c.n Co) · N Co) o 4.0 Device Specifications (Continued) ODIN CONF "Data Direction. Indicates the direction of a data transfer. It is low for reads and high for writes. "Confirm Bus Cycle. 00101-lnterrupt Acknowledge, Cascaded. 00110-End of Interrupt, Master. 00111-End of Interrupt, Cascaded. 01000-8equentiallnstruction Fetch. 01001-Non-Sequentiallnstruction Fetch. 01 01 O-Data Transfer. When active, indicates that a bus cycle initiated by ADS is valid; that is, the bus cycle has not been cancelled (Section 3.S.4.2). BMT ADS ·Begln Memory Transaction. When Stable Low indicates that the current bus cycle is valid; that is, the bus cycle has not been cancelled (Section 3.S.4.2). • Address Strobe. BED-3 When active, indicates that a bus cycle has begun and a valid address is on the address bus. ·Byte Enables. 01 011-Read Read-Modify-Write Operand. 0110o-Read for Effective Address. 01101-Access PTE1 by MMU. 01110-Access PTE2 by MMU. ~"" } Reserved. 11100 11101-Transfer Slave Operand. 1111O-Read Slave Status Word. Used to selectively enable data transfers on bytes 0-3 of the data bus. STD-4 Status. Bus cycle status code; STO is the least significant. Encodings are: AO-31 11111-Broadcast Slave 10. • Address Bus. Used by the CPU to output a 32-bit address at the beginning of a bus cycle. AO is the least significant. OOOOO-idle: CPU Inactive on Bus. 00001-ldle: WAIT Instruction. 00010-ldle: Halted. 4.1.4 Input/Output Signals 00-31 ·Data Bus. Used by the CPU to input or output data during a read or write cycle respectively. 00011-ldle: The bus is idle while the slave processor is executing an instruction. 0010o-Interrupt Acknowledge, Master. 4.2 ABSOLUTE MAXIMUM RATINGS If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Temperature Under Bias O·Cto +70·C Storage Temperature -6S·C to + IS0·C All Input or Output Voltages with -O.SVto +7V Respect to GND Power Dissipation 4W Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. 4.3 ELECTRICAL CHARACTERISTICS TA = O· to + 70·C, Vee = SV ± S%, GND = OV Symbol Parameter Conditions Max Units High Level Input Voltage 2.0 Vee + O.S V VIL Low Level Input Voltage -O.S O.B V . VOH High Level Output Voltage IOH = - 400 /LA VOL Low Level Output Voltage AO-11, 00-31, ODIN CONF, BMT BCLK, BCLK All Other Outputs IOL=4mA IOL = 6mA IOL = 16mA IOL = 2mA IL Input Load Current 0';; VIN';; Vee IL Leakage Current (Output and 110 pins in TRI-STATElinput Mode) 0.4 ,;; VIN ,;; Vee lee Active Supply Current lOUT = 0, TA = 2S·C 2-70 Min Typ VIH 2.4 V 0.4 0.4 0.4 0.4 V V V V -20 20 /LA -20 20 /LA 7S0 mA r--------------------------------------------------------------------,z en 4.0 Device Specifications (Continued) (0) I\) CJ'I (0) I\) Connection Diagram I I\) o ....... s@@@@@@@@@@@@@@@@ R@@@@@@@@@@@@@@@@ p@@@@@@@@@@@@@@@@ N@@@@@@@@@@@@@@@@ M@@@ @@@ L@@@ @@@ K@@@ @@@ J @@ @ NS32532 @@@ @@@ H@@@ G@@@ @@@ F@@@ @@@ E@@@ @@@ D@@@@@@@@@@@@@@@@ c@@@@@@@@@@@@@@@@ B@@@@@@@@@@@@@@@@ A@@@@@@@@@@@@@@@ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 z en (0) I\) CJ'I (0) I\) I I\) CJ'I ....... z en (0) I\) CJ'I (0) I\) I (0) o TLlEE/9354-40 Bottom View FIGURE 4-2. 175-Pin PGA Package NS32532 Pinout Descriptions Dese Pin Dese Pin Dese Pin Dese Pin Dese Pin Dese Pin Reserved Reserved Reserved BP 18F R8T NMI GNOBl Reserved VCCB2 INVIC Reserved (1) CIAl CIA4 VCCBl Reserved VCCB4 Reserved Reserved VCCB3 F88R INT VCCLl GNOL2 INV8ET INVOC CIA3 CIA5 030 028 Al A2 A3 A4 A5 A6 A7 026 Reserved Reserved VCCL2 Reserved PF8 80N Reserved BCLK VCCCLK 8YNC CIAO CIA6 VCCL6 029 027 025 U/S Reserved Reserved GNOL3 GNOB2 OBG Reserved BCLK GNOCLK CLK CIA2 031 GNOLl B16 Cl C2 C3 C4 C5 C6 C7 C8 C9 Cl0 Cll C12 C13 C14 C15 C16 01 02 03 04 05 06 07 08 09 010 011 012 013 GNOB13 VCCB14 023 IOINH ILO GNOB3 024 022 020 A30 CA8EC Reserved 021 019 018 A29 A31 VCCB5 GNOB12 017 016 A27 A28 GNOB4 VCCB13 015 014 A26 A25 A24 014 015 016 El E2 E3 E14 E15 E16 Fl F2 F3 F14 F15 F16 Gl G2 G3 G14 G15 G16 Hl H2 H3 H14 H15 H16 Jl J2 J3 GNOL6 VCCL5 013 VCCB6 A23 GNOL4 GNOBll 011 012 A22 A21 VCCL3 08 09 010 A20 GNOB5 A17 05 07 VCCB12 A19 A18 A14 All VCCB8 GNOB7 8T4 HLOA J14 J15 J16 Kl K2 K3 K14 K15 K16 Ll L2 L3 L14 L15 L16 Ml M2 M3 M14 M15 M16 Nl N2 N3 N4 N5 N6 N7 N8 GNOL5 CONF ROY HOLO VCCBll GNOB10 04 06 A16 VCCB7 GNOB6 Al0 A6 A2 8T3 GNOB8 VCCL4 BEl GNOB9 BWO BIN Reserved 00 03 A15 A12 A9 A7 A4 N9 Nl0 Nll N12 N13 N14 N15 N16 Pl P2 P3 P4 P5 P6 P7 P8 P9 Pl0 Pll P12 P13 P14 P15 P16 Rl R2 R3 R4 R5 AO VCCB9 ClOUT 8PC BE3 VCCB10 A08 BWl BER CIIN 02 A13 A8 A5 A3 Al 8T2 8Tl 8TO BOUT OOIN BE2 BEO BMT BRT IOOEC 01 R6 R7 R8 R9 Rl0 Rll R12 R13 R14 R15 R16 81 82 83 84 85 86 87 88 89 810 811 812 813 814 815 816 AS A9 Al0 All A12 A13 A14 A15 Bl B2 B3 B4 B5 B6 B7 B8 B9 Bl0 Bll B12 B13 B14 B15 Note 1: This pin should be grounded. All other reserved pins should be left open. 2·71 oC') N C') 4.0 Device Specifications II) 4.4 SWITCHING CHARACTERISTICS N C') (Continued) ABBREVIATIONS: CJ) 4.4.1 Definitions L.E.-Ieading edge T.E.-training edge F.E.-falling edge II) All the timing specifications given in this section refer to O.BV or 2.0V on all the signals as illustrated below. unless specifically stated otherwise. ....Z N N C') II) N C') CJ) BCLK ....Zo N N C') II) N SlG1 C') CJ) [) [- O.BV SlG1 \-~.~v24V O.45V Z 51G2 [ I ISIG2h 1'" ~K= [ [ BCLK 2.0V ISIG11 R.E.-rising edge O.BV ..~ [ 24V SIG2 2.0V --2.4V ISIG11 O.45V 2.4V / ISIG2h -------O.45V TL/EE/9354-42 FIGURE 4-4. Timing Specification Standard (Signal Valid before Clock Edge) ---------045V TLlEE/9354-41 FIGURE 4-3. Timing Specification Standard (Signal Valid after Clock Edge) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32532-20, NS32532-25, NS32532-30 Maximum times assume capacitive loading of 100 pF on the clock signals and 50 pF on all the other signals. A minimum capacitance load of 50 pF on BClK and BClK is also assumed. Name Figure Description NS32532-20 Reference/Conditions NS32532-25 NS32532-30 Units Min Max Min Max Min Max 50 100 40 100 33.3 100 ns tBCp 4-24 Bus Clock Period R.E., BClK to Next R.E., BClK tBCh 4-24 BClK High Time At 2.0V on BClK (Both Edges) 0.5 tBC p -5 ns 0.5 tBC p -4ns 0.5 tBCp -3 ns tBCI 4-24 BClK low Time At O.BV on BClK (Both Edges) 0.5 tBC p -5 ns 0.5 tBC p -4 ns 0.5 tBC p -3 ns tBC r 4-24 BClK Rise Time O.BV to 2.0V on R.E., BClK 5 4 3 ns tBCt 4-24 BClK Fall Time 2.0V to O.BV on F.E., BCLK 5 4 3 ns tNBCh 4-24 BCLK High Time At 2.0V on BCLK (Both Edges) 0.5 tNBC p -5 ns 0.5 tNBC p -4ns 0.5 tNBCp -3ns tNBC, 4-24 BClK Low Time At O.BV on BCLK (Both Edges) 0.5 tNBC p -5 ns 0.5 tNBC p -4 ns 0.5 tNBCp -3ns tNBC r 4-24 BClK Rise Time O.BV to 2.0V on R.E., BClK 5 4 3 ns tNBCt 4-24 BCLK Fall Time 2.0V to O.BV on F.E., BCLK 5 4 3 ns tCBCdr 4-24 ClKto BClK R.E. Delay 2.0V on R.E., ClK to 2.0V on R.E., BClK 17 14 12 ns tCBCdt 4-24 ClKto BCLK F.E. Delay 2.0V on R.E., ClK to O.BV on F.E., BCLK 17 14 12 ns tCNBCdr 4-24 CLKto BCLK R.E. Delay 2.0V on R.E., ClK to O.BV on R.E., BCLK 17 14 12 ns 2-72 z en 4.0 Device Specifications (Continued) Co) N . (II Co) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32532-20, NS32532-25, NS32532-30 (Continued) Name Figure Description Reference/Conditions NS32532-20 NS32532-25 NS32532-30 Min Min Min Max Max N N Units Max o ....... Z en Co) tCNSCd! 4-24 CLKto BCLK F.E. Delay 2.0V on R.E., CLK to O.BV on F.E., BCLK tSCNSCrf 4-24 Bus Clocks Skew 2.0Von R.E., BCLK to O.BVon F.E., BCLK -2 +2 -2 +2 tSCNBClr 4-24 Bus Clocks Skew O.BV on F.E., BCLK to 2.0V on R.E., BCLK -2 +2 -2 +2 4-5,4-6 Address Bits 0-31 Valid After R.E., BCLK T1 tAy tAh 4-5,4-6 Address Bits 0-31 Hold After R.E., BCLK T1 or Ti tAl 4-11,4-12 Address Bits 0-31 Floating After F. E., BCLK Ti tAnl 4-11,4-12 Address Bits 0-31 Not Floating After F.E., BCLK Ti tABy 4-8 Address Bits A2, A3 Valid (Burst Cycle) After R.E., BCLK T2B tASh 4-8 Address Bits A2, A3 Hold (Burst Cycle) After R.E., BCLK T2B toOy 4-6,4-15 Data Out Valid After F.E., BCLK T1 tOOh 4-6,4-15 Data Out Hold After R.E., BCLK T1 or Ti toospc 4-15 Data Out Setup (Slave Write) Before SPC T.E. tOOl 4-7 Data Bus Floating After R.E., BCLK T10rTi tOOnl 4-7 Data Bus Not Floating After F.E., BCLK T1 tSMTy 4-5,4-7 BMT Signal Valid After R.E., BCLK T1 tSMTh 4-5,4-7 BMT Signal Hold After R.E., BCLK T2 tSMTI 4-11,4-12 BMT Signal Floating After F.E., BCLK Ti tSMThl 4-11,4-12 BMTSignal Not Floating After F.E., BCLK Ti tCONFa 4-5,4-B CONF Signal Active After F.E., BCLK T1 17 14 (II Co) -1 +1 ns (II -1 +1 ns 11 B 0 0 0 11. 0 13 7 B 0 12 13 11 ns B 6 5 ns 0 32 21 17 11 13 9 B ns ns ns 11 9 17 13 tCONFnl 4-11,4-12 CONFSignal Not Floating After F.E., BCLK Ti After R.E., BCLK T1 After F.E., BCLK T1 tAOSw tAOSI 4-11,4-12 ADS Signal Floating After F.E., BCLK Ti 2-73 B 8 11 21 7 ns 7 ns 1a 12 15 ns a a 11 ns ns a 21 a ns ns 0 a a 23 27 0 ns ns a 0 0 13 17 After R.E., BCLK T1 or Ti At a.8V (Both Edges) ns 0 After F.E., BCLK Ti ADS Pulse Width ns 0 21 17 ~ Co) o ns 0 CONF Signal Floating ADS Signal Inactive ns ns 0 CONF Signal Inactive 4-6 ~ ns 0 4-5,4-B 4-5,4-B en ns 0 17 21 0 7 4-11,4-12 tAOSia ....... (II Co) tCONFI ADS Signal Active N N Z tCONFia 4-5,4-B . ns 8 tAOS a N 12 ns 13 ns • 4.0 Device Specifications (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32532-20, NS32532-25, NS32532-30 (Continued) Name Figure Description Reference/Conditions NS32532-20 Min tAOS n! 4-11,4-12 ADS Signal Not Floating After F.E., BCLK Ti tBEv 4-6,4-8 BEn Signals Valid After R.E., BCLK T1 tBEh 4-6,4-8 BEn Signals Hold After R.E., BCLK T1, TiorT2B tBE! 4-11,4-12 BEn Signals Floating After F.E., BCLK Ti tBEn! 4-11,4-12 BEn Signals Not Floating After F.E., BCLK Ti tOOINv 4-5,4-6 DDIN Signal Valid After R.E., BCLK T1 tOOINh 4-5,4-6 DDIN Signal Hold After R.E., BCLK T1 or Ti Max 0 NS32532-25 Min Max 0 21 0 11 0 ns 0 17 13 ns ns 7 8 ns ns 0 0 0 Units Max 8 9 0 0 Min 0 0 11 NS32532-30 ns ns tOOIN! 4-11,4-12 DDIN Signal Floating After F.E., BCLK Ti tOOINn! 4-11,4-12 DDINSignal Not Floating After F.E., BCLK Ti tSPca 4-14,4-15 SPC Signal Active After R.E., BCLK T1 19 15 12 ns tSPCia 4-14,4-15 SPC Signal Inactive After R.E., BCLK Ti, T1 or T2 19 15 12 ns toosPC 4-14 DDIN Valid to SPCActive 4-12,4-13 HLDA Signal Active Before SPC L.E. 21 0 0 0 13 17 0 0 ns ns 0 ns After F.E., BCLK Ti 15 11 10 ns 4-12 HLDA Signal Inactive After F.E., BCLK Ti 15 11 10 ns tSTv 4-5,4-14 Status (STO-4) Valid After R.E., BCLK T1 11 8 7 ns tSTh 4-5,4-14 Status (STO-4) Hold After R.E., BCLK T1 or Ti tBOUTa 4-8,4-9 BOUT Signal Active After R.E., BCLK T2 15 12 11 ns tBOUTia 4-8,4-9 BOUT Signal Inactive After R.E., BCLK Last T2B, T1 or Ti 15 12 11 ns After F.E., BCLK Ti 21 17 13 ns tHLOAa tHLDAia tBOUT! 4-11,4-12 BOUT Signal Floating tBOUTn! 4-11,4-12 BOUT Signal Not Floating After F.E., BCLK Ti 0 0 0 0 0 ns 0 ns tlLOa 4-7 Interlock Signal Active tlLOia 4-7 Interlock Signal Inactive After F.E., BCLK Ti 11 9 8 ns tpFSa 4-21 PFS Signal Active After F.E., BCLK 15 11 10 ns tPFSia 4-21 PFS Signal Inactive After F.E., Next BCLK 15 11 10 ns tlSFa 4-22 ISF Signal Active After F.E., BCLK 15 11 10 ns tlSFia 4-22 ISF Signal Inactive After F.E., Next BCLK 15 11 10 ns tBPa 4-23 BP Signal Active After F.E., BCLK 15 11 10 ns tBPia 4-23 BP Signal Inactive After F.E., Next BCLK 15 11 10 ns tusv 4-5 U/S Signal Valid After R.E., BCLK T1 8 ns tUSh 4-5 U/S Signal Hold After R.E., BCLK T1 or Ti After F.E., BCLK Ti 2-74 11 9 11 0 8 9 0 0 ns ns I z 4.0 Device Specifications en Co) (Continued) I\) c.n Co) I\) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32532-20, NS32532-25, NS32532-30 (Continued) I Name Figure Description Reference/Conditions tCASv 4-5 CASEC Signal Valid After F.E., BClK T1 tCASh 4-5 CASEC Signal Hold After F.E., BlCK T1 or Ti NS32532-20 NS32532-25 NS32532-30 Min Min Min Max 15 a Max 11 a I\) Units Max 10 a o ...... z en Co) ns ns I\) c.n Co) I\) I I\) tCASt 4-11,4-12 CASEC Signal Floating After F.E., BlCK Ti tCASnt 4-11,4-12 CASEC Signal Not Floating After F.E., BlCK Ti tCIOv 4-5 ClOUT Signal Valid After R.E., BLCK T1 ICIOh 4-5 ClOUT Signal Hold After R.E., BlCK T1 or Ti , tlOl v 4-5 IOINH Signal Valid After R.E., BlCK T1 tlOl h 4-5 IOINH Signal Hold After R.E., BlCK T1 or Ti 21 17 a a 13 ns c.n ...... ns en Co) ns c.n Co) z a I\) 15 a 11 a 11 a I\) I a 15 0 10 ns 10 a Co) o ns ns 4.4.2.2 Input Signal Requirements: NS32532-20, NS32532-25, NS32532-30 Name Figure Description Reference/Conditions NS32532-20 NS32532-25 NS32532-30 Units Min Max Min Max Min Max 25 100 20 100 16.6 100 ns tc p 4-24 Input Clock Period R.E., ClK to Next R.E., ClK tCh 4-24 ClK High Time At 2.0V on ClK (Both Edges) 0.5 tc p -5 ns 0.5 tc p -5 ns 0.5 tc p -4ns tCI 4-24 ClK low Time At O.BV on ClK (Both Edges) 0.5 tc p -5 ns 0.5 tc p -5ns 0.5tc p -4ns tc, 4-24 ClK Rise Time O.BV to 2.0V on R.E., ClK 5 4 3 ns tCt 4-24 ClK Fall Time 2.0V to O.BV on F.E., ClK 5 4 3 ns tOls 4-5,4-14 Data In Setup Before R.E., BlCK T1 or Ti tOlh 4-5,4-14 Data In Hold tROYs 4-5 tROYh tsws tSWh tHO LOs 13 11 9 ns After R.E., BClK T1 or Ti 1 1 1 ns ROY Setup Time Before R.E., BClK T2(W), T10rTi 22 1B 15 ns 4-5 ROY Hold Time Ater R.E., BClK T2(W). T10rTi 1 1 1 ns 4-5 BWO-1 Setup Time Before F.E., BClK T2 or T2(W) 21 17 14 ns 4-5 BWO-1 Hold Time 4-12,4-13 HOLD Setup Time After F.E., BClK T2 or T2(W) Before F.E., BClK tHOLOh 4-12 HOLD Hold Time After F.E., BClK tSINs 4-B BIN Setup Time Before F.E., BClK T2 or T2(W) tSINh 4-B BIN Hold Time After F.E., BClK T2 or T2(W) 2-75 1 1 1 ns 21 17 14 ns 1 1 1 ns 21 17 14 ns 1 1 1 ns • 4.0 Device Specifications (Continued) 4.4.2.2 Input Signal Requirements: NS32532-20, NS32532-25, NS32532-30 (Continued) Name Figure Description Reference/Conditions tBERs 4-6,4-8 BER Setup Time Before R.E., BCLK Tl or Ti NS32532-20 NS32532-25 NS32532-30 Min Min Min 21 Max 17 tBERh 4-6,4-8 BER Hold Time After R.E., BCLK Tl or Ti tBRTs 4-6,4-8 BRT Setup Time Before R.E., BCLK Tl or Ti tBRTh 4-6,4-8 BRT Hold Time After R.E., BCLK Tl or Ti tlODs 4-5 IODEC Setup Time Before F.E., BCLK T2 or T2(W) tlODh 4-5 IODEC Hold Time After F.E., BCLK T2 or T2(W) tPWR 4-26 Power Stable to R.E.of RST After VCC Reaches 4.5V tRSTs 4-27 RST Setup Time Before R.E., BCLK 14 tRSTw 4-27 RST Pulse Width At 0.8V (Both Edges) 64 tells 4-5 CUN Setup Time Before F.E., BCLK T2 21 17 tClih 4-5 CUN Hold Time After F.E., BCLK T2 1 tiNTs 4-19 INT Setup Time Before R.E., BCLK 14 tlNTh 4-19 INT Hold Time After R.E., BCLK tNMls 4-19 NMI Setup Time Before R.E., BCLK tNMlh 4-19 NMI Hold Time tSD. 4-16 tSDh 4-16 tFSSR. 4-17 tFSSRh 4-17 tSYNC. 4-25 tSYNCh 4-25 tCIAs 4-18 CIAO-6 Setup Time tCIAh 4-18 CIAO-6 Hold Time tINVS. 4-18 INVSET Setup Time tlNVSh 4-18 INVSET Hold Time tlNVls 4-18 INVIC Setup Time tlNVlh 4-18 INVIC Hold Time tlNVDs 4-18 INVDC Setup Time Before R.E., BCLK tlNVDh 4-18 INVDC Hold Time After R.E., BClK tDBG s 4-20 DBG Setup Time tDBGh 4-20 DBG Hold Time Max Units Max 14 ns 1 1 1 ns 21 17 14 ns 1 1 1 ns 21 17 14 ns 1 1 1 ns 50 40 30 IJ.s 12 11 ns 64 64 tBCp 14 ns 1 1 ns 12 11 ns ns 1 1 1 20 17 16 ns After R.E., BCLK 1 1 1 ns SDN Setup Time Before R.E., BCLK 14 12 11 ns SON Hold Time After R.E., BCLK 1 1 1 ns FSSR Setup Time Before R.E., BCLK 14 12 11 ns FSSR Hold Time After R.E., BCLK 1 1 1 ns SYNC Setup Time Before R.E., CLK 10 8 7 ns SYNC Hold Time After R.E., ClK 1 1 1 ns Before R.E., BClK 16 13 11 ns After R.E., BClK 1 1 1 ns Before R.E., BClK 16 13 11 ns After R.E., BClK 1 1 1 ns Before R.E., BCLK 14 12 11 ns After R.E., BCLK 1 1 1 ns 16 13 11 ns 1 1 1 ns Before R.E., BClK 14 12 11 ns After R.E., BClK 1 1 1 ns 2-76 4.0 Device Specifications (Continued) 4.4.3 Timing Diagrams ANY IT-STATE I 11 T2 I T2(W) 111 OR Til BCLK [ -- X-.......:IXr- AO-3{ -- Xr-I - It.,- '0t-\. -. lAy IAh ~ I}- 00-3{ - -- -- IN .... {[IDDINY -- IDlh ¥ ODIN [ IADSa .... ADS [ BI,n[ ~~ r {~ IADSia ~ I r-lcAsy IOOEC [ IOINH[ br~~ IIOIDh'= r X ~ !+- ICASh Xl-- liDOs IIOIY- X tr: 1< -- X CASEC [ lUSh ~IClih j4 \clOY X ClOUT [ 15Th X X ujS [ IBWh - j4 IsTY - Xr I- IROYh - r-~IOlh X I I FIGURE 4·5. Basic Read Cycle Timing 2-77 I TL/EE/9354-43 C) C') I N C') Lt) r---------------------------------------------------------------------------______ 4.0 Device Specifications (Continued) N C') ANY I T- STATE I (/) Z ..... Lt) N N C') Lt) N ~ N C') Z ADS [ Bt.H[ ~ ..... \. JO~ ~ 1'0 CONF [ ~tODINh I\.V I~ l -V ~ po- / / V I\.- \. / ROY [ )( D< BWO-1 [ ..... t" tBEv '" BEO-3 [ tOOh DATA OUT I' tOOINv-" (/) .... j+ I)- K ODIN [ tAh ]( tJov-" 00-3{ N ... IX C') C') Lt) T21T10RTii t tAd AO-31 [ (/) Z ...... C) T1 BCLK [ X tSEh ]( lSRTs H lI)' BRT [ tSERs 1)1' BER [ STO- 4 [ U/s[ f.t -- X j tSRTI ~ ,:...tSERh X TL/EE/9354-44 Note: An Idle State is always inserted before a Write Cycle when the Write immediately follows a Read Cycle. FIGURE 4·6. Write Cycle Timing 2·78 ~ ,--------------------------------------------------------------------------, z en w 4.0 Device Specifications (Continued) N U1 W TI T1 T2 TI T1 T2 ~ TI C) BCLK [ "zrn I I AO- w X 3{~-+__+'''+___!-+--+-I--+_+-+_+~''"+_+- [l::t:!>-+-+-~~~ ~ 00- 31 -- { tDDINv -- btooni -- .1 ~ t DOf N U1 DATA OUT f{DDIN~/ DDIN[-+_~~~-+_~~~+__¥ -- N U1 W 'I "rnZ \. N w U1 w 2! C) ADS [ Bt.tT [ I\, / -} - t lLOIa BWO - ~ {-+-+-r-+--+I"Xr-H-1"K''+--+--+-+--fIX t-" BEO- 3 ... r - .. tBEv ~ tSEh X [_+-I--+,XlI-+-+-+__I--+-+--+-+-+_+'l-I--+- B~[-+--+-+---+__I---~/ \."+--+----+---+_~/ \. BER[-+-~~~__~¥/ \.~-+--+~__~/ \. STO- 4 [-+-+_joI'X'+-+_r-+-+--+-+~~+-~~I---+-- U/S [~~--+,'X,+-+~~__~~+--+-~~X,+--+-_ • TL/EE/9354-45 FIGURE 4·7. Interlocked Read and Write Cycles 2·79 0,-----------------------------------------------------------------, ~ 4.0 Device Specifications (Continued) II) C'I ~ ANY IT-STATE I Z ..... II) ~ 11 I T2 I .... }4 tAv 00-31 ~ ~ I 12B I 12B I -....::: ..r-~ ~r- X t ABv - X AO-3{ I T1 OR nI 1/ \. ODIN [ C") I'" ADS [ I\..V {./ BtolT [ I' - -t-H CI) en z ~ N CI) LI) AOS [ SPC [ CONF [--+-+--l' ODIN C\I ~ Z , ... HOLD [ [....,_+--+++-+___-~--+--+-- STO-4[_--+-~__+_,~+_~-~~~-+__ TL/EE/9354-52 HLDA [ FIGURE 4·14. Slave Processor Read Timing TUEE/9354-51 FIGURE 4·13. HOLD Acknowledge Timing (Bus Initially Not Idle) ANY IT - STATEI I T1 T21110rTII I I BCLK[SUUL BCLK [ I tsOs I I tSOh DO - 3{__+_-+--+, SON [ TL/EE/9354-54 SPC [ ODIN STO- 4 FIGURE 4·16. Slave Processor Done I [.-1--+--1' I I BCLK[SUUL [~--1_+',"+-+~_I"'+-+_ t~SR. I I I trsSRh FSSR [ TL/EE/9354-53 FIGURE 4·15. Slave Processor Write Timing TL/EE/9354-55 FIGURE 4·17. FSSR Signal Timing 2·84 z en Co) 4.0 Device Specifications (Continued) I I I N U1 . I Co) BCLK[nsuu tc~s CIAO- 6 N N o ..... I-; tclAh I Z [.~-+~-"''1'-r~''fo:--r- en Co) N . U1 Co) INVS~[~_~~_~~-+~,~-+_ N N U1 ..... Z en Co) INVIC [ N U1 Co) ~ IHVDC [ Co) o TL/EE/9354-56 FIGURE 4-18. Cache Invalidation Request Note 1: CIAO-6 and INVSET are only relevant when INVIC and/or INVDC are asserted. Note 2: If a memory location is being read at the same time an invalidation request for that location occurs, the data will be invalid in the cache if the invalidation request occurs during or after state T2 or T2B of the read cycle. BCLK [ I I 1/ I. RST [ tiNTs oo[ i -.... +- ~.... i NMIS Nt'lI[ I tlNTh ~ +-I NMlh K~ ~ r-~I - +- -..,; ... ~r-- r-- I~ r~ r-- l- - TLlEE/9354-57 FIGURE 4-19. INT and NMI Signals Sampling Note 1: INT and NMI are sampled on every other riSing edge of BClK, starting with the second rising edge of BClK after RST goes high. Note 2: INT is level sensitive, and once asserted, it should not be deasserted until it is acknowledged. I I I I I BCLK[nnnn I I 'OBGST1 I I I tPF~a I I I BCLK[nnnn IOBGh IPFSla DBG [ TL/EE/9354-58 TL/EE/9354-59 FIGURE 4-20. Debug Trap Request I I I I tls~a I I I FIGURE 4-21. PFS Signal Timing BCLK[nnnn IISFia ~[ 8P[ TL/EE/9354-60 TL/EE/9354-61 FIGURE 4-22. ISF Signal Timing FIGURE 4-23. Break Point Signal Timing 2-85 oC") ~ f3 r--------------------------------------------------------------------------, 4.0 Device Specifications (Continued) ~ en z ...... ~ C") ~ en BCLK [ z ...... o N ~ C") an N ~ i+-----tNBCp.-----I TL/EE/9354-62 Z FIGURE 4-24. Clock Waveforms CLK[~h.h..h.ht~YNCs I I tsYNCh I SYNC [ I ~YNC' ~-+--I--+--1-+-- BCLK [ TL/EE/9354-63 FIGURE 4-25. Bus Clock Synchronization BCLK [, _ _-1-_ nrL:J' tRSTS.1 RST[ .----------~! TUEE/9354-64 FIGURE 4-26. Power-On Reset TL/EE/9354-65 FIGURE 4-27. Non-Power-On Reset 2·86 z (J) Appendix A: Instruction Formats Co) N NOTATIONS: C1I Options: in String Instructions Co) - IU/W I BIT I i = Integer Type Field B = 00 (Byte) W = 01 (Word) D = 11 (Double Word) N I N o T = Translated B = Backward U/W = 00: None 01: While Match 11: Until Match f = Floating Point Type Field F = 1 (Std. Floating: 32 bits) L = 0 (Long Floating: 64 bits) Z (J) Co) N C1I Co) N I Configuration bits, in SETCFG Instruction: c = Custom Type Field D = 1 (Double Word) Q = 0 (Quad Word) I C 1 I N C1I M F Z (J) Co) mreg: MMU Register number, in LMR, SMR. op = Operation Code Valid encodings shown with each format. ~= gen, gen 1, gen 2 = General Addressing Mode Field See Section 2.2 for encodings. N C1I Co) N I 0 } Co) Trap (UND) o reg = General Purpose Register Number cond 0111 1000 1001 1010 1011 1100 1101 1110 1111 = Condition Code Field 0000 = EQual: Z = 1 0001 = Not Equal: Z = 0 0010 = CarrySet:C = 1 0011 = Carry Clear: C = 0 0100 = Higher: L = 1 0101 = Lower or Same: L = 0 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 = = = = = = = = = = Greater Than: N = 1 Less or Equal: N = 0 Flag Set: F = 1 Flag Clear: F = 0 LOwer: L = 0 and Z = 0 Higher or Same: L = 1 or Z = 1 Less Than: N = 0 and Z = 0 Greater or Equal: N = 1 or Z = 1 (Unconditionally True) (Unconditionally False) = Reserved = = = = = = = MCR MSR TEAR PTBO PTB1 IVARO IVAR1 7 0 co'nd' 11'0'1'01 ~p' 10' 0' 1 ' 01 Format 0 (BR) Bcond 7 short = Short Immediate value. May contain: quick: Signed 4-bit value, in MOVQ, ADDQ, CMPQ, ACB. 0 Format 1 BSR RET CXP RXP RETT RETI SAVE RESTORE cond: Condition Code (above), in Scond. areg: CPU Dedicated Register, in LPR, SPR. 0000 = US 0001 = DCR 0010 = BPC 0011 = DSR 0100 = CAR 0101-0111 = (Reserved) 1000 = FP 1001 = SP 1010 = SB 1011 = USP 1100 = CFG 1101 = PSR 1110 = INTBASE 1111 = MOD 15 -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 , , gen ADDQ CMPQ SPR Scond 2-87 ENTER EXIT NOP WAIT DIA FLAG SVC BPT , , 81 7 , sh~rt Format -000 -001 -010 -011 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 1 2 ACB MOVQ LPR op 0 11 ' 1 1 -100 -101 -110 o ,--------------------------------------------------------------------------, ~ CW) ." N CW) tJ) Z ...... ." N ~ CW) ." N CW) tJ) Z ~ Format 3 TLlEE/9354-66 CXPD BICPSR JUMP BISPSR -0000 -0010 -0100 -0110 Trap (UND) on XXX1, 1000 ~ ADJSP JSR CASE -1010 -1100 -1110 sI7 II g~nll I II I I I I I I CW) 1S ." N ~ gen2 Z FormatS EXT CVTP INS CHECK MOVSU MOVUS 0 -000 -001 -010 -011 -110,reg -110, reg INDEX FFS = 001 = 011 op 0 Format 4 ADD CMP BIC ADDC MOV OR -0000 -0001 -0010 -0100 -0101 -0110 -100 -101 1 1 1 1 0 SUB AD DR AND SUBC TBIT XOR -1000 -1001 -1010 -1100 -1101 -1110 Format 9 MOVif LFSR MOVLF MOVFL -000 -001 -010 -011 ROUND TRUNC SFSR FLOOR -100 -101 -110 -111 7 0 0 i ---I I I I I I I I 1 ___ 0 1 1 1 1 1 1 0 000 1 110 ~ TL/EE/9354-67 FormatS MOVS CMPS -0000 -0001 Format 10 -0010 -0011 SETCFG SKPS Trap (UND) Always o Trap (UND) on lXXX, 01XX o 11110 001 1 1 0 Format 11 ADD! MOV! CMP! Note 3 SUB! NEG! Note 2 Note 1 Format 6 ROT ASH CBIT CBITI Trap (UND) LSH SBIT SBITI -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 NEG NOT Trap (UND) SUBP ABS COM IBIT ADDP -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 0 00111 0 Format 7 MOVM CMPM INSS EXTS MOVXBW MOVZBW MOVZiD MOVXiD -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 MUL MEl Trap (UND) DEI QUO REM MOD DIV -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 2-88 -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 DIV! Note 1 Note 3 Note 1 MUll ABSf Note 2 Note 1 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 z (J) Appendix A: Instruction Formats (Continued) 1 1 1 1 1 0 Format 12 Note 2 Note 1 Note 3 Note 3 Note 2 Note 1 Note 2 Note 1 -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 Note 2 Note 1 Note 3 Note 1 Note 2 Note 1 Note 2 Note 1 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 7 ---I Co) I I I I I I I -000 -001 -010 -011 (J) Co) N CJ1 N N CJ1 ..... Z CCALO CMOVO CCMPO CCMP1 CCAL1 CMOV2 Note 2 Note 1 Co) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 N CJ1 CCAL3 CMOV3 Note 3 Note 1 CCAL2 CMOV1 Note 2 Note 1 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 Q Format 15.7 LMR SMR CINV -0010 -0011 -1001 Trap (UNO) on 01XX, 1000, 101X, 11XX 16 115 8 :'n' n'1'o'1'1':1 1 10 Byte -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 Note 2 Note 1 Note 3 Note 3 Note 2 Note 1 Note 2 Note 1 If nnn ~ Note 2 Note 1 Note 3 Note 1 Note 2 Note 1 Note 2 Note 1 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 010.011.100.110 then Trap (UNO) Always. Format 15 ---I (Custom Slave) 7 0 ___ 0 I1i 0 " 1 1 " 1 1 I 0 Operation Word Format 1 TLlEE/9354-69 Format 16 000 Trap (UNO) Always 7 Format 15.0 LCR SCR · N Co) 111 Format 14 nnn Co) 0 0001111 0 Operation Word Z (J) Trap (UNO) Always 23 1 Q Format 15.5 TUEE/9354-68 -0000 -0001 · ..... • Format 13 ROVAL WRVAL Co) N N -100 -101 -110 -111 CCV2 CCV1 SCSR CCVO 101 1 8 7 CCV3 LCSR CCV5 CCV4 Co) 0 ___ 1 0 0 1 1 1 1 0 N CJ1 Format 15.1 0 7 0 ---I " " " ___ 1 1 0 1 1 1 1 I 0 -0010 -0011 1 TL/EE/9354-7D Format 17 Trap (UNO) on all others Trap (UNO) Always ---I 001 ___ 7 1 I 0 "0 0 0 I 1 I 1 Ii 1 0 1 TL/EE/9354-71 2-89 fII C) i r-----------------------------------------------------------------------------------------~ Appendix A: Instruction Formats (Continued) (I) z ...... 3. Either the program does not depend on the use of a Memory Management Unit (MMU), or it is written for operation with the NS323B2 MMU and does not use the bus-error or debugging features of the NS323B2. Format 18 CO) Trap (UNO) Always ; 7 0 ---I ___ xI xI xI 0 I 0 I 1 I 1 I 0 I 4. The program does not depend on the detection of bus errors according to the implementation of the NS32332. For example, the NS32532 distinguishes between restartable and nonrestartable bus errors by transferring control to the appropriate bus-error exception service procedure through one of two distinct entries in the Interrupt Dispatch Table. In contrast, the NS32332 uses a single entry in the Interrupt Dispatch Table for all bus errors. 5. The program does not modify itself. Refer to Section B.4 for more information. 6. The program does not depend on the execution of certain complex instructions to be non-interruptible. Refer to Section B.5 on. "Memory-Mapped 1/0" for more information. 7. The program does not use the custom slave instructions CATSTO and CATST1, as they are not supported by the NS32532 and will result in a Trap (UNO) when their execution is attempted. TL/EE/9354-72 N CO) en z ~an CO) Format 19 Trap (UNO) Always Implied Immediate Encodlngs: o 7 ~ rl en z rO Register Mark, Appended to SAVE, ENTER o 7 Register Mark, Appended to RESTORE, EXIT o 7 : offset: Nole 1: Opcode not defined; CPU treats like MOVf or CMOVc. First operand has access class of read; second operand has access class of write; f or c field selects 32· or 64·bft data. Nole 2: Opcode not defined; CPU treats like ADDf or CCAL". First operand has access class of read;, second operand has access class of read· modify· write; f or c field selects 32· or 64·bft data. Nole 3: Opcode not defined; CPU treats like CMPf or CCMPc. First operand has access class of read;, second operand has access class of read; f or c field selects 32· or 64·bit data. B.2 ARCHITECTURE EXTENSIONS The NS32532 implements the following extensions of the Series 32000 architecture using previously reserved control bits, instruction encodings, and memory locations. Extensions implemented earlier in the NS32332, such as 32-bit addressing, are not listed. 1. The DC, LDC, IC, and LlC bits in the CFG register have been defined to control the on-chip Instruction and Data Caches. The DE·bit in the CFG register has been defined to enable Direct-Exception Mode. Appendix B. Compatibility Issues 2. The V-flag in the PSR register has been defined to enable the Integer-Overflow Trap. OffsetlLength Modifier Appended to INSS, EXTS The NS32532 is compatible with the Series 32000 architecture implemented by the NS32032, NS32332, and previous microprocessors in the family. Compatibility means that within certain limited constraints, programs that execute on one of the earlier Series 32000 microprocessors will produce identical results when executed on the NS32532. Compatibility applies to privileged operating systems programs, as well as to non-privileged applications programs. This appendix explains both the restrictions on compatibility with previous Series 32000 microprocessors and the extensions to the architecture that are implemented by the NS32532. 3. The OCR, BPC, DSR, and CAR registers have been defined to control debugging features. Access to these registers has been added to the definition of the LPR and SPR instructions. 4. Access to the CFG and SPI registers has been added to the definition of the LPR and SPR instructions. 5. The CINV instruction has been defined to invalidate control of the on·chip Instruction and Data Caches. 6. Direct·Exception Mode has been added to support faster interrupt service time and systems without module tables. 7. A new entry has been added to the Interrupt Dispatch Table for supporting vectors to distinguish between restartable and nonrestartable bus errors. Two additional entries support Trap (OVF) and Trap (DBG). B.l RESTRICTIONS ON COMPATIBILITY If the following restrictions are observed, then a program that executes on an earlier Series 32000 microprocessor will produce identical results when executed on the NS32532 in an appropriately configured system: 1. The program is not time-dependent. For example, the program should not use instruction loops to control realtime delays. 2. The program does not use any encodings of instructions, operands, addresses, or control fields identified to be reserved or undefined. For example, if the count operand's value for an LSHi instruction is not within the range specified by the Series 32000 Instruction Set Reference Manual. then the results produced by the NS32532 may differ from those of the NS32032. B. Restrictions have been eliminated for recovery from Trap (ABT) for operands with access class of write that cross page boundaries. Restrictions still exist however, for the operands of the MOVMi instruction. B.3INTEGER OVERFLOW TRAP A new trap condition is recognized for integer arithmetic overflow. Trap (OVF) is enabled by the V-flag in the PSR. This new trap is important because detection of integer overflow conditions is required for certain programming languages, such as ADA, and the PSR flags do not indicate the occurrence of overflow for ASHi, DIVi and MUll instructions. 2-90 z en Co) Appendix B. Compatibility Issues (Continued) More details on integer overflow are given in Section 3.2.5, where a description of all the cases in which an overflow condition is detected is also provided. INTEGER ARITHMETIC The V-flag in the PSR enables Trap (OVF) to occur following execution of an integer arithmetic instruction whose result cannot be represented exactly in the destination operand's location. If the number of bits required to represent the resulting quotient of a DEI instruction exceeds half the number of bits of the destination, then the contents of both the quotient and remainder stored in the destination are undefined. The ADDR instruction can be used in place of integer arithmetic instructions to perform certain calculations. In this case however, integer overflow is not detected by the CPU. LOGICAL INSTRUCTIONS 3. The device cannot be used for instruction fetches, reads of effective addresses, or Page Table Entries. The V-flag in the PSR enables Trap (OVF) to occur following execution of an ASHi instruction whose result cannot be represented exactly in the destination operand's location. 4. If an instruction that reads a source operand from the device crosses a page boundary, then no Trap (ABT) or restartable bus error can occur during fetches from the page with higher addresses. 5. No Trap (ABT) for a data reference or other exception can occur during execution of an instruction that reads a source operand from the device. (Exceptions that are recognized after completion of an instruction, like Trap (OVF) and Trap (DBG), cause no problem.) ARRAY INSTRUCTIONS The V-flag in the PSR enables Trap (OVF) to occur following execution of a CHECKi instruction whose source operand is out of bounds. PROCESSOR CONTROL INSTRUCTIONS The V-flag in the PSR enables Trap (OVF) to occur following execution of an ACBi instruction if the sum of the "inc" value and the "index" operand cannot be represented exactly in the "index" operand's location. 6. The device can be used as a source operand only for instructions in the list below. ABSi CBITi MOVMi SBITli ADDi CBITIi MOVXi SUBi ADDCi CMPi MOVZi SUBCi ADDPi CMPQi NEGi SUBPi NOTi ADDQi COMi TBITi ANDi IBITi ORi XORi LSHi ROTi ASHi BICi MOVi SBITi This restriction arises because the CPU can respond to interrupt requests during the execution of complex instruction in order to reduce interrupt latency. Thus, the CPU may read the source operands for a DEID instruction (extended-precision divide), begin calculating the instruction's results, and then respond to an interrupt request before completing the instruction. In such an event, the instruction can be executed again and completed correctly after the interrupt service procedure returns unless one of the source operands was altered by destructive-reading. B.4 SELF·MODIFYING CODE The Series 32000 architecture does not have special provisions to optimally support self-modifying programs. Nevertheless, on the NS32332 and previous Series 32000 microprocessors it is possible to execute self-modifying code according to the following sequence: 1. Modify the appropriate instruction. 2. Execute a JUMP instruction or other instruction that causes the microprocessor's instruction queue to be flushed. 3. Execute the modified instruction. For example, an interactive debugger may follow the sequence above after reaching a breakpoint in a program being monitored. The same program may not produce identical results when executed on the NS32532 due to effects of the Instruction Cache and branch prediction. In order to execute self-modifying code on the NS32532 it is necessary to do the following: 1. Modify the appropriate instruction. 2. N ing" and "side·effects of writing" that impose requirements for special handling of memory-mapped I/O references. The NS32532 supports two methods to use on references to memory-mapped peripheral devices that exhibit either or both of these characteristics. For peripheral devices that exhibit only side-effects of writing, correct operation can be ensured either by locating the device between addresses FFOOOOOO (hex) and FF7FFFFF (hex) in the virtual address space or by observing the first 2 restrictions listed below. For peripheral devices that exhibit destructive-reading, all the following restrictions must be observed to ensure correct operation: 1. References to the device must be inhibited while the CPU asserts the output signal 101NH. 2. The input signal 10DEC must be asserted by the system on references to the device. Appendix C. Instruction Set Extensions If the modified instruction is on a cacheable page, execute CINV to invalidate the contents of the Instruction Cache. The following sections describe the differences and extensions to the Series 32000 instruction set (as presented in the "Series 32000 Instruction Set Reference Manual") implemented by the NS32352. 3. Execute an instruction that causes a serializing operation. See Section 3.1.3.3. 4. Execute the modified instruction. No changes or additions have been made to the usermode instruction set, and only a few privileged instructions have been added. B.5 MEMORY·MAPPED 1/0 As was mentioned in Section 3.1.3.2, certain peripheral devices exhibit characteristics identified as "destructive·read- 2-91 (It Co) ~ N o ...... Z en Co) N (It Co) N ~ (It ...... z en Co) N . (It Co) N Co) o oCO) • N CO) II) Appendix C.lnstruction Set Extensions N C.l PROCESSOR SERVICE INSTRUCTIONS en z ....... The CFG register, User Stack Pointer (SP1), and Debug Registers can be loaded and stored using privileged forms of the LPRi and SPRi instructions. N When the SETCFG instruction is executed, the CFG register bits 0 through 3 are loaded from the instruction's short field, bits 4 through 7 are forced to 1, and bits 8 through 12 are forced to O. CO) II) ~ CO) II) N CO) en z ....... o N ~ CO) II) N CO) en z 11~ [ I 7, 1 '1 ,0 ,1 ,1 , :01 , ' ,8 1 gen short src procreg 11~ " . gen LPRi 1 ",8 short 7"", 0 1 0 1 1I dest procreg SPRi FIGURE C-l. LPRi/SPRi Instruction Formats The contents of the on·chip Instruction Cache and Data Cache can be invalidated by executing the privileged instruction CINV. While executing the CINV instruction, the CPU generates 2 slave bus cycles on the system interface to display the first 3 bytes of the instruction and the source operand. External circuitry can thereby detect the execution of the CINV instruction for use in monitoring the contents of the on-chip caches. TABLE C-l. LPRi/SPRi New 'Short' Field Encodings Register C.2 MEMORY MANAGEMENT INSTRUCTIONS The NS32532 on-chip MMU does not implement the BAR, BDR, BEAR, and BMR registers of the NS32382. These registers are used in the NS32382 to support bus error and debugging features. When an attempt is made to access one of these 4 registers by executing an LMR or SMR instruction, a Trap (UND) occurs. More generally, a Trap (UND) occurs whenever an attempt is made to execute an LMR or SMR instruction and the most-significant bit of the short-field is O. procreg short field Debug Condition Register DCR 0001 Breakpoint Program Counter BPC 0010 Debug Status Register DSR 0011 Compare Address Register CAR 0100 User Stack Pointer USP 1011 Configuration Register CFG 1100 Cache Invalidate Syntax: options, src gen read. D The CI NV instruction invalidates the contents of locations in the on-chip Instruction Cache and Data Cache. The instruction can be used to invalidate either the entire contents of the on-chip caches or only a 16-byte block. In the latter case, the 28 most-significant bits of the source operand specify the physical address of the aligned 16-byte block; the 4 least-significant bits of the source operand are ignored. If the specified block is not located in the on-chip caches, then the instruction has no effect. If the entire cache contents is to be invalidated, then the source operand is read, but its value is ignored. Options are specified by listing the letters A (invalidate All), I (Instruction Cache), and D (Data Cache). If neither the I nor D option is specified, the instruction has no effect. In the instruction encoding, the options are represented in the A, I, and D fields as follows: A: O-invalidate only a 16-byte block 1-invalidate the entire cache I: O-do not affect the Instruction Cache 1-invalidate the Instruction Cache D: O-do not affect the Data Cache 1-invalidate the Data Cache Flags Affected: None Illegal Operation Trap (ILL) occurs if an atTraps: tempt is made to execute this instruction while the U-flag is 1. While executing an LMR instruction, the CPU generates 2 slave bus cycles on the system interface to display the first 3 bytes of the instruction and the source operand. External circuitry can thereby detect the execution of an LMR instruction for use in monitoring the contents of the on-chip Translation Lookaside Buffer. Like the NS32382 MMU, the F-flag in the PSR is set and no Trap (ABT) occurs when a RDVAL or WRVAL instruction is executed and the Protection Level in the Level-l Page Table Entry indicates that the access is not allowed. In the NS32082 MMU, an abort occurs when the Level-l PTE is invalid, regardless of the Protection Level. C.3 INSTRUCTION DEFINITIONS This section provides a description of the operations and encodings of the new NS32532 privileged instructions. Load and Store Processor Registers Syntax: LPRi procreg, src short gen read.i SPRi (Continued) procreg short dest gen write.i The LPRi and SPRi instructions can be used to load and store the User Stack Pointer (USP or SP1), the Configuration Register (CFG) and the Debug Registers in addition to the Processor Registers supported by the previous Series 32000 CPUs. Access to these registers is privileged. CINV Examples: 1.CINVA,D,I,R3 2. CINV I, R3 Figure C-t and Table C-l show the instruction formats and the new 'short' field encodings for LPRi and SPRi. Flags Affected: No flags affected by loading or storing the USP, CFG, or Debug Registers. Traps: Illegal Instruction Trap (ILL) occurs if an attempt is made to load or store the USP, CFG or Debug Registers while the U·flag is 1. lEA71B 1E 27 19 Example 1 invalidates the entire Instruction Cache and Data Cache. Example 2 invalidates the 16-byte block whose physical address in the Instruction Cache is contained in R3. 2-92 z Appendix C. Instruction Set Extensions ~3 ' ~e~' src en Co) (Continued) I\) o \15 817 0\ 10iAII 010'1'0'0'1'1'1 0'0'0'1'1'1'1'0 1 000 1 1 1 1 0 src options CINV FIGURE C-2. CINV Instruction Format mmureg LMR LMR I I\) o ....... z en Co) I\) Load.:.land Store Memory Management Register Syntax: U1 Co) I\) U1 mmreg, short src gen read.O SMR mmureg, dest short gen write.O The LMR and SMR instruction load and store the on-chip MMU registers as 32-bit quantities to and from any general operand. For reasons of system security, these instructions are privileged. In order to be executable, they must also be enabled by setting the M bit in the CFG register. dest mmureg SMR FIGURE C-3. LMRISMR Instruction Formats TABLE C-2. LMRISMR 'Short' Field Encodings Register The instruction formats as well as the 'short' field encodings are shown in Figure C-3 and Table C-2 respectively. It is to be noted that the IVARO and IVAR1 registers are write'only, and as such, they can only be loaded by the LMR instruction. Flags Affected: none Traps: Undefined Instruction Trap (UNO) occurs if an attempt is made to execute this instruc· tion while either of the following conditions is true: 1. The M-bit in the CFG register is O. 2. The U-Flag in the PSR is 0 and the most-significant bit of the short field is O. mmureg short field Memory Management Control Reg MCR 1001 Memory Management Status Reg MSR 1010 Translation Exception Address Reg TEAR 1011 Page Table Base Register 0 PTBO 1100 Page Table Base Register 1 PTB1 1101 Invalidate Virtual Address 0 IVARO 1110 Invalidate Virtual Address 1 IVAR1 1111 Co) I\) I I\) U1 ....... z en Co) I\) U1 Co) ~ Co) o Illegal Instruction Trap (ILL) occurs if an attempt is made to execute this instruction while the M-bit in the CFG register and the U-flag in the PSR are both 1. • 2-93 .... ~.---------------------------------------------------------~ N C') C') N C') U) ~National PRELIMINARY ~ Semiconductor Z ...... o.... . N C') C') N NS32332-10/NS32332-15 32-Bit Advanced Microprocessors C') U) Z General Description Features The NS32332 is a 32-bit, virtual memory microprocessor with 4 GByte addressing and an enhanced internal implementation. It is fully object code compatible with other Series 32000® microprocessors, and it has the added features of 32-bit addressing, higher instruction execution throughput, cache support, and expanded bus handling capabilities. The new bus features include bus error and retry support, dynamic bus sizing, burst mode memory accessing, and enhanced slave processor communication protocol. The higher clock frequency and added features of the NS32332 enable it to deliver 2 to 3 times the performance of the NS32032. • • • • • • The NS32332 microprocessor is designed to work with both the 16- and 32-bit slave processors of the Series 32000 family. • • 32-bit architecture and implementation 4 Gbyte uniform addressing space Software compatible with the Series 32000 Family Powerful instruction set - General 2-address capability - Very high degree of symmetry - Address modes optimized for high level languages Supports both 16- and 32-bit Slave Processor Protocol - Memory management support via NS32082 or NS32382 - Floating pOint support via NS32081 or NS32381 Extensive bus feature - Burst mode memory accessing - Cache memory support - Dynamic bus configuration (8-, 16-, 32-bits) - Fast bus protocol High speed XMOSTM technology 84 Pin grid array package Block Diagram ADD/DATA 32·BIT INTERNAL BUS CONTROLS & STATUS DATA I I I MICROCODE ROM AND CONTROL LOGIC WIM III! CFG REGISTER I I L ____ I J TLlEE/8673-1 FIGURE 1 ·Shaded areas indicate enhancements from the NS32032. 2-94 z en Co) Table of Contents 1.0 PRODUCT INTRODUCTION N 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.6 Bus Access Control 1.1 NS32332 Key Features 2.0 ARCHITECTURAL DESCRIPTION 2.1 Programming Model 3.7 Instruction Status 3.8 NS32332 Interrupt Structure en Co) 3.B.2 Interrupt/Trap Return 2.1.2 Dedicated Registers 3.B.3 Maskable Interrupts (The INT Pin) 2.1.3 The Configuration Register (CFG) 3.B.3.1 Non-Vectored Mode 2.1.4 Memory Organization 3.B.3.2 Vectored Mode: Non-Cascaded Case 2.1.5 Dedicated Tables ...... o ....... 3.B.1 General Interrupt/Trap Sequence 2.1.1 General Purpose Registers . Co) Co) N z N . Co) Co) N ...... U1 3.B.3.3 Vectored Mode: Cascaded Case 2.2 Instruction Set 3.B.4 Non-Maskable Interrupt (The NMI Pin) 2.2.1 General Instruction Format 3.8.5 Traps 2.2.2 Addressing Modes 3.8.6 Prioritization 2.2.3 Instruction Set Summary 3.B.7 Interrupt/Trap Sequences: Detailed Flow 3.8.7.1 Maskable/Non-Maskable Interrupt Sequence 3.0 FUNCTIONAL DESCRIPTION 3.1 Power and Grounding 3.B.7.2 Trap Sequence: Traps Other than Trace 3.3 Clocking 3.B.7.3 Trace Trap Sequence 3.3 Resetting 3.B. 7.4 Abort Sequence 3.4 Bus Cycles 3.9 Slave Processor Instructions 3.4.1 Cycle Extension 3.9.1 16-Bit Slave Processor Protocol 3.4.2 Burst Cycles 3.9.2 32-Bit Fast Slave Protocol 3.4.3 Bus Status 3.9.3 Floating Point Instructions 3.4.4 Data Access Sequences 3.9.4 Memory Management Instructions 3.4.4.1 Bit Accesses 3.9.5 Custom Slave Instructions 3.4.4.2 Bit Field Accesses 4.0 DEVICE SPECIFICATIONS 3.4.4.3 Extending Multiple Accesses 4.1 Pin Descriptions 3.4.5 Instruction Fetches 3.4.6 Interrupt Control Cycles 4.1.1 Supplies 3.4.7 Dynamic Bus Configuration 4.1.2 Input Signals 4.1.3 Output Signals 3.4.B Bus Exceptions 4.1.4 Input-Output Signals 3.4.8.1 Bus Retry 3.4.B.2 Bus Error 4.2 Absolute Maximum Ratings 3.4.B.3 Fatal Bus Error 4.3 Electrical Characteristics 4.4 Switching Characteristics 3.4.9 Slave Processor Communication 3.4.9.1 Slave Processor Bus Cycles 4.4.1 Definitions 3.4.9.2 Slave Operand Transfer Sequence 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays 3.5 Memory Management Option 3.5.1 The FLT (Float) Pin 4.4.2.2 Clocking Requirements 3.5.2 Aborting Bus Cycles 4.4.2.3 Input Signal Requirements 3.5.2.1 Instruction Abort 4.4.3 Timing Diagrams 3.5.2.2 Hardware Considerations Appendix A: Instruction Formats B: Interfacing Suggestions 2-95 • .... r------------------------------------------------------------------------------------------, ~ ~ C') C') C'\I List of Illustrations C') (/) z ....... .... C) ~ C') C') C'\I C') (/) z CPU Block Diagram ..............................................................................................1 The General and Dedicated Registers ............................................................................2-1 Processor Status Register .......................................................................................2-2 CFG Register ..................................................................................................2-3 Module Descriptor Format. ......................................................................................2-4 A Sample Link Table ...........................................................................................2-5 General Instruction Format ......................................................................................2-6 Index Byte Format .............................................................................................2-7 Displacement Encodings ........................................................................................2-8 Recommended Supply Connections .............................................................................. 3-1 Clock Timing Relationships ......................................................................................3-2 Power-on Reset Requirements ...................................................................................3-3 General Reset Timing ..........................................................................................3-4 Recommended Reset Connections, Non-Memory Managed System ................................................. 3-5a Recommended Reset Connections, Memory Managed System ..................................................... 3-5b Read-cycle Timing .............................................................................................3-6 Write-cycle Timing .............................................................................................3-7 Bus Connections ...............................................................................................3-8 RDY Pin Timing ................................................................................................3-9 Extended Cycle Example ......................................................................................3-10 Burst Cycles; Normal Termination of Burst ...................................................................... 3-11 a Burst Cycles; External Termination of Burst. ..................................................................... 3-11 b BOUT Timing Resulting from a Bus Width Change ................................................................. 3-12 Memory Interface .............................................................................................3-13 Bus Width Changes ...........................................................................................3-14 Bus Cycle Retry; Bus Cycle Not Retried ......................................................................... 3-15a Bus Cycle Retry; Bus Cycle Retried ............................................................................3-15b Bus Error During Read or Write Cycle ............................................................................ 3-16 Slave Processor Connections .................................................................................. 3-17 CPU Read from Slave Processor ................................................................................ 3-18 CPU Write to Slave Processor .................................................................................. 3-19 Read (Write) Cycle with Address Translation ...................................................................... 3-20 FLT Timing ...................................................................................................3-21 HOLD Timing, Bus Initially Idle .................................................................................. 3-22 HOLD Timing, Bus Initially Not Idle .............................................................................. 3-23 ILO Timing ...................................................................................•.....•.........3-24 Non-Aligned Write Cycle-MC/EXS Timing ....................................................................... 3-25 Interrupt Dispatch Table .......................................................................................3-26 Interrupt/Trap Service Routine Calling Sequence .................................................................3-27 Return from Trap (RETTn) Instruction Flow ....................................................................... 3-28 Return from Interrupt (RETI) Instruction Flow ..................................................................... 3-29 Service Sequence ............................................................................................3-30 Slave Processor Protocol ......................................................................................3-31 Fast Slave Protocol ...........................................................................................3-32 ID and Opcode Format for Fast Slave Protocol. ................................................................... 3-33 Slave Processor Status Word Format ............................................................................ 3-34 2-96 z en Co) List of Illustrations (Continued) N . Co) Co) N Connection Diagram, Pin Grid Array Package ...................................................................... 4-1 ..... Timing Specification Standard (Signal Valid After Clock Edge) ........................................................ 4-2 o ........ Timing Specification Standard (Signal Valid Before Clock Edge) ...................................................... 4-3 en Co) NS32332 Read Cycle Timing ....................................................................................4-4 NS32332 Write Cycle Timing ....................................................................................4-5 NS32332 Burst Cycle Timing ....................................................................................4-6 External Termination of Burst Cycle .................................•........................................... .4-7 Z N . Co) Co) N ..... U1 NS32332 Bus Retry During Normal Bus Cycle ...................................................................... 4-8 BRT Activated, but No Bus Retry ................................................................................. 4-9 Bus Retry During Burst Bus Cycle ............................................................................... 4-10 BRT Activated During Burst Bus Cycle, but No Bus Retry ........................................................... 4-11 Bus Error During Normal Bus Cycle .............................................................................. 4-12 Bus Error During Burst Bus Cycle .............................................................................. .4-13 Timing of Interlocked Bus Transactions ......................................................................... .4-14 Floating by HOLD Timing (CPU not Idle Initially) ................................................................... 4-15 Floating by HOLD Timing (Burst Cycle Ended by HOLD Assertion) .................................................. .4-16 Floating by HOLD Timing (CPU Initially Idle) ...................................................................... 4-17 Release from HOLD .......................................................................................... .4-18 FLT Initiated Cycle Timing ...................................................................................... 4-19 Release from FLT Timing (CPU Write Cycle) ......................................................................4-20 Slave Processor Write Timing ...................................................................................4-21 Slave Processor Read Timing ..................................................................................4-22 DTISDONE Timing (32-Bit Slave Protocol) ...................................................................... .4-23 SPC Timing (16-Bit Slave Protocol) ..............................................................................4-24 Clock Waveforms ............................................................................................ .4-25 Relationship of PFS to Clock Cycles .............................................................................4-26 Guaranteed Delay, PFS to Non-Sequential Fetch ..................................................................4-27 Guaranteed Delay, Non-Sequential Fetch to PFS ................................................................. .4-28 Abort Timing, FLT Not Applied ..................................................................................4-29 Abort Timing, FLT Applied ..................................................................................... .4-30 Power-on Reset ..............................................................................................4-31 Non-Power-on Reset ..........................................................................................4-32 U/S Relationship to Any Bus Cycle, Guaranteed Valid Interval ..................................................... .4-33 INT Interrupt Signal Detection ................................................................................. .4-34 NMllnterrupt Signal Timing .................................................................................... .4-35 System Connection Diagram (32332, 32081 & 32082) .............................................................. B-1 System Connection Diagram (32332, 32381 & 32382) .............................................................. B-2 List of Tables NS32332 Addressing Modes ....................................................................................2-1 Series 32000 Instruction Set Summary ............................................................................2-2 Bus Access Types .............................................................................................3-1 Access Sequences .............................................................................................3-2 Interrupt Sequences ............................................................................................3-3 2-97 • .,... r---------------------------------------------------------------------------------, ~ N CO) 1.0 Product Introduction CO) The Series 32000 Microprocessor family is a new generation of devices using National's XMOS and CMOS technologies. By combining state-of-the-art MOS technology with a very advanced architectural design philosophy, this family brings mainframe computer processing power to VLSI processors. C'I CO) en z ".,... o N CO) CO) C'I CO) en z • High-Level Language Support • Easy Future Growth Path • Application Flexibility 1.1 NS32332 KEY FEATURES The NS32332 is a 32-bit CPU in the Series 32000 family. It is totally software compatible with the NS32032, NS32016, and NS32008 CPUs but with an enhanced internal implementation. The Series 32000 family supports a variety of system configurations, extending from a minimum low-cost system to a powerful 4 gigabyte system. The architecture provides complete upward compatibility from one family member to another. The family consists of a selection of CPUs supported by a set of peripherals and slave processors that provide sophisticated interrupt and memory management facilities as well as high-speed floating-point operations. The architectural features of the Series 32000 family are described briefly below: The NS32332 design goals were to achieve two to three times the throughput of the NS32032 and to provide the full 32-bit addreSSing inherent in the architecture. The basic approaches to higher throughput were: fewer clock cycles per instruction, better bus use, and higher clock frequency. An examination of the block diagram of the NS32332 shows it to be identical to that of the NS32032, except for enhanced bus interface control, a 20-byte (rather than 8-byte) instruction prefetch queue, and special hardware in the address unit. The new addressing hardware consists of a highspeed ALU, a barrel shifter on one of its inputs, and an address register. Of the throughput improvement not due to increased clock frequency, about 15% is derived from the new address unit hardware, 15% from the bus enhancements, 10% from the larger prefetch queue, and 60% from microcode improvements. Other important aspects of the enhanced bus interface circuitry of the NS32332 are a burst access mode, designed to work with nibble and static column RAMs, read and write timing designed to support caches, and support for bus error processing. An enhanced slave processor communication protocol is designed to achieve improved performance with the NS32382 MMU and NS32381 FPU, while still working directly with the previous NS32082 MMU and NS32081 FPU. Powerful Addressing Modes. Nine addressing modes available to all instructions are included to access data structures efficiently. Data Types. The architecture provides for numerous data types, such as byte, word, doubleword, and BCD, which may be arranged into a wide variety of data structures. Symmetric Instruction Set. While avoiding special case instructions that compilers can't use, the Series 32000 family incorporates powerful instructions for control operations, such as array indexing and external procedure calls, which save considerable space and time for compiled code. Memory-to-Memory Operations. The Series 32000 CPUs represent two-address machines. This means that each operand can be referenced by anyone of the addressing modes provided. This powerful memory-to-memory architecture permits memory locations to be treated as registers for all useful operations. This is important for temporary operands as well as for context switching. Memory Management. Either the NS32382 or the NS32082 Memory Management Unit may be added to the system to provide advanced operating system support functions, including dynamic address translation, virtual memory management, and memory protection. Large, Uniform Addressing. The NS32332 has 32-bit address pointers that can address up to 4 gigabytes without requiring any segmentation; this addreSSing scheme provides flexible memory management without added-on expense. Modular Software Support. Any software package for the Series 32000 family can be developed independent of all other packages, without regard to individual addressing. In addition, ROM code is totally relocatable and easy to access, which allows a significant reduction in hardware and software cost. Software Processor Concept. The Series 32000 architecture allows future expansions of the instruction set that can be executed by special slave processors, acting as extensions to the CPU. This concept of slave processors is unique to the Series 32000 family. It allows software compatibility even for future components because the slave hardware is transparent to the software. With future advances in semiconductor technology, the slaves can be physically integrated on the CPU chip itself. 2.0 Architectural Description 2.1 PROGRAMMING MODEL The Series 32000 architecture has 8 general purpose and 8 dedicated registers. All registers are 32 bits wide except the STATUS and MODULE register. These two registers are each 16 bits wide. 2.1.1 General Purpose Registers There are eight registers for meeting high speed general storage requirements, such as holding temporary variables and addresses. The general purpose registers are free for any use by the programmer. They are thirty-two bits in length. If a general register is specified for an operand that is eight or sixteen bits long, only the low part of the register is used; the high part is not referenced or modified. 2.1.2 Dedicated Registers The eight dedicated registers of the processor are assigned specific functions. PC: The PROGRAM COUNTER register is a pOinter to the first byte of the instruction currently being executed. The PC is used to reference memory in the program section. sPa, SP1: The SPO register points to the lowest address of the last item stored on the INTERRUPT STACK. This stack is normally used only by the operating system. It is used To summarize, the architectural features cited above provide three primary performance advantages and characteristics: 2-98 z 2.0 Architectural Description en w I\) (Continued) W W GENERAL DEDICATED I\) ....• 32 32 PROGRAM COUNTER PC STATIC BASE SB FRAME POINTER USER STACK PTR. INTERRUPT STACK PTR. INTERRUPT BASE 0 ..... Z RD en W R1 I\) R2 FP W W I\) ....U1• R3 SP1 } SP R4 SPD RS INTBASE PSR MOD R6 STATUS MODULE R7 TLlEE/8673-2 FIGURE 2-1. The General and Dedicated Registers primarily for storing temporary data, and holding return information for operating system subroutines and interrupt and trap service routines. The SP1 register pOints to the lowest address of the last item stored on the USER STACK. This stack is used by normal user programs to hold temporary data and subroutine return information. grams, but the high order eight bits are accessible only to programs executing in Supervisor Mode. C: The C bit indicates that a carry or borrow occurred after an addition or subtraction instruction. It can be used with the ADDC and SUBC instructions to perform multiple-precision integer arithmetic calculations. It may have a setting of 0 (no carry or borrow) or 1 (carry or borrow). In this document, reference is made to the SP register. The terms "SP register" or "SP" refer to either SPO or SP1, depending on the setting of the S bit in the PSR register. If the S bit in the PSR is 0 the SP refers to SPO. If the S bit in the PSR is 1 then SP refers to SP1. T: The T bit causes program tracing. If this bit is a 1, a TRC trap is executed after every instruction (Sec. 3.8.5). L: The L bit is altered by comparison instructions. In a comparison instruction the L bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as unsigned integers. Otherwise, it is set to "0". In Floating Point comparisons, this bit is always cleared. Stacks in the Series 32000 family grow downward in memory. A Push operation pre-decrements the Stack Pointer by the operand length. A Pop operation post-increments the Stack Pointer by the operand length. FP: The FRAME POINTER register is used by a procedure to access parameters and local variables on the stack. The FP register is set up on procedure entry with the ENTER instruction and restored on procedure termination with the EXIT instruction. F: The F bit is a general condition flag, which is altered by many instructions (e.g., integer arithmetic instructions use it to indicate overflow). Z: The Z bit is altered by comparison instructions. In a comparison instruction the Z bit is set to "1" if the second operand is equal to the first operand; otherwise it is set to "0". The frame pointer holds the address in memory occupied by the old contents of the frame pointer. SB: The STATIC BASE register pOints to the global variables of a software module. This register is used to support relocatable global variables for software modules. The SB register holds the lowest address in memory occupied by the global variables of a module. N: The N bit is altered by comparison instructions. In a comparison instruction the N bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as signed integers. Otherwise, it is set to "0". INTBASE: The INTERRUPT BASE register holds the address of the dispatch table for interrupts and traps (Sec. 3.8). The INTBASE register holds the lowest address in memory occupied by the dispatch table. U: If the U bit is "1" no privileged instructions may be executed. If the U bit is "0" then all instructions may be executed. When U = 0 the processor is said to be in Supervisor Mode; when U = 1 the processor is said to be in User Mode. A User Mode program is restricted from executing certain instructions and accessing certain registers which could interfere with the operating system. For example, a User Mode program is prevented from changing the setting of the flag used to indicate its own privilege mode. A Supervisor Mode program is assumed to be a trusted part of the operating system, hence it has no such restrictions. MOD: The MODULE register holds the address of the module descriptor of the currently executing software module. The MOD register is sixteen bits long, therefore the module table must be contained within the first 64K bytes of memory. PSR: The PROCESSOR STATUS REGISTER (PSR) holds the status codes for the microprocessor. The PSR is sixteen bits long, divided into two eight-bit halves. The low order eight bits are accessible to all pro15 8 r S: The S bit specifies whether the SPO register or SP1 register is used as the stack pointer. The bit is automatically cleared on interrupts and traps. It may have a setting of 0 (use the SPO register) or 1 (use the SP1 register). 0 IXIXIXIXIllplslu NlzlFIXIXILlrlcl TLlEE/8673-3 FIGURE 2-2. Processor Status Register 2-99 • 2.0 Architectural Description (Continued) P: The P bit prevents a TRC trap from occurring more than once for an instruction (Sec. 3.B.5.). It may have a setting of 0 (no trace pending) or 1 (trace pending). 115 MSB's BI7 0I A+1 A Word at Address A Two contiguous words are called a double word. Except where noted (Sec. 2.2.1), the least significant word of a double word is stored at the lowest address and the most significant word of the double word is stored at the address two greater. In memory, the address of a double word is the address of its least significant byte, and a double word may start at any address. I: If I = 1, then all interrupts will be accepted (Sec. 3.B.). If I = 0, only the NMI interrupt is accepted. Trap enables are not affected by this bit. 2.1.3 The Configuration Register (CFG)* Within the Control section of the CPU is the CFG Register, which declares the presence and type of external devices. It is referenced by only one instruction, SETCFG, which is intended to be executed only as part of system initialization after reset. The format of the CFG Register is shown in Figure 2-3. 131 MSB's 24123 'The NS32332 CPU has four new bits in the CFG Register, namely P, FC, FM and FF. A+3 o 7 LSB's BI7 LSB's 01 A A+2 A+1 Double Word at Address A Although memory is addressed as bytes, it is actually organized as double-words. Note that access time to a word or a double·word depends upon its address, e.g. double-words that are aligned to start at addresses that are multiples of four will be accessed more quickly than those not so aligned. This also applies to words that cross a double·word boundary. FIGURE 2-3. CFG Register The CFG I bit declares the presence of external interrupt vectoring circuitry (specifically, the Interrupt Control Unit). If the CFG I bit is set, interrupts requested through the INT pin are "Vectored." If it is clear, these interrupts are "Non-Vectored." See Sec. 3.B. The F, M and C bits declare the presence of the FPU, MMU and Custom Slave Processors. If these bits are not set, the corresponding instructions are trapped as being undefined. 2.1.5 Dedicated Tables Two of the dedicated registers (MOD and INTBASE) serve as pOinters to dedicated tables in memory. The INTBASE register pOints to the Interrupt Dispatch and Cascade tables. The MOD register contains a pOinter into the Module Table, whose entries are called Module Descriptors. A Module Descriptor contains four pointers. The MOD register contains the address of the Module Descriptor for the currently running module. It is automatically up·dated by the Call External Procedure instructions (CXP and CXPD). The FF, FM, FC bits define the Slave Communication Proto· col to be used in FPU, MMU and Custom Slave instructions (Sec. 3.4.9). If these bits are not set, the corresponding instructions will use the 16-bit protocol (32032 compatible). If these bits are set, the corresponding instructions will use the new (fast) 32·bit protocol. The P bit improves the efficiency of the Write Validation Buffer in the CPU. It is set if the Virtual Memory has page size(s) larger than or equal to 4 Kbytes. It is reset otherwise. In Systems where the MMU is not present, the P bit is not used. o 15 I 2.1.4 Memory Organization MOD l "I" The main memory is a uniform linear address space. Memo· ry locations are numbered sequentially starting at zero and ending at 232 • 1. The number specifying a memory location is called an address. The contents of each memory location is a byte conSisting of eight bits. Unless otherwise noted, diagrams in this document show data stored in memory with the lowest address on the right and the highest address on the left. Also, when data is shown vertically, the lowest ad· dress is at the top of a diagram and the highest address at the bottom of the diagram. When bits are numbered in a diagram, the least Significant bit is given the number zero, and is shown at the right of the diagram. Bits are numbered in increasing significance and toward the left. 31 STATIC BASE I oj LINK TABLE ADDRESS PROGRAM BASE RESERVED ~ " TL/EE/8673-4 FIGURE 2-4. Module Descriptor Format 01 A Byte at Address A Two contiguous bytes are called a word. Except where noted (Sec. 2.2.1), the least significant byte of a word is stored at the lower address, and the most significant byte of the word is stored at the next higher address. In memory, the address of a word is the address of its least significant byte, and a word may start at any address. 2·100 The format of a Module Descriptor is shown in Figure 2-4. The Static Base entry contains the address of static data aSSigned to the running module. It is loaded into the CPU Static Base register by the CXP and CXPD instructions. The Program Base entry contains the address of the first byte of instruction code in the module. Since a module may have multiple entry points, the Program Base pointer serves only as a reference to find them. 2.0 Architectural Description z en w (Continued) I' The Link Table Address points to the Link Table for the currently running module. The Link Table provides the information needed for: 1) Sharing variables between modules. Such variables are accessed through the Link Table via the External addressing mode. The format of a Link Table is given in Figure 2-5. A Link Table Entry for an external variable contains the 32-bit address of that variable. An entry for an external procedure contains two 16-bit fields: Module and Offset. The Module field contains the new MOD register contents for the module being entered. The Offset field is an unsigned number giving the position of the entry point relative to the new module's Program Base pointer. ENTRY (VARIABLE) ABSOLUTE ADDRESS _.... OFFSET I TL/EE/8673-7 ( PROCEDURE) _.... TL/EE/8673-5 2.2 INSTRUCTION SET 2.2.1 General Instruction Format Figure 2-6 shows the general format of a Series 32000 instruction. The Basic Instruction is one to three bytes long and contains the Opcode and up to, two 5-bit General Addressing Mode ("Gen") fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes selected. Register: The operand is available in one of the eight General Purpose Registers. In certain Slave Processor instructions, an auxiliary set of eight registers may be referenced instead. Register Relative: A General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. Memory Space. Identical to Register Relative above, except that the register used is one of the dedicated registers PC, SP, SB or FP. These registers point to data areas generally needed by high-level languages. Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before indexing. See Figure 2-7. Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selectOPTIONAL EXTENSIONS BASIC INSTRUCTION r~----------------~A~----------------~\I~--------~~ I DISP2 DISPl DISP21DISP1 DISP IMM DISP I z en w N W W ~ ...... en 2.2.2 Addressing Modes FIGURE 2-5. A Sample Link Table IMPLIED IMMEDIATE OPERAND(S) ...... <:) ....... The CPU generally accesses an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." Addressing modes are designed to optimally support highlevel language accesses to variables. In nearly all cases, a variable access requires only one addressing mode, within the instruction that acts upon that variable. Extraneous data movement is therefore minimized. Addressing Modes fall into nine basic types: (VARIABLE) MODULE "I W N Some instructions require additional, "implied" immediates and/or displacements, apart from those associated with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition (Sec. 2.2.3). For further details of the functions of these tables, see the Series 32000 Instruction Set Reference Manual. 0-1'"' -131 ABSOLUTE ADDRESS l REG. NO. FIGURE 2-7. Index Byte Format ed address modes. Each Displlmm field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded with the top bits of that field, as shown in Figure 2-8, with the remaining bits interpreted as a Signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most significant byte first. Note that this is different from the memory representation of data (Sec. 2,1.4). 2) Transferring control from one module to another. This is done via the Call External Procedure (CXP) instruction. o GEN. ADDR. MODE N W INDEX BYTE INDEX BYTE GEN ADDR MODE A IMM t ~ iI I I I i I I GEN ADDR MODE B OPCODE j TL/EE/8673-6 FIGURE 2-6. General Instruction Format 2-101 • .... U) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , ~ C') C') 2.0 Architectural Description (Continued) BYTE DISPLACEMENT: RANGE -64 TO + 63 C'I Top of Stack: The currently-selected Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. Scaled Index: Although encoded as an addressing mode. Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by 1, 2, 4 or 8 and adding it into the total, yielding the final Effective Address of the operand. C') U) z C; SIGNED DISPLACEMENT .... ~ C') C') C'I C') U) z WORD DISPLACEMENT: RANGE -8192 TO + 8191 Table 2-1 is a brief summary of the addressing modes. For a complete description of their actions, see the Instruction Set Reference Manual. 2.2.3 Instruction Set Summary Table 2-2 presents a brief description of the Series 32000 instruction set. The Format column refers to the Instruction Format tables (Appendix A). The Instruction column gives the instruction as coded in assembly language, and the Description column provides a short description of the function provided by that instruction. Further details of the exact operations performed by each instruction may be found in the Instruction Set Reference Manual. Notations: i = Integer length suffix: B = Byte W = Word DOUBLE WORD DISPLACEMENT: RANGE -(229 -2 24) to +(229 -1). 0 7 1 I I 1 I //- D = Double Word f = Floating Point length suffix: F = Standard Floating L = Long Floating TL/EE/8673-8 gen = General operand. Any addressing mode can be specified. FIGURE 2·8. Displacement Encodlngs 'Note: The pattern "11100000" for the most significant byte of the displacement Is reserved by National for future enhancements. Therefore. It should never be used by the user program. This causes the lower limit of the displacement range to be - (229 - 224) Instead of - 229. short = A 4-bit value encoded within the Basic Instruction (see Appendix A for encodings). imm = Implied immediate operand. An 8-bit value appended after any addressing extensions. Memory Relative: A pOinter variable is found within the memory space pointed to by the SP, SB or FP register. A displacement is added to that pOinter to generate the Effec· tive Address of the operand. disp = Displacement (addressing constant): 8, 16 or 32 bits. All three lengths legal. reg = Any General Purpose Register: RO-R? areg = Any Dedicated/ Address Register: SP, SB, FP, MOD, INTBASE, PSR, US (bottom 8 PSR bits). mreg = Any Memory Management Status/Control Register. creg = A Custom Slave Processor Register (Implementation Dependent). cond = Any condition code, encoded as a 4-bit field within the Basic Instruction (see Appendix A for encodings). Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written. Absolute: The address of the operand is specified by a displacement field in the instruction. External: A pointer value is read from a specified entry of the current Link Table. To this pointer value is added a displacement, yielding the Effective Address of the operand. 2-102 r--------------------------------------------------------------------------, 2.0 Architectural Description Z UJ (0) (Continued) N (0) (0) N TABLE 2-1 ..... I o ...... NS32332 Addressing Modes ENCODING Register 00000 OOOOt 00010 00011 00100 00101 00110 00111 Register Relative 01000 01001 01010 01011 01100 01101 01110 01111 Memory Relative 10000 10001 10010 Reserved 10011 Immediate 10100 Absolute 10101 External 10110 MODE ASSEMBLER SYNTAX EFFECTIVE ADDRESS N Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 RO or FO RlorFl R2 or F2 R3 or F3 R40rF4 R5 or F5 R60r F6 R7 or F7 None: Operand is in the specified register Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(Rl) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp + Register. Frame memory relative Stack memory relative Static memory relative disp2(displ (FP)) disp2(displ (SP)) disp2(displ (SB)) Disp2 + Pointer; Pointer found at address Displ + Register. "SP" is either SPO or SPI , as selected in PSR. Immediate value None: Operand is input from instruction queue. Absolute @disp Disp. External EXT (displ) + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Displ. Top of stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. Memory Space 11000 11001 11010 11011 Scaled Index 11100 11101 11110 11111 Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) • +disp Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] EA (mode) + Rn. EA (mode) + 2x Rn. EA (mode) + 4X Rn. EA (mode) + B X Rn. 'Mode' and 'n' are contained within the Index Byte. EA (mode) denotes the effective address generated using mode. (0) (0) ~ ..... U1 (Reserved for Future Use) Top of Stack 10111 Z UJ (0) 2-103 • U) .- ~ r---------------------------------------------------------------------------------~ 2.0 Architectural Description (Continued) ~ C") TABLE 2-2 ~ Series 32000 Instruction Set Summary Ci .~ C") C") ('II ~ Z MOVES Format 4 2 7 7 7 7 7 4 Operation MOVi MOVQi MOVMi MOVZBW MOVZiD MOVXBW MOVXiD ADDR Operands gen,gen short,gen gen,gen,disp gen,gen gen,gen gen,gen gen,gen gen,gen Description Move a value. Extend and move a signed 4-bit constant. Move Multiple: disp bytes (1 to 16). Move with zero extension. Move with zero extension. Move with sign extension. Move with sign extension. Move Effective Address. INTEGER ARITHMETIC Format 4 2 4 4 4 6 6 7 7 7 7 7 7 7 Operation Operands Description ADDI ADDQi ADDCi SUBi SUBCi NEGi ABSi MULi QUOi REMi DIVi MODi MEIi DEli gen,gen short,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Add. Add signed 4-bit constant. Add with carry. Subtract. Subtract with carry (borrow). Negate (2's complement). Take absolute value. Multiply Divide, rounding toward zero. Remainder from QUO. Divide, rounding down. Remainder from DIV (Modulus). Multiply to Extended Integer. Divide Extended Integer. PACKED DECIMAL (BCD) ARITHMETIC Format 6 6 Operation Operands Description ADDPi SUBPi gen,gen gen,gen Add Packed. Subtract Packed. Operation Operands Description CMPi CMPQi CMPMi gen,gen short,gen gen,gen,disp Compare. Compare to signed 4-bit constant. Compare Multiple: disp bytes (1 to 16). Operation Operands Description ANDi ORi BICi XORi COMi NOTi Scondi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen Logical AND. Logical OR. Clear selected bits. Logical Exclusive OR. Complement all bits. Boolean complement: LSB only. Save condition code (cond) as a Boolean variable of size i. INTEGER COMPARISON Format 4 2 7 LOGICAL AND BOOLEAN Format 4 4 4 4 6 6 2 2-104 z 2.0 Architectural Description CJ) Co) I\) Co) Co) I\) (Continued) SHIFTS Format 6 6 6 .... I Operation LSHi ASHi ROTi Operands gen,gen gen,gen gen,gen Description Logical Shift, left or right. Arithmetic Shift, left or right. Rotate, left or right. 0 ....... Operation Operands Description U1 TBITi SBITi SBITIi CBITi CBITli IBITi FFSi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Test bit. Test and set bit. Test and set bit, interlocked Test and clear bit. Test and clear bit, interlocked. Test and invert bit. Find first set bit Z CJ) Co) I\) Co) Co) I\) BITS .... I Format 4 6 6 6 6 6 8 BIT FIELDS Bit fields are values in memory that are not aligned to byte boundaries. Examples are PACKED arrays and records used in Pascal. "Extract" instructions read and align a bit field. "Insert" instructions write a bit field from an aligned source. Format Operation Operands Description 8 8 7 7 8 EXTi INSi EXTSi INSSi CVTP reg,gen,gen,disp reg,gen,gen,disp gen,gen,imm,imm gen,gen,imm,imm reg,gen,gen Extract bit field (array oriented). Insert bit field (array oriented). Extract bit field (short form). Insert bit field (short form). Convert to Bit Field Pointer. ARRAYS Format 8 8 Operation Operands Description CHECKi INDEXi reg,gen,gen reg,gen,gen Index bounds check. Recursive indexing step for multiple-dimensional arrays. STRINGS String instructions assign specific functions to the General Purpose Registers: Options on all string instructions are: B (Backward): Decrement string pOinters after each step rather than incrementing. U (Until match): End instruction if String 1 entry matches R4. R4 - Comparison Value R3 - Translation Table Pointer R2 - String 2 Pointer W (While match): End instruction if String 1 entry does not match R4. R1 - String 1 Pointer RO - Limit Count All string instructions end when RO decrements to zero. Format 5 Operation MOVSi MOVST Operands options options Descriptions Move String 1 to String 2. Move string, translating bytes. 5 CMPSi CMPST options options Compare String 1 to String 2. Compare translating, String 1 bytes. 5 SKPSi SKPST options options Skip over String 1 entries Skip, translating bytes for Until/While. 2-105 an ,.. • C'I CO) CO) C'I CO) en Z ...... 0,.. • C'I CO) CO) C'I CO) en Z 2.0 Architectural Description (Continued) JUMPS AND LINKAGE Format Operation 3 JUMP 0 BR 0 Bcond 3 CASEi 2 ACBi 3 JSR BSR 1 CXP 3 CXPD SVC FLAG BPT ENTER EXIT RET RXP RETT 1 RETI Operands gen disp disp gen short,gen,disp gen disp disp gen [reg IistJ.disp [reg listl disp disp disp CPU REGISTER MANIPULATION Format Operands Operation Description Jump. Branch (PC Relative). Conditional branch. Multiway branch. Add 4-bit constant and branch if non-zero. Jump to subroutine. Branch to subroutine. Call external procedure. Call external procedure using descriptor. Supervisor Call. Flag Trap. Breakpoint Trap. Save registers and allocate stack frame (Enter Procedure). Restore registers and reclaim stack frame (Exit Procedure). Return from subroutine. Return from external procedure call. Return from trap. (Privileged) Return from interrupt. (Privileged) Description SAVE RESTORE LPRi SPRi ADJSPi BISPSRi BICPSRi SETCFG [reg listl [reg listl areg,gen areg,gen gen gen gen [option listl Save General Purpose Registers. Restore General Purpose Registers. Load Dedicated Register. (Privileged if PSR or INTBASE) Store Dedicated Register. (Privileged if PSR or INTBASE) Adjust Stack Pointer. Set selected bits in PSR. (Privileged if not Byte length) Clear selected bits in PSR. (Privileged if not Byte length) Set Configuration Register. (Privileged) FLOATING POINT Format Operation Operands Description gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen gen Move a Floating Point value. Move and shorten a Long value to Standard. Move and lengthen a Standard value to Long. Convert any integer to Standard or Long Floating. Convert to integer by rounding. Convert to integer by truncating, toward zero. Convert to largest integer less than or equal to value. Add. Subtract. Multiply. Divide. Compare. Negate. Take absolute value. Polynomial Step. Dot Product. Binary Scale. Binary Log. Load FSR. Store FSR. 2 2 3 3 3 5 11 9 9 9 9 9 9 11 11 11 11 11 11 11 12 12 12 12 9 9 MOVf MOVLF MOVFL MOVif ROUNDfi TRUNCfi FLOORfi ADDf SUBf MULf DIVf CMPf NEGf ABSf POLYf DOn SCALBf LOGBf LFSR SFSR 2-106 z 2.0 Architectural Description en w (Continued) N W W MEMORY MANAGEMENT Format 14 14 14 14 8 8 Operation Operands Description LMR SMR RDVAL WRVAL MOVSUi mreg,gen mreg,gen gen gen gen,gen Load Memory Management Register. (Privileged) Store Memory Management Register. (Privileged) Validate address for reading. (Privileged) Validate address for writing. (Privileged) Move a value from Supervisor Space to User Space. (Privileged) Move a value from User Space to Supervisor Space. (Privileged) MOVUSi gen,gen ....~ o ....... z en w N W W N ....• CI1 MISCELLANEOUS Format Operation Operands NOP WAIT DIA Description No Operation. Wait for interrupt. Diagnose. Single-byte "Branch to Self" for hardware breakpointing. Not for use in programming. CUSTOM SLAVE Format Operation Operands Description 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.1 15.1 15.1 15.1 15.1 15.1 CCALOc CCALlc CCAL2c CCAL3c CMOVOc CMOVlc CMOV2c CMOV3c CCMPOc CCMPlc CCVOci CCVlci CCV2ci CCV3ic CCV4DQ CCV5QD gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Custom Calculate. 15.1 15.1 LCSR SCSR gen gen Load Custom Status Register. Store Custom Status Register. 15.0 15.0 CATSTO CATSTI gen gen Custom Address/Test. (Privileged) (Privileged) 15.0 15.0 LCR SCR creg,gen creg,gen Load Custom Register. (Privileged) Store Custom Register. (Privileged) Custom Move. Custom Compare. Custom Convert. 2-107 fJI .,... it) N C") 3.0 Functional Description C") The following is a functional description of the NS32332 CPU. N C") en z ..... CI .,... N C") C") ~ en z Each rising edge of PHI1 defines a transition in the timing state ("T-State") of the CPU. One T-State represents the execution of one microinstruction within the CPU, and/or one step of an external bus transfer. See Sec. 4 for complete specifications of PHI1 and PHI2. 3.1 POWER AND GROUNDING The NS32332 requires a single 5-volt power supply, applied on 7 pins. The Logic Voltage pins (VeeL 1 and VeeL2) supply the power to the on-chip logic. The Buffer Voltage pins (VeeBl to VeeB5) supply the power to the output drivers of the chip. The Logic Voltage pins and the Buffer Voltage pins should be connected together by a power (Vecl plane on the printed circuit board. PHil The NS32332 grounding connections are made on 8 pins. The Logic Ground pins (GNDL1 and GNDL2) are the ground pins for the on-chip logic. The Buffer Ground pins (GNDB1 to GNDB6) are the ground pins for the output drivers of the chip. The Logic Ground pins and the Buffer Ground pins should be connected together by a ground plane on the printed circuit board. PHI2 In addition to Vee and Ground, the NS32332 CPU uses an internally-generated negative voltage. It is necessary to filter this voltage externally by attaching a pair of capacitors (Figure 3. 1) from the BBG pin to Ground. TLlEE/B673-9 FIGURE 3-2. Clock Timing Relationships As the TCU presents signals with very fast transitions, it is recommended that the conductors carrying PHI1 and PHI2 be kept as short as pOSSible, and that they not be connected anywhere except from the TCU to the CPU and, if present, the MMU. A TTL Clock signal (CTTL) is provided by the TCU for all other clocking. Recommended values for these are: C1: 1 ,..F, Tantalum C2: 1000 pF, Low inductance. This should be either a disc or monolithic capaCitor. 3.3 RESETTING The RST / ABT pin serves both as a Reset for on-chip logic and as the Abort input for Memory-Managed systems. For its use as the Abort Command, see Sec. 3.5.2. The DT/SDONE pin is sampled on the riSing edge of PHI1, one cycle before the reset signal is deasserted to select the data timing during write cycles. If DT/SDONE is sampled high, ADO-AD31 are floated during state T2 and the data is output during state T3. This mode must be selected if an MMU is used (Section 3.5). If DT/SDONE is sampled low, the data is output during state T2. See Figure 3-7. The CPU may be reset at any time by pulling the RSf / ABT pin low for at least 64 clock cycles. Upon detecting a reset, the CPU terminates instruction proceSSing, resets its inter· nal logic, and clears the Program Counter (PC) and Processor Status Register (PSR) to all zeroes. On application of power, RST/ABT must be held low for at least 50 ,..sec after Vee is stable. This is to ensure that all +5V TLlEE/B673-11 FIGURE 3-1_ Recommended Supply Connections 3.2 CLOCKING The NS32332 inputs clocking signals from the Timing Control Unit (TCU), which presents two non-overlapping phases of a single clock frequency. These phases are called PHI1 (pin A7) and PHI2 (pin B8). Their relationship to each other is shown in Figure 3-2. vee PHil ---t--~ RsT/ABr ----t---------fJ-JI TL/EE/B673-l0 FIGURE 3-3. Power·on Reset Requirements 2-108 z 3.0 Functional Description en Co) (Continued) N on-chip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain active for not less than 64 clock cycles. See Figures 3-3 and 3-4. The Timing Control Unit (TCU) provides circuitry to meet the Reset requirements of the NS32332 CPU. Figure 3-5a shows the recommended connections for a non-MemoryManaged system. Figure 3-5b shows the connections for a Memory-Managed system. PHll~Jl-Jl I--- iiST/ABT---....,~................. l!: I 64 CLOCK-I C~CLES Co) Co) ....~ o ....... z en Co) N TL/EE/8673-12 FIGURE 3-4. General Reset Timing Co) Co) N ....• U1 VCC cpu TCU 1"-------------. I I II mr--SET t:~+I-~_1--~---~~~----.~ I RsTO RSTI 1----------1 RsT/ABr !L. _____________ .J: EXTERNAL RESET (OPTIONAL) l!: 501'88C RESET SWITCH (OPTIONAL) SYSTEM RESET TLlEE/8673-13 FIGURE 3-5a. Recommended Reset Connections, Non-Memory-Managed System VCC MMU TCU CPU 1"-------------. I I II RESET E>--+I-~_1--~--.....~+-----~ iiSri RsTO !L. _____________ .JI EXTERNAL RESET (OPTIONAL) i!: 50p.sec RESET SWITCH (OPTIONAL) TL/EE/8673-14 FIGURE 3-5b. Recommended Reset Connections, Memory-Managed System difference between them is the 4·bit code placed on the Bus Status pins (STO-ST3). Slave Processor cycles differ in that separate control signals are applied (Sec. 3.4.6). 3.4 BUS CYCLES The NS32332 CPU will perform Bus cycles for one of the following reasons: 1) To write or read data to or from memory or peripheral interface device. Peripheral input and output are memory mapped in the Series 32000 family. 2) To fetch instructions into the 20·byte instruction queue. This happens whenever the bus would otherwise be idle and the queue is not already full. For case 1 (only Read) and case 2, the NS32332 supports Burst cycles which are suitable for memories that can handle "nibble mode" accesses. (Sec. 3.4.2). The sequence of events in a non-Slave, non-Burst Bus cycle is shown in Figure 3-6 for a Read cycle, and Figure 3-7 for a Write cycle. The cases shown assume that the selected memory or interface device is capable of communicating with the CPU at full speed. If it is not, then cycle extension may be requested through the RDY line (Sec. 3.4.1). A full speed Bus cycle is performed in four cycles of the PHI1 clock,labeled T1 through T4. Clock cycles not associated with a Bus cycle are designated Ti (for idle). 3) To acknowledge an interrupt and allow external circuitry to provide a vector number, or to acknowledge completion of an interrupt service routine. 4) To transfer information to or from a Slave Processor. In terms of bus timing, cases 1 through 3 above are identical. For timing speCifications, see Sec. 4. The only external 2·109 3.0 Functional Description (Continued) NS32332 CPU BUS SIGNALS Tl PHil [ PHI 2 [ ADO-AD31 [ STS [ ADS [ STD-ST3 T3 T4 I TlORTi I [ ODiN [ iEii-i'E3 [ BWO-BWI [ ROY T2 [ TL/EE/B673-15 FIGURE 3-6_ Read Cycle Timing 2-110 3.0 Functional Description zCJ) Co) (Continued) N Co) Co) N ....o NS32332 CPU BUS SIGNALS I Z CJ) Co) N Co) Co) N .... I en fII TLlEE/B673-16 FIGURE 3-7. Write Cycle Timing 2-111 ~ po ~ C") C") C'I C") U) z ...... Q po ~ C") C") C'I C") U) z r---------------------------------------------------------------------------------, 3.0 Functional Description (Continued) During T4 or Ti which preceed T1 of the current Bus cycle, the CPU applies a Status Code on pins STO-ST3. It also provides a low-going pulse on the STS pin to indicate that the status code is valid. If the CPU is performing a Read cycle, the Data Bus (ADOAD31) is sampled on the falling edge of PHI2 of the last T3 state. See Sec. 4. Data must, however, be held at least until the beginning of T4. The T4 state finishes the Bus cycle . Data from the CPU during Write cycles remains valid throughout T4. Note that the Bus Status lines (STO-ST3) change at the beginning of T4, anticipating the following bus cycle (if any). The ADS signal has the dual purpose of informing the external circuitry that a Bus cycle is starting and of providing control to an external latch for demultiplexing address bits 0-31 from ADO-AD31 pins. (See Figure 3-8.) During this time, the control signal iJDijij, which indicates the direction of the transfer, and BEO-BE3 which indicate which of the four bus bytes to be referenced, become valid. Note that during Instruction Fetch cycles BEO-BE3 are all active, but in operand Read or Write cycles they indicate the byte(s) to be referenced. 3,4.1 Cycle Extension To allow sufficient strobe widths and access times for any speed of memory or peripheral device, the NS32332 provides for extension of a bus cycle. Any type of bus cycle except a Slave Processor cycle can be extended. In Figures 3-7 and 3-8, note that during T3 all bus control signals from the CPU and TCU are flat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the ROY (Ready) pin. In the middle of T3 on the falling edge of PHI1, the RDY line is sampled by the CPU. If RDY is high, the next T-state will be T4, ending the bus cycle. If ROY is low, then another T3 state will be inserted and the ROY line will again be sampled on the falling edge of PHI1. Each additional T3 state after the first is referred to as a "WAIT STATE". See Figure 3-9. Note: II a burst cycle occurs during an operand read. all the memory banks should be enabled, during the burst cycle, regardless of BEn. The CPU BEn lines, In this case, are valid in the middle of T3 of the burst cycle-thus, there may not be enough time to selectively enable the different memory banks, unless a WAIT state is added. See Figure 4·6. During T2 the CPU floats ADO-AD31 lines unless DT/SDONE is sampled Iowan the rising edge of reset and the bus cycle is a write cycle. T2 is a time window to be used for virtual to physical address translation by the Memory Management Unit, if virtual memory is used in the system. The T3 state provides for access time requirements and it occurs at least once in a bus cycle. In the middle of T3 on the falling edge of PHI1, the ROY line is sampled to determine whether the bus cycle will be extended (Sec. 3.4.1). ODIN Figure 3-10 illustrates a typical Read cycle, with two WAIT states requested through the ROY pin. r-----------~~ TL/EE/B673-17 FIGURE 3-8. Bus Connections 2-112 3.0 Functional Description (Continued) n T2 T3 (WAIT) T3 T4 PHil PHI2 ROY TLlEE18673-18 FIGURE 3-9. ROY Pin Timing NS32332 CPU BUS SIGNALS PREV.CYCLE \T40R Ti \ Tl T2 I (W~IT) I (vlllT) I NEXT CYCLE 13 T4 InoRTi I PHil [ PHI2 [ AOO-A023 [ STS [ ADs [ STo-ST3 [ DoiN [ m-iiEi [ ROY [ TLIEE18673-19 FIGURE 3-10. Extended Cycle Example 2-113 .... ~ r-----------------------------------------------------------------------------~ ~ a ....~o .... ~ I 3.0 Functional Description (Continued) 3.4.2 Burst Cycles The NS32332 is capable of performing Burst cycles in order to increase the bus throughput. Burst is available in instruction Fetch cycles and operand Read cycles only. Burst is not supported in operand Write cycles or Slave cycles. The sequence of events for Burst cycles is shown in Figuf9 3-". The cases shown assume that the selected memory is capable of communicating with the CPU at full speed. If it is T4 not, then cycle extension may be requested through the RDY line (Sec. 3.4.1). A Burst cycle is composed of two parts. The first part is a regular cycle (i.e. Tl through T4), in which the CPU outputs the new status and asserts all the other relevant control signals discussed in Sec. 3.4. In addition, the Burst Out Signal (BOUT) is activated by the CPU indicating that the CPU can perform Burst cycles. If the selected memory allows Tl T3 T4 T4 T3 T4 PIli 1 [ PIli 2 [ m[ ADS [ mIT [ liN [ --cp- --¢----¢-- ADO-AD31 [ TUEE/8673-2() (a) Normal Termination of Burst Ta T4 T3 T4 PIli 1 [ PHI 2 [ IIIR[ ADO-ADal [-+---I''--+' --cp-- -¢-TL/EE/8673-21 (b) External Termination of Burst FIGURE 3·11_ Burst Cycles (For Read Only) 2-114 3.0 Functional Description (Continued) Burst cycles, it will notify the CPU by activating the burst in signal (BIN). BIN is sampled by the CPU in the middle of T3 on the falling edge of PHil. If the memory does not allow burst (BIN high), the cycle will terminate through T4 and BOUT will go inactive immediately. If the memory allows burst (BIN low), and the CPU has not deasserted BOUT, the second part of the Burst cycle will be performed (see Figure 3-11) and BOUT will remain active until termination of the Burst. 3. The data operand has been completely read. This applies to burst read cycles for non-aligned operands or when the bus width is either 8 or 16 bits. 4. BIN, sampled in the current nibble's last T3, is not active any more. (See Figure 3. 11b). 5. Bus Error or Bus Retry occurs (see Sec. 3.4.8). 6. A HOLD Request occurs. Any nibble's T3 may be extended with WAIT states using the ROY line as described in Sec. 3.4.2. The second part consists of up to 3 nibbles. In each nibble, a data item is read by the CPU. The duration of each nibble is 2 clock cycles labeled T3 and T4. The control signals BOUT, STO-ST3, and ODIN remain stable during the Burst chain. The Burst chain will be terminated in the following cases: BEO-BE3 are adjusted for every nibble in operand cycles. 1. The CPU has reached a 16 byte boundary i.e. the byte address of the current nibble is x... xll11 (binary). BOUT is initially set by the CPU according to the known bus width. Its state may change in a subsequent T3 as a result of a change in the bus width. Figure 3-12 shows the resulting BOUT timing. 2. The CPU detects that the instructions being prefetched (in Burst Mode) are no longer needed due to an alteration of the flow of control. This happens, for example, when a branch instruction is executed or an exception occurs. Note: If the selected memory is capable of handling burst transfers, it should activate BiJiI regardless of the state of lIDll'i'. The reason is that BOUT may be activated by the CPU after the BIN sampling time. The liOiJf signal Indicates when the CPU Is going to burst, and should not be Interpreted as a 'Burst Request' signal. Note: In 16-blt bus systems (see Sec. 3.4.7) the Burst chain will be terminated by the CPU on an a.byte boundary i.e. address x•.x111 (binary) and in a·blt bus system on a 4.byte boundary i.e. address x...x11 (binary). PHil ~ PHI2 [ ADS [ 11 T2 T3 T3 T3 l--rL ~ r-- r1 r-- r1 -'---I n --rL r--- / \. RDY [ T4 X BWO-l [ BIN [ / (1) Biilii' [ \. (2) BOUT [ TL/EE/8673-88 Note 1: CPU deasserts BOUT. Note 2: CPU asserts liOiJf. FIGURE 3·12_ BOUT Timing Resulting from a Bus Width Change 2-115 .... ,--------------------------------------------------------------------------, ~ ~ CO) CO) IN CO) fJ) z ~ .... ~ CO) CO) IN ~ Z 3.0 Functional Description (Continued) 3.4.3 Bus Status 1000 - Sequential Instruction Fetch. The CPU is reading the next sequential word from the instruction stream into the Instruction Queue. It will do so whenever the bus would otherwise be idle and the queue is not already full. 1001 - Non-Sequential Instruction Fetch. The NS32332 CPU presents four bits of Bus Status information on pins STO-ST3. The various combinations on these pins indicate why the CPU is performing a bus cycle, or, if it is idle on the bus, then why is it idle. Referring to Figures 3-6 and 3-7, note that Bus Status leads the corresponding Bus Cycle, going valid one clock cycle before T1, and changing to the next state at T4. This allows the system designer to fully decode the Bus Status and, if desired, latch the decoded Signals before ADS initiates the Bus Cycle. The Bus Status pins are interpreted as a four-bit value, with STO the least significant bit. Their values decode as follows: The CPU is performing the first fetch of instruction code after the Instruction Queue is purged. This will occur as a result of any jump or branch, or any interrupt or trap, or execution of certain instructions. 1010 - Data Transfer. The CPU is reading or writing an operand of an instruction. 0000 - The bus is idle because the CPU does not yet need to perform a bus access. 1011 - Read RMW Operand. 0001 - The bus is idle because the CPU is executing the WAIT instruction. 0010 - (Reserved for future use.) 0011 - The bus is idle because the CPU is waiting for a Slave Processor to complete an instruction. 0100 - Interrupt Acknowledge, Master. The CPU is reading an operand which will subsequently be modified and rewritten. If memory protection circuitry would not allow the following Write cycle, it must abort this cycle. 1100 - Read for Effective Address Calculation. The CPU is reading information from memory in order to determine the Effective Address of an operand. This will occur whenever an instruction uses the Memory Relative or External addressing mode. The CPU is performing a Read cycle. To acknowledge receipt of a Non-Maskable Interrupt (on NMI) it will read from address FFFFFF0016, but will ignore any data provided. To acknowledge receipt of a Maskable Interrupt (on INT) it will read from address FFFFFE0016, expecting a vector number to be provided from the Master Interrupt Control Unit. If the vectoring mode selected by the last SETCFG instruction was Non-Vectored, then the CPU will ignore the value it has read and will use a default vector instead. See Sec. 3.4.5. 1101 - Transfer Slave Processor Operand. The CPU is either transferring an instruction operand to or from a Slave Processor, or it is issuing the Operation Word of a Slave Processor instruction. See Sec. 3.9.1. 1110 - Read Slave Processor Status. The CPU is reading a Status Word from a Slave Processor. This occurs after the Slave Processor has signalled completion of an instruction. The transferred word tells the CPU whether a trap should be taken, and in some instructions it presents new values for the CPU Processor Status Register bits N, Z, Lor F. See Sec. 3.9.1. 0101 - Interrupt Acknowledge, Cascaded. The CPU is reading a vector number from a Cascaded Interrupt Control Unit. The address provided is the address of ICU's Hardware Vector register. See Sec. 3.4.6. 0110 - End of Interrupt, Master. 1111 - Broadcast Slave 10. The CPU is initiating the execution of a Slave Processor instruction. The 10 Byte (first byte of the instruction) is sent to all Slave Processors, one of which will recognize it. From this point the CPU is communicating with only one Slave Processor. See Sec. 3.9.1. The CPU is performing a Read cycle to indicate that it is executing a Return from Interrupt (RETI) instruction. See Sec. 3.4.6. 0111 - End of Interrupt, Cascaded. The CPU is reading from a Cascaded Interrupt Control Unit to indicate that it is returning (through RETI) from an interrupt service routine requested by that unit. See Sec. 3.4.6. 2-116 3.0 Functional Description (Continued) 3.4.4 Data Access Sequences Accesses of operands requiring more than one bus cycle are performed sequentially, with no idle T-States separating them. The number of bus cycles required to transfer an operand depends on its size and its alignment. Table 3-2 lists the bus cycles performed for each situation. The 32-bit address provided by the NS32332 is a byte address; that is, it uniquely identifies one of up to 4 billion eight-bit memory locations. An important feature of the NS32332 is that the presence of a 32-bit data bus imposes no restrictions on data alignment; any data item, regardless of size, may be placed starting at any memory address. The NS32332 provides special control signals. Byte Enable (BEO-BE3) which facilitate individual byte accessing on a 32-bit bus. 3.4.4.1 Bit Accesses The Bit Instructions perform byte accesses to the byte containing the designated bit. The Test and Set Bit instruction (SBIT), for example, reads a byte, alters it, and rewrites it, having changed the contents of one bit. Memory is organized as four eight-bit banks, each bank receiving the double-word address (A2-A31) in parallel. One bank, connected to Data Bus pins ADO-AD? is enabled when BEO is low. The second bank, connected to data bus pins AD8-AD15 is enabled when BE1 is low. The third and fourth banks are enabled by BE2 and BE3, respectively. See Figure 3-13. 3.4.4.2 Bit Field Accesses An access to a Bit Field in memory always generates a Double-Word transfer at the address containing the least significant bit of the field. The Double Word is read by an Extract instruction; an Insert instruction reads a Double Word, modifies it, and rewrites it. 3.4.4.3 Extending Multiple Accesses The Extending Multiply Instruction (MEl) will return a result which is twice the size in bytes of the operand it reads. If the multiplicand is in memory, the most-significant half of the result is written first (at the higher address), then the leastsignificant half. This is done in order to support retry if this instru'ction is aborted. 3.4.5 Instruction Fetches Instructions for the NS32332 CPU are "prefetched"; that is, they are input before being needed into the next available entry of the twenty-byte Instruction Queue. The CPU performs two types of Instruction Fetch cycles: Sequential and Non-Sequential. These can be distinguished from each other by their differing status combinations on pins STO-ST3 (Sec. 3.4.3). A Sequential Fetch will be performed by the CPU whenever the Data Bus would otherwise be idle and the Instruction Queue is not currently full. Sequential Fetches are always type 10 Read cycles (Table 3-1). A Non-Sequential Fetch occurs as a result of any break in the normally sequential flow of a program. Any jump or branch instruction, a trap or an interrupt will cause the next Instruction Fetch cycle to be Non-Sequential. In addition, certain instructions flush the instruction queue, causing the next instruction fetch to display Non-Sequential status. Only the first bus cycle after a break displays Non-Sequential status, and that cycle depends on the destination address. If a non-sequential fetch is followed by additional sequential fetches which are burst continuation of the non-sequential fetch, then the Status Bus (STO-ST3) remains the same. TLlEE/B673-22 FIGURE 3-13. Memory Interface Since operands do not need to be aligned with respect to the double-word bus access performed by the CPU, a given double-word access can contain one, two, three, or four bytes of the operand being addressed, and these bytes can begin at various positions, as determined by A1, AO. Table 3-1 lists the 10 resulting access types. Nole 1: During instruction fetch cycles, SEO-SE3 are all active regardless of the alignment. TABLE 3-1 Bus Access Types Type Bytes Accessed A 1,AD BE3 BE2 BE1 BED 1 1 00 1 0 2 01 0 1 3 10 1 0 4 11 0 1 5 2 00 0 0 6 2 01 1 0 0 ? 2 10 1 0 0 8 3 00 1 0 0 0 9 3 01 0 0 0 10 4 00 0 0 0 0 Note 2: During Operand Access cycles BEQ-BE3 are activated as if the bus is 32 bits wide, regardless of the real width. 3.4.6 Interrupt Control Cycles Activating the INT or NMI pin on the CPU will initiate one or more bus cycles whose purpose is interrupt control rather than the transfer of instructions or data. Execution of the Return from Interrupt instruction (RETI) will also cause Interrupt Control bus cycles. These differ from instruction or data transfers only in the status presented on pins STO-ST3. All Interrupt Control cycles are single-byte Read cycles. This section describes only the Interrupt Control sequences associated with each interrupt and with the return from its service routine. 2-117 .... r---------------------------------------------------------------------------------, U) c:.. CO) CO) 3.0 Functional Description (Continued) :a.....z TABLE 3·2 Access Sequences Data Bus .... o c:.. CO) CO) eN ~ Z I Cycle Type Address '\ Byte 3 B~e2 A. Word at address ending with 11 1. 2. 4 A o Byte 0 o A+1 9 A X o o o A+3 7 5 A o 4 8 o Byte 1 Byte 0 X X X X Byte 3 1 Byte 1 Byte 0 X X o X X Byte 3 Byte 2 IBYTE31BYTE21BYTE11BYTEoi - o E. Quad word at address endIng with 00 0 10 A o o o Other bus cycles (instruction prefetch or slave) can occur here. 2. 10 A+ 4 0 0 0 1. 2. 7 A o X X X Byte 3 Byte 2 Byte 1 o Byte 3 Byte 2 Byte 1 Byte 0 0 Byte 7 Byte 6 Byte 5 Byte 4 Byte 2 Byte 1 Byte 0 o X X X X Byte 3 0 Byte 6 X Byte 5 X Byte 4 X X Byte 7 I BYTE 71 BYTE 61 BYTE 51 BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 0 o 5 A+2 o Other bus cycles (instruction prefetch or slave) can occur here. 3. 7 A + 4 0 0 1 4. 5 A+ 6 1 1 0 H. Quad word at address ending with 11 X IBYTE 71 BYTE 61 BYTE 51 BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 0 I - 1. 9 A o o o 2. A+3 Other bus cycles (instruction prefetch or slave) can occur here. 3. 9 A+ 4 0 0 0 4. A+ 7 1 1 G. Quad word at address ending with 10 0 Byte 0 I BYTE7IBYTE 61 BYTE 51 BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 01 - 1. F. Quad word at address endIng with 01 X Byte 2 o I- Byte 1 Byte 0 X X o X X Byte 3 Byte 2 1 0 Byte 5 X Byte 4 X X Byte 7 X Byte 6 I BYTE 71 BYTE 61 BYTE 51 BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 0 I - 1. 4 A 0 1 2. 8 A+1 0 0 Other bus cycles (instruction prefetch or slave) can occur here. 1. 4 A+4 0 1 1 2. 8 A+5 0 0 X = Don't Care 2-118 A Byte 1 I BYTE 31 BYTE 21 BYTE 11BYTEoi - o A+2 A A+1 X X o D. Double word at address ending with 11 1. 2. X X IBYTE31BYTE21BYTE11BYTEoi - C. Double word at address ending with 10 1. 2. B~eO I BYTE 1 I BYTE 01 - B. Double word at address ending with 01 1. 2. B~e1 Byte 0 X X X 0 X Byte 3 Byte 2 Byte 1 1 0 Byte 4 X X X X Byte 7 Byte 6 Byte 5 A A A A A A A 3.0 Functional Description z en Co) I\) Co) Co) I\) (Continued) TABLE 3-3 Interrupt Sequences , ..... 0 Data Bus (~ __________A-__________ ~ \ Cycle Status Address Interrupt Acknowledge 1 0100 FFFFFF0016 ODIN BE3 BE2 BE1 BEO Byte 3 A. Non-Maskable Interrupt Control Sequences Byte 2 Byte 1 Byte 0 ...... Z en Co) I\) Co) Co) I\) , ..... (J'J o o X X X X Interrupt Return None: Performed through Return from Trap (RETT) instruction. B. Non- Vectored Interrupt Control Sequences Interrupt Acknowledge 1 0100 FFFFFE0016 o o X X X X Interrupt Return 0110 1 o o X X X X FFFFFE0016 C. Vectored Interrupt Sequences: Non-Cascaded. Interrupt Acknowledge 1 0100 FFFFFE0016 o o X X X Vector: Range: 0-127 Interrupt Return 0110 1 o o X X X Vector: Same as in Previous In!. Ack. Cycle X X Cascade Index: range -16 to -1 FFFFFE0016 D. Vectored Interrupt Sequences: Cascaded Interrupt Acknowledge 1 0100 FFFFFE0016 o o (The CPU here uses the Cascade Index to find the Cascade Address.) 2 0101 Cascade 0 See Note Address Interrupt Return 0110 1 FFFFFE0016 (The CPU here uses the Cascade Index to find the Cascade Address) 2 0111 Cascade 0 See Note Address X = Vector, range 9-255; on appropriate byte of data bus. o o X X X X X X X Cascade Index: Same as in previous In!. Ack. Cycle X Don't Care Note: BEO-BE3 signals will be activated according to the cascaded leu address. The cycle type can be 1,2,3 or 4, when reading the interrupt vector. The vector value can be in the range 0-255. 2-119 EI .... U) r-------------------------------------------------------------------------------~ ~ C") C") C'I C") en z ..... o .... ~ C") C") C'I ~ Z 3.0 Functional Description (Continued) 3.4.7 Dynamic Bus Configuration The NS32332 interfaces to external data buses with 3 different widths: a-bit, 16-bit and 32-bit. The NS32332 can switch from one bus width to another dynamically i.e. on a cycle by cycle basis. This feature allows the user to include in his system different bus sizes for different purposes, like a-bit bus for bootstrap ROM and 32-bit bus for cache memory, etc. In each memory cycle, the bus width is determined by the inputs BWO and BW1. If the bus width didn't change from the previous memory cycle, the CPU terminates the cycle normally. If the bus width of the current cycle is different from the bus width of the previous cycle, then two WAIT states (see Sec. 3.4.1) must be inserted in order to let the CPU switch to the new width. The additional 2 WAIT states count from the moment BWO BW1 change. This can be overlapped with the wait states due to slow memories. Nole: 8WO-8WI can only be changed during the first T3 state of a memory access cycle. They should be externally latched and should not be changed at any other time. Four combinations exist: BW1 BWO 0 0 1 1 0 1 0 1 In write cycles, the appropriate data will be present on the appropriate data lines. The CPU presents the data during T3 in a way that would fit any bus width. reserved a-bit bus 16-bit bus 32-bit bus If the operand being written is a byte, it will be duplicated on the 4 bytes ADO-AD31 depending on the operand address: Address AO-1 = The dynamic bus configuration is not applicable for slave cycles (see Sec. 3.4.1). The BWO-BW1 lines are sampled by the CPU in T3 with the falling edge of PHI1 (see Figure 3-14). T4 TI I T2lTmmu I T3 T3 T3 T4 00 01 10 11 T1 XX XX XX OP I XX XX OP XX T2/Tmmu XX OP XX OP OP OP OP OP I T3 PHil [ PHI 2 [ ROY [ 8WO-8WI [ -+---+--fo--oIf TL/EE/8673-23 FIGURE 3-14. Bus width changes. Two wait states are required after the signals BWO-BW1 change. 2-120 z 3.0 Functional Description (J) Co) (Continued) N If the operand being written is a word, 4 cases exist. The operand address can be X ••• xOO (binary) or x... x01 (binary) or x...x10 or x ... x11 (binary). CPU writes a double word operand to a 16-bit bus and the operand address is x... x11 (binary) it needs three memory cycles. The description above applies to the first cycle. In the other 2 memory cycles belonging to the same operand, the data will be presented on the data bus lines to fit 16-bit bus width and take into account the operand length. See the duplications for each case: OPERANO STARTS HERE 11 "T - A1AO - 01 10 t Example: The CPU has to write a double word DDCCBBAA to address HEX 987653 which is in a 16-bit bus area. In the first cycle, the CPU does not know the width until T3 so it generates a cycle to address 987653 which activates the BE3 line and puts on the data bus AA XX AA AA (X = don't care). After this cycle, the CPU knows it has a 16-bit bus and it generates a cycle to address 987654 which activates the BEO, BE1 and BE2 lines and puts on the data bus XX XX CC BB. The last cycle will address 987656, activate BE2, and put on the data bus XX XX XX DD. The BEO-BE3 lines are always activated as if the bus is 32-bit wide, regardless of BWOBW1 state. The CPU does not support a change of the bus width during a sequence of several memory references belonging to the same operand e.g. nonaligned double word. In other words, any operand should not be split between two memory spaces having different bus widths . Instruction Fetches do not fall in this category and an Instruction Fetch can have its own bus width regardless of the bus width in the previous cycle. 00 -r---t--r--r---, I OP : HIGH ..1. ___ L-_....L._...L.._.....L_----I 11 01 00 10 TLlEE/8673-25 OPERAND STARTS HERE ---. Co) Co) ....~ o ..... Z (J) Co) N Co) Co) N .... I U1 3.4.8 Bus Exceptions Any bus cycle may have a bus error during its execution. The error may be corrected during the current cycle or may be incorrectable. The NS32332 can handle both types of errors by means of BUS RETRY and BUS ERROR. T---r---~--~---+---' I OP I HIGH 2 3.4.8.1 Bus Retry If a bus error can be corrected, the CPU may be requested to repeat the erroneous bus cycle. The request is done by asserting the BRT (Bus Retry) signal. .L ___ '--__.....L..__--I____- ' -__.....J T- - i - - The CPU response to Bus Retry depends on the cycle type: -...----.,......--+---...,---...., Instruction Fetch Cycle-If the RETRY occurs during an instruction fetch, the fetch cycle will be retried as soon as possible. If the RETRY is requested during a burst chain, the burst is stopped and the fetch is retried. The only delay in retrying the instruction fetch may result from pending operand requests (and, of course, from hold or wait requests). I OP I OP I HIGH 2 I HIGH 1 ..L _ _ .1 ___,....._-'-_ _......_ ......_---' T- - i - - T- - - r--r-...,----.--...., The fetch cycle will be retried only if there are no more than four bytes in the queue . Operand Read Cycle-If the RETRY occurs on an operand read, the bus cycle is immediately repeated. If the data read is "multiple" e.g. non-aligned, only the problematic part will be repeated. For instance, if the cycle is a non-aligned double word and the second half failed, only the second part will be repeated. The same applies for a RETRY occurring during a burst chain. The repeated cycle will begin where the read operand failed (rather than the first address of the burst) and will finish the original burst. 10PIOPIOP HIGH 2 I HIGH 1 I LOW2 .LI __ ..I. __ ..1 ___ '--__-'-__'---__-'-__..... A1 AD 11 10 01 00 TL/EE/8673-26 If the operand being written is a double word 4 cases exist: The operand address can be x... xOO (binary) or x ... x01 (binary) or x ... x10 (binary) or x ... x11 (binary). See the duplications for each case: Note that the organization of the operand described applies to the initial part of the operand cycle. For instance, if the 2-121 fII .... ,-----------------------------------------------------------------------------, ~ a ic; .... ~ CW) ~ 3.0 Functional Description (Continued) Operand Write Cycle-If the RETRY occurs on a write, the bus cycle is immediately repeated. If the operand write is "multiple" e.g. non-aligned, only the problematic part will be repeated. For instance, if the cycle is a non-aligned double word and the second half failed, only the second part will be repeated. cycle will be repeated, i.e. a new T4 for setting the Status Bus and issuing STS and then T1 through T4 will be performed. Although the decision about Retry is taken by the CPU on T4, BRT must have an early activation in T3 as described above in order to prevent the internal pipeline to advance. Holding the pipeline allows the repeated cycle to override the original one. If BRT is activated only in T3 and not in T4, there might be one cycle penalty in the performance of the execution unit in operand read cycles. Retry is applicable for regular memory cycles and burst cycles, but not for Slave cycles. A Bus Retry is requested by activating the BRT line (see Figure 3-15). EiR'i' is sampled by the CPU during T3 on the falling edge of PHI1. If BRT is inactive, the cycle will be terminated in a regular way. In this case BRT must also be kept Inactive during T4. If BRT is active, EiR'i' will be sampled again during T4 on the falling edge of PHI1. If BRT is inactive, the cycle will be terminated In a regular way. If BRT is active, T4 will be followed by an idle state and the T4 T1 I T2/Tmmu I T3 T4 I TI DR T1 I TL/EE/8673-27 (a) Bus Cycle Not Retried T4 Tl I T2/Tmmu I T3 T4 TI T4 Tl I T2/Tmmu I PIli 1 [ PIli 2 [ TL/EE/8673-28 (b) Bus Cycle Retried FIGURE 3-15. Bus Cycle Retry 2-122 z 3.0 Functional Description en Co) (Continued) N 3.4.8.2 Bus Error Operand Write Cycles-If the bus error occurs on an operand write, the exception is immediately accepted. If a Bus Error is incorrectable the CPU may be requested to abort the current process and branch to an appropriate routine to handle the error. The request is performed by activating the BER signal. BER is sampled by the CPU during T4 on the falling edge of PHI1. If BER is active the bus will go to Tidle after T4 and the CPU will jump to the Bus Error handler (see Sec. 3.8). Note 1: When a bus error occurs, the Instruction that caused the error is generally not re·executable. The process that was being executed should either be aborted or should be restarted from the last checkpoint. Note 2: Bus error has top priority and is accepted even during the acknowl· edge sequence of another CPU exception (i.e. Abort, Interrupt, etc.). It is the responsibility of the user software to detect such an occurence and to take the appropriate corrective actions. The CPU response to Bus Error depends on the cycle type: Operand Read Cycles-If the bus error occurs on an operand read, the bus error is immediately accepted, and the CPU enters the BUS ERROR exception. T1 I T2ITmmu ....~ ....Z Q ~ N Co) Co) ....~ UI 3.4.8.3 Fatal Bus Error As previously mentioned, the CPU response to a bus error is to interrupt the current activity and enter the error routine. An exception to this rule occurs when a bus error is signalled to the CPU during the acknowledge of a previous bus error. In this case the second error is interpreted by the CPU as a fatal bus error. The CPU will respond to this event by halting execution and floating ADS, BEO-BE3, DDIN, STS and ADO-AD31. The Halt condition is indicated by the setting of STO-ST3 to zero and by the assertion of MC/EXS for more than one clock cycle (see Sec. 4.1.3). The CPU can exit this condition only through a hardware reset. Instruction Fetch Cycles-If the bus error occurs on an instruction fetch, additional fetches are inhibited including the one which failed. If, after inhibiting instruction fetches, some operand cycles are still pending within the CPU, they are executed normally, delaying the access to the bus error exception. If and when the internal instruction queue becomes empty, the CPU will enter the BUS ERROR exception. This arrangement enables the CPU to ignore bus errors which belong to fetch ahead cycles if these fetches are not to be used as a result of a jump. T4 . Co) I T3 T4 TI TI PHil [ PHI2 [ m[ • AtiS[ m[ TUEE/B673-30 FIGURE 3·16. Bus Error During Read or Write Cycle 2-123 U) ..- N CW) CW) C'I CW) U) Z ..... o ..- N CW) CW) C'I CW) en z r-------------------------------------------~------------------------------------, 3.0 Functional Description (Continued) A AIJO.AD31 3.4.9 Slave Processor Communication The SPC pin is used as the data strobe for Slave Processor transfers. In this role, it is referred to as Slave Processor Control (SPC). In a Slave Processor bus cycle, data is transferred on the Data Bus and the status lines (STO-ST3) are monitored by each Slave Processor in order to determine the type of transfer being performed. SPC is bidirectional, but is driven by the CPU during all Slave Processor bus cycles. See Sec. 3.9 for full protocol sequences. SPC ... '" IJO.D31 SPC cpu SLAVE PROCESSOR STO-ST3 STO-ST3 iii'/SDDNE SiiONE NS32332 TL/EE/8673-31 FIGURE 3-17. Slave Processor Connections PREVo CYCLE I PHil [ PHIZ [ T40rTi NEXT CYCLE Tl T4 Tl0RTi I spc[ ACO·AC31 [ STO-ST3 [ ADS [ .Lf""""".L.I.""4-'1 5DiN[ Notes: TUEE/8673-32 (1) CPU samples Data Bus here. (2) Slave Processor samples CPU Status here. FIGURE 3·18. CPU Read from Slave Processor 2·124 z (J) 3.0 Functional Description (Continued) Co) N 3.4.9.1 Slave Processor Bus Cycles A Slave Processor bus cycle always takes exactly two clock cycles,labeled T1 and T4 (see Figures 3·18 and 3·1El). Dur· ing a Read cycle, SPC is active from the beginning of T1 to the beginning of T4, and the data is sampled at the end of T1. The Cycle Status pins lead the cycle by one clock peri· od, and are sampled at the leading edge of SPC. During a Write cycle, the CPU applies data and activates SPC at T1, removing SPC at T4. The Slave Processor latches status on the leading edge of SPC and latches data on the trailing edge. The CPU does not pulse the address (ADS) and status (STS) strobes during a slave protocol. The direction of a transfer is determined by the sequence ("protocol") estab· lished by the instruction under execution; but the CPU indio cates the direction on the DDIN pin for hardware debugging purposes. 1. The regular Slave protocol is fully compatible with NS32032, NS32016 and NS3200B slave protocols. In this protocol the NS32332 uses only the two least sig· nificant bytes of the data bus for slave cycles. This allows the NS32332 CPU to work with the current slaves (like NS320B2, NS320B1 etc.) A byte operand is transferred on the least significant byte of the data bus (ADO-AD15). A double word is transferred in a consecutive pair of bus cycles least significant word first. A quadword is transferred in two pairs of slave cycles. 2. The fast slave protocol is unique to the NS32332 CPU. In this protocol the NS32332 uses the full width of the data bus (ADO-AD31) for slave cycles. A byte operand is transferred on the least significant byte of the data bus (ADO-AD?), a word operand is transferred on bits ADO-AD15 and a double word operand is transferred on bits ADO-AD31. A quad word is transferred in two pairs of slave cycles with other bus cycles possibly occurring between them. 3.4.9.2 Slave Operand Transfer Sequences A Slave Processor operand is transferred in one or more slave operand cycles. The NS32332 supports two slave protocols which can be selected by the configuration register (CFG). PREV.CYCLE I PHil [ SPC [ T40RTi NEXT CYCLE T1 T4 T1 OR Ti I ADO·AD3l [ STO·ST3 [ STS [ ADS [ CoiN [ TLlEE18673-33 Note: (1) Arrows indicate points at which the Slave Processor samples. FIGURE 3-19. CPU Write to Slave Processor 2-125 Co) Co) ....~ Q ....... Z (J) Co) N Co) Co) N ....• U1 ..... II) N CO) CO) N CO) tn Z ...... o . .... N CO) CO) N CO) U) Z 3.0 Functional Description (Continued) 3.5 MEMORY MANAGEMENT OPTION The NS32332 CPU, in conjunction with the Memory Management Unit (MMU), provides full support for address translation, memory protection, and memory allocation techniques up to and including Virtual Memory. When an MMU is used, the states T2 and TMMU are overlapped. During this time the CPU places ADO-AD31 into the TRI-STATE mode, allowing the MMU to assert the translated address and issue the physical address strobe PAV. Figure 3-20 shows the Bus Cycle timing with address translation. When a bus cycle is aborted by the MMU, the instruction that caused it to occur is also aborted in such a manner that it is guaranteed re-executable later. Note: To guarantee correct instruction reexecution, Bit M in the CFG Register must be set. 11 T2/Tmmu T3 T4 T1 OR TI PHI 1 ( PHI2 [ Note 1: If an NS32382 MMU is used. the CPU can be selected to output data during write cycles in state T2, by forcing lYi'/SDONE low duro ing reset. This can be done because the NS32382 uses a separate physical address bus. ADO-A031 [ However, if a write cycle causes an MMU page table lookup, the CPU data will be valid in state T3. After FLT is deasserted, regard· less of the data timing selected. DT ISDONE must always be forced high during reset if an NS32082 MMU is used since, in this case, no separate physical address bus is provided. Note 2: If an NS32082 MMU is used, in order for it to operate properly, it must be set to the 32·Bit mode by forcing a A24/HBF low during reset. In this mode the bus lines ADI6-AD24 are floated after the MMU address has been latched, since they are used by the CPU to transfer data. 3.5.1 The FLT (Float) Pin BED-BE3 [ The FLT signal is used by the CPU for address translation support. Activating FLT during Tmmu causes the CPU to wait longer than Tmmu for address translation and validation. This feature is used occasionally by the MMU in order to update its Translation Lookaside Buffer (TLB) from page tables in memory, or to update certain status bits within them. Figure 3-21 shows the effect of FLT. Upon sampling FLT low, late in Tmmu, the CPU enters idle T-States (Tf) during which it: 1) Sets ADO-AD31, and DDIN to the TRI-STATE condition ("floating"). 2) Suspends further internal processing of the current instruction. This ensures that the current instruction remains abortable with retry. (See RSTI ABT description.) The above conditions remain in effect until FLT again goes high. See Sec. 4. -+---+--++--+--1 TLlEE/8673-87 FIGURE 3-20. Read (Write) Cycle with Address Translation 3.5.2.1 Instruction Abort Upon aborting an instruction, the CPU immediately interrupts the instruction and performs an abort acknowledge using the ABT vector in the Interrupt Table (see Sec. 3.B). The Return Address pushed on the Interrupt Stack is the address of the aborted instruction, so that a Return from Trap (RETT) instruction will automatically retry it. The one exception to this sequence occurs if the aborted bus cycle was an instruction prefetch. If so, it is not yet certain that the aborted prefetched code is to be executed. Instead of causing an interrupt, the CPU only aborts the bus cycle, and stops prefetching. If the information in the Instruction Queue runs out, meaning that the instruction will actually be executed, the Abort will occur, in effect aborting the instruction that was being fetched. 3.5.2 Aborting Bus Cycles The RST/ABT pin, apart from its Reset function (Sec. 3.3), also serves as the means to "abort", or cancel, a bus cycle and the instruction, if any, which initiated it. An Abort request is distinguished from a Reset in that the RST I ABT pin is held active for only one clock cycle. If RST/ABT is pulled low during Tmmu or n, this signals that the cycle must be aborted. Since it is the MMU PAV signal which triggers a physical cycle, the rest of the system remains unaware that a cycle was started. The MMU will abort a bus cycle for either of two reasons: 3.5.2.2 Hardware Considerations In order to guarantee instruction retry, certain rules must be followed in applying an Abort to the CPU. These rules are followed by the Memory Management Unit. 1) The CPU is attempting to access a virtual address which is not currently resident in physical memory. The referenced page must be brought into physical memory from mass storage to make it accessible to the CPU. 2) The CPU is attempting to perform an access which is not allowed by the protection level assigned to that page. 1) If FLT has not been applied to the CPU, the Abort pulse must occur during Tmmu. 2-126 3.0 Functional Description (Continued) If RSTI ABT is pulsed at any time other than as indicated above, it will abort either the instruction currently under execution or the next instruction and will act as a very high-priority interrupt. However, the program that was running at the time is not guaranteed recoverable. 2) If FLT has been applied to the CPU, the Abort pulse must be applied before the T -State in which FLT goes inactive. The CPU will not actually respond to the Abort command until FLT is removed. 3) The Write half of a Read-Modify-Write operand access may not be aborted. The CPU guarantees that this will never be necessary for Memory Management functions by applying a special RMW status (Status Code 1011) during the Read half of the access. When the CPU presents RMW status, that cycle must be aborted if it would be illegal to write to any of the accessed addresses. T1 PHI1 [ PHI2 [ ADD-AD31· [ ADS FLT STD-STJ I T2ITmmu I 3.6 BUS ACCESS CONTROL The NS32332 CPU has the capability of relinquishing its access to the bus upon request from a DMA device or another CPU. This capability is implemented on the HOLD (Hold Request) and HLDA (Hold Acknowledge) pins. Byasserting HOLD low, an external device requests access to the bus. On receipt of HLDA from the CPU, the device may perform bus cycles, as the CPU at this point has set the TI TI ··· I TI I T3 I ~ • [ [ [ ODIN [ BED-BEl [ VALID VALID VALID ---- ---- ---fI- VALID VALID ·See MMU data sheet lor details on physical address timing and MMU initiated Bus cycles. FIGURE 3-21. FLT Timing 2-127 TUEE/8673-34 .,... r------------------------------------------------------------------------------------------, U) N C") 3.0 Functional Description C") ADO-AD31, ADS, STS, DDIN and SEO-SE3 pins to the TRI-STATE condition. To return control of the bus to the CPU, the device sets HOLD inactive, and the CPU acknowledges return of the bus by setting HLDA inactive. N C") (/) Z ...... o .,... N C") C") N C") (/) Z (Continued) quest is made. If the request is made during or before the clock cycle shown (two clock cycles before T4), the CPU will release the bus during the clock cycle following T4. If the request occurs closer to T4, the CPU may already have decided to initiate another bus cycle. In that case it will not grant the bus until after the next T4 state. Note that this situation will also occur if the CPU is idle on the bus but has initiated a bus cycle internally. How quickly the CPU releases the bus depends on whether it is idle on the bus at the time the HOLD request is made, as the CPU must always complete the current bus cycle. Figure 3-22 shows the timing sequence when the CPU is idle. In this case, the CPU grants the bus during the immediately following clock cycle. Figure 3-23 shows the sequence if the CPU is using the bus at the time that the HOLD re- I Ti I Ti In a Memory-Managed system, the HLDA signal is connected in a daisy-chain through the MMU, so that the MMU can release the bus if it is using it. I··· I Ti Ti PHll[JLsu1 PHI2 [ HOL5[ HLDi[ AFFECTED SIGNALS -i~ ---- ADs [ DDiN[ -.~r-------- BEo-m [ -+----t----+-' TL/EE/8673-35 FIGURE 3-22. HOLD Timing, Bus Initially Idle 2-128 3.0 Functional Description (Continued) 3.7 INSTRUCTION STATUS mapping, protection, and debugging purposes. U/S line is updated every T4. In addition to the four bits of Bus Cycle status (STO-ST3), the NS32332 CPU also presents Instruction Status information on four separate pins. These pins differ from STO-ST3 in that they are synchronous to the CPU's internal instruction execution section rather than to its bus interface section. ILO (Interlocked Operation) is activated during an SBITI (Set Bit, Interlocked) or CBITI (Clear Bit, Interlocked) instruction. It is made available to external bus arbitration circuitry in order to allow these instructions to implement the semaphore primitive operations for multi-processor communication and resource sharing. PFS (Program Flow Status) is pulsed low as each instruction begins execution. It is intended for debugging purposes. While ILO is active, the CPU inhibits instruction fetches. In order to prevent MMU cycles during ILO, the CPU executes a dummy Read cycle with status code 1011 (RMW) prior to activating ILO. Thereafter, ILO is activated and the Read is performed again but with status code 1010 (operand transfer). Refer to Figure 3-24. U/S originates from the U bit of the Processor Status Register, and indicates whether the CPU is currently running in User or Supervisor mode. It is sampled by the MMU for T4 T3 T, PHI2 [ HOLD [ HLDA[ AFFECTED SIGNALS --- H-------- • ADS [ DDIN [ BEO-BE3 [ STO-ST3[ -+___--4__V_A_LI_D_I-_ _ _+' ---+___--4__VA_L_ID_+_ _ _-+J ~~--- ---- - - - - 1~-- ---- ----- -+---__f----t-' TL/EE/8873-36 FIGURE 3-23. HOLD Timing, Bus Initially Not Idle 2-129 .... r---------------------------------------------------------------------------------, U) c:.. C') C') C'II C') zrn C) .... c:.. C') C') 3.0 Functional Description (Continued) MC/EXS (Multiple Cycle/Exception Status) is activated during the access of the first part of an operand that crosses a double-word address boundary. The activation of this signal is independent of the selected bus width. Its timing is shown in Figure 3-25. The MMU or other external circuitry can use it as an early indication of a CPU access to an operand that crosses a page boundary. MC/EXS is also activated during the first non-sequential instruction fetch (status code 1001) following an abort, and when the CPU enters the idle state (Status Code 0000) following a fatal bus error. C'II ~ T1 Z I T2/Tmmu I TI T4 T3 TLlEE/8673-37 FIGURE 3-24. ILO Timing T4 Tl T2 T3 T4 T1 T2 13 T4 11 PHil [ PHI2 [ TL/EE/8673-38 FIGURE 3-25. Non-aligned Write Cycle-MC/EXS Timing 2-130 3.0 Functional Description (Continued) 3.8 NS32332 INTERRUPT STRUCTURE Counter (PC), the Processor Status Register (PSR) and the currently-selected Stack Pointer (SP). A copy of the PSR is made, and the PSR is then set to reflect Supervisor Mode and selection of the Interrupt Stack. 2) Vector Acquisition. INT, on which maskable interrupts may be requested, NMI, on which non·maskable interrupts may be requested,and RST/ABT, which may be used to abort a bus cycle and any associated instruction. See Sec. 3.5.2. In addition there is a set of internally-generated "traps" which cause interrupt service to be performed as a result either of exceptional conditions (e.g., attempted division by zero) or of specific instructions whose purpose is to cause a trap to occur (e.g., the Supervisor Call instruction). A Vector is either obtained from the Data Bus or is supplied by default. 3) Service Call. The Vector is used as an index into the Interrupt Dispatch Table, whose base address is taken from the CPU Interrupt Base (INTBASE) Register. See Figure 3-26. A 32-bit External Procedure Descriptor is read from the table entry, and an External Procedure Call is performed using it. The MOD Register (16 bits) and Program Counter (32 bits) are pushed on the Interrupt Stack. 3.8.1 General Interrupt/Trap Sequence Upon receipt of an interrupt or trap request, the CPU goes through three major steps: 1) Adjustment of Registers. Depending on the source of the interrupt or trap, the CPU may restore and/or adjust the contents of the Program ,. .... MEMORY / CASCADE TABLE ,.,.. :: ::: I i •• • ~~ CASCADE ADDR 14 CASCADE ADDR 15 FIXED INTERRUPTS AND TRAPS VECTORED INTERRUPTS 0" "'31 CASCADE ADDR 0 II'"-'''~ REGISTER ~ i DISPATCH TABLE 1: 0 NVI NON·VECTORED INTERRUPT 1 NMI NON·MASKABLE INTERRUPT 2 ABT ABORT 3 SLAVE SLAVE PROCESSOR TRAP 4 ILL ILLEGAL OPERATION TRAP 5 SVC SUPERVISOR CALL TRAP 6 DVZ DIVIDE BY ZERO TRAP 7 FLG F LAG TRAP 8 BPT BREAKPOINT TRAP 9 TRC TRACE TRAP UNDEFINED INSTRUCTION TRAP 10 UNO 11 RESERVED 12 BER 13-15 :: 16 ,.., RESERVED Bus ERROR ~ VECTORED INTERRUPTS rL TL/EE/8673-39 FIGURE 3-26. Interrupt Dispatch Table 2-131 .... II) ~ ('I) ('I) 3.0 Functional Description (Continued) N -. ('I) CJ) This process is illustrated in Figure 3-27, from the viewpoint of the programmer. Z .... o N ('I) ('I) N ('I) CJ) Z I I I (PUSH) RETURN ADDRESS 32BITS I STATUS I PSR 1 I MODULE 32 BITS I (PUSH) MOD INTERRUPT STACK TLlEE/B673-40 r-------- -----.., I i CASCADE TABLE i I INTBASE REGISTER I I I I : I INTERRUPT BASE VECTOR DISPATCH TABLE t <4 Y DESCRIPTOR (32 BITS) ) i""1----16---··-t-1.. DESCRIPTOR ----16-----<·~11 OFFSET MODULE 0 MOD REGISTER ~ I MODULE TABLE NEW MODULE l MODULE TABLE ENTRY j MODULE TiBlE ENTRY 32 - t------ STATIC BASE POINTER LINK BASE POINTER + PROGRAM BASE POINTER (RESERVED) SBREGISTER PROGRAM COUNTER I I Y- ENTRY POINT ADDRESS NEW STATIC BASE FIGURE 3-27_lnterrupt/Trap Service Routine Calling Sequence 2-132 j TL/EE/B673-41 z 3.0 Functional Description en (0) (Continued) N 3.8.2 Interrupt/Trap Return To return control to an interrupted program, one of two instructions is used. The RETT (Return from Trap) instruction (Figure 3-28) restores the PSR, MOD, PC and S8 registers to their previous contents and, since traps are often used deliberately as a call mechanism for Supervisor Mode procedures, it also discards a specified number of bytes from the original stack as surplus parameter space. RETT is used to return from any trap or interrupt except the Maskable Interrupt. For this, the RETI (Return from Interrupt) instruction is used, which also informs any external Interrupt Control Units that interrupt service has completed. Since interrupts are generally asynchronous external events, RETI does not pop parameters. See Figure 3-29. put is maskable, and is therefore enabled to generate interrupt requests only while the Processor Status Register I bit is set. The I bit is automatically cleared during service of an INT, NMI or Abort request, and is restored to its original setting upon return from the interrupt service routine via the RETT or RETI instruction. The INT pin may be configured via the SETCFG instruction as either Non-Vectored (CFG Register bit I = 0) or Vectored (bit I = 1). 3.8.3.1 Non-Vectored Mode In the Non-Vectored mode, an interrupt request on the INT pin will cause an Interrupt Acknowledge bus cycle, but the CPU will ignore any value read from the bus and use instead a default vector of zero. This mode is useful for small systems in which hardware interrupt prioritization is unnecessary. 3.8.3 Maskable Interrupts (The INT Pin) The INT pin is a level-sensitive input. A continuous low level is allowed for generating multiple interrupt requests. The inPROGRAM COUNTER I I RETURN ADDRESS STATUS PSR I MODULE MOD (POP) -j +- } _ _(P_O_P_)_ _ _ -1~~~---------t} ::: INTERRUPT STACK MODULE TABLE MODULE TABLE ENTRY MODULE T~BLE ENTRY STATIC BASE POINTER - --., LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) PARAMETERS / SB REGISTER STATIC BASE B~ES STACK SELECTED IN NEWLY· POPPEDPSR. POP AND DISCARD FIGURE 3-28. Return from Trap (RETT n) Instruction Flow 2-133 TL/EE/8673-42 (0) (0) N ...... o ...... I z en (0) N (0) (0) N ...... I U1 3.0 Functional Description (Continued) "END OF INTERRUPT" BUS CYCLE INTERRUPT CONTROL UNIT PROGRAM COUNTER (POP) RETURN ADDRESS STATUS I (POP) MODULE PSR -1----------4- MOD INTERRUPT STACK MODULE TABLE MODULE TABLE ENTRY MODULETAJLEENTRY STATIC BASE POINTER - h LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) STATIC BASE SBREGISTER TL/EE/8673-43 FIGURE 3-29. Return from Interrupt (RETI) Instruction Flow 2·134 z 3.0 Functional Description en Co) (Continued) N 3.8.3.2 Vectored Mode: Non-Cascaded Case In the Vectored mode, the CPU uses an Interrupt Control Unit (ICU) to prioritize many interrupt requests. Upon receipt of an interrupt request on the INT pin, the CPU performs an "Interrupt Acknowledge, Master" bus cycle (Sec. 3.4.3) reading a vector value from the low-order byte of the Data Bus. This vector is then used as an index into the Dispatch Table in order to find the External Procedure Descriptor for the proper interrupt service procedure. The service procedure eventually returns via the Return from Interrupt (RETI) instruction, which performs an End of Interrupt bus cycle, informing the ICU that it may re-prioritize any interrupt requests still pending. The ICU provides the vector number again, which the CPU uses to determine whether it needs also to inform a Cascaded ICU (see below). Table index. The CPU, seeing a negative value, uses it to find the corresponding Cascade Address from the Cascade Table. Applying this address, it performs an "End of Interrupt, Cascaded" bus cycle (Sec. 3.4.3), informing the Cascaded ICU of the completion of the service routine. The byte read from the Cascaded ICU is discarded. In a system with only one ICU (16 levels of interrupt), the vectors provided must be in the range of 0 through 127; that is, they must be positive numbers in eight bits. By providing a negative vector number, an ICU flags the interrupt source as being a Cascaded ICU (see below). The Non-Maskable Interrupt is triggered whenever a falling edge is detected on the NMI pin. The CPU performs an "Interrupt Acknowledge, Master" bus cycle (Sec. 3.4.3) when processing of this interrupt actually begins. The Interrupt Acknowledge cycle differs from that provided for Maskable Interrupts in that the address presented is FFFFFF0016. The vector value used for the Non-Maskable Interrupt is taken as 1, regardless of the value read from the bus. The service procedure returns from the Non-Maskable Interrupt using the Return from Trap (RETT) instruction. No special bus cycles occur on return. For the full sequence of events in processing the NonMaskable Interrupt, see Sec. 3.B.7.1. In order to allow more levels of interrupt, provision is made in the CPU to transparently support cascading. Note that the Interrupt output from a Cascaded ICU goes to an Interrupt Request input of the Master ICU, which is the only ICU which drives the CPU INT pin. Refer to the ICU data sheet for details. In a system which uses cascading, two tasks must be performed upon initialization: 1) For each Cascaded ICU in the system, the Master ICU must be informed of the line number on which it receives the cascaded requests. N However, if an interrupt is set pending during the CPU instruction that masks off that interrupt. the CPU may still perform an interrupt acknowledge cycle following that instruction since it might have sampled the INT line before the leu deasserted it. This could cause the leu to provide an invalid vector. To avoid this problem the above operation should be performed with the CPU interrupt disabled. U1 Trap (SLAVE): An exceptional condition was detected by the Floating Point Unit or another Slave Processor during the execution of a Slave Instruction. This trap is requested via the Status Word returned as part of the Slave Processor Protocol (Sec. 3.9.1). Trap (ILL): Illegal operation. A privileged operation was attempted while the CPU was in User Mode (PSR bit U = 1). Trap (SVC): The Supervisor Call (SVG) instruction was executed. Trap (DVZ): An attempt was made to divide an integer by zero. (The Slave trap is used for Floating Point division by zero.) Trap (FLG): The FLAG instruction detected a "1" in the CPU PSR F bit. Trap (BPT): The Breakpoint (BPT) instruction was executed. Trap (TRC): The instruction just completed is being traced. See below. Trap (UNO): An undefined opcode was encountered by the CPU. 2-135 ...... z en Co) Co) Co) 3.8.5Traps A trap is an internally-generated interrupt request caused as a direct and immediate result of the execution of an instruction. The Return Address pushed by any trap except Trap (TRG) is the address of the first byte of the instruction during which the trap occurred. Traps do not disable interrupts, as they are not associated with external events. Traps recognized by the NS32332 CPU are: 2) A Cascade Table must be established in memory. The Cascade Table is located in a NEGATIVE direction from the location indicated by the CPU Interrupt Base (INTBASE) Register. Its entries are 32-bit addresses, pointing to the Vector Registers of each of up to 16 Cascaded ICUs. Figure 3-26 illustrates the position of the Cascade Table. To find the Cascade Table entry for a Cascaded ICU, take its Master ICU line number (0 to 15) and subtract 16 from it, giving an index in the range -16 to -1. Multiply this value by 4, and add the resulting negative number to the contents of the INTBASE Register. The 32-bit entry at this address must be set to the address of the Hardware Vector Register of the Cascaded ICU. This is referred to as the "Cascade Address." Upon receipt of an interrupt request from a Cascaded ICU, the Master ICU interrupts the CPU and provides the negative Cascade Table index instead of a (positive) vector number. The CPU, seeing the negative value, uses it as an index into the Cascade Table and reads the Cascade Address from the referenced entry. Applying this address, the CPU performs an "Interrupt Acknowledge, Cascaded" bus cycle (Sec. 3.4.3), reading the final vector value. This vector is interpreted by the CPU as an unsigned byte, and can therefore be in the range of 0 through 255. In returning from a Cascaded interrupt, the service procedure executes the Return from Interrupt (RETI) instruction, as it would for any Maskable Interrupt. The CPU performs an "End of Interrupt, Master" bus cycle (Sec. 3.4.3), whereupon the Master ICU again provides the negative Cascade ~ ..... o Note: If an interrupt must be masked off, the CPU can do so by setting the corresponding bit in the interrupt mask register of the interrupt controller. 3.8.4 Non-Maskable Interrupt (The NMI Pin) 3.8.3.3 Vectored Mode: Cascaded Case Co) Co) N ..... I Il) ..... • N CO) CO) N ~ Z ..... o ..... • N CO) CO) ~ tn Z 3.0 Functional Description (Continued) A special case is the Trace Trap (TRC), which is enabled by setting the T bit in the Processor Status Register (PSR). At the beginning of each instruction, the T bit is copied into the PSR P (Trace "Pending") bit. If the P bit is set at the end of an instruction, then the Trace Trap is activated. If any other trap or interrupt request is made during a traced instruction, its entire service procedure is allowed to complete before the Trace Trap occurs. Each interrupt and trap sequence handles the P bit for proper tracing, guaranteeing one and only one Trace Trap per instruction, and guaranteeing that the Return Address pushed during a Trace Trap is always the address of the next instruction to be traced. 3. If the interrupt is Non-Maskable: a. Read a byte from address FFFFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master, Sec. 3.4.3). Discard the byte read . b. Set "Vector" to 1. c. Go to Step 8. 4. If the interrupt is Non-Vectored: a. Read a byte from address FFFFFE0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Sec. 3.4.3). Discard the byte read. b. Set "Vector" to O. c. Go to Step 8. 5. Here the interrupt is Vectored. Read "Byte" from address FFFFFE0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Sec. 3.4.3). 6. If "Byte" :2: 0, then set "Vector" to "Byte" and go to Step 8. 7.lf "Byte" is in the range -16 through -1, then the interrupt source is Cascaded. (More negative values are reserved for future use.) Perform the following: Note: A slight difference exists between the NS32332 and previous Series 32000 CPU. when traCing is enabled. The NS32332 always clears the P bit in the PSR before pushing the PSR on the stack. Previous CPUs do not clear it when a trap (ILL) occurs. The result is that an instruction that causes a trap (ILL) exception is traced by previous Series 32000 CPU •• but is never traced by the NS32332. 3.8.6 Prioritization The NS32332 CPU internally prioritizes simultaneous interrupt and trap requests as follows: 1) Traps other than Trace 2) Abort a. Read the 32-bit Cascade Address from memory. The address is calculated as INTBASE +4· Byte. (Highest priority) b. Read "Vector," applying the Cascade Address just read and Status Code 0101 (Interrupt Acknowledge, Cascaded: Sec. 3.4.3). 8. Perform Service (Vector, Return Address), Figure 3-30. 3) Bus Error 4) Non-Maskable Interrupt 5) Maskable Interrupts 6) Trace Trap (Lowest priority) Service (Vector, Return Address): 1) Read the 32-blt External Procedure Descriptor from the Interrupt Dispatch Table: address Is Vector· 4 + INTBASE Register contents. 3.8.7Interrupt/Trap Sequences: Detailed Flow For purposes of the following detailed discussion of interrupt and trap service sequences, a single sequence called "Service" is defined in Figure 3-30. Upon detecting any interrupt request or trap condition, the CPU first performs a sequence dependent upon the type of interrupt or trap. This sequence will include pushing the Processor Status Regis· ter and establishing a Vector and a Return Address. The CPU then performs the Service sequence. 2) Move the Module field of the Descriptor Into the MOD Register. 3) Read the Program Base pointer from memory address MOD + 8, and add to It the Ollset field from the Descriptor, placing the result In the Program Counter. 4) Read the new StatiC Base pOinter from the memory address contained In MOD, placing It into the SB Register. S) Flush queue: Non-sequentially fetch first Instruction of Interrupt routine. 6) Push the PSR copy onto the Interrupt Stack as a 16-blt value. For the sequence followed in processing either Maskable or Non-Maskable interrupts (on the INT or NMI pins, respectively), see Sec. 3.8.7.1 For Abort Interrupts, see Sec. 3.8.7.4. For the Trace Trap, see Sec. 3.8.7.3, and for all other traps see Sec. 3.8.7.2. 7) Push MOD Register Into the Interrupt Stack as a 16·blt value. 8) Push the Return Address onto the Interrupt Stack as a 32-blt quant~ !y. FIGURE 3·30. Service Sequence Invoked during all interrupt/trap sequences. 3.8.7.1 Maskable/Non-Maskable Interrupt Sequence This sequence is performed by the CPU when the NMI pin receives a falling edge, or the INT pin becomes active with the PSR I bit set. The interrupt sequence begins either at the next instruction boundary or, in the case of the String instructions, at the next interruptible point during its execution. 1. If a String instruction was interrupted and not yet completed: 3.8.7.2 Trap Sequence: Traps Other Than Trace 1) Restore the currently selected Stack Pointer and the Processor Status Register to their original values at the start of the trapped instruction. 2) Set "Vector" to the value corresponding to the trap type. SLAVE: ILL: Vector = 3. Vector = 4. a. Clear the Processor Status Register P bit. SVC: Vector = 5. b. Set "Return Address" to the address of the first byte of the interrupted instruction. Otherwise, set "Return Address" to the address of the next instruction. DVZ: FLG: BPT: Vector = 6. Vector = 7. Vector = 8. UND: Vector = 10. 3) Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, P and T. 2. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, T, P and I. 2-136 3.0 Functional Description (Continued) Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Figure 3·31. While applying Status Code 1111 (Broadcast ID, Sec. 3.4.3), the CPU transfers the ID Byte on bits ADO-AD7 and a non-used byte xxxxxxx1 (x = don't care) on bits AD24-AD31. All Slave Processors input this byte and decode it. The Slave Processor selected by the ID Byte is activated, and from this point the CPU is communicating only with it. If any other slave protocol was in progress (e.g., an aborted Slave instruction), this transfer cancels it. The CPU next sends the Operation Word while applying Status Code 1101 (Transfer Slave Operand, Sec. 3.4.3). Upon receiving it, the Slave Processor decodes it, and at this point both the CPU and the Slave Processor are aware of the number of operands to be transferred and their sizes. The operation Word is swapped on the Data Bus, that is, bits 0-7 appear on pins AD8-AD15 and bits 8-15 appear on pins ADO-AD? Using the Address Mode fields within the Operation Word, the CPU starts fetching operand and issuing them to the Slave Processor. To do so, it references any Addressing Mode extensions which may be appended to the Slave Processor instruction. Since the CPU is solely responsible for memory accesses, these extensions are not sent to the Slave processor. The Status Code applied is 1101 (Transfer Slave Processor Operand, Sec. 3.4.3). 4) Set "Return Address" to the address of the first byte of the trapped instruction. 5) Perform Service (Vector, Return Address), Figure 3-30. 3.8.7.3 Trace Trap Sequence 1)ln the Processor Status Register (PSR), clear the P bit. 2) Copy the PSR into a temporary register, then clear PSR bits S, U and T. 3) Set "Vector" to 9. 4) Set "Return Address" to the address of the next instruction. 5) Perform Service (Vector, Return Address), Figure 3-30. 3.8.7.4 Abort Sequence 1) Restore the currently selected Stack Pointer to its original contents at the beginning of the aborted instruction. 2) Clear the PSR P bit. 3) Copy the PSR into a temporary register, then clear PSR bits S, U, T and I. 4) Set "Vector" to 2. 5) Set "Return Address" to the address of the first byte of the aborted instruction. S) Perform Service (Vector, Return Address), Figure 3-30. 3.8.7.5 Bus Error Sequence After the CPU has issued the last operand, the Slave Processor starts the actual execution of the instruction. Upon completion, it will signal the CPU by pulsing SPC low. To allow for this SPC is normally held high only by an internal pull-up device of approximately 5 kfi. While the Slave Processor is executing the instruction, the CPU is free to prefetch instructions into its queue. If it fills the queue before the Slave Processor finishes, the CPU will wait, applying Status Code 0011 (Waiting for Slave, Sec. 3.4.3). 1) The same as Abort sequence above, but set vector to 12. 3.9 SLAVE PROCESSOR INSTRUCTIONS The NS32332 CPU recognizes three groups of instructions being executable by external Slave Processor: Floating Point Instruction Set Memory Management Instruction Set Custom Instruction Set Each Slave Instruction Set is validated by a bit in the Configuration Register (Sec. 2.1.3). Any Slave Instruction which does not have its corresponding Configuration Register bit set will trap as undefined, without any Slave Processor communication attempted by the CPU. This allows software simulation of a non-existent Slave Processor. In addition, each slave instruction will be performed either through the regular (32032 compatible) slave protocol or through a fast slave protocol according to the relevent bit in the configuration register (Sec. 2.1.3). A combination of one slave communicating with an old protocol and another with a new protocol is allowed, e.g. 1S-bit FPU (32081) and 32·bit MMU (32382) or vice versa. Upon receiving the pulse on SPC, the CPU uses SPC to read a Status Word from the Slave Processor, applying Status Code 1110 (Read Slave Status, Sec. 3.4.3). This word has the format shown in Figure 3-34. If the Q bit ("Quit", Bit 0) is set, this indicates that an error was detected by the Slave Processor. The CPU will not continue the protocol, but will immediately trap through the SLAVE vector in the Interrupt Table. Certain Slave Processor instructions cause CPU PSR bits to be loaded from the Status Word. The last step in the protocol is for the CPU to read a result, if any, and transfer it to the destination. The Read cycles from the Slave Processor are performed by the CPU while applying Status Code 1101 (Transfer Slave Operand, Sec. 3.4.3). An exception to the protocol above is the LMR (Load Memory Management Register) instruction, and a corresponding Custom Slave instruction (LCR: Load Custom Register). In executing these instructions, the protocol ends after the CPU has issued the last operand. The CPU does not wait for an acknowledgement from the Slave Processor, and it does not read status. 3.9.116-Blt Slave Processor Protocol (32032 Compatible) Slave Processor instructions have a three·byte Basic Instruction field, consisting of an ID Byte followed by an Oper· ation Word. The ID Byte has three functions: 1)lt identifies the instruction as being a Slave Processor instruction. 2) It specifies which Slave Processor will execute it. 3) It determines the format of the following Operation Word of the instruction. 2-137 • 3.0 Functional Description (Continued) Slatus Combinations: Status Combinations: Send ID (ID): Code 1111 Send ID (ID): Code 1111 Xfer Operand (OP): Code 1101 Xfer Operand (OP~ Code 1101 Read Slatus (ST): Code 1110 Reed Statu8 (Sn: Code 1110 Step Slatus I 10 CPU Send 10 Byte. 2 OP CPU Sends Operaton Word. 2 3 OP CPU Sends Required Operands 3 4 Slave Starts execution. CPU Pre·letches. 4 S Slave Pulses SPC Low. S ST CPU Reads Status wcrd (only II l!OONE or SPa 6 OP CPU Reads Results gl any). 6 Action ST CPU Reads Status Word. (Trap? Alter Flags?) OP CPU Reads Results (II Any). Step Status Actton ID CPU .ends ID and Operation Word. OP CPU sends required operands (~ any). Slave starts execution (CPU preletches).· Slave pulses Si5ONE: or SPa low. pulse Is two clock cycles wide). FIGURE 3·31. 16·Blt Slave Processor Protocol FIGURE 3·32. 32·Blt Fast Slave Protocol 3.9.2 32·Blt Fast Slave Protocol Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Figure 3-32. While applying Status code 1111 (Broadcast ID Sec. 3.4.2), the CPU transfers the ID Byte on bits AD24-AD31, the operation word on bits AD8-AD23 in a swapped order of bytes and a non-used byte XXXXXXX1 (X = don't care) on bits ADO-AD? (Figure 3-33). Certain Slave Processor instructions affect CPU PSR. For these instructions only the CPU will perform a Read Slave status cycle as described in 3.9.1.1 before reading the result. The relevent PSR bits will be loaded from the status word. byte 3 Using the addressing mode fields within the Operation word, the CPU fetches operands and sends them to the Slave Processor. Since the CPU is solely responsible for memory accesses, addressing mode extensions are not sent to the Slave Processor. The Status Code applied is 1101 (Transfer Slave Processor Operand Sec. 3.4.2). After the CPU has issued the last operand, the Slave Processor starts the actual execution of the instruction. Upon completion, it will signal the CPU by pulsing SDONE or SPC low for one clock cycle. 10 byte 2 byte 1 byte 0 OPCODE low OPCODE high Don't Care FIGURE 3·33. 10 and Opcode Format for Fast Slave Protocol 3.9.3 FloatIng Point Instructions Table 3-4 gives the protocols followed for each Floating Point instruction. The instructions are referenced by their mnemonics. For the bit encodlngs of each Instruction, see Appendix A. The Operand class columns give the Access Class for each general operand, defining how the addressing modes are interpreted (see Instruction Set Reference Manual). Unlike the old protocol, the SLAVE may request the CPU to read the status by activating the SDONE or SPC line for two clock cycles instead of one. The CPU will then read the slave status word and update the PSR Register, unless a trap is signalled. If this happens, the CPU will immediately abort the protocol and start a trap sequence using either the SLAVE or the UNO vector in the interrupt table as specified in the Status Word. The Operand Issued columns show the sizes of the operands Issued to the Floating Point Unit by the CPU. "0" indicates a 32-bit Double Word. "I" indicates that the instruction specifies an integer size for the operand (B = Byte, W = Word, 0 = Double Word). "f'~ Indicates that the instruction specifies a Floating Point size for the operand (F = 32-bit Standard Floating, L = 64-bit Long Floating). The Returned Value Type and Destination column gives the size of any returned value and where the CPU places It. The PSR Bits Affected column indicates which PSR bits, if any, are updated from the Slave Processor Status Word (Figure 3-34). Note: The PSR update Is presenUy restricted to three Instructions: CMPI, ROVAL. WRVAL and their custom slave equivalents. While the Slave Processor is executing the instruction, the CPU is free to prefetch instructions into its queue. If it fills its queue before the Slave Processor finishes, the CPU will wait applying status code 0011 (waiting for Slave, Sec. 3.4.2). Upon receiving the pulse on either SDONE or SPC, the CPU uses SPC to read the result from the Slave Processor and transfer it to the destination. The Read cycles from the Slave Processor are performed by the CPU while applying Status Code 1101 (Transfer Slave Operand, Sec. 3.4.2). 2-138 3.0 Functional Description Mnemonic Operand 1 Class ztJ) W N W W N (Continued) TABLE 3·4 Floating Point Instruction Protocols, Operand 2 Operand 1 Operand 2 Class Issued Issued Returned Value Type and Dest. PSR Bits Affected ftoOp.2 ftoOp.2 ftoOp.2 ftoOp.2 none none none none ftoOp.2 ftoOp.2 ftoOp.2 none none none ADDf SUSf MULl DIVf read.f read.f read.f read.f rmw.! rmw.! rmw.! rmw.! MOVf ASSf NEGf read.f read.! read.f write.! write.f write.f CMPf read.! read.! f N/A N,Z,L FLOORfi TRUNCfi ROUNDfi read.! read.f read.! write.i write.i write.i N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 none none none MOVFL MOVLF read.F read.L write.L write.F N/A N/A LtoOp.2 FtoOp.2 none none N/A ftoOp.2 none f N/A ftoFO ftoFO ftoOp.2 ftoOp.2 none none none none N/A N/A N/A DtoOp.2 none none N/A N/A N/A F L MOVif read.i write.f POLYf DOTf SCALSf LOGSf read.f read.! read.! read.! read.f read.f rmw.! write.! LFSR SFSR read.D N/A N/A write.D D N/A Note 1: D = Double Word I = Integer size (B,W,D) specified in mnemonic. = Floating Point type (F,L) specilied in mnemonic. NI A = Not Applicable to this instruction. I Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified. This is because the Floating Point Registers are physically on the Floating Point Unit and are therefore available without CPU assistance. t5 8 7 3.9.4 Memory Management Instructions Table 3-5 gives the protocols for Memory Management instructions. Encodings for these instructions may be found in Appendix A. In executing the RDVAL and WRVAL instructions, the CPU calculates and issues the 32-bit Effective Address of the single operand. The CPU then performs a single-byte Read cycle from that address, allowing the MMU to safely abort the instruction if the necessary information is not currently in physical memory. Upon seeing the memory cycle complete, the MMU continues the protocol, and returns the validation result in the F bit of the Slave Status Word. o 1 TS 0 0 0 0 0 0 0 1N Z F 0 0 L MIl' 01 NewPsRBltYaIUe(.)~ ..A TL/EE/8673-44 FIGURE 3·34. Slave Processor Status Word Format Note 1: 0 is the Trap Bit. It is set to 1 by the Slave whenever a trap is requested. The size of a Memory Management operand is always a 32bit Double Word. For further details of the Memory Management Instruction set, see the Instruction Set Reference Manual and the MMU Data Sheet. Note 2: TS is the Trap Select Bit. When a trap is requested (0 = I), TS telis the CPU whether a SLAVE or an UND trap is to be generated. TS is o lor a slave trap and t lor an UND trap. Note 3: MIl' should be set for a RDYAL, WRVAL, or Custom Slave Equivalent instruction. It should be cleared for CM?I and CCMPOc and CCMPc. When MIl' is cleared, the F bit should also be cleared. 2-139 • ..... Q .... Z tJ) w w w N N • ..... en .... r------------------------------------------------------------------------------------------, U) N Cf) 3.0 Functional Description (Continued) Cf) C'i ~ Z ..... CI .... Mnemonic N Cf) RDVAL' WRVAL" Cf) C'i Cf) tn LMR' SMR' Z Operand 1 Class TABLE 3-5 Memory Management Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued Returned Value Type and Dest. PSR Bits Affected addr addr N/A N/A D D N/A N/A N/A N/A F F read.D write.D N/A N/A D N/A N/A N/A N/A DtoOp.1 none none Nole: In the ROYAL and WRVAL instructions, the CPU issues the address as a Double Word, and performs a single-byte Read cycle from that memory address. For details, see the Instruction Set Reference Manual and the Memory Management Unit Data Sheet. D = Double Word •= Privileged Instruction: will trap if CPU is in User Mode. NI A = Not Applicable to this instruction. 3.9.5 Custom Slave Instructions Provided in the NS32332 is the capability of communicating with a user-defined, "Custom" Slave Processor. The instruction set provided for a Custom Slave Processor defines the instruction formats, the operand classes and the communication protocol. Left to the user are the interpretations of the Op Code fields, the programming model of the Custom Slave and the actual types of data transferred. The protocol specifies only the size of an operand, not its data type. operand which can be a 32-bit ("D") or 64-bit ("0") quantity in any format; the size is determined by the suffix on the mnemonic. Similarly, an "i" indicates an integer size (Byte, Word, Double Word) selected by the corresponding mnemonic suffix. Any operand indicated as being of type "c" will not cause a transfer if the register addressing mode is specified. It is assumed in this case that the slave processor is already holding the operand internally. Table 3-6 lists the relevant information for the Custom Slave instruction set. The designation "c" is used to represent an For the instruction encodings, see Appendix A. 2-140 z 3.0 Functional Description en w (Continued) I\) w w I\) .... TABLE 3-6 Mnemonic Operand 1 Class rmw.c rmw.c rmw.c rmw.c c c c c c c c c ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 none none none none CMOVOc CMOV1c CMOV2c read.c read.c read.c write.c write.c write.c c c c ctoOp.2 ctoOp.2 ctoOp.2 none none none CMOV3c read.c write.c c N/A N/A N/A N/A cto Op.2 none CCMPOc read.c read.c c c N/A N,Z,L CCMP1c read.c read.c c c N/A N,Z,L CCVOci CCV1ci CCV2ci CCV3ic CCV4DQ CCV5QD read.c read.c read.c read.i read.D read.Q write.i write.i write.i write.c write.Q write.D c c c i D Q N/A N/A none none none none none none LCSR SCSR read.D N/A N/A write.D D N/A N/A N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 cto Op. 2 QtoOp.2 DtoOp.2 N/A N/A N/A DtoOP.2 none none addr addr N/A D D N/A N/A N/A N/A F F read.D write.D N/A D N/A N/A N/A D to Op.1 N/A N/A Note: = Double Word = PSR Bits Affected read.c read.c read.c read.c LCR' SCR' o Returned Value Type and Dest. CCALOc CCAL1c CCAL2c CCAL3c CATSTO' CATST1' i I Custom Slave Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued Integer size (B,W,D) specified in mnemonic. c = Custom size (0:32 bits or Q:64 bits) specified in mnemonic. • = Privileged instruction: will trap if CPU is in User Mode. NI A = Not Applicable to this instruction. 2-141 N/A none none c ...... Z en w I\) w w I\) ....U1 I .... r---------------------------------------------------------------------------------, U) c.:a C') C') ~ tn ....Zo .... c.:a C') C') 4.0 Device Specifications 4.1 NS32332 PIN DESCRIPTIONS Unless otherwise indicated, reserved pins should be left open. N 4.1.1 Supplies U) Logic Power (VCCL1, 2): +5V positive supply. C') Z 4.1.3 Output Signals Address Strobe (ADS): Active low. Controls address latches, indicates the start of a bus cycle. Data Direction in (ODIN): Active low. Indicates the directions of data transfers. Byte Enables (BEO-BE3): Active low. Enable the access of bytes 0-3 in a 32 bit system. Status (STO-ST3): Bus cycle status code, STO least significant. Encodings are: The following is a brief description of all NS32332 pins. The descriptions reference portions of the Functional Descrip· tion, Section 3. Buffers Power (VCCB1, 2, 3, 4, 5): +5V positive supply. Logic Ground (GNDL 1, GNDL2): Ground reference for on· chip logic. Buffer Grounds (GNDB1, GNDB2, GNDB3, GNDB4, GNDB5, GNDB6): Ground references for on·chip drivers. 0000 - Idle: CPU Inactive on Bus. 0001 - Idle: WAIT Instruction. 0010 - (Reserved). 0011 - Idle: Waiting for Slave. 0100 -Interrupt Acknowledge, Master. 0101 - Interrupt Acknowledge, Cascaded. 0110- End of Interrupt, Master. 0111 - End of Interrupt, Cascaded. 1000 - Sequential Instruction Fetch. 1001 - Non-Sequential Instruction Fetch. 1010 - Data Transfer. 1011 - Read Read-Modify-Write Operand. 1100 - Read for Effective Address. 1101 - Transfer Slave Operand. 1110 - Read Slave Status Word. 1111 - Broadcast Slave 10. Back Bias Generator (BBG): Output of on-chip substrate voltage generator. 4.1.2 Input Signals Clocks (PHI1, PHI2): Two-phase clocking signals. Ready (ROY): Active high. While ROY is not active, the CPU adds wait cycles to the current bus cycle. Not applicable for slave cycles. Hold Request (HOLD): Active low. Causes the CPU to release the bus for DMA or multiprocessing purposes. Nole: If the FiO[l) signal is generated asynchronously. it's set up and hold times may be violated. In this case it is recommended to synchronize it with CTIL to minimize the possibility of metastable states. Status Strobe (STS): Active low. Indicates that a new status (STO-ST3) is valid. Not applicable for slave cycles. The CPU provides only one synchronization stage to minimize the AIDA latency. This is to avoid speed degradations In cases of heavy fID[lj activity (i.e. DMA controller cycles interleaved with CPU cycles.) Multiple Cycle/Exception Status (MC/EXS): Active low. This signal is activated during the access of the first part of an operand that crosses a double word address boundary. Interrupt (INT): Active low. Maskable Interrupt request. Non-Maskable Interrupt (NMI): Active low. Non-Maskable Interrupt request. It is also activated in conjunction with status codes 1001 and 0000 during Abort Acknowledge and when a fatal bus error occurs. Resetl Abort (RST/ ABT): Active low. If held active for one clock cycle and released, this pin causes an ABORT. If held longer, it is interpreted as RESET. Bus Error (BER): Active low. When active, indicates that an error occurred during a bus cycle. It is treated by the CPU as the highest priority exception after RESET. Not applicable for slave cycles. Bus Retry (BRT): Active low. When active, the CPU will reexecute the last bus cycle. Not applicable for slave cycles. Bus Width (BW1, BWO): Define the bus width (8,16,32) in every bus cycle. 01-8 bits, 10-16 bits, 11 -32 bits. 00 is a reserved combination. Not applicable for slave cycles. Burst In (BIN): Active low. When active, the CPU may perform burst cycles. Note: MC/Ei 'tJ 'tJ CD ~ CJ Q. ;C" NSJ2C201 reu ~ - ilO ~ CD ~ D) n S" CQ en c CQ CQ CD UI 0" ~ UI ~ en en o WR ,CK ODIN 8W, 8W' BOUT 8lN TLlEE/8673-86 FIGURE 8-1. System Connection Diagram (32332, 32081 & 32082) z Appendix B: Interfacing Suggestions en c,.) (Continued) N c,.) c,.) N .,.. .... I WAITI RD WR o ....... WAIT2 TSO en c,.) CWAIT .... 8US CONTROL 8RSTI LOGIC -8RSTO z D8E N ADS -+m RDY RST +E'A 2A CLK DDIN 3A 4A 18 28 38 48 +81N >- ....... BiN >-- 8WO >-- 8WI +-- >---+ ,>---+ PFS iNT mil 1 ILO FLT DDIN RST/A8T RSTI DDiN RSI/A8T M HLDAI - PAY - ADS 8ER 8RT Dr/SDONE SPC HOLD STO-3 PHil PHI2 ADO-31 NS32332 CPU ADS 8ER 8RT SDONE SPC HOLD --'" STO-3 "; PHil PHI2 T I 5V NS32382 MMU CINH CINH . ~ PAO-31 MADS ~ ADO-31 PAO-31 5V • RST ~ • I" +5 I I DO-31 SDN332 NOE PSO SPC PSI STO-3 NS32381 FPU PHil I--' .... NS32C201 TCU RST CLK DDIN J PHI2 RSTO - - DO-31 10 kll • j, ,.... 4Y~ 8E3 HLDAO l!LL HLDA .... ~ ill 3Y~ 8E2 MILO m ::: iL 2Y~ L- ~ RDY - Lw-.,....5V +5 N IY~ 8EO '-J~ RD~~ 8EO 8EI8E2 8E3 80UT c,.) c,.) ~ r cm XIN XOUT 16 ~ RSTI TL/EE/8673-93 FIGURE 8-2. System Connection Diagram (32332,32381 & 32382) 2-167 .... I U1 .... r----------------------------------------------------------------------------, U) N CO) Q ~National ~ CO) ~ Semiconductor Z NS32C032-10/NS32C032-15 High-Performance Microprocessors tn C; .... N CO) Q U C\I ~ Z General Description Features The NS32C032 is a 32-bit, virtual memory microprocessor with a 16-MByte linear address space and a 32-bit external data bus. It has a 32-bit ALU, eight 32-bit general purpose registers, an eight-byte prefetch queue, and a slave processor interface. The NS32C032 is fabricated with National Semiconductor's advanced CMOS process, and is fully object code compatible with other Series 32000® processors. The Series 32000 instruction set is optimized for modular, high-level languages (HLL). The set is very symmetric, it has a two address format, and it incorporates HLL oriented addressing modes. The capabilities of the NS32C032 can be expanded with the use of the NS32081 floating point unit (FPU), and the NS32082 demand-paged virtual memory management unit (MMU). Both devices interface to the NS32C032 as slave processors. The NS32C032 is a general purpose microprocessor that is ideal for a wide range of computational intensive applications. • • • • • 32-bit architecture and implementation Virtual memory support 16-MByte linear address space 32-bit data bus Powerful instruction set - General 2-address capability - Very high degree of symmetry - Addressing modes optimized for high-level languages • Series 32000 slave processor support • High-speed CMOS technology • 68-pin leadless chip carrier Block Diagram ADD/DATA CONTROLS. STAlUS MICROCODE ROM AND CONTROL LOGIC IIIIJ CFG REGISTER 0 0 0 0 WORKING REGISTERS FP SPI SPO PC RD Rl R2 R3 R4 RS I I I R6 I R7 I I MOD PSR : L_________________ J TL/EE/9160-1 FIGURE 1 2-168 ztJ) Table of Contents 1.0 PRODUCT INTRODUCTION N 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.8 NS32C032 Interrupt Structure 2.0 ARCHITECTURAL DESCRIPTION 3.8.1 General Interrupt/Trap Sequence 3.8.2 Interrupt/Trap Return 3.8.3 Maskable Interrupts (The INT Pin) 3.8.3.1 Non-Vectored Mode 3.8.3.2 Vectored Mode: Non-Cascaded Case 3.8.3.3 Vectored Mode: Cascaded Case 3.8.4 Non-Maskable Interrupt (The NMI Pin) 3.8.S Traps 3.8.6 Prioritization 3.8.7 Interrupt/Trap Sequences Detailed Flow 3.8.7.1 Maskable/Non-Maskable Interrupt Sequence 3.8.7.2 Trap Sequence: Traps Other Than Trace 3.8.7.3 Trace Trap Sequence 3.8.7.4 Abort Sequence 2.1 Programming Model 2.1.1 General Purpose Registers 2.1.2 Dedicated Registers 2.1.3 The Configuration Register (CFG) 2.1.4 Memory Organization 2.1.S Dedicated Tables 2.2 Instruction Set 2.2.1 General Instruction Format 2.2.2 Addressing Modes 2.2.3 Instruction Set Summary 3.0 FUNCTIONAL DESCRIPTION 3.1 3.2 3.3 3.4 Co:) Power and Grounding Clocking Resetting Bus Cycles oC Co:) N I ...... C ..... Z tJ) Co:) N oC Co:) N I ...... U1 3.9 Slave Processor Instructions 3.9.1 3.9.2 3.9.3 3.9.4 3.4.1 Cycle Extension 3.4.2 Bus Status 3.4.3 Data Access Sequences 3.4.3.1 Bit Accesses 3.4.3.2 Bit Field Accesses 3.4.3.3 Extending Multiply Accesses 3.4.4 Instruction Fetches 3.4.S Interrupt Control Cycles 3.4.6 Slave Processor Communication 3.4.6.1 Slave Processor Bus Cycles 3.4.6.2 Slave Operand Transfer Sequences Slave Processor Protocol Floating Point Instructions Memory Management Instructions Custom Slave Instructions 4.0 DEVICE SPECIFICATIONS 4.1 Pin Descriptions 4.1.1 4.1.2 4.1.3 4.1.4 Supplies Input Signals Output Signals Input/Output Signals 4.2 Absolute Maximum Ratings 4.3 Electrical Characteristics 4.4 Switching Characteristics 3.S Memory Management Option 3.S.1 Address Translation Strap 3.S.2 Translated Bus Timing 3.S.3 The FLT (Float) Pin 3.S.4 Aborting Bus Cycles 3.S.4.1 The Abort Interrupt 3.S.4.2 Hardware Considerations 4.4.1 Definitions 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays 4.4.2.2 Input Signals Requirements 4.4.2.3 Clocking Requirements 4.4.3 Timing Diagrams Appendix A: Instruction Formats Appendix B: Interfacing Suggestions 3.6 Bus Access Control 3.7 Instruction Status List of Illustrations . . ...................................... 2-1 1-1 CPU Block Diagram..................................................... The General and Dedicated Registers ............................................................................ 2-2 ~~~i~s~j Recommended Supply Connections ..............................................................................3-2 Clock Timing Relationships ...................................................................................... 3 3 ~:~:~~~~~:~~i~~n~Ui~~~.~~t~. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :~~~: Recommended Reset Connections, Non-Memory-Managed System ................................................ . Recommended Reset Connections, Memory- Managed System ................................... . ................. 3-Sb 2-169 EI U) ..- N ('f) ~ ~ Z C; ..N a ~ en ('f) z r---------------------------------------------------------------------------------, List of Illustrations (Continued) Bus Connections ......•....••••.•••••...•.•.....••.••....•................••...............•.•...........•••... 3·6 Read Cycle Timing .....•..•.....•••..........••.•....•.•.............•••••.....•.•..•...•.•..•••..•...••••..••• 3·7 Write Cycle Timing ....................•......••.•..•••••...••.••••.•.•••..•••••••••.•••••..•••••.•.•••.•.•...•. 3·8 ROY Pin Timing .....••.....•....••......•........................•................•........••.....•.•......•... 3·9 Extended Cycle Example .......................•........•......••.....•.••.....•••......•••....•.••.....••.•..3·1 0 Memory Interiace ....... , .•.............•..........•.•...•.•..•.••......•••.•.....................•........•..3·11 Slave Processor Connections ........•..•....•.•....••••.. , •••••.•.••••.•..•••.•••..•••••.••••••.••.•.•••••.••• 3·12 CPU Read from Slave Processor ...••.•...•••........•.....•.....•..........•........•••.....••....•..••......•. 3·13 CPU Write to Slave Processor ...................••......•......••••..•.•.•.....•••••.....•••.••.••••....•••.•.. 3·14 Read Cycle with Address Translation (CPU Action) ...••.•....•••..•...••••....••.......••.•....••••.....••••..•••. 3·15 Write Cycle with Address Translation (CPU Action) ..........•.....••••......••........••......•................•.. 3·16 Memory·Managed Read Cycle .......•.....•...........•..........•.........••...•....•••....•.......•.•........ 3·17 Memory·Managed Write Cycle .........•........•.•......••....••••....•••••.....••••.....•••...••••......•..•.. 3·18 FLT Timing ...........•.....••.....•......•......•••.....••.......•••.....•••.•....••••....•••.•••.•••••.•..••3·19 HOLD Timing, Bus Initially Idle ...................................•.......•••........•.•............••.•......•..3·20 HOLD Timing, Bus Initially Not Idle .....•.•....•.•....••••.......•....•••....••..••••...•.•.•....•••.....•••••..• 3·21 Interrupt Dispatch and Cascade Tables ..............•......•....•...........••.......••..•...••......•••......•. 3·22 Interrupt/Trap Service Routine Calling Sequence •.•..•.•••.. , ..•.••...••••••. , .•.••••. , .•••••...••••••.••••.•••.• 3·23 Return from Trap (RETT n) Instruction Flow •..........•......................•.........•..............••.......•. 3·24 Return from Interrupt (RET) Instruction Flow ......•.•..•...••.....••••.....•••......•.••.....••......••........•.. 3·25 Interrupt Control Connections (16 levels) ......•.•...••......•••.......••.....•..•.....•.......••..•...••••.....•• 3·26 Cascaded Interrupt Control Unit Connections ...........•.........•..........•................•..........•.....•.. 3·27 Service Sequence ............•..............••....•••.....•.••....••.•......••••.•...•.•...•...•.•...•.•.•..•3·28 Slave Processor Protocol .......................•..•...•••....••••..••••••.....•••••...•.•••....••••.....••••.. 3·29 Slave Processor Status Word Format •.....•.•.......•......•.........•......•....•..••..•...••.•.....•••......•• 3·30 NS32C032 Connection Diagram ..........................•.............•..•................•.•....••........•...4·1 Timing Specification Standard (Signal Valid After Clock Edge) ..•.•..•....••.•...••.••...•••.•.•..••.•.•...•••••.•.••• 4·2 Timing Specification Standard (Signal Valid Before Clock Edge) .•...............•.......••......••.....•............ .4·3 Write Cycle ...........................•......•••....••.•......•••......•••.•..••••......•••.•..••••...••••.•..• 4-4 Read Cycle •...........••..................................................•.......•........•...••...•..•......4·5 Floating by HOLD Timing (CPU Not Initially Idle) ...•........••.•..•••••....•.••....••........•••.....•....••••.••..• 4·6 Floating by HOLD Timing (CPU Initially Idle) ....•....•.......•........•........................•.....•............ .4·7 Release from Hold .................•............................•.......•.......••.......••.•..••••...•.••.••..4·8 FLT Initiated Float Cycle Timing .............•••.....••.•... , ..•.••.•..••..•....••••....••....•••.•.•..•••.•..•••. 4-9 Release from FLT Timing .....................................•....................................•........•..4·10 Ready Sampling (CPU Initially READy) .............•••.....••.......••......••..•..........•..•......••......... 4·11 Ready Sampling (CPU Initially NOT READY) ...............................•••......•.•.....•••....•••.......•••..4·12 Slave Processor Write Timing ................•......•••......•••....••••..•.••.•....••••.••..•••••...••••.....•. 4·13 Slave Processor Read Timing ............................................•..................................•.. 4·14 SPCTiming ..........•..............•.•....•••.....••.....•••........•.•...••••..•..••.••...•.•.••.••.•....•. 4·15 Reset Configuration Timing ........................••......•..•.......•..............•...............•......•...4·16 Clock Waveforms .................................••.•...•..•••...••••..•...•.••...•.•.•...•.•.....••••....... 4·17 Relationship of PFS to Clock Cycles .................................................................•........•..4·18 Guaranteed Delay, PFS to Non·Sequential Fetch ........••.....•.•......•••••...••.•.•..••••...••••••....••••... 4·19a Guaranteed Delay, Non·Sequential Fetch to PFS .............................•.......••...•..................... 4·19b Relationship of ILO to First Operand of an Interlocked Instruction •...•••......••.......••......••...•.•••...•••••.. 4·20a Relationship of ILO to Last Operand of an Interlocked Instruction ...............•.....•..•....•..••................ 4·20b Relationship of ILO to Any Clock Cycle .....................••.•....••••...•..•••....••••..•...•..•...•........•. 4·21 U/S Relationship to any Bus Cycle - Guaranteed Valid Interval. ....................•..•.......................•.•.. 4·22 Abort Timing, FLT Not Applied ............•........••......•.•••...••••.•.....•••...••.••••.•..•.•...•••.....•• .4·23 Abort Timing, FLT Applied ....................................•............•........•........................•.. 4·24 Power·On Reset ..................•.....•••......••.......•••..•...••••••.••.•••..•••.•.•...•••....•••.•...••• 4·25 Non·Power·On Reset. ...................................•...•......•.......................................... 4·26 INT Interrupt Signal Detection .............................•.......•........••.••....••..............•..........4·27 MNllnterrupt Signal Timing ............•.......•.......•.••...•..•......••••....••.•......•••...••.•.•...•.•••.. 4·28 Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction •.........................• 4·29 Processor System Connection Diagram ...........••..............•.......•••......•...............•••...•••••.... B·1 2·170 z List of Tables NS32C032 Addressing Modes ...................................................................................2-1 NS32C032 Instruction Set Summary ..............................................................................2-2 Bus Access Type ..............................................................................................3-1 Access Sequence ..............................................................................................3-2 Interrupt Sequences ............................................................................................3-3 Floating Point Instruction Protocols ...............................................................................3-4 Memory Management Instruction Protocols ..........................................................•...••........3-5 Custom Slave Instruction Protocols ...............................•................................•.........•.... 3-6 en Co) N g ~ • ..... Q ..... Z en ~ o Q Co) ~ ..... U1 2-171 .... r------------------------------------------------------------------------------------------, U) N C") o (J N ~ Z ...... ....o N C") o ~ C") U) Z 1.0 Product Introduction The Series 32000 microprocessor family is a new generation of devices using National's XMaS and CMOS technologies. By combining state-of-the-art MaS technology with a very advanced architectural design philosophy, this family brings mainframe computer processing power to VLSI processors. The Series 32000 family supports a variety of system configurations, extending from a minimum low-cost system to a powerful 4 gigabyte system. The architecture provides complete upward compatibility from one family member to another. The family consists of a selection of CPUs supported by a set of peripherals and slave processors that provide sophisticated interrupt and memory management facilities as well as high-speed floating-point operations. The architectural features of the Series 32000 family are described briefly below: • High-Level Language Support • Easy Future Growth Path • Application Flexibility 2.0 Architectural Description 2.1 PROGRAMMING MODEL The Series 32000 architecture includes 16 registers on the NS32C032 CPU. 2.1.1 General Purpose Registers There are eight registers for meeting high speed general storage requirements, such as holding temporary variables and addresses. The general purpose registers are free for any use by the programmer. They are thirty-two bits in length. If a general register is specified for an operand that is eight or sixteen bits long, only the low part of the register is used; the high part is not referenced or modified. Powerful Addressing Modes. Nine addressing modes available to all instructions are included to access data structures efficiently. 2.1.2 Dedicated Registers The eight dedicated registers of the NS32C032 are asSigned specific functions. PC: The PROGRAM COUNTER register is a pointer to the first byte of the instruction currently being executed. The PC is used to reference memory in the program section. (In the NS32C032 the upper eight bits of this register are always zero.) SPO, SP1: The SPO register points to the lowest address of the last item stored on the INTERRUPT STACK. This stack is normally used only by the operating system. It is used primarily for storing temporary data, and holding return information for operating system subroutines and interrupt and trap service routines. The SP1 register points to the lowest address of the last item stored on the USER STACK. This stack is used by normal user programs to hold temporary data and subroutine return information. Data Types. The architecture provides for numerous data types, such as byte, word, doubleword, and BCD, which may be arranged into a wide variety of data structures. Symmetric Instruction Set. While avoiding special case instructions that compilers can't use, the Series 32000 family incorporates powerful instructions for control operations, such as array indexing and external procedure calls, which save considerable space and time for compiled code. Memory-to-Memory Operations. The Series 32000 CPUs represent two-address machines. This means that each op· erand can be referenced by anyone of the addressing modes provided. This powerful memory·to·memory archi· tecture permits memory locations to be treated as registers for all useful operations. This is important for temporary operands as well as for context switching. Memory Management. Either the NS32382 or the NS32082 Memory Management Unit may be added to the system to provide advanced operating system support func· tions, including dynamic address translation, virtual memory management, and memory protection. Large, Uniform Addressing. The NS32C032 has 24-bit address pOinters that can address up to 16 megabytes without requiring any segmentation; this addressing scheme provides flexible memory management without added-on expense. Modular Software Support. Any software package for the Series 32000 family can be developed independent of all other packages, without regard to individual addressing. In addition, ROM code is totally relocatable and easy to ac· cess, which allows a significant reduction in hardware and software cost. Software Processor Concept. The Series 32000 architecture allows future expansions of the instruction set that can be executed by speCial slave processors, acting as extensions to the CPU. This concept of slave processors is unique to the Series 32000 family. It allows software compatibility even for future components because the slave hardware is transparent to the software. With future advances in semiconductor technology, the slaves can be physically integrated on the CPU chip itself. In this document, reference is made to the SP register. The terms "SP register" or "SP" refer to either SPO or SP1, depending on the setting of the S bit in the PSR register. If the S bit in the PSR is 0 the SP refers to SPO. If the S bit in the PSR is 1 then SP refers to SP1. (In the NS32C032 the upper eight bits of these registers are always zero). Stacks in the Series 32000 family grow downward in memory. A Push operation pre-decrements the Stack Pointer by the operand length. A Pop operation post-increments the Stack Pointer by the operand length. FP: The FRAME POINTER register is used by a procedure to access parameters and local variables on the stack. The FP register is set up on procedure entry with the ENTER instruction and restored on procedure termination with the EXIT instruction. The frame pOinter holds the address in memory occupied by the old contents of the frame pointer. (In the NS32C032 the upper eight bits of this register are always zero.) 58: The STATIC BASE register points to the global vari· abies of a software module. This register is used to support relocatable global variables for software modules. To summarize, the architectural features cited above provide three primary performance advantages and characteristics: 2-172 z 2.0 Architectural Description en c.:I (Continued) DEDICATED GENERAL N (') 0 32 N . c.:I ..... ~--------32----------~ PROGRAM COUNTER I PC STATIC BASE I SB 0 RO "Z en Rl c.:I N (') 0 R2 FRAME POINTER \ FP . R3 c.:I N USER STACK PTR. \ SP1 } INTERRUPT STACK PTR. I SP ..... R4 SPO U1 R5 ·0 INTERRUPT BASE \INTBASE PSR MOD STATUS MODULE R6 R7 TLlEE/9160·3 FIGURE 2·1. The General and Dedicated Registers The SB register holds the lowest address in memory occupied by the global variables of a module. (In the NS32C032 the upper eight bits of this register are al· ways zero.) Z: The Z bit is altered by comparison instructions. In a comparison instruction the Z bit is set to "1" if the second operand is equal to the first operand; otherwise it is set to "0". INTBASE: The INTERRUPT BASE register holds the address of the dispatch table for interrupts and traps (Sec. 3.8). The INTBASE register holds the lowest address in memory occupied by the dispatch table. (In the NS32C032 the upper eight bits of this register are always zero.) N: The N bit is altered by comparison instructions. In a comparison instruction the N bit is set to "1" if the sec· ond operand is less than the first operand, when both operands are interpreted as signed integers. Otherwise, it is set to "0". U: If the U bit is "1" no privileged instructions may be executed. If the U bit is "0" then all instructions may be executed. When U = 0 the NS32C032 is said to be in Supervisor Mode; when U = 1 the NS32C032 is said to be in User Mode. A User Mode program is restricted from executing certain instructions and accessing cer· tain registers which could interfere with the operating system. For example, a User Mode program is prevented from changing the setting of the flag used to indicate its own privilege mode. A Supervisor Mode program is assumed to be a trusted part of the operating system, hence it has no such restrictions. S: The S bit specifies whether the SPO register or SP1 register is used as the stack pointer. The bit is automatically cleared on interrupts and traps. It may have a setting of 0 (use the SPO register) or 1 (use the SP1 register). P: The P bit prevents a TRC trap from occurring more than once for an instruction (Sec. 3.8.5.). It may have a setting of 0 (no trace pending) or 1 (trace pending). I: If I = 1, then all interrupts will be accepted (Sec. 3.8.). If I = 0, only the NMI interrupt is accepted. Trap enables are not affected by this bit. MOD: The MODULE register holds the address of the module descriptor of the currently executing software module. The MOD register is sixteen bits long, therefore the module table must be contained within the first 64K by1es of memory. PSR: The PROCESSOR STATUS REGISTER (PSR) holds the status codes for the NS32C032 microprocessor. The PSR is sixteen bits long, divided into two eight-bit halves. The low order eight bits are accessible to all programs, but the high order eight bits are accessible only to programs executing in Supervisor Mode. TL/EE/9160-4 FIGURE 2·2. Processor Status Register C: The C bit indicates that a carry or borrow occurred after an addition or subtraction instruction. It can be used with the AD DC and SUBC instructions to perform multiple-precision integer arithmetic calculations. It may have a setting of 0 (no carry or borrow) or 1 (carry or borrow). T: The T bit causes program tracing. If this bit is a 1, a TRC trap is executed after every instruction (Sec. 3.8.5). L: The L bit is altered by comparison instructions. In a comparison instruction the L bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as unsigned integers. Otherwise, it is set to "0". In Floating Point comparisons, this bit is always cleared. F: The F bit is a general condition flag, which is altered by many instructions (e.g., integer arithmetic instructions use it to indicate overflow). 2.1.3 The Configuration Register (CFG) Within the Control section of the NS32C032 CPU is the fourbit CFG Register, which declares the presence of certain external devices. It is referenced by only one instruction, SETCFG, which is intended to be executed only as part of system initialization after reset. The format of the CFG Register is shown in Figure 2-3. FIGURE 2-3. CFG Register 2-173 ...c.:.. r------------------------------------------------------------------------------------------, 2.0 Architectural Description U) C') ~ C') UJ Z .........oc.:.. C') 8 '" ~ z (Continued) The CFG I bit declares the presence of external interrupt vectoring circuitry (specifically, the NS32202 Interrupt Control Unit). It the CFG I bit is set, interrupts requested through the INT pin are "Vectored." If it is clear, these interrupts are "Non-Vectored." See Sec. 3.S. The F, M and C bits declare the presence of the FPU, MMU and Custom Slave Processors. If these bits are not set, the corresponding instructions are trapped as being undefined. The MOD register contains a pOinter into the Module Table, whose entries are called Module Descriptors. A Module Descriptor contains four pOinters, three of which are used by NS32C032. The MOD register contains the address of the Module Descriptor for the currently running module. It is automatically up-dated by the Call External Procedure instructions (CXP and CXPD). The format of a Module Descriptor is shown in Figure 2-4. The Static Base entry contains the address of static data assigned to the running module. It is loaded into the CPU Static Base register by the CXP and CXPD instructions. The Program Base entry contains the address of the first byte of instruction code in the module. Since a module may have multiple entry pOints, the Program Base pointer serves only as a reference to find them. 2.1.4 Memory Organization The main memory of the NS32C032 is a uniform linear address space. Memory locations are numbered sequentially starting at zero and ending at 224 - 1. The number specifying a memory location is called an address. The contents of each memory location is a byte consisting of eight bits. Unless otherwise noted, diagrams in this document show data stored in memory with the lowest address on the right and the highest address on the left. Also, when data is shown vertically, the lowest address is at the top of a diagram and the highest address at the bottom of the diagram. When bits are numbered in a diagram, the least significant bit is given the number zero, and is shown at the right of the diagram. Bits are numbered in increasing significance and toward the left. o 15 I MOD I 1 or °U 31 STATIC BASE LINK TABLE ADDRESS PROGRAM BASE Byte at Address A 115 MSB's sI7 LSB's FIGURE 2-4. Module Descriptor Format The Link Table Address points to the Link Table for the currently running module. The Link Table provides the information needed for: 1) Sharing variables between modules. Such variables are accessed through the Link Table via the External addressing mode. 2) Transferring control from one module to another. This is done via the Call External Procedure (CXP) instruction. 01 Two contiguous words are called a double word. Except where noted (Sec. 2.2.1), the least significant word of a double word is stored at the lowest address and the most significant word of the double word is stored at the address two greater. In memory, the address of a double word is the address of its least significant byte, and a double word may start at any address. sI7 A+3 A+2 A+1 Double Word at Address A LSB's ° TL/EE/9160-5 A A+l Word at Address A RESERVED ... Two contiguous bytes are called a word. Except where noted (Sec. 2.2.1), the least significant byte of a word is stored at the lower address, and the most significant byte of the word is stored at the next higher address. In memory, the address of a word is the address of its least significant byte, and a word may start at any address. The format of a Link Table is given in Figure 2-5. A Link Table Entry for an external variable contains the 32-bit address of that variable. An entry for an external procedure contains two 16-bit fields: Module and Offset. The Module field contains the new MOD register contents for the module being entered. The Offset field is an unsigned number giving the position of the entry point relative to the new module's Program Base pOinter. For further details of the functions of these tables, see the Series 32000 Instruction Set Reference Manual. 01 A Although memory is addressed as bytes, it is actually organized as double-words. Note that access time to a word or a double-word depends upon its address, e.g. double-words that are aligned to start at addresses that are multiples of four will be accessed more quickly than those not so aligned. This also applies to words that cross a double-word boundary. ENTRY o-r 31 o ABSOLUTE ADDRESS (VARIABLE) ABSOLUTE ADDRESS (VARIABLE) OFFSET 2.1_5 Dedicated Tables Two of the NS32C032 dedicated registers (MOD and INTBASE) serve as pOinters to dedicated tables in memory. The INTBASE register points to the Interrupt Dispatch and Cascade tables. These are described in Sec. 3.S. '- I MODULE ( PROCEDURE) -'TL/EE/9160-6 FIGURE 2·5. A Sample Link Table 2-174 z 2.0 Architectural Description en Co) (Continued) 2.2 INSTRUCTION SET 17 0 2.2.1 General Instruction Format Figure 2·6 shows the general format of a Series 32000 in· struction. The Basic Instruction is one to three bytes long and contains the Opcode and up to two 5·bit General Ad· dressing Mode ("Gen") fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes selected. GEN. ADDR. MODE l REG. NO. (") o SIGNED DISPLACEMENT I N (") Word Displacement: Range -8192 to +8191 Q Co) N I' , 'I ~t.!Io~ r;J¢'t.O Double Word Displacement: Range (Entire Addressing Space) 'I 0 7 1 I I 1 I ,../TL/EE/9160-11 FIGURE 2-8. Displacement Encodlngs 2.2.2 Addressing Modes The NS32C032 CPU generally accesses an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." OPTIONAL ExrENSIONS BASIC INSTRUCTION r~--------------~A~--------------~\~~ I DISP2 DISPI OlSP21DISPl IMM • ..... ..... Z Some instructions require additional, "implied" immediates and I or displacements, apart from those associated with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition (Sec. 2.2.3). DISP N Co) TL/EE/9160-8 DISP Co) en FIGURE 2-7. Index Byte Format Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected address modes. Each Disp/lmm field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded with the top bits of that field, as shown in Figure 2-8, with the remaining bits interpreted as a signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most significant byte first. Note that this is different from the memory representation of data (Sec. 2.1.4). IMPUED IMMEDIATE OPERAND(S) Q Q Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before indexing. See Figure 2-7. I' N Byte Displacement: Range -64 to +63 I I INDEX BYTE INDEX BYTE GEN ADDR MODE A IMM ... t )J I I I I GEN ADDR MODE I B I I : OPCODE TL/EE/9160-7 FIGURE 2-6. General Instruction Format 2-175 .....• U1 - r------------------------------------------------------------------------------------------, ~ ~ 2.0 Architectural Description 8 Addressing modes in the NS32C032 are designed to optimally support high-level language accesses to variables. In nearly all cases, a variable access requires only one addressing mode, within the instruction that acts upon that variable. Extraneous data movement is therefore minimized. NS32C032 Addressing Modes fall into nine basic types: C') N C') en z ...... C) -. N C') C) (.) N C') en z (Continued) Table 2-1 is a brief summary of the addressing modes. For a complete description of their actions, see the Instruction Set Reference Manual. 2.2.3 Instruction Set Summary Table 2-2 presents a brief description of the NS32C032 instruction set. The Format column refers to the Instruction Format tables (Appendix A). The Instruction column gives the instruction as coded in assembly language, and the Description column provides a short description of the function provided by that instruction. Further details of the exact operations performed by each instruction may be found in the Instruction Set Reference Manual. Register: The operand is available in one of the eight General Purpose Registers. In certain Slave Processor instructions, an auxiliary set of eight registers may be referenced instead. Register Relative: A General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. Notations: i = Integer length suffix: B = Byte W = Word Memory Space. Identical to Register Relative above, except that the register used is one of the dedicated registers PC, SP, SB or FP. These registers pOint to data areas generally needed by high-level languages. Memory Relative: A pointer variable is found within the memory space pointed to by the SP, SB or FP register. A displacement is added to that pOinter to generate the Effective Address of the operand. D = Double Word f = Floating Point length suffix: F = Standard Floating L = Long Floating gen = General operand. Any addressing mode can be specified. short = A 4-bit value encoded within the Basic Instruction (see Appendix A for encodings). imm = Implied immediate operand. An 8-bit value appended after any addressing extensions. disp = Displacement (addressing constant): 8, 16 or 32 bits. All three lengths legal. reg = Any General Purpose Register: RO-R7. Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written. Absolute: The address of the operand is specified by a displacement field in the instruction. External: A pOinter value is read from a specified entry of the current Link Table. To this pOinter value is added a displacement, yielding the Effective Address of the operand. Top of Stack: The currently-selected Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. Scaled Index: Although encoded as an addressing mode. Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by 1, 2, 4 or 8 and adding it into the total, yielding the final Effective Address of the operand. areg = Any Dedicated/Address Register: SP, SB, FP, MOD, INTBASE, PSR, US (bottom 8 PSR bits). mreg = Any Memory Management Status/Control Register. creg = A Custom Slave Processor Register (Implementation Dependent). cond = Any condition code, encoded as a 4-bit field within the Basic Instruction (see Appendix A for encodings). 2-176 z 2.0 Architectural Description en Co) (Continued) N 0 0 TABLE 2-1 Co) N NS32C032 Addressing Modes ENCODING Register 00000 00001 00010 00011 00100 00101 00110 00111 Register Relative 01000 01001 01010 01011 01100 01101 01110 01111 Memory Relative 10000 10001 10010 Reserved 10011 Immediate 10100 Absolute 10101 External 10110 Top of Stack 10111 Memory Space 11000 11001 11010 11011 Scaled Index 11100 11101 11110 11111 • 0 ..... Z en Co) -0. MODE ASSEMBLER SYNTAX EFFECTIVE ADDRESS Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 ROor FO Rl or Fl R20r F2 R30rF3 R40r F4 R50rF5 R60rF6 R70rF7 None: Operand is in the specified register Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(Rl) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp + Register. Frame memory relative Stack memory relative Static memory relative disp2(displ (FP» disp2(displ (SP» disp2(displ (SB» Disp2 + Pointer; Pointer found at address Displ + Register. "SP" is either SPO or SP1, as selected in PSR. Immediate value None: Operand is input from instruction queue. Absolute @disp Disp. External EXT (displ) + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Displ. Top of stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) *+disp Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] EA (mode) + Rn. EA (mode) + 2 x Rn. EA (mode) + 4X Rn. EA (mode) + B x Rn. 'Mode' and 'n' are contained within the Index Byte. EA (mode) denotes the effective address generated using mode. N 0 Co) • -0. (II (Reserved for Future Use) 2-177 0 N .... r-----------------------------------------------------------------------------, ~ ~ C") ~ en z ...... Q .... § C'II ~ 2.0 Architectural Description (Continued) TABLE 2-2 NS32C032 Instruction Set Summary MOVES Format 4 2 7 7 7 7 7 4 Operation MOVi MOVQi MOVMi MOVZBW MOVZiD MOVXBW MOVXiD ADDR Operands gen,gen short,gen gen,gen,disp gen,gen gen,gen gen,gen gen,gen gen,gen Description Move a value. Extend and move a signed 4-bit constant. Move Multiple: disp bytes (1 to 16). Move with zero extension. Move with zero extension. Move with sign extension. Move with sign extension. Move Effective Address. INTEGER ARITHMETIC Format 4 2 4 4 4 6 6 7 7 7 7 7 7 7 Operation Operands Description ADDI ADDQi ADDCi SUBi SUBCi NEGi ABSi MULi QUOi REMi DIVi MODi MEIi DEli gen,gen short,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Add. Add signed 4-bit constant. Add with carry. Subtract. Subtract with carry (borrow). Negate (2's complement). Take absolute value. Multiply Divide, rounding toward zero. Remainder from QUO. Divide, rounding down. Remainder from DIV (Modulus). Multiply to Extended Integer. Divide Extended Integer. PACKED DECIMAL (BCD) ARITHMETIC Format 6 6 Operation Operands Description ADDPi SUBPi gen,gen gen,gen Add Packed. Subtract Packed. INTEGER COMPARISON Format 4 2 7 Operation Operands Description CMPi CMPQi CMPMi gen,gen short,gen gen,gen,disp Compare. Compare to signed 4-bit constant. Compare Multiple: disp bytes (1 to 16). Operation Operands Description ANDi ORi BICi XORi COMi NOTi Scondi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen Logical AND. Logical OR. Clear selected bits. Logical Exclusive OR. Complement all bits. Boolean complement: LSB only. Save condition code (cond) as a Boolean variable of size i. LOGICAL AND BOOLEAN Format 4 4 4 4 6 6 2 2-178 z 2.0 Architectural Description tn Co) (Continued) N TABLE 2·2 (Continued) NS32C032 Instruction Set Summary (Continued) Operation Operands Description LSHi ASHi ROTi gen,gen gen,gen gen,gen Logical Shift, left or right. Arithmetic Shift, left or right. Rotate, left or right. 4 6 6 6 6 6 8 Co) Z tn Co) N 0 0 Co) BITS Format 0 N ....• 0 ...... SHIFTS Format 6 6 6 0 N ....• Operation Operands Description TBITi SBITi SBITli CBITi CBITli IBITi FFSi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Test bit. Test and set bit. Test and set bit, interlocked Test and clear bit. Test and clear bit, interlocked. Test and invert bit. Find first set bit UI BIT FIELDS Bit fields are values in memory that are not aligned to byte boundaries. Examples are PACKED arrays and records used in Pascal. "Extract" instructions read and align a bit field. "Insert" instructions write a bit field from an aligned source. Format 8 8 7 7 8 Operation Operands Description EXTi INSi EXTSi INSSi CVTP reg,gen,gen,disp reg,gen,gen,disp gen,gen,imm,imm gen,gen,imm,imm reg,gen,gen Extract bit field (array oriented). Insert bit field (array oriented). Extract bit field (short form). Insert bit field (short form). Convert to Bit Field Pointer. Operation Operands Description CHECKi INDEXi reg,gen,gen reg,gen,gen Index bounds check. Recursive indexing step for multiple-dimensional arrays. ARRAYS Format 8 8 STRINGS Options on all string instructions are: String instructions assign specific functions to the Gen· eral Purpose Registers: B (Backward): Decrement string pointers after each step rather than incrementing. U (Until match): End instruction if String 1 entry matches R4. R4 - Comparison Value R3 - Translation Table Pointer R2 - String 2 Pointer W(While match): R 1 - String 1 Pointer RO - Limit Count End instruction if String 1 entry does not match R4. All string instructions end when RO decrements to zero. Format 5 Operation Operands Descriptions MOVSi MOVST options options Move String 1 to String 2. Move string, translating bytes. 5 CMPSi CMPST options options Compare String 1 to String 2. Compare translating, String 1 bytes. 5 SKPSi SKPST options options Skip over String 1 entries Skip, translating bytes for Until/While. 2-179 fII ~ ..... ~ 8 r---------------------------------------------------------------------------------, 2.0 Architectural Description (Continued) TABLE 2-2 (Continued) NS32C032 Instruction Set Summary (Continued) N ~ Z ..... CI ..... ~ 8 N CO) tn Z JUMPS AND LINKAGE Format Operation 3 JUMP BR 0 0 Bcond 3 CASEi 2 ACBi 3 JSR BSR 1 1 CXP CXPD 3 SVC FLAG BPT ENTER EXIT RET RXP RETT RETI Operands gen disp disp gen short,gen,disp gen disp disp gen [reg listl,disp [reg list] disp disp disp CPU REGISTER MANIPULATION Format Operation Operands Description Jump. Branch (PC Relative). Conditional branch. Multiway branch. Add 4-bit constant and branch if non-zero. Jump to subroutine. Branch to subroutine. Call external procedure. Call external procedure using descriptor. Supervisor Call. Flag Trap. Breakpoint Trap. Save registers and allocate stack frame (Enter Procedure). Restore registers and reclaim stack frame (Exit Procedure). Return from subroutine. Return from external procedure call. Return from trap. (Privileged) Return from interrupt. (Privileged) Description SAVE RESTORE LPRi SPRi ADJSPi BISPSRi BICPSRi SETCFG [reg listl [reg listl areg,gen areg,gen gen gen gen [option list] Save General Purpose Registers. Restore General Purpose Registers. Load Dedicated Register. (Privileged if PSR or INTBASE) Store Dedicated Register. (Privileged if PSR or INTBASE) Adjust Stack Pointer. Set selected bits in PSR. (Privileged if not Byte length) Clear selected bits in PSR. (Privileged if not Byte length) Set Configuration Register. (Privileged) FLOATING POINT Format Operation Operands Description gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen gen Move a Floating Point value. Move and shorten a Long value to Standard. Move and lengthen a Standard value to Long. Convert any integer to Standard or Long Floating. Convert to integer by rounding. Convert to integer by truncating, toward zero. Convert to largest integer less than or equal to value. Add. Subtract. Multiply. Divide. Compare. Negate. Take absolute value. Load FSR. Store FSR. 1 2 2 3 3 3 5 11 9 9 9 9 9 9 11 11 11 11 11 11 11 9 9 MOVf MOVLF MOVFL MOVif ROUNDfi TRUNCli FLOORfi ADDf SUBf MULf DIVf CMPf NEGf ABSf LFSR SFSR MEMORY MANAGEMENT Format Operation Operands Description 14 14 14 14 8 LMR SMR RDVAL WRVAL MOVSUi mreg,gen mreg,gen gen gen gen,gen 8 MOVUSi gen,gen Load Memory Management Register. (Privileged) Store Memory Management Register. (Privileged) Validate address for reading. (Privileged) Validate address for writing. (Privileged) Move a value from Supervisor Space to User Space. (Privileged) Move a value from User Space to Supervisor Space. (Privileged) 2-180 z 2.0 Architectural Description (/) Co) (Continued) N TABLE 2-2 (Continued) NS32C032 Instruction Set Summary (Continued) MISCELLANEOUS Format Operation 1 NOP WAIT DIA 0 Co) ...• N Operands Description No Operation. Wait for interrupt. Diagnose. Single-byte "Branch to Self" for hardware breakpointing. Not for use in programming. 0 ....... Z (/) Co) N 0 0 Co) ...• N CUSTOM SLAVE Format 0 Operation Operands Description 15.5 15.5 15.5 15.5 CCALOc CCAL1c CCAL2c CCAL3c gen,gen gen,gen gen,gen gen,gen Custom Calculate. 15.5 15.5 15.5 15.5 CMOVOc CMOV1c CMOV2c CMOV3c gen,gen gen,gen gen,gen gen,gen Custom Move. 15.5 15.5 CCMPOc CCMP1c gen,gen gen,gen Custom Compare. 15.1 15.1 15.1 15.1 15.1 15.1 CCVOci CCV1ci CCV2ci CCV3ic CCV4DQ CCV5QD gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Custom Convert. 15.1 15.1 LCSR SCSR gen gen Load Custom Status Register. Store Custom Status Register. 15.0 15.0 CATSTO CATST1 gen gen Custom Address/Test. (Privileged) (Privileged) 15.0 15.0 LCR SCR creg,gen creg,gen Load Custom Register. (Privileged) Store Custom Register. (Privileged) 2-181 U1 .... ~.-------------------------------------------------------------~ N Cf) 8 C"I :az c; .... N Cf) 8 C"I :az 3.0 Functional Description Each rising edge of PHI1 defines a transition in the timing state ("T-State") of the CPU. One T-State represents the execution of one microinstruction within the CPU, and/or one step of an external bus transfer. See Section 4 for complete specifications of PHI1 and PHI2. 3.1 POWER AND GROUNDING The NS32C032 requires a single 5-volt power supply, applied on 4 pins. The Logic Voltage pins (VccL1 and VccL2) supply the power to the on-chip logic. The Buffer Voltage pins (VCCBl and VCCB2) supply the power to the output drivers of the chip. The Logic Voltage pins and the Buffer Voltage pins should be connected together by a power (Vccl plane on the printed circuit board. The NS32C032 grounding connections are made on 5 pins. The Logic Ground pins (GNDL 1 and GNDL2) are the ground pins for the on-chip logic. The Buffer Ground pins (GNDB1 to GNDB3) are the ground pins for the output drivers of the chip. The Logic Ground pins and the Buffer Ground pins should be connected together by a ground plane on the printed circuit board. PHil PHI2 Both power and ground connections are shown below (Figure 3-1). NON-OVERLAPPING +5V TLlEE/91S0-13 FIGURE 3-2. Clock Timing Relationships As the TCU presents signals with very fast transitions, it is recommended that the conductors carrying PHI1 and PHI2 be kept as short as possible, and that they not be connected anywhere except from the TCU to the CPU and, if present, the MMU. A TTL Clock signal (CTTL) is provided by the TCU for all other clocking. OTHER Vee CONNECTIONS (Vee PLANE) NS32C032 CPU ...,~... ~ _ _ _.... 3.3 RESETTING The RST / ABT pin serves both as a Reset for on-Chip logic and as the Abort input for Memory-Managed systems. For its use as the Abort Command, see Sec. 3.5.4. The CPU may be reset at any time by pulling the RST/ ABT pin low for at least 64 clock cycles. Upon detecting a reset, the CPU terminates instruction proceSSing, resets its internal logic, and clears the Program Counter (PC) and Processor Status Register (PSR) to all zeroes. On application of power, RST/ ABT must be held low for at least 50 ].Lsec after Vee is stable. This is to ensure that all on-chip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain OTHER GROUND CONNECT10NS (GNO PLANE) TL/EE/91S0-12 FIGURE 3-1. Recommended Supply Connections 3.2 CLOCKING The NS32C032 inputs clocking signals from the Timing Control Unit (TCU), which presents two non-overlapping phases of a single clock frequency. These phases are called PHI1 (pin 26) and PHI2 (pin 27). Their relationship to each other is shown in Figure 3-2. vcc PHil ---t---~I r-- AST/Aii'i' i!: 64 CLOCK JJJL CYCLES ---j----------U---' 1-----i!:50,,1II!C - - - - - - 1 TLlEE/91S0-14 FIGURE 3-3. Power-on Reset Requirements 2-182 z 3.0 Functional Description en w (Continued) PHll~JUL active for not less than 64 clock cycles. The rising edge must occur while PHil is high. See Figures 3-3 and 3-4. L The NS32C201 Timing Control Unit (TCU) provides circuitry to meet the Reset requirements of the NS32C032 CPU. Figure 3-5a shows the recommended connections for a nonMemory-Managed system. Figure 3-5b shows the connections for a Memory-Managed system. .-2:64CLOCK---i CYCLES ____---.I<""'<".........;r-- ~ RST/Aai' ~""~ ,- r~ I TL/EE/9160-15 FIGURE 3-4. General Reset Timing Vcc NS32C201 lCU NS32C032 CPU r------------, I I II ~ ]~~Ir_~_4r_~--~~~~------~ I !I... _____________ .JI EXTERNAL RESET (OPTIONAL) RSTI RsTc51------.....,>--------~ iiSr/AiT " 50".... RESET SWITCH (OPTIONAL) SYSTEM RESET TL/EE/9160-16 FIGURE 3-5a. Recommended Reset Connections, Non-Memory-Managed System vcc NS32C201 TCU N83Zoaz MMU NS32C032 CPU r------------, I I II RESET I J>--tl---t-....,.--T---+~...--------l !I... _____________ .JI i'iSTi RsTo EXTERNAL RESET (OPTIONAL) RESET SWITCH (OPTIONAL) TL/EE/9160-17 FIGURE 3-5b. Recommended Reset Connections, Memory-Managed System 3) To acknowledge an interrupt and allow external circuitry to provide a vector number, or to acknowledge completion of an interrupt service routine. 4) To transfer information to or from a Slave Processor. 3.4 BUS CYCLES The NS32C032 CPU has a strap option which defines the Bus Timing Mode as either With or Without Address Translation. This section describes only bus cycles under the No Address Translation option. For details of the use of the strap and of bus cycles with address translation, see Sec. 3.5. The CPU will perform a bus cycle for one of the following reasons: In terms of bus timing, cases 1 through 3 above are identical. For timing specifications, see Sec. 4. The only external difference between them is the four-bit code placed on the Bus Status pins (STO-ST3). Slave Processor cycles differ in that separate control signals are applied (Sec. 3.4.6). The sequence of events in a non-Slave bus cycle is shown below in Figure 3-7 for a Read cycle and Figure 3-8 for a Write cycle. The cases shown assume that the selected memory or interface device is capable of communicating with the CPU at full speed. If it is not, then cycle extension may be requested through the RDY line (Sec. 3.4.1). 1) To write or read data, to or from memory or a peripheral interface device. Peripheral input and output are memorymapped in the Series 32000 family. 2) To fetch instructions into the eight-byte instruction queue. This happens whenever the bus would otherwise be idle and the queue is not already full. 2-183 N o C) w ....~ C) ...... z en w N oC) w ....~ U1 ... II) I N C") o oN C") en z ...... ...o I N C") o oN C") en z 3.0 Functional Description (Continued) A full-speed bus cycle is performed in four cycles of the PHI1 clock signal, labeled T1 through T4. Clock cycles not associated with a bus cycle are designated Ti (for "Idle"). The T3 state provides for access time requirements, and it occurs at least once in a bus cycle. At the end of T2 or T3, on the falling edge of the PHI2 clock, the RDY (Ready) line is sampled to determine whether the bus cycle will be extended (Sec. 3.4.1). If the CPU is performing a Read cycle, the Data Bus (ADOAD31) is sampled at the falling edge of PHI2 of the last T3 state. See Section 4. Data must, however, be held at least until the beginning of T4. DS and RD are guaranteed not to go inactive before this point, so the rising edge of either of them may safely be used to disable the device providing the input data. The T4 state finishes the bus cycle. At the beginning of T4, the DS, RD or WR, and TSO signals go inactive, and at the rising edge of PHI2, DBE goes inactive, having provided for necessary data hold times. Data during Write cycles remains valid from the CPU throughout T4. Note that the Bus Status lines (STO-ST3) change at the beginning of T4, anticipating the following bus cycle (if any). During T1, the CPU applies an address on pins ADO-AD23 . It also provides a low-going pulse on the ADS pin, which serves the dual purpose of informing external circuitry that a bus cycle is starting and of providing control to an external latch for demultiplexing Address bits 0-23 from the ADOAD23 pins. See Figure 3-6. During this time also the status signals DDIN, indicating the direction of the transfer, and BEO-BE3, indicating which of the four bus bytes are to be referenced, become valid. During T2 the CPU switches the Data Bus, ADO-AD31 to either accept or present data. It also starts the data strobe (DS), signalling the beginning of the data transfer. Associated signals from the NS32C201 Timing Control Unit are also activated at this time: RD (Read Strobe) or WR (Write Strobe), TSO (Timing State Output, indicating that T2 has been reached) and DBE (Data Buffer Enable). ODIN I--:-""f'-----l 024-031 AOO-A023 NS32C032 PHil PHI2 OS/FLT os PHil PHI2 A05 ODIN OBE RO ROr-----------~- NS32C201 WR WR t-----------~- T50 T50 / - - - - - - - - - - - - TLlEE/9160-1B FIGURE 3-6. Bus Connections 2-184 z 3.0 Functional Description I PHI 1 en w (Continued) T40RTi I I\) oo NS32C032 CPU BUS SIGNALS n T2 TJ T4 I nORTi w I\) ...... o ...... I I [ z en w I\) PHI 2 oo [ w I\) ...... I U1 ADO-A023 [ 02 ....031 [ AOS [ ST()'ST3 [ 0iiiN [ BED-In [ OS [ ROY [ TSO [ TL/EE/9160-20 FIGURE 3-7. Read Cycle Timing 2·185 It) ..... c.:.. CO) 3.0 Functional Description (Continued) o NS32C032 CPU BUS SIGNALS ~ CO) en T40RTi z ...... . o..... PHil [ PHI2 [ N I T1 T2 T3 T4 I TIORTi I ao N CO) en z ADO-AD23 [ DATA OUT 02....031 [ DATA OUT m[ STO-ST3 [ i5iiiN [ iiEo-iii3 [ i5S [ RDv [ Ro [ WR [ OBE [ TSO [ STATUS VA~IO VA~ID NEXT TL/EE/9160-19 FIGURE 3-8. Write Cycle Timing 2·186 z 3.0 Functional Description U) Co) I\) (Continued) 3.4.1 Cycle Extension The RDY pin is driven by the NS32C201 Timing Control Unit, which applies WAIT States to the CPU as requested on three sets of pin: 1) CWAIT (Continuous WAIT), which holds the CPU in WAIT states until removed. 2) WAIT1, WAIT2, WAIT4, WAIT8 (Collectively WAITn), which may be given a four-bit binary value requesting a specific number of WAIT States from 0 to 15. 3) PER (Peripheral), which inserts five additional WAIT states and causes the TCU to reshape the RD and WR strobes. This provides the setup and hold times required by most MOS peripheral interface devices. To allow sufficient strobe widths and access times for any speed of memory or peripheral device, the NS32C032 provides for extension of a bus cycle. Any type of bus cycle except a Slave Processor cycle can be extended. In Figures 3-7 and 3-8, note that during T3 all bus control signals from the CPU and TCU are flat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the RDY (Ready) pin. At the end of T2 on the falling edge of PHI2, the RDY line is sampled by the CPU. If RDY is high, the next T -states will be T3 and then T4, ending the bus cycle. If RDY is low, then another T3 state will be inserted after the next T -state and the RDY line will again be sampled on the falling edge of PHI2. Each additional T3 state after the first is referred to as a "WAIT STATE". See Figure 3-9. T1 T2 oc Co) ~ ..... c ...... Z U) Co) I\) o c . Co) I\) ..... CI1 Combinations of these various WAIT requests are both legal and useful. For details of their use, see the NS32C201 Data Sheet. Figure 3-10 illustrates a typical Read cycle, with two WAIT states requested through the TCU WAITn pins. T3 I (w~m I T4 PHil PHI 2 RDY TL/EE/9160-21 FIGURE 3-9. ROY Pin Timing To acknowledge receipt of a Maskable Interrupt (on INn it will read from address FFFE0016, expecting a vector number to be provided from the Master NS32202 Interrupt Control Unit. If the vectoring mode selected by the last SETCFG instruction was Non-Vectored, then the CPU will ignore the value it has read and will use a default vector instead, having assumed that no NS32202 is present. See Sec. 3.4.5. 0101 - Interrupt Acknowledge, Cascaded. The CPU is reading a vector number from a Cascaded NS32202 Interrupt Control Unit. The address provided is the address of the NS32202 Hardware Vector register. See Sec. 3.4.5. 0110 - End of Interrupt, Master. 3.4.2 Bus Status The NS32C032 CPU presents four bits of Bus Status information on pins STO-ST3. The various combinations on these pins indicate why the CPU is performing a bus cycle, or, if it is idle on the bus, then why is it idle. Referring to Figures 3-7 and 3-8, note that Bus Status leads the corresponding Bus Cycle, going valid one clock cycle before T1, and changing to the next state at T4. This allows the system designer to fully decode the Bus Status and, if desired, latch the decoded signals before ADS initiates the Bus Cycle. The Bus Status pins are interpreted as a four-bit value, with STO the least significant bit. Their values decode as follows: 0000 - The bus is idle because the CPU does not need to perform a bus access. 0001 - The bus is idle because the CPU is executing the WAIT instruction. 0010 - (Reserved for future use.) The CPU is performing a Read cycle to indicate that it is executing a Return from Interrupt (RETI) instruction. See Sec. 3.4.5. 0111 - End of Interrupt, Cascaded. The CPU is reading from a Cascaded Interrupt Control Unit to indicate that it is returning (through RETI) from an interrupt service routine requested by that unit. See Sec. 3.4.5. 0011 - The bus is idle because the CPU is waiting for a Slave Processor to complete an instruction. 0100 - Interrupt Acknowledge, Master. The CPU is performing a Read cycle. To acknowledge receipt of a Non-Maskable Interrupt (on NMI) it will read from address FFFF0016, but will ignore any data provided. 1000 - Sequential Instruction Fetch. The CPU is reading the next sequential word from the instruction stream into the Instruction 2-187 fII ~ ~ ,--------------------------------------------------------------------, I N CO) 3.0 Functional Description (Continued) o o N - PHil [ CO) PHI2 [ IT40RTiI CO) en z ~ I N oN en z - 024-031 [ L-!Ln-n-n-U- J ~ VALID AOOR ~--~ ~ 'W ~ W0 ~ ~--y; ~ 'W ~~ NEXT CYCLE InoRTl1 Jl Jl J CO) AOO-A023 [ Tl - ILLIL o o NS32C032 CPU BUS SIGNALS PREY. CYCLE U1LnUl- ~--OATAIN ""'-- IV STD-ST3 [ ~~ X STATUS VALlO .~~ NEXT STATU S I~ ~~ VALlO -V t- M DoiN[ ~ ~ ~ BeO-BE3 [ --- t- NEXT ADO R t- NEXT 1\ NS32C201 TCU CYCLE EXTENSION SIGNALS ~ CWAIT [ ~ %: tI//'~ Wd ~ ~ ~~~~ ~ ~ WI I~ ~W IWh ~ ~~~~ WAiTn[ ~ ~ ~ ~ ~~ ~ ~ ~~ ~ ~ / ROY [ (TCUTOCPU ) NS32C201 TCU BUS SIGNALS - V 1I -V -J rso[ - / V 1\ TL/EE/9160-22 FIGURE 3·10. Extended Cycle Example Note: Arrows on CWAIT, PER, WAITn indicate points at which the TCU samples. Arrows on AOO-A015 and ROY indicate paints at which the CPU samples. 2-188 ,--------------------------------------------------------------------------, z 3.0 Functional Description en Co) (Continued) Queue. It will do so whenever the bus would otherwise be idle and the queue is not already full. 1001 - Non-Sequential Instruction Fetch. when BEO is low. The second bank, connected to data bus pins AD8-AD15 is enabled when BE1 is low. The third and fourth banks are enabled by BE2 and BE3, respectively. See Figure 3-11. The CPU is performing the first fetch of instruction code after the Instruction Queue is purged. This will occur as a result of any jump or branch, or any interrupt or trap, or execution of certain instructions. N (') oCo) ...o• ..... N z en Co) N (') oCo) ...• 1010 - Data Transfer. N The CPU is reading or writing an operand of an instruction. 1011 - Read RMW Operand. The CPU is reading an operand which will subsequently be modified and rewritten. If memory protection circuitry would not allow the following Write cycle, it must abort this cycle. C11 1100 - Read for Effective Address Calculation. The CPU is reading information from memory in order to determine the Effective Address of an operand. This will occur whenever an instruction uses the Memory Relative or External addreSSing mode. 1101 - Transfer Slave Processor Operand. The CPU is either transferring an instruction operand to or from a Slave Processor, or it is issuing the Operation Word of a Slave Processor instruction. See Sec. 3.9.1. TL/EE/9160-23 1110 - Read Slave Processor Status. FIGURE 3-11. Memory Interface The CPU is reading a Status Word from a Slave Processor. This occurs after the Slave Processor has signalled completion of an instruction. The transferred word tells the CPU whether a trap should be taken, and in some instructions it presents new values for the CPU Processor Status Register bits N, Z, L or F. See Sec. 3.9.1. 1111 - Broadcast Slave ID. Since operands do not need to be aligned with respect to the double-word bus access performed by the CPU, a given double-word access can contain one, two, three, or four bytes of the operand being addressed, and these by1es can begin at various positions, as determined by A1, AO. Table 3-1 lists the 10 resulting access types. TABLE 3-1 Bus Access Types Type Bytes Accessed A 1,AO BE3 BE2 BE1 BEO 00 1 0 1 1 01 1 0 2 1 10 1 0 3 1 1 4 11 0 0 0 00 5 2 01 1 0 0 2 6 1 1 0 7 2 10 0 00 1 0 0 0 3 8 9 3 01 0 0 0 00 0 0 0 0 4 10 The CPU is initiating the execution of a Slave Processor instruction. The ID By1e (first by1e of the instruction) is sent to all Slave Processors, one of which will recognize it. From this pOint the CPU is communicating with only one Slave Processor. See Sec. 3.9.1. 3.4.3 Data Access Sequences The 24-bit address provided by the NS32C032 is a by1e address; that is, it uniquely identifies one of up to 16,777,216 eight-bit memory locations. An important feature of the NS32C032 is that the presence of a 32-bit data bus imposes no restrictions on data alignment; any data item, regardless of size, may be placed starting at any memory address. The NS32C032 provides special control signals. Byte Enable (BEO-BE3) which facilitate individual byte accessing on a 32-bit bus. Accesses of operands requiring more than one bus cycle are performed sequentially, with no idle T-States separating them. The number of bus cycles required to transfer an operand depends on its size and its alignment. Table 3-2 lists the bus cycles performed for each situation. Memory is organized as four eight-bit banks, each bank receiving the double-word address (A2-A23) in parallel. One bank, connected to Data Bus pins ADO-AD7 is enabled 2-189 • U) .,... I N C') ,---------------------------------------------------------------------------------, 3.0 Functional Description (Continued) o oN TABLE 3·2 Access Sequences C') tf) Data Bus Z ..... o .,... I N r~------------~A~----------~\ Cycle Type Address Byte 3 Byte 2 Byte 1 Byte 0 C') o oN C') tf) Z A. Word at address ending with 11 1. 2. 4 1BYTE 1 1BYTE 01 +- A o A Byte 0 A+ 1 0 X B. Double word at address ending with 01 1. 2. o A 9 o o A+3 7 5 A A + 0 2 4 8 Byte 2 Byte 1 By1eO X X X X By1e3 1 0 Byte 1 Byte 0 X X X X Byte 3 By1e2 IBYTE31 BYTE 21 BYTE 11 BYTE 01 +- A o 1 A o o E. Quad word at address ending with 00 1. 10 A 1BYTE 31 BYTE 21BYTE 11 BYTE 01 +- A o A+1 o 0 o o 1. 2. 7 5 A o X X Byte 3 Byte 2 Byte 1 o Byte 3 Byte 2 Byte 1 Byte 0 0 By1e 7 By1e 6 Byte 5 Byte 4 0 0 Byte 2 Byte 1 Byte 0 X X X X Byte 3 Byte 6 Byte 5 Byte 4 X X X X Byte 7 I o o H. Quad word at address ending with 11 X X 1BYTE 71 BYTE 61 BYTE 51 BYTE 41 BYTE 31BYTE 21 BYTE 1 BYTE 01 +- A A+2 Other bus cycles (instruction prefetch or slave) can occur here. 7 3. A+4 1 1 4. 5 0 A+6 o Byte 0 1BYTE 71 BYTE 61 BYTE 51 BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 01 +- A 9 0 0 0 1. A 2. A+3 Other bus cycles (instruction prefetch or slave) can occur here. A+4 0 0 3. 9 0 4. A+7 G. Quad word at address ending with 10 0 1BYTE 71 BYTE 61 BYTE 51 BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 01 +- A Other bus cycles (instruction prefetch or slave) can occur here. 2. 10 A + 4 0 0 0 F. Quad word at address ending with 01 X Byte 1 0 D. Double word at address ending with 11 1. 2. X X 1BYTE 31 BYTE 21 BYTE 11 BYTE 01 +- A C. Double word at address ending with 10 1. 2. X X Byte 1 Byte 0 X X o X X Byte 3 Byte 2 0 Byte 5 X Byte 4 X X Byte 7 X Byte 6 o I 1BYTE 71BYTE 61 BYTE 51 BYTE 41 BYTE 31 BYTE 21BYTE 1 BYTE 01 +- A 1. 4 0 A 2. B A+1 0 0 Other bus cycles (instruction prefetch or slave) can occur here. 1. 4 0 1 A+4 1 2. B A+5 0 0 X = Don't Care 2-190 0 0 By1eO X X X X Byte 3 Byte 2 By1e1 Byte 4 X X X X Byte 7 By1e6 Byte 5 z 3.0 Functional Description (J) Co) (Continued) 3.4.3.1 Bit Accesses A Sequential Fetch will be performed by the CPU whenever the Data Bus would otherwise be idle and the Instruction Queue is not currently full. Sequential Fetches are always type 10 Read cycles (Table 3-1). The Bit Instructions perform byte accesses to the byte containing the designated bit. The Test and Set Bit instruction (SBIT), for example, reads a byte, alters it, and rewrites it, having changed the contents of one bit. An access to a Bit Field in memory always generates a Double-Word transfer at the address containing the least significant bit of the field. The Double Word is read by an Extract instruction; an Insert instruction reads a Double Word, modifies it, and rewrites it. A Non·Sequential Fetch occurs as a result of any break in the normally sequential flow of a program. Any jump or branch instruction, a trap or an interrupt will cause the next Instruction Fetch cycle to be Non-Sequential. In addition, certain instructions flush the instruction queue, causing the next instruction fetch to display Non·Sequential status. Only the first bus cycle after a break displays Non-Sequential status, and that cycle depends on the destination address. 3.4.3.3 Extending Multiply Accesses Note: During non·sequential fetches, BEO-BE3 are all active regardless of 3.4.3.2 Bit Field Accesses the alignment. The Extending Multiply Instruction (MEl) will return a result which is twice the size in bytes of the operand it reads. If the multiplicand is in memory, the most-significant half of the result is written first (at the higher address), then the leastsignificant half. This is done in order to support retry if this instruction is aborted. 3.4.5 Interrupt Control Cycles Activating the INT or NMI pin on the CPU will initiate one or more bus cycles whose purpose is interrupt control rather than the transfer of instructions or data. Execution of the Return from Interrupt instruction (RETI) will also cause Interrupt Control bus cycles. These differ from instruction or data transfers only in the status pesented on pins STO-ST3. All Interrupt Control cycles are single-byte Read cycles. 3.4.4 Instruction Fetches Instructions for the NS32C032 CPU are "prefetched"; that is, they are input before being needed into the next available entry of the eight-byte Instruction Queue. The CPU performs two types of Instruction Fetch cycles: Sequential and NonSequential. These can be distinguished from each other by their differing status combinations on pins STO-ST3 (Sec. 3.4.2). This section describes only the Interrupt Control sequences associated with each interrupt and with the return from its service routine. For full details of the NS32C032 interrupt structure, see Sec. 3.S. 2-191 ~ o Co) N ....o• ...... Z (J) Co) N oo ..... Co) N C11 . .,... II) N M C 3.0 Functional Description (Continued) TABLE 3-3 Interrupt Sequences ~ M (f) Data Bus Z r Ci .,... ~ M C o N M (f) Z Cycle Status Address Interrupt Acknowledge 1 0100 FFFF0016 ODIN \ BE3 BE2 BE1 BEO Byte 3 Byte 2 A. Non-Maskable Interrupt Control Sequences o o X Byte 1 Byte 0 x X X Interrupt Return None: Performed through Return from Trap (RETI) instruction. B. Non- Vectored Interrupt Control Sequences Interrupt Acknowledge 1 0100 FFFE0016 0 Interrupt Return 1 0110 0 FFFE0016 0 X X X X 0 X X X X C. Vectored Interrupt Sequences: Non-Cascaded. Interrupt Acknowledge 1 0100 FFFE0016 0 0 X X X Vector: Range: 0-127 Interrupt Return 1 0110 0 0 X X X Vector: Same as in Previous Int. Ack.Cycle X X Cascade Index: range -16to-1 FFFE0016 D. Vectored Interrupt Sequences: Cascaded Interrupt Acknowledge 0100 FFFE0016 1 o o (The CPU here uses the Cascade Index to find the Cascade Address.) 2 0101 Cascade 0 See Note Address Interrupt Return 0110 1 FFFE0016 o X Vector, range 9 - 255; on appropriate byte of data bus. o (The CPU here uses the Cascade Index to find the Cascade Address) 2 0111 Cascade 0 See Note Address X X X X X X X Cascade Index: Sameasin previous Int. Ack.Cycle X = Don't Care Note: BEO·BE3 signals will be activated according to the cascaded leu address. The cycle type can be 1, 2, 3 or 4, when reading the interrupt vector. The vector value can be in the range 0-255. 2-192 ,--------------------------------------------------------------------------, Z 3.0 Functional Description ~ I\) (Continued) oo 3.4.6 Slave Processor Communication In addition to its use as the Address Translation strap (Sec. 3.5.1), the AT/SPC pin is used as the data strobe for Slave Processor transfers. In this role, it is referred to as Slave Processor Control (SPC). In a Slave Processor bus cycle, data is transferred on the Data Bus (ADO-AD15), and the status lines (STO-ST3) are monitored by each Slave Processor in order to determine the type of transfer being performed. SPC is bidirectional, but is driven by the CPU during all Slave Processor bus cycles. See Sec. 3.9 for full protocol sequences. A AD(0·15) AT/SPC " "v ....o. Co) I\) D«(J.15) ...... SPC cpu SLAVE PROCESSOR STO-ST3 STO-ST3 NS32CD32 Z (/) Co) I\) oo Co) I\) ....• U1 TL/EE/9160-24 FIGURE 3-12. Slave Processor Connections NEXT CYCLE PREY. CYCLE I PHil [ PHIZ [ T40rTI Tl T4 TIORTI I m[ ITO-In [ • _(3)[ DBE TLlEE/9160-25 Note: (I) CPU samples Data Bus here. (2) DBE and all other NS32C201 TCU bus signals remain inactive because no ADS pulse is received from the CPU. FIGURE 3-13. CPU Read from Slave Processor 2-193 .... In c:.. 3.0 Functional Description 8 3.4.6.1 Slave Processor Bus Cycles C') C'I C') C/) z ....... .... o c:.. C') o o C'I C') C/) z (Continued) 3.4.6.2 Slave Operand Transfer Sequences A Slave Processor operand is transferred in one or more Slave bus cycles. A Byte operand is transferred on the least-significant byte of the Data Bus (ADO-AD7), and a Word operand is transferred on bits ADO-AD15. A Double Word is transferred in a consecutive pair of bus cycles, least-significant word first. A Quad Word is transferred in two pairs of Slave cycles, with other bus cycles possibly occurring between them. The word order is from least-significant word to most-significant. Note that the NS32C032 uses only the two least significant bytes of the data bus for slave cycles. This is to maintain compatibility with existing slave processors. A Slave Processor bus cycle always takes exactly two clock cycles, labeled T1 and T4 (see Figures 3-13 and 3-14). During a Read cycle SPC is active from the beginning of T1 to the beginning of T4, and the data is sampled at the end of T1. The Cycle Status pins lead the cycle by one clock period, and are sampled at the leading edge of SPC. During a Write cycle, the CPU applies data and activates SPC at T1 , removing SPC at T4. The Slave Processor latches status on the leading edge of SPC and latches data on the trailing edge. Since the CPU does not pulse the Address Strobe (ADS), no bus signals are generated by the NS32C201 Timing Control Unit. The direction of a transfer is determined by the sequence ("protocol") established by the instruction under execution; but the CPU indicates the direction on the DDIN pin for hardware debugging purposes. PREV.CYCLE I PHil T40RTi NEXTCVCLE TI T4 TIORTi I [ ADO-ADI5 [ 4~~.:.L'f' ' - - - t - - - - r '----t- STO-ST3 [ ADs [ _(2)[ DBE TL/EE/9160-26 Note: (1) Slave Processor samples Data Bus here. (2) DBE, being provided by the NS32C201 TCU, remains inactive due to the fact that no pulse is presented on ADS. TCU Signals RD, WR and TSO also remain inactive. FIGURE 3-14. CPU Write to Slave Processor 2-194 3.0 Functional Description z en w (Continued) N If AT /SPC is sampled as high, the bus timing is as previously described in Sec. 3.4. If it is sampled as low, two changes occur: 3.5 MEMORY MANAGEMENT OPTION The NS32C032 CPU. in conjunction with the NS32082 Memory Management Unit (MMU), provides full support for address translation, memory protection, and memory allocation techniques up to and including Virtual Memory. 1) An extra clock cycle, Tmmu, is inserted into all bus cycles except Slave Processor transfers. 2) The OS/FLT pin changes in function from a Data Strobe output (OS) to a Float Command input (FLT). 3.5.1 Address Translation Strap The Bus Interface Control section of the NS32C032 CPU has two bus timing modes: With or Without Address Translation. The mode of operation is selected by the CPU by sampling the AT/SPC (Address Translation/Slave Processor Control) pin on the rising edge of the RST (Reset) pulse. I PHI! [ PHI2 [ ADO-AD23 [ T40RTI I T1 I The NS32082 MMU will itself pull the CPU AT/SPC pin low when it is reset. In non-Memory-Managed systems this pin should be pulled up to Vee through a 10 k!1 resistor. Note that the Address Translation strap does not specifical- Tmmu I 12 TJ T4 "'I-"-L~"-L"f4 '--_...-.J.J ADs [ STD-STJ [ DDIN BEo-iiEi [~~~~~£L____+-____-+____~+-____~______~~____+- [£4<'-.£..o~ 4------+------1------4+------+---..J '-+-__4_ TLlEE/9160-27 FIGURE 3-15. Read Cycle with Address Translation (CPU Action) 2-195 oo W N .... I o ....... z en w N oo W N .... I c..n . .,... Il') C"II C') C oC"II C') (/) z ...... c .,... N C') c oC"II C') (/) Z 3.0 Functional Description (Continued) Iy declare the presence of an NS32082 MMU, but only the presence of external address translation circuitry. MMU instructions will still trap as being undefined unless the SETCFG (Set Configuration) instruction is executed to declare the MMU instruction set valid. See Sec. 2.1.3. without Address Translation. Note that in order for the NS32082 MMU to operate correctly it must be set to the 32032 mode by forcing A24/HBF low during reset. In this mode the bus lines AD16-AD23 are floated after the MMU address has been latched, since they are used by the CPU to transfer data. Figures 3-17 and 3-18 show a Read cycle and a Write cycle as generated by the 32C032/32082/32C20t group. Note that with the CPU ADS signal going only to the MMU, and with the MMU PAV signal substituting for ADS everywhere else, Tmmu through T4 look exactly like T1 through T4 in a non-Memory-Managed system. For the connection diagram, see Appendix B. 3.5.2 Translated Bus Timing Figures 3-15 and 3-16 illustrate the CPU activity during a Read cycle and a Write cycle in Address Translation mode. The additional T-State, Tmmu, is inserted between T1 and T2. During this time the CPU places ADO-AD23 into the TRI-STATE® mode, allowing the MMU to assert the translated address and issue the physical address strobe PAV. T2 through T4 of the cycle are identical to their counterparts I PHil T40RTI I Tl Tmmu I T2 T3 T4 [ PHI2 ADO-AD23 [ D24-D31 [ ADS [ STD·5T3 [ DDIN BEO-BE3 ROY STATUS VALID [ [ [ TL/EE/9160-28 FIGURE 3-16. Write Cycle with Address Translation (CPU Action) 2-196 z 3.0 Functional Description I PHil [ - D24-D31 [ I Tl I N Tmmu I T2 I I T3 I T4 nORTI n o Ir- Co) ...o ..... N I ~!LfLIL!LfL!L PHI2 [ ADG-AD23 [ T40RTi en Co) (Continued) z en Co) Sl JlSlJ1L-flJl Jlr- n o -~EXTADDR c.n ~ ~~ ~ VIRTUA N Co) ... PHYSICAL ADDRESS VALID ADDRESS_~ ~ DATA/IN VAUD --- ~ ~ @ ~~ ~ ~ ) 1 DATAIIN J -- N I ~~~ IV .iDs [ U STO·ST3 [ ,~ ~ ? X STATU VALID %~ ~ ~ BEO-BE3 [ RDY [ ~ ~ NEX STATUS / ~~ VALID ~ ~ ~ ~ WI NEXT X ~ W%0 ~ ~ NEXT fII NS32C201 leU BUS SIGNALS .- j -j .TSO [ - LI I II TLlEE/9160-29 FIGURE 3-17. Memory-Managed Read Cycle 2-197 LI) .,... • C'I Cf) 3.0 Functional Description CI I 0 C'I Cf) tn Z ...... CI . T40RTi (Continued) I T1 I Tmmu I 12 T3 T4 I Tl0RTi I PHil [ .,... C'I Cf) CI PHI 2 [ 0 C'I Cf) tn Z ADO-ADZ! [ 024-031 [ Aiii[ PAV[ STOoST3 [ STATUS VALID NEXT STATUS iii5iN[ Ho-1Ei [ VALID RDY [ NS32C201 TCU BUS SIGNALS Wii[ iiBE[ Tl/EE/9160-30 FIGURE 3-18. Memory-Managed WrIte Cycle 2·198 ,--------------------------------------------------------------------------, z 3.0 Functional Description ~ (Continued) N 3.5.3 The FLT (Float) Pin 1) Sets AOO-A023. 024-031 and ODIN to the TRI-STATE condition ("floating"). The FLT pin is used by the CPU for address translation support. Activating FLT during Tmmu causes the CPU to wait longer than Tmmu for address translation and valida· tion. This feature is used occasionally by the NS320B2 MMU in order to update its translation look·aside buffer (TLB) from page tables in memory. or to update certain status bits within them. 2) Suspends further internal processing of the current instruction. This ensures that the current instruction reo mains abortable with retry. (See RST/ ABT description. Sec. 3.5.4.) Note that the AOO-A023 pins may be briefly asserted duro ing the first idle T-State. The above conditions remain in effect until FLT again goes high. See the Timing Specifica· tions. Sec. 4. Figure 3-19 shows the effect of FLT. Upon sampling FLT low. late in Tmmu. the CPU enters idle T-States (Tt) during which it: Co) ... ~ o ...... z en Co) N oo .... Co) N U1 Tf Tf T1 oo Tf T2 PHil [ PHI2 [ AOO-A023 [ 024-031 [-t----t' ADS [ PAY [ FLT [ STO·ST3 • [ ODIN [ BEO-BE3 [ VALID TLlEE/9160-31 FIGURE 3-19. FLTTiming 2·199 ~ ..- ~--------------------------------------------------------------. ~ 3.0 Functional Description C\I The RSTI ABT pin, apart from its Reset function (Sec. 3.3), also serves as the means to "abort", or cancel, a bus cycle and the instruction, if any, which initiated it. An Abort request is distinguished from a Reset in that the RST I ABT pin is held active for only one clock cycle. 8 ~ Z ..... o ..- N CO) o U C\I CO) en z (Continued) 2) If FLT has been applied to the CPU, the Abort pulse must be applied before the T -State in which FLT goes inactive. The CPU will not actually respond to the Abort command until FLT is removed. See Figure 4-23. 3.5.4 Aborting Bus Cycles 3) The Write half of a Read-Modify-Write operand access may not be aborted. The CPU guarantees that this will never be necessary for Memory Management functions by applying a special RMW status (Status Code 1011) during the Read half of the access. When the CPU presents RMW status, that cycle must be aborted if it would be illegal to write to any of the accessed addresses. If RST/ABT is pulled low during Tmmu or Tf, this signals that the cycle must be aborted. The CPU itself will enter T2 and then Ti, thereby terminating the cycle. Since it is the MMU PAY signal which triggers a physical cycle, the rest of the system remains unaware that a cycle was started. If RSTI ABT is pulsed at any time other than as indicated above, it will abort either the instruction currently under execution or the next instruction and will act as a very high-priority interrupt. However, the program that was running at the time is not guaranteed recoverable. The NS32082 MMU will abort a bus cycle for either of two reasons: 1) The CPU is attempting to access a virtual address which is not currently resident in physical memory. The referenced page must be brought into physical memory from mass storage to make it accessible to the CPU. 3.6 BUS ACCESS CONTROL The NS32C032 CPU has the capability of relinquishing its access to the bus upon request from a DMA device or another CPU. This capability is implemented on the HOLD (Hold Request) and HLDA (Hold Acknowledge) pins. By asserting HOLD low, an external device requests access to the bus. On receipt of HLDA from the CPU, the device may perform bus cycles, as the CPU at this point has set the ADO-AD23, D24-D31, ADS, DDIN and BEO-BE3 pins to the TRI-STATE condition. To return control of the bus to the CPU, the device sets HOLD inactive, and the CPU acknowledges return of the bus by setting H LDA inactive. 2) The CPU is attempting to perform an access which is not allowed by the protection level assigned to that page. When a bus cycle is aborted by the MMU, the instruction that caused it to occur is also aborted in such a manner that it is guaranteed re-executable later. The information that is changed irrecoverably by such a partly-executed instruction does not affect its re-execution. 3.5.4.1 The Abort Interrupt Upon aborting an instruction, the CPU immediately performs an interrupt through the ABT vector in the Interrupt Table (see Sec. 3.8). The Return Address pushed on the Interrupt Stack is the address of the aborted instruction, so that a Return from Trap (RETT) instruction will automatically retry it. How quickly the CPU releases the bus depends on whether it is idle on the bus at the time the HOLD request is made, as the CPU must always complete the current bus cycle. Figure 3-20 shows the timing sequence when the CPU is idle. In this case, the CPU grants the bus during the immediately following clock cycle. Figure 3-21 shows the sequence if the CPU is using the bus at the time that the HOLD request is made. If the request is made during or before the clock cycle shown (two clock cycles before T4), the CPU will release the bus during the clock cycle following T4. If the request occurs closer to T 4, the CPU may already have decided to initiate another bus cycle. In that case it will not grant the bus until after the next T 4 state. Note that this situation will also occur if the CPU is idle on the bus but has initiated a bus cycle internally. The one exception to this sequence occurs if the aborted bus cycle was an instruction prefetch. If so, it is not yet certain that the aborted prefetched code is to be executed. Instead of causing an interrupt, the CPU only aborts the bus cycle, and stops prefetching. If the information in the Instruction Queue runs out, meaning that the instruction will actually be executed, the ABT interrupt will occur, in effect aborting the instruction that was being fetched. 3.5.4.2 Hardware Considerations In order to guarantee instruction retry, certain rules must be fOllowed in applying an Abort to the CPU. These rules are followed by the NS32082 Memory Management Unit. In a Memory-Managed system, the HLDA signal is connected in a daisy-chain through the NS32082, so that the MMU can release the bus if it is using it. 1) If FLT has not been applied to the CPU, the Abort pulse must occur during or before Tmmu. See the Timing Specifications, Figure 4-22. 2-200 3.0 Functional Description I T, I T, I zCJ) Co) (Continued) T, N I··· I T, Ti T, Ti OR T4 I T,ORTI I oo Co) N ..... I o ....... PHll[iLtuV Z CJ) Co) N PHI2 oo [ Co) N ..... I U1 HOLD [ HL5A[ I AFFECTED SIGNALS ------- IT------ ------- ------- os[ ----- -H·----- ----- ------ ---- ODIN [ BEO-Be3 [ ~r---------- -+----+---41 NEXT ADDR STO·ST3 [ PREVIOUS TL/EE/9160-32 FIGURE 3-20. HOLD Timing, Bus Initially Idle 2-201 .... r---------------------------------------------------------------------------------, U) c.:. ('I) 3.0 Functional Description (Continued) o (.) N I ('I) T20RT3 I T3 T4 Ti TI TI Ti U) Z ...... ..... o N ('I) ~ PHI 2 [ ('I) U) Z HOLD[ HLDA[ AFFECTED SIGNALS ADS[ os[ ODIN [ BEO-BE3[ ADO-AD23 [ VALID NEXT VALID -- 1r-- ---- NEXTADDR 024-031 [ STO-ST3[ TL/EE/9160-33 FIGURE 3·21. HOLD Timing, Bus Initially Not Idle 2·202 z 3.0 Functional Description (Continued) In addition there is a set of internally-generated "traps" which cause interrupt service to be performed as a result either of exceptional conditions (e.g., attempted division by zero) or of specific instructions whose purpose is to cause a trap to occur (e.g., the Supervisor Call instruction). 3.7 INSTRUCTION STATUS In addition to the four bits of Bus Cycle status (STO-ST3), the NS32C032 CPU also presents Instruction Status information on three separate pins. These pins differ from STOST3 in that they are synchronous to the CPU's internal instruction execution section rather than to its bus interface section. 3.8.1 GenerallnterruptlTrap Sequence PFS (Program Flow Status) is pulsed low as each instruction begins execution. It is intended for debugging purposes, and is used that way by the NS32082 Memory Management Unit. U/S originates from the U bit of the Processor Status Register, and indicates whether the CPU is currently running in User or Supervisor mode. It is sampled by the MMU for mapping, protection, and debugging purposes. Although it is not synchronous to bus cycles, there are guarantees on its validity during any given bus cycle. See the Timing Specifications, Figure 4-21. ~ o 8N • ...... ~ ~ W N Upon receipt of an interrupt or trap request, the CPU goes through three major steps: 1) Adjustment of Registers. o Depending on the source of the interrupt or trap, the CPU may restore and/or adjust the contents of the Program Counter (PC), the Processor Status Register (PSR) and the currently-selected Stack Pointer (SP). A copy of the PSR is made, and the PSR is then set to reflect Supervisor Mode and selection of the Interrupt Stack. en ~ • ...... 2) Vector Acquisition. A Vector is either obtained from the Data Bus or is supplied by default. 3) Service Call. ILO (Interlocked Operation) is activated during an SBITI (Set Bit, Interlocked) or CBITI (Clear Bit, Interlocked) instruction. It is made available to external bus arbitration circuitry in order to allow these instructions to implement the semaphore primitive operations for multi-processor communication and resource sharing. As with the U/S pin, there are guarantees on its validity during the operand accesses performed by the instructions. See the Timing SpeCification Section, Figure 4-19. The Vector is used as an index into the Interrupt Dispatch Table, whose base address is taken from the CPU Interrupt Base (lNTBASE) Register. See Figure 3-22. A 32-bit External Procedure Descriptor is read from the table entry, and an External Procedure Call is performed using it. The MOD Register (16 bits) and Program Counter (32 bits) are pushed on the Interrupt Stack. 3.8 NS32C032 INTERRUPT STRUCTURE INT, on which maskable interrupts may be requested, NMI, on which non-maskable interrupts may be requested, and RST/ ABT, which may be used to abort a bus cycle and any associated instruction. See Sec. 3.5.4. ,~ MEMORY / CASCADE TABLE I I"r-o' o~ 31 0 NVI N ON·VECTORED INTERRUPT CASCADE ADDR 0 ;~ I'''~~m''~ REGISTER ~ t ·· CASCADE ADDR 14 * CASCADE ADDR 15 FIXED INTERRUPTS AND TRAPS VECTORED INTERRUPTS I DISPATCH TABLE X 1 NMI NON·MASKABLE INTERRUPT 2 ABT A BORT 3 SLAVE SLAVE PROCESSOR TRAP 4 ILL ILLEGAL OPERATION TRAP 5 SVC S UPERVISOR CALL TRAP 6 DVZ DIVIDE BY ZERO TRAP 7 FLG FLAG TRAP 8 BPT BREAKPOINTTRAP 9 TRC T RACE TRAP UNO U NDEFINED INSTRUCTION TRAP 10 11·15 ~ ;::: RESERVED 16 ,.'" ;" VECTORED INTERRUPTS A. TLlEE/9160-34 FIGURE 3-22. Interrupt Dispatch and Cascade Tables 2-203 II ..... U) I ~ z C; ..... N CO) C) ~ r---------------------------------------------------------------------------------, 3.0 Functional Description (Continued) This process is illustrated in Figure 3-23, from the viewpoint of the programmer. l I I (PUSH) RETURN ADDRESS j 32BITS I STATUS I I I (PUSH) MODULE PSR 32 BITS MOD INTERRUPT STACK en z TL/EE/9160-35 r-------------..., I I I I CASCADE TABLE I I I INTBASE REGISTER I DISPATCH TABLE DESCRIPTOR (32 Brrs) OESCRIPTOR 0-----16--- ._--16--0 Ii""" 0 1 1 "1""1 OFFSET MODULE MOD REGISTER I -:::r-J 0 MODULE TABLE NEW MOOULE I MODULE TABLE ENTRY J MODULE TABLE ENTRY 32 -r-----, STATIC BASE POINTER UNK BASE POINTER + PROGRAM BASE POINTER (RESERVED) SBREGISTER PROGRAM COUNTER +- ENTRY POINT ADDRESS NEW STATIC BASE FIGURE 3-23. Interrupt/Trap Service Routine Calling Sequence 2-204 I TL/EE/9160-36 z en CAl 3.0 Functional Description (Continued) N 3.8.2 Interrupt/Trap Return The input is maskable, and is therefore enabled to generate interrupt requests only while the Processor Status Register I bit is set. The I bit is automatically cleared during service of an INT, NMI or Abort request, and is restored to its original setting upon return from the interrupt service routine via the RETT or RETI instruction. To return control to an interrupted program, one of two instructions is used. The RETI (Return from Trap) instruction (Figure 3-24) restores the PSR, MOD, PC and S8 registers to their previous contents and, since traps are often used deliberately as a call mechanism for Supervisor Mode procedures, it also discards a specified number of bytes from the original stack as surplus parameter space. RETI is used to return from any trap or interrupt except the Maskable Interrupt. For this, the RETI (Return from Interrupt) instruction is used, which also informs any external Interrupt Control Units that interrupt service has completed. Since interrupts are generally asynchronous external events, RETI does not pop parameters. See Figure 3-25. The INT pin may be configured via the SETCFG instruction as either Non-Vectored (CFG Register bit I = C) or Vectored (bit I = 1). 3.8.3.1 Non-Vectored Mode The INT pin is a level-sensitive input. A continuous low level is allowed for generating multiple interrupt requests. PROGRAM COUNTER RETURN ADDRESS STATUS PSR I I -.o1l----------~1-------------l (POP) j 32 BITS (POP) MODULE 32 BITS MOD INTERRUPT STACK MODULE TABLE MODULE TABLE ENTRY MODULET~BLEENTRY STATIC BASE POINTER - h LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) PARAMETERS n BYTES SBREGISTER STATIC BASE +' STACK SELECTED IN NEWLYPOPPEDPSR. POP AND DISCARD FIGURE 3-24. Return from Trap (RETT n) Instruction Flow 2-205 CAl ....~ o ...... z en CAl N oo CAl ....~ U1 In the Non-Vectored mode, an interrupt request on the INT pin will cause an Interrupt Acknowledge bus cycle, but the CPU will ignore any value read from the bus and use instead a default vector of zero. This mode is useful for small systems in which hardware interrupt prioritization is unnecessary. 3.8.3 Maskable Interrupts (The INT Pin) oo Tl/EE/9160-37 ... r---------------------------------------------------------------------------------, 3.0 Functional Description U) ~ en z c;; ...N (Continued) C\I C') "END OF INTERRUPT" BUS CYCLE 8 C\I INTERRUPT CONmOL UNIT C') U) z PROGRAM COUNTER (POP) RETURN ADDRESS STATUS J (POP) MODULE PSR -1r---------+_ MOO INTERRUPT STACK o MODULE TABLE MODULE TABLE ENmy J MODULE TAJLE ENTRY STATIC BASE POINTER - ---..., LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) STATlCBASE SBREGISTER -+-' TL/EE/9160-39 FIGURE 3·25. Return from Interrupt (RETI) Instruction Flow 2·206 z 3.0 Functional Description (Continued) en N oo Co) Figure 3-22 illustrates the position of the Cascade Table. To find the Cascade Table entry for a Cascaded ICU, take its Master ICU line number (0 to 15) and subtract 16 from it, giving an index in the range -16 to -1. Multiply this value by 4, and add the resulting negative number to the contents of the INTBASE Register. The 32·bit entry at this address must be set to the address of the Hardware Vector Register of the Cascaded ICU. This is referred to as the "Cascade Address." 3.8.3.2 Vectored Mode: Non-Cascaded Case In the Vectored mode, the CPU uses an Interrupt Control Unit (ICU) to prioritize up to 16 interrupt requests. Upon receipt of an interrupt request on the INT pin, the CPU performs an "Interrupt Acknowledge, Master" bus cycle (Sec. 3.4.2) reading a vector value from the low·order byte of the Data Bus. This vector is then used as an index into the Dispatch Table in order to find the External Procedure Descriptor for the proper interrupt service procedure. The service procedure eventually returns via the Return from Interrupt (RETI) instruction, which performs an End of Interrupt bus cycle, informing the ICU that it may re·prioritize any interrupt requests still pending. The ICU provides the vector number again, which the CPU uses to determine whether it needs also to inform a Cascaded ICU (see below). In a system with only one ICU (16 levels of interrupt), the vectors provided must be in the range of 0 through 127; that is, they must be positive numbers in eight bits. By providing a negative vector number, an ICU flags the interrupt source as being a Cascaded ICU (see below). Upon receipt of an interrupt request from a Cascaded ICU, the Master ICU interrupts the CPU and provides the negative Cascade Table index instead of a (positive) vector number. The CPU, seeing the negative value, uses it as an index into the Cascade Table and reads the Cascade Address from the referenced entry. Applying this address, the CPU performs an "Interrupt Acknowledge, Cascaded" bus cycle (Sec. 3.4.2), reading the final vector value. This vector is interpreted by the CPU as an unsigned byte, and can therefore be in the range of 0 through 255. In returning from a Cascaded interrupt, the service procedure executes the Return from Interrupt (RETI) instruction, as it would for any Maskable Interrupt. The CPU performs an "End of Interrupt, Master" bus cycle (Sec. 3.4.2), whereupon the Master ICU again provides the negative Cascade Table index. The CPU, seeing a negative value, uses it to find the corresponding Cascade Address from the Cascade Table. Applying this address, it performs an "End of Interrupt, Cascaded" bus cycle (Sec. 3.4.2), informing the Cas· caded ICU of the completion of the service routine. The byte read from the Cascaded ICU is discarded. 3.8.3.3 Vectored Mode: Cascaded Case In order to allow up to 256 levels of interrupt, provision is made both in the CPU and in the NS32202 Interrupt Control Unit (ICU) to transparently support cascading. Figure 3-21, shows a typical cascaded configuration. Note that the Interrupt output from a Cascaded ICU goes to an Interrupt Request input of the Master ICU, which is the only ICU which drives the CPU INT pin. In a system which uses cascading, two tasks must be performed upon initialization: 1) For each Cascaded ICU in the system, the Master ICU must be informed of the line number (0 to 15) on which it receives the cascaded requests. Note: If an interrupt must be masked off, the CPU can do so by selting the corresponding bit in the Interrupt Mask Register of the Interrupt Con· troller. However, if an interrupt is set pending during the CPU instruction that masks off that interrupt, the CPU may still perform an interrupt ac· knowledge cycle following that instruction Since it might have sampled the INT line before the leu deasserted it. This could cause the ICU to provide an invalid vector. To avoid this problem the above operation should be performed with the CPU interrupt disabled. 2) A Cascade Table must be established in memory. The Cascade Table is located in a NEGATIVE direction from the location indicated by the CPU Interrupt Base (lNTBASE) Register. Its entries are 32-bit addresses, pOinting to the Vector Registers of each of up to 16 Cascaded ICUs. HARDWARE INTERRUPTS OR CASCADED CONTROLLERS NS32C1l32 CPU GROUP INf 1------1 INTERRUPTS, CASCADED, OR BrrllO TUEE19160-40 FIGURE 3-26. Interrupt Control Unit Connections (16 Levels) 2·207 Co) ... ~ o ...... Z en Co) N oo Co) ... ~ en .... ~ .-----------------------------------------------------------------------------~ N CO) 3.0 Functional Description (Continued) o o C'I DATA CO) rn z ~ CONTROL N CO) ADDR 5 BITS .... ~rn z CASCADED NS32202 ICU HARDWARE INTERRUPTS STATUS FROM ADDRESS DECODER INTERRUPTS OR BIT 1/0 CONTROL NS32C032 CPU GROUP MASTER N&32202 ICU ADDR STATUS 1 TLlEE/9160-41 FIGURE 3-27. Cascaded Interrupt Control Unit Connections 3.8.4 Non-Maskable Interrupt (The NMI Pin) The Non-Maskable Interrupt is triggered whenever a falling edge is detected on the NMI pin. The CPU performs an "Interrupt Acknowledge, Master" bus cycle (Sec. 3.4.2) when processing of this interrupt actually begins. The Interrupt Acknowledge cycle differs from that provided for Maskable Interrupts in that the address presented is FFFF0016. The vector value used for the Non-Maskable Interrupt is taken as 1, regardless of the value read from the bus. 3.B.5Traps A trap is an internally-generated interrupt request caused as a direct and immediate result of the execution of an instruction. The Return Address pushed by any trap except Trap (TRC) is the address of the first byte of the instruction during which the trap occurred. Traps do not disable interrupts, as they are not associated with external events. Traps recognized by the NS32C032 CPU are: Trap (SLAVE): An exceptional condition was detected by the Floating Point Unit or another Slave Processor during the execution of a Slave Instruction. This trap is requested via the Status Word returned as part of the Slave Processor Protocol (Sec. 3.9.1). The service procedure returns from the Non-Maskable Interrupt using the Return from Trap (RETT) instruction. No special bus cycles occur on return. For the full sequence of events in processing the NonMaskable Interrupt, see Sec. 3.8.7.1. 2·208 z en 3.0 Functional Description (Continued) Trap (ILL): Illegal operation. A privileged operation was attempted while the CPU was in User Mode (PSR bit U = 1). Trap (SVC): The Supervisor Call (SVC) instruction was executed. 1. If a String instruction was interrupted and not yet completed: a. Clear the Processor Status Register P bit. b. Set "Return Address" to the address of the first byte of the interrupted instruction. Otherwise, set "Return Address" to the address of the next instruction. Trap (DVZ): An attempt was made to divide an integer by zero. (The FPU trap is used for Floating Point division by zero.) Trap (FLG): The FLAG instruction detected a "1" in the CPU PSR F bit. Trap (BPT): The Breakpoint (BPT) instruction was executed. Trap (TRC): The instruction just completed is being traced. See below. Trap (UNO): An undefined opcode was encountered by the CPU. 2. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, T, P and I. 3. If the interrupt is Non-Maskable: ~ • ..... CI ........ z en Co) I\) o CI Co) ~ ..... en a. Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master, Sec. 3.4.2). Discard the byte read. b. Set "Vector" to 1. c. Go to Step B. 4. If the interrupt is Non-Vectored: A special case is the Trace Trap (TRC), which is enabled by setting the T bit in the Processor Status Register (PSR). At the beginning of each instruction, the T bit is copied into the PSR P (Trace "Pending") bit. If the P bit is set at the end of an instruction, then the Trace Trap is activated. If any other trap or interrupt request is made during a traced instruction, its entire service procedure is allowed to complete before the Trace Trap occurs. Each interrupt and trap sequence handles the P bit for proper traCing, guaranteeing one and only one Trace Trap per instruction, and guaranteeing that the Return Address pushed during a Trace Trap is always the address of the next instruction to be traced. a. Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Sec. 3.4.2). Discard the byte read. b. Set "Vector" to O. c. Go to Step B. 5. Here the interrupt is Vectored. Read "Byte" from address FFFE0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Sec. 3.4.2). 6. If "Byte" :2: 0, then set "Vector" to "Byte" and go to Step B. 3.8.6 Prioritization The NS32016 CPU internally prioritizes simultaneous interrupt and trap requests as follows: 1) Traps other than Trace (Highest.priority) 2) Abort 7. If "Byte" is in the range -16 through -1, then the interrupt source is Cascaded. (More negative values are reserved for future use.) Perform the following: a. Read the 32-bit Cascade Address from memory. The address is calculated as INTBASE +4' Byte. b. Read "Vector," applying the Cascade Address just read and Status Code 0101 (Interrupt Acknowledge, Cascaded: Sec. 3.4.2). 8. Push the PSR copy (from Step 2) onto the Interrupt Stack as a 16-bit value. 3) Non-Maskable Interrupt 4) Maskable Interrupts 5) Trace Trap ~ g (Lowest priority) 3.8.7InterruptlTrap Sequences: Detailed Flow For purposes of the following detailed discussion of interrupt and trap service sequences, a single sequence called "Service" is defined in Figure 3-28. Upon detecting any interrupt request or trap condition, the CPU first performs a sequence dependent upon the type of interrupt or trap. This sequence will include pushing the Processor Status Register and establishing a Vector and a Return Address. The CPU then performs the Service sequence. 9. Perform Service (Vector, Return Address), Figure 3-28. Service (Vector, Return Address): 1) Read the 32-blt Externat Procedure Descriptor from the tnterrupt Dispatch Table: address Is Vector' 4 + INTBASE Register contents. 2) Move the Module field of the Descriptor into the MOD Register. 3) Read the new Static Base pOinter from the memory address contained in MOD, placing it Into the SB Register. 4) Read the Program Base pOinter from memory address MOD + 8, and add to it the Offset field from the Descriptor, placing the result In the Program Counter. For the sequence followed in processing either Maskable or Non-Maskable interrupts (on the INT or NMI pins, respectively), see Sec. 3.B. 7.1 For Abort Interrupts, see Sec. 3.B.7.4. For the Trace Trap, see Sec. 3.8.7.3, and for all other traps see Sec. 3.B. 7.2. 5) Flush queue: Non-sequentially fetch first Instruction of Interrupt routine. 6) Push MOD Register Into the Interrupt Stack as a 16-blt value. (The PSR has already been pushed as a 16-blt value.) 3.8.7.1 Maskable/Non·Maskable Interrupt Sequence 7) Push the Return Address onto the Interrupt Stack as a 32-blt quantity. This sequence is performed by the CPU when the NMI pin receives a falling edge, or the INT pin becomes active with the PSR I bit set. The interrupt sequence begins either at the next instruction boundary or, in the case of the String instructions, at the next interruptible point during its execution. FIGURE 3·28. Service Sequence Invoked during all interrupt/trap sequences. 2-209 PI 3.0 Functional Description (Continued) Each Slave Instruction Set is validated by a bit in the Configuration Register (Sec. 2.1.3). Any Slave Instruction which does not have its corresponding Configuration Register bit set will trap as undefined, without any Slave Processor communication attempted by the CPU. This allows software simulation of a non-existent Slave Processor. 3.8.7.2 Trap Sequence: Traps Other Than Trace 1) Restore the currently selected Stack Pointer and the Processor Status Register to their original values at the start of the trapped instruction. 2) Set "Vector" to the value corresponding to the trap type. SLAVE: Vector = 3. ILL: Vector = 4. SVC: DVZ: Vector = 5. Vector = 6. FLG: BPT: UNO: Vector = 7. Vector = 8. Vector = 10. 3.9.1 Slave Processor Protocol Slave Processor instructions have a three-byte Basic Instruction field, consisting of an 10 Byte followed by an Operation Word. The 10 Byte has three functions: 1) It identifies the instruction as being a Slave Processor instruction. 2) It specifies which Slave Processor will execute it. 3) It determines the format of the following Operation Word of the instruction. Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Figure 3-29. While applying Status Code 1111 (Broadcast 10, Sec. 3.4.2), the CPU transfers the 10 Byte on the least-significant byte of the Data Bus (ADO-AD7). All Slave Processors input this byte and decode it. The Slave Processor selected by the 10 Byte is activated, and from this point the CPU is communicating only with it. If any other slave protocol was in progress (e.g., an aborted Slave instruction), this transfer cancels it. The CPU next sends the Operation Word while applying Status Code 1101 (Transfer Slave Operand, Sec. 3.4.2). Upon receiving it, the Slave Processor decodes it, and at this point both the CPU and the Slave Processor are aware of the number of operands to be transferred and their sizes. The operation Word is swapped on the Data Bus, that is, bits 0-7 appear on pins AD8-AD15 and bits 8-15 appear on pins ADO-AD7. 3) Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, P and T. 4) Push the PSR copy onto the Interrupt Stack as a 16-bit value. 5) Set "Retum Address" to the address of the first byte of the trapped instruction. 6) Perform Service (Vector, Return Address), Figure 3-28. 3.8.7.3 Trace Trap Sequence 1) In the Processor Status Register (PSR), clear the P bit. 2) Copy the PSR into a temporary register, then clear PSR bits S, U and T. 3) Push the PSR copy onto the Interrupt Stack as a 16-bit value. 4) Set "Vector" to 9~ 5) Set "Return Address" to the address of the next instruc- tion. 6) Perform Service (Vector, Return Address), Agure 3-28. Using the Address Mode fields within the Operation Word, the CPU starts fetching operand and issuing them to the Slave Processor. To do so, it references any Addressing Mode extensions which may be appended to the Slave Processor instruction. Since the CPU is solely responsible 3.8.7.4 Abort Sequence 1) Restore the currently selected Stack Pointer to its original contents at the beginning of the aborted instruction. 2) Clear the PSR P bit. 3) Copy the PSR into a temporary register, then clear PSR bits S, U, T and I. Slatus Combinations: 4) Push the PSR copy onto the Interrupt Stack as a 16-bit value. Send 10 (10): Code 1111 5) Set "Vector" to 2. 6) Set "Return Address" to the address of the first byte of the aborted Instruction. 7) Perform Service (Vector, Return Address), Figure 3-28. Read Status (ST): Code 1110 Xler Operand (OP): Code 1101 3.9 SLAVE PROCESSOR INSTRUCTIONS The NS32C032 CPU recognizes three groups of instructions being executable by external Slave Processor: Floating Point Instruction Set Memory ManagemEmt Instruction Set Custom Instruction Set Step Status 1 10 CPU Send 10 Byte. Action 2 OP CPU Sends Operaten Word. 3 OP CPY Sends Required Operands Slave Starts Execution. CPU Pre·fetches. 4 Slave Pulses SPe Low. 6 7 ST CPU Reads Status Word. (Trap? Alter Flags?) OP CPU Reads Results (If Any). FIGURE 3-29. Slave Processor Protocol 2-210 z 3.0 Functional Description en Co) (Continued) I\) for memory accesses, these extensions are not sent to the Slave processor. The Status Code applied is 1101 (Transfer Slave Processor Operand, Sec. 3.4.2). An exception to the protocol above is the LMR (Load Memory Management Register) instruction, and a corresponding Custom Slave instruction (LCR: Load Custom Register). In executing these instructions. the protocol ends after the CPU has issued the last operand. The CPU does not wait for an acknowledgement from the Slave Processor, and it does not read status. After the CPU has issued the last operand, the Slave Processor starts the actual execution of the instruction. Upon completion, it will signal the CPU by pulsing SPC low. To allow for this, and for the Address Translation strap function, AT ISPC is normally held high only by an internal pullup device of approximately 5 kfl.. 3.9.2 Floating Point Instructions Table 3-4 gives the protocols followed for each Floating Point instruction. The instructions are referenced by their mnemonics. For the bit encodings of each instruction. see Appendix A. While the Slave Processor is executing the instruction, the CPU is free to prefetch instructions into its queue. If it fills the queue before the Slave Processor finishes, the CPU will wait, applying Status Code 0011 (Waiting for Slave, Sec. 3.4.2). The Operand class columns give the Access Class for each general operand, defining how the addressing modes are interpreted (see Instruction Set Reference Manual). Upon receiving the pulse on SPC, the CPU uses SPC to read a Status Word from the Slave Processor, applying Status Code 1110 (Read Slave Status, Sec. 3.4.2). This word has the format shown in Figure 3-30. If the Q bit ("Quit", Bit 0) is set, this indicates that an error was detected by the Slave Processor. The CPU will not continue the protocol, but will immediately trap through the Slave vector in the Interrupt Table. Certain Slave Processor instructions cause CPU PSR bits to be loaded from the Status Word. The Operand Issued columns show the sizes of the operands issued to the Floating Point Unit by the CPU. "0" indicates a 32-bit Double Word. "i" indicates that the instruction specifies an integer size for the operand (B = Byte, W = Word. 0 = Double Word). "f" indicates that the instruction specifies a Floating Point size for the operand (F = 32-bit Standard Floating, L = 64-bit Long Floating). The Returned Value Type and Destination column gives the size of any returned value and where the CPU places it. The PSR Bits Affected column indicates which PSR bits, if any, are updated from the Slave Processor Status Word (Figure 3-30). The last step in the protocol is for the CPU to read a result, if any. and transfer it to the destination. The Read cycles from the Slave Processor are performed by the CPU while applying Status Code 1101 (Transfer Slave Operand. Sec. 3.4.2). TABLE 3-4 Mnemonic Operand 1 Class Floating Point Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued PSR Bits Affected none none none none ADDf SUB! MUU DIV! read.! read.! read.f read.f rmw.! rmw.f rmw.f rmw.f ! Ito Op. 2 ftoOp.2 ftoOp.2 !toOp.2 MOVf ABS! NEGf read.! read.f read.! write.! write.! write.! N/A N/A N/A ftoOp.2 ftoOp.2 ftoOp.2 none none none CMP! read.! read.! N/A N,Z,L FLOOR!i TRUNC!i ROUND!i read.! read.f read.f write.i write.i write.i N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 none none none MOVFL MOVLF read.F read.L write.L write.F F L N/A N/A LtoOp.2 FtoOp.2 none none MOVif read.i write.! N/A Ito Op. 2 none LFSR SFSR read.D N/A N/A write.D 0 N/A N/A N/A N/A Dto Op. 2 none none Note: o = Double Word I = Integer size (B,W,D) specified in mnemonic. f = Floating Point type (F,L) specified in mnemonic. NtA Returned Value Type and Dest. = Not Applicable to this instruction. 2-211 o o . Co) I\) ..... o ...... z en oo Co) I\) Co) I\) .....• c.n .... r-----------------------------------------------------------------------------, ~ N CO) 3.0 Functional Description i 15 l z ...... CI .... N ~ ~ ~ (Continued) 3.9.3 Memory Management Instructions Table 3-5 gives the protocols for Memory Management instructions. Encodings for these instructions may be found in Appendix A. In executing the RDVAL and WRVAL instructions, the CPU calculates and issues the 32-bit Effective Address of the single operand. The CPU then performs a single-byte Read cycle from that address, allowing the MMU to safely abort the instruction if the necessary information is not currently in physical memory. Upon seeing the memory cycle complete, the MMU continues the protocol, and returns the validation result in the F bit of the Slave Status Word. The size of a Memory Management operand is always a 32bit Double Word. For further details of the Memory Management Instruction set, see the Instruction Set Reference Manual and the NS32082 MMU Data Sheet. 87 00000000 IN Z F 0 0 L 0 01 New PSR BII V.lue«.)~ -"Oull": Termlnlle Protocol. Trap(FPU). / I TL/EE/9160-42 FIGURE 3·30. Slave Processor Status Word Format Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified. This is because the Floating Point Registers are physically on the Floating Point Unit and are therefore available without CPU assistance. Mnemonic RDVAL' WRVAL' LMR' SMR' Operand 1 Class addr addr read.D write.D TABLE 3·5 Memory Management Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued N/A N/A N/A N/A 0 0 0 N/A N/A N/A N/A N/A Returned Value Type and Dest. PSR Bits Affected N/A N/A N/A F F DtoOp.1 none none Note: In the RDVAL and WRVAL instructions, the CPU issues the address as a Double Word, and perfonns a single.byte Read cycle from that memory address. For details, see the Instruction Set Reference Manual and the NS32082 Memory Management Unit Data Sheel o- Double Word • - Privileged Instruction: will trap if CPU is in User Mode. NIA - Not Applicable to this instruction. 2-212 z 3.0 Functional Description en Co) (Continued) N 3.9.4 Custom Slave Instructions Table 3-5 lists the relevant information for the Custom Slave instruction set. The designation "c" is used to represent an operand which can be a 32-bit ("0") or 54-bit ("Q") quantity in any format; the size is determined by the suffix on the mnemonic. Similarly, an "i" indicates an integer size (Byte, Word, Double Word) selected by the corresponding mnemonic suffix. Any operand indicated as being of type "c" will not cause a transfer if the register addressing mode is specified. It is assumed in this case that the slave processor is already holding the operand internally. For the instruction encodings, see Appendix A. Provided in the NS32C032 is the capability of communicating with a user-defined, "Custom" Slave Processor. The instruction set provided for a Custom Slave Processor defines the instruction formats. the operand classes and the communication protocol. Left to the user are the interpretations of the Op Code fields, the programming model of the Custom Slave and the actual types of data transferred. The protocol specifies only the size of an operand, not its data type. o C Co) N • .... c ....... z en Co) N o C Co) ....~ U'I TABLE 3-6 Mnemonic Operand 1 Class Custom Slave Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued read.c read.c read.c read.c rmw.c rmw.c rmw.c rmw.c c c c c c c c c ctoOp.2 ctoOp.2 cto Op. 2 ctoOp.2 none none none none CMOVOc CMOV1c CMOV2c CMOV3c read.c read.c read.c read.c write.c write.c write.c write.c c c c c N/A N/A N/A N/A cto Op. 2 ctoOp.2 ctoOp.2 ctoOp.2 none none none none CCMPOc CCMP1c read.c read.c read.c read.c c c c c N/A N/A N,Z,L N,Z,L CCVOci CCV1ci CCV2ci CCV3ic read.c read.c read.c read.i write.i write.i write.i write.c c c c itoOp.2 ito Op. 2 itoOp.2 ctoOp.2 none none none none CCV40Q CCV5QO read. 0 read.Q write.Q write.O 0 Q QtoOp.2 OtoOp.2 none none LCSR SCSR read.O N/A 0 N/A N/A write.D N/A none none addr addr N/A N/A N/A N/A 0 0 N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A LCR* SCR* read.O write.O 0 N/A Note: Double Word i = Integer size (B,W,D) specified in mnemonic. c ~ PSRBlts Affected CCALOc CCAL1c CCAL2c CCAL3c CATSTO* CATST1* o~ Returned Value Type and Dest. Custom siza (0:32 bits or Q:64 bits) spacified in mnamonic. • = Privileged instruction: will trap if CPU is in User Mode. NI A ~ Not Applicable to this instruction. 2-213 OtoOP.2 N/A N/A N/A OtoOp.1 F F none none fII .... r---------------------------------------------------------------------------------, U) N C') o ~en z ..... o .... N C') o ~ C') U) Z 4.0 Device Specifications Byte Enable (BEO-BE3): Active low. Four control signals enabling data transfers on individual bus bytes. Sec. 3.4.3. Status (STO-ST3): Bus cycle status code, STO least significant. Sec. 3.4.2. Encodings are: 4.1 NS32C032 PIN DESCRIPTIONS The following is a brief description of all NS32C032 pins. The descriptions reference portions of the Functional DesCription. Sec. 3 . Unless otherwise indicated reserved pins should be left open. 0000 - Idle: CPU Inactive on Bus. 0001 - Idle: WAIT Instruction. 0010 - (Reserved). 0011 - Idle: Waiting for Slave. 0100 -Interrupt Acknowledge, Master. 0101 -Interrupt Acknowledge, Cascaded. 0110 - End of Interrupt, Master. 0111 - End of Interrupt, Cascaded. 1000 - Sequential Instruction Fetch. 1001 - Non-Sequential Instruction Fetch. 1010 - Data Transfer. 1011 - Read Read-Modify-Write Operand. 1100 - Read for Effective Address. 1101 - Transfer Slave Operand. 1110 - Read Slave Status Word. 1111 - Broadcast Slave 10. 4.1.1 Supplies Logic Power (VCCL1, 2): +5V positive supply. Buffers Power (VCCB1, 2): + 5V positive supply. Logic Ground (GNDL 1, GNDL2): Ground reference for onchip logic. Buffer Grounds (GNDB1, GNOB2, GNOB3): Ground references for on-chip drivers. 4.1.2 Input Signals Clocks (PHI1, PHI2): Two-phase clocking signals. Sec. 3.2. Ready (ROY): Active high. While ROY is inactive, the CPU extends the current bus cycle to provide for a slower memory or peripheral reference. Upon detecting ROY active, the CPU terminates the bus cycle. Sec. 3.4.1. Hold Request (HOLD): Active low. Causes the CPU to release the bus for DMA or multiprocessing purposes. Sec. 3.6. Hold Acknowledge (HLOA): Active low. Applied by the CPU in response to HOLD input, indicating that the bus has been released for DMA or multiprocessing purposes. Sec. 3.6. User/Supervisor (U/S): User or Supervisor Mode status. Sec. 3.7. High state indicates User Mode, low indicates Supervisor Mode. Sec. 3.7. Nole 1: FiQi]j must not be asserted until HLDA from a previous FfOi])IHLDA sequence is deasserted. Nole 2: If the FfOi]) signal is generated asynchronously, it's set up and hold times may be violated. In this case it is recommended to synchronize it with CTTL to minimize the possibility of metastable states. Interlocked Operation (ILO): Active low. Indicates that an interlocked instruction is being executed. Sec. 3.7. Program Flow Status (PFS): Active low. Pulse indicates beginning of an instruction execution. Sec. 3.7. The CPU provides only one synchronization stage to minimize the R05A latency. This is to avoid speed degradations in cases of heavy FfOi]) activity (i.e., DMA controller cycles interleaved with CPU cycles.) Interrupt (I NT): Active low. Maskable Interrupt request. Sec. 3.8. 4.1.4 Input-Output Signals Address/Data 0-23 (AOO-A023): Multiplexed Addressl Data information. Bit 0 is the least significant bit of each. Sec. 3.4. Data Bits 24-31 (024-031): The high order 8 bits of the data bus. Address Translation/Slave Processor Control (AT/ SPC): Active low. Used by the CPU as the data strobe output for Slave Processor transfers; used by Slave Processors to acknowledge completion of a slave instruction. Sec. 3.4.6; Sec. 3.9. Sampled on the riSing edge of Reset pulse as Address Translation Strap. Sec. 3.5.1. In non-memory-managed systems, this pin should be pulled-up to Vee through a 10 kO resistor. Data Strobe/Float (OS/FLT): Active low. Data Strobe output, Sec. 3.4, or Float Command input, Sec. 3.5.3. Pin function is selected on AT/SPC pin, Sec. 3.5.1. Non-Maskable Interrupt (NMI): Active low. Non-Maskable Interrupt request. Sec. 3.8. Reset/Abort (RST/ABT): Active low. If held active for one clock cycle and released, this pin causes an Abort Command, Sec. 3.5.4. If held longer, it initiates a Reset. Sec. 3.3. 4.1.3 Output Signals Address Strobe (ADS): Active low. Controls address latches: indicates start of a bus cycle. Sec. 3.4. Data Direction In (ODIN): Active low. Status signal indicating direction of data transfer during a bus cycle. Sec. 3.4. 2-214 Z tn w 4.0 Device Specifications (Continued) N All Input or Output Voltages with Respect to GND Power Dissipation 4.2 ABSOLUTE MAXIMUM RATINGS If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Temperature Under Bias O'C to + 70'C Storage Temperature -65'C to + 150'C n -0.5Vto +7V 1.5 Watt Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. VIH Parameter Conditions Max Units Vee +0.5 V V Vil Low Level Input Voltage -0.5 0.8 VeH High Level Clock Voltage PHI1, PHI2 pins only 0.85 Vee Vee +0.5 V Vel Low Level Clock Voltage PHI1, PHI2 pins only -0.5 0.10 Vee V VeRT Clock Input Ringing Tolerance PHI1, PHI2 pins only -0.5 0.6 V VOH High Level Output Voltage IOH = -400/LA VOL Low Level Output Voltage IOl = 2mA IllS AT ISPC Input Current (low) VIN = O.4V, AT ISPC in input mode II Input Load Current o ,,; VIN ,,; Vee, All inputs except Il Leakage Current Output and I/O Pins in TRI-STATElinput Mode 0.4 ,,; VOUT ,,; Vee Active Supply Current lOUT = 0, TA = 25'C Icc VCC82 0.10 Vee V 0.05 1.0 mA -20 20 /LA -20 20 /LA 100 mA 70 gsUUUUUUUUUUUUUUUl!l~ :5 GNDL2 :::J PHil ::J ::J PHI2 V 0.85 Vee ~ C iiiiiii::J VCCl2 ::J NS32C032 iDs :::II CPU C C C C C AD22 AD21 ADZU AD19 AD18 AD17 AU16 AD15 ADI. U/i :II RESERVED ::. C AD13 C AD12 RE~IIV!!! ::. C ADll ~E:: =5p RST/AIl RESERVED THR::U::E: !~~~c:s~~~ I:J C ~1I1 n n n n n n n n n n n n n n n 1iI~ AD10 AD9 ADa AD7 AD6 TL/EE/9160-2 Bottom View FIGURE 4-1. NS32C032 Connection Diagram Order Number NS32C032-10E, NS32C032-15E, NS32C032-10Vor NS32C032-15V See NS Package Number E6SB or V6SA 2-215 N n o ..... 2.0 PHI1, PHI2, AT/SPC Z tn w ~ Typ Min High Level Input Voltage ..... o ..... w 4.3 ELECTRICAL CHARACTERISTICS TA = 0' to + 70'C, Vee = 5V ± 5%, GND = OV Symbol e~ en 4.0 Device Specifications (Continued) 4.4 SWITCHING CHARACTERISTICS ABBREVIATIONS: 4.4.1 Definitions L.E. - leading edge R.E. - rising edge All the timing specifications given in this section refer to 2.OV on the rising or falling edges of the clock phases PHI1 and PHI2; to 15% or 85% of Vee on all the CMOS output signals, and to 0.8V or 2.OV on all the TTL input signals as illustrated in Figures 4-2 and 4-3 unless specifically stated otherwise. T.E. - trailing edge F.E. - falling edge PHln SIG1 [- - [ SIG1 [ 2.0V O.BV " -------_. t SlG1I I 2.0V 2.0V SIG2 [ [ SIG2 [ PHln lslGll - tSIG2h /i lslG2h ------------.- TLlEEI9160-44 • "--0715V;c· FIGURE 4-3. Timing Specification Standard (TTL Input Signals) -±~~5!£c________ • TLlEE19160-43 FIGURE 4-2. Timing Specification Standard (CMOS Output Signals) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32C032-10, NS32C032-15 Maximum times assume capacitive loading of 100 pF. Name Figure Description Reference/Conditions NS32C032-10 NS32C032-15 Min Min Max tALY 4-4 Address bits 0-23 valid after R.E., PHI1 T1 tALh 4-4 Address bits 0-23 hold after R.E., PHI1 Tmmu or T2 toy 4-4 Data valid (write cycle) after R.E., PHI1 T2 tDh 4-4 Data hold (write cycle) afterR.E., PHI1 nextT1 orTi 0 0 ns tALADSs 4-5 Address bits 0-23 setup before ADS T.E. 25 20 ns tALADSh 4-10 Address bits 0-23 hold after ADS T.E. 15 tALI 4-5 Address bits 0-23 floating (no MMU) after R.E., PHI1 T2 25 20 ns tADf 4-5 Data bits 024-031 floating (no MMU) after R.E., PHI1 T2 25 20 ns tALMf 4·9 Address bits 0-23 floating (with MMU) after R.E., PHI1 Tmmu 25 20 ns tADMf 4·9 Data bits 21-31 floating (with MMU) after R.E., PHI1 Tmmu 25 20 ns tBEY 4-4 BEn signals valid after R.E., PHI2 T4 60 45 ns tSEh 4-4 BEn signals hold after R.E., PHI2 T4 orTi tSTy 4-4 Status (STO-ST3) valid after R.E., PHI1 T4 (before T1, see note) 35 ns tSTh 4-4 Status (STO-ST3) hold after R.E., PHI1 T4 (after T1) 2-216 40 Units Max 5 35 5 50 35 10 0 0 0 ns ns 0 45 ns ns ns ns 4.0 Device Specifications (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32C032-8, NS32C032-10 (Continued) Name Figure Reference! Conditions Description NS32C032-10 Min Max NS32C032-15 Min 50 Units Max tOOINv 4-5 ODIN signal valid after R.E., PHI1 T1 tOOINh 4-5 ODIN signal hold after R.E., PHI1 next T1 or Ti tAOSa 4-4 ADS signal active (low) after RE., PHI1 T1 35 26 tAOSia 4-4 ADS signal inactive after R.E., PHI2 T1 40 30 tAOSw 4-4 ADS pulse width at 15% Vcc (both edges) tOSa 4-4 OS signal active (low) after RE., PHI1 T2 40 30 ns 35 0 0 30 ns ns 25 ns ns ns tOSia 4-4 OS signal inactive after RE., PHI1 T4 40 30 ns tALI 4-6 ADO-AD23 floating (caused by HOLD) after RE., PHI1 T1 25 20 ns tAO! 4-6 024-031 floating (caused by HOLD) after R.E., PHI1 T1 25 20 ns toS! 4-6 OS floating (caused by HOLD) after R.E., PHI1 Ti 50 40 ns tAOS! 4-6 ADS floating (caused by HOLD) after RE., PHI1 Ti 50 40 ns tBE! 4-6 BEn floating (caused by HOLD) after RE., PHI1 Ti 50 40 ns tOOIN! 4-6 ODIN floating (caused by HOLD) after RE., PHI1 Ti 50 40 ns tHLOAa 4-6 HLDA signal active (low) after R.E., PHI1 Ti 30 25 ns ns tHLOAia 4-8 HLDA signal inactive after RE., PHI1 Ti 40 30 tOSr 4-8 OS signal returns from floating (caused by HOLD) after RE., PHI1 Ti 55 40 ns tAOSr 4-8 ADS signal returns from floating (caused by HOLD) after R.E., PHI1 Ti 55 40 ns tBEr 4-8 BEn signals return from floating (caused by HOLD) after R.E., PHI1 Ti 55 40 ns tOOINr 4-8 ODIN signal returns from floating (caused by HOLD) after RE., PHI1 Ti 55 40 ns tOOIN! 4-9 ODIN signal floating (caused by FL after FLT F.E. 55 50 ns tOOINr 4-10 ODIN signal returns from floating (caused by FL after FLT RE. 40 30 ns tspca 4-13 SPC output active (low) after R.E., PHI1 T1 35 26 ns tSPCia 4-13 SPC output inactive after R.E., PHI1 T4 35 26 ns n n tSPCn! 4-15 SPC output nonforcing after R.E., PHI2 T4 30 25 ns tov 4-13 Data valid (slave processor write) after R.E., PHI1 T1 50 35 ns tOh 4-13 Data hold (slave processor write) after RE., PHI1 nextT10rTi 0 0 ns tPFSw 4-18 PFS pulse width at 15% VCC (both edges) 50 40 ns 2-217 fII 4.0 Device Specifications (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32C032-10, NS32C032-15 (Continued) Name Figure Reference/ Conditions Description NS32C032-10 Max Min NS32C032-15 Min Units Max tPFSa 4-18 PFS pulse active (low) after R.E., PHI2 40 35 ns tPFSia 4-18 PFS pulse inactive after R.E., PHI2 40 35 ns tlLOs 4-20a ILO signal setup before R.E., PHI1 T1 of first interlocked read cycle 50 35 ns tlLOh 4-20b ILO Signal hold after R.E., PHI1 T3 of last interlocked write cycle 10 7 ns tlLOa 4-21 j[(j Signal active (low) after R.E., PHI1 35 30 ns tlLOia 4-21 ILO Signal inactive after R.E., PHI1 35 30 ns tusv 4-22 U/S Signal valid after R.E., PHI1 T4 35 30 tUSh 4-22 U/S signal hold after R.E., PHI1 T4 8 6 ns tNSPF 4-19b Nonsequential fetch to next PFS clock cycle after R.E., PHI1 T1 4 4 tcp tpFNS 4-19a PFS clock cycle to next non-sequential fetch before R.E., PHI1 T1 4 4 tcp ns Last operand transfer 0 0 before R.E., PHI1 T1 of first tcp of an instruction to next of first bus PFS clock cycle cycle of transfer Note: Every memory cycle starts with T4, during which Cycle Status is applied. If the CPU was idling, the sequence will be: ..... Ti, T4, T1 ... ". If the CPU wes not Idling, the sequence will be:" ... T4, T1 ... ". tLXPF 4-29 4.4.2.2 Input Signal Requirements: NS32C032-10, NS32C032-15 Name Figure Description Reference/Conditions NS32C032-10 NS32C032-15 Min Min Max Units Max tPWR 4-25 Power stable to RSTR.E. after Vcc reaches 4.5V 50 50 }Jos tOls 4-5 Data in setup (read cycle) before F.E., PHI2 T3 15 10 ns tOlh 4-5 Data in hold (read cycle) after R.E., PHI1 T4 3 3 ns tHLDa 4-6 HOLD active (low) setup time (see note) before F.E., PHI2 TX1 25 17 ns tHLDia 4-8 HOLD inactive setup time before F.E., PHI2 Ti 25 17 ns tHLDh 4-6 HOLD hold time after R.E., PHI1 TX2 0 0 ns tFLTa 4-9 FLT active (low) setup time before F.E., PHI2 Tmmu 25 17 ns tFLTia 4-10 FLT inactive setup time before F.E., PHI2 T2 25 17 ns tRDYs 4-11,4-12 ROY setup time before F.E., PHI2 T2 or T3 15 10 ns tRDYh 4-11,4-12 ROY hold time after F.E., PHI1 T3 5 5 ns tABTs 4-23 ABT setup time (FLT inactive) before F.E., PHI2 Tmmu 20 13 ns tABTs 4-24 ABT setup time (FLTaclive) before F.E., PHI2 T, 20 13 ns tABTh 4-23 ABT hold time after R.E., PHI1 0 0 ns 2-218 z (J) 4.0 Device Specifications (Continued) Co) I\) oo 4.4.2.2 Input Signal Requirements NS32C032·10, NS32C032·15 (Continued) Co) Name Figure Referencel Conditions Description NS32C032·10 NS32C032·15 Min Min Max Units Max tRSTs 4-25,4-26 tRSTw 4-26 RST pulse width at 0.8V (both edges) 64 64 tcp tiNTs 4-27 INT setup time before F.E., PHil 20 15 ns tNMlw 4-28 NMI pulse width at O.8V (both edges) 70 70 ns tOls 4-14 Data setup (slave read cycle) before F.E., PHI2 T1 15 10 ns tOlh 4-14 Data hold (slave read cycle) after R.E., PHI1 T4 3 3 ns tSPcd 4-15 SPC pulse delay from slave after R.E., PHI2 T4 30 25 ns RST setup time before F.E., PHil 10 8 ns tspcs 4-15 SPC setup time before F.E., PHI1 30 25 ns tspCw 4-15 SPC pulse width from slave processor (async input) at 0.8V (both edges) 25 20 ns tATs 4-16 AT ISPC setup for address translation strap before R.E., PHI1 of cycle during which RST pulse is removed 1 1 tcp tATh 4-16 AT ISPC hold for address translation strap after F.E., PHI1 of cycle during which RST pulse is removed 2 2 tcp ~ ..... o ....... Z (J) Co) I\) oo Co) I\) ..... U1 I Note: This setup time is necessary to ensure prompt acknowledgement via HLDA and the ensuing floating of CPU off the buses. Note that the time from the receipt of the HOLD signal unlilthe CPU floats is a funcUon of the time HOLD signal goes low, the state of the ROY input (in MMU systems), and the length of the current MMU cycle. 4.4.2.3 Clocking Requirements: NS32C032·10, and NS32C032·15 Name Figure Description Referencel Conditions NS32C032·10 NS32C032·15 Min Max Min Max 100 250 66 250 Units tcp 4-17 Clock Period R.E., PHI1, PHI2 to next R.E., PHI1, PHI2 tCLw(1,2) 4-17 PHI1, PHI2 Pulse Width At 2.0V on PHI1, PHI2 (Both Edges) 0.5tcp -10ns 0.5 tcp -6ns tCLh(l,2) 4-17 PHI1, PHI2 High Time At 90% Vccon PHI1, PHI2 O.5tCp -15ns 0.5 tcp -10 ns tcLl(1,2) 4-17 PHI1. PHI2 Low Time At15% Vccon PHI1. PHI2 0.5 tcp -6ns 0. 5tcp -5ns tnOVL(l,2) 4-17 Non-Overlap Time At15% Vcc on PHI1. PHI2 -2 2 -2 2 ns Non-Overlap Asymmetry At15% Vcc on PHI1. PHI2 -3 3 -3 3 ns At2.0V on PHI1. PHI2 -5 5' -3 3 ns tnOVLas (tnOVlJl) -tnOVL(2» tCLwas PHI1. PHI2 Asymmetry (tCLw(l) - tCLw(2» 2-219 ns ns fI .... U) r-------------------------------------------------------------------------------------~ ~ 4.0 Device Specifications ~ 4.4.3 Timing Diagrams a &J z Ci .... T4 OR TI ~ CO) o ~en z T1 I PHil [ PHI2 [ ADO-AD23 [ n 1lb1Jl: K' ADDRESS I -, T2 I I - T3 IL - IlX ) DATA OUT -IDy tDli ) DATA OUT II~AD~W tADS. ~ IIEh W r---< ~ tSTv VALID I -1 IIEV iiiiiN[ - T4 ~!P X J X t-: IADSls D24-D31 [ B'EO-m[ I (HIGH) VALID STO-3 [ tSTh N IDSS k-D Cl NEXT / ~ 'f-IDSls (HIGH) I I TLlEE/9160-45 FIGURE 4-4. Write Cycle T4 OR TI PHil [ I I -, T2 T1 roo- I T3 X ADDRESS D24-D31 [ X ADDRESS Ao§[ ,I )ro' ------ ~, ------ T4 i-- PHIZ [ ADo-AD23 [ I ~ ~ JL - __ -( OATAIN ---( t::l: t-!Dlh DAT~IN --lAD! ALADSa BEo-iiEi [ DiiiN[ VALID / ~ loolNv ---lIDOINh VALID ST0-3 [ iiS[ NE:IA~~~LE '\. ROY [ (HIGH) TLlEE/9160-46 FIGURE 4-5. Read Cycle 2-220 r--------------------------------------------------------------------------, 4.0 Device Specifications (Continued) TXl TX2 Z (J) W N Ti T4 Ti n «:) . w Ti N .... PHil [ ~ Z -+_---' PHI2 [ (J) W N n «:) HOLO[ H_LOA [-t____+ ____+ ____ 'DSF 'ADSI OS w !-_~IHLOAa N • .... en '--1-----+---- tDDINf TL/EE/9160-47 FIGURE 4·6. Floating by HOLD Timing (CPU Not Idle Initially). Note that whenever the CPU is not idling (not in Ti). the HOLD request (HOLD low) must be active tHLDa before the falling edge of PHI2 of the clock cycle that appears two clock cycles before T4 (TX1) and stay low until tHLDh after the rising edge of PHI1 of the clock cycle that precedes T4 (TX2) for the request to be acknowledged. PHil [ PHil [ PHI2 [ PHI2 [_+-....... HLDA [-+---+----1-' HOLD [ HLDA [ os. tDSf tADsf _ +_ _ _+-_ _-+""'ltDDINf ADS. [ DDIN - + - - - + - - - - + . . J · tSEf OS. -----.--- BrO-an [ • - - BEo-an [ - + - - - t - - - - + . . J ADO-AD23 [ . - - D24-D31 [ . - - ( FLOATING) -- - - - - -- - - -- (HIGH) ADS. [ . - DDIN (FLOATING) (FLOATING) ADO-AD23 D24-D31 [.--~ - - - - -- I t------ ~(FLOATiNG i I TL/EE/9160-49 '( FLOATiNGi FIGURE 4·8. Release from HOLD TLlEE/9160-48 FIGURE 4·7. Floating by HOLD Timing (CPU Initially idle) Note that during Ti1 the CPU is already idling. 2-221 • .... r---------------------------------------------------------------------------------, ~ c.:. 8 N ~ Z ..... ....o c.:. C') o o N C') (/) z 4.0 Device Specifications (Continued) CPU STATES T1 MMUSTATES [ 11 TMMU Tt Tt PHil PHI2 [ m[ ADO-AD23 [ (CPU) D24-D31 [ (CPU) ADS [ (CPU) PAV [ (MMU) iiiiiN[ BEO-iiii [ TUEE/9160-50 FIGURE 4-9. FLT Initiated Float Cycle Timing T2 Tf CPU STATES T3 T4 Tmmu MMU STATES PHil [ PHI2 [-1-----1 ,---~~--------_+--------4--------- FLY [ (MMU) 1 AI6-23 [ (CPU) - (FLOAfiN:I;VENBYMMu) toDINr 6iiiN[ (CPU) AoS[ (CPU) m-_[~ ____-4______~____~_____ TL/EE/9160-51 FIGURE 4-10. Release from FLT Timing Note that when FLTis deasserted the CPU restarts driving DDIN before the MMU releases it. This, however, does not cause any conflict, since both CPU and MMU force DDIN to the same logic level. TLlEE/9160-52 FIGURE 4-11. Ready Sampling (CPU Initially READY) 2-222 z en Co) 4.0 Device Specifications (Continued) I\) o o Co) I I I ~ ..... o I ....... :~~ z en Co) I\) oo . Co) I\) ~ RDV[ ..... (II TL/EE/9160-53 FIGURE 4·12. Ready Sampling (CPU Initially NOT READY) I I T1 T4 I I PHI1[~ T1 I T4 I PHI1[~ tOth PHI2 [ PHI2 [ ADO-15 [ ADIl-15 [ SPe[ s.c[ (CPU) DffiN[-+~............+-............-+-S~3 [-+................+-J,__....-+_ DDiN[ STG-3 [ AoS[ AoS[ (HIGH) I TL/EE/9160-55 TUEE/9160-54 FIGURE 4·14. Slave Processor Read Timing FIGURE 4·13. Slave Processor Write Timing T1 T4 PHil [ • PHI2 [ SPC [ (rROM CPU) (rROM SLA~E1 [ . -------- ------- ------ TL/EE/9160-56 FIGURE 4·15. SPC Timing After transferring last operand to a Slave Processor, CPU turns OFF driver and holds SPC high with internal 5 kO pull up. TL/EE/9160-57 FIGURE 4·16. Reset Configuration Timing 2·223 ....• '" II) C") «:) 4.0 Device Specifications (Continued) o '" ~ z ...... «:) .... PHil [ ~ C") «:) ~ C") (J) z PHI2 [ TL/EE/9160-5B FIGURE 4-17. Clock Waveforms PHI2[~ruu ~[~~ TL/EE/9160-59 FIGURE 4-18. Relationship of PFS to Clock Cycles T1 PHil [ ~[b'----J/ s~ [ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ...J CODE 1001 TL/EE/9160-60 FIGURE 4-19a. Guaranteed Delay, PFS to Non-Sequential Fetch I Tl I T2 I ••• I I I I PHllL[LfLJl-1{LflJL AoS[ s~ [ CODE 1001 +-----~}--~---- INSPF TL/EE/9160-61 FIGURE 4-19b. Guaranteed Delay, Non-Sequential Fetch to PFS 2-224 z en Co) 4.0 Device Specifications (Continued) N o C) Co) I 13 OR TI I T40RTI I Tl 12 13 ~ ...... T4 C) ...... z en Co) N o C) Co) ~ ...... ADS [ U1 ILO[ TLlEE/9160-62 FIGURE 4-20a. Relationship of ILO to First Operand Cycle of an Interlocked Instruction I T3 OR T; I T40RTI I T1 12 T3 T4 iD[ ________________t-____________-+' TL/EE/9160-63 FIGURE 4-20b. Relationship of ILO to Last Operand Cycle of an Interlocked Instruction til TL/EE/9160-64 FIGURE 4-21. Relationship of ILO to Any Clock Cycle I T30RT; I T40RTI I T1 T2 T3 T4 PHil [ AiiS[ U/S[ """''''''-LI.,",",,¥, 1\-__+-____________________+'1 TLlEE/9160-65 FIGURE 4-22. U/S Relationship to Any Bus Cycle - Guaranteed Valid Interval 2-225 .,... U) . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , N CO) 4.0 Device Specifications (Continued) (;) o N CO) T1 tn I Tmmu n T2 Z ~ .,... PHil [ N CO) (;) o N CO) tn Z Tl/EE/9160-66 FIGURE 4-23. Abort Timing, FLT Not Applied PHil [ PHIZ [ OS/FtT [ -r----+---+---++-.....J TlIEE/9160-67 FIGURE 4-24. Abort Timing, FLT Applied vee PHil [ I.o----------I\-- --1------ RST/ffi[ _ _ _ _ _ _ _ _ _ _ _ _ _\\--1 Tl/EE/9160-66 FIGURE 4-25. Power-On Reset PHll[~JLfl- "',~[ ~ 1RSTSrII ..... Tl/EE/9160-69 FIGURE 4-26. Non-Power-On Reset 2-226 z (f) 4.0 DevIce Specifications (Continued) c.,) I\) n o ....o. c.,) I\) PHI1[JULrL ..... ~tINT. iNr[ Z ~ (f) NM{ c.,) I\) TL/EE/9160-71 TL/EE/9160-70 FIGURE 4-28. NMllnterrupt Signal Timing FIGURE 4-27. INT Interrupt Signal Detection ARST BUS CYCLE T1 12 T3 NEXT T4 TlorTI I TL/EE/9160-72 FIGURE 4-29. Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction Note: In a transfer of a Read-Modify-Write type operand, this is the Read transfer, displaying RMW Status (Code 1011). 2-227 n o . c.,) I\) .... en ~ ,... ,--------------------------------------------------------------------------, N Appendix A: Instruction Formats o NOTATIONS C") ~ C") tn Z C; ,... N C") 8 C'I C") tn Z Configuration bits, in SETCFG: I I I Fill i = Integer Type Field C B = 00 (Byte) W = 01 (Word) D = 11 (Double Word) f= Floating Point Type Field F = 1 (Std. Floating: 32 bits) L = 0 (Long Floating: 64 bits) c= Custom Type Field D = 1 (Double Word) Q = 0 (Quad Word) op = Operation Code Valid encodings shown with each format. gen, gen 1, gen 2 = General Addressing Mode Field See Sec. 2.2 for encodings. reg= General Purpose Register Number cond = Condition Code Field 0000 = EQual: Z = 1 0001 = Not Equal: Z = 0 0010 = Carry Set: C = 1 0011 = Carry Clear: C = 0 0100 = Higher: L = 1 0101 = Lower or Same: L = 0 0110 = Greater Than: N = 1 0111 = Less or Equal: N = 0 1000 = Flag Set: F = 1 1001 = Flag Clear: F = 0 1010 = LOwer: L = 0 and Z = 0 1011 = Higher or Same: L = 1 orZ = 1 1100 = Less Than: N = 0 and Z = 0 1101 = Greater or Equal: N = 1 or Z = 1 1110 = (Unconditionally True) 1111 = (Unconditionally False) 7 11' 0' l' 01 FormatO (BR) Bcond 7 0 ;p' 10' 0' l' 01 Format 1 BSR RET CXP RXP RETT RETI SAVE RESTORE cond: Condition Code (above), in Scond. areg: CPU Dedicated Register, in LPR, SPR. 0000 = US 0001 - 0111 = (Reserved) 1000 = FP 1001 = SP 1010 = SB 1011 = (Reserved) 1100 = (Reserved) 1101 = PSR 1110 = INTBASE 1111 = MOD ADDQ CMPQ SPR Scond Options: in String Instructions U/W 0 1 co'nd' short= Short Immediate value. May contain quick: Signed 4-bit value, in MOVQ, ADDQ, CMPQ,ACB. I M mreg: NS32082 Register number, in LMR, SMR. 0000 = BPRO 0001 = BPR1 0010 = (Reserved) 0011 = (Reserved) 0100 = (Reserved) 0101 = (Reserved) 0110 = (Reserved) 0111 = (Reserved) 1000 = (Reserved) 1001 = (Reserved) 1010 = MSR 1011 = BCNT 1100 = PTBO 1101 = PTB1 1110 = (Reserved) 1111 = EIA I BIT I T = Translated B = Backward U/W = 00: None 01: While Match 11: Until Match 2-228 -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 15 ,, 1 gen ENTER EXIT NOP WAIT DIA FLAG SVC BPT -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 al7 , , 'sh~rt 1 Format 2 -000 ACB -001 MOVQ -010 LPR -011 op 0 11 ' 1 ' 1 -100 -101 -110 z en Co) Appendix A: Instruction Formats (Continued) 15 I ,,,, gen SI7 N S7 ,0 1 1 1 1 1I i I "op I"" I Format 3 CXPD -0000 ADJSP BICPSR -0010 JSR JUMP -0100 CASE BISPSR -0110 Trap (UND) on XXX1, 1000 -1010 -1100 -1110 , , , , , ,SI7, , , , I gen 1 I gen2 I op 15 0 0 I 0 0 Co) N .... 0 I 1 0 0 1 1 1 0 7 MOVM CMPM INSS EXTS MOVXBW MOVZBW MOVZiD MOVXiD Format -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 EXT CVTP INS CHECK MOVSU MOVUS FormatS -000 INDEX -001 FFS -010 -011 -110,reg = 001 -110, reg = 011 MUL MEl Trap (UND) DEI QUO REM MOD DIV ....... Z en Co) N -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 0 0 Co) N .... I UI Format 4 ADD CMP BIC AD DC MOV OR -0000 -0001 -0010 -0100 -0101 -0110 SUB AD DR AND SUBC TBIT XOR -1000 -1001 -1010 -1100 -1101 -1110 TLlEE/9160-73 0 i o0 0 0 1 1 1 0 0 Format 5 MOVS -0000 SETCFG CMPS -0001 SKPS Trap (UND) on 1XXX, 01XX -0010 -0011 1 1 1 1 1 0 0 o0 ROT ASH CBIT CBITI Trap (UND) LSH SBIT SBITI Format 6 -0000 NEG -0001 NOT Trap (UND) -0010 -0011 SUBP -0100 ABS -0101 COM IBIT -0110 -0111 ADDP -100 -1 01 1 1 1 0 MOVif LFSR MOVLF MOVFL Format 9 ROUND -000 -001 TRUNC SFSR -010 -011 FLOOR -100 -101 -110 -111 0 ---I I I I I I I I 1 ___ 0 1 0 1 1 1 1 0 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 TLlEE/9160-77 Format 10 Trap (UND) Always 2-229 • .... r---------------------------------------------------------------------------------, ~ ~ Appendix A: Instruction Formats (Continued) 8 o ~ U) 16115 1 1 1 1 0 z ...... .... o C") 8 N C") U) z 10 Byte Operation Word Format 11 N ADD! MOV! CMP! Trap (SLAVE) SUB! NEG! Trap (UNO) Trap (UNO) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 DIV! Trap (SLAVE) Trap (UNO) Trap (UNO) MUll ABS! Trap (UNO) Trap (UNO) Format 15 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 7 (Custom Slave) Operation Word Format nnn 000 Format 15.0 0 ---I I I I I I I I 1 ___.1 1 1 1 1 1 1 O. CATSTO CATST1 TLIEE19160-75 -0000 -0001 LCR SCR -0010 -0011 Format 12 Trap (UNO) on all others Trap (UNO) Always o 7 -'-1 I I I I I I I ___ 1 0 0 1 1 1 1 0 1 001 TLIEE19160-76 Format 13 Format 15.1 Trap (UNO) Always o i 000 1 1 1 0 CCV3 LCSR CCV5 CCV4 Format 14 RDVAL -0000 WRVAL -0001 Trap (UNO) on 01 XX, 1XXX LMR SMR -000 -001 -010 -011 CCV2 CCV1 SCSR CCVO -100 -101 -110 -111 23 -0010 -0011 101 gen 1 Format 15.5 CCALO CMOVO CCMPO CCMP1 CCAL1 CMOV2 Trap (UNO) Trap (UNO) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 If nnn ~ 010,011,100,110,111 then Trap (UNO) Always 2-230 CCAL3 CMOV3 Trap (UNO) Trap (UNO) CCAL2 CMOV1 Trap (UNO) Trap (UNO) -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 z en w Appendix A: Instruction Formats (Continued) 7 ---I N 7 0 I I I I I I I ___ 0 1 0 1 1 1 1 0 1 Format 16 Format 19 0 "1 1 I ~ w N oo Trap (UNO) Always 7 Implied Immediate Encodings: 0 ---I " " " I ___ 1 1 0 1 1 1 1 0 1 a 7 r1 TL/EE/9160-78 o o N 1 W..... • o TLlEE/91S0-80 ....... z en ---I xIIx x"0 ___ TLlEE/9160-77 Trap (UNO) Always 0 ra W N .....• U1 Register Mark, appended to SAVE, ENTER Format 17 a 7 Trap (UNO) Always ---I n. " I I " I 1 0 0 0 1 1 1 0 1 Register Mark, appended to RESTORE, EXIT a 7 TLlEE/9160-79 ; offset; Format 18 Offset/Length Modifier appended to INSS, EXTS Trap (UNO) Always • 2-231 NS32C032·10/NS32C032-15 P[AIPH CYCLE PER XCTAl2 ~ REAOY CVlM.IT ~ _ITII XCTALI Wiifi RESET I+-~I ... WlIT' ~ NS32C201 TCU CD ::l (AOOR DECODEO OR STRAPPfD) PHil iim'1 IIIi PHI] Wi! w. ADS BE. RSH R5TO tTlL ODIN ROY AD .5' -.... aE2 H' IV 5 2V 3V 7U,lS257 4V u[1 t- ::l CD BEl ""I G I» 18 28 38 48 , . 2,\ lAo 4" J ROY PHil PHil BEO . . . . . . BE3 IlO PHil PHil I\l '" c.> I\l 'NTS I::: f (') ::l ,,~ ce en rr>o " IlO' c ce ce HOLD tn iNT OSfFLT HtDAO HOLD ROY PFS PFS UIS ADS UIS STO-ST3 ' ATISPe (241 • t ..... 12.1 . . . . . 1321 ., ADORIDATA BUS 1 (16 " NS32081 RST/ABT A2' AOO-A023 +- ADO-AD1S ~7 .... U SPC 10 KII (8 ) 12 'I~ STROBE "'0-"'23 ~ ADDRESS AOO-A023 LATCHI BUffER 12'1 , SI0-ST3 RSTfABT 024-031 PAil ADS ODIN ODIN ADO-AD23 HLOAD NS32082 spc SIO-ST1 FPU AST elK tt: It ~ ~;TA BUFFERS ~ AST ~ AOO-AD15- ~ ~~16-D31 I ifWl! ~~r1 132) AN~:~~~~!" OATA BUFFERS ODIN ~ ~31 ,321 ~ STO-STil' TLlEE/9160-81 FIGURE B-1. System Connection Diagram -- 0' ::l tn Al FLT HLOAI HlOA NS32C032 CPU CD HOLD N'" a. ;C' ~ BEl 08£ I ~ '0 '0 IT AlQU(STS ~National ~ Semiconductor NS32032-10 High-Performance Microprocessor General Description Features The NS32032 is a 32-bit, virtual memory microprocessor with a 16-MByte linear address space and a 32-bit external data bus. It has a 32-bit ALU, eight 32-bit general purpose registers, an eight-byte prefetch queue, and a slave processor interface. The NS32032 is fabricated with National Semiconductor's advanced XMOSTM process, and is fully object code compatible with other Series 32000® processors. The Series 32000 instruction set is optimized for modular, high-level languages (HLL). The set is very symmetric, it has a two address format, and it incorporates HLL oriented addressing modes. The capabilities of the NS32032 can be expanded with the use of the NS32081 floating point unit (FPU), and the NS32082 demand-paged virtual memory management unit (MMU). Both devices interface to the NS32032 as slave processors. The NS32032 is a general purpose microprocessor that is ideal for a wide range of computational intensive applications. • • • • • 32-bit architecture and implementation Virtual memory support 16-MByte linear address space 32-bit data bus Powerful instruction set - General 2-address capability - Very high degree of symmetry - Addressing modes optimized for high-level languages • Series 32000 slave processor support • High-speed XMOS technology • 68-pin lead less chip carrier Block Diagram ADD/DATA CONTROLS. STATUS MICROCODE ROM AND CONTROL LOGIC mIl CFG REGISTER REGISTER SET o o o o INTBASE SB FP SPI WORKING REGISTERS SPO PC RD Rl R2 R3 R4 R5 I I I R6 R7 I I MOD I PSR : L_________________ J TL/EE/5491-1 FIGURE 1 2-233 Table of Contents 1.0 PRODUCT INTRODUCTION 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.B NS32032 Interrupt Structure 2.0 ARCHITECTURAL DESCRIPTION 3.B.1 General Interrupt/Trap Sequence 3.B.2 Interrupt/Trap Return 3.B.3 Maskable Interrupts (The INT Pin) 3.B.3.1 Non-Vectored Mode 3.B.3.2 Vectored Mode: Non-Cascaded Case 3.B.3.3 Vectored Mode: Cascaded Case 3.B.4 Non-Maskable Interrupt (The NMI Pin) 3.B.5 Traps 3.B.6 Prioritization 3.B.7 Interrupt/Trap Sequences Detailed Flow 3.B.7.1 Maskable/Non-Maskable Interrupt Sequence 3.B.7.2 Trap Sequence: Traps Other Than Trace 3.B.7.3 Trace Trap Sequence 3.B.7.4 Abort Sequence 2.1 Programming Model 2.1.1 General Purpose Registers 2.1.2 Dedicated Registers 2.1.3 The Configuration Register (CFG) 2.1.4 Memory Organization 2.1.5 Dedicated Tables 2.2 Instruction Set 2.2.1 General Instruction Format 2.2.2 Addressing Modes 2.2.3 Instruction Set Summary 3.0 FUNCTIONAL DESCRIPTION 3.1 3.2 3.3 3.4 Power and Grounding Clocking Resetting Bus Cycles 3.9 Slave Processor Instructions 3.9.1 3.9.2 3.9.3 3.9.4 3.4.1 Cycle Extension 3.4.2 Bus Status 3.4.3 Data Access Sequences 3.4.3.1 Bit Accesses 3.4.3.2 Bit Field Accesses 3.4.3.3 Extending Multiply Accesses 3.4.4 Instruction Fetches 3.4.5 Interrupt Control Cycles 3.4.6 Slave Processor Communication 3.4.6.1 Slave Processor Bus Cycles 3.4.6.2 Slave Operand Transfer Sequences Slave Processor Protocol Floating Point Instructions Memory Management Instructions Custom Slave Instructions 4.0 DEVICE SPECIFICATIONS 4.1 Pin Descriptions 4.1.1 Supplies 4.1.2 Input Signals 4.1.3 Output Signals 4.1.4 Input/Output Signals 4.2 Absolute Maximum Ratings 4.3 Electrical Characteristics 4.4 Switching Characteristics 3.5 Memory Management Option 3.5.1 Address Translation Strap 3.5.2 Translated Bus Timing 3.5.3 The FLT (Float) Pin 3.5.4 Aborting Bus Cycles 3.5.4.1 The Abort Interrupt 3.5.4.2 Hardware Considerations 4.4.1 Definitions 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays 4.4.2.2 Input Signals Requirements 4.4.2.3 Clocking Requirements 4.4.3 Timing Diagrams Appendix A: Instruction Formats Appendix B: Interfacing Suggestions 3.6 Bus Access Control 3.7 Instruction Status List of Illustrations CPU Block Diagram ............................................................................................~:~ The General and Dedicated Registers ............................................................................ -2 ~~~1~1~:/~1 . •.• •.• •. • .• .• • .• .• •. • .• .• •. .•. • • •. .•. • •. .• •. • • •.• . ··,E Recommended Supply Connections .............................................................................. 3-2 ~=;~~~:~;~:::~~ Recommended Reset Connections, Non-Memory-Managed System ................................................ . Recommended Reset Connections, Memory-Managed System ..................................................... 3-5b 2-234 List of Illustrations (Continued) Bus Connections ...............................................................................................3-6 Read Cycle Timing .............................................................................................3-7 Write Cycle Timing .............................................................................................3-8 RDY Pin Timing ................................................................................................ 3-9 Extended Cycle Example ......................................................................................3-1 0 Memory Interface .............................................................................................3-11 Slave Processor Connections .................................................................................. 3-12 CPU Read from Slave Processor ................................................................................ 3-13 CPU Write to Slave Processor .................................................................................. 3-14 Read Cycle with Address Translation (CPU Action) ................................................................ 3-15 Write Cycle with Address Translation (CPU Action) ................................................................ 3-16 Memory-Managed Read Cycle .................................................................................. 3-17 Memory-Managed Write Cycle .................................................................................. 3-18 FLTTiming ...................................................................................................3-19 HOLD Timing, Bus Initially Idle .................................................................................. 3-20 HOLD Timing, Bus Initially Not Idle .............................................................................. 3-21 Interrupt Dispatch and Cascade Tables .......................................................................... 3-22 Interrupt/Trap Service Routine Calling Sequence ................................................................. 3-23 Return from Trap (RETT n) Instruction Flow ...................................................................... 3-24 Return from Interrupt(RET) Instruction Flow ...................................................................... 3-25 Interrupt Control Connections (16 levels) ......................................................................... 3-26 Cascaded Interrupt Control Unit Connections ..................................................................... 3-27 Service Sequence ............................................................................................3-28 Slave Processor Protocol ......................................................................................3-29 Slave Processor Status Word Format. ........................................................................... 3-30 NS32032 Connection Diagram ...................................................................................4-1 Timing Specification Standard (Signal Valid After Clock Edge) ........................................................ 4-2 Timing Specification Standard (Signal Valid Before Clock Edge) ...................................................... 4-3 Write Cycle ....................................................................................................4-4 Read Cycle ................................................................................................... .4-5 Floating by HOLD Timing (CPU Not Initially Idle) .................................................................... 4-6 Floating by HOLD Timing (CPU Initially Idle) ...................................................................... .4-7 Release from Hold .............................................................................................4-8 FLT Initiated Float Cycle Timing .................................................................................. 4-9 Release from FLT Timing ..................................................................................... .4-10 Ready Sampling (CPU Initially READY) .......................................................................... 4-11 Ready Sampling (CPU Initially NOT READy) ......................................................................4-12 Slave Processor Write Timing ...................................................................................4-13 Slave Processor Read Timing ................................................................................. .4-14 SPC Timing ................................................................................................. .4-15 Reset Configuration Timing .................................................................................... .4-16 Clock Waveforms .............................................................................................4-17 Relationship of PFS to Clock Cycles ............................................................................ .4-18 Guaranteed Delay, PFSto Non-Sequential Fetch ................................................................ 4-19a Guaranteed Delay, Non-Sequential Fetch to PFS ................................................................ 4-19b Relationship of ILO to First Operand of an Interlocked Instruction .................................................. 4-20a Relationship of ILO to Last Operand of an Interlocked Instruction .................................................. 4-20b Relationship of ILO to Any Clock Cycle .......................................................................... 4-21 U/S Relationship to any Bus Cycle - Guaranteed Valid Interval. .................................................... 4-22 Abort Timing, FLT Not Applied ................................................................................. .4-23 Abort Timing, FLT Applied ...................................................................................... 4-24 Power-On Reset ............................................................................................. .4-25 Non-Power-On Reset. ........................................................................................ .4-26 INT Interrupt Signal Detection .................................................................................. 4-27 MNI Interrupt Signal Timing ..................................................................................... 4-28 Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction ........................... 4-29 Processor System Connection Diagram ........................................................................... B-1 2-235 z w Co) N oCo) . N ..... o .... r---------------------------------------------------------------------------------, C) ~ en C') z List of Tables NS32032 Addressing Modes .................................................................................... 2-1 NS32032 Instruction Set Summary ...............................................................................2-2 Bus Access Type ..............................................................................................3-1 Access Sequence ..............................................................................................3-2 Interrupt Sequences ............................................................................................3-3 Floating Point Instruction Protocols ...............................................................................3-4 Memory Managementlnstruction Protocols ........................................................................3-5 Custom Slave Instruction Protocols ...............................................................................3-6 2-236 z en 1.0 Product Introduction The Series 32000 microprocessor family is a new generation of devices using National's XMaS and CMOS technologies. By combining state-of-the-art MaS technology with a very advanced architectural design philosophy, this family brings mainframe computer processing power to VLSI processors. • High-Level Language Support ~ oCo) • Easy Future Growth Path • Application Flexibility ....o• 2.0 Architectural Description 2.1 PROGRAMMING MODEL The Series 32000 architecture includes 16 registers on the NS32032 CPU. The Series 32000 family supports a variety of system configurations, extending from a minimum low-cost system to a powerful 4 gigabyte system. The architecture provides complete upward compatibility from one family member to another. Th!! family consists of a selection of CPUs supported by a set of peripherals and slave processors that provide sophisticated interrupt and memory management facilities as well as high-speed floating-point operations. The architectural features of the Series 32000 family are described briefly below: 2.1.1 General Purpose Registers There are eight registers for meeting high speed general storage requirements, such as holding temporary variables and addresses. The general purpose registers are free for any use by the programmer. They are thirty-two bits in length. If a general register is specified for an operand that is eight or sixteen bits long, only the low part of the register is used; the high part is not referenced or modified. Powerful Addressing Modes. Nine addressing modes available to all instructions are included to access data structures efficiently. 2.1.2 Dedicated Registers Data Types. The architecture provides for numerous data types, such as byte, word, doubleword, and BCD, which may be arranged into a wide variety of data structures. The eight dedicated registers of the NS32032 are assigned specific functions. PC: The PROGRAM COUNTER register is a pointer to the first byte of the instruction currently being executed. The PC is used to reference memory in the program section. (In the NS32032 the upper eight bits of this register are always zero.) Symmetric Instruction Set. While avoiding special case instructions that compilers can't use, the Series 32000 family incorporates powerful instructions for control operations, such as array indexing and external procedure calls, which save considerable space and time for compiled code. Memory-to-Memory Operations. The Series 32000 CPUs represent two-address machines. This means that each operand can be referenced by anyone of the addressing modes provided. This powerful memory·to-memory architecture permits memory locations to be treated as registers for all useful operations. This is important for temporary operands as well as for context switching. SPO, SP1: The SPO register points to the lowest address of the last item stored on the INTERRUPT STACK. This stack is normally used only by the operating system. It is used primarily for storing temporary data, and holding return information for operating system subroutines and interrupt and trap service routines. The SP1 register pOints to the lowest address of the last item stored on the USER STACK. This stack is used by normal user programs to hold temporary data and subroutine return information. In this document, reference is made to the SP register. The terms "SP register" or "SP" refer to either SPO or SP1, depending on the setting of the S bit in the PSR register. If the S bit in the PSR is 0 the SP refers to SPO. If the S bit in the PSR is 1 then SP refers to SP1. (In the NS32032 the upper eight bits of these registers are always zero). Memory Management. Either the NS32382 or the NS32082 Memory Management Unit may be added to the system to provide advanced operating system support func· tions, including dynamic address translation, virtual memory management, and memory protection. Large, Uniform Addressing. The NS32032 has 24-bit address pointers that can address up to 16 megabytes without requiring any segmentation; this addressing scheme provides flexible memory management without added·on expense. Modular Software Support. Any software package for the Series 32000 family can be developed independent of all other packages, without regard to individual addressing. In addition, ROM code is totally relocatable and easy to access, which allows a significant reduction in hardware and software cost. Software Processor Concept. The Series 32000 architecture allows future expansions of the instruction set that can be executed by special slave processors, acting as extensions to the CPU. This concept of slave processors is unique to the Series 32000 family. It allows software compatibility even for future components because the slave hardware is transparent to the software. With future advances in semiconductor technology, the slaves can be physically integrated on the CPU chip itself. Stacks in the Series 32000 family grow downward in memory. A Push operation pre-decrements the Stack Pointer by the operand length. A Pop operation post-increments the Stack Pointer by the operand length. FP: The FRAME POINTER register is used by a procedure to access parameters and local variables on the stack. The FP register is set up on procedure entry with the ENTER instruction and restored on procedure termination with the EXIT instruction. The frame pointer holds the address in memory occupied by the old contents of the frame pointer. (In the NS32032 the upper eight bits of this register are always zero.) S8: The STATIC BASE register points to the global variables of a software module. This register is used to support relocatable global variables for software modules. To summarize, the architectural features cited above provide three primary performance advantages and characteristics: 2-237 N 0 ..• C"\I CO) 2.0 Architectural Description (Continued) 0 C"\I GENERAL CO) en DEDICATED Z 32 32 RO 0 PROGRAM COUNTER PC 0 STAT1CBASE SB 0 FRAME POINTER FP 0 USER STACK PTR. 0 INTERRUPT STACK PTR. R1 R2 R3 SP1 } SP R4 SPO RS ·0 INTERRUPT BASE PSR MOD STATUS MODULE INTBASE RS R7 TLlEE/5491-3 FIGURE 2·1. The General and Dedicated Registers The SB register holds the lowest address in memory occupied by the global variables of a module. (In the NS32032 the upper eight bits of this register are always zero.) Z: The Z bit is altered by comparison instructions. In a comparison instruction the Z bit is set to "1" if the second operand is equal to the first operand; otherwise it is set to "0". INTBASE: The INTERRUPT BASE register holds the address of the dispatch table for interrupts and traps (Sec. 3.8). The INTBASE register holds the lowest address in memory occupied by the dispatch table. (In the NS32032 the upper eight bits of this register are always zero.) N: The N bit is altered by comparison instructions. In a comparison instruction the N bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as signed integers. Otherwise, it is set to "0". U: If the U bit is "1" no privileged instructions may be executed. If the U bit is "0" then all instructions may be executed. When U = 0 the NS32032 is said to be in Supervisor Mode; when U = 1 the NS32032 is said to be in User Mode. A User Mode program is restricted from executing certain instructions and accessing certain registers which could interfere with the operating system. For example, a User Mode program is prevented from changing the setting of the flag used to indicate its own privilege mode. A Supervisor Mode program is assumed to be a trusted part of the operating system, hence it has no such restrictions. MOD: The MODULE register holds the address of the module descriptor of the currently executing software module. The MOD register is sixteen bits long, therefore the module table must be contained within the first 64K bytes of memory. PSR: The PROCESSOR STATUS REGISTER (PSR) holds the status codes for the NS32032 microprocessor. The PSR is sixteen bits long, divided into two eight-bit halves. The low order eight bits are accessible to all programs, but the high order eight bits are accessible only to programs executing in Supervisor Mode. S: The S bit specifies whether the SPO register or SP1 register is used as the stack pOinter. The bit is automatically cleared on interrupts and traps. It may have a setting of 0 (use the SPO register) or 1 (use the SP1 register). P: The P bit prevents a TRC trap from occurring more than once for an instruction (Sec. 3.8.5.). It may have a setting of 0 (no trace pending) or 1 (trace pending). I: If I = 1, then all interrupts will be accepted (Sec. 3.B.). If I = 0, only the NMI interrupt is accepted. Trap enables are not affected by this bit. 15 817 0 IXlXIXIXII I lsi HI zI IXIXI LI Icl P U F T TLlEE/5491-4 FIGURE 2·2. Processor Status Register C: The C bit indicates that a carry or borrow occurred after an addition or subtraction instruction. It can be used with the ADDC and SUBC instructions to perform multiple-precision integer arithmetic calculations. It may have a setting of 0 (no carry or borrow) or 1 (carry or borrow). 2.1.3 The Configuration Register (CFG) T: The T bit causes program traCing. If this bit is a 1, a TRC trap is executed after every instruction (Sec. 3.8.5). Within the Control section of the NS32032 CPU is the fourbit CFG Register, which declares the presence of certain external devices. It is referenced by only one instruction, SETCFG, which is intended to be executed only as part of system initialization after reset. The format of the CFG Register is shown in Figure 2-3. L: The L bit is altered by comparison instructions. In a comparison instruction the L bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as unsigned integers. Otherwise, it is set to "0". In Floating Point comparisons, this bit is always cleared. F: The F bit is a general condition flag, which is altered by many instructions (e.g., integer arithmetic instructions use it to indicate overflow). FIGURE 2·3. CFG Register 2-238 z 2.0 Architectural Description en w (Continued) N The CFG I bit declares the presence of external interrupt vectoring circuitry (specifically, the NS32202 Interrupt Control Unit). If the CFG I bit is set, interrupts requested through the INT pin are "Vectored." If it is clear, these interrupts are "Non-Vectored." See Sec. 3.8. The MOD register contains a pOinter into the Module Table, whose entries are called Module Descriptors. A Module Descriptor contains four pointers, three of which are used by NS32032. The MOD register contains the address of the Module Descriptor for the currently running module. It is automatically up-dated by the Call External Procedure instructions (CXP and CXPD). The F, M and C bits declare the presence of the FPU, MMU and Custom Slave Processors. If these bits are not set, the corresponding instructions are trapped as being undefined. The format of a Module Descriptor is shown in Figure 2-4. The Static Base entry contains the address of static data assigned to the running module. It is loaded into the CPU Static Base register by the CXP and CXPD instructions. The Program Base entry contains the address of the first byte of instruction code in the module. Since a module may have multiple entry pOints, the Program Base pointer serves only as a reference to find them. 2.1.4 Memory Organization The main memory of the NS32032 is a uniform linear address space. Memory locations are numbered sequentially starting at zero and ending at 224 - 1. The number specifying a memory location is called an address. The contents of each memory location is a byte consisting of eight bits. Unless otherwise noted, diagrams in this document show data stored in memory with the lowest address on the right and the highest address on the left. Also, when data is shown vertically, the lowest address is at the top of a diagram and the highest address at the bottom of the diagram. When bits are numbered in a diagram, the least significant bit is given the number zero, and is shown at the right of the diagram. Bits are numbered in increasing significance and toward the left. I r- LINK TABLE ADDRESS PROGRAM BASE RESERVED .. Two contiguous bytes are called a word. Except where noted (Sec. 2.2.1), the least significant byte of a word is stored at the lower address, and the most significant byte of the word is stored at the next higher address. In memory, the address of a word is the address of its least significant byte, and a word may start at any address. 817 LSB's TL/EE/5491-5 FIGURE 2-4. Module Descriptor Format The Link Table Address points to the Link Table for the currently running module. The Link Table provides the information needed for: 01 1) Sharing variables between modules. Such variables are accessed through the Link Table via the External addressing mode. A A+1 Word at Address A Two contiguous words are called a double word. Except where noted (Sec. 2.2.1), the least significant word of a double word is stored at the lowest address and the most significant word of the double word is stored at the address two greater. In memory, the address of a double word is the address of its least significant byte, and a double word may start at any address. A+3 oj STATIC BASE A 16115 I 31 Byte at Address A 131 MSB's 24123 MOD I 01 115 MSB's o 15 817 A+2 A+1 Double Word at Address A LSB's 2) Transferring control from one module to another. This is done via the Call External Procedure (CXP) instruction. The format of a Link Table is given in Figure 2-5. A Link Table Entry for an external variable contains the 32-bit address of that variable. An entry for an external procedure contains two 16·bit fields: Module and Offset. The Module field contains the new MOD register contents for the module being entered. The Offset field is an unsigned number giving the position of the entry point relative to the new module's Program Base pOinter. 01 A For further details of the functions of these tables, see the Series 32000 Instruction Set Reference Manual. Although memory is addressed as bytes, it is actually organized as double-words. Note that access time to a word or a double-word depends upon its address, e.g. double-words that are aligned to start at addresses that are multiples of four will be accessed more quickly than those not so aligned. This also applies to words that cross a double-word boundary. ENTRY o ... Two of the NS32032 dedicated registers (MOD and INTBASE) serve as pOinters to dedicated tables in memory. ABSOLUTE AODRESS (VARIABLE) ABSOLUTE AODRESS (VARIABLE) OFFSET 2 2.1_5 Dedicated Tables o-r 31 I MODULE ( PROCEDURE) - ... FIGURE 2-5. A Sample Link Table The INTBASE register points to the Interrupt Dispatch and Cascade tables. These are described in Sec. 3.8. 2-239 TL/EE/5491-6 C) W ~ ...... C) .... C) r-------------------------------------------------------------------------------------~ W C") C) N ~ Z 2.0 Architectural Description (Continued) Byte Displacement: Range -64 to +63 2.2 INSTRUCTION SET 2.2.1 General Instruction Format SIGNED DISPLACEMENT Figure 2-6 shows the general format of a Series 32000 in· struction. The Basic Instruction is one to three bytes long and contains the Opcode and up to two 5-bit General Addressing Mode ("Gen") fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes se· lected. Word Displacement: Range -8192 to + 8191 Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before indexing. See Rgure 2-7. 1' GEN. ADDR. MODE REG. NO. Double Word DiBplacement: Range (Entire AddreBslng Space) 'I 0 7 1 TL/EE/5491-B : 1 I FIGURE 2-7. Index Byte Format ,,/- Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected address modes. Each Disp/lmm field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded with the top bits of that field, as shown in Figure 2-8, with the remaining bits interpreted as a Signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most significant byte first. Note that this is different from the memory representation of data (Sec. 2.1.4). TLlEE/5491-11 FIGURE 2-8. Displacement Encodings 2.2.2 Addressing Modes The NS32032 CPU generally accesses an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." Some instructions require additional, "implied" immediates and/or displacements, apart from those associated with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition (Sec. 2.2.3). OPTIONAL EXTENSIONS BASIC INSTRUCTION r~----------------~A~----------------~\(~-------~~ DISP2 DISPI DISP21DISPI IMPUED IMMEDIATE OPERAND(S) DISP DISP IMM IMM INDEX BYTE INDEX BYTE t t GEN ADDR MODE A GEN ADDR MODE B OPCODE j TL/EE/5491-7 FIGURE 2-6. General Instruction Format 2-240 2.0 Architectural Description (Continued) Addressing modes in the NS32032 are designed to optimally support high-level language accesses to variables. In nearly all cases, a variable access requires only one addressing mode, within the instruction that acts upon that variable. Extraneous data movement is therefore minimized. NS32032 Addressing Modes fall into nine basic types: Table 2-1 is a brief summary of the addressing modes. For a complete description of their actions, see the Instruction Set Reference Manual. 2.2.3 Instruction Set Summary Table 2-2 presents a brief description of the NS32032 instruction set. The Format column refers to the Instruction Format tables (Appendix A). The Instruction column gives the instruction as coded in assembly language, and the Description column provides a short description of the function provided by that instruction. Further details of the exact operations performed by each instruction may be found in the Instruction Set Reference Manual. Register: The operand is available in one of the eight General Purpose Registers. In certain Slave Processor instructions, an auxiliary set of eight registers may be referenced instead. Register Relative: A General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. Notations: i = Integer length suffix: Memory Space. Identical to Register Relative above, except that the register used is one of the dedicated registers PC, SP, SB or FP. These registers point to data areas generally needed by high-level languages. Memory Relative: A pointer variable is found within the memory space pointed to by the SP, SB or FP register. A displacement is added to that pointer to generate the Effective Address of the operand. B = Byte W = Word D = Double Word F = Standard Floating L = Long Floating gen = General operand. Any addressing mode can be specified. short = A 4-bit value encoded within the Basic Instruction (see Appendix A for encodings). f Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written. Absolute: The address of the operand is specified by a displacement field in the instruction. External: A pointer value is read from a specified entry of the current Link Table. To this pOinter value is added a displacement, yielding the Effective Address of the operand. Top of Stack: The currently-selected Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. Scaled Index: Although encoded as an addressing mode. Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by I, 2, 4 or 8 and adding it into the total, yielding the final Effective Address of the operand. = Floating Point length suffix: imm = Implied immediate operand. An 8-bit value appended after any addressing extensions. disp = Displacement (addressing constant): 8, 16 or 32 bits. All three lengths legal. reg = Any General Purpose Register: RO-R7. areg = Any Dedicated/Address Register: SP, SB, FP, MOD, INTBASE, PSR, US (bottom 8 PSR bits). mreg = Any Memory Management Status/Control Register. crag = A Custom Slave Processor Register (Implementation Dependent). cond = Any condition code, encoded as a 4-bit field within the Basic Instruction (see Appendix A for encodings). 2-241 II C) ..N (I) 2.0 Architectural Description (Continued) C) C'I (I) TABLE 2-1 (/) Z NS32032 Addressing Modes ENCODING Register 00000 00001 00010 00011 00100 00101 00110 00111 Register Relative 01000 01001 01010 01011 01100 01101 01110 01111 Memory Relative 10000 10001 10010 Reserved 10011 Immediate 10100 Absolute 10101 External 10110 Top of Stack 10111 Memory Space 11000 11001 11010 11011 Scaled Index 11100 11101 11110 11111 MODE ASSEMBLER SYNTAX EFFECTIVE ADDRESS Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 RegisterB Register 7 ROorFO R1 or F1 R20rF2 R3 or F3 R40rF4 R50rF5 RBorFB R7orF7 None: Operand is in the specified register Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register B relative Register 7 relative disp(RO) disp(R1) disp(R2) disp(R3) disp(R4) disp(R5) disp(RB) disp(R7) Disp + Register. Frame memory relative Stack memory relative Static memory relative disp2(disp1 (FP» disp2(disp1 (SP» disp2(disp 1(SB» Disp2 + Pointer; Pointer found at address Disp1 + Register. "SP" is either SPO or SP1 , as selected in PSR. Immediate value None: Operand is input from instruction queue. Absolute @disp Disp. External EXT (disp1) + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Disp1. Top of stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) *+disp Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] EA (mode) + Rn. EA (mode) + 2x Rn. EA (mode) + 4x Rn. EA (mode) + B X Rn. 'Mode' and 'n' are contained within the Index Byte. EA (mode) denotes the effective address generated using mode. (Reserved for Future Use) 2-242 ztJ) 2.0 Architectural Description w I\) o w I\) (Continued) TABLE 2-2 NS32032 Instruction Set Summary MOVES Format 4 2 7 7 7 7 7 4 Operation MOVi MOVQi MOVMi MOVZBW MOVZiD MOVXBW MOVXiD ADDR Operands gen,gen short,gen gen,gen,disp gen,gen gen,gen gen,gen gen,gen gen,gen Description Move a value. Extend and move a signed 4-bit constant. Move Multiple: disp bytes (1 to 16). Move with zero extension. Move with zero extension. Move with sign extension. Move with sign extension. Move Effective Address. INTEGER ARITHMETIC Format 4 2 4 4 4 6 6 7 7 7 7 7 7 7 Operation Operands Description ADDI ADDQi ADDCi SUBi SUBCi NEGi ABSi MULi QUOi REMi DIVi MODi MEIi DEli gen,gen short,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Add. Add signed 4-bit constant. Add with carry. Subtract. Subtract with carry (borrow). Negate (2's complement). Take absolute value. Multiply Divide, rounding toward zero. Remainder from QUO. Divide, rounding down. Remainder from DIV (Modulus). Multiply to Extended Integer. Divide Extended Integer. PACKED DECIMAL (BCD) ARITHMETIC Format 6 6 Operation Operands Description ADDPi SUBPi gen,gen gen,gen Add Packed. Subtract Packed. INTEGER COMPARISON Format 4 2 7 Operation Operands Description CMPi CMPQi CMPMi gen,gen short,gen gen,gen,disp Compare. Compare to signed 4-bit constant. Compare Multiple: disp bytes (1 to 16). Operation Operands Description ANDi ORi BICi XORi COMi NOTi Scondi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen Logical AND. Logical OR. Clear selected bits. Logical Exclusive OR. Complement all bits. Boolean complement: LSB only. Save condition code (cond) as a Boolean variable of size i. LOGICAL AND BOOLEAN Format 4 4 4 4 6 6 2 2-243 . ..... o C) .... ~ Cf) r-------------------------------------------------------------------------------------~ 2.0 Architectural Description ~ ~ z (Continued) TABLE 2·2 (Continued) NS32032 Instruction Set Summary (Continued) SHIFTS Format 6 6 6 Operation Operands Description LSHi ASHi ROTi gen,gen gen,gen gen,gen Logical Shift, left or right. Arithmetic Shift, left or right. Rotate, left or right. Operation Operands Description TBITi SBITi SBITII CBITi CBITli IBITi FFSi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Test bit. Test and set bit. Test and set bit, interlocked Test and clear bit. Test and clear bit, interlocked. Test and invert bit. Find first set bit BITS Format 4 6 6 6 e 6 8 BIT FIELDS Bit fields are values in memory that are not aligned to byte boundaries. Examples are PACKED arrays and records used in Pascal. "Extract" instructions read and align a bit field. "Insert" instructions write a bit field from an aligned source. Format 8 8 7 7 8 Operation Operands Description EXTi INSi EXTSi INSSi CVTP reg,gen,gen,disp reg,gen,gen,disp gen,gen,imm,imm gen,gen,imm,imm reg,gen,gen Extract bit field (array oriented). Insert bit field (array oriented). Extract bit field (short form). Insert bit field (short form). Convert to Bit Field Pointer. Operation Operands Description CHECKi INDEXi reg,gen,gen reg,gen,gen Index bounds check. Recursive indexing step for multiple-dimensional arrays. ARRAYS Format 8 8 STRINGS String instructions assign specific functions to the General Purpose Registers: Options on all string instructions are: B (Backward): Decrement string pointers after each step rather than incrementing. U (Until match): End instruction if String 1 entry matches R4. R4 - Comparison Value R3 - Translation Table Pointer R2 - String 2 Pointer W (While match): End instruction if String 1 entry does not match R4. R 1 - String 1 Pointer RO - Limit Count All string instructions end when RO decrements to zero. Format 5 Operation Operands Descriptions MOVSi MOVST options options Move String 1 to String 2. Move string, translating bytes. 5 CMPSi CMPST options options Compare String 1 to String 2. Compare translating, String 1 bytes. 5 SKPSi SKPST options options Skip over String 1 entries Skip, translating bytes for Until/While. 2-244 z 2.0 Architectural Description en Co) (Continued) N TABLE 2-2 (Continued) NS32032 Instruction Set Summary (Continued) JUMPS AND LINKAGE Format 3 0 0 3 2 3 1 3 1 Operation JUMP BR Bcond CASEi ACBi JSR BSR CXP CXPD SVC FLAG BPT ENTER EXIT RET RXP RETT RETI Operands gen disp disp gen short,gen,disp gen disp disp gen [reg Iistl,disp [reg list] disp disp disp CPU REGISTER MANIPULATION Format Operation Operands Description Jump. Branch (PC Relative). Conditional branch. Multiway branch. Add 4-bit constant and branch if non-zero. Jump to subroutine. Branch to subroutine. Call external procedure. Call external procedure using descriptor. Supervisor Call. Flag Trap. Breakpoint Trap. Save registers and allocate stack frame (Enter Procedure). Restore registers and reclaim stack frame (Exit Procedure). Return from subroutine. Return from external procedure call. Return from trap. (Privileged) Return from interrupt. (Privileged) Description SAVE RESTORE LPRi SPRi ADJSPi BISPSRi BICPSRi SETCFG [reg list] [reg list] areg,gen areg,gen gen gen gen [option list] Save General Purpose Registers. Restore General Purpose Registers. Load Dedicated Register. (Privileged if PSR or INTBASE) Store Dedicated Register. (Privileged if PSR or INTBASE) Adjust Stack Pointer. Set selected bits in PSR. (Privileged if not Byte length) Clear selected bits in PSR. (Privileged if not Byte length) Set Configuration Register. (Privileged) FLOATING POINT Format Operation Operands Description gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen gen Move a Floating Point value. Move and shorten a Long value to Standard. Move and lengthen a Standard value to Long. Convert any integer to Standard or Long Floating. Convert to integer by rounding. Convert to integer by truncating, toward zero. Convert to largest integer less than or equal to value. Add. Subtract. Multiply. Divide. Compare. Negate. Take absolute value. Load FSR. Store FSR. 1 2 2 3 3 3 5 11 9 9 9 9 9 9 11 11 11 11 11 11 11 9 9 MOVf MOVLF MOVFL MOVif ROUNDfi TRUNCfi FLOORfi ADDf SUBf MULl DIVf CMPf NEGf ABSf LFSR SFSR MEMORY MANAGEMENT Format Operation Operands Description 8 LMR SMR RDVAL WRVAL MOVSUi mreg.gen mreg,gen gen gen gen,gen 8 MOVUSi gen,gen Load Memory Management Register. (Privileged) Store Memory Management Register. (Privileged) Validate address for reading. (Privileged) Validate address for writing. (Privileged) Move a value from Supervisor Space to User Space. (Privileged) Move a value from User Space to Supervisor Space. (Privileged) 14 14 14 14 2-245 oCo) ....o~ 0 ..... N• ('I) 2.0 Architectural Description 0 TABLE 2·2 (Continued) NS32032 Instruction Set Summary (Continued) N ('I) (I) Z (Continued) MISCELLANEOUS Format Operation 1 NOP WAIT DIA Operands Description No Operation. Wait for interrupt. Diagnose. Single-byte "Branch to Self" for hardware breakpointing. Not for use in programming. CUSTOM SLAVE Format Operation Operands Description 15.5 15.5 15.5 15.5 CCALOc CCAL1c CCAL2c CCAL3c gen,gen gen,gen gen,gen gen,gen Custom Calculate. 15.5 15.5 15.5 15.5 CMOVOc CMOV1c CMOV2c CMOV3c gen,gen gen,gen gen,gen gen,gen Custom Move. 15.5 15.5 CCMPOc CCMP1c gen,gen gen,gen Custom Compare. 15.1 15.1 15.1 15.1 15.1 15.1 CCVOci CCV1ci CCV2ci CCV3ic CCV4DO CCV50D gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Custom Convert. 15.1 15.1 LCSR SCSR gen gen Load Custom Status Register. Store Custom Status Register. 15.0 15.0 CATSTO CATST1 gen gen Custom Address/Test. (Privileged) (Privileged) 15.0 15.0 LCR SCR creg,gen creg,gen Load Custom Register. (Privileged) Store Custom Register. (Privileged) 2-246 3.0 Functional Description 3.1 POWER AND GROUNDING PHil (pin 26) and PHI2 (pin 27). Their relationship to each other is shown in Figure 3-2. The NS32032 requires a single 5-volt power supply, applied on pin 1B (Vee!. Each rising edge of PHil defines a transition in the timing state ("T-State") of the CPU. One T-State represents the execution of one microinstruction within the CPU, and/or one step of an external bus transfer. See Section 4 for complete specifications of PHil and PHI2. Grounding connections are made on four pins. Logic Ground (GNDL, pin 54) is the common pin for on-chip logic, and Buffer Grounds (GNDB1, pin 52 and GNDB2, pin 16 and GNDB3, pin 60) (16) are the common pins for the output drivers. For optimal noise immunity it is recommended that GNDBI and GNDB2 be connected together through a single conductor, and GNDL be directly connected to the middle point of this conductor. All other ground connections should be made to the common line as shown in Figure 3-1. PHIl In addition to Vee and Ground, the NS32032 CPU uses an internally-generated negative voltage. It is necessary to filter this voltage externally by attaching a pair of capacitors (Fig. 3-1) from the BBG pin to ground. Recommended values for these are: C1: 1 fLF, Tantalum. C2: 1000 pF, low inductance. This should be either a disc or monolithic ceramic capacitor. PHI2 TLlEE/5491-13 FIGURE 3-2. Clock Timing Relationships As the TCU presents signals with very fast transitions, it is recommended that the conductors carrying PHil and PHI2 be kept as short as possible, and that they not be connected anywhere except from the TCU to the CPU and, if present, the MMU. A TIL Clock signal (CTIL) is provided by the TCU for all other clocking. NS32032 CPU 3.3 RESETTING The RST/ ABT pin serves both as a Reset for on-chip logic and as the Abort input for Memory-Managed systems. For its use as the Abort Command, see Sec. 3.5.4. The CPU may be reset at any time by pulling the RST / ABT pin low for at least 64 clock cycles. Upon detecting a reset, the CPU terminates instruction processing, resets its internal logic, and clears the Program Counter (PC) and Processor Status Register (PSR) to all zeroes. TUEE/5491-12 FIGURE 3-1. Recommended Supply Connections On application of power, RST / ABT must be held low for at least 50 fLsec after Vee is stable. This is to ensure that all on-chip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain 3.2 CLOCKING The NS32032 inputs clocking signals from the Timing Control Unit (TCU), which presents two non-overlapping phases of a single clock frequency. These phases are called Vcc PHIl ---f---.. . RSr/Aiii ---+----------I~...J 1-----1::501'_ - - - - - l TL/EE/5491-14 FIGURE 3-3_ Power-on Reset Requirements 2-247 o'P'" r---------------------------------------------------------------------~ ~ 3.0 Functional Description o active for not less than 64 clock cycles. The rising edge must occur while PHI1 is high. See Figures 3-3 and 3-4. The NS32201 Timing Control Unit (TCU) provides circuitry to meet the Reset requirements of the NS32032 CPU. Figure 3-5a shows the recommended connections for nonMemory-Managed system. Figure 3-5b shows the connections for a Memory-Managed system. Cf) N Cf) tJ) Z (Continued) a TL/EE/5491-15 FIGURE 3-4. General Reset Timing vcc N632201 TCU NS32032 CPU r------------., I I I RESET 1>--l-1--l--_-1--....... + ....----' I RSTI R-STO /----"""1r----l RST/ABT ,L. _____________ .JI EXTERNAL RESET (OPTIONAL) ~50J.L.ec RESET SWITCH (OPTIONAL) SYSTEM REiEr TL/EE/5491-16 FIGURE 3-5a. Recommended Reset Connections, Non-Memory-Managed System vcc N832201 TCU N832082 MMU NS32032 CPU r------------., I II I RESET 1>---1Ii-+"""1r+-~~......~----I iiSii RsTci !L. _____________ .JI EXTERNAL RESET (OPTIONAL) ~ 50~sec RESET SWITCH (OPTIONAL) TL/EE/5491-17 FIGURE 3-5b. Recommended Reset Connections, Memory-Managed System 3) To acknowledge an interrupt and allow external circuitry to provide a vector number, or to acknowledge completion of an interrupt service routine. 3.4 BUS CYCLES The NS32032 CPU has a strap option which defines the Bus Timing Mode as either With or Without Address Translation. This section describes only bus cycles under the No Address Translation option. For details of the use of the strap and of bus cycles with address translation, see Sec. 3.5. 4) To transfer information to or from a Slave Processor. In terms of bus timing, cases 1 through 3 above are identical. For timing specifications, see Sec. 4. The only external difference between them is the four-bit code placed on the Bus Status pins (STO-ST3). Slave Processor cycles differ in that separate control signals are applied (Sec. 3.4.6). The CPU will perform a bus cycle for one of the following reasons: 1) To write or read data, to or from memory or a peripheral interface device. Peripheral input and output are memorymapped in the Series 32000 family. 2) To fetch instructions into the eight-byte instruction queue. This happens whenever the bus would otherwise be idle and the queue is not already full. The sequence of events in a non-Slave bus cycle is shown below in Figure 3-7 for a Read cycle and Figure 3-8 for a Write cycle. The cases shown assume that the selected memory or interface device is capable of communicating with the CPU at full speed. If it is not, then cycle extension may be requested through the RDY line (Sec. 3.4.1). 2-248 3.0 Functional Description (Continued) A full-speed bus cycle is performed in four cycles of the PHI1 clock signal, labeled T1 through T4. Clock cycles not associated with a bus cycle are designated Ti (for "Idle"). During T1, the CPU applies an address on pins ADO-AD23. It also provides a low-going pulse on the ADS pin, which serves the dual purpose of informing external circuitry that a bus cycle is starting and of providing control to an external latch for demultiplexing Address bits 0-23 from the ADOAD23 pins. See Figure 3-6. During this time also the status signals DDIN, indicating the direction of the transfer, and BEO-BE3, indicating which of the four bus bytes are to be referenced, become valid. The T3 state provides for access time reqUirements, and it occurs at least once in a bus cycle. At the end of T2 or T3, on the falling edge of the PHI2 clock, the ROY (Ready) line is sampled to determine whether the bus cycle will be extended (Sec. 3.4.1). If the CPU is performing a Read cycle, the Data Bus (ADOAD31) is sampled at the falling edge of PHI2 of the last T3 state. See Section 4. Data must, however, be held at least until the beginning of T4. OS and RD are guaranteed not to go inactive before this paint, so the rising edge of either of them may safely be used to disable the device providing the input data. The T4 state finishes the bus cycle. At the beginning of T4, the DS, RD or WR, and TSO signals go inactive, and at the rising edge of PHI2, DBE goes inactive, having provided for necessary data hold times. Data during Write cycles remains valid from the CPU throughout T4. Note that the Bus Status lines (STO-ST3) change at the beginning of T4, anticipating the following bus cycle (if any). During T2 the CPU switches the Data Bus, ADO-AD31 to either accept or present data. It also starts the data strobe (DS), signalling the beginning of the data transfer. Associated signals from the NS32201 Timing Control Unit are also activated at this time: RD (Read Strobe) or WR (Write Strobe), TSO (Timing State Output, indicating that T2 has been reached) and DBE (Data Buffer Enable). fiCiN I--~------I 024-031 ADO-AD23 NS32032 II PHil PHI2 iiSliiU: os PHil PHI2 ADS ODIN DBE AD RDI-----------~ NS32201 WR WRI-----------~ TSo TsO~-----------. TLlEE/5491-18 FIGURE 3·6. Bus Connections 2-249 ....o r-----------------------------------------------------------------------------, ~ 3.0 Functional Description (Continued) o ~ rn I z PHil [ PHI 2 [ ADO-AD23 [ D24-D31 [ Aii§ [ STOoBT3 [ i5iiiN [ iEO-lli [ Os [ RDY [ T40RTi I NS32032 cpu BUS SIGNALS T1 T2 T3 T4 I Tl0RTI I AD [ DBE [ rso[ TL/EE/5491-20 FIGURE 3-7. Read Cycle Timing 2·250 z 3.0 Functional Description en Co) (Continued) N oCo) NS32032 CPU BUS SIGNALS T3 T4 I Tl0RTi ')) ..... I o Tl/EE/5491-19 FIGURE 3-8. Write Cycle Timing 2-251 3.0 Functional Description (Continued) 3.4.1 Cycle Extension To allow sufficient strobe widths and access times for any speed of memory or peripheral device, the NS32032 provides for extension of a bus cycle. Any type of bus cycle except a Slave Processor cycle can be extended. In Figures 3-7 and 3-8, note that during T3 all bus control signals from the CPU and TCU are fiat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the RDY (Ready) pin. At the end of T2 on the falling edge of PHI2, the RDY line is sampled by the CPU. If RDY is high, the nextT-states will be T3 and then T4, ending the bus cycle. If RDY is low, then another T3 state will be inserted after the next T -state and the RDY line will again be sampled on the falling edge of PHI2. Each additional T3 state after the first is referred to as a "WAIT STATE". See Figure 3-9. Tl T2 The RDY pin is driven by the NS32201 Timing Control Unit, which applies WAIT States to the CPU as requested on three sets of pin: 1) CWAIT (Continuous WAIT), which holds the CPU in WAIT states until removed. 2) WAIT1, WAIT2, WAIT4, WAITS (Collectively WAITn), which may be given a four-bit binary value requesting a specific number of WAIT States from 0 to 15. 3) PER (Peripheral), which inserts five additional WAIT states and causes the TCU to reshape the RD and WR strobes. This provides the setup and hold times required by most MOS peripheral interface devices. Combinations of these various WAIT requests are both legal and useful. For details of their use, see the NS32201 Data Sheet. Figure 3-10 illustrates a typical Read cycle, with two WAIT states requested through the TCU WAITn pins. T3 I (W~T) I T4 PHil PHI2 RDY TL/EE/5491-21 FIGURE 3·9. ROY Pin Timing 3.4.2 Bus Status The NS32032 CPU presents four bits of Bus Status information on pins STO-ST3. The various combinations on these pins indicate why the CPU is performing a bus cycle, or, if it is idle on the bus, then why is it idle. To acknowledge receipt of a Maskable Interrupt (on INT) it will read from address FFFE0016, expecting a vector number to be provided from the Master NS32202 Interrupt Control Unit. If the vectoring mode selected by the last SETCFG instruction was Non-Vectored, then the CPU will ignore the value it has read and will use a default vector instead, having assumed that no NS32202 is present. See Sec. 3.4.5. 0101 - Interrupt Acknowledge, Cascaded. Referring to Figures 3-7 and 3-8, note that Bus Status leads the corresponding Bus Cycle, going valid one clock cycle before T1, and changing to the next state at T4. This allows the system designer to fully decode the Bus Status and, if desired, latch the decoded signals before ADS initiates the Bus Cycle. The Bus Status pins are interpreted as a four-bit value, with STO the least significant bit. Their values decode as follows: The CPU is reading a vector number from a Cascaded NS32202 Interrupt Control Unit. The address provided is the address of the NS32202 Hardware Vector register. See Sec. 3.4.5. 0110 - End of Interrupt, Master. The CPU is performing a Read cycle to indicate that it is executing a Return from Interrupt (RETI) instruction. See Sec. 3.4.5. 0000 - The bus is idle because the CPU does not need to perform a bus access. 0001 - The bus is idle because the CPU is executing the WAIT instruction. 0010 - (Reserved for future use.) 0111 - End of Interrupt, Cascaded. The CPU is reading from a Cascaded Interrupt Control Unit to indicate that it is returning (through RETI) from an interrupt service routine requested by that unit. See Sec. 3.4.5. 0011 - The bus is idle because the CPU is waiting for a Slave Processor to complete an instruction. 0100 - Interrupt Acknowledge, Master. The CPU is performing a Read cycle. To acknowledge receipt of a Non-Maskable Interrupt (on NMI) it will read from address FFFF0016, but will ignore any data provided. 1000 - Sequential Instruction Fetch. The CPU is reading the next sequential word from the instruction stream into the Instruction 2-252 z 3.0 Functional Description PREVo CYCLE PHI2 [ N N532032 CPU BUS SIGNALS oCo) NEXT CYCLE ~ ....o I (vl~n I (vlilT) I I iL~ - iLLiLiLIL~IL IT40RTi I PHil [ en Co) (Continued) T1 I T2 I T3 T4 IT10RTi Jl Jl J J Lf J}U1U1~ ~ ~ ~ )--~ w ~ ~--- ~ ADO-AD23 [ 024-031 [ I- ~ ~ ~ ~--~ W ~ DATAIN --- V ADS [ 5T0-5T3 [ NEXT ADDR VALID .~~ V ~~ X STATUS VALID NEXT STATU 5 I~ ~~ ~ ~~ - NEXT VALID 1\ -j NS32201 Teu CYCLE EXTENSION SIGNALS t CWAiT[ %: ~ rIM t t ~ V~ ~ ~ ~ ~ ~ 'W I~ V.W W ~~ ~ W& ~ t ~[ ~ t;::f@ ~ ~I~W:~V~ W% ~ % 1ft ROY [ (TCUTOCPU) INS32201 TL BUS SIGJLS -V Ii -V DBE [ T50 [ -~ _V V \ TL/EE/5491-22 FIGURE 3-10. Extended Cycle Example Note: Arrows on CWAIT, PER, WAITn indicate pOints at which the TCU samples. Arrows on AOO-A015 and ROY indicate points at which the CPU samples. 2-253 C) ..- N C') C) N ~ Z r-------------------------------------------------------------------------------------, 3.0 Functional Description (Continued) when BEO is low. The second bank, connected to data bus pins AD8-AD15 is enabled when BE1 is low. The third and fourth banks are enabled by BE2 and BE3, respectively. See Figure 3-11. Queue. It will do so whenever the bus would otherwise be idle and the queue is not already full. 1001 - Non-Sequential Instruction Fetch. The CPU is performing the first fetch of instruction code after the Instruction Queue is purged. This will occur as a result of any jump or branch, or any interrupt or trap, or execution of certain instructions. 1010 - Data Transfer. The CPU is reading or writing an operand of an instruction. 1011 - Read RMW Operand. The CPU is reading an operand which will subsequently be modified and rewritten. If memory protection circuitry would not allow the following Write cycle, it must abort this cycle. 1100 - Read for Effective Address Calculation. The CPU is reading information from memory in order to determine the Effective Address of an operand. This will occur whenever an instruction uses the Memory Relative or External addressing mode. 1101 - Transfer Slave Processor Operand. The CPU is either transferring an instruction operand to or from a Slave Processor, or it is issuing the Operation Word of a Slave Processor instruction. See Sec. 3.9.1. TL/EE/5491-23 1110 - Read Slave Processor Status. FIGURE 3·11. Memory Interface Since operands do not need to be aligned with respect to the double-word bus access performed by the CPU, a given double-word access can contain one, two, three, or four bytes of the operand being addressed, and these bytes can begin at various positions, as determined by A1, AO. Table 3-1 lists the 10 resulting access types. The CPU is reading a Status Word from a Slave Processor. This occurs after the Slave Processor has signalled completion of an instruction. The transferred word tells the CPU whether a trap should be taken, and in some instructions it presents new values for the CPU Processor Status Register bits N, Z, L or F. See Sec. 3.9.1. TABLE 3·1 Bus Access Types Type BytesAccessed A1,AO BE3 BE2 BE1 BEO 00 1 1 1 0 01 1 0 2 10 1 3 0 11 0 1 4 00 0 0 5 2 2 01 1 0 0 6 10 1 1 0 0 ? 2 8 3 00 0 0 0 3 01 0 0 1 9 0 10 4 00 0 0 0 0 1111 - Broadcast Slave ID. The CPU is initiating the execution of a Slave Processor instruction. The ID Byte (first byte of the instruction) is sent to all Slave Processors, one of which will recognize it. From this point the CPU is communicating with only one Slave Processor. See Sec. 3.9.1. 3.4.3 Data Access Sequences The 24-bit address provided by the NS32032 is a byte address; that is, it uniquely identifies one of up to 16,777,216 eight-bit memory locations. An important feature of the NS32032 is that the presence of a 32-bit data bus imposes no restrictions on data alignment; any data item, regardless 01 size, may be placed starting at any memory address. The NS32032 provides special control Signals. Byte Enable (BEO-BE3) which facilitate individual byte accessing on a 32-bit bus. Memory is organized as four eight-bit banks, each bank receiving the double-word address (A2-A23) in parallel. One bank, connected to Data Bus pins ADO-AD? is enabled Accesses of operands requiring more than one bus cycle are performed sequentially, with no idle T-States separating them. The number of bus cycles required to transfer an operand depends on its size and its alignment. Table 3-2 lists the bus cycles performed for each situation. 2-254 ,----------------------------------------------------------------------, zU) 3.0 Functional Description (Continued) (0) I\) o .... (0) I\) TABLE 3·2 Access Sequences o Data Bus I Cycle Type Address '\ Byte 3 Byte 2 Byte 0 X X X A. Word at address ending with 11 1. 2. 4 A A+1 9 A A+3 0 o 7 A 2. S A+2 0 0 1 0 1 0 Byte 2 X 0 Byte 1 X 4 8 A A+1 0 0 Byte 0 X o 0 Byte 0 X X Byte 3 X Byte 2 X Byte 3 X Byte 2 X Byte 1 Byte 3 Byte 2 Byte 1 Byte 0 0 Byte 7 Byte 6 ByteS Byte 4 2-2SS BYTE 41 BYTE 31 BYTE 2/ BYTE 11 BYTE 0 I +- A 1 Byte 2 Byte 1 Byte 0 X X X X Byte 3 1 0 Byte 6 X Byte S X Byte 4 X X Byte 7 sl BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 0 I +- 1 Byte 1 Byte 0 X X o X X Byte 3 Byte 2 0 Byte S X Byte 4 X X Byte 7 X Byte 6 I BYTE 71 BYTE 61 BYTE 1. 4 A 0 1 1 2. 8 A+1 0 0 Other bus cycles (instruction prefetch or slave) can occur here. 1. 4 A+4 0 1 1 2. 0 8 A+S 0 X = Don't Care sl o I BYTE 71 BYTE 61 BYTE 1. A o o 1 7 2. A+2 1 o S Other bus cycles (instruction prefetch or slave) can occur here. 3. 7 A+ 4 0 0 1 4. S A+ 6 0 H. Quad word at address endIng wIth 11 X Byte 3 o I BYTE 71 BYTE 61 BYTE 1. 9 A o o o 2. A+3 Other bus cycles (instruction prefetch or slave) can occur here. 3. 9 A+ 4 0 0 0 4. 1 A+ 7 1 1 G. Quad word at address endIng wIth 10 Byte 0 X I BYTE 71 BYTE 61 BYTE SIBYTE 41 BYTE 3/BYTE 21 BYTE 11 BYTE 01 +- A 10 A o o o Other bus cycles (instruction prefetch or slave) can occur here. 2. 10 A+ 4 0 0 0 1. F. Quad word at address ending with 01 Byte 1 X IBYTE31BYTE21BYTE11BYTEOI +- A o E. Quad word at address ending with 00 X Byte 1 I BYTE 31 BYTE 21 BYTE 1 1BYTE 01 +- A 0 D. Double word at address ending with 11 1. 2. X X IBYTE31BYTE21BYTE11BYTEOI +- A C. Double word at address ending with 10 1. Byte 0 IBYTE11BYTEOI +- A o B. Double word at address ending with 01 1. 2. Byte 1 sl A BYTE 41 BYTE 31 BYTE 21 BYTE 11 BYTE 0 I +- A 0 Byte 0 X X Byte 3 X Byte 2 X Byte 1 0 Byte 4 X X Byte 7 X Byte 6 X ByteS • 3.0 Functional Description (Continued) 3.4.3.1 Bit Accesses A Sequential Fetch will be performed by the CPU whenever the Data Bus would otherwise be idle and the Instruction Queue is not currently full. Sequential Fetches are always type 10 Read cycles (Table 3-1). The Bit Instructions perform byte accesses to the byte con· taining the designated bit. The Test and Set Bit instruction (SBIT), for example, reads a byte, alters it, and rewrites it, having changed the contents of one bit. A Non-Sequential Fetch occurs as a result of any break in the normally sequential flow of a program. Any jump or branch instruction, a trap or an interrupt will cause the next Instruction Fetch cycle to be Non-Sequential. In addition, certain instructions flush the instruction queue, causing the next instruction fetch to display Non-Sequential status. Only the first bus cycle after a break displays Non-Sequential status, and that cycle depends on the destination address. 3.4.3.2 Bit Field Accesses An access to a Bit Field in memory always generates a Dou· ble-Word transfer at the address containing the least significant bit of the field. The Double Word is read by an Extract instruction; an Insert instruction reads a Double Word, modifies it, and rewrites it. Note: During non·sequential fetches, BEO-BE3 are all active regardless of the alignment. 3.4.3.3 Extending Multiply Accesses The Extending Multiply Instruction (MEl) will return a result which is twice the size in bytes of the operand it reads. If the multiplicand is in memory, the most-significant half of the result is written first (at the higher address), then the leastsignificant half. This is done in order to support retry if this instruction is aborted. 3.4.5 Interrupt Control Cycles Activating the INT or NMI pin on the CPU will initiate one or more bus cycles whose purpose is interrupt control rather than the transfer of instructions or data. Execution of the Return from Interrupt instruction (RETI) will also cause Interrupt Control bus cycles. These differ from instruction or data transfers only in the status pesented on pins STO-ST3. All Interrupt Control cycles are single-byte Read cycles. This section describes only the Interrupt Control sequences associated with each interrupt and with the return from its service routine. For full details of the NS32032 interrupt structure, see Sec. 3.B. 3.4.4 Instruction Fetches Instructions for the NS32032 CPU are "prefetched"; that is, they are input before being needed into the next available entry of the eight-byte Instruction Queue. The CPU performs two types of Instruction Fetch cycles: Sequential and NonSequential. These can be distinguished from each other by their differing status combinations on pins STO-ST3 (Sec. 3.4.2). 2-256 z 3.0 Functional Description (f) Co) (Continued) N oCo) TABLE 3·3 Interrupt Sequences N .... I o Data Bus r Cycle Status Address ODIN BE3 BE2 BE1 BED \ Byte 3 Byte 2 Byte 1 Byte 0 X X X A. Non-Maskable Interrupt Control Sequences Interrupt Acknowledge 1 0100 FFFF0016 o o x Interrupt Return None: Performed through Return from Trap (RETT) instruction. B. Non- Vectored Interrupt Control Sequences Interrupt Acknowledge 1 0100 FFFE00 16 0 0 X X X X Interrupt Return 0110 1 0 0 X X X X FFFE0016 C. Vectored Interrupt Sequences: Non-Cascaded. Interrupt Acknowledge 1 0100 FFFE0016 0 0 X X X Vector: Range: 0-127 Interrupt Return 1 0110 0 0 X X X Vector: Same as in Previous In!. Ack. Cycle X X Cascade Index: range -16to-1 FFFE0016 D. Vectored Interrupt Sequences: Cascaded Interrupt Acknowledge 1 0100 FFFE0016 o o (The CPU here uses the Cascade Index to find the Cascade Address.) 2 0101 Cascade 0 See Note Address Interrupt Return 1 0110 FFFE0016 o Vector, range 9-255; on appropriate byte of data bus. o (The CPU here uses the Cascade Index to find the Cascade Address) 0111 Cascade 0 See Note 2 Address X X X X X X X Cascade Index: Same as in previous In!. Ack. Cycle X X = Don't Care Note: BEO-BE3 signals will be activated according to the cascaded leu address. The cycle type can be 1, 2, 3 or 4, when reading the interrupt vector. The vector value can be in the range 0-255. 2·257 C) ..N ~ (J) Z r---------------------------------------------------------------------------------, 3.0 Functional Description (Continued) 3.4.6 Slave Processor Communication In addition to its use as the Address Translation strap (Sec. 3.5.1), the AT/SPC pin is used as the data strobe for Slave Processor transfers. In this role, it is referred to as Slave Processor Control (SPC). In a Slave Processor bus cycle, data is transferred on the Data Bus (ADO-AD15), and the status lines (STO-ST3) are monitored by each Slave Processor in order to determine the type of transfer being performed. SPC is bidirectional, but is driven by the CPU during all Slave Processor bus cycles. See Sec. 3.9 for full protocol sequences. A AD«()'15) " AT/SPC ... v D(M5) SPC SLAVE PROCESSOR NS32D32 CPU STO-ST3 5TO-ST3 TL/EE/5491-24 FIGURE 3-12. Slave Processor Connections NEXT CYCLE PREY.CVCLE I PHil [ PHil [ T40rTi TI T4 TIORTI I 8TII-8T3 [ _<31[ OBE TLlEE/5491 -25 Nota: (1) ('oU samples Data Bus here. (2) DBE and ali other NS32201 TCU bus signals remain Inactive because no ADS pulse is received from the CPU. FIGURE 3-13. CPU Read from Slave Processor 2-258 z 3.0 Functional Description en Co:! (Continued) I\) 3.4.6.1 Slave Processor Bus Cycles 3.4.6.2 Slave Operand Transfer Sequences A Slave Processor bus cycle always takes exactly two clock cycles, labeled T1 and T4 (see Figures 3·13 and 3·14). Dur· ing a Read cycle SPC is active from the beginning of T1 to the beginning of T4, and the data is sampled at the end of T1. The Cycle Status pins lead the cycle by one clock peri· od, and are sampled at the leading edge of SPC. During a Write cycle, the CPU applies data and activates SPC at T1, removing SPC at T4. The Slave Processor latches status on the leading edge of SPC and latches data on the trailing edge. Since the CPU does not pulse the Address Strobe (ADS), no bus signals are generated by the NS32201 Timing Control Unit. The direction of a transfer is determined by the sequence ("protocol") established by the instruction under execution; but the CPU indicates the direction on the DDIN pin for hardware debugging purposes. A Slave Processor operand is transferred in one or more Slave bus cycles. A By1e operand is transferred on the least-significant byte of the Data Bus (ADO-AD7), and a Word operand is transferred on bits ADO-AD15. A Double Word is transferred in a consecutive pair of bus cycles, least-significant word first. A Quad Word is transferred in two pairs of Slave cycles, with other bus cycles possibly occurring between them. The word order is from least-significant word to most·significant. Note that the NS32032 uses only the two least significant by1es of the data bus for slave cycles. This is to maintain compatibility with existing slave processors. PREV.CYCLE I PHil [ §PC [ ADO-AD15 [ T40RTI .-'f'""'".......'"'-'fJ o Co:! ~ ...... o NEXT CYCLE T1 T4 TIORTi I ~--+----r ~_-+_ STG-ST3 [ • ADs [ _(2)[ DBE - '_ _J TL/EE/5491-26 Note: (I) Slave Processor samples Data Bus here. (2) DBE. being provided by the NS32201 TCU. remains inactive due to the lact that no pulse is presented on ADS. TCU signals RD. WR and TSO also remain inactive. FIGURE 3·14. CPU Write to Slave Processor 2-259 C) ..- i en z r---------------------------------------------------------------------------------~ 3.0 Functional Description (Continued) 3.5 MEMORY MANAGEMENT OPTION is sampled as high, the bus timing is as previously described in Sec. 3.4. If it is sampled as low, two changes occur: The NS32032 CPU, in conjunction with the NS32082 Memory Management Unit (MMU), provides full support for address translation, memory protection, and memory allocation techniques up to and including Virtual Memory. 1) An extra clock cycle, Tmmu, is inserted into all bus cycles except Slave Processor transfers. 2) The DS/FLT pin changes in function from a Data Strobe output (OS) to a Float Command input (FL n. 3.5.1 Address Translation Strap The NS32082 MMU will itself pull the CPU AT/SPC pin low when it is reset. In non-Memory-Managed systems this pin should be pulled up to Vee through a 10 k.!l resistor. The Bus Interface Control section of the NS32032 CPU has two bus timing modes: With or Without Address Translation. The mode of operation is selected by the CPU by sampling the AT /SPC (Address Translation/Slave Processor Control) pin on the rising edge of the RST (Reset) pulse. If AT/SPC I PHI 1 [ PHil [ T40Rn I Note that the Address Translation strap does not specifically declare the presence of an NS32082 MMU, but only the T1 ADD-ADla [ 014-031 [ ADS [ STO-ST3 [ ODiN [ iiEo"-iiii [ ROY [ TL/EE/5491-27 FIGURE 3-15. Read Cycle with Address Translation (CPU Action) 2-260 r--------------------------------------------------------------------------, 3.0 Functional Description N NS320B2 MMU to operate correctly it must be set to the 32032 mode by forcing A24/HBF low during reset. In this mode the bus lines ADI6-AD23 are floated after the MMU address has been latched, since they are used by the CPU to transfer data. Figures 3·17and 3·18 show a Read cycle and a Write cycle as generated by the 32032/320B2/32201 group. Note that with the CPU ADS signal gOing only to the MMU, and with the MMU PAY signal substituting for ADS everywhere else, Tmmu through T4 look exactly like Tl through T4 in a non· Memory·Managed system. For the connection diagram, see Appendix B. 3.5.2 Translated Bus Timing Figures 3·15 and 3·16 illustrate the CPU activity during a Read cycle and a Write cycle in Address Translation mode. The additional T·State, Tmmu, is inserted between Tl and T2. During this time the CPU places ADO-AD23 into the TRI·STATE® mode, allowing the MMU to assert the trans· lated address and issue the physical address strobe PAY. T2 through T 4 of the cycle are identical to their counterparts without Address Translation. Note that in order for the I PHil T4 OR TI I Tl Z U) Co) (Continued) presence of external address translation circuitry. MMU in· structions will still trap as being undefined unless the SETCFG (Set Configuration) instruction is executed to de· clare the MMU instruction set valid. See Sec. 2.1.3. Tmmu I fa T3 T4 I Tl0RTI oCo) ~ ..... o I [ PHI 2 ADO-AD23 [ D24-D31 [ ADS [ DoiN [ BEo-iiEi [ RDY • STATUS VALID STD-ST3 [ [ TLlEE/5491-28 FIGURE 3·16. Write Cycle with Address Translation (CPU Action) 2·261 ....o r-----------------------------------------------------------------------------, ~ COl) 3.0 Functional Description (Continued) o I C'oI ~ T40RTi I T1 I Trnmu I T2 T3 T4 I TlORTi I Z PHIl [ PHIZ ADO-AD23 D24-D3l [ [ [ Aoi[ PiV[ STO-8T3 [ OliN [~~~~~~--+-----~----~------r_~--~----_t_ BEo-iia [ iSO[ TL/EE/5491-29 FIGURE 3-17. Memory-Managed Read Cycle 2-262 3.0 Functional Description I PHil [ T40RTi I (Continued) Tl I T2 Tmmu T3 T4 I TlORTi I PHI 2 [ ADO-A023 [ 024-031 [ AiiS[ PiV[ STO·ST3 [ NEXT STATUS STATUS VALlO 00iN[ BEo-iiEi [ VALID ROY [ NS32201 Teu BUS SIGNALS iiii[ DBE [ TL/EE/5491-30 FIGURE 3-18. Memory-Managed Write Cycle 2·263 o ..... 2 z en 3.0 Functional Description (Continued) 3.5.3 The FLT (Float) Pin 1) Sets AOO-A023, 024-031 and ODIN to the TRI-STATE condition ("floating"). 2) Suspends further internal processing of the current instruction. This ensures that the current instruction remains abortable with retry. (See RST/ABT description, Sec. 3.5.4.) The FLT pin is used by the CPU for address translation support. Activating FLT during Tmmu causes the CPU to wait longer than Tmmu for address translation and validation. This feature is used occasionally by the NS32082 MMU in order to update its translation look-aside buffer (TLB) from page tables in memory, or to update certain status bits within them. Note that the AOO-A023 pins may be briefly asserted during the first idle T-State. The above conditions remain in effect until FLT again goes high. See the Timing Specifications, Sec. 4. Figure 3-19 shows the effect of FLT. Upon sampling FLT low, late in Tmmu, the CPU enters idle T-States (Tf) during which it: Tl TI TI TI T2 PHil [ PHI2 [ AOO-A023 024-031 [ [-t----t' ADs [ PAV [ FLT [ STO·ST3 [ ODIN [ BEO-BE3 [ TL/EE/5491-31 FIGURE 3-19. FLT Timing 2-264 3.0 Functional Description (Continued) 2) If FLT has been applied to the CPU, the Abort pulse must be applied before the T-State in which FLT goes inactive. The CPU will not actually respond to the Abort command until FLT is removed. See Figure 4-23. 3.5.4 Aborting Bus Cycles The RSTI ABT pin, apart from its Reset function (Sec. 3.3), also serves as the means to "abort", or cancel, a bus cycle and the instruction, if any, which initiated it. An Abort request is distinguished from a Reset in that the RSTI ABT pin is held active for only one clock cycle. 3) The Write half of a Read-Modify·Write operand access may not be aborted. The CPU guarantees that this will never be necessary for Memory Management functions by applying a special RMW status (Status Code 1011) during the Read half of the access. When the CPU presents RMW status, that cycle must be aborted if it would be illegal to write to any of the accessed addresses. If RSTI ABT is pulsed at any time other than as indicated above, it will abort either the instruction currently under execution or the next instruction and will act as a very high-priority interrupt. However, the program that was running at the time is not guaranteed recoverable. If RSTI ABT is pulled low during Tmmu or Tf, this signals that the cycle must be aborted. The CPU itself will enter T2 and then Ti, thereby terminating the cycle. Since it is the MMU PAY signal which triggers a physical cycle, the rest of the system remains unaware that a cycle was started. The NS32082 MMU will abort a bus cycle for either of two reasons: 1) The CPU is attempting to access a virtual address which is not currently resident in physical memory. The referenced page must be brought into physical memory from mass storage to make it accessible to the CPU. 2) The CPU is attempting to perform an access which is not allowed by the protection level assigned to that page. 3.6 BUS ACCESS CONTROL The NS32032 CPU has the capability of relinquishing its access to the bus upon request from a DMA device or another CPU. This capability is implemented on the HOLD (Hold Request) and HLDA (Hold Acknowledge) pins. By asserting HOLD low, an external device requests access to the bus. On receipt of HLDA from the CPU, the device may perform bus cycles, as the CPU at this point has set the ADO-AD23, D24-D31, ADS, DDIN and BEO-BE3 pins to the TRI-STATE condition. To return control of the bus to the CPU, the device sets HOLD inactive, and the CPU acknowledges return of the bus by setting HLDA inactive. When a bus cycle is aborted by the MMU, the instruction that caused it to occur is also aborted in such a manner that it is guaranteed re-executable later. The information that is changed irrecoverably by such a partly-executed instruction does not affect its re-execution. 3.5.4.1 The Abort Interrupt Upon aborting an instruction, the CPU immediately performs an interrupt through the ABT vector in the Interrupt Table (see Sec. 3.8). The Return Address pushed on the Interrupt Stack is the address of the aborted instruction, so that a Return from Trap (RETI) instruction will automatically retry it. The one exception to this sequence occurs if the aborted bus cycle was an instruction prefetch. If so, it is not yet certain that the aborted prefetched code is to be executed. Instead of causing an interrupt, the CPU only aborts the bus cycle, and stops prefetching. If the information in the Instruction Queue runs out, meaning that the instruction will actually be executed, the ABT interrupt will occur, in effect aborting the instruction that was being fetched. How quickly the CPU releases the bus depends on whether it is idle on the bus at the time the HOLD request is made, as the CPU must always complete the current bus cycle. Figure 3-20 shows the timing sequence when the CPU is idle. In this case, the CPU grants the bus during the immediately following clock cycle. Figure 3-21 shows the sequence if the CPU is using the bus at the time that the HOLD request is made. If the request is made during or before the clock cycle shown (two clock cycles before T4), the CPU will release the bus during the clock cycle following T4. If the request occurs closer to T4, the CPU may already have decided to initiate another bus cycle. In that case it will not grant the bus until after the next T 4 state. Note that this situation will also occur if the CPU is idle on the bus but has initiated a bus cycle internally. 3.5.4.2 Hardware Considerations In order to guarantee instruction retry, certain rules must be followed in applying an Abort to the CPU. These rules are followed by the NS32082 Memory Management Unit. In a Memory-Managed system, the HLDA signal is connected in a daisy-chain through the NS32082, so that the MMU can release the bus if it is using it. 1) If FLT has not been applied to the CPU, the Abort pulse must occur during or before Tmmu. See the Timing Specifications, Figure 4-22. 2·265 ...Nor---------------------------------------------------------------______ 3.0 Functional Description (Continued) CO) o iz Ti PHI2 Ti Ti TI 011 T4 I TiOIlTl I [ H6L6[ HLDi[ I AFFECTEO SIGNALS ~~------ iDs [ ---- ~r---- ----- DDIN[ BEO-BE3 ------- ------- [-+___+-__-+' STO-ST3 [ NEXT NEXT PIIEVIOUS TLlEE/5491-32 FIGURE 3-20. HOLD Timing, Bus Initially Idle 2-266 ~ 3.0 Functional Description (Continued) PHll[ PHI 2 [ HOLD [ HLDA[ AFFECTED SIGNALS ADS[ Di[ ODIN [ BEO-BE3[ ADO-AD23[ 024-031 [ --- 1~--- ---- ---NEXT VALID VALID -- 1r--- ---- --- --- ~--- NEXTADDR ---- ---- ---- ---- STo-ST3[ TL/EE/5491-33 FIGURE 3·21. HOLD Timing, Bus Initially Not Idle 2-267 fII o .... .-----------------------------------------------------------------------------~ N CO) 3.0 Functional Description IN 3.7 INSTRUCTION STATUS &J z In addition to the four bits of Bus Cycle status (STO-ST3), the NS32032 CPU also presents Instruction Status informa· tion on three separate pins. These pins differ from STOST3 in that they are synchronous to the CPU's internal in· struction execution section rather than to its bus interface section. o (Continued) In addition there is a set of internally-generated "traps" which cause interrupt service to be performed as a result either of exceptional conditions (e.g., attempted division by zero) or of specific instructions whose purpose is to cause a trap to occur (e.g., the Supervisor Call instruction). 3.8.1 Generallnterrupt/Trap Sequence Upon receipt of an interrupt or trap request, the CPU goes through three major steps: PFS (Program Flow Status) is pulsed low as each instruction begins execution. It is intended for debugging purposes, and is used that way by the NS32082 Memory Management Unit. U/S originates from the U bit of the Processor Status Regis· ter, and indicates whether the CPU is currently running in User or Supervisor mode. It is sampled by the MMU for mapping, protection, and debugging purposes. Although it is not synchronous to bus cycles, there are guarantees on its validity during any given bus cycle. See the Timing Specifications, Figure 4-21. ILO (Interlocked Operation) is activated during an SBIT! (Set Bit, Interlocked) or CBITI (Clear Bit, Interlocked) instruction. It is made available to external bus arbitration circuitry in order to allow these instructions to implement the semaphore primitive operations for multi-processor communication and resource sharing. As with the U/S pin, there are guarantees on its validity during the operand accesses performed by the instructions. See the Timing Specification Section, Figure 4-19. 1) Adjustment of Registers. Depending on the source of the interrupt or trap, the CPU may restore and/or adjust the contents of the Program Counter (PC), the Processor Status Register (PSR) and the currently-selected Stack Pointer (SP). A copy of the PSR is made, and the PSR is then set to reflect Supervisor Mode and selection of the Interrupt Stack. 2) Vector Acquisition. A Vector is either obtained from the Data Bus or is supplied by default. 3) Service Call. The Vector is used as an index into the Interrupt Dispatch Table, whose base address is taken from the CPU Interrupt Base (INTBASE) Register. See Figure 3-22. A 32-bit External Procedure Descriptor is read from the table entry, and an External Procedure Call is performed using it. The MOD Register (16 bits) and Program Counter (32 bits) are pushed on the Interrupt Stack. This process is illustrated in Figure 3-23, from the viewpoint of the programmer. 3.8 NS32032 INTERRUPT STRUCTURE INT, on which maskable interrupts may be requested, NMI, on which non-maskable interrupts may be requested,and RST/ ABT, which may be used to abort a bus cycle and any associated instruction. See Sec. 3.5.4. , ... MEMORY / CASCADE TABLE , ... ~'"' ~~1 NVI 0 NON·VECTDRED INTERRUPT CASCADE ADDR 0 ;::::: I""_m..~1 REGISTER ~ I · • CASCADE ADDR 14 CASCADE ADDR 15 FIXED INTERRUPTS AND TRAPS VECTORED 1 ~~ INTERRUPTS i :r DISPATCH TABLE 1 NMI N DN·MASKABLE INTERRUPT 2 ABT A BORT 3 SLAVE SLAVE PROCESSOR TRAP 4 ILL I LLEGAL OPERATION TRAP 5 SVC S UPERVISOR CALL TRAP 6 DVZ DIVIDE BY ZERO TRAP 7 FLG FLAG TRAP 8 BPT B REAKPOINT TRAP 9 TRC T RACE TRAP 10 UNO U NDEFINED INSTRUCTION TRAP '1-15 :: ~ RESERVED ,6 ,. .... ~ VECTORED INTERRUPTS A. TLlEE/549, -34 FIGURE 3-22. Interrupt Dispatch and Cascade Tables 2-268 3.0 Functional Description (Continued) I I I (PUSH) RETURN ADORESS 32 BITS I STATUS PSR I MOOUlE \ I J (PUSH) 32 BITS MOD INTERRUPT STACK TlfEEf5491-35 r-------------, I I I I I I INTBASE REGISTER CASCADE TABLE I I DISPATCH TABLE DESCRIPTOR (32 BITS) I ." DESCRIPTOR o----16--_·'I"I~---16---·1 OFFSET MODULE 0 MOD REGISTER ~ I MODULE TABLE NEW MODULE I MODULE TABLE ENTRY PI j MODULE TLlE ENTRY 32 - ----.., STATIC BASE POINTER UNK BASE POINTER (+ PROGRAM BASE POINTER (RESERVED) PROGRAM COUNTER SBREGISTER 4- ENTRY POINT ADDRESS NEW STATIC BASE FIGURE 3·23. Interrupt/Trap Service Routine Calling Sequence 2·269 I TlfEEf5491-36 o r--------------------------------------------------------------------------.... N ('I) o 3.0 Functional Description (Continued) C\I 3.8.2 Interrupt/Trap Return o To return control to an interrupted program, one of two in· structions is used. The RETT (Return from Trap) instruction (Figure 3-24) restores the PSR, MOD, PC and S8 registers to their previous contents and, since traps are often used deliberately as a call mechanism for Supervisor Mode procedures, it also discards a specified number of bytes from the original stack as surplus parameter space. RETT is used to return from any trap or interrupt except the Maskable Interrupt. For this, the RETI (Return from Interrupt) instruction is used, which also informs any external Interrupt Control Units that interrupt service has completed. Since interrupts are generally asynchronous external events, RETI does not pop parameters. See Figure 3-25. ('I) z The input is maskable, and is therefore enabled to generate interrupt requests only while the Processor Status Register I bit is set. The I bit is automatically cleared during service of an INT, NMI or Abort request, and is restored to its original setting upon return from the interrupt service routine via the RETT or RETI instruction. The INT pin may be configured via the SETCFG instruction as either Non-Vectored (CFG Register bit I = C) or Vectored (bit I = 1). 3.8.3.1 Non-Vectored Mode In the Non-Vectored mode, an interrupt request on the INT pin will cause an Interrupt Acknowledge bus cycle, but the CPU will ignore any value read from the bus and use instead a default vector of zero. This mode is useful for small systems in which hardware interrupt prioritization is unnecessary. 3.8.3 Maskable Interrupts (The INT Pin) The INT pin is a level-sensitive input. A continuous low level is allowed for generating multiple interrupt requests. PROGRAM COUNTER RETURN ADDRESS STATUS PSR I • I ~ 32 BITS (POP) 1----------1 (POP) MODULE -\-----..:..---+- MOD 32 BITS INTERRUPT STACK MODULE TABLE MODULE TABLE ENTRY MODULET~BLEENTRY STATIC BASE POINTER - ,.., LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) PARAMETERS / n BYTES SBREGISTER STATIC BASE + STACK SELECTED IN NEWLY· POPPEDPSR. POP AND DISCARD FIGURE 3-24. Return from Trap (RETT n) Instruction Flow 2-270 TL/EE/5491-37 z 3.0 Functional Description en w (Continued) ~ w ~ .... "END OF INTERRUPT' Q BUS CYCLE INTERRUPT CONTROL UNIT PROGRAM COUNTER (POP) RETURN ADDRESS STATUS J (POP) MODULE PSR MOD INTERRUPT STACK MODULE TABLE MODULE TABLE ENTRY J MODULE TAllE ENTRY STATIC BASE POINTER - r---- liNK BASE POINTER PROGRAM BASE POINTER (RESERVED) STATIC BASE SBREGISTER TLlEE/5491-39 FIGURE 3-25. Return from Interrupt (RETI) Instruction Flow 2-271 ...N Q ~ CO) en z r---------------------------------------------------------------------------------~ 3.0 Functional Description (Continued) Figure 3-22 illustrates the position of the Cascade Table. To find the Cascade Table entry for a Cascaded ICU, take its Master ICU line number (0 to 15) and subtract 16 from it, giving an index in the range -16 to -1. Multiply this value by 4, and add the resulting negative number to the contents of the INTBASE Register. The 32·bit entry at this address must be set to the address of the Hardware Vector Register of the Cascaded ICU. This is referred to as the "Cascade Address." Upon receipt of an interrupt request from a Cascaded ICU, the Master ICU interrupts the CPU and provides the negative Cascade Table index instead of a (positive) vector number. The CPU, seeing the negative value, uses it as an index into the Cascade Table and reads the Cascade Address from the referenced entry. Applying this address, the CPU performs an "Interrupt Acknowledge, Cascaded" bus cycle (Sec. 3.4.2), reading the final vector value. This vector is interpreted by the CPU as an unsigned byte, and can therefore be in the range of 0 through 255. In returning from a Cascaded interrupt, the service procedure executes the Return from Interrupt (RETI) instruction, as it would for any Maskable Interrupt. The CPU performs an "End of Interrupt, Master" bus cycle (Sec. 3.4.2), where· upon the Master ICU again provides the negative Cascade Table index. The CPU, seeing a negative value, uses it to find the corresponding Cascade Address from the Cascade Table. Applying this address, it performs an "End of Interrupt, Cascaded" bus cycle (Sec. 3.4.2), informing the Cascaded ICU of the completion of the service routine. The byte read from the Cascaded ICU is discarded. 3.8.3.2 Vectored Mode: Non-Cascaded Case In the Vectored mode, the CPU uses an Interrupt Control Unit (ICU) to prioritize up to 16 interrupt requests. Upon receipt of an interrupt request on the INT pin, the CPU performs an "Interrupt Acknowledge, Master" bus cycle (Sec. 3.4.2) reading a vector value from the low-order byte of the Data Bus. This vector is then used as an index into the Dispatch Table in order to find the External Procedure Descriptor for the proper interrupt service procedure. The service procedure eventually returns via the Return from Interrupt (RETI) instruction, which performs an End of Interrupt bus cycle, informing the ICU that it may re-prioritize any interrupt requests still pending. The ICU provides the vector number again, which the CPU uses to determine whether it needs also to inform a Cascaded ICU (see below). In a system with only one ICU (16 levels of interrupt), the vectors provided must be in the range of 0 through 127; that is, they must be positive numbers in eight bits. By providing a negative vector number, an ICU flags the interrupt source as being a Cascaded ICU (see below). 3.8.3.3 Vectored Mode: Cascaded Case In order to allow up to 256 levels of interrupt, provision is made both in the CPU and in the NS32202 Interrupt Control Unit (lCU) to transparently support cascading. Figure 3-27, shows a typical cascaded configuration. Note that the Interrupt output from a Cascaded ICU goes to an Interrupt Re· quest input of the Master ICU, which is the only ICU which drives the CPU INT pin. In a system which uses cascading, two tasks must be performed upon initialization: 1) For each Cascaded ICU in the system, the Master ICU must be informed of the line number (0 to 15) on which it receives the cascaded requests. Note: If an interrupt must be masked off, the CPU can do so by setting the corresponding bit in the Interrupt Mask Register of the Interrupt Con· troller. However, if an interrupt is set pending during the CPU instruction that masks off that interrupt, the CPU may still perform an interrupt ac· knowledge cycle following that instruction since it might have sampled the INT line before the ICU deasserted it. This could cause the ICU to 2) A Cascade Table must be established in memory. The Cascade Table is located in a NEGATIVE direction from the location indicated by the CPU Interrupt Base (INTBASE) Register. Its entries are 32-bit addresses, pOinting to the Vector Registers of each of up to 16 Cascaded ICUs. provide an invalid vector. To avoid this problem the above operation should be performed with the CPU interrupt disabled. HARDWARE INTERRUPTS OR CASCADED CONTROLLERS NS32032 CPU GROUP INf \-------1 INTERRUPTS, CASCADED, OR BIT 110 TLIEE/5491-40 FIGURE 3-26. Interrupt Control Unit Connections (16 Levels) 2-272 z 3.0 Functional Description en w (Continued) N Q W ... DATA ~ Q CONTROL ADDR5BITS CASCADED N532202 ICU HARDWARE INTERRUPTS STATUS FROM ADDRESS DECODER INTERRUPTS OR BIT 1/0 DATA CONTROL NS32032 CPU GROUP -- MASTER N532202 ICU ADDR STATUS 1 INT ~----------------------------------1~ II FROM ADDRESS DECODER TL/EE/5491-41 FIGURE 3-27. Cascaded Interrupt Control Unit Connections 3.8.4 Non-Maskable Interrupt (The NMI Pin) The Non-Maskable Interrupt is triggered whenever a falling edge is detected on the NMI pin. The CPU performs an "Interrupt Acknowledge, Master" bus cycle (Sec. 3.4.2) when processing of this interrupt actually begins. The Interrupt Acknowledge cycle differs from that provided for Maskable Interrupts in that the address presented is FFFF0016. The vector value used for the Non-Maskable Interrupt is taken as 1, regardless of the value read from the bus. 3.8.STraps A trap is an internally-generated interrupt request caused as a direct and immediate result of the execution of an instruction. The Return Address pushed by any trap except Trap (TRC) is the address of the first byte of the instruction during which the trap occurred. Traps do not disable interrupts. as they are not associated with external events. Traps recognized by the NS32032 CPU are: Trap (SLAVE): An exceptional condition was detected by the Floating Point Unit or another Slave Processor during the execution of a Slave Instruction. This trap is requested via the Status Word returned as part of the Slave Processor Protocol (Sec. 3.9.1). The service procedure returns from the Non-Maskable Interrupt using the Return from Trap (RETT) instruction. No special bus cycles occur on return. For the full sequence of events in processing the NonMaskable Interrupt, see Sec. 3.8.7.1. 2-273 3.0 Functional Description (Continued) Trap (ILL): Illegal operation. A privileged operation was attempted while the CPU was in User Mode (PSR bit U = 1). 1. If a String instruction was interrupted and not yet completed: Trap (SYC): The Supervisor Call (SVC) instruction was executed. Trap (DYZ): An attempt was made to divide an integer by zero. (The slave trap is used for Floating Point division by zero.) a. Clear the Processor Status Register P bit. b. Set "Return Address" to the address of the first byte of the interrupted instruction. Otherwise, set "Return Address" to the address of the next instruction. 2. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, T, P and J. Trap (FLG): The FLAG instruction detected a "1" in the CPU PSR F bit. Trap (BPn: The Breakpoint (BPT) instruction was executed. Trap (TRC): The instruction just completed is being traced. See below. 3. If the interrupt is Non-Maskable: a. Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master, Sec. 3.4.2). Discard the byte read. Trap (UNO): An undefined opcode was encountered by the CPU. A special case is the Trace Trap (TRC), which is enabled by setting the T bit in the Processor Status Register (PSR). At the beginning of each instruction, the T bit is copied into the PSR P (Trace "Pending") bit. If the P bit is set at the end of an instruction, then the Trace Trap is activated. If any other trap or interrupt request is made during a traced instruction, its entire service procedure is allowed to complete before the Trace Trap occurs. Each interrupt and trap sequence handles the P bit for proper tracing, guaranteeing one and only one Trace Trap per instruction, and guaranteeing that the Return Address pushed during a Trace Trap is always the address of the next instruction to be traced. b. Set "Yector" to 1. c. Go to Step B. 4. If the interrupt is Non-Vectored: a. Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Sec. 3.4.2). Discard the byte read. b. Set "Vector" to c. Go to Step 8. 5. Here the interrupt is Vectored. Read "Byte" from address FFFE0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Sec. 3.4.2). 6. If "Byte" ~ 0, then set "Vector" to "Byte" and go to Step B. 3.8.6 Prioritization The NS32016 CPU internally prioritizes simultaneous interrupt and trap requests as follows: 1) Traps other than Trace (Highest priority) 7. If "Byte" is in the range -16 through -1, then the interrupt source is Cascaded. (More negative values are reserved for future use.) Perform the following: a. Read the 32-bit Cascade Address from memory. The address is calculated as INTBASE +4' Byte. b. Read "Vector," applying the Cascade Address just read and Status Code 0101 (Interrupt Acknowledge, Cascaded: Sec. 3.4.2). B. Push the PSR copy (from Step 2) onto the Interrupt Stack as a 16-bit value. 9. Perform Service (Vector, Return Address), Figure 3-28. 2) Abort 3) Non-Maskable Interrupt 4) Maskable Interrupts 5) Trace Trap o. (Lowest priority) 3.8.7 Interrupt/Trap Sequences: Detailed Flow For purposes of the following detailed discussion of interrupt and trap service sequences, a Single sequence called "Service" is defined in Figure 3-28. Upon detecting any interrupt request or trap condition, the CPU first performs a sequence dependent upon the type of interrupt or trap. This sequence will include pushing the Processor Status Register and establishing a Vector and a Return Address. The CPU then performs the Service sequence. For the sequence followed in processing either Maskable or Non-Maskable interrupts (on the INT or NMI pins, respectively), see Sec. 3.B. 7.1 For Abort Interrupts, see Sec. 3.B.7.4. For the Trace Trap, see Sec. 3.B.7.3, and for all other traps see Sec. 3.B.7.2. Service (Vector, Return Address): 1) Read the 3l1-blt External Procedure Descriptor from the Interrupt Dispatch Table: address Is Vector' 4 + INTBASE Register contents. 2) Move the Module field of the Descriptor Into the MOD Register. 3) Read the new StaUc Base pointer from the memory address contained In MOD, placing It Into the SB Register. 4) Read the Program Base pointer from memory address MOD + 8, and add to It the Offset field from the Descriptor, placing the result In the Program Counter. 5) Flush queue: Non-sequentlally fetch first InstrucUon of Interrupt routine. 6) Push MOD Register Into the Interrupt Stack as a 16·blt value. (The PSR has already been pushed as a 16·blt value.) 3.8.7.1 Maskable/Non-Maskable Interrupt Sequence 7) Push the Return Address onto the Interrupl Stack as a 32·bll quanti· This sequence is performed by the CPU when the NMI pin receives a falling edge, or the INT pin becomes active with the PSR I bit set. The interrupt sequence begins either at the next instruction boundary or, in the case of the String instructions, at the next interruptible pOint during its execution. ty. FIGURE 3·28. Service Sequence Invoked during all interrupt/trap sequences. 2-274 3.0 Functional Description z en CAl (Continued) N Each Slave Instruction Set is validated by a bit in the Configuration Register (Sec. 2.1.3). Any Slave Instruction which does not have its corresponding Configuration Register bit set will trap as undefined, without any Slave Processor communication attempted by the CPU. This allows software simulation of a non-existent Slave Processor. 3.8.7.2 Trap Sequence: Traps Other Than Trace 1) Restore the currently selected Stack Pointer and the Processor Status Register to their original values at the start of the trapped instruction. 2) Set "Vector" to the value corresponding to the trap type. SLAVE: Vector = 3. ILL: Vector = 4. SVC: 3.9.1 Slave Processor Protocol Slave Processor instructions have a three-byte Basic Instruction field, consisting of an 10 Byte followed by an Operation Word. The 10 Byte has three functions: Vector = 5. Vector = 6. DVZ: FLG: BPT: Vector = 7. Vector = 8. UNO: Vector = 10. 1) It identifies the instruction as being a Slave Processor instruction. 2) It specifies which Slave Processor will execute it. 3) It determines the format of the following Operation Word of the instruction. Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Figure 3-29. While applying Status Code 1111 (Broadcast 10, Sec. 3.4.2), the CPU transfers the 10 Byte on the least-significant byte of the Data Bus (ADO-AD7). All Slave Processors input this byte and decode it. The Slave Processor selected by the 10 Byte is activated, and from this point the CPU is communicating only with it. If any other slave protocol was in progress (e.g., an aborted Slave instruction), this transfer cancels it. 3) Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, P and T. 4) Push the PSR copy onto the Interrupt Stack as a 16-bit value. 5) Set "Return Address" to the address of the first byte of the trapped instruction. 6) Perform Service (Vector, Return Address), Figure 3-28. 3.8.7.3 Trace Trap Sequence 1) In the Processor Status Register (PSR), clear the P bit. 2) Copy the PSR into a temporary register, then clear PSR bits S, U and T. The CPU next sends the Operation Word while applying Status Code 1101 (Transfer Slave Operand, Sec. 3.4.2). Upon receiving it, the Slave Processor decodes it, and at this point both the CPU and the Slave Processor are aware of the number of operands to be transferred and their sizes. The operation Word is swapped on the Data Bus, that is, bits 0-7 appear on pins AD8-AD15 and bits 8-15 appear on pins ADO-AD7. 3) Push the PSR copy onto the Interrupt Stack as a 16-bit value. 4) Set "Vector" to 9. 5) Set "Return Address" to the address of the next instruction. 6) Perform Service (Vector, Return Address), Figure 3-28. Using the Address Mode fields within the Operation Word, the CPU starts fetching operand and issuing them to the Slave Processor. To do so, it references any Addressing Mode extensions which may be appended to the Slave Processor instruction. Since the CPU is solely responsible 3.8.7.4 Abort Sequence 1) Restore the currently selected Stack Pointer to its original contents at the beginning of the aborted instruction. 2) Clear the PSR P bit. 3) Copy the PSR into a temporary register, then clear PSR bits S, U, T and 1. 4) Push the PSR copy onto the Interrupt Stack as a 16-bit value. 5) Set "Vector" to 2. 6) Set "Return Address" to the address of the first byte of the aborted instruction. Status Combinations: Send 10(10): Code 1111 Xler Operand (OP): Code 1101 Read Status (ST): Code 1110 Step Status 1 ID Action 7) Perform Service (Vector, Return Address), Figure 3-28. 2 OP CPU Sends Operaton Word. 3.9 SLAVE PROCESSOR INSTRUCTIONS 3 OP CPY Sends Required Operands The NS32032 CPU recognizes three groups of instructions being executable by external Slave Processor: 4 CPU Send 10 Byte. Slave Starts Execution. CPU Pre·letches. Slave Pulses SPC Low. Floating Point Instruction Set Memory Management Instruction Set Custom Instruction Set 6 ST CPU Reads Status Word. (Trap? Alter Flags?) OP CPU Reads Results (If Any). FIGURE 3-29. Slave Processor Protocol 2-275 o CAl ~ ..... o C) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , ..... ~ w CO) (/) z 3.0 Functional Description (Continued) for memory accesses, these extensions are not sent to the Slave processor. The Status Code applied is 1101 (Transfer Slave Processor Operand, Sec. 3.4.2). An exception to the protocol above is the LMR (Load Memory Management Register) instruction, and a corresponding Custom Slave instruction (LCR: Load Custom Register). In executing these instructions, the protocol ends after the CPU has issued the last operand. The CPU does not wait for an acknowledgement from the Slave Processor, and it does not read status. After the CPU has issued the last operand, the Slave Processor starts the actual executidn of the instruction. Upon completion, it will signal the CPU by pulsing SPC low. To allow for this, and for the Address Translation strap function, AT/SPC is normally held high only by an internal pullup device of approximately 5 kO. 3.9.2 Floating Point Instructions Table 3-4 gives the protocols followed for each Floating Point instruction. The instructions are referenced by their mnemonics. For the bit encodings of each instruction, see Appendix A. While the Slave Processor is executing the instruction, the CPU is free to prefetch instructions into its queue. If it fills the queue before the Slave Processor finishes, the CPU will wait, applying Status Code 0011 (Waiting for Slave, Sec. 3.4.2). The Operand class columns give the Access Class for each general operand, defining how the addressing modes are interpreted (see Instruction Set Reference Manual). Upon receiving the pulse on SPC, the CPU uses SPC to read a Status Word from the Slave Processor, applying Status Code 1110 (Read Slave Status, Sec. 3.4.2). This word has the format shown in Figure 3-30. If the Q bit ("Quit", Bit 0) is set, this indicates that an error was detected by the Slave Processor. The CPU will not continue the protocol, but will immediately trap through the Slave vector in the Interrupt Table. Certain Slave Processor instructions cause CPU PSR bits to be loaded from the Status Word. The Operand Issued columns show the sizes of the operands issued to the Floating Point Unit by the CPU. "0" indicates a 32-bit Double Word. "i" indicates that the instruction specifies an integer size for the operand (B = Byte, W = Word, 0 = Double Word). "f" indicates that the instruction specifies a Floating Point size for the operand (F = 32-bit Standard Floating, L = 64-bit Long Floating). The Returned Value Type and Destination column gives the size of any returned value and where the CPU places it. The PSR Bits Affected column indicates which PSR bits, if any, are updated from the Slave Processor Status Word (Figure 3-3{}). The last step in the protocol is for the CPU to read a result, if any, and transfer it to the destination. The Read cycles from the Slave Processor are performed by the CPU while applying Status Code 1101 (Transfer Slave Operand, Sec. 3.4.2). TABLE 3-4 Mnemonic Operand 1 Class Floating Point Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued PSR Bits Affected none none none none AOOf SUBf MUll OIVf read.f read.f read.f read.f rmw.f rmw.f rmw.f rmw.f f ftoOp.2 ftoOp.2 ftoOp.2 ftoOp.2 MOVf ABSf NEGf read.f read.f read.f write.f write.f write.f N/A N/A N/A ftoOp.2 ftoOp.2 ftoOp.2 none none none CMPf read.f read.f N/A N,Z,L FLOORfi TRUNCfi ROUNOfi read.f read.f read.f write.i write.i write.i f N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 none none none MOVFL MOVLF read.F read.L write.L write.F F L N/A N/A LtoOp.2 FtoOp.2 none none MOVif read.i write.f N/A ftoOp.2 none LFSR SFSR read. 0 N/A N/A write.O N/A N/A N/A OtoOp.2 none none 0 N/A Nate: o= Returned Value Type and Dest. Double Word I = Integer size (B,W,D) specified in mnemonic. f = Floating Paint type (F,L) specijied in mnemonic. NtA = Not Applicable to this instruction. 2-276 z 3.0 Functional Description 15 I (J) IN N 3.9.3 Memory Management Instructions Table 3·5 gives the protocols for Memory Management instructions. Encodings for these instructions may be found in Appendix A. In executing the RDVAL and WRVAL instructions, the CPU calculates and issues the 32-bit Effective Address of the single operand. The CPU then performs a single· byte Read cycle from that address, allowing the MMU to safely abort the instruction if the necessary information is not currently in physical memory. Upon seeing the memory cycle complete, the MMU continues the protocol, and returns the validation result in the F bit of the Slave Status Word. The size of a Memory Management operand is always a 32bit Double Word. For further details of the Memory Management Instruction set, see the Instruction Set Reference Manual and the NS32082 MMU Data Sheet. o 8 7 0 0 0 0 0 0 0 0 Co) (Continued) Z F 0 0 L 0 NewPsRBltV.IUe(.)~ 01 .-A) "Quit": Terminate Prolocol.1l'ap(FPU). TL/EE/5491-42 FIGURE 3·30. Slave Processor Status Word Format Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified. This is because the Floating Point Registers are physically on the Floating Point Unit and are therefore available without CPU assistance. oCo) . N ..... o TABLE 3-5 Mnemonic RDVAL* WRVAL' LMR' SMR* Operand 1 Class Memory Management Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued Returned Value Type and Dest. PSR Bits Affected addr addr N/A N/A D D N/A N/A N/A N/A F F read.D write.D N/A N/A D N/A N/A N/A N/A DtoOp.1 none none Note: In the RDVAL and WRVAL instructions, the CPU issues the address as a Double Word, and performs a single·byte Read cycle from that memory address. For details, see the Instruction Set Reference Manual and the NS32082 Memory Management Unit Data Sheet. o • ~ ~ NI A Double Word Privileged Instruction: will trap if CPU is in User Mode. ~ Not Applicable to this instruction. II 2-277 C) ..- ~ C") C) r---------------------------------------------------------------------------------, 3.0 Functional Description (Continued) N 3.9.4 Custom Slave Instructions U) Provided in the NS32032 is the capability of communicating with a user-defined, "Custom" Slave Processor. The instruction set provided for a Custom Slave Processor defines the instruction formats, the operand classes and the communication protocol. Left to the user are the interpretations of the Op Code fields, the programming model of the Custom Slave and the actual types of data transferred. The protocol specifies only the size of an operand, not its data type. C") Z Table 3-6 lists the relevant information for the Custom Slave instruction set. The designation "c" is used to represent an operand which can be a 32-bit ("D") or 64-bit ("0") quantity in any format; the size is determined by the suffix on the mnemonic. Similarly, an "i" indicates an integer size (Byte, Word, Double Word) selected by the corresponding mnemonic suffix. Any operand indicated as being of type "c" will not cause a transfer if the register addressing mode is specified. It is assumed in this case that the slave processor is already holding the operand internally. For the instruction encodings, see Appendix A. TABLE 3-6 Mnemonic Operand 1 Class Custom Slave Instruction Protocols. Operand 2 Operand 1 Operand 2 Class Issued Issued read.c read.c read.c read.c rmw.c rmw.c rmw.c rmw.c c c c c c c c c ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 none none none none CMOVOc CMOVlc CMOV2c CMOV3c read.c read.c read.c read.c write.c write.c write.c write.c c c c c N/A N/A N/A N/A ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 none none none none CCMPOc CCMPlc read.c read.c read.c read.c c c c c N/A N/A N,Z,L N,Z,L CCVOci CCVlci CCV2ci CCV3ic read.c read.c read.c read.i write.i write.i write.i write.c c N/A N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 ctoOp.2 none none none none CCV4DO CCV50D read.D read.O write.O write.D D 0 N/A N/A OtoOp.2 DtoOp.2 none none LCSR SCSR read.D N/A N/A write.D D N/A N/A N/A N/A DtoOP.2 none none addr addr N/A N/A D D N/A N/A N/A N/A F F read.D write.D N/A N/A D N/A N/A N/A N/A DtoOp.l none none LCR" SCR" c c Note: o = Double Word c PSR Bits Affected CCALOc CCAL1c CCAL2c CCAL3c CATSTO· CATST1* i Returned Value Type and Dest. = Integer size (B,W,D) specified in mnemonic. = Custom size (0:32 bits or Q:64 bits) specified in mnemonic. • = Privileged instruction: will trap H CPU is in User Mode. N/ A = Not Applicable to this instruction. 2-278 zCJ) 4.0 Device Specifications Co) N Byte Enable (BEO-BE3): Active low. Four control signals enabling data transfers on individual bus bytes. Sec. 3.4.3. Status (STO-ST3): Bus cycle status code, STO least significant. Sec. 3.4.2. Encodings are: 4.1 NS32032 PIN DESCRIPTIONS The following is a brief description of all NS32032 pins. The descriptions reference portions of the Functional Description. Sec. 3. Unless otherwise indicated reserved pins should be left open. oCo) N I ...... o 0000 - Idle: CPU Inactive on Bus. 0001 - Idle: WAIT Instruction. 0010 - (Reserved). 0011 - Idle: Waiting for Slave. 0100 - Interrupt Acknowledge, Master. 0101 -Interrupt Acknowledge, Cascaded. 0110 - End of Interrupt, Master. 0111 - End of Interrupt, Cascaded. 1000 - Sequential Instruction Fetch. 1001 - Non-Sequential Instruction Fetch. 1010 - Data Transfer. 1011 - Read Read-Modify-Write Operand. 1100 - Read for Effective Address. 1101 - Transfer Slave Operand. 1110 - Read Slave Status Word. 1111 - Broadcast Slave ID. 4.1.1 Supplies Power (VcC>: +5V Positive Supply. Sec. 3.1. Logic Ground (GNDL): Ground reference for on-chip logic. Sec. 3.1. Buffer Grounds # 1 (GNDB1, GNDB2, GNDB3): Ground references for the on-chip output drivers connected to output pins. Sec. 3.1. Back-Bias Generator (BBG): Output of on-Chip substrate voltage generator. Sec. 3.1. 4.1.2 Input Signals Clocks (PHI1, PHI2): Two-phase clocking signals. Sec. 3.2. Ready (ROY): Active high. While RDY is inactive, the CPU extends the current bus cycle to provide for a slower memory or peripheral reference. Upon detecting RDY active, the CPU terminates the bus cycle. Sec. 3.4.1. Hold Acknowledge (HLDA): Active low. Applied by the CPU in response to HOLD input, indicating that the bus has been released for DMA or multiprocessing purposes. Sec. 3.6. User/Supervisor (U/S): User or Supervisor Mode status. Sec. 3.7. High state indicates User Mode, low indicates Supervisor Mode. Sec. 3.7. Interlocked Operation (ILO): Active low. Indicates that an interlocked instruction is being executed. Sec. 3.7. Program Flow Status (PFS): Active low. Pulse indicates beginning of an instruction execution. Sec. 3.7. Hold Request (HOLD): Active low. Causes the CPU to release the bus for DMA or multiprocessing purposes. Sec. 3.6. Note1: HOLD must not be asserted until HLDA from a previous HOLD/HLDA sequence is deasserted. Note 2: If the FiQTIj signal is generated asynchronously, it's set up and hold times may be violated. In this case it is recommended to synchronize it with CTTL to minimize the possibility of metastable states. The CPU provides only one synchronization stage to minimize the HLOA latency. This is to avoid speed degradations in cases of heavy HOLD activity (i.e., DMA controlier cycles inte~eaved with CPU cycles.) 4.1.4 Input-Output Signals Address/Data 0-23 (ADO-AD23): Multiplexed Address/ Data information. Bit 0 is the least significant bit of each. Sec. 3.4. Data Bits 24-31 (024-031): The high order 8 bits of the data bus. Address Translation/Slave Processor Control (AT/ SPC): Active low. Used by the CPU as the data strobe output for Slave Processor transfers; used by Slave Processors to acknowledge completion of a slave instruction. Sec. 3.4.6; Sec. 3.9. Sampled on the rising edge of Reset pulse as Address Translation Strap. Sec. 3.5.1. In non-memory-managed systems, this pin should be pulled-up to Vee through a 10 kn. resistor. Data Strobe/Float (DS/FLn: Active low. Data Strobe output, Sec. 3.4, or Float Command input, Sec. 3.5.3. Pin function is selected on AT /SPC pin, Sec. 3.5.1. Interrupt (INn: Active low. Maskable Interrupt request. Sec. 3.8. Non-Maskable Interrupt (NMI): Active low. Non-Maskable Interrupt request. Sec. 3.8. Reset/Abort (RST/ABn: Active low. If held active for one clock cycle and released, this pin causes an Abort Command, Sec. 3.5.4. If held longer, it initiates a Reset. Sec. 3.3. 4.1.3 Output Signals Address Strobe (ADS): Active low. Controls address latches: indicates start of a bus cycle. Sec. 3.4. Data Direction in (ODIN): Active low. Status signal indicating direction of data transfer during a bus cycle. Sec. 3.4. 2-279 EI C) r---------------------------------------------------------------------------------, e:. 4.0 Device Specifications (Continued) N 4.2 ABSOLUTE MAXIMUM RATINGS tn If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. CO) C) CO) Z Temperature Under Bias Storage Temperature All Input or Output Voltages With -0.5Vto +7V Respect to GND Power Dissipation 1.5 Watt Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. O'C to + 70'C -65'Cto + 150'C 4.3 ELECTRICAL CHARACTERISTICS TA = 0' to + 70'C, Vcc = 5V ± 5%, GND = OV Symbol Parameter 2.0 Units V -0.5 0.8 V PHI1, PHI2 pins only Vcc - 0.35 Vee +0.5 V Low Level Clock Voltage PHI1, PHI2 pins only -0.5 0.3 V Low Level Clock Voltage. Transient (ringing tolerance) PHI1, PHI2 pins only -0.5 0.6 V High Level Output Voltage IOH = -400/LA Low Level Output Voltage IOL = 2mA 0.45 V AT/SPC Input Current (low) VIN = 0.4V, AT/SPC in input mode 0.05 1.0 mA Input Load Current o ~ VIN ~ Vee, All inputs except PHI1, PHI2, AT/SPC -20 20 -20 30 Active Supply Current V 2.4 Leakage Current Output and I/O Pins in TRI-STATE/lnput Mode ICC Max Vee +0.5 High Level Clock Voltage Low Level Input Voltage VCLl Typ Min Conditions High Level Input Voltage 180 lOUT = 0, TA = 25'C 300 ~~E~I~15~~~~~~~~g RESERVED ~UUUUUUUUUUUUUUUElI! :~5 ~:=! c:: iiiiiri :::J RESERVED :::J RESERVED ::J PHI1 :::J PHI2 ;:::J I: I: I: I: t: I: I: I: I: NS32032 AiiS b:I UtS 3D cpu ;:J t:J Af/S~ :J RESERVED RESERVED II1IFLJ m,m c:: ;::J :J RESERVED :::J RESERVED ICDNNECT ro Vee lL THROUGH A4.7 kll RESISTORI ~ AD22 AD19 AD18 AD17 AD1& AD15 AD14 AD13 AD12 ADn AD10 AD9 I: AD8 I: AD7 m: nnn non n n n nn n n nn JiIj ~I;I~I~I~I~I~ £5 z: i ljut ~~ =! ~!!! § Bottom View FIGURE 4·1. NS32032 Connection Diagram Order Number NS32032E·10 or NS32032V·10 See NS Package E6SB or V6SA 2-280 AM TLlEE/5491-2 mA 4.0 Device Specifications (Continued) and PHI2 and O.BV or 2.0V on all other signals as illustrated in Figures 4-2 and 4-3, unless specifically stated otherwise. 4.4 SWITCHING CHARACTERISTICS 4.4.1 Definitions ABBREVIATIONS: All the timing speCifications given in this section refer to 2.0V on the rising or falling edges of the clock phases PHI1 L.E. - leading edge R.E. - rising edge T.E. - trailing edge F.E. - falling edge -[::¥-[ SIGI ~2'4V ISIGII 1---'="------ [ __k PHln [ SIGl a.BV O.45V [ I ISIG2h [ 1~2'4V 2.0V SlG2 SlG2 -------,-.---- - - - 2.4V a.BV ..l\~_~ ISIGlI '----I--O.45V /I"""---I---2.4V 2.0V -1-----.-1 ISIG2h _ _ _ _ _....J:.....______._._ - O.45V - - - - J .__.--------O.45V TL/EE/5491-44 TL/EE/5491-43 FIGURE 4·3. Timing Specification Standard (Signal Valid Before Clock Edge) FIGURE 4·2. Timing Specification Standard (Signal Valid After Clock Edge) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32032·10 Maximum times assume capacitive loading of 100 pF. Name Figure Description Reference/Conditions NS32032·10 Min tALv 4-4 Address bits 0-23 valid after R.E., PHI1 T1 Units Max 40 tALh 4-4 Address bits 0-23 hold after R.E., PHI1 Tmmu or T2 tov 4-4 Data valid (write cycle) after R.E., PHI1 T2 tOh 4-4 Data hold (write cycle) after R.E., PHI1 next T1 or Ti 0 ns tALAOSs 4-5 Address bits 0-23 setup before ADS T.E. 25 ns tALAOSh 4-10 Address bits 0-23 hold after ADS T.E. 15 tAL! 4-5 Address bits 0-23 floating (no MMU) after R. E., PH 11 T2 25 ns tAD! 4-5 Data bits 024-031 floating (no MMU) after R.E., PHI1 T2 25 ns tALM! 4-9 Address bits 0-23 floating (with MMU) after R.E., PHI1 Tmmu 25 ns tAOM! 4-9 Data bits 21-31 floating (with MMU) after R.E., PHI1 Tmmu 25 ns tBEv 4-4 BEn Signals valid after R.E., PHI2 T4 60 ns tBEh 4-4 BEn Signals hold after R.E., PHI2 T4 orTi tSTv 4-4 Status (STO-ST3) valid after R.E., PHI1 T4 (before T1, see note) tSTh 4-4 Status (STO-ST3) hold after R.E., PHI1 T4 (afterT1) 2-2B1 5 ns ns 50 ns 0 ns 60 0 ns ns ns fII 4.0 Device Specifications (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32032-10 (Continued) Name Figure Referencel Conditions Description NS32032-10 Min Units Max tOOINv 4-5 ODIN signal valid after RE., PHI1 T1 tOOINh 4-5 ODIN signal hold after RE., PHI1 next T1 or Ti tAOSa 4-4 ADS signal active (low) after RE., PHI1 T1 35 ns tAOSia 4-4 ADS signal inactive after RE., PHI2 T1 40 ns tAOSw 4-4 ADS pulse width at 0.8V (both edges) tOSa 4-4 OS signal active (low) after RE., PHI1 T2 40 ns tOSia 4-4 OS signal inactive after RE., PHI1 T4 40 ns tALI 4-6 ADO-AD23 floating (caused by HOLD) after R.E., PHI1 T1 25 ns tAD! 4-6 024-031 floating (caused by HOLD) after RE., PHI1 T1 25 ns tOS! 4-6 OS floating (caused by HOLD) after RE., PHI1 Ti 50 ns tAOS! 4-6 ADS floating (caused by HOLD) after RE., PHI1 Ti 50 ns tBE! 4-6 BEn floating (caused by HOLD) after RE., PHI1 Ti 50 ns tOOIN! 4-6 ODIN floating (caused by HOLD) after RE., PHI1 Ti 50 ns tHLOAa 4-6 HLDA signal active (low) after RE., PHI1 Ti 30 ns tHLOAia 4-8 HLDA signal inactive after RE., PHI1 Ti 40 ns IOSr 4-8 OS signal returns from floating (caused by HOLD) after R.E., PHI1 Ti 50 ns tAOSr 4·8 ADS signal returns from floating (caused by HOLD) after R.E., PHI1 Ti 55 ns tBEr 4·8 BEn signals return from floating (caused by HOLD) after RE., PHI1 Ti 55 ns tOOINr 4-8 . ODIN signal returns from floating (caused by HOLD) after RE., PHI1 Ti 55 ns too IN! 4-9 ODIN signal floating (caused by FL after FLT F.E. 55 ns tOOINr 4-10 ODIN signal returns from floating (caused by FL after FLT R E. 40 ns tSPCa 4-13 SPC output active (low) after RE., PHI1 T1 35 ns tsPCia 4-13 SPC output inactive after RE., PHI1 T4 35 ns tsPCn! 4-15 SPC output nonforcing after R.E., PHI2 T4 30 ns tov 4-13 Data valid (slave processor write) after RE., PHI1 T1 55 ns tOh 4-13 Data hold (slave processor write) after R.E., PHI1 nextT10rTi 0 ns tpFSw 4-18 PFS pulse width at 0.8V (both edges) 50 ns n n 2-282 50 0 ns ns 30 ns z en w 4.0 Device Specifications (Continued) N ~ 4.4.2.1 Output Signals: Internal Propagation Delays, NS32032-10 (Continued) Name Figure Reference/ Conditions Description NS32032-10 Min Units • ...... o Max tPFSa 4-18 PFS pulse active (low) after R.E., PHI2 40 ns tPFSia 4-18 PFS pulse inactive after R.E., PHI2 40 ns tllOs 4-20a ILO signal setup before R.E., PHI1 T1 of first interlocked read cycle 50 ns tllOh 4-20b ILO signal hold after R.E., PHI1 T3 of last interlocked write cycle 10 ns tllOa 4-21 ILO signal active (low) after R.E., PHI1 35 ns tllOia 4·21 ILO signal inactive after R.E., PHI1 35 ns tUSv 4·22 U/S signal valid after R.E., PHI1 T4 35 ns tUSh 4·22 U/S signal hold after R.E., PHI1 T4 8 ns tNSPF 4·19b Nonsequential fetch to next PFS clock cycle after R.E., PHI1 T1 4 tep tpFNS 4·19a PFS clock cycle to next non·sequential fetch before R.E., PHI1 T1 4 tep Last operand transfer before R.E., PHI1 T1 of first 0 tep of an instruction to next of first bus PFS clock cycle cycle of transfer Nate: Every memory cycle starts with T4, during which Cycle Status is applied. If the CPU was idling, the sequence will be: "... Ti, T4, T1 ...". If the CPU was not idling, the sequence will be: ". . . T4, T1 . . .". tLXPF 4·29 4.4.2.2 Input Signal Requirements: NS32032-10 Name Figure Description NS32032-10 Reference/Conditions Min Units Max tPWR 4·25 Power stable to RST R.E. after Vee reaches 4.5V 50 !,-S tDls 4·5 Data in setup (read cycle) before F.E., PHI2 T3 15 ns tDlh 4·5 Data in hold (read cycle) after R.E., PHI1 T4 3 ns tHlDa 4·6 HOLD active (low) setup time (see note) before F.E., PHI2 TX1 25 ns tHlDia 4·8 HOLD inactive setup time before F.E., PHI2 Ti 25 ns tHlDh 4·6 HOLD hold time after R.E., PHI1 TX2 0 ns tFlTa 4·9 FLT active (low) setup time before F.E., PHI2 Tmmu 25 ns tFlTia 4·10 FLT inactive setup time before F.E., PHI2 T2 25 ns tRDYs 4·11,4·12 ROY setup time before F.E., PHI2 T2 or T3 15 ns tRDYh 4·11,4·12 ROY hold time after F.E., PHI1 T3 5 ns tASTs 4·23 ABT setup time (FLT inactive) before F.E., PHI2 Tmmu 20 ns tASTs 4·24 ABT setup time (FLT active) before F.E., PHI2 Tf 20 ns tASTh 4·23 ABT hold time after R.E., PHI1 0 ns 2·283 0 fII . o .... C'I C') 4.0 Device Specifications (Continued) o C'I 4.4.2.2 Input Signal Requirements: NS32032-10 (Continued) C') (/) z Name Figure Referencel Conditions Description NS32032-10 Min Units Max tRSTs 4-25,4-26 RST setup time before F.E., PHI1 15 ns tRSTw 4-26 RST pulse width at O.BV (both edges) 64 tcp tiNTs 4-27 INT setup time before F.E., PHI1 25 ns tNMlw 4-2B NMI pulse width at O.BV (both edges) 70 ns tOls 4-14 Data setup (slave read cycle) before F.E., PHI2 T1 15 ns tOlh 4-14 Data hold (slave read cycle) after R.E., PHI1 T4 3 ns tSPCd 4-15 SPC pulse delay from slave after R.E., PHI2 T4 25 ns tspcs 4-15 SPC setup time before F.E., PHI1 25 ns tgPCw 4-15 SPC pulse width from slave processor (async input) at O.BV (both edges) 20 ns tATs 4-16 AT /SPC setup for address translation strap before R.E., PHI1 of cycle during which RST pulse is removed 1 tcp 4-16 AT /SPC hold for address translation strap after F.E., PHI1 of cycle 2 tcp during which RST pulse is removed Note: This setup time is necessary to ensure prompt acknowledgement via HLOA and the ensuing floating of CPU off the buses. Note that Ihetime from the receipt of the HOLO Signal until the CPU floats is a function of the lime HOLD signal goes low, the state of the ROY input (in MMU systems), and the length of the current MMU cycle. tATh 4.4.2.3 Clocking Requirements: NS32032-10 Name Figure Referencel Conditions Description NS32032-10 Units Min Max 100 250 ns tcp 4-17 Clock period R.E., PHI1, PHI2 to next R.E., PHI1, PHI2 tCLw 4-17 PHI1, PHI2 pulse width At 2.0V on PHI1, PHI2 (both edges) 0.5tcp -10ns tCLh 4-17 PHI1, PHI2 high time At Vcc - 0.9Von PHI1, PHI2 (both edges) 0.5tcp -15ns tCLI 4-17 PHI1, PHI2, Low Time at O.BV on PHI1, PHI2 0.5 tcp -5ns tnOVL(1,2) 4-17 Non-overlap time O.BVon F.E., PHI1, PHI2 to O.BV on R.E., PHI2, PHI1 -2 5 ns tnOVLas Non·overlap asymmetry (tnOVL(1) - tnOVL(2» at O.BV on PHI1, PHI2 -4 4 ns tCLwas PHI1, PHI2 asymmetry (tcLw(1) - tCLw(2» at 2.0Von PHI1, PHI2 -5 5 ns 2-2B4 ,--------------------------------------------------------------------------, z en w 4.0 Device Specifications I\) <:) w 4.4.3 Timing Diagrams T4 OR Ti , I 11 PHI, [ PHI2 [ ADO-A023 [ -~tJl: KJ ADDRESS I X 024-031 [ I , T2 n I T3 n T4 L IL - .~~ IX I) DATA OUT X tDv tOh ) DATA OUT I-: 'AOSI. l~AD~W iDS [ ~ ..... <:) taEh W I-- ~ tSTY 'tAOS. BED-BE [ VALID -l taEv DDiN[ (HIGH) tSTh ~~ VALID 5TO·3 [ N - \I NEXT 1/ tDSS 'f- tOSI. (HIGH) I I TL/EE/5491-45 FIGURE 4·4. Write Cycle T4 OR TI PHil [ Tl n T2 T3 n ,...- PHI2 [ ADO-AD23 [ X ADDRESS A-' ------ ~ X ADDRESS ~. ------ r--- JLr--- • __ -( DATAIN ALI 024-031 [ T4 r-- ---( E -!Dlh DA~~IN -'AOt AliS[ 'ALAOSs BEO-BE3" [ DDiN[ VALID L ~ tDOINv --l tooINh VALID 5T0-3 [ os[ ROY [ X '" NE:iA~0~LE (HIGH) TL/EE/5491-46 FIGURE 4·5. Read Cycle 2·285 C) ..... N C") .-------------------------------------------------------------------------------------, 4.0 Device Specifications (Continued) C) N TX1 C") TX2 Ti TI T4 TI (f) Z PH11[ PHI2[-+_........I HOLO[ HLi5l[ IDSF IADSI IOOINI os AoS[ -t----+----+----:-__t--J IiiiiN BEo_m[-t----+----+--.,.=.::.:....j-~ --- ----(fLOATlNGj---- ----,-----tFL01ii'NG)---I~~-- ___ AOO-A023 [ ~~~_-'- 024-031 [ I ----1--___ _ ____ ~~Oj~:~ ___ _ (FLOfTING) TL/EE/5491 -47 FIGURE 4-6. Floating by HOLD Timing (CPU Not Idle Initially). Note that whenever the CPU is not idling (not in Ti), the HOLD request (HOLD low) must be active tHLDa before the falling edge of PHI2 of the clock cycle that appears two clock cycles before T4 (TX1) and stay low until tHLDh after the rising edge of PHI1 of the clock cycle that precedes T4 (TX2) for the request to be acknowledged. PHil [ PHil [ PHI2 [ PHI2 [_+-........1 HOLD [ HLDA [ lOS! lADS! _+___+-__-+. . . .,IODINf AOS.[_-r____~----~ ODIN Os, BEci-iiE3 OS. --------(FLOATING) ADS. [ • - ODIN [-+---I----+..J AOO-AD23 [ - - - 024-031 [ - - - BEo-iiE3 [ • - - (FLOATING) ------ ------ (HIGH) (FLOATING) ADO-AD23 [ . 024-031 -------------(FLOATING) -~ - - - - - - I t------~iI FLOATiNG i TL/EE/5491 -49 FIGURE 4·8. Release from HOLD TL/EE/5491 -48 FIGURE 4-7. Floating by HOLD Timing (CPU initially idle) Note that during Ti1 the CPU is already idling. 2-286 z ~ N 4.0 Device Specifications (Continued) Q Co) CPU STATES Tl MMUSTATES [ T1 TMMU TI N TI .....• Q PHI 1 PHI2 [ m[ ADO-AD23 [ (CPU) D24-D31 [ (CPU) ADS [ (CPU) PAV[ (MMU) DDiN[ BEO-BE3 [ TL/EE/S491-50 FIGURE 4·9. FLT Initiated Float Cycle Timing CPU STATES TI T2 T3 T4 Tmmu MMU STATES PHI1 [ PHI2[~_ _.J m[ (MMU) ADG-23 [ & D24-31 • (CPU) Di5iN[ (CPU) -- ADS[ (CPU) m-m[~____-+____-4______~____ TL/EE/S491-51 FIGURE 4·10. Release from FLT Timing Note that when FLTis deasserted the CPU restarts driving ODIN before the MMU releases it. This, however, does not cause any conflict, since both CPU and MMU force ODIN to the same logic level. TL/EE/5491-52 FIGURE 4·11. Ready Sampling (CPU Initially READy) 2-287 4.0 Device Specifications (Continued) I I I I :~~ ~ RDV[ TLlEE/5491-53 FIGURE 4-12. Ready Sampling (CPU Initially NOT READY) I I T1 T4 I L__ I I PHI1[JLJLJ T1 PHI1[~ T4 tDlh PHI2 [ PHI2 [ ADO-IS [ ADO-IS [ SPC[ SPc[ (CPU) DDtN[-+~______~______+- DoiN[ STD·3 STO-3 [ ADii[ [-+---f-J ~---1"'" AiiS[ (HIGH) I TL/EE/5491-55 TL/EE/5491-54 FIGURE 4-14. Slave Processor Read Timing FIGURE 4-13. Slave Processor Write Timing T4 T1 PHil [ PHI2 [ SPC [ (FROM CPU) SPC [ • (FRON SLAVE) TLlEE/5491-82 FIGURE 4-15. SPC Timing After transferring last operand to a Slave Processor, CPU turns OFF driver and holds SPC high with internal 5 kO pullup. TL/EE/5491-57 FIGURE 4-16. Reset Configuration Timing 2-288 z en w 4.0 Device Specifications (Continued) N o W N ..... I o PHI1 [ PHI2[ -----..,..r TLlEE/S491-S8 FIGURE 4-17. Clock Waveforms PHI2[~fUl-J mr~r--e- TL/EE/S491-S9 FIGURE 4-18. Relationship of PFS to Clock Cycles T1 PHI1 [ ~[b--....JI .1 -JX'-__ ST(J.3 [ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ C_O_OE_1_00_1_ _ TL/EE/S491-60 FIGURE 4-19a. Guaranteed Delay, PFS to Non-Sequential Fetch I PHil Tl I T2 I ••• I I I I LfLJLJ~fLfl-Jl- A5S[ ST~3[-+_ _ _ _CO_D_E_l_00_l_ _ _-i.r-___-r_______ TL/EE/S491-6l FIGURE 4-19b. Guaranteed Delay, Non-Sequential Fetch to PFS 2-289 ....Q r-----------------------------------------------------------------------------, N C") 4.0 Device Specifications (Continued) Q N ~ I Z T30RTI I T40RTI I T1 12 T3 T4 PHil [ AiiS[ iLO[ TL/EE/5491-62 FIGURE 4·20a. Relationship of ILO to First Operand Cycle of an Interlocked Instruction I T30RTI I T40RTI I T1 12 T3 T4 ILO[ ................................~........................_+' TL/EE/5491-63 FIGURE 4·20b. Relationship of ILO to Last Operand Cycle of an Interlocked Instruction TL/EE/5491-64 FIGURE 4·21. Relationship of ILO to Any Clock Cycle I T3 OR Ti I T4 OR TI I T1 T2 T3 T4 PHil [ U/i['-L.c..L.","","~ 1'-_+-_ _ _ _ _ _ _ _ _-+...11 TL/EE/5491-65 FIGURE 4·22. U/S Relationship to Any Bus Cycle - Guaranteed Valid Interval 2·290 z en Co) 4.0 Device Specifications (Continued) T1 ~ I Co) ~ Tmmu T2 .....• TI o PHI! [ PHI2 [ FiST/m [ TL/EE/5491-66 FIGURE 4-23. Abort Timing, FLT Not Applied PHI! [ PHI2 [ iiS/ffi [ -+-----+-----r----+r-J RsT/ABT [ TL/EE/5491-67 FIGURE 4-24. Abort Timing, FLT Applied vee ~----------~~ PHI{ _ _--1___....1 R!rrMBT[ ____________~\--J TL/EE/5491-68 FIGURE 4-25. Power-On Reset TL/EE/5491-69 FIGURE 4-26. Non-Power-On Reset 2-291 ,... C) c:.. C") C) r-----------------------------------~----------------------------------------------------_, 4.0 Device Specifications (Continued) C'I C") en z NMi[ TL/EE/5491-71 TLlEE/5491-70 FIGURE 4·28. NMI Interrupt Signal Timing FIGURE 4·27. INT Interrupt Signal Detection FIRST BUS CYCLE Tl NEXT 12 '--+-~/ TLlEE/5491-72 FIGURE 4·29. Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction Note: In a transfer of a Read·Modify·Write type operand, this is the Read transfer, displaying RMW Status (Code 1011). 2·292 .--------------------------------------------------------------------------. z en w Appendix A: Instruction Formats I\) o w Configuration bits, in SETCFG: NOTATIONS ....o~ I C I M I F II I i= Integer Type Field B = 00 (Byte) mreg NS32082: MMU 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 W = 01 (Word) D = 11 (Double Word) f= Floating Point Type Field F = 1 (Std. Floating: 32 bits) L = 0 (Long Floating: 64 bits) c= Custom Type Field D = 1 (Double Word) Q = 0 (Quad Word) op= Operation Code Valid encodings shown with each format. gen, gen 1, gen 2 = General Addressing Mode Field See Sec. 2.2 for encodings. reg = General Purpose Register Number cond = Condition Code Field 0000 = EQual: Z = 1 0001 = Not Equal: Z = 0 0010 = Carry Set: C = 1 0011 = Carry Clear: C = 0 0100 = Higher: L = 1 0101 = Lower or Same: L = 0 0110 = Greater Than: N = 1 0111 = Less or Equal: N = 0 1000 = Flag Set: F = 1 1001 = Flag Clear: F = 0 1010 = LOwer: L = 0 and Z = 0 1011 = Higher or Same: L = 1 or Z = 1 1100 = Less Than: N = 0 and Z = 0 1101 = Greater or Equal: N = 1 or Z = 1 1110 = (Unconditionally True) 1111 = (Unconditionally False) Register number, in LMR, SMR. = BPRO = BPR1 = (Reserved) = (Reserved) = (Reserved) = (Reserved) = (Reserved) = (Reserved) = (Reserved) = (Reserved) = MSR = BCNT = PTBO = PTB1 = (Reserved) = EIA 7 0 FormatO (BR) Bcond 7 0 ,, op 1 10 ' 0 ' l' 01 Format 1 -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 BSR RET CXP RXP RETT RETI SAVE RESTORE short= Short Immediate value. May contain quick: Signed 4-bit value, in MOVQ, ADDQ, CMPQ, ACB. cond: Condition Code (above), in Scond. areg: CPU Dedicated Register, in LPR, SPR. 0000 = US 0001 - 0111 = (Reserved) 1000 = FP 1001 = SP 1010 = SB 1011 = (Reserved) 1100 = (Reserved) 1101 = PSR 1110 = INTBASE 1111 = MOD 15 1 ADDQ CMPQ SPR Scond Options: in String Instructions IU/W I BIT I T = Translated B = Backward U/W = 00: None 01: While Match 11: Until Match 2-293 , , gen ENTER EXIT Nap WAIT DIA FLAG SVC BPT ,, 8 17 'sh~rt -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 1 Format 2 -000 ACB MOVQ -001 -010 LPR -011 op 0 11 ' 1 ' -100 -101 -110 fII ,.. C) ~--------------------------------------------------------------------------------, ~ Appendix A: Instruction Formats (Continued) C) ~ al7 15 I' ~e~ I' ~p ~ , I 11'1'1'1'11 : Format 3 CXPD -0000 ADJSP BICPSR -0010 JSR -0100 CASE JUMP -0110 BISPSR Trap (UND) on XXX1, 1000 -1010 -1100 -1110 al7 15 0 0 o I I I op 00111 0 MOVM CMPM INSS EXTS MOVXBW MOVZBW MOVZiD MOVXiD Format 7 -0000 MUL -0001 MEl -0010 Trap (UND) -0011 DEI QUO -0100 -0101 REM -0110 MOD DIV -0111 EXT CVTP INS CHECK MOVSU MOVUS Format a -000 INDEX FFS -001 -010 -011 -110, reg = 001 -110,reg=011 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 Format 4 ADD CMP BIC ADDC MOV OR -0000 -0001 -0010 -0100 -0101 -0110 -1000 -1001 -1010 -1100 -1101 -1110 SUB ADDR AND SUBC TBIT XOR TLlEE/5491-73 o i 000 0 1 1 1 0 Format 5 MOVS -0000 SETCFG -0001 SKPS CMPS Trap (UND) on 1XXX, 01 XX a7 -0010 -0011 i o 001110 ROT ASH CBIT CBITI Trap (UND) LSH SBIT SBITI Format 6 -0000 NEG -0001 NOT -0010 Trap (UND) -0011 SUBP -0100 ABS -0101 COM -0110 IBIT ADDP -0111 -100 -1 01 MOVif LFSR MOVLF MOVFL Format 9 -000 ROUND TRUNC -001 -010 SFSR -011 FLOOR --- 7 ---10 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 Format 10 Trap (UND) Always 2-294 0 001 1 1 1 1 0 -100 -101 -110 -111 0 1 1 1 1 1 1 TL/EE/5491-38 01 ,--------------------------------------------------------------------------, z (f) Appendix A: Instruction Formats (Continued) Co) I\l <:) Co) o I\l ..... <:) I 1 1 1 1 1 0 10 Byte Operation Word Format 11 AOO! MOVI CMP! Trap (SLAVE) SUB! NEG! Trap (UNO) Trap (UNO) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 OIV! Trap (SLAVE) Trap (UNO) Trap (UNO) MULl ABS! Trap (UNO) Trap (UNO) Format 15 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 (Custom Slave) nnn Operation Word Format 000 Format 15.0 ·--1 1 I 1 I 1 I 1 I 1 I 1 I 1 I 0 1 CATSTO CATST1 no TL/EE/5491-75 -0000 -0001 LCR SCR -0010 -0011 Format 12 Trap (UNO) on all others Trap (UNO) Always ---I I I I I I I I ___ 1 0 0 1 1 1 1 0 1 001 TL/EE/5491-76 Format 13 Format 15.1 Trap (UNO) Always o 7 o0 0 1 1 1 1 0 CCV3 LCSR CCV5 CCV4 -000 -001 -010 -011 CCV2 CCV1 SCSR CCVO -100 -101 -110 -111 Format 14 ROVAL WRVAL -0000 -0001 LMR SMR -0010 -0011 101 Trap (UNO) on 01XX, 1XXX Format 15.5 CCALO CMOVO CCMPO CCMP1 CCAL1 CMOV2 Trap (UNO) Trap (UNO) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 If nnn ~ 010,011,100,110,111 then Trap (UND) Always 2-295 CCAL3 CMOV3 Trap (UNO) Trap (UNO) CCAL2 CMOV1 Trap (UNO) Trap (UNO) -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 C) .... ~ CO) r-------------------------------------------------------------------------------~ Appendix A: Instruction Formats (Continued) ~ ---I ~ z 7 0 I I I I I II ~ ___ 0 1 0 1 1 1 1 7 I ---I I n_ x 0 X I I I I I I x 0 0 1 1 0 TL/EE/5491-80 TUEE/5491-77 Format 19 Format 16 Trap (UNO) Always Trap (UNO) Always 0 7 ---111111111 --- Implied Immediate Encodlngs: 7 0 I 1 0 1 1 1 1 0 TUEE/5491-78 r7 ; r6 ; r5 ; r4 ; r3 ; r2 r1 rO Register Mark, appended to SAVE, ENTER Format 17 7 0 Trap (UNO) Always rO 7 0 ---111111111 --- I I 0 0 0 1 1 1 0 ; r1 ; r2 ; r3 ; r4 ; r5 ; r6 ; 7 0 TL/EE/5491-79 ; offset; Format 18 r7 Register Mark, appended to RESTORE, EXIT ; lengfh -1 ; Offset/Length Modifier appended to INSS, EXTS Trap (UNO) Always 2-296 l> PERIPH CYCLE PER XCTAl2 CJ ~ , i 'I"STI TCU PHIt PHI2 RO X" ViR ViR ODIN RDY :::J Q. _ ~ BED AOsl' RSTO CTTL "" (I) WAIT REQUESTS IAOOR DECODED OR STRAPPED) NS32201 REm ~ I c*11 ...L 08EI-----------, BEl +5' 1 -- BE2 :::J BE3 (I) ""I D) (') 5" CO en c CO CO IlO' ROY '" en HOLD ...i.......i. PHI1 PHI2 BED • • • • • • BEl ILO I\) CD --J (I) I PHil 0" HLOAD :::J HOLD ROY en AI PHI2 l--+liNT HOLD 0Siffi INTS. ~NMI ill iiUiil HLOA N532032 CPU PFS PFs uis UlS ADS ADS S10-S13 RS'fiAiif RST/ABT A:iTsPc (24~t 024-031 t(8) PM NS32082 MMU I I '~ II!I., ~STROBE (24) I AODRESS . . . . . . . ADO-AD23 LATCHI .. BUFFER ODIN ODIN 5TO-513 ADO-AD23 HlOAD SPC .J ADO-AD23 10KII t-JV\I'v A24k+ +-. RST (24)t---±. +5 (32) ADDRfOATA BUS ') Auu-AD23r AND 024_031 DATA au ~ ~1u-:iT3 , TLlEE/5491-74 FIGURE 8-1. System Connection Diagram O~·~&O~&SN iii ....• .... U) . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , CD ~en z ~National PRELIMINARY ~ Semiconductor NS32CG 16-1 O/NS32CG 16-15 ..... High-Performance PrinterIDisplay Processor .... c" C; CD ~ C') en z General Description Features The NS32CG16 is a 32-bit microprocessor in the Series 32000@ family that provides special features for graphics applications. It is specifically designed to support page oriented printing technologies such as Laser, LCS, LED, lonDeposition and InkJet. • • • • The NS32CG16 provides a 16 Mbyte linear address space and a 16-bit external data bus. It also has a 32-bit ALU, an eight-byte prefetch queue, and a slave processor interface. The capabilities of the NS32CG16 can be expanded by using an external floating point unit which interfaces to the NS32CG16 as a slave processor. This combination provides optimal support for outline character fonts. • The NS32CG16 highly efficient architecture, in addition to the built-in capabilities for supporting BITBLT (BIT-aligned BLock Transfer) operations and other special graphics functions, make the device the ideal choice to handle a variety of page description languages such as Postscript™, CCSPage™ and PCLTM. Block Diagram ADlJjOATA • • • • • Software compatible with the Series 32000 family 32-bit architecture and implementation 16 Mbyte linear address space Special support for graphics applications - 18 graphics instructions - Binary compression/expansion capability for font storage using RLL encoding - Pattern magnification for Epson and HP LaserJetTM emulations - 6 BITBLT instructions on chip -Interface to an external BITBLT processing unit for very fast BITBLT operations (optional) Floating point support via the NS32081 or the NS32381 for outline font, scaling and rotation On-Chip clock generator Optimal interface to large memory arrays via the DP84xx family of DRAM controllers Power save mode High-speed CMOS technology 68-pin plastic PCC package COIflROLS4:STAtuS _ROM ... CONTROL""' Pl'EUNED OISF'LACEMDlTAND IIWEW.TE EXTRACTOR ...... """"SET 58 SPI SPO PC " .". .... II 1 1 1 1 I I ~D 1 1 ps. 1 1 t ___________________ J 2-298 TL/EE/9424-1 .----------------------------------------------------------------,z ~National PRELIMINARY en (,.) N oo ..... ~ Semiconductor NS32CO 16-1 O/NS32CO 16-15 High-Performance Microprocessors ..... o ...... z en (,.) General Description Features oo The NS32C016 is a 32-bit, CMOS microprocessor with TIL compatible inputs. The NS32C016 has a 16M byte linear address space and a 16-bit external data bus. It is fabricated with National Semiconductor's advanced CMOS process and is fully object code compatible with other Series 32000® CPU's. The NS32C016 has a 32-bit ALU, eight 32bit general purpose registers, an eight-byte prefetch queue and a highly symmetric architecture. It also incorporates a slave processor interface and provides for full virtual memory capability in conjunction with the NS32082 memory management unit (MMU). High performance floating-point instructions are provided with the NS32081 floating-point unit (FPU). The NS32C016 is intended for a wide range of high performance computer applications. III III III III III III III . en N 32-bit architecture and implementation 16M byte uniform addressing space Powerful instruction set - General 2-address capability - Very high degree of symmetry - Addressing modes optimized for high-level Language references High-speed CMOS technology TTL compatible inputs Single 5V supply 48-pin dual-in-line package Block Diagram ADD/DATA CONTROLS & STATUS it it BUS INTERFACE CONTROL F A IN STRUCTIX II r---I ~ MICROCODE ROM AND CONTROL LOGIC r a-BYTE QUEUE INSTRUCTION}DECODER I--- r---- '" II) DISPLACEMENT AND IMMEDIATE EXTRACTOR [l]J] ::> ..J 'a:z" CFG REGISTER ....w i!: l:: REGISTER SET 0 0 0 0 0 0 INTBASE SB FP SPl SPO ~ M PC RO Rl R2 R3 R4 RS R6 R7 I WORKING REGISTERS I-- \ j ! / 32·BIT ALU I I I I I I MOD I I PSR I IL_________________ .JI TLlEE/8525-1 2-299 . ..... en ..... (J1 ~ ..tD ..- ,-----------------------------------------------------------------------------, CI ~ CW) en z C; ..tD ..- H en z Table of Contents 1.0 PRODUCT INTRODUCTION 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.8 NS32C016 Interrupt Structure 2.0 ARCHITECTURAL DESCRIPTION 3.8.1 General InterruptiTrap Sequence 2.1 Programming Model 3.8.2 Interrupti Trap Return 2.1.1 General Purpose Registers 3.8.3 Maskable Interrupts (The INT Pin) 2.1.2 Dedicated Registers 3.8.3.1 Non-Vectored Mode 2.1.3 The Configuration Register (CFG) 3.8.3.2 Vectored Mode: Non-Cascaded Case 2.1.4 Memory Organization 3.8.3.3 Vectored Mode: Cascaded Case 2.1.5 Dedicated Tables 3.8.4 Non-Maskable Interrupt (The NMI Pin) 2.2 Instruction Set 3.8.5 Traps 2.2.1 General Instruction Format 3.8.6 Prioritization 2.2.2 Addressing Modes 3.8.7InterruptiTrap Sequences: Detail Flow 2.2.3 Instruction Set Summary 3.8.7.1 Maskable/Non-Maskable Interrupt Sequence 3.0 FUNCTIONAL DESCRIPTION 3.8.7.2 Trap Sequence: Traps Other Than Trace 3.1 Power and Grounding 3.B.7.3 Trace Trap Sequence 3.2 Clocking 3.B.7.4 Abort Sequence 3.3 Resetting 3.9 Slave Processor Instructions 3.4 Bus Cycles 3.9.1 Slave Processor Protocol 3.4.1 Cycle Extension 3.9.2 Floating Point Instructions 3.4.2 Bus Status 3.9.3 Memory Management Instructions 3.4.3 Data Access Sequences 3.9.4 Custom Slave Instructions 3.4.3.1 Bit Accesses 4.0 DEVICE SPECIFICATIONS 3.4.3.2 Bit Field Accesses 4.1 NS32C016 Pin Descriptions 3.4.3.3 Extending Multiply Accesses 3.4.4 Instruction Fetches 4.1.1 Supplies 3.4.5 Interrupt Control Cycles 4.1.2 Input Signals 3.4.6 Slave Processor Communication 4.1.3 Output Signals 4.1.4 Input-Output Signals 3.4.6.1 Slave Processor Bus Cycles 3.4.6.2 Slave Operand Transfer Sequences 4.2 Absolute Maximum Ratings 3.5 Memory Management Option 4.3 Electrical Characteristics 3.5.1 Address Translation Strap 4.4 Switching Characteristics 3.5.2 Translated Bus Timing 4.4.1 Definitions 3.5.3 The FLT (Float) Pin 4.4.2 Timing Tables 3.5.4 Aborting Bus Cycles 3.5.4.1 The Abort Interrupt 4.4.2.1 Output Signals: Internal Propagation Delays 3.5.4.2 Hardware Considerations 4.4.2.2 Input Signal Requirements 4.4.2.3 Clocking Requirements 3.6 Bus Access Control APPENDIX A: INSTRUCTION FORMATS 3.7 Instruction Status APPENDIX B: INTERFACING SUGGESTIONS List of Illustrations The General and Dedicated Registers ...........................................................................• 2-1 Processor Status Register ......•.•.....•...........................•.•........•.......•.........................2-2 CFG Register .................................................•..•.................••......•.•....•.•.....•....2-3 Module Descriptor Format. ....•........•...............•.••..........•.......•..................................2-4 A Sample Link Table .............................................•.................•............••.............2-5 General Instruction Format .........•....................•....................................................... 2-6 Index Byte Format .......................................................................................••....2-7 Displacement Encodings ....•..•••......••.••......•......•..........•........•................................. 2-B Recommended Supply Connections ......................................................................•..•...• 3-1 Clock Timing Relationships ......•...................•.......•...........•......•.......•........................ 3-2 2-300 z List of Illustrations (Continued) Power-On Reset Requirements .................................................................................. 3-3 General Reset Timing ..........................................................................................3-4 Recommended Reset Connections, Non-Memory-Managed System ................................................. 3-5a Recommended Reset Connections, Memory-Managed System ..................................................... 3-5b Bus Connections ...............................................................................................3-6 Read Cycle Timing .............................................................................................3-7 Write Cycle Timing .............................................................................................3-8 ROY Pin Timing ................................................................................................3-9 Extended Cycle Example ......................................................................................3-1 0 Memory Interface .............................................................................................3-11 en w N oo ..... en ..... o I "enz w N oo ..... en ..... U1 I Slave Processor Connections ..•...............................................................................3-12 CPU Read from Slave Processor ................................................................................3-13 CPU Write to Slave Processor .................................................................................. 3-14 Read Cycle with Address Translation (CPU Action) ................................................................ 3-15 Write Cycle with Address Translation (CPU Action) ................................................................ 3-16 Memory-Managed Read Cycle .................................................................................. 3-17 Memory-Managed Write Cycle ..................................................................................3-18 FLTTiming ...................................................................................................3-19 HOLD Timing, Bus Initially Idle ..................................................................................3-20 HOLD Timing, Bus Initially Not Idle .............................................................................. 3-21 Interrupt Dispatch and Cascade Tables ..........................................................................3-22 Interrupt/Trap Service Routine Calling Sequence .................................................................3-23 Return from Trap (RETT n) Instruction Flow ...................................................................... 3-24 Return from Interrupt (RET I) Instruction Flow ..................................................................... 3-25 Interrupt Control Unit Connections (16 Levels) .................................................................... 3-26 Cascaded Interrupt Control Unit Connections ..................................................................... 3-27 Slave Processor Status Word Format. ........................................................................... 3-30 Connection Diagram ............................................................................................4-1 Timing Specification Standard (CMOS Output Signals) ............................................................. .4-2 Timing Specification Standard (TTL Input Signals) .................................................................. 4-3 Write Cycle ................................................................................................... .4-4 Read Cycle ....................................................................................................4-5 Floating by HOLD Timing (CPU Not Idle Initially) .................................................................... 4-6 Floating by HOLD Timing (CPU Initially Idle) .......................................................................4-7 Release from HOLD ............................................................................................4-8 FLT Initiated Cycle Timing ....................................................................................... 4-9 Release from FLT Timing ......................................................................................4-1 0 Ready Sampling (CPU Initially READY) ..........................................................................4-11 Ready Sampling (CPU Initially NOT READY) ......................................................................4-12 Slave Processor Write Timing .................................................................................. .4-13 Slave Processor Read Timing .................................................................................. 4-14 SPC Non-Forcing Delay ........................................................................................4-15 Reset Configuration Timing ..................................................................................... 4-16 Clock Waveforms .............................................................................................4-17 Relationship of PFS to Clock Cycles ........•.................................................................... 4-18 Guaranteed Delay, PFS to Non-Sequential Fetch ................................................................ 4-19a Guaranteed Delay, Non-Sequential Fetch to PFS ................................................................ 4-19b Relationship of ILO to First Operand Cycle of an Interlocked Instruction ............................................. 4-20a Relationship of ILO to Last Operand Cycle of an Interlocked Instruction ............................................. 4-20b Relationship of ILO to Any Clock Cycle ..........................................................................4-21 U/S Relationship to any Bus Cycle-Guaranteed Valid Interval ...................................................... 4-22 Abort Timing, FLT Not Applied ................................................................................. .4-23 Abort Timing, FLT Applied ...................................................................................... 4-24 2-301 fI .... r---------------------------------------------------------------------------------, ch List of Illustrations (Continued) .... Power·On Reset .............................................................................................. 4·25 U) ~tn Z ...... Q .... ch .... ~ U) z Non·Power·On Reset .•....••..•............•..........................•.............•...................•.....4·26 INT Interrupt Signal Detection ..................................................................................4·27 NMllnterrupt Signal Timing ••...••....•......................................................•.....•.....•...... 4·28 Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction .....................................................................................4·29 List of Tables NS32C016 Addressing Modes ................................................................................... 2·1 NS32C016 Instruction Set Summary ..............................................................................2·2 Bus Cycle Categories ...........................................................................................3·1 Access Sequences .............................................................................................3·2 Interrupt Sequences ............................................................................................3·3 Floating Point Instruction Protocols ............................................................................... 3·4 Memory Management Instruction Protocols ........................................................................ 3·5 Custom Slave Instruction Protocols ............................................................................... 3·6 2·302 .--------------------------------------------------------------------------, z (J) 1.0 Product Introduction (0) N The Series 32000 Microprocessor family is a new generation of devices using National's XMaS and CMOS technologies. By combining state-of-the-art MaS technology with a very advanced architectural design philosophy, this family brings mainframe computer processing power to VLSI processors. cess, which allows a significant reduction in hardware and software cost. Software Processor Concept The Series 32000 architecture allows future expansions of the instruction set that can be executed by special slave processors, acting as extensions to the CPU. This concept of slave processors is unique to the Series 32000 family. It allows software compatibility even for future components because the slave hardware is transparent to the software. With future advances in semiconductor technology, the slaves can be physically integrated on the CPU chip itself. The Series 32000 family supports a variety of system configurations, extending from a minimum low-cost system to a powerful 4 gigabyte system. The architecture provides complete upward compatibility from one family member to another. The family consists of a selection of CPUs supported by a set of peripherals and slave processors that provide sophisticated interrupt and memory management facilities as well as high-speed floating-point operations. The architectural features of the Series 32000 family are described briefly below: To summarize, the architectural features cited above provide three primary performance advantages and characteristics: • High-Level Language Support • Easy Future Growth Path Powerful Addressing Modes_ Nine addressing modes available to all instructions are included to access data structures efficiently. • Application Flexibility 2.0 Architectural Description Data Types_ The architecture provides for numerous data types, such as byte, word, doubleword, and BCD, which may be arranged into a wide variety of data structures. 2.1 PROGRAMMING MODEL The Series 32000 architecture includes 16 registers on the NS32C016 CPU. SymmetriC Instruction Set While avoiding special case instructions that compilers can't use, the Series 32000 family incorporates powerful instructions for control operations, such as array indexing and external procedure calls, which save considerable space and time for compiled code. 2.1.1 General Purpose Registers There are eight registers for meeting high speed general storage requirements, such as holding temporary variables and addresses. The general purpose registers are free for any use by the programmer. They are thirty-two bits in length. If a general register is specified for an operand that is eight or sixteen bits long, only the low part of the register is used; the high part is not referenced or modified. Memory-to-Memory Operations. The Series 32000 CPUs represent two-address machines. This means that each operand can be referenced by anyone of the addressing modes provided. This powerful memory-to-memory architecture permits memory locations to be treated as registers for all useful operations. This is important for temporary operands as well as for context switching. Memory Management Either the NS32382 or the NS32082 Memory Management Unit may be added to the system to provide advanced operating system support functions, including dynamic address translation, virtual memory management, and memory protection. 2.1.2 Dedicated Registers The eight dedicated registers of the NS32C016 are assigned specific functions. PC: The PROGRAM COUNTER register is a pointer to the first byte of the instruction currently being executed. The PC is used to reference memory in the program section. (In the NS32C016 the upper eight bits of this register are always zero.) sPa, SP1: The SPO register points to the lowest address of the last item stored on the INTERRUPT STACK. This stack is normally used only by the operating system. It is used primarily for storing temporary data, and holding return information for operating system subroutines and interrupt and Large, Uniform Addressing. The NS32C016 has 24-bit address pointers that can address up to 16 megabytes without any segmentation; this addressing scheme provides flexible memory management without added-on expense. Modular Software Support_ Any software package for the Series 32000 family can be developed independent of all other packages, without regard to individual addressing. In addition, ROM code is totally relocatable and easy to ac- GENERAL DEDICATED 32 32 RD PROGRAM COUNTER PC STATIC BASE SB FRAME POINTER FP Rl R2 R3 USER STACK PTR. INTERRUPT STACK PTR. SPl } SP R4 SPO RS INTERRUPT BASE PSR MOD STATUS MODULE :========:=======: INTBASE R6 R7 '--_ _ _ _ _-'-_ _--'-_ _--' TL/EE/8S2S-3 FIGURE 2-1. The General and Dedicated Registers 2-303 oo ..... 0) ..... o ...... I Z (J) (0) N oo ..... ..... 0) I U1 U) .cD .- 8 C'I Cf) U) z ..... o .cD .o ~ Cf) U) z r---------------------------------------------------------------------------------, 2.0 Architectural Description (Continued) trap service routines. The SP1 register pOints to the lowest address of the last item stored on the USER STACK. This stack is used by normal user programs to hold temporary data and subroutine return information. F: The F bit is a general condition flag, which is altered by many instructions (e.g., integer arithmetic instructions use it to indicate overflow). Z: The Z bit is altered by comparison instructions. In a comparison instruction the Z bit is set to "1" if the second operand is equal to the first operand; otherwise it is set to "0". In this document, reference is made to the SP register. The terms "SP register" or "SP" refer to either SPO or SP1, depending on the setting of the S bit in the PSR register. If the S bit in the PSR is 0 then SP refers to SPO. If the S bit in the PSR is 1 then SP refers to SP1. (In the NS32C016 the upper eight bits of these registers are always zero.) N: The N bit is altered by comparison instructions. In a comparison instruction the N bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as signed integers. Otherwise, it is set to "0". Stacks in the Series 32000 family grow downward in memory. A Push operation pre-decrements the Stack Pointer by the operand length. A Pop operation post-increments the Stack Pointer by the operand length. U: If the U bit is "1" no privileged instructions may be executed. If the U bit is "0" then all instructions may be executed. When U = 0 the NS32C016 is said to be in Supervisor Mode; when U = 1 the NS32C016 is said to be in User Mode. A User Mode program is restricted from executing certain instructions and accessing certain registers which could interfere with the operating system. For example, a User Mode program is prevented from changing the setting of the flag used to indicate its own privilege mode. A Supervisor Mode program is assumed to be a trusted part of the operating system, hence it has no such restrictions. FP: The FRAME POINTER register is used by a procedure to access parameters and local variables on the stack. The FP register is set up on procedure entry with the ENTER instruction and restored on procedure termination with the EXIT instruction. The frame pointer holds the address in memory occupied by the old contents of the frame pOinter. (In the NS32C016 the upper eight bits of this register are always zero.) S: The S bit specifies whether the SPO register or SP1 register is used as the stack pointer. The bit is automatically cleared on interrupts and traps. It may have a setting of 0 (use the SPO register) or 1 (use the SP1 register). SB: The STATIC BASE register pOints to the global variables of a software module. This register is used to support relocatable global variables for software modules. The SB register holds the lowest address in memory occupied by the global variables of a module. (In the NS32C016 the upper eight bits of this register are always zero.) P: The P bit prevents a TRC trap from occurring more than once for an instruction (Section 3.8.5). It may have a setting of 0 (no trace pending) or 1 (trace pending). I: If 1= 1, then all interrupts will be accepted (Section 3.8). If 1=0, only the NMI interrupt is accepted. Trap enables are not affected by this bit. INTBASE: The INTERRUPT BASE register holds the address of the dispatch table for interrupts and traps (Section 3.8). The INTBASE register holds the lowest address in memory occupied by the dispatch table. (in the NS32C016 the upper eight bits of this register are always zero.) 2.1.3 The Configuration Register (CFG) Within the Control section of the NS32C016 CPU is the fourbit CFG Register, which declares the presence of certain external devices. It is referenced by only one instruction, SETCFG, which is intended to be executed only as part of system initialization after reset. The format of the CFG Register is shown in Figure 2-3. MOD: The MODULE register holds the address of the module descriptor of the currently executing software module. The MOD register is sixteen bits long, therefore the module table must be contained within the first 64k bytes of memory. PSR: The PROCESSOR STATUS REGISTER (PSR) holds the status codes for the NS32C016 microprocessor. The PSR is sixteen bits long, divided into two eight-bit halves. The low order eight bits are accessible to all programs, but the high order eight bits are accessible only to programs executing in Supervisor Mode. 15 817 FIGURE 2-3. CFG Register The CFG I bit declares the presence of external interrupt vectoring circuitry (specifically, the NS32202 Interrupt Control Unit). If the CFG I bit is set, interrupts requested through the INT pin are "Vectored." If it is clear, these interrupts are "Non-Vectored." See Section 3.8. 0 IXIXIXD--fI-+-""'-+--+~-----1 RsTi RSTO 1----....,.------1 iiSr/m !L _____________ ..1I EXTERNAL RESET (OPTIONAL) O!:50p.sec RESET SWITCH (OPTIONAL) SYSTEM RESET TUEE/B525-13 FIGURE 3-5a. Recommended Reset Connections, Non-Memory-Managed System Vee NS32C201 TCU NS32082 MMU NS32C016 CPU 1"'------------, I I II RESET 1>-l-I-+-....,..-f--+~+-------I I RsTi iiSTci !L _____________ ..1: EXTERNAL RESET (OPTIONAL) 2: SOj..lsec RESET SWITCH (OPTIONAL) TUEE/B525-14 FIGURE 3-5b. Recommended Reset Connections, Memory-Managed System 3) To acknowledge an interrupt and allow external circuitry to provide a vector number, or to acknowledge completion of an interrupt service routine. 3.4 BUS CYCLES The NS32C016 CPU has a strap option which defines the Bus Timing Mode as either With or Without Address Translation. This section describes only bus cycles under the No Address Translation option. For details of the use of the strap and of bus cycles with address translation, see Section 3.5. 4) To transfer information to or from a Slave Processor. In terms of bus timing, cases 1 through 3 above are identical. For timing specifications, see Section 4. The only external difference between them is the four-bit code placed on the Bus Status pins (STO-ST3). Slave Processor cycles differ in that separate control signals are applied (Section 3.4.6). The CPU will perform a bus cycle for one of the following reasons: 1) To write or read data, to or from memory or a peripheral interface device. Peripheral input and output are memory-mapped in the Series 32000 family. The sequence of events in a non-Slave bus cycle is shown in Figure 3-7 for a Read cycle and Figure 3-8 for a Write cycle. The cases shown assume that the selected memory or interface device is capable of communicating with the CPU at full speed. If it is not, then cycle extension may be requested through the ROY line (Section 3.4.1). 2) To fetch instructions into the eight-byte instruction queue. This happens whenever the bus would otherwise be idle and the queue is not already full. 2-313 Q ...... Z UJ c.:I N o Q .... ....U1• G) .... r---------------------------------------------------------------------------------, U) ch .... 8C'oI ~ Z c; .... ....ch ~ CO) en z 3.0 Functional Description (Continued) A full-speed bus cycle is performed in four cycles of the PHI1 clock signal, labeled T1 through T4. Clock cycles not associated with a bus cycle are designated Ti (for "Idle"). During T1, the C~U applies an address on pins ADO-AD15 and A16-A23. It also provides a low-going pulse on the ADS pin, which serves the dual purpose of informing external circuitry that a bus cycle is starting and of providing control to an external latch for demultiplexing Address bits 015 from the ADO-AD15 pins. See Figure 3-6. During this time also the status signals DDIN, indicating the direction of the transfer, and HBE, indicating whether the high byte (AD8-AD15) is to be referenced, become valid. During T2 the CPU switches the Data Bus, ADO-AD15, to either accept or present data. Note that the signals A 16A23 remain valid, and need not be latched. It also starts the data strobe (DS), signaling the beginning of the data transfer. Associated signals from the NS32C201 Timing Control Unit are also activated at this time: RD (Read Strobe) or WR (Write Strobe), TSO (Timing State Output, indicating that T2 has been reached) and DBE (Data Buffer Enable). PHil The T3 state provides for access time reqUirements, and it occurs at least once in a bus cycle. At the end of T2, on the falling edge of the PHI2 clock, the RDY (Ready) line is sampled to determine whether the bus cycle will be extended (Section 3.4.1). If the CPU is performing a Read cycle, the Data Bus (ADOAD15) is sampled at the falling edge of PHI2 of the last T3 state, see Section 4. Data must, however, be held at least until the beginning of T4. DS and RD are guaranteed not to go inactive before this point, so the rising edge of either of them may safely be used to disable the device providing the input data. The T4 state finishes the bus cycle. At the beginning of T4, the DS, RD, or WR, and TSO signals go inactive, and at the rising edge of PHI2, DBE goes inactive, having provided for necessary data hold times. Data during Write cycles remains valid from the CPU throughout T4. Note that the Bus Status lines (STO-ST3) change at the beginning of T4, anticipating the following bus cycle (if any). PHI2 AD AD~--------------------~ NS32C201 WR Wii~--------------------'fSo 1iO~--------------------TL/EE/8525-15 FIGURE 3·6. Bus Connections 2-314 3.0 Functional Description z en w I\) n Q (Continued) NS32COI & CPU BUS SIGNALS I PHil T40RTi I n T2 T3 T4 nORTi .... ....• I G) [ Q ...... Z en w I\) PHI 2 n Q [ A16·A23 [ AOO·ADI5 [ ADS [ ST()'ST3 [ ODIN [ Hii [ Os [ RDV [ .... • .... CI1 G) TL/EE/8525-16 FIGURE 3-7. Read Cycle Timing 2·315 lot) .,... • CD .,... Q oN 3.0 Functional Description (Continued) NS32C016 CPU BUS SIGNALS M U) T1 Z . C;) .,... CD .,... PHI.1 [ PHI2 [ T2 T3 T4 I T1 ORTi I Q o N M U) Z A16·A23 [ ADO-AD1S [ ADS [ STO·ST3 [ Di5iN [ HBE [ OS [ ROY [ DBE TL/EE/B525-17 FIGURE 3·8. Write Cycle Timing 2·316 z 3.0 Functional Description (J) Co) I\) (Continued) 3.4.1 Cycle Extension The ROY pin is driven by the NS32C201 Timing Control Unit, which applies WAIT States to the CPU as requested on three sets of pins: To allow sufficient strobe widths and access times for any speed of memory or peripheral device, the NS32C016 provides for extension of a bus cycle. Any type of bus cycle except a Slave Processor cycle can be extended. In Figures 3-1 and 3-8, note that during T3 all bus control signals from the CPU and TCU are flat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the ROY (Ready) pin. At the end of T2 on the falling edge of PHI2, the ROY line is sampled by the CPU. If ROY is high, the next T -states will be T3 and then T4, ending the bus cycle. If it is sampled low, then another T3 state will be inserted after the next T·state and the ROY line will again be sampled on the falling edge of PHI2. Each additional T3 state after the first is referred to as a "wait state." See Figure 3-9. T1 T2 1) CWAIT (Continues WAIT), which holds the CPU in WAIT states until removed. 2) WAIT1, WAIT2, WAIT4, WAIT8 (Collectively WAITn), which may be given a four-bit binary value requesting a specific number of WAIT States from 0 to 15. 3) PER (Peripheral), which inserts five additional WAIT states and causes the TCU to reshape the RO and WR strobes. This provides the setup and hold times required by most MOS peripheral interface devices. o o .... cp .... o ....... Z (J) Co) I\) oo .... ..... c.n CJ) Combinations of these various WAIT requests are both legal and useful. For details of their use, see the NS32C201 TCU Oata Sheet. Figure 3-10 illustrates a typical Read cycle, with two WAIT states requested through the TCU WAITn pins. T3 I T3 (WAin T4 PHil PHI 2 ROY TLlEE/8525-l8 FIGURE 3-9. ROY Pin Timing 3.4.2 Bus Status expecting a vector number to be provided from the Master NS32202 Interrupt Control Unit. If the vectoring mode selected by the last SETCFG instruction was Non-Vectored, then the CPU will ignore the value it has read and will use a default vector instead, having assumed that no NS32202 is present. See Section 3.4.5. The NS32C016 CPU presents four bits of Bus Status information on pins STO-ST3. The various combinations on these pins indicate why the CPU is performing a bus cycle, or, if it is idle on the bus, then why it is idle. Referring to Figures 3-1 and 3-8, note that Bus Status leads the corresponding Bus Cycle, going valid one clock cycle before T1, and changing to the next state at T4. This allows the system designer to fully decode the Bus Status and, if desired, latch the decoded signals before ADS initiates the Bus Cycle. 0101 - Interrupt Acknowledge, Cascaded. The CPU is reading a vector number from a Cascaded NS32202 Interrupt Control Unit. The address provided is the address of the NS32202 Hardware Vector register. See Section 3.4.5. The Bus Status pins are interpreted as a four-bit value, with STO the least significant bit. Their values decode as follows: The bus is idle because the CPU does not need to perform a bus access. The bus is idle because the CPU is executing the WAIT instruction. 0110- End of Interrupt, Master. 0010 - (Reserved for future use.) 0111 - End of Interrupt, Cascaded. 0011 - The bus is idle because the CPU is waiting for a Slave Processor to complete an instruction. 0100 - Interrupt Acknowledge, Master. The CPU is performing a Read cycle. To acknowledge receipt of a Non-Maskable Interrupt (on NMI) it will read from address FFFF0016, but will ignore any data provided. 1000 - The CPU is reading from a Cascaded Interrupt Control Unit to indicate that it is returning (through RETI) from an interrupt service routine requested by that unit. See Section 3.4.5. Sequential Instruction Fetch. 0000 0001 - The CPU is performing a Read cycle to indicate that it is executing a Return from Interrupt (RETI) instruction. See Section 3.4.5. The CPU is reading the next sequential word from the instruction stream into the Instruction Queue. It will do so whenever the bus would otherwise be idle and the queue is not already full. To acknowledge receipt of a Maskable Interrupt (on INT) it will read from address FFFE0016, 2-317 • .... ....oc.b ~ ~r-----------------------------------------------------------------. 3.0 Functional Description NS32C018 CPU BUS SIGNALS PREV.CYCLE (/) z ..... CD .... 8 C; IT40RTII PHil [ PHI2 [ N ~ Z (Continued) AI6-A23 [ AIlG-ADI5 [ T2 I T3 I (W~T) I (vlllT) I NEXT CYCLE T4 InORTl1 _IL ILrL IL!LIL!L!L - Ul J1LJ1 LJ1 U1 U- J1 J1 ~ ~ OC ~ NEXT ADDR IV --- NEXTA~R V ~~ X STATUS VALID NEXT STATUS ;;;;;;'""" DoiN[ ~ rw0 ~ iiiF.[ ~ ~ ~ - r- ADDRESS VALID ~ ~ ADDR ~IN VALID ~--~ ~ ~ ~~ AiiS[ STO-ST3 [ I TI E VALID V II- 1\ NS32C201 TCU EXTENSION SIGNALS ~ ~ CWAiT[ %: ~ ~ PER [ ~ ~ WI WAiTn[ ~ ~ ~ i ~~~~~ ~ ~ ~ ~~~ % t ~ S t~ . t ~ ~ ~ ~~ I ROY [ (TCUTOCP U) NS32C201 TCU BUS SIGNALS II -V -/ iiBe[ - -1 - / V r"\ TL/EE/B525-19 FIGURE 3·10. Extended Cycle Example Note: Arrows on CWAi'f, PEi'i. WAITn indicate points at which the TCU samples. Arrows on AOO-A015 and ROY indicate points at which the CPU samples. 2·318 z en Co) 3.0 Functional Description (Continued) N 1001 - Non-Sequential Instruction Fetch. The CPU is performing the first fetch of instruction code after the Instruction Queue is purged. This will occur as a result of any jump or branch, or any interrupt or trap, or execution of certain instructions. 1010- Data Transfer. The CPU is reading or writing an operand of an instruction. 1011 - 1100 - Memory is organized as two eight-bit banks, each bank receiving the word address (A 1-A23) in parallel. One bank, connected to Data Bus pins ADO-AD7, is enabled to respond to even byte addresses; i.e., when the least significant address bit (AO) is low. The other bank, connected to Data Bus pins AD8-AD15, is enabled when HBE is low. See Figure 3-11. HBE Read RMW Operand. The CPU is reading an operand which will subsequently be modified and rewritten. If memory protection circuitry would not allow the following Write cycle, it must abort this cycle. Read for Effective Address Calculation. The CPU is reading information from memory in order to determine the Effective Address of an operand. This will occur whenever an instruction uses the Memory Relative or External addressing mode. AO(LBE) n Q .... ....• en Q ....... Z en Co) N n Q .... • .... C7I en Al·A23 1101 - Transfer Slave Processor Operand. The CPU is either transferring an instruction operand to or from a Slave Processor, or it is issuing the Operation Word of a Slave Processor instruction. See Section 3.9.1. 1110- Read Slave Processor Status. The CPU is reading a Status Word from a Slave Processor. This occurs after the Slave Processor has signalled completion of an instruction. The transferred word tells the CPU whether a trap should be taken, and in some instructions it presents new values for the CPU Processor Status Register bits N, Z, L or F. See Section 3.9.1. 1111 Broadcast Slave 10. The CPU is initiating the execution of a Slave Processor instruction. The 10 Byte (first byte of the instruction) is sent to all Slave Processors, one of which will recognize it. From this point the CPU is communicating with only one Slave Processor. See Section 3.9.1. TL/EE/B525-20 FIGURE 3·11. Memory Interface Any bus cycle falls into one of three categories: Even Byte Access, Odd Byte Access, and Even Word Access. All accesses to any data type are made up of sequences of these cycles. Table 3-1 gives the state of AO and HBE for each category. TABLE 3·1. Bus Cycle Categories HBE AO Category o Even Byte Odd Byte o o o Even Word Accesses of operands requiring more than one bus cycle are performed sequentially, with no idle T-States separating them. The number of bus cycles required to transfer an operand depends on its size and its alignment (i.e., whether it starts on an even byte address or an odd byte address). Table 3-2 lists the bus cycle performed for each situation. For the timing of AO and HBE, see Section 3.4. 3.4.3 Data Access Sequences The 24-bit address provided by the NS32C016 is a byte address; that is, it uniquely identifies one of up to 16,777,216 eight-bit memory locations. An'important feature of the NS32C016 is that the presence of a 16-bit data bus imposes no restrictions on data alignment; any data item, regardless of size, may be placed starting at any memory address. The NS32C016 provides a special control Signal, High Byte Enable (HBE), which facilitates individual byte addressing on a 16-bit bus. 2-319 • ....• CD .... 0 It) 3.0 Functional Description (Continued) 0 TABLE 3-2. Access Sequences N C") en Z ..... 0 Cycle Type Address .... tb .... 0 HBE AO Low Bus A. Odd Word Access Sequence 0 BYTE 1 N C") en Z High Bus 2 Odd Byte Even Byte A A+1 0 1 1 0 Byte 0 Don't Care BYTE 0 -A Don't Care Byte 1 B. Even Double-Word Access Sequence 1 2 Even Word Even Word A A+2 BYTE 3 BYTE 2 0 0 0 0 BYTE 1 Byte 1 Byte 3 BYTE 0 -A Byte 0 Byte 2 C. Odd Double-Word Access Sequence 2 3 Odd Byte Even Word Even Byte A A+1 A+3 BYTE 3 BYTE 2 0 0 1 0 0 BYTE 1 Byte 0 Byte 2 Don't Care BYTE 0 -A Don't Care Byte 1 Byte 3 D. Even Quad-Word Access Sequence BYTE 7 2 BYTE 6 BYTES Even Word Even Word BYTE 3 BYTE 4 A A+2 BYTE 2 BYTE 1 0 0 0 0 Byte 1 Byte 3 0 0 0 0 Byte 5 Byte 7 BYTE 0 Byte 0 Byte 2 Byte 4 ByteS -A Other bus cycles (instruction prefetch or slave) can occur here. 3 4 Even Word Even Word A+4 A+S E Odd Quad-Word Access Sequence BYTE 7 1 2 3 BYTE 6 Odd Byte Even Word Even Byte BYTES BYTE 4 BYTE 3 A A+1 A+3 0 0 BYTE 2 BYTE 1 BYTE 0 0 0 Byte 0 Byte 2 Don't Care Don't Care Byte 1 Byte 3 0 0 Byte 4 ByteS Don't Care Don't Care Byte 5 Byte 7 Other bus cycles (instruction prefetch or slave) can occur here. 4 5 S Odd Byte Even Word Even Byte A+4 A+5 A+7 0 0 2-320 -A 3.0 Functional Description (Continued) 3.4.3.1 Bit Accesses A Sequential Fetch will be performed by the CPU whenever the Data Bus would otherwise be idle and the Instruction Queue is not currently full. Sequential Fetches are always Even Word Read cycles (Table 3-1). A Non-Sequential Fetch occurs as a result of any break in the normally sequential flow of a program. Any jump or branch instruction, a trap or an interrupt will cause the next Instruction Fetch cycle to be Non-Sequential. In addition, certain instructions flush the instruction queue, causing the next instruction fetch to display Non-Sequential status. Only the first bus cycle after a break displays Non-Sequential status, and that cycle is either an Even Word Read or an Odd Byte Read, depending on whether the destination address is even or odd. The Bit Instructions perform byte accesses to the byte containing the designated bit. The Test and Set Bit instruction (SBIT), for example, reads a byte, alters it, and rewrites it, having changed the contents of one bit. 3.4.3.2 Bit Field Accesses An access to a Bit Field in memory always generates a Double·Word transfer at the address containing the least significant bit of the field. The Double Word is read by an Extract instruction; an Insert instruction reads a Double Word, modi· fies it, and rewrites it. 3.4.3.3 Extending Multiply Accesses The Extending Multiply Instruction (MEl) will return a result which is twice the size in bytes of the operand it reads. I! the multiplicand is in memory, the most·significant hal! of the result is written first (at the higher address), then the leastsignificant half. This is done in order to support retry if this instruction is aborted. 3.4.5 Interrupt Control Cycles Activating the INT or NMI pin on the CPU will initiate one or more bus cycles whose purpose is interrupt control rather than the transfer of instructions or data. Execution of the Return from Interrupt instruction (RETI) will also cause Interrupt Control bus cycles. These differ from instruction or data transfers only in the status presented on pins STO-ST3. All Interrupt Control cycles are single-byte Read cycles. 3.4.4 Instruction Fetches Instructions for the NS32C016 CPU are "prefetched"; that is, they are input before being needed into the next available entry of the eight·byte Instruction Queue. The CPU performs two types of Instruction Fetch cycles: Sequential and Non· Sequential. These can be distinguished from each other by their differing status combinations on pins STO-ST3 (Section 3.4.2). This section describes only the Interrupt Control sequences associated with each interrupt and with the return from its service routine. For full details of the NS32C016 interrupt structure, see Section 3.8. 2-321 z en C.:I N oo .... ....o 0) I ....... z en C.:I N oo .... .... 0) I U1 an .... "'.... 3.0 Functional Description (Continued) CI ~ (/) Z TABLE 3-3. Interrupt Sequences Cycle Status AO Address High Bus Low Bus C;; ....• CD .... 8 A. Non·Maskable Interrupt Control Sequences. C'I Interrupt Acknowledge 1 0100 Z Interrupt Return ~ FFFF0016 o o Don't Care Don't Care None: Performed through Return from Trap (RETT) instruction. B. Non· Vectored Interrupt Control Sequences. Interrupt Acknowledge 1 0100 FFFE0016 o o Don't Care Don't Care Interrupt Return None: Performed through Return from Trap (RETT) instruction. C. Vectored Interrupt Sequences: Non·Cascaded Interrupt Acknowledge 1 0100 FFFE0016 o o Don't Care Vector: Range: 0-127 Interrupt Return 1 0110 FFFE0016 o o Don't Care Vector: Same as in Previous Int. Ack.Cycle D. Vectored Interrupt Sequences: Cascaded Interrupt Acknowledge 1 0100 FFFE0016 o o Don't Care Cascade Index: range -16to-l (The CPU here uses the Cascade Index to find the Cascade Address.) 2 0101 Cascade 0 lOr 0 or O' Address l' Vector, range 0-255; on appropriate half of Data Bus for even/odd address Interrupt Return 0110 1 Don't Care Cascade Index: same as in previous Int. Ack.Cycle Don't Care Don't Care FFFE0016 o o (The CPU here uses the Cascade Index to find the Cascade Address.) 2 0111 Cascade 0 1 or 0 or O' l' Address • If the Cascaded ICU Address is Even (AO is low), then the CPU applies RBE high and reads the vector number from bits 0-7 of the Data Bus. If the address is Odd (AO is high). then the CPU applies RBE low and reads the vector number from bits 8-15 of the Data Bus. The vector number may be In the range 0-255. 2-322 z 3.0 Functional Description en Co) (Continued) N C') 3.4.6 Slave Processor Communication AO(D-15) In addition to its use as the Address Translation strap (Section 3.5.1), the AT/SPC pin is used as the data strobe for Slave Processor transfers. In this role, it is referred to as Slave Processor Control (SPC). In a Slave Processor bus cycle, data is transferred on the Data Bus (ADO-AD15), and the status lines STO-ST3 are monitored by each Slave Processor in order to determine the type of transfer being performed. SPC is bidirectional, but is driven by the CPU during all Slave Processor bus cycles. See Section 3.9 for full protocol sequences. A'f/SPC A " NS32C016 CPU J\. ....ocp .... 0(11-15) SPC SLAVE PROCESSOR ~ z en Co) STO-ST3 N C') STO-ST3 .... .... CJI o en , TL/EE/6525-21 FIGURE 3-12. Slave Processor Connections PREV.CYCLE I PHil [ PHI 2 [ SPC [ T40rTi Tl T4 I NEXT CYCLE Tl0RTi I STO-ST3 [ fII ADS HBE [ [~~~~~~L-----r-------+L------+- -OB-E (3)[ -1-----1 TL/EE/6525-22 Notes: (1) CPU samples Data Bus here. (2) DBE and all other NS32C201 TCU bus signals remain inactive because no ADS pulse is received from the CPU. FIGURE 3·13. CPU Read from Slave Processor 2-323 .... ch .... o ~r-----------------------------------------------------~ o ~ U) z C; ....• ....CD 8 ~ ~ z 3.0 Functional Description (Continued) 3.4.6.1 Slave Processor Bus Cycles sequence ("protocol") established by the instruction under execution; but the CPU indicates the direction on the DDIN pin for hardware debugging purposes. A Slave Processor bus cycle always takes exactly two clock cycles, labeled T1 and T4 (see Figures 3-13 and 3-14). During a Read cycle SPC is active from the beginning of T1 to the beginning of T4, and the data is sampled at the end of T1. The Cycle Status pins lead the cycle by one clock period, and are sampled at the leading edge of SPC. During a Write cycle, the CPU applies data and activates SPC at T1 , removing SPC at T 4. The Slave Processor latches status on the leading edge of SPC and latches data on the trailing edge. 3.4.6.2 Slave Operand Transfer Sequences A Slave Processor operand is transferred in one or more Slave bus cycles. A Byte operand is transferred on the least-significant byte of the Data Bus (ADO-AD7), and a Word operand is transferred on the entire bus. A Double Word is transferred in a consecutive pair of bus cycles, least-significant word first. A Quad Word is transferred in two pairs of Slave cycles, with other bus cycles possibly occurring between them. The word order is from least-significant word to most-significant. Since the CPU does not pulse the Address Strobe (ADS), no bus signals are generated by the NS32C201 Timing Control Unit. The direction of a transfer is determined by the PREV.CYCLE I PHil [ sPC [ T4 OR Ti NEXT CYCLE T1 T4 T1 ORTi I ADO-AD15 [ STO-ST3 [ ADS [ ODIN [ HBE [£4~~~~~----~------~~----1- DBE (21 [ -+_....J TLlEE/B525-23 Notes: (11 Slave Processor samples Data Bus here. (21 DBE, being provided by the NS32C201 TCU, remains inactive due to the fact that no pulse is presented on ADS. TCU signals RD, WR and TSO also remain inactive. FIGURE 3-14. CPU Write to Slave Processor 2-324 z 3.0 Functional Description en Co) (Continued) N 3.5 MEMORY MANAGEMENT OPTION The NS32C016 CPU, in conjunction with the NS32082 Memory Management Unit (MMU), provides full support for address translation, memory protection, and memory allocation techniques up to and including Virtual Memory. Iy described in Section 3.4. If it is sampled as low, two changes occur: 1) An extra clock cycle, Tmmu, is inserted into all bus cycles except Slave Processor transfers. 2) The DS/FLT pin changes in function from a Data Strobe output (DS) to a Float Command input (FLT). The NS32082 MMU will itself pull the CPU AT/SPC pin low when it is reset. In non-Memory·Managed systems this pin should be pulled up to Vee through a 10 kfl resistor. Note that the Address Translation strap does not specifically declare the presence of an NS32082 MMU, but only the 3.5.1 Address Translation Strap The Bus Interface Control section of the NS32C016 CPU has two bus timing modes: With or Without Address Translation. The mode of operation is selected by the CPU by sampling the ATISPC (Address TranslationlSlave Processor Control) pin on the rising edge of the RST (Reset) pulse. If ATISPC is sampled as high, the bus timing is as previous- I PHil [ PHI2 [ T40RTi I T3 T1 o o ..... 0) ..... . o ...... z en Co) N oo ..... .....• 0) U1 T4 A16-A23 [ ADO-AD1S [ ADS [ STO-ST3 [ ODIN [ HBE [ ROY [ • TL/EE/6S2S-24 FIGURE 3-15. Read Cycle with Address Translation (CPU Action) 2-325 . U) r-------------------------------------------------------------------------------~ ..... CD ..... o oN en CO) z ...... o ..... CD ..... . o oN en CO) z 3.0 Functional Description (Continued) their counter-parts without Address Translation, with the exception that the CPU Address lines A16-A23 remain in the TRI-STATE condition. This allows the MMU to continue asserting the translated address on those pins. Note that in order for the NS32082 MMU to operate correctly, it must be set to the 32C016 mode by forcing A24 high during reset. Figures 3-17and 3-18 show a Read cycle and a Write cycle as generated by the 32C016/32082/32C201 group. Note that with the CPU ADS signal going only to the MMU, and with the MMU PAV signal substituting for ADS everywhere else, Tmmu through T4100k exactly like Tl through T4 in a non-Memory-Managed system. For the connection diagram, see Appendix B. presence of external address translation circuitry. MMU instructions will still trap as being undefined unless the SETCFG (Set Configuration) instruction is executed to declare the MMU instruction set valid. See Section 2.1.3. 3.5.2 Translated Bus Timing Figures 3-15 and 3-16 illustrate the CPU activity during a Read cycle and a Write cycle in Address Translation mode. The additional T-State, Tmmu, is inserted between Tl and T2. During this time the CPU places ADO-ADI5 and A16A23 into the TRI-STATE® mode, allowing the MMU to assert the translated address and issue the physical address strobe PAV. T2 through T4 of the cycle are identical to I PHI1 T40RT; I T1 Tmmu I T2 T3 T4 [ PHI2 A16-A23 ADO-AD1S [ [ ADS [ STO·ST3 [ ODIN [ HBE [ ROY [ TL/EE/8525-25 FIGURE 3-16. Write Cycle with Address Translation (CPU Action) 2-326 z 3.0 Functional Description en c.:I (Continued) N n o .... .... o cp NS32C016 CPU BUS SIGNALS I T40RTi I T1 I Tmmu I T2 T3 T4 I T. ORT, ...... z I en c.:I N n o PHil [ PHI2 ....cp .... [ A16·A23 [ ADO·AD15 [ U'I AiiS[ PiW[ 5TO·5T3 [ ODIN HBE [~~~"~~----+------+----~~------r------+L-----+- [~~L£'"I~ L--+---+----+I----+-.J '-+----i- iiD[ DBE [ TSO [ TLlEE/8525-26 FIGURE 3·17. Memory-Managed Read Cycle 2·327 ..... ....o It) CD 3.0 Functional Description (Continued) o C\I (I) en NS32C016 CPU BUS SIGNALS z ...... I . .... CD .... o o T40RTi I TI Tmmu I T2 13 T4 I TlORTi I PHil [ oC\I (I) en z PHI 2 [ I PHYSICAL A16-A23 [ ADDRESS VALID DATA OUT ADO-AD 15 [ ADS [ PAV[ STO-ST3 [ STATUS VALID NEXT STATUS ODIN [ HBE [ VALID ROY [ NS32C201 TCU BUS SIGNALS TL/EE/B525-27 FIGURE 3-18. Memory-Managed Write Cycle 2-328 3.0 Functional Description z en to) (Continued) I\) 3.5.3 The FLT (Float) Pin 1) The FLT pin is used by the CPU for address translation support. Activating FLT during Tmmu causes the CPU to wait longer than Tmmu for address translation and validation. This feature is used occasionally by the NS32082 MMU in order to update its internal translation Look-Aside Buffer (TLB) from page tables in memory, or to update certain status bits within them. Sets ADO-AD15, A16-A23 and ODIN to the TRI· STATE condition ("floating"). 2) 3) Sets HBE low. Suspends further internal processing of the current instruction. This ensures that the current instruction remains abortable with retry. (See RST / ABT description, Section 3.5.4.) Note that the ADO-AD15 pins may be briefly asserted duro ing the first idle T·State. The above conditions remain in effect until FLT again goes high. See the Timing Specifica· tions, Section 4. Figure 3-19 shows the effects of FLT. Upon sampling FLT low, late in Tmmu, the CPU enters idle T·States (Tf) during which it: TL/EE/8525-28 FIGURE 3-19. FLT Timing 2·329 oo .... .... o Q) I ........ z en to) I\) oo .... .... Q) I U1 .... ch .... 8 &I) C\I ~ Z ..... Q .... ....• CD Q U C\I CO) tn Z 3.0 Functional Description (Continued) 3.5_4 Aborting Bus Cycles 2) The RSTI ABT pin, apart from its Reset function (Section 3.3), also serves as the means to "abort," or cancel, a bus cycle and the instruction, if any, which initiated it. An Abort request is distinguished from a Reset in that the RSiI ABT pin is held active for only one clock cycle. 3) The Write half of a Read-Modify-Write operand access may not be aborted. The CPU guarantees that this will never be necessary for Memory Management funtions by applying a special RMW status (Status Code 1011) during the Read half of the access. When the CPU presents RMW status, that cycle must be aborted if it would be illegal to write to any of the accessed addresses. If RSiIABi is pulsed at any time other than as indicated above, it will abort either the instruction currently under execution or the next instruction and will act as a very high-priority interrupt. However, the program that was running at the time is not guaranteed recoverable. If RSTI ABT is pulled low during Tmmu or Tf, this signals that the cycle must be aborted. The CPU itself will enter T2 and then Ti, thereby terminating the cycle. Since it is the MMU PAY Signal which triggers a physical cycle, the rest of the system remains unaware that a cycle was started. The NS32082 MMU will abort a bus cycle for either of two reasons: 1) The CPU is attempting to access a virtual address which is not currently resident in physical memory. The reference page must be brought into physical memory from mass storage to make it accessible to the CPU. 2) The CPU is attempting to perform an access which is not allowed by the protection level assigned to that page. 3.6 BUS ACCESS CONTROL The NS32C016 CPU has the capability of relinquishing its access to the bus upon request from a DMA device or another CPU. This capability is implemented on the HOLD (Hold Request) and HLDA (Hold Acknowledge) pins. By asserting HOLD low, an external device requests access to the bus. On receipt of HLDA from the CPU, the device may perform bus cycles, as the CPU at this point has set the ADO-AD15, A16-A23, ADS, ODIN and HBE pins to the TRI-STATE condition. To return control of the bus to the CPU, the device sets HOLD inactive, and the CPU acknowledges return of the bus by setting HLDA inactive. How quickly the CPU releases the bus depends on whether it is idle on the bus at the time the HOLD request is made, as the CPU must always complete the current bus cycle. Figure 3-20 shows the timing sequence when the CPU is idle. In this case, the CPU grants the bus during the immediately following clock cycle. Figure 3-21 shows the sequence if the CPU is using the bus at the time that the HOLD request is made. If the request is made during or before the clock cycle shown (two clock cycles before T4), the CPU will release the bus during the clock cycle following T4. If the request occurs closer to T4, the CPU may already have decided to initiate another bus cycle. In that case it will not grant the bus until after the next T4 state. Note that this situation will also occur if the CPU is idle on the bus but has initiated a bus cycle internally. In a Memory-Managed system, the HLDA Signal is connected in a daisy-chain through the NS32082, so that the MMU can release the bus if it is using it. When a bus cycle is aborted by the MMU, the instruction that caused it to occur is also aborted in such a manner that it is guaranteed re-executable later. The information that is changed irrecoverably by such a partly-executed instruction does not affect its re-execution. 3.5.4.1 The Abort Interrupt Upon aborting an instruction. the CPU immediately performs an interrupt through the ABT vector in the Interrupt Table (see Section 3.8). The Return Address pushed on the Interrupt Stack is the address of the aborted instruction, so that a Return from Trap (RETT) instruction will automatically retry it. The one exception to this sequence occurs if the aborted bus cycle was an instruction prefetch. If so, it is not yet certain that the aborted prefetched code is to be executed. Instead of causing an interrupt, the CPU only aborts the bus cycle, and stops prefetching. If the information in the Instruction Queue runs out, meaning that the instruction will actually be executed, the ABT interrupt will occur, in effect aborting the instruction that was being fetched. 3.5.4.2 Hardware Considerations In order to guarantee instruction retry, certain rules must be followed in applying an Abort to the CPU. These rules are followed by the NS32082 Memory Management Unit. 1) If FLT has been applied to the CPU, the Abort pulse must be applied before the T-State in which FLT goes inactive. The CPU will not actually respond to the Abort command until FLT is removed. See Figure 4-24. If FLT has not been applied to the CPU, the Abort pulse must occur during or before Tmmu. See the Timing Specifications, Figure 4-23. 2-330 3.0 Functional Description z en ~ (Continued) o CI .... ....• G) I TI I TI I··· I TI TI I TIOAT4 I TIORTI I ~ z en PHI1[hJLj c.:I I\) oCI .... .... en . G) PHI2 [ H&D[ HLDi[ AFFECTED SIGNALS i6S[ 0&[ ----- ~[ ~~------ ------- 1~----- ----- ---- 1r---------- HiE [ ADO-AD15 [ :.q:~.L.L.L.Lf' TL/EE/8525-29 FIGURE 3-20. HOLD Timing, Bus Initially Idle 2·331 .... r---------------------------------------------------------------------------------, U) cb 8 3.0 Functional Description (Continued) N ~ Z ;:; .... • PHll[ z PHlz[ ~ CO) en T4 T3 .... o CD n Ti Ti Ti HOlD [ u[ AFFECTED SIGNALS iDS [ 1---- ---- DDiN[ -+__-ir-_VA_L_ID-;_ _ _-t' --- iiii[ -+___-If-~_A_LID_+ _ __IJ -- ~~--- ---- NEXT ~~-- ---- NEXT NEXTADDR A16-A23 [ + __-iI-_VA_Li_D-I_ _ _-t' TLlEE/8525-30 FIGURE 3·21. HOLD Timing, Bus Initially Not Idle 2-332 z 3.0 Functional Description en Co) (Continued) N 3.7 INSTRUCTION STATUS In addition, there is a set of internally-generated "traps" which cause interrupt service to be performed as a result either of exceptional conditions (e.g., attempted division by zero) or of specific instructions whose purpose is to cause a trap to occur (e.g., the SupervisDr Call instruction). In addition to the four bits of Bus Cycle status (STO-ST3), the NS32C016 CPU also presents Instruction Status information on three separate pins. These pins differ from STOST3 in that they are synchronous to the CPU's internal instruction execution section rather than to its bus interface section. 3.8.1 Generallnterrupt/Trap Sequence Upon receipt of an interrupt or trap request, the CPU goes through three major steps: PFS (Program Flow Status) is pulsed low as each instruction begins execution. It is intended for debugging purposes, and is used that way by the NS32082 Memory Management Unit. 1) UIS originates from the U bit of the Processor Status Register, and indicates whether the CPU is currently running in User or Supervisor mode. It is sampled by the MMU for mapping, protection and debugging purposes. Although it is not synchronous to bus cycles, there are guarantees on its validity during any given bus cycle. See the Timing Specifications, Figure 4-22. ILO (Interlocked Operation) is activated during an SBITI (Set Bit, Interlocked) or CBITI (Clear Bit, Interlocked) instruction. It is made available to external bus arbitration circuitry in order to allow these instructions to implement the semaphore primitive operations for multi-processor communication and resource sharing. As with the UIS pin, there are guarantees on its validity during the operand accesses performed by the instructions. See the Timing Specification Section, Figure 4-20. 2) 3) Adjustment Df Registers. Depending on the source of the interrupt or trap, the CPU may restore and/or adjust the contents of the Program Counter (PC), the Processor Status Register (PSR) and the currently-selected Stack Pointer (SP). A copy of the PSR is made, and the PSR is then set to reflect Supervisor Mode and selection of the Interrupt Stack. Vector Acquisition. A Vector is either obtained from the Data Bus or is supplied by default. Service Call. The Vector is used as an index into the Interrupt Dispatch Table, whose base address is taken from the CPU Interrupt Base (INTBASE) Register. See Figure 3-22. A 32-bit External Procedure Descriptor is read from the table entry, and an External Procedure Call is performed using it. The MOD Register (16 bits) and Program Counter (32 bits) are pushed on the Interrupt Stack. This process is illustrated in Figure 3-23, from the viewpoint of the programmer. 3.8 NS32C016 INTERRUPT STRUCTURE INT, on which maskable interrupts may be requested, NMI, on which non-maskable interrupts may be requested,and RST/ABT, which may be used to abort a bus cycle and any associated instruction. See Section 3.5.4. ,~ MEMORY / CASCADE TAB~E I "1'" ; ··· ~~ CASCADE ADDR 14 CASCADE ADDR 15 FIXED INTERRUPTS AND TRAPS VECTORED INTERRUPTS 01'"' '31 CASCAOE ADDR 0 I~,"~"M"~1 r REGISTER ~ 1 DISPATCH TAB~E :t 0 NVI NON·VECTORED INTERRUPT 1 NMI NON-MASKAB~E INTERRUPT 2 ABT ABORT 3 S~VE S~VE 4 I~~ ILLEGAL OPERATION TRAP PROCESSDR TRAP 5 svc SUPERVISOR CALL TRAP 6 DVZ DIVIDE BY ZERO TRAP 7 F~G F ~AG TRAP B BPT BREAKPOINT TRAP 9 TRC TRACE TRAP III UND UNDEFINED INSTRUCTION TRAP 11-15 ~ ~ RESERVED 16 ,. .... VECTORED INTERRUPTS ~ A.. TLlEE/B525-31 FIGURE 3-22. Interrupt Dispatch and Cascade Tables 2-333 o o .... cp .... o ....... z en Co) N oo ....en .... I CTI .... ....rD 8 ~ .-----------------------------------------------------------------------------~ 3.0 Functional Description (Continued) C'I C") en z Ci .... rD .... CI ~ I I I (PUSH) RETURN ADDRESS 32 BITS J I STATUS PSR 1 I I (PUSH) MODULE 32 BITS MOD INTERRUPT STACK en z TL/EE/8525-32 r-------------l I I I I I INTBASE REGISTER I CASCADE TABLE I I DISPATCH TABLE DESCRIPTOR (32 BITS) 1. ....----16----."1'"1:---16----.1 DESCRIPTOR OFFSET MODULE MOD REGISTER l -=t-J 0 MODULE TABLE NEW MODULE I MODULE TABLE ENTRY J MODULET~LEENTRY 32 - STATIC BASE POINTER ------ LINK BASE PDlNTER PROGRAM BASE POINTER + (RESERVED) SBREGISTER PROGRAM COUNTER I +- ENTRY POINT ADDRESS NEW STATIC BASE FIGURE 3·23. Interrupt/Trap Service Routine Calling Sequence 2·334 J TL/EE/8525-33 z 3.0 Functional Description en w (Continued) N 3.8.2 Interrupt/Trap Return input is maskable, and is therefore enabled to generate interrupt requests only while the Processor Status Register I bit is set. The I bit is automatically cleared during service of an INT, NMI or Abort request, and is restored to its original setting upon return from the interrupt service routine via the RETT or RETI instruction. To return control to an interrupted program, one of two instructions is used. The RETT (Return from Trap) instruction (Figure 3-24) restores the PSR, MOD, PC and S8 registers to their previous contents and, since traps are often used deliberately as a call mechanism for Supervisor Mode procedures, it also discards a specified number of bytes from the original stack as surplus parameter space. RETT is used to return from any trap or interrupt except the Maskable Interrupt. For this, the RETI (Return from Interrupt) instruction is used, which also informs any external Interrupt Control Units that interrupt service has completed. Since interrupts are generally asynchronous external events, RETI does not pop parameters. See Figure 3-25. The INT pin may be configured via the SETCFG instruction as either Non-Vectored (CFG Register bit 1=0) or Vectored (bit 1=1). 3.8.3.1 Non-Vectored Mode g.... ..... G) ~ z en w N oCI .... ....• G) UI In the Non-Vectored mode, an interrupt request on the INT pin will cause an Interrupt Acknowledge bus cycle, but the CPU will ignore any value read from the bus and use instead a default vector of zero. This mode is useful for small systems in which hardware interrupt prioritization is unnecessary. 3.8.3 Maskable Interrupts (The INT Pin) The INT pin is a level-sensitive input. A continuous low level is allowed for generating multiple interrupt requests. The PROGRAM COUNTER RETURN ADDRESS STATUS I PSR I (POP) } t---------l} -1---------+- 32 BITS (POP) MODULE MOO 32 BITS INTERRUPT STACK MODULE TABLE MODULE TABLE ENTRY MODULE T~BLE PI ENTRY STATIC BASE POINTER - n LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) / SBREGISTER STATIC BASE + PARAMETERS n BYTES STACK SELECTED IN NEWLYPOPPEDPSR. POP AND DISCARD FIGURE 3-24_ Return from Trap (RETT n) Instruction Flow 2-335 TLlEE/8525-34 .... r---------------------------------------------------------------------------------, ....cb 3.0 Functional Description (Continued) 8 Lr) ~ tn Z ...... C) .... "END OF INTERRUPT" .... BUS CYCLE cb 8 C'I ~ Z INTERRUPT CONTROL UNIT PROGRAM COUNTER (POP) RETURN ADDRESS STATUS I (POP) MODULE PSR -t------------i- MOD INTERRUPT STACK o MODULE TABLE MODULE TABLE ENTRY t MODULE TABLE ENTRY STATIC BASE POINTER - r------ LINK BASE POINTER PROGRAM BASE POINTER (RESERVED) STAnCBASE SBREGISTER TLlEE/8525-35 FIGURE 3·25. Return from Interrupt (RET I) Instruction Flow 2·336 r-----------------------------------------------------------------------.z 3.0 Functional Description fa (Continued) 3.B.3.2 Vectored Mode: Non-Cascaded Case In the Vectored mode, the CPU uses an Interrupt Control Unit (ICU) to prioritize up to 16 interrupt requests. Upon receipt of an interrupt request on the INT pin, the CPU performs an "Interrupt Acknowledge, Master" bus cycle (Section 3.4.2) reading a vector value from the low-order byte of the Data Bus. This vector is then used as an index into the Dispatch Table in order to find the External Procedure Descriptor for the proper interrupt service procedure. The service procedure eventually returns via the Return from Interrupt (RETI) instruction, which performs an End of Interrupt bus cycle, informing the ICU that it may re-prioritize any interrupt requests still pending. The ICU provides the vector number again, which the CPU uses to determine whether it needs also to inform a Cascaded ICU (see below). In a system with only one ICU (16 levels of interrupt), the vectors provided must be in the range of 0 through 127; that is, they must be positive numbers in eight bits. By providing a negative vector number, an ICU flags the interrupt source as being a Cascaded ICU (see below). pointing to the Vector Registers of each of up to 16 Cascaded ICUs. Figure 3-22 illustrates the position of the Cascade Table. To find the Cascade Table entry for a Cascaded ICU, take its Master ICU line number (0 to 15) and subtract 16 from it, giving an index in the range -16 to -1. Multiply this value by 4, and add the resulting negative number to the contents of the INTBASE Register. The 32-bit entry at this address must be set to the address of the Hardware Vector Register of the Cascaded ICU. This is referred to as the "Cascade Address." Upon receipt of an interrupt request from a Cascaded ICU, the Master ICU interrupts the CPU and provides the negative Cascade Table index instead of a (positive) vector number. The CPU, seeing the negative value, uses it as an index into the Cascade Table and reads the Cascade Address from the referenced entry. Applying this address, the CPU performs an "Interrupt Acknowledge, Cascaded" bus cycle (Section 3.4.2), reading the final vector value. This vector is interpreted by the CPU as an unsigned byte, and can therefore be in the range of 0 through 255. In returning from a Cascaded interrupt, the service procedure executes the Return from Interrupt (RETI) instruction, as it would for any Maskable Interrupt. The CPU performs an "End of Interrupt, Master" bus cycle (Section 3.4.2), whereupon the Master ICU again provides the negative Cascaded Table index. The CPU, seeing a negative value, uses it to find the corresponding Cascade Address from the Cascade Table. Applying this address, it performs an "End of Interrupt, Cascaded" bus cycle (Section 3.4.2), informing the Cascaded ICU of the completion of the service routine. The byte read from the Cascaded ICU is discarded. 3.B.3.3 Vectored Mode: Cascaded Case In order to allow up to 256 levels of interrupt, provision is made both in the CPU and in the NS32202 Interrupt Control Unit (ICU) to transparently support cascading. Figure 3-27 shows a typical cascaded configuration. Note that the Interrupt output from a Cascaded ICU goes to an Interrupt Request input of the Master ICU, which is the only ICU which drives the CPU INT pin. In a system which uses cascading, two tasks must be performed upon initialization: 1) For each Cascaded ICU in the system, the Master ICU must be informed of the line number (0 to 15) on which it receives the cascaded requests. 2) Note: If an interrupt must be masked off, the CPU can do so by selling the corresponding bit in the Interrupt Mask Register of the Interrupt Controller. However, if an interrupt is set pending during the CPU instruc· tion that masks off that Interrupt, the CPU may still perform an inter· rupt acknowledge cycle following that instruction since it might have sampled the INT line before the ICU deasserted it. This could cause the ICU to provide an invalid vector. To avoid this problem the above operation should be performed with the CPU interrupt disabled . A Cascade Table must be established in memory. The Cascade Table is located in a NEGATIVE direction from the location indicated by the CPU Interrupt Base (INTBASE) Register. Its entries are 32-bit addresses, NS32202 NS32COI6 cpu HARDWARE INTERRUPTS OR CASCADED CONTROLLERS GROUP STATUS 1 INT \ - - - - - - l I N T INTERRUPTS. CASCADED, OR BIT 1/0 ~~~~ESS DECODER Cs TL/EE/8525-36 FIGURE 3-26. Interrupt Control Unit Connections (16 Levels) 2-337 oCI .... ~ .... CI ...... Z tn Co) ~ oCI .... ~ ..... en • .... ,-----------------------------------------------------------------------------, ~ m .... 3.0 Functional Description (Continued) o ~ DATA U) z C; .... CONTROL m .... CASCADED ADDR 5 BITS 8 NS32202 HARDWARE INTERRUPTS ICU C'I ~ STATUS Z FROM ADDRESS DECODER INTERRUPTS OR BIT 110 CS NS32C016 MASTER GROUP ICU NS32202 cpu iiiT 1 - - - - - - - - - - - - - - - - - - - - - 1 iiiT FROM ADDRESS DECODER TL/EE/8525-37 FIGURE 3-27. Cascaded Interrupt Control Unit Connections 3.8.4 Non-Maskable Interrupt (The NMI Pin) 3.8.STraps The Non-Maskable Interrupt is triggered whenever a falling edge is detected on the NMI pin. The CPU performs an "Interrupt Acknowledge, Master" bus cycle (Section 3.4.2) when processing of this interrupt actually begins. The Interrupt Acknowledge cycle differs from that provided for Maskable Interrupts in that the address presented is FFFF0016. The vector value used for the Non-Maskable Interrupt is taken as 1, regardless of the value read from the bus. A trap is an internally-generated interrupt request caused as a direct and immediate result of the execution of an instruction. The Return Address pushed by any trap except Trap (TRC) below is the address of the first byte of the instruction during which the trap occurred. Traps do not disable inter· rupts, as they are not associated with external events. Traps recognized by NS32C016 CPU are: Trap (SLAVE): An exceptional condition was detected by the Floating Point Unit or another Slave Processor during the execution of a Slave Instruction. This trap is requested via the Status Word returned as part of the Slave Processor Protocol (Section 3.9.1). The service procedure returns from the Non-Maskable Interrupt using the Return from Trap (RETI) instruction. No special bus cycles occur on return. For the full sequence of events in processing the NonMaskable Interrupt, see Section 3.8.7.1. 2-338 ,--------------------------------------------------------------------------, z t/) 3.0 Functional Description Co) (Continued) Trap (ILL): Illegal operation. A privileged operation was attempted while the CPU was in User Mode (PSR bit U = 1). N 1. Trap (SVC): The Supervisor Call (SVC) instruction was executed. Trap (OVZ): An attempt was made to divide an integer by zero. (The Slave trap is used for Floating Point division by zero.) If a String instruction was interrupted and not yet completed: a. b. Trap (FLG): The FLAG instruction detected a "1" in the CPU PSR F bit. 2. Trap (BPT): The Breakpoint (BPn instruction was executed. Trap (TRC): The instruction just completed is being traced. See below. 3. Trap (UNO): An undefined opcode was encountered by the CPU. Clear the Processor Status Register P bit. Set "Return Address" to the address of the first byte of the interrupted instruction. Otherwise, set "Return Address" to the address of the next instruction. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, T, P and I. If the interrupt is Non-Maskable: a. Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Section 3.4.2). Discard the byte read. b. c. 5. Here the interrupt is Vectored. Read "Byte" from address FFFE0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Section 3.4.2). 6. 3.8.6 Prioritization 7. If "Byte" ~ 0, then set "Vector" to "Byte" and go to Step B. If "Byte" is in the range -16 through -1, then the interrupt source is Cascaded. (More negative values are reserved for future use.) Perform the following: a. Read the 32-bit Cascade Address from memory. The address is calculated as INTBASE + 4· Byte. 2) Abort 3) Non-Maskable Interrupt 4) Maskable Interrupts 5) Trace Trap I ..... I:) Z t/) Co) N n .... .... I:) G) I (It If the interrupt is Non-Vectored: a. Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Section 3.4.2). Discard the byte read. b. c. The NS32C016 CPU internally prioritizes simultaneous interrupt and trap requests as follows: 1) Traps other than Trace (Highest priority) G) Set "Vector" to 1. Go to Step B. A special case is the Trace Trap (TRC), which is enabled by setting the T bit in the Processor Status Register (PSR). At the beginning of each instruction, the T bit is copied into the PSR P (Trace "Pending") bit. If the P bit is set at the end of an instruction, then the Trace Trap is activated. If any other trap or interrupt request is made during a traced instruction, its entire service procedure is allowed to complete before the Trace Trap occurs. Each interrupt and trap sequence handles the P bit for proper tracing, guaranteeing one and only one Trace Trap per instruction, and guaranteeing that the Return Address pushed during a Trace Trap is always the address of the next instruction to be traced. 4. n .... .... I:) Set "Vector" to O. Go to Step B. b. (Lowest priority) 8. 3.8.7Interrupt/Trap Sequences: Detail Flow For purposes of the following detailed discussion of interrupt and trap service sequences, a single sequence called "Service" is defined in Figure 3-28. Upon detecting any interrupt request or trap condition, the CPU first performs a sequence dependent upon the type of interrupt or trap. This sequence will include pushing the Processor Status Register and establishing a Vector and a Return Address. The CPU then performs the Service sequence. For the sequenced followed in processing either Maskable or Non-Maskable Interrupts (on the INT or NMI pins, respectively), see Section 3.B.7.1. For Abort interrupts, see Section 3.B.7.4. For the Trace Trap, see Section 3.B.7.3, and for all other traps see Section 3.B.7.2. 9. Read "Vector," applying the Cascade Address just read and Status Code 0101 (Interrupt Acknowledge, Cascaded: Section 3.4.2). Push the PSR copy (from Step 2) onto the Interrupt Stack as a 16-bit value. Perform Service (Vector, Return Address), Figure 3-28. Service (Vector, Return Address): 1) 3.8.7.1 Maskable/Non·Maskable Interrupt Sequence This sequence is performed by the CPU when the NMI pin receives a falling edge, or the INT pin becomes active with the PSR I bit set. The interrupt sequence begins either at the next instruction boundary or, in the case of the String instructions, at the next interruptible point during its execution. Read the 32-bit External Procedure Descriptor from the Interrupt Dispatch Table: address is Vector'4 + INTBASE Register contents. 2) Move the Module field of the Descriptor into the MOD Register. 3) Read the new Static Base pOinter from the memory address contained in MOD, placing it into the SB Register. 4) Read the Program Base pointer from memory address MOD+8, and add to it the Offset field from the Descriptor, placing the result In the Program Counter. S) Flush Queue: Non·sequentially fetch first instruction of Interrupt Rou· tine. 6) Push MOD Register onto the Interrupt Slack as a 16·bit value. (The PSR has already been pushed as a 16-bit value.) 7) Push the Return Address onto the Interrupt Slack as a 32·bit quantity. FIGURE 3·28. Service Sequence Invoked during all interrupt/trap sequences 2-339 • 3.0 Functional Description (Continued) 3.8.7.2 Trap Sequence: Traps Other Than Trace 1) Restore the currently selected Stack Pointer and the Processor Status Register to their original values at the start of the trapped instruction. 2) Set "Vector" to the value corresponding to the trap type. SLAVE: ILL: SVC: DVZ: FLG: BPT: UND: 3) 4) 5) 6) Each Slave Instruction Set is validated by a bit in the Configuration Register (Section 2.1.3). Any Slave Instruction which does not have its corresponding Configuration Register bit set will trap as undefined, without any Slave Processor communication attempted by the CPU. This allows software simulation of a non-existent Slave Processor. 3.9.1 Slave Processor Protocol Slave Processor instructions have a three-byte Basic Instruction field, consisting of an ID Byte followed by an Operation Word. The ID Byte has three functions: 1) It identifies the instruction as being a Slave Processor instruction. 2) It specifies which Slave Processor will execute it. Vector = 3. Vector = 4. Vector=5. Vector=6. Vector = 7. Vector = 8. Vector = 10. 3) Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, P and T. Push the PSR copy onto the Interrupt Stack as a 16-bit value. Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Figure 3-29. While applying Status Code 1111 (Broadcast ID, Section 3.4.2), the CPU transfers the ID Byte on the least-significant half of the Data Bus (ADO-AD7). All Slave Processors input this byte and decode it. The Slave Processor selected by the ID Byte is activated, and from this point the CPU is communicating only with it. If any other slave protocol was in progress (e.g., an aborted Slave instruction), this transfer cancels it. Set "Return Address" to the address of the first byte of the trapped instruction. Perform Service (Vector, Return Address), Figure 3-28. 3.8.7.3 Trace Trap Sequence 1) In the Processor Status Register (PSR), clear the P bit. 2) Copy the PSR into a temporary register, then clear PSR bits S, U and T. 3) Push the PSR copy onto the Interrupt Stack as a 16-bit value. Set "Vector" to 9. Set "Return Address" to the address of the next instruction. Perform Service (Vector, Return Address), Figure 3-28. 4) 5) 6) The CPU next sends the Operation Word while applying Status Code 1101 (Transfer Slave Operand, Section 3.4.2). Upon receiving it, the Slave Processor decodes it, and at this point both the CPU and the Slave Processor are aware of the number of operands to be transferred and their sizes. The Operation Word is swapped on the Data Bus; that is, bits 0-7 appear on pins AD8-AD15 and bits 8-15 appear on pins ADO-AD7. Using the Addressing Mode fields within the Operation Word, the CPU starts fetching operands and issuing them to the Slave Processor. To do so, it references any Addressing Mode extensions which may be appended to the Slave Processor instruction. Since the CPU is solely responsible for memory accesses, these extensions are not sent to the Slave Processor. The Status Code applied is 1101 (Transfer Slave Processor Operand, Section 3.4.2). Status Combinations: Send 10 (10): Code 1111 Xfer Operand (OP): Code 1101 Read Status (ST): Code 1110 Action Step Status 1 ID CPU Send ID Byte. 2 OP CPU Sends Operation Word. 3 OP CPU Sends Required Operands. 4 Slave Starts Execution. CPU Pre-Fetches. 5 Slave Pulses SPC Low. ST CPU Reads Status Word. (Trap? Alter Flags?) 6 7 OP CPU Reads Results (If Any). 3.8.7.4 Abort Sequence 1) Restore the currently selected Stack Pointer to its original contents at the beginning of the aborted instruction. 2) Clear the PSR P bit. 3) 4) 5) Copy the PSR into a temporary register, then clear PSR bits S, U, T and I. Push the PSR copy onto the Interrupt Stack as a 16-bit value. Set "Vector" to 2. 6) Set "Return Address" to the address of the first byte of the aborted instruction. 7) Perform Service (Vector, Return Address), Figure 3-28. It determines the format of the following Operation Word of the instruction. 3.9 SLAVE PROCESSOR INSTRUCTIONS The NS32C016 CPU recognizes three groups of instructions as being executable by external Slave Processors: Floating Point Instruction Set Memory Management Instruction Set Custom Instruction Set FIGURE 3-29. Slave Processor Protocol 2-340 3.0 Functional Description (Continued) Custom Slave instruction (LCR: Load Custom Register). In executing these instructions, the protocol ends after the CPU has issued the last operand. The CPU does not wait for an acknowledgement from the Slave Processor, and it does not read status. After the CPU has issued the last operand, the Slave Processor starts the actual execution of the instruction. Upon completion, it will signal the CPU by pulsing SPC low. To allow for this, and for the Address Translation strap function, AT/SPC is normally held high only by an internal pull· up device of approximately 5 kn. 3.9.2 Floating Point Instructions While the Slave Processor is executing the instruction, the CPU is free to prefetch instructions into its queue. If it fills the queue before the Slave Processor finishes, the CPU will wait, applying Status Code 0011 (Waiting for Slave, Section 3.4.2). Table 3-4 gives the protocols followed for each Floating Point instruction. The instructions are referenced by their mnemonics. For the bit encodings of each instruction, see Appendix A. The Operand class columns give the Access Class for each general operand, defining how the addressing modes are interpreted (see Series 32000 Instruction Set Reference Manual). Upon receiving the pulse on SPC, the CPU uses SPC to read a Status Word from the Slave Processor, applying Status Code 1110 (Read Slave Status, Section 3.4.2). This word has the format shown in Figure 3-30. If the Q bit ("Quit", Bit 0) is set, this indicates that an error was detect· ed by the Slave Processor. The CPU will not continue the protocol, but will immediately trap through the Slave vector in the Interrupt Table. Certain Slave Processor instructions cause CPU PSR bits to be loaded from the Status Word. ...... z en (0) ~ o c .... ....• 0) U1 The Returned Value Type and Destination column gives the size of any returned value and where the CPU places it. The PSR Bits Affected column indicates which PSR bits, if any, are updated from the Slave Processor Status Word (Figure 3-30). An exception to the protocol above is the LMR (Load Mem· ory Management Register) instruction, and a corresponding Mnemonic .... ....c• 0) The Operand Issued columns show the sizes of the oper· ands issued to the Floating Point Unit by the CPU. "0" indio cates a 32-bit Double Word. "i" indicates that the instruction specifies an integer size for the operand (B = Byte, W=Word, 0= Double Word). "f" indicates that the instruc· tion specifies a Floating Point size for the operand (F = 32bit Standard Floating, L=64-bit Long Floating). The last step in the protocol is for the CPU to read a result, if any, and transfer it to the destination. The Read cycles from the Slave Processor are performed by the CPU while applying Status Code 1101 (Transfer Slave Operand, Sec· tion 3.4.2). Operand 1 Class z ~ ~ o c TABLE 3-4. Floating Point Instruction Protocols Operand 2 Operand 1 Operand 2 Class Issued Issued Returned Value Type and Oest. PSR Bits Affected fto Op. 2 ftoOp.2 ftoOp.2 ftoOp.2 none none none none ADDf SUBf MULf DIVf read.f read.f read.f read.f rmw.f rmw.f rmw.f rmw.f MOVf ABSf NEGf read.f read.f read.f write.f write.f write.f N/A N/A N/A fto Op. 2 ftoOp.2 ftoOp.2 none none none CMPf read.f read.f f N/A N,Z,L FLOORfi TRUNCfi ROUNDfi read.f read.f read.f write.i write.i write.i f f N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 none none none MOVFL MOVLF read.F read.L write.L write.F F L N/A N/A LtoOp.2 FtoOp.2 none none MOVif read.i write.f N/A fto Op. 2 none LFSR SFSR read.D N/A N/A write.D N/A N/A N/A DtoOp.2 none none 0 N/A Noles: o = Double Word = integer size (B,W,D) specified in mnemonic. = Floating Point type (F,L) specified In mnemonic. NI A = Not Applicable to this instruction. I f 2-341 PI ." ..... cb ..... 3.0 Functional Description (Continued) 3.9.3 Memory Management Instructions Table 3·5 gives the protocols for Memory Management in· structions. Encodings for these instructions may be found in Appendix A. C) ~ Cf) 15 lo tn Z C; 8 7 0 0 0 0 000 IN. Z F 0 0 L 0 New PSR Bit VsIUe(I)&- ..,A "Ouit": Te,mlnlll Protocol, lI'ap(FPU). ..... • ..... oj J CD 8 In executing the RDVAL and WRVAL instructions, the CPU calculates and issues the 32·bit Effective Address of the single operand. The CPU then performs a single·byte Read cycle from that address, allowing the MMU to safely abort the instruction if the necessary information is not currently in physical memory. Upon seeing the memory cycle complete, the MMU continues the protocol, and returns the validation result in the F bit of the Slave Status Word. The size of a Memory Management operand is always a 32· bit Double Word. For further details of the Memory Manage· ment Instruction set, see the Series 32000 Instruction Set Reference Manual and the NS32082 MMU Data Sheet. TL/EE/8525-38 FIGURE 3·30. Slave Processor Status Word Format N ~ Z Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified. This is because the Floating Point Registers are physically on the Floating Point Unit and are therefore available without CPU assistance. Mnemonic RDVAL· WRVAL· LMR· SMR· Operand 1 Class TABLE 3-5. Memory Management Instruction Protocols Operand 2 Operand 1 Operand 2 Returned Value Type and Dest. Issued Class Issued PSRBlts Affected addr addr N/A N/A D D N/A N/A N/A N/A F F read.D write.D N/A N/A D N/A N/A N/A N/A DtoOp.1 none none Note: In the RDVAL and WRVAL instructions, the CPU issues the address as a Double Word, and performs a single-byte Read cycle lrom that memory address. For details, see the Series 32000 Instruction Set Reference Manual and the NS320B2 Memory Management Unit Data Sheel o= Double Word • = Privileged Instruction: will trap II CPU is In User Mode. NIA = Not Applicable to this instruction. 2-342 z en c.:I 3.0 Functional Description (Continued) N 3.9.4 Custom Slave Instructions Provided in the NS32C016 is the capability of communicating with a user-defined, "Custom" Slave Processor. The instruction set provided for a Custom Slave Processor defines the instruction formats, the operand classes and the communication protocol. Left to the user are the interpretations of the Op Code fields, the programming model of the Custom Slave and the actual types of data transferred. The protocol specifies only the size of an operand, not its data type. Table 3-6 lists the relevant information for the Custom Slave instruction set. The designation "c" is used to represent an Mnemonic Operand 1 Class operand which can be a 32-bit ("D") or 64-bit ("Q") quantity in any format; the size is determined by the suffix on the mnemonic. Similarly, an "i" indicates an integer size (Byte, Word, Double Word) selected by the corresponding mnemonic suffix. Any operand indicated as being of type 'c' will not cause a transfer if the register addressing mode is specified. It is assumed in this case that the slave processor is already holding the operand internally. For the instruction encodings, see Appendix A. TABLE 3·6. Custom Slave Instruction Protocols Operand 2 Operand 1 Operand 2 Class Issued Issued PSRBlts Affected rmw.c rmw.c rmw.c rmw.c c c c c c c c c ctoOp.2 ctoOp.2 cto Op. 2 cto Op. 2 none none none none CMOVOc CMOV1c CMOV2c CMOV3c read.c read.c read.c read.c write.c write.c write.c write.c c c c c N/A N/A N/A N/A ctoOp.2 cto Op. 2 ctoOp.2 ctoOp.2 none none none none CCMPOc CCMP1c read.c read.c read.c read.c c c c c N/A N/A N,Z,L N,Z,L CCVOci CCV1ci CCV2ci CCV3ic read.c read.c read.c readi write.i write.i write.i write.c c c c N/A N/A N/A N/A itoOp.2 itoOp.2 ito Op. 2 cto Op. 2 none none none none CCV4DQ CCV5QD read.D read.Q write.Q write.D D Q N/A N/A QtoOp.2 DtoOp.2 none none LCSR SCSR read.D N/A N/A write.D D N/A N/A N/A N/A DtoOp.2 none none addr addr N/A N/A D D N/A N/A N/A N/A F F read.D write.D N/A N/A D N/A N/A N/A N/A DtoOp.1 none none Notes: D - Double Word i Returned Value Type and Dest. read.c read.c read.c read.c LCR· SCR' Q) • ..... C) ...... z en c.:I N o C) ..... .....• Q) Ut CCALOc CCAL1c CCAL2c CCAL3c CATSTO' CATST1' o C) ..... = integer size (B,W,D) specified in mnemonic. c - Custom size (D:32 bits or Q:64 bits) specified in mnemonic. .. = Privileged instruction: will trap if CPU is in User Mode. N/A - Not Applicable to this instruction. 2-343 II .,.. ~ .,.. U) r-------------------------------------------------------------------------------~ 8 ~ en ....zo.,.. I CD .,.. o (.) N C") (/) z 4.0 Device Specifications Status (STO-ST3): Active high. Bus cycle status code, STO least significant. Section 3.4.2. Encodings are: OOOO-idle: CPU Inactive on Bus. 4.1 NS32C016 PIN DESCRIPTIONS The following is a brief description of all NS32C016 pins. The descriptions reference portions of the Functional De· scription, Section 3. 0001-ldle: WAIT Instruction. 001O-(Reserved) 0011-ldle: Waiting for Slave. 4.1.1 Supplies Logic Power (VeeLl: Section 3.1. + SV positive supply for on·chip logic. 010o-Interrupt Acknowledge, Master. 0101-lnterrupt Acknowledge, Cascaded. Buffer Power (VeeB): + SV positive supply for on·chip out· put buffers. Section 3.1. 0110-End of Interrupt, Master. 0111-End of Interrupt, Cascaded. 1000-5equential Instruction Fetch. Logic Ground (GNDL): Ground reference for on-chip logic. Section 3.1. Buffer Ground (GNDB): Ground reference for on-chip drivers connected to output pins. Section 3.1. 1001-Non-Sequentiallnstruction Fetch. 101O-Data Transfer. 4.1.2 Input Signals 1011-Read Read-Modify-Write Operand. 110o-Read for Effective Address. 1101-Transfer Slave Operand. Clocks (PHI1, PHI2): Two-phase clocking signals. Section 3.2. Ready (ROY): Active high. While ROY is inactive, the CPU extends the current bus cycle to provide for a slower memory or peripheral reference. Upon detecting ROY active, the CPU terminates the bus cycle. Section 3.4.1. 111o-Read Slave Status Word. 1111-Broadcast Slave 10. Hold Acknowledge (HLDA): Active low. Applied by the CPU in response to HOLD input, indicating that the bus has been released for DMA or multiprocessing purposes. Section 3.B. Hold Request (HOLD): Active low. Causes the CPU to release the bus for DMA or multiprocessing purposes. Section 3.6. User/Supervisor (U/S): User or Supervisor Mode status. Section 3.7. High state indicates User Mode, low indicates Supervisor Mode. Section 3.7. Interlocked Operation (ILO): Active low. Indicates that an interlocked instruction is being executed. Section 3.7. Program Flow Status (PFS): Active Low. Pulse indicates beginning of an instruction execution. Section 3.7. Nole: If Ihe HOLD signal is generated asynchronously, its set up and hold times may be violated. In this case it is recommended to synchronize it with CTTL to minimize the possibility of metastable states. The CPU provides only one synchronization stage to minimize the HLDA latency. This is to avoid speed degradalions in cases of heavy HOLD activity (Le. DMA controller cycles inte~eaved with CPU cycles). Interrupt (I NT): Active low. Maskable Interrupt request. Section 3.B. 4.1.4 Input-Output Signals Address/Data 0-15 (ADO-AD15): Multiplexed Addressl Data information. Bit 0 is the least significant bit of each. Section 3.4. Address Translation/Slave Processor Control (AT/SPC): Active low. Used by the CPU as the data strobe output for Slave Processor transfers; used by Slave Processors to acknowledge completion of a slave instruction. Section 3.4.6; Section 3.9. Sampled on the rising edge of Reset as Address Translation Strap. Section 3.S.1. In non-memory-managed systems this pin should be pulled up to Vee through a 10 kO resistor. Data Strobe/Float (DS/FLT): Active low. Data Strobe output, Section 3.4, or Float Command input, Section 3.S.3. Pin function is selected on AT/SPC pin, Section 3.S.1. Non-Maskable Interrupt (NMI): Active low. Non-Maskable Interrupt request. Section 3.B. Reset/Abort (RST/ABT): Active low. If held active for one clock cycle and released, this pin causes an Abort Command, Section 3.S.4. If held longer, it initiates a Reset, Section 3.3. 4.1.3 Output Signals Address Bits 16-23 (A16-A23): These are the most significant 8 bits of the memory address bus. Section 3.4. Address Strobe (ADS): Active low. Controls address latches; indicates start of a bus cycle. Section 3.4. Data Direction In (ODIN): Active low. Status signal indicating direction of data transfer during a bus cycle. Section 3.4. High Byte Enable (HBE): Active low. Status signal enabling transfer on the most significant byte of the Data Bus. Section 3.4; Section 3.4.3. Nole: In Ihe current NS32C016, the HBE Signal is forced low by the CPU when FLT is asserted by the MMU. However, in future revisions of the CPU, HBE will no longer be affected by FLT. Therefore, in a memory managed system, an external 'AND' gate is required. This is shown in Figure 8-1 in Appendix B. 2-344 z en c.:I 4.0 Device Specifications (Continued) N Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. 4.2 ABSOLUTE MAXIMUM RATINGS If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Temperature Under Bias O'C to + 70'C Storage Temperature -65'Cto +150'C All Input or Output Voltages with Respect to GND Power Dissipation Z ...oocp ... -0.5Vto +7V 1.5 Watt VIH Conditions Parameter UI Min High Level Input Voltage Typ 2.0 Max Units Vee + 0.5 V Vil Low Level Input Voltage -0.5 0.8 V VeH High Level Clock Voltage PHI1, PHI2 pins only 0.90 Vee Vee + 0.5 V Vel Low Level Clock Voltage PHI1, PHI2 pins only -0.5 0.10 Vee V VeRT Clock Input Ringing Tolerance PHI1, PHI2 pins only -0.5 0.6 V VOH High Level Output Voltage IOH = -400".A VOL Low Level Output Voltage IOl = 2mA 0.10 Vee v IllS ATISPC Input Current (low) VIN = O.4V, AT/SPC in input mode 0.05 1.0 mA II Input Load Current o s: VIN s: Vee, All inputs except -20 20 ".A -20 20 ".A 100 mA Icc Leakage Current Output and 10 Pins in TRI·STATEI Input Mode 0.4 Active Supply Current lOUT = 0, TA = 25'C s: s: VIN Vee 70 Connection Diagram Dual·ln·Line Package A22c::~b veeL A21~2 A2:§ 3 47gA23 A19 4 46 E5 45 g~ A18 5 44 ~'LO AI:§ 6 43 5TO A16 A015 ADI. E 1= 1 8 42 41 :::::I iNT ST1 5T2 9 AD13 ~ 10 .0 STl 39 ~ 'PFS ADI. 38 11 :~~~ ~ ~~ AD9 ~ == E N~::~'6 " 35 34 16 33 AD6~ 17 ADS ~ I. 32 AD7 F : F= 15 ADS 31 DDIN ~~: ~ Ar/SPC RST/ABT EJ OS/FLT t::::= g HBE :::::I HLDA ~~ 19 AD3 30 A~~ 21 28 ~ ROY c:: •• ADI~ ADO GNDL § 29 22 "Z7 24 25 23 26 ~ HOLD veeB :=::J ~PHI2 PHI1 GNDB TL/EE/8525-2 Top View FIGURE 4-1 Order Number NS32C016D-10, NS32C016D-15, NS32C016N-10 or NS32C016N-15 See NS Package Number D48A or N48A 2-345 V 0.90 Vee PHI1, PHI2, ATISPC Il ... ...~cp ~ N 4.3 ELECTRICAL CHARACTERISTICS: TA = -40'Cto + 85'C, Vee = 5V ±10%, GND = OV Symbol oo .... r-------------------------------------------------------------------------------------, ch 4.0 Device Specifications (Continued) .... U) CI ~ ~ Z (:) .... ch .... 8 i3z 4.4 SWITCHING CHARACTERISTICS 4.4.1 Definitions All the timing specifications given in this section refer to 2.0V on the rising or falling edges of the clock phases PHil and PHI2; to 15% or 85% of Vee on all the CMOS output signals, and to 0.8V or 2.0V on all the TTL input signals as illustrated in Figures 4·2 and 4-3 unless specifically stated otherwise. PHln [ ABBREVIATIONS: L.E. - leading edge R.E. - rising edge T.E. - F.E. - falling edge trailing edge _ _ _ _ _ _ _ _}~ PHI" [ SIGI [ - ") 2.0V 2.0V -F-====i':::::- _ _ _ _.If'.. _______ts.!G~h SIG2 [ SIGI [ TL/EE/8525-40 FIGURE 4-3. Timing Specification Standard (TTL Input Signals) SIG2 [ TL/EE/8525-39 FIGURE 4·2. Timing Specification Standard (CMOS Output Signals) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32C016·10 and NS32C016·15 Maximum times assume capacitive loading of 75 pF, on the address/data bus signals and 50 pF on all other signals. Name toy Figure Description Reference/Conditions I-_N_S_3_2C.,.0_1_6_.1_0_t-_N_S_3_2C.,.0_1_6_.1_5--j Min Max Min Max Units 4·4 Address bits 0-15 valid after R.E., PHil Tl 4-4 Address bits 0-15 hold after R.E., PHil TmmuorT2 4·4 Data valid (write cycle) after R.E., PHil T2 4·4 Data hold (write cycle) after R.E., PHil nexiTlorTi 4·4 Address bits 16-23 valid after R.E., PHil Tl 4·4 Address bits 16-23 hold after R.E., PHil nexiTlorTi o o ns 40 35 5 5 50 ns 35 o o 40 ns ns ns 35 ns tALADSs 4·5 Address bits 0-15 set up before ADS T.E. 25 20 ns tAHADSs 4·5 Address bits 16-23 set up before ADS T.E. 25 20 ns tALADSh 4·9 Address bits 0-15 hold after ADS T.E. 15 10 ns tAHADSh 4·9 Address bits 16-23 hold after ADS T.E. 15 10 ns 4·5 Address bits 0-15 floating (no MMU) after R.E., PHil T2 4·9 Address bits 0-15 floating (withMMU) after R.E., PHil TMMU 4·9 Address bits 16-23 floating (withMMU) after R.E., PHil TMMU tHBEv 4·4 HBE Signal valid after R.E., PHil tHBEh 4·4 HBE signal hold after R.E., PHil nexiTlorTi tSTv 4·4 Status (STO-ST3) valid after R.E., PHil T4 (before n, see note) IsTh 4·4 Status (STO-ST3) hold after R.E., PHil T4 (after Tl) tDDINv 4-5 DDIN signal valid after R.E., PHil Tl tALMf 2·346 n 25 20 ns 25 20 ns 25 20 ns 45 35 ns o o 45 o ns 35 o 50 ns ns 35 ns z 4.0 Device Specifications (Continued) en Ct.) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32C016·10 and NS32C016·15 (Continued) o C Description N NS32C016·10 NS32C016·15 Min Min Figure tOOINh 4·5 ODIN Signal hold after R.E., PHil next Tl orTi tAOSa 4·4 ADS signal active (low) after R.E., PHil Tl 35 26 ns tAOSia 4·4 ADS signal inactive after R.E., PHI2 Tl 40 30 ns tAOSw 4·4 ADS pulse width at 15% Vcc (both edges) tOSa 4·4 OS signal active (low) after R.E., PHil T2 40 30 ns tOSla 4·4 OS signal inactive after R.E., PHil T4 40 30 ns tALI 4·6 ADO-AD15 floating after R.E., PHil Tl (caused by HOLD) 25 20 ns tAH! 4·6 A16-A23 floating after R.E., PHil Tl (caused by HOLD) 25 20 ns Reference/Conditions Max Units Max 0 0 ....... z ns en Ct.) N 30 ns 25 toS! 4·6 OS floating (caused by HOLD) after R.E., PHil Ti 50 40 ns tAOS! 4·6 ~ floating (caused by HOLD) after R.E., PHil Ti 50 40 ns tHBE! 4·6 HBE floating (caused by HOLD) after R.E., PHil Ti 50 40 ns toolN! 4·6 ODIN floating (caused by HOLD) after R.E., PHil Ti 50 40 ns tHLOAa 4·6 HLDA signal active (low) after R.E., PHil Ti 30 25 ns tHLOAia 4·8 HLDA signal inactive after R.E., PHil Ti 40 30 ns tOSr 4·8 OS signal returns from floating (caused by HOLD) after R.E., PHil Ti 55 40 ns tAOSr 4·8 ~ signal returns from floating after R.E., PHil Ti 55 40 ns 55 40 ns 55 40 ns (caused by HOLD) tHBEr 4·8 HBE Signal returns from floating (caused by HOLD) after R.E., PHil Ti tOOINr 4·8 ODIN signal returns from floating (caused by HOLD) after R.E., PHil Ti tOOIN! 4·9 ODIN Signal floating (caused by FLT) after FLT F.E. 55 50 ns tHBEI 4·9 HBE signal low (caused by FLT) after FLT F.E. 40 30 ns tOOINr 4·10 ODIN signal returns from floating (caused by FLT) after FLT R. E. 40 30 ns tHBEr 4·10 HBE signal returns from low (caused by FLT) after FLT R. E. 35 25 ns tspca 4·13 SPC output active (low) after R.E., PHil Tl 35 26 ns 26 ns ns tsPCia 4·13 SPC output inactive after R.E., PHil T4 35 tSPCn! 4·15 SPC output nonforcing after R.E., PHI2 T4 30 25 tov 4-13 Data valid (slave processor write) after R.E., PHil Tl 50 35 tOh 4·13 Data hold (slave processor write) after R.E., PHil next Tl or Ti 0 tpFSw 4-18 PFS pulse width at 15% VCC (both edges) 50 tPFSa 4-18 PFS pulse active (low) after R.E., PHI2 40 35 ns tPFSia 4-18 PFS pulse inactive after R.E., PHI2 40 35 ns tlLOs 4-20a ILO signal setup before R.E., PHil Tl of first interlocked write cycle 50 35 ns tlLOh 4-20b ILO signal hold after R.E., PHil T3 of last interlocked read cycle 10 7 ns tlLOa 4-21 iIO Signal active (low) after R.E., PHil 2-347 .... ....c. (7) Name 0 ns 40 35 ns ns 30 ns o ....C ....• (7) (11 .... ....d. 8 II) ~ en z ...... . .... CD .... 8N 4.0 Device Specifications (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32C016-10 and NS32C016-15 (Continued) Name Figure Description Reference/Conditions NS32C016-10 NS32C016-15 Min Min Max Units Max C) ~ Z tlLOia 4-21 ILO signal inactive after R.E., PHI1 tusv 4-22 U/S signal valid after R.E., PHI1 T4 tUSh 4-22 U/S signal hold after R.E., PHI1 T4 tNSPF 4·19b Nonsequential fetch to next PFS clock cycle after R.E., PHI1 T1 tpFNS 4·19a PFS clock cycle to next nonsequential fetch before R.E., PHI1 T1 35 35 30 ns 30 ns 8 6 ns 4 4 tcp 4 4 Icp Last operand transfer of before R.E., PHI1 T1 of first 0 an instruc1ion to next bus cycle of transfer 0 Icp PFS clock cycle Note: Every memory cycle starts with T4. during which Cycle Status is applied. If the CPU was idling. the sequence will be:" ... TI, T4. Tl .. :'.11 the CPU was not idling. the sequence will be: ". . . T4. T1 . . .". tLXPF 4·29 4.4.2.2 Input Signal Requirements: NS32C016-10 and NS32C016-15 Name Figure Description Reference/Conditions NS32C016-10 NS32C016-15 Min Min Max Units Max tPWR 4·25 Power stable to RST R.E. after Vcc reaches 4.5V 50 33 I's tOls 4·5 Data in setup (read cycle) before F.E., PHI2 T3 15 10 ns tOlh 4·5 Data in hold (read cycle) after F.E., PHI1 T4 3 3 ns tHLOa 4·6 HOLD active (low) setup time (see note) before F.E., PHI2 TX1 25 17 ns tHLOia 4·8 HOLD inactive setup time before F.E., PHI2 Ti 25 17 ns tHLDh 4·6 HOLD hold time after R.E., PHI1 TX2 0 0 ns tFLTa 4·9 FLT active (low) setup time before F.E., PHI2 Tmmu 25 17 ns tFLTia 4·10 FLT inactive setup time before F.E., PHI2 T2 25 17 ns tROYs 4·11,4·12 ROY setup time before F.E., PHI2 T2 or T3 15 10 ns tROYh 4·11,4·12 ROY hold time after F.E., PHI1 T3 5 5 ns tASTs 4·23 ABT setup time (FLT inactive) before F.E., PHI2 Tmmu 20 13 ns tASTs 4-24 ABT setup time (FLT active) before F.E., PHI2 Tf 20 13 ns tASTh 4·23 ABT hold time after R.E., PHI1 0 0 ns tRSTs 4·25,4·26 RST setup time before F.E., PHI1 10 8 ns tRSTw 4·26 RST pulse width at 0.8V (both edges) 64 64 tcp tiNTs 4·27 INT setup time before R.E., PHI1 20 15 ns tNMlw 4·28 NMI pulse width at 0.8V (both edges) 70 70 ns tOls 4·14 Data setup (slave read cycle) before F.E., PHI2 T1 15 10 ns tOlh 4·14 Data hold (slave read cycle) after R.E., PHI1 T4 3 3 ns 2·348 z en Co) 4.0 Device Specifications (Continued) N oo 4.4.2.2 Input Signal Requirements: NS32C016-10 and NS32C016-15 (Continued) Name Figure Description SPC pulse delay Reference/Conditions Max 30 25 ns oo 20 20 ns U1 before R.E., PHI1 of cycle during which RST pulse is removed 1 1 tcp after F.E., PHI1 of cycle during which RST pulse is removed 2 2 tcp SPC setup time before F.E., PHI1 tspCw 4-15 SPC pulse width from slave processor (async. input) at O.BV (both edges) ATISPC setup for address translation strap AT/SPC hold for address translation strap after R.E., PHI2 T4 from slave N Note: This setup time is necessary to ensure prompt acknowledgement via HLDA and the ensuing floating of CPU off the buses. Note that the time from the receipt of the HOLD signal until the CPU floats is a function of the time HOLD signal goes low, the state of the ROY input (in MMU systems), and the length of the current MMU cycle. 4.4.2.3 Clocking Requirements: NS32C016-10 and NS32C016-15 Name Figure Description Reference/Conditions NS32C016-10 NS32C016-15 Min Max Min Max 100 250 66 250 ns Units tep 4-17 Clock period R.E., PHI1, PHI2 to next R.E., PHI1, PHI2 teLw 4-17 PHI1, PHI2 pulse width At2.0V on PHI1, PHI2 (both edges) O.5tcp -10 ns 0.5tcp -6ns teLh 4-17 PHI1, PHI2 High Time At 90% VCC on PHI1, PHI2 0.5tep -15ns 0.5tcp -10ns tCLI 4-17 PHI1, PHI2 Low Time At 15% Vcc on PHI1, PHI2 0.5tep -5ns 0.5tcp -5 ns tnOVL(1,2) 4-17 Non-overlap time At 15% Vcc on PHI1, PHI2 -2 2 -2 2 ns Non-overlap asymmetry At15% Vcc on PHI1, PHI2 -3 3 -3 3 ns At2.0V on PHI1, PHI2 -5 5 -3 3 ns tnOVLas (tnOVL(1) - tnOVL(2») tCLwas PHI1, PHI2 asymmetry (teLw(1) - tCLw(2») . o ....... z en Co) 4-15 4-16 Min Max ...... Q) ...... ns tsPCs tATh Min Units 25 4-15 4-16 NS32C016-15 30 tSPCd tATs NS32C016-10 2-349 . ...... Q) ...... ~ .,... *' B r------------------------------------------------------------------------------------------, 4.0 Device Specifications (Continued) 4.4.3 Timing Diagrams ~ (/) Z ..... Q .,... CD .,... . 12 T1 8 PHil [ ~ PHI2 [ T3 T4 N Z AJlO.15 [ AI6-23 [ ST(1.3 [-1________+~-Il-A-LI-O--+------'........1_"_/' ~N-E-XT--- os [ -1----~IDS. ~___+_---~ (HIGH) ROY [ I TLlEE/8525-41 FIGURE 4·4. Write Cycle PHil [ PHI2 [ _n Tl 12 n r0- -Ul AJlO.15 [ -K AI6-23 [ -~ - T3 T4 r-- -C A5S[ -t"\~ 'ALAOSI =tx -~ >C VALID / 'DDINv I---t IDDlNh ·N~{A~~L~ VALID '\. ROY [ / (HIGH) TLlEE/8525-42 FIGURE 4·5. Read Cycle 2·350 z CJ) 4.0 Device Specifications (Continued) W I\) o o .... ....o 0'1 I TXI TX2 Ti Ti TI T4 ..... Z PHil [ CJ) w I\) PHI2 [ oo ....0'1 .... ---4--.... iiiiUi[ I U\ HLOA[ loSt IHBE! 1m HBE [ ODIN 'ADS! IOOINt ---,_----+------+------il--~ ~I_----+------+------il-__J'AU - - - - iFLOATiNGi - - -- I AOO·IS [ ~[ (FLO"XTING) I ~~---~~---~I----~I-__ I'AH! ~~ I TLlEE/8525-43 FIGURE 4·6. Floating by HOLD Timing (CPU Not Idle Initially) Note that whenever the CPU is not idling (not in Ti), Ihe HOLD requesl (HOLD low) must be active IHLDa before the falling edge of PHI2 of Ihe clock cycle Ihat appears two clock cycles before T4 (TXt) and stay low unlil IHLDh after Ihe rising edge of PHil of Ihe clock cycle Ihal precedes T4 (TX2) for Ihe requesl 10 be acknowledged. 11 PHil [ Tl TI T4 PHil [ PHI2 [ • HOLD [ HLDA [ -t-----t--' Os ADS HBE [ ODIN A16-23 [ ADO-15 (HIGH) • _ (FLOATING) TLlEE/8525-44 TLlEE/8525-80 FIGURE 4·7. Floating by HOLD Timing (CPU Initially Idle) FIGURE 4·8. Release from HOLD Nole Ihat during Tit the CPU is already idling. 2·351 r.n ,... • CD ,... 4.0 Device Specifications (Continued) C) ~ C') en z ...... C) ,... cD ,... C) oN C') en z CPU STATES TI TMMU TI TI MMUSTATES[ PHil PHI2 [ m[ ADO·IS [ (CPU) AI6-23 [ (CPU) ADS [ (CPU) ODIN [ (CPU) "HBE [ TLlEE/BS25-46 'Note: In future higher speed versions of the NS32COl6, HBE will no longer be affected by FLT. See Figure 8·1 in Appendix B for the required mod~ication to the interface logiC. FIGURE 4-9. FLT Initiated Cycle Timing CPU STATES TI MMUSTATES Tmmu T2 T3 T4 PHil [ PHI2[ FLT [ (MMU) AI6-23 [ (CPU) ODIN (CPU) [ ADs [ (CPU) HiE [ TL/EE/8525-47 Note that when FLT is deasserted the CPU restarts driving ODIN before the MMU releases it. This, however, does not cause any conllict, since both CPU and MMU force ODIN to the same logic level. FIGURE 4-10. Release from FLT Timing PHil [ PHI2 [ RDV [ TL/EE/8525-48 FIGURE 4-11. Ready Sampling (CPU Initially READY) 2-352 4.0 Device Specifications (Continued) I u z en Co) u I N (') ....en ....• U D ________n!-_-!nl.....-_ PHI1 [ Q Q ..... PHI2[ Z en Co) -t--...... N (') .... ....• C7I Q RDY[+__ en TL/EE/8525-49 FIGURE 4·12. Ready Sampling (CPU Initially NOT READY) I I T1 I T4 I PHI1[~ PHI2 [ T1 I I T4 PHI1[~ I PHI2 [ A[)().15 [ A[)()'15 [ --+_ DATA (FROM SLAVE),.-__ sPC [ SPC [ (CPU) DDIN[-+~______~________+- = .. S11).3 [-+_S_TII:_:T_U_S_VA_L_ID-i-J '\......... 5111-3 [-+_S_t_ATU __ S_VA_L_ID+-J '-____....,.._ (HIGH) I iDs [ iDs [ TL/EE/8525-50 TLlEE/8525-51 FIGURE 4·13. Slave Processor Write Timing FIGURE 4·14. Slave Processor Read Timing T4 Tl PHI1 [ PHI2 [-+-_...... SPC [ (FROM CPU) (FROM sJJE1 [- ---------------- -----'spew TLlEE/8525-81 FIGURE 4-15. SPC Timing After transferring last operand to a Slave Processor, CPU turns OFF driver and holds SPC high with internal 5 kO pull up. TLlEE/8525-53 FIGURE 4-16. Reset Configuration Timing 2-353 .... r---------------------------------------------------------------------------------, ch 4.0 Device Specifications (Continued) .... 8 ~ :az c; .... ch .... ~ PHI1 [ Q (I) z -----~r PHI2 [ TL/EE/8525-54 FIGURE 4-17. Clock Waveforms PHI2[~ruu ~;~uTL/EE/8525-55 FIGURE 4-18. Relationship of PFS to Clock Cycles T1 TL/EE/8525-58 FIGURE 4-19a. Guaranteed Delay, PFS to Non-Sequential Fetch I I I I PHI1[~rfl-n-JlT1 I T2 I ••• I A6S[ STO-3 [ CODE 1001 ~--------------~~----~~----------- TUEE/8525-57 FIGURE 4019b. Guaranteed Delay, Non-Sequential Fetch to PFS 2-354 z ~ I\) o Q 4.0 Device Specifications (Continued) I T30RTI I T40RTI I T1 T3 12 .... ....• en T4 Q ...... Z en Co) I\) o Q AiiS[ .... en • .... U'I n:o[ TL/EE/8525-58 FIGURE 4·20a. Relationship of ILO to First Operand Cycle of an Interlocked Instruction I T3 OR TI I T40RTi I Tl T3 12 T4 A5S[ ~ ILO[ ................................ ~~ ........................ TL/EE/8525-59 FIGURE 4·20b. Relationship of ILO to Last Operand Cycle of an Interlocked Instruction TL/EE/8525-60 FIGURE 4·21. Relationship of ILO to Any Clock Cycle I T3 OR TI I T40RTI I Tl 12 T3 T4 TUEE/8525-61 FIGURE 4·22. U/S Relationship to Any Bus CycleGuaranteed Valid Interval 2·355 . II) ..... ..... o o N ('I) en CD z....... . o ..... 4.0 Device Specifications (Continued) T1 I Tinmu TI T2 PHI1 [ CD ..... o oN PHI2 [ ('I) en z ADS [ TL/EE/B525-62 FIGURE 4·23. Abort Timing, FLT Not Applied PHI1 [ PHI2 [ Ds/FLT [ -+---~f----f----H-...J TLlEE/8525-63 FIGURE 4·24. Abort Timing, FLT Applied vee ~----------~~ +-__~ PHI1[ _ _ _ RST/AiiT[ _____________-\\--J TL/EE/B525-64 FIGURE 4·25. Power·On Reset PHI{~JUl- ''''~ [ ~ tRS~r- I' ,~~ TL/EE/B525-65 FIGURE 4·26. Non-Power-On Reset 2-356 z en CJ,) 4.0 Device Specifications (Continued) N n o . ..... Q) ..... o ....... z en CJ,) N PHI1[~ iNT[ . ~_tNMIW_-r NM{ ~tINT. n o..... Q) ..... }..- U1 TL/EE/B525-67 FIGURE 4-28. NMllnterrupt Signal Timing TLlEE/B525-66 FIGURE 4-27. INT Interrupt Signal Detection NEXT FIRST BUS CYCLE Tl T2 T3 T4 T10rTi I TL/EE/B525-66 FIGURE 4-29. Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction NOTE: In a transfer of a Read-Modify-Write type operand, this is the Read transfer, displaying RMW Status (Code 1011). 2-357 • . ~r-------------------------------------------------------------~ ..... co Appendix A: Instruction Formats ~ ~ z C; ..... NOTATIONS: i = Integer Type Field B = 00 (Byte) W = 01 (Word) o = 11 (Double Word) f = Floating Point Type Field F = 1 (Std. Floating: 32 bits) L= 0 (Long Floating: 64 bits) c = Custom Type Field o = 1 (Double Word) Q = 0 (Quad Word) op = Operation Code Valid encodings shown with each format. gen, gen 1, gen 2 = General Addressing Mode Field See Sec. 2.2 for encodings. reg = General Purpose Register Number cond = Condition Code Field 0000 = EQual: Z = 1 0001 = Not Equal: Z = 0 0010 = Carry Set: C = 1 0011 = Carry Clear: C = 0 0100 = Higher: L = 1 0101 = Lower or Same: L = 0 0110 = Greater Than: N = 1 0111 = Less or Equal: N = 0 1000 = Flag Set: F = 1 1001 = Flag Clear: F = 0 1010 = LOwer: L = 0 and Z = 0 1011 = Higher or Same: L = 1 or Z = 1 1100 = Less Than: N = 0 and Z = 0 1101 = Greater or Equal: N = 1 or Z = 1 1110 = (Unconditionally True) 1111 = (Unconditionally False) short = Short Immediate Value. May contain: quick: Signed 4-bit value, in MOVQ, ADDQ, CMPQ,ACB. cond: Condition Code (above), in Scond. areg: CPU Dedicated Register, in LPR, SPA. 0000 = US 0001 - 0111 = (Reserved) 1000 = FP 1001 = SP 1010 = SB 1011 = (Reserved) 1100 = (Reserved) 1101 = PSR 1110 = INTBASE 1111 = MOD ..... o cb ..... o o en z ('II CO) Options: in String Instruct,--io_nS_-r-_.----, I U/W B T T = Translated B = Backward U/W = 00: None 01: While Match 11: Until Match Configuration bits, in SETCFG: IC I M I F mreg: NS32082 Register number, in LMR, SMA. 0000 = BPRO 0001 = BPR1 0010 = (Reserved) 0011 = (Reserved) 0100 = (Reserved) 0101 = (Reserved) 0110 = (Reserved) 0111 = (Reserved) 1000 = (Reserved) 1001 = (Reserved) 1010 = MSR 1011 = BCNT 1100 = PTBO 1101 = PTB1 1110 = (Reserved) 1111 = EIA o 7 FormatO (BR) Bcond 7 I BSR RET CXP RXP RETT RETI SAVE RESTORE 0 I op 10 ' 0 ' 1 101 Format 1 -0000 ENTER -0001 EXIT -0010 NOP -0011 WAIT -0100 DIA -0101 FLAG -0110 SVC -0111 BPT -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 81 7 15 gen sh~rt 0 1 op 11 I 11 1 Format 2 ADDQ CMPQ SPR Scond 2-358 -000 -001 -010 -011 ACB MOVQ LPR -100 -101 -110 z en w Appendix A: Instruction Formats (Continued) 15 al7 0 ~e~ , I' ~p I\) 0 o0 \1'1'1'1'11 Format 3 CXPD BICPSR JUMP BISPSR -0000 -0010 -0100 -0110 1 1 1 0 -1010 -1100 -1110 Trap (UND) on XXX1, 1000 I' gen, ,1 , I" gen 2 'I MOVM CMPM INSS EXTS MOVXBW MOVZBW MOVZiD MOVXiD -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 .... ....0. en ...... Z en w Format 7 ADJSP JSR CASE n 0 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 MUL MEl Trap (UND) DEI QUO REM MOD DIV I\) 0 0 .... en ....• (II o I I I op Format 4 ADD CMP BIC ADDC MOV OR -0000 -0001 -0010 -0100 -0101 -0110 -1000 -1001 -1010 -1100 -1101 -1110 SUB ADDR AND SUBC TBIT XOR a7 i 0 000 0 1 1 1 0 TL/EE/8525-69 Format a EXT CVTP INS CHECK MOVSU MOVUS -000 INDEX -001 FFS -010 -011 -110, reg=001 -110, reg=011 -100 -101 a7 0 FormatS -0000 MOVS CMPS -0001 Trap (UND) on 1XXX, 01XX SETCFG SKPS i -0010 -0011 MOVif LFSR MOVLF MOVFL 001 1 1 1 1 0 Format 9 -000 ROUND -001 TRUNC -010 SFSR -011 FLOOR -100 -101 -110 -111 0 00111 0 ]0 Format 6 ROT ASH CBIT CBITI Trap (UND) LSH SBIT SBITI -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 NEG NOT Trap (UND) SUBP ABS COM IBIT ADDP -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 2-359 111 1 1 1 0 01 TLlEE/8525-70 Format 10 Trap (UND) Always • . .,... CD .,... U) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , Appendix A: Instruction Formats (Continued) o U N 16 115 C') U) Z ...... . .,... o.,... o U N C') U) Z 10 Byte Operation Word CD Format 11 ADD! MOV! CMP! Trap (SLAVE) SUB! NEG! Trap (UNO) Trap (UNO) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 OIV! Trap (SLAVE) Trap (UNO) Trap (UNO) MUll ABS! Trap (UNO) Trap (UNO) -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 --- nnn Operation Word Format 000 Format 15.0 -0000 LCR CATSTO -0001 SCR CATSTI Trap (UNO) on ali others --- 1111111110 _1 Format 15 (Custom Slave) 1 1 1 1 1 1 0, TL/EE/8525-71 -0010 -0011 Format 12 Trap (UNO) Always 001 7 ---I I I I I I I I ___ 1 0 0 1 1 1 1 0 I Format 15.1 TLlEE/8525-72 CCV3 LCSR CCV5 CCV4 Format 13 Trap (UNO) Always -000 -001 -010 -011 CCV2 CCV1 SCSR CCVO -100 -101 -110 -111 o 000 1 1 1 1 0 101 Format 14 ROVAL WRVAL -0000 -0001 LMR SMR Format 15.5 -0010 -0011 CCALO CMOVO CCMPO CCMPI CCALI CMOV2 Trap (UNO) Trap (UNO) Trap (UNO) on 0IXX. lXXX -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 If nnn ~ 010, all, 100, 110, 111 then Trap (UND) Always 2-360 CCAL3 CMOV3 Trap (UNO) Trap (UNO) CCAL2 CMOVI Trap (UNO) Trap (UNO) -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 z (J) Appendix A: Instruction Formats (Continued) W N o C .... • .... C en ---I _no I I I I I I I 1 0 1 1 1 1 ~ ...... Z 1 U) 7 0 Co) TL/EE/8525-74 .... en • .... ---I X I XI X I 0 I 0 I 1 I 1 I 0 1 No C TL/EE/8525-73 U. Format 16 C11 Trap (UND) Always Format 19 Trap (UND) Always Implied Immediate Encodings: 7 ---I I I I I I I I ___ 1 1 0 1 1·1 1 ~ a 7 0 1 r1 ra Register Mask, appended to SAVE, ENTER TL/EE/8525-75 Format 17 Trap (UND) Always a 7 r1 7 r2 r3 r4 rS r6 Register Mask, appended to RESTORE, EXIT 0 ---I I I I I I I I 1 ___ 1 0 0 0 1 1 1 0 TUEE/8525-76 a 7 Format 18 : offset: Trap (UND) Always le~gth-1 : Offset/Length Modifier appended to INSS, EXTS 2-361 NS32C016-10/NS32C016-15 J> E -To .--L.n • .-- ............... PER XCTAL2 READY CWAIT XCTAL1 WAIT8 NS32C201 TCU WAIT2 REID ~} 1:= WAif4 ~ AD PHI2 WR ~ >C. iffi Wii ADS RSTO CTTL ODIN ROY ffiiE ILO HBE ~ --;r ~ ROY PHI1 PHI2 I ILD HBE HOLD HLDAI HLDA 00 ~ INTS{~ DS/FlT FLT PFS PFs iNT NS32C016 CPU Niii (24)1 Uti ADS DoiN ODIN STO-ST3 I - I - - RST/Aiif 1SPC ADDR/DATA S· en c CO CO CD ~ STROBE ADDRESS LATCHI BUFFER ADDRESS BUS tn (24) I---t 10kO +5 (24) I- L..- ODIN (24) (24) ADDR/DATA MULTIPLEXED BUS ::l DJ n O· N532082 MMU RST/ABT ~ CD - VALID (24) U/S tn PHYSICAL AD DR. HlDAO STO-ST3 t> HOLD r PAV ADS AT/SPC ADDRIDATA 10 kl! ~ CO +5 HLDAD PHI2 i') J,.. ! HOLD ROY RSTI PHI1 CD Q. WAIT REQUESTS (ADDR. DECODED OR STRAPPED) WAIT1 RSTI PHil -g -a t (16), (16 DATA SPC STo-sn N532081 FPU RST ClK j.- II I I EN DATA -- l---t RST CLK MULTIPLEXED BUS MEMORYI PERIPHERALS (16) DIR ~. DATA BUS (16) DATA BUfFERS STATUS TUEE/8525-n FIGURE 8-1. System Connection Diagram ~National PRELIMINARY ~ Semiconductor NS32016-10 High-Performance Microprocessor General Description Features The NS32016 is a 32-bit, virtual memory microprocessor with a 16-MByte linear address space and a 16-bit external data bus. It has a 32-bit ALU, eight 32-bit general purpose registers, an eight-byte prefetch queue, and a slave processor interface. The NS32016 is fabricated with National Semiconductor's advanced XMOS process, and is fully object code compatible with other Series 32000 processors. The Series 32000 instructions set is optimized for modular high-level languages (HLL). The set is very symmetric, it has a two address format, and it incorporates HLL oriented addressing modes. The capabilities of the NS32016 can be expanded with the use of the NS32081 floating point unit (FPU), and the NS32082 demand-paged virtual memory management unit (MMU). Both devices interface to the NS32016 as slave processors. The NS32016 is a general purpose microprocessor that is ideal for a wide range of computational intensive applications. • • • • • 32-bit architecture and implementation Virtual memory support 16-MByte linear address space 16-bit external data bus Powerful instruction set - General 2-address capability - High degree of symmetry - Addressing modes optimized for high-level languages • Series 32000 slave processor support • High-speed XMOSTM technology • 48-pin dual-in-line (DIP) package Block Diagram ADD/DATA CONTROLS & STATUS MICROCODE ROM AND CONTROL LOGIC o::rn CFG REGISTER REGISTER SET o o INTBASE SB FP SPI WORKING REGISTERS SPO PC RO Rl R2 R3 R4 R5 I I I R6 R7 I I MOD I : PSR L_________________ 2-363 J TL/EE/5054-1 ~ c.:I N CI ..... c:p ..... CI C) r-------------------------------------------------------------------------------------~ 'P'" ch 'P'" a Table of Contents C) z 1.0 PRODUCT INTRODUCTION 2.0 ARCHITECTURAL DESCRIPTION 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.8 Instruction Status 2.1 Programming Model 3.8.1 General Interrupt/Trap Sequence 2.1.1 General Purpose Registers 3.8.2 Interrupt/Trap Return 2.1.2 Dedicated Register 3.8.3 Maskable Interrupts (The INT Plan) 2.1.3 The Configuration Register (CFG) 3.8.3.1 Non-Vectored Mode 2.1.4 Memory Organization 3.8.3.2 Vectored Mode: Non-Cascaded Case 2.1.5 Dedicated Tables 3.8.3.3 Vectored Mode: Cascaded Case 2.2 Instruction Set 3.8.4 Non-Maskable Interrupt (The NMI Pin) 2.2.1 General Instruction Format 3.8.5 Traps 2.2.2 Addressing Modes 3.8.6 Prioritization 2.2.3 Instruction Set Summary 3.8.7 Interrupt/Trap Sequence: Detail Flow 3.8.7.1 MaskablelNon-Maskable Interrupt Sequence 3.0 FUNCTIONAL DESCRIPTION 3.8.7.2 Trap Sequence: Traps Other Than Trace 3.1 Power and Grounding 3.9 Slave Processor Instructions 3.2 Clocking 3.9.1 Slave Processor Protocol 3.3 Resetting 3.9.2 Floating Point Instructions 3.4 Bus Cycles 3.9.3 Memory Management Instructions 3.4.1 Cycle Extension 3.9.4 Custom Slave Instructions 3.4.2 Bus Status 4.0 DEVICE SPECIFICATIONS 3.4.3 Data Access Sequences 3.4.3.1 Bit Access 4.1 Pin Descriptions 3.4.3.2 Bit Field Accesses 4.1.1 Supplies 3.4.3.3 Extending Multiply Accesses 4.1.2 Input Signals 3.4.4 Instruction Fetches 4.1.3 Output Signals 3.4.5 Interrupt Control Cycles 4.1.4 Input/Output Signals 4.2 Absolute Maximum Ratings 3.4.6 Slave Processor Communication 3.4.6.1 Slave Processor Bus Cycles 4.3 Electrical Characteristics 3.4.6.2 Slave Operand Transfer Sequences 4.4 Switching Characteristics 3.5 Memory Management Option 4.4.1 Definitions 3.5.1 Address Translation Strap 4.4.2 Timing Tables 3.5.2 Translated Bus Timing 4.4.2.1 Output Signals: Internal Propagation Delays 3.5.3 The FLT (Float) Pin 4.4.2.2 Input Signals Requirements 3.5.4 Aborting Bus Cycles 4.4.2.3 Clocking Requirements 3.5.4.1 The Abort Interrupt 4.4.3 Timing Requirements 3.5.4.2 Hardware Considerations Appendix A: Instruction Formats 3.6 Bus Access Control B: Interfacing Suggestions 3.7 Dual Processing 3.7.1 Bus Arbitration 3.7.2 Processor Assignment 2-364 r--------------------------------------------------------------------------, Z List of Illustrations The General and Dedicated Registers ............................................................................2-1 Processor Status Register .......................................................................................2-2 CFG Register .................................................................................................. 2-3 Module Descriptor Format. ......................................................................................2-4 A Sample Link Table ...........................................................................................2-5 General Instruction Format ......................................................................................2-6 Index Byte Format .............................................................................................2-7 Displacement Encodings ........................................................................................2-8 Recommended Supply Connections .............................................................................. 3-1 Clock Timing Relationships ......................................................................................3-2 Power-On Reset Requirements ..................................................................................3-3 General Reset Timing ..........................................................................................3-4 Recommended Reset Connections, Non-Memory-Managed System ................................................. 3-5a Recommended Reset Connections, Memory-Managed System ..................................................... 3-5b Bus Connections ...............................................................................................3-6 Read Cycle Timing .............................................................................................3-7 Write Cycle Timing .............................................................................................3-8 ROY Pin Timing ................................................................................................3-9 Extended Cycle Example ......................................................................................3-1 0 Memory Interface .............................................................................................3-11 Slave Processor Connections ..................................................................................3-12 CPU Read from Slave Processor ................................................................................3-13 CPU Write to Slave Processor ..................................................................................3-14 Read Cycle with Address Translation (CPU Action) ................................................................3-15 Write Cycle with Address Translation (CPU Action) ................................................................ 3-16 Memory-Managed Read Cycle ..................................................................................3-17 Memory-Managed Write Cycle ..................................................................................3-18 FLTTiming ........................ : .......................................................................... 3-19 HOLD Timing, Bus Initially Idle ..................................................................................3-20 HOLD Timing, Bus Initially Not Idle .............................................................................. 3-21 Interrupt Dispatch and Cascade Tables .......................................................................... 3-22 Interrupt/Trap Service Routine Calling Sequence ................................................................. 3-23 Return from Trap (RETT n) Instruction Flow ...................................................................... 3-24 Return from Interrupt (REn Instruction Flow ......................................................................3-25 Interrupt Control Connections (16 levels) .........................................................................3-26 Cascaded Interrupt Control Unit Connections ..................................................................... 3-27 Service Sequence ............................................................................................3-28 Slave Processor Protocol ......................................................................................3-29 Slave Processor Status Word Format ............................................................................ 3-30 NS32016 Connection Diagram .................................................................................. .4-1 Timing Specification Standard (Signal Valid after Clock Edge) ........................................................ 4-2 Timing Specification Standard (Signal Valid before Clock Edge) ..................................................... .4-3 Write Cycle ................................................................................................... .4-4 Read Cycle ....................................................................................................4-5 Floating by HOLD Timing (CPU Not Idle Initially) .................................................................... 4-6 Floating by HOLD Timing (CPU Initially Idle) ....................................................................... 4-7 2-365 en c.:I N Q .... ..... a) Q .,... C) . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , cb .,... ~ U) z List of Illustrations (Continued) Release from HOLD ...............................•................•...........................................4-8 FLT Initiated Float Cycle Timing ...........•...•......................................•.....•...................•. 4-9 Release from FLTTiming ••....................................................................................4-10 Ready Sampling (CPU Initially READy) •..•••.•...•...•...•.........•...•....•....•..•.••.••.•......•....•....... 4-11 Ready Sampling (CPU Initially NOT READY) .....................•...••...••.................•••.•....•..•........ 4-12 Slave Processor Write Timing ..•.......•........................................................................4-13 Slave Processor Read Timing .................•.......•.......................•...•....•...•.........•...•....•4-14 SPCTiming ••..••.•.•..•...•..................................................................................4-15 Reset Configuration Timing ...•.•..•........................................•........•........•....•...........•4-16 Clock Waveforms .......................................................•.................................... .4-17 Relationship of PFS to Clock Cycles ..................•.................•....•...•.....................•.........4-18 Guaranteed Delay, PFS to Non-Sequential Fetch ................................................................4-19a Guaranteed Delay, Non-Sequential Fetch to PFS ..•....•..•....•....•...•.•..•....•..•.•...•...•....•....•..•.•. 4-19b Relationship of ILO to First Operand otan Interlocked Instruction ..•.............•....••...•..................•... .4-20a Relationship of ILO to Last Operand of an Interlocked Instruction .....................................•............ 4-20b Relationship of ILO to Any Clock Cycle •..........•................•...............•...•.............••.......... 4-21 U/S Relationship to Any Bus Cycle - Guaranteed Valid Interval .................................................... 4-22 Abort Timing, FLT Not Applied .•.•..............•.........•.............•..............•...•..................••4-23 Abort Timing, FLT Applied ..........................................................•.......................... .4-24 Power-On Reset ..•....•......•....•...•.......••......................•....•........•........•....•....•...•.4-25 Non-Power-On Reset ..................................•.......................................................4-26 INT Interrupt Signal Detection .................................................................................. 4-27 NMllnterrupt Signal Timing .•........•.......•....•....•........•..................•...••.....................• .4-28 Relationship between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction ........................... 4-29 System Connection Diagram .•......................................................•.•..............•......•...B-1 List of Tables NS32016 Addressing Modes •....•.......•.............•....•..........................•...............•........ 2-1 NS32016 Instruction Set Summary ............................................................................... 2-2 Bus Cycle Categories .......................................•...................................................3-1 Access Sequences ................................................................•.............•.........•...•3-2 Interrupt Sequences •...•....................................................................................... 3-3 Floating Point Instruction Protocols .............................................•................................. 3-4 Memory Management Instruction Protocols ...........................................•..................•.......•.3-5 Custom Slave Instruction Protocols ..................•...................................................•....•...3-6 2-366 ztJ) 1.0 Product Introduction Co) N The Series 32000 Microprocessor family is a new generation of devices using National's XMOS and CMOS technologies. By combining state-of-the-art MOS technology with a very advanced architectural design philosophy, this family brings mainframe computer processing power to VLSI processors. The Series 32000 family supports a variety of system configurations, extending from a minimum low-cost system to a powerful 4 gigabyte system. The architecture provides complete upward compatibility from one family member to another. The family consists of a selection of CPUs supported by a set of peripherals and slave processors that provide sophisticated interrupt and memory management facilities as well as high-speed floating-point operations. The architectural features of the Series 32000 family are described briefly below: Memory Management: Either the NS32382 or the NS32082 Memory Management Unit may be added to the system to provide advanced operating system support functions, including dynamic address translation, virtual memory management, and memory protection. Large, Uniform Addressing: The NS32016 has 24-bit address pOinters that can address up to 16 megabytes without requiring any segmentation; this addressing scheme provides flexible memory management without added-on expense. Modular Software Support: Any software package for the Series 32000 family can be developed independent of all other packages, without regard to individual addressing. In addition, ROM code is totally relocatable and easy to access, which allows a significant reduction in hardware and software cost. Software Processor Concept: The Series 32000 architecture allows future expansions of the instruction set that can be executed by special slave processors, acting as extensions to the CPU. This concept of slave processors is unique to the Series 32000 family. It allows software compatibility even for future components because the slave hardware is transparent to the software. With future advances in semiconductor technology, the slaves can be physically integrated on the CPU chip itself. To summarize, the architectural features cited above provide three primary performance advantages and characteristics: • High-Level Language Support Powerful Addressing Modes: Nine addressing modes available to all instructions are included to access data structures efficiently. Data Types: The architecture provides for numerous data types, such as byte, word, doubleword, and BCD, which may be arranged into a wide variety of data structures. Symmetric Instruction Set: While avoiding special case instructions that compilers can't use, the Series 32000 family incorporates powerful instructions for control operations, such as array indexing and external procedure calls, which save considerable space and time for compiled code. Memory-to-Memory Operations: The Series 32000 CPUs represent two-address machines. This means that each operand can be referenced by anyone of the addressing modes provided. This powerful memory-to-memory architecture permits memory locations to be treated as registers for all useful operations. This is important for temporary operands as well as for context switching. .... en .... . C) C) • Easy Future Growth Path • Application Flexibility 2.0 Architectural Description 2.1 PROGRAMMING MODEL fI The Series 32000 architecture includes 16 registers on the NS32016 CPU. GENERAL DEDICATED 32 32 PROGRAM COUNTER PC STAnCBASE sa FRAME POINTER FP RO RI R2 R3 USER STACK PTR. INTERRUPT STACK PTR. INTERRUPT BASE SPI} SP SPO R4 R5 INTBASE PSR MOD R6 STATUS MDDULE R7 TUEE/5054-3 FIGURE 2-1. The General and Dedicated Registers 2.1.1 General Purpose Registers There are eight registers for meeting high speed general storage requirements, such as holding temporary variables and addresses. The general purpose registers are free for any use by the programmer. They are thirty-two bits in length. If a general register is specified for an operand that is eight or sixteen bits long, only the low part of the register is used; the high part is not referenced or modified. 2-367 o,.. ch ,.. o r-----------------------------------------------------------------------------~ 2.0 Architectural Description (Continued) N 2.1.2 Dedicated Registers Z The eight dedicated registers of the NS32016 are assigned specific functions. ~ C: The C bit indicates that a carry or borrow occurred after an addition or subtraction instruction. It can be used with the ADDC and SUBC instructions to perform multiple-precision integer arithmetic calculations. It may have a setting of 0 (no carry or borrow) or 1 (carry or borrow). PC: The PROGRAM COUNTER register is a pointer to the first byte of the instruction currently being executed. The PC Is used to reference memory in the program section. (In the NS32016 the upper eight bits of this register are always zero.) T: The T bit causes program traCing. If this bit is a 1, a TRC trap is executed after every instruction (Section 3.B.5). L: The L bit is altered by comparison instructions. In a comparison instruction the L bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as unsigned integers. Otherwise, it is set to "0". In Floating Point comparisons, this bit is always cleared. SPO, SP1: The SPO register points to the lowest address of the last item stored on the INTERRUPT STACK. This stack is normally used only by the operating system. It is used primarily for storing temporary data, and holding return information for operating system subroutines and interrupt and trap service routines. The SP1 register points to the lowest address of the last item stored on the USER STACK. This stack is used by normal user programs to hold temporary data and subroutine return information. F: The F bit is a general condition flag, which is altered by many instructions (e.g., integer arithmetic instructions use it to indicate overflow). Z: The Z bit is altered by comparison instructions. In a comparison instruction the Z bit is set to "1" if the second operand is equal to the first operand; otherwise it is set to "0". In this document, reference is made to the SP register. The terms "SP register" or "SP" refer to either SPO or SP1, depending on the setting of the S bit in the PSR register. If the S bit in the PSR is 0 then SP refers to SPO. If the S bit in the PSR is 1 then SP refers to SP1. (In the NS32016 the upper eight bits of these registers are always zero.) N: The N bit is altered by comparison instructions. In a comparison instruction the N bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as signed integers. Otherwise, it is set to "0". U: If the U bit is "1" no privileged instructions may be executed. If the U bit is "0" then all instructions may be executed. When U = 0 the NS32016 is said to be in Supervisor Mode; when U= 1 the NS32016 is said to be in User Mode. A User Mode program is restricted from executing certain instructions and accessing certain registers which could interfere with the operating system. For example, a User Mode program is prevented from changing the setting of the flag used to indicate its own privilege mode. A Supervisor Mode program is assumed to be a trusted part of the operating system, hence it has no such restrictions. Stacks in the Series 32000 family grow downward in memory. A Push operation pre-decrements the Stack Pointer by the operand length. A Pop operation post-increments the Stack Pointer by the operand length. FP: The FRAME POINTER register is used by a procedure to access parameters and local variables on the stack. The FP register is set up on procedure entry with the ENTER instruction and restored on procedure termination with the EXIT instruction. The frame pointer holds the address in memory occupied by the old contents of the frame pOinter. (In the NS32016 the upper eight bits of this register are always zero.) S: The S bit specifies whether the SPO register or SP1 register is used as the stack pointer. The bit is automatically cleared on interrupts and traps. It may have a setting of 0 (use the SPO register) or 1 (use the SP1 register). SB: The STATIC BASE register points to the global variables of a software module. This register is used to support relocatable global variables for software modules. The SB register holds the lowest address in memory occupied by the global variables of a module. (In the NS32016 the upper eight bits of this register are always zero.) P: The P bit prevents a TRC trap from occurring more than once for an instruction (Section 3.B.5). It may have a setting of 0 (no trace pending) or 1 (trace pending). I: If 1= 1, then all interrupts will be accepted (Section 3.B). If 1=0, only the NMI interrupt is accepted. Trap enables are not affected by this bit. INTBASE: The INTERRUPT BASE register holds the address of the dispatch table for interrupts and traps (Section 3.B). The INTBASE register holds the lowest address in memory occupied by the dispatch table. (In the NS32016 the upper eight bits of this register are always zero.) 2.1.3 The Configuration Register (CFG) Within the Control section of the NS32016 CPU is the fourbit CFG Register, which declares the presence of certain external devices. It is referenced by only one instruction, SETCFG, which is intended to be executed only as part of system initialization after reset. The format of the CFG Register is shown in Figure 2-3. MOD: The MODULE register holds the address of the module descriptor of the currently executing software module. The MOD register is sixteen bits long, therefore the module table must be contained within the first 64K bytes of memory. PSR: The PROCESSOR STATUS REGISTER (PSR) holds the status codes for the NS32016 microprocessor. The PSR is sixteen bits long, divided into two eight-bit halves. The low order eight bits are accessible to all programs, but the high order eight bits are accessible only to programs executing in Supervisor Mode. 15 B 17 FIGURE 2-3. CFG Register The CFG I bit declares the presence of external interrupt vectoring circuitry (specifically, the NS32202 Interrupt Control Unit). If the CFG I bit is set, interrupts requested through the INT pin are "Vectored." If it is clear, these interrupts are "Non-Vectored." See Section 3.8. 0 IXIXIXIXI'I plslu NlzlFIXIXI LITle' The F, M and C bits declare the presence of the FPU, MMU and Custom Slave Processors. If these bits are not set, the corresponding instructions are trapped as being undefined. TUEE/5054-Bl FIGURE 2·2. Processor Status Register 2-36B 2.0 Architectural Description (Continued) 16115 2.1.4 Memory Organization The main memory of the NS32016 is a uniform linear address space. Memory locations are numbered sequentially starting at zero and ending at 224 - 1. The number specifying a memory location is called an address. The contents of each memory location is a byte consisting of eight bits. Unless otherwise noted, diagrams in this document show data stored in memory with the lowest address on the right and the highest address on the left. Also, when data is shown vertically, the lowest address is at the top of a diagram and the highest address at the bottom of the diagram. When bits are numbered in a diagram, the least significant bit is given the number zero, and is shown at the right of the diagram. Bits are numbered in increasing significance and toward the left. MSB's 817 LSB's LSB's 01 2.1.5 Dedicated Tables Two of the NS32016 dedicated registers (MOD and INTBASE) serve as pointers to dedicated tables in memory. The INTBASE register pOints to the Interrupt Dispatch and Cascade tables. These are described in Section 3.8. The MOD register contains a pOinter into the Module Table, whose entries are called Module Descriptors. A Module Descriptor contains four pointers, three of which are used by the NS32016. The MOD register contains the address of the Module Descriptor for the currently running module. It is automatically updated by the Call External Procedure instructions (CXP and CXPD). The format of a Module Descriptor is shown in Figure 2-4. The Static Base entry contains the address of static data assigned to the running module. It is loaded into the CPU Static Base register by the CXP and CXPD instructions. The Program Base entry contains the address of the first byte of instruction code in the module. Since a module may have multiple entry pOints, the Program Base pOinter serves only as a reference to find them. Byte at Address A Two contiguous bytes are called a word. Except where noted (Section 2.2.1), the least significant byte of a word is stored at the lower address, and the most significant byte of the word is stored at the next higher address. In memory, the address of a word is the address of its least significant byte, and a word may start at any address. 115 817 A A+2 A+1 Double Word at Address A Although memory is addressed as bytes, it is actually organized as words. Therefore, words and double words that are aligned to start at even addresses (multiples of two) are accessed more quickly than words and double words that are not so aligned. A+3 0I A+1 A Word at Address A Two contiguous words are called a double word. Except where noted (Section 2.2.1), the least significant word of a double word is stored at the lowest address and the most significant word of the double word is stored at the address two greater. In memory, the address of a double word is the address of its least significant byte, and a double word may start at any address. The Link Table Address points to the Link Table for the currently running module. The Link Table provides the information needed for: 1) Sharing variables between modules. Such variables are accessed through the Link Table via the External addressing mode. '5 I MOD I 31 STATIC SASE I oJ fI 0 3' ENTRY LINK TABLE ADDRESS PROGRAM BASE ABSOLUTE ADDRESS (VARIABLE) ABSOLUTE ADDRESS (VARIABLE) OFFSET RESERVED I MODULE (P ROCEDURE) .... TL/EE/5054-5 FIGURE 2·5. A Sample Link Table TL/EE/5054-4 FIGURE 2·4. Module Descriptor Format OPTIONAL EXTENSIONS BASIC INSTRUcnON r~------------~A~---------------~~-----, DISP2DISP1 IMPUED _EDIATE OPE"AND(S) DISP IMII . DISP~~ISP1 DISP I INDEX BYTE INDEX BYTE GEN ADCR MODE A IMII II I I GEN ADDR MODE B OPCODe t I Y l TL/EE/5054-6 FIGURE 2·6. General Instruction Format 2-369 e .... ....dJ ~ Cf) ~ r-----------------------------------------------------------------------------~ 2.0 Architectural Description 2) (Continued) NS32016 Addressing Modes fall into nine basic types: Register: The operand Is available in one of the eight General Purpose Registers. In certain Slave Processor instructions, an auxiliary set of eight registers may be referenced . instead. Transferring control from one module to another. This is done via the Call External Procedure (CXP) instruction. The format of a Link Table is given in Figure 2-5. A Link Table Entry for an external variable contains the 32-bit address of that variable. An entry for an external procedure contains two 16-bit fields: Module and Offset. The Module field contains the new MOD register contents for the module being entered. The Offset field is an unsigned number giving the position of the entry point relative to the new module's Program Base pOinter. Register Relative: A General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. Memory Space: Identical to Register Relative above, except that the register used is one of the dedicated registers PC, SP, SB or FP. These registers point to data areas generally needed by high-level languages. Byte Displacement: Range - 64 to + 63 For further details of the functions of these tables, see the Series 32000 Instruction Set Reference Manual. 2.2 INSTRUCTION SET 1'0 2.2.1 General Instruction Format _~~_ I 01 Figure 2-6 shows the general format of a Series 32000 instruction. The Basic Instruction is one to three bytes long and contains the Opcode and up to 5-bit General Addressing Mode ("Gen") fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes selected. Word Displacement: Range -8192 to +8191 Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before indexing. See Figure 2-7. Double Word Displacement: Range (Entire Addressing Space) 7 1 GEN. ADDR. MODE : 1 0 I //- REG. NO. TL/EE/5054-7 FIGURE 2-7. Index Byte Format Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected addressing modes. Each Displlmm field may contain one of two displacements, or one immediate value. The size of a Displacement field is encoded within the top bits of that field, as shown in Figure 2-8, with the remaining bits interpreted as a signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most-significant byte first. Note that this is different from the memory representation of data (Section 2.1.4). TL/EE/5054-10 FIGURE 2-8. Displacement Encodlngs Memory Relative: A pOinter variable is found within the memory space pOinted to by the SP, SB or FP register. A displacement is added to that pointer to generate the Effective Address of the operand. Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written. Absolute: The address of the operand is specified by a displacement field in the instruction. Some instructions require additional "implied" immediates andlor displacements, apart from those associated with addreSSing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition (Section 2.2.3). External: A pointer value is read from a specified entry of the current Link Table. To this pointer value is added a displacement, yielding the Effective Address of the operand. Top of Stack: The currently-selected Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. 2.2.2 Addressing Modes The NS32016 CPU generally accesses an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the pro· grammer as an "addressing mode." Scaled Index: Although encoded as an addressing mode, Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by 1, 2, 4 or 8 and adding into the total, yielding the final Effective Address of the operand. Table 2-1 is a brief summary of the addressing modes. For a complete description of their actions, see the Series 32000 Instruction Set Reference Manual. Addressing modes in the NS32016 are designed to optimally support high-level language accesses to variables. In nearly all cases, a variable access requires only one addressing mode, within the instruction that acts upon that variable. Extraneous data movement is therefore minimized. 2-370 ,-----------------------------------------------------------------------, (/) z 2.0 Architectural Description (0) I\) (Continued) .... ....o• o TABLE 2·1 G) NS32016 Addressing Modes ENCODING Register 00000 00001 00010 00011 00100 00101 00110 00111 MODE EFFECTIVE ADDRESS ASSEMBLER SYNTAX Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 RO orFO R1 or F1 R20rF2 R30rF3 R4 or F4 R50rF5 R60rF6 R60rF7 None: Operand is in the specified register. Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(R1) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp Frame memory relative Stack memory relative Static memory relative disp2(disp1 (FP)) disp2(disp1 (SP)) disp2(disp1 (SB)) Disp2 + Pointer; Pointer found at address Disp 1 + Register. "SP" is either SPO or SP1, as selected inPSR. Immediate value None: Operand is input from instruction queue. Absolute @disp Disp. 10110 External EXT (disp1) Top Of Stack 10111 Top of stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) "+ disp Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] EA (mode) + Rn. EA (mode) + 2 x Rn. EA (mode) + 4 x Rn. EA(mode) + 8xRn. "Mode" and "n" are contained within the Index Byte. EA (mode) denotes the effective address generated using mode. Register Relative 01000 01001 01010 01011 01100 01101 01110 01111 + Register. Memory Relative 10000 10001 10010 Reserved 10011 (Reserved for Future Use) Immediate 10100 Absolute 10101 External + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Disp1. Memory Space 11000 11001 11010 11011 Scaled Index 11100 11101 11110 11111 2·371 o ..ch ..o r-----------------------------------------------------------------------------, a z 2.0 Architectural Description (Continued) 2.2.3InstructJon Set Summary short=A 4-bit value encoded within the Basic Instruction (see Appendix A for encodings). Table 2·2 presents a brief description of the NS32016 in· struction set. The Format column refers to the Instruction Format tables (Appendix A). The Instruction column gives the instruction as coded in assembly language, and the Description column provides a short description of the function provided by that instruction. Further details of the exact operations performed by each instruction may be found in the Series 32000 Instruction Set Reference Manual. imm = Implied immediate operand. An 8-bit value appended after any addressing extensions. disp = Displacement (addressing constant): 8, 16 or 32 bits. All three lengths legal. reg=Any General Purpose Register: RO-R7. areg=Any Dedicated/Address Register: SP, SB, FP, MOD, INTBASE, PSR, US (bottom 8 PSR bits). Notations: i = Integer length suffix: B = Byte W= Word D = Double Word mreg = Any Memory Management Status/Control Register. creg = A Custom Slave Processor Register (Implementation Dependent). f = Floating Point length suffix: F = Standard Floating L = Long Floating cond = Any condition code, encoded as a 4-bit field within the Basic Instruction (see Appendix A for encodings). gen = General operand. Any addressing mode can be specified. TABLE 2-2 NS32016 Instruction Set Summary MOVES Format 4 2 7 7 7 7 7 4 Operation Operands MOVi MOVQi MOVMi MOVZBW MOVZiD MOVXBW MOVXiD ADDR gen,gen short,gen gen,gen,disp gen,gen gen,gen gen,gen gen,gen gen,gen Move a value. Extend and move a signed 4-bit constant. Move multiple: disp bytes (1 to 16). Move with zero extension. Move with zero extension. Move with sign extension. Move with sign extension. Move effective address. Operands Description gen,gen short,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Add. Add Signed 4-bit constant. Add with carry. Subtract. Subtract with carry (borrow). Negate (2's complement). Take absolute value. Multiply. Divide, rounding toward zero. Remainder from QUO. Divide, rounding down. Remainder from DIV (Modulus). Multiply to extended integer. Divide extended integer. INTEGER ARITHMETIC Format Operation 4 2 4 4 4 6 6 7 7 7 7 7 7 7 ADDi ADDQi ADDCi SUBi SUBCi NEGi ABSi MULi QUOi REMi DIVi MODi MEIi DEli PACKED DECIMAL (BCD) ARITHMETIC Format Operation Operands 6 6 ADDPi SUBPi gen,gen gen,gen Description Description Add packed. Subtract packed. 2-372 z 2.0 Architectural Description en w (Continued) N TABLE 2-2 NS32016 Instruction Set Summary (Continued) INTEGER COMPARISON Format Operation 4 CMPi 2 CMPQi 7 CMPMi Operands gen,gen short,gen gen,gen,disp Description Compare. Compare to signed 4-bit constant. Compare multiple: disp bytes (1 to 16). LOGICAL AND BOOLEAN Format Operation Operands Description ANDi ORi BICi XORi COMi NOTi Scondi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen Logical AND. Logical OR. Clear selected bits. Logical exclusive OR. Complement all bits. Boolean complement: LSB only. Save condition code (cond) as a Boolean variable of size i. Operation Operands Description LSHi ASHi ROTi gen,gen gen,gen gen,gen Logical shift, left or right. Arithmetic shift, left or right. Rotate, left or right. Operation Operands Description TBITi SBITi SBlTIi CBITi CBITli IBITi FFSi gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Test bit. Test and set bit. Test and set bit, interlocked. Test and clear bit. Test and clear bit, interlocked. Test and invert bit. Find first set bit. 4 4 4 4 6 6 2 SHIFTS Format 6 6 6 BITS Format 4 6 6 6 6 6 8 BIT FIELDS Bit fields are values in memory that are not aligned to byte boundaries. Examples are PACKED arrays and records used in Pascal. "Extract" instructions read and align a bit field. "Insert" instructions write a bit field from an aligned source. Format Operation Operands Description 8 8 7 7 8 ARRAYS Format 8 8 ....a> • .... o o EXTi INSi EXTSi INSSi CVTP reg,gen,gen,disp reg,gen,gen,disp gen,gen,imm,imm gen,gen,imm.imm reg,gen,gen Extract bit field (array oriented). Insert bit field (array oriented). Extract bit field (short form). Insert bit field (short form). Convert to bit field pOinter. Operation CHECKi INDEXi Operands reg.gen,gen reg.gen,gen Description Index bounds check. Recursive indexing step for multiple-dimensional arrays. 2-373 *'.... C) r------------------------------------------------------------------------------------------, 2.0 Architectural Description ~ (Continued) TABLE 2-2 NS32016 Instruction Set Summary (Continued) C") ~ STRINGS String instructions assign specific functions to the General Purpose Registers: Options on all string instructions are: B (Backward): Decrement strong pointers after each step rather than incrementing. R4 - Comparison Value U (Until match): R3 - Translation Table Pointer R2 - String 2 Pointer Rl - String 1 Pointer RO - Limit Count Format 5 5 5 Operation MOVSi MOVST CMPSi CMPST SKPSi SKPST End instruction if String 1 entry matches R4. W (While match): End instruction if String 1 entry does not match R4. All string instructions end when RO decrements to zero. Operands options options options options options options Description Move string 1 to string 2. Move string, translating bytes. Compare string 1 to string 2. Compare, translating string 1 bytes. Skip over string 1 entries. Skip, translating bytes for until/while. JUMPS AND LINKAGE Format 3 0 0 3 2 3 3 Operation Operands Description JUMP BR Bcond CASEi ACBi JSR BSR CXP CXPD SVC FLAG BPT ENTER EXIT RET RXP RETT RETI gen disp disp gen short,gen,disp gen disp disp gen Jump. Branch (PC Relative). Conditional branch. Multiway branch. Add 4-bit constant and branch if non-zero. Jump to subroutine. Branch to subroutine. Call external procedure Call external procedure using descriptor. Supervisor call. Flag trap. Breakpoint trap. Save registers and allocate stack frame (Enter Procedure). Restore registers and reclaim stack frame (Exit Procedure). Return from subroutine. Return from external procedure call. Return from trap. (Privileged) Return from interrupt. (Privileged) [reg list), disp [reg list] disp disp disp CPU REGISTER MANIPULATION Format 1 2 2 3 3 3 5 Operation Operands Description SAVE RESTORE LPRi SPRi ADJSPi BISPSRi BICPSRi SETCFG [reg list] [reg list] areg,gen areg,gen gen gen gen [option list] Save general purpose registers. Restore general purpose registers. Load dedicated register. (Privileged if PSR or INTBASE) Store dedicated register. (Privileged if PSR or INTBASE) Adjust stack pOinter. Set selected bits in PSR. (Privileged if not Byte length) Clear selected bits in PSR. (Privileged if not Byte length) Set configuration register. (Privileged) 2-374 z 2.0 Architectural Description en Co:! (Continued) TABLE 2·2 NS32016 Instruction Set Summary (Continued) Operands gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen gen Description Move a floating point value. Move and shorten a long value to standard. Move and lengthen a standard value to long. Convert any integer to standard or long floating. Convert to integer by rounding. Convert to integer by truncating, toward zero. Convert to largest integer less than or equal to value. Add. Subtract. Multiply. Divide. Compare. Negate. Take absolute value. Load FSR. Store FSR. MEMORY MANAGEMENT Format Operation Operands Description 8 LMR SMR RDVAL WRVAL MOVSUi mreg,gen mreg,gen gen gen gen,gen 8 MOVUSi gen,gen Load memory management register. (Privileged) Store memory management register. (Privileged) Validate address for reading. (Privileged) Validate address for writing. (Privileged) Move a value from supervisor space to user space. (Privileged) Move a value from user space to supervisor space. (Privileged) MISCELLANEOUS Format Operation 1 1 1 CUSTOM SLAVE Format 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.5 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.1 15.0 15.0 15.0 15.0 Q) ..... I FLOATING POINT Format Operation 11 MOVf 9 MOVLF 9 MOVFL 9 MOVif 9 ROUNDfi 9 TRUNCfi 9 FLOORfi 11 ADDf 11 SUBf 11 MUll 11 DIVf 11 CMPf 11 NEGf 11 ABSf 9 LFSR 9 SFSR 14 14 14 14 N Q ..... Operands NOP WAIT DIA Description No operation. Wait for interrupt. Diagnose. Single-byte "Branch to Self" for hardware breakpointing. Not for use in programming. Operation Operands Description CCALOc CCAL1c CCAL2c CCAL3c CMOVOc CMOV1c CMOV2c CMOV3c CCMPOc CCMP1c CCVOci CCV1ci CCV2ci CCV3ic CCV4DQ CCV5QD LCSR SCSR CATSTO CATST1 LCR SCR gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen gen gen gen creg,gen creg,gen Custom calculate. Custom move. Custom compare. Custom convert. Load custom status register. Store custom status register. Custom address/test. (Privileged) (Privileged) Load custom register. (Privileged) Store custom register. (Privileged) 2-375 Q ,.. u, ,.. «:) «:) ('II Cf) U) z 3.0 Functional Description Each rising edge of PHI1 defines a transition in the timing state ("T-State") of the CPU. One T-State represents the execution of one microinstruction within the CPU, and/or one step of an external bus transfer. See Section 4 for complete specifications of PHI1 and PHI2. 3.1 POWER AND GROUNDING The NS32016 requires a single 5-volt power supply, applied on pin 48 {Vecl. Grounding connections are made on two pins. Logic Ground (GNDL, pin 24) is the common pin for on-chip logic, and Buffer Ground (GNDB, pin 25) is the common pin for the output drivers. For optimal noise immunity, it is recommended that GNDL be attached through a single conductor directly to GNDB, and that all other grounding connections be made only to GNDB, as shown below (Figure 3-1). PHI1 In addition to Vee and Ground, the NS32016 CPU uses an internally-generated negative voltage. It is necessary to filter this voltage externally by attaching a pair of capacitors (Figure 3-1) from the BBG pin to ground. Recommended values of these are: PHI2 C1: 1 JLF, Tantalum. C2: 1000 pF, low inductance. This should be either a disc or monolithic ceramic capacitor. TL/EE/SOS4-12 ~ 1 y+5V FIGURE 3-2_ Clock Timing Relationships As the TCU presents signals with very fast transitions, it is recommended that the conductors carrying PHI1 and PHI2 be kept as short as possible, and that they not be connected anywhere except from the TCU to the CPU and, if present, the MMU. A TTL Clock signal (CTTL) is provided by the TCU for all other clocking. vcc~ NS32018 cpu 3.3 RESETTING The RST/ ABT pin serves both as a Reset for on-chip logic and as the Abort input for Memory-Managed systems. For its use as the Abort Command, see Section 3.5.4. The CPU may be reset at any time by pulling the RST / ABT pin low for at least 64 clock cycles. Upon detecting a reset, the CPU terminates instruction processing, resets its internal logic, and clears the Program Counter (PC) and Processor Status Register (PSR) to all zeroes. TL/EE/SOS4-11 FIGURE 3-1_ Recommended Supply Connections 3.2 CLOCKING The NS32016 inputs clocking signals from the NS32201 Timing Control Unit (TCU), which presents two non-overlapping phases of a single clock frequency. These phases are called PHI1 (pin 26) and PHI2 (pin 27). Their relationship to each other is shown in Figure 3-2. On application of power, RST/ABT must be held low for at least 50 JLs after Vee is stable. This is to ensure that all onchip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain active vcc PHI1 ---+---~I r- RSf/m 264 CLOCK CYCLES JJ-JL ---+----------1 f-00-----250~aec---·- .TL/EE/SOS4-13 FIGURE 3-3_ Power-On Reset Requirements 2-376 3.0 Functional Description (Continued) for not less than 64 clock cycles. The rising edge must occur while PHI1 is high. See Figures 3-3 and 3-4. The NS32201 Timing Control Unit (TCU) provides circuitry to meet the Reset requirements of the NS32016 CPU. Figure 3-58 shows the recommended connections for a nonMemory-Managed system. Figure 3-5b shows the connections for a Memory-Managed system. PHil '""1·~--"64CLOCK-1 Rsi'IABT---.....,~~~~ CYCLES ,-- - rl . TLIEEISOS4-14 FIGURE 3-4. General Reset Timing VCC NS32018 NS32201 TCU cpu . ------------, I I I I RESET I l>......:-+-_-l---+-~....- - - - I iiSTi RSTO I - - - - - t - - - - - - I iiSrlm !L. _____________ JI ,,50,,_ EXTERNAL RESET (OPTIONAL) RESET SWITCH (OPTIONAL) SYSTEM RESET TLlEEISOS4-1S FIGURE 3-5a. Recommended Reset Connections, Non-Memory-Managed System vcc NS32201 TCU NS32082 MMU NS32018 CPU .. ------------, I I I I RESET I J>-rl-+-....,.-+--+~------t iiSTi RsTo !L. _____________ JI EXTERNAL RESET (OPTIONAL) RESET SWITCH (OPTIONAL) TLIEEIS054-16 FIGURE 3-5b. Recommended Reset Connections, Memory-Managed System 3) To acknowledge an interrupt and allow external circuitry to provide a vector number, or to acknowledge completion of an interrupt service routine. 4) To transfer information to or from a Slave Processor. 3.4 BUS CYCLES The NS32016 CPU has a strap option which defines the Bus TIming Mode as either With or Without Address Translation. This section describes only bus cycles under the No Address Translation option. For details of the use of the strap and of bus cycles with address translation, see Section 3.5. The CPU will perform a bus cycle for one of the following reasons: 1) To write or read data, to or from memory or a peripheral interface device. Peripheral input and output are memory-mapped in the Series 32000 family. In terms of bus timing, cases 1 through 3 above are identical. For timing speCifications, see Section 4. The only external difference between them is the four-bit code placed on the Bus Status pins (STO-ST3). Slave Processor cycles differ in that separate control signals are applied (Section 3.4.6). The sequence of events in a non-Slave bus cycle is shown in Figure 3-7 for a Read cycle and Figure 3-8 for a Write cycle. The cases shown assume that the selected memory or interface device is capable of communicating with the CPU at full speed. If it is not, then cycle extension may be requested through the RDY line (Section 3.4.1). 2) To fetch instructions into the eight-byte instruction queue. This happens whenever the bus would otherwise be idle and the queue is not already full. 2-377 ....o r-----------------------------------------------------------------------------, ch .... o ~ Z 3.0 Functional Description (Continued) A full-speed bus cycle is performed in four cycles of the PHI1 clock signal, labeled T1 through T4. Clock cycles not associated with a bus cycle are designated Ti (for "Idle"). During T1, the CPU applies an address on pins ADO-AD15 and A16-A23. It also provides a low-going pulse on the ADS pin, which serves the dual purpose of informing external Circuitry that a bus cycle is starting and of providing control to an external latch for demultiplexing Address bits 015 from the ADO-AD15 pins. See Figure 3-6. During this time also the status signals DDIN, indicating the direction of the transfer, and HBE, indicating whether the high byte (AD8-AD15) is to be referenced, become valid. During T2 the CPU switches the Data Bus, ADO-AD15, to either accept or present data. Note that the signals A16A23 remain valid, and need not be latched. It also starts the data strobe (DS), signaling the beginning of the data transfer. Associated signals from the NS32201 Timing Control Unit are also activated at this time: RD (Read Strobe) or WR (Write Strobe), TSO (Timing State Output, indicating that T2 has been reached) and DBE (Data Buffer Enable). ODIN The T3 state provides for access time requirements, and it occurs at least once in a bus cycle. At the end of T2 or T3, on the falling edge of the PHI2 clock, the RDY (Ready) line is sampled to determine whether the bus cycle will be extended (Section 3.4.1). If the CPU is performing a Read cycle, the Data Bus (ADOAD15) is sampled at the falling edge of PHI2 of the last T3 state. See Section 4. Data must, however, be held at least until the beginning of T4. DS and RD are guaranteed not to go inactive before this pOint, so the rising edge of either of them may safely be used to disable the device providing the input data. The T4 state finishes the bus cycle. At the beginning of T4, the DS, RD, or WR, and TSO signals go inactive, and at the rising edge of PHI2, DBE goes inactive, having provided for necessary data hold times. Data during Write cycles remains valid from the CPU throughout T4. Note that the Bus Status lines (STO-ST3) change at the beginning of T4, anticipating the following bus cycle (if any). 1--_---.... NS320'8 . AO(LBE) PHI' DiiE PHI2 NS3ZZO' Ro iiDl----------- 1----------no ;:so 1-----------WR TL/EE/5054-17 FIGURE 3-6. Bus Connections 2-378 Z tn Co) 3.0 Functional Description (Continued) I\) .... m ....• Q I PHI1 [ PHIZ [ A16·A23 [ AOO·AD15 [ ADS [ STD-ST3 [ iiDiN [ HiE [ iii [ T40RTI I NS32018CPU BUS SIGNALS T1 T2 T3 T4 I T10RTI I Q RDY [ DiE [ iSci[ TL/EE/5054-1B FIGURE 3-7. Read Cycle Timing 2-379 .... r---------------------------------------------------------------------------------, ~ .... 3.0 Functional Description (Continued) C) C) C"I CO) NS32D18 CPU BUS SIGNALS en z TUEE/5Q54-19 FIGURE 3·8. Write Cycle Timing 2-380 3.0 Functional Description z en c.:I (Continued) N 3.4.1 Cycle Extension The RDY pin is driven by the NS32201 Timing Control Unit, which applies WAIT States to the CPU as requested on three sets of pins: 1) CWAIT (Continues WAIT), which holds the CPU in WAIT states until removed. 2) WAIT1, WAIT2, WAIT4, WAIT8 (Collectively WAITn), which may be given a four-bit binary value requesting a specific number of WAIT States from 0 to 15. 3) PER (Peripheral), which inserts five additional WAIT states and causes the TCU to reshape the RO and WR strobes. This provides the setup and hold times required by most MOS peripheral interface devices. Combinations of these various WAIT requests are both legal and useful. For details of their use, see the NS32201 TCU Data Sheet. Figure 3-10 illustrates a typical Read cycle, with two WAIT states requested through the TCU WAITn pins. To allow sufficient strobe widths and access times for any speed of memory or peripheral device, the NS32016 provides for extension of a bus cycle. Any type of bus cycle except a Slave Processor cycle can be extended. In Figures 3-7 and 3-8, note that during T3 all bus control signals from the CPU and TCU are flat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the ROY (Ready) pin. At the end of T2 on the falling edge of PHI2, the ROY line is sampled by the CPU. If ROY is high, the next T-states will be T3 and then T4, ending the bus cycle. If it is sampled low, then another T3 state will be inserted after the next T-state and the ROY line will again be sampled on the falling edge of PHI2. Each additional T3 state after the first is referred to as a "wait state." See Figure 3-9. 11 T2 T3 I T3 (WAIT) T4 PHI1 PHI 2 ROY TL/EE/S054-20 FIGURE 3·9. ROY Pin Timing 3.4.2 Bus Status The NS32016 CPU presents four bits of Bus Status information on pins STO-ST3. The various combinations on these pins indicate why the CPU is performing a bus cycle, or, if it is idle on the bus, then why it is idle. the Master NS32202 Interrupt Control Unit. If the vectoring mode selected by the last SETCFG instruction was Non-Vectored, then the CPU will ignore the value it has read and will use a default vector instead, having assumed that no NS32202 is present. See Section 3.4.5. 0101 Interrupt Acknowledge, Cascaded. The CPU is reading a vector number from a Cascaded NS32202 Interrupt Control Unit. The address provided is the address of the NS32202 Hardware Vector register. See Section 3.4.5. 0110- End of Interrupt, Master. The CPU is performing a Read cycle to indicate that it is executing a Return from Interrupt (RETI) instruction. See Section 3.4.5. Referring to Figures 3-7 and 3-8, note that Bus Status leads the corresponding Bus Cycle, going valid one clock cycle before T1, and changing to the next state at T 4. This allows the system designer to fully decode the Bus Status and, if desired, latch the decoded signals before ADS initiates the Bus Cycle. The Bus Status pins are interpreted as a four-bit value, with STO the least significant bit. Their values decode as follows: 0000 - The bus is idle because the CPU does not need to perform a bus access. 0001 The bus is idle because the CPU is executing the WAIT instruction. 0010- (Reserved for future use.) 0011 0100 - 0111 - The bus is idle because the CPU is waiting for a Slave Processor to complete an instruction. Interrupt Acknowledge, Master. The CPU is performing a Read cycle. To acknowledge receipt of a Non-Maskable Interrupt (on NMI) it will read from address FFFF0016, but will ignore any data provided. To acknowledge receipt of a Maskable Interrupt (on INT) it will read from address FFFE0016, expecting a vector number to be provided from 1000 - 2-381 End of Interrupt, Cascaded. The CPU is reading from a Cascaded Interrupt Control Unit to indicate that it is returning (through RETI) from an interrupt service routine requested by that unit. See Section 3.4.5. Sequential Instruction Fetch. The CPU is reading the next sequential word from the instruction stream into the Instruction Queue. It will do so whenever the bus would otherwise be idle and the queue is not already full. o...... . en ...... o Q .--------------------------------------------------------------------, .... cD 3.0 Functional Description (Continued) .... Q C\I ('I) en N8320IB CPU BUS SIGNALS PREV.CYCLE z I (¥l11T) I (¥l11T) I _~Il-IL~IL IT40RTii PHil [ PHI2 [ AI6-A23 [ AIl().ADI5 [ TI I T2 I TJ NEXT CYCLE T4 I r Il-Il- rL - Ln -I1Lrl W1 W1 J Ln 01 r~~ ~ , ADDRESS VALID ~ ~ ~ ADDR VALID ~--~ ~~ ~~---~ IV ADS [ STo-STJ [ InORT; NEXTADDR I- IV ~~ IX STATUS VALID NEXT STATUS I~r- ffiiiN[ ~ W& ~ t- tiBF.[ ~ ~ I?\ -V ~ R ~NEXT t- VALID 1\ N832201 TCU CYCLE EXTENSION SIGNALS CWAiT[ %; ~ ~ rw ~~ W ~ ~ ~~ ~~ ~ I'W~ ~ tW2 ~ ~ f% ~ WAiTn[ ~ ~ ~ ~ ~ ~ ~ ~ ~ 1% '~ ~ ~ \ ROY [ (TCUTOCPU) NS32201 TCU BUS SIGNALS Rii[ - V 1\ Wii[ - V iiiiE[ - ~ rso[ - V V \ TL/EE/5054-21 FIGURE 3·10. Extended Cycle Example Note: Arrows on CWAIT, PER, WAiTn indicate points at which the TCU samples. ROY indicate points at which the CPU samples. 2-382 Arrows on AOO-AOI5 and z 3.0 Functional Description en Co) (Continued) I\) C) 1001 - Non-Sequential Instruction Fetch. The CPU is performing the first fetch of instruction code after the Instruction Queue is purged. This will occur as a result of any jump or branch, or any interrupt or trap, or execution of certain instructions. 1010 Data Transfer. The CPU is reading or writing an operand of an instruction. 1011- Read RMW Operand. The CPU is reading an operand which will subsequently be modified and rewritten. If memory protection circuitry would not allow the following Write cycle, it must abort this cycle. Read for Effective Address Calculation. 1100 The CPU is reading information from memory in order to determine the Effective Address of an operand. This will occur whenever an instruction uses the Memory Relative or External addressing mode. Memory is organized as two eight-bit banks, each bank reo ceiving the word address (A1-A23) in parallel. One bank, connected to Data Bus pins ADO-AD7, is enabled to respond to even byte addresses; i.e., when the least significant address bit (AO) is low. The other bank, connected to Data Bus pins AD8-AD15, is enabled when HBE is low. See Figure 3- 11. HBE AO(LBE) Al·AZ3 1101 - Transfer Slave Processor Operand. The CPU is either transferring an instruction operand to or from a Slave Processor, or it is issuing the Operation Word of a Slave Processor instruction. See Section 3.9.1. 1110- Read Slave Processor Status. The CPU is reading a Status Word from a Slave Processor. This occurs after the Slave Processor has signalled completion of an instruction. The transferred word tells the CPU whether a trap should be taken, and in some instructions it presents new values for the CPU Processor Status Register bits N, Z, Lor F. See Section 3.9.1. 1111 - BYTE TL/EE/5054-22 FIGURE 3-11. Memory Interface Any bus cycle falls into one of three categories: Even Byte Access, Odd Byte Access, and Even Word Access. All ac· cesses to any data type are made up of sequences of these cycles. Table 3·1 gives the state of AO and HBE for each category. TABLE 3-1 Bus Cycle Categories Category HBE AD Even Byte 1 0 0 Odd Byte 0 0 Even Word Accesses of operands requiring more than one bus cycle are performed sequentially, with no idle T-States separating them. The number of bus cycles required to transfer an op· erand depends on its size and its alignment (i.e., whether it starts on an even byte address or an odd byte address). Table 3-2 lists the bus cycle performed for each situation. For the timing of AO and HBE, see Section 3.4. Broadcast Slave ID. The CPU is initiating the execution of a Slave Processor instruction. The ID Byte (first byte of the instruction) is sent to all Slave Processors, one of which will recognize it. From this point the CPU is communicating with only one Slave Processor. See Section 3.9.1. 3.4.3 Data Access Sequences The 24-bit address provided by the NS32016 is a byte address; that is, it uniquely identifies one of up to 16,777,216 eight-bit memory locations. An important feature of the NS32016 is that the presence of a 16-bit data bus imposes no restrictions on data alignment; any data item, regardless of size, may be placed starting at any memory address. The NS32016 provides a special control signal, High Byte Enable (HBE), which facilitates individual byte addressing on a 16-bit bus. 2-383 ...... en • ...... C) .... ....CD Q I 3.0 Functional Description (Continued) Q '" CW) (/) Z Cycle Type Address TABLE 3.2 Access Sequences HBE AO High Bus Low Bus A. Odd Word Access Sequence BYTE 1 2 Odd Byte Even Byte A A+1 0 1 0 Byte 0 Don't Care BYTE 0 -A Don't Care Byte 1 B. Even Double-Word Access Sequence 2 Even Word Even Word A A+2 BYTE 3 BYTE 2 0 0 0 0 BYTE 1 Byte 1 Byte 3 BYTE 0 -A Byte 0 Byte 2 C. Odd Double-Word Access Sequence BYTE 3 2 3 Odd Byte Even Word Even Byte A A+1 A+3 0 0 BYTE 2 0 0 BYTE 1 Byte 0 Byte 2 Don't Care BYTE 0 -A Don't Care Byte 1 Byte 3 D. Even Quad-Word Access Sequence BYTE 7 1 2 BYTE 6 BYTES Even Word Even Word BYTE 4 BYTE 3 A A+2 BYTE 2 BYTE 1 BYTE 0 0 0 0 0 Byte 1 Byte 3 Byte 0 Byte 2 0 0 0 0 Byte S Byte 7 Byte 4 Byte 6 -A Other bus cycles (instruction prefetch or slave) can occur here. 3 4 Even Word Even Word A+4 A+6 E. Odd Quad-Word Access Sequence BYTE 7 2 3 BYTE 6 Odd Byte Even Word Even Byte BYTES BYTE 4 BYTE 3 A A+1 A+3 BYTE 2 BYTE 1 BYTE 0 0 0 1 0 0 Byte 0 Byte 2 Don'teare Don'teare Byte 1 Byte 3 0 0 1 0 0 Byte 4 Byte 6 Don'teare Don't Care ByteS Byte 7 Other bus cycles (instruction prefetch or slave) can occur here. 4 S 6 Odd Byte Even Word Even Byte A+4 A+S A+7 2-384 -A 3.0 Functional Description z en Co) (Continued) I\) A Sequential Fetch will be performed by the CPU whenever the Data Bus would otherwise be idle and the Instruction Queue is not currently full. Sequential Fetches are always Even Word Read cycles (Table 3-1). A Non-Sequential Fetch occurs as a result of any break in the normally sequential flow of a program. Any jump or branch instruction, a trap or an interrupt will cause the next Instruction Fetch cycle to be Non-Sequential. In addition, certain instructions flush the instruction queue, causing the next instruction fetch to display Non-Sequential status. Only the first bus cycle after a break displays Non-Sequential status, and that cycle is either an Even Word Read or an Odd Byte Read, depending on whether the destination address is even or odd. 3.4.3.1 Bit Accesses The Bit Instructions perform byte accesses to the byte can· taining the designated bit. The Test and Set Bit instruction (SBIT), for example, reads a byte, alters it, and rewrites it, having changed the contents of one bit. 3.4.3.2 Bit Field Accesses An access to a Bit Field in memory always generates a Dou· ble·Word transfer at the address containing the least signifi· cant bit of the field. The Double Word is read by an Extract instruction; an Insert instruction reads a Double Word, modifies it, and rewrites it. 3.4.3.3 Extending Multiply Accesses The Extending Multiply Instruction (MEl) will return a result which is twice the size in bytes of the operand it reads. If the multiplicand is in memory, the most-significant half of the result is written first (at the higher address), then the leastsignificant half. This is done in order to support retry if this instruction is aborted. o ...... en • ...... o 3.4.5 Interrupt Control Cycles Activating the INT or NMI pin on the CPU will initiate one or more bus cycles whose purpose is inerrupt control rather than the transfer of instructions or data, Execution of the Return from Interrupt instruction (RETI) will also cause Interrupt Control bus cycles. These differ from instruction or data transfers only in the status presented on pins STO-ST3. All Interrupt Control cycles are single-byte Read cycles. 3.4.4 Instruction Fetches Instructions for the NS32016 CPU are "prefetched"; that is, they are input before being needed into the next available entry of the eight-byte Instruction Queue. The CPU performs two types of Instruction Fetch cycles: Sequential and NonSequential. These can be distinguished from each other by their differing status combinations on pins STO-ST3 (Section 3.4.2). This section describes only the Interrupt Control sequences associated with each interrupt and with the return from its service routine. For full details of the NS32016 interrupt structure, see Section 3.8. • 2-385 ....o r-----------------------------------------------------------------------------, ....och 3.0 Functional Description (Continued) TABLE 3·3 Interrupt Sequences iza Cycle Status AD Address High Bus Low Bus A. Non-Maskable Interrupt Control Sequences. Interrupt Acknowledge 0100 1 FFFF0016 o o Don'teare Don't Care Interrupt Return None: Performed through Return from Trap (RETT) Instruction. 8. Non- Vectored Interrupt Control Sequences. Interrupt Acknowledge 0100 1 FFFE0016 o o Don't Care Don't Care Interrupt Return None: Performed through Return from Trap (RETT) instruction. C. Vectored Interrupt Sequences: Non-Csscaded. Interrupt Acknowledge 0100 1 FFFE0016 o o Don't Care Vector: Range: 0-127 Interrupt Return 0110 1 FFFE0016 o o Don't Care Vector: Same as in Previous In!. Ack.Cycle D. Vectored Interrupt Sequences: Csscaded. Interrupt Acknowledge 0100 1 FFFE0016 o o Don't Care Cascade Index: range -16to-1 (The CPU here uses the Cascade Indx to find the Cascade Address.) 2 0101 Cascade 0 1 or 0 or 1· O· Address Vector, range 0-255; on appropriate half of Data Bus for even/odd address Interrupt Return 1 0110 Don't Care Cascade Index: same as in previous In!. Ack.Cycle Don't Care Don't Care FFFE0016 o o (The CPU here uses the Cascade Index to find the Cascade Address.) 2 0111 Cascade 0 10r Oor Address O· 1· • If the Cascaded ICU Address Is Even (AO is low), then the CPU applies HSE high and reads the vector number from bits 0-7 of the Data Bus. If the address is Odd (AO Is high), then the CPU applies RBE low and reads the vector number from bits 8-15 of the Data Bus. The vector number may be In the range 0-255. 2-386 r--------------------------------------------------------------------,z ~ N 3.0 Functional Description (Continued) ... 3.4.6 Slave Processor Communication AD(1I-15) In addition to its use as the Address Translation strap (Sec· tion 3.5.1), the AT /SPC pin is used as the data strobe for Slave Processor transfers. In this role, it is referred to as Slave Processor Control (SPC). In a slave processor bus cycle, data is transferred on the Data Bus (ADO-AD15), and the Status Lines STO-ST3 are monitored by each Slave Processor in order to determine the type of transfer being performed. SPC is bidirectional, but is driven by the CPU during all Slave Processor bus cycles. See Section 3.9 for full protocol sequences. AT/SPC ~ " o ..... 'P ..... 0111-15) o SPe SLAVE PROCESSOR N83Z018 CPU STG-ST3 STo-ST3 TL/EE/5054-23 FIGURE 3-12. Slave Processor Connections PREV.CYCLE I PHil [ PHI 2 [ sPc [ ADO-AD15 [ T1 T40rTI T4 I NEXT CYCLE Tl0RTI I "+, .4f;.L./.;.L./.. . STO-ST3 [ ADs [ DDIN [ HiE [ __ (3)[ DBE TL/EE/5054-24 Note: (1) CPU samples Data Bus here. (2) DBE and all other NS32201 TCU bus signals remain inactive because no AD!! pulse is received from the CPU. FIGURE 3-13. CPU Read from Slave Processor 2-387 Q .... cD .... Q C"I ('I) (/) z ~----------------------------------------------------------------------------, 3.0 Functional Description (Continued) 3.4.6.1 Slave Processor Bus Cycles A Slave Processor bus cycle always takes exactly two clock cycles, labeled T1 and T4 (see Figures 3-13 and 3·14). During a Read cycle SPC is active from the beginning of T1 to the beginning of T4, and the data is sampled at the end of T1. The Cycle Status pins lead the cycle by one clock period, and are sampled at the leading edge of SPC. During a Write cycle, the CPU applies data and activates SPC at T1, removing SPC at T4. The Slave Processor latches status on the leading edge of SPC and latches data on the trailing edge. sequence ("protocol") established by the instruction under execution; but the CPU indicates the direction on the DDIN pin for hardware debugging purposes. 3.4.6.2 Slave Operand Transfer Sequences A Slave Processor operand is transferred in one or more Slave bus cycles. A Byte operand is transferred on the least-significant byte of the Data Bus (ADO-AD7), and a Word operand is transferred on the entire bus. A Double Word is transferred in a consecutive pair of bus cycles, least-significant word first. A Quad Word is transferred in two pairs of Slave cycles, with other bus cycles possibly occurring between them. The word order is from least-significant word to most-significant. Since the CPU does not pulse the Address Strobe (ADS), no bus signals are generated by the NS32201 Timing Con- . trol Unit. The direction of a transfer is determined by the PREVo CYCLE I PHil [ sPC [ ADO-AD15 [ T40RTi I Tl T4 I NEXT CYCLE flORTi I .~'-"'-"'-"~ ~_-+___ ~_-+_ --:-I 810-813 [ ADS [ [~""~~~__;-___~___+__(2)[ HiE DBE TL/EE/5054-25 Note: (1) Slave Processor samples data bus here. (2) DBE. being provided by the NS32201 TeU. remains inactive due to the fact that no pulse is presented on ADS. TCU signals RD. WR and 'FSO also remain inactive. FIGURE 3·14. CPU Write to Slave Processor 2-388 z ~ N 3.0 Functional Description (Continued) 3.5 MEMORY MANAGEMENT OPTION The NS32016 CPU, in conjunction with the NS32082 Memory Management Unit (MMU), provides full support for address translation, memory protection, and memory allocation techniques up to and including Virtual Memory. described in Section 3.4. If it is sampled as low, two changes occur: 1) 2) 3.5.1 Address Translation Strap PHil [ PHI2 [ T40RTi I Tl I C) C) The NS32082 MMU will itself pull the CPU ATISPC pin low when it is reset. In non-Memory-Managed systems this pin should be pulled up to Vee through a 10 kO resistor. Note that the Address Translation strap does not specifically declare the presence of an NS32082 MMU, but only the The Bus Interface Control section of the NS32016 CPU has two bus timing modes: With or Without Address Translation. The mode of operation is selected by the CPU by sampling the AT ISPC (Address TranslationlSlave Processor Control) pin on the rising edge of the RST (Reset) pulse. If ATISPC is sampled as high, the bus timing is as previously I An extra clock cycle, Tmmu, is inserted into all bus cycles except Slave Processor transfers. The OS/FLT pin changes in function from a Data Strobe output (OS) to a Float Command input (FLT). ....en • .... llnmu I T4 T2 I nORTi I AI6-A23 [ ADO-AD15 [ ADS [ STO-ST3 [ ODIN [ HBE [ ROY [ • STATUS VALID VALID TL/EE/5054-26 FIGURE 3-15. Read Cycle with Address Translation (CPU Action) 2-389 . o .,... CD .,... o N C") (J) Z r-------------------------------------------------------------------------~ 3.0 Functional Description (Continued) presence of external address translation circuitry. MMU instructions will still trap as being undefined unless the SETCFG (Set Configuration) instruction is executed to declare the MMU instruction set valid. See Section 2.1.3. tion that the CPU Address lines A16-A23 remain in the TRI-STATE condition. This allows the MMU to continue asserting the translated address on those pins. Note that in order for the NS32082 MMU to operate correctly it must be set to the 32016 mode by forcing A24/HBF high during reset. Figures 3-17and 3-18 show a Read cycle and a Write cycle as generated by the 32016/32082/32201 group. Note that with the CPU ADS signal going only to the MMU, and with the MMU PAV signal substituting for ADS everywhere else, Tmmu through T4 look exactly like T1 through T4 in a nonMemory-Managed system. For the connection diagram, see Appendix B. 3.5.2 Translated Bus Timing Figures 3-15 and 3-16 illustrate the CPU activity during a Read cycle and a Write cycle in Address Translation mode. The additional T-State, Tmmu, is inserted between T1 and T2. During this time the CPU places ADO-AD15 and A16A23 into the TRI-STATE® mode, allowing the MMU to assert the translated address and issue the physical address strobe PAV. T2 through T4 of the cycle are identical to their counter-parts without Address Translation, with the excep- I PHil T40RTi I T1 T2 T3 T4 [ PHI2 A16-A23 [ ADO-ADIS [ ADS [ STO·STJ [ ODIN [ HBE [ ROY [ TL/EE/SOS4-27 FIGURE 3-16. Write Cycle with Address Translation (CPU Action) 2-390 z 3.0 Functional Description en Co) (Continued) I\) .... .... Q Q) I Q NS32018 CPU BUS SIGNALS I T40RTi I T1 I Tmmu I T2 T3 T4 I Tl OR Ti I PHil [ PHI 2 [ A16·A23 [ ADIl-AD15 [ iiAV[ 5TO·5T3 [ DIOiN [~~~LL~~----+------+----~~------r------+~----+- iiBE [",,+~c.L.~~ \._-+__--+__-++-__+_J \.+__-+_ iffi[ DBE [ TLlEE/5054-2B FIGURE 3-17. Memory-Managed Read Cycle 2-391 ..... .... Q CD 3.0 Functional Description (Continued) Q N ('I) U) I Z T4 OR Ti I NS320l8CPU BUS SIGNALS Tl I Tmmu I T2 T3 T4 I TlORTi I PHil [ PHI 2 [ A16·A23 [ ADO·AD15 [ AiiS[ PAV [ STO·ST3 [ NEXT STATUS STATUS VALID ODIN [ iiiiE[ VALID ROY [ NS32201 TCU BUS SIGNALS DBE [ TLIEEISOS4-29 FIGURE 3-18. Memory-Managed Write Cycle 2-392 ~------------------------------------------------------------~Z 3.0 Functional Description en Co) (Continued) N 3.5.3 The FLT (Float) Pin The FLT pin is used by the CPU for address translation 1) Sets ADO-AD15, A16-A23 and DDIN to the TRISTATE condition ("floating"). support. Activating FLT during Tmmu causes the CPU to wait longer than Tmmu for address translation and validation. This feature is used occasionally by the NS32082 MMU in order to update its internal translation look.aside buffer (TLB) from page tables in memory, or to update certain status bits within them. 2) 3) Sets HBE low. Suspends further internal processing of the current instruction. This ensures that the current instruction remains abortable with retry. (See RST I ABT description, Section 3.5.4.) Note that the ADO-AD15 pins may be briefly asserted during the first idle T-State. The above conditions remain in effect until FLT again goes high. See the Timing Specifications, Section 4. Figure 3-19 shows the effects of FLT. Upon sampling FLT low, late in Tmmu, the CPU enters idle T-States (Tt) during which it: TLlEE/5054-30 FIGURE 3-19. FLT Timing 2-393 o..... . en ..... o ....o rh .... o('II C") en z r-----------------------------------------------------------------------------~ 3.0 Functional Description (Continued) 3.5.4 Aborting Bus Cycles The RSTI ABT pin, apart from its Reset function (Section 3.3), also serves as the means to "abort," or cancel, a bus cycle and the instruction, if any, which initiated it. An Abort request is distinguished from a Reset in that the RSTI ABT pin is held active for only one clock cycle. 2) If FLT has been applied to the CPU, the Abort pulse must be applied before the T-State in which FLT goes ina,ctive. The CPU will not actually respond to the Abort command until FLT is removed. See Figure 4-23. 3) The Write half of a Read-Modify-Write operand access may not be aborted. The CPU guarantees that this will never be necessary for Memory Management funtions by applying a special RMW status (Status Code 1011) during the Read half of the access. When the CPU presents RMW status, that cycle must be aborted if it would be illegal to write to any of the accessed addresses. If ~I ABT is pulsed at any time other than as indicated above, it will abort either the instruction currently under execution or the next instruction and will act as a very high-priority interrupt. However. the program that was running at the time is not guaranteed recoverable. If RST/ABT is pulled low during Tmmu or Tf, this signals that the cycle must be aborted. The CPU itself will enter T2 and then Ti, thereby terminating the cycle. Since it is the MMU PAY signal which triggers a physical cycle, the rest of the system remains unaware that a cycle was started. The NS32082 MMU will abort a bus cycle for either of two reasons: 1) The CPU is attempting to access a virtual address which is not currently resident in physical memory. The reference page must be brought into physical memory from mass storage to make it accessible to the CPU. 2) The CPU is attempting to perform an access which is not allowed by the protection level aSSigned to that page. 3.6 BUS ACCESS CONTROL The NS32016 CPU has the capability of relinquishing its access to the bus upon request from a DMA device or another CPU. This capability is implemented on the HOLD (Hold Request) and HLDA (Hold Acknowledge) pins. By asserting HOLD low, an external device requests access to the bus. On receipt of HLDA from the CPU, the device may perform bus cycles, as the CPU at this point has set the ADO-AD15, A16-A23, ADS, DDIN and HBE pins to the TRI-STATE condition. To return control of the bus to the CPU, the device sets HOLD inactive, and the CPU acknowledges return of the bus by setting HLDA inactive. When a bus cycle is aborted by the MMU, the instruction that caused it to occur is also aborted in such a manner that it is guaranteed re-executable later. The information that is changed irrecoverably by such a partly-executed instruction does not affect its re-execution. 3.5.4.1 The Abort Interrupt Upon aborting an instruction, the CPU immediately performs an interrupt through the ABT vector in the Interrupt Table (see Section 3.8). The Return Address pushed on the Interrupt Stack is the address of the aborted instruction, so that a Return from Trap (RETT) instruction will automatically retry it. How quickly the CPU releases the bus depends on whether it is idle on the bus at the time the HOI]) request is made, as the CPU must always complete the current bus cycle. Figure 3-20 shows the timing sequence when the CPU is idle. In this case, the CPU grants the bus during the immediately following clock cycle. Figure 3-21 shows the sequence if the CPU is using the bus at the time that the HOLD request is made. If the request is made during or before the clock cycle shown (two clock cycles before T4), the CPU will release the bus during the clock cycle following T4. If the request occurs closer to T4, the CPU may already have decided to initiate another bus cycle. In that case it will not grant the bus until after the next T4 state. Note that this situation will also occur if the CPU is idle on the bus but has initiated a bus cycle internally. In a Memory-Managed system, the HLDA Signal is connected in a daisy-chain through the NS32082, so that the MMU can release the bus if it is using it. The one exception to this sequence occurs if the aborted bus cycle was an instruction prefetch. If so, it is not yet certain that the aborted prefetched code is to be executed. Instead of causing an interrupt, the CPU only aborts the bus cycle, and stops prefetching. If the information in the Instruction Queue runs out, meaning that the instruction will actually be executed, the ABT interrupt will occur, in effect aborting the instruction that was being fetched. 3.5.4.2 Hardware Considerations In order to guarantee instruction retry, certain rules must be followed in applying an Abort to the CPU. These rules are followed by the NS32082 Memory Management Unit. 1) If FLT has not been applied to the CPU, the Abort pulse must occur during or before Tmmu. See the Timing Specifications, Figure 4-22. 2-394 r-----------------------------------------------------------------------,z 3.0 Functional Description en w (Continued) ...~ ... Q) I C I Ti I Ti I··· I Ti Ti I Ti OR T4 I Ti OR T1 I PHll[iLrLJ PHI2 [ HoLD [ HLDA[ AFFECTED SIGNALS ------- ADS [ os[ ~}------ ------- ----- 1r----- ----- oom[ ---- i~---------- fII HBE [ ADO-AD15 [ A 16-A23 -Li''-L..<'-L..<'-L..o''f' ['-' • .... Trap (SVC): The Supervisor Call (SVC) instruction was exea. Clear the Processor Status Register P bit. o cuted. b. Trap (DVZ): An attempt was made to divide an integer by zero. (The SLAVE trap is used for Floating Point division by zero.) Otherwise, set "Return Address" to the address of the next instruction. Trap (FLG): The FLAG instruction detected a "1" in the CPU PSR F bit. 2. Trap (BPn: The Breakpoint (BPT) instruction was executed. 3. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, T, P and I. If the interrupt is Non-Maskable: a. Trap (TRC): The instruction just completed is being traced. See below. Trap (UNO): An undefined opcode was encountered by the CPU. Set "Return Address" to the address of the first byte of the interrupted instruction. Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Section 3.4.2). Discard the byte read. b. Set "Vector" to 1. c. Go to Step B. A special case is the Trace Trap (TRC), which is enabled by setting the T bit in the Processor Status Register (PSR). At the beginning of each instruction, the T bit is copied into the PSR P (Trace "Pending") bit. If the P bit is set at the end of an instruction, then the Trace Trap is activated. If any other trap or interrupt request is made during a traced instruction, its entire service procedure is allowed to complete before the Trace Trap occurs. Each interrupt and trap sequence handles the P bit for proper tracing, guaranteeing one and only one Trace Trap per instruction, and guaranteeing that the Return Address pushed during a Trace Trap is always the address of the next instruction to be traced. 5. Here the interrupt is Vectored. Read "Byte" from address FFFE0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Section 3.4.2). 6. If "Byte" Step B. 3.8.6 Prioritization 7. If "Byte" is in the range -16 through -1, then the interrupt source is Cascaded. (More negative values are reserved for future use.) Perform the following: 4. The NS32016 CPU internally prioritizes simultaneous interrupt and trap requests as follows: 1) Traps other than Trace If the interrupt is Non-Vectored: a. (Highest priority) b. Set "Vector" to O. c. Go to Step B. 4) Maskable Interrupts 5) Trace Trap (Lowest priority) 0, then set "Vector" to "Byte" and go to Read the 32-bit Cascade Address from memory. The address is calculated as INTBASE + 4' Byte. b. Read "Vector," applying the Cascade Address just read and Status Code 0101 (Interrupt Acknowledge, Cascaded: Section 3.4.2). B. Push the PSR copy (from Step 2) onto the Interrupt Stack as a 16-bit value. 9. Perform Service (Vector, Return Address), Figure 3-28. 3.8.7InterruptlTrap Sequences: Detail Flow For purposes of the following detailed discussion of interrupt and trap service sequences, a single sequence called "Service" is defined in Figure 3-28. Upon detecting any interrupt request or trap condition, the CPU first performs a sequence dependent upon the type of interrupt or trap. This sequence will include pushing the Processor Status Register and establishing a Vector and a Return Address. The CPU then performs the Service sequence. ~ a. 2) Abort 3) Non-Maskable Interrupt Read a byte from address FFFF0016, applying Status Code 0100 (Interrupt Acknowledge, Master: Section 3.4.2). Discard the byte read. Service (Vector, Return Address): 1) Read the 32·bit External Procedure Descriptor from the Interrupt Dis· patch Table: address is Vector'4+INTBASE Register contents. 2) Move the Module field of the Descriptor into the MOD Register. 3) Read the new Static Base pointer from the memory address contained in MOD, placing it into the SB Register. 4) Read the Program Base painter from memory address MOD + 8. and add to it the Offset field from the Descriptor, placing the result in the Program Counter. For the sequenced followed in processing either Maskable or Non-Maskable Interrupts (on the INT or NMI pins, respectively), see Section 3.B.7.1. For Abort interrupts, see Section 3.B.7.4. For the Trace Trap, see Section 3.B.7.3, and for all other traps see Section 3.B.7.2. 5) Flush Queue: Non·sequentially fetch first instruction of Interrupt Rou· tine. 6) Push MOD Register onto the Interrupt Stack as a 16·bit value. (The PSR has already been pushed as a 16·blt value.) 3.8.7.1 Maskable/Non-Maskable Interrupt Sequence 7) Push the Return Address onto the Interrupt Stack as a 32·bit quantity. This sequence is performed by the CPU when the NMI pin receives a falling edge, or the INT pin becomes active with the PSR I bit set. The interrupt sequence begins either at the next instruction boundary or, in the case of the String instructions, at the next interruptible point during its execution. FIGURE 3·28. Service Sequence Invoked during all interruptltrap sequences 2-403 fII Q .... ....~ tia C") U) z r-----------------------------------------------------------------------------~ 3.0 Functional Description (Continued) 3.8.7.2 Trap Sequence: Traps Other Than Trace 1) Restore the currently selected Stack Pointer and the Processor Status Register to their original values at the start of the trapped instruction. 2) Set "Vector" to the value corresponding to the trap type. Each Slave Instruction Set is validated by a bit in the Configuration Register (Section 2.1.3). Any Slave Instruction which does not have its corresponding Configuration Register bit set will trap as undefined, without any Slave Processor communication attempted by the CPU. This allows software simulation of a non-existent Slave Processor. SLAVE: Vector = 3. 3.9.1 Slave Processor Protocol ILL: SVC: Vector = 4. Vector = 5. DVZ: FLG: BPT: Vector = 6. Vector = 7. Vector = 8. Slave Processor instructions have a three-byte Basic Instruction field, consisting of an 10 Byte followed by an Operation Word. The 10 Byte has three functions: 1) 2) 3) It specifies which Slave Processor will execute it. It determines the format of the following Operation Word of the instruction. Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Figure 3-29. While applying Status Code 1111 (Broadcast 10, Section 3.4.2), the CPU transfers the 10 Byte on the least-significant half of the Data Bus (ADO-AD7). All Slave Processors input this byte and decode it. The Slave Processor selected by the 10 Byte is activated, and from this point the CPU is communicating only with it. If any other slave protocol was in progress (e.g., an aborted Slave instruction), this transfer cancels it. The CPU next sends the Operation Word while applying Status Code 1101 (Transfer Slave Operand, Section 3.4.2). Upon receilling it, the Slave Processor decodes it, and at this pOint both the CPU and the Slave Processor are aware of the number of operands to be transferred and their sizes. The Operation Word is swapped on the Data Bus; that is, bits 0-7 appear on pins AD8-AD15 and bits 8-15 appear on pins ADO-AD7. Using the Addressing Mode fields within the Operation Word, the CPU starts fetching operands and issuing them to the Slave Processor. To do so, it references any Addressing Mode extensions which may be appended to the Slave Processor instruction. Since the CPU is solely responsible for memory accesses, these extensions are not sent to the Slave Processor. The Status Code applied is 1101 (Transfer Slave Processor Operand, Section 3.4.2). Status Combinations: Send 10 (10): Code 1111 Xfer Operand (OP): Code 1101 Read Status (Sn: Code 1110 Step Status Action 1 10 CPU Send 10 Byte. 2 OP CPU Sends Operation Word. 3 OP CPU Sends Required Operands. Slave Starts Execution. CPU Pre-Fetches. 4 Slave Pulses SPC Low. 5 ST CPU Reads Status Word. (Trap? Alter Flags?) 6 7 OP CPU Reads Results (If Any). Vector = 10. Copy the Processor Status Register (PSR) into a temporary register, then clear PSR bits S, U, P and T. UNO: 3) 4) Push the PSR copy onto the Interrupt Stack as a 16-bit value. 5) Set "Return Address" to the address of the first byte of the trapped instruction. 6) Perform Service (Vector, Return Address), Figure 3-28. 3.8.7.3 Trace Trap Sequence 1) In the Processor Status Register (PSR), clear the P bit. 2) Copy the PSR into a temporary register, then clear PSR bits S, U and T. 3) Push the PSR copy onto the Interrupt Stack as a 16-bit value. 4) 5) Set "Vector" to 9. Set "Return Address" to the address of the next instruction. 6) Perform Service (Vector, Return Address), Figure 3-28. 3.8.7.4 Abort Sequence 1) 2) Restore the currently selected Stack Pointer to its original contents at the beginning of the aborted instruction. Clear the PSR P bit. 3) Copy the PSR into a temporary register, then clear PSR bits S, U, T and I. 4) Push the PSR copy onto the Interrupt Stack as a 16-bit value. Set "Vector" to 2. 5) 6) Set "Return Address" to the address of the first byte of the aborted instruction. 7) Perform Service (Vector, Return Address), Figure 3-28. It identifies the instruction as being a Slave Processor instruction. 3.9 SLAVE PROCESSOR INSTRUCTIONS The NS32016 CPU recognizes three groups of instructions as being executable by external Slave Processors: Floating Point Instruction Set Memory Management Instruction Set Custom Instruction Set FIGURE 3-29. Slave Processor Protocol 2-404 z 3.0 Functional Description en w (Continued) ~ After the CPU has issued the last operand, the Slave Processor starts the actual execution 01 the instruction. Upon completion, it will signal the CPU by pulsing SPC low. To allow lor this, and lor the Address Translation strap function, AT/SPC is normally held high only by an internal pullup device 01 approximately 5 kn. Custom Slave instruction (LCR: Load Custom Register). In executing these instructions, the protocol ends after the CPU has issued the last operand. The CPU does not wait lor an acknowledgement Irom the Slave Processor, and it does not read status. Upon receiving the pulse on SPC, the CPU uses SPC to read a Status Word lrom the Slave Processor, applying Status Code 1110 (Read Slave Status, Section 3.4.2). This word has the lormat shown in Figure 3-30. If the Q bit ("Quit", Bit 0) is set, this indicates that an error was detected by the Slave Processor. The CPU will not continue the protocol, but will immediately trap through the Slave vector in the Interrupt Table. Certain Slave Processor instructions cause CPU PSR bits to be loaded Irom the Status Word. The last step in the protocol is lor the CPU to read a result, if any, and transfer it to the destination. The Read cycles from the Slave Processor are performed by the CPU while applying Status Code 1101 (Transler Slave Operand, Section 3.4.2). An exception to the protocol above is the LMR (Load Memory Management Register) instruction, and a corresponding Operand 1 Class TABLE 3-4 Floating Point Instruction Protocols Operand 1 Operand 2 Operand 2 Issued Class Issued Returned Value Type and Dest. PSRBits Affected ftoOp.2 ftoOp.2 ItoOp.2 ItoOp.2 none none none none ItoOp.2 ItoOp.2 ItoOp.2 none none none ADDI SUBf MUll DIVf read.1 read.! read.! read.f rmw.I rmw.1 rmw.I rmw.! MOVf ABSf NEGf read.1 read.! read.! write.! write.f write.f CMPI read.! read.! f N/A N,Z,L FLOORfi TRUNCIi ROUNDfi read.1 read.1 read.! write.i write.i write.i I N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 none nOl1e none MOVFL MOVLF read.F read.L write.L write.F F L N/A N/A Lto Op. 2 Fto Op. 2 none none MOVif read.i write.f N/A fto Op. 2 none LFSR SFSR read.D N/A N/A write.D N/A N/A N/A DtoOp.2 none none N/A N/A N/A D N/A Note: o = Double Word i = integer size (B.W,D) specified in mnemonic. f = Floating Point type (F,L) specified in mnemonic. NtA Q Q 3.9.2 Floating Point Instructions Table 3-4 gives the protocols loll owed for each Floating Point instruction. The instructions are referenced by their mnemonics. For the bit encodings 01 each instruction, see Appendix A. The Operand class columns give the Access Class lor each general operand, delining how the addressing modes are interpreted (see Series 32000 Instruction Set Relerence Manual). The Operand Issued columns show the sizes of the operands issued to the Floating Point Unit by the CPU. "D" indicates a 32-bit Double Word. "i" indicates that the instruction specilies an integer size lor the operand (B = Byte, W = Word, D = Double Word). "I" indicates that the instruction specilies a Floating Point size for the operand (F = 32bit Standard Floating, L=64-bit Long Floating). The Returned Value Type and Destination column gives the size of any returned value and where the CPU places it. The PSR Bits Allected column indicates which PSR bits, if any, are updated Irom the Slave Processor Status Word (Figure 3-30). While the Slave Processor is executing the instruction, the CPU is Iree to preletch instructions into its queue. If it lills the queue belore the Slave Processor finishes, the CPU will wait, applying Status Code 0011 (Waiting for Slave, Section 3.4.2). Mnemonic .... en ....• = Not Applicable 10 Ihis instruction. 2-405 PI o r-----------------------------------------------------------------------------, .... ch 3.0 Functional Description (Continued) .... 3.9.3 Memory Management Instructions o i3z 15 o 8 7 I 00000000 IN Z F 0 0 L 0 New PSR Bll V.lue{,)~ . / ooOuil": Terminal. Prolocol. 1I"ap(FPU~ Table 3-5 gives the protocols for Memory Management instructions. Encodings for these instructions may be found in Appendix A. In executing the RDVAL and WRVAL instructions, the CPU calculates and issues the 32-bit Effective Address of the single operand. The CPU then performs a single-byte Read cycle from that address, allowing the MMU to safely abort the instruction if the necessary information is not currently in physical memory. Upon seeing the memory cycle complete, the MMU continues the protocol, and returns the validation result in the F bit of the Slave Status Word. The size of a Memory Management operand is always a 32bit Double Word. For further details of the Memory Management Instruction set, see the Series 32000 Instruction Set Reference Manual and the NS32082 MMU Data Sheet. 01 J TLlEE/5054·41 FIGURE 3·30. Slave Processor Status Word Format Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified. This is because the Floating Point Registers are physically on the Floating Point Unit and are therefore available without CPU assistance. Mnemonic RDVAL' WRVAL' LMR' SMR' Operand 1 Class TABLE 3-5. Memory Management Instruction Protocols Operand 2 Operand 1 Operand 2 Class Issued Issued addr addr N/A N/A read.D write. 0 N/A N/A 0 0 0 N/A Returned Value Type and Oest. PSRBlts Affected N/A N/A N/A N/A F F N/A N/A N/A DtoOp.1 none none Note: In the ROVAL and WRVAL instructions, the CPU Issues the address as a Double Word, and performs a single·byte Read cycle from that memory address. For detailS, see the Series 32000 Instruction Set Reference Manual and the NS32082 Memory Management Un~ Data Sheet. o = Double Word • = Privileged Instruction: will trap if CPU Is in User Mode. N/A = Not Applicable to this Instruction. 2-406 z 3.0 Functional Description en c.:I (Continued) 3.9.4 Custom Slave Instructions operand which can be a 32-bit ("D") or 64-bit ("a") quantity in any format; the size is determined by the suffix on the mnemonic. Similarly, an "i" indicates an integer size (Byte, Word, Double Word) selected by the corresponding mnemonic suffix. Any operand indicated as being of type 'c' will not cause a transfer if the register addressing mode is specified. It is assumed in this case that the slave processor is already holding the operand internally. Provided in the NS32016 is the capability of communicating with a user-defined, "Custom" Slave Processor. The instruction set provided for a Custom Slave Processor defines the instruction formats, the operand classes and the communication protocol. Left to the user are the interpretations of the Op Code fields, the programming model of the Custom Slave and the actual types of data transferred. The protocol specifies only the size of an operand, not its data type. Table 3-6 lists the relevant information for the Custom Slave instruction set. The designation "c" is used to represent an Mnemonic Operand 1 Class For the instruction encodings, see Appendix A. TABLE 3-6. Custom Slave Instruction Protocols Operand 2 Operand 2 Operand 1 Class Issued Issued read.c read.c read.c read.c rmw.c rmw.c rmw.c rmw.c c c c c c c c c cto Op. 2 ctoOp.2 ctoOp.2 ctoOp.2 none none none none CMOVOc CMOV1c CMOV2c CMOV3c CCMPOc CCMP1c read.c read.c read.c read.c read.c read.c write.c write.c write.c write.c read.c read.c c c c c c c N/A N/A N/A N/A c c ctoOp.2 ctoOp.2 ctoOp.2 ctoOp.2 N/A N/A none none none none N,Z,L N,Z,L CCVOci CCV1ci CCV2ci CCV3ic read.c read.c read.c readi write.i write.i write.i write.c c c c N/A N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 ctoOp.2 none none none none CCV4Da CCV5aD read.D read.a write.a write.D D a N/A N/A atoOp.2 DtoOp.2 none none LCSR SCSR read.D N/A N/A write.D D N/A N/A N/A N/A DtoOp.2 none none LCR* SCR* addr addr N/A N/A D D N/A N/A N/A N/A F F read.D write.D N/A N/A D N/A N/A N/A N/A D to Op.1 none none Note: D ~ Double Word = integer size (B,W,D) specified in mnemonic. c ~ Custom size (D:32 bits or Q:64 bits) specified in mnemonic. • ~ Privileged Instruction: will trap if CPU is in User Mode. N/A PSR Bits Affected CCALOc CCAL1c CCAL2c CCAL3c CATSTO' CATST1* i Returned Value Type and Dest. ~ Not Applicable to this instruction. 2-407 N CI .... .... ~ CI .,... ch .,... Q Q r---------------------------------------------------------------------~ 4.0 Device Specifications C\I 4.1 PIN DESCRIPTIONS Z The following is a brief description of all NS32016 pins. The descriptions reference portions of the Functional Description, Section 3. ~ Status (STO-ST3): Active high. Bus cycle status code, STO least significant. Section 3.4.2. Encodings are: 0000 - Idle: CPU Inactive on Bus. 0001 0010 0011 - 4.1.1 Supplies Power (Vee): + SV positive supply. Section 3.1 Logic Ground (GNDL): Ground reference for on-chip logic. Section 3-1. Idle: WAIT Instruction. (Reserved) Idle: Waiting for Slave. 0100 -Interrupt Acknowledge, Master. 0101 -Interrupt Acknowledge, Cascaded. Buffer Ground (GNDB): Ground reference for on-chip drivers connected to output pins. Section 3.1. Back-Bias Generator (BBG): Output of on-chip substrate voltage generator. Section 3.1. 0110 - End of Interrupt, Master. 0111 1000 - End of Interrupt, Cascaded. Sequential Instruction Fetch. 1001 - Non-Sequential Instruction Fetch. 4.1.2 Input Signals 1010 1011 - Data Transfer. Read Read-Modify-Write Operand. 1100 1101 - Read for Effective Address. Transfer Slave Operand. 1110 - Read Slave Status Word. Clocks (PHI1, PHI2): Two-phase clocking signals. Section 3.2. Ready (ROY): Active high. While ROY is inactive, the CPU extends the current bus cycle to provide for a slower memory or peripheral reference. Upon detecting ROY active, the CPU terminates the bus cycle. Section 3.4.1. 1111 - Broadcast Slave 10. Hold Acknowledge (HLDA): Active low. Applied by the CPU in response to HOLD input, indicating that the bus has been released for DMA or multiprocessing purposes. Section 3.7. User/Superior (U/S): User or Supervisor Mode status. Section 3.7. High state indicates User Mode, low indicates Supervisor Mode. Section 3.7. Hold Request (HOLD): Active low. Causes the CPU to release the bus for DMA or multiprocessing purposes. Section 3.6. Note: If the Fi()[ij signal is generated asynchronously, it's set up and hold times may be violated. In this case it is recommended to synchronize it with CTIL to mini· mize the possibility of metastable states. The CPU provides only one synchronization stage to minimize the HLDA latency. This is to avoid speed degradations in cases of heavy fiOITj activity (i.e. DMA controller cycles interleaved with CPU cycles.) Interlocked Operation (ILO): Active low. Indicates that an interlocked instruction is being executed. Section 3.7. Program Flow Status (PFS): Active low. Pulse indicates beginning of an instruction execution. Section 3.7. Interrupt (lNT): Active low, Maskable interrupt request. Section 3.B. 4.1.4InputiOutput Signals Non-Maskable Interrupt (NMI): Active low, Non-Maskable interrupt request. Section 3.B. Address/Data 0-15 (ADO-AD15): Multiplexed Address/ Data information. Bit 0 is the least significant bit of each. Section 3.4. Address Translation/Slave Processor Control (AT/SPC): Active low. Used by the CPU as the data strobe output for Slave Processor transfers; used by Slave Processors to acknowledge completion of a slave instruction. Section 3.4.6. Section 3.9. Sampled on the rising edge of Reset as Address Translation Strap. Section 3.S.1. In Non-Memory-Managed systems this pin should be pulledup to Vee through a 10 kO resistor. Reset/Abort (RST/ABT): Active low. If held active for one clock cycle and released, this pin causes an Abort Command, Section 3.S.4. If held longer, it initiates a Reset, Section 3.3. 4.1.3 Output Signals Address Bits 16-23 (A16-A23): These are the most significant B bits of the memory address bus. Section 3.4. Address Strobe (ADS): Address low. Controls address latches; indicates start of a bus cycle. Section 3.4. Data Direction In (ODIN): Active low. Status Signal indicating direction of data transfer during a bus cycle. Section 3.4. High Byte Enable (HBE): Active low. Status Signal enabling transfer on the most significant byte of the Data Bus. Section 3.4; Section 3.4.3. Note: The HBJ: Signal is normally floated when the CPU grants the bus in Data Strobe/Float (DS/FLT): Active low. Data Strobe output, Section 3.4, or Float Command input, Section 3.S.3. Pin function is selected on ATISPC pin, Section 3.5.1. response to a DMA request on the ROil) pin. However, when an MMU Is used and the bus Is granted during an MMU page table look·up, HBE is not floated since the CPU does not have sufficient information to synchronize the release of HBE to the MMU's bus cycles. Therefore, in a memory managed system, an exiernal TRI-STATE buffer is required. This is shown in Figure B·l in Appendix B. 2-40B z en 4.0 Device Specifications (Continued) Co) 4.2 ABSOLUTE MAXIMUM RATINGS If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Temperature Under Bias O°C to + 70"C Storage Temperature -65°C to + 150°C All Input or Output Voltages With -0.5Vto +7V Respect to GND 1.5 Watt Power Dissipation Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. ....~ 'P .... o 4.3 ELECTRICAL CHARACTERISTICS TA = 0 to + 70°C, Vee = 5V ± 5%, GND = OV Symbol Max Units VIH High Level Input Voltage Parameter 2.0 Vee + 0.5 V VIL Low Level Input Voltage -0.5 0.8 V Conditions Min Typ VeH High Level Clock Voltage PHI1, PHI2 pins only Vee- 0.35 Vee+ 0.5 V Vel Low Level Clock Voltage PHI1, PHI2 pins only -0.5 0.3 V VeLT Low Level Clock Voltage, Transient (ringing tolerance) PHI1, PHI2 pins only -0.5 0.6 V VOH High Level Output Voltage VOL Low Level 0 Output Voltage IllS AT/SPC Input Current (low) VIN=O.4V, AT/SPC in input mode II Input Load Current O:>:VIN:>:Vee, All inputs except PHI1, PHI2, AT/SPC Il Leakage Current Output and 110 Pins in in TRI-STATElinput Mode Icc V 2.4 Active Supply Current 0.45 V 0.05 1.0 mA -20 20 ",A -20 30 ",A 300 mA 200 Connection Diagram Dual·ln·Llne Package A22!;;~::::::J ~ A20~ A19~ A21 2 3 4 47 46 45 : ::~~: A16~ AD15 ~ ADI4!;; AD13 ~ AD12 ~ ADll!;; AD10 AD9!;; AD8 ~ AD7 ~ E AD6~ ~ AD4 ~ ADS AD3 E AD2~ 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 NS32018 CPU ADI C 22 ADO!;; 23 GNDL C 24 ~ ~ vcc fII A23 INT NMI ::::::l ~~~ ~ STI ::::::l ST2 42 41 40 ~ ST3 39 ~ PFS 38 ~ ODIN 37 AD~ 36 ~ U/S 35 Ar/SPC 34 RST/ABT 33 Ds/FLT 32 HBE 31 HLDA 30 HOLD 29 BBG 28 RDV 27 PHIZ 26 PHil 25 GNDB b;:;:! g g g g g g g g g g P Order Number NS32016D or NS32016N See NS Package Number D48A or N48A TL/EE/5054-2 Top View FIGURE 4·1 2-409 ....• C) .... ~ en CD z r-------------------------------------------------------------------------------------~ 4.0 Device Specifications (Continued) 4.4 SWITCHING CHARACTERISTICS 4.4.1 Definitions All the timing specifications given in this section refer to 2.0V on the rising or falling edges of the clock phases PHI1 and PHI2 and O.SV or 2.0V on all other signals as iIIustrat- ed in Figures 4-2 and 4-3, unless specifically stated otherwise. ABBREVIATIONS: L.E. - leading edge T.E. - trailing edge -[~'------ [ _ _k [ PHI. -IS-IG-1-1------.~~: [ - - ........ SlG1 R.E. - rising edge F.E. - falling edge -------..--.-- - SlG1 ._~ [ ____I___I_SI_G_2h_lj ___ SlGZ ______ - - 2.4V O.8V -',\Ir---..-j ISIG11 '---I--O.45V ~: [ SIG2 TL/EE/5D54-42 FIGURE 4-2. Timing Specification Standard (Signal Valid After Clock Edge) ~---t--2.4V 2.0V L ISIG2h - - - - - - - ' - - - . - - - - - - -O.45V TL/EE/5D54-43 FIGURE 4-3. Timing Specification Standard (Signal Valid Before Clock Edge) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32016-10 Maximum times assume capacitive loading of 100 pF. Name Figure Description Reference/Conditions NS32016-10 Min Units Max tALv 4-4 Address bits 0-15 valid after R.E., PHI1 T1 tALh 4-4 Address bits 0-15 hold after R.E., PHI1 Tmmu or T2 tov 4-4 Data valid (write cycle) after R.E., PHI1 T2 tOh 4-4 Data hold (write cycle) after R.E., PHI1 next T1 or Ti tAHv 4-4 Address bits 16-23 valid after R.E., PHI1 T1 tAHh 4-4 Address bits 16-23 hold after R.E., PHI1 next T1 or Ti 0 ns tALAOSs 4-5 Address bits 0-15 setup before ADS T.E. 25 ns tAHAOSs 4-5 Address bits 16-23 set up before ADS T.E. 25 ns tALAOSh 4-9 Address bits 0-15 hold after ADS T.E. 15 ns tAHAOSh 4-9 Address bits 16-23 hold after ADS T.E. 15 tALI 4-5 Address bits 0-15 floating (noMMU) after R.E., PHI1 T2 25 ns tALMf 4-9 Address bits 0-15 floating (withMMU) after R.E., PHI1 Tmmu 25 ns tAHMf 4-9 Address bits 16-23 floating (withMMU) after R.E., PHI1 Tmmu 25 ns tHBEv 4-4 HBE Signal valid after R.E., PHI1 T1 50 ns tHBEh 4-4 HBE signal hold after R.E., PHI1 next T1 or Ti tsTv 4-4 Status (STO-ST3) valid after R.E., PHI1 T4 (before T1, see note) tSTh 4-4 Status (STO-ST3) hold after R.E., PHI1 T4 (after T1) tOOINv 4-5 DDIN signal valid after R.E., PHI1 T1 2-410 40 5 ns ns 50 0 ns ns 40 ns ns 0 ns 45 0 ns ns 50 ns z U) 4.0 Device Specifications (Continued) Co) ~ 4.4.2.1 Output Signals: Internal Propagation Delays, NS32016-10 (Continued) Name Figure Description Reference/Conditions NS32016-10 Min Units Max tOOINh 4-5 ODIN signal hold after R.E., PHil nextTl orTi tAOSa 4-4 ADS signal active (low) after R.E., PHil Tl 35 ns tAOSia 4-4 ADS signal inactive after R.E., PHI2 Tl 40 ns tAOSw 4-4 ADS pulse width at 0.8V (both edges) tOSa 4-4 DS signal active (low) after R.E., PHil T2 40 ns tOSla 4-4 DS signal inactive after R.E., PHil T4 40 ns tALI 4-6 ADO-AD15 floating (caused by HOLD) after R.E., PHil T1 25 ns tAH! 4-6 A16-A23 floating (caused by HOLD) after R.E., PHil T1 25 ns tOS! 4-6 DS floating (caused by HOLD) after R.E., PHil Ti 50 ns tADS! 4-6 ADS floating (caused by HOLD) after R.E., PHI1 Ti 50 ns tHBE! 4-6 HBE floating (caused by HOLD) after R.E., PHil Ti 50 ns tODlN! 4-6 ODIN floating (caused by HOLD) after R.E., PHI1 Ti 50 ns tHLOAa 4-6 HLDA signal active (low) after R.E., PHI1 Ti 30 ns tHLOAia 4-8 HLDA signal inactive after R.E., PHI1 Ti 40 ns tOSr 4-8 OS signal returns from floating (caused by HOLD) after R.E., PHil Ti 55 ns tAOSr 4-8 ADS signal returns from floating (caused by HOLD) after R.E., PHil Ti 55 ns tHBEr 4-8 HBE signal returns from floating (caused by HOLD) after R.E., PHI1 Ti 55 ns tOOINr 4-8 ODIN signal returns from floating (caused by HOLD) after R.E., PHI1 Ti 55 ns tOOIN! 4-9 ODIN signal floating (caused by FLn after FLT FE 55 ns tHBEI 4-9 HBE signal low (caused by FLn after FLT F.E. 35 ns tOOINr 4-10 ODIN signal returns from floating (caused by FLn after FLT F.E. 40 ns tHBEr 4-10 HBE signal returns from LOW (caused by FLn after FLT F.E. 35 ns tgPCa 4-13 SPC output active (low) after R.E., PHil T1 35 ns tgPCla 4-13 SPC output inactive after R.E., PHil T4 35 ns tgPCn! 4-15 SPC output nonforcing after R.E., PHI2 T4 30 ns tov 4-13 Data valid (slave processor write) after R.E., PHI1 T1 50 ns tOh 4-13 Data hold (slave processor write) after R.E., PHI1 next T1 or Ti 0 ns 50 ns tpFSw 4-18 PFS pulse width at 0.8V (both edges) ns 0 30 ns tPFSa 4-18 PFS pulse active (low) after R.E., PHI2 40 tPFSla 4-18 PFS pulse inactive after R.E., PHI2 40 tlLOs 4-20a ILO signal setup before R.E., PHI1 T1 of first interlocked write cycle 50 ns tlLOh 4-20b ILO signal hold after R.E., PHI1 T3 of last interlocked read cycle 10 ns tlLOa 4-21 ILO signal active (low) after R.E., PHI1 2-411 .... cp .... o o 35 ns ns ns 4.0 Device Specifications (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32D16·1D (Continued) Name Figure Description NS32D16·1D Reference/Conditions Min Units Max tllOia 4-21 ILO signal inactive after R.E., PHI1 35 ns tUSv 4-22 U/S signal valid after R.E., PHI1 T4 35 ns tUSh 4-22 U/S signal hold after R.E., PHI1 T4 8 ns tNSPF 4-19b Nonsequential fetch to next PFS clock cycle after R.E .• PHI1 T1 4 tcp tpFNS 4-19a PFS clock cycle to next nonsequential fetch before R.E., PHI1 T1 4 tcp Last operand transfer of an instrucbefore R.E., PHI1 T1 of first 0 tcp tion to next PFS clock cycle bus cycle of transfer Note: Every memory cycle starts w~h T4. during which Cycle Status is applied. If the CPU was Idling, the sequence will be: ". . . Ti, T4, Tl . . .". II the CPU was not idling, the sequence will be: "... T4, T1 ...". tLXPF 4-29 4.4.2.2 Input Signal Requirements: NS32016·10 Name Figure Description Reference/Conditions NS32D16·1D Min Units Max tPWR 4-25 Power stable to RST R.E. after Vce reaches 4.5V 50 tDis 4-5 Data in setup (read cycle) before F.E., PHI2 T3 15 ns tDlh 4-5 Data in hold (read cycle) after R.E., PHI1 T4 3 ns tHlDa 4-6 HOLD active (low) setup time (see note) before F.E., PHI2 TX1 25 ns tHlDia 4-8 HOLD inactive setup time before F.E., PHI2 Ti 25 ns tHlOh 4-6 HOLD hold time after R.E., PHI1 TX2 0 ns tFLTa 4-9 FLT active (low) setup time before FE, PHI2 Tmmu 25 ns tFLTia 4-11 FLT inactive setup time before F.E., PHI2 T2 25 ns ROY setup time before FE, PHI2 T2 or T3 15 ns ROY hold time after FE, PHI1 T3 5 ns /Ls tROYs 4~11, tROYh 4-11,4-12 tASTs 4-23 ABT setup time (FLT inactive) before FE, PHI2 Tmmu 20 ns tASTs 4-24 ABT setup time (FLT active) before FE, PHI2 Tf 20 ns tASTh 4-23 ABT hold time after R.E., PHI1 0 ns tRSTs 4-25,4-26 RST setup time before F.E., PHI1 15 ns tRSTw 4-26 RST pulse width at 0.8V (both edges) 64 tcP tiNTs 4-27 INTsetup time before F.E., PHI1 25 ns tNMlw 4-28 NMI pulse width at 0.8V (both edges) 70 ns tOls 4-14 Data setup (slave read cycle) before FE, PHI2 T1 15 ns tOlh 4-14 Data hold (slave read cycle) after R.E., PHI1 T4 3 ns tsped 4-15 SPC pulse delay from slave after R.E., PHI2 T4 25 ns tgpes 4-15 SPC setup time before FE, PHI1 25 ns tspew 4-15 SPC pulse width from slave processor (async.input) at 0.8V (both edges) 20 ns 4-12 2-412 z en w 4.0 Device Specifications (Continued) Name Figure Description !'.) 0) Reference/Conditions NS32016·10 Min tATh 4·16 AT ISPC hold for address translation strap after F.E., PHI1 of cycle during which RST pulse is removed Units Max 2 tcp AT ISPC setup for address before R.E., PHI1 of cycle during 1 tcp translation strap which RST pulse is removed Note: This setup time is necessary to ensure prompt acknowledgement via HLOA and the ensuing floating of CPU off the buses. Note that the time from the receipt of the HOLD Signal until the CPU floats is a function of the lime HOLD signal goes low, the state of the ROY input (in MMU systems), and the length of the current MMU cycle. tATs 4·16 4.2.3 Clocking Requirements: NS32016·10 Name Figure Description .... ... Q 4.4.2.2 Input Signal Requirements: NS32016·10 (Continued) Reference/ Conditions NS32016·10 Units Min Max 100 250 ns -2 5 ns -4 4 ns -5 5 ns tcp 4·17 Clock period R.E., PHI1, PHI2 to next R.E., PHI1, PHI2 tCLw 4·17 PHI1, PHI2 pulse width at 2.0V on PHI1, PHI2 (both edges) 0.5 tcp - 10 ns tCLh 4·17 PHI1, PHI2 high time at Vcc - 0.9Von PHI1, PHI2 (both edges) 0.5 tcp - 15 ns tCLI 4·17 PHI1, PHI210w time atO.8Von PHI1, PHI2 0.5tcp - 5 ns tnOVL(1,2) 4·17 Non·overlap time 0.8Von F.E., PHI1, PHI2 to 0.8V on R.E., PHI2, PHI1 InOVLas Non·overlap asymmetry (tnOVL(1) - tnOVL(2» At 0.8V on PHI1, PHI2 tcLwas PHI1, PHI2 asymmetry At 2.0V on PHI1, PHI2 (tCLw(1) - tcLw(2» 2·413 Q -C) r---------------------------------------------------------------------------------, ~ 4.0 Device Specifications (Continued) ~ 4.4.3 Timing Diagrams CO) U) Z TI 12 T3 T4 PHil [ PHI2 [ ADO-IS [ AI6-Z3 [ iiDiN[ S~[~_________r---~-A-L-IO--~----~~~~N-E-XT----- os [ -+--------{-jIOSI ~------t_--------n (HIGH) ROY [ I TUEE/5054-44 FIGURE 4-4. Write Cycle TI 12 T3 T4 PHil [ PHIZ [ ADO-IS [ "AI6-23 [ AiiS[ iiiE[ i5iiiN[ S~[ iii [ ROY [ TUEE/5054-45 FIGURE 4-5. Read Cycle 2-414 z en Co) 4.0 Device Specifications (Continued) N o ..... en ..... I T4 TX2 TXI Ti Ti TI o PHil [ PHI2 [ - 1 - -..... HOLD [ HLDA [ _4-________-+________~r---_,~~t_--~~I'HLDA. 'DS, IHBe! os lADS! ADS 'ODIN! : [ -+____-+____-+____-'__~ ADO·IS [ AI6-23 I I I . . . - -- -iFLOATINGj- - - - ~~'~~-l------L----_ _~~H~_lI [-I-------l------I--__+__' ____ ~]~:~ __ - - (FLO~TING) TL/EE/5lJS4-46 FIGURE 4·6. Floating by HOLD Timing (CPU Not Idle Initially) Nole Ihal whenever Ihe CPU is nol idling (nol in Ti), Ihe HOLD request (HOLD low) must be active tHLOa before the falling edge of PHI2 of the clock cycle that appears two clock cycles before T4 (TXl) and stay low until tHLOh after the rising edge of PHil of Ihe clock cycle that precedes T4 (TX2) for the request to be acknowledged. Ti PHil [ T4 TI Ti PHil [ PHI2 [ PHI2 [ HOLD [ Hi:iiA[ -+---4~~ OS ADS [ HBE D IN AD OD" S ii6Cii[ HLiiA [ + ________+~ I [-1------ os -I----------I-.J1 (FL.OAilNCii -,R.OATING)- ------- A16.23 [ - - - - - - - tHBEr tDDINr ADS [ HBE DDIN AI6-23 to", lADSr - (HIGH) (FLOATING) [_1_______1____________ _ ADD·15 (FLOATING) (FLOATING) TLlEE/SOS4-46 TLlEE/SOS4-47 FIGURE 4·8. Release from HOLD FIGURE 4·7. Floating by HOLD Timing (CPU Initially Idle) Nole thai during Til the CPU is already idling. 2-415 • .... Q cb .... 4.0 Device Specifications (Continued) Q N ('I) (/) Z CPU STATES T1 TIIMU TI TI MMUSTATES T1 TIIMU T4 Tl PHil [ PHI2 [ m[ ADO-IS [ (CPU) AI8-23 [ (CPU) ADS [ (CPU) iiiiiN[ (CPU) HBE [ TLlEE/5054-49 FIGURE 4·9. FLT Initiated Cycle Timing CPU STATES Tt MMU STATES Tmmu T2 T3 T4 PHil [ PHI2[ FiT [ (MMU) ADO-15 [ AI6-23 - ffi5iN (CPU) [ __ ADS [ (CPU) -+----+----+----- HBE [ ____- -..... Tl/EE/5054-50 Note that when FIT is dea..erted the CPU restarts driving ODIN betore the MMU releases it. This, however, does not cause any conflict, since both CPU and MMU torce ODIN to the same logic level. FIGURE 4·10. Release from FLT Timing TL/EE/5054-51 FIGURE 4·11. Ready Sampling (CPU Initially READY) 2-416 z en Co) 4.0 Device Specifications (Continued) .... ... o N o Q) \ 13\\13\ T4 :~~ ~ RDV[ TL/EE/SOS4-S2 FIGURE 4-12. Ready Sampling (CPU Initially NOT READY) I I T1 TO I I PHI'[~ PHI2 [ T1 I T4 I PHI'[JLJLJ I ADO-.5 [ spc[ SPC [ (CPU) DaN[-+~____~r-______+- iiiiiN[ STQ.3[ STIH AiiS[ [-4----1-""---....- AiiS[ (HIGH) I TLlEE/SOS4-S4 TLlEE/S054-53 FIGURE 4-14. Slave Processor Read Timing FIGURE 4-13. Slave Processor Write Timing 11 T4 PH)I [ PHI2 [ SPC [ (FROM CPU) (FROM Sl.A~1 [. --- ------ ------- -----TL/EE/SOS4-82 FIGURE 4·15. SPC Timing After transferring last operand to a Slave Processor. CPU turns OFF driver and holds SPC high with internal 5 kO pullup. TLlEE/SOS4-S6 FIGURE 4·16. Reset Configuration Timing 2-417 ....o *'o 4.0 Device Specifications (Continued) C\I C") (/) z PHil [ PHI2 [ -----~I TL/EE/5054-57 FIGURE 4-17. Clock Waveforms PHI2 [~f1---JLJ m[~~ TL/EE/5054-58 FIGURE 4-18. Relationship of PFS to Clock Cycles 11 IpFNS .1 STQ.3 [ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _.....JX'--_C_O_DE_l_00_'_ _ TUEE/5054-59 FIGURE 4-19a. Guaranteed Delay, PFS to Non-Sequential Fetch I PHil 11 I 12 I ••• I I I I LfU"LJl-1fl--fl--JL ADS [ S1Q.3[-+_ _ _ _ CO_D_E_l_00_l_ _ _ ~.r-----r------- INSPF TLlEE/5054-60 FIGURE 4-19b. Guaranteed Delay, Non-Sequential Fetch to PFS 2·418 z en Co) 4.0 Device Specifications (Continued) I T30RTI I T40RTI I N CI T1 T2 T3 ..... 'l» ..... CI T4 iiiS[ TLlEE/5054-61 FIGURE 4-20a. Relationship of ILO to First Operand Cycle of an Interlocked Instruction I TJORTI I T4 OR TI I Tl T2 T3 T4 -+____________-+, ILO[ ______________ TLlEE/5054-62 FIGURE 4-20b. Relationship of ILO to Last Operand Cycle of an Interlocked Instruction PHI1[JLJLt fII ~[~Ir----~u. TLlEE/5054-63 FIGURE 4-21. Relationship of ILO to Any Clock Cycle I TJORTI I T40RTI I T1 T2 T3 T4 TL/EE/5054-64 FIGURE 4-22. U/S Relationship to Any Bus CycleGuaranteed Valid Interval 2-419 .... J, .... C) . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , re 4.0 Device Specifications (Continued) C") I rn z T1 I Trnmu 12 TI PHIZ [ TLlEE/S054-6S FIGURE 4-23. Abort Timing, FLT Not Applied Tf Tf TI TI 12 TI PHil [ PHI2 [ ~Ri[ __r_----_+------~----~+_-J TL/EE/SOS4-66 FIGURE 4-24. Abort Timing, FLT Applied ~---------------~~ vee PHil [----1----.. . ~/AErr[ ______________ilr_J TL/EE/5054-67 FIGURE 4-25. Power-On Reset TLlEE/5054-68 FIGURE 4-26. Non-Power-On Reset 2-420 zen 4.0 Device Specifications (Continued) Co) ~ o ...... cp ...... o NM{ PHI1[..nJLIL (.J iNT[ liNTs ~_INMIw_'r ~ TL/EE/SOS4-70 FIGURE 4-28. NMllnterrupt Signal Timing TL/EE/SOS4-69 FIGURE 4-27.INT Interrupt Signal Detection FIRST BUS CYCLE NEXT TL/EE/SOS4-71 FIGURE 4-29. Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction NOTE: In a Iransfer of a Read.Modify.Write type operand. this is the Read transfer, displaying RMW Slatus (Code 1011). 2-421 fII .... Q ch .... ~ Cf) tn Z .--------------------------------------------------------------------, Options: in String Instrucrt_io_n_s_,-_,--, Appendix A: Instruction Formats I U/W NOTATIONS: i = Integer Type Field B = 00 (Byte) W = 01 (Word) o = 11 (Double Word) f = Floating Point Type Field F = 1 (Std. Floating: 32 bits) L= 0 (Long Floating: 64 bits) c = Custom Type Field o = 1 (Double Word) Q = 0 (Quad Word) op = Operation Code Valid encodings shown with each format. gen, gen 1, gen 2 = General Addressing Mode Field See Sec. 2.2 for encodings. reg = General Purpose Register Number cond = Condition Code Field 0000 = EQual: Z = 1 0001 = Not Equal: Z = 0 0010 = Carry Set: C = 1 0011 = Carry Clear: C = 0 0100 = Higher: L = 1 0101 = Lower or Same: L = 0 0110 = Greater Than: N = 1 0111 = Less or Equal: N = 0 1000 = Flag Set: F = 1 1001 = Flag Clear: F = 0 1010 = LOwer: L = 0 and Z = 0 1011 = Higher or Same: L = 1 orZ = 1 1100 = Less Than: N = 0 and Z = 0 1101 = Greater or Equal: N = 1 or Z = 1 1110 = (Unconditionally True) 1111 = (Unconditionally False) short = Short Immediate Value. May contain: quick: Signed 4-bit value, in MOVQ, ADDQ, CMPQ, ACB. cond: Condition Code (above), in Scond. areg: CPU Dedicated Register, in LPR, SPR. 0000 = US 0001 - 0111 = (Reserved) 1000 = FP 1001 = SP 1010 = SB 1011 = (Reserved) 1100 = (Reserved) 1101 = PSR 1110 = INTBASE 1111 = MOD B T T = Translated B = Backward U/W = 00: None 01: While Match 11: Until Match Configuration bits, in SETCFG: IC IM IF mreg: NS32082 Register number, in LMR, SMR. 0000 = BPRO 0001 = BPR1 0010 = (Reserved) 0011 = (Reserved) 0100 = (Reserved) 0101 = (Reserved) 0110 = (Reserved) 0111 = (Reserved) 1000 = (Reserved) 1001 = (Reserved) 1010 = MSR 1011 = BCNT 1100 = PTBO 1101 = PTB1 1110 = (Reserved) 1111 = EIA 7 I I I 0 I 1 cond 11 10 1 101 op 1 1 10 0 1 101 FormatO (BR) Bcond 7 I BSR RET CXP RXP RETT RETI SAVE RESTORE Format 1 -0000 ENTER -0001 EXIT Nap -0010 -0011 WAIT -0100 DIA -0101 FLAG -0110 SVC -0111 BPT 81 7 15 I gen 0 I sh~rt -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 0 I op 11 I 1 I I Format 2 ADDQ CMPQ SPR Scond 2-422 -000 -001 -010 -011 ACB MOVQ LPR -100 -101 -110 ,--------------------------------------------------------------------------, z en Co) Appendix A: Instruction Formats (Continued) 1S ~e~ , I' 017 o'p ~ o7 0 I 11'1'1'1'11 -0000 -0010 -0100 -0110 o ..... ..... Q) I i Format 3 CXPD BICPSR JUMP BISPSR 0 1 1 00111 0 o Format 7 -1010 -1100 -1110 ADJSP JSR CASE Trap (UND) on XXX1, 1000 I' , , , I" gen 1 MOVM CMPM INSS EXTS MOVXBW MOVZBW MOVZiD MOVXiD -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 MUL MEl Trap (UND) DEI QUO REM MOD DIV -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 o gen 2 'I iii op Format 4 ADD CMP BIC ADDC MOV OR -0000 -0001 -0010 -0100 -0101 -0110 SUB ADDR AND SUBC TBIT XOR -1000 -1001 -1010 -1100 -1101 -1110 0 i 00001 1 1 0 TLlEE/5054-72 FormatO EXT CVTP INS CHECK MOVSU MOVUS -000 INDEX -001 FFS -010 -011 -110,reg=001 -110, reg=011 -100 -101 o FormatS -0000 MOVS CMPS -0001 Trap (UND) on 1XXX, 01XX SETCFG SKPS 1 1 1 1 0 -0010 -0011 o MOVif LFSR MOVLF MOVFL Format 9 -000 ROUND -001 TRUNC -010 SFSR -011 FLOOR -100 -101 -110 -111 001110 7 Format 6 ROT ASH CBIT CBITI Trap (UND) LSH SBIT SBITI -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 NEG NOT Trap (UND) SUBP ABS COM IBIT ADDP 0 ] 0 1 1 1 1 1101 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 2-423 TLlEE/5054-37 Format 10 Trap (UND) Always fII o .----------------------------------------------------------------------, ,... ch ,... Appendix A: Instruction Formats (Continued) o N (W) o tn Z 1 1 1 1 0 ID Byte Operation Word Format 11 ADDf MOVf CMPf Trap (SLAVE) SUBt NEGf Trap (UND) Trap (UND) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 DIVf Trap (SLAVE) Trap (UND) Trap (UND) MULf ABSf Trap (UND) Trap (UND) -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 7 I I I I I I I nnn Operation Word Format 000 Format 15.0 -0000 LCR CATSTO -0001 SeR CATST1 Trap (UND) on all others 0 1 l 1 1 1 1 1 1 O. ___.1 on Format 15 (Custom Slave) TL/EE/5054-75 -0010 -0011 Format 12 Trap (UND) Always 001 on l 0 I I I I I I I I ___ . 1 0 0 1 1 1 1 O. Format 15.1 TLlEE/5054-76 CCV3 LCSR CCV5 CCV4 Format 13 Trap (UND) Always -000 -001 -010 -011 CCV2 CCV1 SCSR CCVO -100 -101 -110 -111 0 1 1 1 1 0 101 Format 14 RDVAL WRVAL -0000 -0001 LMR SMR Format 15.5 -0010 -0011 Trap (UND) on 01 XX, 1XXX CCALO CMOVO CCMPO CCMP1 CCAl1 CMOV2 Trap (UND) Trap (UND) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 If nnn ~ 010,011,100,110,111 then Trap (UNO) Always 2-424 CCAL3 CMOV3 Trap (UND) Trap (UND) CCAL2 CMOV1 Trap (UND) Trap (UND) -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 z (J) W Appendix A: Instruction Formats (Continued) N o...... . 01 ...... o ---I I I I I I I I ___ 0 1 0 1 1 1 1 0 1 7 0 ---I xI xI x "0 ___ TL/EE/5054-77 0 I 1 "1 0 1 TL/EE/5054-BO Format 16 Trap (UNO) Always Format 19 Trap (UNO) Always 7 Implied Immediate Encodings: 7 0 o ---I I I I I I I I 1 ___ 1 1 0 1 1 ·1 1 0 r1 TL/EE/5054-7B Register Mask, appended to SAVE, ENTER Format 17 Trap (UNO) Always o 7 ro ---I 7 __ . 1 0 0 0 1 1 1 0 r2 r3 r4 r5 rS Register Mask, appended to RESTORE, EXIT 0 I I I I I I I r1 1 TL/EE/5054-79 o 7 Format 18 : offset: Trap (UNO) Always Offset/Length Modifier appended to INSS, EXTS 2-425 NS32016-10 -ff T XCTAL2 PER PERIPH. CYCLE READY XCTAL1 EWAi'f WAffii NS32201 WAiT4 TCU RESET WAffi WAffi RSTI PHil iiii PHI2 WR -} ;= - ::::I a. WAIT REOUESTS (ADDR. DECODED OR STRAPPED) >C" Rii CTTL ~ ::::I CD WR ADS RS'fO l> "CI "CI CD illiiN ROY ffiiE ;. iLO () HBE "" I ~ ROY PHil PHI2 HLDAO CD INTS{=: iN'f NMi HLDAI DS/FLT PFS FIT UlS UlS ADS ADS ODIN ODIN NS32018 CPU AT/SPC 10 kD (24) NS32082 MMU I- t-- iiSf/ABT I- SPC f---- (24) A24 fD II to ADDRESS BUS (24) 'ODIN (24) (24) ADDR/DATA MULTIPLEXED BUS ADDRESS LATCH! BUFFER +5 ADDR!DATA +5 (24)i 0" ::::I STROBE PAY STO-ST3 STO-ST3 RST/ABT ADDR/DATA HLDAO PFs !1. I PHI2 ~ Sl C eQ eQ HOLD ROY RSTI PHil HLDA (/) HOLD l 1 ILO HBE HOLD S" eQ (16, DATA (16t SPC ~ STO-STl NS32081 FPU RST CLK II I EN DATA ----- iiS'f CLK MULTIPLEXED BUS MEMORY! PERIPHERALS (16) DIR ~ DATA BUS (16) DATA BUFFERS STATUS TUEE/5054-73 FIGURE B-1. System Connection Diagram ~National ~ Semiconductor NS32008-10 High-Performance 8-Bit Microprocessor General Description Features The NS3200B is a 32-bit microprocessor with a 16-MByte linear address space and a B-bit external data bus. It has a 32-bit ALU, eight 32-bit general purpose registers, a fourbyte prefetch queue, and a slave processor interface. The NS3200B is fabricated with National Semiconductor's advanced XMOSTM process, and is fully object code compatible with other Series 32000@ processors. The Series 32000 instructions set is optimized for modular high-level languages (HLL). The set is very symmetric, it has a two address format, and it incorporates HLL oriented addressing modes. The capabilities of the NS3200B can be expanded with the use of the NS320B1 floating point unit (FPU), which interfaces to the NS3200B as a slave processor. The NS3200B is a general purpose microprocessor that is ideal for a wide range of computational intensive applications. • • • • 32-bit architecture and implementation 16-MByte linear address space B-bit external data bus Powerful instruction set - General 2-address capability - High degree of symmetry - Addressing modes optimized for high-level languages • Series 32000 slave processor support • High-speed XMOS technology • 4B-pin dual-in-line (DIP) package Block Diagram ADD/DATA CONTROLS. STATUS MICROCODE ROM AND CONTROL LOGIC • a:o CFG REGISTER INTBASE S8 FP WORKING REGISTERS SP1 o SPO PC RO R1 R2 R3 R4 R5 I I I R6 I R7 I MOD I PSR : L_________________ 2-427 J TL/EE/6156-1 Table of Contents 1.0 PRODUCT INTRODUCTION 3.0 FUNCTIONAL DESCRIPTION (Continued) 1.1 NS32008 Design Goals 3.7.3 Maskable Interrupts (The INT Plan) 3.7.3.1 Non-Vectored Mode 2.0 ARCHITECTURAL DESCRIPTION 3.7.3.2 Vectored Mode: Non-Cascaded Case 2.1 Programming Model 3.7.3.3 Vectored Mode: Cascaded Case 2.1.1 General Purpose Registers 3.7.4 Non-Maskable Interrupt (The NMI Pin) 2.1.2 Dedicated Registers 3.7.5 Traps 2.1.3 The Configuration Register (CFG) 3.7.6 Prioritization 2.1.4 Memory Organization 3.7.7InterruptlTrap Sequences: Detail Flow 2.1.5 Dedicated Tables 3.7.7.1 Maskable/Non-Maskable Interrupt Sequence 2.2 Instruction Set 2.2.1 General Instruction Format 3.7.7.2 Trap Sequences: Traps Other Than Trace 2.2.2 Addressing Modes 2.2.3 Instruction Set Summary 3.8 Slave Processor Instructions 3.0 FUNCTIONAL DESCRIPTION 3.8.1 Slave Processor Protocol 3.1 Power and Grounding 3.8.2 Floating Point Instructions 3.8.3 Custom Slave Instructions 3.2 Clocking 3.3 Resetting 4.0 DEVICE SPECIFICATIONS 3.4 Bus Cycles 4.1 Pin Descriptions 3.4.1 Cycle Extension 4.1.1 Supplies 3.4.2 Bus Status 4.1.2 Input Signals 3.4.3 Data Access Sequences 4.1.3 Output Signals 3.4.3.1 Bit Accesses 4.1.4 InputlOutput Signals 3.4.3.2 Bit Field Accesses 4.2 Absolute Maximum Ratings 3.4.3.3 Extending Multiply Accesses 4.3 Electrical Characteristics 3.4.4 Instruction Fetches 4.4 Switching Characteristics 3.4.5 Interrupt Control Cycles 4.4.1 Definitions 3.4.6 Slave Processor Communication 4.4.2 Timing Tables 3.4.6.1 Slave Processor Bus Cycles 4.4.2.1 Output Signals: Internal Propagation Delays 3.4.6.2 Slave Operand Transfer Sequences 3.5 Bus Access Control 4.4.2.2 Input Signals Requirements 3.6 Instruction Status 4.4.2.3 Clocking Requirements 3.7 NS32008 Interrupt Structure 4.4.3 Timing Requirements 3.7.1 General InterruptlTrap Sequence Appendix A: Instruction Formats 3.7.2 InterruptlTrap Return List of Illustrations The General and Dedicated Registers ..•....•............••.............•............•............•.............. 2-1 Processor Status Register .................•......•............................................•......••.....•...2-2 CFG Register ..•••....•...................•............•......•............•...................................2-3 Data Formats for NS32008 Memory .••...•.......••..•..•......•....••.........................•....•............2-4 Module Descriptor Format. ......................................................................................2-5 A Sample Link Table ...........................................................................................2-6 General Instruction Format .....................•.........................................•...................... 2-7 Index Byte Format .............................................................................................2-8 Displacement Encodings .........................•........................•.......•......•...................•.. 2-9 Recommended Supply Connections ..............................................................................3-1 Clock Timing Relationships ....•.................................................................................3-2 Power-on Reset Requirements ................••.........................•................•......................3-3 General Reset Timing ..........................................................................................3-4 Recommended Reset Connections .......................•....................................................... 3-5 2-428 z List of Illustrations (Continued) en w Bus Connections ...........••..............................................................................•...3-6 c c Read Cycle Timing .............................................................................................3-7 Write Cycle Timing .............................................................................................3-8 I\) CD • ...... c ROY Pin Timing ..•......•......................................................................................3-9 Extended Cycle Example ......................................................................................3-1 0 Slave Processor Connections ....................•..................................•.......................... 3-11 CPU Read from Slave Processor ................................................................................ 3-12 CPU Write to Slave Processor ...........•...................................................................... 3-13 HOLD Timing, Bus Initially Idle .................................................................................. 3-14 HOLD Timing, Bus Initially Not Idle .............................................................................. 3-15 Interrupt Dispatch and Cascade Tables .......................................................................... 3-16 Interrupt/Trap Service Routine Calling Sequence ..................................................•.............. 3-17 Return from Trap (RETT n) Instruction Flow ...................................................................... 3-18 Return from Interrupt(RET) Instruction Flow ...................................................................... 3-19 Interrupt Control Connections (16 levels) .........................................................................3-20 Cascaded Interrupt Control Unit Connections .....................................................................3-21 Service Sequence ............................................................................................3-22 Slave Processor Protocol ......................................................................................3-23 Slave Processor Status Word Format. ...........................................................................3-24 Connection Diagram ............................................................................................4-1 Timing Specification Standard (Signal Valid After Clock Edge) ....................................................... .4-2 Timing Specification Standard (Signal Valid Before Clock Edge) ...................................................... 4-3 Write Cycle ....................................................................................................4-4 Read Cycle ....................................................................................................4-5 Floating by HOLD Timing (CPU Notldle Initially) ................................................................... .4-6 Floating by HOLD Timing (CPU Initially Idle) ....................................................................... 4-7 Release from HOLD ............................................................................................4-8 Ready Sampling (CPU Initially READY) ........................................................................... .4-9 Ready Sampling (CPU Initially NOT READY) ......................................................................4-10 Slave Processor Write Timing ...................................................................................4-11 Slave Processor Read Timing ................................................................................. .4-12 SPCTiming ..................................................................................................4-13 Clock Waveforms .............................................................................................4-14 Relationship of PFS to Clock Cycles .............................................................................4-14 Guaranteed Delay, PFS to Non-Sequential Fetch ................................................................ 4-15a Guaranteed Delay, Non-Sequential Fetch to PFS ................................................................ 4-15b Relationship of ILO to First Operand of an Interlocked Instruction ................................................... .4-17 Relationship of ILO to Last Operand of an Interlocked Instruction .................................................... 4-18 Relationship of ILO to Any Clock Cycle .......................................................................... 4-19 TIls Relationship to any Bus Cycle - Guaranteed Valid Interval ...................................................... 4-20 Power-On Reset ..............................................................................................4-21 Non-Power-On Reset ..........................................................................................4-22 INT Interrupt Signal Detection ................................................................................. .4-23 NMllnterrupt Signal Timing ..................................................................................... 4-24 Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction ........................... 4-25 List of Tables NS32008 Addressing Modes .................................................................................... 2-1 NS32008 Instruction Set Summary ............................................................................... 2-2 Interrupt Sequences ............................................................................................3-1 Floating-Point Instruction Protocols ............................................................................... 3-2 Custom Slave Instruction Protocols ............................................................................... 3-3 2-429 fII ....• r---------------------------------------------------------------------------------, C) CIO C) C) C'II C") en z 1.0 Product Introduction The Series 32000 Microprocessor family is a new generation of devices using National's XMaS and CMOS technologies. By combining state-of-the-art MaS technology with a very advanced architectural design philosophy, this family brings mainframe computer processing power to VLSI processors. cess, which allows a significant reduction in hardware and software cost. Software Processor Concept. The Series 32000 architecture allows future expansions of the instruction set that can be executed by speCial slave processors, acting as extensions to the CPU. This concept of slave processors is unique to the Series 32000 family. It allows software compatibility even for future components because the slave hardware is transparent to the software. With future advances in semiconductor technology, the slaves can be phYSically integrated on the CPU chip itself. The Series 32000 family supports a variety of system configurations, extending from a minimum low-cost system to a powerful 4 gigabyte system. The architecture provides complete upward compatibility from one family member to another. The family consists of a selection of CPUs supported by a set of peripherals and slave processors that provide sophisticated interrupt and memory management facilities as well as high-speed floating-point operations. The architectural features of the Series 32000 family are described briefly below: To summarize, the architectural features cited above provide three primary performance advantages and characteristics: • High-Level Language Support • Easy Future Growth Path • Application Flexibility Powerful Addressing Modes. Nine addressing modes available to all instructions are included to access data structures efficiently. Data Types. The architecture provides for numerous data types, such as byte, word, doubleword, and BCD, which may be arranged into a wide variety of data structures. SymmetriC Instruction Set. While avoiding special case instructions that compilers can't use, the Series 32000 family incorporates powerful instructions for control operations, such as array indexing and external procedure calls, which save considerable space and time for compiled code. 1.1 NS32008 DESIGN GOALS The NS3200B is aimed at small to medium size systems, and is designed to bridge the gap between B-bit CPUs and the higher-end members of the Series 32000 family. The NS3200B provides an B-bit data bus and is the only CPU in the Series 32000 family that does not support virtual memory. The NS3200B is most suitable for systems designed with B-bit memory and peripherals. Memory-to-Memory Operations. The Series 32000 CPUs represent two-address machines. This means that each operand can be referenced by anyone of the addressing modes provided. This powerful memory-to-memory architecture permits memory locations to be treated as registers for all useful operations. This is important for temporary operands as well as for context switching. Memory Management. Either the NS323B2 or the NS320B2 Memory Management Unit may be added to the system to provide advanced operating system support functions, including dynamic address translation, virtual memory management, and memory protection. Large, Uniform Addressing. The NS3200B has 24-bit address pOinters that can address up to 16 megabytes without requiring any segmentation; this addreSSing scheme provides flexible memory management without added-on expense. Modular Software Support. Any software package for the Series 32000 family can be developed independent of all other packages, without regard to individual addreSSing. In addition, ROM code is totally relocatable and easy to ac- 2.0 Architectural Description 2.1 PROGRAMMING MODEL The Series 32000 architecture includes 16 registers on the NS3200B CPU. 2.1.1 General Purpose Registers There are eight registers for meeting high-speed general storage requirements, such as holding temporary variables and addresses. The general purpose registers are free for any use by the programmer. They are 32 bits in length. If a general register is specified for an operand that is B or 16 bits long, only the low part of the register is used; the high part is not referenced or modified. 2.1.2 Dedicated Registers The eight dedicated registers of the NS3200B are assigned specific functions: PC: The PROGRAM COUNTER register is a pointer to the first byte of the instruction currently being executed. The PC GENERAL DEDICATED • • ~ 3' 3' ~ RO PROGRAM COUNTER PC STATIC BASE sa FRAME POINTER FP USER STACK PTA. SP1 INTERRUPT STACK PTR. INTERRUPT BASE SPO R1 R' R3 I SP INTBASE R' RS PSR MOD R6 STATUS MODULE R7 TL/EE/6156-3 FIGURE 2-1. he General and Dedicated Registers 2-430 .--------------------------------------------------------------------------, z 2.0 Architectural Description en w (Continued) N is used to reference memory in the program section. (In the NS32008, the upper eight bits of this register are always zero.) SPO, SP1: The SPO register pOints to the lowest address of the last item stored on the INTERRUPT STACK. This stack is normally used only by the operating system. It is used primarily for storing temporary data, and holding return information for operating system subroutines and interrupt and trap service routines. The SP1 register pOints to the lowest address of the last item stored on the USER STACK. This stack is used by normal user programs to hold temporary data and subroutine return information. In this document, reference is made to the SP register. The terms "SP register" or "SP" refer to either SPO or SP1, depending on the setting of the S bit in the PSR register. If the S bit in the PSR is 0, then SP refers to SPO. If the S bit in the PSR is 1, the SP refers to SP1. (In the NS32008, the upper eight bits of these registers are always zero.) Stacks in the Series 32000 family grow downward in memory. A push operation pre-decrements the stack pOinter by the operand length. A pop operation post-increments the stack pOinter by the operand length. T: The T bit causes program traCing. If this bit is a 1, a TRC trap is executed after every instruction (Section 3.7.5). o oCC) L: The L bit is altered by comparison instructions. In a comparison instruction, the L bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as unsigned integers. Otherwise, it is set to "0". In Floating-Point comparisons, this bit is always cleared. F: The F bit is a general condition flag, which is altered by many instructions (e.g., integer arithmetic instructions use it to indicate overflow). o Z: The Z bit is altered by comparison instructions. In a comparison instruction, the Z bit is set to "1" if the second operand is equal to the first operand; otherwise it is set to "0". N: The N bit is altered by comparison instructions. In a comparison instruction, the N bit is set to "1" if the second operand is less than the first operand, when both operands are interpreted as signed integers. Otherwise, it is set to "0". U: If the U bit is "1", no privileged instructions may be executed. if the U bit is "0", then all instructions may be executed. When U = 0, the NS32008 is said to be in Supervisor Mode; when U = 1, the NS32008 is said to be in User Mode. A User Mode program is restricted from executing certain instructions and accessing certain registers which could interfere with the operating system. For example, a User Mode program is prevented from changing the setting of the flag used to indicate its own privilege mode. A Supervisor Mode program is assumed to be a trusted part of the operating system, hence it has no such restrictions. S: The S bit specifies whether the SPO register on SP1 register is used as the stack pointer. The bit is automatically cleared on interrupts and traps it. It may have a setting of 0 (use the SPO register) or 1 (use the SP1 register). FP: The FRAME POINTER register is used by a procedure to access parameters and local variables on the stack. The FP register is set up on procedure entry with the ENTER instruction and restored on procedure termination with the EXIT instruction. The frame pointer holds the address in memory occupied by the old contents of the frame pOinter. (In the NS32008, the upper eight bits of this register are always zero.) SB: The STATIC BASE register points to the global variables of a software module. This register is used to support relocatable global variables for software modules. The SB register holds the lowest address in memory occupied by the global variables of a module. (In the NS32008, the upper eight bits of this register are always zero.) P: The P bit prevents a TRC trap from occurring more than once for an instruction (Section 3.7.5). It may have a setting of 0 (no trace pending) or 1 (trace pending). INTBASE: The INTERRUPT BASE register holds the address of the dispatch table for interrupts and traps (Section 3.7). The INTBASE register holds the lowest address in memory occupied by the dispatch table. (In the NS32008, the upper eight bits of this register are always zero.) I: If I = 1, then all interrupts will be accepted (Section 3.7). If I = 0, only the NMI interrupt is accepted. Trap enables are not affected by this bit. 2.1.3 The Configuration Register (CFG) Within the Control section of the NS32008 CPU is the 4-bit CFG Register, which declares the presence of certain external devices. It is referenced by only one instruction, SETCFG, which is intended to be executed only as part of system initialization after reset. The format of the CFG Register is shown in Figure 2-3. MOD: The MODULE register holds the address of the module descriptor of the currently executing software module. The MOD register is 16 bits long, therefore the module table must be contained within the first 64K bytes of memory. PSR: The PROCESSOR STATUS REGISTER holds the status codes for the NS32008 microprocessor. The PSR is 16 bits long, divided into two 8-bit halves (Figure 2-2). The low order eight bits are accessible to all programs, but the high order eight bits are accessible only to programs executing in Supervisor Mode. \cWF\'1 TLlEE/6156-5 FIGURE 2-3. CFG Register The CFG I bit declares the presence of external interrupt vectoring circuitry (specifically, the NS32202 Interrupt Control Unit). If the CFG I bit is set, interrupts requested through the INT pin are "Vectored." If it is clear, these interrupts are "Non-Vectored." See Section 3.7. The F and C bits declare the presence of the FPU and Custom Slave Processors. If these bits are not set, the corresponding instructions are trapped as being undefined. TLlEE/6156-4 FIGURE 2-2. The Processor Status Register C: The C bit indicates that a carry or borrow occurred after an addition or subtraction instruction. It can be used with the ADDC and SUBC instructions to perform multiple-precision integer arithmetic calculations. It may have a setting of 0 (no carry or borrow) or 1 (carry or borrow). 2.1.4 Memory Organization The main memory of the NS32008 is a uniform linear address space. Memory locations are numbered sequentially 2-431 .... 2.0 Architectural Description (Continued) starting at zero and ending at 224 -1. The number specifying a memory location is called an address. The contents of each memory location is a byte consisting of eight bits (Figure 2-4A). Unless otherwise noted, diagrams in this document show data stored in memory with the lowest address on the right and the highest address on the left. Also, when data is shown vertically, the lowest address is at the top of a diagram and the highest address at the bottom of the diagram. When bits are numbered in a diagram, the least significant bit is given the number zero, and is shown at the right of the diagram. Bits are numbered in increasing significance and toward the left. The format of a Module Descriptor is shown in Figure 2-5. The Static Base entry contains the address of static data assigned to the running module. It is loaded into the CPU Static Base register by the CXP and CXPD instructions. The Program Base entry contains the address of the first byte of instruction code in the module. Since a module may have multiple entry pOints, the Program Base pOinter serves only as a reference to find them. 15 I MOO I I oj 31 STATlCBASE A LINK TABLE ADDRESS A. Byte at Address A PROGRAM BASE 1'5 Mse's A+l T LSB's RESERVED 01 A TL/EE/6156-7 FIGURE 2-5. Module DeSCriptor Format B. Word at Address A r MSB's A+3 A+2 A+ 1 T The Link Table Address points to the Link Table for the currently running module. The Link Table provides the information needed for: LSB's 1. Sharing variables between modules. Such variables are accessed through the Link Table via the External addressing mode. A TL/EE/6156-6 C. Double Word at Address A FIGURE 2-4. Data Formats for NS32008 Memory 2. Transferring control from one module to another. This is done via the Call External Procedure (CXP) instruction. Two contiguous bytes are called a word (Figure 2-48). Except where noted (Section 2.2.1), the least significant byte of a word is stored at the lower address, and the most significant byte of the word is stored at the next higher address. In memory, the address of a word is the address of its least significant byte, and a word may start at any address. The format of a Link Table is given in Figure 2-6. A Link Table Entry for an external variable contains the 32-bit address of that variable. An entry for an external procedure contains two 16-bit fields: Module and Offset. The Module field contains the new MOD register contents for the module being entered. The Offset field is an unsigned number giving the position of the entry point relative to the new module's Program Base pOinter. Two contiguous words are called a double word (Figure 24C). Except where noted (Section 2.2.1), the least significant word of a double word is stored at the lowest address and the most significant word of the double word is stored at the address two greater. In memory, the address of a double word is the address of its least significant byte, and a double word may start at any address. For further details of the functions of these tables, see the Series 32000 Instruction Set Reference Manual. ENTRY 0 31 2.1.5 Dedicated Tables ABSOLUTE ADDRESS (VARIABLE) Two of the NS32008 dedicated registers (MOD and INTBASE) serve as pOinters to dedicated tables in memory. ABSOLUTE ADDRESS (VARIABLE) The INTBASE register pOints to the Interrupt Dispatch and Cascade tables. These are described in Section 3.7. OFFSET The MOD register contains a pointer into the Module Table, whose entries are called Module Descriptors. A Module Descriptor contains four pOinters, three of which are used by the NS32008. The MOD register contains the address of the Module Descriptor for the currently running module. It is automatically updated by the Call External Procedure instructions (CXP and CXPD). I MODULE (PROCEDURE) TLlEE/6156-B FIGURE 2-6. A Sample Link Table 2-432 z 2.0 Architectural Description U) Co) (Continued) N C) C) C» OPTIONAL EXTENSIONS __________________ ....__________________ ~A r - - ~ DISP DISP IMM IMM INDEX BYTE INDEX BYTE t t C) ~--------~A~------~ DISPZ DISPI DISPZIDISPI IMPLIED IMMEDIATE OPERAND(S) ....• BASIC INSTRUCTION GEN ADDR MODE A GEN ADDR MODE B , :, , ,, ,, ,, ,, OPCODE )J TLlEE/6156-10 FIGURE 2-7. General Instruction Format 2.2 INSTRUCTION SET 2.2.2 Addressing Modes 2.2.1 General Instruction Format The NS3200a CPU generally accesses an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." Addressing modes in the NS3200a are designed to optimally support high-level language accesses to variables. In nearly all cases, a variable access requires only one addressing mode, within the instruction that acts upon that variable. Extraneous data movement is therefore minimized. Figure 2-7 shows the general format of a Series 32000 instruction. The Basic Instruction is one to three bytes long and contains the opcode and up to two 5-bit General Addressing Mode ("Gen") fields. Following the Basic Instruction field is a set of optional extensions which may appear, depending on the instruction and the addressing modes selected. Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or a), and the Index Byte specifies which General Purpose register to use as the index, and which addressing mode calculation to perform before indexing. See Figure 2-8. GEN. ADDR. MODE NS3200a Addressing Modes fall into nine basic types: Register: The operand is available in one of the eight General Purpose Registers. In certain Slave Processor instructions. an auxiliary set of eight registers may be referenced instead. Register Relative: A General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the effective address of the operand in memory. Memory Space: Identical to Register Relative above, except that the register used is one of the dedicated registers PC, SP, SB or FP. These registers point to data areas generally needed by high-level languages. Memory Relative: A pOinter variable is found within the memory space pointed to by the SP, SB or FP register. A displacement is added to that pOinter to generate the Effective Address of the operand. REG. NO. TLlEE/6156-9 FIGURE 2-8. Index Byte Format Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected addressing modes. Each Displacement/Immediate field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded within the top bits of that field, as shown in Figure 2-9, with the remaining bits interpreted as a signed (two's complement) value. The size of an Immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most-significant byte first. Note that this is different from the memory representation of data (Section 2.1.4.). Some instructions require additional, "implied" immediates and/or displacements, apart from those associated with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition (Section 2.2.3). Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written. Absolute: The address of the operand is specified by a displacement field in the instruction. External: A pointer value is read from a specified entry of the current Link Table. To this pointer value is added a displacement, yielding the Effective Address of the operand. 2-433 tI o .- i r-----------------------------------------------------------------------------, 2.0 Architectural Description Byte Displacement: Range -64 to ~ z (Continued) + 63 eral Purpose Register by 1, 2, 4 or a and adding it into the total, yielding the final Effective Addrsss of the operand. Table 2-1 is a brief summary of the addressing modes. For a complete description of their actions, see the Instruction Set Reference Manual. SIGNED DISPLACEMENT Word Displacement: Range -8192 to + 8191 Double Word Displacement: Range (Entire Addressing Space) 7 I 1 I 1 2.2.3 Instruction Set Summary Table 2-2 presents a brief description of the NS3200a instruction set. The Format column refers to the Instruction Format tables (Appendix A). The Instruction column gives the instruction as coded in assembly language, and the Description column provides a short description of the function provided by that instruction. Further detailS of the exact operations performed by each instruction may be found in the Instruction Set Reference Manual. o Notations: i = Integer length suffix: B = Byte W = Word D = Double Word o I f = Floating-Point length suffix: F = Standard Floating L = Long Floating f.tI~ c,~\f. s~\,." gen = General operand. Any addressing mode can be specified. short = A 4-bit value encoded within the Basic Instruction. (See Appendix A for encodings.) oO~ '!>\Utl'" imm = Immediate operand. An a-bit value appended after any addressing extensions. disp = Displacement (addressing constant): a, 16,32 bits. All three lengths legal. reg = Any General Purpose Register: RO-R7. areg = Any Dedicated/Address Register: SP, SB, FP, MOD.. INTBASE, PSR, UPSR, (bottom eight PSR bits). creg = A Custom Slave Processor Register (implementation dependent). TL/EE/6156-13 FIGURE 2-9. Displacement Encodings Top of Stack: The currently-selected Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. Scaled Index: Although encoded as an addressing mode, Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any Gen- cond = Any condition code, encoded as a 4-bit field within the Basic Instruction. (See Appendix A for encodings.) 2-434 r--------------------------------------------------------------------------, 2.0 Architectural Description (Continued) MODE ASSEMBLER SYNTAX cp .... EFFECTIVE ADDRESS Register 00000 00001 00010 00011 00100 00101 00110 00111 Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 RO orFO R1 or F1 R20rF2 R30rF3 R4 or F4 R50rF5 R60rF6 R70rF7 None: Operand is in the specified register. Register Relative 01000 01001 01010 01011 01100 01101 01110 01111 Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(R1) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp + Register. disp2(disp1 (FP)) disp2(disp1 (SP)) disp2(disp1 (SB)) Disp2 + Pointer; Pointer found at address Disp1 + Register. "SP" is either SPO or SP1, as selected in PSR. Memory Relative Frame memory relative 10000 10001 Stack memory relative 10010 Static memory relative Reserved 10011 (Reserved for Future Use) Immediate 10100 Immediate value None: Operand is input from instruction queue. Absolute 10101 Absolute @disp Disp. External 10110 External EXT (disp1) + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Disp1. Top of Stack 10111 Top of stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. Memory Space 11000 11001 11010 11011 Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Scaled Index 11100 11101 11110 11111 Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] • +disp 2-435 ~ ~ C) C) TABLE 2·1 NS32008 Addressing Modes ENCODING Z EA (mode) + Rn. EA (mode) + 2 x Rn. EA (mode) + 4 x Rn. EA (mode) + 8 x Rn. 'Mode' and 'n' are contained within the Index Byte. EA (mode) denotes the effective address generated using mode. C) Q r--------------------------------------------------------------------------, .,.. ~ 2.0 Architectural Description (Continued) Q C'I :3 TABLE 2·2 NS32008 Instruction Set Summary Z MOVES Format 4 2 7 7 7 7 7 4 Operation MOVi MOVQi MOVMi MOVZBW MOVZiD MOVXBW MOVXiD ADDR Operands gen,gen short,gen gen,gen,disp gen,gen gen,gen gen,gen gen,gen gen,gen Description Move a value. Extend and move a signed 4·bit constant. Move multiple: disp bytes (1 to 16). Move with zero extension. Move with zero extension. Move with sign extension. Move with sign extension. Move effective address. Operation Operands Description ADDi ADDQi ADDCi SUBi SUBCi NEGi ABSi MULi QUOi REMi DIVi MODi MEli DEli gen,gen short,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Add. Add signed 4·bit constant. Add with carry. Subtract. Subtract with carry (borrow). Negate (2's complement). Take absolute value. Multiply. Divide, rounding toward zero. Remainder from QUO. Divide, rounding down. Remainder from DIV (Modulus). Multiply to extended integer. Divide extended integer. INTEGER ARITHMETIC Format 4 2 4 4 4 6 6 7 7 7 7 7 7 7 PACKED DECIMAL (BCD) ARITHMETIC Format 6 6 Operation Operands Description ADDPi SUBPi gen,gen gen,gen Add packed. Subtract packed. Operands gen,gen short,gen gen,gen,disp Description Compare. Compare to signed 4·bit constant. Compare multiple: disp bytes (1 to 16). Operands gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen Description Logical AND. Logical OR. Clear selected bits. Logical exclusive OR. Complement all bits. Boolean complement: LSB only. Save condition code (cond) as a Boolean variable of size i. INTEGER COMPARISON Format Operation 4 CMPi CMPQi 2 7 CMPMi LOGICAL AND BOOLEAN Format 4 4 4 4 6 6 2 Operation ANDi ORi BICi XORi COMi NOTi Scondi 2-436 2.0 Architectural Description z en w (Continued) N TABLE 2-2 Instruction Set Summary (Continued) SHIFTS Format 6 6 6 BITS Format 4 6 6 6 6 6 8 Operation LSHi ASHi ROTi Operands gen,gen gen,gen gen,gen Description Logical shift, left or right. Arithmetic shift, left or right. Rotate, left or right. Operation TSITi SSITi SBITli CSITi CSITIi ISITi FFSi Operands gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Description Test bit. Test and set bit. Test and set bit, interlocked. Test and clear bit. Test and clear bit, interlocked. Test and invert bit. Find first set bit. o oQ) ...... I o BIT FIELDS Sit fields are values in memory that are not aligned to byte boundaries. Examples are PACKED arrays and records used in Pascal. "Extract" instructions read and align a bit field. "Insert" instructions write a bit field from an aligned source. Format 8 8 7 7 8 ARRAYS Format 8 8 Operation EXTi INSi EXTSi INSSi CVTP Operands reg,gen,gen,disp reg,gen,gen,disp gen,gen,imm,imm gen,gen,imm,imm reg,gen,gen Description Extract bit field (array oriented). Insert bit field (array oriented). Extract bit field (short form). Insert bit field (short form). Convert to bit field pointer. Operation CHECKi INDEXi Operands reg,gen,gen reg,gen,gen Description Index bound check. Recursive indexing step for multiple-dimensional arrays. STRINGS String instructions assign specific functions to the General Purpose Registers: R4 - Comparison Value R3 - Translation Table Pointer R2 - String 2 Pointer R1 - String 1 Pointer RO - Limit Count Format Options on all string instructions are: B (Backward): Decrement string pointers after each step rather than incrementing. U (Until match): End instruction if String 1 entry matches R4. End instruction if String 1 entry does W (While match): not match R4. All string instructions end when RO decrements to zero. Operation MOVSi MOVST Operands options options Description Move String 1 to String 2. Move string, translating bytes. 5 CMPSi CMPST options options Compare String 1 to String 2. Compare, translating String 1 bytes. 5 SKPSi SKPST options options Skip over String 1 entries. Skip, translating bytes for Until/While. 5 2-437 PI C) ..... ~ r------------------------------------------------------------------------------------------, 2.0 Architectural Description (Continued) C) TABLE 2·2 Instruction Set Summary (Continued) N ~ Z JUMPS AND LINKAGE Format Operation 3 JUMP 0 BR 0 Bcond CASEi 3 2 ACBi JSR 3 BSR CXP 3 CXPD SVC FLAG BPT ENTER EXIT RET RXP RETT RETI Operands gen disp disp gen short,gen,disp gen disp disp gen [reg list] ,disp [reg list] disp disp disp Description Jump. Branch (PC Relative). Conditional branch. Multiway branch. Add 4-bit constant and branch if non-zero. Jump to subroutine. Branch to subroutine. Call external procedure. Call external procedure using descriptor. Supervisor call. Flag trap. Breakpoint trap. Save registers and allocate stack frame. (Enter Procedure) Restore registers and reclaim stack frame. (Exit Procedure) Return from subroutine. Return from external procedure call. Return from trap. (Privileged) Return from interrupt. (Privileged) CPU REGISTER MANIPULATION Format Operation 1 SAVE RESTORE 2 LPRi 2 SPRi 3 ADJSPi BISPSRi 3 3 BICPSRi 5 SETCFG Operands [reg list! [reg list! areg,gen areg,gen gen gen gen [option list] Description Save general purpose registers. Restore general purpose registers. Load dedicated register. (Privileged if PSR or INTBASE) Store dedicated register. (Privileged if PSR or INTBASE) Adjust stack pointer. Set selected bits in PSR. (Privileged if not Byte length) Clear selected bits in PSR. (Privileged if not Byte length) Set configuration register. (Privileged) FLOATING POINT Format Operation 11 MOVf 9 MOVLF 9 MOVFL 9 MOVif 9 ROUNDfi 9 TRUNCfi 9 FLOORfi 11 ADDf 11 SUBf MULf 11 11 DIVf 11 CMPf 11 NEGf 11 ABSf Operands gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen gen,gen Description Move a floating point value. Move and shorten a long value to standard. Move and lengthen a standard value to long. Convert any integer to standard or long floating. Convert to integer by rounding. Convert to integer by truncating, toward zero. Convert to largest integer less than or equal to value. Add. Subtract. Multiply. Divide. Compare. Negate. Take absolute value. gen gen Load FSR. Store FSR. Operands Description No operation. Wait for interrupt. Diagnose. Single-byte "Branch to Self" for hardware breakpointing. Not for use in programming. 9 9 LFSR SFSR MISCELLANEOUS Format Operation 1 NOP WAIT DIA 2-438 z 2.0 Architectural Description (J) w I\) o oCC) (Continued) TABLE 2-2 Instruction Set Summary (Continued) CUSTOM SLAVE Format • ...... o Operation Operands Description 15.5 15.5 15.5 15.5 CCALOc CCAL1c CCAL2c CCAL3c gen,gen gen,gen gen,gen gen,gen Custom calculate. 15.5 15.5 15.5 15.5 CMOVOc CMOV1c CMOV2c CMOV3c gen,gen gen,gen gen,gen gen,gen Custom move. 15.5 15.5 CCMPOc CCMP1c gen,gen gen,gen Custom compare. 15.1 15.1 15.1 15.1 CCVOci CCV1ci CCV2ci CCV3ic gen,gen gen,gen gen,gen gen,gen Custom convert. 15.1 15.1 CCV4DQ CCV5QD gen,gen gen,gen 15.1 15.1 LCSR SCSR gen gen Load custom status register. Store custom status register. 15.0 15.0 CATSTO CATST1 gen gen Custom address/test. (Privileged) (Privileged) 15.0 15.0 LCR SCR creg,gen creg,gen Load custom register. (Privileged) Store custom register. (Privileged) 3.0 Functional Description 3.1 POWER AND GROUNDING 3.2 CLOCKING The NS32008 requires a single 5V power supply, applied on pin 48 (Vee). The NS32008 inputs clocking Signals from the NS32201 Timing Control Unit (TCU), which presents two non-overlapping phases of a single clock frequency. These phases are called PHI1 (pin 26) and PHI2 (pin 27). Their relationship to each other is shown in Figure 3-2. Grounding connections are made on two pins. Logic Ground (GNDL, pin 24) is the common pin for on-chip logic, and Buffer Ground (GNDB, pin 25) is the common pin for the output drivers. For optimal noise immunity, it is recommended that GNDL be attached through a single conductor directly to GNDB, and that all other grounding connections be made only to GNDB, as shown below (Figure 3-1). Each rising edge of PHil defines a transition in the timing state ("T-State") of the CPU. One T-State represents the execution of one microinstruction within the CPU and/or one step of an external bus transfer. See Section 4 for complete specifications of PHI1 and PHI2. In addition to Vee and Ground, the NS32008 CPU uses an internally-generated negative voltage. It is necessary to filter this voltage externally by attaching a pair of capacitors (Figure 3-1) from the BBG pin to ground. Recommended values for these are: PHil Cl: 1 ".F, Tantalum. C2: 1000 pF, low inductance. This should be either a disc or monolithic ceramic capacitor. ~ 1 i+ PHI2 5V vcc~ NS32008 CPU TL/EE/6156-15 FIGURE 3-2. Clock Timing Relationships As the TCU presents signals with very fast transitions, it is recommended that the conductors carrying PHI1 and PHI2 be kept as short as possible, and that they not be TL/EE/6156-14 FIGURE 3-1. Recommended Supply Connections 2-439 C) r---------------------------------------------------------------------------------~ ..... Ut C) C) C\I CO) U) z 3.0 Functional Description (Continued) connected anywhere except from the TCU to the CPU. A TTL clock signal (CTTL) is provided by the TCU for all other clocking. PHll~JLJJ- I· RST-------.::~ ............, 3.3 RESETTING The RST pin serves as a reset for on·chip logic. The CPU may be reset at any time by pulling the RST pin low for at least 64 clock cycles. Upon detecting a reset, the CPU terminates instruction processing, resets its internal logic, and clears the Program Counter (PC) and Processor Status Register (PSR) to all zeroes. TL/EE/6156-17 3.4 BUS CYCLES The NS32008 will perform a bus cycle for one of the following reasons: 1. To write or read data to or from memory or a peripheral interface device. Peripheral input and output are memorymapped in the Series 32000 family. 2. To fetch instructions into the 4-byte instruction queue. This happens whenever the bus would otherwise be idle and the queue is not already full. 3. To acknowledge an interrupt and allow external circuitry to provide a vector number, or to acknowledge completion of an interrupt service routine. 4. To transfer information to or from a Slave Processor. 4.SV Vcc J)Jl -+-__-' C;CLES FIGURE 3-4. General Reset Timing On application of power, RST must be held low for at least 50 ",s after Vee is stable. This is to ensure that all on-chip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain active for not less than 64 clock cycles. The rising edge must occur while PHI1 is high. See Figures 3-3 and 8-4. PHI , _ _ I 64cLOCK-1 In terms of bus timing, cases 1 through 3 above are identical. For timing specifications, see Section 4. The only external difference between them is the 4-bit code placed on the Bus Status pins (STO-ST3). Slave Processor cycles differ in that separate control signals are applied and transfers are performed 16 bits at a time (Section 3.4.6). I---~~:~ Figure 8-6 shows typical bus connections for the NS32008. The address, data, and control signals referenced in the following discussion are shown in this figure. The sequence of events in a non-Slave Processor bus cycle is shown in Figure 8-lIor a Read cycle and Figure 8-8 for a Write cycle. The cases shown assume that the selected memory or interface device is capable of communicating with the CPU at full speed. If it is not, then cycle extension may be requested through the RDY line (Section 3.4.1). TL/EE/6156-16 FIGURE 3-3. Power-On Reset Requirements The NS32201 Timing Contol Unit (TCU) provides circuitry to meet the Reset requirements of the NS32008 CPU. Rgure 8·5 shows the recommended connections. vcc HU220' NS32008 CPU TCU r------------, I I I ,,--+1~;---,-__+--+_'~'----_l RESET' " I RSTI RSTO 1 - - - - _ - - - - - 1 iiSi !'---- __________ .JI EXTERNAL RESET (OPTIONAL) RESET SWITCH (OPTIONAL) SYSTEM RESET TL/EE/6156-16 FIGURE 3-5. Recommended Reset Connections 2-440 z en Co) 3.0 Functional Description (Continued) A full-speed bus cycle is performed in four cycles of the PHI1 clock signal, labeled T1 through T4. Clock cycles not associated with a bus cycle are designated Ti (for "Idle"). During T1, the CPU applies an address on pins ADO-AD15 and A16-A2S. It also provides a low-going pulse on the ADS pin, which serves the dual purpose of informing external circuitry that a bus cycle is starting and of providing control to an external latch for demultiplexing address bits 0-7 from the ADO-AD7 pins. See Figure 3-6. Also during this time the status signal DDIN, indicating the direction of the transfer, becomes valid. During T2, the CPU switches the Data Bus, ADO-AD7, to either accept or present data. Note that the signals AD8AD15 and AD16-AD2S remain valid, and need not be latched. It also starts the Data Strobe (DS), signaling the beginning of the data transfer. Associated signals from the NSS2201 Timing Control Unit are also activated at this time: RD (Read Strobe) or WR (Write Strobe), TSO (Timing State Output, indicating that T2 has been reached) and DBE (Data Buffer Enable). N The TS state provides for access time requirements, and it occurs at least once in a bus cycle. At the end of T2 or TS, on the falling edge of the PHI2 clock, the RDY (Ready) line is sampled to determine whether the bus cycle will be extended (Section S.4.1). If the CPU is performing a Read cycle, the Data Bus (ADOAD7) is sampled at the falling edge of PHI2 of the last TS state. See Timing Specification, Section 4. Data must, however, be held at least until the beginning of T4. DS and RD are guaranteed not to go inactive before this point, so the rising edge of either of them may safely be used to disable the device providing the input data. The T4 state finishes the bus cycle. At the beginning of T4, the DS, RD or WR, and TSO signals go inactive, and at the rising edge of PHI2, DBE goes inactive, having provided for necessary data hold times. Data during Write cycles remains valid from the CPU throughout T4. Note that the Bus Status lines (STO-STS) change at the beginning of T4, anticipating the following bus cycle (if any). ODIN DATA BUFFER ADO-AD7 I' ,--- NS32008 ADs I OCTAL LATCH AO-A23 ADB-ADI5 A1B-A23 PHil r PHil PHI2 1 PHI2 os I os ADS ODIN DBE AD RD NS32201 WR WR TSO TSO TL/EE/6156-19 FIGURE 3-6. Bus Connections 2-441 C C ~ ....c o .... ~~ r-----------------------------------------------------------------------------~ 3.0 Functional Description (Continued) I z PHI 1 PHI 2 ADI-AD16 A16-A23 ADo-AD7 ADs I N83ZOO8 CPU 8USSIGNALS T1 12 T3 T4 I T10RTI I [ [ [ [ [ 5T0-5T3 [ iiiiiii [ Os [ ROY T40RTi [ AD [ 5BE[ TLlEE/6156-20 FIGURE 3·7_ Read Cycle Timing 2-442 z ~ N 3.0 Functional Description (Continued) o . o NS32008 CPU BUS SIGNALS co ...... o NU220' TCU BUS SIGNALS Dai[ TL/EE/6156-21 FIGURE 3·8. Write Cycle Timing 2-443 C) ..- r------------------------------------------------------------------------------------------, ~ 3.0 Functional Description C"oI 3.4.1 Cycle Extension en To allow sufficient strobe widths and access times for any speed of memory or peripheral device, the NS32008 pro· vides for extension of a bus cycle. Any type of bus cycle except a Slave Processor cycle can be extended. In Figures 3-7 and 3-8, note that during T3 all bus control signals from the CPU and TCU are flat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the RDY (Ready) pin. C) C) CO) z (Continued) The RDY pin is driven by the NS32201 Timing Control Unit, which applies WAIT States to the CPU as requested on three sets of pins: 1. CWAIT (Continuous WAIT), which holds the CPU in WAIT States until removed. 2. WAIT1, WAIT2, WAIT4, WAIT8 (collectively, WAITn), which may be given a 4-bit binary value requesting a specific number of WAIT States from 0 to 15. 3. PER (Peripheral), which inserts five additional WAIT states and causes the TCU to reshape the RD and WR strobes. This provides the setup and hold times required by most MOS peripheral interface devices. Combinations of these various WAIT requests are both legal and useful. For details of their use, see the NS32201 Data Sheet. Rgure 3-10 illustrates a typical Read cycle, with two WAIT states requested through the TCU WAITn pins. At the end of T2 on the falling edge of PHI2, the RDY line is sampled by the CPU. If RDY is high, the next T-states will be T3 and T4, ending the bus cycle. If RDY is low, then another T3 state will be inserted after the next T-state and the RDY line will again be sampled on the falling edge of PHI2. Each additional T3 state after the first is referred to as a "WAIT STATE". See Figure 3-9. Tl T2 T3 I (W~T) I T4 PHil PHI 2 RDY TLlEE/6156-22 FIGURE 3-9. ROY Pin Timing 3.4.2 Bus Status The NS32008 CPU presents four bits of Bus Status information on pins STO-ST3. The various combinations on these pins indicate why the CPU is performing a bus cycle, or, if it is idle on the bus, why it is idle. Referring to Figures 3-7 and 3-8, note that Bus Status leads the corresponding Bus Cycle, going valid one clock cycle before T1 , and changing to the next state at T4. This allows the system designer to fully decode the bus status and, if desired, latch the decoded signals before ADS initiates the Bus Cycle. address FFFE0016, expecting a vector number to be provided from the Master NS32202 Interrupt Control Unit. If the vectoring mode selected by the last SETCFG instruction was Non-Vectored, then the CPU will ignore the value it has read and will use a default vector instead, having assumed that no NS32202 is present. See Section 3.4.5. 0101 The Bus Status pins are interpreted as a 4-bit value, with STO the least significant bit. Their values decode as follows: 0000 The bus is idle because the CPU does not need to perform a bus access. 0001 The bus is idle because the CPU is executing the WAIT instruction. (Reserved for future use.) 0010 0011 The bus is idle because the CPU is waiting for a Slave Processor to complete an instruction. 0100 Interrupt Acknowledge, Master. The CPU is performing a Read cycle. To acknowledge receipt of a Non-Maskable Interrupt (on NMI), it will read from address FFFF0016, but will ignore any data provided. To acknowledge receipt of a Maskable Interrupt (on IND, it will read from 0110 0111 1000 2-444 Interrupt Acknowledge, Cascaded. The CPU is reading a vector number from a Cascaded NS32202 Interrupt Control Unit. The address provided is the address of the NS32202 Hardware Vector register. See Section 3.4.5. End of Interrupt, Master. The CPU is performing a Read cycle to indicate that it is executing a Return from Interrupt (RETI) instruction. See Section 3.4.5. End of Interrupt, Cascaded. The CPU is reading from a Cascaded Interrupt Control Unit to indicate that it is returning (through RETI) from an interrupt service routine requested by that unit. See Section 3.4.5. Sequential Instruction Fetch. The CPU is reading the next sequential word from the instruction stream into the Instruction Queue. It will do so whenever the bus would otherwise be idle and the queue is not already full. 3.0 Functional Description z en w (Continued) N Q Q Q) • ..... Q PREV.CYCLE IT40RTi PHil [ PHI2 [ NS32DD8 CPU BUS SIGNALS I T1 I T2 13 I (W~n I (W~T) I NEXT CYCLE T4 1T10RTi - J1Ul Ul J1JlLf1~UlADDRESS VALID VALID )--0 ~8Im ~A~--~~ ~ V ADS [ NEXT ADD R ,... 'iJ ~~ IX STAlUSVALID NEXTSlATU S I~ ~~ ~ - ~ R ~r-- STO-S13 [ I nJLJL Lfl--fL ""L!l-' ~ ~ff~ ~ ADo-AD7 [ I f- 1\ / NS32201 TCU CYCLE EXTENSION SIGNALS ~ ~ CWAiT[ %; ~ ~ PER [ ~~ ~ '0 ~ o/a 0/& ~ Wi I'W ::'@ ~ ~ ~ 0/& t% I WAITn [ ~ 0/& ~ Gw ~ ~~~~ I ROY [ (TCU TO CPU ) NS32201 lCU BUS SIGNALS - V - V II - ~ - II V 1\ TL/EE/6156-23 Note: Arrows on CWAIT, PER, WAITn indicale pOinls al which the TCU samples. Arrows on ADO-AD7 and ROY indicate points at which the CPU samples. FIGURE 3-10. Extended Cycle Example 2-445 3.0 Functional Description (Continued) 1001 Non-Sequential Instruction Fetch. 1010 The CPU is performing the first fetch of instruction code after the Instruction Queue is purged. This will occur as a result of any jump or branch, or any interrupt or trap, or execution of certain instructions. Data Transfer. 3.4.3.2 Bit Field Accesses An access to a Bit Field in memory always generates a Double Word transfer starting at the address containing the least-significant bit of the field. The Double Word is read by an Exact instruction; an Insert instruction reads a Double Word, modifies it, and rewrites it. The CPU is reading or writing an operand of an instruction. 1011 1100 1101 1110 1111 3.4.3.3 Extending Multiply Accesses The extending multiply instruction (MEl) will return a result which is twice the size in bytes of the operand that it reads. If the multiplicand is in memory, the most-significant half of the result is written first (at the higher address), then the least-significant half. Read RMW Operand. The CPU is reading an operand which will subsequently be modified and rewritten. Read for Effective Address Calculation. The CPU is reading information from memory in order to determine the Effective Address of an operand. This will occur whenever an instruction uses the Memory Relative or External addressing mode. 3.4.4 Instruction Fetches Instructions for the NS3200B CPU are "prefetched"; that is, they are input before being needed into the next available entry of the 4-byte Instruction Queue. The CPU performs two types of Instruction Fetch cycles: Sequential and NonSequential. These can be distinguished from each other by their differing status combinations on pins STO-ST3 (Section 3.4.2). A Sequential Fetch will be performed by the CPU whenever the Data Bus would otherwise be idle and the Instruction Queue is not currently full. A Non-Sequential Fetch occurs as a result of any break in the normally sequential flow of a program. Any jump or branch instruction, a trap or an interrupt will cause the next Instruction Fetch cycle to be Non-Sequential. In addition, certain instructions flush the Instruction Queue, causing the next instruction fetch to display Non-Sequential status. Only the first bus cycle after a break displays Non-Sequential status. Transfer Slave Processor Operand. The CPU is either transferring an instruction operand to or from a Slave Processor, or it is issuing the Operation Word of a Slave Processor instruction. See Section 3.B.1. Read Slave Processor Status. The CPU is reading a status word from a Slave Processor. This occurs after the Slave Processor has signaled completion of an instruction. The transferred word tells the CPU whether a trap should be taken, and in some instructions, it presents new values for the CPU Processor Status Register bits N, Z, L or F. See Section 3.B.1. Broadcast Slave 10. The CPU is initiating the execution of a Slave Processor instruction. The 10 Byte (first byte of the instruction) is sent to all Slave Processors, one of which will recognize it. From this point, the CPU is communicating with only one Slave Processor. See Section 3.B.1. 3.4.5 Interrupt Control Cycles Activating the INT or NMI pin on the CPU will initiate one or more bus cycles whose purpose is interrupt control rather than the transfer of instructions or data. Execution of the Return from Interrupt instruction (RETI) will also cause Interrupt Control bus cycles. These differ from instruction or data transfers only in the status presented on pins STO-ST3. All Interrupt Control cycles are Read cycles. Table 3-1 summarizes NS3200B interrupt sequences. 3.4.3 Data Access Sequences The NS3200B accesses all memory and peripheral devices in sequences of single-byte transfers. Transfer of values larger than bytes is performed from least-significant byte (lowest address) to most-significant byte. This section describes only the Interrupt Control sequences associated with each interrupt and with the return from its service routine. For full details of the NS3200B interrupt structure, see Section 3.7. 3.4.3.1 Bit Accesses The bit instructions access the byte containing the designated bit. The Test and Set Bit instruction (SBID, for example, reads a byte, alters it, and rewrites it, having changed the contents of one bit. 2-446 r--------------------------------------------------------------------------, 3.0 Functional Description ~ (Continued) ~ o o CO TABLE 3·1 Interrupt Sequences Cycle Status ..... I o Bus Address A. Nonmaskable Interrupt Control Sequences. Interrupt Acknowledge 1 0100 FFFF0016 Interrupt Return None: Performed through Return from Trap (RETT) instruction. o Don't Care B. Nonvectored Interrupt Control Sequences. Interrupt Acknowledge 1 0100 FFFE0016 Interrupt Return None. Performed through return from Trap (RETT) instruction. o Don't Care C. Vectored Interrupt Sequences: Noncascaded. Interrupt Acknowledge 1 0100 Interrupt Return 0110 1 FFFE0016 o Vector: Range 0-127 FFFE0016 o Vector: Same as in Previous Interrupt Acknowledge Cycle FFFE0016 o Cascade Index: Range -16to-1 o Vector: Range 0-255 o Cascade Index: Same as in Previous Interrupt Acknowledge Cycle o Don't Care D. Vectored Interrupt Sequences: Cascaded. Interrupt Acknowledge 1 0100 Z (The CPU here uses the Cascade Index to find the Cascade Address.) 0101 Cascade 2 Address Interrupt Return 0110 FFFE0016 1 (The CPU here uses the Cascade Index to find the Cascade Address.) 0111 Cascade 2 Address 2·447 o ..- ~ 3.0 Functional Description ~ 3.4.6 Slave Processor Communication ~ Z (Continued) AD(O·IS) The SPC pin is used as the data strobe for Slave Processor transfers. In a Slave Processor bus cycle, data is transferred 16 bits at a time on the Data Bus (ADO-AD15) and the status lines STO-ST3 are monitored by each Slave Processor in order to determine the type of transfer being performed. Figure 3-11 shows typical Slave Processor connections. SPC is bidirectional, but is driven by the CPU during all Slave Processor bus cycles. See Section 3.8 for full protocol sequences. AT/SPC " v O(o-IS) SPC SLAVE PROCESSOR N532032 CPU STO-5T3 5TO-5T3 TL/EE/6156-24 FIGURE 3-11. Slave Processor Connections PREVo CYCLE PHI1 [ PHI2 [ 5PC [ I T40rTi NEXT CYCLE T1 T4 T10RTi I ADO-AD7 [ 5TO-5T3 [ ADS [ TLlEE/6156-25 Nole 1. CPU samples Data Bus here. Nole 2. DBE and all o1her NS32201 TCU bus signals remain inactive be· cause no ADS pulse is received from the CPU. FIGURE 3-12. CPU Read from Slave Processor 2-448 .--------------------------------------------------------------------,z tn 3.0 Functional Description (Continued) c.,) I\) sequence ("protocol") established by the instruction under execution; but the CPU indicates the direction on the DDIN pin for hardware debugging purposes. 3.4.6.1 Slave Processor Bus Cycles A Slave Processor bus cycle always takes exactly two clock cycles, labeled T1 and T4 (see Figures 3-12 and 3-13). During a Read cycle SPC is active from the beginning of T1 to the beginning of T4, and the data is sampled at the end of T1. The Cycle Status pins lead the cycle by one clock period, and are sampled at the leading edge of SPC. During a Write cycle, the CPU applies data and activates SPC at T1 , removing SPC at T 4. The Slave Processor latches status on the leading edge of SPC and latches data on the trailing edge. 3.4.6.2 Slave Operand Transfer Sequences A Slave Processor operand is transferred in one or more Slave bus cycles. A Byte operand is transferred on the least-significant byte of the Data Bus (ADO-AD7), and a Word operand is transferred on the entire 16-bit bus (ADOAD15). A Double Word is transferred in a consecutive pair of bus cycles, least-significant word first. A Quad Word is transferred in two pairs of Slave cycles, with other bus cycles possibly occurring between them. The word order is from least-significant to most-significant word. Since the CPU does not pulse the Address Strobe (ADS), no bus signals are generated by the NS32201 Timing Control Unit. The direction of a transfer is determined by the PREV.CYCLE I PHil [ sPc [ ADO-AD7 [ T40RTi NEXTCVCLE T1 T4 T1 OR Ti I STD.STI [ ADS [ _(2)[ DBE TL/EE/6156-26 Note 1. Slave Processor samples Data Bus here. Note 2. DBE, being provided by the NS322Dl TCU, remains Inactive due to the fact that no pulse is presented on ADS, TCU signals RD, WR and TSO also remain inactive. FIGURE 3-13. CPU Write to Slave Processor 2-449 o oOC) . ..... o o ..... I CCI 3.0 Functional Description C'I 3.5 BUS ACCESS CONTROL The NS3200B CPU has the capability of relinquishing its access to the bus request from a DMA device or another CPU. This capability is implemented on the HOLD (Hold Request) and HLDA (Hold Acknowledge) pins. By asserting HOLD low, an external device requests access to the bus. On receipt of HLDA from the CPU, the device may perform bus cycles, as the CPU at this point has set the ADO-AD15, A16-A23, ADS and DDIN pins to the TRI-STATEI!> condition. To return control of the bus to the CPU, the device sets HOLD inactive, and the CPU acknowledges return of the bus by setting HLDA inactive. o o C') U) Z I Ti I (Continued) Ti How quickly the CPU releases the bus depends on.whether it is idle on the bus at the time the HOLD request IS made, as the CPU must always complete the current bus cycle. Figure 3-14 shows the timing sequence when the CPU is idle. In this case, the CPU grants the bus during the immediately following clock cycle. Figure 3-15 shows the sequence if the CPU is using the bus at the time that the HOLD request is made. If the request is made during or before the clock cycle shown (two clock cycles before T4), the CPU will release the bus during the clock cycle following T4. If the request occurs closer to T4, the CPU may alre~dy.have decided to initiate another bus cycle. In that case, It will not grant the bus until after the next T4 state. Note that this situation will also occur if the CPU is idle on the bus, but has initiated a bus cycle internally. I··· I TI TI TI TIORT1 I PHll[JULf PHI2 [ HOLD [ HCDA[ AFFECTED SIGNALS ------- It------ ------- ADS [ ~----- ----- ---- ~r---- ----- DFN[ ADI-AD15 [ A16·A23 :... : VIN:>: Vee -20 30 p.A Active Supply Current IOUT=O, TA=25'C 300 mA Icc V 204 180 4.4 SWITCHING CHARACTERISTICS 4.4.1 Definitions All the timing specifications given in this section refer to 2.0V on the rising or falling edges of the clock phases PHI1 and PHI2 and 0.8V or 2.0V on all other signals as illustrated in Figures 4·2 and 4·3, unless specifically stated otherwise. PHln SIG! SIG2 [3( [[ I Abbreviations: L.E.-Ieading edge T.E.-trailing edge R.E.--fising edge F.E.-falling edge PHln ~ tSIGlI ISIG2h SIG! O.BV O.4SV 2.4V t.'~ SIG2 [ [ [ £ 2.4V O.BV \ tSIG!1 O.4SV 2.4V 2.0V / tSlG2h O.4SV TLlEEI6!56-39 TLlEEI6!56-3B FIGURE 4-3. Timing Specification Standard (Signal Valid Before Edge) FIGURE 4·2. Timing Specification Standard (Signal Valid After Edge) 2·463 o o C» .....• o 4.0 Device Specifications (Continued) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32008·10 Maximum times assume capacitive loading of 100 pF Name Figure Description Reference/Conditions NS32008·10 Min tAlv 4·4 Address Bits 0-7 Valid after R.E., PHI1 T1 tAlh 4·4 Address Bits 0-7 Hold after R.E., PHI1 T2 tov 4·4 Data Valid (Write Cycle) after R.E., PHI1 T2 Units Max 50 ns 50 ns 5 ns tOh 4·4 Data Hold (Write Cycle) after R.E., PHI1 next T1 or Ti tAHv 4·4 Address Bits 8-23 Valid after R.E., PHI1 T1 tAHh 4·4 Address Bits 8-23 Hold after R.E., PHI1 next T1 or Ti 0 ns tALADSs 4·5 Address Bits 0-7 Set Up before ADS T.E. 25 ns tAHADSs 4·5 Address Bits 8-23 Set Up before ADS T.E. 25 ns tALAOSh 4·10 Address Bits 0-7 Hold after ADS T.E. 15 tAli 4·5 Address Bits 0-7 Floating after R.E., PHI1 T2 25 ns IsTv 4·4 Status (STO-ST3) Valid after R.E., PHI1 T4 (before T1, see note) 45 ns IsTh 4·4 Status (STO-ST3) Hold after R.E., PHI1 T4 (after T1) tODINv 4·5 ODIN Signal Valid after R.E., PHI1 T1 tDDINh 4·5 ODIN Signal Hold after R.E., PHI1 next T1 or Ti tADSa 4·4 ADS Signal Active (Low) after R.E., PHI1 T1 35 ns tADSia 4·4 ADS Signal Inactive after R.E., PHI2 T1 40 ns tADSw 4·4 ADS Pulse Width at 0.8V (both edges) tOSa 4·4 OS Signal Active (Low) after R.E., PHI1 T2 40 tOSia 4·4 OS Signal Inactive after R.E., PHI1 T4 40 ns tAU 4·6 ADO-AD7 Floating (Caused by HOLD) after R.E., PHI1 T1 25 ns tAH! 4·6 A8-A23 Floating (Caused by HOLD) after R.E., PHI1 T1 25 ns tAOS! 4·6 ADS Floating (Caused by HOLD) after R.E., PHI1 Ti 50 ns tODIN! 4·6 ODIN Floating (Caused by HOLD) after R.E., PHI1 Ti 50 ns tHlOAa 4·6 HLDA Signal Active (Low) after R.E., PHI1 Ti 50 ns tHLDAia 4·8 HLDA Signal Inactive after R.E., PHI1 Ti 50 ns tADSr 4·8 ADS Signal Returns from Floating (Caused by HOLD) after R.E., PHI1 Ti 55 ns tDOINr 4·8 ODIN Signal Returns from Floating (Caused by HOLD) after R.E., PHI1 Ti 55 ns tSPCa 4·13 SPC Output Active (Low) after R.E., PHI1 T1 35 ns tSPCia 4·13 SPC Output Inactive after R.E., PHI1 T4 35 ns tSPCn! 4·15 SPC Output Nonforcing after R.E., PHI2 T4 30 ns tDv 4·11 Data Valid (Slave Processor Write) after R.E., PHI1 T1 50 tOh 4·11 Data Hold (Slave Processor Write) after R.E., PHI1 next T1 or Ti 0 tpFSw 4·15 PFS Pulse Width at 0.8V (both edges) 50 tPFSa 4·15 PFS Pulse Active (Low) after R.E., PHI2 40 ns tPFSia 4·15 PFS Pulse Inactive after R.E., PHI2 40 ns 2·464 0 ns 50 ns ns 0 ns 50 0 ns ns 30 ns ns ns ns ns z 4.0 Device Specifications en c.:I (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS3200B-l0 (Continued) Name Figure Referencel Conditions Description NS3200B-l0 Min Units Max tllOs 4-17 ILO Signal Setup before RE., PHil Tl of first interlocked read cycle 50 ns tllOh 4-18 ILO Signal Hold after RE., PHil T3 of last interlocked write cycle 10 ns tllOa 4-19 ILO Signal Active (Low) after R.E., PHil 40 ns tllOia 4-19 ILO Signal Inactive after R.E., PHil 40 ns tusv 4-20 U/S Signal Valid after RE., PHil T4 45 tUSh 4-20 U/S Signal Hold after R.E., PHil Tl 8 ns tNSPF 4-16b Nonsequential Fetch to Next PFS Clock Cycle after R.E., PHil Tl 4 tcp tPFNS 4-16a PFS Clock Cycle to Next NonSequential Fetch before RE., PHil Tl 4 tcp ~ ~ • ..... o ns Last Operand Transfer of an before RE., PHil Tl 0 tcp Instruction to Next PFS clock of first bus Cycle cycle of transfer Note: Every memory cycle starts with T4, during which Cycle Status is applied. lithe CPU was idling, the sequence will be:"...Ti, T4, n ...".11 the CPU was not idling, the sequence will be:"...T4, Tl ...". tLXPF 4-25 4.4.2.2 Input Signal Requirements: NS3200B-l0 Name Figure Description Referencel Conditions Min NS3200B-l0 Units Max tpWR 4-21 Power Stable to RST R.E. after Vcc reaches 4.5V 50 IJ-s tOls 4-5 Data in Setup (Read Cycle) before F.E., PHI2 T3 15 ns tOlh 4-5 Data in Hold (Read Cycle) after RE., PHil T4 3 ns tHlOa 4-6 HOLD Active (Low) Setup Time (See Note) before F.E., PHI2 TXl 25 ns tHlOia 4-8 HOLD Inactive Setup Time before F.E., PHI2 Ti 25 ns tHlOh 4-6 HOLD Hold Time after RE., PHil TX2 0 ns tROYs 4-9,4-10 ROY Setup Time before F.E., PHI2 T20rT3 25 ns tROYh 4-9,4-10 ROY Hold Time after F.E., PHil T3 5 ns tRSTs 4-21,4-22 RST Setup Time before F.E., PHil 15 ns tRSTw 4-22 RST Pulse Width at 0.8V (both edges) 64 tep tiNTs 4-23 INT Setup Time before T.E., PHil 20 ns tNMlw 4·28 NMI Pulse Width at 0.8V (both edges) 70 ns tOls 4-12 Data Setup (Slave Read Cycle) before F.E., PHI2 Tl 15 ns tOlh 4·12 Data Hold (Slave Read Cycle) after RE., PHil T4 3 ns tSPCd 4-13 SPC Pulse Delay from Slave after RE., PHI2 T4 25 ns tspcs 4-13 SPC Setup Time Before F.E., PHil 30 ns 4-13 SPC Pulse Width from Slave at 0.8V (both edges) 20 ns tspCw Processor (Async. Input) NOTE: This setup time is necessary to ensure prompt acknowledgement via HLDA and the ensuing floating of CPU off the buses. Note that the time Irom the receipt 01 the HOLD signal until the CPU Iloats is a function of the time ROTIi signal goes low, and the state of the ROY input. 2-465 fII 4.0 Device Specifications (Continued) 4.4.2.3 Clocking Requirements: NS32008-10 Name Figure Referencel Conditions Description NS32008-10 Unit Min Max 100 250 ns tcp 4·14 Clock Period R.E., PHI1, PHI2 to next R.E., PHI1, PHI2 teLw 4-14 PHI1, PHI2 Pulse Width at 2.0V on PHI1, PHI2 (both edges) 0.5 tep -10n8 tCLh 4-14 PHI1, PHI2 High Time at Vec - 0.9Von PHI1, PHI2 (both edges) 0.5tep -15 ns tCLI 4-14 PHI1, PHI2 Low Time at O.BV on PHI1, PHI2 0.5tep -5n8 tnOVL(1,2) 4-14 Non-Overlap Time O.BV on F.E., PHI1, PHI2 to O.BV on R.E., PHI1, PHI2 -2 5 ns Non-OVerlap Asymmetry at O.BVon PHI1, PHI2 -4 4 ns at 2.0Von PHI1, PHI2 -5 5 ns tnOVLas (tnOVL(1) - tnOVL(2») tCLwas PHI1, PHI2 Asymmetry (tCLw(1) - teLw(2») 2-466 4.0 Device Specifications (Continued) 4.4.3 Timing Diagrams T2 TI T3 T4 PHil [ PHI2 [ ADO-AD7 [ AD8-ADI5 [ A16-23 (HIGH) [....,I-___ os[ STD-3 --i-,-_V_A_L_ID_+_ _ _ ='+'~ ~-N-E-X-T_- -!-----l:~IDSa ROY [ TL/EE/6156-40 FIGURE 4·4. Write Cycle Tl T2 T3 T4 PHil [ PHI2 [ ADO-AD7 [ ADB-AD15 [ AI6-23 • VALID ADS [ ODIN [ STo-3 [ VALID --lIDDINh NEXTCY LE STATUS os[ ROY [ (HI H) TL/EE/615B-41 FIGURE 4·5. Read Cycle 2·467 ... C) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , !: 4.0 Device Specifications (Continued) ~ en TXI z TX2 TI Ti T4 Ti PHil [ PHI2 [ HOLD [ HLiiA[ 'ADS! IODIN! ~[ ADO-AD7 [ ADB-ADIS [ AI6-23 -- ----(FLOATINGj---- L____ _ -t-----t-----t-----+-""\l'~~ _________ (FLOATING) I -t-----t-----+-----+-,I ~~H~ __ ' ____ I ---1------(FLO~TING) TLlEE/6156-42 Note: Whenever the CPU is not Idling (not in Ti). the HOLD request (HOLD low) must be active tHLDa before the failing edge of PHI2 of the clock cycle thai appears two clock cycles before T4(TXI) and stay low unUI tHLDh after the rising edge of PHil of the clock cycle that precedes T4(TX2) for the request to be acknowledged. FIGURE 4-6. Floating by HOLD Timing (CPU Not Idle Initially) TI TI T4 PHil [ PHil [ PHI2 [ PHI2[ HOLD [ HLDA [ -L~~r$Aa"- ~ [-+---4-JI iiiiLD[ HLiiA [ --------(FLOATING) ~ (FLOATING) ADD-AD7 [ - -+____-+....J [_ ________ AI6-23 [ __ ADB-AD1S [ AI6-23 ------ (HIGH) :~~:~ ________I______ _ ADO-IS (FLOATING) TLlEE/6156-43 TL/EE/6156-44 FIGURE 4-8. Release from HOLD FIGURE 4-7. Floating by HOLD Timing (CPU Initially Idle) 2-468 Z tn w N o o 4.0 Device Specifications (Continued) CD • .... o PHil [ PHI2 [ ROV [ TLlEE/6156-45 TL/EE/6156-46 FIGURE 4·9. Ready Sampling (CPU Initially READY) I PHil [ 11 I T4 FIGURE 4·10. Ready Sampling (CPU Initially NOT READY) I I JLSLj" 11 I T4 I PHI1[~ PHI2 [ PHI2 [ A~O-IS [ ADO-15 [ DATA (FROM SLAVE)~_-I_ SPe[ SPC [ (CPU) DiiiN[ STO-3 [+____+../ ,....2.=~ STO-15 [ -+_S_~_A_JU_S_'l_A_LI_O+-J AiiS[ AiiS[ NEXT STATUS (HIGH) TLlEE/6156-48 TL/EE/6156-47 FIGURE 4·12. Slave Processor Read Timing FIGURE 4·11. Slave Processor Write Timing T4 Tl PHI1 [ PH12 [ -+_...... SPC [ (FROM CPU) (FROM SLASJE1 [ - - - - - - - - - - - - - - - - - ------ TL/EE/6156-82 Note: After transferring last operand to a Slave Processor, CPU turns OFF driver and holds SPC high with internal 5 kO pullup_ FIGURE 4·13. SPC Timing 2-469 o ,-----------------------------------------------------------------------------, .... ~ 4.0 Device Specifications (Continued) o iza PHil [ -----..pr PHI2 [ TLlEE/S156-50 FIGURE 4-14. Clock Waveforms PHI2 [~fl----Il--J m~r-e- TLlEE/S15S-51 FIGURE 4-15. Relationship of PFS to Clock Cycles Tl IpFNS ~~3[ ____________________________ _J ~ C_O_DE_'_OO_'____ __ TLlEE/S15S-52 FIGURE 4-16a. Guaranteed Delay, PFS to Non-Sequential Fetch I Tl I T2 I ••• I I I I PHI1[~fl--rl-JL iDS [ S~3[_+------C-O-D-E-'00-'------~r------_+-------------INSPF TLlEE/e15S-53 FIGURE 4-16b. Guaranteed, Delay, Non-Sequential Fetch to PFS 2-470 r--------------------------------------------------------------------------.z 4.0 Device Specifications I T30RTi (J) (Continued) I T40RTi Co) N I o o T1 T2 T3 tp ..... o T4 AoS[ iLO[ TL/EE/6156-54 FIGURE 4·17. Relationship of ILO to First Operand Cycle of an Interlocked Instruction T30RT, T4 OR Ti ILO[ ________________ I T1 T2 T3 T4 ~--------------fJ TL/EE/6156-55 FIGURE 4·18. Relationship of ILO to Last Operand Cycle of an Interlocked Instruction fII TL/EE/6156-56 FIGURE 4·19. Relationship of ILO to Any Clock Cycle I T30RTi I T4 OR Ti I T1 T2 T3 T4 PHI1[ UlS [<..L.L.LL.LLJ.LfU 1\----1r--------.-------------+-'1 TL/EE/6156-57 FIGURE 4·20. U/S Relationship to Any Bus CycleGuarantee Valid Interval 2-471 C) ..,... I co C) ,---------------------------------------------------------------------------------, 4.0 Device Specifications (Continued) C) N ~-----------4~ C"') (/) VCC Z PHil [ _ _ _! -_ _--' RST [ lPWR TLlEE/6156-59 _ _ _ _ _ _ _ _ _ _ _ _ _~~-J FIGURE 4-22. Non-Power-On Reset TLlEE/6156-58 FIGURE 4-21. Power-On Reset PHll[~ NM{ ~tINTS iNT[ ~,-----tNMlw_r ~ TL/EE/6156-61 FIGURE 4-24. NMllnterrupt Signal Timing TL/EE/6156-60 FIGURE 4-23. INT Interrupt Signal Detection NEXT FIRST BUS CYCLE T1 T2 T3 T4 T10rTi I TL/EE/6156-62 Note: In a transfer of a Read-Modify-Write type operand, this is the Read transfer, displaying RMW Status (Code 1011). FIGURE 4-25. Relationship Between Last Data Transfer of an Instruction and PFS Pulse of Next Instruction 2-472 z ~ N Appendix A: Instruction Formats Options: NOTATIONS Q Q in String Instructions I U/W I BIT I i .............. Integer Type Field B=OO (Byte) 00 • ...... Q T = Translated B=Backward W=01 (Word) D = 11 (Double Word) U/W=OO: None 01: While Match f .............. Floating-Point Type Field F=1 (Standard Floating: 32 bits) 11: Until Match L=O (Long Floating: 64 bits) c ............. Custom Type Field D = 1 (Double Word) Configuration bits, in SETCFG: Q=O (Quad Word) op ............ Operation Code Valid encodings shown with each format. TL/EE/6156-63 gen, gen1, gen2 .......... General Addressing Mode Field. See Section 2.2 for encodings. reg ........... General Purpose Register Number 7 0 cond cond .......... Condition Code Field 0000= EQual: Z=1 FormatO (BR) Bcond 0001 = Not Equal: Z=O 0010=Carry Set: C= 1 0011 = Carry Clear: C = 0 7 1 , 0100 = Higher: L = 1 0101 = Lower or Same: L = 0 0110=Greater Than: N= 1 0111 = Less or Equal: N=O 1000= Flag Set: F= 1 1011 = Higher or Same: L=1 orZ=1 1100= Less Than: N=O and Z=O 1101 = Greater or Equal: N = 1 or Z= 1 ~p , 10' 0 '1,:1 Format 1 -0000 ENTER -0001 EXIT -0010 NOP -0011 WAIT -0100 DIA -0101 FLAG -0110 SVC -0111 BPT BSR RET CXP RXP RETT RETI SAVE RESTORE 1001 = Flag Clear: F=O 1010= LOwer: L=O and Z=O 11 0 1 0 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 1110= (Unconditionally True) 1111 = (Unconditionally False) short .......... Short Immediate Value. May contain: quick: cond: 15 1 , Signed 4-bit value, in MOVQ, ADDQ,CMPQ,ACB Condition Code (above), in Scond. areg: ADDQ CMPQ SPR Scond CPU Dedicated Register, in LPR, SPR. OOOO=US 0001-0111 = (Reserved) 1000=FP 1001 =SP 1010=SB 1011 = (Reserved) 1100 = (Reserved) 1101 =PSR 1110= INTBASE 1111 =MOD 2-473 , , gen al7 , Sh~rt Format 2 -000 ACB -001 MOVQ -010 LPR -011 ,, 1 op 11 I 1 1 ; 01 -100 -101 -110 .... C) .-------------------------------------------------------------------------------~ ~ Appendix A: Instruction Formats (Continued) z 11001110 gen 1 Format 3 CXPD BICPSR JUMP BISPSR -0000 -0010 -0100 -0110 o 8 7 23 (/) Format 7 -1010 -1100 -1110 ADJSP JSR CASE -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 MOVM CMPM INSS EXTS MOVXBW MOVZBW MOVZiD MOVXiD Trap (UND) on XXX1, 1000 -1000 -1001 -1010 -1011 -1100 -1101 -1110 -1111 MUL MEl Trap (UND) DEI QUO REM MOD DIV iii op 123 16 115 Format 4 ADD CMP BIC ADDC MOV OR -0000 -0001 -0010 -0100 -0101 -0110 FormatS o 23 o0 TUEE/6156-64 -1000 -1001 -1010 -1100 -1101 -1110 SUB ADDR AND SUBC TBIT XOR 0 0 0 i -000 -001 -010 -011 EXT CVTP INS CHECK 0 000 1 1 1 0 23 SETCFG SKPS 8 7 1sb5 gen 1 Format 5 - 0000 MOVS -0001 CMPS Trap (UND) on 1XXX, 01XX -100 -101 INDEX FFS I gen2 -0010 -0011 I II op f i 0 o0 1 1 1 1 1 0 Format 9 MOVif LFSR MOVLF MOVFL 0 -000 -001 -010 -011 ROUND TRUNC SFSR FLOOR -100 -101 -110 -111 00111 0 ~~:I: Format 6 1 1 1 1 1 1 :1 TUEE/6156-65 ROT ASH CBIT CBITI Trap (UND) LSH SBIT SBITI -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 NEG Trap (UND) SUBP ABS COM IBIT ADDP -1000 -1010 -1011 -1100 -1101 -1110 -1111 Format 10 Trap (UND) Always Trap (UND) on all others 2-474 z en w Appendix A: Instruction Formats (Continued) 23 gen1 I gen2 I op o o o 8 7 16115 N 817, , , , , , ,01 cp .... o nnn10110 10lf10111110 Operation Word 10 Byte Format 11 AOOf MOVf CMPf Trap (Slave) SUBf NEGf Trap (UNO) Trap (UNO) -0000 -0001 -0010 -0011 -0100 -0101 -0110 -0111 -1000 -1001 -1010 -1011 -1100 -1110 -1110 -1111 OIVf Trap (Slave) Trap (UNO) Trap (UNO) MULf ABSf Trap (UNO) Trap (UNO) Format 15 (Custom Slave) Operation Word Format nnn 23 1 , 000 i i gen 1 Format 15.0 -0000 -0001 CATSTO CATST1 12~ , , , gen 1 001 -0010 -0011 LCR SCR , I ,16115, gen2 , , I op Ic I : 81 Format 12 Format 15.1 Trap (UNO) Always --- 7 I I ___ 1 0 1 I I I I I a 1 1 1 1 01 a 12~ TL/EE/6156-77 101 Format 13 8 7 16115 gen 1 I short , , gen 1 , , 1 -100 -101 -110 -111 CCV2 CCV1 SCSR CCVO ,16115, gen2 I ,, op , 1 x 1 :1 Format 15.5 Trap (UNO) Always 23 -000 -001 -010 -011 CCVS LCSR CCV5 CCV4 01 op Ii o 00011110 Format 14 Trap (UNO) Always 2-475 -0000 CCALS -1000 CCALO -0001 -1001 CMOVO CMOVS -0010 -1010 Trap (UNO) CCMPO -1011 -0011 Trap (UNO) CCMP1 -0100 -1100 CCAL1 CCAL2 -0101 -1101 CMOV1 CMOV2 Trap (UNO) -1110 Trap (UNO) -0110 -1111 Trap (UNO) -0111 Trap (UNO) If nnn=010, 011, 100, 110,111, then Trap (UNO) Always fill .... r---------------------------------------------------------------------------------, C) - Appendix A: Instruction Formats (Continued) ~ z Implied Immediate Encodings: --- r I I I I I I I ___ 0 1 0 1 1 0 1 1 0 1 r6 TLlEE/6156-78 Format 16 r5 r4 r3 r2 rl Register Mask, appended to SAVE, ENTER Trap (UNO) Always r1 --- r r2 rS r4 r6 r5 Register Mask, appended to RESTORE, EXIT I I I I I I I0 ___ 1 1 0 1 1 1 1 0 1 I' TL/EE/6156-79 Format 17 : offset : + len9 -1 Offset/Length Modifier, appended to INSS, EXTS Trap (UNO) Always 0 171 I 0 I 0 I 0 I 1 I 1 I 1 I 0 1 TL/EE/6156-80 Format 18 Trap (UNO) Always 0 0 0 1 1 ~ I I I I I I I ___ 17x x x 1 TL/EE/6156-81 Format 19 Trap (UNO) Always 2-476 °1 Section 3 Slave Processors • Section 3 Contents NS32382-10, NS32382-15 Memory Management Units (MMU) ........................... NS32082-10 Memory Management Unit (MMU) ........................................ NS32381-15, NS32381-20 Floating-Point Units......................................... NS32081-10, NS32081-15 Floating-Point Units. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. NS32580-20, NS32580-25, NS32580-30 Floating-Point Controllers ....................... 3·2 3-3 3-42 3-81 3-111 3-128 ,---------------------------------------------------------------------, z ~National PRELIMINARY ~ Semiconductor en Co) I\,) Co) ClO I\,) ...... o ...... I z NS32382-10/NS32382-15 Memory Management Units en Co) I\,) Co) ClO I\,) ...... I General Description Features The NS32382 Memory Management Unit (MMU) provides hardware support for demand-paged virtual memory implementations. The NS32382 functions as a slave processor in Series 32000 microprocessor-based systems. Its specific capabilities include fast dynamic translation, protection, and detailed status to assist an operating system in efficiently managing up to 4 Gbytes of physical memory. Support for multiple address spaces, virtual machines, and program debugging is provided. II Compatible with the NS32332 CPU • Totally automatic mapping of 4 Gbyte virtual address space using memory based tables II On-chip translation look-aside buffer allows 97% of translations to occur in one clock for most applications II Full hardware support for virtual memory and virtual machines II Implements "referenced" bits for simple, efficient working set management III Protection mechanisms implemented via access level checking and dual space mapping • Program debugging support III Dedicated 32-bit physical address bus II Non-cacheable page support III 125-pin PGA (Pin grid array) package High-speed address translation is performed on-chip through a 32-entry fully associative translation look-aside buffer (TLB), which maintains itself from tables in memory with no software intervention. Protection violations and page faults (references to non-resident pages) are automatically detected by the MMU, which invokes the instruction abort feature of the CPU. Additional features for program debugging include three breakpoint registers which provide the programmer with powerful stand-alone debugging capability. U1 Conceptual Address Translation Model r----., VIRTUAL ADDRESS--.. . - - - - - . PHYSICAL ADDRESS ... . - - - - - , ... ... NS32332 CPU ADDRESS STROBE NS32382 FLOAT MMU ADDRESS STROBE PHYSICAL MEMORY ABORT TL/EE/9142-1 3-3 • . r---------------------------------------------------------------------------------, Table Of Contents ,... U) N CIO Cf) N Cf) (f) Z ...... . o ,... 1.0 PRODUCT INTRODUCTION 3.0 ARCHITECTURAL DESCRIPTION (Continued) 3.5 Translation Exception Address Register (TEAR) 1.1 Programming Considerations 2.0 FUNCTIONAL DESCRIPTION 3.6 Bus Error Address Register (BEAR) N 2.1 Power and Grounding 3.7 Breakpoint Address Register (BAR) Cf) 2.2 Clocking 3.B Breakpoint Mask Register (BMR) CIO N Cf) (f) Z 2.3 Resetting 3.9 Breakpoint Data Register (BDR) 2.4 Bus Operation 3.10 Memory Management Control Register (MCR) 3.11 Memory Management Status Register (MSR) 2.4.1 Interconnections 2.4.2 CPU-Initiating Cycles 3.12 Translation Lookaside Buffer (TLB) 2.4.3 MMU-Initiated Cycles 3.13 Address Translation Algorithm 2.4.4 Cycle Extension 3.14 Instruction Set 2.4.5 Bus Retry 4.0 DEVICE SPECIFICATIONS 2.4.6 Bus Error 4.1 Pin Descriptions 2.4.7 Interlocked Bus Transfers 4.1.1 Supplies 2.5 Slave Processor Interface 4.1.2 Input Signals 2.5.1 Slave Processor Bus Cycles 4.1.3 Output Signals 2.5.2 Instruction Protocols 4.1.4 Input-Output Signals 2.6 Bus Access Control 4.2 Absolute Maximum Ratings 2.7 Breakpointing 4.3 Electrical Characteristics 3.0 ARCHITECTURAL DESCRIPTION 4.4 Switching Characteristics 3.1 Programming Model 4.4.1 Definitions 3.2 Memory Management Functions 4.4.2 Timing Tables 3.2.1 Page Table Structure 4.4.2.1 Output Signals; Internal 3.2.2 Virtual Address Spaces Propagation Delays 4.4.2.2 Input Signal Requirements 3.2.3 Page Table Entry Formats 3.2.4 Physical Address Generation 4.4.2.3 Clocking Requirements 3.3 Page Table Base Registers (PTBO, PTBI) Appendix A: Interfacing Suggestions 3.4 Invalidate Virtual Address Registers (IVARn) List of Illustrations The Virtual Memory Model.. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . .. .. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . ... 1-1 NS323B2 Address Translation Model ........................................................................... 1-2 Recommended Supply Connections. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. .. . . . . . . . .. . . . . .. . . . . . . . . . .. . . . . . . . . . . ... 2-1 Clock Timing Relationships . . . .. .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .... 2-2 Power-On Reset Requirements ................................................................................ 2-3 General Reset Timing. .. .. . . . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . . .. .. . .. .. . . . . .. . . .. . . . . . . . . . . . . . . . . . .. . ... 2-4 Recommended Reset Connections. Memory Managed System. . . • . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. . . . . .. .. . .... 2-5 CPU Read Cycle; Translation in TLB .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-6 Abort Resulting from Protection Violation or a Breakpoint; Translation in TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-7 Page Table Lookup. . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-B Abort Resulting After a Page Table Lookup .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-9 Slave Access Timing; CPU Reading from MMU.................................................................. 2-10 Slave Access Timing; CPU Writing to MMU ..................................................................... 2-11 FLT Deassertation During RDVALlWRVAL Execution. . . . . . . . .. . . . . . .. . . . . . . . . . . . . . . . . . .. .. . . . . . . . . . . .. . . . . . . . ... 2-12 Two-Level Page Tables. . . . . . .. .. . . . . . . . .. . . . . . . • . . . . . .. . . . . . . . . . .. . .. .. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. .. ... 3-1 Page Table Entries ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-2 Virtual to Physical Address Translation . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-3 Page Table Base Registers (PTBO, PTB1) ....................................................................... 3-4 Invalidate Virtual Address Registers (IVARO, IVAR1) .............................................................. 3-5 Breakpoint Registers (BAR, BMR, BDR) . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-6 3-4 z (J) List of Illustrations (Continued) c;,) N Memory Management Control Register (MCR) ................................................................... 3-7 Memory Managment Status Register (MSR) ..................................................................... 3-8 TLB Model .................................................................................................. 3-9 Slave Instruction Format..................................................................................... 3-10 Pin Grid Array Package. . . . . .. . .. . . . . . . .. . . . . . . . . . .. . . . . .. . . .. .. . .. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . .. .. . .. . . . . . . .. Timing Specification Standard (Signal Valid After Clock Edge) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Timing Specification Standard (Signal Valid Before Clock Edge) ........................... . . . . . . . . . . . . . . . . . . . . . . . .. CPU Write Cycle Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. MMU Read Cycle Timing After a TLB Miss. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. MMU Write Cycle Timing After a TLB Miss. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. FLT Deassertation Timing ........... . . . . . . .. . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . • .. . . . . . . . . . . . . . . . . . . . . . ... Abort Timing (FLT = 1) .. . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . ... Abort Timing (FLT = 0) ... . . . . . . .. . . . . . . . . . . . . . . . .. . . .. . . . . .. . . . . . . . . . .. . . . . .. . . . . . . . . . . . . . . . .. . . .. . . . . . . . . ... Bus Retry Timing. . . .. . . . . . .. . . . . . . . . .. .. . . . . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . . . . . .. . . . . . . . . .. Bus Error Timing .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Slave Access Timing; CPU Reading from MMU. . . .. . . . . . . . . . . . . . . . . .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. Slave Access Timing; CPU Writing to MMU ..................................................................... SDONETiming ............................................................................................. HOLD Timing (FLT = 0) ..................................................................................... HOLD Timing (FLT = 1) ..................................................................................... Clock Waveforms ........................................................................................... NON Power-On Reset Timing. . . . . . . . . . .. . . . . .. . . . . . . . .. . . . . .. .. . .. . . . . .. .. . . . . . . . . . . . . . . . . . . . . . .. .. . . . . . . . ... Power-On Reset ................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-1 4-2 4-3 4-4 4-5 4-6 4-7 4-8 4-9 4-10 4-11 4-12 4-13 4-14 4-15 4-16 4-17 4-18 4-19 c;,) CO ~ ...... o ....... Z (J) c;,) N c;,) CO N • ...... U1 System Connection Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. A-1 Tables STO-ST3 Encodings.......................................................................................... LMR Instruction Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .. SMR Instruction Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. RDVAL/WRVAL Instruction ProtocoL........................................................................... 2-1 2-2 2-3 2-4 Access Protection Levels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-1 "Short" Field Encodings ...................................................................................... 3-2 • 3-5 .... r---------------------------------------------------------------------------------, Lr) ~ CO) (\II CO) U) z C; .... ~ CO) (\II CO) U) z 1.0 Product Introduction Figure 1-2. The offset is not changed. The translated page The NS32382 MMU provides hardware support for three basic features of the Series 32000; dynamic address translation, access level checking and software debugging. Dynamic Address Translation is required to implement demand-paged virtual memory. Access level checking is performed during address translation, ensuring that unauthorized accesses do not occur. Because the MMU resides on the local bus and is in an ideal location to monitor CPU activity, debugging functions are also included. The MMU is intended for use in implementing demandpaged virtual memory. The concept of demand-paged virtual memory is illustrated in Figure 1-1. At any point in time, a program sees a uniform addressing space of up to 4 gigabytes (the "virtual" space), regardless of the actual size of the memory physically present in the system (the "physical" space). The full virtual space is recorded as an image on a mass storage device. Portions of the virtual space needed by a running program are copied into physical memory when needed. To make the virtual information directly available to a running program, a mapping must be established between the virtual addresses asserted by the CPU and the physical addresses of the data being referenced. To perform this mapping, the MMU divides the virtual memory space into 4 Kbyte blocks called "pages". It interprets the 32-bit address from the CPU as a 20-bit "page number" followed by a 12-bit offset, which indicates the position of a byte within the selected page. Similarly, the MMU divides the physical memory into 4 Kbyte frames, each of which can hold a virtual page. The translation process is therefore modeled as accepting a virtual page number from the CPU and substituting the corresponding physical page frame number for it, as shown in frame number is 20 bits long. Physical addresses issued by the MMU are 32 bits wide. TL/EE/9142-3 FIGURE 1-2. NS32382 Address Translation Model Generally, in virtual memory systems the available physical memory space is smaller than the maximum virtual memory space. Therefore, not all virtual pages are simultaneously resident. Nonresident pages are not directly addressable by the CPU. Whenever the CPU issues a virtual address for a nonresident or nonexistent page, a "page fault" will result. The MMU Signals this condition by invoking the Abort feature of the CPU. The CPU then halts the memory cycle, restores its internal state to the point prior to the instruction being executed, and enters the operating system through the abort trap vector. PHYSICAL MEMORY VIRTUAL MEMORY HIGH a..._ _ _ _ _..... MEMORY ADDRESS HIGH MEMORYa...-----..... ADDRESS MASS STORAGE TL/EE/9142-2 FIGURE 1-1_ The Virtual Memory Model 3-6 1.0 Product Introduction (Continued) The operating system reads from the MMU the virtual address which caused the abort. It selects a page frame which is either vacant or not recently used and, if necessary, writes this frame back to mass storage. The required virtual page is then copied into the selected page frame. The MMU is informed of this change by updating the page tables (Section 3.2), and the operating system returns control to the aborted program using the RETT instruction. Since the return address supplied by the abort trap is the address of the aborted instruction, execution resumes by retrying the instruction. This sequence is called paging. Since a page fault encountered in normal execution serves as a demand for a given page, the whole scheme is called demand-paged virtual memory. The MMU also provides debugging support. It may be programmed to monitor the CPU bus for a single or a range of virtual addresses in real time. rewrite the result into the source operand exactly, if page faults are being generated only by invalid pages and not by write protection violations (for example, the instruction "ABSW X, X", which replaces X with its absolute value). Also, never write to any memory location which is necessary for calculating the effective address of either operand (i.e. the pointer in "Memory Relative" addressing mode; the Link Table pointer or Link Table Entry in "External" addressing mode). b) No instruction should perform a conversion in place from one data type to another larger data type (Example: MOVWF X, X which replaces the IS-bit integer value in memory location X with its 32-bit floating-point value). The addressing mode combination "TOS, TOS" is an exception, and is allowed. This is because the least-significant part of the result is written to the possibly invalid page before the source operand is affected. Also, integer conversions to larger integers always work correctly in place, because the low-order portion of the result always matches the source value. c) When performing the MOVM instruction, the entire source and destination blocks must be considered "operands" as above, and they must not overlap. 1.1 PROGRAMMING CONSIDERATIONS When a CPU instruction is aborted as a result of a page fault, some memory resident data might have been already modified by the instruction before the occurrence of the abort. This could compromise the restartability of the instruction when the CPU returns from the abort routine. To guarantee correct results following the re-execution of the aborted instruction, the following actions should not be attempted: a) No instruction should try to overlay part of a source operand with part of the result. It is, however, permissible to 2.0 Functional Description 2.1 POWER AND GROUNDING The NS323B2 requires a single 5V power supply, applied on eight (Veel pins. These pins should be connected together by a power (Vee) plane on the printed circuit board. See Figure 2-1. The grounding connections are made on eighteen (GND) pins. +5V 84 GND 83 C4 C8 Vee C7 • C9 M7 85 Cl0 • L3 NS32382 L12 Vee M13 Cll C13 K12 t.t2 N2 .......___.....+-......-+.....-4I---o4~.....+-___......_ .....-+OTHER GROUND CONNECTION TLlEE/9142-4 Cl C2 = = 1 I'F, Tantalum. 1000 pF,low inductance. This should be either a disc or monolithic ceramic capaCitor. FIGURE 2·1. Recommended Supply Connections 3-7 .... r---------------------------------------------------------------------------------, ~ ~ co C') N C') U) Z Ci .... ~ co C') N C') U) Z 2.0 Functional Description (Continued) These pins should be connected together by a ground (GND) plane on the printed circuit board. Each rising edge of PHil defines a transition in the timing state (UT-State") of the MMU. One T-State represents one hardware cycle within the MMU, and/or one step of an external bus transfer. See Section 4 for complete specifications of PHil and PHI2. As the TCU presents signals with very fast transitions, it is recommended that the conductors carrying PHil and PHI2 be kept as short as possible, and that they not be connected to any devices other than the CPU and MMU. A TTL Clock signal (CTTL) is provided by the TCU for all other clocking. In addition to Vee and Ground, the NS32382 MMU uses an internally-generated negative voltage (BBG), output of the on-chip substrate voltage generator. It is necessary to filter this voltage externally by attaching a pair of capacitors (Figure 2-1) from the BBG pin to ground. 2.2 CLOCKING The NS32382 inputs clocking signals from the NS32301 Timing Control Unit (TCU), which presents two non-overlapping phases of a single clock frequency. These phases are called PHil (pin B8) and PHI2 (pin B9). Their relationship to each other is shown in Figure 2-2. 2.3 RESETTING The RSTI input pin is used to reset the NS32382. The MMU responds to RSTI by terminating processing, resetting its internal logic and clearing the MCR and MSR registers. Only the MCR and MSR registers are changed on reset. No other program accessible registers are affected. The RST/ ABT signal is activated by the MMU on reset. This Signal should be used to reset the CPU. PHil On application of power, RSTI must be held low for at least 50 '""S after Vee is stable. This is to ensure that all on-Chip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain active for not less than 64 clock cycles. See Figures 2·3 and 2-4. The NS32C201 Timing Control Unit (TCU) provides circuitry to meet the Reset requirements of the NS32382 MMU. Figure 2-5 shows the recommended connections. PHI2 TLlEE/9142-5 FIGURE 2-2. Clock Timing Relationships PHI' I--- vec iiiii ---,~ .........m -+__ PHI' _ _ I 264CLOCK-i C~CLES ~ TL/EE/9142-7 FIGURE 2·4. General Reset Timing iiSii ---+---------U·--'I ~------e~~MC------~ TL/EE/9142-6 FIGURE 2·3. Power·On Reset Requirements Vee NS32C201 TCU NS32382 MMU NS32332 CPU r---------,I I iiffif .J>--t-f-......; -.....~-....--+I IL _________ .JI I RSTI RSTO EXTERNAL RESET (OPTIONAL) 2:50pSlC RESET SWITCH (OPTIONAL) TL/EE/9142-6 FIGURE 2·5. Recommended Reset Connections, Memory·Managed System 3-8 z 2.0 Functional Description (J) (0) (Continued) N The DDIN line indicates the direction of the transfer: 0 = Read, 1 = Write. 2.4 BUS OPERATION 2.4.1 Interconnections DDIN is monitored by the MMU during CPU cycles to detect write operations, and is driven by the MMU during MMU-initiated bus cycles. The U/S pin indicates the privilege level at which the CPU is making the access: 0 = Supervisor Mode, 1 = User Mode. It is used by the MMU to select the address space for translation and to perform protection level checking. Normally, the U/S pin is a direct reflection of the U bit in the CPU's Processor Status Register (PSR). The MOVUS and MOVSU CPU instructions, however, toggle this pin on successive operand accesses in order to move data between virtual spaces. The MMU uses the FLT line to take control of the bus from the CPU. It does so as necessary for updating its internal TLB from the Page Tables in memory, and for maintaining the contents of the status bits (R and M) in the Page Table Entries. The MMU also aborts invalid accesses attempted by the CPU. This is done by pulsing the RST / ABT pin low for one clock period. (A pulse longer than one clock period is interpreted by the CPU as a Reset command.) The MMU runs synchronously with the CPU, sharing with it a single multiplexed address/data bus. The interconnections used by the MMU for bus control, when used in conjunction with the NS32332, are shown in Figure A-1 (Appendix A). The CPU issues 32-bit virtual addresses on the bus, and status information on other pins, pulsing the signal ADS low. These are monitored by the MMU. The MMU issues 32-bit physical addresses on the Physical Address bus, pulsing the PAV line low. The PAV pulse triggers the address latches and signals the NS32C201 TCU to begin a bus cycle. The TCU in turn generates the necessary bus control signals and synchronizes the insertion of WAIT states, by providing the signal RDY to the MMU and CPU. Note that it is the MMU rather than the CPU that actually triggers bus activity in the system. The functions of other interface signals used by the MMU to control bus activity are described below. The STO-ST3 pins indicate the type of cycle being initiated by the CPU. STO is the least-significant bit of the code. Table 2-1 shows the interpretations of the status codes presented on these lines. 2.4.2 CPU-Initiated Bus Cycles A CPU-initiated bus cycle is performed in a minimum of four clock cycles: Tl, T2, T3 and T4, as shown in Figure 2-6. Status codes that are relevant to the MMU's function during a memory reference are: 1000, 1001 Instruction Fetch status, used by the debugging features to distinguish between data and instruction references. 1010 Data Transfer. A data value is to be transferred. 1011 Read RMW Operand. Although this is always a Read cycle, the MMU treats it as a Write cycle for purposes of protection and breakpointing. 1100 Read for Effective Address. Data used for address calculation is being transferred. During period Tl, the CPU places the virtual address to be translated on the bus, and the MMU latches it internally and begins translation. The MMU also sa~ples the DDIN pin, the status lines STO-ST3, and the U/S pin in the previous T4 cycle to determine how the CPU intends to use the bus. During period T2 the CPU removes the virtual address from the bus and the MMU takes one of three actions: 1) If the translation for the virtual address is resident in the MMU's TLB, and the access being attempted by the CPU does not violate the protection level of the page being referenced, the MMU presents the translated address on PAO-PA31 and generates a PAV pulse to trigger a bus cycle in the rest of the system. See Agure 2-6. 2) If the translation for the virtual address is resident in the MMU's TLB, but the access being attempted by the CPU is not allowed due to the protection level of the page being referenced, the MMU generates a pul~n the RST/ABT pin to abort the CPU's access. No PAV pulse is generated. See Figure 2-7. 3) If the translation for the virtual address is not resident in the TLB, or if the CPU is writing to a page whose M bit is not yet set, the MMU takes control of the bus asserting the FLT signal as shown in Figure 2-8. This causes the CPU to float its bus and wait. The MMU then initiates a sequence of bus cycles as described in Section 2.4.3. The MMU ignores all other status codes. The status codes 1101, 1110 and 1111 are also recognized by the MMU in conjunction with pulses on the SPC line while it is executing Slave Processor instructions, but these do not occur in a context relevant to address translation. TABLE 2-1. STO-ST3 Encodings (STO is the Least Significant) 0000 -Idle: CPU Inactive on Bus 0001 -Idle: WAIT Instruction 0010- (Reserved) 0011 - Idle: Waiting for Slave 0100 -Interrupt Acknowledge, Master 0101 -Interrupt Acknowledge, Cascaded 0110- End of Interrupt, Master 0111 - End of Interrupt, Cascaded 1000 - Sequential Instruction Fetch 1001 - Non-Sequential Instruction Fetch 1010- Data Transfer 1011 - Read Read-Modify-Write Operand 1100 - Read for Effective Address 1101 - Transfer Slave Operand 1110 - Read Slave Status Word 1111 - Broadcast Slave ID and Operation Word From state T2 through T4 data is transferred on the bus between the CPU and memory, and the TCU provides the strobes for the transfer. Whenever the MMU generates an Abort pulse on the RST/ABT pin, the CPU enters state T3 and then Ti (idle), ending the bus cycle. Since no PAV pulse is issued by the MMU, the rest of the system remains unaware that an access has been attempted. 3-9 . (0) CI) N ...... <:) ........ Z (J) (0) N (0) CI) ~ ...... U1 .... ~~----------------------------------------------------~ ~ co ('I) C'I ~ Z ...... o .... ~ CO ('I) C'I ('I) (I) z 2.0 Functional Description (Continued) Figure 2-8 shows the sequence of events in a Page Table lookup. After asserting FLT, the MMU waits for one additional clock cycle, then reads the Level-1 Page Table Entry and the Level-2 Page Table Entry in two consecutive memory Read cycles. There are no idle clock cycles between MMUinitiated bus cycles unless a bus request is made on the HOLD line (Section 2.6). 2.4.3 MMU-Inltlated Cycles Bus cycles initiated by the MMU are always nested within CPU-initiated bus cycles; that is, they appear after the MMU has accepted a virtual address from the CPU and has set the FLT line active. The MMU will initiate memory cycles in the following cases: 1) There is no translation in the MMU's TLB for the virtual address issued by the CPU, meaning that the MMU must reference the Page Tables in memory to obtain the translation. During the Page Table lookup the MMU driv~s the DDIN Signal. The status lines STO-ST3 and the U/S pin are not released by the CPU, and retain their original settings while the MMU uses the bus. The Byte Enable signals from the CPU, BEO-BE3, should be handled externally for correct memory referencing. 2) There is a translation for that virtual address in the TLB, but the page is being written for the first time (the M bit in its Level-2 Page Table Entry is 0). The MMU treats this case as if there were no translation in the TLB, and performs a Page Table lookup in order to set the M bit in the Level-2 Page Table Entry as well as in the TLB. In the clock cycle immediately after T4 of the last lookup cycle, the MMU issues the translated address and pulses MADS. In the subsequent cycle it removes FLT and pulses PAY to continue the CPU's access. Having made the necessary memory references, the MMU either aborts the CPU access or it provides the translated address and allows the CPU's access to continue to T3. T4 OR Ti T1 T2 T3 T4 Tl OR TI PHI1 [ PHI2 [ AOO-31 [ PAO-ll [ PA12-31 [ ADS [ PAY [ ODIN [ FLT [ (HIGHI Uts [ STO-3 [ TlIEE/9142-9 FIGURE 2-6. CPU Read Cycle; Translation In TLB (TLB Hit) 3-10 z 2.0 Functional Description I en w (Continued) I T1 N W . co N ...... 11 " 13 T2 PHil [ ..... C z en w PHI2 [ N W co ADD-31 [ ~ ...... U1 A5S[ fW[ HOLD [ TLlEE/9142-10 Note t: The CPU drives the bus if a write cycle is aborted. FIGURE 2-7. Abort Resulting from Protection Violation or a Breakpoint; Translation in TLB CPU ACCESS PTE.1 CPU ACCESS PTE.2 CPU STATES MMUSTATES T2 T3 " T4 r, 13 T4 T2 13 T4 PHI1 PH12 lOBUS MBUS • iiii ",y 121 Note t: If the R bit on the Level-1 PTE must be set, a write cycle is inserted here. Note 2: If either the R or the M bit on the Level-2 PTE must be set, a write cycle is inserted here. FIGURE 2-8. Page Table Lookup 3-11 TL/EE/9142-11 ..... U) N CIO C") N C") U) Z "Q .... ~ CIO C") N C") U) Z 2.0 Functional Description (Continued) If the V bit (Bit 0) in any of the Page Table Entries is zero, or the protection level field PL (bits 1 and 2) indicates that the CPU's attempted access is illegal, the MMU does not generate any further memory cycles, but instead issues an Abort pulse during the clock cycle after T 4 and removes the FLT signal. bus cycle, CPU-initiated or MMU-initiated, can be extended, except Slave Processor cycles, which are not memory or peripheral references. In Figures 2-6 and 2-8, note that during T3 all bus control signals are flat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the ROY (Ready) pin. If the Rand/or M bit (bit 7 or 8) must be updated, the MMU does this immediately in a single Write cycle. All bits except those updated are rewritten with their original values. In the middle of T3, on the falling edge of clock phase PHil, the ROY line is sampled by the CPU and/or the MMU. If ROY is high, the next state after T3 will be T4, ending the bus cycle. If it is low, the next state after T3 will be another T3 and the ROY line will be sampled again. ROY is sampled in each following clock period, with insertion of additional T3 states, until it is sampled high. Each additional T3 state inserted is called a "WAIT state". At most, the MMU writes two double words to memory during a translation: the first to the Level-1 table to update the R bit, and the second to the Level-2 table to update the R and/ or M bits. 2.4.4 Cycle Extension To allow sufficient strobe widths and access time requirements for any speed of memory or peripheral device, the NS32382 provides for extension of a bus cycle. Any type of The ROY pin is driven by the NS32C201 Timing Control Unit, which applies WAIT states to the CPU and MMU as requested on its own WAIT request input pins. READ PTE MMU STATES Tl T2 T3 T4 T1 TI PHil [ PHI2 [ PAD-31 [ ADD-31 [ MADS [ PAV FLT iiii RSTIABT [ ROY MILO [ TLIEE19142-12 FIGURE 2·9. Abort Resulting after a Page Table Lookup 3-12 .---------------------------------------------------------~z 2.0 Functional Description U) Co) (Continued) N from the CPU. MILO is asserted in the clock cycle immediately before the Read·Modify-Write access and de·activated in the clock cycle following T4 of the write cycle. The write portion of the Read·Modify-Write access will not be executed if anyone of the following conditions occurs: (1) A bus error has occurred in the read portion of the interlocked access. (2) The Rand/or M bit(s) in the PTE(s) do not require updating. (3) A protection violation has occurred. (4) An invalid PTE is detected. If a bus retry is encountered in an interlocked access, MILO will continue to be asserted, and the access will be retried. 2.4.5 Bus Retry The Bus Retry input signal (BRT) provides a system with the capability of repeating a bus cycle upon the occurrence of a "soft" or correctable error. The system first determines that a correctable error has occurred and then activates the BRT input. The MMU then samples this input on the falling edge of PHI1 in both T3 and T4 of a bus cycle. A valid bus retry will be issued as a result of a low being sampled in both T3 and T4. If the MMU gets a Bus Retry when it is contrOlling the bus, it will re-run the bus cycle until BRT is deactivated. Any Pending Hold request will not be acknowledged by the MMU if a bus retry is detected and during Hold Acknowledge, the MMU will not recognize the Bus Retry signal. Co) QC) ~ ..... o ...... Z U) Co) N Co) QC) N .....• U1 2.5 SLAVE PROCESSOR INTERFACE The CPU and MMU execute four instructions cooperatively. These are LMR, SMR, RDVAL and WRVAL, as described in Section 2.5.2. The MMU takes the role of a Slave Processor in executing these instructions, accepting them as they are issued to it by the CPU. The CPU calculates all effective addresses and performs all operand transfers to and from memory and the MMU. The MMU does not take control of the bus except as necessary in normal operation; i.e., to translate and validate memory addresses as they are presented by the CPU. The sequence of transfers ("protocol") followed by the CPU and MMU involves a special type of bus cycle performed by the CPU. This "Slave Processor" bus cycle does not involve the issuing of an address, but rather performs a fast data transfer whose purpose is pre-determined by the form of the instruction under execution and by status codes asserted by the CPU. 2.4.6 Bus Error The Bus Error input signal BER will be activated (low) when a "hard" or uncorrectable error occurs within the system (e.g. bus timeout, double ECC error). BER will be sampled on the falling edge of PHI1 in T4. If the MMU detects Bus Error while it is controlling the bus, it will store the virtual address which caused the error in the BEAR (Bus Error Ad· dress Register), and set the ME bit in the MSR to indicate MMU ERROR. An abort signal ABT will be generated and further memory accesses by the MMU will be inhibited. The 32382 then returns bus control to the CPU by releasing the FLT signal, (FLT = 1). Any pending Hold request will not be acknowledged by the MMU if a bus error is detected. If the Bus Error signal is received when the CPU is controlling the bus, the MMU will store the virtual address in BEAR, and set the CE bit in the MSR to indicate CPU ERROR. During the Hold Acknowledge, the MMU will ignore the BER signal. 2.5.1 Slave Processor Bus Cycles 2.4.7 Interlocked Bus Transfers Both the 32332 CPU and the 32382 MMU are capable of executing interlocked cycles to access a stream of data from memory without intervention from other devices. The interconnections between the CPU and MMU for Slave Processor communication are shown in Figure A-1 (Appendix A). The SPC signal is pulsed by the CPU as a low-active data strobe for Slave Processor transfers. Since SPC is normally in a high-impedance state, it must be pulled high with a 10 kfl. resistor, as shown. The MMU also monitors the status lines STO-ST3 to follow the protocol for the instruction being executed. Data is transferred between the CPU and the MMU with Slave Processor bus cycles, illustrated in Figures 2-10 and 2-11. Each bus cycle transfers one double-word (32 bits) to or from the MMU. Before executing an interlocked access, the 32332 CPU performs a dummy read with Read·Modify-Write status (1011). The MMU handles the dummy read as if it were a real RMW access. The TLB entries will be searched and page table look-up will be performed if a miss occurs. The access level is checked and the CPU will be aborted if write privilege is not currently assigned. The Reference (R) and the Modify (M) bits in the first and second level PTEs, as well as those in the Translation look·aside Buffer, will be updated. By executing the dummy read, the CPU is assured of no MMU intervention when the actual interlocked access is performed. The 32382 MMU executes interlocked Read-Modify-Write memory cycles to access Page Table Entries (PTEs) and update the Reference (R) and Modify (M) bit in the PTEs when necessary. If the Rand/or M bit(s) do not require updating, the write portion of the RMW cycle will not be executed. The memory cycles to access PTEs during execution of RDVAL and WRVAL instructions are not interlocked since Rand M bits are not updated. Slave Processor bus cycles are performed by the CPU in two clock periods, which are labeled T1 and T4. During T1, the CPU activates SPC and, if it is writing to the MMU, it presents data on the bus. During T4, the CPU deactivates SPC and, if it is reading from the MMU, it latches data from the bus. The CPU guarantees that data written to the MMU is held through T4 to provide for the MMU's hold time requirements. The CPU also guarantees that the status code on STO-ST3 becomes valid, at the latest, during the clock period preceding T1. The status code changes during T4 to antiCipate the next bus cycle, if any. Note that Slave Processor bus cycles are never extended with WAIT states. The RDY line is not sampled. During interlocked access cycles, the MILO signal from the MMU will be asserted. MILO has the same timing as ILO 3-13 • .... r---------------------------------------------------------------------------------, U) co:. co CO) 2.0 Functional Description (Continued) N CO) tn NEXT CYCLE PREY. CYCLE I Z ...... .... CI ~ PHil [ PHI2 [ T40RTI Tl T4 T10RTi I CO) N CO) (J) Z SPC [ AOO-AD31 [ STO-ST3 [ ADs [ DoiN [LfL&.L&.L&."fL- The PTE does not represent a valid translation. Any attempt to use this PTE will cause the MMU to generate an Abort trap. Level-2 Page Tables contain 1024 32-bit Page Table entries, and so occupy 4 Kbytes (1 page). Each Level·2 Page Table Entry points to a final 4 Kbyte physical page frame. In other words, its PFN provides the Page Frame Number portion (bits 12-31) of the translated address (Figure 3-3). The OFFSET field of the translated address is taken directly from the corresponding field of the virtual address. PL Protection Level. This two-bit field establishes the types of accesses permitted for the page in both User Mode and Supervisor Mode, as shown in Table 3-1. The PL field is modified only by software. In a Level-1 PTE, it limits the maximum access level allowed for all pages mapped through that PTE. TABLE 3-1. Access Protection Levels 3.2.2 Virtual Address Spaces When the Dual Space option is selected for address transla· tion in the MCR (Sec. 3.10) the MMU uses two maps: one for translating addresses presented to it in Supervisor Mode and another for User Mode addresses. Each map is referenced by the MMU using one of the two Page Table Base registers: PTBO or PTB1. The MMU determines the CPU's current mode by monitoring the state of the U/S pin and applying the following rules. Mode 1) While the CPU is in Supervisor Mode (U/S pin = 0), the CPU is said to be presenting addresses belonging to Address Space 0, and the MMU uses the PTBO register as its reference for looking up translations from memory. 2) While the CPU is in User Mode (U/S pin = 1), and the MCR DS bit is set to enable Dual Space translation, the CPU is said to be presenting addresses belonging to Address Space 1, and the MMU uses the PTB1 register to look up translations. 01 10 11 1 no access no access read only full access Supervisor 0 read only full access full access full access NU CI R Referenced. This is a status bit, set by the MMU and cleared by the operating system, that indicates whether the page mapped by this PTE has been referenced within a period of time determined by the operating system. It is intended to assist in implementing memory allocation strategies. In a Level·1 PTE, the R bit indicates only that the Level·2 Page Table has been referenced for a translation, without necessarily implying that the translation was successful. In a Level-2 PTE, it indicates that the page mapped by the PTE has been successfully referenced. R = 1 => The page has been referenced since the R bit was last cleared. R = 0 => The page has not been referenced since the R bit was last cleared. 3.2.3 Page Table Entry Formats Figure 3-2 shows the formats of Level-1 and Level-2 Page Table Entries (PTE's). M Modified. This is a status bit, set by the MMU whenever a write cycle is successfully performed to the page mapped by this PTE. It is initialized to zero by the operating system when the page is brought into physical memory. The bits are defined as follows: V Valid. The V bit is set and cleared only by software. V = 1 => The PTE is valid and may be used for trans· lation by the MMU. I" 1"+1 : 9 8 First Level PTE PFN I" :USR: 00 Not Used. These bits are reserved by National for future enhancements. Their values should be set to zero. Cache Inhibit. This bit appears only in Level-2 PTE's. It is used to specify non-cacheable pages. Note: When the CPU executes a Dual·Space Move instruction (MOVUSi or MOVSUi), it temporarily enters User Mode by switching the state of the U/S pin. Accesses made by the CPU during this time are treated by the MMU as User·Mode accesses for both mapping and access level checking. It is possible, however, to force the MMU to assume Supervisor-Mode privilege on such accesses by setting the Access Override (AO) bit in the MCR (Sec. 3.10). ,J, Protection Level Bits (PL) User 3) If Dual Space translation is not selected in the MCR, there is no Address Space 1, and all addresses present· ed in both Supervisor and User modes are considered by the MMU to be in Address Space O. The privilege level of the CPU is used then only for access level checking. PFN U/S I 12 11 :USR: IMIRH 9 8 Second Level PTE FIGURE 3-2. Page Table Entries (PTE's) 3-18 ~L V o z 3.0 Architectural Description en w (Continued) N M = 1 => The page has been modified since it was last brought into physical memory_ Bits 12-31 of the virtual address hold the 20-bit Page Number, which in the course of the translation is replaced with the 20-bit Page Frame Number of the physical address. The virtual Page Number field is further divided into two fields, INDEX 1 and INDEX 2. Bits 0-11 constitute the OFFSET field, which identifies a byte's position within the accessed page_ Since the byte position within a page does not change with translation, this value is not used, and is simply echoed by the MMU as bits 0-11 of the final physical address. M=O=> The page has not been modified since it was last brought into physical memory. In Level-1 Page Table Entries, this bit position is undefined, and is unaltered_ USR User bits_ These bits are ignored by the MMU and their values are not changed. They can be used by the user software. PFN Page Frame Number. This 20-bit field provides bits 12-31 of the physical address. See Figure 3-3. W co ~ ..... o ...... z en w N W co N ..... I U1 The 10-bit INDEX 1 field of the virtual address is used as an index into the Level-1 Page Table, selecting one of its 1024 entries. The address of the entry is computed by adding INDEX 1 (scaled by 4) to the contents of the current Page Table Base register. The PFN field of that entry gives the base address of the selected Level-2 Page Table. The INDEX 2 field of the virtual address (10 bits) is used as the index into the Level-2 Page Table, by adding it (scaled by 4) to the base address taken from the Level-1 Page Table Entry_ The PFN field of the selected entry provides the entire Page Frame Number of the translated address. 3_2.4 Physical Address Generation When a virtual address is presented to the MMU by the CPU and the translation information is not in the TLB, the MMU performs a page table lookup in order to generate the physical address. The Page Table structure is traversed by the MMU using fields taken from the virtual address. This sequence is diagrammed in Figure 3-3. The offset field of the virtual address is then appended to this frame number to generate the final physical address_ VIRTUAL ADDRESS 22 21 1211 31 L I 31 INDEX 1 \ INDEX 2 OFFSET I ... aPTB. \ L INDEX 1 1211 \ DO 21 LEVEL-l PAGE TABLE LEVEL-l PTE t-- 0 PFN I USR I NU I ;r+~V 31 0 II) SELECT 1ST PTE IF DS=O THEN A=O ELSE • = 1 FOR USER MODE • = 0 FOR SUPV MODE t 1---, I I I I 1024 PTE. I 4 BYTES- ... ", PFN 31 I 1211 "" INDEX 2 ~ PFN I 000000000000 ~ LEVEL-2 PAGE TABLE LEVEL-2 PTE r 00-: 21 0 PFN IUSRI M I R I CIINUlpL\ V 31 0 1024 PTE. 12) SELECT 2ND PTE PHYSICAL ADDRESS I 31 ...... PFN I 12 11 "" OFFSET 13) GENERATE PHYSICAL ADDRESS TLlEE/9142-20 FIGURE 3-3. Virtual to Physical Address Translation 3-19 • .... ~ N co ~ ('I) U) Z ~ .... N co ('I) C'I ('I) U) Z r---------------------------------------------------------------------------------~ 3.0 Architectural Description (Continued) 3.3 PAGE TABLE BASE REGISTERS (PTBD, PTB1) 3.8 BREAKPOINT MASK REGISTER (BMR) The PTBn registers hold the physical addresses of the Level-1 Page Tables. The Breakpoint Mask Register provides corresponding bit positions for each of the virtual address bits that are to be compared when the Breakpoint Address Compare Function is enabled. Bits which are set in this register are used for matching virtual address bits while bits which are cleared are treated as "don't cares". This allows a breakpoint to be generated upon an access to any location within a block of addresses. The BMR Register format is shown in Figure 3-6. The format of these registers is shown in Figure 3-4. The least-significant 12 bits are permanently zero, so that each register always points to a 4 Kbyte boundary in memory. The PTBn registers may be loaded or stored using the MMU Slave Processor instructions LMR and SMR (Section 3.14). 3.4 INVALIDATE VIRTUAL ADDRESS REGISTERS (IVARD,IVAR1) 3.9 BREAKPOINT DATA REGISTER (BDR) The Breakpoint Data Register holds the virtual address that triggered the breakpoint. The Invalidate Virtual Address registers are write-only registers. When a virtual address is written to IVARO or IVAR1 using the LMR instruction, the translation for that virtual address is purged, if present, from the TLB. This must be done whenever a Page Table Entry has been changed in memory, since the TLB might otherwise contain an incorrect translation value. It is a read-only register and its format is shown in Figure 3-6. 3.1D MEMORY MANAGEMENT CONTROL REGISTER (MCR) The MCR Register controls the various features provided by the MMU. It is 32 bits in length and has the format shown in Figure 3-7. All bits will be cleared on reset. The bits 8 to 31 are RESERVED for future use and must be loaded with zeros. Another technique for purging TLB entries is to load a PTBn register. This automatically purges all entries associated with the addressing space mapped by that register. Turning off translation (clearing the MCR TU and/or TS bits) does not purge any entries from the TLB. When MCR is read as a 32-bit word, bits 8 to 31 will be returned as zeros. Details on the MCR bits are given below. The format of the IVAR n registers is shown in Figure 3-5. TU 3.5 TRANSLATION EXCEPTION ADDRESS REGISTER (TEAR) The TEAR Register is loaded when a translation exception occurs. It contains the 32-bit virtual address which caused the translation exception and is a read-only register. TEAR has the same format as the IVARn registers of Figure 3-5. Translate User·Mode Addresses. While this bit is "1", the MMU translates all addresses presented while the CPU is in User Mode. While it is "0", the MMU echoes all User-Mode virtual addresses without performing translation or access level checking. Note: Altering the TU bit has no effect on the contents of the TLB. TS For more details on the updating of TEAR, refer to the note at the end of Section 3.11. 3.6 BUS ERROR ADDRESS REGISTER (BEAR) The BEAR Register is loaded when a CPU or MMU bus error occurs. It contains the 32-bit virtual address which triggered the bus error and is a read-only register. BEAR has the same format as the IVARn registers of Figure 3-5. Translate Supervisor-Mode Addresses. While this bit is "1", the MMU translates all addresses presented while the CPU is in Supervisor Mode. While it is "0", the MMU echoes all Supervisor-Mode virtual addresses without translation or access level checking. Note: Altering the TS bit has no effect on the contents of the TLB. OS 3.7 BREAKPOINT ADDRESS REGISTER (BAR) The Breakpoint Address Register is used to hold a virtual address for breakpoint address comparison during instruction and operand accesses. It is 32 bits in length and its format is shown in Figure 3-6. Dual-Space Translation. While this bit is "1", Supervisor Mode addresses and User Mode addresses are translated independently of each other, using separate mappings. While it is "0", both Supervisor Mode addresses and User Mode addresses are translated using the same mapping. See Section 3.2.2. 1: : : : :~O~+~+:2~+: ::::101+101+1+1+1+1 31 1211 FIGURE 3-4. Page Table Base Registers (PTBD, PTB1) 131: : : : : : : : : : : 0 ~1~+HoH+: :::::::::::,1 FIGURE 3-5. Address Registers (IVARD, IVAR1, TEAR, BEAR) FIGURE 3-6. Breakpoint Registers (BAR, BMR, BDR) 3-20 r--------------------------------------------------------------------------, 3.0 Architectural Description AO BR BW BE (Continued) Access Level Override. This bit may be set to temporarily cause User Mode accesses to be given Supervisor Mode privilege. See Section 3.13. DDT Data Direction. This bit indicates the direction of the transfer that the CPU was attempting when the translation exception occurred. Break on Read. If BR is 1, a break is generated when data is read from the breakpoint address. Instruction fetches do not trigger a Read breakpoint. If BR is 0, this condition is disabled. DDT = 0 = > Read Cycle DDT = 1 = > Write Cycle UST User/Supervisor. This is the state of the U/S pin from the CPU during the access cycle that triggered the translation exception. Break on Write. If BW is 1, a break is generated when data is written to the breakpoint address or when data is read from the breakpoint address as the first part of a read-modify-write access. If BW is 0, this condition is disabled. STT BP Break on Execution. If BE is 1, a break is generated when the instruction at the breakpoint address is fetched. If BE is 0, this condition is disabled. CPU Status. This 4-bit field is set on an address translation exception to the value of the CPU Status Bus (STO-ST3). Break. This bit is set to indicate that a breakpoint condition has been detected by the MMU. I\) Co) co ....~ ~ z en Co) I\) Co) co ....~ U'I CE CPU Error. This bit is set when a bus error occurs while the CPU is in control of the bus. ME MMU Error. This bit is set when a bus error occurs while the MMU is in control of the bus. DDE Data Direction. This bit indicates the direction of the transfer that the CPU was attempting when the bus error occurred. DDE = 0 = > Read Cycle BAS Breakpoint Address Space. This bit selects the address space for breakpointing. BAS = 0 Selects Address Space 0 (PTBO). BAS = 1 Selects Address Space 1 (PTB1). 3.11 MEMORY MANAGEMENT STATUS REGISTER (MSR) The Memory Management Status Register provides status information for translation exceptions as well as bus errors. When either a translation exception or a bus error occurs, the corresponding bits in the MSR are updated. The MSR register can be loaded with an LMR instruction. Its format is shown in Figure 3-8. Bits 19 through 31 are reserved for future use and are returned as zeros when read. Bits 8 and 18 are also reserved. Upon reset, all MSR bits are cleared to zero. Details on the function of each bit are given below. DDE = 1 = > Write Cycle USE User/Supervisor. This is the state of the U/S pin from the CPU during the access cycle that triggered the bus error. STE CPU Status. This 4-bit field is set to the value of the CPU status bus (STO-ST3) when a bus error is detected. Note: The MBR and TEAR registers are updated whenever a translation exception occurs, regardless of whether a CPU abort will result As a consequence, after an abort is recognized, MSR and TEAR may be overwritten with new data and thus the original contents may be lost. This happens if the CPU, while executing the abort routine, performs instruction prefetch cycles from an invalid page. To ensure correct operation the reading of MBR and TEAR should be performed before any instruction prefetch crosses a page boundary, unless the next page is valid. This may place soma restrictions in the relocation of the TEX Translation Exception. This 2-bit field specifies the cause of the current address translation exception. Combinations appearing in this field are summarized below. 00 No Translation Exception abort routine. 01 First Level PTE Invalid 10 Second Level PTE Invalid 11 Z en Co) • Protection Violation Note: During address translation, if a protection violation and an invalid PTE are detected at the same time, the TEX field is set to indicate a pro· tection violation. _ B A S i BEIBWIBRIAOloslTS ITU I BI7 131 01 TLlEE/9142-24 FIGURE 3·7. Memory Management Control Register (MCR) IU5EIooEI ME ICE IBP @l : sf : lUST lOOT I TL/EE/9142-25 FIGURE 3·8. Memory Management Status Register (MSR) 3-21 .... r------------------------------------------------------------------------------------------, ~ N co C") 3.0 Architectural Description (Continued) N 3.12 TRANSLATION LOOKASIDE BUFFER (TLB) tI) The Translation Lookaside Buffer is an on-chip fully associative memory. It provides direct virtual to physical mapping for the 32 most recently used pages, requiring only one clock period to perform the address translation. The efficiency of the MMU is greatly increased by the TLB, which bypasses the much longer Page Table lookup in over 97% of the accesses made by the CPU. C") Z C; .... N co C") N C") tI) Z sponding fields in all entries of the TLB. When the Tag portion of a TLB entry completely matches the input values, the Value portion is produced as output. If the protection level is not violated, and the M bit does not need to be changed, then the physical address Page Frame number is output in the next clock cycle. If the protection level is violated, the MMU instead activates the Abort output. If no TLB entry matches, or if the matching entry's M bit needs to be changed, the MMU performs a page-table lookup from memory. Entries in the TLB are allocated and replaced by the MMU itself; the operating system is not involved. The TLB entries cannot be read or written by software; however, they can be purged from it under program control. Figure 3-9 models the TLB. Information is placed into the TLB whenever the MMU performs a lookup from the Page Tables in memory. If the retrieved mapping is valid (V= 1 in both levels of the Page Tables), and the access attempted is permitted by the protection level, an entry of the TLB is loaded from the information retrieved from memory. The recipient entry is selected by an on-chip circuit that implements a Least-Recently-Used (LRU) algorithm. The MMU places the virtual page number (20 bits) and the Address Space qualifier bit into the Tag field of the TLB entry. Note that for a translation to be loaded into the TLB it is necessary that the Level-1 and Level-2 Page Table Entries be valid (V bit = 1). Also, it is guaranteed that in the process of loading a TLB entry (during a Page Table lookup) the Level-1 and Level-2 R bits will be set in memory if they were not already set. For these reasons, there is no need to replicate either the V bit or the R bit in the TLB entries. Whenever a Page Table Entry in memory is altered by software, it is necessary to purge any matching entry from the TLB, otherwise the MMU would be translating the corresponding addresses according to obsolete information. TLB entries may be selectively purged by writing a virtual address to one of the IVARn registers using the LMR instruction. The TLB entry (if any) that matches that virtual address is then purged, and its space is made available for another translation. Purging is also performed by the MMU whenever an address space is remapped by altering the contents of the PTBO or PTB1 register. When this is done, the MMU purges all the TLB entries corresponding to the address space mapped by that register. Turning translation on or off (via the MCR TU and TS bits) does not affect the contents of the TLB. The Value portion of the entry is loaded from the Page Tables as follows: The Translation field (20 bits) is loaded from the PFN field of the Level-2 Page Table Entry. The CI and M bits are loaded from the Level-2 Page Table Entry. The PL field (2 bits) is loaded to reflect the net protection level imposed by the PL fields of the Level-1 and Level-2 Page Table Entries. 3.13 ADDRESS TRANSLATION ALGORITHM The MMU either translates the 32-bit virtual address to a 32-bit physical address or reports a translation error. This process is described algorithmically in the following pages. See also Figure 3-3. (Not shown in the figure are additional bits associated with each TLB entry which flag it as full or empty, and which select it as the recipient when a Page Table lookup is performed.) When a virtual address is presented to the MMU for translation, the high-order 20 bits (page number) and the Address Space qualifier are compared associatively to the corre- VALUE TAG PAGE NUMBER AS· (20 BITS) VIRTUAL ADDRESS M CI TRANSLATION (20 BITS) 0 mmm xxx 11 0 1 YYY 11 a a nnn 0 zzz 11 1 1 PPP 1 www 00 1 a qqq 0 (U/s, ZZZ) PL COMPARISON TRANSLATED ADDRESS (PPP) TL/EE/9142-26 FIGURE 3-9. TLB Model •AS represents the virtual address space qualifier. 3-22 MMU Page Table Lookup and Access Validation Algorithm '"r\, '" Co) (:) Legend: x = y x == y x AND y x OR y x is assigned the value y Comparison expression, true if x is equal to y Boolean AND expression, true only if assertions x and yare both true Boolean inclusive OR expression, true if either of assertions x and y is true Delimiter marking end of statement ( ... J Delimiters enclosing a statement block item(i) Bit number i of structure "item" item(i:j) The field from bit number i through bit number of structure "item" item.x The bit or field named "x" in structure "item" DONE Successful end of translation; MMU provides translated address ABORT Unsuccessful end of translation; MMU aborts CPU access This algorithm represents for all cases a valid definition of address translation. Bus activity implied here occurs only if the TLB does not contain the mapping, or if the reference requires that the MMU alter the M bit of the Page Table Entry. Otherwise, the MMU provides the translated address in one clock period. Input (from CPU) : U (1 if U/S is high) W (1 if DDIN input is high) VA Virtual address consisting of: INDEX_l (from pins A31-A22) INDEX_2 (from pins A21-A12) OFFSET (from pins AII-AO) ACCESS_LEVEL The access level of a reference is a 2-bit value synthesized by the MMU from CPU status: bit 1 U AND NOT MCR.AO (U from U/S input pin) bit 0 = 1 for Write cycle, or Read cycle of an "rmw" class operand access o otherwise. » ""I (') :::r ;:;: CD (') C ""I ~ C CD en (') ~. "0' :J '0 o ;a s· c m .e, Output: PA Physical Address on pins PAO-PA31; CI Cache Inhibit Signal Abort pulse on RST/ABT pin. Uses: MCR Control Register: fields TU, TS and DS s~ -l8£l£SN/O ~ -l8£l£SN II NS32382-10/NS32382·15 MMU Page Table Lookup and Access Validation Algorithm Page Table Base Register 0 Page Table Base Register 1 Level-l Page Table Entry: fields PFN, PL, V and R PTEP_l Pointer, holding address of PTE_l PTE_2 Level-2 Page Table Entry: fields PFN, PL, V, M, Rand CI PTEP_2 Pointer, holding address of PTE_2 IF ( (MCR.TU = = 0) AND (U = = 1) OR «MCR.TS 0) AND THEN { PA(0:31) = VA(0:31) ; CINH PIN = 0 ; DONE (Continued) (0) o PTBO PTBI PTE_l l> a J ::;: (I) n c e!~ (U ==0) ) If translation not enabled then echo virtual address as physical address. o(I) U) n :::::!. "C IF (MCR.DS = = 1) AND (U = = 1) THEN { PTEP_l(31:12) = PTBl(31:12) PTEP_l(1l:2) = VA.INDEX_l ; PTEP_l(l:O) =0 ELSE PTEP_l(31:12) = PTBO(31:12) ; PTEP_l(11:2) = VA.INDEX_l; PTEP_l(l:O) = 0 If Dual Space mode and then form Level-l from PTBI else form Level-l from PTBO CPU in User Mode PTE address register, PTE address register. U) '" -I>- - - - LEVEL 1 PAGE TABLE LOOKUP - - IF ( ACCESS_LEVEL > PTE_I. PL ) OR (PTE_I. V THEN ABORT ; IF PTE_l.R PTEP_2(31:11) PTEP_2(1l:2) 0 THEN PTE_l.R = = PTE_LPFN VA.INDEL2 If protection violation or invalid Level-2 page table then abort the access. 0) Otherwise. set Reference bit if not already set, 1 and form Level-2 PTE address. PTEP_2(1:0) 0 LEVEL 2 PAGE TABLE LOOKUP - IF ( ACCESS_LEVEL > PTE_2. PL ) OR ( PTE_2. V = = 0 ) THEN ABORT ; IF PTE_2.R = = 0 THEN PTE_2.R = = 1 IF ( W = = 1) AND ( PTE_2.M = = 0 THEN PTE_2.M PA(31:11) DONE ; PTE_2.PFN PA(ll:O) VA.OFFSET CINH If protection violation or invalid page then abort the access. 1 PTE_2.CI Otherwise, set Referenced bit if not already set, if Write cycle set Modified bit if not already set, and generate physical address. o· :::s '0 o 3- 5" t: CD B 3.0 Architectural Description z ~ I\) (Continued) For reasons of system security, all MMU instructions are privileged, and the CPU does not issue them to the MMU in User Mode. Any such attempt made by a User-Mode pro· gram generates the Illegal Operation trap, Trap (ILL). In addition, the CPU will not issue MMU instructions unless its CFG register's M bit has been set to validate the MMU in· struction set. If this has not been done, MMU instructions are not recognized by the CPU, and an Undefined Instruction trap, Trap (UND), results. 3.14 INSTRUCTION SET Four instructions of the Series 32000 instruction set are ex· ecuted cooperatively by the CPU and MMU. These are: LMR SMR Load Memory Management Register Store Memory Management Register RDVAL Validate Address for Reading WRVAL Validate Address for Writing The format of the MMU slave instructions is shown in Figure 3-10. Table 3-2 shows the encodings of the "short" field for selecting the various MMU internal registers. The LMR and SMR instructions load and store MMU registers as 32-bit quantities to and from any general operand (including CPU General-Purpose Registers). The RDVAL and WRVAL instructions probe a memory address and determine whether its current protection level would allow reading or writing, respectively, if the CPU were in User Mode. Instead of triggering an Abort trap, these instructions have the effect of setting the CPU PSR F bit if the type of access being tested for would be illegal. The PSR F bit can then be tested as a condition code. TABLE 3-2. "Short" Field Encodlngs "Short" Field Register 0000 0001 0010 0011 0110 1001 1010 1011 1100 1101 1110 1111 BAR RESERVED BMR BDR BEAR MCR MSR TEAR PTBO PTBI IVARO IVARI Nole: The Series 32000 Dual-Space Move instructions (MOVSUi and MOVUSi), although they involve memory management action. are not Slave Processor instructions. The CPU implements them by switching the state of its U/S pin at appropriate times to select the desired mapping and protection from the MMU. For full architectural details of these instructions, see the Series 32000 Instruction Set Reference Manual. 4.0 Device Specifications 4.1 NS32382 PIN DESCRIPTIONS The following is a brief description of all NS32382 pins. The descriptions reference portions of the Functional Description, Section 2.0. Note: All other codes are illegal. They will cause unpredictable registers to be selected if used in an instruction. 817 OPERATION WORD to CODE 01 TLlEE/9142-27 FIGURE 3-10. MMU Slave Instruction Format 3-25 ..... Co) CC) I\) c ...... Z (J) Co) I\) Co) CC) I\) ..... U1 ~ ,--------------------------------------------------------------------, ,... ~ co ('I) N ('I) 4.0 Device Specifications (Continued) c ,... Power (Vee): Eight pins, connected to the + 5V supply. Back Bias Generator (BBG): Output of on-chip substrate voltage generator. N Ground (GND): Eighteen pins, connected to ground. rJ) Z ....... . co ('I) N ('I) rJ) Z Hold Acknowledge in (HLDAI): Active low. Applied by the CPU in response to HOLD input, indicating that the CPU has released the bus for DMA or multiprocessing purposes. Section 2.6 . 4.1.1 Supplies Reset Input (RSTI): Active low. System reset. Section 2.3. Status Lines (STO-ST3): Status code input from the CPU. Active from T4 of previous bus cycle through T3 of current bus cycle. Section 2.4. 4.1.2 Input Signals Clocks (PHI1, PHI2): Two-phase clocking signals. Section 2.2. User/Supervisor Mode (U/S): This signal is provided by the CPU. It is used by the MMU for protection and for selecting the address space (in dual address space mode only). Section 2.4. Ready (ROY): Active high. Used by slow memories to extend MMU originated memory cycles. Section 2.4.4. Hold Request (HOLD): Active low. Causes a release of the bus for DMA or multiprocessing purposes. Section 2.6. Address Strobe Input (ADS): Active low. Pulse indicating that a virtual address is present on the bus. Bus Error (BER): Active low. When active, indicates that an error occurred during a bus cycle. Not applicable for slave cycles. Connection Diagram NS32382 Pinout Descriptions 125 Pin Grid Array ®®®®®®®®®®®® B®@®®®®®®®®®®@® c®® ®®®®®®®®®®® o®®® ®®® E®®® ®®® F®®® ®®® G®®® ®®® NS32382 H®®® ®®® J ®®® ®®® K®®® ®®® L®®® ®®® M®® ®®®®®®®® ®® N®@®®®®®®®®®®@® ®®®®®®®®®®®® 14 13 12 11 10 9 TL/EE/9142-28 Bottom View FIGURE 4-1. Pin Grid Array Package Order Number NS32382U-10 or NS32382U-15 See NS Package Number U125A 3-26 Desc Pin Desc NC SPC NC SDONE MILO HLDAI RSTI BER 8RT RST/A8T STO STI NC NC GND GND Vee HOLD RDY PHI2 PHil PAV FLT ST2 ST3 RESERVED NC MADS GND GND DDIN HLDAO A2 A3 A4 A5 A6 A7 A8 A9 Al0 All A12 A13 81 82 83 B4 85 86 87 B8 B9 Bl0 Bll B12 B13 B14 Cl C2 C3 C4 C5 C6 Vee GND Vee Vee GND GND CINH AD29 AD31 GND ADS RESERVED PA31 AD27 AD30 U/S PA30 PA29 PA28 AD25 AD26 AD28 PA27 PA26 PA25 AD23 AD24 GND GND PA24 PA23 Pin Desc Pin Desc Pin C7 C8 C9 Cl0 Cl1 C13 C14 Dl D2 D3 D12 D13 D14 El E2 E3 E12 E13 E14 Fl F2 F3 F12 F13 F14 Gl G2 G3 G12 G13 G14 AD22 AD21 AD20 GND PA22 PA21 AD19 AD18 AD17 PA20 PA19 PA18 AD14 AD15 AD16 GND PA17 PA16 AD13 AD12 Vee Vee PA14 PA15 NC GND GND AD7 AD3 Vee BBG HI H2 H3 H12 H13 H14 Jl J2 J3 J12 J13 J14 Kl K2 K3 K12 K13 K14 L1 L2 L3 L12 L13 L14 MI M2 M4 M5 M6 M7 M8 PA4 M9 PA7 Ml0 GND MIl Vee M13 PA13 M14 NC Nl GND N2 GND N3 AD9 N4 AD5 N5 AD2 N6 ADO N7 PAO N8 PA3 N9 PA6 Nl0 PA9 NIl GND N12 NC N13 PA12 N14 ADll P2 AD10 P3 AD8 P4 AD6 P5 AD4 P6 ADI P7 PAl P8 PA2 P9 PA5 Pl0 PA8 Pll PAlO P12 PAIl P13 z CJ) 4.0 Device Specifications (Continued) Bus Retry (BRT): Active low. When active, the MMU will reexecute the last bus cycle. Not applicable for slave cycles. Slave Done (SDONE): Active low. Used by the MMU to inform the CPU of the completion of a slave instruction. It floats when it is not active. MMU Address Strobe (MADS): Active low. This signal is asserted in T1 of an MMU initiated cycle. It indicates that the physical address is available on the physical address bus. MADS is floated during hold acknowledge. MMU Interlock (MILO): Active low. This signal is asserted by the MMU when it performs a read-modify-write operation to up-date the R and/or the M bit in the Page Table Entry (PTE). It is inactive during Hold Acknowledge. Physical Address Bus (PAO-PA31): These 32 signal lines carry the physical address. They float during Hold Acknowledge. Slave Processor Control (SPC): Active low. Used as a data strobe for slave processor transfers. 4.1.3 Output Signals Reset Output/Abort (RST/ABT): Active Low. Held active longer than one clock cycle to reset the CPU. Pulsed low during T2 to abort the current CPU instruction. Float Output (FLT): Active low. Floats the CPU from the bus when the MMU accesses page table entries. Section 2.4.3. Physical Address Valid (PAV): Active low. Pulse generated during T2 indicating that a physical address is present on the bus. Hold Acknowledge Output (HLDAO): Active low. When active, indicates that the bus has been released. Cache Inhibit (CINH): This output signal reflects the state of the CI bit in the second level Page Table Entry (PTE). It is used to specify non-cacheable pages. During MMU generated bus cycles and when the MMU is in No-Translation mode, CINH will be held low. Co) ~ Co) . 0) ~ ...... c ....... Z CJ) Co) ~ Co) 0) ~ ...... U1 4.1.4 Input-Output Signals Data Direction In (DDIN): Active low. Status signal indicating direction of data transfer during a bus cycle. Driven by the MMU during a page-table lookup. Address/Data 0-31 (ADO-AD31): Multiplexed Addressl Data Information. Bit 0 is the least significant bit. 4.2 ABSOLUTE MAXIMUM RATINGS Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Temperature Under Bias Storage Temperature All Input or Output Voltages with Respect to GND Power Dissipation O"Cto +70"C - 65"C to + 150"C -0.5Vto +7V 2.5W 4.3 ELECTRICAL CHARACTERISTICS TA = 0 to + 70"C, Vcc Symbol VIH Parameter = 5V ± 5%, GND = OV Conditions High Level Input Voltage Min Typ 2.0 Max Units Vcc + 0.5 V Vil Low Level Input Voltage -0.5 0.8 V VCH High Level Clock Voltage PHI1, PHI2 Pins Only Vcc - 0.5 Vcc + 0.5 V VCl Low Level Clock Voltage PHI1, PHI2 Pins Only -0.5 0.3 V VCRT Clock Input Ringing Tolerance PHI1, PHI2 Pins Only -0.5 0.5 V VOH High Level Output Voltage IOH VOL Low Level Output Voltage IllS SPC Input Current (Low) = 2mA VIN = O.4V, SPC in Input Mode II Input Load Current o ,;; VIN ,;; Vcc, All Inputs Except = -400 p.A 2.4 PHI1, PHI2, AT/SPC Il Icc V 0.45 V 0.05 1.0 mA -20 20 p.A -20 20 p.A 500 mA IOl Leakage Current (Output and I/O Pins in TRI-STATElinput Mode) 0.4 ,;; VOUT ,;; Vcc Active Supply Current lOUT = 0, TA = 25"C 3-27 350 &I ,.. It) N CD 4.0 Device Specifications N 4.4 SWITCHING CHARACTERISTICS C") ~ Z ..... o . ,.. (Continued) and PHI2, and 0.8V or 2.0V on all other signals as illustrated in Figures 4-2 and 4-3, unless specifically stated otherwise. 4.4.1 Definitions ABBREVIATIONS: All the timing specifications given in this section refer to 2.0V on the rising or falling edges of the clock phases PHI1 N CD C") N C") tJ) Z PHln SIGI SIG2 [:x [[ L.E. - leading edge R.E. - rising edge T.E. - trailing edge F.E. - falling edge [ [ PH In ----2.4V ~~.45V lSIGll I lSIG2h SIGI 2.4V j'~ ._---O.BV [ SIG2 ---O.45V x:: 2.0V '\ --2.4V lSIGll O.45V 2.4V / 'SIG2h -----O.45V TL/EE/9142-30 TL/EE/9142-29 FIGURE 4·3. Timing Specification Standard (Signal Valid before Clock Edge) FIGURE 4·2. Timing Specification Standard (Signal Valid after Clock Edge) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32382·10, NS32382·15. Maximum times assume capacitive loading of 50 pF. Name Description Figure Reference/Conditions = 1) Valid (FLT = 1) NS32382·10 NS32382·15 Min Min Max Units Max tpALv 4-4 PAO-11 Valid (FLT After R.E., PHI1 T1 75 50 ns tpAHv 4-4 PA12-31 After R.E., PHI1 T2 30 20 ns tPAVa 4-4 PAY Signal Active After R.E., PHI1 T2 25 17 ns tPAVia 4-4 PAY Signal Inactive After R.E., PHI2 T2 40 27 tpAVw 4-4 PAY Pulse Width At 0.8V (Both Edges) 35 22 ns tpALh 4-4 After R.E., PHI1 (Next) T1 0 0 ns tpAHh 4-4 = 1) PA12-31 Hold (FLT = 1) CINH Signal Valid (FLT = 1) (FLT = 0) CINH Signal Hold (FLT = 1) ODIN Signal Valid (FLT = 0) After R.E., PHI1 (Next) T2 0 0 ns tClv 4-4, 4-15, tClh 4-4 tOOINv 4-5, 4-7, 4-15 PAO-11 Hold (FLT After R.E., PHI1 T2 After R.E., PHI1 T1 After R.E., PHI1 (Next) T2 40 0 tOOINh 4-5 ODIN Signal Hold (FLT tov 4-6 ADO-AD31 Valid (Memory Write) After R.E., PHI1 T2 tOh 4-6 ADO-AD31 Hold (Memory Write) After R.E., PHI1 (Next) T1 tMAv 4-6 PAO-31 Valid (FLT tMAh 4-6 PAO-31 Hold (FLT = 0) = 0) 27 ns 25 ns 0 After R.E., PHI1 T1 35 = 0) ns After R.E., PHI1 (Next) T1 0 0 After R.E., PHI1 T1 After R.E., PHI1 (Next) T1 3-28 0 50 0 30 0 ns 38 ns 20 0 ns ns ns z en w 4.0 Device Specifications (Continued) I\) w . 4.4.2.1 Output Signals: Internal Propagation Delays, NS32382-10, NS32382-15. Maximum times assume capacitive loading of 50 pF. (Continued) Name Figure Description MADS Signal Active (FLT Reference/Conditions = 0) CXI I\) ...... NS32382-10 NS32382-15 Min Min tMAOSa 4-6,15 After R.E., PHil Tl tMAOSia 4-6 MADS Signal Inactive After R.E., PHI2 Tl 5 tMAOSw 4-6 MADS Pulse Width At 0.8V (Both Edges) 35 DDIN Floating After R.E., PHil T3 After R.E., PHil Tl Max 17 25 Units Max ns o ....... z en w I\) w CXI tOOIN! 4-7, 4-9,11 tMILOa 4-5, 4-15 MILO Signal Active After R.E., PHil T4 tMILOia 4-7, 4-15 MILO Signal Inactive After R.E., PHil Tl or Ti tABTa 4-8 RST/ ABT Signal Active (Abort) After R.E., PHil Tl or T2 tABTia 4-8 RST/ ABT Signal Inactive (Abort) After R.E., PHil T2 or T3 tABTw 4-8 RST/ ABT Pulse Width (Abort) At 0.8V (Both Edges) 35 5 22 ns ns 25 25 50 38 50 38 ns 40 ns 40 ns 50 2 25 50 60 2 ns tFLTa 4-5 FLT Signal Active After R.E., PHil T2 tFLTia 4-7, 4-9 FLT Signal Inactive After R.E., PHil T2 tOf 4-12 Data Bits Floating (Slave Processor Read) After R.E., PHil T4 tov 4-12 ADO-AD31 Valid (CPU Slave Read) After R.E., PHil Tl tOh 4-12 ADO-AD31 Hold (CPU Slave Read) After R.E., PHil T4 tSONa 4-14 SDONE Signal Active After R.E., PHI2 50 35 ns tSONia 4-14 SDONE Signal Inactive Ater R.E., PHil 50 35 ns tSONw 4-14 SIJONE Pulse Width At 0.8V (Both Edges) 25 90 17 60 ns tSONdw 4-14 SDONE Double Pulse Width At 0.8V (Both Edges) 225 275 140 180 ns tSON! 4-14 SDONE Signal Floating After R.E., PHI2 40 25 ns tHLOAOa 4-15 After R.E., PHil Ti 60 40 ns tHLOAOia 4-15 = 0) HLDAO Signal Inactive (FLT = 0) After R.E., PHil T4 60 40 ns HLDAO Signal Active (FLT 50 40 ns 40 30 ns 25 18 50 38 3 ns ns tMAOSz 4-15 MADS Signal Floated by HOLD After R.E., PHil Ti 40 25 ns tpAVz 4-15 PAV Signal Floated by HOLD After R.E., PHil Ti 40 25 ns tPAVr 4-15 PAV Return from Floating (Caused by HOLD) After R.E., PHil Tl 40 25 ns toz 4-15 ADO-AD31 Floating (Caused by HOLD) After R.E., PHil Ti 25 18 ns tMAz 4-15 PAO-31 Floated by HOLD After R.E., PHil Ti 25 18 ns tOOINz 4-15 DDIN Signal Floated by HOLD After R.E., PHil Ti 40 25 ns telz 4-15 CINH Signal Floated by HOLD After R.E., PHil Ti 25 18 ns tMILOia 4-15 MILO Signal Inactive by HOLD (FLT = 0) After R.E., PHil Ti 50 38 ns 3-29 U1 ns 40 4 ~ ...... &I .... II) co:. 4.0 Device Specifications (Continued) C\I 4.4.2.1 Output Signals: Internal Propagation Delays, NS32382·10, NS32382·15. Maximum times assume capacitive loading of 50 pF. (Continued) co C") C") (1) z C:> .... . Name Figure Description Reference/Conditions C\I co C") (1) z NS32382·15 Min Min Max Units Max tMILOa 4-15 MILO Signal Active (FLT = 0) After R.E., PHI1 T4 50 38 ns tHLDAOa 4-16 HLDAO Signal Active (FLT = 1) After R.E., PHI1 Ti 45 30 ns tHLDAOia 4-16 HLDAO Signal Inactive (FLT = 1) After R.E., PHI1 Ti or T4 45 30 ns tMAOSz 4-16 MADS Signal Floated byHLDAI(FLT= 1) After R.E., PHI1 Ti 25 18 ns tMAOSr 4-16 MADS Return from Floating (FLT = 1) After R.E., PHI1 Ti orT4 30 20 ns tpAVz 4-16 PAY Signal Floated HLDAI (FLT = 1) After R.E., PHI1 Ti 25 18 ns tpAVr 4-16 PAY Return from Floating (FLT = 1) After R.E., PHI1 Ti or T4 30 20 ns toz 4-16 ADO-AD31 Signals Floating (FLT = 1) After R.E., PHI1 Ti 25 18 ns tOr 4-16 ADO-AD31 Return from Floating (FLT = 1) After R.E., PHI1 Ti orT4 30 20 ns tMAz 4-16 PAO-31 Signals Floated by HLDAI (FLT = 1) After R.E., PHI1 T1 25 18 ns tMAr 4-16 PAO-31 Return from Floating (FLT = 1) After R.E., PHI1 Ti or T4 30 20 ns tClz 4-16 CINH Signal Floated by HLDAI (FLT = 1) After R.E., PHI1 Ti 25 18 ns tClr 4-16 CINH Return from Floating (FLT = 1) After R.E., PHI1 Ti or T4 30 20 ns tRSTOa 4-18 RST/ ABT Signal Active (Reset) After R.E., PHI2 Ti 50 40 ns tRSTOia 4-18 RST/ ABT Signal Inactive (Reset) After R.E. PHI2 Ti tRSTOw 4-18 RST/ ABT Pulse Width (Reset) At 0.8V (Both Edges) C\I C") NS32382·10 50 40 64 ns Icp 64 4.4.2.2 Input Signal Requirements: NS32382·10, NS32382·15 Name Figure Description Reference/Conditions NS32382·10 NS32382·15 Min Min Max Units Max tOls 4-5 Input Data Setup (FLT = 0) Before F.E., PHI2 T3 12 10 ns tOlh 4-5 Input Data Hold (FLT = 0) After R.E., PHI1 T4 3 3 ns tRDYs 4-5 RDY Setup Before F.E., PHI1 T3 20 12 ns tRDYh 4-5 RDY Hold After R.E., PHI2 T3 4 3 ns tsPCs 4-12 SPC Input Setup Before F.E., PHI2 T1 45 35 ns tSPCh 4-12 SPC Input Hold After R.E., PHI1 T4 0 0 ns tUSs 4-4,4-12 U/S Setup Before F.E., PHI2T4 25 20 ns tUSh 4-4,4-12 U/S Hold After R.E., PHI1 (Next) T4 0 0 ns tSTs 4-4,4-12 STO-3 Setup Before F.E., PHI2 T4 40 25 ns tSTh 4-4,4-12 STO-3 Hold After R.E., PHI1 (Next) T4 0 0 ns tOls 4-13 Data In Setup (Slave Processor Write) Before F.E., PHI2 T1 40 22 ns 3-30 z en Co) 4.0 Device Specifications (Continued) N Co) co 4.4.2.2 Input Signal Requirements: NS32382-10, NS32382-15 (Continued) Name Figure Description Reference/Conditions NS32382-10 Min tDlh tHOLDs 4-13 4-15 Data In Hold (Slave Processor Write) = 0) = 0) HOLD Setup (FLT tHOLDh 4-15 HOLD Hold (FLT tHLDAis 4-16 HLDAI Signal Setup (FLT tHLDAih 4-16 tBRTs 4-10 tBRTh 4-10 tBERs 4-11 tBERh 4-11 = 1) HLDAI Signal Hold (FLT = 1) BRT Signal Setup (FLT = 0) BRT Signal Hold (FLT = 0) BER Signal Setup (FLT = 0) BER Signal Hold (FLT = 0) After R.E., PHil (Next) Ti Max NS32382-15 Min ...... z ns N Max 3 3 ~ .... o Units en Co) Co) co Before F.E., PHI2 T3 15 15 ns After R.E.. PHil T4 0 0 ns Before F.E., PHI2 Ti 25 15 ns After R.E., PHil Ti or T4 0 0 ns Before F.E., PHil T3 or T4 25 14 ns After R.E., PHI2 T3 or T4 0 0 ns Before F.E., PHil T4 25 14 ns 0 0 ns After R.E., PHI2 T4 tRSTls 4-1B Reset Input Setup Before F.E., PHil Ti 20 10 ns tRSTlw 4-1B Reset Input Width At O.BV (Both Edges) 64 64 tep N .... I CJ1 4.4.2.3 Clocking Requirements: NS32382-10, NS32382-15 Name Figure Description Reference/ Conditions NS32382-10 NS32382-15 Min Max Min Max 100 250 66 250 ns tcp 4-17 Clock Period R.E., PHil, PHI2 to Next R.E., PHil, PHI2 tCLw(1,2) 4-17 PHil, PHI2 Pulse Width At 2.0V on PHil, PHI2 (Both Edges) 0.5 tep -10 ns 0.5tep -6 ns teLh(1,2) 4-17 PHil, PHI2 High Time At Vcc - 0.9Von PHil, PHI2 (Both Edges) 0.5 tep -15 ns 0.5tep -10 ns tell 4-17 PHil, PHI2 Low Time AtO.BVon PHil, PHI2 (Both Edges) 0.5 tcp -5ns 0.5tcp -5ns tnOVL (1, 2) 4-17 Non-Overlap Time O.BVon F.E., PHil, PHI2 to O.BV on R.E., PHI2, PHil Non·Overlap Asymmetry At O.BV on PHil, PHI2 tnOVLas (tnOVL(l) - tnOVL(2) tCLhas PHil, PHI2 Asymmetry At Vcc - 0.9V on PHil, PHI2 teLh(l) - teLh(2) 3-31 Units -2 5 -2 5 ns -4 4 -3 3 ns -5 5 -3 3 ns • . r--------------------------------------------------------------------------, 4.0 Device Specifications ~ ..... C'I co C') C'I (Continued) 4.4.3 Timing Diagrams C') (f) z ..... o ..... N CO P1111 [ C') C'I C') en z PHIZ [ __n T4 T1 TZ n n 1U- UL n VADDR ADD-31 [ IL-rL n ADDRESS VALID _~fPAlh IX tPAHr ----0 ) PA12-31 [ PAi[ I- _r-=tPAHh ADDRESS VALID \......../ ADS [ IPAVa T2 or Ti DATA OUT "- X PAD-II [ T1 or TI T4 T3 n UL J " I C 'PAlv- .- ~tPAVia '~l \......../ ----0 IClh CINH [ -'CI~ \ / ODIN [ (HIGH) - tUS~i:=:: X ts~s - -t::=:=: STD-3 [ ROY [ ~ tUSh X 1m \ TL/EE/9142-31 FIGURE 4-4. CPU Write Cycle Timing; Translation In TLB 3-32 zCJ) 4.0 Device Specifications Co) (Continued) N Co) CPU STATES T1 PHil [ PHI2 [ ADD-31 [ T, T2 T2 MMU STATES T, T, T2 T4 T, T3 T3 T, T4 T, T1 CD ~ .... o ~IL~ ..... 1Ln Ln LnLnLn - tx , - N ~ In '\ VA ~~ U- Z CJ) Co) Co) CD ....~ U1 ~~_IDlh PAD-" [ PH ADDR PA12-31 [ - V MADS [ 1\..../ - PAV[ ROY [ DmN[ - l.I - -- -to- FLOATiNG" - CINH [ ~-tRDY'l V ! -tUDINv ... I\. tllOlHh- v: -tFlTa MILO [ --tRDYh ~-I.'lDa - I--IMA' \ TL/EE/9142-32 FIGURE 4-5. MMU Read Cycle Timing (1-Wait State); After a TLB Miss Note: After FLT is daasserted, DDIN may ba drivan temporarily by both CPU and MMU. This, however, does not cause any conflict. Since CPU and MMU force DDIN to the same logic lavel. 3-33 • . Ln , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , ..... C'I co ('I) C'I ('I) en 4.0 Device Specifications (Continued) I T1 I z ...... o..... • C'I T4 T3 12 PHI1 [ PHI2 [ CO ('I) C'I "'-31 [-+--+--+"\---I----+-----!-"!' ('I) en z PAG-31 [_+'~+":""-!-----+----+_----II_" MADS [ ... [ RDY [_+--:--:-_ _1----' ODIN [ fLJ[_+-_____I----_r----+_---__Ir_--- .I~[-+_---__Ir_---_r----+_-----r_--TUEE/9142-33 FIGURE 4-6. MMU Write Cycle Timing; after a TLB Miss CPU STATES T, MMU STATES T1 T, 12 T3 T4 T, T, T3 T1 12 T3 T4 T. PHI1 [ PflI2 [ ADD-31 [ PAD-31 [ MADI[ ... [ (MU: [ DDIN [ ICPUI (FlOAnNG) - fLJ[_+__-+---+--+-:--_r"""':--+.J .I~ [-+---+---+--+---+.1 ClN" [-+---+_--+--_r---+~r-_I--""""r_--+_--+_TL/EE/9142-34 FIGURE 4-7. FLT Deassertlon Timing Note: After FLT is deasserted. ODIN may be driven temporarily by both CPU and MMU. This. however. does not cause any conflict. Since CPU and MMU force ODIN to the same logic level. 3-34 z en Co) 4.0 Device Specifications (Continued) N Co) T4 OR 11 T1 T2 CD ....~ 11 T3 o ....... PHil [ Z ~ PHIZ [ N ..... Co) ADS [ CD N PA'i[ U1 m[ RsT/ AiiT [ TL/EE/9142-35 FIGURE 4·8. Abort Timing (FLT = 1) CPU STATES MMU STATES r; T1 T4 T3 T4 TI li PIII1 [ PIII2 [ ~[ ... [ m[ iiS'i/ABT [ ---- tDDINI DoiN[ IFLOAlING) IMMU} TL/EE/9142-36 FIGURE 4·9. Abort Timing (FLT = 0) 3·35 • .... U) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , ~ co CO) 4.0 Device Specifications (Continued) C'I CO) T1 (f) z (:) .... T2 T3 T2 T1 T4 T4 T3 PHil [ ~ co CO) PHI2 [ C'I CO) (f) z PAO-3l [ DATA IN ADD-3l [ MADS [ PAV[ m[ RDY [ FLT [ (LOW) MliO[ (LOW) TL/EE/9l42-37 FIGURE 4-10. MMU Bus Retry Timing T3 T4 T1 n PHil [ PHI2 [ BER[ MILO [ RDY [ m[ m[ RST/ABT [ TLlEE/9l42-53 FIGURE 4·11. Bus Error Timing 3-36 z en c;,.) 4.0 Device Specifications (Continued) N c;,.) T4 OR TI T1 T4 co N ...... o ....... I T1 OR TI z PHI1 [ PHI2 en c;,.) [L+-_..I N c;,.) co ...... N I ADO-31[.- U1 5PC [ U/S[ __~_~_ _++_____-r_~___~_______ 5TO- 3 [ DDIN[~~__________~__~~____+-__________+-__~~____ TL/EE/9142-38 FIGURE 4-12. Slave Access Timing; CPU Reading from MMU T4 OR Ti T1 T4 T1 OR TI PHil [ PHI2 [ +-____________+-__ AOO-31 [ __ .J ,..-----+--------I-..JI SPC [ STO-3 1iiiili[ (CPU) • [_+-_01 ,,___-+___________-+______+-_______ +-__________+-_.1 __ TLlEE/9142-39 FIGURE 4-13. Slave Access Timing; CPU Writing to MMU 3-37 U) ..- N co r---------------------------------------------------------------------------------, 4.0 Device Specifications (Continued) C') C'I C') U) Z ...... Q ..- PHil [ N co C') C'I PHI2 [ C') U) Z soom[ TLlEE/9142-40 FIGURE 4-14. SDONE Timing T3 T4 TI TI TI ---~~ ----FLOATING T4 T1 T2 PHil [ PHI2 [ HOLD [ HLDAD [ MADS [ - PiV[ FLOATING m[ AOO·31 [ PAO·31 [ AOOR VALID ODIN [ IMMU) IMMU READ) ILOW) CINH [ MILD [ TL/EE/9142-50 FIGURE 4·15. Hold Timing (FLT = 0) 3·38 z 4.0 Device Specifications en c.:I (Continued) N c.:I . 0) CPU STATE T4 Ti TI Ti TI N .... Ti or T4 Q ...... PHil [ Z en c.:I N c.:I PHI2 [ 0) N ....• U1 HLDAI [ HLDAD [ IMADS, --~~ MADS [ ----FLOATING --lpAVz --~~ PAV [ FLOATING (HIGH) FLT [ -tor ---0- ---- ADD-3l [ FLOATING --~ -tMAr -- PAD-3l [ ---'i~ FLOATING -~ --tClr ----i~ CINH [ ---FLOATING -~ (HIGH) MILO [ TlIEE/9142-51 FIGURE 4-16. Hold Timing (FLT = 1) PHil [ PHIZ [ ------I-"r TlIEE/9l42-49 FIGURE 4-17. Clock Waveforms 3-39 • n TI TI TI TI PHil [ PHI2 [ nT/ABT [ m[ TLIEE19142-45 FIGURE 4-18. Non Power-On Reset Timing vee ...It-"----~\__ PHI{ __-t___-' RSfI[ ____________~~-J TUEE19142-46 FIGURE 4-19. Power-On Reset 3·40 z en Co) Appendix A: Interfacing Suggestions N Co) co N IT, CWAIT 1T1 WAIT1 T2 WAIT2 8RSn 8US CONTROL lOGIC ...... I Rii WR o ....... TSO en Co) z 08E 8RSTO N +E ADS ~m ROY RST ClK ODIN '-- 1 ut+- BEO BE1BE2 BE3 BOUT IN>-H BiN FlT OOiN RST/AB! 8WO>-Bw l > - - 8WO HlOA rS+-- BWI PFS iN'i>----t iN'i Mi>----t BER BRT HO lO Ni.ii ,... +5 +-~ ROY iLci ~ lA 2A 3A 4A 18 28 38 48 N U ROY Rsn FlT OOiN RST./A8T I 2Yr---+ 3Yr---+ 4Yr---+ f~ ADS BER BRT SOONE SPC HOLD _iii. STO-3 r,: PHil PHI2 r-+ HlOAO HlOAI ADS BER 8RT iiT/SOONE SPC HOLD STO-3 PHil PHI2 AOO-31 U1 MilO iUL NS32332 CPU .... lY r---+ L- M PAY 5V NS32382 MMU CINH CINH ---.. . PAO-31 MADS AOO-31 ., ., , Co) co ~ L...."..",...5V 5V .. ~ r ~ PAO-31 RST 00-31 10k.1l +5 1 k.1l 1 k.1l ' ... 00-31 "- NOE I SON332 ' - - PSO SPC PSI STO-3 f" NS32381 FPU PHil f-- ... I' NS32C201 TCU RST ClK OOiN I PHI2 RSTO r em XIN XOUT 1;5 I-J RST1 SET Tl/EE/9142-52 FIGURE A-1. System Connection Diagram 3-41 r----------------------------------------------------------------------------, ~ ~National &i ~ Semiconductor C) .- z NS32082-10 Memory Management Unit General Description Features The NS32082 Memory Management Unit (MMU) provides hardware support for demand-paged virtual memory implementations. The NS32082 functions as a slave processor in Series 32000 microprocessor-based systems. Its specific capabilities include fast dynamic translation, protection, and detailed status to assist an operating system in efficiently managing up to 32 Mbytes of physical memory. Support for multiple address spaces, virtual machines, and program debugging is provided. • Totally automatic mapping of 16 Mbyte virtual address space using memory based tables • On-Chip translation look-aside buffer allows 97% of translations to occur in one clock for most applications • Full hardware support for virtual memory and virtual machines • Implements "referenced" bits for simple, efficient working set management • Protection mechanisms implemented via access level checking and dual space mapping • Program debugging support • Compatible with NS32016, NS32032 and NS32332 CPUs • 48-pin dual-in-line package High-speed address translation is performed on-chip through a 32-entry fully associative translation look-aside buffer (TLB), which maintains itself from tables in memory with no software intervention. Protection violations and page faults (references to non-resident pages) are automatically detected by the MMU, which invokes the instruction abort feature of the CPU. Additional features for program debugging include two breakpoint registers and a breakpoint counter, which provide the programmer with powerful stand-alone debugging capability. Conceptual Address Translation Model r----., SERIES 32000 CPU VIRTUAL ADDRESS ... ADDRESS STROBE FLOAT r----., PHYSICAL ADDRESS ... r----"I .. NS320B2 MMU ADDRESS STROBE PHYSICAL MEMORY ABORT TL/EE/8692-1 3-42 Z tn Co) Table Of Contents 1.0 PRODUCT INTRODUCTION I\) o01) 3.0 ARCHITECTURAL DESCRIPTION (Continued) 3.5 Breakpoint Registers (BPRO, BPR1) 1.1 Programming Considerations 2.0 FUNCTIONAL DESCRIPTION . I\) ..... 3.6 Breakpoint Count Register (BCNT) 2.1 Power and Grounding o 3.7 Memory Management Status Register (MSR) 3.7.1 MSR Fields for Address Translation 2.2 Clocking 2.3 Resetting 2.4 Bus Operation 2.4.1 Interconnections 3.7.2 MSR Fields for Debugging 3.8 Translation Lookaside Buffer (TLB) 3.9 Entry/Re-entry into Programs Under Debugging 2.4.2 CPU-Initiating Cycles 3.10 Address Translation Algorithm 2.4.3 MMU-Initiated Cycles 2.4.4 Cycle Extension 3.11 Instruction Set 4.0 DEVICE SPECIFICATIONS 4.1 Pin Descriptions 2.5 Slave Processor Interface 2.5.1 Slave Processor Bus Cycles 2.5.2 Instruction Protocols 4.1.1 Supplies 4.1.2 Input Signals 2.6 Bus Access Control 2.7 Breakpointing 2.7.1 Breakpoints on Execution 4.1.3 Output Signals 4.1.4 Input-Output Signals 4.2 Absolute Maximum Ratings 4.3 Electrical Characteristics 3.0 ARCHITECTURAL DESCRIPTION 3.1 Programming Model 3.2 Memory Management Functions 4.4 Switching Characteristics 4.4.1 Definitions 4.4.2 Timing Tables 4.4.2.1 Output Signals; Internal Propagation Delays 4.4.2.2 Input Signal Requirements 3.2.1 Page Table Structure 3.2.2 Virtual Address Spaces 3.2.3 Page Table Entry Formats 3.2.4 Physical Address Generation 3.3 Page Table Base Registers (PTBO, PTBI) 4.4.2.3 Clocking Requirements Appendix A: Interfacing Suggestions 3.4 Error/Invalidate Address Register (EIA) List of Illustrations The Virtual Memory Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1-1 NS32082 Address Translation Model ........................................................................... 1-2 Recommended Supply Connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Clock Timing Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-1 2-2 Power-On Reset Requirements ................................................................................ 2-3 General Reset Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-4 Recommended Reset Connections, Memory Managed System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-5 CPU Read Cycle; Translation in TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-6 Abort Resulting from Protection Violation; Translation in TLB . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. 2-7 Page Table Lookup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-8 Abort Resulting After a Page Table Lookup .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-9 Slave Access Timing; CPU Reading from MMU.................................................................. 2-10 Slave Access Timing; CPU Writing to MMU ..................................................................... 2-11 FLT Deassertation During RDVAL/WRVAL Execution............................................................ 2-12 Bus Timing with Breakpoint on Physical Address Enabled. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-13 Execution BreakpointTiming; Insertion of DIA Instruction......................................................... 2-14 Two-Level Page Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-1 A Page Table Entry. . . . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . .. .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-2 Virtual to Physical Address Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-3 Page Table Base Registers (PTBO, PTB1) ....................................................................... 3-4 EIA Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-5 Breakpoint Registers (BPRO, BPR1) ............................................................................ 3-6 Breakpoint Counter Register (BCNT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-7 Memory Managment Status Register (MSR) ..................................................................... 3-8 3-43 C) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , ..... I N co C) N C') (/) Z List of Illustrations (Continued) TLB Model 3-9 Slave Instruction Format..................................................................................... 3-10 Dual-In-Line Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-1 Timing Specification Standard (Signal Valid After Clock Edge) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-2 Timing Specification Standard (Signal Valid Before Clock Edge) .................................................... 4-3 CPU Read (Write) Cycle Timing (32-Bit Mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-4 MMU Read Cycle Timing (32-Bit Mode) after a TLB Miss........................................................... 4-5 MMU Write Cycle Timing After a TLB Miss. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-6 FLT Deassertation Timing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-7 Abort Timing (FLT = 1) ............... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-8 AbortTiming (FLT = 0) ............... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-9 CPU Operand Access Cycle with Breakpoint On Physical Address Enabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-10 Slave Access Timing; CPU Reading from MMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-11 Slave Access Timing; CPU Writing to MMU ..................................................................... 4-12 SPC Pulse From the MMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-13 HOLD Timing (FLT = 1); SMR Instruction Not Being Executed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-14 HOLD Timing (FLT = 1); SMR Instruction Being Executed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-15 HOLD Timing (FLT = 0) ..................................................................................... 4-16 Clock Waveforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4-17 ResetTiming ............................................................................................... 4-18 Power-On Reset ............................................................................................ 4-19 System Connection Diagram......... ............................ .............................................. A-1 System Connection Diagram..................................... .............................................. A-2 Tables STO-ST3 Encodings.......................................................................................... 2-1 LMR Instruction Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-2 SMR Instruction Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 2-3 RDVAL/WRVAL Instruction Protocol............................................................................ 2-4 Access Protection Levels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-1 Instructions Causing Non-Sequential Fetches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3-2 "Short" Field Encodings ...................................................................................... 3-3 3-44 z rn 1.0 Product Introduction Co) N The NS320B2 MMU provides hardware support for three basic features of the Series 32000; dynamic address translation, access level checking and software debugging. Dynamic Address Translation is required to implement demand-paged virtual memory. Access level checking is performed during address translation, ensuring that unauthorized accesses do not occur. Because the MMU resides on the local bus and is in an ideal location to monitor CPU activity, debugging functions are also included. The translation process is therefore modeled as accepting a virtual page number from the CPU and substituting the corresponding physical page frame number for it, as shown in Figure 1-2. The offset is not changed. The translated page frame number is 16 bits long, including an additional address bit (A24) intended for physical bank selection. Physical addresses issued by the MMU are 25 bits wide. o CD ....o~ The MMU is intended for use in implementing demandpaged virtual memory. The concept of demand-paged virtual memory is illustrated in Figure 1-1. At any point in time, a program sees a uniform addressing space of up to 16 megabytes (the "virtual" space), regardless of the actual size of the memory physically present in the system (the "physical" space). The full virtual space is recorded as an image on a mass storage device. Portions of the virtual space needed by a running program are copied into physical memory when needed. To make the virtual information directly available to a running program, a mapping must be established between the virtual addresses asserted by the CPU and the physical addresses of the data being referenced. TLlEE/B692-3 FIGURE 1-2. NS32082 Address Translation Model Generally, in virtual memory systems the available physical memory space is smaller than the maximum virtual memory space. Therefore, not all virtual pages are simultaneously resident. Nonresident pages are not directly addressable by the CPU. Whenever the CPU issues a virtual address for a nonresident or nonexistent page, a "page fault" will result. The MMU signals this condition by invoking the Abort feature of the CPU. The CPU then halts the memory cycle, To perform this mapping, the MMU divides the virtual memory space into 512-byte blocks called "pages." It interprets the 24-bit address from the CPU as a 15-bit "page number" followed by a 9-bit offset, which indicates the position of a byte within the selected page. Similarly, the MMU divides the physical memory into 512-byte frames, each of which can hold a virtual page. PHYSICAL MEMORY VIRTUAL MEMORY • HIGH ...._ _ _ _ _ _.. MEMORY ADDRESS HIGH MEMORY ....- - - - - -.. ADDRESS MASS STORAGE TL/EE/B692-2 FIGURE 1-1. The Virtual Memory Model 3-45 0.------------------------------------------------1 ..... ~ co o C'I ~ Z 1.0 Product Introduction 2.0 Functional Description (Continued) restores its internal state to the point prior to the instruction being executed, and enters the operating system through the abort trap vector. 2.1 POWER AND GROUNDING The NS32082 requires a single 5V power supply, applied on pin 48 (Vee). Grounding connections are made on two pins. Logic Ground (GNDL, pin 24) is the common pin for on-chip logic, and Buffer Ground (GNDB, pin 25) is the common pin for the output drivers. For optimal noise immunity, it is recommended that GNDL be attached through a single conductor directly to GNDB, and that all other grounding connections be made only to GNDB, as shown below (Figure 2-1). The operating system reads from the MMU the virtual address which caused the abort. It selects a page frame which is either vacant or not recently used and, if necessary, writes this frame back to mass storage. The required virtual page is then copied into the selected page frame. The MMU is informed of this change by updating the page tables (Section 3.2), and the operating system returns control to the aborted program using the RETT instruction. Since the return address supplied by the abort trap is the address of the aborted instruction, execution resumes by retrying the instruction. ~ 1 This sequence is called paging. Since a page fault encountered in normal execution serves as a demand for a given page, the whole scheme is called demand-paged virtual memory. The MMU also provides debugging support. It may be programmed to monitor the bus for two virtual or physical addresses in real time. A counter register is associated with one of these, providing a "break-on-N-occurrences" capability. y+sv vccp- TLlEE/8692-4 FIGURE 2·1. Recommended Supply Connections 1.1 PROGRAMMING CONSIDERATIONS When a CPU instruction is aborted as a result of a page fault, some memory resident data might have been already modified by the instruction before the occurrence of the abort. 2.2 CLOCKING The NS32082 inputs clocking signals from the NS32201 Timing Control Unit (TCU), which presents two non-overlapping phases of a single clock frequency. These phases are called PHI1 (pin 26) and PHI2 (pin 27). Their relationship to each other is shown in Figure 2·2. Each rising edge of PHI1 defines a transition in the timing state ("T-State") of.the MMU. One T-State represents one hardware cycle within the MMU, and/or one step of an external bus transfer. See Section 4 for complete specifications of PHI1 and PHI2. This could compromise the restartability of the instruction when the CPU returns from the abort routine. To guarantee correct results following the re-execution of the aborted instruction, the following actions should not be attempted: a) No instruction should try to overlay part of a source operand with part of the result. It is, however, permiSSible to rewrite the result into the source operand exactly if page faults are being generated only by invalid pages and not by write protection violations (for example, the instruction "ABSW X, X", which replaces X with its absolute value). Also, never write to any memory location which is necessary for calculating the effective address of either operand (i.e. the pOinter in "Memory Relative" addressing mode; the Link Table pointer or Link Table Entry in "External" addressing mode). b) No instruction should perform a conversion in place from one data type to another larger data type (Example: MOVWF X, X which replaces the 16-bit integer value in memory location X with its 32-bit floating-point value). The addressing mode combination "TOS, TOS" is an exception, and is allowed. This is because the least-significant part of the result is written to the possibly invalid page before the source operand is affected. Also, integer conversions to larger integers always work correctly in place, because the low-order portion of the result always matches the source value. c) When performing the MOVM instruction, the entire source and destination blocks must be considered "operands" as above, and they must not overlap. PHil PHI2 TLlEE/8692-5 FIGURE 2·2. Clock Timing Relationships As the TCU presents signals with very fast tranSitions, it is recommended that the conductors carrying PHI1 and PHI2 be kept as short as possible, and that they not be connected to any devices other than the CPU and MMU. A TTL Clock signal (CTTL) is provided by the TCU for all other clocking. 3-46 z 2.0 Functional Description rn Co) I\,) (Continued) 2.3 RESETTING 2.4 BUS OPERATION The ASTI input pin is used to reset the NS32082. The MMU responds to ASTI by terminating processing, resetting its internal logic and clearing the appropriate bits in the MSR register. Only the MSR register is changed on reset. No other program accessible registers, including the TLB are affected. The RSTI ABT signal is activated by the MMU on reset. This signal should be used to reset the CPU. AT/SPC is held low for five clock cycles after the rising edge of RSTI to indicate to the CPU that the address translation mode must be selected. 2.4.1 Interconnections c 00 The MMU runs synchronously with the CPU, sharing with it a single multiplexed addressl data bus. The interconnections used by the MMU for bus control, when used in conjunction with the NS32016, are shown in Figure A-l (Appendix A). The CPU issues 24-bit virtual addresses on the bus, and status information on other pins, pulsing the signal ADS low. These are monitored by the MMU. The MMU issues 25-bit physical addresses on the bus, pulsing the PAV line low. The PAV pulse triggers the address latches and signals the NS32201 TCU to begin a bus cycle. The TCU in turn generates the necessary bus control Signals and synchronizes the insertion of WAIT states, by providing the signal RDY to the MMU and CPU. Note that it is the MMU rather than the CPU that actually triggers bus activity in the system. The A24/HBF signal is sampled by the MMU on the rising edge of ASTI. It indicates the bus size of the attached CPU. A24/HBF must be sampled high for a 16-bit bus and low for a 32-bit bus. On application of power, RSTI must be held low for at least 50 }Jos after Vee is stable. This is to ensure that all on-chip voltages are completely stable before operation. Whenever a Reset is applied, it must also remain active for not less than 64 clock cycles. The rising edge must occur while PHI1 is high. See Figures 2-3 and 2-4. The functions of other interface signals used by the MMU to control bus activity are described below. The STO-ST3 pins indicate the type of cycle being initiated by the CPU. STO is the least-significant bit of the code. Table 2-1 shows the interpretations of the status codes presented on these lines. The NS32201 Timing Control Unit (TCU) provides circuitry to meet the Reset requirements of the NS32082 MMU. Figure 2-5 shows the recommended connections. VCC PHil ----1-----' I ~64CLOCK I-" CYCLES Jl-JL PHI1~JUl t--- ~64CLOCK-1 Rsn----4---------------1~ RSn---""'~"""'~ C~CLES 1-"---1!:50jAsec --~., I TLIEE18692-7 FIGURE 2·4. General Reset Timing TLIEE18692-6 FIGURE 2·3. Power·On Reset Requirements Vee NS32201 NS32082 SERIES 32000 TCU MMU CPU r---------, I I RESET 1>--1-+-.......;.-+-"""""-....--+1 nSTI 1L _________ .JI I RSTO EXTERNAL RESET (OPTIONAL) ~5Ql'sec RESET SWITCH (OPTIONAL) TLIEEIB692-B FIGURE 2·5. Recommended Reset Connections, Memory·Managed System 3-47 ~ ...... c 2.0 Functional Description (Continued) contents of the status bits (R and M) in the Page Table Entries, and for implementing bus timing adjustments needed by the debugging features. The MMU also aborts invalid accesses attempted by the CPU. This is done by pulsing the RSTI ABT pin low for one clock period. (A pulse longer than one clock period is interpreted by the CPU as a Reset command). Status codes that are relevant to the MMU's function during a memory reference are: 1000,1001 Instruction Fetch status, used by the debugging features to distinguish between data and instruction references. 1010 Data Transfer. A data value is to be transferred. Because the MMU performs only 16-bit transfers, some additional circuitry is needed to interface it to the 32-bit data bus of an NS32032-based system. However, since the MMU never writes to the most-significant word of a Page Table Entry, the only special requirement is that it must be able to read from the top half of the bus. This can be accomplished as shown in Figure A-2 (Appendix A) by using a 16-bit unidirectional buffer and some gating circuitry that enables it whenever an MMU-initiated bus cycle accesses an address ending in binary "1 0". The bus connections required in conjunction with the NS32332 CPU are somewhat more complex (see the NS32332 data sheet), but the sequences of events documented here still hold. 1011 Read RMW Operand. Although this is always a Read cycle, the MMU treats it as a Write cycle for purposes of protection and breakpointing. 1100 Read for effective address. Data used for address calculation is being transferred. All other status codes are treated as data accesses if they occur in conjunction with a pulse on the ADS pin. Note that these include Interrupt Acknowledge and End of Interrupt cycles performed by the CPU. The status codes 1101, 1110 and 1111 are also recognized by the MMU in conjunction with pulses on the SPC line while it is executing Slave Processor instructions, but these do not occur in a context relevant to address translation. 2.4.2 CPU-Initiated Bus Cycles A CPU-initiated bus cycle is performed in a minimum of five clock cycles (four in the case of the NS32332): T1, TMMU, T2, T3 and T4, as shown in Figure 2-6. TABLE 2-1. STO-ST3 Encodings (STO Is the Least Significant) 0000 -Idle: CPU Inactive on Bus 0001 -Idle: WAIT Instruction 0010- (Reserved) 0011 -Idle: Waiting for Slave 0100 - Interrupt Acknowledge, Master 0101 -Interrupt Acknowledge, Cascaded 0110- End of Interrupt, Master 0111 - End of Interrupt, Cascaded 1000 - Sequential Instruction Fetch 1001 - Non-Sequential Instruction Fetch 1010- Data Transfer 1011 - Read Read-Modify-Write Operand 1100 - Read for Effective Address 1101 - Transfer Slave Operand 1110- Read Slave Status Word 1111 - Broadcast Slave 10 During period T1, the CPU places the virtual address to be translated on the bus, and the MMU latches it internally and begins translation. The MMU also samples the ODIN pin, the status lines STO-ST3, and the U/S pin to determine how the CPU intends to use the bus. During period TMMU the CPU floats its bus drivers and the MMU takes one of three actions: 1) If the translation for the virtual address is resident in the MMU's TLB, and the access being attempted by the CPU does not violate the protection level of the page being referenced, the MMU presents the translated address and generates a PAY pulse to trigger a bus cycle in the rest of the system. See Figure 2-6. 2) If the translation for the virtual address is resident in the MMU's TLB, but the access being attempted by the CPU is not allowed due to the protection level of the page being referenced, the MMU generates a pulse on the RST/ABT pin to abort the CPU's access. No PAY pulse is generated. See Figure 2-7. The ODIN line indicates the direction of the transfer: 0 = Read, 1 = Write. ODIN is monitored by the MMU during CPU cycles to detect write operations, and is driven by the MMU during MMU-initiated bus cycles. The U/S pin indicates the privilege level at which the CPU is making the access: 0 = Supervisor Mode, 1 = User Mode. It is used by the MMU to select the address space for translation and to perform protection level checking. Normally, the U/S pin is a direct reflection of the U bit in the CPU's Processor Status Register (PSR). The MOVUS and MOVSU CPU instructions, however, toggle this pin on successive operand accesses in order to move data between virtual spaces. 3) If the translation for the virtual address is not resident in the TLB, or if the CPU is writing to a page whose M bit is not yet set, the MMU takes control of the bus asserting the FLT signal as shown in Figure 2-8. This causes the CPU to float its bus and wait. The MMU then initiates a sequence of bus cycles as described in Section 2.4.3. From state T2 through T4 data is transferred on the bus between the CPU and memory, and the TCU provides the strobes for the transfer. During this time the MMU floats The MII.;U uses the FLT line to take control of the bus from the CPU. It does so as necessary for updating its internal TLB from the Page Tables in memory, for maintaining the 3-48 z 2.0 Functional Description (J) W N (Continued) pins ADO-AD15, and handles pins A16-A24 according to the mode of operation (16-bit or 32-bit) selected during reset (Section 2.3). 2) There is a translation for that virtual address in the TLB, but the page is being written for the first time (the M bit in its Level-2 Page Table Entry is 0). The MMU treats this case as if there were no translation in the TLB, and performs a Page Table lookup in order to set the M bit in the Level-2 Page Table Entry as well as in the TLB. In 16-bit bus mode, the MMU drives address lines A 16-A24 from TMMU through T4 and they need not be latched externally. This is appropriate for the NS32016 CPU, which uses only ADO-AD15 for data transfers. In 32-bit bus mode, the MMU asserts the physical address on pins A16-A24 only during TMMU, and floats them from T2 through T4 because the CPU uses them for data transfer. In this case the physical address presented on these lines must be latched externally using PAY. During the Page Table lookup the MMU drives the DDIN signal. The status lines STO-ST3 and the U/S pin are not released by the CPU, and retain their original settings while the MMU uses the bus. The Byte Enable signals from the CPU (HBE in 16-bit systems, BEO-BE3 in 32-bit systems) should in general be handled externally for correct memory referencing. (The current NS32016 CPU does, however, handle HBE in a manner that is acceptable in many systems at clock rates of 12.5 MHz or less.) Bus cycles initiated by the MMU are always nested within CPU-initiated bus cycles; that is, they appear after the MMU has accepted a virtual address from the CPU and has set the FLT line active. The MMU will initiate memory cycles in the following cases: In the clock cycle immediately after T4 of the last lookup cycle, the MMU removes the FLT signal, issues the translated address, and pulses PAY to continue the CPU's access. 1) There is no translation in the MMU's TLB for the virtual address issued by the CPU, meaning that the MMU must reference the Page Tables in memory to obtain the translation. TI ..... Figure 2-8 shows the sequence of events in a Page Table lookup. After asserting FLT, the MMU waits for one additional clock cycle, then reads the Level-1 Page Table Entry and the Level-2 Page Table Entry in four consecutive memory Read cycles. Note that the MMU performs two 16-bit transfers to read each Page Table Entry, regardless of the width of the CPU's data bus. There are no idle clock cycles between MMU-initiated bus cycles unless a bus request is made on the HOLD line (Section 2.6). 2.4.3 MMU·lnitiated Cycles n ~ Q Having made the necessary memory references, the MMU either aborts the CPU access or it provides the translated address and allows the CPU's access to continue to T2. Whenever the MMU generates an Abort pulse on the RST I ABT pin, the CPU enters state T2 and then Ti (idle), ending the bus cycle. Since no PAY pulse is issued by the MMU, the rest of the system remains unaware that an access has been attempted. The MMU requires that no further memory references be attempted by the CPU for at least two clock cycles after the T2 state, as shown in Figure 2-7. This requirement is met by all Series 32000 CPU's. During this time, the RDY line must remain high. This requirement is met by the NS32201 TCU. T4 OR Q ao Note that when the MMU sets FLT active, the clock cycle originally called TMMU is redesignated Tf. Clock cycles in which the PAY pulse occurs are designated TMMU. TMMU T2 T4 T3 PHil [ lWL-1"L -1"L WL WL WL J PHI2 [ X v. ADDR. X I .__ h. X V.ADDR. ~Rj----- A16-24 [ ADO-IS [ --< - X PH. ADDR. DATA IN -- &I -c ADS [ PAY [ Ir ODIN [ m[ (HIGH) -~ u/s [ .-,.....- X -~ .-,.....- X STO-3 [ TLlEE/B692-9 FIGURE 2-6. CPU Read Cycle; Translation in TLB (TLB Hit) 3-49 2.0 Functional Description (Continued) T1 TWWU T2 T4 13 n T1 OR c= -------- c= (HIGH) RSi'/m[ m[ \~_~/(2) HOL6[ (BY CPU) RDY[ TL/EE/8692-10 Note 1: The CPU drives the bus If a write cycle is aborted. Note 2: FLT may ba pulsed if a breakpoint on physical address is enabled or an execution breakpoint is triggered. Note 3: If this bus cycle is a write cycle to a write-protected page, FLT is asserted for two clock cycles and the abort pulse is delayed by one clock cycle. FIGURE 2·7. Abort Resulting from Protection Violation; Translation In TLB ITf... I I I ... I _n... n.. n.. n.. n.. 1..n.. n.. n.. n... ru ru ru ru 1..n.. n.. n.. n.. ru ru ru 1..rL -'Ul Jl Jl Jl Jl Jl Jl Ul U1 Ul Ul.Jl Ul U1 U1 Jl Ul 11U1 Ul ~ Jl11U1 x:P£~ ~. ifl- ·~A~· f~- ·~R· 'f~- fSR· f~- ·~R 1('"1 X CPU ACCESS T1 Tf T1 CPU STATES WWU STATES L.S. WORD PTE. t M.S. WORD PTE. I L.S. WORD PTE.21 M.S. WORD PTE.21 CPU ACCESS T3 14 Tf ntt.4U T2 TI I·Tf 1 Tf l\IM~ T2 1 T3 1 T4 TMM~ T2 1 T3 1 T4 TMM~ T2 1 T3 1T4 TMM~ 12 1 T3 1 T4 TMW~ T2 1 T3 1T4 PHI1[ PHI2[ BUS[ PH."AD. DATA OUT '-~ V IV '-- IV V 1\ V I I \ \. t-- V- r- I\- .r - \.. - r t-- rL r-~ I- \r- I{ (3) (I) Note 1: If the R bit on the Level-' PTE must be set, a write cycle is inserted here. Note 2: If enher the R or the M bit on the Level-2 PTE must be set, a write cycle is inserted here. Note 3: If a breakpoint on physical address is enabled, an extra clock cycle is inserted here. FIGURE 2·8. Page Table Lookup 3-50 - TL/EE/8692-11 2.0 Functional Description (Continued) In Figures 2-6 and 2-8, note that during T3 all bus control signals are flat. Therefore, a bus cycle can be cleanly extended by causing the T3 state to be repeated. This is the purpose of the ROY (Ready) pin. The Page Table Entries are read starting with the low-order word. If the V bit (bit 0) of the low-order word is zero, or the protection level field PL (bits 1 and 2) indicates that the CPU's attempted access is illegal, the MMU does not generate any further memory cycles, but instead issues an Abort pulse during the clock cycle after T4 and removes the FLT signal. The CPU continues to T2 and then becomes idle on the bus, as shown in Figure 2-9. Immediately before T3 begins, on the falling edge of clock phase PHI2, the ROY line is sampled by the CPU and/or the MMU. If ROY is high, the next state after T3 will be T4, ending the bus cycle. If it is low, the next state after T3 will be another T3 and the ROY line will be sampled again. ROY is sampled in each following clock period, with insertion of additional T3 states, until it is sampled high. Each additional T3 state inserted is called a "WAIT state." If the Rand/or M bit (bit 3 or 4) of the low-order word must be updated, the MMU does this immediately in a single Write cycle, before reading the high-order word of the Page Table Entry. All bits except those updated are rewritten with their original values. During CPU bus cycles, the MMU monitors the ROY pin only if the 16-bit mode is selected. This is necessary since the MMU drives the address lines A16-A24, and needs to detect the end of the bus cycle in order to float them. At most, the MMU writes two 16-bit words to memory during a translation: the first to the Level-I table to update the R bit, and the second to the Level-2 table to update the R and/ or M bits. If the 32-bit mode is selected, the above address lines are floated following the TMMU state. The MMU will be ready to perform another translation after three clock cycles, and the ROY line is ignored. 2.4.4 Cycle Extension To allow sufficient strobe widths and access time requirements for any speed of memory or peripheral device, the NS32082 provides for extension of a bus cycle. Any type of bus cycle, CPU-initiated or MMU-initiated, can be extended, except Slave Processor cycles, which are not memory or peripheral references. The ROY pin is driven by the NS32201 Timing Control Unit, which applies WAIT states to the CPU and MMU as requested on its own WAIT request input pins. c c II (BY CPU) TL/EE/8692-12 Note 1: If a breakpoint on physical address is enabled, an extra clock cycle is inserted here. FIGURE 2-9. Abort Resulting after a Page Table Lookup 3-51 C) ..- ~ co ~ C") rn z r---------------------------------------------------------------------------------, 2.0 Functional Description (Continued) 2.5 SLAVE PROCESSOR INTERFACE The CPU and MMU execute four instructions cooperatively. These are LMR, SMR, RDVAL and WRVAL, as described in Section 2.5.2. The MMU takes the role of a Slave Processor in executing these instructions, accepting them as they are issued to it by the CPU. The CPU calculates all effective addresses and performs all operand transfers to and from memory and the MMU. The MMU does not take control of the bus except as necessary in normal operation; i.e., to translate and validate memory addresses as they are presented by the CPU. The sequence of transfers ("protocol") followed by the CPU and MMU involves a special type of bus cycle performed by the CPU. This "Slave Processor" bus cycle does not involve the issuing of an address, but rather performs a fast data transfer whose purpose is pre-determined by the form of the instruction under execution and by status codes asserted by the CPU. transfers, and is also pulsed low by the MMU to acknowledge, when necessary, that it is ready to continue execution of an MMU instruction. Since SPC is normally in a high-impedance state, it must be pulled high with a 10 kO resistor, as shown. The MMU also monitors the status lines STOST3 to follow the protocol for the instruction being executed. Data is transferred between the CPU and the MMU with Slave Processor bus cycles, illustrated in Figures 2-10 and 2-11. Each bus cycle transfers one byte or one word (16 bits) to or from the MMU. Slave Processor bus cycles are performed by the CPU in two clock periods, which are labeled T1 and T4. During T1, the CPU activates SPC and, if it is writing to the MMU, it presents data on the bus. During T 4, the CPU deactivates SPC and, if it is reading from the MMU, it latches data from the bus. The CPU guarantees that data written to the MMU is held through T4 to provide for the MMU's hold time requirements. The CPU also guarantees that the status code on STO-ST3 becomes valid, at the latest, during the clock period preceding T1. The status code changes during T4 to antiCipate the next bus cycle, if any. 2.5.1 Slave Processor Bus Cycles The interconnections between the CPU and MMU for Slave Processor communication are shown in Figures A-1 and A-2 (Appendix A). The low-order 16 bits of the bus are used for data transfers. The SPC signal is bidirectional. It is pulsed by the CPU as a low-active data strobe for Slave Processor Note that Slave Processor bus cycles are never extended with WAIT states. The RDY line is not sampled. PREV.CYCLE I PHil [ PHI2 [ SPC [ ADO-AD15 [ STO-ST3 [ ADS [ iiiiiN [ T40RTi NEXT CYCLE T1 T4 T1 ORTi I TL/EE/8692-13 Note 1: CPU samples Dala Bus here. FIGURE 2-10. Slave Access Timing; CPU Reading from MMU 3-52 z 2.0 Functional Description (Continued) PREVo CYCLE I PHil [ PHI 2 [ SPC [ AOO-AD15 [ STO-ST3 [ ADS [ ODiN [ en w I ~ T1 T40RTI o co NEXT CYCLE T4 T1 aRT; ~ I .....• o VALID TL/EE/8692-14 Note 1: MMU samples Data Bus here. FIGURE 2·11. Slave Access Timing; CPU Writing to MMU In executing the SMR instruction (Store MMU Register, Table 2-3), the CPU also issues the ID Byte and the Operation Word of the instruction to the MMU. It then waits for the MMU to signal (by pulsing SPC low) that it is ready to present the specified register's contents to the CPU. Upon receiving this "Done" pulse, the CPU reads first a "Status Word" (dictated by the protocol for Slave Processor instructions) which the MMU provides as a word of all zeroes. The CPU then reads the contents of the selected register in two successive Slave Processor bus cycles, and places this result value into the instruction's destination (a CPU generalpurpose register or a memory location). In executing the RDVAL (Read-Validate) or WRVAL (WriteValidate) instruction, the CPU again issues the ID Byte and the Operation Word to the MMU. However, its next action is to initiate a one-byte Read cycle from the memory address whose protection level is being tested. It does so while presenting status code 1010; this being the only place that this status code appears during a RDVAL or WRVAL instruction. This memory access triggers a special address translation from the MMU. The translation is performed by the MMU using User-Mode mapping, and any protection violation occurring during this memory cycle does not cause an Abort. The MMU will, however, abort the CPU if the Level-1 Page Table Entry is invalid. 2.5.2 Instruction Protocols MMU instructions have a three-byte Basic Instruction field conSisting of an ID byte followed by an Operation Word. See Figure 3-10 for the MMU instruction encodings. The ID Byte has three functions: 1) It identifies the instruction as being a Slave Processor instruction. 2) It specifies that the MMU will execute it. 3) It determines the format of the following Operation Word of the instruction. The CPU initiates an MMU instruction by issuing first the ID Byte and then the Operation Word, using Slave Processor bus cycles. The ID Byte is sent on the least-significant byte of the bus, in conjunction with status code 1111 (Broadcast ID Byte). The Operation Word is sent on the entire 16-bit data bus, with status code 1101 (Transfer Operation Word I Operand). The Operation Word is sent with its bytes swapped; i.e., its least-significant byte is presented to the MMU on the most-significant half of the 16-bit bus. Other actions are taken by the CPU and the MMU according to the instruction under execution, as shown in Tables 2-2, 2-3 and 2-4. In executing the LMR instruction (Load MMU Register, Table 2-2), the CPU issues the ID Byte, the Operation Word, and then the operand value to be loaded by the MMU. The register to be loaded is specified in a field within the Operation Word of the instruction. Upon completion of the address translation, the MMU pulses SPC to acknowledge that the instruction may continue execution. 3-53 • 2.0 Functional Description (Continued) TABLE 2·2. LMR Instruction Protocol CPU Action Issues ID Byte of instruction, pulsing SPC. Sends Operation Word of Instruction, pulsing SPC. Issues low-order word of new register value to MMU, pulsing SPC. Issues high-order word of new register value to MMU, pulsing SPC. Status MMUAction 1111 1101 1101 Accepts ID Byte. Decodes instruction. Accepts word from bus; places it into low-order half of referenced MMU register. Accepts word from bus; places it into high-order half of referenced MMU register. 1101 TABLE 2·3. SMR Instruction Protocol CPU Action MMUAction Status Issues ID Byte of Instruction, pulsing SPC. Sends Operation Word of instruction, pulsing SPC. Waits for Done pulse from MMU. Pulses SPC and reads Status Word from MMU. Pulses SPC, reading low-order word of result from MMU. Pulses SPC, reading high-order word of result from MMU. 1111 1101 xxxx 1110 1101 1101 Accepts ID Byte. Decodes instruction. Sends Done pulse on SPC. Presents Status Word (all zeroes) on bus. Presents low-order word of referenced MMU register on bus. Presents high-order word of referenced MMU register on bus. TABLE 2-4. RDVAL/WRVAL Instruction Protocol Status MMUAction Issues ID Byte of instruction, pulsing SPC. Sends Operation Word of instruction, pulsing SPC. Performs dummy one-byte memory read from operand's location. CPU Action 1111 1101 1010 Waits for Done pulse from MMU Sends SPC pulse and reads Status Word from MMU; places bit5 of this word into the F bit of the PSR register. xxxx 1110 Accepts ID Byte. Decodes instruction. Translates CPU's address, using User-Mode mapping, and performs requested test on the address presented by the CPU. Aborts the CPU if the level-1 page table entry is invalid. Starts a Memory Cycle from the Translated Address if the translation is successful. Aborts on protection violations are temporarily suppressed. Sends Done pulse on SPC. Presents Status Word on bus, indicating in bit 5 the result of the test. If the translation is successful the MMU will also start a dummy memory cycle from the translated address. See Figure 2-12. Note that, during this time the CPU will monitor the RDY line. Therefore, for proper operation, the RDY line must be kept high if the memory cycle is not performed. Requests for DMA are presented in parallel to both the CPU and MMU on the HOLD pin of each. The component that currently controls the bus then activates its Hold Acknowledge output to grant bus access to the requesting device. When the CPU grants the bus, the MMU passes the CPU's HLDA signal to its own HLDAO pin. When the MMU grants the bus, it does so by activating its HLDAO pin directly, and the CPU is not involved. HLDAI in this case is ignored. The CPU then reads from the MMU a Status Word. Bit 5 of this Status Word indicates the result of the instruction: o if the CPU in User Mode could have made the corresponding access to the operand at the specified address (Read in RDVAL, Write in WRVAL), Refer to Figures 4-14, 4-15 and 4-16 for details on bus granting sequences. 1 if the CPU would have been aborted for a protection violation. 2.7 BREAKPOINTING The MMU provides the ability to monitor references to two memory locations in realtime, generating a Breakpoint trap on occurrence of any specified type of reference to either location made by a program. In addition, a Breakpoint trap may be inhibited until a specified number of such references have been performed. Bit 5 of the Status Word is placed by the CPU into the F bit of the PSR register, where it can be tested by subsequent instructions as a condition code. Note: The MMU sets the R bit on ROVAL; Rand M bits on WRVAL. 2.6 BUS ACCESS CONTROL Breakpoint monitoring is enabled and regulated by the setting of appropriate bits in the MSR and BPRO-1 registers. See Sections 3.5 and 3.7. The NS320B2 MMU has the capability of relinquishing its access to the bus upon rquest from a DMA device. It does this by using HOLD, HLDAI and HLDAO. A Breakpoint trap is signalled to the CPU as either a NonMaskable Interrupt or an Abort trap, depending on the setting of the AI bit in the MSR register. Details on the interconnections of these pins are provided in Figures A-1 and A-2 (Appendix A). 3-54 Z 2.0 Functional Description CPU STATES MMU STATES tn (0) (Continued) N o I T2 T3 T4 T2 T3 T4 CD ... ~ o PHil [ PHI2 [ ADS [ FU[-+...............t-..........~..........~....._(I_).....+' SPC [ RST/ ABT [ ROY [ (3) TLlEE/8692-15 Note 1: FLT is asserted if the translation is not in the TLB or a WRVAL instruction is executed and the M Bit is not set. Note 2: If the Level-t PTE is not valid, an abort is generated, SPC is issued in TMMU and FLT is deasserted in T 2. Note 3: If a protection violation occurs or the Level-2 PTE is invalid, an Idle State is inserted here, PAV is not pulsed and SPC is pulsed during this Idle State. FIGURE 2·12. FLT Deassertlon During RDVAL/WRVAL Execution The MSR register also indicates which breakpoint register triggered the break, and the direction (read or write) and type of memory cycle that was detected. The breakpoint address is not placed into the EIA register, as this register holds the addresses of address translation errors only. The breakpoint address is, however, available in the indicated Breakpoint register. On occurrence of any trap generated by the MMU, including the Breakpoint trap, the BEN bit in the MSR register is immediately cleared, disabling any further Breakpoint traps. Enabling breakpoints may cause variations in the bus timing given in the previous sections. Specifically: 2.7.1 Breakpoints on Execution The Series 32000 CPUs have an instruction prefetch which requires synchronization with execution breakpoints. In consideration of this, the MMU only issues an execution breakpoint when an instruction is prefetched with a nonsequential status code and the conditions specified in a breakpoint register are met. This guarantees that the instruction prefetch queue is empty and there are not pending instructions in the pipeline. There are three cases to consider: Case 1: A nonsequential instruction prefetch is made to a breakpointed address. Response: The queue is necessarily empty. The breakpoint is issued. Case 2, 3: A sequential prefetch is made to a breakpointed address OR a prefetch is made to an even address and the breakpoint is on the next odd address. Response: In these cases, there may be instructions pending in the queue which must finish before the breakpoint is fired. Instead of putting the opcode byte (the one specified by the breakpointed address) in the queue, a DIA instruction is substituted for it. DIA is a single byte instruction which branches to itself, causing a queue flush. When the DIA executes, the breakpoint address is again issued, this time with nonsequential fetch status and the problem is reduced to case 1. 1) While either breakpoint is enabled to monitor physical addresses, the MMU inserts an additional clock period into all bus cycles by asserting the FLT line for one clock. See Figure 2-13. 2) If the CPU initiates an instruction prefetch from a location at which a breakpoint is enabled on Execution, the MMU asserts the FLT line to the CPU, performs the memory cycle itself, and issues an edited instruction word to the CPU. See Figure 2-14 and Section 2.7.1. Note: Instructions which use two operands, a read-type and a write-type (e.g., MOVO 0(rl).0(r2), with the first operand valid and protected to allow user reads, and the second operand either invalid (page fault) or write protected, cause a read-type break event to occur for the first operand regardless of the outcome of the instruction. Each time the instruction is retried, the read-event is recorded. Hence, the break· point count register may reflect a different count than a casual assumption would lead one to. The same effect can occur on a RMW type operand with read only protection. Note: Execution breakpoints cannot be used when the MMU is connected to either an NS32032 or an NS32332 CPU. 3-55 ~ N ! 2.0 Functional Description (Continued) ~ z Tl TMMU T2 Tf T4 T3 _...• .'. - -- --_.'. •'.. _-- ..'• TLlEE/8692-16 Note: If a breakpoint condition is met and abort on breakpoint is enabled. the bus cycle is aborted. In this case FLT is stretched by one clock cycle. FIGURE 2·13. Bus Timing with Breakpoint on Physical Address Enabled CPU STATES MMU STATES I Tl Tl TMMU TMMU Tf T2 Tf T3 T2 T4 T3 11 T4 11 Tl OR 11 I TlOR11 PHil [ PHI2[ A1S-24[ ~~--- AOO-1S[ -c AOS[ PAVe FLT[ RD[ (BY CPU) ROY[ (1) TL/EE/8692-17 Note 1: If a breakpoint on physical address is enabled. an extra clock cycle is inserted here. FIGURE 2·14. Execution Breakpoint Timing; Insertion of DIA Instruction 3-56 .--------------------------------------------------------------------------,z (J) 3.0 Architectural Description Co) N 3.1 PROGRAMMING MODEL The MMU contains a set of registers through which the CPU controls and monitors management and debugging func· tions. These registers are not memory· mapped. They are examined and modified by executing the Slave Processor instructions LMR (Load Memory Management Register) and SMR (Store Memory Management Register). These instruc· tions are explained in Section 3.11, along with the other Slave Processor instructions executed by the MMU. A brief description of the MMU registers is provided below. Details on their formats and functions are provided in the following sections. 3.2 MEMORY MANAGEMENT FUNCTIONS The NS32082 uses sets of tables in physical memory (the "Page Tables") to define the mapping from virtual to physical addresses. These tables are found by the MMU using one of its two Page Table Base registers: PTBO or PTB1. Which register is used depends on the currently selected address space. See Section 3.2.2. o(X) .... N o 3.2.1. Page Table Structure The page tables are arranged in a two·level structure, as shown in Figure3-f. Each of the MMU's PTBn registers may point to a Level-1 page table. Each entry of the Level·1 page table may in turn point to a Level-2 page table. Each Level-2 page table entry contains translation information for one page of the virtual space. The Level·1 page table must remain in physical memory while the PTBn register contains its address and translation is enabled. Level-2 Page Tables need not reside in physical memory permanently. but may be swapped into physical memory on demand as is done with the pages of the virtual space. The Level-1 Page Table contains 256 32-bit Page Table Entries (PTE'S) and therefore occupies 1 Kbyte. Each entry of the Level·1 Page Table contains fields used to construct the physical base address of a Level-2 Page Table. These fields are a 15·bit PFN field, providing bits 9-23 of the physical address, and an MS bit providing bit 24. The remaining bits (0-8) are assumed zero, placing a Level·2 Page Table always on a 512-byte (page) boundary. PTBO, PTB1-Page Table Base Registers. They hold the physical memory addresses of the Page Tables referenced by the MMU for address translation. See Section 3.3. EIA-Errorllnvalidate Register. Dual·function register. used to display error addresses and also to purge cached translation information from the TLB. See Section 3.4. BPRO, BPR1-Breakpoint Registers. Specify the condi· tions under which a breakpoint trap is generated. See Sec· tion 3.5. BCNT-Breakpoint Counter Register. 24·bit counter used to count BPRO events. Allows the breakpoint trap from the BPRO register to be inhibited until a specified number of events have occurred. See Section 3.6. MSR-Memory Management Status Register. Contains basic control and status fields for all MMU functions. See Section 3.7. -32BITSPTBn ~_m- 512 BYTES I • 256 ENTRIES 1 . LEVEL·1 PAGE TABLE MEMORY LEVEL·2 PAGE TABLES TL/EE/8692-18 FIGURE 3·1. Two·Level Page Tables 3-57 .... r--------------------------------------------------------------------------, Q ~ ! CO) U) z 3.0 Architectural Description (Continued) Level-2 Page Tables contain 128 32-bit Page Table entries, and so occupy 512 bytes (1 page). Each Level-2 Page Table Entry points to a final 512-byte physical page frame. In other words, its PFN and MS fields provide the Page Frame Number portion (bits 9-24) of the translated address (Figure 3-3). The OFFSET field of the translated address is taken directly from the corresponding field of the virtual address. The PL field is modified only by software. In a Level-1 PTE, it limits the maximum access level allowed for all pages mapped through that PTE. TABLE 3·1 Access Protection Levels Mode 3.2.2 Virtual Address Spaces When the Dual Space option is selected for address transla· tion in the MSR (Sec. 3.7) the MMU uses two maps: one for translating addresses presented to it in Supervisor Mode and another for User Mode addresses. Each map is referenced by the MMU using one of the two Page Table Base registers: PTBO or PTB1. The MMU determines the CPU's current mode by monitoring the state of the UIS pin and applying the following rules. 1) While the CPU is in Supervisor Mode (U/S pin = 0), the CPU is said to be presenting addresses belonging to Address Space 0, and the MMU uses the PTBO register as its reference for looking up translations from memory. 2) While the CPU is in User Mode (U/S pin = 1), and the MSR OS bit is set to enable Dual Space translation, the CPU is said to be presenting addresses belonging to Address Space 1, and the MMU uses the PTB1 register to look up translations. 3) If Dual Space translation is not selected in the MSR, there is no Address Space 1, and all addresses presented in both Supervisor and User modes are considered by the MMU to be in Address Space O. The privilege level of the CPU is used then only for access level checking. 01 10 11 1 no access no access read only full access Supervisor a read only full access full access full access 00 Referenced. This is a status bit, set by the MMU and cleared by the operating system, that indicates whether the page mapped by this PTE has been referenced within a period of time determined by the operating system. It is intended to assist in implementing memory allocation strategies. In a Level-1 PTE, the R bit indicates only that the Level-2 Page Table has been referenced for a translation, without necessarily implying that the translation was successful. In a Level-2 PTE, it indicates that the page mapped by the PTE has been successfully referenced. R = 1 => The page has been referenced since the R bit was last cleared. R = a=> The page has not been referenced since the R bit was last cleared. Note: The RDVAL and WRVAL instructions set the Level-l and Level-2 bits for the page whose protection level Is tested. See Sections 2.5.2 and 3.11. M Modified. This is a status bit, set by the MMU whenever a write cycle is successfully performed to the page mapped by this PTE. It is initialized to zero by the operating system when the page is brought into physical memory. M = 1 => The page has been modified since it was last brought into physical memory. M = a=> The page has not been modified since it was last brought into physical memory. 3.2.3 Page Table Entry Formats Figure 3-2 shows the formats of Level-1 and Level-2 Page Table Entries (PTE's). Their formats are identical except for the "M" bit, which appears only in a Level-2 PTE. In Level-1 Page Table Entries, this bit pOSition is undefined, and is altered in an undefined manner by the MMU while the V bit is 1. The bits are defined as follows: PL Protection Level Bits (PL) User R Note: When the CPU executes a Dual-Space Move instruction (MOVUSi or MOVSUi), it temporanly enters User Mode by switching the slste of the U/S pin. Accesses made by the CPU during this time are treated by the MMU as User-Mode accesses for both mapping and access level checking. It is pOSSible, however, to force the MMU to assume Supervisor-Mode privilege on such accesses by selting the Access Overnde (AO) bit in the MSR (Sec. 3.7). V U/S Note: The WRVAL instruction sets the M bit for the page whose protection level is tested. See Sections 2.5.2 and 3.11. Valid. The V bit is set and cleared only by software. V= 1 => The PTE is valid and may be used for translation by the MMU. NSC Reserved. These bits are ignored by the MMU and their values are not changed. V=O=> The PTE does not represent a valid translation. Any attempt to use this PTE will cause the MMU to generate an Abort trap. While V = 0, the operating system may use all other bits except the PL field for any desired function. Protection Level. This two-bit field establishes the types of accesses permitted for the page in both User Mode and Supervisor Mode, as shown in Table 3-1. They are reserved by National, and therefore should not be used by the user software. USR User bits. These bits are ignored by the MMU and their values are not changed. They can be used by the user software. TUEE/8692-19 FIGURE 3·2. A Page Table Entry 3-58 3.0 Architectural Description (Continued) PFN Page Frame Number. This 15-bit field provides bits 9-23 of the Page Frall]e Number of the physical address. See Figure 3-3. virtual Page Number field is further divided into two fields, INDEX 1 and INDEX 2. Bits 0-8 constitute the OFFSET field, which identifies a byte's position within the accessed page. Since the byte position within a page does not change with translation, this value is not used, and is simply echoed by the MMU as bits 0-8 of the final physical address. MS Memory System. This bit represents the most significant bit of the physical address, and is presented by the MMU on pin A24. This bit is treated by the MMU no differently than any other physical address bit, and can be used to implement a 32-Mbyte physical addressing space if desired. The 8-bit INDEX 1 field of the virtual address is used as an index into the Level-1 Page Table, selecting one of its 256 entries. The address of the entry is computed by adding INDEX 1 (scaled by 4) to the contents of the current Page Table Base register. The PFN and MS fields of that entry give the base address of the selected Level-2 Page Table. 3.2.4 Physical Address Generation When a virtual address is presented to the MMU by the CPU and the translation information is not in the TLB, the MMU performs a page table lookup in order to generate the physical address. The Page Table structure is traversed by the MMU using fields taken from the virtual address. This sequence is diagrammed in Figure 3-3. Bits 9-23 of the virtual address hold the 15-bit Page Number, which in the course of the translation is replaced with the 16-bit Page Frame Number of the physical address. The The INDEX 2 field of the virtual address (7 bits) is used as the index into the Level-2 Page Table, by adding it (scaled by 4) to the base address taken from the Level-1 Page Table Entry. The PFN and MS fields of the selected entry provide the entire Page Frame Number of the translated address. The offset field of the virtual address is then appended to this frame number to generate the final physical address. (11 SELECT 1ST PTE IF DS;D THEN n;O ELSE n;1 FDR USER MODE n;O FDR SUPV MDDE 24 23 (31 GENERATE PHYSICAL ADDRESS TUEE/B692-20 FIGURE 3-3. Virtual to Physical Address Translation 3-59 ....• r------------------------------------------------------------------------------------------, C) C"I CD C) C"I CO) tn Z 3.0 Architectural Description (Continued) (Section 3.7). The ADDRESS field of the EIA register holds the virtual address at which the error occurred, and the AS bit indicates the address space that was in use. In writing a virtual address to the EIA register, the virtual address is specified in the low-order 24 bits, and the AS bit specifies the address space. A TLB entry is purged only if it matches both the ADDRESS and AS fields. Another technique for purging TLB entries is to load a PTBn register. This automatically purges all entries associated with the addressing space mapped by that register. Turning off translation (clearing the MSR TU and/or TS bits) does not purge any entries from the TLB. 3.3 PAGE TABLE BASE REGISTERS (PTBO, PTB1) The PTBn registers hold the physical addresses of the Level-1 Page Tables. The format of these registers is shown in Figure 3-4. The least-significant 10 bits are permanently zero, so that each register always pOints to a 1 Kbyte boundary in memory. The PTBn registers may be loaded or stored using the MMU Slave Processor instructions LMR and SMR (Section 3.11). 3.4 ERRORIINVALIDATE ADDRESS REGISTER (EIA) The Error/Invalidate Address register is a dual-purpose register. 1) When it is read using the SMR instruction, it presents the virtual address which last generated an address translation error. 2) When a virtual address is written into it using the LMR instruction, the translation for that virtual address is purged, if present, from the TLB. This must be done whenever a Page Table Entry has been changed in memory, since the TLB might otherwise contain an incorrect translation value. 3.5 BREAKPOINT REGISTERS (BPRO, BPR1) The Breakpoint registers BPRO and BPR1 specify the addresses and conditions on which a Breakpoint trap will be generated. They are each 32 bits in length and have the format shown in Figure 3-6. All implemented bits of BPRO and BPR1 are readable and writable. Bits 0 through 23 and bit 31 (AS) specify the breakpoint address. This address may be either virtual or physical, as specified in the VP bit. Bits 24 and 25 are not implemented. Bit 26 (CE) is not implemented in register BPR1. The format of the EIA register is shown in Figure 3-5. When a translation error occurs, the cause of the error is reported by the MMU in the appropriate fields of the MSR register (RESERVED) MS I 31 ADDRESS BITS lD-23 24 I 23 TL/EE/8692-21 FIGURE 3-4. Page Table Base Registers (PTBO, PTB1) I 31 24 I 23 oI TL/EE/8692-22 FIGURE 3-5. EIA Register I AS I VP I BE I BR IBwl CE IXIXI : ADD~ESS: oI TLlEE/8692-23 FIGURE 3-6. Breakpoint Registers (BPRO, BPR1) 3-60 z 3.0 Architectural Description (I) (0) I\;) (Continued) Bits 26 through 30 specify the breakpoint conditions. Breakpoint conditions define how the breakpoint address is compared and which conditions permit a break to be generated. A Breakpoint register can be selectively disabled by setting all of these bits to zero. AS Address Space. This bit depends on the setting of the VP bit. For virtual addresses, this bit contains the AS (Address Space) qualifier of the virtual address (Section 3.2.2). For physical addresses, this bit contains the MS (Memory System) bit of the physical address. VP Virtual/Physical. If VP is 0, the breakpoint address is compared against each referenced virtual address. If VP is 1, the breakpoint address is compared against each physical address that is referenced by the CPU (i.e. after translation). BE Break on Execution. If BE is 1, a break is generated immediately before the instruction at the breakpoint address is executed. While this option is enabled, the breakpoint address must be the address of the first byte of an instruction. If BE is 0, this condition is disabled. Branch ACBi BR BSR Bcond CASEi Note: This option cannot be used in systems based on any CPU with a 32bit wide bus. BW CE . co I\;) ...... o Add, Compare and Branch: unless result is zero Branch (Unconditional) Branch to Subroutine Branch (Conditional): only if condition is met Case Branch CXP CXPD DIA Call External Procedure Call External Procedure with Descriptor Diagnose JSR JUMP Jump to Subroutine Jump RET RXP BPT Return from Subroutine Return from External Procedure Breakpoint Trap FLAG RETI Trap on Flag Return from Interrupt: if MSR loaded properly by supervisor Return from Trap: if MSR loaded properly by supervisor Supervisor Call SVC Also all traps or interrupts not generated by the MMU. RETT The BE bit should only be set when the CPU has a 16·bit bus (i.e. NS32016, NS32COI6). In other systems. use instead the BPT instruction placed in memory, to signal a break. BR o TABLE 3-2_lnstructlons Causing Non-Sequential Fetches Break on Read. If BR is 1, a break is generated when data is read from the breakpoint address. Instruction fetches do not trigger a Read breakpoint. If BR is 0, this condition is disabled. Break on Write. If BW is 1, a break is generated when data is written to the breakpoint address or when data is read from the breakpoint address as the first part of a read-modify-write access. If BW is 0, this condition is disabled. Branch to Following Instruction BICPSRi Bit Clear in PSR MOVSUi MOVUSi Move Value from Supervisor to User Space Move Value from User to Supervisor Space Counter Enable. This bit is implemented only in the BPRO register. If CE is 1, no break is generated unless the Breakpoint Count register (BCNT, see below) is zero. The BCNT register decrements when the condition for the breakpoint in register BPRO is met and the BCNT register is not already zero. If CE is 0, the BCNT register is disabled, and breaks from BPRO occur immediately. WAIT Wait: fetches next instruction before waiting BISPSRi LMR LPRi Bit Set in PSR Load Memory Management Register Load Processor Register: unless UPSR is the register specified 3.6 BREAKPOINT COUNT REGISTER (BCNn The Breakpoint Count register (BCNT) permits the user to specify the number of breakpoint conditions given by register BPRO that should be ignored before generating a Breakpoint trap. The BCNT register is 32 bits in length, containing a counter in its low-order 24 bits, as shown in Figure 3-7. The high-order eight bits are not used. Note 1: The bits BR, BW and CE should not all be set. The counting performed by the MMU becomes inaccurate, and in Abort Mode (MSR AI bit set). it can trap a program in such a way as to make it impossible to retry the breakpointed instruction correctly. Note 2: An execution breakpoint should not be counted (BE and CE bits both set) if it is placed at an address that is the destination of a branch, or if it follows a queue-flushing instruction. See Table 3-2. The counting performed by the MMU will be inaccurate if interrupts occur during the fetch of that address. oI TLlEE/8692-24 FIGURE 3-7. Breakpoint Count Register (BCNn 3-61 .... r-----------------------------------------------------------------------------, Q N co Q N C") en z 3.0 Architectural Description (Continued) AO Access Level Override. This bit may be set to temporarily cause User Mode accesses to be given Supervisor Mode privilege. See Section 3.10. Status Fields The BCNT register affects the generation of Breakpoint traps only when it is enabled by the CE bit in the BPRO register. When the BPRO breakpoint condition is encountered, and the BPRO CE bit is 1, the contents of the BCNT register are checked against zero. If the BCNT contents are zero, a breakpoint trap is generated. If the contents are not equal to zero, no breakpoint trap is generated and the BCNT register is decremented by 1. The MSR status fields may be read using the MSR instruction, but are not writable. Instead, all status fields (except the BN bit) may be cleared by loading a "1" into the R bit using the LMR instruction. TE Translation Error. This bit is set by the MMU to indicate that an address translation error has occurred. This bit is cleared by a hardware reset. TET Translation Error Type. This three-bit field shows the reason(s) for the last address translation error reported by the MMU. The format of the TET field is shown below. If the CE bit in the BPRO register is 0, the BCNT register is ignored and the BPRO condition breaks the program execution regardless of the BCNT register's contents. The BCNT register contents are unaffected. 3.7 MEMORY MANAGEMENT STATUS REGISTER (MSR) The Memory Management Status Register (MSR) provides overall control and status fields for both address translation and debugging functions. The format of the MSR register is shown in Figure 3-8. The MSR fields relevant to either of the above functions are described in the following sub-sections. I IL2 I IL1 I PL I PL Protection Level error. The access attempted by the CPU was not allowed by the protection level assigned to the page it attempted to access (forbidden by either of the Page Table Entry PL fields). IL1 Invalid Level 1. The Level-1 Page Table Entry was invalid (V bit = 0). IL2 Invalid Level 2. The Level-2 Page Table Entry was invalid (V bit = 0). 3.7.1 MSR Fields for Address Translation. Control Functions The address translation control bits in the MSR, ad exception of the R bit, are both readable (using the SMR instruc· tion) and writable (using LMR). R TU Reset. When read, this bit's contents are undefined. Whenever a "1" is written into it, MSR status fields TE, B, TET, ED, BD, EST and BST are cleared to all zeroes. (The BN bit is not affected.) Translate User-Mode Addresses. While this bit is "1 ", the MMU translates all addresses presented while the CPU is in User Mode. While it is "0", the MMU echoes all User-Mode virtual addresses without performing translation or access level checking. This bit is cleared by a hardware Reset. ED ED = 1 => Read cycle. Note: Altering the TU bit has no effect on the contents of the TLB. TS EST Error Status. This 3-bit field is set on an address translation error to the low-order three bits of the CPU status bus. Combinations appearing in this field are summarized below. 000 Sequential instruction fetch Translate Supervisor-Mode Addresses. While this bit is "1 ", the MMU translates all addresses presented while the CPU is in Supervisor Mode. While it is "0", the MMU echoes all Supervisor-Mode virtual addresses without translation or access level checking. This bit is cleared by a hardware Reset. 001 010 011 Note: Altering the TS bit has no effect on the contents of the TLB. DS These error indications are not mutually exclusive. A protection level error and an invalid translation error can be reported simultaneously by the MMU. Error Direction. This bit indicates the direction of the transfer that the CPU was attempting on the most recent address translation error. ED=O=>Write cycle. Dual·Space Translation. While this bit is "1", Supervi· sor Mode addresses and User Mode addresses are translated independently of each other, using separate mappings. While it is "0", both Supervisor Mode addresses and User Mode addresses are translated using the same mapping. See Section 3.2.2. 100 Non-sequential instruction fetch Operand transfer (read or write) The Read action of a read-modify-write transfer (operands of access class "rmw" only: See the Series 32000 Instruction Set Reference Manual for further details). A read transfer which is part of an effective address calculation (Memory Relative or External mode) 01 TL/EE/8692-25 Note: In some Series 32000 documentation. the bits TE, Rand B are jOintly referenced with the keyword "ERC". FIGURE 3·8. Memory Management Status Register (MSR) 3-62 r--------------------------------------------------------------------------, 3.0 Architectural Description (Continued) N 100 3.7.2 MSR Fields for Debugging Control Functions Breakpoint control bits in the MSR are both readable (using the SMR instruction) and writable (using LMR). BEN Breakpoint Enable. Setting this bit enables both Breakpoint Registers (BPRO, BPR1) to monitor CPU activity. This bit is cleared by a hardware reset or whenever a Breakpoint trap or an address translation error occurs. If only one breakpoint register must be enabled, the other register should be disabled by clearing all of its control bits (bits 26-31) to zeroes. A read transfer which is part of an effective address calculation (Memory Relative or External mode) Note: The BST field encodings 000 and 001 differ from those of the EST field (Section 3.7.1) because the MMU inserts a DIA Instruction into the instruction stream in implementing Execution breakpoints (Section 2.7.1). One side effect of this is that a breakpoint trap is never triggered directly by a sequential instruction fetch cycle. AI B Figure 3-9 models the TLB. Information is placed into the TLB whenever the MMU performs a lookup from the Page Tables in memory. If the retrieved mapping is valid (V = 1 in both levels of the Page Tables), and the access attempted is permitted by the protection level, an entry of the TLB is loaded from the information retrieved from memory. The recipient entry is selected by an on-chip circuit that implements a Least-Recently-Used (LRU) algorithm. The MMU places the virtual page number (15 bits) and the Address Space qualifier bit into the Tag field of the TLB entry. User-Only Breakpointing. When this bit is set in con· junction with the BEN bit, it limits the Breakpoint Registers to monitor addresses only while the CPU is in User Mode. Abortllnterrupt. This bit selects the action taken by the MMU on a breakpoint. While AI is "0" the MMU generates a pulse on the INT pin (this can be used to generate a non-maskable interrupt). While AI is "1" the MMU generates an Abort pulse instead. Status Fields The MSR status fields may be read using the SMR instruction, but are not writable. Instead, all status fields (except the BN bit) may be cleared by loading a "1" into the R bit using the LMR instruction. See Section 3.7.1. BD BST Break. This bit is set to indicate that a breakpoint trap has been generated by the MMU. Breakpoint Number. The BN bit contains the register number for the most recent breakpoint trap generated by the MMU. If BN is 1, the breakpoint was triggered by the BPR1 register. If BN is 0, the breakpoint was triggered by the BPRO register. If both registers trigger a breakpoint simultaneously, the BN bit is set to 1. The Value portion of the entry is loaded from the Page Tables as follows: The Translation field (16 bits) is loaded from the MS bit and PFN field of the Level-2 Page Table Entry. The M bit is loaded from the Level-2 Page Table Entry. The PL field (2 bits) is loaded to reflect the net protection level imposed by the PL fields of the Level-1 and Level-2 Page Table Entries. (Not shown in the figure are additional bits associated with each TLB entry which flag it as full or empty, and which select it as the recipient when a Page Table lookup is performed.) Break Direction. This bit indicates the direction of the transfer that the CPU was attempting on the access that triggered the most recent breakpoint trap. It is loaded from the complement of the DDIN pin. BD=O=>Write cycle. BD=1 =>Read cycle. When a virtual address is presented to the MMU for translation. the high-order 15 bits (page number) and the Address Space qualifier are compared associatively to the corresponding fields in all entries of the TLB. When the Tag portion of a TLB entry completely matches the input values, the Value portion is produced as output. If the protection level is not violated, and the M bit does not need to be changed, then the physical address Page Frame number is output in the next clock cycle. If the protection level is Violated, the MMU instead activates the Abort output. If no TLB entry matches, or if the matching entry's M bit needs to be changed, the MMU performs a page-table lookup from memory. Note that for a translation to be loaded into the TLB it is necessary that the Level-1 and Level-2 Page Table Entries be valid (V bit = 1). Also, it is guaranteed that in Breakpoint Status. This 3-bit field is loaded on a Breakpoint trap from the low-order three bits of the CPU status bus. Combinations appearing in this field are summarized below. 000 No break has occurred since the field was last reset. 001 Instruction fetch 010 011 ....o~ 3.8 TRANSLATION LOOKASIDE BUFFER (TLB) The efficiency of the MMU is greatly increased by the TLB, which bypasses the much longer Page Table lookup in over 97% of the accesses made by the CPU. Entries in the TLB are allocated and replaced by the MMU itself; the operating system is not involved. The TLB entries cannot be read or written by software; however, they can be purged from it under program control. BN oQC) The Translation Lookaside Buffer is an on-chip fully associative memory. It provides direct virtual to phYSical mapping for the 32 most recently used pages, requiring only one clock period to perform the address translation. Note: When the BEN bit is set (using the LMR instruction), the MMU en· abies breakpoints only after two non·sequential instruction fetch cycles have been completed by the CPU. See Section 3.9. UB Z en Co) Operand transfer (read or write) The Read action of a read-modify-write transfer (operands of access class "rmw" only: See the Series 32000 Instruction Set Reference Manual for further details). 3-63 • -~ r---------------------------------------------------------------------------------, C) ~ C") U) z 3.0 Architectural Description (Continued) the process of loading a TLB entry (during a Page Table lookup) the Level-1 and Level-2 R bits will be set in memory if they were not already sel. For these reasons, there is no need to replicate either the V bit or the R bit in the TLB entries. 3.9 ENTRYIRE-ENTRY INTO PROGRAMS UNDER DEBUGGING Whenever the MSR is written, breakpoints are disabled. After two non-sequential instruction fetch cycles have completed, they are again enabled if the new BEN bit value is '1'. The recommended sequence for entering a program under test is: Whenever a Page Table Entry in memory is altered by software, it is necessary to purge any matching entry from the TLB, otherwise the MMU would be translating the corresponding addresses according to obsolete information. TLB entries may be selectively purged by writing a virtual address to the EIA register using the LMR instruction. The TLB entry (if any) that matches that virtual address is then purged, and its space is made available for another translation. Purging is also performed by the MMU whenever an address space is remapped by altering the contents of the PTBO or PTB1 register. When this is done, the MMU purges all the TLB entries corresponding to the address space mapped by that register. Turning translation on or off (via the MSR TU and TS bits) does not affect the contents of the TLB. LMR RETT executed with interrupts disabled (CPU PSR I bit off). This feature allows a debugger or monitor program to return control to a program being debugged without the risk of a false breakpoint trap being triggered during the return. The LMR instruction performs the first non-sequential fetch cycle, in effect branching to the next sequential instruction. The RETT (or RETI) instruction performs the second nonsequential fetch as its last memory reference, branching to the first (next) instruction of the program under debug. The non-sequential fetch caused by the RETT instruction, which might not have occurred otherwise, is not monitored. Note: If the value in the PTBO register must be changed, it is strongly recommended that the translation be disabled before loading the new value, otherwise the purge performed may be incomplete. This is due to instruction prefetches and/or memory read cycles occurring during the lMR instruction which may restore TLB entries from the old map. 3_10 ADDRESS TRANSLATION ALGORITHM The MMU either translates the 24-bit virtual address to a 25-bit physical address or reports a translation error. This process is described algorithmically in the following pages. See also Figure 3-3. TAG VIRTUAL ADDRESS (U/S. ZZZ) COMPARISON MSR, New_Value n ; or RETI VALUE AS PAGE NUMBER (15 BITS) PL M TRANSLATION (16 BITS) a xxx 11 a mmm nnn 1 yyy 11 0 a zzz 11 1 PPP 1 www 00 1 qqq TRANSLATED ADDRESS (PPP) TUEE/8692-26 FIGURE 3-9_ TLB Model 3-64 MMU Page Table Lookup and Access Validation Algorithm Legend: x = y x == y x AND y x OR Y '"m 01 x is assigned the value y Comparison expression, true if x is equal to y Boolean AND expression, true only if assertions x and yare both true Boolean inclusive OR expression, true if either of assertions x and y is true Delimiter marking end of statement { ... I Delimiters enclosing a statement block item(i) Bit number i of structure "item" item(i:j) The field from bit number i through bit number of structure "item" item.x The bit or field named "x" in structure "item" DONE Successful end of translation; MMU provides translated address ABORT Unsuccessful end of translation; MMU aborts CPU access This algorithm represents for all cases a valid definition of address translation. Bus activity implied here occurs only if the TLB does not contain the mapping, or if the reference requires that the MMU alter the M bit of the Page Table Entry. Otherwise, the MMU provides the translated address in one clock period. Input (from CPU) : U (1 if U/S is high) W (1 if DDIN input is high) VA Virtual address conSisting of: INDEX_l (from pins A23-A16) INDEX_2 (from pins AD15-AD9) OFFSET (from pins ADS-ADO) ACCESS_LEVEL The access level of a reference is a 2-bit value synthesized by the MMU from CPU status: bit 1 U AND NOT MSR.AO (U from U/S input pin) bi t 0 = 1 for Write cycle, or Read cycle of an "rmw" class operand access o otherwise. Output: PA PhYSical Address on pins A24-A16, AD15-ADO; or Abort pulse on RSTIABT pin. Uses: MSR Status Register: fields TU, TS and DS O~-l80l£SN II NS32082-10 MMU Page Table Lookup and Access Validation Algorithm Page Table Base Register 0 Page Table Base Register 1 Level-l Page Table Entry: fields PFN, PL, V, Rand MS PTEP_l Pointer, holding address of PTE_l PTE_2 Level-2 Page Table Entry: fields PFN, PL, V, M, Rand MS PTEP_2 Pointer, holding address of PTE_2 IF «MSR.TU == 0) AND (U == 1) OR «MSR.TS THEN ( PA(O:23) = VA(O:23) ; PA(24) = 0 ; DONE (Continued) PTBO PTBl PTE_l 0) AND (U ==0) ) I IF (MSR.DS = = 1) AND (U = = 1) THEN ( PTEP_l(24) = PTBloMS ; PTEP_l(23:10) = PTB1(23:1O) PTEP_l(9:2) = VA.INDEX_l ; PTEP_l(l:O) =0 I ELSE PTEP_l(24) = PTBO.MS ; PTEP_l(23:10) = PTBO(23:1O) PTEL1(9:2) = VA.INDEX_l; PTEP_l(l:O) = 0 '"a, If translation not enabled then echo virtual address as physical address. If Dual Space mode and then form Level-l from PTBl else form Level-l from PTBO CPU in User Mode PTE address register, PTE address register. - - - LEVEL 1 PAGE TABLE LOOKUP - - - 0> IF ( ACCESS_LEVEL> PTE_l.PL ) OR (PTE_l.V THEN ABORT ; IF PTE_loR = = 0 THEN PTE_loR PTE_l(4) = (undefined value) ; If protection violation or invalid Level-2 page table then abort the access. 0) Otherwise, set Reference bit if not already set, (the M bit position may be garbaged) 1 PTEL2(24) = PTE_loMS ; PTEP_2(23:9) = PTE_loPFN PTEP_2(8:2) = VA.INDEX_2 ; PTEP_2(l:O) = 0 ; and form Level-2 PTE address. LEVEL 2 PAGE TABLE LOOKUP IF ( ACCESS_LEVEL > PTE_2. PL ) OR ( PTE_2. V = = 0 ) THEN ABORT ; IF PTE_2.R = = 0 THEN PTE_2.R = = 1 IF ( W = = 1) AND ( PTE_2.M = = 0 ) THEN PTE_2.M PA(24) DONE; PTE_2.MS; PA(23:9) PTE_2.PFN PA(8:0) If protection violation or invalid page then abort the access. 1 VA. OFFSET Otherwise, set Referenced bit if not already set, if Write cycle set Modified bit if not already set, and generate physical address. z (f) 3.0 Architectural Description (Continued) 4.0 Device Specifications 3.11 INSTRUCTION SET 4.1 NS32082 PIN DESCRIPTIONS Four instructions of the Series 32000 instruction set are executed cooperatively by the CPU and MMU. These are: The following is a brief description of all NS32082 pins. The descriptions reference portions of the Functional Description, Section 2.0. LMR SMR Load Memory Management Register Store Memory Management Register RDVAL Validate Address for Reading c.:I N o0) A22 WRVAL Validate Address for Writing The format of the MMU slave instructions is shown in Figure 3-10. Table 3-3 shows the encodings of the "short" field for selecting the various MMU internal registers. TABLE 3-3. "Short" Field Encodings "Short" Field Register 0000 0001 1010 1011 1100 1101 1111 BPRO BPRl MSR BCNT PTBO PTBl EIA A2t A23 A20 A24/HBF A19 iN'i AIS PAY A17 STO A16 STI AD15 5T2 AD14 ST3 A013 m A012 DDIN ADll ADS U/S AD10 AD9 Note: All other codes are illegal. They will cause unpredictable registers to be selected if used in an instruction. For reasons of system security, all MMU instructions are privileged, and the CPU does not issue them to the MMU in User Mode. Any such attempt made by a User-Mode program generates the Illegal Operation trap, Trap (ILL). In addition, the CPU will not issue MMU instructions unless its CFG register's M bit has been set to validate the MMU instruction set. If this has not been done, MMU instructions are not recognized by the CPU, and an Undefined Instruction trap, Trap (UND), results. AT/SPC ADS iffi;AST AD7 F[f AD6 HLDAO AD5 HLDAI AD4 HOLD AD3 RSTI AD2 RDY ADI PHI2 ADO PHil GNDL GNDS TL/EE/8692-28 Top View Order Number NS16082D See NS Package Number D48A The LMR and SMR instructions load and store MMU registers as 32-bit quantities to and from any general operand (including CPU General-Purpose Registers). FIGURE 4-1. Dual·ln·Line Package Connection Diagram 4.1.1 Supplies The RDVAL and WRVAL instructions probe a memory address and determine whether its current protection level would allow reading or writing, respectively, if the CPU were in User Mode. Instead of triggering an Abort trap, these instructions have the effect of setting the CPU PSR F bit if the type of access being tested for would be illegal. The PSR F bit can then be tested as a condition code. Power (Vee): +5V positive supply. Section 2.1. Logic Ground (GNDL): Ground reference for on-chip logic. Section 2.1. Buffer Ground (GNDB): Ground reference for on-chip drivers connected to output pins. Section 2.1. 4.1.2 Input Signals Note: The Series 32000 Duat-Space Move instructions (MOVSUi and MOVUSi), although they involve memory management action, are not Clocks (PHil, PHI2): Two-phase clocking signals. Section 2.2. Slave Processor instructions. The CPU implements them by switching the state of its U/S pin at appropriate times to select the desired mapping and protection from the MMU. Ready (RDY): Active high. Used by slow memories to extend MMU originated memory cycles. Section 2.4.4. For full architectural details of these instructions, see the Series 32000 Instruction Set Reference Manual. Hold Request (HOLD): Active low. Causes a release of the bus for DMA or multiprocessing purposes. Section 2.6. Hold Acknowledge In (HLDAI): Active low. Applied by the CPU in response to HOLD input, indicating that the CPU has released the bus for DMA or multiprocessing purposes. Section 2.6. OPERATION WORD sI7 ID CODE 01 TLlEE/8692-27 FIGURE 3·10. MMU Slave Instruction Format 3-67 ... ~ o o ,... I N CO o N ('I) en z 4.0 Device Specifications (Continued) Reset Input (RSTI): Active low. System reset. Section 2.3. Status Lines (STO-ST3): Status code input from the CPU. Active from T4 of previous bus cycle through T3 of current bus cycle. Section 2.4. Hold Acknowledge Output (HLDAO): Active low. When active, indicates that the bus has been released. 4.1.4 Input-Output Signals Data Direction In (ODIN): Active low. Status signal indicating direction of data transfer during a bus cycle. Driven by the MMU during a page-table lookup. Program Flow Status (PFS): Active low. Pulse issued by the CPU at the beginning of each instruction. User/Supervisor Mode (U/S): This signal is provided by the CPU. It is used by the MMU for protection and for selecting the address space (in dual address space mode only). Section 2.4. Address Translation/Slave Processor Control (AT/ SPC): Active low. Used by the CPU as the data strobe output for Slave Processor transfers; used by the MMU to acknowledge completion of an MMU instruction. Section 2.3 and 2.5. Held low during reset to select the address translation mode on the CPU. M.S. Bit of Physical Address/High Byte Float (A24/ HBF): Most significant bit of physical address. Sampled on the rising edge of the reset input to select 16 or 32-bit bus mode. This pin outputs a low level if address translation is not enabled. It is floated during T2-T4 if 32-bit bus mode is selected. Address Bits 16-23 (A16-A23): High order bits of the address bus. These signals are floated by the MMU during T2-T4 if 32-bit bus mode is selected. Address/Data 0-15 (ADO-AD1S): Multiplexed Addressl Data Information. Bit 0 is the least significant bit. Address Strobe Input (ADS): Active low. Pulse indicating that a virtual address is present on the bus. 4_1.3 Output Signals Reset Output! Abort (RST / ABT): Active Low. Held active longer than one clock cycle to reset the CPU. Pulsed low during T2 or TMMU to abort the current CPU instruction. Interrupt Output (I NT): Active low. Pulse used by the debug functions to inform the CPU that a break condition has occurred. Float Output (FLT): Active low. Floats the CPU from the bus when the MMU accesses page table entries or performs a physical breakpoint check. Section 2.4.3. Physical Address Valid (PAV): Active low. Pulse generated during TMMU indicating that a physical address is present on the bus. Note: Absolute maximum ratings indicate limits beyond 4.2 ABSOLUTE MAXIMUM RATINGS which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. O'Cto +70'C Temperature Under Bias Storage Temperature All Input or Output Voltages with Respect to GND -65'Cto +150'C -0.5Vto +7V Power Dissipation 1.5W 4.3 ELECTRICAL CHARACTERISTICS TA = 0 to + 70'C, Vee = 5V ± 5%, GND = OV Symbol Parameter Conditions Min Typ Max Units VIH High Level Input Voltage 2.0 Vee + 0.5 V Vil Low Level Input Voltage -0.5 0.8 V VeH High Level Clock Voltage PHI1, PHI2 pins only Vee - 0.35 Vee + 0.5 V Vel Low Level Clock Voltage PHil, PHI2 pins only -0.5 0.3 V VelT Low Level Clock Voltage, Transient (ringing tolerance) PHil, PHI2 pins only -0.5 0.6 V VOH High Level Output Voltage IOH = - 400 fLA VOL Low Level Output Voltage IOl = 2 mA IllS AT/SPC Input Current (low) VIN = O.4V, AT ISPC in input mode II Input Load Current o :0; VIN :0; Vee, All inputs except 2.4 PHil, PHI2, AT/SPC Il Ice Leakage Current (Output and 1/0 Pins in TRI-STATE/lnput Mode) 0.4 Active Supply Current lOUT = O,TA = 25'C :0; VIN :0; V 0.45 V 0.05 1.0 mA -20 20 fLA -20 30 fLA 300 mA Ve 3-68 200 ztJ) 4.0 Device Specifications (Continued) c.:I N 4.4 SWITCHING CHARACTERISTICS 4.4.1 Definitions All the timing specifications given in this section refer to 2.0V on the rising or falling edges of the clock phases PHI1 N ABBREVIATIONS: o L.E. - leading edge R.E. - rising edge T.E. - trailing edge F.E. - falling edge PHln [-- SIGl - - - - - - - - . : - - - - - - , - 2.4V --.-SI-G-,I------~'---.:~: ~ [ _ _ _'_ _ .s_IG_2_h....JI. ___ _____ co • ...... [ ____>E [ SIGl O.BV SIG2 o and PHI2, and O.BV or 2.0V on all other signals as illustrated in Figures 4-2 and 4-3, unless specifically stated otherwise. ~: SIG2 [ '\ 'SIG 11 '---I--O.45V /r---+-- 2.4V 2.0V +---~ 'SIG2h -----~---- - - - - - O.45V TL/EE/B692-30 TL/EE/B692-29 FIGURE 4-3. Timing Specification Standard (Signal Valid before Clock Edge) FIGURE 4-2. Timing Specification Standard (Signal Valid after Clock Edge) 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays, NS32082-10. Maximum times assume capacitive loading of 100 pF. Name Figure Description Reference/Conditions NS32082-10 Min Units Max tALv 4-4 Address Bits 0-15 Valid tALh 4-4 Address Bits 0-15 Hold After R.E., PHI1 T2 tAHv 4-4,4-6 Address Bits 16-24 Valid After R.E., PHI1 TMMU or T1 tAHh 4-4 Address Bits 16-24 Hold After R.E., PHI1 T2 tALPAVs 4-5 Address Bits 0-15 Set Up tAHPAVs 4-5 Address Bits 16-24 Set Up tALPAVh 4-5 Address Bits 0-15 Hold After PAY T.E. tAHPAVh 4-5 Address Bits 16-24 Hold After PAY T.E. tALI 4-10 ADO-AD15 Floating After R.E., PHI1 T2 25 . ns tAHI 4-7,4-10 A16-A24 Floating After R.E., PHI1 T2 or T1 25 ns tALz 4-15,4-16 ADO-AD15 Floating (Caused by HOLD) After R.E., PHI1 Ti 25 ns tAHZ 4-15,4-16 A16-A24 Floating (Caused by HOLD) After R.E., PHI1 Ti 25 ns tALr 4-15,4-16 ADO-AD15 Return from Floating (Caused by HOLD) After R.E., PHI1 T1 50 ns After R.E., PHI1 TMMU or T1 3-69 40 5 ns ns 40 ns 5 ns Before PAY T.E. 25 ns Before PAY T.E. 25 ns 15 ns 15 ns &I 4.0 Device Specifications (Continued) 4.4.2.1 Output Signals: Internal Propagation Delays, NS32082·10. (Continued) Name Figure Description Reference/Conditions NS32082·10 Min tAHr 4-15,4-16 tDv A16-A24 Return from Floating (Caused by HOLD) After R.E., PHil Tl 4-6 Data Valid (Memory Write) After R.E., PHil T2 tOh 4-6 Data Hold (Memory Write) After R.E., PHil next Tl or Ti tot 4-11 Data Bits Floating (Slave Processor Read) After R.E., PHil Tl or Ti tov 4-11 Data Valid (Slave Processor Read) After R.E., PHil Tl tOh 4-11 Data Hold (Slave Processor Read) After R.E., PHil next Tl or Ti AfterR.E., PHil T1 orTMMU Units Max 50 ns 50 ns ns 0 10 ns 50 ns 0 ns tOOINv 4-5,4-7 ODIN Signal Valid tOOINh 4-5 50 DDIN Signal Hold After R.E., PHil T1 or Ti tOOIN! 4-7 DDIN Signal Floating After R.E., PHil T2 tODINz 4-16 DDIN Signal Floating (Caused by HOLD) After R.E., PHil Ti tODINr 4-16 ODIN Return from Floating (Caused by HOLD) After R.E., PHil Tl or Ti tODlNA! 4-9 ODIN Floating after Abort (FLT = 0) After R.E., PHI2 T2 tPAVa 4-4 PAY Signal Active tPAVia 4-4 PAY Signal Inactive tpAVw 4-4 PAY Pulse Width At O.SV (Both Edges) tpAVdz 4-14,4-15 PAY Floating Delay After HLDAI F.E. 25 ns tPAVdr 4-14,4-15 PAY Return from Floating After HLDAI R.E. 25 ns tpAVz 4-16 PAY Floating (Caused by HOLD) After R.E., PHI2 T4 30 ns tPAVr 4-16 PAY Return from Floating (Caused by HOLD) After R.E., PHI2 Ti 30 ns tFLTa 4-5,4-10 FLT Signal Active After R.E., PHil T MMU 55 ns tFLTia 4-7,4-10 FLT Signal Inactive After R.E., PHil T MMU, T! or T2 35 ns tABTa 4-S, 4-10 Abort Signal Active After R.E., PHil T MMU or Tl 55 ns tABTia 4-S, 4-10 Abort Signal Inactive After R.E., PHil T2 55 ns tABTw 4-S,4-10 Abort Pulse Width At O.SV (Both Edges) tlNTa 4-4,4-10 INT Signal Active After R.E., PHil T MMU or Tf 55 ns tlNTia 4-4,4-10 INT Signal Inactive After R.E., PHil T2 55 ns tlNTw 4-10 INT Pulse Width At O.SV (Both Edges) tSPCa 4-13 SPC Signal Active After R.E., PHil Tl 40 ns tSPCia 4-13 SPC Signal Inactive After R.E., PHil T4 40 ns 0 ns ns 25 ns 50 ns 50 ns 25 ns After R.E., PHil TMMU orTl 35 ns After R.E., PHI2 T MMU or Tl 40 ns 3·70 30 ns 70 ns 70 ns z fao 4.0 Device Specifications (Continued) ....o. co N 4.4.2.1 Output Signals: Internal Propagation Delays, NS32082-10. (Continued) Name Figure Description NS32082-10 Reference/Conditions Min Units Max tSPCf 4-13 SPC Signal Floating After F.E., PHI1 T4 tspCw 4-13 SPC Pulse Width At 0.8V (Both Edges) 25 tHLOOda 4-14 HLDAO Assertion Delay After HLDAI F.E. 50 ns tHLOOdia 4-14,4-15 HLDAO Deassertion Delay After HLDAI R.E. 50 ns tHLOOa 4-15,4-16 HLDAO Signal Active After R.E., PHI1 Ti 30 ns tHLDOia 4-16 HLDAO Signal Inactive After R.E, PHI1 Ti 30 ns tATa 4-18 AT ISPC Signal Active After R.E., PHI1 35 ns tATia 4-18 AT ISPC Signal Inactive After R.E., PHI1 35 ns tAT! 4-18 AT ISPC Signal Floating After F.E., PHI1 25 ns tRSTOa 4-18 RSTI ABT Asserted (Low) After R.E. PHI1 30 ns tRSTOia 4-18 RST I ABT Deasserted (High) After R.E. PHI1 Ti 30 ns 70 ns ns 4.4.2.2 Input Signal Requirements: NS32082-10 Name Figure Description Reference/Conditions NS32082-10 Min tOls 4-5 Data In Set Up (Memory Read) Before F.E., PHI2 T3 tOlh 4-5 Data In Hold (Memory Read) After R.E., PHI1 T4 tOls 4-12 Data In Set Up (Slave Processor Write) Before F.E., PHI2 T1 tOlh 4-12 Data In Hold (Slave Processor Write) After R.E., PHI1 T4 tROYs 4-5 RDY Signal Set Up tROYh 4-5 RDY Signal Hold tUSs 4-4,4-11 U/S Signal Set Up tUSh 4-4,4-11 U/S Signal Hold Units Max 15 ns 3 ns 20 ns 3 ns Before F.E., PHI2 T2 or T3 15 ns After F.E., PHI1 T3 5 ns Before F.E., PHI2 T4 or Ti 35 ns After R.E., PHI1 Next T4 0 ns 3·71 4.0 Device Specifications (Continued) 4.4.2.2 Input Signal Requirements: NS32082-10 (Continued) Name Figure Description Reference/Conditions NS32082-10 Min Units Max tSTs 4-4,4-11 Status Signals Set Up Before F.E., PHI2 T4 or Ti 35 ns tSTh 4-4,4-11 Status Signals Hold After R.E., PHI1 Next T4 0 ns ns tspcs 4·11 SPC Input Set Up Before F.E., PHI2 T1 45 tSPCh 4·11 SPC Input Hold After R.E., PHI1 T4 0 ns tHLDs 4·16 HOLD Signal Set Up Before F.E., PHI2 T4 or Ti 25 ns tHLDh 4·16 HOLD Signal Hold After F.E., PHI2 T 4 or Ti 0 ns tHLDls 4-15 HLDAI Signal Set Up Before F.E., PHI2 Ti 20 ns tHLDlh 4-15 HLDAI Signal Hold After F.E., PHI2 Ti 0 ns tHBFs 4-18 A24/HBF Signal Set Up Before F.E., PHI2 10 ns tHBFh 4-18 A24/HBF Signal Hold After F.E., PHI2 0 ns tRSTls 4-18 Reset Input Set Up Before F.E., PHI1 20 ns tPWR 4-19 Power Stable to RSTI R.E. After Vee Reaches 4.5V 50 ",s RSTI Pulse Width At 0.8V (Both Edges) 64 tep tRSTlw 4.4.2.3 Clocking Requirements: NS32082-10 Name Figure Reference/ Conditions Description NS32082-10 Max 100 250 ns -2 5 ns -4 4 ns -5 5 ns tcp 4-17 Clock Period R.E., PHI1, PHI2 to Next R.E., PHI1, PHI2 tCLw 4-17 PHI1, PHI2 Pulse Width At 2.0V on PHI1 , PHI2 (Both Edges) 0.5tep -10 ns tCLh 4-17 PHI1, PHI2 High Time At VCC - 0.9Von PHI1, PHI2 (Both Edges) 0.5tep - 15 ns tell 4-17 PHI1, PHI2 Low Time AtO.BVon PHI1, PHI2 tnOVL (1,2) 4-17 Non-overlap Time 0.8Von F.E. PHI1, PHI2 to O.BVon R.E., PHI2, PHI1 Non-overlap Asymmetry At O.BVon PHI1, PHI2 tnOVLas 0.5tep - 5ns (tnOVb(1) - tnOVY2») teLwas PHI1, PHI2 Asymmetry teLw(1) - tCLw(2») At 2.0V on PHI1, PHI2 3-72 Units Min z en w 4.0 Device Specifications (Continued) I\) o 4.4.3 Timing Diagrams CO I\) T4 OR TI PHI1 [ T1 TMMU T3 TZ T4 ....o I I T1 OR TI ~I"L- '-!l-JI"L-I"L-IL l---1L ~ ---1L ---1L ---1L ~ U PHIZ[ IAHv IALv X ADO - 1S[ _IAHh ) PH. ADDR. I--- V. ADDR. I-- ) ~------------------I (FLOATED BY MMU) PH. ADDR. ~~--L-------l----- __ ----- ':';Vla PAVe IPAVa ~~A~W ________ \. DDINL IUS, -------- ------- ---_. (HIGH) 1_ '-~ u/s[.-- ._~'I- ~---X STO-3[ iNT[ ----- (FLOATED BY MMU) ADS[ m[ - V. ADDR. A1S-Z4[ lUSh - 15Th - ~IINTIa --IIINTa '1.---- .) TL/EE/8692-31 FIGURE 4-4. CPU Read (Write) Cycle Timing (32-Blt Mode); Translation in TLB • TL/EE/8692-32 FIGURE 4-5. MMU Read Cycle Timing (32-Blt Mode); After a TLB Miss Note: After FLT is asserted, ODIN may be driven temporarily by both CPU and MMU. This, however, does not cause any conflict, since both CPU and MMU force ODIN to the same logic level. 3·73 C).r------------------------------------------------------------------------------------------, .,... • C'I 4.0 Device Specifications (Continued) co C) C'I Tf C') en T1 OR TI z A16-24[~--------~J,~--~~------~~~----~------_+~,~----+_---ADD-15[~-----+-, ....--_t_J,--_+----,....---+'I---I__-- (HIGH) DDIN[~___~-J FU[~---~---~----~(~LO~W~)--+_---+_---~--TLlEE/8692-33 FIGURE 4-6. MMU Write Cycle Timing; after a TLB Miss TMMU T2 T3 T4 T1 TMMU T2 T3 T4 T1 A16-24[~----+-'·'--__1---__iF=;;...--+_---+_'l ADO-15 [-+----I--'-~-r-' -------------(FLOATED BY MMU) (HIGH) -------------(FLOATED BY MMU) m[-+____I--' TL/EE/B692-34 FIGURE 4-7. FLT Deassertion TImIng Note: After FLT is deasserted, ODIN may be driven temporarily by both CPU and MMU. This, however, does not cause any conflict Since CPU and MMU force lIDfiij to lhe same logic level. 3·74 r--------------------------------------------------------------------------, 4.0 Device Specifications (Continued) T4 OR T1 Z ~ N o TI TMMU T2 CD T1 ~ .... o PHil [ PHI2 [ AiiS[ m[ (HIGH) m[ RST/ AST [ TL/EE/8692-35 FIGURE 4·8. Abort Timing (FLT = 1) CPU STATES MMU STATES I Tf T4 Tf TI T3 T3 T2 T2 T4 T4 PHil [ PHI2 [ AOS [ PAY [ m[ RST/ AST [ ODIN [ TL/EE/8892-36 FIGURE 4-9. Abort Timing (FLT = 0) T1 TMWU T2 T3 T4 • PHil [ PHI2 [ A16-24 [ --(rLOATID Bv"WMU)---- --{ ADO-15 [ --(~MiolMM~---- --{ ADS [ m[ ODIN [ m[ RST/ABT [ --~;;;.±j TL/EE/8692-37 FIGURE 4-10. CPU Operand Access Cycle with Breakpoint on Physical Address Enabled Note: If a breakpoint condition is met and abort on breakpoint is enabled, the bus cycle is aborted. In this case FLT is stretched by one clock cycle. 3·75 .... r-------------------------------------------------------------------------------------, C) ~ en 4.0 Device Specifications (Continued) C') z T4 OR 11 TI T4 11 OR 11 PHl1 [ PHI2 [ '-1-__"" ADO-IS [.SPC [ U/S[ __ ~-~--~-----~-4----~---. . [--1~-l_----1---------I-~r'----_+-----... ODIN[~~-----__1---~--__I-----__I--~----- STO-3 TLlEE/8692-38 FIGURE 4-11. Slave Access Timing; CPU Reading from MMU T4 OR 11 11 T4 TI OR 11 PHil [ PHI2 [ '+__"" ~O-15[__1~-----__1-~r}_----~---~,----__I--------- SPC [ STO- 3 [ __ ~....J,'----__1~------__1---'---__I------- DDIN[ __~_ _ _ _--1~ __ TLlEE/8692-39 FIGURE 4-12. Slave Access Timing; CPU Writing to MMU T4 11 T4 11 PHil [ PHI2 [ '-1-__"" TLlEE/8692-40 FIGURE 4-13. SPC Pulse from the MMU z (J) W 4.0 Device Specifications (Continued) N o co TI ~ .... o (HIGH) A16-24 [--.32 BIT MODE-- ADO-15 [. i S- - - - - '(FlOATING)- - - - - - - - - - - - -. - i S-- - -- '(FlOATING) - - - - - - - - - - - - -. ------- TLlEE/8692-41 FIGURE 4·14. Hold Timing (FLT = 1); SMR Instruction Not Being Executed PHil [ I PHI2 [ HLOAI [ HLOAO [ PAY [ m[ (HIGH) Al~24 [_.~____~~~~____~ i S----- AOO-15 [....: ________.:....______...:...J' i S----- '(FlOATING)-----~~r---E '(FlOATING)- ---- ~~---C TL/EE/8692-42 FIGURE 4·15. Hold Timing (FLT = 1); SMR Instruction Being Executed ~1 PHil [ PHI2 [ HOLD [ HLOAO [ PAY [ (FLOATING) m[~------_+------_+--~--~------___~ ~----~~~~~------_+~_ Al~24 [~------_+------_+.J, ------- AOO-15 [~------_+------_+.J, ------- ODIN [+ _______+------_+.J, ------- S----- -(F~:~G)i S----i S----i FIGURE 4·16. Hold Timing (FLT = 0) 3·77 -(FLOATING)- -(FLOATING)- -c _l::: 'L -C TLlEE/8692-43 o.~ r--------------------------------------------------------------------------, 4.0 Device Specifications (Continued) ~ CO) (I) Z PHI1 [ PHI2 [ ------1"", TL/EE/B692-49 FIGURE 4-17. Clock Waveforms PHil [J-LJ--l...1uuVL.J--LfiJ-Lh. PHI2 [ Ar/SPC A24/HBF \._~~~-~-___+5-~-O-C-K-~K"f.. Ilr-fj,.n..- C r. [:+--t--""1'! ~-+_--t-§~,lo--...('I.....+--t§ TL/EE/8692-45 FIGURE 4-18. Reset Timing vee Jr--------ll--- PHI{ __-+__...... ~[------------~r_~ FIGURE 4-19. Power-On Reset 3-78 TLlEE/8692-46 PER eMIT ~ ~ PERIPH CYCLE XCTAL2 ~ ICTAlt MITI RESET RSTO f.~} Wiif.i Wiii2 ~ N532201 TCU _IT REQUESTS :l tADDA DECODED OR STRAPPED) MIT1 PHI2 C. ;C. AD liD PHil "C "C CD READY WR WR ~ - ADS RSlO eTTL ODiN ROY oBE :l '"O I CD HBE 10kD -- ~ +5 Q. :l CQ en C CQ CQ CD HOLD .I. ROY c.> ~ CD PHI1 '"O PHI2 I HOLD HBE en O· HLOAO HOLD ROY RSTI :l en PHIt INTS. I...... 1-< PHI2 iNT HLOAI FLT HLOA NM. OSlFlT NS320161 N532C016 CPU PFS PFS UtS UIS ADS (24). ADDRIDATA MULTIPLEXED BUS 510-513 510-513 RST/ABT AT/SPC SPC +55~ (241 (16). ADO-AD1S SPC NS32081 510-5T1 ~ ADDRESS (21-i LATCH' BUFFER MMU RST/ABT A2' ADDRIOATA ADDRESS STROBE PAY N532082 ADS ODIN DDIN ADDRIDATA HLOAD lL ffiiiN (2'~ • (24) II FPU (161 . . . . . CLK EN OATA MULTIPLEXED I==: RST BUS (24) BUS RST MEMORYI PERIPERALS ClK (1.H O'R cgJ DATA BUS DATA BUFFERS - -- TUEE/6692-47 Note: The "AND" gate on the HBE line is not needed when an NS32016 is used. FIGURE A-1. System Connection Diagram O~·~80~eSN II NS32082-10 PERI_ XCTAl2 -.::.. » PERIPH CYCLE CWlf!.lT --'- Cl READY "0 "0 CD :;, XCTAll , WAif4 v.im1i§1 M.1l2 NS32201 _jRSTI RESET rcu PHI1 , I IpH17 RSTO WAIT REOUESTS IADOR. DECODED OR STRAPPED) MIT1 iijj WRI ODIN ROY ;:C. BEO: ~, ern Q. iiD ViR ~ ~ I + S' DBE - -- BE2 :;, CD Be3 H 1Y S 2Y 3Y 74ALS257 ... ~ 4Y G D) (') 18 28 38 48 1A 2A 3A 4A 111: 1 1 1 10 1 1111)JI~U II II I :;j. ~ (Q en c (Q (Q ILO' ROY 1 CD HOLD .i PHil PHI2 BED . • • . . • BE3 j[Q til O· HlOAO HOLD ROY PHil PHI2 '" Co o HOLD J--+tiNT I I DS/Flrl' INTS.\-+t NMI 'HCDA NS32032 CPU (24,,· 1 024-031 . • (8) HLOAD Piij PFS "'_I I I ADS ODIN AOO-AD23 I ' Iru HLOAI PFS NS32082 ~I"'-- MMU ADS ODIN STO-SI3 STO-ST3 RST/ABT RSf/m ,I Arlspcl' I .~ SPC 10k1l +5~ :;, A1 ADO-A023 A241-t+ RSll I '~ (24) ~srROBE I ~ til g a ADORESS'"• • •~~. ADO-AD23 LATCHI ::J P c '" BUFFER ,e, +--. (24)t_'(32) ADO-AD1S .,---ADDRfDATA BUS •. 2) AUU-AD23" AND 024-031 DATA BU......... ~ 5T0-513 , TLlEE/8692-48 FIGURE A-2. System Connection Diagram z (J) ~National PRELIMINARY ~ Co) Q) ~ Semiconductor ..... • ..... U1 ..... Z NS32381-15/NS32381-20 Floating-Point Unit (J) Co) ~ . Co) Q) General Description The NS32381 is a second generation, CMOS, floating-point slave processor that is fully software compatible with its forerunner, the NS32081 FPU. The NS32381 FPU functions with any Series 32000 CPU, from the NS32008 to the NS32532, in a tightly coupled slave configuration. The performance of the NS32381 has been increased over the NS32081 by architecture improvements, hardware enhancements, and higher clock frequencies. Key improvements include the addition of a 32-bit slave protocol, an early done algorithm to increase CPU/FPU parallelism, an expanded register set, an automatic power down feature, expanded math hardware, and additional instructions. The NS32381 FPU contains eight 64-bit data registers and a Floating-Point Status Register (FSR). The FPU executes 20 instructions, and operates on both single and doubleprecision operands. Three separate processors in the NS32381 manipulate the mantissa, sign, and exponent. The NS32381 FPU conforms to IEEE standard 754-1985 for binary floating-point arithmetic. When used with a Series 32000 CPU, the CPU and NS32381 FPU form a tightly coupled computer cluster. This cluster appears to the user as a single processing unit. All addressing modes, including two address operations, are available with the floating-point instructions. In addition, CPU and FPU communication is handled automatically, and is user transparent. The FPU is fabricated with National's advanced double-metal CMOS process. It is available in a 68-pin Pin Grid Array (PGA) package. Features with NS32008, NS32016, • Directly compatible NS32C016, NS32032, NS32C032, NS32332 and NS32532 microprocessors • Selectable 16-bit or 32-bit Slave Protocol • Conforms to IEEE standard 754-1985 for binary floating-point arithmetic • Early done algorithm • Single (32-bit) and double (64-bit) precision operations • Eight on-chip (64-bit) data registers • (Automatic) power down mode • Full upward compatibility with existing 32000 software • High speed double-metal CMOS design • 68-pin PGA package FPU Block Diagram Control Unit Execution Unit Interface and Storage Unit 5 TL/EE/9157 -1 FIGURE 1·1 3-81 ..... ~ Q Q ~ r-----------------------------------------------------------------------------~ ..- ~ Table of Contents N 1.0 PRODUCT INTRODUCTION (/) 1.1 IEEE Features Supported C") Z U; ....CD I C") N ~ Z 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.6 Instruction Protocols 1.2 Operand Formats 3.6.1 General Protocol Sequence 1.2.1 Normalized Numbers 3.6.2 Early Done Algorithm 1.2.2 Zero 3.6.3 Floating·Point Protocols 1.2.3 Reserved Operands 4.0 DEVICE SPECIFICATIONS 1.2.4 Integers 4.1 Pin Descriptions 1.2.5 Memory Representations 4.1.1 Supplies 2.0 ARCHITECTURAL DESCRIPTION 4.1.2 Input Signals 2.1 Programming Model 4.1.3 Output Signals 2.1.1 Floating-Point Registers 4.1.4 Input/Output Signals 2.1.2 Floating-Point Status Register (FSR) 4.2 Absolute Maximum Ratings 2.1.2.1 FSR Mode Control Fields 4.3 Electrical Characteristics 2.1.2.2 FSR Status Fields 4.4 Switching Characteristics 2.1.2.3 FSR Software Fields (SWF) 4.4.1 Definitions 2.2 Instruction Set 4.4.2 Timing Tables 2.2.1 General Instruction Format 4.4.2.1 Output Signal Propagation Delays for all CPUs 2.2.2 Addressing Modes 4.4.2.2 Output Signal Propagation Delays for the NS32008, NS32016, NS32032 CPUs 2.2.3 Floating-Point Instruction Set 2.3 ExceptionslTRAPS 4.4.2.3 Output Signal Propagation Delays for the 32·Bit Slave Protocol NS32332 CPU 3.0 FUNCTIONAL DESCRIPTION 4.4.2.4 Output Signal Propagation Delays for the 32-Bit Slave Protocol NS32532 CPU 3.1 Power and Grounding 3.2 Automatic Power Down Mode 4.4.2.5 Input Signal Requirements for all CPUs 3.3 Clocking 4.4.2.6 Input Signal Requirements for the NS32008, NS32016, NS32032 CPUs 3.4 Resetting 3.5 Bus Operation 4.4.2.7 Input Signal Requirements for the 32-Bit Slave Protocol NS32332 CPU 3.5.1 Bus Cycles 3.5.2 Operand Transfer Sequences 4.4.2.8 Input Signal Requirements for the 32-Bit Slave Protocol NS32532 CPU 4.4.2.9 Clocking Requirements for all CPUs APPENDIX A: NS32381 PERFORMANCE ANALYSIS 3-82 ,-----------------------------------------------------------------------, z List of Illustrations FPU Block Diagram ......................•..................................................................... 1-1 Floating-Point Operand Formats ................................................................................. 1-2 Integer Format. .................................................................................•..............1-3 Register Set .........................................•..............•..........................................2-1 The Floating-Point Status Register ...............................................................................2-2 General Instruction Format ......................................................................................2-3 Index Byte Format .............................................................................................2-4 Displacement Encodings ........................................................................................2-5 Floating-Point Instruction Formats ................................................................................ 2-6 Recommended Supply Connections ............' .................................................................. 3-1 Power-On Reset Requirements .................................................................................. 3-2 General Reset Timing ..........................................................................................3-3 System Connection Diagram with the NS32532 CPU ...............•...............................................3-4a System Connection Diagram with the NS32332 CPU ...............................................................3-4b System Connection Diagram with the NS32008, NS32016 or NS32032 CPU .......................................... 3-4c Slave Processor Read Cycle (NS32008, NS32016, NS32032 and NS32332 CPUs) ..................................... 3-5 Slave Processor Read Cycle (NS32532 CPU) ............•..............•.......................................... 3-6 Slave Processor Write Cycle (NS32008, NS32016, NS32032 and NS32332 CPUs) ..................................... 3-7 Slave Processor Write Cycle (NS32532 CPU) ......................................................................3-8 ID and Opcode Format 16-Bit Slave Protocol ...................................................................... 3-9 ID and Opcode Format 32-Bit Slave Protocol ..................................................................... 3-10 FPU Status Word Format ......................................................................................3-11 16-Bit General Slave Instruction Protocol: FPU Actions ............................................................ 3-12 32-Bit General Slave Instruction Protocol: FPU Actions ............................................................ 3-13 68-Pin PGA Package .......................................................................................... .4-1 Timing Specification Standard (Signal Valid After Clock Edge) .............•.......................................... 4-2 Timing Specification Standard (Signal Valid Before Clock Edge) ...................................................... 4-3 Clock Timing ..................................................................................................4-4 Power-On Reset ...............................................................................................4-5 Non-Power-On Reset ...........................................................................................4-6 RST Release Timing ............................................................................................4-7 Read Cycle from FPU (NS32008, NS32016, NS32032 CPUs) ....................................................... .4-8 Write Cycle to FPU (NS32008, NS32016, NS32032 CPUs) ........................................................... 4-9 Read Cycle from FPU (NS32332 CPU) .......................................................................... .4-10 Write Cycle to FPU (NS32332 CPU) .............................................................................4-11 SDN332 Timing (NS32332 CPU) ......................................•.........................................4-12 SDN332 (TRAP) Timing (NS32332 CPU) .........................................................................4-13 Read Cycle from FPU (NS32532 CPU) .......................................................................... .4-14 Write Cycle from FPU (NS32532 CPU) ........................................................................... 4-15 SDN532 Timing (NS32532 CPU) ................................................................................ 4-16 FSSR Timing (NS32532 CPU) ..................................................................................4-17 SPC Pulse from FPU ......................................................................................... .4-18 3-83 en Co) I\) Co) 00 ..... • ..... U1 ...... z en Co) I\) Co) . 00 ..... I\) CI ~ ..-• CD C") C'i ~ Z ..... II) ....-• CD C") C'i C") List of Tables Sample F Fields ...............................................................................................1·1 Sample E Fields ...............................................................................................1·2 Normalized Number Ranges ..................................................................................... 1·3 Series 32000 Family Addressing Modes ...........................................................................2·1 16·Bit General Slave Instruction Protocol .......................................................................... 3·1 32·Bit General Slave Instruction Protocol .......................................................................... 3·2 Floating·Point Instruction Protocols ...............................................................................3·3 tI) z 3·84 r-----------------------------------------------------------------------------, Z The E field contains an unsigned number that gives the binary exponent of the represented number. The value in the E field is biased; that is, a constant bias value must be subtracted from the E field value in order to obtain the true exponent. The bias value is 011 ... 112, which is either 127 (single precision) or 1023 (double precision). Thus, the true exponent can be either positive or negative, as shown in Table 1-2. 1.0 Product Introduction The NS32381 Floating-Point Unit (FPU) provides high speed floating-point operations for the Series 32000 family, and is fabricated using National high-speed CMOS technology. It operates as a slave processor for transparent expansion of the Series 32000 CPU's basic instruction set. The FPU can also be used with other microprocessors as a peripheral device by using additional TTL and CMOS interface logic. The NS32381 is compatible with the IEEE FloatingPoint Formats by means of its hardware and software features. Represented Value EFleld FField 1.5x2- 1 = 0.75 011 ... 110 100 ... 0 1.5x20 = 1.50 011 ... 111 100 ... 0 1.5x21 = 3.00 100 ... 000 100 ... 0 Two values of the E field are not exponents. 11 ... 11 signals a reserved operand (Section 1.2.3). 00 ... 00 represents the number zero if the F field is also all zeroes, otherwise it signals a reserved operand. b) Add, subtract, multiply, divide and compare operations c) Conversions between different floating-point formats d) Conversions between floating-point and integer formats e) Round floating-point number to integer (round to nearest, round toward negative infinity and round toward zero, in double or single-precision) 1) Exception signaling and handling (invalid operation, divide by zero, overflow, underflow and inexact) ~ co ...... ....• en ..... Z (I) (0) N .... co ~ Q The S bit indicates the sign of the operand. It is 0 for positive and 1 for negative. Floating-point numbers are in signmagnitude form, that is, only the S bit is complemented in order to change the sign of the represented number. 1.2.1 Normalized Numbers Normalized numbers are numbers which can be expressed as floating-point operands, as described above, where the E field is neither all zeroes nor all ones. The value of a Normalized number can be derived by the formula: (-1)5 X 2(E-Bias) X (1 + F) The remaining IEEE features are supported in software. These items include: a) Extended floating-point number formats b) Positive and negative infinity, Not-a-Number (NaN), Denormalized numbers c) Square root and conversions between basic formats, floating-point numbers and decimal strings The range of Normalized numbers is given in Table 1-3. 1.2 OPERAND FORMATS The N32381 FPU operates on two floating-point data typeS-Single precision (32 bits) and double precision (64 bits). Floating-point instruction mnemonics use the suffix F (Floating) to select the single precision data type, and the suffix L (Long Floating) to select the double preCision data type. A floating-point number is divided into three fields, as shown in Figure 1-2. 1.2.2 Zero There are two representations for zero-positive and negative. Positive zero has all-zero F and E fields, and the S bit is zero. Negative zero also has all-zero F and E fields, but its S bit is one. 1.2.3 Reserved Operands The proposed IEEE Standard for Binary Floating-Point Arithmetic (Task P754) provides for certain exceptional forms of floating-point operands. The NS32381 FPU treats these forms as reserved operands. The reserved operands are: • Positive and negative infinity • Not-a-Number (NaN) values • Denormalized numbers 80th Infinity and NaN values have all ones in their E fields. Denormalized numbers have all zeroes in their E fields and non-zero values in their F fields. The NS32381 FPU causes an Invalid Operation trap (Section 2.1.2.2) if it receives a reserved operand, unless the operation is simply a move (without conversion). The FPU does not generate reserved operands as results. The F field is the fractional portion of the represented number. In Normalized numbers (Section 1.2.1), the binary pOint is assumed to be immediately to the left of the most significant bit of the F field, with an implied 1 bit to the left of the binary point. Thus, the F field represents values in the range 1.0 s:; x s:; 2.0. TABLE 1-1. Sample F Fields Binary Value 1.000 ... 0 1.010 ... 0 1.100 ... 0 1.110 ... 0 (0) (0) TABLE 1-2. Sample E Fields 1.1 IEEE FEATURES SUPPORTED a) Basic floating-point number formats FFleld 000 ... 0 010 ... 0 100 ... 0 110 ... 0 (I) Decimal Value 1.000 ... 0 1.250 ... 0 1.500 ... 0 1.750 ... 0 t Implied Bit 3-85 • C) ~ .,... co CO) r------------------------------------------------------------------------------------------, 1.0 Product Introduction (Continued) Single Precision 2322 N CO) 3130 U) Z Is I ;;, .,... .,...• E I o F 23 8 ~ N Double Precision CO) ~ 6362 lsi o 5251 E I F 11 52 FIGURE 1·2. Floating·Polnt Operand Formats TABLE 1·3. Normalized Number Ranges Most Positive Least Positive Least Negative Single Precision 2127 x (2 - 2- 23) = 3.40282346 x 1038 Double Precision 2 1023 X (2 - 2- 52) = 1.7976931348623157 X 10308 2- 126 = 1.17549436 X 10- 38 2- 1022 = 2.2250738585072014 X 10-308 -(2- 126) = -1.17549436 Most Negative -(2- 1022) x 10- 38 -2127 X (2 - 2- 23) = -2.2250738585072014 X 10- 308 -21023 X (2 - 2- 52) = -1.7976931348623157 X 10308 = - 3.40282346 x 1038 Note: The values given are extended one full digit beyond their represented accuracy to help in generating rounding and conversion algorithms. 1.2.4 Integers In addition to performing floating-point arithmetic, the NS32381 FPU performs conversions between integer and floating-point data types. Integers are accepted or generated by the FPU as two's complement values of byte (8 bits), word (16 bits) or double word (32 bits) length. 1.2.5 Memory Representations The NS32381 FPU does not directly access memory. However, it is cooperatively involved in the execution of a set of two-address instructions with its Series 32000 Family CPU. The CPU determines the representation of operands in memory. In the Series 32000 family of CPUs, operands are stored in memory with the least significant byte at the lowest byte address. The only exception to this rule is the Immediate addressing mode, where the operand is held (within the instruction format) with the most significant byte at the lowest address. See Figure 1-3 for the Integer Format and Table 1-4 for the Integer Fields. n-l o n·2 IS I FIGURE 1·3. Integer Format 2.0 Architectural Description TABLE 1·4. Integer Fields S Value 2.1 PROGRAMMING MODEL Name 0 I Positive Integer 1 1- 2n Negative Integer The Series 32000 architecture includes nine registers that are implemented on the NS32381 Floating-Point Unit (FPU). Note: n represents n number of bits in the word. 8 for byte. 18 for word and 32 for double-word. 3-86 .--------------------------------------------------------------------------,z (I) (,) 2.0 Architectural Description (Continued) N (,) ....• .... co DATA I---- "64'---+1 DEDICATED I+- 32--.j I FSR I 1--32 ·32Fl MSDW LSDW F3 L2 MSDW L2 LSDW F5 L4 MSDW L4 LSDW F7 ~~~~~s---l LO L2 L4 L6 Ll r.;~~t-7;,f_~SIN;-I L3 UI / / / / "- FD F2 F4 F6 Z ~ N . (,) co .... N 1-7:;"';;;;=H~=-I L5 LSDW ---. least significant double word MSDW ---. most significant double word L..."'--""=--L-"'--'=!!......l L7 Q TL/EE/9157-36 FIGURE 2-1. Register Set Underflow Trap Enable (UEN): Bit 3. If this bit is set, the FPU requests a trap whenever a result is too small in absolute value to be represented as a normalized number. If it is not set, any underflow condition returns a result of exactly zero. Inexact Result Trap Enable (lEN): Bit 5. If this bit is set, the FPU requests a trap whenever the result of an operation cannot be represented exactly in the operand format of the destination. If it is not set, the result is rounded according to the selected rounding mode. 2.1.1 Floating-Point Registers There are eight registers (lO-l7) on the NS32381 FPU for providing high-speed access to floating-point operands. Each is 64 bits long. A floating-point register is referenced whenever a floating-point instruction uses the Register addressing mode (Section 2.2.2) for a floating-point operand. All other Register mode usages (i.e., integer operands) refer to the General Purpose Registers (RO-R7) of the CPU, and the FPU transfers the operand as if it were in memory. Nole: These registers are all upward compatible with the 32-bit NS32081 registers, (FO-F7I. such that when the Register addressing mode is specified for a double precision (84-bitl operand, a pair of 32-bit reg- 2.1.2.2 FSR Status Fields The FSR Status Fields record exceptional conditions encountered during floating-point data processing. The meanings of the FSR status bits are given below: Trap Type (TT): bits 0-2. This 3-bit field records any exceptional condition detected by a floating-point instruction. The n field is loaded with zero whenever any floating-point instruction except lFSR or SFSR completes without encountering an exceptional condition. It is also set to zero by a hardware reset or by writing zero into it with the load FSR (lFSR) instruction. Underflow and Inexact Result are always reported in the n field, regardless of the settings of the UEN and lEN bits. isters holds the operand. The programmer specifies the even register of the pair which contains the least significant half of the operand and the next consecutive register contains the most significant half. 2.1.2 Floating-Point Status Register (FSR) The Floating-Point Status Register (FSR) selects operating modes and records any exceptional conditions encountered during execution of a floating-point operation. Figure 2-2 shows the format of the FSR. 9876543210 TL/EE/9157-37 FIGURE 2-2. The Floating-Point Status Register 000 No exceptional condition occurred. 001 Underflow. A non-zero floating-point result is too small in magnitude to be represented as a normalized floating-point number in the format of the destination operand. This condition is always reported in the TT field and UF bit, but causes a trap only if the UEN bit is set. If the UEN bit is not set, a result of Positive Zero is produced, and no trap occurs. 2.1.2.1 FSR Mode Control Fields The FSR mode control fields select FPU operation modes. The meanings of the FSR mode control bits are given below. Rounding Mode (RM): Bits 7 and 8. This field selects the rounding method. Floating-point results are rounded whenever they cannot be exactly represented. The rounding modes are: 00 Round to nearest value. The value which is nearest to the exact result is returned. If the result is exactly halfway between the two nearest values the even value (lSB = 0) is returned. 01 Round toward zero. The nearest value which is closer to zero or equal to the exact result is returned. 10 Round toward positive infinity. The nearest value which is greater than or equal to the exact result is returned. 11 010 Overflow. A result (either floating-point or integer) of a floating-point instruction is too great in magnitude to be held in the format of the destination operand. Note that rounding, as well as calculations, can cause this condition. 011 Divide by zero. An attempt has been made to divide a non-zero floating-point number by zero. Dividing zero by zero is considered an Invalid Operation instead (below). 100 Illegal Instruction. Any instruction forms not included in the NS32381 Instruction Set are detected by the FPU as being illegal. Round toward negative infinity. The nearest value which is less than or equal to the exact result is returned. 3-87 • C) ~ .,... eo C") N r---------------------------------------------------------------------------------, 2.0 Architectural Description 101 C") UJ Z ....... II) .,... .,...• eo C") N C") UJ Z (Continued) Invalid Operation. One of the floating-point operands of a floating-point instruction is a Reserved operand, or an attempt has been made to divide zero by zero using the DIVf instruction . not otherwise used by FPU hardware. They are reserved for use with NSC floating-point extension software. 2.2 INSTRUCTION SET 2.2.1 General Instruction Format 110 Inexact Result. The result (either floating-point or integer) of a floating-point instruction cannot be represented exactly in the format of the destination operand, and a rounding step must alter it to fit. This condition is always reported in the TT field and IF bit unless any other exceptional condition has occurred in the same instruction. In this case, the TT field always contains the code for the other exception and the IF bit is not altered. A trap is caused by this condition only if the lEN bit is set; otherwise the result is rounded and delivered, and no trap occurs. 111 Figure 2·3 shows the general format of an Series 32000 instruction. The Basic Instruction is one to three bytes long and contains the opcode and up to two 5·bit General Addressing Mode (Gen) fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes se· lected. The only form of extension issued to the NS32381 FPU is an Immediate operand. Other extensions are used only by the CPU to reference memory operands needed by the FPU. (Reserved for future use.) Underflow Flag (UF): Bit 4. This bit is set by the FPU whenever a result is too small in absolute value to be represented as a normalized number. Its function is not affected by the state of the UEN bit. The UF bit is cleared only by writing a zero into it with the Load FSR instruction or by a hardware reset. Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before index· ing. See Figure 2-4. Inexact Result Flag (IF): Bit 6. This bit is set by the FPU whenever the result of an operation must be rounded to fit within the destination format. The IF bit is set only if no other error has occurred. It is cleared only by writing a zero into it with the Load FSR instruction or by a hardware reset. Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected addressing modes. Each Disp/lmm field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded within the top bits of that field, as shown in Figure 2-5, with the remaining bits interpreted as a signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most signifi· cant byte first. Register Modify Bit (RMB): Bit 16. This bit is set by the FPU whenever writing to a floating point data register. The RMB bit is cleared only by writing a zero with the LFSR instruction or by a hardware reset. This bit can be used in context switching to determine whether the FPU registers should be saved. Some non·FPU instructions require additional, "implied" immediates and/or displacements, apart from those associat· ed with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition. 2.1.2.3 FSR Software Field (SWF) Bits 9·15 of the FSR hold and display any information writ· ten to them (using the LFSR and SFSR instructions), but are OPTIONAL EXTENSIONS BASIC INSTRUCTION rr-------------------~~--------------------\lr---------~~---------\ ,,, DISP2 DISP1 DISP21DISP1 IMPUED IMMEDIATE OPERAND(S) DISP DISP IMM IMM t INDEX BYTE INDEX BYTE GEN ADDR MODE A I :, ,I, GEN ADDR MODE B OPCODE I ~ f \ ~ TLlEE/9157-2 FIGURE 2-3. General Instruction Format 3-88 2.0 Architectural Description z en Col (Continued) 2.2.2 Addressing Modes Absolute: The address of the operand is specified by a Displacement field in the instruction. External: A pointer value is read from a specified entry of the current Link Table. To this pointer value is added a displacement, yielding the Effective Address of the operand. Top of Stack: The currently-selected CPU Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. Scaled Index: Although encoded as an addressing mode, Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by 1, 2, 4 or 8 and adding it into the total, yielding the final Effective Address of the operand. The following table, Table 2-1, is a brief summary of the addreSSing modes. For a complete description of their actions, see the Series 32000 Instruction Set Reference Manual. The Series 32000 Family CPUs generally access an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." Addressing modes in the Series 32000 family are designed to optimally support high-level language accesses to variables. In nearly all cases, a variable access requires only one addressing mode within the instruction which acts upon that variable. Extraneous data movement is therefore minimized. Series 32000 Addressing Modes fall into nine basic types: Register: In floating-point instructions, these addressing modes refer to a Floating-Point Register (FO-F7) or (LOL7) if the operand is of a floating-point type. Otherwise. a CPU General Purpose Register (RO-R7) is referenced. See Section 2.1.1Register Relative: A CPU General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. N Col . (1) ..... ..... ...... z en U1 Col N Col (1) ..... N• o SIGNED DISPLACEMENT GEN. ADDR. MODE TL/EE/9157-3 FIGURE 2-4. Index Byte Format Memory Space: Identical to Register Relative above, except that the register used is one of the dedicated CPU registers PC, SP, S8 or FP. These registers point to data areas generally needed by high-level languages. 7 1 11 Memory Relative: A pointer variable is found within the memory space pointed to by the CPU SP, S8 or FP register. A displacement is added to that pointer to generate the Effective Address of the operand. Immediate: The operand is encoded within the instruction. This addreSSing mode is not allowed if the operand is to be written. Floating-point operands as well as integer operands may be specified using Immediate mode. 0 I 1l\<;~IJ.Ct"'t't\i <;\u't\tll TL/EE/9157 -4 FIGURE 2-5. Displacement Encodings 3-89 • C) ~ .... co ~ r---------------------------------------------------------------------------------, 2.0 Architectural Description en Encoding U, .... ....• REGISTER z ~ C'II C') en z 00000 00001 00010 00011 00100 00101 00110 00111 (Continued) TABLE 2·1. Series 32000 Family Addressing Modes Mode Assembler Syntax Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 RO, R1, R2, R3, R4, R5, R6, R7, FO or LO F1 or L1 F20r L2 F30r L3 F4 or L4 F50r L5 F60r L6 F7 or L7 Effective Address None: Operand is in the specified register. REGISTER RELATIVE 01000 01001 01010 01011 01100 01101 01110 01111 Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(R1) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp + Register. Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) "+disp Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Frame memory relative Stack memory relative Static memory relative disp2(disp1 (FP)) disp2(disp1 (SP)) disp2(disp1 (SB)) Disp2 + Pointer; Pointer found at address Disp1 + Register. "SP" is either SPO or SP1, as selected in PSR. Immediate value None: Operand is issued from CPU instruction queue. Absolute @disp Disp. External EXT (disp1)+ disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Disp 1. Top of Stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. 11100 11101 11110 11111 Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] Mode + Rn. Mode + 2 x Rn. Mode + 4 X Rn. Mode + 8 x Rn. "Mode" and "n" are contained within the Index Byte. 10011 (Reserved for Future Use) MEMORY SPACE 11000 11001 11010 11011 MEMORY RELATIVE 10000 10001 10010 IMMEDIATE 10100 ABSOLUTE 10101 EXTERNAL 10110 TOP OF STACK 10111 SCALED INDEX 3·90 2.0 Architectural Description z en Co) (Continued) 2.2.3 Floating-Point Instruction Set The NS32381 FPU instructions occupy formats 9, 11 and 12 of the Series 32000 Family instruction set (Figure 2-6). A list of all Series 32000 family instruction formats is found in the applicable CPU data sheet. Certain notations in the following instruction description tables serve to relate the assembly language form of each instruction to its binary format in Figure 2-6. 23 i I I g8n1 I I I i gen2 up III • . i i i I Ii' i .. 0 i 0 1 1 1 1 1 0 OPERATION WORO Movement and Conversion co ..... Format Op Instruction 11 0001 MOVf gen1,gen2 I , 10 BYTE TL/EE/9157-5 9 010 MOVLF gen1, gen2 9 011 gen1, gen2 9 000 MOVif gen1,gen2 9 100 ROUNDfi gen1, gen2 9 101 TRUNCfi gen1, gen2 9 111 gen1, gen2 Format 11 23 l ~'n: I ~en2 I I I ~p I I I I I I I \ 0 \1 1 0 1 1 1 1 1 0 n OPERATION WORD I MOVFL , 10 BYTE TL/EE/9157-6 Format 12 TUEE/9157 -7 FIGURE 2-6. Floating-Point Instruction Formats The Format column indicates which of the three formats in Figure 2-6 represents each instruction. The Op column indicates the binary pattern for the field called "op" in the applicable format. The Instruction column gives the form of each instruction as it appears in assembly language. The form consists of an instruction mnemonic in upper case, with one or more suffixes (i or f) indicating data types, followed by a list of operands (gen1, gen2). An i suffix on an instruction mnemonic indicates a choice of integer data types. This choice affects the binary pattern in the i field of the corresponding instruction format (Figure 2-6) as follows: FLOORfi Description Move without conversion Move, converting from double precision to single precision. Move, converting from single precision to double precision. Move, converting from any integer type to any floating-point type. Move, converting from floatingpoint to the nearest integer. Move, converting from floatingpoint to the nearest integer closer to zero. Move, converting from floatingpoint to the largest integer less than or equal to its value. Note: The MOVLF instruction f bit must be 1 and the i field must be 10. The MOVFL instruction f bit must be 0 and the i field must be 11. Suffix i B W D Data Type Byte Word Double Word iField 00 01 11 Arithmetic Operations The following instructions perform floating-point arithmetic operations on the gen1 and gen2 operands, leaving the result in the gen2 operand. An f suffix on an instruction mnemonic indicates a choice of floating-point data types. This choice affects the setting of the f bit of the corresponding instruction format (Figure 2-6) as follows: Suffix f F L Data Type Single Precision Double Precision (Long) f Bit 1 o An operand designation (gen1, gen2) indicates a choice of addressing mode expressions. This choice affects the bin- 3-91 . U1 ....... The following instructions move the gen1 operand to the gen2 operand, leaving the gen1 operand intact. Format 9 I\) Co) ary pattern in the corresponding gen1 or gen2 field of the instruction format (Figure 2-6). Refer to Table 2-1 for the options available and their patterns. Further details of the exact operations performed by each instruction are found in the Series 32000 Instruction Set Reference Manual. Format 11 Op 0000 11 0100 Instruction ADDf gen1,gen2 SUBf gen1,gen2 11 1100 MULf gen1,gen2 Description Add gen1 to gen2. Subtract gen 1 from gen2. Multiply gen2 by gen1. co ..... ..... z en Co) I\) Co) • I\) o Q ~ .... co Cf) N Cf) U) Z U; ....• ....co Cf) N Cf) en z 2.0 Architectural Description (Continued) Format Op Instruction Description 11 1000 DIVf gen1, gen2 Divide gen2 by gen1. 11 0101 NEGf gen1, gen2 Move negative of gen1 to gen2. 11 1101 ASSf gen1, gen2 Move absolute value of gen1 to gen2. (N) 12 0100 SCALSf gen1, gen2 Move gen2'2g en1 to gen2, for integral values of gen1 without computing 2g en1 • (N) 12 (N) 12 (N) 12 Rounding The FPU supports all IEEE rounding options: Round toward nearest value or even significant if a tie. Round toward zero, Round toward positive infinity and Round toward negative infinity. 2.3 EXCEPTIONS/TRAPS The FPU supports five types of traps: Invalid operation, Divi· sion by zero, Overflow, Underflow and Inexact (one trap can be signaled at a time). The user can disable the Inexact and the Underflow traps. If an undefined Floating·Point instruc· tion is passed to the FPU an Illegal Instruction trap will oc· cur. The user can't disable trap on Illegal Instruction. Upon detecting an exceptional condition in executing a floating·point instruction, the FPU requests a TRAP by puis· ing the SPC line for one clock cycle, pulsing the SDN332 line for two and a half clock cycles and pulsing the FSSR line for one clock cycle. (The user will connect the correct lines according to the CPU being used). 0101 LOGSf gen1,gen2 Move the unbiased exponent of gen1 to gen2. 0011 DOTI gen1, gen2 Move (gen1'gen2) + LOto LO. 0010 POLYf gen1, gen2 Move (LO'gen1) + gen2 to LO. In addition, the FPU sets the Q bit in the status word regis· ter. The CPU responds by reading the status word register while applying status h'E (transferring status word) on the status lines. A trapped instruction returns no result (also if the destination is FPU register) and does not affect the CPU PSR. The FPU displays the reason for the TRAP in the TRAP TYPE (TT) field of the FSR. If the CPU sends FPU ID with illegal opcode, the FPU generates TRAP(UND) by sig· naling TRAP and setting the T bit in the status word register. (N): Indicates NEW instruction. Comparison The Compare instruction compares two floating-point values, sending the result to the CPU PSR Z and N bits for use as condition codes. See Figure 3-11. The Z bit is set if the gen1 and gen2 operands are equal; it is cleared otherwise. The N bit is set if the gen1 operand is greater than the gen2 operand; it is cleared otherwise. The CPU PSR L bit is unconditionally cleared. Positive and negative zero are considered equal. Format 11 Op 0010 Instruction CMPf gen1, gen2 3.0 Functional Description Description Compare gen1 to gen2. 3.1 POWER AND GROUNDING The NS323B1 requires a single 5V power supply, applied on seven (VeC> pins. These pins should be connected together by a power {VeC> plane on the printed circuit board. See Figure 3-1. Floating·Point Status Register Access The following instructions load and store the FSR as a 32· bit integer. Format 9 9 Op 001 110 The grounding connections are made on eight (GND) pins. These pins should be connected together by a ground (GND) plane on the printed circuit board. See Figure 3-1. Description Load FSR StoreFSR Instruction LFSR gen1 SFSR gen2 Note: All instructions support all of the NS32000 family data formats (for extemal operands) and all addressing modes are supported. +5V NS32381 K5 • Kll GND TLIEEI9157 -8 FIGURE 3·1. Recommended Supply Connections 3-92 z en w 3.0 Functional Description (Continued) N W V 4.5VII"'"---------------I~S----CC...J ClK -~----------------~ l-:? 64C~~~~~ +-_____________ R5T __ co ..... .....• r U'I ..... z en w ~ N W co ..... • ~" 1-------~30 N o 1'5--------- • TLlEE/9157-9 FIGURE 3-2. Power-On Reset Requirements 3.2 AUTOMATIC POWER DOWN MODE The NS32381 supports a power down mode in which the device consumes only 10% of its original power at 30 MHz. The NS32381 enters the power down mode (internal clocks are stopped with phase two high) if it does not receive an SPC pulse from the CPU within 256 clocks. either one byte (8 bits), one word (16 bits) or one double word (32 bits) to or from the FPU. During all bus cycles, the SPC line is driven by the CPU as an aciive low data strobe, and the FPU monitors pins STO-ST3 to keep track of the sequence (protocol) established for the instruction being executed. This is necessary in a virtual memory environment, allowing the FPU to retry an aborted instruction. The FPU exits the power down mode and returns to normal operation after it receives an SPC from the CPU. There is no extra delay caused by the FPU being in the power down mode. 3.5.1 Bus Cycles A bus cycle is initiated by the CPU, which asserts the proper status on (STO-ST3) and pulses SPC low. The status lines are sampled by the FPU on the leading (falling) edge of the SPC pulse except for the 32532 CPU. When used with the 32532 CPU, the status lines are sampled on the rising edge of CLK in the T2 state. If the transfer is from the FPU (a slave processor read cycle), the FPU asserts data on the data bus for the duration of the SPC pulse. If the transfer is to the FPU (a slave processor write cycle), the FPU latches data from the data bus on the trailing (rising) edge of the SPC pulse. Figures 3-5, 3-6, 3-7 and 3-8 illustrate these sequences. 3.3 CLOCKING The NS32381 FPU requires a single-phase TIL clock input on its CLK pin (pin A8). When the FPU is connected to a Series 32000 CPU, the CLK signal is provided from the CTIL pin of the NS32201 Timing Control Unit. 3.4 RESETTING The RST pin serves as a reset for on-chip logic. The FPU may be reset at any time by pulling the RST pin low for at least 64 clock cycles. Upon detecting a reset, the FPU terminates instruction processing, resets its internal logic, and clears the FSR to all zeroes. On application of power, RST must be held low for at least 30 /Ls after Vee is stable. This ensures that all on-chip voltages are completely stable before operation. See Figures 3-2 and 3-3. ClK The direction of the transfer and the role of the bidirectional SPC line are determined by the instruction protocol being performed. SPC is always driven by the CPU during slave processor bus cycles. Protocol sequences for each instruction are given in Section 3.6. 3.5.2 Operand Transfer Sequences lLfLfLSLJl _ _ _ _ _.._............... An operand is transferred in one or more bus cycles. For the 16-8it Slave Protocol a 1-byte operand is transferred on the least significant byte of the data bus (00-07). A 2-byte operand is transferred on the entire bus. A 4-byte or 8-byte operand is transferred in consecutive bus cycles, least significant word first. For the 32-8it Slave Protocol a 4-byte operand is transferred on the entire data bus in a single bus cycle and an 8-byte operand is transferred in two consecutive bus cycles with the most significant byte transferred on data bits (0007). The complete operand transfer of bytes 80-87 where 80 is the least significant byte would appear on the data bus as 84, 85, 86, 87 followed by 80, 81, 82, 83 in the second bus cycle. ,,64ClDCK--I CYCLES I I iiSf /I Tl/EE/9157-10 FIGURE 3-3. General Reset Timing 3.5 BUS OPERATION Instructions and operands are passed to the NS32381 FPU with slave processor bus cycles. Each bus cycle transfers 3-93 ~ ..- co C') 3.0 Functional Description (Continued) - +5V z~ .... LI) ....-• +5V 10k 10k lk lk lk co C') N C') NOE tJ) Z SPC ODIN 00-D31 1 PSO PSI SPC .. 32-BIT DATA BUS ODIN -II. DO-031 (NS32532) 510 STO (NS32381) CPU STI STI FPU ST2 ST2 ST4 ST3 SDN SDN532 FSSR FSSR BClK ClK R51 RESERVED M!L RESERVED !!..- RESERVED ..!!.!- =- R51 I TL/EE/9157-38 FIGURE 3-4a. System Connection Diagram with the NS32532 CPU +5V ) +5V 10k +5V Ik Ik NOE SPC DDIN ADO-AD31 PSO SPC .. DDIN 32-BIT DATA BUS I\. 00-031 ~ ~ (NS32332) STO 510 (NS32381) CPU STI STI FPU 512 512 ST3 513 SDN332 iiT/SDONE R51/ABT RESERVED ~ RESERVED !!..- RESERVED ..!!.!- R51 I I ClK cm R510 SYSTEM .. RESET PSI '17 R51I NS32201 TCU TL/EE/9157 -39 FIGURE 3-4b. System Connection Diagram with the NS32332 CPU 3-94 z 3.0 Functional Description (J) Co) (Continued) N Co) co ..... +5V c . ..... I U1 ...... 10k Z Ar/SPC DDIN A (NS32016) STI " PSI l- N Co) co ..... I N o DO-DIS I' (NS32008) CPU STO (NS32381) STI FPU --. ST2 r--+ ST3 -:.= - RESERVED 1 RSTO .ill...... RESERVED ~ RST/ABi' SYSTEM ~ PSO Co) DDIN 16-BIT DATA BUS 'I STO ~ NOE SPC ADO-ADI5 (NS32032) J (J) RESERVED 11- CLK I -==- em RSTI RESET NS32201 TCU TLlEE/9157-40 FIGURE 3-4c. System Connection Diagram with the NS32008, NS32016 or NS32032 CPU STO,STI &Pi: ~",,_ _ _ _VA.,.LIO_ _ _-,~ -----------~-" DO-D15 - - - - - - - - - - ~ ~,,_ _ _VA_Ll_O_FR_O_M_FP_U_ _.I}- -TL/EE/9157 -12 Note 1: FPU samples CPU status here. FIGURE 3-5. Slave Processor Read Cycle (NS32008, NS32016, NS32032 and NS32332 CPUs) 3-95 • C) r---------------------------------------------------------------------------------~ ....co~ 3.0 Functional Description (Continued) r- ~ o z ...... II) ....• .... CO CO) C'II TI --+-- ClK + (NOTEI) STO-5T4 CO) (J) Z ODIN ZZZZOVZX'--_ _---Jxzzzmz I/Z7l//llA m7ll11 1 \ ' - -_ _ _.....J Do-rel----------------------------«~________________________J)~-------------TL/EE/9157-13 Nole 1: FPU samples CPU status here. FIGURE 3-6. Slave Processor Read Cycle (NS32532 CPU) STO, STI VALID __________________1(NOTE 1) (NOTE 2) VALID FROM CPU DO-015 - - - - - TLlEE/9157 -14 Nole 1: FPU samples CPU status here. Nole 2: FPU samples data bus here. FIGURE 3-7. Slave Processor Write Cycle (NS3200S, NS32016, NS32032 and NS32332 CPU) ClK + (NOTE I) 5TO-5T3 ODIN 71171//17X~~X!,....,..Z"T""'T71....,....,7/,.......,...Z.,......,..I/"T""'TI/.....,........,7 ZII0ZOIY VZ71Z1/// \'----x- i (NOTE 2) ,,J)>------- D O - D 3 1 - - - - - - - - - - « \ "_ _ _ _ _ TL/EE/9157 -15 Nole 1: FPU samples CPU status here. Nole 2: FPU samples data bus here. FIGURE 3-S. Slave Processor Write Cycle (NS32532 CPU) 3-96 z en Co) 3.0 Functional Description (Continued) N 3.6 INSTRUCTION PROTOCOLS 2) It specilies which Slave Processor will execute it. 3.6.1 General Protocol Sequences 3) It determines the lormat 01 the following Operation Word 01 the instruction. The NS32381 supports both the 16·bi\ and 32-bit General Slave protocol sequences. See Tables 3-1,3-2 and Figures 3-12, 3-13 respectively. Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Table 3-3. Then depending on the state 01 the Protocol Select Signals PSO and PS1, either the 16·bit or a 32·bi\ Slave protocol is used. The NS32008, NS32016, NS32C016, NS32032 and the NS32C032 all communicate with the NS32381 using the 16-bit Slave Protocol. The NS32332 and NS32532 CPUs communicate with the NS32381 using a 32-bit Slave Protocol; a different version is provided lor each CPU. Slave Processor instructions have a three-byte Basic Instruction field, consisting of an ID byte followed by an Operation Word. See Figure 3-9 for the ID and Opcode lormat 16-bit Slave Protocol and Figure 3-10 lor the ID and Opcode Format 32-bit Slave Protocol. The ID Byte has three lunctions: 1) It identilies the instruction to the CPU as being a Slave Processor instruction. TABLE 3-1. 16-Bit General Slave Instruction Protocol Step Status 1 ID (1111) OP(1101) OP(1101) 2 3 4 5 6 7 ST(1110) OP(1101) Action CPU sends ID Syte CPU sends Operation Word CPU sends required operands (il any) Slaves starts execution (CPU preletches) Slave pulses SPC low CPU Reads Status Word CPU Reads Result (il destination is memory and il no TRAP occurred) TABLE 3-2. 32-Bit General Slave Instruction Protocol Step Status Action 1 ID (1111) OP (1101) CPU sends ID and Operation Word CPU sends required operands (il any) Slaves starts execution (CPU prefetches) Slave signals DONE or TRAP or CMPI CPU Reads Status Word (II TRAP was signaled or a CMPf instruction was executed) CPU Reads Result (if destination is memory and if no TRAP occurred) 2 3 4 5 6 ST(1110) OP(1101) TABLE 3-3. Floating-Point Instruction Protocols Mnemonic ADDI SUSI MUll DIVf MOVI ASSI NEGf CMPI FLOORli TRUNCfi ROUNDli MOVFL MOVLF MOVif LFSR SFSR SCALSI LOGSI DOTI POLY! D ~ Operand 1 Class Operand 2 Class Operand 1 Issued Operand 2 Issued read.1 read.f read.f read.1 read.f read.f read.1 read.f read.f read.1 read.! read.F read.L read.i read.D rmw.f rmw.f rmw.f rmw.f write.f write.f write.f read.1 write.i write.i write.i write.L write.F write.f I f I I I I I I I I I F L i D I I I I N/A write.D rmw.f write.! read.f read.! read.1 read.! read.! read.f N/A N/A f f f ! Double Word i = Integer size (B, W. D) specified in mnemonic. f ~ NI A Floating·Point type (F. L) specified in mnemonic. ~ Not Applicable to this instruction. 3-97 N/A N/A N/A I N/A N/A N/A N/A N/A N/A N/A N/A I N/A ! I Returned Value ftoOp.2 ItoOp.2 ItoOp.2 ItoOp.2 ItoOp.2 ItoOp.2 ItoOp.2 N/A itoOp.2 itoOp.2 itoOp.2 LtoOp.2 Fto Op. 2 Ito Op. 2 N/A DtoOp.2 ftoOp.2 !toOp.2 !toFO !toFO PSRBits Affected none none none none none none none N,Z,L none none none none none none none none none none none none Co) Q) ...... • ...... (II ...... z en Co) N Co) Q) ...... • N CI ~ • co C") .... C'\I 3.0 Functional Description (Continued) 7 o tion and for the CPU to continue with the 16-Bit Slave Protocol by reading the FPU's status word. For the 32-bit Slave Protocol, upon completion of the instruction, the FPU will signal the CPU by pulsing either SDNXXX or FSSR (Force Slave Status Read) . A half clock cycle SDN332 pulse with a NS32332 CPU indicates a valid completion of the instruction and that there is no need for the CPU to read its Status Word. C") en z ..... ID Byte ....• .... co II) 15 I OPCODE low ~ o I 7 0 OPCODE high I Byte 1 Byte 0 Operation Word FIGURE 3-9. 10 and OPCODE Format 16-Bit Slave Protocol z 0 A two and a half clock cycle SDN332 pulse indicates that there is a need for the CPU to read its Status Word. In the case of the NS32532 CPU, a one clock cycle SDN532 pulse indicates a valid completion of the instruction and that there is no need to read the Status Word. For the 16-bit Slave Protocol the CPU applies Status Code 1111 (Broadcast ID. Tables 3-1, 3-2), and sends the ID Byte on the least significant half of the Data Bus (DO-D7). The CPU next sends the Operation Word while applying Status Code 1101 (Transfer Slave Operand, Tables 3-1, 3-2). The Operation Word is swapped on the Data Bus; that is, bits 07 appear on pins D8-D15, and bits 8-15 appear on pins DO-D7. A one clock cycle FSSR pulse is used to indicate the need for the CPU to read the Status Word. In all cases and for both the 16-Bit and 32-Bit Slave Protocols the CPU will use SPC to read the Status Word from the FPU, while applying status code (1110). This word has the format shown in Figure 3-11. If the Q bit ("Quit", Bit 0) is set, this indicates that an error (TRAP) has been detected by the FPU. The CPU will not continue the protocol, but will immediately trap through the Slave vector in the Interrupt Table. If the instruction being performed is CMPf (Section 2.2.3) and the Q bit is not set, the CPU loads Processor Status Register (PSR) bits N, Z and L from the corresponding bits in the FPU Status Word. The FPU always sets the L bit to zero. For the 32-bit Slave Protocol the CPU applies Status Code 1111 and sends the ID Byte (different ID for each format) in byte 3 (D24-D31) and the Operation Word in bytes 1 and 2 in a Single double word transfer. The Operation Word is swapped such that OPCODE low appears on byte 2 (D16D23) and OPCODE high appears on byte 1 (D8-D15). Byte o (DO-D7) is not used. The last step in the Slave Protocol if no errors have occurred and the result's destination is memory will be for the CPU to read the result. Here again the CPU uses SPC to read the result from the FPU and transfer it to its destination. These Read cycles from the FPU are performed by the CPU while applying Status Code 1101 (Transfer Slave Operand). 31 I 23 ID 15 IOPCODE low IOPCODE highl 7 XXXXXXX1 Byte 3 Byte 2 Byte 1 Byte 0 FIGURE 3-10. 10 and OPCODE Format 32-Blt Slave Protocol All Slave Processors input and decode the data from these transfers. The Slave Processor selected by the ID Byte is activated and from this point the CPU is communicating only with it. If any other slave protocol is in progress (e.g., an aborted Slave instruction), this transfer cancels it. At this point also, both the CPU and FPU are aware of the number of operands to be transferred and their sizes. Bit Using the Addressing Mode fields within the Operation Word, the CPU starts fetching operands and issuing them to the FPU. To do so, it references any Addressing Mode extensions appended to the FPU instruction. Since the CPU is solely responsible for memory accesses, these extensions are not sent to the Slave Processor. The Status Code applied is 1101 (Transfer Slave Processor Operand, Tables 3-1,3-2). Description (0) Q: Set to "1" if an FPU TRAP (error) occurred. Cleared to '0" by a valid CMPf. (2) (6) L: Z: Cleared to "0" by the FPU. Set to "1" if the second operand is equal to the first operand. Otherwise it is cleared to (7) N: (15) T: Set to "1" if the second operand is less than the first operand. Otherwise it is cleared to "0". After the CPU has issued the last operand, the FPU starts the actual execution of the instruction. A one clock cycle SPC pulse is used to indicate the completion of the instruc- 3-98 Setto "1" iftheTRAP is (UND) and cleared to "0" if the TRAP is (FPU). FIGURE 3-11. FPU Status Word Format z 3.0 Functional Description en Co) (Continued) N ......... CJ1 Co) QI) ....... z en Co) N Co) QI) ....• N o READ OPERAND (BUS STATUS = I 101) GO TL/EE/9157-16 FIGURE 3-12. 16-Blt General Slave Instruction Protocol: FPU Actions READ OPERAND (BUS STATUS=IIOI) y Pulse Active -- 1 SDN332 for:1 clock or SiiN532 for I clock (DONE) TL/EE/9157-17 FIGURE 3-13. 32-Bit General Slave Instruction Protocol: FPU Actions 3-99 ..... o N CO C") N C") (/) Z ..... an ........• co C") N C") (/) Z 3.0 Functional Description (Continued) 3.6.2 Early Done Algorithm The NS32381 has the ability to modify the General Slave protocol sequences and to boost the performance of the FPU by 20% to 40%. This is called the Early Done Algorithm . Early Done is defined by the fact that the destination of an instruction is an FPU register and that the instruction and range of operands cannot generate a TRAP (error). When these conditions are met the FPU will send a SDNXXX or SPC pulse after receiving all of the operands from the CPU and before executing the instruction, hence an early done as compared to the General Slave Protocols. 4.1.2 Input Signals CLK DDIN STO-ST3 1100- Reserved 1101- Transferring Operation Word or Oper· and 1110- Reading Status Word 1111- Broadcasting Slave ID In the case of the 16-bit Slave Protocol in which the CPU always reads the slave status word, the FPU will force all zeroes to be read. The CPU can then send the next instruction to the FPU saving the general protocol overhead. The FPU will start the new instruction immediately after finishing the previous instruction. SFSR, CMPF and CMPL do not generate an Early Done. Note: The NS32332 generates four status lines and the NS32532 generates five. The user should connect the status lines as shown below: 3.6.3 Floating-Point Protocols Table 3-3 gives the protocols followed for each floatingpoint instruction. The instructions are referenced by their mnemonics. For the bit encodings of each instruction, see section 2.2.3. RST NOE The Operand Class columns give the Access Classes for each general operand, defining how the addressing modes are interpreted by the CPU (see Series 32000 Instruction Set Reference Manual). PSO. PS1 The Operand Issued columns show the sizes of the operands issued to the Floating-Point Unit by the CPU. "D" indicates a 32-bit Double Word. "i" indicates that the instruction specifies an integer size for the operand (B = Byte, W = Word, D = Double Word). "f" indicates that the instruction specifies a floating-point size for the operand (F = 32-bit Standard Floating, L = 64-bit Long Floating). NS32381 NS32332 NS32532 STO STO STO ST1 ST1 ST1 ST2 ST2 ST2 ST3 ST3 ST4 Reset: Active low. Resets the last operation and clears the FSR register. New Opcode Enable: Active high. This signal enables the new opcodes available in the NS32381. Protocol Select: Selects the slave protocol to be used. PSO is the least significant and rightmost bit. OO-Selects 16-bit protocol. 01-5elects 32-bit protocol for NS32332. 10-Reserved. 11-Selects 32-bit protocol for NS32532. 4.1.3 Output Signals SDN332 Slave Done 332: Active low. This signal is for use with the NS32332 CPU only. If held active for a half clock cycle and released this pin indicates the successful completion by the FPU of a floating-point instruction. Holding this pin active for two and a half clock cycles indicates TRAP or that the CMPf instruction has been executed. SDN532 Slave Done 532: Active low. This signal is for use with the NS32532 CPU only. When active it indicates successful completion by the FPU of a floating-point instruction. The Returned Value Type and Destination column gives the size of any returned value and where the CPU places it. The PSR Bits Affected column indicates which PSR bits, if any, are updated from the FPU Status Word (Figure 3-11 ). Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified, because the Floating-Point Registers are physically on the Floating-Point Unit and are therefore available without CPU assistance. 4.0 Device Specifications FSSR 4.1 PIN DESCRIPTIONS 4.1.1 Supplies The following is a brief description of all NS32381 pins. Vee Power: + 5V positive supply. GND Clock: TTL-level clock signal. Data Direction In: Active low. Status signal indicating the direction of data transfers during a bus cycle . Status: Bus cycle status code from CPU. STO is the least significant and rightmost bit. Force Slave Status Read: Active low. This signal is for use with the NS32532 CPU only. When active it indicates TRAP or that the CMPf instruction has been executed. 4.1.4 Input/Output Signals Ground: Ground reference for both on-chip logic and drivers connected to output pins. *DO-D31 Data Bus: These are the 32 Signal lines which carry data between the NS32381 and the CPU. SPC Slave Processor Control: Active low. This is the data strobe Signal for slave transfers. For the 32-bit protocol, SPC is only an input signal. 'For the 16·bH Slave Protocol the upper sixteen data Input signals (016031) should be left floating. 3-100 z tJ) 4.0 Device Specifications (Continued) Co) N ........co. Co) Connection Diagram @@@@@@@@@ K@@@@@@@@@@@ J @ @ @@ H@ @ @@ G @@ @@ NS32381 F @@ @@ E@@ @@ D@@ @@ C @ @d @@ B@@@@@@@@@@@ A @@@@@@@@@ 1 2 3 4 5 6 7 8 CI1 ...... Z tJ) Co) N Co) ....• co N o 9 10 11 TL/EE/9157-1B Bottom View Order Number NS32381 See NS Package Number U68D FIGURE 4-1. 68-Pin PGA Package NS32381 Pinout Descriptions Desc Vee 01 00 PSl (Note 1) GNO GNO CLK RST Reserved (Note 2) Reserved (Note 2) 02 017 016 PSO (Note 1) GNO NOE(Note 1) Reserved (Note 3) Reserved (Note 2) Vee 015 018 03 031 014 019 Vee 030 Vee 04 020 013 029 Reserved (Note 3) 05 Pin Desc A2 A3 028 GNO GNO 021 012 027 06 022 011 SON332 07 023 SPC SON532 A4 A5 A6 A7 A8 A9 Al0 81 82 83 84 85 86 87 88 89 810 811 Cl C2 Cl0 Cll 01 02 010 011 El E2 El0 Ell Fl F2 Vee 08 GNO 026 GNO Vee Reserved (Note 3) STO STl Reserved (Note 3) GNO 024 025 09 010 OOIN Vee ST2 ST3 FSSR Note 1: eMOS input; never float. Note 2: Pin should be grounded. Note 3: Pin should be left floating. 3-101 Pin FlO Fll Gl G2 Gl0 Gll Hl H2 Hl0 Hll Jl J2 Jl0 Jll Kl K2 K3 K4 K5 K6 K7 K8 K9 Kl0 Kll L2 L3 L4 L5 L6 L7 L8 L9 L10 ~ co C") .....• C'I C") (/) z .... In . ..... ..... co C") C'I C") (/) z 4.0 Device Specifications (Continued) 4.2 ABSOLUTE MAXIMUM RATINGS Power Dissipation If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Power Down Mode ESD Rating is to be determined . Temperature Under Bias Storage Temperature All Input or Output Voltages with Respect to GND 1.5W 0.15W Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. O'C to + 70'C -65'Cto +150'C -0.5Vto +7.0V 4.3 ELECTRICAL CHARACTERISTICS TA = O'C to 70'C, Vee = 5V ± 5%, GND = OV Max Units High Level Input Voltage' 2.0 Vee +0.5 V VIL Low Level Input Voltage' -0.5 0.8 V Symbol Parameter VIH Conditions VOH High Level Output Voltage IOH = -400 p.A Val Low Level Output Voltage IOl = 2mA II Input Load Current' VIH Min Typ 2.4 V 0.4 V -10.0 10.0 p.A High Level Input Voltage for PSO, PS1, NOE 3.5 Vee +0.5 V Vil Low Level Input Voltage for PSO, PS 1, NOE -0.5 1.5 V II Input Load Current for PSO, PS 1, NOE -100 100 p.A Il Leakage Current (Output and I/O Pins in TRI-STATE®/Input Mode) 0.4 ,,; VOUT ,,; 2.4V -20.0 20.0 p.A Icc Active Supply Current lOUT 25'C 300 mA Icc Power Down Current lOUT 25'C 30 mA pF pF = = 0, TA 0, TA = = CIN Input Capacitance 6 10 COUT Output Capacitance 8 12 '"Except PSO, PS1, NOE and Reserved pins. 4.4 SWITCHING CHARACTERISTICS 4.4.1 Definitions All the Timing Specifications given in this section refer to 0.8V and 2.0V on all the input and output signals as illustrated in Figures 4.2 and 4.3, unless specifically stated otherwise. ClK [=:J ABBREVIATIONS L.E. - Leading Edge R.E. - Rising Edge T.E. - F.E. - Falling Edge ClK 2.0V O.SV SlG1 1'---- SlG1 SlG2 [ 2.4V tSIG11 O.SV O.45V SlG2 ~ [ ___I__tS_IG_2_h.....J1, ___ Trailing Edge [ ----:---'=1C [ [ o.s\-- - - - - - - " ' - - - - - --2.4V tSlG11 '----If---O.45V L- - - f - - - 2 . 4 V 2.0V tSIG2h _ _ _ _ _...J.__ - - - - - -O.45V TLlEE/9157-20 FIGURE 4-3. Timing Specification Standard (Signal Valid before Clock Edge) ______ .:: TLlEE/9157-19 FIGURE 4-2. Timing Specification Standard (Signal Valid after Clock Edge) 3-102 z (J) 4.0 Device Specifications (Continued) Co) ~ ....co• .... 4.4.2 Timing Tables (Maximum times assume temperature range D'C to 7D'C) 4.4.2.1 Output Signal Propagation Delays for all CPUs (Maximum times assume capacitive loading of 100 pF) Symbol Figure U\ ....... z NS32381-15 Reference! Description Conditions Min en NS32381-20 Max Min Units Co) Max co .... tSPCFw 4-18 SPC Pulse Width from FPU At 0.8V (Both Edges) %tcLKp - 10 % tCLKp + 10 % tcLKp - 10 %tCLKp + 10 ns tSPCFa 4·18 SPC Output Active After CLK R.E. ns tsPCFj 4-18 SPC Output Inactive After CLK R.E. tSPCFnl 4-18 SPC Output Nonforcing After CLK F.E. 38 18 33 38 18 35 Co) N 33 ns 30 ns ~ Q 4.4.2.2 Output Signal Propagation Delays for the NS32008, NS32016 and NS32032 CPUs Maximum times assumes capacitive loading of 100 pF Symbol Figure NS32381-15 Reference! Description Conditions Max Min NS32381-2D Min Units Max tOy 4-8 Data Valid (00-015) After SPC L.E. 30 ns tOj 4-8 00-015 Floating After SPC T.E. 30 ns 4.4.2.3 Output Signal Propagation Delays for the 32-811 Slave Protocol NS32332 CPU Maximum times assume capacitive loading of 100 pF unless otherwise specified Symbol Figure Description Conditions tOy 4-10 D.:ItaValid After SPC L.E.; 75 pF Cap. Loading tOlv 4-10 Data Invalid After SPC T.E. tOni 4-10 Data Nonforcing After SPC T.E. tsONa 4-12,13 Slave Done Active tsONh Slave Done Hold After CLK R.E. tSON w 4-12 Slave Done Pulse Width AtO.8V (Both Edges) tSTRPw Min lB 3 Slave Done (TRAP) Pulse Width AtO.BV (Both Edges) Min %tCLKp -l0 Units Max 25 18 ns 30 ns 33 33 ns 33 ns %tcLKp+l0 ns 30 ns % tCLKp + 10 30 3 %tcLKp -l0 2%tcLKp -l0 2%tcLKp+l0 2112 tCLKp -10 2% tCLKp+ 10 3-103 ns 30 33 4-12,13 Slave Done Nonforcing After eLK R. E. 4-13 NS32381-2D Max 30 After CLK F.E. 4-13 tSONn! NS32381-15 Reference! ns &I 4.0 Device Specifications (Continued) 4.4.2.4 Output Signal Propagation Delays for the 32-Blt Slave Protocol NS32532 CPU Maximum times assume capacitive loading of 75 pF Symbol Figure Description NS32381- Reference! Conditions 15 Min tOy 4-14 Data Valid to ly 4-14 Data Invalid After ClK R.E. tOn! 4-14 Data Nonforcing After SPC T.E. tsoa 4-16 Slave Done Active After ClK R.E. tSOh 4-16 Slave Done Hold After ClK R.E. tSOn! 4-16 Slave Done Nonforcing After ClK R. E. tFSSRa 4-17 Forced Slave Status Read Active After ClK R.E. tFSSRh 4-17 Forced Slave Status Read Hold After ClK R.E. tFSSR n! 4-17 Forced Slave Status Read Nonforcing After ClK R.E. 20 Max After SPC L.E. Min 25 Max 30 Min 40 25 30 25 2 33 25 ns ns 30 35 2 Max 3 3 30 38 Min Units 25 3 30 2 Max 25 3 30 2 ns 25 ns 25 ns 35 30 30 30 ns 40 35 25 25 ns 25 ns 30 ns 2 38 2 33 35 2 25 2 30 30 4.4.2.5 Input Signal Requirements with all CPUs Symbol Figure NS32381- Reference! Conditions Description 15 Min 20 Max Min 30 25 Max Min Max Min Units Max tpWR 4-5 Power-On Reset Duration After ClK R.E. 30 30 30 30 ,...s tRSTw 4-6 Reset Pulse Width At 0.8V (Both Edges) 64 64 64 64 tCLKp tRSTs 4-7 Reset Release Before ClK F.E. 10 10 10 10 ns tRSTh 4-7 Reset Hold After ClK R.E. 0 0 0 0 ns 4.4.2.6 Input Signal Requirements with the NS32008, NS32016, NS32032 CPUs Symbol Figure Description Reference! NS32381-15 Conditions Min Max NS32381-20 Min Units Max tss 4-8 Status (STO-ST1) Setup Before SPC L.E. 25 20 ns tSh 4-8 Status (STO-ST1) Hold After SPC L.E. 20 20 ns tos 4-9 Data Setup (DO-D15) Before SPC T.E. 25 20 ns tOh 4-9 Data Hold (DO-D15) After SPC T.E. 20 20 ns tspCw 4-8 SPC Pulse Width from CPU AtO.8V (Both Edges) 35 35 ns 3-104 Z tn w 4.0 Device Specifications (Continued) N W 4.4.2.7 Input Signal Requirements with the 32·Bit Slave Protocol NS32332 CPU Symbol Figure NS32381·15 Reference! Description Conditions Min NS32381·20 Max Min Units co ..... • ..... U1 ....... Z Max tSTs 4-11 Status Setup Before SPC L.E. 25 20 ns tSTh 4-11 Status Hold After SPC L.E. 20 20 ns tos 4-11 Data Setup Before SPC T.E. 25 20 ns tOh 4-11 Data Hold After SPC T.E. 20 20 ns tspcw 4-11 SPC Pulse Width At O.BV (Both Edges) 35 35 ns (J) W N W co ..... • N C 4.4.2.8 Input Signal Requirements with the 32·Bit Slave Protocol NS32532 CPU NS32381 Symbol Figure Reference! Conditions Description 15 Min Max 20 Min 25 Max Min 30 Max Units Max Min tSTs 4-15 Status Setup Before ClK (T2) R.E. 25 25 20 15 ns tSTh 4-15 Status Hold After ClK (T2) R.E. 25 20 10 10 ns tOOINs 4-15 Data Direction in Setup Before SPC L.E. 0 0 0 0 ns tOOINh 4-15 Data Direction In Hold After SPC T.E. 10 10 10 10 ns tDs 4-15 Data Setup Before SPC T.E. 10 6 6 6 ns tDh 4-15 Data Hold After SPC T.E. 20 20 10 10 ns tspcs 4-15 SPCSetup Before ClK (T2) R.E. 20 20 20 20 ns tSPCh 4-15 SPCHold After ClK (T2) R.E. 0 0 0 0 ns tSPCia 4-14 SPC Inactive After ClK (Tl) R.E. 0 0 ns tSPca 4-14 SPCActive After ClK (Tl) R.E. 3 3 ns 4.4.2.9 Clocking Requirements with all CPUs NS32381 Symbol Figure Description Reference! Conditions 15 20 25 30 Units Min Max Min Max Min Max Min Max tCLKh 4-4 Clock High Time At 2.0 V (Both Edges) 25 1000 20 1000 lB 1000 16 1000 ns tCLKI 4-4 Clock low Time At O.BV (Both Edges) 25 DC 20 DC 18 DC 16 DC ns tCTr 4-4 Clock Rise Time Between O.BV and 2.0V 3 ns tCTd 4-4 Clock Fall Time Between 2.0V and O.BV 3 ns tCLKp 4-4 Clock Period ClK R.E. to Next ClK R.E. DC ns 5 7 7 3-105 66 DC 4 5 50 DC 4 40 DC 33.3 • CI ~ .... ~ C'i 4.0 Device Specifications (Continued) 4.4.3 Timing Diagrams ('I) (J) Z ;:n .... ....• CIO eLK ('I) C'i ('I) (/) Tl/EE/9157 -21 Z FIGURE 4-4. Clock Timing vee -I Tl/EE/9157-22 FIGURE 4-5. Power-On Reset Tl/EE/9157 -23 FIGURE 4-6. Non-Power-On Reset CLK--.J ill I r --.Y--t tRSTh RST• ,----.. TLlEE/9157-24 FIGURE 4-7. RST Release Timing Note: The rising edge of RST must occur while elK is high, as shown. CLK STO, STI SPC -_ ..... ?ll1. VALID xzmmv rts'1~tSh4 _ tsPCw--j,('""" tev4 -l-tOf:j 00-015 -----------< VALID FROM FPU )-TLlEE/9157-25 FIGURE 4-8. Read Cycle from FPU (NS32008, NS32016, NS32032 CPUs) 3-106 z 4.0 Device Specifications (Continued) en Co) ClK _ _ _.... co ...... N . Co) ...... (II STO, 5T1 ?llX ...... z XllIlllW VALID en Co) j-tss-j j-tsh-l 5PC ----ctspcw--lIiL r---- to. --I DO-D1S--ZI""lZ"""V""Z""ZX"" VALID FROM CPU N Co) co ...... • N o tOh::j ~ TL/EE/9157 -26 FIGURE 4-9. Write Cycle to FPU (NS3200B, NS32016, NS32032 CPUS) r-- 11 ------"'·+1'- T4 - - - j ClK [ 5TO-513 [ZZZZ77ZZZX"'-----JXZVZ7IZ/I/ll ~[ Hf~, pmm_m_m DO_D3{ _ _ _ _ _ _ _ _ _tDv __ TLlEE/9157 -27 FIGURE 4·10. Read Cycle from FPU (NS32332 CPU) r-- 11 D O - D 3 { - - - - - - - - - - - < 1 DATA VALID T4---j ~--------TLlEE/9157-28 FIGURE 4-11. Write Cycle to FPU (NS32332 CPU) 3-107 . ....~co 4.0 Device Specifications (Continued) C') N C') ClK [ t/) Z ...... II) .... ....• _[-----~~!~~-lt:t~.o~~ _____ _ SDN332 co C') N ~ IsONw Z TUEE/9157 -29 FIGURE 4-12. SDN332 Timing (NS32332 CPU) ClK [ tSONa-li: SON332 [---------- ~________ ,...- t STRpw TLlEE/9157-30 FIGURE 4-13. SDN332 (TRAP) Timing (NS32332 CPU) 00- 031 [----------~l'----O-A-TA-V-A-Ll-D _ _"""'I _ _ _.1.0 TL/EE/9157-31 FIGURE 4-14. Read Cycle from FPU (NS32532 CPU) 3-108 z en CAl 4.0 Device Specifications (Continued) N CAl CD r-- T1 ------<·+I·-T2 -----j ClK[ f STO-ST3[·-,-0'7"""'7""//~!I~O"""""! ..... .....• C7I ...... z en CAl tSTS-j .J..!h X/,....,....O,.....,....O.,.....,...77~O~O..,.....-y7 N CAl CD ..... N• o I SPC [ DO-D31[--------------------~~---DA-~--VA-L1-D--~~--------------TL/EE/9157-32 FIGURE 4·15. Write Cycle to FPU (NS32532 CPU) TL/EE/9157 -33 FIGURE 4·16. SDN532 Timing (NS32532 CPU) ClK [ tFSSRa--i { [ rSSR 1:"''' ----1' --; --I ~_~':!mm TL/EE/9157-34 FIGURE 4·17. FSSR Timing (NS32532 CPU) \sPCra I , "1 ,\sPCFla ClK TL/EE/9157 -35 FIGURE 4·18. SPC Pulse from FPU 3-109 C) r---------------------------------------------------------------------------------~ ~ i N CO) (I) z iii .... ....• CD CO) N ~ Z Appendix A NS32381 PERFORMANCE ANALYSIS NS32381 PERFORMANCE ANALYSIS The following performance numbers were taken from simulations using the 381 SIMPLE model. The timing terms have been designed to provide performance numbers which are CPU independent. Numbers were obtained from SIMPLE simulations, taking the average execution times using 'typical' operands. The following instructions do not generate an early done. In this case, EXT is the time from the last data sent to the FPU, until the normal DONE is issued. (FPU Pipe is empty) Instruction SFSR Listed below are definitions of the timing terms: EXT - EDD - Provided that the CPU can transfer the ID/OPCODE and any operands to the FPU during the EDD time, the average system execution time for an instruction (keeping the FPU pipe filled) is: EXT + EDD. The system execution time for a single FPU instruction with FPU register destination and early done is: EXT plus the protocol time. (FPU pipe is initially empty) Instruction EXT EDD Total any, reg 5 8 13 MOVF any, reg MOVL any, reg 5 5 6 8 11 13 50 LFSR MOVif any, reg 5 45 MOVFL any, reg 9 6 15 ADDF ADDL any, reg any, reg 11 11 31 31 42 42 SUBF SUBL any, reg any, reg 11 11 31 31 42 42 MULF any, reg MULL any, reg 11 11 20 27 31 38 DIVF DIVL any, reg any, reg 11 11 45 59 56 70 POLYF any, any POLYL any, any 15 15 46 53 61 68 DOTF any,any DOTL any, any 15 15 46 53 61 68 7 any,any 18 ROUNDfi any, mem FLOORfi any, mem TRUNCfi any, mem 46 46 46 CMPF CMPL any,any anY,any 17 ABSf NEGf anY,any any,any 9 9 SCALBf any,any 49 LOGBf any,any 36 MOVLF (EXecution Time) This is the time from the last data sent to the FPU, until the early DONE is issued. (FPU Pipe is empty) (Early Done Delta) This is the time from when the early DONE is issued until the execution of the next instruction may start. 3-110 EXT reg,mem 17 z en w ~National I\) Q ~ Semiconductor Q) ..... .....• Q Z '"en NS32081-10/NS32081-15 Floating-Point Units General Description Features The NS320B1 Floating-Point Unit functions as a slave processor in National Semiconductor's Series 32000® microprocessor family. It provides a high-speed floating-point instruction set for any Series 32000 family CPU, while remaining architecturally consistent with the full two-address architecture and powerful addressing modes of the Series 32000 micro-processor family. III Eight on-chip data registers III III III III III III w I\) Q Q) . ..... ..... 32-bit and 64-bit operations Supports proposed IEEE standard for binary floatingpoint arithmetic, Task P754 Directly compatible with NS32016, NS3200B and NS32032 CPUs High-speed XMOSTM technology Single 5V supply 24-pin dual in-line package U1 Block Diagram r I I I ~ - ExEcUTION UNjj"I I I I ~ • INTERFACE ANoi STORAGE UNIT I 16 I L ___________ _ C.ntrot Bus TL/EE/5234-1 3-111 ~r-------------------------------------------------------------------~ ..... • ..... Table of Contents co Q N ~ Z ;:; ..... • ..... co Q N ~ Z 1.0 PRODUCT INTRODUCTION 3.0 FUNCTIONAL DESCRIPTION (Continued) 3.4 Bus Operation 1.1 Operand Formats 1.1.1 Normalized Numbers 3.4.1 Bus Cycles 1.1.2 Zero 3.4.2 Operand Transfer Sequences 1.1.3 Reserved Operands 3.5 Instruction Protocols 1.1.4 Integers 3.5.1 General Protocol Sequence 1.1.5 Memory Representations 3.5.2 Floating-Point Protocols 2.0 ARCHITECTURAL DESCRIPTION 4.0 DEVICE SPECIFICATIONS 2.1 Programming Model 4.1 Pin Descriptions 2.1.1 Floating-Point Registers 4.1.1 Supplies 2.1.2 Floating-Point Status Register (FSR) 4.1.2 Input Signals 2.1.2.1 FSR Mode Control Fields 4.1.3 Input/Output Signals 2.1.2.2 FSR Status Fields 4.2 Absolute Maximum Ratings 2.1.2.3 FSR Software Field (SWF) 4.3 Electrical Characteristics 2.2 Instruction Set 4.4 Switching Characteristics 2.2.1 General Instruction Format 4.4.1 Definitions 2.2.2 Addressing Modes 4.4.2 Timing Tables 2.2.3 Floating-Point Instruction Set 4.4.2.1 Output Signals: Internal Propagation Delays 2.3 Traps 4.4.2.2 Input Signals Requirements 3.0 FUNCTIONAL DESCRIPTION 4.4.2.3 Clocking Requirements 3.1 Power and Grounding 4.4.3 Timing Diagrams 3.2 Clocking 3.3 Resetting 3-112 z en Co) List of Illustrations Floating-Point Operand Formats Register Set .. The Floating-Point Status Register General Instruction Format Index Byte Format Displacement Encodings Floating-Point Instruction Formats Recommended Supply Connections Power-On Reset Requirements General Reset Timing System Connection Diagram Slave Processor Read Cycle Slave Processor Write Cycle FPU Protocol Status Word Format. Dual-In-Line Package Timing Specification Standard (Signal Valid After Clock Edge) Timing Specification Standard (Signal Valid Before Clock Edge) Clock Timing Power-an-Reset Non-Power-On-Reset. Read Cycle From FPU Write Cycle To FPU SPC Pulse from FPU RST Release Timing 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 0 0 0 0 .. 0 0 0 0 0 0 0 0 0 0 0 01-1 .. 0 0 0 .. 0 0000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000002-3 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 02-4 0 0 .. 0 0 0 0 0 0 0 0 0 .... 0 0 0 0 0 0 0 0 0 0 0 0 02-5 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 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 .. 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 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 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 0 0 0 0 0 0 0 0 ...... 0 0 0 .. 000000000000000000000000003-2 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 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 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 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 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 .. 0 0 0 0 0 0 0 0 0 0 02-6 0 0 0 0 0 0 0 03-1 0 0 0 0 0 0 0 .. 0 0 0 0 0 .. .... 0 0 0 0 0 03-3 0 0 03-4 . . 3-5 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 0 .. 0 0 0 0 .. 0 0 0 .. 0 0 0 0 0 .. 03-6 0000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 03-7 0 0 .... 0 0 0 0 0 .. 0 0 0 0 0 0 04-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 ...... 0 0 .. 0 ...... 0 04-2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04-3 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 0 0 0 0 0 0 0 0 0 04-4 0000000000000000000000000000000000000000000000000000 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04-5 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 0 0 0 04-6 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 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 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 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 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 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 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 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 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 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02-2 0 ...... .. 02-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 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 0 0 0 .... 0 .. 0 0 0 0 0 0 0 04-7 .4-8 04-9 . . 4-1 0 List of Tables Sample F Fields Sample E Fields Normalized Number Ranges Series Family Addressing Modes General Instruction Protocol Floating-Point Instruction Protocols 0000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000000000000000001-1 0000000000000000000000000000000000000000000000000000 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 000 .. 0 0 0 .. 32000 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 0 0 0 .. 0 0 0 0 .. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01-2 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 0 0 0 0 0 0 0 .. 0 0 0 0 0 0 01-3 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 0 0 0 0 .. 0 0 0 0 0 0 0 0 0 0 0 0 02-1 0 0 .. . ..... ~ z en Co) o 00 0 0 0 0 .. 0 0 0 0000000000000000000000000000000000000000000000000000 0 0 .. 0 o 00 ..... I\) 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 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 0 0 0 0 0 0 0 0 0 .... 0 0 0 0 I\) 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 03-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 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 03-2 3-113 ..... • ..... U1 ....• .... co U) , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , o N ~ Z ...... o ....• .... CO o N (I) U) Z 1.0 Product Introduction TABLE 1·2. Sample E Fields The NS32081 Floating-Point Unit (FPU) provides high speed floating-point operations for the Series 32000 family, and is fabricated using National high-speed XMOS technology. It operates as a slave processor for transparent expansion of the Series 32000 CPU's basic instruction set. The FPU can also be used with other microprocessors as a peripheral device by using additional TTL interface logiC. The NS32081 is compatible with the IEEE Floating-Point Formats by means of its hardware and software features. E Field F Field Represented Value 011 ... 110 100 ... 0 1.5x2- 1 =0.75 011 ... 111 100 ... 0 1.5 x 20 = 1.50 100 ... 000 100 ... 0 1.5X21 =3.00 Two values of the E field are not exponents. 11 ... 11 signals a reserved operand (Section 2.1.3). 00 ... 00 represents the number zero if the F field is also ali zeroes, otherwise it signals a reserved operand. 1.1 OPERAND FORMATS The S bit indicates the sign of the operand. It is 0 for positive and 1 for negative. Floating-point numbers are in signmagnitude form, that is, only the S bit is complemented in order to change the sign of the represented number. The NS32081 FPU operates on two floating-point data types-single precision (32 bits) and double preCision (64 bits). Floating-point instruction mnemonics use the suffix F (Floating) to select the single preCision data type, and the suffix L (Long Floating) to select the double preCision data type. 1.1.1 Normalized Numbers Normalized numbers are numbers which can be expressed as floating-point operands, as described above, where the E field is neither ali zeroes nor ali ones. The value of a Normalized number can be derived by the formula: (-1)8 X 2(E-Bias) X (1 + F) A floating-point number is divided into three fields, as shown in Figure 1-1. The F field is the fractional portion of the represented number. In Normalized numbers (Section 1.1.1), the binary point is assumed to be immediately to the left of the most significant bit of the F field, with an implied 1 bit to the left of the binary point. Thus, the F field represents values in the range 1.0 ,;:; x ,;:; 2.0. The range of Normalized numbers is given in Table 1-3. 1.1.2 Zero There are two representations for zero-positive and negative. Positive zero has ali-zero F and E fields, and the S bit is zero. Negative zero also has ali-zero F and E fields, but its S bit is one. TABLE 1·1. Sample F Fields FField 000 ... 0 010 ... 0 100 ... 0 110 ... 0 Binary Value 1.000 ... 0 1.010 ... 0 1.100 ... 0 1.110 ... 0 DeCimal Value 1.000 ... 0 1.250 ... 0 1.500 ... 0 1.750 ... 0 1.1.3 Reserved Operands The proposed IEEE Standard for Binary Floating-Point Arithmetic (Task P754) provides for certain exceptional forms of floating-point operands. The NS32081 FPU treats these forms as reserved operands. The reserved operands are: t Implied Bit • Positive and negative infinity • Not-a-Number (NaN) values The E field contains an unsigned number that gives the binary exponent of the represented number. The value in the E field is biased; that is, a constant bias value must be subtracted from the E field value in order to obtain the true exponent. The bias value is 011 .•. 112, which is either 127 (Single preCision) or 1023 (double precision). Thus, the true exponent can be either positive or negative, as shown in Table 1-2. • Denormalized numbers Both Infinity and NaN values have ali ones in their E fields. Denormalized numbers have ali zeroes in their E fields and non-zero values in their F fields. The NS32081 FPU causes an Invalid Operation trap (Section 2.1.2.2) if it receives a reserved operand, unless the operation is simply a move (without conversion). The FPU does not generate reserved operands as results. Single Precision 31 30 Is I o 2322 E F 8 23 Double Precision 6362 lsi o 52 51 E F 11 52 FIGURE 1·1. Floating·Point Operand Formats 3-114 z en Co) 1.0 Product Introduction (Continued) N o TABLE 1-3. Normalized Number Ranges Single Precision 2127 X(2-2-23) = 3.40282346 x 1038 Double Precision 21023X(2-2-52) = 1.7976931348623157X 10308 Least Positive 2- 126 = 1.17549436X 10- 38 2- 1022 = 2.2250738585072014 x 10- 308 Least Negative -(2- 126) = -1.17549436X 10-38 -(2- 1022) = -2.2250738585072014X 10- 308 Most Negative -2127X(2-2-23) = -3.40282346 X 1038 -21023X(2-2-52) = -1.7976931348623157X10 308 Most Positive CD ..... .....• ~ z en Co) N o CD ..... .....• U1 Note: The values given are extended one full digit beyond their represented accuracy to help in generating rounding and conversion algorithms. 1.1.4 Integers In addition to performing floating-point arithmetic, the NS32081 FPU performs conversions between integer and floating-point data types. Integers are accepted or generated by the FPU as two's complement values of byte (8 bits), word (16 bits) or double word (32 bits) length. 2.1.1 Floating-Point Registers There are eight registers (FO-F7) on the NS32081 FPU for providing high-speed access to floating-point operands. Each is 32 bits long. A floating-point register is referenced whenever a floating-point instruction uses the Register addressing mode (Section 2.2.2) for a floating-point operand. All other Register mode usages (i.e., integer operands) refer to the General Purpose Registers (RO-R7) of the CPU, and the FPU transfers the operand as if it were in memory. When the Register addressing mode is specified for a double precision (64-bit) operand, a pair of registers holds the operand. The programmer must specify the even register of the pair. The even register contains the least significant half of the operand and the next consecutive register contains the most significant half. 1.1.5 Memory Representations The NS32081 FPU does not directly access memory. However, it is cooperatively involved in the execution of a set of two-address instructions with its Series 32000 Family CPU. The CPU determines the representation of operands in memory. In the Series 32000 family of CPUs, operands are stored in memory with the least significant byte at the lowest byte address. The only exception to this rule is the Immediate addressing mode, where the operand is held (within the instruction format) with the most significant byte at the lowest address. 2.1.2 Floating-Point Status Register (FSR) The Floating-Point Status Register (FSR) selects operating modes and records any exceptional conditions encountered during execution of a floating·point operation. Figure 2-2 shows the format of the FSR. 2.0 Architectural Description 2.1 PROGRAMMING MODEL The Series 32000 architecture includes nine registers that are implemented on the NS32081 Floating-Point Unit (FPU). TL/EE/5234-5 FIGURE 2-2. The Floating-Point Status Register DEDICATED FSR DATA 4-----32- 2.1.2.1 FSR Mode Control Fields FD::!===~ The FSR mode control fields select FPU operation modes. The meanings of the FSR mode control bits are given below. Rounding Mode (RM): Bits 7 and 8. This field selects the rounding method. Floating-point results are rounded whenever they cannot be exactly represented. The rounding modes are: 00 Round to nearest value. The value which is nearest to the exact result is returned. If the result is exactly halfway between the two nearest values the even value (LSB = 0) is returned. F1~!===~ F2!:====~ F3~!====! F4~!====! F5:=!===~ F6~!====! F7 ... ! ___---' 01 Round toward zero. The nearest value which is closer to zero or equal to the exact result is returned. TL/EE/5234-4 FIGURE 2-1. Register Set 3-115 • 2.0 Architectural Description (Continued) 100 Illegal Instruction. Two undefined floating-point instruction forms are detected by the FPU as being illegal. The binary formats causing this trap are: 10 Round toward positive infinity. The nearest value which is greater than or equal to the exact result is returned. 11 Round toward negative infinity. The nearest value which is less than or equal to the exact result is returned. ~001lxxl0lllll0 xxxxxxxxxxl00lxxl0lllll0 Underflow Trap Enable (UEN): Bit 3. If this bit is set, the FPU requests a trap whenever a result is too small in absolute value to be represented as a normalized number. If it is not set, any underflow condition returns a result of exactly zero. 101 Invalid Operation. One of the floating-point operands of a floating-point instruction is a Reserved operand, or an attempt has been made to divide zero by zero using the DIVf instruction. Inexact Result Trap Enable (lEN): Bit 5. If this bit is set, the FPU requests a trap whenever the result of an operation cannot be represented exactly in the operand format of the destination. If it is not set, the result is rounded according to the selected rounding mode. 110 Inexact Result. The result (either lIoating-point or integer) of a floating-point instruction cannot be represented exactly in the format of the destination operand, and a rounding step must alter it to fit. This condition is always reported in the TT field and IF bit unless any other exceptional condition has occurred in the same instruction. In this case, the TT field always contains the code for the other exception and the IF bit is not altered. A trap is caused by this condition only if the lEN bit is set; otherwise the result is rounded and delivered, and no trap occurs. 2.1.2.2 FSR Status Fields The FSR Status Fields record exceptional conditions encountered during floating-point data processing. The meanings of the FSR status bits are given below: Trap Type (TT): bits 0-2. This 3-bit field records any exceptional condition detected by a floating-point instruction. The TT field is loaded with zero whenever any floating-point instruction except LFSR or SFSR completes without encountering an exceptional condition. It is also set to zero by a hardware reset or by writing zero into it with the Load FSR (LFSR) instruction. Underflow and Inexact Result are always reported in the TT field, regardless of the settings of the UEN and lEN bits. 111 (Reserved for future use.) Underflow Flag (UF): Bit 4. This bit is set by the FPU whenever a result is too small in absolute value to be represented as a normalized number. Its function is not affected by the state of the UEN bit. The UF bit is cleared only by writing a zero into it with the Load FSR instruction or by a hardware reset. Inexact Result Flag (IF): Bit 6. This bit is set by the FPU whenever the result of an operation must be rounded to fit within the destination format. The IF bit is set only if no other error has occurred. It is cleared only by writing a zero into it with the Load FSR instruction or by a hardware reset. 000 No exceptional condition occurred. 001 Underflow. A non-zero floating-point result is too small in magnitude to be represented as a normalized lIoating-point number in the format of the destination operand. This condition is always reported in the TT field and UF bit, but causes a trap only if the UEN bit is set. If the UEN bit is not set, a result of Positive Zero is produced, and no trap occurs. 2.1.2.3 FSR Software Field (SWF) Bits 9-15 of the FSR hold and display any information written to them (using the LFSR and SFSR instructions), but are not otherwise used by FPU hardware. They are reserved for use with NSC lIoating-point extension software. 010 Overflow. A result (either floating-point or integer) of a floating-point instruction is too great in magnitude to be held in the format of the destination operand. Note that rounding, as well as calculations, can cause this condition. 2.2 INSTRUCTION SET 2.2.1 General Instruction Format 011 Divide by zero. An attempt has been made to divide a non-zero floating-point number by zero. Dividing zero by zero is considered an Invalid Operation instead (below). Figure 2-3 shows the general format of an Series 32000 instruction. The Basic Instruction is one to three bytes long OPllONAL EXTENSIONS BASIC INSTRUCTION r~-------------------~'--------------------\(~--------_J'----------\ DISP2 DISPI DISP21DISPI IMPUED IMMEDlIm: OPERAND(S) DISP DISP IMM IMM INDEX BYrE INDEX BYrE ~ t GEN ADDR MODE A GEN AODR MODE B oPCODE j TLlEE/5234-6 FIGURE 2-3. General Instruction Format 3-116 r--------------------------------------------------------------------------, Z 2.0 Architectural Description en Co) (Continued) and contains the opcode and up to two 5-bit General Addressing Mode (Gen) fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes selected. The only form of extension issued to the NS320B1 FPU is an Immediate operand. Other extensions are used only by the CPU to reference memory operands needed by the FPU. Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before indexing. See Figure 2-4. N C Memory Space: Identical to Register Relative above, except that the register used is one of the dedicated CPU registers PC, SP, SB or FP. These registers point to data areas generally needed by high-level languages. ....• .... C Memory Relative: A pOinter variable is found within the memory space pointed to by the CPU SP, SB or FP register. A displacement is added to that pointer to generate the Effective Address of the operand. Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written. Floating-point operands as well as integer operands may be specified using Immediate mode. en Q) ...... z Co) N C ....• .... en Q) Absolute: The address of the operand is specified by a Displacement field in the instruction. External: A pOinter value is read from a specified entry of the current Link Table. To this pOinter value is added a displacement, yielding the Effective Address of the operand. Top of Stack: The currently-selected CPU Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is p~shed or popped, depending on whether it is written or read. Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected addressing modes. Each Disp/lmm field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded within the top bits of that field, as shown in Figure 2-5, with the remaining bits interpreted as a signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most significant byte first. Scaled Index: Although encoded as an addressing mode, Scaled Indexing is an option on any addressing mode ex· cept Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by 1, 2, 4 or B and adding it into the total, yielding the final Effective Address of the operand. Some non-FPU instructions require additional, "implied" immediates and I or displacements, apart from those associated with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition. The following table, Table 2-1, is a brief summary of the addressing modes. For a complete description of their actions, see the Series 32000 Instruction Set Reference Manual. 2.2.2 Addressing Modes The Series 32000 Family CPUs generally access an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." Addressing modes in the Series 32000 family are designed to optimally support high-level language accesses to variables. In nearly all cases, a variable access requires only one addressing mode within the instruction which acts upon that variable. Extraneous data movement is therefore minimized. o SIGNED DISPLACEMENT &I Series 32000 Addressing Modes fall into nine basic types: Register: In floating-point instructions, these addressing modes refer to a Floating-Point Register (FO-F7) if the operand is of a floating-point type. Otherwise, a CPU General Purpose Register (RO-R7) is referenced. See Section 2.1.1. 7 1 0 ~ 1 I ..\'U,,~t. Register Relative: A CPU General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. t.\"Y\J.t~IA~"'" TL/EE/5234-10 FIGURE 2·5. Displacement Encodlngs 7 GEN. ADDR. MODE TL/EE/5234-7 FIGURE 2·4. Index Byte Format 3-117 .... r-----------------------------------------------------------------------------, ~ ; 2.0 Architectural Description CI ~ Z ..... CI ....~ co ~ CO) f/) z (Continued) TABLE 2·1. Series 32000 Family Addressing Modes C'i Encoding Mode Assembler Syntax Effective Address REGISTER 00000 00001 00010 00011 00100 00101 00110 00111 Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 RO orFO R1 or F1 R20rF2 R30rF3 R4 or F4 R5 or F5 R60rF6 R7 or F7 None: Operand is in the specified register. Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(R1) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp + Register. Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) ·+disp Disp + Register; "SP" is either SPO or SP1 , as selected in PSR. Frame memory relative Stack memory relative Static memory relative disp2(disp1 (FP» disp2(disp1 (SP» disp2(disp1 (SB» Disp2 + Pointer; Pointer found at address Disp1 + Register. "SP" is either SPO or SP1, as selected in PSR. Immediate value None: Operand is issued from CPU instruction queue. Absolute @disp Disp. External EXT (disp1) + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Disp1. Top of Stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. 11100 11101 11110 11111 Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] Mode + Rn. Mode + 2 X Rn. Mode + 4 X Rn. Mode + 8 X Rn. "Mode" and "n" are contained within the Index Byte. 10011 (Reserved for Future Use) REGISTER RELATIVE 01000 01001 01010 01011 01100 01101 01110 01111 MEMORY SPACE 11000 11001 11010 11011 MEMORY RELATIVE 10000 10001 10010 IMMEDIATE 10100 ABSOLUTE 10101 EXTERNAL 10110 TOP OF STACK 10111 SCALED INDEX 3-118 ~ 2.0 Architectural Description (Continued) Co) N o 2.2.3 Floating-Point Instruction Set Movement and Conversion The NS32081 FPU instructions occupy formats 9 and 11 of the Series 32000 Family instruction set (Figure 2-6). A list of all Series 32000 family instruction formats is found in the applicable CPU data sheet. The following instructions move the gen1 operand to the gen2 operand, leaving the gen1 operand intact. Format Op Instruction 11 0001 MOVf gen1, gen2 Certain notations in the following instruction description tables serve to relate the assembly language form of each instruction to its binary format in Figure 2-6. 9 010 MOVLF gen1, gen2 Format 9 23 I, ii I . gen1 I I I I I gen2 op II I II i I I I i I I 0 0 1 1 1 1 1 0 OPERATION WORD I 9 011 9 Move, converting from single precision to double precision. 000 MOVif gen1,gen2 Move, converting from any integer type to any floating-point type. 9 100 ROUNDfi gen1, gen2 Move, converting from floatingpaint to the nearest integer. 9 101 TRUNCfi gen1, gen2 Move, converting from floatingpoint to the nearest integer closer to zero. 9 111 FLOORfi gen1, gen2 Move, converting from floatingpoint to the largest integer less than or equal to its value. TL/EE/5234-11 23 I I I I op ganl OPERATION WORD 10 BYTE TL/EE/5234-12 FIGURE 2-6. Floating-Point Instruction Formats The Format column indicates which of the two formats in Figure 2-6 represents each instruction. The Op column indicates the binary pattern for the field called "op" in the applicable format. The Instruction column gives the form of each instruction as it appears in assembly language. The form consists of an instruction mnemonic in upper case. with one or more suffixes (i or f) indicating data types, followed by a list of operands (gen1, gen2). An i suffix on an instruction mnemonic indicates a choice of integer data types. This chOice affects the binary pattern in the i field of the corresponding instruction format (Figure2-6) as follows: Suffix i B W D Data Type Byte Word Double Word iField 00 01 11 Move, converting from double precision to single precision. gen1,gen2 MOVFL 10 BYTE Format 11 I. I Description Move without conversion Note: The MOVLF instruction' bit must be 1 and the i field must be 10. The MOVFL instruction' bit must be 0 and the i field must be 11. Arithmetic Operations An f suffix on an instruction mnemonic indicates a choice of floating-point data types. This choice affects the setting of the f bit of the corresponding instruction format (Figure 2-6) as follows: Suffix f F L Data Type Single Precision Double Precision (Long) The following instructions perform floating-point arithmetic operations on the gen1 and gen2 operands, leaving the result in the gen2 operand. f Bit 1 o An operand designation (gen1, gen2) indicates a choice of addressing mode expressions. This choice affects the binary pattern in the corresponding gen1 or gen2 field of the instruction format (Figure 2-6). Refer to Table 2-1 for the options available and their patterns. Further details of the exact operations performed by each instruction are found in the Series 32000 Instruction Set Reference Manual. 3-119 Format 11 11 Op 0000 0100 Instruction ADDf gen1,gen2 SUBf gen1. gen2 11 1100 MUll gen1. gen2 11 1000 DIVf gen1, gen2 11 0101 NEGf gen1,gen2 11 1101 ASSf gen1.gen2 Description Add gen1 to gen2. Subtract gen1 fromgen2. Multiply gen2 by gen1. Divide gen2 by gen1. Move negative of gen1 to gen2. Move absolute value of gen1 to gen2. co ..... .....• ~ Z ~ N o co ..... .....• CI1 • ....• r---------------------------------------------------------------------------------, .... 2.0 Architectural Description (Continued) U) ~ ('II CO) en z Ci .... • .... co ~ CO) en z Comparison 3.2 CLOCKING The NS32081 FPU requires a single-phase TTL clock input on its CLK pin (pin 14). When the FPU is connected to a Series 32000 CPU, the CLK signal is provided from the CTTL pin of the NS32201 Timing Control Unit. The Compare instruction compares two floating-point values, sending the result to the CPU PSR Z and N bits for use as condition codes. See Figure 3-7. The Z bit is set if the genl and gen2 operands are equal; it is cleared otherwise. The N bit is set if the gen 1 operand is greater than the gen2 operand; it is cleared otherwise. The CPU PSR L bit is unconditionally cleared. Positive and negative zero are considered equal. Format 11 Op 0010 Instruction CMPf genl, gen2 3.3 RESETTING The RST pin serves as a reset for on-chip logic. The FPU may be reset at any time by pulling the RST pin low for at least 64 clock cycles. Upon detecting a reset, the FPU terminates instruction processing, resets its internal logic, and clears the FSR to all zeroes. On application of power, RST must be held low for at least 50 p.s aiter Vee is stable. This ensures that all on-chip voltages are completely stable before operation. See Figures 3-2 and 3-3. Description Compare genl to gen2. Floating-Point Status Register Access The following instructions load and store the FSR as a 32bit integer. Vee 4.5V Format 9 9 Op 001 110 Instruction LFSR genl SFSR gen2 Description LoadFSR StoreFSR J1JL ClK 2.3 TRAPS r--- I. Upon detecting an exceptional condition in executing a floating-point instruction, the NS32081 FPU requests a trap by setting the Q bit of the status word transferred during the slave protocol (Section 3.5). The CPU responds by performing a trap using a default vector value of 3. See the Series 32000 Instruction Set Reference Manual and the applicable CPU data sheet for trap service details. 1m' ....---->:50~s-----t TLIEEI5234-14 FIGURE 3-2. Power-On Reset Requirements A trapped floating-point instruction returns no result, and does not affect the CPU Processor Status Register (PSR). The FPU displays the reason for the trap in the Trap Type (TTl field of the FSR (Section 2.1.2.2). CLK JlJLfLSLfl >:64 ClOCK----...I _ - - -..-:ft'I'I'~'!i I CYCLES I RST 3.0 Functional Description II TUEEI5234-15 3.1 POWER AND GROUNDING The NS32081 requires a Single 5V power supply, applied on pin 24 (Vecl. See DC Electrical Characteristics table. Grounding connections are made on two pins. Logic Ground (GNDL, pin 12) is the common pin for on-chip logic, and Buffer Ground (GNDB, pin 13) is the common pin for the output drivers. For optimal noise immunity, it is recommended that GNDL be attached through a single conductor directly to GNDB, and that all other grounding connections be made only to GNDB, as shown below (Figure 3-1). FIGURE 3-3. General Reset Timing 3.4 BUS OPERATION Instructions and operands are passed to the NS32081 FPU with slave processor bus cycles. Each bus cycle transfers either one byte (8 bits) or one word (16 bits) to or from the FPU. During all bus cycles, the SPC line is driven by the CPU as an active low data strobe, and the FPU monitors 10kD.~ SPC SPC .... 1S-BIT ... D 0-15 AID 0-15 ..... DATA BUS'" SERIES STO STO NS32081 32000 STO ST1 STI rpu CPU STI RST RST +5V SPC Vee 24 Jr NS32D81 FPU 12 >:64 CLOCK={ CYCLES _ 13 OTHER GNDl GNDB ...-....-1P'--+GROUND _______ '::' CONNECTIONS RST ClK CTTL NS32201 TCU TLIEEI5234-13 TLIEEI5234-2 FIGURE 3-4. System Connection Diagram FIGURE 3-1. Recommended Supply Connections 3-120 ztJ) 3.0 Functional Description Co) ~ (Continued) pins STO and ST1 to keep track of the sequence (protocol) established for the instruction being executed. This is necessary in a virtual memory environment, allowing the FPU to retry an aborted instruction. A bus cycle is initiated by the CPU, which asserts the proper status on STO and ST1 and pulses SPC low. STO and ST1 are sampled by the FPU on the leading (falling) edge of the SPC pulse. If the transfer is from the FPU (a slave processor read cycle), the FPU asserts data on the data bus for the duration of the SPC pulse. If the transfer is to the FPU (a slave processor write cycle), the FPU latches data from the data bus on the trailing (rising) edge of the SPC pulse. Figures 3-5 and 3-6 illustrate these sequences. The direction of the transfer and the role of the bidirectional SPC line are determined by the instruction protocol being performed. SPC is always driven by the CPU during slave processor bus cycles. Protocol sequences for each instruction are given in Section 3.5. 2) It specifies which Slave Processor will execute it. 3) It determines the format of the following Operation Word of the instruction. Upon receiving a Slave Processor instruction, the CPU initiates the sequence outlined in Table 3-2. While applying Status Code 11 (Broadcast 10. Table 3-1), the CPU transfers the 10 Byte on the least significant half of the Oata Bus (00-07). All Slave Processors input this byte and decode it. The Slave Processor selected by the 10 Byte is activated, and from this point the CPU is communicating only with it. If any other slave protocol was in progress (e.g., an aborted Slave instruction), this transfer cancels it. The CPU next sends the Operation Word while applying Status Code 01 (Transfer Slave Operand, Table 3-1). Upon receiving it, the FPU decodes it, and at this point both the CPU and the FPU are aware of the number of operands to be transferred and their sizes. The Operation Word is swapped on the Oata Bus; that is, bits 0-7 appear on pins 08-015, and bits 8-15 appear on pins 00-07. 3.4.2 Operand Transfer Sequences An operand is transferred in one or more bus cycles. A 1byte operand is transferred on the least significant byte of the data bus (00- 07). A 2-byte operand is transferred on the entire bus. A 4-byte or 8-byte operand is transferred in consecutive bus cycles, least significant word first. SPC CD 3.5.1 General Protocol Sequence Slave Processor instructions have a three-byte Basic Instruction field, consisting of an 10 byte followed by an Operation Word. See Section 2.2.3 for FPU instruction encodings. The 10 Byte has three functions: 1) It identifies the instruction to the CPU as being a Slave Processor instruction. 3.4.1 Bus Cycles STO, sn o 3.5 INSTRUCTION PROTOCOLS 1I/IIIIIIIIIII!'-___ vA""I'L1o_ _ --'~~ -----------y.•", -\ - ~\,_ _ _V_AL_IO_F_R_OM_FP_U_ _J}- -- DO-015 - - - - - - - - - - TL/EE/5234-16 Note 1: FPU samples CPU status here. FIGURE 3-5. Slave Processor Read Cycle STO, STI VALID ----------""\1 (NOTE 11 (NOTE 21 VALID FROM CPU DD-015 - - - - - - TLIEE/5234-17 Note 1: FPU samples CPU status here. Nole 2: FPU samples data bus here. FIGURE 3-6. Slave Processor Write Cycle 3-121 ..... .....• o ..... z en Co) ~ o ..... • ..... U'I CD U) ....-• CD CI C'I C") o z ...... CI . ....- ~ C'I C") rn z r-------------------------------------------------------------------------------~ 3.0 Functional Description (Continued) Using the Addressing Mode lields within the Operation Word, the CPU starts letching operands and issuing them to the FPU. To do so, it relerences any Addressing Mode extensions appended to the FPU instruction. Since the CPU is solely responsible lor memory accesses, these extensions are not sent to the Slave Processor. The Status Code applied is 01 (Transler Slave Processor Operand, Table 3-1). TABLE 3-1. General Instruction Protocol Step 1 2 3 4 5 6 7 After the CPU has issued the last operand, the FPU starts the actual execution 01 the instruction. Upon completion, it will signal the CPU by pulsing SPC low. To allow lor this, the CPU releases the SPC Signal, causing it to Iloat. SPC must be held high by an external pull-up resistor. 8 7 0 100000000lNZOOOLOQI VALUEIS)~ Action CPU sends ID Byte. CPU sends Operation Word. CPU sends required operands. FPU starts execution. FPU pulses SPC low. CPU reads Status Word. CPU reads result (il any). 3.5.2 Floating-Point Protocols Table 3-2 gives the protocols lollowed lor each floatingpoint instruction. The instructions are relerenced by their mnemonics. For the bit encodings 01 each instruction, see Section 2.2.3. The Operand Class columns give the Access Classes lor each general operand, delining how the addressing modes are interpreted by the CPU (see Series 32000 Instruction Set Relerence Manual). The Operand Issued columns show the sizes 01 the operands issued to the Floating-Point Unit by the CPU. "D" indicates a 32-bit Double Word. "i" indicates that the instruction specilies an integer size lor the operand (B = Byte, W ",; Word, D = Double Word). "I" indicates that the instruction specilies a Iloating-point size lor the operand (F = 32-bit Standard Floating, L = 64-bit Long Floating). Upon receiving the pulse on SPC, the CPU uses SPC to read a Status Word Irom the FPU, applying Status Code 10. This word has the lormat shown in Figure 3-7. II the a bit ("auit", Bit 0) is set, this indicates that an error has been detected by the FPU. The CPU will not continue the protocol, but will immediately trap through the Slave vector in the Interrupt Table. II the instruction being performed is CMPI (Section 2.2.3) and the a bit is not set, the CPU loads Processor Status Register (PSR) bits N, Z and L Irom the corresponding bits in the Status Word. The NS32081 FPU always sets the L bit to zero. 15 Status 11 01 01 XX XX 10 01 ..1 NEW PSR BIT "QUIT": TERMINATE PROTOCOL, TRAP IFPU). The Returned Value Type and Destination column gives the size 01 any returned value and where the CPU places it. The PSR Bits Affected column indicates which PSR bits, il any, are updated Irom the Slave Processor Status Word (Figure 3-7). TL/EE/5234-18 FIGURE 3-7. FPU Protocol Status Word Format The last step in the protocol is lor the CPU to read a result, il any, and transler it to the destination. The Read cycles Irom the FPU are performed by the CPU while applying Status Code 01 (Section 4.1.2). Any operand indicated as being 01 type "I" will not cause a transler il the Register addressing mode is specilied, because the Floating-Point Registers are physically on the Floating-Point Unit and are therelore available without CPU assistance. TABLE 3-2. Floating Point Instruction Protocols Mnemonic ADDI SUBI MULl DIV! MOVI ABSI NEGI CMPI FLOORli TRUNCIi ROUNDli MOVFL MOVLF MOVif LFSR SFSR o~ i Operand 1 Class read.1 read.! read.1 read.! read.! read.1 read.1 read.! read.1 read.1 read.! read.F read.L read.i read.D N/A Operand 2 Class rmw.! rmw.! rmw.! rmw.1 write.! write.! write.! read.! writej write.i writej write.L write.F write.! N/A write.D Operand 1 Issued I f N/A N/A N/A F L i D N/A Double Word = Integer size (B, W, D) specified in mnemonic. f ~ Floating-Point type (F. L) specified in mnemonic. NtA ~ Operand 2 Issued I Not Applicable to this instruction. 3-122 N/A N/A N/A N/A N/A N/A N/A N/A Returned Value Type and Dest. ItoOp.2 ftoOp.2 ftoOp.2 ItoOp.2 ItoOp.2 ItoOp.2 ftoOp.2 N/A itoOp.2 itoOp.2 itoOp.2 LtoOp.2 FtoOp.2 fto Op. 2 N/A DtoOp.2 PSRBlts Affected none none none none none none none N,Z,L none none none none none none none none z Logic Ground (GNDL): Ground reference for on-chip logic. Section 3.1. Buffer Ground (GNDB): Ground reference for on·chip drivers connected to output pins. Section 3.1. The following are brief descriptions of all NS32081 FPU pins. The descriptions reference the relevant portions of the Functional Description, Section 3. Dual-In-Line Package 4.1.2 Input Signals Clock (CLK): TTL-level clock Signal. 010-~f-Vcc 09- 2 23 f- STO OB- 3 22 f- ST1 07- 4 21 f-SPC 05- 6 I 01-Transferring Operation Word or Operand 10-Reading Status Word II-Broadcasting Slave 10 18 -013 03- 8 17 -014 4.1.3 Input/Output Signals 02- 9 16 -015 Ol- IO 15 -im' 00- 11 14 -ClK Slave Processor Control (SPC): Active low. Driven by the CPU as the data strobe for bus transfers to and from the NS32081 FPU, Section 3.4. Driven by the FPU to signal completion of an operation, Section 3.5.1. Must be held high with an external pull-up resistor while floating. Data Bus (DO-D15): 16-bit bus for data transfer. DO is the least significant bit. Section 3.4. 13 -GNDB TLlEE/5234-3 Top View FIGURE 4-1. Connection Diagram Order Number NS32081D-l0 or NS32081D-15 See NS Package Number D24C Order Number NS32081N-l0 or NS32081N-15 See NS Package Number N24A 4.2 ABSOLUTE MAXIMUM RATINGS Temperature Under Bias Storage Temperature If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. O'Cto +70'C -65'Cto +150'C All Input or Output Voltages -0.5Vto +7.0V with Respect to GND Power Dissipation 1.5W 4.3 ELECTRICAL CHARACTERISTICS TA Symbol = O'C to 70'C, Vee = 5V ± 5%, GND = OV Conditions Parameter Min Typ Max Units VIH HIGH Level Input Voltage 2.0 Vee +0.5 V VIL LOW Level Input Voltage -0.5 0.8 V VOH HIGH Level Output Voltage IOH = -400/LA VOL LOW Level Output Voltage IOL = 4mA II Input Load Current o S; VIN S; Vee IL Leakage Current Output and I/O Pins in TRI-STATElinput Mode 0.45 Active Supply Current lOUT Icc S; VIN S; 2.4 V 0.45 V -10.0 10.0 /LA -20.0 20.0 /LA 300 mA 2.4V = 0, TA = 25'C 3-123 ...... z en Co) oQC) 04- 7 GNOl- 12 I N Status (STO, ST1): Input from CPU. STO is the least significant bit. Section 3.4 encodings are: OO-(Reserved) 19 r012 oQC) .... ....o .... ....c.n Reset (RST): Active low. Initiates a Reset, Section 3.3. 20 rOll NS32081 FPU N Power (Vee): +5V positive supply. Section 3.1. 4.1 PIN DESCRIPTIONS 06- 5 en Co) 4.1.1 Supplies 4.0 Device Specifications . .... .... 4.0 Device Specifications (Continued) C') 4.4 SWITCHING CHARACTERISTICS U) .-------------------------------------------------------------------------------~ ~ en z C; ........• ~ 4.4.1 Definitions All the Timing Specifications given in this section refer to O.BV and 2.0V on all the input and output signals as illustrated in Figures 4.2 and 4.3, unless specifically stated otherwise. ABBREVIATIONS L.E. - Leading Edge R.E. - Rising Edge T.E. - Trailing Edge F.E. - Falling Edge C') en z 2.0V D.IV SIGI SIG2 [ [ SIOI 'SIOII 'Sl02h jow 2.4V Sl02 ---------O.45V [ [ 2.4V 'SlG2h TUEE/5234-27 TL/EE/5234-26 FIGURE 4·3. Timing Specification Standard (Signal Valid Before Clock Edge) FIGURE 4-2. Timing Specification Standard (Signal Valid After Clock Edge) 3·124 z ~ N 4.0 Device Specifications (Continued) o 00 .... • .... o 4.4.2 Timing Tables 4.4.2.1 Output Signal Propagation Delays ...... Maximum times assume capacitive loading of 100 pF. Name tev Figure 4-7 Description OataValid Z NS32081-10 Reference! Conditions Min Max Min 45 After SPC L.E. (/) NS32081-15 Units Max 30 50 tOi 4-7 00-015 Floating After SPC T.E. tSPCFw 4-9 SPC Pulse Width fromFPU AtO.8V (Both Edges) tSPCFI 4-9 SPC Output Active After ClK R.E. 55 38 ns tSPCFh 4-9 SPC Output Inactive After ClK R.E. 55 38 ns tSPCFnf 4-9 SPCOutput Nonforcing After ClK F.E. 45 35 ns Max Units tCLKp - 50 tCLKp + 35 ns 50 \eLKp - 40 \eLKp + 40 ns ns 4.4.2.2 Input Signal Requirements Name Figure Description Reference! Conditions Min Max Min tpWA 4-5 Power Stable to RSTR.E. AfterVcc Reaches 4.5V 50 50 /Ls tASTw 4-6 RST Pulse Width AtO.8V (Both Edges) 64 64 tCLKp tss 4-7 Status (STO-ST1) Setup Before SPC L.E. 50 33 ns Ish 4-7 Status (STO-ST1) Hold After SPC L.E. 40 35 ns tos 4-8 00-015 Setup Time Before SPC T.E. 40 30 ns tOh 4-8 00-015 Hold Time After SPC T.E. 50 35 ns tspcw 4-7 SPC Pulse Width from CPU AtO.8V (Both Edges) 70 50 ns tsPCs 4-7 SPC Input Active Before ClK R.E. 40 35 ns tSPCh 4-7 SPC Input Inactive After ClK R.E. 0 0 ns tASTs 4-10 RSTSetup Before ClK F.E. 10 10 ns tASTh 4-10 RST R.E. Delay After ClK R.E. 0 0 ns 4.4.2.3 Clocking Requirements Name Figure Description Reference! Conditions Min Max Min Max Units \eLKh 4-4 Clock High Time At2.0V (Both Edges) 42 1000 27 1000 ns \eLKI 4-4 Clock low Time AtO.8V (Both Edges) 42 1000 27 1000 ns tCLKp 4-4 Clock Period ClK R.E. to Next CLKR.E. 100 2000 66 3-125 ns W N o . 00 .... .... U1 ......• r----------------------------------------------------------------------------, 4.0 Device Specifications U) ! (Continued) 4.4.3 Timing Diagrams ~ ....z ......• «:) Vcc i------ICLICp------t ~----------------~~ n ,F CD «:) C\I CLK C'I) tI) z m _____ TLfEEf5234-19 TLfEEf5234-20 FIGURE 4-4. Clock Timing CLK lIST FIGURE 4-5. Power-On Reset JULfLSLfL ----'""'i IRST. 1-TLfEEf5234-21 FIGURE 4-6. Non-Power-On Reset CLK _ _--! STO.STI DO-DIS ·-··----··-··----,.-··:~,{:J~~~~t) TLiEEf5234-22 FIGURE 4-7. Read Cycle from FPU Note: SI'e pulse must be (nominally) 1 clock wide when wTiting into FPU. STO.STI I' DO-DI5 ~'__ _ _V_A_U_D_F_R_O_M_CP_U_ _ _....... TLfEEf5234-23 FIGURE 4-8. Write Cycle to FPU Note: SPC pulse may also be 2 clocks wide, but its edges must meet the !gpcs and tSPCh requirements with respect to elK. 3-126 z 4.0 Device Specifications en (0) (Continued) N ......o• QI) -\ t-tSPCFh -\tSPCFlt- o ....... \ I 1~~SPCFnl SPC---------~~______JI' !.-tsPCF.-1 RsT t I r ~ RST' tRSlh Tl/EE/5234-25 FIGURE 4-10. RST Release Timing Note: The rising edge of RST must occur while elK is high, as shown. 3-127 N ......o. QI) U1 Tl/EE/5234-24 FIGURE 4-9. SPC Pulse from FPU CLK-.J z en (0) C) ('I) r-------------------------------------------------------------------------------------, oCO ~National Ln C"II ('I) U) z U; . C"II C) CO Ln C"II ('I) U) z ..... C) C"II oCO Ln C"II ('I) U) z PRELIMINARY ~ Semiconductor NS32580-20/NS32580-25/NS32580-30 Floating Point Controller General Description The NS32580 Floating-Paint Controller (FPC) is an interface controller designed to couple the NS32532 Microprocessor with the Weitek WTL 3164 Floating-Point Data Path (FPDP). It is a new member of the Series 32000® family and it is fully upward compatible with the existing NS32081 floating-point software. The performance of the NS32580 (FPC) and the WTL 3164 (FPDP) with the NS32532 has been significantly enhanced for high-performance floating-paint applications. It reaches the peak performance of 15 Mflops when executing single and double preCision ADD, SUB, MUL, and MAC instructions in a pipelined mode while maintaining precise exception handling. The FPC/FPDP supports the IEEE 754-1985 standard for Binary Floating-Point Arithmetic. An improved exception handling scheme allows enabling or disabling of each of the IEEE defined traps. It supports Infinity and Not a Number (NaN) and can flush the result to zero or trap on underflowed instructions. The NS32580 contains three FIFOs and a Floating-Paint Status Register (FSR). It executes 18 instructions in conjunction with the WTL 3164 and with the NS32532 forms a tightly coupled computer cluster. The FPC/FPDP appears to the user as a Single slave processing unit. All addressing modes, including two address operations, are available with the floating-point instructions. In addition, the CPU and FPC/FPDP communication is handled automatically, and is user transparent. The FPC is fabricated with National's advanced double-metal CMOS process and can operate at a frequency of 30 MHz. Features • Provides the NS32532 CPU with a complete interface controller for high-speed floating-point arithmetic • 15 Mflops peak performance for single and double precision ADD, SUB, MUL and MAC instructions with the Weitek WTL 3164 FPDP • Conforms to IEEE 754-1985 standard for Binary Floating-POint Arithmetic • Pipelined Slave Protocol with Data and Instruction FIFOs • Improved exception handling including support of Infinities and Not a Number (NaN) • Single (32-bit) and double (64-bit) precision operations • Upward compatible with existing NS32081 software base • 20 MHz, 25 MHz and 30 MHz operating frequencies • 1 ,...m double-metal CMOS technology • 172-pin PGA package Block Diagram OONE TA I:::::::::==::::::::~~==::::~"IIP 'lIS ..'" STATUS .... "lIP COH1ROL TL/EE/9421-1 FIGURE 1-1 3-128 z (J) Table of Contents 1.0 PRODUCT INTRODUCTION Co) N U1 3.0 FUNCTIONAL DESCRIPTION (Continued) 1.1 IEEE Features Supported 3.5 Instruction Protocols 1.2 Operand Formats 3.5.1 General Slave Protocol Sequence 3.5.2 Pipelined Slave Protocol Sequence 1.2.1 Normalized Numbers CD o o ........ I N Z (J) Co) N U1 1.2.2 Zero 3.5.3 Status Word Register 1.2.3 Reserved Operands 3.5.4 Termination of Instruction (Not Including CMPf) CD 1.2.4 Integer Formats 3.5.5 Byte Sex N U1 3.5.6 Floating-Point Protocols 1.2.5 Memory Representations 3.6 FPDP Interface 2.0 ARCHITECTURAL DESCRIPTION 2.1 Programming Model 2.1.1 Floating-Point Data Registers Z (J) Co) 3.6.1 Controlling the FPDP N U1 o Co) o 3.6.4 FPDP Mode Control Registers SRO, SR1 2.1.2.1 FSR Mode Control Fields I ........ 3.6.2 Instruction Control 3.6.3 "2 Cycle Mode" and "3 Cycle Mode" 2.1.2 Floating-Point Status Register (FSR) o CD I 3.6.5 IEEE Enables Register SR2 2.1.2.2 FSR Status Fields 3.6.5.1 FPDP Status Lines (SO-S3) 2.1.2.3 FSR Software Field (SWF) 3.6.6 FPC-FPDP Clocks 2.1.2.4 FSR New Fields 3.6.6.1 FPC Clock 2.1.2.5 FSR Default Values 3.6.6.2 FPDP Main Clock (WCLK) 2.2 Instruction Set 3.6.6.3 Divide/Sqrt Unit Clock (DIVCLK) 2.2.1 General Instruction Format 4.0 DEVICE SPECIFICATIONS 2.2.2 Addressing Modes 2.2.3 Floating-Point Instruction Set 4.1 NS32580 Pin Descriptions 2.3 Exceptions/TRAPs 4.1.1 Supplies 4.1.2 Input Signals 3.0 FUNCTIONAL DESCRIPTION 4.1.3 Output Signals 3.1 Power and Grounding 4.1.4 Input/Output Signals 3.2 Clocking 4.2 Absolute Maximum Ratings 3.3 Resetting 4.3 Electrical Characteristics 3.4 Bus Operation 4.4 Switching Characteristics 3.4.1 Operand Transfers 4.4.1 Definitions 4.4.2 Timing Tables 4.4.2.1 Output Signal Propagation Delays 4.4.2.2 Input Signal Requirements APPENDIX A: Compatibility of FPC-FPDP with NS32081INS32381 APPENDIX B: Performance Analysis 3·129 • . C) C") C) co ." C\I C") en z . '" ." C\I C) co ." C\I C") en z ~ :!:co ." C\I C") U) z List of Illustrations FPC Block Diagram .......................•.................................................................... 1-1 Floating-Point Operand Formats ................................................................................. 1-2 Single-Precision Operand E and F Fields .......................................................................... 1-3 Double-Precision Operand E and F Fields ......................................................................... 1-4 Integer Format .........•.............••....•...•...............................................................1-5 Data Registers .................................................................................................2-1 FSR (Compatible Fields) ........................................................................................2-2 New FSR Mode Control Fields ...................•...........................................•.•................. 2-3 General Instruction Format ......................................................................................2-4 Index Byte Format ........•.................................................................................•..2-5 Displacement Encodings ........................................................................................2-6 Floating-Point Instruction Formats ................................................................................ 2-7 Recommended Supply Connections .......•.................•...............•....................................3-1 Power-On Reset Requirements ...........................•...•..................................................3-2 General Reset Timing ..........................................................................................3-3 Slave Processor Read Cycle from FPC ............................................................................3-4 Slave Processor Write Cycle to FPC .............................................................................. 3-5 System Connection Diagram ....................................................................................3-6 ID and Opcode Format ..........................................................................................3-7 32-Bit General Slave Instruction Protocol .•.... " ..•..............•................• , ...........................•.. 3-8 FPC Status Word Format ........................................................................................3-9 Byte Sex Connection Diagrams ..................•.............................................................. 3-10 FPDP Control Word ...........................................................................................3-11 FPDP Multiplier and ALU Bus Control ............................................................................ 3-12 IEEE Enables Register {FPDP) ..................................................................................3-13 FPDP Status Timing ...........•........•.......•..........•............................•.........•............3-14 Divide/Sqrt Clock DCLK2/DCLK3 ............................................................................... 3-15 NS32580 Interface Signals ......................................................................................4-1 172-Pin PGA Package ..........................................................................................4-2 Timing Specification Standard (Signal Valid after Clock Edge) ........................................................ 4-3 Timing Specification Standard (Signal Valid before Clock Edge) ...................................................... 4-4 Clock Waveforms ...........•...•.............•........•...................................................... .4-5 Power-On Reset ...........................................................•......................•.....•......4-6 Non-Power-On Reset. ..........................................................................................4-7 Read Cycle from FPC .......................................................................................... .4-8 Write Cycle to FPC .............................................................................................4-9 Slave Processor Done Timing ..................................................................................4-1 0 FSSR Signal Timing ...........................................................................................4-11 FPDP Status Signal Timing .....................................................................................4-12 FPDP Clock Signals Timing .....................................................................................4-13 FPDP Output Signals Timing ....................................................................................4-14 List of Tables Sample F Fields ...........................•.....................••....................•.......•............... 1-1 Sample E Fields ...............................................................................................1-2 Normalized Number Ranges ................................................•.................................... 1-3 Integer Fields .•..................•........•.............•......................•...............................1-4 FSR Default State Summary .....................................................................................2-1 Series 32000 Family Addressing Modes ...........................................................................2-2 Exception Enabled/Disabled Summary ................................................................... , ....... 2-3 32-Bit General Slave Instruction Protocol ...................•.............•........................................3-1 Floating-Point Instruction Protocols ...............................................................................3-2 3-130 z en Co) 1.0 Product Introduction The E field contains an unsigned number that gives the binary exponent of the represented number. The value in the E field is biased; that is, a constant bias value must be subtracted from the E field value in order to obtain the true exponent. The bias value is 011 ... 112, which is either 127 (single precision) or 1023 (double precision). Thus, the true exponent can be either positive or negative, as shown in Table 1-2. The NS32580 Floating-Point Controller (FPC) provides complete control for high speed floating-point operations between the NS32532 CPU and the Weitek WTL 3164 Floating-Point Data Path (FPDP). The FPC is fabricated using National high-speed CMOS technology and operates as a slave processor for transparent expansion of the Series 32000 CPU's basic instruction set. The NS32580 is compatible with the IEEE Floating-Point Formats by means of its hardware and software features. TABLE 1·2. Sample F Field EField 100 ... 0 011 ... 110 100 ... 0 011 ... 111 100 ... 0 100 ... 000 1.1 IEEE FEATURES SUPPORTED a. Basic floating-point number formats b. Add, subtract, multiply, divide, sqrt, and compare operations c. Conversions between different floating-point formats d. Conversions between floating-point and integer formats e. Round floating-point number to integer (round to nearest, round toward negative infinity and round toward zero, in double- or single-precision) f. Exception signaling and handling (invalid operation, divide by zero, overflow, underflow and inexact) Two values of the E field are not exponents. 11 ... 11 signals Not-a-Number (NaN) or Infinity (Section 1.2.3). 00 ... 00 represents the number zero (Section 1.2.2), if the F field is also all zeroes, otherwise it signals a reserved operand (Section 1.2.4). The S bit indicates the sign of the operand. It is 0 for positive and 1 for negative. Floating-point numbers are in signmagnitude form, that is, only the S bit is complemented in order to change the sign of the represented number. g. Positive and negative infinity (Section 1.2.3) Note: In addition to supporting the IEEE floating-point overflow. the NS32580 supports integer conversion overflow. . 0) o N o ...... Z en Co) N U1 0) 9 N U1 ...... Z en Co) N U1 0) o • Co) o 1.2.1 Normalized Numbers Normalized numbers are numbers which can be expressed as floating-point operands, as described above, where the E field is neither all zeroes nor all ones. Also, the FPC-FPDP can accept Not-a-Number (NaN) as an operand and generate NaN as a result, but it does not conform to the IEEE 754-1985 Standard since it does not differentiate between signaling and quiet Not-a-Number. The value of a Normalized number can be derived by the formula: (-1)8 X 2(E-Bias) X (1 + F) The remaining IEEE features are supported in the software library. These items include: a. Extended floating-point number formats b. Mixed floating-point data formats The range of Normalized numbers is given in Table 1-3. 1.2.2 Zero There are two representatives for zero-positive and negative. Positive zero has all-zero F and E fields, and the S bit is zero. Negative zero also has all-zero F and E fields, but its S bit is one. c. Conversions between basic formats, floating-point numbers and decimal strings d. Remainder e. Denormalized numbers 1.2 OPERAND FORMATS The NS32580 FPC operates on two floating-point data types-single precision (32 bits) and double precision (64 bits). Floating-point instruction mnemonics use the suffix F (Floating) to select the single preciSion data type, and the suffix L (Long Floating) to select the double precision data type. 1.2.3 Reserved Operands Infinity arithmetic is the limiting case of real arithmetic with operands of arbitrarily large magnitudes. The NS32580 does not treat infinity as a reserved operand and in ROUND/i, TRUNCfi and FLOORfi instructions, when the operand is infinity, the FPC will return the TRAP "overflow" instead of TRAP "INVALID OPERATION" with the Integer Conversion Overflow Flag, IOF, set to "1". Another special case regarding infinity occurs when dividing infinity by zero. In this case NO TRAP "DIVIDE BY ZERO" will be signaled and infinity will be returned as the result. See Figures 1-3 and 1-4. A floating-point number is divided into three fields, as shown in Figure 1-2. The F field is the fractional portion of the represented number. In Normalized numbers (Section 1.2.1), the binary point is assumed to be immediately to the left of the most significant bit of the F field, with an implied 1 bit to the left of the binary point. Thus, the F field represents values in the range 1.0:;;; x:;;; 2.0, as shown in Table 1-1. FField 000 ... 0 010 ... 0 100 ... 0 110 ... 0 E Fields Represented Value 1.5x2- 1 =0.75 1.5x2o=1.50 1.5 x 21 = 3.00 N U1 The NS32580 FPC treats only Denormalized numbers as reserved operands if the Floating-Point Status Register ROE bit is set (Section 2.1.2). Denormalized numbers have all zeroes in their E fields and non-zero values in their F fields. The NS32580 FPC causes an Invalid Operation Trap (Section 2.1.2.2) if it receives a reserved operand, unless the operation is Simply a move (without conversion). TABLE 1·1. Sample F Fields Binary Value Decimal Value 1.000 ... 0 1.000 ... 0 1.010 ... 0 1.250 ... 0 1.100 ... 0 1.500 ... 0 1.110 ... 0 1.750 ... 0 t Implied Bit 3-131 • 1.0 Product Introduction (Continued) Single Precision 31 30 23 22 Is I E 1 8 0 I I F 23 Double Precision 63 62 52 51 151 E 1 11 0 I I F 52 FIGURE 1-2. Floating-Point Operand Formats TABLE 1-3. Normalized Number Ranges Single Precision Double Precision 2127 x (2 - 2- 23) 21023 x (2 - 2- 52) = 3.40282346 x 1038 = 1.7976931348623157 X 10308 2- 126 2- 1022 = 1.17549436 X 10- 38 = 2.2250738585072014 X 10- 308 Most Positive Least Positive -(2- 126) -(2- 1022) = -1.17549436 x 10- 38 = -2.2250738585072014 X 10- 308 -2127 X (2 - 2- 23) -21023 X (2 - 2- 52) Most Negative = -1.7976931348623157 X 10308 = -3.40282346 X 1038 Nole: The values given are extended one full digit beyond their represented accuracy to help in generating rounding and conversion algorithms. Least Negative E F Value 255 NatO None 255 1-254 0 0 0 Any NatO 0 (-1)S • (-1)s' (-1)"' (-1)"' Name NaN Infinity 2e - 127 ' (1.1) 2- 126 ' (O.f) 0 Infinity Normalized Number Denormalized Number Zero Comments ROE = 0 -+ Reserved Operand ROE = 1 -+ NaN Returned as Result Not a Reserved Operand Reserved Operand FIGURE 1-3. Single-Precision Operand E and F Fields E F 2047 NatO None Value NaN Name 2047 1-2046 0 0 0 Any NatO 0 ( -1)" • Infinity (-1)" • 2e-1023 • (1.t) (-1)" • 2- 1022 • (O.t) (-1)"'0 Infinity Normalized Number Denormalized Number Zero Comments ROE = 0 -+ Reserved Operand ROE = 1 -+ NaN Returned as Result Not a Reserved Operand Reserved Operand FIGURE 1-4. Double-Precision Operand E and F Fields 3-132 1.0 Product Introduction (Continued) +- 1.2.4 Integer Formats The FPC-FPDP performs conversions between integer and floating point operands. Integers are accepted and generated by the FPC-FPDP as two's complement values of byte (8 bits), word (16 bits) or double-word (32 bits). o n-1 S TABLE 1-4. Integer Fields S Value Name 0 I Positive Integer 1 1- 2n Negative Integer +-32LOLSDW F1 LOMSDW L1 MSDW L1 LSDW I F3 L2MSDW L2LSDW L3MSDW L3 LSDW L4MSDW L4LSDW L5MSDW L5LSDW LSMSDW L6LSDW L7MSDW L7LSDW I F5 F7 Z - +-32- I I FIGURE 1-5. Integer Format DATA 64 tn (0) I\) en co o FO I Z F2 I F4 I F6 I tn (0) I\) en co o • I\) en ...... Z LSDW ..... Least Significant Double Word MSDW ..... Most Significant Double Word n represents number of bits in the word, 8 for byte, 16 for word and 32 for double-word. The FPDP supports only 32-bit integers, therefore, the FPC has to sign extend 8- and 16-bit integers prior to integer to floating-point number conversion. In floating to integer conversion, FPC has to check possible integer overflow, in case of 8- and 1S-bit integer formats. • I\) o ...... tn (0) I\) en co o · (0) o FIGURE 2-1. Data Registers 2.1.2.1 FSR Mode Control Fields The FSR mode control fields select FPC operation modes. The meanings of the FSR mode control bits are given below: ROUNDING MODE (RM bit 8-7). This field selects the rounding method. Floating-point results are rounded whenever they cannot be represented exactly. The rounding modes are: 00 Round to nearest value. The value which is nearest to the exact result is returned. If the result is exactly halfway between the two nearest values the even value (Isb = 0) is returned. 01 Round toward zero. The nearest value which is closer to zero or equal to the exact result is returned. 10 Round toward positive infinity. The nearest value which is greater than or equal to the result is returned. 1.2.5 Memory Representations The NS32580 FPC does not directly access memory. However, it is cooperatively involved in the execution of a set of two-address instructions with the NS32532 CPU. The CPU determines the representation of operands in memory. In the Series 32000 family of CPUs, operands are stored in memory with the least Significant byte at the lowest byte address. The only exception to this rule is the Immediate addressing mode, where the operand is held (within the instruction format) with the most significant byte at the lowest address. 11 Round toward negative infinity. The nearest value which is less than or equal to the exact result is returned. UNDERFLOW TRAP ENABLE (UEN bit 3). If this bit is set, the FPC requests a trap whenever a result is too small in absolute value to be presented as a Normalized number. If it is not set, FPC returns a result of exactly zero. 2.0 Architectural Description 2.1 PROGRAMMING MODEL The Series 32000 architecture includes nine registers; eight data registers and one floating-point status register. 2.1.1 Floating-Point Data Registers (LO-L7) INEXACT RESULT TRAP ENABLE (lEN bit 5). If this bit is set, the FPC requests a trap whenever the result of an operation cannot be represented exactly in the operand format of the destination (and no other exception occurred in the same operation) or if the result of an operation overflows and the overflow trap is disabled. If lEN is not set, the result is rounded according to the selected rounding mode. There are eight registers (LO-L7) in the FPDP for providing high-speed access to floating-point operands. Each is 64 bits long. A floating-point register is referenced whenever a floating-point instruction uses the Register addressing mode (Section 2.2.2) for a floating-point operand. All other Register mode usages (i.e., integer operands) refer to the General Purpose Registers (RO-R7) of the CPU, and the FPU transfers the operand as if it were in memory. 2.1.2.2 FSR Status Fields The FSR Status Fields record exceptional conditions encountered during floating-point data processing. The meaning of the FSR status bits are given below: Note: These registers are all upward compatible with the 32·bil NS32081 registers, (FO-F7), such that when the Register addressing mode is specified for a double precision (64·bit) operand. a pair of 32·bit regis· ters holds the operand. The programmer specifies the even register of TRAP TYPE (TT bits 2-0). This 3-bit field indicates the reason for TRAP (FPU) requested by the FPC. The TT field is loaded with zero whenever any floating-point instruction except LFSR or SFSR completes without exception. It is also set to zero by a reset or by writing zero into it with the LFSR instruction. The TT field is updated regardless of the setting of the exception enable bits. the pair which contains the least significant half of the operand and the next consecutive register contains the most significant half. 2.1.2 Floating-Point Status Register (FSR) The Floating-Point Status Register selects operating modes and records any exceptional condition encountered during execution of a floating-point operation. The FPC FSR contains all the NS32081INS32381 FSR bits and additional fields for better exception handling. The FSR is cleared to all zeros during reset. 3-133 • . Qr---------------------------------------------------------~ C") Q co II) N C") rn 2.0 Architectural Description 31 NewFields z 6co II) N C") rn z ~ 6co II) N C") rn z 98 7 6 5 4 3 2 0 SWF FIGURE 2-2. FSR (Compatible Fields) U=i N (Continued) 17 16 15 000 No exceptional condition occurred. 001 Underflow. This condition occurs whenever a result is too close to zero to be represented as a Normalized number. 2.1.2.4 FSR New Fields New fields were added to the FSR for better exception handling. In the FPC, the user can enable or disable each exception or combination of exceptions by using new "enable bits" implemented in the FSR. After reset the new fields are loaded to the default values (compatible with NS32081). illegal Instruction always causes TRAP and can't be disabled. CONTROL BITS 010 Overflow. This condition occurs whenever a result is too large in absolute value to be represented (float or integer). 011 Divide by Zero. This condition occurs whenever an attempt was made to divide a non-zero value by zero. 100 Illegal Instruction. An illegal or undefined FloatingPoint instruction was passed to the FPC. If the T bit in the Status Word Register (SWR) is a "0", then it indicates that an illegal instruction was passed to the FPC. If the T bit in the SWR is a "1 ", then it indicates that an undefined instruction was passed to the FPC. 101 Invalid Operation. This condition occurs if: 1. NaN is used as a floating-point operand by any instruction except MOVf and the Reserved Operand Enable (ROE) bit in the FSR is disabled. 2. DNRM is used as a floating-point operand by any instruction except MOVf. 3. Both operands of the DIVf instruction are zero. 4. Sqrt when the floating-point number is negative. 5. Infinity plus negative infinity, infinity minus infinity. 110 Inexact Result. This condition occurs whenever the result of an operation cannot be exactly represented in the precision of the destination (and no other exception occurred in the same operation) or if the result of an operation overflows (floating-point or integer conversion overflow) and the overflow trap is disabled. RESERVED OPERANDS ENABLE (ROE bit 17). If this bit is cleared, the FPC requests an Invalid Operation trap whenever a NaN has been detected by the FPC. Infinities are not reserved operands in the FPC. When ROE is disabled, the FPC does not generate reserved operands as results. Denormalized Numbers (DNRM) are always treated as reserved operands, except for the case of the SQRTf instruction. When calculating the square root of the negative denormalized number, the TRAP "INVALID OPERATION" will occur and the Reserved Operand Flag ROF will be "0" while Invalid Operation Flag IOF will be "1". If Invalid Operation exception is disabled, the ROE bit is overwritten internally (the FPC does not change the ROE bit in the FSR) and the FPC can generate NaN as a result. ROE bit does not affect MOVf instruction. INVALID OPERATION ENABLE (IVE bit 18). If this bit is cleared, the FPC requests a trap whenever the operation is invalid. If this bit is set to "1", the trap is disabled and if invalid operation occurred, NaN will be delivered as result. DIVIDE BY ZERO ENABLE (DZE bit 19). If this bit is cleared the FPC requests a trap whenever an attempt is made to divide by zero. If this bit is set the trap is disabled and if divide by zero occurred, infinity will be delivered as result. OVERFLOW ENABLE (OVE bit 20). If this bit is cleared, the FPC requests a trap whenever a floating-point result is too big in absolute value to be represented. If this bit is set, the overflow trap is disabled and if overflow occurred, Infinity or Maximum Number will be delivered as result. INTEGER CONVERSION OVERFLOW ENABLE (IOE bit 21). If this bit is cleared, the FPC requests a trap whenever an Integer result is too big to be represented. If this bit is set, the integer conversion overflow is disabled and if integer conversion overflow occurred, Max/Min integer will be delivered as result. 111 Reserved. UNDERFLOW FLAG (UF bit 4). This bit is set by the FPC whenever a result is too small in absolute value to be represented as a Normalized number. Its function is not affected by the state of the UEN bit. The UF bit is "sticky" therefore it can be cleared only by writing a zero into it with the Load FSR instruction or by a hardware reset. INEXACT RESULT FLAG (IF bit 6). This bit is set by the FPC whenever the result of an operation must be rounded to fit within the destination format (and no other exception occurred in the same operation) or if the result of an operation overflows and the overflow trap is disabled. This situation applies both to floating-point and integer destinations. The IF bit is "sticky" therefore it is cleared only by writing a zero into it with the Load FSR instruction or by a hardware reset. REGISTER MODIFY BIT (RMB BIT 16). This bit is set by the FPC whenever writing to a floating-point data register. The RMB bit is cleared only by writing a zero with the LFSR instruction or by a hardware reset. This bit can be used in context switching to determine whether the FPC registers should be saved. STATUS BITS RESERVED OPERAND FLAG (ROF bit 22). This bit is set by the FPC whenever reserved operand DNRM or NaN (when ROE is cleared) is selected by the FPC. The ROF bit is "sticky" and can be cleared only by writing a zero with the Load FSR instruction or by a hardware reset. INVALID FLAG (IVF bit 23). This bit is set by the FPC whenever the operation is invalid. The IVF bit is "sticky" and can be cleared only by writing a zero with the Load FSR instruction or by a hardware reset. DIVIDE BY ZERO FLAG (DZF bit 24). This bit is set by the FPC whenever an attempt is made to divide a non-zero value by zero. The DZF bit is "sticky" and can be cleared only by writing a zero with the Load FSR instruction or by a hardware reset. 2.1.2.3 FSR Software Field (SWF) Bits 15-9 of the FSR hold and display any information written to them using the LFSR and SFSR instructions, but are not otherwise used by FPC hardware. They are reserved for use with NSC floating-point extension software. 3-134 z 2.0 Architectural Description 31 27 Reserved en c.:I (Continued) I\) 26 25 24 23 22 21 20 19 18 17 IOF OVF DZF IVF ROF IOE OVE DZE IVE ROE 16 I RMB I FIGURE 2-3. New FSR Mode Control Fields OVERFLOW FLAG (OVF bit 25). This bit is set by the FPC whenever a floating-paint result is too large in absolute val· ue to be represented. The OVF bit is "sticky" and can be cleared only by writing a zero with the Load FSR instruction or by a hardware reset. INTEGER CONVERSION OVERFLOW FLAG (IOF bit 2S). This bit is set by the FPC whenever an integer result is too large in absolute value to be represented. The IOF bit is "sticky" and can be cleared only by writing a zero with the Load FSR instruction or by a hardware reset. RESERVED FIELD TABLE 2-1. FSR Default State Summary (Continued) Bit Name No exceptional condition occurred. UEN(bit3) 0 Underflow trap disabled. UF (bit 4) 0 Underflow flag is cleared. lEN (bit 5) 0 Inexact result trap disabled. IF (bitS) 0 Inexact flag is cleared. RM (bits 8-7) 0 Round to nearest. SWF (bits 15-9) 0 Undefined RMB (bit 1S) 0 RMB flag is cleared. ROE(bitI7) 0 FPC requests a trap whenever an attempt is made to use reserved operand except for MOVf instruction. IVE (bit 18) 0 FPC requests a trap whenever the operation is invalid. DZE (bit 19) 0 FPC requests a trap whenever an attempt is made to divide by zero. OVE(bit20) 0 FPC requests a trap whenever a floating-point result is too big to be represented. IDE (bit 21) 0 FPC requests a trap whenever an integer conversion result is too big to be represented. ROF(bit22) 0 ROF flag is cleared. o I IVF(bit23) 0 IVF flag is cleared. ...... DZF (bit 24) 0 DZF flag is cleared. OVF (bit 25) 0 OVF flag is cleared. en c.:I IOF(bit2S) 0 IOF flag is cleared. co RESERVED (bits 31-27 ) 0 Reserved field is c'2ared. C11 z I\) C11 o c.:I o I Figure 2-4 shows the general format of a Series 32000 instruction. The Basic Instruction is one to three bytes long and contains the opcode and up to two 5-bit General Addressing Mode (Gen) fields. Following the Basic Instruction field is a set of optional extensions, which may appear depending on the instruction and the addressing modes selected. The only form of extension issued to the NS32580 FPC is an Immediate operand. Other extensions are used only by the CPU to reference memory operands needed by the FPC. Index Bytes appear when either or both Gen fields specify Scaled Index. In this case, the Gen field specifies only the Scale Factor (1, 2, 4 or 8), and the Index Byte specifies which General Purpose Register to use as the index, and which addressing mode calculation to perform before indexing. See Figure 2-5. Following Index Bytes come any displacements (addressing constants) or immediate values associated with the selected addressing modes. Each Displlmm field may contain one or two displacements, or one immediate value. The size of a Displacement field is encoded within the top bits of that field, as shown in Figure 2-6, with the remaining bits interpreted as a signed (two's complement) value. The size of an immediate value is determined from the Opcode field. Both Displacement and Immediate fields are stored most significant byte first. Default State 0 Default State co 2.2 INSTRUCTION SET TABLE 2-1. FSR Default State Summary TI(bits2-0) I\) C11 Default Value 2.2.1 Generaiinstruction Format 2.1.2.5 FSR Default Values During Reset the FSR is loaded to a default value (see Table 2-1). The default values for the FSR represent upward compatibility of the FPC-FPDP with the NS32081. The user can change the default values by loading the FSR register with new values. Default Value I\) o ...... z en c.:I I\) Bits 31-27 in the FSR are reserved by NSC for future use. User should not use this field. Bit Name C11 co oI Some non-FPC instructions require additional, "implied" immediates and/or displacements, apart from those associated with addressing modes. Any such extensions appear at the end of the instruction, in the order that they appear within the list of operands in the instruction definition. 2.2.2 Addressing Modes The Series 32000 Family CPUs generally access an operand by calculating its Effective Address based on information available when the operand is to be accessed. The method to be used in performing this calculation is specified by the programmer as an "addressing mode." Addressing modes in the Series 32000 family are designed to optimally support high-level language accesses to variables. In nearly all cases, a variable access requires only 3-135 • 2.0 Architectural Description (Continued) OPTIONAL BASIC EXTENSIONS INSTRUcnON rr----------------~A~------------------~\r~--------~A~--------, I I I I I I I I I I DISP2 DISPI DISPZIDISPI IMPUED IMMEDIATE OPERAND(SI DISP DISP INDEX BYTE INDEX BYTE GEN ADDR MODE A : IMM IMM ~ ~ l GEN ADDR MODE B I I I I I I I I I I I I OPCODE TLlEE/9421-2 FIGURE 2·4. General Instruction Format Top of Stack: The currently-selected CPU Stack Pointer (SPO or SP1) specifies the location of the operand. The operand is pushed or popped, depending on whether it is written or read. one addressing mode within the instruction which acts upon that variable. Extraneous data movement is therefore minimized. Series 32000 Addressing Modes fall into nine basic types: Scaled Index: Although encoded as an addressing mode, Scaled Indexing is an option on any addressing mode except Immediate or another Scaled Index. It has the effect of calculating an Effective Address, then multiplying any General Purpose Register by 1, 2, 4 or 8 and adding it into the total, yielding the final Effective Address of the operand. The following table, Table 2-2, is a brief summary of the addressing modes. For a complete description of their actions, see the Series 32000 Instruction Set Reference Manual. Register: In floating-point instructions, these addressing modes refer to a Floating-Point Register (FO-F7) or (LOL7) if the operand is of a floating-point type. Otherwise, a CPU General Purpose Register (RO-R7) is referenced. See Section 2.1.1. Register Relative: A CPU General Purpose Register contains an address to which is added a displacement value from the instruction, yielding the Effective Address of the operand in memory. 7 GEN. ADDR. MDDE SIGNED DISPLACEMENT TLlEE/9421-3 FIGURE 2·5. Index Byte Format 7 Memory Space: Identical to Register Relative above, except that the register used is one of the dedicated CPU registers PC, SP, S8 or FP. These registers point to data areas generally needed by high-level languages. Memory Relative: A pointer variable is found within the memory space pOinted to by the CPU SP, S8 or FP register. A displacement is added to that pOinter to generate the Effective Address of the operand. Immediate: The operand is encoded within the instruction. This addressing mode is not allowed if the operand is to be written. Floating-point operands as well as integer operands may be specified using Immediate mode. 0 7 1 1 I r:c.",f..'t\'\ ~f..\\\\'''~ ..,'iJ Absolute: The address of the operand is specified by a Displacement field in the instruction. External: A pOinter value is read from a specified entry of the current Link Table. To this pOinter value is added a displacement, yielding the Effective Address of the operand. TLIEE/9421-4 FIGURE 2·6. Displacement Encodlngs 3-136 2.0 Architectural Description z en w (Continued) to.) TABLE 2-2. Series 32000 Family Addressing Modes Mode Assembler Syntax Encoding U1 00 Effective Address oI to.) o ...... None: Operand is in the specified register. en w REGISTER 00000 00001 00010 00011 00100 00101 00110 00111 Register 0 Register 1 Register 2 Register 3 Register 4 Register 5 Register 6 Register 7 RO, R1, R2, R3, R4, R5, R6, R7, FO or LO F1 orL1 F2 or L2 F3 or L3 F40rL4 F5 or L5 F6 or L6 F7 or L7 to.) U1 00 o N U1 ...... z en w to.) U1 00 REGISTER RELATIVE 01000 01001 01010 01011 01100 01101 01110 01111 Register 0 relative Register 1 relative Register 2 relative Register 3 relative Register 4 relative Register 5 relative Register 6 relative Register 7 relative disp(RO) disp(R1) disp(R2) disp(R3) disp(R4) disp(R5) disp(R6) disp(R7) Disp + Register. Frame memory Stack memory Static memory Program memory disp(FP) disp(SP) disp(SB) * +disp Disp + Register; "SP" is either SPO or SP1, as selected in PSR. Frame memory relative Stack memory relative Static memory relative disp2(disp1 (FP)) disp2(disp1 (SP)) disp2(disp1 (SB)) Disp2 + Pointer; Pointer found at address Disp1 + Register. "SP" is either SPO or SP1, as selected in PSR. Immediate value None: Operand is issued from CPU instruction queue. Absolute @disp Disp. External EXT (disp1) + disp2 Disp2 + Pointer; Pointer is found at Link Table Entry number Disp1. Top of Stack TOS Top of current stack, using either User or Interrupt Stack Pointer, as selected in PSR. Automatic Push/Pop included. 11100 11101 11110 11111 Index, bytes Index, words Index, double words Index, quad words mode[Rn:B] mode[Rn:W] mode[Rn:D] mode[Rn:Q] Mode + Rn. Mode + 2 x Rn. Mode + 4 X Rn. Mode + 8 x Rn. "Mode" and "n" are contained within the Index Byte. 10011 (Reserved for Future Use) MEMORY SPACE 11000 11001 11010 11011 MEMORY RELATIVE 10000 10001 10010 IMMEDIATE 10100 ABSOLUTE 10101 EXTERNAL 10110 TOP OF STACK 10111 z SCALED INDEX 3-137 oI W o 2.0 Architectural Description (Continued) 2.2.3 Floating-Point Instruction Set instruction format (Rgurs 2-7). Refer to Table 2·2 for the options available and their patterns. Further details of the exact operations performed by each instruction are found in the Series 32000 Instruction Set Reference Manual. The NS32580 FPC-FPDP instructions occupy formats 9, 11 and 12 of the Series 32000 Family instruction set (Figure 2-7). A list of all Series 32000 family instruction formats is found in the applicable CPU data sheet. Certain notations in the following instruction description tables serve to relate the assembly language form of each instruction to its binary format in Figure 2-7. Movement and Conversion The following instructions move the gen1 operand to the gen2 operan~, leaving the gen1 operand intact. Format 9 Format Op Instruction 11 0001 MOVf gen1, gen2 iii I gen2 I I I iii I I 0 0 1 1 1 1 1 0 OPERATION WORD I , '\ 9 010 MOVLF gen1, gen2 9 011 gen1, gen2 Move, converting from single preCision to double precision. 9 000 MOVif gen1, gen2 9 100 ROUNDfi gen1, gen2 9 101 TRUNCfi gen1, gen2 9 111 gen1, gen2 Move, converting from any integer type to any floating-point type. Move, converting from floatingpoint to the nearest integer. Move, converting from floatingpoint to the nearest integer closer to zero. Move, converting from floatingpoint to the largest integer less than or equal to its value. 10 BYTE TUEE/9421-5 Format 11 23 I. I I I aenl I I 16 115 gan2 I I• I I op MOVFL 10 I,17,. 0 i 1 i 1 i ,.,.,. 00 I B H OPERATION WORD , 10 B'YTE TLlEE/9421-6 Format 12 TL/EE/9421-7 FIGURE 2-7. Floating-Point Instruction Formats The Format column indicates which of the three formats in Figure 2-7 represents each instruction. The Op column indicates the binary pattern for the field called "op" in the applicable format. The Instruction column gives the form of each instruction as it appears in assembly language. The form consists of an instruction mnemonic in upper case, with one or more suffixes (i or f) indicating data types, followed by a list of operands (gen1, gen2). An i suffix on an instruction mnemonic indicates a choice of integer data types. This choice affects the binary pattern in the i field of the corresponding instruction format (Figure 2-7) as follows: Suffix I B W D Data Type Byte Word Double Word Data Type Single Precision Double Precision (Long) FLOORfi Note: The MOVLF instruction f bit must be 1 and the i field must be 10. The MOVFL instruction f bit must be 0 and the i field must be 11. Arithmetic Operations The following instructions perform floating-point arithmetic operations on the gen 1 and gen2 operands, leaving the result in the gen2 operand. I Field 00 01 11 An f suffix on an instruction mnemonic indicates a choice of floating-point data types. This choice affects the setting of the f bit of the corresponding instruction format (Figure 2-7) as follows: Suffix f F L Description Move without conversion. Move, converting from double precision to single precision. f Bit o An operand designation (gen1, gen2) indicates a choice of addressing mode expressions. This choice affects the binary pattern in the corresponding gen1 or gen2 field of the 3-138 Format 11 11 Op 0000 0100 Instruction ADDf gen1,gen2 SUBf gen1,gen2 11 1100 MULf 11 1000 DIVf 11 0101 NEGf 11 1101 ABSf Description Add gen1 to gen2. Subtract gen 1 fromgen2. gen1,gen2 Multiply gen2 by gen1. gen1,gen2 Dividegen2 bygen1. gen1,gen2 Move negative of gen1 to gen2. gen1,gen2 Move absolute value of gen1 to gen2. ,--------------------------------------------------------------------------, z 2.0 Architectural Description tJ) Co) (Continued) N Format Op Inl3truction Description (N) 12 1010 MACf genl, gen2 Move (genl"gen2) + L1 or Fl to L1 or F1 with two rounding errors. (N) 12 0001 SQRTI genl, gen2 Move the square root of gen 1 to gen2. 2.3 EXCEPTIONS/TRAPS An exception for the FPC is a special floating-paint condition with a default handling scheme. Seven types of exceptions are supported: 1) Underflows 2) Overflows 3) Divisions by zero 4) Illegal Instructions (N): Indicates NEW instruction. Format 11 Opcode 0010 Instruction CMPf genl, gen2 The FPC has improved exception handling. Except for illegal and Undefined Instructions, the user can control all of the exception types. In addition, there are some specific exceptions that the user can control: -Floating-Point overflow Overflows Integer conversion overflow Description Compare genl to gen2. There are four possible results to the CMPf instruction (with normal operands): Operands are equal Z bit is set N, L bits are cleared Operand1 is less than Operand2 Invalid Operations Operand2 is less than Operand1 N bit is set L, Z bits are cleared Unordered (when at least one operand is NaN and ROE is set) L bit is set N, Z bits are cleared Enabling an exception will cause a TRAP whenever the exception occurs and disabling an exception will return a result without a TRAP. When the FPC TRAPS it sets the Q bit in the status word register. The CPU responds by reading the status word register while applying status (11110) on the status lines. If the CPU sent the FPC ID with an undefined opcode, the T bit in the status word register would also be set by the FPC indicating a TRAP (UND). If the T bit is clear aiter the TRAP it indicates a TRAP(FPU) and the reason for the TRAP resides in the FSR TRAP TYPE field. A trapped instruction returns no result (also if the destination is an FPDP register) and does not affect the CPU PSR. In addition there is a flag bit, for each exception under user control, which will mark the occurrence of the exceptional condition whether or not the exception is enabled or disabled. These bits in the FSR can be used for polling the exception status while TRAPS are disabled. Floating-Point Status Register Access The following instructions load and store the FSR as a 32bit integer. If the user specifies a register (genl in LFSR or gen2 in SFSR) it will be a general purpose register in the CPU. Format 9 Opcode 001 9 110 Instruction LFSR genl SFSR gen2 -Reserved Operands Each exception or type that is controlled by the user can be set-up to cause an interrupt or to return a result without an interrupt on the occurrence of the exception. The interrupt is called a TRAP and is signaled by the FPC pulsing the FSSR line for one clock cycle. Illegal and Undefined instructions are not under control of the user and will always cause a TRAP if they are passed to the FPC. N, L,Zbits are cleared Description Load FSR with the content of gen1. (gen2 field = 0) Store FSR in gen2. (gen1 field = 0) Note: All instructions support all of the NS32000 family data formats (for external operands) and all addressing modes are supported. Floating-point instructions that end with an enabled exception will trap, activating the FSSR signal, but will not update the destination register. In this case, the FPC will ABORT the instruction that ended with the exception to prevent destruction of the data in the destination register. Instructions that ended with a disabled exception update the destination register with the default result. 3-139 Q) C) · N C) ...... Z tJ) ~ U1 Q) C) · N 5) Invalid Operations 6) Inexact results 7) Undefined Instructions Comparison The compare instruction compares two floating-point operands, sending the result to the CPU PSR Z, Nand L bits for use as condition codes. U1 U1 ...... Z tJ) Co) N U1 Q) C) · Co) C) «:) C') :i 2.0 Architectural Description It) (Continued) TABLE 2·3. Exception Enabled/Disabled Summary N C') (I) Z ..... . Exception Occurred It) Enabled By N «:) CQ It) N C') Q = 1; Trap Type Q= 0; Default Result Returned Flag Bits Underflow UEN = 1 001 UEN = 0 Zero UF = 1 Floating·Point Overflow OVE= 0 010 OVE = 1 lEN = 0 Infinity or Max NRM Number OVF = 1 OVE = 1 lEN = 1 110 IOE = 0 010 IOE = 1 lEN = 1 110 (I) Z ..... . «:) N «:) CQ It) Disabled By Integer Conversion Ov. N C') en z OVF = 1 IF = 1 IOE= 1 ·IEN = 0 Max or Min Integer IOF= 1 IOF:. 1 IF = 1 Divide by Zero DZE = 0 011 DZE = 1 Infinity DZF = 1 Illegal Instruction Always Enabled Tbit = o and 100 Cannot be Disabled No Result No Flags Affected Invalid Operation IVE = 0 101 IVE = 1 NaN IVF = 1 ROE = 0 IVE = 0 101 ROE = 0 IVE= 1 NaN ROF = 1 IVF = 1 000 ROE = 1 IVE = X NaN No Flags ROE = X IVE = 0 101 ROE = X IVE = 1 Undefined ROF = 1 IVF = 1 Inexact Result lEN = 1 110 lEN = 0 Correctly Rounded Result IF = 1 Undefined Instruction Always Enabled Tbit = 1 and 100 Cannot be Disabled No Result No Flags Affected Reserved Op. (NaN) Reserved Op. (NaN) Reserved Op. (DNRM) Status Word Register CMPf(NaN) ROE = 0 IVE = 0 CMPf(NaN) CMPf(DNRM) x ~ ROE =X IVE = 0 101 ROE = 0 IVE = 1 L=1,N=Z=0 ROF = 1 IVF = 1 000 ROE = 1 IVE = X L=1,N=Z=0 No Flags Affected 101 ROE = X IVE = 1 N, L,Z Undefined ROF = 1 IVF = 1 Don't Care 3·140 r--------------------------------------------------------------------------, 3.0 Functional Description Z tn w I\) U1 (VCC PLANE) +5V co 9I\) o ...... Z tn w I\) VCCLl VCCL2 U1 co o VCCL3 • I\) U1 ...... VCCL4 VCCL5 Z VCCL6 tn w I\) VCCL7 . U1 VCCBl co o w o VCCB2 VCCB3 VCCB4 VCCB5 VCCB6 VCCB7 VCCBB NS32580 (GND PLANE) TL/EE/9421-8 FIGURE 3-1. Recommended Supply Connections 3.1 POWER AND GROUNDING 3.2 CLOCKING The NS325BO FPC requires a single-phase TTL clock input on its BCLK pin (pin C10) and an inverted TTL clock input on its BCLK pin (pin BB). When the FPC is connected to a NS32532 CPU these signals are provided directly from the CPU's BCLK and BCLK output signals. The NS325BO requires a single 5V power supply, applied on 15 pins. The logic voltage pins (VCCL1 to VCCL7) supply the power to the on-chip logic. The buffer voltage pins (VCCB1 to VCCBB) supply the power to the output drivers of the chip. All the voltage pins should be connected together by a power (Vee) plane on the printed circuit board. The NS325BO grounding connections are made on 26 pins. The logic ground pins (GNDL1 to GNDL13) are the ground pins for the on-chip logic. The buffer ground pins (GNDB1GNDB13) are the ground pins for the output drivers of the chip. All the ground pins should be connected together by a ground plane on the printed circuit board. 3.3 RESETTING The RST pin serves as a reset for on-chip logic. The FPC may be reset at any time by pulling the RST pin low for at least 64 clock cycles. Upon detecting a reset, the FPC terminates instruction processing, resets its internal logic, clears the FSR to all zeroes, and clears the FIFOs. On application of power, RST must be held low for at least 50 fJos after Vee is stable. This ensures that all on-chip voltages are completely stable before operation. See Figures 3-2 and 3-3. Both power and ground connections are shown in Figure 3-1. 3-141 • 3.0 Functional Description (Continued) BCLK BCLK[._-+-~ I-- s-IL..JL 2: RST [ ~~4 ----~---4-----n-+---4---- 64 Clo;aCK_ CYCLES (NOTE 3) 1 - - - - 2: 50}'1 oo-~, --------~c:::::~::~) Tl/EE/9421-9 FIGURE 3-2. Power-On Reset Requirements Tl/EE/9421-12 Note 1: FPC samples CPU status here. Note 2: FPC samples l!J5O here. Note 3: FPC samples data here. FIGURE 3-5. Slave Processor Write Cycle to FPC From the slave processor point of view there are four possi· ble combinations of locations for operands: (For special cases see next paragraph.) Register to Register Instructions--Both operands reside in the register file inside the FPDP. No operand fetch or trans· fer from memory is needed. Memory to Register-The source operand is in memory, therefore the CPU will transfer the operand (one 32-bit transfer for single·precision and two 32·bit transfers for double·precision). The result is going to the floating,point regis· ter in the register file located inside the FPDP. Register to Memory-The source operand resides inside the FPDP. If the instruction is monadic (one operand) the CPU will not transfer the operand to the FPC before the beginning of the instruction (all the information needed to start the operation resides inside the FPDP). For dyadic in· structions, the CPU will fetch and transfer one operand from memory. TLlEE/9421-10 FIGURE 3-3. General Reset Timing 3.4 BUS OPERATION Instructions and operands are passed to the NS325BO FPC with slave processor bus cycles. Each bus cycle transfers one double·word (32 bits) to or from the FPC. During all bus cycles, the SPC line is driven by the CPU as an active low data strobe, and the FPC monitors pins STO-ST4 to keep track of the sequence (protocol) established for the instruc· tion being executed. This is necessary in a virtual memory environment, allowing the FPC to retry an aborted instruc· tion. A bus cycle is initiated by the CPU, which asserts the proper status on STO-ST4 and pulses SPC low. The status lines are sampled by the FPC on the rising edge of BCLK in the T2 state. Figures 3·4 and 3-5 illustrate these sequences. Memory to Memory-In monadic instructions the source op· erand is in memory and the CPU will transfer it to the FPC· FPDP. If the instruction is dyadic, two operands will be transferred from memory to the FPC·FPDP by the CPU (gen 1 before gen2). The result in both cases is sent back to memory. When the CPU transfers an operand from memory to the FPC-FPDP it is loaded into one of the registers that create the operand FIFO inside the FPDP. The FPC translates the incoming instruction (mem, reg or mem, mem) to a registerto-register instruction with the same register number. From the incoming instruction addressing mode it should know if the operands are coming from memory or already located in the register file. 3.4.1 Operand Transfers The CPU fetches operands from memory, aligns them (if needed) and sends them to the slave (with status h'1 D) as a 32·bit transfer. If the operand is double·precision the Less significant half is transferred first (in 32000 mode). The FPC can not access the memory directly. BClK STO-ST. The Data FIFO inside the FPC is 10 entries deep, single- or double-precision. If the destination of instruction is memory, the FPC will wait for completion of the instruction. Then, the result will be transferred to the FPC and SON will be signaled. If the FPC receives a new 10 and Opcode before the CPU finishes reading the result, (can happen if page fault has been detected on a write) the FPC will abort the last instruction and will start the execution of the new instruction. The NS32532 CPU can "reset" the FPC by issuing SPC and status h' 1E when there was no FSSR from FPC. In this case FPC flushes the instructions currently being executed and the contents of the floating-point registers are undefined. (NOTE 2) DO-D3t - - - - - - - - - - - - - - Note 1: FPC samples CPU status here. Note 2: CPU samples FPC data here. t>--- ~V~AU~D~FR~OM~FPSC TLlEE/9421-11 FIGURE 3·4. Slave Processor Read Cycle from FPC 3-142 w b "n C ::l NS32532-30 NS32580-30 BQ.K BCLK BQ.K BCLK .. DATA BUS 32-BIT A 00-D31 .. XO-X31 STD-ST4 SO-S3 0' FO-F4 g ABIN AAIN ABIN c: m MAIN MAIN !'1 ::l 4-BIT 5/ AAIN FPC ~ 5/ AADDO-AADD4 CADDO-CADD4 10K.D. SPC SPC SDN SDN FSSR FSSR RST RST 5 '1 CADDO-CADD4 5 EFDoo-EFDD4 5 4 DADDO-DADD4 / EFDDO-EFDD4 XCNTO-XCNT3 ABORT WABORT +5V BS I+l+~ ," BADDO-BADD4 5 XCNTO-XCNT3 LMODE RST S. FPDP AADDO-AADD4 5/ BADDO-BADD4 10K.D. a. :::l MBIN MBIN +5V t'; ~ .., XO-X31 SO-S3 FO-F4 CPU CD DIVCLK "§: " " ! A I' 5-BIT .. DATA BUS 32-BIT A DO-D31 c CLK WCLK DIVCLK I' STO-ST4 c::li" et WTL-3164-15 l10kA e...; r STALL NEUT OEX TL/EE/9421-13 FIGURE 3-6. System Connection Diagram oe-08sc:eSN/sC:-08sc:eSN/OC:-08sc:eSN II 3.0 Functional Description (Continued) 3.5 INSTRUCTION PROTOCOLS (023-016) and puts the Opcode high on byte 1 (015-08). Byte 0 (07-00) is not used. 3.5.1 General Slave Protocol Sequence The FPC interfaces with the CPU using the Slave-Protocol. The slave protocol is a well defined protocol for instruction and operand transfers between the CPU and the slave coprocessors (FPC and Custom Slave). Only the CPU can initiate slave cycle or access memory to fetch operands. The communication between the CPU and the FPC occurs at the beginning of the floating-point instruction, when the CPU transfers the Opcode and possible operands. At the end of the instruction, the FPC signals successful or unsuccessful conclusion of floating-point instruction and the CPU transfers operands from the FPC, if applicable. The CPU broadcasts the 10 and Opcode to all slave processors, one of which will recognize it and from this point the CPU is communicating only with one slave processor. The CPU puts the slave 10 (different 10 for each format) on byte 3 (031-024), puts the Opcode low on byte 2 31 23 10 15 7 0 1 OPCOOE low 1 OPCOOE high 1 XXXXXXXX 1 Byte 3 Byte 2 Byte 1 Byte 0 FIGURE 3·7. 10 and Opcode Format CPU Status Combinations 11101 (h'1 0) Transfer Slave Processor Operands-The CPU is transferring an operand to or from a slave processor. 11110 (h'1 E) Read Slave Processor Status-The CPU is reading the Status Word Register aiter the FPC signaled TRAP or is resetting the FPC when there was no FSSR. 11111 (h'1 F) Broadc~:st Slave 10-The CPU is initiating the execution of a slave processor instruction. The floating-point unit has three different instruction formats: Format 91 23 " MOVif -000 LFSR -001 8 7 16115 Gen 2 Gen 1 MOVLF -010 MOVFL -011 Op 1 ROUNO -100 TRUNC -101 23 1 Gen 1 AOOf MOVf CMPf Trap(FPU) Format 12 23 1 -0000 -0001 -0010 -0011 Gen2 SUBf NEGf Trap(UNO) Trap(UNO) Op -0100 -0101 -0110 -0111 81 7 0 1 f OIVf Trap(FPU) Trap(UNO) Trap(UNO) -1000 -1001 -1010 -1011 Op 0 16115 Gen2 Gen 1 SCAlBf" -0100 SREMf" -0000 -0001 lOGBf" -0101 SaRTI Trap(UND) -0110 POlYf" -0010 DOTf" -0011 Trap(UND) -0111 "All the marked instructions are not supported 0 SFSR -110 FLOOR -111 16115 Format 11 0 1 0 MUll ABSf Trap(UNO) Trap(UNO) 8 f 1 -1100 -1101 -1110 -1111 ~ Trap(UNO) -1000 Trap(UNO) -1100 Trap(UNO) -1001 Trap(UNO) -1101 Trap(UND) -1110 MACf -1010 Trap(UND) -1011 Trap(UNO) -1111 by the NS32580 and will cause Trap(UND). TABLE 3·1. 32·Bit General Slave Instruction Protocol Step Status Action 1 2 3 4 5 10 (11111) OP (11101) 6 OP (11101) CPU sends 10 and Operation Word CPU sends required operands (if any) Slaves starts execution (CPU prefetches) Slave signals DONE, TRAP or CMPf CPU Reads Status Word (If TRAP was signaled or if a"CMPf instruction was executed) CPU Reads Result (if destination is memory and if no TRAP occurred) - ST (11110) 3-144 :1 :1 z 3.0 Functional Description en w (Continued) N U1 CD 0 TABLE 3-2. Floating-Point Instruction Protocols Mnemonic ADDI SUSI MUll DIVI MOVI ASSI NEGI CMPI FLOORli TRUNCIi ROUNDfi MOVFL MOVLF MOVil LFSR SFSR SORTI MACI Operand 1 Class Operand 2 Class Operand 1 Issued Operand 2 Issued read.! read.! read.1 read.1 read.1 read.! read.! read.! read.! read.1 read.! read.F read.L read.i read.D rmw.1 rmw.1 rmw.1 rmw.! write. I write.1 write.! read.1 write.i write.i write.i write.L write.F write.! I I I I I I I I I I I F L i D I I I I N/A write.D write.1 read.! N/A read.! read.! N/A I I N/A N/A N/A Returned Value flo Op. 2 Ito Op. 2 Ito Op. 2 ItoOp.2 ItoOp.2 Ito Op. 2 Ito Op. 2 I N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A itoOp.2 itoOp.2 itoOp.2 LtoOp.2 FtoOp.2 flo Op. 2 I N/A DtoOp.2 ItoOp.2 ItoLl/Fl PSRBits Affected none none none none none none none N,Z,L none none none none none none none none none none · N 0 ...... Z en w N U1 CD 0 N• U1 ...... Z en w N U1 CD 0 · w 0 D = Double Word i = Integer size (B, W, D) specified in mnemonic. f = Floating,Point type (F, l) specified in mnemonic. NtA = Not Applicable to this instruction. READ AND DECODE ID AND OPERATION WORD (BUS STATUS=IIIII) READ OPERAND (BUS STATUS = 11101) • Pulse Active FSSR for 1 clock (TRAP or CmPf) y Pulse Active SDN for 1 clock (DONE) TLfEEf9421-14 FIGURE 3-8. 32-Bit General Slave Instruction Protocol 3-145 o '? o CO II) C'I C") tn Z ..... ~ ~ C'I &J z ~ CO ~ C") tn Z r-------------------------------------------------------------------------~ 3.0 Functional Description (Continued) 3.5.2 Pipellned Slave Protocol Sequence The NS32532 can communicate with the FPC using the pipelined Slave Protocol. In the pipelined slave protocol, the CPU proceeds to the next floating-point instruction if the destination of the current floating-point instruction is a register, without waiting for SDN signal. The FPC from the other end can receive new instructions before the end of the previous instruction. The FPC can internally store up to five new instructions, with up to 10 single- or double-precision operands. The CPU saves the PC of the floating-point instructions in the Floating-Point Instruction FIFO (FIF). If exception occurs, the floating·point instruction can be reexecuted using the PC saved in the FIF (if exception occurs the CPU will flush the FIF and the FPC will flush the instruction and the operand's FIFOs). 31 2 4 5 6 CPU sends ID and Opcode of MULF instruction. Slave starts execution of MULF instruction. B Slave pulses SDN or FSSR for the DIVF instruction. if TRAP occurred, the rest of the instructions will be aborted. 9 10 11 12 13 L BIT: The L bit is set to "1" if the operands in CMPf operation are "Unordered" (i.e., one of them is NaN). If ROE bit is cleared, the L bit is always cleared by the FPC. Q BIT: The Q bit is set to "1" if TRAP occurred. The T bit will distinguish between TRAP(UND) and TRAP(FPU). The T bit is set to "1" if the TRAP is TRAP(UND) and "0" if the TRAP is TRAP(FPU). The CPU examines this bit whenever TRAP occurs. Floating-Point Instructions that ended without exception will signal done by pulsing the SDN line for one clock cycle. The CPU will read the result from the FPC if the destination is memory. The CPU can try to read the result immediately after detecting the SDN signal. Therefore, the DONE must be signaled after loading the result to the FPC. To read the result the CPU uses the Read from FPC cycle as shown in Figure 3-4. Upon detecting an exceptional condition in executing a floating point instruction, the FPC requests a TRAP by pulsing the FSSR line for one clock cycle. In addition, it sets the Q bit in the status word register. The CPU responds by reading the status word register while applying status h'1 E (transferring status word) on the status lines. A trapped instruction returns no result (also if the destination is FPC register) and does not affect the CPU PSR. The FPC displays the reason for the TRAP(FPU) in the TRAP TYPE (TT) field of the FSR. If the CPU sends FPC ID with illegal opcode, the FPC generates TRAP(UND) by signaling TRAP and setting the T bit in the status word register. The n field in the FSR will be set to Illegal Instruction (h'100). POLYf, DOTl, SREMf, SCALBf, LOGBf and all the unused opcodes in formats 11 and 12 will cause a TRAP(UND). CPU sends ID and Opcode of ADDF instruction. 7 The Z bit is set to "1" if the second operand is equal to the first operand. Otherwise, it is set to 3.5.4 Termination of Instruction (Not Including CMPf) Action CPU sends ID and Opcode of DIVF instruction. Slave starts execution of ADDF instruction. ID(h'1F) Z BIT: T BIT: Slave starts execution of DIVF instruction. ID(h'1F) 0 "0". OP(h'1D) CPU sends operand (RO). 3 7 FIGURE 3-9. FPC Status Word Format (SWR) O(RO), F1 F2, F3 F4, F5 Step Status 1 ID(h'1F) 15 Status Bits N BIT: The N bit is set to "1" if the second operand is less than the first operand. Otherwise, it is set to "0". The FPC-FPDP can start execution of a new floating-point instruction every two CPU clock cycles. In the following example three floating-point instructions are being pipelined: DIVF ADDF MULF 23 1000000001 000000001 Toooooool NZOOOLOQI ST(h'1E) CPU Reads Status Word (if TRAP was signaled). Slave pulses SDN or FSSR for the ADDF instruction. If TRAP occurred, the rest of the instructions will be aborted. 3.5.5 Byte Sex The FPC supports the VME or 32000 bus, depending on the state of the BS pin. In 32000 mode (BS = "0"), the FPC is ready to receive the less significant half of a double-precision operand first and the more significant half afterward. In VME mode (BS = "1 "), the FPC is ready to receive the more significant half of a double-precision operand first and the less significant half afterward. The FPC will send the received operands to the correct destination registers inside the FPDP. In VME mode, the user must swap the data bus between the CPU and FPC. Byte 0 in the CPU should be connected to Byte 3 in the FPC, Byte 1 in the CPU should be connected to Byte 2 in the FPC, byte 2 in the CPU should be connected to Byte 1 in the FPC and Byte 3 in the CPU should be connected to Byte 0 in the FPC. The BS line is sampled by the FPC during Reset only. ST(h'1E) CPU Reads Status Word (if TRAP was signaled). Slave pulses SDN or FSSR for the MULF instruction. ST (h'1E) CPU Reads Status Word (if TRAP was signaled). 3.5.3 Status Word Register There is a Status Word Register (SWR) that holds the com· pare results and an exception flag, which indicates TRAP. This register can be read by the CPU by applying status code h'1 E (read slave status) on the status line and SPC as a timing signal. The FPC updates the status word register after a compare float instruction or if TRAP has occurred. The content of SWR is valid only after the FPC signals FSSR. 3-146 Z tn Co) 3.0 Functional Description (Continued) The FPDP is capable of supporting 32-bit and 64-bit IEEE floating-point operations. The FPDP consists of a Multiplier, ALU, Divide/Sqrt unit, 32 x 64-bit, Six-Port Register file, I/O port and control unit. There are six major internal 64-bit wide data buses used for data transfers between the different blocks inside the FPDP. Using six data buses allows an input of two double-precision operands to a selected unit and to output one double-precision result in one WCLK cycle, supporting pipelining of a new double-precision instruction every WCLK cycle. (WCLK is half the frequency of BCLK.) Data Bus D7-DO D7-DO D15-D8 CPU D15-D8 FPC D23-D16 D23-D16 D31-D24 D31-D24 32000 Mode 3.6.1 ContrOlling the FPDP The FPC controls the FPDP on an instruction by instruction basis and not clock by clock. The instruction's control signals are delayed in the FPDP to match the pipeline stages inside the FPDP. Data Bus D7-DO D31-D24 D15-D8 CPU D23-D16 FPC D23-D16 This allows the specifying of all the controls for a Reg to Reg instruction in a single control word. There are two types of operations that can be executed concurrently on the FPDP. The first operation is a floating-paint arithmetic operation done on operands from the register file. The second operation is a Load/Store operation using the X port of the FPDP. D15-D8 D31-D24 D7-DO VMEMode FIGURE 3-10. Byte Sex Connection Diagrams 3.5.6 Floating-Point Protocols Table 3-2 gives the protocols followed for each floatingpoint instruction. The instructions are referenced by their mnemonics. For the bit encodings of each instruction, see Section 2.2.3. 3.6.2 Instruction Control The FPC controls the FPDP using a 33-bit control word. The control word contains all the information needed for the execution of an instruction including the function to be executed, source operands and destination of the result. The controls are pipelined along with the instruction and affect the operation at the appropriate times. The control word is sampled with the riSing edge of the WCLK (system clock divided by two). There are three functional fields in the control word: The Operand Class columns give the Access Classes for each general operand, defining how the addressing modes are interpreted by the CPU (see Series 32000 Instruction Set Reference Manual). The Operand Issued columns show the sizes of the operands issued to the Floating·Point Controller by the CPU. "D" indicates a 32-bit Double Word. "i" indicates that the instruction specifies an integer size for the operand (B = Byte, W = Word, D = Double Word). "f" indicates that the instruction specifies a floating-point size for the operand (F = 32-bit Standard Floating, L = 64-bit Long Floating). The Returned Value Type and Destination column gives the size of any returned value and where the CPU places it. The PSR Bits Affected column indicates which PSR bits, if any, are updated from the FPC Status Word (Figure 3-9). Any operand indicated as being of type "f" will not cause a transfer if the Register addressing mode is specified, because the Floating-Point Registers are physically in the Floating-Point Data Path and are therefore available without CPU assistance. 1. The FUNC bits define the arithmetic operation to be executed. 2. The MIN, ABIN, MAIN, MBIN, A ADD, B ADD, C ADD, D ADD bits specify the source and destination for arithmetic operation. Both C ADD and D ADD fields of the FPDP are connected to the D ADD field in the FPC control (C) word. 3. The E/F ADD and XCNT control the Load and Store operations. FUNC, AAIN, ABIN, MAIN, MBIN Fields The five-bit FUNC field specifies the arithmetic operation to be executed. The MAIN and AAIN control the muxes on the A inputs to the MULT and ALU respectively. MBIN and ABIN control the muxes on the B inputs to the MULT and ALU. Aain, Main: A = "1", X = "0" Abin, Mbin: B = "1", Y = "0" 3.6 FPDP INTERFACE The FPC uses the Weitek WTL 3164 Floating-Point Data Path (FPDP) as the computational unit. 5 FUNC MIN ABIN MAIN MBIN 5 5 5 5 5 4 AADD BADD CADD DADD E/FADD XCNT C41 C4 FIGURE 3-11. FPDP Control Word 3-147 N U1 CD o ~ o ...... Z tn Co) N U1 CD . o N ~ Z tn Co) N U1 CD o ~ o 3.0 Functional Description (Continued) A BUS A BUS lMIJ: fA""YXl r-r-xl ~ ~ 1 1 64 64 A B A MULTIPLIER ALU TL/EE/9421-15 FIGURE 3·12. FPDP Multiplier and ALU Bus Control XCNTField The XCNT field specifies the I/O operation to be executed. Code Operation Description H'O NOP No Operation H'1 EREG LS - XPAD Transfer the Less Significant half of the register specified by EREG to the X-port (Store LS). H'2 EREG MS - XPAD Transfer the More Significant half of the register specified by EREG to the X-port (Store MS). H'3 EREG INT - XPAD Transfer Integer operand in the register specified by EREG to the X-port (Store Int). H'5 XPAD - XREG/FREG LS Load the Less Significant half of the data in the X-port into the XREG LS and into the register specified by FREG. H'6 XPAD - XREG/FREG MS Load the More Significant half of the data in the X-port into the XREG MS and into the register specified by FREG. H'? XPAD - XREG/FREGINT Load the Integer operand in X-port into the XREG and into the register specified by FREG. Data from FPC is transferred to the FPDP through the XPAD (32-bit 1/0 Port). The data is loaded into the XREG and into a register in the register file specified by the ElF ADD. When using the "Three cycle latency" the Divide/Sqrt block uses the same clock as the FPDP (can not use the 2X clock). Although the "Three cycle latency" is not optimized for double-precision multiply it may be very useful if the system speed divided by two (WCLK output from FPC) is faster than the FPDP speed rating. Loading the data to both locations allows the immediate use of the data by the ALU and MULT, bypassing the register file. Loading the data to register in the register file prevents data from being lost if the data from memory is needed a few cycles later. The FPC has a pin to specify the desired mode. In "Three cycle latency" the LMODE pin should be connected to Vee and in "Two cycle latency" it should be connected to GND. The LMODE line is sampled during reset. After reset, as part of the initialization cycle, the FPC updates the Multiply Latency bit in the FPDP control register SRO bit-? (0 = "Two cycle latency", 1 = "Three cycle latency"). The FPDP 1/0 Mode is determined by the control bits in the control register SR1 bits 4-0. The FPDP is being used in Undelayed Single-Pump mode (code 00000). 3.6.3 "2 Cycle Mode" and "3 Cycle Mode" The FPDP has two timing modes, "Two cycle latency" and "Three cycle latency". In "Two cycle latency" single- and double-precision operations have latency of two cycles. In "Three cycle latency", double-precision multiply has a three cycle latency, single-precision multiplies and single- or double-precision ALU operations have latency of two cycles. In "Three cycle latency" Divide/Sqrt block uses the DCLK3 (same as WCLK), in "Two cycle latency" it uses the DCLK2 (2 X WCLK). FPC uses the latency pin to determine the length of some instructions (number of cycles before FPC can Signal DONE or TRAP). This feature allows the CPU to run at more than twice the maximum FPDP speed. 3-148 3.0 Functional Description (Continued) Multiply Latency SRO Bit-7 WCLK WCLK FPDPSpeed Max System "Two Cycle "Three Cycle Grade Speed Latency" Latency" 120 ns 100 ns 80ns 60ns 120 ns 100 ns 80 ns 60ns 90ns 75ns 60ns 50ns The FPDP has two multiply latency modes: Two cycle latency mode and Three cycle latency mode. (See separate paragraph on Latency Modes.) SRO Blt-7 Latency Mode Two Cycle Latency Mode o Three Cycle Latency Mode 45ns 38ns 30ns 25ns I/O Mode SRl Bits 4-0 3.6.4 FPDP Mode Control Registers SRO, SRl 00000 There are few options in the FPDP like Rounding, I/O, IEEE handling, Latency and other options that can be controlled by writing into the control registers SRO and SR1. The FPDP is being used in the undelayed single-pump mode for load and store operations. After reset and whenever the user changes the relevant fields in the FSR, the FPC updates the FPDP control registers. "1" FpexDelay SRl Bit-5 "1" "1" Set to Fast mode. An underflowed instruction with disabled underflow exception delivers zero to the destination register. 3.6.5 IEEE Enables Register SR2 SRO Blt-2 SRO Bit-1 0 0 Round toward nearest value, if tie round toward even significant 0 1 Round toward zero 1 0 Round toward positive infinity The SR2 register has enable bits for each of the exception conditions. The FPC updates the enable bits after Reset and whenever the user changes the relevant bits in the FSR. (See LFSR Instruction.) Rounding Mode 7 EN~:~ES Round toward negative infinity The NaN bit is affected by the ROE bit in the FSR. If the ROE is cleared then NaN should be enabled (signal exception upon detection of NaN). If ROE is set NaN will be disabled. Internal abort off. "0" The Dnrm bit is always enabled and detection of Dnrm as operand for operation will cause source exception. lIokOn SRO Blt-5 Disables Interlocks. Whenever the user changes the enable bit in the FSR, the same bit will be updated in the exception enable register in the FPDP. FpexStlcky SRO Blt-6 "0" I NaN Iinv I Dvz I Dnrm I Ovl I Unf Iinx IIOVf I FPC updates the Inv, Dvz, Ovl and lovl, Unf, Inx enable bits to reflect those enable bits in the FSR. SROBlt-4 "0" 0 FIGURE 3-13. IEEE Enables Register (FPDP) IntAbortOn SRO Blt-3 "0" Enables bypaSSing of operands between instructions. SRl Bit-7 "Oil Rounding 1 Delayed FPEX- Mode. BypassOn SRl Bit-6 Fast/IEEE Mode SRO bit 0 1 Single-Pump Undelayed FPEX is "Pulsed". In this mode, FPEX is asserted for one clock cycle. Registers SR3-SRll are not used by the FPC. 3.6.5.1 FPDP Status Lines (S3-S0) The status of operation in the FPDP can be obtained by using the FPDP status lines (S3-S1). The status is not "sticky", therefore, the FPC has to sample the status lines in the correct timing. If ALU and MULT instructions end in the same cycle, the ALU status is valid at the end of the cycle and the MULT status is valid at the beginning of the following cycle. CODE [EJ m ALU MUL ALU NUL 1][11][1 ~ ~ S 3-0 FIGURE 3-14. FPDP Status Timing 3-149 TUEE19421-16 C) r-------------------------------------------------------------------------------------~ C') i Lt) C'I C') t/) z ..... Lt) ~ co Lt) C'I C') U) z ..... C) ~ 3.0 Functional Description (Continued) 3.6.6 FPC-FPDP Clocks FPC runs off BCLK and BCLK, which is generated by the CPU. FPDP uses two clock signals, one clock signal for most of the chip and a special clock for the Divide unit. Both FPDP clock signals are supplied by the FPC. 3.6.6.2 FPDP Main Clock (WCLK) The FPDP uses a TTL level clock supplied by the FPC. The FPC generates the WCLK by dividing the BCLK by two. All the FPDP control Signal times are specified relative to the rising edge of the WCLK. 3.6.6.1 FPC Clock The FPC uses the system clocks (BCLK and BCLK) generated by the NS32532. All the timing for Signals between the CPU and the FPC are referenced to the BCLK. BCLK is a 30 MHz, TTL level clock (for timing characteristics refer to the timing chapter). 3.6.6.3 Divide/Sqrt Unit Clock (DIVCLK) The Divide/Sqrt unit in "Two cycle latency" mode uses a clock signal that is twice the WCLK (DCLK2). If the FPDP is in "three cycle latency", the Divide/Sqrt unit uses a clock signal that has the same frequency as WCLK (DCLK3). The FPC generates the correct DCLK automatically using the LMODE pin. co Lt) C'I C') t/) z WCLK TL/EE/9421-17 FIGURE 3-15. Dlvide/Sqrt Clock DCLK2/DCLK3 4.0 Device Specifications A CPU RESET DATA SO-S3 RST ~ 00-031 5-BIT 5/ MIN ...1\ STO-ST4 -y ABIN MAIN MBIN 5 BADDO-BADD4 CONTROL CADDO-CADD4 SPC +-- SON EFDDO-EFDD4 FSSR XCNTO-XCNT3 WABORT CLOCKING { I/o CONTROL MULTIPLY CONTROL BCLK 5 / 5 ,1..4 5 4 1 WCLK BCLK FPDP CONTROL C BUS 5 MDDO-MOD4 { FPDP ) v DATA BUS 'I NS32580 ~~~~ AND I\. XO-X31 FO-F4 CPU STATUS FPDP STATUS ; DIVCLK } FPDP CLOCKING BS LMODE TLlEE/9421-1 B FIGURE 4-1. NS32580 Interface Signals 3-150 z en w 4.0 Device Specifications (Continued) 4.1 NS32580 PIN DESCRIPTIONS Descriptions of the NS325BO pins are given in the following sections. Figure 4-1 shows the NS325BO interface signals grouped according to related functions. 4.1.1 Supplies VCCL 1-7 VCCBl-8 GNDLl-13 GNDBl-13 AADDO-AADD4 A Read Port Register AddressChooses the inputs to the A bus of the FPDP. ALU A Input Select-Controls the A inAAIN put multiplexers of the FPDP ALU. ALU B Input Select-Controls the BinABIN put multiplexers of the FPDP ALU. BADDO-BADD4 B Read Port Register AddressChooses the inputs to the B bus of the FPDP. CADDO-CADD4 C Write Port Register Address-C/O Bus Control. Chooses the destinations of C and D buses. These signals should be connected to both the (CADDO-CADD4) and the (DADDO-DADD4) lines of the FPDP. Logic Power- + 5V positive supplies for on-chip logic. Buffers Power-+5V positive supplies for on·chip buffers. Logic Ground-Ground references for on·chip logic. Buffers Ground-Ground references for on-chip buffers. 4.1.2 Input Signals BCLK Bus Clock-Input clock for CPU bus timing; NS32532 system clock. Bus Clock Inverse-Inverted input clock from NS32532. BS Byte Sex-Specifies the 110 byte ordering of the FPC. If connected to GND the FPC is in 32000 mode. If connected to Vee the FPC is in VME mode. The BS line must be valid during and after Reset. See Section 3.6.5. LMODE Latency Mode-Specifies the latency mode of the FPC-FPDP. If connected to GND the FPC-FPDP is in the "Two cycle latency", if connected to Vee the FPCFPDP is in the "Three cycle latency". LMODE line must be valid during and af· ter Reset. Reset-Active low. Resets the last operation, clears the FIFOs and the FSR register to its default state. SO-S3 FPDP Status-Indicates any exceptions or conditions that resulted from opera· tions performed by the WTL 3164 floating-point data path. Slave Processor Control-Active low. Data strobe for slave transfers between the CPU and the FPC. STO-ST4 CPU Status-Bus cycle status code from CPU. STO is the least significant and rightmost bit. 1 1 1 0 0 -Reserved 1 1 1 01 -Transferring Operand 1 1 1 1 0 -Reading Status Word 1 1 1 1 1 -Broadcasting Slave ID 4.1.3 Output Signals DIVCLK Divide/Square Root Clock-Clock signal for the Divide/Sqrt unit in the FPDP. EFDDO-EFDD4 E and/or F Port Register AddressChooses the source and destination for the Load/Store operations of the FPDP. FO-F4 Function Code-Specifies the operation to be performed by the FPDP. Forced Slave Status Read-Active low. When active, indicates that the slave status word should be read by the CPU. It is floating before and after being active. MAIN Multiplier A Input Select-Controls the A input multiplexers of the multiplier of the FPDP. Multiplier B Input Select-Controls the MBIN B input multiplexers of the multiplier of the FPDP. Slave Done-Active low. When active, indicates successful completion by the FPC-FPDP of a floating-point instruction. It is floating before and after being active. FPDP Abort-Aborts the current and WABORT previous instructions in the FPDP. FPDP Clock-Clock signal for the FPDP. WCLK It is BCLK divided by two. i.e., if BCLK is 30 MHz, WCLK will be 15 MHz. XCNTO-XCNT3 X Port Control-They are the Load/ Store controls for the FPDP. 4.1.4 Input/Output Signals 00-031 CPU Data Bus-Data bus between FPC and the CPU. XO-X31 FPDP Data Bus-Data bus between FPC and the FPDP X port. 3-151 N UI co oI N o Z (f) W N UI co oI N UI Z en w N UI co oI W o • or-----------------------------------------------------------~ ~ CD 4.0 Device Specifications (Continued) ~ Z ..... In ~ Connection Diagram R p CD N ~ M ~ z ~ L K CD J ~ ~ H z G r E D C B A @@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ NS32580 @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ D@@@@@@@@@@@@@ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Tl/EE/9421-31 Bottom View FIGURE 4-2. 172-Pln PGA Package Order Number NS32580-20. NS32580-25 or NS3258D-30 See NS Package Number U172B 3-152 z en w 4.0 Device Specifications (Continued) Dese VCCL1 GND91 GNDL1 XCNTO XCNT3 EFADD1 EFADD2 GNDL2 GND92 CADDO CADD2 CADD3 9ADDO GND93 GNDL3 XO XCNT1 XCNT2 EFADDO EFADD3 9CLK WCLK DIVCLK EFADD4 CADD1 CADD4 9ADD1 9ADD2 VCC91 X2 X1 VCCL2 D1 DO NC GNDL4 GND94 9CLK RST NC 9ADD3 AADDO 9ADD4 Note: NC ~ Pin A2 A3 A4 A5 A6 A7 AB A9 A10 A11 A12 A13 A14 91 92 93 94 95 96 97 9B 99 910 911 912 913 914 915 C1 C2 C3 C4 C5 C6 C7 CB C9 C10 C11 C12 C13 C14 C15 Dese X3 X4 NC D2 D17 D16 NC GNDL5 NC NC NC VCC92 D15 AADD1 AADD2 X5 X7 D1B D3 D31 D14 AADD3 AADD4 X6 X9 D19 VCCL3 D30 VCC93 MAIN M91N XB X10 D4 D20 D13 D29 AAIN A91N X11 X12 NC D5 I\) NS32580 Pinout Descriptions Pin Dese D1 D2B D2 GND95 D3 FO D4 F1 D5 X13 D6 X15 D7 GND96 DB D21 D9 D12 D10 D27 D11 F2 D12 F3 D13 X14 D14 X17 D15 D6 E1 D22 E2 D11 E3 NC E4 SO E12 F4 E13 X16 E14 X1B E15 D7 F1 D23 F2 SPC F3 SDN F4 S2 F12 S1 F13 X19 F14 Reserved F15 VCCL4 G1 DB G2 GNDB7 G3 D26 G4 GNDL6 G12 VCCB4 G13 NC G14 STO G15 ST1 H1 NC H2 GNDL7 H3 WABORT H4 S3 No Connection 3-153 U1 co Pin H12 H13 H14 H15 J1 J2 J3 J4 J12 J13 J14 J15 K1 K2 K3 K4 K12 K13 K14 K15 L1 L2 L3 L4 L12 L13 L14 L15 M1 M2 M3 M4 M5 M6 M7 MB M9 M10 M11 M12 M13 M14 M15 Dese VCCL5 GNDBB Reserved D24 D25 D9 D10 NC VCCB5 ST2 ST4 FSSR GNDB9 VCCB6 GNDLB GNDL9 VCCL6 X21 X23 X25 X26 X28 X31 X30 BS ST3 VCCB7 GNDB10 GNDL10 GNDB11 GNDB12 GNDL11 VCCL7 X20 X22 X24 X27 X29 LMODE GND913 GNDL12 VCC9B GNDL13 Pin N1 N2 N3 N4 N5 N6 N7 NB N9 N10 N11 N12 N13 N14 N15 P1 P2 P3 P4 P5 P6 P7 PB P9 P10 P11 P12 P13 P14 P15 R2 R3 R4 R5 R6 R7 RB R9 R10 R11 R12 R13 R14 o I I\) o ..... z en w I\) U1 co oI I\) U1 ..... z en w I\) U1 co o W o I oCO) oCO 4.0 Device Specifications (Continued) N 4.2 ABSOLUTE MAXIMUM RATINGS Power Dissipation (J) If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Temperature Under Bias O·Cto +70·C -65·C to + 150·C Storage Temperature ESD Rating is to be determined. Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. II) CO) Z ...... II) . N o CO II) N CO) (J) Z ...... o ~ o CO II) N CO) (J) Z All Input or Output Voltages with Respect to GND 1.5W -0.5Vto +7V 4.3 ELECTRICAL CHARACTERISTICS TA = O·Cto 70·C, Vee = 5V ±10%, GND = OV Max Units VIH Symbol High Level Input Voltage 2.0 Vee + 0.5 V VIL Low Level Input Voltage -0.5 0.8 V VOH High Level Output Voltage Parameter Conditions Min IOH = -400 p.A Typ V 2.4 0.4 V 300 mA VOL Low Level Output Voltage IOL = 2mA II Input Load Current 0:0: VIN:O: Vee IL Leakage Current (Output and I/O Pins in TRI-STATE®/Input Mode) 0.4 :0: VOUT :0: 2.4V Icc Active Supply Current lOUT = 0, TA = 25·C CIN Input Capacitance pF COUT Output Capacitance pF 4.4 SWITCHING CHARACTERISTICS ABBREVIATIONS L.E. - Leading Edge T.E. - Trailing Edge 4.4.1 Definitions All the Timing Specifications given in this section refer to 0.8V and 2.0V on all the input and output signals as illustrated in Figures 4.2 and 4.3, unless specifically stated otherwise. ClK [) ClK SlG2 O.SV [ [ ~K= [ o.sv 2.0V SlG1 ----2.4V SIG1 R.E. - Rising Edge F.E. - Falling Edge 1SIG11 I tSIG2h \ O.SV O.45V SIG2 2.4V j~ [ [ .w~ 2.0V I --2.4V 1SIG11 O.45V 2.4V tSlG2h -------O.45V TLlEE/9421-20 FIGURE 4-4. Timing Specification Standard (Signal Valid before Clock Edge) ---------O.45V Tl/EE/9421-19 FIGURE 4-3. Timing Specification Standard (Signal Valid after Clock Edge) 3-154 z en Co) 4.0 Device Specifications (Continued) ~ . UI 4.4.2 Timing Tables Maximum times assume temperature range O'C to 70'C OC) o ~ o ..... 4.4.2.1 Output Signal Propagation Delays Maximum times assume capacitive loading of 100 pF Symbol Figure Description Reference! Conditions NS32580·20 NS32580·25 NS32580·30 Min Min Min 35 tDv 4·8 CPU Data Valid After R.E., BCLK T2 tDoh 4·8 CPU Data Hold After R.E., BCLK Next T1 ITi Max Max 23 27 2 2 2 Units z en Co) ns UI Max ~ ns tDnf 4·8 CPU Data Not Floating After R.E., BCLK Next T1 ITi 28 23 19 ns tSDa 4·10 SDN Signal Active After R.E., BCLK 35 28 22 ns tSDia 4·10 SDN Signal Inactive After R.E., Next BCLK tSDnf 4·10 SDN Signal Not Floating After R.E., BCLK 25 20 17 ns tFSSRa 4·11 FSSR Signal Active After R.E., BCLK 35 28 22 ns tFSSRia 4·11 FSSR Signal Inactive After R.E., Next BCLK tFSSRnf 4·11 FSSR Signal Not Floating After R.E., BCLK 25 20 17 ns tCv 4·14 C Bus and WABORTValid After R.E., WCLK 83 63 50 ns tCh 4·14 CBUSand WABORT Hold Time After R.E., WCLK tXLv 4·14 FPDP Data Valid After R.E., WCLK tXLh 4·14 FPDP Data Hold Time After R.E., WCLK 2 2 2 ns tD2p 4·13 DCLK2 Period From 1.5V R.E., to 1.5V R.E. 50 40 33.3 ns tD2h 4·13 DCLK2 High Time From 1.5V R.E., to 1.5V F.E. 22 17 14.5 ns tD21 4·13 DCLK2 Low Time From 1.5V F.E. to 1.5V R.E. 22 17 14.5 ns tD3p 4·13 DCLK3 Period From 1.5V R.E., to 1.5V R.E. 100 80 66.6 ns tD3h 4·13 DCLK3 High Time From 1.5V R.E., to 1.5V F.E. 45 36 30 ns 2 2 2 2 2 ns 2 2 83 63 50 4·13 DCLK3 Low Time From 1.5V F.E., to 1.5V R.E. 45 36 30 ns 4·13 WCLKPeriod From 1.5V R.E., to 1.5V R.E. 100 80 66.6 ns tWCLKh 4·13 WCLK High Time From 1.5V R.E., to 1.5V F.E. 45 36 30 ns tWCLKI 4·13 WCLK Low Time From 1.5V F.E. to 1.5V R.E. 45 36 30 ns tDWd 4·13 DCLK2/DCLK3 to WCLKDelay From 1.5V R.E., to 1.5V R.E. tWr 4·13 FPDP Clock Rise Time From O.4V R.E., to 2.4V R.E. 2 tWf 4·13 FPDP Clock Fall Time From 2.4V F.E. to O.4V F.E. 2 2.5 8 ns 2 2 ns 2 2 ns 8 2.5 4.4.2.2 Input Signal Requirements NS32580-20, NS32580-25, NS32580-30 Symbol Figure Description Reference/ Conditions NS32580·20 NS32580·25 NS32580·30 Units Min Max Min Max Min Max 50 100 40 100 33.3 100 ns ns tBCp 4·5 BCLKPeriod tBCh 4·5 BCLK High Time At 2.0V on BCLK (Both Edges) 0.5tBCp -5 0.5tBCp -4 0.5tBCp -3 tBCI 4·5 BCLK Low Time At 0.8V on BCLK (Both Edges) 0.5 tBCp -5 0.5 tBCp -4 0.5tBCp -3 tBCr 4·5 BCLK Rise Time 0.8V to 2.0V on R.E., BCLK 5 4 3 tBCI 4·5 BCLK Fall Time 2.0V to 0.8V on F.E., BCLK 5 4 3 ns tNBCp 4·5 BCLKPeriod R.E., BCLK to Next R.E., BCLK 33.3 100 ns tNBCh 4·5 BCLK High Time At 2.0V on BCLK (Both Edges) 0.5tNBCp -3 120 ns R.E., BCLK to Next R.E., BLCK 3·155 50 0.5tNBCp -5 100 40 0.5 tNBCp -4 100 z en Co) ~ UI OC) o W o ns tD31 8 ~ ..... ns tWCLKp 2.5 o UI ns 2 2 . OC) • 4.0 Device Specifications (Continued) 4.4.2 Timing Tables Maximum times assume temperature range O°C to 70'C (Continued) 4.4.2.2 Input Signal Requirements NS32580-20, NS32580-25, NS32580-30 (Continued) Symbol Figure Referencel Conditions Description NS32580-25 NS32580-20 Min Max Min Max NS32580-30 Units Min Max 0.5tNBCp -3 120 ns tNBCI 4-5 BCLK Low Time At 0.8V on BCLK (Both Edges) 0.5tNBCp -5 tNBCr 4·5 BCLK Rise Time 0.8V to 2.0V on R.E., BCLK 5 4 3 ns tNBCI 4·5 BCLK Fall Time 2.0V to 0.8V on F.E., BCLK 5 4 3 ns tBCNBCrf 4·5 Bus Clock Skew 2.0Von R.E., BCLK to 0.8Von F.E., BCLK -2 +2 -2 +2 -1 +1 ns tBCNBCfr 4·5 Bus Clock Skew 0.8Von F.E., BCLK to 2.0V on R.E., BCLK -2 +2 -2 +2 -1 +1 ns tpWR 4·6 Power Stable to R.E. ofRST After Vcc Reaches 4.5V tRSTs 4·6,4·7 RST Setup Time 4·7 50 40 30 /Ls Before R.E., BCLK 14 12 11 ns At 0.8V (Both Edges) 64 64 64 tBCp tSTs 4·8,4·9 CPU Status Setup Time Before R.E., BCLK T2 36 30 24 24 ns tSTh 4·8,4·9 CPU Status Hold Time After R.E., BCLK T2 15 12 10 10 ns tsPCs 4·8,4·9 SPC Setup Time Before R.E., BCLK T2 30 23 20 20 ns tSPCh 4·8,4·9 SPC Hold Time After R.E., BCLK T2 0 tecp +15 0 tRSTw RST Pulse Width 0.5tNBCp -4 tecp +19 0 tos 4·9 Data Setup Time Before R.E., BCLK T2 tOh 4·9 Data Hold Time After R.E., BCLK Next T1 or Ti tSAs 4·12 FPDP ALU Status Setup Time Before R.E., WCLK tSAh 4·12 FPDP ALU Status Hold Time After R.E., WCLK tSMs 4·12 FPDP Multiplier Status Setup Time Before F.E., WCLK tSMh 4·12 FPDP Multiplier Status Hold Time After F.E., WCLK txSs 4·14 FPDP Data Setup Time Before R.E., WCLK tXSh 4·14 FPDP Data Hold Time After R.E., WCLK BCLK[~ 7 5 3 ns -4 -4 ns 9 9 8 ns 2 2 2 ns 9 9 8 ns 2 2 2 ns 9 9 9 ns 2 2 2 ns I BCI BCI -I - ~ fi IBCp --I _IBCNBCI, I~Cr ~INBCI _IBCr ~ _IBCNBCr! _INBC! INBCh~ BCLK[--1 L I NBCp TL/EE/9421-21 FIGURE 4-5. Clock Waveforms 3·156 ns -4 '--==\ ~~ I " " - IBC' tecp +12 ztJ) 4.0 Device Specifications (Continued) c.:I N UI co o N o ...... Z + ...... tJ) BCLK[,_ _ c.:I N . UI co o N UI TL/EE/9421-22 FIGURE 4-6_ Power-On Reset ...... Z tJ) c.:I N UI BCLK[~JLJUL J' RST[..-~\~S~S~~ tRSlW • 11 t tRSTS . co o .1 c.:I o r~---TL/EE/9421-23 FIGURE 4-7_ Non-Power-On Reset ANY T-STATE BCLK [ STO-ST4 [ SPC [ Tl T2 T1 OR n 00-031 [ TLlEE/9421-24 FIGURE 4-8. Read Cycle from FPC BCLK [ STO-ST4 [ SPC [ 00-031 [ TLlEE/9421-25 FIGURE 4-9. Write Cycle to FPC 3-157 • C) ~ iQ r---------------------------------------------------------------------------------, 4.0 Device Specifications (Continued) Cf) en z BCLK [ BCLK [ ~ SON [ rsSR [ ~f8 en z.... C) i TLlEE/9421-26 TL/EE/9421-27 FIGURE 4-10. Slave Processor Done Timing FIGURE 4·11. FSSR Signal Timing C'I ~ Z WCLK [ SO-53 [ TL/EE/9421-26 FIGURE 4-12. FPDP Status Signal Timing DCLK2 [ DCLK3 [ WCLK [ I.SV TLlEE/9421-29 FIGURE 4·13. FPDP Clock Signal Timing WCLK [ C, WABORT [ -.4.--.J{-il----J----- X(LOAO) [ X(STORE) [ TL/EE/9421-30 FIGURE 4·14. FPDP Output Signal Timing 3-158 z en c,) Appendix A I\) en COMPATIBILITY OF FPC·FPDP WITH NS32081/NS32381 NS32081 NS32381 NS32580 CQ o NS32081 INSTRUCTIONS NS32381 NS32580 NS32081 FSA + NS32081 FSA + RMB AMB AOE IVE DZE OVE IOE ROF IVF DZF OVF IOF z FSR NS32081 + NS32081+ DOTf POLYf SCALBf LOGBf MACf SOATf 8x64Bit 8x64 Bit ~ o ....... en c,) I\) en REGISTERS 8x32Bit RESERVED OPERANDS DNRM DNRM DNAM NaN NaN NaN can be enabled or Disable. Infinity Infinity Infinity is NOT a reserved operand. . CQ o I\) en ....... z en c,) I\) en CQ o ~ o AppendixB PERFORMANCE ANALYSIS The execution time is calculated from SPC (T1, T2 included) to SDN (including the SDN pulse) Latency reg, reg 2 cycles mode Latency reg, reg 3 cycles mode Throughput reg, reg 2 cycles mode ADDfll 13 13 SUBfll 13 13 MULf MUll 13 13 DIVf DIV1 Instruction Throughput reg, reg 3 cycles mode Pipe Break 2 2 No 2 2 No 13 15 2 2 2 4 No No 29 43 43 71 Upt029 Up to 43 Up to 43 Upto 71 No No No MOVflI 13 13 2 2 ABSfll 13 13 2 2 No NEGf/1 13 13 2 2 No CMPfll 13 + CPU 13 + CPU - Yes - LFSA 13 13 - - SFSA 13 + CPU 13 + CPU - - Yes MACf MACI 15 15 15 17 6 6 6 8 No No SORTf SORTI 41 69 65 123 Up to 41 Up to 69 Upt065 Up to 123 No No FLOOAfi 13 + CPU 13 + CPU TRUNCfi 13 + CPU 13 + CPU AOUNDfi 13 + CPU 13 + CPU MOVFL 13 + CPU 13 + CPU MOVLF 13 + CPU 13 + CPU MOVif MOVil 17 + CPU 13 + CPU 17 + CPU 13 + CPU - 3·159 Yes Yes Yes Yes Yes Yes Yes Yes • Appendix B (Continued) Add the following CPU cycles to the base (reg, reg) number of cycles for the different cases: Instruction Latency 2 Cycles Mode Latency 3 Cycles Mode Throughput 2 Cycles Mode 0 0+ CPU 0+ CPU - Throughput 3 Cycles Mode Pipe Break MONADIC FLOAT (One Operand) mem, reg reg, mem mem,mem 0 0+ CPU 0+ CPU 2 - 2 see reg, reg Yes Yes 2 see reg, reg Yes Yes - DYADIC FLOAT (Two Operands) mem, reg reg, mem mem,mem 0 0+ CPU 2 + CPU 0 0+ CPU 2 + CPU 2 - - MONADIC LONG (One Operand) mem, reg reg, mem mem,mem 2 2 + CPU 2 + CPU 4 4 2 2 + CPU 2 + CPU - 2 6 + CPU 6 + CPU 4 4 - - - see reg, reg Yes Yes DYADIC LONG (Two Operands) mem,reg reg,mem mem,mem 2 6 + CPU 6 + CPU Note: CPU stands for the time it takes the CPU to take the result from the FPC and resume operation. 3-160 - see reg, reg Yes Yes Section 4 Peripherals Section 4 Contents NS32C201-10, NS32C201-15 Timing Control Units..................................... NS32202-10 Interrupt Control Unit.. ... ..... ..... .... .. .... ....... ...... ...... ........ NS32203-10 Direct Memory Access Controller (DMAC) ................................. 4-2 4-3 4-25 4-50 ~National PRELIMINARY ~ Semiconductor C ....... z en Co) • 4-bit input (WAITn) allowing precise specification of 0 to 15 wait states • Cycle Hold for system arbitration and/or memory refresh • System timing (FCLK, CTTL) and control (RD, WR, and DBE) outputs • General purpose Timing State Output (TSO) that identifies internal states • Peripheral cycle to accommodate slower MOS peripherals • Provides "ready" (ROY) output for the Series 32000 CPUs • Synchronous system reset generation from Schmitt trigger input • Phase synchronization to a reference signal • High-speed CMOS technology • TTL compatible inputs • Single 5V power supply • 24-pin dual-in-line package General Description The NS32C201 Timing Control Unit (TCU) is a 24-pin device fabricated using National's microCMOS technology. It provides a two-phase clock, system control logic and cycle extension logic for the Series 32000@ microprocessor family. The TCU input clock can be provided by either a crystal or an external clock signal whose frequency is twice the system clock frequency. In addition to the two-phase clock for the CPU and MMU (PHI1 and PHI2), it also provides two system clocks for general use within the system (FCLK and CTTL). FCLK is a fast clock whose frequency is the same as the input clock, while CTTL is a replica of PHI1 clock. The system control logic and cycle extension logic make the TCU very attractive by providing extremely accurate bus control signals, and allowing extensive control over the bus cycle timing. Features • Oscillator at twice the CPU clock frequency • 2 phase full Vee swing clock drivers (PHI1 and PHI2) Block Diagram XIN XOUT FCLK PHI2 PHil Wt:::=------.......;;;.;.;===~D--- CTTL liSTe T·STATE COUNTER & LOGIC ADS ----~-4_~ RDY --------1 --------1 WAIU --------1 WAIT2 --------1 twAIT WAlTa WAIT1 -------1 o N ........• c NS32C201-10/NS32C201-15 Timing Control Units DOIN PER z en Co) N WAIT WAIT STATE COUNTER & LOGIC TLlEE/8524-1 4-3 N o N C .... ....• (II II) ..-• Table of Contents C) N U N 1.0 FUNCTIONAL DESCRIPTION 2.0 DEVICE SPECIFICATIONS C') 1.1 Power and Grounding Z ..... 1.2 Crystal Oscillator Characteristics C) 1.3 Clocks 2.1.2 Input Signals .C) 1.4 Resetting 2.1.3 Output Signals tn . .N 1.5 Synchronizing Two or More TCUs N 1.6 Bus Cycles tn 1.7 Bus Cycle Extension U C') Z 2.1 Pin Descriptions 2.1.1 Supplies 2.2 Absolute Maximum Ratings 2.3 Electrical Characteristics 2.4 Switching Characteristics 1.7.1 Normal Wait States 2.4.1 Definitions 1.7.2 Peripheral Cycle 2.4.2 Output Loading 1.7.3 Cycle Hold 2.4.3 Timing Tables 1.8 Bus Cycle Extension Combinations 2.4.4 Timing Diagrams 1.9 Overriding WAIT Wait States List of Illustrations Crystal Connection .............................................................................................1·1 PHil and PHI2 Clock Signals .................................................................................... 1·2 Recommended Reset Connections (Non Memory·Managed System) ................................................ 1·3a Recommended Reset Connections (Memory· Managed System) .................................................... 1·3b Slave TCU does not use RWEN during Normal Operation .......................................................... 1·4a Slave TCU Uses Both SYNC and RWEN ......................................................................... 1·4b Synchronizing Two TCUs ....................................................................................... 1·5 Synchronizing One TCU to an External Pulse ...................................................................... 1·6 Basic TCU Cycle (Fast Cycle) .................................................................................... 1·7 Wait State Insertion Using CWAIT (Fast Cycle) ..................................................................... 1·8 Wait State Insertion Using WAITn (Fast Cycle) ..................................................................... 1·9 Peripheral Cycle ..............................................................................................1·10 Cycle Hold Timing Diagram ..................................................................................... 1·11 Fast Cycle with 12 Wait States .................................................................................. 1·12 Peripheral Cycle with Six Wait States ............................................................................ 1·13 Cycle Hold with Three Wait States ............................................................................... 1·14 Cycle Hold of a Peripheral Cycle ................................................................................ 1·15 Overriding WAITn Wait States .................................................................................. 1·16 Connection Diagram ............................................................................................2·1 Clock Signals (a) ...............................................................................................2·2 Clock Signals (b) ...............................................................................................2·3 Control Inputs .................................................................................................2·4 Control Outputs (Fast Cycle) ..................................................................................... 2·5 Control Outputs (Peripheral Cycle) ............................................................................... 2·6 Control Outputs (TRI·STATE Timing) ............................................................................. 2·7 Cycle Hold .........................................................•..........................................2·8 Wait States (Fast Cycle) ........................................................................................2·9 Wait States (Peripheral Cycle) .................................................................................. 2·10 Synchronization Timing ........................................................................................2·11 4·4 z (J) 1.0 Functional Description (0) ~ 1.1 POWER AND GROUNDING The NS32C201 requires a single +5V power supply, applied to pin 24 (Vecl. See Electrical Characteristics. The Logic Ground on pin 12 (GND), is the common pin for the TCU. 1.3 CLOCKS The NS32C201 TCU has four clock output pins. The PHI1 and PHI2 clocks are required by the Series 32000 CPUs. These clocks are non-overlapping as shown in Figure 1-2. Z o ~ PHI1 . o.... .... en The NS32C201 has an internal oscillator that requires connections of the crystal and bias components to XIN and XOUT as shown in Figure 1-1. It is important that the crystal and the RC components be mounted in close proximity to the XIN, XOUT and Vee pins to keep printed circuit trace lengths to an absolute minimum. Typical Crystal Specifications: PHI2 TLfEEf8524-4 Type ........................................... At-Cut Tolerance .............................. 0.005% at 25·C FIGURE 1.2. PHI1 and PHI2 Clock Signals Each rising edge of PHI1 defines a transition in the timing state of the CPU. As the TCU generates the various clock signals with very short transition timings, it is recommended that the conductors carrying PHI1 and PHI2 be kept as short as possible. It is also recommended that only the Series 32000 CPU and, if used, the MMU (Memory Management Unit) be connected to the PHI1 and PHI2 clocks. Stability .......................... 0.01 % from o· to 70·C Resonance ...................... Fundamental (parallel) Capacitance .................................... 20 pF Maximum Series Resistance ........................ 50n 30pF XOUT (141 l00kOc::J XIN (13) TLfEEf8524-3 CRYSTAL FREQUENCY (MHz) R (OHM) 6-12 12-18 18-24 24-30 470 220 100 47 ..... (0) ~ 1.2 CRYSTAL OSCILLATOR CHARACTERISTICS 1800 o .... ....o• (J) A 0.1 ,..F, ceramic decoupling capacitor must be connected across Vee and GND, as close to the TCU as possible. l~c o ~ CTTL is a clock signal which runs at the same frequency as PHI1 and is closely balanced with it. FCLK is a clock, running at the frequency of XIN input. This clock has a frequency that is twice the CTTL clock frequency. The exact phase relationship between PHI1, PHI2, CTTL and FLCK can be found in Section 2. FIGURE 1-1. Crystal Connection Diagram Vee NS32C201 NS32C018 CPU TCU r-------------, I I I I i RESET l>--l:-+-~_+-_+~+----I RsTi RsTii I-----.,r------l RSr/ABT !L _____________ .J: EXTERNAL ReSET (OPTIONAL) 2: III SOp5eC RESET SWITCH SYSTEM RESET (OPTIONAL) TLfEEf8524-5 FIGURE 1-3a. Recommended Reset Connections (Non Memory-Managed System) Vee NS32C201 TCU r-------------, I : RESET 1>-+1---!:-~_+-_+..",......- - - _ l I NS32082 MMU NS32CoI6 epu I RsTi RsTo !L _____________ .JI EXTERNAL RESET ~ (OPTIONAL) SO,...sec RESET SWITeH (OPTIONAL) TLfEEf8S24-6 FIGURE 1-3b. Recommended Reset Connections (Memory-Managed System) 4-5 .... • .... o II) C'\I ~ en z ;:; .... ....• ~ C'\I ~ Z 1.0 Functional Description (Continued) 1.4 RESETTING RWEN/SYNC input to the slave TCU(s) is used for synchronization. The Slave TCU samples the RWEN/SYNC input on the rising edge of XIN. When RSTO is low and CTTL is high (see Figure 1-5), if RWEN/SYNC is sampled high, the phase of CTTL of the Slave TCU is shifted by one XIN clock cycle . The NS32C201 TCU provides circuitry to meet the reset requirements of the Series 32000 CPUs. If the Reset Input line, RSTI is pulled low, the TCU asserts RSTO which resets the Series 32000 CPU. This Reset Output may also be used as a system reset signal. Figure 1-3a illustrates the reset connections for a non Memory-Managed system. Figure 1-3b illustrates the reset connections for a Memory-Managed system. Two possible circuits for TCU synchronization are illustrated in Figures 1-48 and 1-4b. It should be noted that when RWEN/SYNC is high, the RD and WR signals will be TRISTATE on the slave TCU. 1.5 SYNCHRONIZING TWO OR MORE TCUs Note: RWEN/SYNC should not be kept constantly high during reset, other- During reset, (when RSTO is low), one or more TCUs can be synchronized with a reference (Master) TCU. The wise the clock will be stopped and the device will not exit reset when RSTI is deasserted. RWERISYNC (Mull Be Low DuringROMII TUEE/8524-7 FIGURE 1·4a. Slave TCU Does Not Use RWEN During Normal Operation R"WENISYNC (MuotBeLow DurlngROMII +-....................+--.r-~ RWEN>-.... TL/EE/8524-8 FIGURE 1·4b. Slave TCU Uses Both SYNC and RWEN Note: When two or more Teus are to be synchronized, the XIN of all the reus should be connected to an external clock source. For details on the external clock, see Switching Specifications In Section 2. XIN CITL(s) \ RWEN/SYNC I I I I I I PHASE CHANGE. t + I \ I \ \ RSTl~ \ I I '-- \~-----------------------FIGURE 1·5. Synchronizing Two TCUs 4-6 TL/EE/8524-9 z (J) W 1.0 Functional Description (Continued) N o N RSTO~LO~W~------------------------------------------------------------------------ . C ..... ..... ..... C XIN Z (J) W N \~------------------CTTL(S)~ \'--_--11 RWEN/SYNC _ _ _...J/ TUEE/8524-10 FIGURE 1-6. Synchronizing One TCU to An External Pulse In addition to synchronizing two or more TCUs, the RWENI SYNC input can be used to "fix" the phase of one TCU to an external pulse. The pulse to be used must be high for only one rising edge of XIN. Independent of CTTL's state at the XIN rising edge, the CTTL state following the XIN rising edge will be high. Figure 1-6 shows the timing of this sequence. ated. In addition to RD and WR, other signals are provided: DBE and TSO. DBE is used to enable data buffers. The leading edge of DBE is delayed a half clock period during Read cycles to avoid bus conflicts between data buffers and either the CPU or the MMU. This is shown in Figure 1-7. The Timing State Output (TSO) is a general purpose signal that may be used by external logic for synchronizing to a System cycle. TSO is activated at the beginning of state T2 and returns to the high level at the beginning of state T4 of the CPU cycle. TSO can be used to gate the CWAIT signal when continuous waits are required. Another application of TSO is the control of interface circuitry for dynamic RAMs. 1.6 BUS CYCLES In addition to providing all the necessary clock signals, the NS32C201 TCU provides bus control signals to the system. The TCU senses the ADS signal from the CPU or MMU to start a bus cycle. The DDIN input signal is also sampled to determine whether a Read or Write cycle is to be generCPU STATES TeU STATES 11 11 T2 T2 T3 T3 T4 T4 Notes: PHil 1. The CPU and TCU view some tim· ing states (T·states) differently. For clarity, references to T-states will sometimes be followed by (TCU) or (CPU). (CPU) also implies (MMU). ADS 2. Arrows indicate when the TCU samples the input. 3. RWEN is assumed low (RD and WR enabled) unless specified differently. TSO 4. For clarily, T-states for both the TeU and CPU are shown above the diagrams. (See Note 1.) ODIN Viii iiii OBE ROY HIGH TL/EE/8524-11 FIGURE 1-7. Basic TCU Cycle (Fast Cycle) 4-7 o N C ..... .....• U1 ........• ~.-----------------------------------------------------~ ~ CO) en z C; ....• .... o ('II ~ CO) 1.0 Functional Description (Continued) 1.7 BUS CYCLE EXTENSION There are three basic cycle extension modes provided by the TCU, as described below. The NS32C201 TCU uses the Wait input signals to extend normal bus cycles. A normal bus cycle consists of four PHI1 clock cycles. Whenever one or more Wait inputs to the TCU are activated, a bus cycle is extended by at least one PHI1 clock cycle. The purpose is to allow the CPU to access slow memories or peripherals. The TCU responds to the Wait signals by pulling the ROY signal low as long as Wait States are to be inserted in the Bus cycle. 1.7.1 Normal Wait States This is a normal Wait State insertion mode. It is initiated by pulling CWAIT or any of the WAITn lines low in the middle of T2. Figure 1-8 shows the timing diagram of a bus cycle when CWAIT is sampled high at the end of T1 and low in the middle of T2. en z CPU STATES T1 T2 T3.. ....... T3 T3 T4 TCU STATES T1 T2 TCW ..... TCW T3 T4 PHI1 TL/EE/8524-12 FIGURE 1·8. Wait State Insertion Using CWAIT (Fast Cycle) 4-8 1.0 Functional Description z en Co) (Continued) N CWAIT is high during the entire bus cycle, then the ROY line goes low for 1 to 15 clock cycles, depending on the binary weighted value of WAITn. If, for example, WAIT1 and WAIT4 are sampled low, then five wait states will be inserted. This is shown in Figure 1-9. The ROY signal goes low during T2 and remains low until CWAIT is sampled high by the TCU. ROY is pulled high by the TCU during the same PHI1 cycle in which the CWAIT line is sampled high. If any of the WAITn signals are sampled low during T2 and CPU STATES T1 T2 T3 TCU STATES T1 T2 TW1 T3 .......... T3 TW2. ••• TWn T3 T4 T3 T4 o N ........• c C ...... z en Co) N o N ....C• .... (II PHI1 • TL/EE/8524-13 FIGURE 1-9. Wait State Insertion Using WAITn (Fast Cycle) 4-9 ....• ~r-----------------------------------------------------------------------' ~ ~ ~ z C; . .... .... ~ C) 1.0 Functional Description (Continued) WR signals are also re-shaped so the setup and hold times for address and data will be increased. 1.7.2 Peripheral Cycle This cycle is entered when the PER signal line is sampled low at the beginning of T2. The TCU adds five wait states identified as TDO-TD4 into a normal bus cycle. The RD and CPU STATES TCU STATES This may be necessary when slower peripherals must be accessed. Figure 1-10 shows the timing diagram of a peripheral cycle• T1 T2 T3 T3 T3 T3 T3 T3 T4 T1 T2 TOO T01 T02 T03 T04 T3 T4 Cf) U) z PHI1 AOS TSii iiiiiN -.... WR iiii OlE PER ROY TL/EE/8524-14 FIGURE 1-10. Peripheral Cycle 4-10 z 1.0 Functional Description en w (Continued) I\) 1.7.3 Cycle Hold pulled low, thus causing wait states to be inserted into the bus cycle. The cycle hold feature can be used in applications involving dynamic RAMs. A timing diagram showing the cycle hold feature is shown in Figure 1-11. If the CWAIT input is sampled low at the end of state T1, the TCU will go into cycle hold mode and stay in this mode for as long as CWAIT is kept low. During this mode the control signals RD, WR, T50 and DBE are kept inactive; ROY is CPU STATES T1 T2 o Q ..... ....., I\) Q ....... Z T3 f3 T3 en w I\) T4 o I\) Q ..... , ..... U1 TLlEE/8524-15 FIGURE 1·11. Cycle Hold Timing Diagram input signal PER is sampled to determine whether a peripheral cycle is requested. 1.8 BUS CYCLE EXTENSION COMBINATIONS Any combination of the TCU input signals used for extending a bus cycle can be activated at one time. The TCU will honor all of the requests according to a certain priority scheme. A cycle hold request is assigned top priority. It follows a peripheral cycle request, and then CWAIT and WAITn respectively. If, for example, all the input signals CWAIT, PER and WAITn are asserted at the beginning of the cycle, the TCU will enter the cycle hold mode. As soon as CWAIT goes high, the Next, the TCU samples CWAIT again and WAITn to check whether additional wait states have to be inserted into the bus cycle. This sampling point depends on whether PER was sampled high or low. If PER was sarapled high, then the sampling point will be in the middle of the TCU state T2, (Figure 1-14), otherwise it will occur three clock cycles later (Figure 1-15). Figures 1-12 to 1-15 show the timing diagrams for different combinations of cycle extensions. 4-11 ........• 0 II) 1.0 Functional Description (Continued) IN 0 IN CPU STATES (I) TeU STATES T1 T2 T3 11112 15,0 10102 10,0 CO) Z ..... 0 ........• T3 T3 ......... T3 T3 T4 PHil 0 IN 0 IN CO) (I) ADS Z TSO WR iW DBE PER eWAIT WAIT1 WAIT2 WAIT4 WAIT8 WAITn value sampled ROY TLlEE/8524-16 FIGURE 1-12. Fast Cycle With 12 Walt States (2 CWAIT and WAIT10) (Read Cycle) 4-12 r-----------------------------------------------------------------------,z 1.0 Functional Description (Continued) en Co) o ~ o ..... ~ CPU STATES T1 T2 T3 T3 T3 T3 T3 ........ T3 T3 T3 T3 TCU STATES T1 T2 TOO T01 T02 TCW TW1 .... TW5 T03 T04 T3 ..... I o ....... Z en Co) PHI1 ~ o o ..... ..... ~ I CTI HIGH lOW HIGH lOW HIGH WAIfR value sampled ROY TL/EE/8524-17 FIGURE 1·13. Peripheral Cycle with Six Walt States (1 CWAIT and WAIT5) (Write Cycle) 4-13 . .,... .,... It) <:) 1.0 Functional Description (Continued) C'II 0 C'II CPU STATES Tt T2 T3 T3 T3 T3 T3 T3 T4 (/) TCU STATES 11 TH TH T2 TCW TW1 TW2 T3 T4 CO) Z ....... . <:) .,... .,... PHil <:) C'II 0 C'II CO) ADS (/) Z TSO WR iiii DBE PER CWAIT WAiTt HIGH WAIT2 LOW WAIT4 HIGH WAIT8 HIGH WAlTn ROY TL/EE/8524-18 FIGURE 1-14. Cycle Hold with Three Wait States (1 CWAIT and WAIT2) (Read Cycle) 4-14 1.0 Functional Description CPU STATES T1 T2 lCU STATES T1 TH •• (Continued) T3 T3 T3 T3 13 T3 T3 13 T4 • TH T2 TOO T01 T02 T03 104 T3 T4 z ~ N o N ..... .....• <:) <:) ....... z en (,,) N oN <:) ..... .....• U1 TL/EE/8524-19 FIGURE 1-15. Cycle Hold of a Peripheral Cycle 1.9 OVERRIDING WAITn WAIT STATES minate a bus cycle, for example, CWAIT must be asserted for at least one clock cycle, and the WAITn inputs must be forced to their inactive state. The TCU handles the WAITn Wait States by means of an internal counter that is reloaded with the binary value corresponding to the state of the WAITn inputs each time CWAIT is sampled low, and is decremented when CWAIT is high. At least one wait state is always inserted when using this procedure as a result of CWAIT being sampled low. Figure 1-16 shows the timing diagram of a prematurely terminated bus cycle where eleven wait states were being inserted. This allows to either extend a bus cycle of a predefined number of clock cycles, or prematurely terminate it. To ter- 4-15 ....• r-----------------------------------------------------------------------------, .... 1.0 Functional Description (Continued) ~ ~ o ~ tn Z ...... Q ....• .... CPU STATES T1 T2 T3 T3 T3 T3 T3 T4 lCU STATES T1 T2 TW1 TW2 Twa TCW T3 T4 PHI1 Q 3 C'II C") tn Z iiii WAITn value sampled 00002 ROY TL/EE/8524-20 FIGURE 1-16. Overriding WAITn Wait States (Write Cycle) 4-16 z en Co) 2.0 Device Specifications I\) 2.1.3 Output' Signals 2.1 PIN DESCRIPTIONS The following is a description of all NS32C201 pins. The descriptions reference portions of the Functional Description. Section 1. Reset Output (RSTO): Active low. This signal becomes active when RSTI is low, initiating a system reset. RSTO goes high on the first rising edge of PHI1 after RSTI goes high. Section 1.4. Read Strobe (RD): (TRI-STATE) Active low. Identifies a Read cycle. It is decoded from DDIN and TRI-STATE by RWEN/SYNC. Section 1.6. Write Strobe (WR): (TRI-STATE) Active low. Identifies a Write cycle. It is decoded from DDIN and TRI-STATE by RWEN/SYNC. Section 1.6. 2.1.1 Supplies Power (VCc>: +5V positive supply. Section 1.1. Ground (GND): Power supply return. Section 1.1. 2.1.2 Input Signals Reset Input (RSTI): Active low. Schmitt triggered, asynchronous signal used to generate a system reset. Section 1.4. Note: RD and WR are mutually exclusive in any cycle. Hence they are never low at the same time. Address Strobe (ADS): Active low. Identifies the first timing state (Tl) of a bus cycle. Data Direction Input (ODIN): Active low. Indicates the direction of the data transfer during a bus cycle. Implies a Read when low and a Write when high. Data Buffer Enable (DBE): Active low. This signal is used to control the data bus buffers. It is low when the data buffers are to be enabled. Section 1.6. Timing State Output (TSO): Active low. The falling edge of TSO signals the beginning of state T2 of a bus cycle. The rising edge of TSO signals the beginning of state T4. Section 1.6. Ready (ROY): Active high. This signal will go low and remain low as long as wait states are to be inserted in a bus cycle. It is normally connected to the RDY input of the CPU. Section 1.7. Fast Clock (FCLK): This is a clock running at the same frequency as the crystal or the external source. Its frequency is twice that of the CPU clocks. Section 1.3. CPU Clocks (PHI1 and PHI2): These outputs provide the Series 32000 CPU with two phase, non-overlapping clock signals. Their frequency is half that of the crystal or external source. Section 1.3. System Clock (CTIL): This is a system version of the PHil clock. Hence, it operates at the CPU clock frequency. Section 1.3. Crystal Output (XOUn: This line is used as the return path for the crystal (if used). It must be left open when an external clock source is used to drive XIN. Section 1.2. Note: In Rev. A of the NS32C201 this signal is CMOS compatible. In later revisions it is TTL compatible. Read/Write Enable and Synchronization (RWEN/ SYNC): TRI-STATE® the RD and the WR outputs when high and enables them when low. Also used to synchronize the phase of the TCU clock signals, when two or more TCUs are used. Section 1.5. Crystal or External Clock Source (XIN): Input from a crystal or an external clock source. Section 1.3. Continuous Walt (CWAIT): Active low. Initiates a continuous wait if sampled low in the middle of T2 during a Fast cycle, or in the middle of TD2, during a peripheral cycle. If CWAIT is low at the end of Tl, it initiates a Cycle Hold. Section 1.7.1. Four-Bit Walt State Inputs (WAIT1, WAIT2, WAIT4 and WAITS): Active low. These inputs, (collectively called WAITn), allow from zero to fifteen wait states to be specified. They are binary weighted. Section 1.7.1. Peripheral Cycle (PER): Active low. If active, causes the TCU to insert five wait states into a normal bus cycle. It also causes the Read and Write signals to be re-shaped to meet the setup and hold timing requirement of slower MOS peripherals. Section 1.7.2. 4-17 o I\) o ..... ..... I o ...... z en Co) I\) o o ..... ..... en I\) I . ....Ln .... (:) C'I Co) C'I ~ Z ..... 2.0 Device Specifications (Continued) 2.2 ABSOLUTE MAXIMUM RATINGS (Note 1) .... ....• Supply Voltage 7V Input Voltages -0.5V to Vee + 0.5V C'I Output Voltages -0.5VtoVee + 0.5V (:) (:) ~ C') o z Note: Absolute maximum ratings indicate limits beyond which permament damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications• Storage Temperature -65'C to + 150'C Lead Temperature (Soldering, 10 sec.) 300'C Continous Power Dissipation 1W 2.3 ELECTRICAL CHARACTERISTICS T A = -40'C to + 85'C, Vee = 5V ± 5%, GND = OV Symbol Parameter Conditions Min Typ Max Units 0.8 V VIL Input Low Voltage All Inputs Except RSTI & XIN VIH Input High Voltage All Inputs Except RSTI & XIN 2.0 VT+ RSTI Rising Threshold Voltage Vee = 5.0V 2.5 3.5 V VHYS RSTI Hysteresis Voltage Vee = 5.0V 0.8 1.9 V VXL XIN Input Low Voltage 0.20 Vee V VXH XIN Input High Voltage IlL Input Low Current VIN = OV -10 p.A 10 p.A 0.10 Vee V IIH VOL VOH IL Input High Current VIN = Vee PHI1 & PHI2, I = 1 mA All Other Oujputs Except XOUT, I = 2 mA Output High Voltage All Outputs Except XOUT, 1= -1 mA Leakage Current on RD/WR 0.4V = 5V and TA V 0.80 Vee Output Low Voltage Supply Current Icc Note 1: All typical values are for Vce V = V 0.90 Vee s: VIN s: Vee -20 100 fxin = 20 MHz 25'C. Connection Diagram Dual-In-Llne Package ~ I-Vcc Iii£RWEN/SYNC - 2 1ID-3 Wii-4 DDIN- 5 23I-PEii 22 i-CWAiT 211-WAITI 2D I-WAlT2 ADS-I NS32C201 19 I-WAIT4 ICU RITi- 7 18i-WAm RITD- 8 17 I-TSO ROY- 9 161--Cm PHI2- 10 151-FCLK PHll- 11 141-XOUT 13 i-XIN 0"0- 12 TL/EE/8524-2 Top View Order Number NS32C201li or NS32C201N See NS Package Number D24C or N24A FIGURE 2.1 4-18 +20 p.A 120 mA z en Co) 2.0 Device Specifications (Continued) N oN 2.4 SWITCHING CHARACTERISTICS 2.4.2 Output Loading 2.4.1 Definitions Capacitive loading on output pins for the NS32C201. All the timing specifications given in this section refer to 2.0V on the rising or falling edges of the clock phases PHil and PHI2; to 15% or B5% of Vcc on all the CMOS output signals, and to O.BV or 2.0V on all the TTL input signals, unless specifically stated otherwise. ROY, DBE, TSO ................................. 50 pF C) RD,WR ........................................ 75pF CTTL ..................................... 50+100pF FCLK ......................................... 100pF PHil, PHI2 ..................................... 170 pF R.E.-Rising Edge F.E.-Falling Edge 2.4.3 Timing Tables Reference/Conditions NS32C20 1-15 NS32C201-10 Min Max Min Units Max CLOCK-SIGNALS (XIN, FCLK, PHil & PHI2) TIMING tcp 2.2 Clock Period PHil R.E. to Next PHil R.E. tClh 2.2 Clock High Time At 90% Vcc on PHil (Both Edges) 0.5 tep -15ns 0.5tcp -7ns 0.5tcp -IOns 0.5 tep -3ns tell 2.2 Clock Low Time At 15% Vcc on PHil 0.5tep -5ns 0.5tep +10ns 0.5tCp -5ns 0.5tep +6ns tClw(1,2) 2.2 Clock Pulse Width At 2.0V on PHil, PHI2 (Both Edges) 0.5tcp -IOns 0.5tcp -4ns 0.5tcp -6ns 0.5tcp -4ns PHil, PHI2 Asymmetry (telw (1) - telw (2» At 2.0V on PHil, PHI2 -5 5 -3 3 ns tClwas 100 66 ns tClR 2.2 Clock Rise Time 15% to 90% Vcc on PHil R.E. 8 6 ns tClF 2.2 Clock Fall Time 90% to 15% VCC on PHil F.E. B 6 ns tnOVl(1,2) 2.2 Clock Non·Overlap Time At 15% Vcc on PHil, PHI2 -2 +2 -2 +2 ns Non·Overlap Asymmetry (tnOVl (1) - InOVl (2» At 15% Vcc on PHil, PHI2 -4 4 -3 3 ns tnOVLas tXh 2.2 XIN High Time (External Input) At BO% Vee on XIN (Both Edges) 16 10 ns tXI 2.2 XIN Low Time (External Input) At 15% Vccon XIN (Both Edges) 16 10 ns tXFr 2.2 XIN to FCLK R.E. Delay BO% Vcc on XIN R.E. to FCLK R.E. 6 29 6 25 ns tXFf 2.2 XIN to FCLK F.E. Delay 15% Vee on XIN F.E. to FCLKF.E. 6 29 6 25 ns txcr 2.2 XIN to CTTL R.E. Delay BO% Vcc on XIN R.E. to CTTLR.E. 6 34 6 25 ns tXPr 2.2 XIN to PHil R.E. Delay BO% Vee on XIN R.E. to PHil R.E. 6 32 6 25 ns tFCr 2.2 FCLK to CTTL R.E. Delay FCLK R.E. to CTTL R.E. 0 6 0 6 ns tFCf 2.2 FCLK to CTTL F.E. Delay FCLK R.E. to CTTL F.E. -3 4 -3 4 ns tFPr 2.3 FCLK to PHil R.E. Delay FCLK R.E. to PHil R.E. -3 4 -3 4 ns tFPf 2.3 FCLK to PHil F.E. Delay FCLK R.E. to PHil F.E. -5 2 -5 2 ns tFw 2.3 FCLK Pulse Width with Crystal At 50% Vcc on FCLK (Both Edges) 0.25tCp -5ns 0.25 tep +5ns 0.25tCp -5ns 0.25 tcp +5ns tpCf 2.3 PHI2 R.E.to CTTL F.E. Delay PHI2 R.E. to CTTL F.E. -3 4 -3 3 tcrw 2.3 CTTL Pulse Width At 50% Vcc on CTTL (Both Edges) 0.5tep -7ns 0.5tcp +1 ns 0.5 tep -5ns 0.5tCp +1 ns Note 1: Ixc., IFCr, IFCf. IpCf. IcTh are measured wHh 100 pF load on CTTL Note 2: PHI1 and PHI2 are interchangeable for the following parameters: tcp. tcLh. tcu. tCLw. telR, tcLF. tnOVL. tXPr. tFPr. tFPf. 4-19 en Co) N o N CJ1 T.E.-Trailing Edge Description C) C) L.E.-Leading Edge Figure ..... z .... ....• ABBREVIATIONS Symbol . .... .... ns ........• ~ ." Q ~ z ...... Q .,.. ....• 2.0 Device Specifications (Continued) 2.4.3 Timing Tables (Continued) Symbol C') f/) z Description Reference/Conditions NS32C201-10 NS32C201-15 Min Max Min Max -2 5 -2 3 ns Units CTTL TIMING (CL = 50 pF) tpcr 2.3 PHI1 to CTTL R.E. Delay PHI1 R.E. to CTTL R.E. tcrR 2.3 CTTL Rise Time 10% to 90% Vcc on CTTLR.E. 7 6 ns tCTF 2.3 CTTL Fall Time 90% to 10% Vee on CTTLF.E. 7 6 ns 4 ns Q ~ Figure CTTL TIMING (CL = 100 pF) -2 -2 tpcr 2.3 PHI1 to CTTL R.E. Delay PHI1 R.E. to CTTL R.E. tCTR 2.3 CTTL Rise Time 10% to 90% Vcc on CTTLR.E. 8 7 ns tcrF 2.3 CTTL Fall Time 90% to 10% Vee on CTTLF.E. 8 7 ns 6 CONTROL INPUTS (RST1, ADS, ODIN) TIMING tRSTs 2.4 RSTI Setup Time Before PHI1 R.E. 20 15 tAOs 2.4 ADS Setup Time Before PHI1 R.E. 25 20 ns tADw 2.4 ADS Pulse Width ADS L.E. to ADS T.E. 25 20 ns toos 2.4 DDIN Setup Time Before PHI1 R.E. 15 13 ns CONTROL OUTPUTS (RSTO, TSO, RD, WR, DBE 8& RWEN/SYNC) TIMING tRSTr 2.4 RSTO R.E. Delay After PHI1 R.E. 21 10 ns tTl 2.5 TSO L.E. Delay After PHI1 R.E. 12 8 ns tTr 2.5 TSO T.E. Delay After PHI1 R.E. 10 ns tRWI(F) 2.5 RD/WR L.E. Delay (Fast Cycle) After PHI1 R.E. 30 21 ns tRWI(S) 2.6 RD/WR L.E. Delay (Peripheral Cycle) After PHil R.E. 25 15 ns tRWr 2.5/6 RD/WR T.E. Delay After PHI1 R.E. tOBI(W) 2.5/6 DBE L.E. Delay (Write Cycle) After PHI1 R.E. 25 tOBI(R) 2.5/6 DBE L.E. Delay (Read Cycle) After PHI2 R.E. tOBr 2.5/6 DBE T.E. Delay After PHI2 R.E. IpLZ 2.7 RD,WR Low Level to TRI-STATE tpHZ 2.7 IpZL tpZH 3 3 18 20 3 3 15 ns 15 ns 20 11 ns 20 15 ns After RWEN/SYNC R.E. 25 20 ns RD,WR High Level to TRI·STATE After RWEN/SYNC R.E. 20 15 ns 2.7 RD,WR TRI-STATE to Low Level After RWEN/SYNC F.E. 25 18 ns 2.7 RD,WR TRI-STATE to High Level After RWEN/SYNC F.E. 25 18 ns WAIT STATES 8& CYCLE HOLD (CWAIT, WAITn, PER 8& ROY) TIMING tCWs(H) 2.8 CWAIT Setup Time (Cycle Hold) Before PHil R.E. 30 20 ns leWh(H) 2.8 CWAIT Hold Time (Cycle Hold) After PHil R.E. 0 0 ns tCWs(W) 2.8/9 CWAIT Setup Time (Wait States) Before PHI2 R.E. 10 6 ns tCWh(W) 2.9 CWAIT Hold Time (Wait States) After PHI2 R.E. 20 10 ns tws 2.9 WAITn Setup Time Before PHI2 R.E. 7 6 ns tWh 2.9 WAITn Hold Time After PHI2 R.E. 15 10 ns tps 2.10 PER Setup Time Before PHil R.E. 7 5 ns tPh 2.10 PER Hold Time After PHI1 R.E. 30 20 tRd 2.8/9/10 RDYDelay After PHI2 R.E. 25 ns 12 ns SYNCHRONIZATION (SYNC) TIMING tSys 2.11 SYNC Setup Time Before XIN R.E. 6 6 ns tSyh 2.11 SYNC Hold Time After XIN R.E. 5 5 ns les 2.11 CTTLISYNC Inversion Delay CTTL (master) to RWEN/SYNC (slave) 4-20 10 7 ns 2.0 Device Specifications (Continued) 2.4.4 Timing Diagrams FCLK CTIL PHil PHI2 TL/EE/8524-21 FIGURE 2·2. Clock Signals (a) XIN FCLK PHil PHI2 cm TL/EE/8524-22 FIGURE 2·3. Clock Signals (b) TI III T2 PHil RSTI RSTO ADS ODIN TLlEE/8524-23 FIGURE 2·4. Control Inputs 4·21 ~ ..-• ~ r-----------------------------------------------------------------------------, 2.0 Device Specifications (Continued) oN ('I) Tl U) Z T2 T4 T3 PHI1 C; ..-• oN PHI2 o N ~ Z R5-+---";';'-n. WR TL/EE/8524-24 FIGURE 2·5. Control Outputs (Fast Cycle) T1 TOO T2 TDI TD2 TD3 TD4 T3 T4 PH11 PH12 IDBIIR) ----1Ir.-.., IDBIIW) I I TLlEE/8524-25 FIGURE 2·6. Control Outputs (Peripheral Cycle) RWENISYNC .. 1.5V whiiii iiiii&iiii r-+ - - - - -.. 1.5V _...;......... TLlEE/8524-26 FIGURE 2·7. Control Outputs (TRI·STATE Timing) 4-22 .--------------------------------------------------------------------,z U) 2.0 Device Specifications (Continued) Co) I\) o o ..... .....• I\) TI THI (FIRST) THn (LAST) T2 ~ z PHil U) Co) I\) o I\) o..... PHI2 .....• Ut ROY ROY REMAINS LOW FOR SUBSEQUENT WAIT TUEE/B524-27 FIGURE 2-8. Cycle Hold TL/EE/B524-2B FIGURE 2-9. Walt State (Fast Cycle) T1 T2 TOO TOI T03 T02 TD4 T3 • T4 PHil PHI2 ~AIT +-____ ____~~~~____ ~ OR WAIT" PER ROY TL/EE/B524-29 FIGURE 2-10. Wait State (Peripheral Cycle) 4-23 ....• r--------------------------------------------------------------------------, .... 2.0 Device Specifications (Continued) ~ CI B z c; .... ....• RWEN/SYNC ~ ~ o z t"jo- CTlL XIN I -{ ------1-.,.~b·.. -1---- -' ~ \ FIGURE 2·11. Synchronization Timing 4-24 \'--- TLlEE/8524-30 .----------------------------------------------------------------,z tJ) ~National (0) I\) I\) ~ Semiconductor o ....o~ NS32202-10 Interrupt Control Unit General Description Features The NS32202 Interrupt Control Unit (ICU) is the interrupt controller for the Series 32000® microprocessor family. It is a support circuit that minimizes the software and real·time overhead required to handle multi·level, prioritized inter· rupts. A single NS32202 manages up to 16 interrupt sources, resolvesinterruptpriorities,andsuppliesasingle·byteinterrupt vector to the CPU. • 16 maskable interrupt sources, cascadable to 256 • Programmable 8- or 16-bit data bus mode • Edge or level triggering for each hardware interrupt with individually selectable polarities • 8 software interrupts • Fixed or rotating priority modes • Two 16-bit, DC to 10 MHz counters, that may be con· catenated into a single 32-bit counter • Optional 8-bit 1/0 port available in 8-bit data bus mode • High·speed XMOSTM technology • Single, + 5V supply • 40·pin, dual in·line package The NS32202 can operate in either of two data bus modes: 16-bit or 8-bit. In the 16-bit mode, eight hardware and eight software interrupt positions are available. In the 8-bit mode, 16 hardware interrupt positions are available, 8 of which can be used as software interrupts. In this mode, up to 16 addi· tional ICUs may be cascaded to handle a maximum of 256 interrupts. Two 16-bit counters, which may be concatenated under pro· gram control into a single 32-bit counter, are also available for real·time applications. Basic System Configuration ~ iiif N832018 CPU GROUP MASTER N832202 ICU ..L. +-1 _ NON·CASCADED INTERRUPT SOURCES I~ iNi' I· CASCADED N832202 ICU -··· · -· +;- · ..:- '--- iNi' CASCADED INTERRUPT SDURCES + ;- CASCADED N832202 ICU · · ..:- TLlEE/5117-1 4-25 C) ..... r---------------------------------------------------------------------------------, I Table of Contents C'I C) C'I C'I CO) en z 1.0 PRODUCT INTRODUCTION 3.0 ARCHITECTURAL DESCRIPTION (Continued) 3.9 FPRT - First Priority Registers (R14, R15) 1.1110 Buffers 1.2 Read/Write Logic and Decoders 1.3 Timing and Control 1.4 Priority Control 1.5 Counters 3.10 MCTL - Mode Control Register (R16) 3.11 OSCASN - Output Clock Assignment (R17) 3.12 CIPTR - Counter Interrupt Pointer Register (R18) 3.13 PDAT - Port Dada Register (R19) 3.14 IPS - Interrupt/Port Select Register (R20) 2.0 FUNCTIONAL DESCRIPTION 3.15 PDIR - Port Direction Register (R21) 2.1 Reset 3.16 CCTL - Counter Control Register (R22) 2.2 Initialization 3.17 CICTL - Counter Interrupt Control Register (R23) 2.3 Vectored Interrupt Handling 3.18 LCSV/HCSV - L-Counter Starting Value/H-Counter Starting Value Registers (R24, R25, R26, and R27) 2.3.1 Non-Cascaded Operation 3.19 LCCV/HCCV - L-Counter Current Value/H-Counter Current Value Registers (R28, R29, R30, and R31) 2.3.2 Cascade Operation 2.4 Internal ICU Operating Sequence 3.20 Register Initialization 2.5 Interrupt Priority Modes 4.0 DEVICE SPECIFICATIONS 2.5.1 Fixed Priority Mode 4.1 NS32202 Pin Descriptions 2.5.2 Auto-Rotate Mode 2.5.3 Special Mask Mode 4.1.1 Power Supply 2.5.4 Polling Mode 4.1.2 Input Signals 4.1 .3 Output Signals 3.0 ARCHITECTURAL DESCRIPTION 4.1.4 Input/Output Signals 3.1 HVCT - Hardware Vector Register (RO) 4.2 Absolute Maximum Ratings 3.2 SVCT - Software Vector Register (Rl) 4.3 Electrical Characteristics 3.3 ELTG - Edge/Level Triggering Registers (R2, R3) 4.4 Switching Characteristics 3.4 TPL - Triggering Polarity Registers (R4, R5) 4.4.1 Definitions 3.5 IPND - Interrupt Pending Registers (R6, R7) 4.4.1.1 Timing Tables 3.6 ISRV - Interrupt In-Service Registers (R8, R9) 4.4.1.2 Timing Diagrams 3.7IMSK - Interrupt Mask Registers (Rl0, Rll) 3.8 CSRC - Cascaded Source Registers (R12, R13) List of Illustrations NS32202 ICU Block Diagram .................................................................................... 1-1 Counter Output Signals in Pulsed Form and Square Waveform for Three Differentlnitial Values ........................... 1-2 Counter Configuration and Basic Operations ....................................................................... 1-3 Interrupt Control Unit Connections in 16-Bit Bus Mode .............................................................. 2-1 Interrupt Control Unit Connections in 8-Bit Bus Mode ............................................................... 2-2 Cascaded Interrupt Control Unit Connections in 8-Bit Bus Mode ...................................................... 2-3 CPU Interrupt Acknowledge Sequence ............................................................................ 2-4 Interrupt Dispatch and Cascade Tables ........................................................................... 2-5 CPU Return from Interrupt Sequence ............................................................................. 2-6 ICU Interrupt Acknowledge Sequence ............................................................................ 2-7 ICU Return from Interrupt Sequence .............................................................................. 2-8 ICU Internal Registers ..........................................................................................3-1 HVCT Register Data Coding .....................................................................................3-2 Recommended ICU's Initialization Sequence ...................................................................... 3-3 NS32202 ICU Connection Diagram ............................................................................... 4-1 Timing Specification Standard ................................................................................... 4-2 READ/INTA Cycle .............................................................................................4-3 Write Cycle ....................................................................................................4-4 Interrupt Timing in Edge Triggering Mode .......................................................................... 4-5 InterruptTiming in Level Triggering Mode ......................................................................... 4-6 Externallnterrupt-Sampling-Clock to be Provided at Pin COUT/SCIN When in Test Mode ............................... .4-7 Internallnterrupt-Sampling-Clock to be Provided at Pin COUT ISCIN .................................................. 4-8 Relationship Between Clock Input at Pin CLK and Counter Output Signals at Pins COUT/SCIN or GO/RO-G3/R6, in Both Pulsed Form and Square Waveform ....................................................................... 4-9 4-26 .-------------------------------------------------------------~z tJ) 1.0 Product Introduction Co) The NS32202 ICU functions as an overall manager in an interrupt-oriented system environment. Its many features and options permit the design of sophisticated interrupt systems. 1.4 PRIORITY CONTROL 1.11/0 BUFFERS AND LATCHES The I/O Buffers and Latches block is the interface with the system data bus. It contains bidirectional buffers for the data I/O pins. It also contains registers and logic circuits that control the operation of pins GO/IRO, ... ,G7/IR14 when the ICU is in the a-bit bus mode. 1.2 READ/WRITE LOGIC AND DECODERS The Read/Write Logic and Decoders manage all internal and external data transfers for the ICU. These include Data, Control, and Status Transfers. This circuit accepts inputs from the CPU address and control buses. In turn, it issues commands to access the internal registers of the ICU. 1.3 TIMING AND CONTROL sn vee G7IIRI4 +-1> 66/IRI2+-+ 65/IR1D +-+ 64/IRB +-1> G3/IR6+-+ G2IIR4 ..... Gl/IR2+-+ GO/IRO+-+ 07+-+ 06+-+ 05+-1> 04+-1> 03+-+ 02+-+ 01 ..... DO ..... Ifjf IRI Q IR3 IR5 IR7 IR9 IRl1 IR13 IR15 !!!!!!J. LV PftIORITY CONTROL B~'~ i I/O BUFFERS AND LATCHES ...• N 1.5 COUNTERS This block contains two 16-bit counters, called the H-counter and the L-counter. These are down counters that count from an initial value to zero. Both counters have a 16-bit register (deSignated HCSV and LCSV) for loading their restarting values. They also have registers containing the current count values (HCCV and LCCV). Both sets of registers are fully described in Section 3. The Timing and Control Block contains status elements that select the ICU operating mode. It also contains state machines that generate all the necessary sequencing and control signals. GND Q The Priority Control Block contains 16 units, one for each interrupt position. These units provide the following functions. • Sensing the various forms of hardware interrupt signals e.g. level (highllow) or edge (rising/falling) o Resolving priorities and generating an interrupt request to the CPU o Handling cascaded arrangements o Enabling software interrupts • Providing for an automatic return from interrupt • Enabling the assignment of any interrupt position to the internal counters • Providing for rearrangement of priorities by assigning the first priority to any interrupt position • Enabling automatic rotation of priorities Figure 1-1 shows the internal organization of the NS32202. As shown, the NS32202 is divided into five functional blocks. These are described in the following paragraphs: 1- 1- N N TIMING AND CONTROL COUNTERS ClK t READ/WRITE lOGIC AND DECODERS 4-1 11 t csi RST RD Wii lE AD AI A2 FIGURE 1-1. NS322021CU Block Diagram 4-27 II i i i i i A3 A4 TL/EE/5117-2 Q .- ~ N CO) U) Z 1.0 Product Introduction (Continued) 2.0 Functional Description The counters are under program control and can be used to generate interrupts. When the count reaches zero, either counter can generate an interrupt request to any of the 16 interrupt positions. The counter then reloads the start value from the appropriate registers and resumes counting. Figure 1-2 shows typical counter output signals available from the NS32202. 2.1 RESET The ICU is reset when a logic low signal is present on the RST pin. At reset, most internal ICU registers are affected, and the ICU becomes inactive. 2.2 INITIALIZATION After reset, the CPU must initialize the NS32202 to establish its configuration. Proper initialization requires knowledge of the ICU register's formats. Therefore, a flowchart of a recommended initialization sequence is shown in (Figure 3-3) after the discussion of the ICU registers. The maximum input clock frequency is 2.5 MHz. A divide-by-four prescaler is also provided. When the prescaler is used, the input clock frequency can be up to 10 MHz. The operation sequence shown in Figure 3-3 ensures that all counter output pins remain inactive until the counters are completely initialized. When intervals longer than provided by a 16-bit counter are needed, the L- and H-counters can be concatenated to form a 32-bit counter. In this case, both counters are controlled by the H-counter control bits. Refer to the discussion of the Counter Control Register in Section 3 for additional information. Figure 1-3 summarizes counter read/write operations. 2.3 VECTORED INTERRUPT HANDLING For details on the operation of the vectored interrupt mode for a particular Series 32000 CPU, refer to the data sheet for INPUT CLOCK Ur--------....,IUr COUNTER CONlENTS (INIT. VALUE=2) _ _ _ _ _ _ _ _ _ _ _-, OUTPUT IN PULSED FORM '--__~I OUTPUT IN SQUARE WAVEFORM COUNTER CONlENTS Ur------,UI"-----..,U- (INIT. VALUE =1) - - - - - - - - . , OUTPUT IN PULSED FORM L OUTPUT IN SQUARE WAVEFORM COUNTER CONTENTS (INIT. VALUE=O) _ _ _ _...., OUTPUT IN PULSED FORM OUTPUT IN SQUARE WAVEFORM TLlEE/5117-4 FIGURE 1-2. Counter Output Signals in Pulsed Form and Square Waveform for Three Different Initial Values 4-28 z en Co) 2.0 Functional Description (Continued) that CPU. In this discussion, it is assumed that the NS32202 is working with a CPU in the vectored interrupt mode. Several ICU applications are discussed, including non-cascaded and cascaded operation. Figures 2-1, 2-2, and 2-3 show typical configurations of the ICU used with the NS32016 CPU. rupt Output (INT) pin and generates an interrupt vector byte. The interrupt vector byte identifies the interrupt source in its four least significant bits. When the CPU detects a low level on its Interrupt Input pin, it performs one or two interrupt acknowledge cycles depending on whether the interrupt request is from the master ICU or a cascaded ICU. Figure 2-4 shows a flowchart of a typical CPU Interrupt Acknowledge sequence. A peripheral device issues an interrupt request by sending the proper signal to one of the NS32202 interrupt inputs. If the interrupt input is not masked, the ICU activates its Inter- I .......... :.., STARTING VALUE LCSV/HCSV ~ COUNTER FREEZE COUNTER READINGS I 0. .. c ='" ::> '"~ 0. c .... "" :z ""~ I CURRENT VALUE LCCVlHCCV ~ 0: ""'I ~ TLiEE/5117-5 BASIC OPERATIONS: ~ ~- (lOB) WRITING TO LCCVlHCCV ®- (lOB) (only possible when counters are halted) @l- (lOB) @l- (lOB) WRITING TO LCSVIHCSV READING LCSVIHCSV READING LCCV/HCCV (lOB) (only possible when counter readings are frozen) COUNTER COUNTS AND READINGS ARE NOT FROZEN COUNTER RELOADS STARTING VALUE (occurs on the clock cycle following the one in which it reaches zero) FIGURE 1-3. Counter Configuration and Basic Operations 4-29 N N Q ~ .... Q ... N o ~ r-----------------------------------------------------------------------------~ 2.0 Functional Description (Continued) i3z All-AU AO-A23 iiif ~ N83201. CPU LATCH T I AII-M I l AII-M HBE +-- I::: J---. cs lTi IRU lIlT iii +-- IRS +- IR7 +-- IRS I+- 1R3 ~ IRI +- NS3UG2 ICU BUFFER 00-01S AOO-AilIS PIIIl PHI2 00-071 GOIlRO-G7I1Rl. t PII" +-- an iiiiiN ~ IR15 IR13 iDS PIII2 ADS NS32201 TeU ODIN iiiL -.1 Wli iii WI. 00-015 TL/EE/5117 -6 FIGURE 2-1. Interrupt Control Unit Connections In 16-Blt Bus Mode A11-A23 AO-A23 -.I NS3201. CPU AO-M GND--+ HBE T Ail AI-AS LATCH I=: J---. cs m an iii' INT iiiiii BUFFfR PII" t PII" DD-D7 ADD-AD11 PIII2 DD-D7 t l'1li2 AG5 NS32301 TCU ODIN -.1 iili ~L ~ WI G7I1Rl. IIII11R1Z G5/IRlG 8411R1 G3/1R1 0211114 all1RZ NI3220Z GOIIRG leU IR15 ..,3 "U IRS IRT IHI IR3 IRI DD-D15 NOTE: In !he 8-Bn Bus Mode !he Master ICU Registers appear at even addresses (AO = 0) since the ICU communicates wi!h the least 8ignRlcant byte of the CPU data bus. FIGURE 2-2. Interrupt Control Unit Connections In 8·Blt Bus Mode 4-30 ::: ~ ..... ..... t:: +- +++++- ++- TL/EE/5117 -7 r--------------------------------------------------------------------------, en Z 2.0 Functional Description (Continued) Co) I\) I\) Q ~ .... Q AI-AS GND--+ All-M HIE Ci STI 1171111' 11111112 05/111D 114/111 113/111 6Z/1R4 CASCADED 61/1H2 NS32202 GO/IRQ ICU 1115 DO-D7 ID WI liNT All-AD ~ N83201. CPU LATCH f iii AI-AS 8ND~ I=:r- Pltn ADl-AD11 PHIZ f f '"" PHIZ .... NS32201 TCU I11III IUffD ::: All-M ::: 07/111' 111/1112 05/111D 114/111 113/111 Ci G2/1R4 Bn MASTER 01 11HZ iii NS32202 GG/IRD ICU 11115 1R13 1111 DO-D7 IHI ~ IR7 4 IRS 4 iii IR3 1111 iii HIE ::: c- lIT :: ::: ::: .... m iii ~ All-AD I I I 1113 1111 IHI IR7 1115 113 111 ~ ~ ~ ~ ~ I DO-D7 ::: ::: iii ~I Wli DO-D15 TL/EE/Sl17-B FIGURE 2-3. Cascaded Interrupt Control Unit Connections In 8-Blt Bus Mode 4-31 o .,... S 2.0 Functional Description (Continued) C"I C"I CO) en z • Condo A is true if current instruction Is terminated or an interruptible point in a string Instruction is reached. TL/EE/S117-Q FIGURE 2-4. CPU Interrupt Acknowledge Sequence 4-32 z (f) 2.0 Functional Description (Continued) Co) In general, vectored interrupts are serviced by interrupt routines stored in system memory. The Dispatch Table stores up to 256 external procedure descriptors for the various service procedures. The CPU INTBASE register points to the top of the Dispatch Table. Figure 2-5 shows the layout of the Dispatch Table. This figure also shows the layout of the Cascade Table, which is discussed with ICU cascaded operation. 2.3.2 Cascaded Operation. In cascaded operation, one or more of the interrupt inputs of the master leu are connected to the Interrupt Output pin of one or more cascaded ICUs. Up to 16 cascaded ICUs may be used, giving a system total of 256 interrupts. Nate: The number of cascaded ICUs is practically limited to 15 because the Dispatch Table for the NS32016 CPU is constructed with entries 1 through 15 either used for NMI and Trap descriptors, or reserved for future use. Interrupt position a of the master leu should not be cascaded, so it can be vectored through Dispatch Table entry 0, reserved for non-vectored interrupts. In this case, the non-vectored interrupt entry (entry 0) is also available for vectored interrupt operation, since the CPU is operating in the vectored interrupt mode. 2.3.1 Non-Cascaded Operation. Whenever an interrupt request from a peripheral device is issued directly to the master ICU, a non-cascaded interrupt request to the CPU results. In a system using a single NS32202, up to 16 interrupt requests can be prioritized. Upon receipt of an interrupt request on the INT pin, the CPU performs a Master InterruptAcknowledge bus cycle, reading a vector byte from address FFFE0016. This vector is then used as an index into the dispatch table in order to find the External Procedure Descriptor for the proper interrupt service procedure. The service procedure eventually returns via the Return-from-Interrupt (RET) instruction, which performs a Return-from-Interrupt bus cycle, informing the ICU that it may re-prioritize any interrupt requests still pending. Figure 2-6 shows a typical CPU RETI sequence. In a system with only one ICU, the vectors provided must be in the range of 0 through 127; this can be ensured by writing OXXXXXXX into the SVCT register. By providing a negative vector value, the master ICU flags the interrupt source as a cascaded ICU (see below). The address of the master ICU should be FFFEOOI6. (0) Cascaded ICUs can be located at any system address. A list of cascaded ICU addresses is maintained in the Cascade Table as a series of sixteen 32-bit entries. (")Note: The CPU status corresponding to both, master interrupt acknowledge and return from interrupt bus cycles, as well as address bit AS, could be used to generate the chip select (CS) Signal for ac· cessing the master leu during one of the above cycles. In this case the master ICU can reside at any system address. The only limitation is that the least significant 5 or 6 address bits (6 in the S·bit bus mode) must be zero. The address bit AS must be decoded to pre· vent an NMI bus cycle from reading the hardware vector register of the ICU. This could happen, since the NS32016 CPU performs a dummy read cycle from address FFFF0016. with the same status as a master INTA cycle, when a non-maskable-interrupt is acknowl- edged. MEMORY l TH~E ADDR~S~ ARE USED BYTHE CPU DURING THE SECDND CYCLE OF AN INTA DR REII SEOUENCE TO GEr THE INTERRUPT VECTOR FROM A CMCADED ICU. CASCADED ICU ADDR~S D (INTBME-64)- CASCADE TABLE CASCADED ICU ADDRESS 14 ~~ ______~_C_M_C_AD_ED __IC_U_A_DD_R_~_S_15~rNVI D~CRIPTOR NMIANDTRAP DESCRIPTDRS· R~ERVED· I (INTBASE +4- VECTOR) INT. DESCRIPTOR 16 INTERRUPT DlSPIirCH TA8lE I-_IN_T._D_ES_CR_IPT_O_R_N_~~ - - - - - - - - - - - - - - - - INT. DESCRIPTDR 255 (ADDR~S FFF£IJOt.)- MASTER ICU'S HVCT REGISTER - C P U READS THIS LOCATIDN DURING FIRST CYCLE OF INTA OR REII SEOUENCE TO GEr BTHER THE INTERRUPT VECTOR OR A CASCADE TABLE INDEX FROM THE MASTER ICU. - Table entries 1 to 15 should not be used by the leu since they contain NMI and Trap DeSCriptors or are reserved for future use. (For more details refer to NS32016 data sheet.) FIGURE 2-5. Interrupt Dispatch and Cascade Tables 4-33 TL/EE/5117 -10 N N o • ...... o N Q .... N ~ N (II) tn Z ,-------------------------------------------------------------------~ 2.0 Functional Description or (Continued) cascaded ICU, of course, has its own set of 16 unique interrupt vectors, one vector for each of its 16 interrupt positions. The CPU interprets the vector value read during a Cascaded Interrupt Acknowledge cycle as an unsigned number. Thus, this vector can be in the range 0 through 255. When a cascaded interrupt service routine completes its task, it must return control to the interrupted program with the same RETI instruction used in non-cascaded interrupt service routines. However, when the CPU performs a Master Return From Interrupt cycle, the CPU accesses the master ICU and reads the negative Cascade Table index identifying the cascaded ICU that originally received the interrupt request. Using the cascaded ICU address, the CPU now performs a Cascaded Return From Interrupt cycle, informing the cascaded ICU that the service routine is over. The byte provided by the cascaded ICU during this cycle is ignored. 2.4 INTERNAL ICU OPERATING SEQUENCE The NS32202 ICU accepts two interrupt types, software and hardware. Software interrupts are initiated when the CPU sets the proper bit in the Interrupt Pending (IPND) registers (R6, R7), located in the ICU. Bits are set and reset by writing the proper byte to either R6 or R7. Software interrupts can be masked, by setting the proper bit in the mask registers (R10, R11). EXECUTE CASCADED ICU CYCLE AND READ VECTOR FROM CASCADED ICU Hardware interrupts can be either internal or external to the ICU. InternallCU hardware interrupts are initiated by the onchip counter outputs. External hardware interrupts are initiated by devices external to the ICU, that are connected to any of the ICU interrupt input pins. Hardware interrupts can be masked by setting the proper bit in the mask registers (R10, R11). If the Freeze bit (FRZ), located in the Mode Control Register (MCTL), is set, all incoming hardware interrupts are inhibited from setting their corresponding bits in the IPND registers. This prevents the ICU from recognizing any hardware interrupts. Once the ICU is initialized, it is enabled to accept interrupts. If an active interrupt is not masked, and has a higher priority than any interrupt currently being serviced, the ICU activates its Interrupt Output (INT). Figure 2-7 is a flowchart showing the ICU interrupt acknowledge sequence. The CPU responds to the active INT line by performing an Interrupt Acknowledge bus cycle. During this cycle, the ICU clears the IPND bit corresponding to the active interrupt position and sets the corresponding bit in the Interrupt In-Service Registers (ISRV). The 4-bit in-service counter in the master ICU is also incremented by one if the fixed priority mode is selected and the interrupt is from a cascaded ICU. The ISRV bit remains set until the CPU performs a RETI bus cycle and the 4-bit in-service counter is decremented to zero. Figure 2-8 is a flowchart showing ICU operation during a RETI bus cycle. TL/EE/5117-11 FIGURE 2-6. CPU Return from Interrupt Sequence The master ICU maintains a list (in the CSRC register pair) of its interrupt positions that are cascaded. It also provides a 4-bit (hidden) counter (in-service counter) for each interrupt position to keep track of the number of interrupts being serviced in the cascade ICUs. When a cascaded interrupt input is active, the master ICU activates its interrupt output and the CPU responds with a Master Interrupt Acknowledge Cycle. However, instead of generating a positive interrupt vector, the master ICU generates a negative Cascade Table index. The CPU interprets the negative number returned from the master ICU as an index into the Cascade Table. The Cascade Table is located in a negative direction from the Dispatch Table, and it contains the virtual addresses of the hardware vector registers for any cascaded NS32202s in the system. Thus, the Cascade Table index supplied by the master ICU identifies the cascaded ICU that requested the interrupt. When the ISRV bit is set, the INT output is disabled. This output remains inactive until a higher priOrity interrupt position becomes active, or the ISRV bit is cleared. An exception to the above occurs in the master ICU when the fixed priority mode is selected, and the interrupt input is connected to the INT output of a cascaded ICU. In this case the ISRV bit does not inhibit an interrupt of the same priority. Once the cascaded ICU is identified, the CPU performs a Cascaded Interrupt Acknowledge cycle. During this cycle, the CPU reads the final vector value directly from the cascaded ICU, and uses it to access the Dispatch Table. Each This is to allow nesting of interrupts in a cascaded ICU. 4-34 z (J) 2.0 Functional Description (Continued) Co) N N C N . ..... C • Condo B is true if anyone of the following condi· tions is satisfied. 1) No interrupt is being serviced 2) There is a pending unmasked interrupt with priority higher than thai of the interrupt being serviced. 3) There is a pending unmasked interrupt from a cascaded leu with priority higher or same as that of the highest priority interrupt position in the master leu with the ISRV bit sel ...--..:...-..., TL/EE/5117-12 FIGURE 2-7. leu Interrupt Acknowledge Sequence 4-35 C) .,... N C) r---------------------------------------------------------------------------------, 2.0 Functional Description (Continued) '" '" en C") z YES RESET INTERRUPT ISRV BIT AND ASSIGN FIRST PftIDRITY TO NEXT INTERRUPT POSITION RESET INTERRUPT ISRV BIT TL/EE/5117-13 FIGURE 2-8. leu Return from Interrupt Sequence 4-36 z en Co) 2.0 Functional Description (Continued) The bits of the ISRV registers are changed with either the Set Bit Interlocked or Clear Bit Interlocked instructions (SBITIW or CBITIW). The in-service bit is cleared to enable lower priority interrupts and set to disable them. 2.5 INTERRUPT PRIORITY MODES The NS32202 ICU can operate in one of four interrupt priority modes: Fixed Priority; Auto-Rotate; Special Mask; and Polling. Each mode is described below. I\) I\) o ~ ..... o Note: For proper operation of the ICU, an interrupt service routine must set its ISRV bit before executing the RETI instruction. This prevents the RETI cycle from clearing the wrong ISRV bit. 2.5.1 Fixed Priority Mode In the Fixed Priority Mode (also called Fully Nested Mode), each interrupt position is ranked in priority from 0 to 15, with being the highest priority. In this mode, the processing of lower priority interrupts is nested with higher priority interrupts. Thus, while an interrupt is being serviced, any other interrupts of the same or lower priority are inhibited. The ICU does, however, recognize higher priority interrupt requests. 2.5.4 Polling Mode o The Polling Mode gives complete control of interrupt priority to the system software. Either some or all of the interrupt positions can be assigned to the polling mode. To assign all interrupt positions to the polling mode, the CPU interrupt enable flag is reset. To assign only some of the interrupt positions to the polling mode, the desired interrupt positions are masked in the Interrupt Mask registers (IMSK). In either case, the polling operation consists of reading the Interrupt Pending (lPND) registers. When the interrupt service routine executes its RETI instruction, the corresponding ISRV bit is cleared. This allows any lower priority interrupt request to be serviced by the CPU. At reset, the default priority assignment gives interrupt IRO priority 0 (highest priority), interrupt IR 1 priority 1, and so forth. Interrupt IR15 is, of course, assigned priority 15, the lowest priority. The default priority assignment can be altered by writing an appropriate value into register FPRT (L) as explained in Section 3.9. If necessary, the IPND read can be synchronized by setting the Freeze (FRZ) bit in the Mode Control register (MCTL). This prevents any change in the IPND registers during the read. The FRZ bit must be reset after the polling operation so the IPND contents can be updated. If an edge-triggered interrupt occurs while the IPND registers are frozen, the interrupt request is latched, and transferred to the IPND registers as soon as FRZ is reset. Nale: When the ICU generates an interrupt request to the CPU for a higher priority interrupt while a lower priority interrupt is still being serviced by the CPU, the CPU responds to the interrupt request only if its internal interrupt enable flag is set. Normally. this flag is reset at the beginning of an interrupt acknowledge cycle and set during the RETI cycle. If the CPU is to respond to higher priority interrupts during any interrupt The polling mode is useful when a single routine is used to service several interrupt levels. service routine, the service routine must set the internal CPU interrupt enable flag, as soon during the service routine as desired. 3.0 Architectural Description 2.5.2 Auto-Rotate Mode The NS32202 has thirty-two a-bit registers that can be accessed either individually or in pairs. In 16-bit data bus mode, register pairs can be accessed with the CPU word or double-word reference instructions. Figure 3-1 shows the ICU internal registers. This figure summarizes the name, function, and offset address for each register. The Auto Rotate Mode is selected when the NTAR bit is set to 0, and is automatically entered after Reset. In this mode an interrupt source position is automatically assigned lowest priority after a request at that position has been serviced. Highest priority then passes to the next lower priority position. For example, when servicing of the interrupt request at position 3 is completed (ISRV bit 3 is cleared), interrupt position 3 is assigned lowest priority and position 4 assumes highest priority. The nesting of interrupts is inhibited, since the interrupt being serviced always has the highest priority. Because some registers hold similar data, they are grouped into functional pairs and assigned a single name. However, if a single register in a pair is referenced, either an L or an H is appended to the register name. The letters are placed in parentheses and stand for the low order a bits (L) and the high order a bits (H). For example, register R6, part of the Interrupt Pending (lPND) register pair, is referred to individually as IPND(L). This mode is used when the interrupting devices have to be assigned equal priority. A device requesting an interrupt, will have to wait, in the worst case, until each of the 15 other devices has been serviced at most once. The following paragraphs give detailed descriptions of the registers shown in Figure 3-1. 2.5.3 Special Mask Mode The Special Mask Mode is used when it is necessary to dynamically alter the ICU priority structure while an interrupt is being serviced. For example, it may be desired in a particular interrupt service routine to enable lower priority interrupts during a part of the routine. To do so, the ICU must be programmed in fixed priority mode and the interrupt service routine must control its own in-service bit in the ISRV registers. 3.1 HVCT - HARDWARE VECTOR REGISTER (RO) The HVCT register is a single register that contains the interrupt vector byte supplied to the CPU during an Interrupt Acknowledge (INTA) or Return From Interrupt (RETI) cycle. The HVCT bit map is shown below: 7 6 543 2 0 B 4-37 B B B V V V V • 0 .• C'\I 0 3.0 Architectural Description (Continued) C'\I C'\I CO) en z REG. NUMBER AND ADDRESS IN HEX. REG. NAME REG. FUNCTION RO(0016) HVCT- HARDWARE VECTOR R1 (0116) SVCT- SOFTWARE VECTOR R3(0316) R2(0216) ELTG- EDGE/LEVEL TRIGGERING R5 (0516) R4(0416) TPL- TRIGGERING POLARITY R7 (0716) R6 (0616) IPND- INTERRUPTS PENDING R9 (0916) R8 (0816) ISRV- INTERRUPTS IN-SERVICE R11 (0816) R10 (OA16) IMSK- INTERRUPT MASK R13 (0016) R12 (OC16) CSRC- CASCADED SOURCE R15 (OF16) R14 (OE16) FPRT- FIRST PRIORITY R16(1016) MCTL- MODE CONTROL R17 (1116) OCASN- OUTPUT CLOCK ASSIGNMENT R18 (1216) CIPTR- COUNTER INTERRUPT POINTER R19 (1316) PDAT- PORT DATA R20 (1416) IPS- INTERRUPT/PORT SELECT R21 (1516) PDIR- PORT DIRECTION R22 (1616) CCTL- COUNTER CONTROL R23 (1716) CICTL- COUNTER INTERRUPT CONTROL R25 (1916) R24(1816) LCSV- L-COUNTER STARTING VALUE R27 (1816) R26(1A16) HCSV- H-COUNTER STARTING VALUE R29 (1016) R28 (1C16) LCCV- L-COUNTER CURRENT VALUE R31 (1F16) R30 (1E16) HCCV- H-COUNTER CURRENT VALUE FIGURE 3-1.ICU Internal Registers 4-38 3.0 Architectural Description (Continued) The BBBB field is the bias which is programmed by writing BBBB00002 to the SVCT register (R1). The VVVV field identifies one of the 16 interrupt positions. The contents of the HVCT register provide various information to the CPU, as shown in Figure 3-2: sn _ CPU LAS OR A6 ] TL/EE/5117-14 The ELTG registers determine the input trigger mode for each of the 16 interrupt inputs. Each input is aSSigned a bit in this register pair. An interrupt input is level-triggered if its bit in ELTG is set to 1. The input is edge-triggered if its bit is cleared. At reset, all bits in ELTG are set to 1. Nole 2: If the HVCT registar is raad with STt ~ a (INTA cycla) and no unmasked intarrupt is panding, tha binary valua BBBBllll is ra· turnad and any panding adga-triggered interrupt in position 15 is cleared. If the auto-rotate priority mode is selected, the FPRT register is also cleared, thus preventing any interrupt from being acknowledged. In this case a re-intialization of the FPRT register is required for the ICU to acknowledge interrupts again. If odd·numbered interrupt positions must be used for software interrupts, the edge triggering mode must be selected and the corresponding interrupt inputs should be prevented from changing state. If a read of the HVCT register is performed with STI ~ 1 (RETI CYcle), tha binary value BBBBll11 is returned. 3.4 TPL - TRIGGERING POLARITY REGISTERS (R4, R5) The TPL registers determine the polarity of either the active level or the active edge for each of the 16 interrupt inputs. As with the ELTG registers, each input is assigned a bit. Possible triggering modes for the various combinations of ELTG and TPL bits are shown below. ELTG BIT TPL BIT TRIGGERING MODE o o Falling Edge o 1 Rising Edge 1 o Low Level High Level 1 1 Software interrupt pOSitions are not affected by their TPL bits. At reset, all TPL bits are set to O. If the auto·rotate mode is selected, a priority rotation is also performed. 3.2 SVCT - SOFTWARE VECTOR REGISTER (R1) The SVCT register is a copy of the HVCT register. It allows the programmer to read the contents of the HVCT register without initiating a INTA or RETI cycle in the ICU. It also allows a programmer to change the BBBB field of the HVCT register. The bit map of the SVCT register is the same as for the HVCT register. During a write to SVCT, the four least significant bits are unaffected while the four most significant bits are written into both SVCT and HVCT (R1 and RO). The SVCT register is updated dynamically by the ICU. The four least significant bits always contain the vector value that would be returned to the CPU if a INTA or RETI cycle were executed. Therefore, when reading the SVCT register, the state of the CPU ST1 pin is used to select either pending interrupt data or in-service interrupt data. For example, if the SVCT register is read with ST1 = 0 (as for an INTA cycle), the VVVV field contains the encoded value of the highest priority pending interrupt. On the other hand, if the SVCT register is read with ST1 = 1, the VVVV field contains the encoded value of the highest priority in-service interrupt. Note 1: If edged-triggered interrupts ara to ba handlad, the TPL registar should ba programmed bafore tha ELTG ragistar. This prevents spurious interrupt requests from being generated dur· Ing tha ICU initialization from adga·triggarad intarrupt positions. Note 2: Hardwara interrupt inputs connected to cascaded ICUs must hava 1heir TPL bits sat to O. 3.5 IPND -INTERRUPT PENDING REGISTERS (R6, R7) The IPND registers track interrupt requests that are pending but not yet serviced. Each interrupt position is assigned a bit in IPND. When an interrupt is pending, the corresponding bit in IPND is set. The IPND data are used by the ICU to generate interrupts to the CPU. These data are also used in polling operations. Nole: If the CPU ST1 output is connected directly to the ICU STI input, the vector read from SVCT is always the RETI vector. If both the INTA and RETI vectors ara dasirad, additional logic must ba added to driva tha ICU STI input. A typical circuit is shown below. In this circuit, tha state of tha ICU ST1 input is controlled by both the CPU STI output and the selected address bit. INTA CYCLE (ST1 = 0) RETI CYCLE (ST1= 1) Highest priority pending interrupt is from: Highest priority in-service interrupt was from: cascaded ICU any other source cascaded ICU programmed bias' 1111 1111 VVVV ICU 3.3 ELTG - EDGE/LEVEL TRIGGERING REGISTERS (R2, R3) Note 1: The leu always interprets a fead of the HVCT register as either an INTA or RETI cycle. Since these cycles causa intarnal changas to the ICU, normal programs must never read the leu HVCT register. BBBB sn I I encoded value of the highest priority pending interrupt I I any other source programmed bias· encoded value of the highest priority in-service interrupt 'Tha Programmed bias for tha master leu must ranga from 0000 to 01112 becausa tha CPU intarprets a one in the most significant bit position as a Cascada Table Index indicator for a cascaded ICU. FIGURE 3-2. HVCT Register Data Coding 4-39 .... r---------------------------------------------------------------------------------, C) N ~ C'I CO) tn Z 3.0 Architectural Description (Continued) The IPND registers are also used for requesting software interrupts. This is done by writing specially formatted data bytes to either IPND(L) or IPND(H). The formats differ for registers R6 and R7. These formats are shown below: IPND(L) (R6) IPND(H) (R7) Where: S = 3.7 IMSK -INTERRUPT MASK REGISTERS (R10, R11) Each NS32202 interrupt position can be individually masked. A masked interrupt source is not acknowledged by the ICU. The IMSK registers store a mask bit for each of the ICU internupt positions. If an interrupt position's IMSK bit is set to 1, the position is masked. SOOOOPPP S0001PPP Set (S = 1) or Clear (S = 0) The IMSK registers are controlled by the system software. At reset, all IMSK bits are set to 1, disabling all interrupts. PPP = is a binary number identifying one of eight bits Note: If an interrupt must be masked off, the CPU can do so by setting the corresponding bit in the IMSK register. However, if an interrupt is set pending during the CPU instruction that masks off that interrupt, the CPU may still perform an interrupt acknowledge cycle following that Note: The data read from either R6 or R7 are different from that written to the register because the leu returns the register contents, rather than the formatted byte used to set the register bits. instruction since it might have sampled the INT line before the The ICU automatically clears a setlPND bit when the pending interrupt request is serviced. All pending interrupts in a register can be cleared by writing the pattern 'X1 XXXXXX' to it (X = don't care). To avoid conflicts with asynchronous hardware interrupt requests, the IPND registers should be frozen before pending interrupts are cleared. Refer to the Mode Control Register description for details on freezing the IPND registers. leu deasserted it. This could cause the leu to provide an invalid vector. To avoid this problem, the above operation should be performed with the CPU interrupt disabled. 3.8 CSRC - CASCADED SOURCE REGISTERS (R12, R13) The CSRC registers track any cascaded interrupt positions. Each interrupt position is assigned a bit in the CSRC registers. If an interrupt position's CSRC bit is set, that position is connected to the INT output of another NS32202 ICU, i.e., it is a cascaded interrupt. At reset, all IPND bits are set to O. Note: The edge sensing mechanism used for hardware interrupts in the NS32202 ICU is a latching device that can be cleared only by acknowiedging the interrupt or by changing the trigger mode to level sensing. Therefore, before clearing pending interrupts in the IPND At reset, the CSRC registers are set to O. Note I: If any cascaded ICU is used, the CSRC register should be cleared registers, any edge·triggered interrupt inputs must first be switched to during initialization (if the initialization does not follow a hardware the level·triggered mode. This clears the edge·triggered interrupts; the remaining interrupts can then be cleared in the manner described above. This applies to clearing the interrupts only. Edge·triggered in· terrupts can be set without changing the trigger mode. reset) by writing zeroes Into it. This should be done before setting the bits corresponding to the cascaded interrupt positions. This operation ensures that the 4-bit in-service counters (aSSOCiated with each interrupt pOSition to keep track of cascaded interrupts) always get cleared when the leu is re-initialized. 3.6 ISRV -INTERRUPT IN-SERVICE REGISTERS (R8, R9) NOle 2: Only the Master ICU should have any CSRC bits set. If CSRC bits are set in a cascaded ICU, incorrect operation results. The ISRV registers track interrupt requests that are currently being serviced. Each interrupt position is assigned a bit in ISRV. When an interrupt request is serviced by the ICU, its corresponding bit is set in the ISRV registers. Before generating an interrupt to the CPU, the ICU checks the ISRV registers to ensure that no higher priority interrupt is currently being serviced. 3.9 FPRT - FIRST PRIORITY REGISTERS (R14, R15) The FPRT registers track the ICU interrupt position that currently holds first priority. Only one bit of the FPRT registers is set at one time. The set bit indicates the interrupt position with first (highest) priority. The FPRT registers are automatically updated when the ICU is in the auto-rotate mode. The first priority interrupt can be determined by reading the FPRT registers. This operation returns a 16-bit word with only one bit set. An interrupt position can be aSSigned first priority by writing a formatted data byte to the FPRT(L) register. The format is shown below: Each time the CPU executes an RETI instruction, the ICU clears the ISRV bit corresponding to the highest priority interrupt in service. The ISRV registers can also be written into by the CPU. This is done to implement the special mask priority mode. At reset, the ISRV registers are set to O. Note: If the ICU initialization does not follOW a hardware reset, the ISRV register should be cleared during initialization by writing zeroes into it. 7 6 5 4 3 2 1 0 X X X X F F F F Where: XXXX = FFFF = Don't Care A binary number from 0 to 15 indicating the interrupt position assigned first priority. Note: The byte above Is written only to the FPRT(L) register. Any date writ· ten to FPRT(H) is ignored. At reset the FFFF field is set to 0, thus giving internupt position 0 first priority. 3.10 MCTL - MODE CONTROL REGISTER (R16) The contents of the MCTL set the operating mode of the NS32202 ICU. The MCTL bit map is shown below. 76543210 4-40 3.0 Architectural Description (Continued) CFRZ COUTD Determines whether or not the NS32202 counter readings are frozen. When frozen, the counters continue counting but the LCCV and HCCV registers are not updated. Reading of the true value of LCCV and HCCV is possible only while they are frozen. Note: The interrupt senSing mechanism on pins GOffRO •...• G3ffR6 is not CFRZ = 0 = > LCCV and HCCV Not Frozen CFRZ = 1 = > LCCV and HCCV Frozen The CIPTR register tracks the assignment of counter outputs to interrupt positions. A bit map of this register is shown below. 7 S 5 43210 disabled when any of these pins is programmed as clock output. Thus, to avoid spurious interrupts, the corresponding bits in register IPS should also be set to zero. 3.12 CIPTR - COUNTER INTERRUPT POINTER REGISTER (R1B) Determines whether the COUTISCIN pin is an input or an output. COUT/SCIN should be used as an input only for testing purposes. In this case an external sampling clock must be provided otherwise hardware interrupts will not be recognized. H H H Where: HHHH = COUTD = 0 = > COUTISCIN is Output COUTM COUTD = 1 = > COUT/SCIN is Input When the COUTISCIN pin is programmed as an output (COUTD = 0), this bit determines whether the output signal is in pulsed form or in square wave form. COUTM CLKM NTAR = 0 = > Square Wave Form L L A 4-bit binary number identifying the interrupt position assigned to the HCounter (or the H + L-counter if the counters are concatenated). A 4-bit binary number identifying the interrupt position assigned to the Lcounter. 3.13 PDAT - PORT DATA REGISTER (R19) Used only in the 8-bit Bus Mode. This register is used to input or output data through any of the pins GOI IRO •... ,G711R14 programmed as I/O ports by the IPS register. Any pin programmed as an output delivers the data written into PDAT. The input pins ignore it. Reading PDAT provides the logical value of all I/O pins, INPUT and OUTPUT. > Square Wave Form CLKM = 1 = > Pulsed Form Freeze Bit. In order to allow a synchronous reading of the interrupt pending registers (lPND), their status may be frozen, causing the ICU to ignore incoming requests. This is of special importance if a polling method is used. FRZ = 0 = > IPND Not Frozen 3.14 IPS - INTERRUPTIPORT SELECT REGISTER (R20) Used only in the 8-bit Bus Mode. This register controls the function of the pins GOIIRO, ... ,G711R14. Each of these pins is individually programmed as an I/O port, if the corresponding bit of IPS is 0; as an interrupt source, if the corresponding bit is 1. The assignment of the H-Counter output to GOIIRO, ... ,G311RS by means of reg. OCASN overrides the assignment to these pins as I/O ports or interrupt inputs. At Reset, all the IPS bits are set to 1. FRZ = 1 = > IPND Frozen Determines whether the ICU is in the AUTOROTATE or FIXED Priority Mode. In AUTOROTATE mode, the interrupt source at the highest priority position, after being serviced, is assigned automatically lowest priority. In this mode, the interrupt in service always has highest priority and nesting of interrupts is therefore inhibited. Note: Whenever a bit in the IPS register is set to zero, to program the corresponding pin as an 110 port, any pending interrupt on the corresponding interrupt position will be cleared. 3.15 PDIR - Controls the data bus mode of operation. PORT DIRECTION REGISTER (R21) Used only in the 8-bit Bus Mode. This register determines the direction of any of the pins GOIIRO, ... ,G711R14 programmed as I/O ports by the IPS register. A logic 1 indicates an input, while a logic 0 indicates an output. T1SN8 = 0 = > 8-Bit Bus Mode T1SN8 = 1 = > lS-Bit Bus Mode At reset, all MCTL bits except COUTD, are reset to O. COUTD is set to 1. At Reset, all the PDIR bits are set to 1. 3.16 CCTL - 3.11 OCASN - OUTPUT CLOCK ASSIGNMENT REGISTER (R17) Used only in the 8-bit Bus Mode. The four least significant bits of this register control the output clock assignments on pins GOIIRO, ... ,G3I1RS. If any of these bits is set to 1, the clock generated by either the H-Counter or the H + L-Counter will be output to the corresponding pin. The four most significant bits of OCASN are not used. At Reset the four least significant bits are set to O. L At reset, all bits in the CIPTR are set to 1. (This means both counters are assigned to interrupt position 15.) NTAR = 0 = > Auto-Rotate Mode NTAR = 1 = > Fixed Mode T1SN8 L Note: Assignment of a counter output to an interrupt position also requires control bits to be set in the CICTL register. If a counter output is assigned to an interrupt position, external hardware interrupts at that position are ignored. COUTM = 1 = > Pulsed Form Used only in the 8-bit Bus Mode. This bit controls the clock wave form on any of the pins GOIIRO, ... ,G3I1RS programmed as counter output. CLKM = 0 = FRZ LLLL = H COUNTER CONTROL REGISTER (R22) The CCTL register controls the operating modes of the counters. A bit map of CCTL is shown below. 7 S 5 43210 lCCONlcFNPslcOUTllcOUTolcRUNHlcRUNLlcDCRHlcDCRLl CCON 4-41 Determines whether the counters are independent or concatenated to form a single 32-bit counter (H + L-Counter). If a 32-bit counter is selected, the bits corresponding to the H- • . o .... C'I o 3.0 Architectural Description (Continued) Counter will control the H + L-Counter, while the bits corresponding to the L-Counter are not used. C'I C'I C") (/) z CFNPS CCON = 0 = > Two 16-bit Counters CCON = 1 = > One 32-bit Counter Determines whether the external clock is prescaled or not. CFNPS = 0 = CFNPS = 1 = COUT1& COUTO control bits. In this case the CIEL bit should be set to zero to avoid spurious interrupts from the L-Counter. A bit map of the CICTL register is shown following. 76543210 ICERH ICIRH ICIEH IWENH ICERL ICIRL ICIEL IWENL I H-Counter Error Flag. This bit is set (1) when a second interrupt request from the H-Counter (or H + L-Counter) occurs before the first request is acknowledged. CIRH H-Counter Interrupt Request. It is set (1) when an interrupt is pending from the H-Counter (or H + L-Counter). It is automatically reset when the interrupt is acknowledged. H-Counter Interrupt Enable. When it is set, the H-Counter (or H + L-Counter) interrupt is enabled. H-Counter Control Write Enable. When WEHN is set (1), bits CERH, CIRH, and CIEH can be written. L-Counter Error Flag. This bit is set (1) when a second interrupt request from the L-Counter occurs before the first request is acknowledged. L-Counter Interrupt Request. It is set (1) when an interrupt is pending from the L-Counter. It is automatically reset when the interrupt is acknowledged. L-Counter Interrupt Enable. When it is set (1), the L-Counter interrupt is enabled. L-Counter Control Write Enable. When WENL is set (1), bits CERL, CIRL, and CIEL can be written. > Clock Prescaled (divided by 4) > Clock Not Prescaled. These bits are effective only when the COUTI SCIN pin is programmed as an OUTPUT (COUTO bit in reg. MCTL is 0). Their logic levels are decoded to provide different outputs for COUT/SCIN, as detailed in the table below: CIEH FOUT1 COUTO COUTISCIN Output Signal 0 0 1 1 CERH 0 1 0 1 WENH Internal Sampling Oscillator Zero Detect Of L-Counter Zero Detect Of H-Counter Zero Detect Of H + L-Counter* CERL 'If the H· and L·Counters are not concatenated and COUT1/COUTO are both I, the COUTISCIN pin Is active when either counter reaches zero. CRUNH CRUNL CDCRH CDCRL CIRL Determines the state of either the H-Counter or the H + L-Counter, depending upon the status ofCCON. CRUNH = 0 = > H-Counter or H + L-Counter Halted CRUNH = 1 = > H-Counter or H + L-Counter Running Effective only when CCON = O. This bit determines whether the L-Counter is running or halted. CRUNL = 0 = > L-Counter Halted CRUNL = 1 = > L-counter Running Effective only when CRUNH =0 (Counter Halted). This bit is the single cycle decrement signal for either the H-Counter or the H + L-Counter. CIEL WENL Nole: Selling Ihe write enable bits (WENH or WENL) and writing any of the other CICTL bits are concurrent operations. That is, the ICU willig· nore any attempt to alter CICTL bits if the proper write enable bit is not set in the data byte. At reset, all CICTL bits are set to O. However, if the counters are running, the bits CIRL, CERL, CIRH and CERH may be set again after the reset Signal is removed. 3.18 LCSV/HCSV - L·COUNTER STARTING VALUEI H·COUNTER STARTING VALUE REGISTERS (R24, R25, R26, AND R27) The LCSV and HCSV registers store the start values for the L-Counter and H-Counter, respectively. Each time a counter reaches zero, the start value is automatically reloaded from either LCSV or HCSV, one clock cycle after zero count is reached. Loading LCSV or HCSV from the CPU must be synchronized to avoid writing the registers while the reloading of the counters is occurring. One method Is to halt the counters while the registers are loaded. CDCRH = 0 = > No Effect CDCRH = 1 = > Decrement H·Counter or H + L-Counter Effective only when CRUNL = 0 and CCON = O. This bit is the single cycle decrement signal for the L-Counter. CDCRL = 0 = CDCRL = 1 = > > No Effect Decrement L-Counter Note: The bits CDCRL and CDCRH are set when a logic 1 is written into them, but, they are automatically cleared after the end of the write operation. This is needed to accomplish the decrement operation. Therefore, these bits always contain 0 when read. When the 16-bit counters are concatenated, the LCSV and HCSV registers hold the 32-bit start count, with the least significant byte in R24 and the most significant byte in R27. Reset does not affect the CCTL bits. 3.19 LCCVlHCCV - L·COUNTER CURRENT VALUEI H·COUNTER CURRENT VALUE REGISTERS (R28, R29, R30, AND R31) 3.17 CICTL - COUNTER INTERRUPT CONTROL REGISTER (R23) The CICTL register controls the counter interrupts and records counter interrupt status. Interrupts can be generated from either of the 16-bit counters. When the counters are concatenated, the interrupt control is through the H-Counter The LCCV and HCCV registers hold the current value of the counters. If the CFRZ bit in the MCTL register is reset (0), these registers are updated on each clock cycle with the current value of the counters. LCCV and HCCV can be read only when the counter readings are frozen (CFRZ bit in the 4-42 z 3.0 Architectural Description CJ) Co) (Continued) N N o ~ ..... o HALJ COUNTERS BY CLEARING BITS CRUNL AND CRUNH IN REG. CCTL WRITE COUNTER'S STARTING VALUES INTO LCCV AND HCCV TO AVOID LONG INITIAL COUNTS RESET COUTO BIT IN MCTL TO PROGRAM CaUT ISCtN PIN AS AN OUTPUT AND ENABLE THE INTERNAL INTERRUPT SAMPLING CLOCK START COUNTERS BY SETTING BITS CRUNL AND/OR CRUNH IN REG. CCTL o TL/EE/5117-15 FIGURE 3-3. Recommended leU's Initialization Sequence 4-43 Status (ST1): Status signal from the CPU. When the Hardware Vector Register is read, this signal differentiates an INTA cycle from an RETI cycle. If ST1 =0 the ICU initiates an INTA cycle. If ST1 =1 an RETI cycle will result. Interrupt Requests (lR1, IR3 ••• , IR15): These eight inputs are used for hardware interrupts. Each may be individually triggered in one of four modes: Rising Edge, Falling Edge, low level, or High level. Counter Clock (ClK): External clock signal to drive the ICU internal counters. 3.0 Architectural Description (Continued) MCTl register is 1). They can be written only when the counters are halted (CRUNl and/or CRUNH bits in the CCTl register are 0). This last feature allows new initial count values to be loaded immediately into the counters, and can be used during initialization to avoid long initial counts. When the 16-bit counters are concatenated, the lCCV and HCCV registers hold the 32-bit current value, with the least significant byte in R28 and the most significant byte in R31. 4.1.3 Output Signals Interrupt Output (INn: Active low. This signal indicates that an interrupt is pending. 3.20 REGISTER INITIALIZATION Figure 3-3 shows a recommended initialization procedure for the ICU that sets up all the ICU registers for proper operation. 4.1.4 Input/Output Signals Data Bus 0-7 (DO through 07): Eight low-order data bus lines used in both 8-bit and 16-bit bus modes. General Purpose I/O lines (GO/IRO, GlIIR2, ••• ,G7/ IR14): These pins are the high-order data bits when the ICU is in the 16-bit bus mode. When the ICU is in the 8-bit bus mode, each of these can be individually assigned one of the following functions: • Additional Hardware Interrupt Input (IRO through IR14) • General Purpose Data Input • General Purpose Data Output • Clock Output from H-Counter (Pins GO/IRO through G3/IR6 only) 4.0 Device Specifications 4.1 NS32202 PIN DESCRIPTIONS 4.1.1 Power Supply Power (Vee): + 5V DC Supply Ground (GND): Power Supply Return 4.1.2 Input Signals Reset (RST): Active low. This signal initializes the ICU. (The ICU initializes to the 8-bit bus mode.) Chip Select (CS): Active low. This signal enables the ICU to respond to address, data, and control signals from the CPU. Addresses (AO through A4): Address lines used to select the ICU internal registers for read/write operations. High Byte Enable (HBE): Active low. Enables data transfers on the most-significant byte of the Data Bus. If the ICU is in the 8-bit Bus Mode, this signal is not used and should be connected to either GND or Vee. Read (RD): Active low. Enables data to be read from the ICU's internal registers. Write (WR): Active low. Enables data to be written into the ICU's internal registers. It should be noted that, for maximum flexibility in assigning interrupt priorities, the interrupt positions corresponding to pins GO/IRO, ... ,G7/IR14 and IR1, ... ,IR15 are interleaved. Counter or Oscillator Output/Sampling Clock Input (COUT/SCIN): As an output, this pin provides either a clock signal generated by the ICU internal oscillator, or a zero detect Signal from one or both of the ICU counters. As an input, it is used for an external clock, to override the internal oscillator used for interrupt sampling. This is done only for testing purposes. 4-44 z en w 4.0 Device Specifications (Continued) N N o 4.2 ABSOLUTE MAXIMUM RATINGS Temperature Under Bias Storage Temperature O·Cto +70·C -65·C to + 150·C All Input or Output Voltages with Respect to GND Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. -0.5Vto +7.0V Power Dissipation 1.5 Watt 4.3 ELECTRICAL CHARACTERISTICS TA = o· to 70·C, Vee = +5V ± 5%, GND = OV Symbol Parameter Conditions VIL Input Low Voltage VIH Input High Voltage VOL Output Low Voltage IOL = 2mA VOH Output High Voltage IOH = -400 p.A IL Leakage Current (Output and 1/0 Pins in TRI-STATE/lnput mode) 0.4 ,;; VIN ,;; Vee II Input Load Current Vin=OtoVcc Icc Power Supply Current lout = 0, T = O·C Min Typ Max Units 0.8 V 2.0 Connection Diagram IRI5- 1 00-2 STI- 3 G7/IR1C- 4 G&/IRI2- 5 G511Rl0- 6 GC/IRB- 7 G3/IR6- 8 G2/IRC- 9 Bl/IR2- 10 GO/IRO- 11 07- 12 06- 13 05- 14 04- 15 03- 16 02- 17 01-18 00- 19 GHO- 20 NS32202 ICU 0.45 2.4 -20 -20 40 I--- Vee 391---IR13 38 I---IRl1 37 I---IR9 36 1---1R7 35 I---IR5 34 I---IR3 33 I---IRI 32>-- cue 31 -Viii 3O-iiii' 29 28 27 26 25 24 23 22 21 -toUT/SC,. -HBE -RST -A4 -A3 -A2 -AI -AD -C! Top View Order Number NS32202D-6, NS32202D·10 See NS Package Number D40C FIGURE 4-1 4-45 V TL/EE/5117-3 V V 20 p.A 20 p.A 300 mA ....o~ 4.0 Device Specifications (Continued) 4.4 SWITCHING CHARACTERISTICS 4.4.1 Definitions Abbreviations: All the timing specifications given in this section refer to O.BV or 2.0V on the input and output signals as illustrated in Figure 1, unless specifically stated otherwise. L.E.-Ieading edge R.E.-rising edge T.E.-trailing edge F.E.-falling edge ::>(2.0 : 0.1 TElT POINTS !:: TEST POINTS x:: TUEE/5117 -16 FIGURE 4-2. Timing Specification Standard 4.4.1.1 Timing Tables Symbol Figure Description Reference/Conditions NS32202-10 Min Units Max READ CYCLE tAhRDia 4-3 Address Hold Time After RD T.E. 10 ns tAsRDa 4-3 Address Setup Time Before AD L.E. 35 ns tCShRDia 4-3 CSHoldTime After RD T.E. 15 ns tCSsRDa 4-3 CS Setup Time Before RD L.E. 30 tDhRDla 4-3 Data Hold Time After RD T.E. tRDaDv 4-3 Data Valid After RD L.E. tROw 4-3 RD Pulse Width At O.BV (Both Edges) 160 ns tSsRDa 4-3 ST1 Setup Time Before RD L.E. 35 ns tShRDia WRITE CYCLE 4-3 ST1 Hold Time After RD T.E. -30 ns tAhWRla 4-4 Address Hold Time After WR T.E. 10 ns tAsWRa 4-4 Address Setup Time Before WR L.E. 35 ns !cShWRia 4-4 CSHoldTime After WR T.E. 15 ns tCSsWRa 4-4 CS Setup Time Before WR L.E. 30 ns tDhWRia 4-4 Data Hold Time After WR T.E. 10 ns tDsWRia 4-4 Data Setup Time Before WR T.E. 70 tWRiaPf 4-4 Port Output Floating After WR T.E. (To PDIR) 200 ns tWRiaPv 4-4 Port Output Valid After WR T.E. 200 ns tWRw 4-4 WR Pulse Width At O.BV (Both Edges) 4-46 5 160 ns 50 ns 150 ns ns ns z (J) 4.0 Device Specifications (Continued) Co) N N o 4.4.1.1 Timing Tables (Continued) Symbol Figure Description Reference/Conditions NS32202-10 Min Units Max ....o~ OTHER TIMINGS tCOUTI 4-S Internal Sampling Clock low Time At O.SV (Both Edges) tCOUTo 4-S Internal Sampling Clock Period tSCINh 4-7 External Sampling Clock High Time At 2.0V (Both Edges) tSCINI 4-7 External Sampling Clock low Time At O.SV (Both Edges) tSCINp 4-7 External Sampling Clock Period Ich 4-9 External Clock High Time (Without Prescaler) At 2.0V (Both Edges) tChp 4-9 External Clock High Time (With Prescaler) At 2.0V (Both Edges) tCI 4-9 External Clock low Time (Without Prescaler) At O.SV (Both Edges) tClp 4-9 External Clock low Time (With Prescaler) At O.SV (Both Edges) tCy 4-9 External Clock Period (Without Prescaler) tCyp 4-9 External Clock Period (With Prescaler) tGCOUTI 4-9 Counter Output Transition Delay After ClK F.E. IcOUTw 4-9 Counter Output Pulse Width in Pulsed Form At O.SV (Both Edges) tACKIR 4-5 Interrupt Request Delay After Previous Interrupt Acknowledge tlRld 4-5 INT Output Delay After Interrupt Request Active tlRw 4-5 Interrupt Request Pulse Width in Edge Trigger At O.SV (Both Edges) RST Pulse Width At O.SV (Both Edges) tRSTw 50 ns 400 ns 100 ns 100 ns SOO ns 100 ns 40 ns 100 ns 40 ns 400 ns 100 ns 300 ns 50 ns 500 ns SOO ns 50 ns 400 ns 4.4.1.2 Timing Diagrams ) ADDRESS sn:=) IS.RD4 !---IAsROI- CS • l( ~ICS""'-IS.ROI- IROw 0 K -- ......- -' ~tCS"RDII--+1 iiD 0 DATABUS------ - - IROIIlv ---- - ------------- J 0 FIGURE 4-3. READIINTA Cycle 4-47 Io.ROoo-1 DATA YAUD ------- TL/EE/5117-17 ... o N o a 4.0 Device Specifications (Continued) C\I z ADDRESS -"'-- DATA BUS DATAVAUD OUTPUT PORT MU __________________________________________________J TLlEE/5117-1S FIGURE 4-4. Write Cycle iitiIINTA) TLlEE/5117-19 FIGURE 4-5. Interrupt Timing in Edge Triggering Mode IR \~ ____________ ~t: r=,-1.____,r \_---/ iiiiIINTA) FIGURE 4-6. Interrupt TIming in Level Triggering Mode 4-48 TLlEE/5117-20 z en 4.0 Device Specifications (Continued) Co) N N o ~ ..... o cue TL/EE/5117-21 Note: Interrupts are sampled on the rising edge of elK. FIGURE 4-7. External Interrupt-Sam pIIng-Clock to be Provided at Pin COUT/SCIN When in Test Mode seue TL/EE/5117-22 FIGURE 4-8. Internal Interrupt-Sampling-Clock Provided at Pin COUT/SCIN CLK COUNTER OUTPUT IN SQUARE ---~ WAVEFORM TL/EE/5117-23 FIGURE 4-9. Relationship Between Clock Input at Pin ClK and Counter Output Signals at Pins COUT/SCIN or GO/RO, ••• ,G3/R6, in Both Pulsed Form and Square Waveform II 4-49 o .-------------------------------------------------------------------------, .... ~ C'II ~ ~National PRELIMINARY ~ Semiconductor Z NS32203-10 Direct Memory Access Controller General Description Features The NS32203 Direct Memory Access Controller (DMAC) is a support chip for the Series 32000® microprocessor family designed to relieve the CPU of data transfers between memory and 1/0 devices. The device is capable of packing data received from 8-bit peripherals into 16-bit words to reduce system bus loading. It can operate in local and remote configurations. In the local configuration it is connected to the multiplexed Series 32000 bus and shares with the CPU, the bus control signals from the NS32201 Timing Control Unit (TCU). In the remote configuration, the DMAC, in conjunction with its own TCU, communicates with 1/0 devices and lor memory through a dedicated bus, enabling rapid transfers between memory and 1/0 devices. The DMAC provides 4 16-bit 1/0 channels which may be configured as two complementary pairs to support chaining. • Direct or Indirect data transfers • Memory to Memory, 1/0 to 1/0 or Memory to 1/0 transfers • Remote or Local configurations • 8-Bit or 16-Bit transfers • Transfer rates up to 5 Megabytes per second • Command Chaining on complementary channels • Wide range of channel commands • Search capability • Interrupt Vector generation • Simple interface with the Series 32000 Family of Microprocessors • High Speed XMOSTM Technology • Single + 5V Supply • 48-Pin Dual-In-Line Package Block Diagram A16-A23 REaO ADO-ADI5 ACKO HBE ODIN ADS Cs ROY ClK BREa BGRT HOLD HlDA lORD IOWR REal u 6 g ... ACKI u i::!: ""~ ;;!; REa2 III :::J m ACK2 REa3 iNi RST/HlT ACK3 TUEE/8701-1 4-50 .--------------------------------------------------------------------------, zCJ) Table of Contents 1.0 PRODUCT INTRODUCTION 2.0 FUNCTIONAL DESCRIPTION 2.2 Data Transfer Operations 2.2.1 Indirect Data Transfers 2.2.2 Direct (FLYBY) Data Transfers 2.3 Local Configuration 2.4 Remote Configuration 2.5 Data Source (Destination) Attributes 2.6 Word Assembly/Disassembly 2.7 Auto Transfer 2.8 Search 2.9 Interrupts 2.10 Transfer Modes 2.11 Chaining 2.12 Channel Priorities 3.0 ARCHITECTURAL DESCRIPTION 3.1 Global Registers 3.1.1 CONF· Configuration Register 3.1.2 HVCT • Hardware Vector Register 3.1.3 SVCT - Software Vector Register 3.1.4 STAT - Status Register 3.2 Control Registers 3.2.1 COM - Command Register 3.2.2 SRCH - Search Register 3.0 ARCHITECTURAL DESCRIPTION (Continued) 3.3 Parameter Registers 3.3.1 SRC - Source Address Register 3.3.2 DST - Destination Address Register 3.3.3 LNGT - Block Length Register 4.0 DEVICE SPECIFICATIONS 4.1 NS32203 Pin Descriptions 4.1.1 Supplies 4.1.2 Input Signals 4.1.3 Output Signals 4.1.4 Input/Output Signals 4.2 Absolute Maximum Ratings 4.3 Electrical Characteristics 4.4 Switching Characteristics 4.4.1 Definitions 4.4.2 Timing Tables 4.4.2.1 Output Signals: Internal Propagation Delays 4.4.2.2 Input Signal Requirements 4.4.2.3 Clocking Requirements 4.4.3 Timing Diagrams Appendix A: Interfacing Suggestions List of Illustrations Power-on Reset Requirements ...............................................................•................... 2-1 General Reset Timing ..........................................................................................2-2 Recommended Reset Connections ............................................................................... 2-3 Indirect Read Cycle ............................................................................................2-4 Indirect Write Cycle (Single Transfer Mode) ........................................................................ 2-5 Direct Memory·To-IlO Data Transfer (Single Transfer Mode) ......................................................... 2-6 Direct IIO-To-Memory Data Transfer (Single Transfer Mode) ......................................................... 2-7 NS322031nterconnections ....................................................................................•.2-8 Write to NS32203 Internal Registers .............................................................................. 2-9 Read from NS32203 Internal Registers .......................................................................... 2-10 NS 32203 Internal Registers .....................................................................................3-1 NS32203 Connection Diagram ..........................................................................•....•...4-1 Timing Specification Standard (Signal Valid After Clock Edge) ........................................................ 4-2 Timing Specification Standard (Signal Valid Before Clock Edge) ...................................................... 4-3 Write to DMAC Registers ....................................................................................... .4-4 Read From DMAC Registers .....................................................................................4-5 Clock Timing ................................................................................................. .4-6 Indirect Write Cycle ............................................................................................ .4-7 Indirect Read Cycle ........................................................................................... .4-8 Direct 1I0-To-MemoryTransfer .............................................................................•.... 4·9 Direct Memory-To-I/O Transfer ................................................................................. 4-10 HOLD/HOLDA Sequence Start .................................................................................4-11 HOLD/HOLDA Sequence End .................................................................................. 4-12 Bus Request/Grant Sequence Start .............................................................................4-13 Bus Request/Grant Sequence End ..............................................................................4-14 Ready Sampling ..............................................................................................4-15 REOn/ ACKn Sequence (DMAC Initially Not Idle) ..................................................................4-16 REOn/ ACKn Sequence (DMAC Initially Idle) ...................................................................... 4-17 HaltedCycle .................................................................................................4-18 Interrupt On Match/No Match ..................................................................................4-20 Interrupt On Halt ..............................................................................................4-21 Power-on Reset ..............................................................................................4-22 Non-Power-on Reset ..........................................................................................4-23 NS322031nterconnections in Remote Configuration ................................................................ A-1 4·51 w I\) I\) o tf .... o 1.0 Product Introduction The NS32203 Direct Memory Access Controller (DMAC) is specifically designed to minimize the time required for high speed data transfers in a Series 32000-based computer system. It includes a wide variety of options and operating modes to enhance data throughput and system optimization, and to allow dynamic reconfiguration under program control. begin. A set of registers is provided for each channel to control the type of operation for that channel. Bus Interface Unit. The bus interface unit controls all data transfers between peripheral I/O devices and memory whenever the DMAC is in control of the bus. This unit also controls the transfer of data between the CPU and the DMAC internal registers. The NS32203 can operate in two basic system configurations: local and remote. In the local configuration, the DMAC and the CPU share the same bus (address, data and control) and only one of them can perform data transfers on the bus at anyone time. In this configuration, the DMAC and the CPU also share a Timing Control Unit (TCU) and a single set of address latches. Since this configuration yields a minimum part-count system, it offers a good cost/performance trade-off in many situations. The remote configuration is intended to minimize the CPU bus use. In this configuration, the NS32203 I/O devices and optional buffer memory have their own dedicated bus (remote bus) so that an I/O transfer may be performed without loading the CPU bus (local bus). Timing and Control Logic. This block generates all the sequencing and control signals necessary for the operation of the DMAC. Priority Resolver. This block resolves contentions among channels requesting service simultaneously. 2.0 Functional Description 2.1 RESETTING The RST/HLT line serves both as a reset input for the onchip logic and as a DMAC HALT input. Resetting is accomplished by pulling RST/HlT low for at least 64 clock cycles. Upon detecting a Reset, the DMAC terminates any Data transfer in progress, resets its internal logic and enters an inactive state. On application of power, RST /HlT must be held low for at least 50 ,...S after Vee is stable. This is to ensure that all on-Chip voltages are stable before operation. Whenever reset is applied, the rising edge must occur while the clock signal on the ClK pin is high (see Figure 2-1 and 2-2). The NS32201 TCU provides circuitry to meet the reset requirements. Figure 2-3 shows the recommended connections. The HALT function is accomplished when RST/HlT is activated for 1 or 2 clock cycles and then released. It can be used to stop any data transfer in progress in case of a bus error. As soon as HALT is acknowledged by the NS32203, the current transfer operation is terminated. See Figure 4-18. Communication between the dedicated bus and the CPU bus may be initiated at any time by either the CPU or the NS32203. The DMAC accesses the CPU bus whenever a data transfer to/from memory or any I/O device residing on this bus is to be performed. The CPU, in turn, accesses the dedicated bus for reading status data or for programming either the DMAC or its I/O devices. The NS32203 internal organization consists of seven functional blocks as illustrated in the block diagram. Descriptions of these blocks are given below. DMA Channels. The NS32203 provides four channels. Each channel accepts a request from a peripheral I/O device and informs it when data transfer cycles are about to 4.5V·'eo_ _ _ _ _ _ _ _ cc---" V eLK ..,....---- 5~ _oJ ~ "-U 14------~50~.,---~-+I omB} -~I----..I! FIGURE 2-1. Power-On Reset Requirements 4-52 TLlEE/8701-2 2.0 Functional Description (Continued) CLK~Jl-Il1---64 CLOCK CYCLES--....j RST/HLT--~'n'&",,~~m~ 55 r TL/EE/B701-3 FIGURE 2·2. General Reset Timing Vee NS32201 TCU NS32203 DMAC p----------. I I_I RESET I ._---------" I EXTERNAL RESET (OPTIONAL) SYSTEM RESET RESET SWITCH (OPTIONAL) HALT (OPTIONAL) TLlEE/B701-4 FIGURE 2·3. Recommended Reset Connections 2.2 DATA TRANSFER OPERATIONS After the NS32203 has been initialized by software, it is ready to transfer blocks of data, containing up to 64 kbytes, between memory and I/O devices, without further intervention required of the CPU. Upon receiving a transfer request from an I/O device, the DMAC performs the following operations: Each channel can be programmed for indirect or direct data transfers. Detailed descriptions of these transfer types are provided in the fOllowing sub-sections. 2.2.1 Indirect Data Transfers In this mode of operation, each byte or word transfer between source and destination requires at least two bus cycles. The data is first read into the DMAC and subsequently it is written into the destination. The bus cycles in this case are similar to the CPU bus cycles when the MMU is not used. This mode is slower than the direct mode, but is the only one that allows some data manipulation like Byte Search or Word Assembly/Disassembly. Figure 2-4 and 2-5 show the read and write cycle timing diagrams related to indirect data transfers. If a search operation is specified, extra clock cycles may be added fOllowing each read cycle. 1) Acquires control of the bus 2) Acknowledge the requesting I/O device which is connected to the highest priority channel. 3) Starts executing data transfer cycles according to the values stored into the control registers of the channel being serviced. 4) Terminates data transfers and relinquishes control of the bus as soon as one of the programmed conditions is met. 4-53 o,... ,-----------------------------------------------------------------------. ~ o 2.0 Functional Description (Continued) N N n ('I) en z elK A16-23 n 12 T1 T3 T4 r-- --rL-rL-rL-!Lf1-- L~r.tUUHli{III1IUJJ/J... I L' I I ROY l L' ADO-15 ~ rL... InORnl y:- r- ~ - '(!I..'-_100 ,~ }-I(fffL .c:t- IV u ADDRESS VALID - DATA IN}- I-- i""'- ~ II II VALID 1\ II 1 [' II \ {. e- n { NS*2201 SIGN AlS 1\ II TL/EE/8701-5 FIGURE 2-4. Indirect Read Cycle 4·54 2.0 Functional Description Ti z en ~ (Continued) I\) I\) Ti T2 T1 T4 13 I Tl OR Ti . o I ~ ...... o CLK [ A16-23 [ 'hVlIIIII!J /IIIIII!J !If.. ADO-15 [ h 1 - 'II. ~1I. r,--- ADDRESS VALID '- X ADDR. - ~ r- DATA OUT ADS [ U oorn[~ 1fI111111/, rI///////!J u \ 'II, HBE [ ROY [ 'IX li'flllllll, ACKn [ + 'II, ~j, VI, I 1\ J \ I HOLD [ HLDA [ iVR[ ~ I- VlIIIII IOWR [ r'- VALID NSi~OI SIGT r- S I TLlEE/8701-6 FIGURE 2-5. Indirect Write Cycle (Single Transfer Mode) Note: If bUrst mode is selected, HOLD is released at the end of the transfer operation. 4-55 C) .... ~ ~ C") en z r-------------------------------------------------------------------------------------~ 2.0 Functional Description (Continued) direct data transfers. Figures 2-6 and 2-7 show the timing diagrams of direct memory-to· I/O and I/O-to-memory transfers respectively. 2.2.2 Direct (Flyby) Data Transfers This mode of operation allows a very high data transfer rate between source and destination. Each data byte or word to be transferred requires only a single bus cycle instead of two separate read and write cycles, which are typical of the indirect mode. The DMAC accomplishes direct data transfers by activating lORD, during memory write cycles, and 10WR, during memory read cycles. Note 1: In the direct mode each channel can control only one 1/0 device because the 1/0 device Is hardwired to the ACKn output of the corresponding channel. In the Indirect mode. a channel can control multiple devices as long as each device is selected through its own address rather than the liCKn output. However. the possiblity of selecting a single 1/0 device by the liCKn output is maintained in the Indirect mode as well. An I/O device, in the direct mode, is usually enabled by the proper acknowledge signal (ACKn) from the DMAC. No search or word assembly/disassembly are possible during n elK A16-23 ADD-15 n Note 2: Whenever the DMAC is either idle or is performing indirect transfers. it generates the lORD and IOWR signals as a replica oi RD and WR. This simplifies the logiC required to access 1/0 devices wired for direct data transfers. T1 T2 IZ'IIIIIIIINIIIIII/) fJI.. IOWR I Tl OR nI I L' I - _ . . ..l-... .~ '"'"flI\-~)-I-- \ L' X VALID 1\ II II \ I. [- ~ _- '"L_ U I L' [. L' .-L-_ ADDRESS VALID I ROY T4 T3 [_rurLrLiLfl--!L L-~ I rOOT r ~ I TLfEEf8701-7 FIGURE 2-6. Direct Memory-To-1/0 Data Transfer (Single Transfer Mode) 4-56 z 2.0 Functional Description en Co) (Continued) even though it is directed to an 110 device and is related to an indirect data transfer. This causes the system to be quite sensitive to the volume of data handled by the DMAC. Thus, the overall system performance decreases as the volume of data increases. A possible solution to this problem is to use the remote configuration, described in the following section. A significant advantage of the local configuration is its sim· plicity. 2.3 LOCAL CONFIGURATION As previously mentioned, in the local configuration the DMAC shares with CPU and MMU the multiplexed addressl data bus as well as the control signals from the NS32201 TCU. A typical local configuration is shown in Figure 2·8. The DMAC, in the local configuration, must gain control of the bus whenever a data transfer cycle is to be performed, CL{_HJ--U--LrL.r-L~~ I 7.WllllllplIlIlI!.V>/. A16- ADO- I -II Vlllli Y, ADDRESS VALID ,- •""AOOR. I}.Qlh I?lJc - }. DATA ~ I- IV ADSl' 01 i rC ~ -17J i\ HBE [ 7. Y, VALID ,,, Dvl ~ ~ r\ o l' II - WRl 10 \ Kn II u{ I '- { DAI. ~ NS: ~2201 SIGN ~LS iYR[ r\ II TL/EE/8701-8 FIGURE 2·7. Direct I/O·To·Memory Data Transfer (Single Transfer Mode) 4·57 '"'"o • Co) ....o NS32203-10 A ... a, < ADS STO-3 ROY HLDA ODIN PHil PHI2 HOLD ADS STO-3 ~ ROY HLDAI ODIN PHil PHI2 HOLD RSTI HLDAO .:: PHil PHI2 NS32201 TCU ADS RST ODIN RDY CTIL ViR Ro NS32082 MMU --+ Rii ... PAY f-- D.iJ I v I 11 HLDA HBE ' - - - HOLD CS ADS ACKO RST DDiN NS32203 RDY DMAC REOO U~I BREO ACKI REal ACK2 RE02 ACK3 RE03 lORD 10WR ~DR >. n° e!. cCD 00-15 .< (I) n ~. "tl o::::I· DO-1St-. ~ '§ ::J g. ADDRESS LATCHES c: CD II fr-,J). L~6-23 DO-I~ j cm r-- ~ ::::I MEMORY '" 7 ,K A DATA BUFFERS 'I L ~1f-i}5 tlJ o· HBE CS r---+ .--- IIII III 'I ::::I n PFS u/s U~~ (X) c::: RSTI ABT u/s D. ." FLT HBE A16-23 DO-IS <- b Ar/SPC FLT RSTj ABT PFS NS32016 CPU N INT NMI Ar/SPC .e, AO - 23~1\. '~~~ --DECODER L D. ADDR 00-15 ADDR 00-7 16-BIT I/O DEVICE 8-BIT I/O DEVICE CS r+CS REO ---+ RiiViR REO Rii ViR ~ ~ TL/EE/8701-9 FIGURE 2-8. NS322031nterconnections In Local Configuration Note 1: The 16 Bit 110 device is wired for direct transfers. Note 2: The data buffers should not be enabled during direct data transfers or CPU accesses to the DMAC registers. z 2.0 Functional Description (f) Co) (Continued) The CPU can either be interrupted by BGRT or it can poll BGRT to determine when the dedicated bus can be ac· cessed. The DMAC, in turn, before accessing the CPU bus, has to gain control of it. This is accomplished through the usual request·acknowledge mechanism performed by means of the HOLD and HLDA signals. 2.4 REMOTE CONFIGURATION The remote configuration is intended to minimize CPU Bus usage. In this configuration, the DMAC, buffer memory and 110 devices reside on a dedicated bus. Communication be· tween the dedicated bus and the CPU bus is achieved by means of TRI·STATE buffers. Whenever the CPU needs to access the dedicated bus, it issues a bus request to the NS32203 by activating the BREQ signal. As the dedicated bus becomes idle, the DMAC pulls off the bus and acknowl· edges the CPU request by activating BGRT. This output is also used as a control signal for the interconnection logic of the two buses. T1 Figure A-1 in Appendix A shows an interconnection diagram of a basic remote configuration. Both TCUs are clocked by the same clock signal. They are synchronized during reset by the RWEN/SYNC signal so that their output clocks are in phase. Figures 2-9 and 2-10 show the timing diagrams for read and write accesses to the NS32203 internal registers. T2 eLK [ ADS [ ADO-15 [ DDIN [ HBE [ es[ NS32201 SIGNALS Wil[ TL/EE/B701-10 FIGURE 2-9. Write to NS32203 Internal Registers T1 T2 T3 ADO-15 [ DDIN[-r~__~____r-__~____~~__4HBE [~r'-__~__~~____+-____~~__~ es[ Rii[ NS32201 SIGNALS TLiEE/B701-11 FIGURE 2-10. Read from NS32203 Internal Registers 4-59 N N o ~ ....o .... r---------------------------------------------------------------------------------, C) ch C) N N ~ Z 2.0 Functional Description (Continued) 2.5 DATA SOURCE (DESTINATION) ATTRIBUTES 2.7 AUTO TRANSFER Two types of data source (destination) are recognized: I/O device and memory. If the source (destination) is an I/O device, its address register is not changed after a data transfer; if it is memory, its address register is either incremented or decremented after any data transfer, according to the value of the corresponding direction bit. In the remote configuration, any data source (destination) may reside either on the CPU bus or on the dedicated bus. If it resides on the dedicated bus, the NS32203 does not activate the HOLD request line when an access to the source (destination) is performed, unless a direct transfer with a data destination (source) residing on the CPU bus is required. The NS32203 initiates a data transfer as a result of a request from an I/O device. In some cases a data transfer may be necessary without the corresponding request signal being asserted. This can happen, for example, when a block of data is to be moved from one memory region to another. In such cases, the auto transfer mode can be selected by setting an appropriate bit in the command register. The DMAC will initiate a data transfer regardless of the REOn signal for that channel. Nole: For proper operation, when auto transfer is required, the low order byte of the command register (containing the auto·transfer enable bit) should be written Into aiter the other registers conirolling the channel operation have been initialized. Data can be transferred in either B bit or 16 bit units. The DMAC always considers the memory to be 16 bits wide. Thus, if an a bit transfer is specified, address bit AO will determine the byte of the data-bus where the transfer takes place. If AO = 0, the transfer occurs on the low order byte. If AO = 1, it occurs on the high order byte. Different transfer widths can be specified for source and destination. However, some limitations exist in specifying these transfer widths when certain operations must be performed. These limitations are explained below. 2.8 SEARCH The NS32203 provides a search capability that can be used to detect the occurrence of a certain data pattern. The search is performed by comparing each data byte with the search register, in conjunction with the mask register. An appropriate bit in the command register indicates whether the search continues 'UNTIL' a match occurs, or 'WHILE' a match exists. The search operation does not necessarily involve a data transfer. The DMAC allows a block of data to be searched without requiring any data transfer between source and destination. When performing a search, the user can specify whether or not the matched byte will be transferred. If 'INCLUSIVE SEARCH' is specified (INC = 1), the matched byte will be transferred, and the channel parameters will be updated accordingly. In this case, if a 16 bit word has been read from the data source and the search condition is satisfied by the low order byte, then the high order byte is transferred as well. If 'EXCLUSIVE SEARCH' is specified (INC = 0), the transfer will terminate with the last byte before the search condition was satisfied, and the parameters will pOint to the last transferred byte. 1) If a transfer block has an odd number of bytes or is not word aligned, an a bit width for source and destination should be selected. 2) 16-bit I/O transfers can not be specified with a bit memory transfers. 3) Memory to memory transfers should have the same width. Note 1: If source and destination are both memory. DMAC transfers can only be performed in indirect mode. Note 2: If source and destination are both 1/0 devices and direct mode is being used, the source device is accessed by lORD and ACKn; the destination device is accessed by WR (from the NS32201) and CS (from the address decoder). This allows a one direction data trans· fer only from one 1/0 device (source) to another. If data is to be transferred in both directions in direct mode between two 110 devioBS, two channels must be used (one for each direction of transfer). and extra hardware is required to control the read and write signals to the two 1/0 devices. Search is not possible during direct transfers. 2.9 INTERRUPTS The NS32203 provides interrupt circuitry that can be used to generate an interrupt whenever a data transfer is completed or a search condition is met. If an NS32202 ICU is used, the INT signal from the DMAC should be connected to an interrupt input of the ICU. When an interrupt occurs and the corresponding interrupt acknowledge (INTA) or return from interrupt (RETI) cycle is executed by the CPU, the NS32203 supplies its own vector as if it were a cascaded ICU. For such operation the virtual address of the interrupt vector register should be placed in the ICU cascade table, described in the NS32016 and NS32202 data sheets. See section 3.1.2. Note 3: When an 8·bn transfer is related to an 1/0 device, the other half of the 16·bit data bus is considered as DON'T CARE, and the HBEI signal may be activated. 2.6 WORD ASSEMBLY/DISASSEMBLY This feature is automatically enabled when indirect transfers are selected, with data transferred between an a-bit wide I/O device and a 16-bit I/O device or memory. For every 16bit I/O device or memory access, the DMAC accesses the a-bit I/O device twice, assembling two data bytes into a 16bit word or breaking a 16-bit word into two data bytes, depending on the direction of transfer. The word assembly/disassembly feature allows a Significant increase in the transfer speed and minimizes the CPU bus usage when the transfer occurs between an a-bit I/O device residing on the dedicated bus, and a 16-bit I/O device or memory residing on the CPU bus. Word assembly/disassembly is not possible during direct data transfers. 2.10 TRANSFER MODES When the NS32203 is in the inactive state and a channel requests service, the DMAC gains control of the bus and enters the active state. It is in this state that the data transfer takes place in one of the following modes: SINGLE TRANSFER MODE In single transfer mode, the NS32203 makes a single byte or word transfer for each HOLD/HLDA handshake sequence. Nole: Requests from other channels are not acknowledged in the middle of a word assembly/disassembly. If this is unacceptable, 8 bit transfers should be speCified for both source and destination. In this case the request signal from the I/O device is edge sensitive, that is, a single transfer is performed each time a 4-60 z ~ 2.0 Functional Description (Continued) falling edge on REOn occurs. To perform multiple transfers, it is therefore necessary to temporarily deassert REOn after each transfer is initiated. If auto transfer mode is selected, the bus is released between two transfers for at least one clock cycle. The priority resolver checks the priorities on every cycle. If a channel is being serviced and a higher priority request is received, the channel operation is suspended and control passes to the higher priority channel, unless the lock bit for the lower priority channel is set. If the lock bit is set, that channel operation is continued until completion before control passes to the higher priority channel. The bus is always released for at least two clock cycles when control passes from one channel to another. BURST (DEMAND) TRANSFER MODE In burst transfer mode the DMAC will continue making data transfers until REOn goes inactive. Thus, the I/O device requesting service may suspend data transfer by bringing REOn inactive. Service may be resumed by asserting REOn again. If the auto transfer mode is selected, the DMAC will perform a single burst of data transfers until the end-transfer condition is reached. . o Co:! ..... o Two types of priority encodings are available as software selectable options. The first is fixed priority which fixes the channels in priority order based on the decreasing values of their numbers. Channel 3 has the lowest priority, while channel 0 has the highest. The second option is variable priority. The last channel that receives service becomes the lowest priority channel among all other channels with variable priority, while the channels which previously had lower priority will get their priorities increased. If variable priority is selected for all four channels, any I/O device requesting service is guaranteed to be acknowledged after no more than three higher priority services have occurred. This prevents any channel from monopolizing the system. Priority types can be intermixed for different channels. As an example, let channels 0, 2 and 3 have variable priority and channel 1 fixed priority. Channel 2 receives service first, followed by channel O. The priority levels among all channels will change as follows. Nole 1: In either of the transfer modes described above, data transfers can only occur as long as the byte count is not zero or a search condi· tion is not mel Whenever any of these conditions occur, the NS32203 terminates the current operation and releases the bus for at least one clock cycle. Note 2: Whenever the OMAC releases N N FiOD5, it waits for HLOA to go inae· tive for at least one clock cycle before reasserting HOLD again to continue the transfer operation. 2.11 CHAINING The NS32203 provides a chaining feature that allows the four DMAC channels to be regarded as two complementary pairs. Channels 0 and 1 form the first pair, while channels 2 and 3 form the second pair. Each pair is programmed independently by setting the corresponding bit in the configuration register. When two channels are complementary, only the even channel can perform transfer operations, while the odd one serves as temporary storage for the new control values and parameters loaded for the chaining operation. If an operation is being performed by the even channel of a pair and an end-condition is reached, the channel is not returned to the inactive state; rather, a new set of control values with or without parameters is loaded from the complementary channel and a new operation is started. During the reload operation the bus is released for at least two clock cycles. At the end of the second operation the channel returns to the inactive state, unless a new set of values has been loaded into the complementary channel by the CPU. Priority Initial Order Next Order Final Order High 3 ch.O ACK -+ ch.O ch.3 ch.1 ch.1 -+ fixed priority ch.1 2 ch.3 ch.2 1 ACK-+ ch.2 Low 0 ch.3 ch.2 ch.O Whenever the PT bit (priority type) in the command register is changed, the priority levels of all the channels are reset to the initial order. If only one channel has variable priority, then no change in priority will occur from the initial order. Note: If the lock bit is not set, three idle states are inserted between the write cycle of a previous burst indirect transfer and the next read cycle. The chaining feature can be used to transfer blocks of data to/from non-contiguous memory segments. For example, the CPU can load channel 0 and 1 with control values and parameters for the first two blocks. After the operation for the first block is completed by channel 0, the control values and parameters stored in channel 1 are transferred to channel 0, during an update cycle, and a second operation is started. The CPU, being notified by an interrupt, can load channel 1 registers with control values and parameters for the third data block. 3.0 Architectural Description The NS32203 has 128 8-bit registers that can be addressed either individually or in pairs, using the 7 least significant bits of the address bus and the high byte enable signal HBE. Seventy-one of these registers are reserved, while the rest are accessible by the CPU for read/write operations. Figure 3-1 shows the NS32203 internal registers together with their address offsets. Detailed descriptions of these registers are given in the following sections. Note 1: Whenever a reload operation occurs, the register values of the com· plementary channel are affected. Thus. the CPU must always load a new set of values into the complementary channel if another chain· ing operation Is required. 3.1 GLOBAL REGISTERS The global registers consist of one configuration, one status and two interrupt vector registers. They are shared by all channels, and they control the overall operation of the NS32203. Note 2: When the chain option is selected. the CPU must be given the opportunity to acquire the bus for enough time between DMAC opera· tions, in order for the complementary channel to be updated. 2.12 CHANNEL PRIORITIES The NS32203 has four I/O channels, each of which can be connected to an I/O device. Since no dependency exists between the different I/O devices, a priority level is asSigned to each I/O channel, and a priority resolver is provided to resolve multiple requests activated simultaneously. 3.1.1 CONF-Configuration Register This register controls the hardware configuration of the NS32203 as well as the chaining feature. 4-61 • .... Q cJ:. 3.0 Architectural Description (Continued) C") The CONF register format is shown below: 7 4 6 5 3 2 1 0 Q C\I C\I tn I I I xxxxx Z CNF - Cl CO CO = 1 = CNF = 1 = > > > Channels not complementary > Channel 1 complementary to channelO CNF Configuration Bit. Determines whether NS32203 is in local or remote configuration. CNF = 0 = CO- CO = 0 = Cl- the local Configuration Chaining bit for channels 2 and 3. Determines whether or not channels 2 and 3 are complementary. Cl = 0 = Remote Configuration Cl = 1 = Chaining bit for channels 0 and 1. Determines whether or not channel 0 and 1 are complementary. > Channels not complementary > Channel 3 complementary to channel2 XXXXX - Reserved. These bits should be set to O. At reset, all CONF bits are reset to zero. Note: The CNF bit should never be set by the software H the DMAC is wired for local configuration, otherwise bus conflicts will result 23 Channel 0 Control Registers Channel 0 Parameter Registers Channell Control Registers Channell Parameter Registers Channel 2 Control Registers Channel 2 Parameters Registers Channel 3 Control Registers Channel 3 Parameter Registers Global Registers 16 8 15 0 { MSK (0816) Search Mask { { { { SRC(H) (OE16) SRC(M) (0016) SRC(l) (OC16) Source Address DST(H) (1216) DST(M) (1116) DST(l) (1016) Destination Address lNGT(H) (1516) lNGT(l) (1416) Block length COM(M) (21 16) COM(l) (2016) Command SRCH (2416) Search Pattern MSK (2816) Search Mask { { { { COM(H) (0216) (2216) COM(M) 7 COM(H) (01 16) COM(l) (0016) Command SRCH (0416) Search Pattern SRC(H) (2E16) SRC(M) (2016) SRC(l) (2C16) Source Address DST(H) (3216) DST(M) (31 16) DST(l) (3016) Destination Address lNGT(H) (3516) lNGT(l) (3416) Block length COM(M) (41 16) COM(l) (4016) Command SRCH (4416) Search Pattern MSK (4816) Search Mask COM (H) (4216) SRC(H) (4E16) SRC(M) (4016) SRC(l) (4C16) Source Address DST(H) (5216) DSC(M) 51 16) DST(l) (5016) Destination Address lNGT(H) (5516) lNGT(l) (5416) Block length COM(M) (61 16) COM(l) (6016) Command SRCH (6416) Search Pattern COM (H) (6216) MSK (6816) Search Mask SRC(H) (6E16) SRC(M) (6016) SRC(l) (6C16) Source Address DST(H) (7216) DST(M) (71 16) DST(l) (7016) Destination Address lNGT(H) (7516) lNGT(l) (7416) Block length CONF (7816) Configuration SVCT (5C16) Software Vector HVCT (7C16) Hardware Vector STAT(l) (7E16) Status STAT(H) (7F16) FIGURE 3-1. NS32203 Internal Registers 4-62 z (J) 3.0 Architectural Description (Continued) 15 14 13 12 11 10 3.1.2 HVCT - Hardware Vector Register E channel #3 Channel number. Represents the number of the interrupting channel E- Error code. Determines whether a normal operation completion or an error condition has occurred on the interrupting channel. 7 6 5 4 3 2 1 0 channel #2 channel #1 channel #0 The status of each channel is defined in a four-bit field as described below: TC- Transfer Complete. Indicates the completion of a channel operation, regardless of the state of the length register or whether a match/no match condition occurred. MN - Match/No Match Bit. This bit is set when a match/no match condition occurs. CH - Channel Halted. Set when a channel operation is halted by pulling the RST/HLT pin. CN CN - 8 IMElcHIMNITCIMElcHIMNITCIMElcHIMNITCIMElcHIMNITCI This register contains the interrupt vector byte that is supplied to the CPU during an interrupt acknowledge (lNTA) or return from interrupt (RETI) cycle. The HVCT register format is shown below. 765432 0 BIAS 9 E = 0 = > Normal Operation Completion E = 1 = > A second interrupt was generated by the same channel before the first interrupt was serviced. BIAS - Programmable bias. This field is programmed by writing the pattern BBBBBOOO into the HVCT register. ME - Multiple events. This bit is set when more than one of the above conditions have occurred. Note: If an interrupt is enabled, the corresponding bit in the status register is not cleared upon read, unless the interrupt is acknowledged. 3.2 CONTROL REGISTERS Each of the four channels has three control registers, consisting of a 24-bit command register, an S-bit search register and an S-bit mask register. The NS32203 always interprets a read of the HVCT register as either an interrupt acknowledge (INTA) cycle or a return from interrupt (RETI) cycle. Since these cycles cause internal changes to the DMAC, normal programs should never read the HVCT register (see next section). The DMAC distinguishes an INTA cycle from a RETI cycle by the state of an internal flip-flop, called Interrupt Service Flip-Flop, that toggles every time the HVCT register is read. This flip-flop is cleared on reset or when the HVCT register is written into. When an interrupt is acknowledged by the CPU, the INT signal is deasserted unless another interrupt from a lower priority channel is pending. In this case the INT signal is deasserted when the acknowledge cycle for the second interrupt is performed. 3.2.1 COM - Command Register The command register controls the operation of the associated channel. It is divided into three separately addressable parts: COM(L), COM(M) and COM(H). The format of each part and bit functions are shown below. COM(L) - Command Register (Low-Byte) 7 6 5 4 3 2 1 0 I AT I LK I PT I UW I INC I 01 For this reason, if the INT signal is connected to an interrupt input of the NS32202 ICU, the triggering mode of that interrupt position should be 'low level'. CC - Command Code CC =00 = >Channel Disabled. CC =01 = > Search Furthermore, if that ICU interrupt input is programmed for cascaded operation and nesting of interrupts from other devices connected to the ICU is to be allowed, then the ICU interrupt input connected to the DMAC should be masked off during the interrupt service routine, before the CPU interrupt is reenabled. This is because the DMAC does not provide interrupt nesting capability. CC = 10 = > Data Transfer CC = 11 = > Data Transfer and Search 01- Direct/Indirect Transfers 01 = 0 = > Indirect Transfers 01 = 1 = > Direct Transfers An interrupt from a certain channel can be acknowledged only after the return from interrupt from a previously acknowledged interrupt is performed. INC -Inclusive/Exclusive Search 3.1.3 SVCT - Software Vector Register The SVCT register is an image of the HVCT register. It is a read-only register used for diagnostics. It allows the programmer to read the interrupt vector without affecting the interrupt logic of the NS32203. The format of the SVCT register is the same as that of the HVCT register. UW - INC = 0 = > Exclusive Search INC = 1 = > Inclusive Search Search type UW =0 = >Search UNTIL UW = 1 = > Search WHILE 3.1.4 STAT - Status Register The status register contains status information of the NS32203, and can be used when the interrupts are not enabled. Each set bit is automatically cleared when a read operation is performed. The format of this register is shown in the following figure. PT - Priority type PT =0 = > Fixed PT = 1 = > Variable LK - Priority lock LK = 0 = > Priority Unlocked LK = 1 = > Priority Locked 4-63 cc I ~ ~ o (0) ..... I o C) .... ~ N ~ Z r-------------------------------------------------------------------------------------~ 3.0 Architectural Description (Continued) AT - Auto transfer AT =0 = > Auto Transfer Disabled AT = 1 = > Auto Transfer Enabled At Reset, the CC bits in COM(L) are cleared, disabling the channel. AMN - Action after Match/No Match AMN = 00 = > Disable Channel AMN = 01 = > Continue AMN = 10 = > Load Control Values from Comple· mentary Channel and Continue AMN = 11 = > Load Control Values and Parame· ters from Complementary Channel and Continue TCI- Interrupt Mask on "Transfer Complete" TCI = 0 = > No Interrupt TCI = 1 = > Interrupt Nole: The CC bits can be cleared by software during an Indirect data tran .. fer to stop the transfer. This, however, should not be done during direct data transfers. See section 3.3.3. COM(M) • Command Register (Middle·Byte) 76543210 lool~I~lwlwl_I&I~1 ST - Source Type ST = 0 = > 1/0 Device ST =1 =>Memory SL - Source Location (Effective only in the remote configuration) SL =0 = > Local SL =1 = > Remote SW - MNI- Interrupt Mask on "MatchlNo Match" MNI =0 = > No Interrupt MNI = 1 = > Interrupt HU- 3.2.2 SRCH - Search Register This a·bit register holds the value to be compared with the data transferred during the channel operation. Source Width SW =0 => a Bits SW =1 =>16 Bits 3.2.3 MSK - Mask Register The a·bit mask register determines which bits of the trans· ferred data are compared with corresponding search regis· ter bits. If a mask register bit is set to 0, the corresponding search register bit is ignored in the compare operation. At reset, all the MSK bits are set to O. SD - Source Direction SD =0 =>Up SD =1 =>Down DT - Destination Type DT =0 = > 1/0 Device SD =1 = > Memory DL - Destination Location (Effective only in the remote configuration) DL =0 = > Local DL =1 =>Remote DW - Destination Width DW =0 => a Bits DW =1 => 16 Bits DD - Destination Direction. DD =0 => Up DD =1 =>Down 3.3 PARAMETER REGISTERS Each channel has three parameter registers, conSisting of a 24·bit source address register, a 24·bit destination address register and a 16·bit block length register. 3.3.1 SRC - Source Address Register The source address register points to the physical address of the data source. When the data source is an I/O device, the register does not change during the transfer operation. When the data source is memory, the register is increment· ed or decremented by either one or two after each transfer. 3.3.2 DST - Destination Address Register The destination address register points to the physical ad· dress of the data destination. When the data destination is an I/O device, the register does not change during the transfer operation. When the data destination is memory, the register is incremented or decremented by either one or two after each transfer. COM (H) • Command Register (High·Byte) 7 6 5 I HU' MNd TCI' XTM - ATC - 4 AMN Interrupt Mask on "Channel Halted" HU = 0 = > No Interrupt HU = 1 = > Interrupt 3 2 1 0 3.3.3 LNGT - Block Length Register The block length register holds the number of bytes in the block to be transferred. It is decremented by either one or two after each transfer. IATC' DM' X Reserved. (Should be set to 0) Transfer Mode DM = 0 = > Single Transfer DM = 1 = > Burst Transfer Note: A direct data transfer can be stopped by writing zeroes into the LNGT register. The number of bytes transferred can be determined in this case, from the value of either the SRC or the DST register. Action after Transfer Complete ATC = 0 = > Disable Channel ATC = 1 = > Load Control Values and Parame· ters from Complementary Channel and Continue 4·64 zCJ) 4.0 Device Specifications Chip Select (CS): When low, the device is selected, enabling CPU access to the DMAC internal registers. 4.1. NS32203 PIN DESCRIPTIONS The following is a brief description of all NS32203 pins. The descriptions reference portions of the Functional Description, Section 2.0. Ready (ROY): Active high. When inactive, the DMA Controller extends the current bus cycle for synchronization with slow memory or peripherals. Upon detecting RDY active, the DMAC terminates the bus cycle. Connection Diagram Channel Request 0-3 (REQO - REQ3): Active low. These lines are used by peripheral devices to request DMAC service. Bus Request (BREQ): Used only in the remote configuration. This signal, when asserted, forces the DMAC to stop lransferring data and to release the bus. It must be activated by the CPU before any CPU access to the remote bus is performed. In the local configuration this Signal should be connected to Vee via a 4.7k resistor. Section 2.4. Hold Acknowledge (HlDA): Active low. When asserted, indicates that control of the system bus has been relinquished by the current bus master and the DMAC can take control of the bus. Clock (ClK): Clock signal supplied by the CTTL output of the NS32201 TCU. A22 A21 A20 A19 BREQ A18 A17 RST/HlT A16 iNi' AD15 HOLD AD14 HlDA AD13 REQ3 AD12 ACK3 AD11 REQ2 AD10 ACK2 AD9 REQ1 AD8 ACKI AD7 REQD AD6 ACKD ADS HBE AD4 ODIN AD3 lORD AD2 IOWR ADI ADS ADO ROY GND ClK 4.1.3 OUTPUT SIGNALS Address Bits 16-23 (AI6-A23): Most significant 8 bits of the address bus. Hold Request (HOLD): Active low. Used by the DMAC to request control of the system bus. Channel Acknowledge 0-3 (ACKO - ACK3): These lines indicate that a channel is active. When a channel's request is honored, the corresponding acknowledge line is activated to notify the peripheral device that it has been selected for a transfer cycle. Section 2.2.2. Bus Grant (BGRT): Used only in the remote configuration. This signal is used by the DMAC to inform the CPU that the remote bus has been relinquished by the DMAC and can be accessed by the CPU. Section 2.4. I/O Read (lORD): Active low. Enables data to be read from a peripheral device. Section 2.2.2. I/O Write (IOWR): Active low. Enables data to be written to a peripheral device. Section 2.2.2. Interrupt (I NT): Active low. Used to generate an interrupt request when a programmed condition has occurred. Section 2.9. TL/EE/B701-12 Top View FIGURE 4-1. NS32203 Dual-In-Line Package Order Number NS32203D or NS32203N See NS Package Number D48A or N48A 4.1.4 INPUT/OUTPUT SIGNALS Address/Data 0-15 (ADO-AD 15): Multiplexed Address/ Data bus lines. Also used by the CPU to access the DMAC internal registers. 4.1.1 SUPPLIES Power (Vee>: +5V positive supply. Ground (GND): Ground reference for on-chip logic. 4.1.2 INPUT SIGNALS Reset/Halt (RST/HlT): Active low. If held active for 1 or 2 clock cycles and released, this signal halts the DMAC operation on the active channel. If held longer, it resets the DMAC. Section 2.1. High Byte Enable (HBE): Active low. Enables data transfers on the most significant byte of the data bus. Address Strobe (ADS): Active low. Controls address latches and indicates the start of a bus cycle. Data Direction in (ODIN): Active low. Status signal indicating the direction of data flow in the current bus cycle. 4-65 Co) I\) I\) oCo) ....o• o ..... ""o N N C') en z 4.0 Device Specifications (Continued) 4.2 ABSOLUTE MAXIMUM RATINGS If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Temperature Under Bias O°Cto + 70°C Storage Temperature -65°C to + 150°C All Input or Output Voltages with Respect to GND Note: Absolute maximum ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended; operation should be limited to those conditions specified under Electrical Characteristics. -0.5Vto +7V Power Dissipation 1.1 Watt 4.3 ELECTRICAL CHARACTERISTICS T A = 0 to + 700C, Vee = 5V ± 5%, GND = OV Symbol V,H Parameter Conditions V,L Low Level Input Voltage VOH High Level Output Voltage IOH = -400/LA VOL Low Level Output Voltage IOL = 2mA I, Input Load Current 0< V,N';; Vee IL Leakage Current Output and I/O Pins in TRI-STATElinput Mode 0.4 ,;; Y,N ,;; Vee ICC Active Supply Current lOUT = 0, TA = 25°C 4.4 SWITCHING CHARACTERISTICS ABBREVIATIONS: L.E. T.E. - - 1 O.BV 2.0V Typ Units Vee + 0.5 V -0.5 O.B V 0.45 V -20 20 /LA -20 20 /LA 300 mA 2.4 4.4.1 Definitions All the timing specifications given in this section refer to O.BV and 2.0V on all the input and output signals as illustrated in Figures 4-2 and 4-3, unless specifically stated otherwise. ClK _ Max 2.0 Min High Level Input Voltage leading edge trailing edge ClK V 1BO R.E. - rising edge F.E. - falling edge 2.0V O.BV ~tSIGI~ SIGI SIG2 ~. SIGI O.BV -- ,"O.BV ls'GIIi--- 2.0V lslG2ht==: SIG2 TL/EE/B701-13 FIGURE 4·2. Timing Specification Standard (Signal Valid after Clock Edge) 2.0V TLlEE/B701-14 FIGURE 4·3. Timing Specification Standard (Signal Valid before Clock Edge) 4-66 z CJ) 4.0 Device Specifications (Continued) Co) N N oCo) 4.4.2 Timing Tables • ..... o 4.4.2.1 Output Signals: Internal Propagation Delays, NS32203-10 Maximum Times Assume Capacitive Loading of 100 pF. Name Figure Reference! Conditions Description NS32203-10 Min Units Max tALv 4-7 Address Bits 0-15 Valid After R.E., CLK T1 tALh 4-9 Address Bits 0 -15 Hold Time After R.E., CLK T2 50 tAHv 4-7 Address Bits 16-23 Valid After R.E., CLK T1 tAHh 4-7 Address Bits 16-23 Hold After R.E., CLK T1 orTi 5 ns tALAOSs 4-8 Address Bits 0-15 Set Up Before ADS T.E. 25 ns tAHAOSs 4-8 Address Bits 16-23 Set Up Before ADS T.E. 25 ns tALAOSh 4-9 Address Bits 0-15 Hold Time After ADS T.E. 15 ,","S tAU 4-8 Address Bits 0-15 Floating After R. E., CLK T2 25 ns toy 4-7 Data Valid (Write Cycle) After R.E., CLK T2 50 ns tOh 4-7 Data Hold (Write Cycle) After R.E., CLK T1 orTi toOv 4-5 Data Valid (Reading DMAC Registers) After R.E., CLK T3 tOOh 4-5 Data Hold (Reading DMAC Registers) After R.E., CLK T 4 5 ns ns 50 0 ns ns· 50 10 tHBEv 4-7 HBE Signal Valid After R.E., CLK T1 tHBEh 4-7 HBE Signal Hold After R.E., CLK T1 orTi tOOINv 4-8 DDIN Signal Valid After R.E., CLK T1 tOOINh 4-8 DDIN Signal Hold After R.E., CLK T1 orTi tAOSa 4-7 ADS Signal Active After R.E., CLK T1 35 ns tAOSia 4-7 ADS Signal Inactive After R.E., CLK T1 40 ns tAOSw 4-7 ADS Pulse Width atO.8V (Both Edges) 50 0 ns ns 65 0 ns ns 30 ns tALz 4-12.4-13 ADO-AD15 Floating After R.E., CLK Ti 55 tAHz 4-12,4-13 A16-A23 Floating After R.E., CLK Ti 55 ns tAOSz 4-12,4-13 ADS Floating After R.E., CLK Ti 55 ns tHBEz 4-12,4-13 HBE Floating After R.E., CLK Ti 55 ns tOOINz 4-12,4-13 DDiN Floating After R.E., CLK Ti 55 ns tHLOa 4-11 HOLD Signal Active After R.E., CLK Ti 50 ns tHLOia 4-12 HOLD Signal Inactive After R.E., CLK Ti orT4 50 ns ns tlNTa 4-19,4-21 INT Signal Active After R.E., CLK Ti 40 ns tACKa 4-16,4-17,4-7 ACKn Signal Active After R.E., CLK T1 50 ns tACKia 4-16,4-17,4-7 ACKn Signal Inactive After F.E., CLK T4 35 ns 4-67 4.0 Device Specifications Name Figure (Continued) Referencel Conditions Description NS32203-10 Min Units Max tSGRTa 4-13 BGRT Signal Active After R.E., ClK 65 tSGRTIa 4-14 BGRT Signal Inactive After R.E., ClK 65 ns ns tlORDa 4-B,4-9 lORD Active After R.E., ClK T2 40 ns tlORDia 4-B lORD Inactive (During Indirect Transfers) After R.E., ClK T4 40 ns tlORDia 4-9 lORD Inactive (During Direct Transfers) After F.E., ClK T4 40 ns tlOWRa 4-7,4-10 IOWRActive After R.E., ClK T2 40 ns tlOWRia 4-7 IOWR Inactive (During Indirect Transfers) After R.E., ClK T4 40 ns tlOWRdia 4-10 IOWR Inactive (During Direct Transfers) After F.E., ClK T3 40 ns 4.4.2.2 Input Signal Requirements: NS32203-10 tpWR 4-22 Power Stable to RSTIHlT R.E. After Vee Reaches 4.75V tRSTw 4-23 RSTIHlT Pulse Width (Resetting the DMAC) at O.BV (Both Edges) tRSTs 4-24 RSTIHlT Set Up Time (Resetting the DMAC) Before F.E., ClK tHLTs 4-1B RSTIHlT Setup Time (Halting a DMAC Transfer) Before R.E., ClK T3 tHLTh 4-19 RSTIHlT Hold Time After R.E., ClK T4 (Halting a DMAC Transfer) 50 I1s 64 tCp 15 ns 25 ns 10 ns tDls 4-6 Data in Setup Time Before R.E., ClK T3 15 ns tDlh 4-6 Data in Hold After R.E., ClK T4 3 ns tDls 4-6 Data in Setup Time (Writing to DMAC Registers) After R.E., ClK T3 15 ns tDih 4-6 Data in Hold (Writing to DMAC Registers) After R.E., ClK T4 3 ns tHLDAs 4-11,4-12 HOLDA Setup Time Before R.E., ClK 25 ns tHLDAh 4-11 HlDA Hold Time After R.E., ClK 10 ns tRDYs 4-15 RDY Setup Time Before R.E., ClKT20rT3 20 ns tRDYh 4-15 RDY Hold Time After R.E., ClK T3 5 ns tREQs 4-16,4-17 REOn Setup Time Before R.E., ClK 50 ns tREQh 4-16,4-17 REOn Hold Time After R.E., ClK 10 tSREQs 4-13 BREO Setup Time Before R.E., ClK 25 4-6B ns z 4.0 Device Specifications Name Figure en Co) (Continued) N N Referencel Conditions Description tBREQh 4·13 BREQ Hold Time tALADSis 4·6 tALADSih NS32203-10 Min C) Units Max Cf ..... C) After R.E., ClK 10 ns Address Bits 0-5 Setup Before ADS T.E. 20 ns 4·6 Address Bits 0-5 Hold After ADS T.E. 20 ns tHBEs 4·6 HBE Setup Time Before R.E., ClK T1 10 ns tHBEih 4·6 HBE Hold Time After R.E., ClK T4 40 ns tADSs 4·6 ADS L.E. Setup Time Before R.E., ClK T1 40 ns tADSiw 4·6 ADS Pulse Width ADS L.E. to ADS T.E. 35 ns tCSs 4·6 CS Setup Time Before R.E., ClK T1 15 ns tCSh 4·6 CSHoldTime After R.E., ClK T4 40 ns tDDINs 4·6 DDIN Setup Time Before R.E., ClK T2 30 ns tDDINh 4·6 DDIN Hold Time After R.E., ClK T 4 40 ns 4.4.2.3 Clocking Requirements: NS32203-10 Name Figure Referencel Conditions Description NS32203-10 Min Units Max tClKh 4·4 Clock High Time At 2.0V (Both Edges) 42 ns tclKl 4·4 Clock low Time At 0.8V (Both Edges) 42 ns tClKp 4·4 Clock Period R.E., ClK to Next R.E. ClK 100 ns 4.4.3 Timing Diagrams r.--tCLJ(Pi ~ 2.0V elK...J r C.BV tCLJ(1 TLlEE/B701-17 FIGURE 4-4. Clock Timing • 4·69 o ,-----------------------------------------------------------------------------, .... • C") ~ 4.0 Device Specifications (Continued) C'I ~ Z 11 12 13 14 elK [ ADS [ ADO-IS [ ODIN [ ~[~,'---~----------+_------rl~ es[ TL/EE/B701-16 FIGURE 4-5. Read from DMAC Registers 11 13 12 14 I 11 OR n ODIN [ HBE[~~--~----------+_+_--+J es[ TL/EE/6701-15 FIGURE 4-6. Write to DMAC Registers 4·70 z en (,) ...,..., 4.0 Device Specifications (Continued) o (,) ....o I TL/EE/8701-18 FIGURE 4-7. Indirect Write Cycle ROY [ (HIGH) IOWR [ (HIGH) I IIORDlo lORD [ ACKn [ TLlEE/8701-19 FIGURE 4-8. Indirect Read Cycle 4·71 C) ,... I CO) C) ,---------------------------------------------------------------------------------, 4.0 Device Specifications (Continued) N N I CO) en z T1 T2 T3 T4 ClK[ ADO- 15 [~, _ _ _~ A 16- 23 [~r'-++_.......~--+--+-fJ' ADS [ HBE [-+','-_-+-_____+--+_+-''- DDIN [ RDY [ lORD [ IOWR [ ACKn [ TUEE/8701-20 FIGURE 4·9. Direct 1/0 to Memory Transfer T1 T2 T3 T4 ClK [ ADO-15 [ A16-23 [ ADS [ HBE [ DDIN [ (HIGH) RDY [ I lORD [ tlOWRdla IOWR [ ACKn [ TL/EE/8701-21 FIGURE 4·10. Direct Memory to 110 Transfer 4·72 z en to) 4.0 Device Specifications (Continued) I n N N Q I n ClK[~ n n Tl to) T2 • ...... Q I _MtHlDO HOLD [ --I- I- tHlDAh tHLDAi, " HlDA [ - ---A 16-23 [ ADS [ HBE [ ODIN [ ---_. ----- ----- -~ I ---- ---- ----- - LOCAL DATA BUS ADO-15 ~ ADO-IS > "C "C CD ::s D. ;C' r-- CPU A16-23 t H8E _i A16:.,ll a:. HBE LOCAL ADDRESS BUS tf~:~~===:::l CD I I I) ~, I ::s :~i:~~~~~~~~~~~~~~~~~n~X!IN~crR~::~li!11f~;i~~:;~~::::::~;l~~~~~~~~~~:::j~;;::j '--~L,r= HOLD Hffii. RST/ ABT ~O --... ::s DBE CO en c RESET ClOCK CO CO CD UI 0' ::s UI .". ixl iGRf RST/;;a~m§W ODiN ADS ClJ( RDY ~C ~f~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~::::::::::::~~::~ ~ n NS32203 ru:oo : • AOO-15 U REWOTEDATABUS ADO-'S "CKO REQ! ACKl "16-23 .- RElIOTE ADDRESS BUS .tHBE ....... BUFFERS A16-23 4:iiBE :> TLlEE/8701-35 FIGURE A-1. NS322031nterconnections in Remote Configuration. Note: This logic does not support direct (flyby) DMAC transfers. Section 5 lBoard leve~ i?roducts Section 5 Contents VME532 High Performance 32-Bit CPU VME Board with Cache, Memory Management and Floating Point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DB332-PLUS Development Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DB32000 Development Board ....................................................... DB32016 Development Board....................................................... 5-2 5-3 5-6 5-1 0 5-15 < m == ~National U1 Co) ~ Semiconductor N VME532 High Performance 32-Bit CPU VME Board with Cache, Memory Management and Floating Point Features Product Overview • NS32532 Central Processing Unit (CPU) with internal cache and on-chip Memory Management Unit (MMU) • NS32381 Floating Point Unit (FPU) • Optional 32580 FPC+ Weitek WTL3164 • NS32202 Interrupt Control Unit (ICU) • 20, 25 or 30 MHz operating frequency • Cache-64 kbytes of direct-mapped zero wait-state cache • Conforms to all VME Revision C.1 specifications • Supports multiprocessing system applications • 4-16 Mbytes of on-board Dual Port DRAM with parity, expandable to 256 Mbytes of cacheable address space over the VME bus • 64 kbytes of EPROM in one socket • Two RS-232C serial ports (2681 DUART) with adjustable baud rate • MON532 monitor firmware with power on diagnostics The VME532 is National Semiconductor's VME based board featuring the high-end Series 32000® family cluster. The cluster consists of the NS32532 CPU with on-chip Memory Management Unit, and the NS32381 Floating Point Unit (FPU). Available in 20, 25 and 30 MHz operating speeds, the 2-board set includes a 64 kbyte external cache with an average hit rate of over 90%. Expandable to % gigabyte of memory, and with up to 16 Mbytes of DRAM on-board, the VME532 provides cacheable memory address range of up to 256 Mbytes. The VME532 is a powerful CPU designed for systems demanding high performance in any environment, including UNIX®, real time operating systems, e.g., VRTX32®, and multiprocessing. The VME532 may also be used to evaluate the NS32532 and NS32381 architecture, instruction set, timing, and performance. In addition, the board provides a native debug and execution environment for programs developed on a host computer and is compatible with National's GNXTM software package. II TL/EE/93BO-l FIGURE 1 5-3 ~ C') II) r---------------------------------------------------------------------------------~ w Hardware Description > CENTRAL PROCESSING UNIT ::is Global Memory The fourth level of the memory hierarchy is the global memory accessible to each processor through the system bus. Each processor's local memory can serve as global memory to other processors in the system. In addition, memory modules not local to any processor, can be used as global memory by all microprocessors in the system. The cacheable address space is 256 Mbytes, of which 4 or 16 Mbytes is local on-board memory. The NS32532 microprocessor is National Semiconductor's most powerful Central Processing Unit (CPU) that is compatible with other members of the Series 32000 family. The NS32532 CPU contains an on-chip Memory Management Unit (MMU) with a 64-entry translation buffer and is software compatible with the NS32382 MMU. Features of the NS32532 include 4 gigabytes of addressing capability, a 512-byte instruction cache, a 1024-byte data cache, 4-stage instruction pipeline, and dynamic bus sizing. THE GATEWAY In a typical CPU, more operations involve read cycles than write cycles to local memory. The efficiency of the internal cache of the NS32532 CPU together with the performance of the external cache creates an effective hit rate in excess of 90%, causing more write cycles than read cycles to memory to occur. Since RAM access may cause a bottleneck in CPU performance, due to frequent write cycies, the VME532 incorporates two custom gate array chips that make up the Gateway circuitry. The Gateway is a 72-bit by 8 location deep write FIFO and read buffer allowing the CPU to write to main memory without wait-states. Analysis indicates an 8-entry deep FI FO is sufficient to buffer, without filling up, 99% of all memory write operations, improving the performance of the VME532. FLOATING POINT UNIT The NS32381 Floating Point Unit (FPU) is a second generation CMOS, floating point slave processor, conforming to IEEE standard 754-1985 for binary floating point arithmetic. Functioning in a tightly coupled slave configuration with the NS32532 CPU, the NS32381 FPU operates significantly faster than the NS32081 FPU. Additionally, the NS32381 and has an expanded floating point instruction repertoire, while preserving upward compatability. The NS323Bl FPU operates on 2 floating point data types: single-precision (32-bit) and double-precision (64-bit). OPTIONAL FLOATING POINT ACCELERATOR The VME532 is also available with a higher-performance (15 MFLOPS peak) floating point alternative. This floating point accelerator comprises the NS32580 Floating Point Controller (FPC) and Weitek WTL3164 Floating Point Data Path to create a compatible replacement for the standard NS32381 FPU. MULTIPROCESSING Designed with multiprocessor applications in mind, the VME532 will couple to a total of 16 processors in a separate-memory, shared-bus architecture. The VME532 provides the following multiprocessing features: FOUR-LEVEL MEMORY HIERARCHY CPU Cache • CPU number switch. This thumbwheel switch on the VME532 enables users to assign unique CPU identification numbers, ranging from 0 to 15 for each CPU in the system. The VME532 employs a 4-level memory hierarchy design. The first level includes the 512-byte instruction cache and the l-kbyte data cache, integrated within the NS32532 CPU. This provides the CPU with an 80% internal cache hit rate minimizing external rnemory accesses. External Cache • Local memory can be accessed by other VME masters, including other CPUs. The memory of each CPU is mapped into a unique space of the VME address. • VME memory is shared among all bus masters, allowing "mailbox" communication. The second level memory hierarchy structure is composed of a 64-kbyte direct-mapped, zero wait-state external cache, allowing up to 256 Mbytes of cacheable address space. With the addition of the external cache, the overall cache hit rate increases to over 90%, allowing the NS32532 CPU to nearly operate at full performance. In case a cache rniss occurs, no time is wasted accessing local or external memory because memory accesses occur simultaneously with each cache access and is aborted upon a cache hit. The external cache is composed of very high speed SRAMs. The data portion of the cache is arranged as an array of 16k x 32 bits and is used to store 64 kbytes of data. The tag portion of memory is a 4k x 16-bit array. Each entry contains 12 bits of addressing information, 1 VALID bit, and 3 spare bits. The tag is integrated with high speed compare logic to determine cache hit and miss. • Bus Watcher. The bus watcher circuitry is responsible for coherency between VME and cache-memory entries. The bus watcher traces the activity on the VME bus. Whenever cacheable memory is written by one of the other VME masters, the bus watcher latches the address of the memory, and a bus watch request signal is sent to the cache memory controller. When an address match occurs, the cache invalidates the entry. The bus watcher's FIFO of 8 entries prevents the loss of invalidation requests during heavy VME bus traffic. • Inter-processor interrupts. In addition to the normal VME interrupt system, the VME532 allows other processors to communicate with the VME532 using the inter-processor interrupts. Sixteen address ranges are allocated for this special purpose on the VME532. Local Memory INTERRUPTS Included with the VME532 is National Semiconductor's NS32202 Interrupt Control Unit (ICU). The 16 channel ICU handles all on-board interrupts, all seven levels of VME interrupts, and inter-processor interrupts. The interrupts are individually maskable, and the priority assignment may be customized to suit the needs of the user. Level three is the local dual-port parity-checking memory consisting of 4 Mbytes, expandable to 16 Mbytes, of DRAM. Accessing the third level through an independent local bus reduces traffic along the common system bus. The local dual-port memory allows access through the system bus, as well as the local bus. The path through the system bus serves to simplify the incorporation of peripheral devices by transferring 1/0 directly to local memory. 5-4 r-----------------------------------------------------------------,< SERIAL 110 ORDERING INFORMATION A 2681 Dual-UART provides the user with two serial communication ports to enable communication with a terminal and host processor, with RS-232C compatibility. The internal timer/counter of the DUART can be used as a watchdog timer or real-time clock. The serial ports are provided with Telco connectors, and DB-25 adapters for use as DTE or DCE. NSV-V532A-KF20 32381 FPU VME532 Development Kit, 20 mHz, NSV-V532A-KF25 32381 FPU VME532 Development Kit, 25 mHz, NSV-V532A-KF30 32381 FPU VME532 Development Kit, 30 mHz, NSV-V532A-KW20 VME532 Development Kit, 20 mHz, 32580/WTL3164 FPU SOFTWARE OPTIONS MON532 (monitor) with diagnostics is included with the VME532. The VME532 supports National's GENIX® V.3°, and optimizing compilers for Ada, C, Pascal, Modula-2, and FORTRAN. The board also supports VRTX32 for real time applications. NSV-V532A-KW25 VME532 Development Kit, 25 mHz, 32580/WTL3164 FPU NSV-V532A-KW30 VME532 Development Kit, 30 mHz, 32580/WTL3164 FPU NSV-VXM532A-12M 12 Mbyte Local Memory Expansion (20, 25, or 30 mHz) 'Derived from UNIX System V.a VME SPECIFICATIONS Master: A32:D32, UAT, RMW, IH7, ROR, RWD Slave: A32:D32, UAT, BLT, RMW, ADO, BERR Syscon: BR(0-3), (PRI, RRS, dyn.), BTC 1.6-12.8 dyn.), IACK,SYSRST,SYSCLK VME532 Block Diagram .III Local Interrupts I I 7 Level ViolE Interrupts FPU 32381 J PROM DUART ~ 1 CPU 32532 l I I _t ""J ICU 32201 "'- " 11--. Cache "' .... ... !li- Interprocessor Interrupt Decoder v CPU 10 No. Switch DRAM T ~ ... "' Gateway "'-~ ... M ~ E r-.a. "' ViolE Bus Interlace ,.... . r- 8 U s Bus Watcher ~ I ViolE System Controllerj ""I ,. TL/EE/93BO-2 FIGURE 2 5-5 :!: rn en Co) ...., ~.-----------------------------------------------------------------------, .... CL :;) fa National Semiconductor ADVANCED INFORMATION ~ C") C") DB332-PLUS Development Board In C TL/C/9249-1 • Up to 256K bytes for JEDEC type ROM/ PROM/EPROM • Two RS232 Serial Communication Ports • Programmable Serial Port Baud Rates • 16 interrupt sources that can be arranged via Wire-Wrap Matrix • Centronics parallel printer interface • MON332B monitor firmware with poweron diagnostic • Includes the Series 32000® Microprocessor Family - • • NS32332 CPU NS32382 MMU NS32C201 TCU NS32081 FPU NS32202 ICU MULTIBUS® I compatible 1M or 2M bytes of dual ported DRAM Product Overview The DB332-Plus Development Board is a high performance, 15 MHz, NS32332 based board that enables evaluation of National Semiconductor's NS32332 computer cluster and Series 32000 family. It has a Multibus I interface, with either 1 or 2 MBytes of high-speed, dual-port dynamic RAM, serial and parallel 1/0, interrupt controller, ROM socket, and NS32332 computer cluster. The cluster consists of the NS32332 Central Processing Unit, NS32382 Memory Management Unit, NS32081 Floating Point Unit, NS32C201 Timing Control Unit, and NS32202 Interrupt Control Unit. The instruction sets, cycle timing, bus interfacing, and internal architecture of the Series 32000 family can be examined using the DB332-Plus board. In addition, the DB332-Plus can provide a native debug and execution environment for programs developed on a host computer. The DB332-Plus is compatible with National's GNX software package. The DB332-Plus board is shipped with the MON332B monitor and diagnostic firmware, serial and parallel printer cables, and user documentation. The board can be used in a Multibus I system, or as stand-alone board. In the stand-alone mode, the board needs a power supply, and terminal. CENTRAL PROCESSING UNIT The DB332-Plus incorporates a 15 MHz NS32332, which is a 32-bit, virtual memory microprocessor with 5-6 r--------------------------------------------------------------------------, Interrupts a 4 GByte addressing capability. The NS32332 is fully object code compatible with other Series 32000 microprocessors, and has the added features of 32-bit addressing, higher instruction execution throughput, and expanded bus handling capabilities. The bus features include bus error and retry support, dynamic bus sizing, burst mode memory accessing, and enhanced slave processor communication protocol. The NS32332, being a member of the Series 32000 family, has powerful addressing modes, symmetric instruction set, modular software support, and linear addressing. The NS32332 is designed to work with both 16- and 32-bit slave processors of the Series 32000 family. They allow the processor to implement demand-paged virtual memory system through the use of the memory management unit (MMU), and support for high-speed floating point processing through the floating point unit (FPU). The DB332-PLUS development board incorporates the NS32202 Interrupt Control Unit (ICU). The ICU manages up to 16 maskable interrupt sources, resolves interrupt priorities, and supplies a single-byte vector to the CPU. In addition, two 16-bit counters are provided by the NS32202. Memory The DB332-PLUS comes with either 1M or 2M bytes of 85 ns static column, dual ported DRAM. At 15 MHz it can be accessed with 1 wait state. Memory supports Burst access via either the CPU or external MULTIBUS masters. Due to the MULTlBUS I form factor, the memory module and its controller is mounted on a separate P.C. board which is plugged into the DB332PLUS. Up to 256K bytes are available for JEDEC type ROMI EPROMs via a 28 pin socket. This socket is normally occupied by the MON332B firmware PROM. SLAVE PROCESSORS The DB332-Plus contains both the NS32382 MMU, and the NS32081 FPU. In addition, the board incorporates a connector that allows the next generation FPU, the NS32381, to be added. The NS32381 FPU will need to be mounted on a module that will be plugged into the DB332-Plus's expansion connector. Multibus Interface The DB332-PLUS incorporates a MULTIBUS I interface, allowing the user to configure larger systems. Most often, the DB332-PLUS would be used in conjunction with MULTIBUS compatible expansion RAM, disk controller, or serial controller boards. However there is no restriction, beyond MULTIBUS compliance. The DB332-PLUS's MULTIBUS compliance levels are: Master D16 M24 VO E1; indicating 16-bit data path, 24-bit memory address path, 16-bit 1/0 address path, and level or edge triggered nonbus vectored interrupts. Slave D16 M24; indicating 16-bit data path and 24-bit memory address path. NS32382: The NS32382 MMU provides hardware support for demand paged virtual memory management for the NS32332 CPU. The MMU has a 32-bit data path and translates 32-bit virtual addresses from the CPU into 32-bit physical addresses. High-speed address translation is performed on-chip through a Translation Buffer which holds the address mappings for 32 pages. If the virtual address generated by the CPU has no corresponding entry in the translation buffer, the MMU will perform address translation using a two level page table algorithm. The memory page size of the NS32332 is 4 Kbytes. Parallel 1/0 A 40-pin connector (J3) and the necessary cable are provided to interface with a Centronix compatible printer. NS32081: The NS32081 FPU provides high-speed floating-point processing support, and is compatible with the IEEE 754 standard for binary floating-point arithmetic. The NS32081 operates on two floating-point data typessingle preciSion (32-bits) and double precision (64bits). In addition, the FPU performs conversion between integer and floating-point data types. The NS32081 has eight, 32-bit floating point registers, a floating-point status register, and operates as a slave processor for transparent expansion of the NS32332 CPU's basic instruction set. Serial 1/0 The two serial interfaces (J1 and J2) are designed to provide a wide variety of asynchronous, RS232C-compatible communications. Jumper options are provided for altering the configuration of each interface. Appropriate cables are included with the package. Switches The DB332-PLUS board has a non-maskable interrupt push-button (NMI) designated S1, a RESET pushswitch designated S2 and a four- position DIP switch. 5-7 C m Co) Co) ~ -a r c: en en ;:) ~ N ~ ~ These three switches are located on the front edge of the CPU board. The status of the DIP switch can be read by the DB332-PLUS software. The DB332-PLUS can operate stand-alone, with no assistance from the host computer system. Optionally, the board can be operated in conjunction with a host, taking advantage of more powerful software development tools and 1/0 capabilities. Figure 1-2 represents the most common variations in user modes. Consult the Development Board Monitor Reference Manual for a complete description of capabilities. Two different configurations are available in host assisted mode, transparent and stand-aside. Both are illustrated in Figure 1, and explained below. In transparent configuration, the user's communication with the host is conducted through the DB332-PLUS, which is transparent to the user. One advantage is that a single RS232 port on the host computer will support both the user's terminal and the DB332-PLUS. In stand-aside configuration, the user communicates directly with the host while the DB332-PLUS "stands aside". This mode is useful when the DB332-PLUS is connected to single-user hosts, notably those where the terminal and keyboard are integral to the host. Optionally, stand-aside operation is possible with multiuser hosts where two RS232 ports are available. Stand-Alone Mode Specifications Indicators The DB332-PLUS board has four LEDs designated DS1 through DS4. Led DS1 is controlled by the physical address valid signal (NPAV) from the CPU cluster and indicates that the CPU cluster is active. DS2 through DS4 are software controlled and may be used as status or diagnostic indicators. User Modes From Figure 1-2, it is clear that the stand-alone user mode is the most simplistic and requires the least additional equipment. In this case, only an RS232 compatible terminal and power supplies for the DB332PLUS are required to achieve effective operation. Using the monitor commands given in the Development Board Reference Manual, limited amounts of debugging can be accomplished. Environment The DB332-PLUS is designed for operation in an office or laboratory environment. Sufficient air flow should be present to ensure all components are within their specified temperature ranges. Environment Host Assisted Mode The DB332-PLUS can be connected to another computer system or host. In this case, the user first develops Series 32000 software on the host system, then uses the RS232 communication link to download the software to the DB332-PLUS, which executes and debugs the software in a native environment. Several development software packages are available for use in generating Series 32000 user programs. Among them is National's GENIX Native and Cross Support Tools (GNX) which includes assemblers, linkers, and debuggers. The DB332-PLUS is supplied with MON332B for interfacing between the host and terminal in this mode. The monitor software will provide: • Terminal Handler (for use in transparent mode) • Run-Time Environment (to permit execution of downloaded programs) Description Temperature Operative 5·C to 50·C Inoperative -40·C to 60·C Humidity 10% to 90% relative, non-condensing Altitude Operative 15,000 feet Inoperative 25,000 feet Power Requirements The DB332-PLUS requires three regulated DC voltages for operation. 1. + 5V DC, ± 5%, 10 Amps (when utilizing 2 Mbytes of memory) 2. +12V DC, ±10%, 100 mA 3. -12V DC, ±10%, 100 mA Ordering Information • Debugger Execute Module (to permit operation with host's debugger) 5-8 Part Number Description NSV-32332B 1M-15 15 MHz, 1MB memory version. NSV-32332B2M-15 15 MHz, 2MB memory version. c OJ 1. STAND-ALONE MODE (,) (,) N I "tJ .C en 2. HOST-ASSISTED MODES a) STAND-ASIDE, SINGLE-USER HOST (eg. SPX II) b) STAND-ASIDE MULTIUSER HOST c) TRANSPARENT, LOCAL HOST d) TRANSPARENT, REMOTE HOST 'REQUIRES RECONFIGURATION TLlC/9249-2 5-9 g ~ C') II National Semiconductor ID Q DB32000 Development Board TL/EE/8523-1 • • • • Two RS-232 Serial Communication Ports 24 Programmable Parallel 1/0 Lines Two BLXTM Connectors Wire-wrap area for user expansion - Bus interface - Dual port RAM - ROM expansion -1/0 expansion - RAM expansion • TDSTM firmware provides edit, assembly, and debug capabilities • Series 32000® Microprocessor Family - NS32032 Central Processing Unit (CPU) (can be replaced by NS32016 CPU, or NS32008 CPU, for evaluation) - NS32082 Memory Management Unit (MMU) - NS32081 Floating Point Unit (FPU) - NS32202 Interrupt Controller Unit (ICU) - NS32201 Timing Control Unit (TCU) • 256K bytes DRAM expandable to 1 Mbyte • Up to 256K bytes of EPROM in two banks Product Overview National Semiconductor's D832000 Development Board is a complete microcomputer system. It is specifically designed to assist the user in evaluating and developing hardware and software for the NS32032 CPU, related slave processors (NS32081 FPU and NS32082 MMU) and support devices. With the D832000, the user may evaluate other CPUs such as the NS32016 and NS32008. The D832000 enables 5-10 ~----------------------------------------------------------------'C m Product Overview (Continued) Co) N the user to examine the architecture, instruction set, cycle timing, and the bus interfaces for the Series 32000® family of microprocessors. Small programs can be written, debugged, assembled, and executed with EPROM-based T08 (Tiny Oevelopment 8ystem) software. Optionally, the 0832000 can provide a native debug and execution environment for programs developed on a larger host computer system. In this case, the board complements capabilities provided by National's Pascal, Fortran and C cross-software packages. The 0832000 includes the N832032 CPU, NS32082 MMU, N832081 FPU, NS32202 ICU, support circuitry, dynamic RAM, extensive ROMIEPROM capacity, and serial and parallel 110. 110 capability can also be expanded via 8LX interfaces. Serial 1/0 Two serial 110 ports are provided via 2651 Universal Synchronousl Asynchronous Receiver/Transmitters. These ports permit the 0832000 to communicate with R8232C compatible terminals or other computers. The baud rate for each port is software programmable. o o o BLX 1/0 Expansion Two connectors are provided for attachment of 8- or 16-bit 8LX expansion modules. 8LX modules may be used to expand the 0832000's 110 capability; e.g., additional serial on parallel ports. Switches Two button switches (S3 and 84), and one 10-position DIP switch (81) are provided. 83, labeled NMI 0, will introduce a non-maskable interrupt to the 0832000's CPU when pressed. S4, labeled RESET, will reset the board when pressed. Switch 81 is a software readable dip switch that may be used to indicate defined options, e.g., baud rate, MMU present, etc. Each switch position function is defined by the on-board PROMbased software. Central and Slave Processors The 0832000 is equipped with an N832032 CPU, featuring 32-bit internal structure and 32-bit data bus. Optionally, an N832016 or NS32008 CPU can be installed, with 32-bit internal structure and 16-bit or 8-bit data path. Each CPU provides a very powerful instruction set designed for high level language support. The 0832000 also includes the N832082 MMU and the NS32081 FPU. The N832082 Memory Management Unit provides hardware support for demandpaged virtual memory management. The NS32081 provides high-speed floating-point instruction execution. Indicators Four LEO indicators (02-05) are mounted near the lower left corner of the 0832000. 02-04 are controlled by the contents of a program-addressed register. They are used by the T08 power-on confidence test program to indicate test status. They may also be used to indicate any other information the user desires. 05 is driven directly by a 15-millisecond 1-shot timer. 05 will be extinguished whenever there is no CPU memory or 110 access within this time. 05 is illuminated when the CPU is executing instructions. This LEO indicates whether or not the CPU is active. Interrupts As part of factory configuration, the 0832000 comes with the NS32202 ICU installed. The NS32202 Interrupt Control Unit manages up to 16 maskable interrupt sources, resolves interrupt priorities, and supplies a single-byte vector to the CPU. In addition, the ICU provides two, 16-bit counters. Wire-Wrap Expansion Area The wire-wrap expansion area provides the user with space that is drilled to accept integrated circuits. Signal pad terminators (stubs) are located at different locations on the board enabling the user to construct the following functions in the wire-wrap area: - External 8us Interface - Dual Port Memory Interface - ROM Expansion - 110 Expansion - DRAM Capacity Expansion Using the On-board DRAM Controller Memory Expandable to 1 Mbyte, 256K bytes of on-board dynamic RAM are provided. The wire-wrap area may be used in conjunction with the 0832000 circuitry to develop dual port capability. Up to 256K bytes of ROMIEPROM space is provided in eight 28-pin sockets. The sockets are divided into two banks, each bank permitting installation of 24- or 28-pin devices. All factory configurations include TOS firmware installed in the lower bank, with the upper bank vacant. Parallel 1/0 Twenty-four parallel 110 lines are provided via an 8255A Programmable Peripheral Interface. These may be divided into two 8-bit ports and two 4-bit ports. 5-11 III o o ~ Cf) III Q r-------------------------------------------------------------------------~ Tiny Development Systems (TDS) Functional Description Stand-Alone Mode (Factory Configuration) The stand-alone user mode (see Figure 1) requires only an RS232C-compatible terminal and power supplies for the 0832000. TOS (Tiny Oevelopment System) software is supplied in on-board PROMs to support this user mode. TOS is used to edit, assemble, and execute small Assembly language programs. In addition, TOS can control the 0832000's on-board I/O to provide cassette and printer interfaces, making the 0832000 a light duty development vehicle. The TOS firmware allows the user to create programs by entering source via the editor. This source is then assembled to produce executable code suitable for debugging. These functions have the following features: Assembler: - Subset of existing Series 32000 assembler - Supports FPU by providing long and short format real number data initialization - Generates listings to either a printer at the parallel port, or any RS232 device connected via serial port - Symbolic definition of static base or PC segment Host-Assisted Modes The 0832000 can be connected to another computer system or host (refer to Figure 1). In this case, the user first develops Series 32000 software on the host system, then uses the RS232 communication link to download the software to the 0832000, which executes and debugs the software in a native environment. Several development software packages are available for use in generating Series 32000 user programs. Among them are: - Pascal, Fortran and C, operating under VAXIVMS - Pascal, Fortran and C, operating under VAX/ UNIX® In each case, the 0832000's factory-supplied, onboard TOS software must be replaced. A suitable PROM-based monitor software package is supplied with the host development software. The basic modes of host-assisted 0832000 operation are "stand-aside" and "transparent". The terms "stand-aside" and "transparent" may be visualized by observing the communication configuration for each mode. Refer to Figure 1. The monitor software will provide: - Terminal Handler (for use in transparent mode) - Run-Time Environment (to permit execution of downloaded programs) - Oebugger Execute Module (to permit operation with the host's debugger) Consult the Oevelopment 80ard Monitor Reference Manual for a complete description of capabilities. In transparent mode, the user's communication with the host is conducted through the 0832000, which is transparent to the user. One advantage is that a single RS232 port on the host computer will support both the user's terminal and the 0832000. In stand-aside mode, the user communicates directly with the host while the 0832000 "stands aside". This mode is useful when the 0832000 is connected to single-user hosts, notably those where the terminal and keyboard are integral to the host. Optionally, stand-aside operation is possible with multi-user hosts where two RS232 ports are available. Debugger: - Numerical arguments to commands can be in four bases: decimal, hex, long real and short real - Program flow visually traced by displaying source line at all breakpoints or step stops - Memory/register print or change commands - Step-through program commands: step "n" instructions, step while variable in range, step until variable reached Editor: - Commands to insert, replace, delete, type lines - Automatic line number maintenance - Save and retrieve source from audio cassette recorder - Upload/download to/from any RS232-equipped PC - Oebug data displayed by type command after assembly User Program Run Time Support: - Accessed via a supervisor call instruction - Routines to do terminal I/O - Printer driver access to parallel port - Routine to convert binary value to ASCII string - Routine to convert ASCII string to binary value - Conversion in four bases: decimal, hex, long real and short real As shipped with the 0832000, TOS provides on-board hardware confidence test routines. These are invoked by power-on or manual reset. User Modes The 0832000 can operate stand-alone, with no assistance from a host computer system. Optionally, the board can be operated in conjunction with a host, taking advantage of more powerful software development tools and I/O capabilities. 5-12 c OJ User Modes (Continued) (0) N STANDALONE MODE o o o POWER SUPPLY I J6 OB32000 J2 L..J Jl 10CE OTE HOST-ASSISTED MODES POWER SUPPLY TERMINAL I J6 OB32000 STANOASIOE J2 ~ Jl ""OTE" TERMINAL OCE OTE HOST OCE POWER SUPPLY I J6 OB32000 TRANSPARENT, LOCAL J2 OTE HOST I Jl 10CE OCE OTE POWER SUPPLY TERMINAL I J6 OB32000 TRANSPARENT, REMOTE J2 OTE HOST I-- MODEM ~ MODEM I Jl 10CE OCE OTE 'Requires Reconfiguration FIGURE 1.0832000 Configurations 5·13 TERMINAL TUEE/8523-2 Q Q Q C'I r-----~----------------------------------------------------------------------, Specifications Ordering Information: Environment NSV-32032S6T-10 DB32000 Development Board All models are shipped with: Two RS232 cable sets Model DB32000-11 0 Includes NS32032-10 CPU NS32201-10 TCU NS32202-10 ICU NS320B1-10 FPU NS32082-10 MMU NSP-TDS-M Series 32000 TDS: Tiny Development System User's Manual NSP-DB32000-M Series 32000 DB32000 Development Board User's Manual NSP-INST-REF-M Series 32000 Instruction Set Reference Manual C') ID C The DB32000 is designed for operation in an office or laboratory environment. Avoid confining the DB32000 in a closed space, unless sufficient air flow is provided to ensure all components are operated within their specified temperature range. Temperature: Operating O°Cto + 55°C -40°C to + 75°C Nonoperating Humidity: 5% to 95% relative, non condensing Altitude: Operating up to 15,000 ft. Nonoperating up to 25,000 ft. Power Requirements The DB32000 requires three regulated DC voltages for operation: + 12 volts DC, ± 10%, 40 mA typical (50 mA max) -12 volts DC, ± 10%, 40 mA typical (50 mA max) +5 volts DC, ±5%, 5A typical (10A max) 5-14 ,-----------------------------------------------------------------------, c m II National Semiconductor N Co) .... o Q) 08320116 Development Board TUR17083-1 • Series 32000® Microprocessor Family • NS32016 CPU (can be replaced by NS32008 CPU, for evaluation) NS32082 MMU NS32081 FPU NS322021CU NS32201 TCU MULTIBUS® mUlti-master bus interface 128 Kbytes dual ported RAM Up to 96 Kbytes PROM capacity Two RS232 serial communication ports 24-programmable parallel 110 lines Three 16-bit programmable timerI counters 0 One BLXTM expansion module connector for additional 110 capability 0 TDSTM firmware provides edit, assembly, and debug capabilities 0 0 0 0 •• • • •• Product Overview The DB32016 Development Board is a complete microcomputer using the National Semiconductor Series 32000 family of advanced microprocessors. It is specifically designed to assist evaluation and development of Series 32000 applications in a variety of environments. By itself, the DB32016 can be used to examine the Series 32000 architecture and instruction set. Small programs can be written, debugged, and executed with EPROM-based TDS (Tiny Development System) software. Optionally, the DB32016 can provide a native debug and execution environment for programs developed on a larger host computer. In this case, the board complements capabilities provided by National's C and Pascal cross software packages. Flexibility is further enhanced by the board's MULTIBUS interface. This permits expansion of the DB32016 microcomputer system to include functions provided by other MULTIBUS compatible boards; e.g. diskltape controllers, bulk RAM, etc. All models of the DB32016 include, as a minimum, the NS32016 CPU, support circuitry, serial and parallel lID, dynamic RAM, and extensive ROMIEPROM capacity. Optionally, the board can be populated with NS32082 Memory Management Unit, NS32081 Floating-Point Unit, and NS32202 Interrupt Control Unit. In all cases, lID capability can be expanded via BLX and MULTIBUS interfaces. 5-15 .... CD ~ l3 Hardware Function Description (Refer to Figure 1-1) C TLfR17083-2 FIGURE 1-1. OB32016 Topography Central and Slave Processors Memory The OB32016 is equipped with a NS32016 CPU, featuring 32-bit internal structure and 16-bit data bus. Optionally, a NS32008 CPU can be installed, with 32-bit internal structure and 8-bit data path. Each CPU provides a very powerful instruction set designed for high level-language support. Included with each OB32016 is the NS32082 MMU and the NS32081 FPU slave processors. The NS32082 Memory Management Unit provides hardware support for demand-paged virtual memory management. The NS32081 provides high-speed floatingpoint instruction execution. If the OB32016 is purchased without slave processors, they may be installed by the customer, as required. 128 Kbytes of on-board, dual-ported dynamic RAM are provided. The MULTIBUS starting address of RAM is mappable in 32K byte increments, across the entire 16M byte address space. Up to 96 Kbytes of ROMIEPROM space is provided in four 28-pin sockets. The sockets are divided into two banks, each bank permitting installation of 24 or 28pin devices. All factory configurations include TOS firmware installed in the lower bank, with the upper bank vacant. MULTIBUS Interface The OB32016 incorporates a MULTIBUS interface, allowing the user to configure larger systems. Most often, the OB32016 would be used in conjunction with MULTIBUS compatible expansion RAM, disk controller, or serial controller boards. However there is no restriction, beyond MULTIBUS compliance. The OB32016's MULTIBUS compliance levels are: Master 016 M24 116 VOEL; indicating 8/16-bit data path, 24-bit memory address path, 8or 16-bit 1/0 address path, and level or edge triggered non-bus vectored interrupts (if NS32202 is installed). Slave 016 M24; indicating 8/16-bit data path, and 24-bit memory address path. Interrupts Also included with the OB32016 is the NS32202 ICU. The NS32202 Interrupt Control Unit manages up to 16 maskable interrupt sources, resolves interrupt priorities, and supplies a single-byte vector to the CPU. In addition, the ICU provides two, 16-bit counters, one of which can provide programmable baud rate capability for the OB32016's serial 1/0 ports. If the OB32016 is purchased without the ICU, it may be installed by the customer, as required. 5-16 Parallel I/O completed by the CPU within this period. This is useful to indicate a MULTIBUS timeout. 24 parallel I/O lines are provided via an 8255A Programmable Peripheral Interface. These may be divided into two 8-bit ports and two 4-bit ports. Tiny Development Systems (TDS) Functional Description Serial I/O The TOS firmware allows the user to create programs by entering source via the editor. This source is then assembled to produce executable code suitable for debugging. These functions have the following features: Two serial I/O ports are provided via 8251A Universal Synchronous/ Asynchronous Receiver/Transmitters. These ports permit the OB32016 to communicate with RS232 compatible terminals or other computers. Port baud rates may be derived from a variety of sources: • a fixed, 9600 baud operation of both ports, if the NS32202 ICU is not installed. • single programmable baud rate for both ports, if the NS32202 ICU is installed. • Individually programmable baud rates for each port, via the OB32016's 8253-5 PIT. Assembler: - - Timer/Counters As mentioned above, the NS32202 ICU provides two 16-bit timer/counters, when installed. In addition, three 16-bit counters are provided by the OB32016's 8253-5 Programmable Interval Timer. Each counter output is available for connection as an interrupt source for the ICU, or baud rate generation for the serial ports. Subset of Series 32000 assembler Supports FPU by providing long and short format real number data initialization Generates listings to either a printer at the parallel port, or any RS232 device connected via serial port Symbolic definition of static base or PC segment Debugger: - - BLX I/O Expansion A connector is provided for attachment of 8- or 16-bit BLX expansion modules. BLX modules may be used to expand the OB32016's I/O capability; e.g. additional serial or parallel ports. Numerical arguments to commands can be in four bases: decimal, hex, long real and short real Program flow visually traced by displaying source line at all breakpoints or step stops Memory/register print or change commands Step-thru program commands: step un" instructions, step while variable in range, step until variable reached Editor: - Switches Two push button switches (S1 and S2), and one eightposition OIP switch (S3) are provided. S1, labeled NMI, will introduce a non-maskable interrupt to the 0832016's CPU when pressed. S2, labeled INIT, will reset the board when pressed. Both switches are located on the front edge of the board assembly. OIP switch S3 is used to set the Baud rate of the serial ports and other board configurations. - Command to insert, replace, delete, type lines Automatic line number maintenance Save and retrieve source from audio cassette recorder Upload/download to/from any RS232 equipped PC Oebug data displayed by type command after assembly User Program Run Time Support: Indicators - Accessed via a supervisor call instruction Routines to do terminal I/O Printer driver access to parallel port Routine to convert binary value to ASCII string Routine to convert ASCII string to binary value Conversion in four bases: decimal, hex, long real and short real As shipped with the 0832016, TOS provides on-board hardware confidence test routines. These are invoked following power on. Four LEO indicators (OS1-0S4) are mounted near the front edge of the board assembly. OS1-3 are controlled by the contents of a program addressed register. They are used by the TOS poweron confidence test program to indicate test status. They may also be used to indicate any other information the user desires. OS4 is driven directly by a one-shot timer, whose period is approximately 15 milliseconds. OS4 will be illuminated whenever there is no memory or I/O access 5-17 User Modes The 0832016 can operate stand-alone, with no assistance from a host computer system. Optionally, the board can be operated in conjunction with a host, taking advantage of more powerful software development tools and lID capabilities. Figure 1-2 represents the most common variations in user modes. 1. Standalone Mode 2. Host-assisted Modes a) Standaside, single-user host b) Standaside, multiuser host P2 c) Transparent, Local host d) Transparent, Remote host TLlR/7083-3 ·requires reconfiguration FIGURE 1-2.0832016 User Modes 5-18 c Stand-Along Mode (Factory Configuration) is that a single RS232 port on the host computer will support both the user's terminal, and the 0832016. In standaside mode, the user communicates directly with the host; the 0832016 "stands aside". This mode is useful when the 0832016 is connected to single-user hosts. Optionally, standaside operation is possible with multi-user hosts, where two RS232 ports are available. From Figure 1-2 it is clear that the stand-alone user mode is the most simplistic; requiring the least additional equipment. In this case, only an RS232C compatible terminal and power supplies for the 0832016 are required to achieve effective operation. TOS (Tiny Oevelopment System) software is supplied in on-board PROM to support this user mode. TOS is used to edit, assemble, and execute small assembly language programs. In addition, TOS can control the 0832016's on-board I/O to provide cassette and printer interfaces; making the 0832016 a light duty development vehicle. m w N o ...... Q) Specifications Environment The 0832016 is designed for operation in an office or laboratory environment. Avoid confining the 0832016 in a closed space, unless sufficient air flow is provided to ensure all components are operated within their specified temperature range. o Temperature Operating O°C to 55°C Non Operating -40°C to 75°C o Humidity 5% to 95% relative, non-condensing o Altitude Operating 15,000 ft. Non Operating 25,000 ft. Host Assisted Modes Referring to Figure 1-2, the 0832016 can be connected to another computer system, or host. In this case, the user will first develop Series 32000 software on the host system, then utilize RS232 communication to download the software to the 0832016. The 0832016 functions as a means of executing and debugging the software in a native environment. Several development software packages are available for use in generating Series 32000 user programs. Among them are: • Pascal and C for VAXIVMS environments o Pascal and C for VAX/UNIX environments Host assisted modes require the TOS PROMs to be replaced by a PROM-based monitor program, compatible to the host development software. Monitor software is bundled with National's Series 32000 software packages. The monitor provides: • a terminal handler, to control RS232 communications • run-time environment, to permit execution of downloaded programs • debugger execute module, to facilitate operation with the host's debugger software The basic host assisted modes are: • transparent Power Requirements The 0832016 requires three, regulated OC voltages for operation: + 12 VOC, ±10%, 50 ma max -12 VOC, ±10%, 50 ma max +5 VOC, ±5%, 7.5A max All power connections are made via P1. These connections are normally provided by a MULTI8US compatible backplane. Optionally the user may elect to provide power, using one of the recommended connectors listed for P1. Connectors Local bus expansion (P2)- • standaside The terms, transparent and standaside, may be visualized by observing the communication configuration in each mode. (Refer to Figure 1-2) In transparent mode, the user's communication with the host is conducted through the 0832016; the 0832016 is transparent to the user. An advantage Parallel I/O (J1)Serial I/O (J2)8us interface (P1)and Power 5-19 COC VP801 830AOOA2 AMP PES-14559 TI H311130 3M 3415-001 AMP 2-86792-3 3M 3462-0001 flat AMP 1-583715-1 round SAE FUPH7212-86MTNE Viking 2KH43/9AMK12 • .,... r--------------------------------------------------------------------------, ~ re C") III C Ordering Information Model 0832016-110 (Order #NSV-32016P8T-10) Includes NS32016-10 CPU, NS32082-10 MMU, NS32081-10 FPU, NS32202-10 ICU, and NS32201-10 TCU for 10 MHz operation. All Models are shipped with: • Two RS232 cable sets • TDS: Tiny Development System User's Manual (Publication No. 420306440-001) • 0832016 Development 80ard User's Manual (Publication No. 420310111-001) Related Reference Material Series 32000 Instruction Set Reference Manual (Customer Order No. NSP-INST-REF-M) 5-20 Section 6 Development Tools Section 6 Contents SYS32/30 PC-Add-In Development Package .......................................... SYS32/20 PC Add-In Development Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ISE32 NS32032 In-System Emulator.................................................. SPLICE Development Tool .......................................................... 6-2 6-3 6-9 6-12 6-21 ~ National Semiconductor SYS32/30 PC-Add-In Development Package TLfEEf9420-1 • • • • • • II Support for other Series 32000® 15 MHz NS32332INS32382 Add-In board for an IBM® PC/AT® or compatible system 2-3 MIP system performance No wait-state, on-board memory in 4-, 8or 16-Mbyte configurations Operating system derived from AT&T's UNIX® System V Release 3 Multi-user support GENIXTM Native and Cross-Support (GNXTM) language tools. Includesassembler, linker, libraries, debuggers development products: -SPLICE - National's Series 32000 Development Board family - Compilers: C, FORTRAN77, Pascal, Ada® • Easy to use DOS/UNIX interface Product Overview The SYS32TM/30 is a complete, high-performance development package that converts an IBM PCI AT or compatible computer into a powerful multi-user system for developing applications that use National Semiconductor Series 32000 microprocessor family components. The SYS32/30 add-in processor board containing the Series 32000 chip cluster with the NS32332 microprocessor allows programs to run on a personal computer at speeds greater than those of a VAXTM 780. The chip cluster on the processor board includes the NS32332 Central Processing Unit, NS32382 Memory Management Unit, NS32C201 Timing Control Unit and the NS32081 Floating-Point Unit. Along with the processor board, the SYS32/30 package contains the OpUS5™ operating system. This operating system is a port of AT&T's UNIX System V Release 3, and is derived from GENIX V.3, National 6-3 • o .---------------------------------------------------------------------------------~ C") ...... C'I C") ~ Product Overview (Continued) Semiconductor's port of UNIX System V Release 3. Specially developed software is included to efficiently integrate the NS32332 processor board and the host PCI AT processor, allowing them to function as a complete UNIX computer system. National's Series 32000 GENIX Native and Cross-Support (GNX) language tools are included in the SYS32/30 package to provide stable and effective tools for software development. Optional compilers are available for FORTRAN77, C, Pascal, and Ada. The SYS32/30 processor board plugs into the PCI AT bus, uses the standard control and data signals, and appears to the PCI AT as 16 bytes in the PCI AT Input/Output (lID) space. Communication between the PCI AT and the board is accomplished via this address space. This architecture allows the board to interface to the PCI AT in the same manner as any other AT peripheral. The PCIAT processes lID commands while the SYS32/30 processor board continues with regular operation. lID is requested via interrupt to the PCI AT, which then performs the data transfer using Direct Memory Access (DMA). (See Figure 1). The processor board requires two slots in the PCI AT motherboard and plugs into a single long 16-bit bus slot. The space of the second slot is needed to accommodate ihe piggybacked memory board attached to the processor board. No additional connections are required. Functional Description 15 MHz ADD-IN PROCESSOR BOARD FOR AN IBM PCI AT OR COMPATIBLE SYSTEM The SYS32/30 development package contains a processor board designed around the Series 32000 chip set. This chip set includes the NS32332 Central Processing Unit, NS32382 Memory Management Unit, NS32C201 Timing Control Unit, and the NS32081 Floating-Point Unit. This processor board forms the high-performance center of the computer system with the host PCI AT processor. Peripherals are under the control of the PCI AT's microprocessor and are located either on the PCI AT motherboard or on other boards in the AT chassis. The PCI AT handles all direct access to devices and serves as an integral dedicated lID processor. 2-3 MIPS SYSTEM PERFORMANCE The NS32332 CPU and associated devices operating at 15 MHz provide computing power greater than that of a VAX 780. Sustained performance for the NS32332 device cluster is 2-3 VAX MIPS (Million Instructions Per Second). An example of relative performance using the widely recognized Dhrystone benchmark is shown in Figure 2. DOS UTILITIES SYS32/30 A "OW 11_ " OPMON PROGRAM ,~. SYS32/30 DRIVERS DATA v AND CONTROL 'I 1~7 PC HARDWARE UNIX ENVIRONMENT 11 Ift.-..J\ f'r;I PC PERIPHERALS DOS ENVIRONMENT TL/EE/9420-2 FIGURE 1 6-4 r---------------------------------------------------------~0 Cii Functional Description (Continued) (,) able time in regenerating complex software systems after changes are made. The uucp software allows users on different UNIX systems to communicate using electronic mail and to transfer files over dial-up or serial communications links. Menu-driven system administration is available for system setup, adding users, controlling communication lines, installing software packages, changing passwords, and other administrative functions. DHRYSTONE 1.1 SYS32/30 ADDITIONAL SUPPORT UTILITIES Many of the popular utilities from the Berkeley 4.2 UNIX operating system, not contained in AT&T's UNIX System V Release 3, are supplied as part of the package. These utilities are listed in Table I. VAX 780 TABLE I. Bsd 4.2 Utilities CShell bsu ctags from leave scrpt unexpand TL/EE/9420-3 FIGURE 2. SYS32/30 Dhrystone Program Compiled with GNXr2 C Compiler VAX 780 Dhrystone Data Obtained from USENET apply chsh expand head more strings whereis banner clear factor last primes test which The Tools for Documenters package, derived from the AT&T Documenter's WorkbenchTM Utility, provides the Series 32000 programmer with the tools to prepare documentation. The major components of this package are shown in Table II. ON-BOARD MEMORY CONFIGURATIONS OF 4, 8 OR 16 MBYTES The processor board is configured with either 4, 8, or 16 Mbytes of zero wait-state physical memory. It is possible to upgrade the 4- or 8-Mbyte configuration to 16 Mbytes through the purchase of an optional 16Mbyte memory card. TABLE II. Tools for Documenters Utilities Name OPERATING SYSTEM The SYS32/30 operating system is a port of AT&T's UNIX System V Release 3, and is derived from GENIX V.3, National Semiconductor's port of UNIX System V Release 3. The UNIX operating system is a powerful, multi-user, multitasking operating system that includes the following key features: Demand Paged Virtual Memory Hierarchical file system Source Code Control System (SCCS) UNIX to UNIX copy (uucp) "make" utility Menu-driven system administration The UNIX operating system has a proven reputation as an effective and productive environment for efficient software development. UNIX allows multiple users to work simultaneously on the same computer and project. The Source Code Control System (SCCS) automatically tracks program revisions as development work progresses. The "make" software saves valu- Description nroft A text formatter for line printers troft A text formatter for typesetters otroft A text formatter for typesetters mm A macro package mmt A macro package eqn A troft preprocessor for typesetting mathematics on a phototypesetter neqn A troft preprocessor for typesetting mathematics on a terminal tbl A preprocessor for formatting tables pic A preprocessor for graphic illustrations col A filter to nroft for processing multicolumn text output, as from tbl NETWORKING CAPABILITY The SYS32/30 based development system configured to support networking using the TCP/IP protocol allows project development using multiple systems, including SYS32/30 based systems, VAXIVMSTM (using TCP/IP), and VAX/4.2bsd. The compatibility de- 6-5 ~ (,) o c.---------------------------------------------------------~ C") ~ C") Functional Description ~ sign of the GNX language tools allows software modules developed on these networked systems to be linked together on a single system for execution as one program. Networking requires that additional hardware and software be installed in the system. Third party products that enable networking are listed in the SYS32/30 configuration guide. (Continued) files via a common network. Information for configuring the SYS32/30 for integration into a network is contained in the configuration guide. Compilers are available as separate optional software to allow individual selection of the application language. The C and FORTRAN compilers are the result of National's optimizing compiler project and reflect state-of-the-art compiler technology for optimizing execution speed. Pascal and Ada compilers are also available. For additional details about the GNX tools consult the GNX tools data sheet, Literature Number 114299. Real-time kernels such as National's EXEC or VRTX®/Series 32000 are supported by the GNX tools. With the appropriate command-line arguments, and when linked with appropriate libraries, the GNX tools are used to develop code for execution with these real-time kernels. More information on EXEC is contained in its data sheet in the Series 32000 Databook. The VRTX data sheet (Literature Number 114269) provides more information about VRTX. MANUALS A complete manual set for the operating system and related software is included in the SYS32/30 package. This includes: Installation instructions for the PC Add-in board Installation instructions for software UNIX System V.3 reference manuals and user guides GNX Language Tools Manuals Tools for Documenters Reference Manual Berkeley Utilities Manual MULTI-USER SUPPORT The SYS32/30 operating system is an interactive, multi-user, multitasking operating system. Many activities or jobs can be performed simultaneously when serial ports are added to the host system. These additional serial ports are used for terminals, printers, modems, 1I0-to-development boards, I/O-to-target hardware, or for communication with National's SPLICE debugging tool. Information about third party products that provide additional serial ports is contained in the SYS32/30 configuration guide. ADA COMPILER The Series 32000 Ada cross-development system completely supports Ada language program development on National's SYS32/30 host and is part of National's Validated Ada Development Environment (NVADE). NVADE provides a high performance Ada compiler that supports all required features of the Ada language and is fully compliant with ANSI/MIL-STD1815A. Consult the data sheet (Literature Number 114262) on the Ada cross-development system for additional details. GNX LANGUAGE TOOLS The GENIX Native and Cross-Support (GNX) language tools allow the user to compile, assemble, and link user programs to create executable files. These files can then be executed and debugged on a Series 32000 development board, target system application hardware, or a 32000/UNIX-based system such as the SYS32/30. The GNX language tools include the assembler, linker, de buggers, libraries, and the monitor software for all Series 32000 development boards in both PROM and source code form. The Series 32000 GNX language tools are based on AT&T's Common Object File Format (COFF). Under COFF, object modules created by any of the GNX compilers or the GNX assembler may be linked to object modules of any other translator in the GNX tools. Compilers available are FORTRAN77, C, and Pascal. The COFF file format also allows object modules that have been created by the GNX tools on other development hosts (VAXIVMS or VAX/4.2bsd, for example) to be linked with modules created on the SYS32/30 system. This flexibility is most valuable where non-centralized software development is desired and the systems are able to transfer or share SUPPORT FOR AN INTEGRATED DEVELOPMENT ENVIRONMENT The SYS32/30 contains the functionality and compatibility needed to utilize other tools available from National Semiconductor for developing and debugging Series 32000-based applications. These tools include the SPLICE software debugger and National's Series 32000 Development Board set. The SPLICE development tool provides a communication link between a Series 32000 target and a development system host. This connection allows users to download and map their software onto target memory and then debug this software using National Semiconductor's GNX debugger. Consult the SPLICE data sheet for more information. The Series 32000 development boards used with the SYS32/30 are complete microcomputer systems specifically designed to assist the user in evaluating and developing hardware and software for the Series 32000 family of CPUs. More information on the Series 32000 development boards is contained in the Series 32000 Databook, Literature Number 400094. 6-6 Functional Description (Continued) DOS/UNIX INTEGRATION linked to other object files and/or libraries, resulting in an executable file. The Ada compiler generates executable code without creating assembly language as an intermediate step. Since the SYS32/30 provides a Series 32000 native environment, the executable file may be run on the host SYS32/30 system or loaded into RAM on either a target system, SPLICE, or one of the Series 32000 development boards. The source-level software debuggers in the GNX tools provide powerful facilities for debugging software on the target system. The GNX debugger, working in conjunction with SPLICE or with the monitor program on the target board, is capable of downloading and controlling the execution of software on the target system. Executable monitor software is provided in PROMs in the SYS32/30 package for the Series 32000 development boards. Monitor software is also provided in source form in the GNX language tools so application designers can modify and port the monitor to suit the needs of their target system. After debugging, the executable file created by linking can also be converted to PROM format using the GNX nburn utility. The SYS32/30 PC add-in development package allows easy transfer of data between DOS and the UNIX operating system. A system console user can switch between either operating system using only a few keystrokes. A shell interface allows DOS commands to be executed from the UNIX shell, UNIX commands to be executed from DOS, and files to be transferred between the UNIX and DOS partitions on the system disk. In addition, the user can suspend the SYS32/30 operation, enter DOS, run an application, and then return to the SYS32/30 environment. Series 32000 Application Development The SYS32/30 with the PC/AT operates as a local host computer system for integrating application software into target prototype boards containing Series 32000 components. Programs can be written in assembly language or in a higher level language. Optional compilers are available for C, FORTRAN, Pascal, and Ada. During compilation, the C, FORTRAN, and Pascal compilers generate assembly code which is assembled by the GNX assembler. (See Figure 3.) The output of the assembler is an object file which can be TO TARGET SYSTEM, SPLICE, OR DB BOARD TL/EE/9420-4 FIGURE 3 6-7 C) C') ...... C'\I C') ~ r---------------------------------------------------------------------------------, Configuring a System Basic Kits The SYS32/30 PC Add-In package supports a variety of configurations. Based on developer needs, the final configuration may need extra serial 1/0 ports, and/or networking capability. A hard disk of sufficient size is also an important part of the configuration. A configuration guide that outlines available options and recommended products for configuring the SYS32/30 development system is available. Host system elements required for SYS32/30 operation are: - IBM PC/AT or compatible system - Two full length slots in the motherboard - 512 Kbytes of RAM - PC-DOS 3.1 or later - 1.2-Mbyte floppy disk drive - Adequate hard disk storage (see the next section on disk size) The SYS32/30 Add-In Development package is available in three basic kits: NSS-SYS30-KIT1 For IBM-AT and compatible systems PC Add-In coprocessor board with 4 Mbytes on-board memory UNIX System V.3 based operating system GNX Language Tools Tools for Documenters Berkeley Utilities Installation instructions for the PC Add-In board Installation instructions for software UNIX System V.3 reference manuals and user guides GNX Language Tools Manuals Tools For Documenters Reference Manuals Berkeley Utilities Manual Same as KIT1 except with NSS-SYS30-KIT2 8 Mbytes of on-board memory NSS-SYS30-KIT3 Same as KIT1 except with 16 Mbytes of on-board memory Note: The SYS32/30 processor board actually plugs into a single slot. The second slot is required to accommodate the space taken by the piggybacked memory board attached to the NS32332 proces· sor board. The SYS32/30 PC/AT Add-In Development Package runs on an IBM PC/AT or compatible computer. If an IBM PCI AT is not used for the host system, it is important to remember that compatibility can vary between IBM PCI AT compatible systems. The SYS32/30 processor board may not be adequately supported by systems that lack full IBM PC/AT compatibility. The configuration guide available contains a list of IBM PC/AT compatible systems that have the required compatibility. MEMORY UPGRADE To upgrade the memory size to 16 Mbytes after the purchase of KIT1 or KIT2, the following 16-Mbyte memory board must be purchased to replace the existing memory board: NSS-SYS30-MEM16 16-Mbyte memory board. HARD DISK CAPACITY Several factors influence the size selected for a hard disk. Consideration should include the number of users for the system, space for user files, the size of the application to be developed, and extra software packages and compilers that must reside on the system. For example, a 40-Mbyte hard disk is the minimum size recommended for a SYS32/30-based development environment. This provides sufficient space for a single-user account, the UNIX operating system and utilities, the GNX tools, compiler software, basic DOS software, and a moderate size application. If the system is used for developing an Ada-based application, a minimum of 60 Mbytes of disk storage is recommended. Disk drives with even greater capacity than the minimum sizes indicated here should be considered for additional users or software and to provide for growth of the system. When selecting hard disk drives or other peripheral devices, it is important that the device conform to the industry-standard for peripheral devices deSigned for use on the PCI AT bus. Optional Software Packages (A prerequisite for use is the purchase of one of the above basic kits). Optimizing C Compiler NSW-C-BHBF3 NSW-F77-BHBF3 Optimizing FORTRAN77 compiler NSW-PAS-BHBF3 Pascal compiler NSW-ADA-BHBF Ada compiler NSW-NET-BHBF3 Networking software NSP-SYS321V3-MS Additional operating system manual set 6-8 ,--------------------------------------------------------------------------, w -< w • National Semiconductor Co) N ...... N SYS32/20 PC Add-In Development Package TL/C/9250-1 • • • High Performance, 10 MHz, no-wait state, 32-bit expansion board for an IBM-PC/AT or compatible system • An Operating System derived from AT&T's UNIX® System V.3 • The Series 32000 GNX (GENIX Native and Cross-Support) Language tools including the Series 32000 assembler, linker, monitors and debuggers • Hardware that supports the NS32032 CPU, NS32082 MMU, NS32201 TCU and the NS32081 FPU • Two available on-board memory configurations: - 2-Mbyte RAM -4-MByte RAM Software available on 1.2-MByte floppies Complete support for the following application tools: -SPLICE - National's Series 32000 Development Board Family - Compilers for C, FORTRAN??, Pascal and Ada - Complete System V Documentation - 4.2 "bsd" Utilities - Tools for Documentors (TFD), a derivative of AT&T's DWBTM utilities - Multiuser environment Description VAX 780. The SYS32/20 consists of a 32-bit PC AddIn board based on the Series 32000 chip set, a complete port of AT&T's UNIX® System V.3 specially developed software that integrates the UNIX and DOS operating systems, and National's Series 32000 development tools (GNX). National Semiconductor's SYS32/20 is a complete, high performance development package that converts an IBM-PC/AT or compatible system into an ideal environment for the support of Series 32000®-based applications. The SYS32/20 PC Add-In Development Package allows mainframe-size programs to run on a personal computer at speeds similar to those of a 6-9 o ~r-------------------------------------------------------------~ C\i CO) Hardware ~ The SYS32/20 hardware consists of a Series 32000 chip set on a single-slot co-processor board. The chip set includes an NS32032 CPU with either 2 or 4 MBytes of on-board memory.· The hardware is an IBM PC Add-In board that plugs into the no-wait-state motherboard. No additional connections are required. Up to 8 serial ports can be used on all supported PCs. Parallel ports are also supported. The SYS32/20 AddIn board supports a variety of Series 32000 family components including the high-performance, 10 MHz NS32032 Central Processing Unit, the NS32082 Mem0r:Y Management Unit, the NS32201 Timing Control Unit and the NS32081 Floating-Point Unit. adding the desired software subsets. User-friendly software guides you easily through each stage of installation. Integrated Environment The SYS32/20 PC Add-In Development Package allows data to be easily shared between DOS and the UNIX System V Operating system. A user can switch between either operating system using only a few keystrokes. A shell interface allows DOS commands to be executed from the System V shell, System V commands to be executed from DOS, and files to be transferred between the System V and DOS partitions on the system disk. In addition, the user can suspend the SYS32/20 operation, enter DOS, run an application and then return to the SYS32/20 environment. Software The SYS32/20 contains the OpUS5™ operating system. Opus5 is a complete port of AT&T's UNIX System V Release 3 (V.3), and is derived from GENIXIV.3, National Semiconductor's port of UNIX System V.3. System V is an advanced, proven programming environment that fully supports the Series 32000 microprocessor family, including Demand-Paged Virtual Memory (DPVM). System V's general-purpose, multitasking, interactive system makes the programmer's computing environment simple, efficient and productive. The SYS32/20 Add-In board can also be used to execute object code under a native environment. Object files conform to a superset of the AT&T Common Object File Format (COFF), and take full advantage of the advanced features of the Series 32000 architecture. The GNX (GENIX Native and Cross-Support) software consists of an assembler, a linker, debuggers, monitors, basic I/O routines and other tools that support a group of optional compilers such as C, Pascal and FORTRAN77. Other software features supported by the SYS32/20 include Tools for Documenters. Support for Hardware/Software Integration Two solutions are available for integrating application software, created under the PC-SYS32/20 development environment with target prototype. The PC with SYS32/20 operates as a local host computer system for the environments of both solutions. Under the environment of both solutions, the high language software debuggers provide powerful emulation facilities to test and shakeout the integrated hardware/software target system until a proven product is achieved. Such facilities include setting of breakpoints and registers and memory data display and modifications. The first solution requires the use of an In-System Emulator (ISE). The SYS32/20 Add-In Development Package supports National's ISE32 (In-System Emulator for the NS32032). The ISE software consists of the ISE monitor firmware, which resides in PROMs in the emulator pod, and the ISE Debugger (IDBG), which is included with, and runs on the SYS32/20. The monitor firmware controls the ISE hardware. The IDBG is a high-level, user-friendly debugger program. It translates commands entered by the user, into lowlevel instructions the ISE monitor uses to drive the hardware. IDBG also translates and sends ISE responses to the user. The second solution requires the use of monitor firmware programs running in the user's target hardware and Debugger (DBG). DBG is a superset of the IDBG described in the first solution above, and, like IDBG, is included with, and runs on, the SYS32/20. DBG performs the same functions as IDBG. The monitor downloads and controls the execution of the user's software. Monitor firmware programs include MON16 (monitor firmware program for NS32016-based target hardware) and MON32 (monitor firmware program for Installation Installation of the SYS32/20 PC Add-In Package is straight-forward and well-documented. The SYS32/20 software occupies a PC fixed disk in one of two ways: it either uses a separate partition for the logical disk or it uses a large DOS file. The first method is necessary for file systems larger than 28 Mbytes; the second method is recommended for fixed disks that don't use the ROM BIOS interface. Installation is divided into three general stages: partitioning the fixed disk, installing the core system, and 'Note: The hardware configuration does not allow the 2·Mbyte version to be upgraded to the 4-Mbyte version. 6-10 BasiC Kits (Note: No Compiler Included.) NS32032-based target hardware). These monitor firmware programs are provided in PROMs and included with SYS32/20. The monitors are also provided in source form so Series 32000 designers can modify the monitor to suit their target system requirements. NSS-SYS203-KIT1 For IBM-AT and compatible systems; 2MB on-board memory; UNIX System V.3 Operating System; GNX Assembler tools; "bsd" and Tools For Documenters utilities; software on 1.2 MB high density floppy diskettes; a complete set of manuals, including AT&T UNIX System V.3 manuals. NSS-SYS203-KIT2 For IBM-AT and compatible systems; same as KIT1 except with 4MB on-board memory. Configuring a System The SYS32/20 PC Add-In package supports a variety of configurations. Based on developer needs, the final configuration may need extra serial I/O ports, and/or networking capability. A hard disk of sufficient size is also an important part of the configuration. A configuration guide that outlines available options and recommended products for configuring the SYS32/20 development system is available. Optional Software Packages . (Prerequisite for use is purchase of the above basIc kits.) The following software should be ordered for execution on the System V.3-derived operating system. Available on high density diskettes only. NSW-C-BHAF3 Optimizing C compiler. NSW-F??-BHAF3 Optimizing FORTRAN?? compiler. NSW-PAS-BHAF3 Pascal compiler. NSW-ADA-BHBF Ada compiler. Networking software. NSW-NET-BHAF3 NSP-SYS321V3-MS Additional V.3 operating system manual sets. Minimum System Configuration The following list specifies the minimum configuration required to install a SYS32/20 PC Add-In Board: • 30-Mbyte hard disk. (40-Mbyte or larger is strongly recommended.) • 512 Kbytes of RAM. • PC/AT or compatible personal computer system. • PC-DOS 3.1 or later operating system. • Slots: -The 2-Mbyte board consists of 1 full board + 1/2 piggyback board and may require 2 slots depending on the arrangement of other expansion boards in the PC. -The 4-Mbyte board consists of 1 full board + 1 full piggyback board and may require 2 slots depending on the arrangement of other expansion boards in the PC. Note: For purchase of any and all software packages (NSW· ... ) user must show or demonstrate proof of prior purchase of one of the NSS· SYS203·KITx packages above. 6-11 N ~ r-------------------------------------------------------------------~ ~ National Semiconductor ISE32™ NS32032 In-System Emulator TL/R/8522-1 bus activity trace •• Complete Qualified tracing Pre-, post-, or center-triggering on trace •• Two 32-bit execution counters Supports Memory Management Unit • functions under various host systems • Supported and operating systems on-line help facility •• Hierarchical Self-diagnostic up to 10 MHz* • Operation Emulation of NS32032 Central • Processing Unit, NS32082 Memory • • • • • Management Unit, NS32201 Timing Control Unit Host resident debuggers Generalized event driven system Memory mapping, up to 128 kbytes Read/write protection of 4 kbyte memory blocks Program flow traCing, up to 1023 nonsequential fetches 'Refer to ISE speed consideration section. Description The NS32032 In-System Emulator (ISE32) is a powerful tool for both hardware and software development of NS32032 microprocessor-based products. The ISE32 emulates the NS32032 Central Processing Unit (CPU), the NS32201 Timing Control Unit (TCU) and NS32082 Memory Management Unit (MMU). NS32082 MMU emulation can be disabled by a switch setting. The ISE32 allows users to test and debug both hardware and software in their own hardware environment. The ISE32 is a complete unit, including an internal clock oscillator that generates a choice of three clock signals: 10 MHz, 5 MHz, and 2.5 MHz; and 128 kbytes of dedicated user's ISETM memory. With the ISE32, users can easily stop emulation and examine the contents of CPU registers, slave processor registers, and memory. The ISE32 consists of the ISE hardware, the ISE firmware monitor, and RS232 cables. A host-dependent debugger software program is available as part of the appropriate Series 32000® software support package. Each of the Series 32000 software support packages include software tools to produce code compatible with the debugger software. Refer to the section "Required User-Supplied Equipment". Hardware Description The ISE32 hardware is housed in three enclosures: the ISE Support Box; the Emulator Pod; and the TIL Status Pod. Figure 1 is a block diagram of ISE32 hardware. The ISE Support Box is the largest enclosure. It contains the emulation support circuits for trace, breakpoints, and mapped memory; as well as the hardware for the RS232 serial ports, which are used to communicate with the host and the user's terminal. It also houses the power supplies and the ISE32 control switches and indicators. Figure 2 shows the location of the ISE32 control switches and indicators. Table I lists the functions of each switch and LED. The Emulator Pod contains the NS32032 CPU, NS32082 MMU, and NS32201 TCU required for target system emulation. It also contains the ISE Monitor firmware. 6-12 .---------------------------------------------------------~0 The Emulator Pod connects to the ISE Support Box via a four-foot flat cable assembly. Connections to the target system are made via three one-foot target cables. One target cable is provided for each member of the Series 32000 chip set (CPU, MMU, and TCU). The Status Pod is the smallest enclosure. It provides TTL-compatible input and output signals for use during ISE operation. The Status Pod has ten leads and three binder posts that can be connected to either the target system or test equipment such as logic analyzers or oscilloscopes. Table II lists the function of each lead and post of the Status Pod. The Status Pod connects to the ISE Support Box via a six-foot cable. When the ISE32 unit is not running an emulation program, it is running a program called the ISE monitor. The monitor communicates with the ISE Debugger and provides a command protocol that allows the host complete control of the ISE32 hardware. The ISE Debugger translates commands entered on the host system from a terminal, into low-level instructions that the ISE monitor uses to drive the hardware. The ISE Debugger also translates and sends ISE responses to the user via the terminal. All ISE monitor operation is transparent to the user. The ISE32 Debugger The ISE32 Debugger is user compatible with the standard non-ISE Series 32000 Debugger. Compatibility ISE32 Software Overview The ISE32 software consists of the ISE firmware monitor, which resides in PROMs in the Emulator Pod, and the ISE Debugger, which runs on the host system. HOST SYSTEM TLL STATUS POD TERMINAL .--=--, POD AC INPUT TLlR/B522-4 FIGURE 1. ISE32 Block Diagram IDLE ISE NO. 111I'e21'1 ON~OFF MMU EMUL FAIL RUN • • ~C,~ • .J ~ STOP TAR 'SE [~w:J RESET FRONT PANEL TL/R/B522-3 FIGURE 2. ISE32 Controls and Indicators 6-13 m ~ N ~ CO) LLI ~ ,---------------------------------------------------------------------------------, minimizes the user's learning time of the various development tools. The ISE32 Debugger fully supports all the powerful debugging and emulation facilities provided by the ISE32 hardware, and supplements these features with a very powerful software-based program debugging environment. The basic debugging features of the ISE32 are as follows: (1) Supports both high-level and assembly languages·. (2) Breakpoints can be set at the source code level, even when using high-level languages.· (3) Supports symbolic debugging; variables can be referenced by their source code names.· (4) Certain procedure parameters and variables are easily displayed. (5) Structured data types and pointers are easily displayed. (6) Supports both command and history files. (7) Memory can be displayed in many different ways, including a disassembly mode displaying memory as NS32032 instructions. (8) Supports all the emulation and debug facilities provided by the ISE32 hardware. • Depends on host environment and language. Modes of Operation ISE32 can be set-up to operate in either stand-aside mode or transparent mode. In stand-aside mode, one serial RS232 link from the host system is connected to the ISE32 while another serial RS232 from the host system is connected to the user's terminal. In this configuration, any of the host's users can access the ISE32. In transparent mode, one serial RS232 link from the host system is connected to one serial port on the ISE32 while the user terminal is connected to a second serial port on the ISE32. In this configuration, only one serial port is required from the host system. In non-emulation mode, the ISE32 is transparent to the user, allowing normal communication between the user and the host system. ISE32 Operation Human Interface ISE32 is easy to learn and easy to use. The software includes a complete on-line help facility. Invoking the TABLE I. ISE32 Control and Indicator Functions Control/Indicator ISE NO. Switch MMU Switch STOP Switch RESET Switch IDLE EMUL FAIL RUN TAR ISE Function Set to 0; other positions reserved. When ON, ISE32 enables MMU operation. Interrupts emulations, restores control to the ISE32 monitor. Resets the ISE32 hardware. Warning that POD CPU is in a wait state. (Time out) Indicates that ISE32 is executing the user's program. Warning that diagnostics have failed. Indicates that ISE32 diagnostics are running. Indicates that target power is on. Indicates that ISE32 is on. TABLE II Status Pod Signal Description ISE Function Status Pod Label Leads 1-WHT-USRCLK-U 2-BLK-GND 3-BRN-EXTO-U 4-RED-EXT1 5-0RN-EXT2 6-YEL-EXT3 7-GRN-EXT4 8-BLU-EXT5 9-VIO-EXT6 10-GRY-EXT7 11-WHT-USEBRK/U Not Used Common Ground EXTO (external input 0) EXT1 (external input 1) EXT2 (external input 2) EXT3 (external input 3) EXT4 (external input 4) EXT5 (external input 5) EXT6 (external input 6) EXT7 (external input 7) IS (input sync) Posts TBRUN BKSYNCH/-U TRSYNCH/-U GND TSYNC31/ TSYNC21 GND Not Used Output Sync Not Used Common Ground Not Used Not Used Common Ground 6-14 "HELP" command gives a summary of alllSE32 commands, an individual command, or an individual commands parameters. This feature helps the user get his work done quickly with less frustration. - Byte Enable Pins - Data Direction Pin - Status Bits - Interlock Bit - Masked combinations of any of the above options. Either virtual or physical addresses can be sampled. ISE32 also provides a range breakpoint event, R. The range breakpoint can be qualified by any of the above options within a specified address range. Any breakpoint can cause emulation to stop immediately. Also, if used with the No Stop option, breakpoints can be combined with other events to cause a variety of action. Emulation The ISE32 unit has its own CPU, MMU, and TCU components. These components are connected to the target system via cables. These components perform the same functions, with close to the same timing characteristics as they would if mounted in the target system.' The ISE32 does not require wait states for operation. Emulation memory, resident in the ISE32, can be used instead of target system memory. This feature is implemented by the mapping capabilities. With this feature, the ISE32 can run and debug programs without a working target system. User target memory from the entire address space of the CPU or MMU (whether it exists or not) can be mapped onto the ISE32 emulation memory in 4 kbyte blocks. The total amount of mapped memory cannot exceed 32 4 kbyte blocks (128 kbytes). Associated with the emulation memory mapping scheme is a capability for read/write protection. Any 4 kbyte block within the address space of the CPU or MMU can be protected. Event-Expressions An event-expression is a Boolean expression made up of simple events, Le., a logical combination of simple events. This allows the user to generate many different event combinations, tailored to system activity of particular interest to the user. These generalized events are used by many ISE32 commands such as stop, trace, event counting, etc. Event-expressions provide creative and flexible debugging procedures. Event-expressions can be evaluated as either logically true or logically false. Valid logic operations for event expressions are: Negation (NOT), AND, and OR. Generalized Events Stopping Execution on Events To provide a versatile way of observing and controlling the significant state changes on the microprocessor, ISE32 allows the use and definition of "events". In general, a simple event is a breakpoint, a bus change, or a significant observation. An event can also be a logical combination of simple events (an Event-Expression). A common debugging activity is to stop emulation on the occurrence of an event of interest. Stopping emulation puts ISE32 in the monitor mode so the user can examine and alter the state of the CPU, memory, and ISE32 functions. Emulation can be stopped on either simple events or event-expressions. Simple Event Definition ISE32 maintains a 1023-entry trace memory. Trace memory captures bus activity in one of two trace modes: - Program Flow Trace - Memory Bus Trace Any combination of events can be used to qualify tracing. When enabled, tracing in either mode continues until a specified terminating event occurs. The actual end of tracing can be delayed after the terminating event by a count of 1 to 1023. This allows trace data to be captured before, after, or around the terminating event. Flexible Tracing The simple events are: - Breakpoints - Latched Events - Counter Done - Status Pod Inputs - Trace Done Breakpoint Events ISE32 provides four common breakpoint events, named A, B, C, and D. The breakpoint event can be used in two ways: (1) Execution Breakpoint-occurs just prior to execution of an instruction at a specified address. (2) Reference Breakpoint-occurs on a match when sampling: - Address Bits - Data Bits - External Status Bits - User/Supervisor Pin Program Flow Trace The Program Flow Trace mode captures the CPU Program Counter address of 1023 non-sequential instructions. This mode also maintains a count of sequential instructions executed between each non-sequential instruction stored in the trace memory. Memory Bus Trace The Memory Bus Trace mode captures a summary of the following system parameters: - Address bus contents • Refer to ISE speed consideration section. 6-15 enm w N ~ C") LLI !l r---------------------------------------------------------------------------------, - Data bus contents CPU status (data transfer, non-sequential fetch, interrupt acknowledge, etc.) Time base counter contents PFS counter contents Status Pod external inputs States of the following CPU pins: UNS-UserlNot Supervisor BEO-BE3-Byte Enable DDIN-Data Direction In NMI-Non-Maskable Interrupt ILO-Interlock duce timing margins in that hardware; i.e., combined propagation paths are lengthened by the ISE32 target cable and transceiver delays. If sufficient timing margins are not restored, emulation may not be successful. In many cases, margin can be restored by reducing the emulation speed, lengthening the available time for signals to propagate. However, the exact speed reduction necessary to regain margins will depend on how Series 32000 components are used in the customer hardware. Tables III, IV and V list the combined cable and transceiver maximum propagation delay for each signal. It is the customer's responsibility to factor these delays with those of his own circuitry. In doing so, it can be determined whether ISE32 can reliably emulate with that circuitry. Counters The ISE32 contains two 32-bit counters with an overflow flag that may be used to count events, instruction cycles, memory cycles, or clock cycles. The counters may be programmed to start and stop counting on specific events. This permits counters to be used as timers to determine relative timing differences between various events. One use of this feature is to measure software or hardware performance. The counters may also be used to generate other ISE32 events upon completion of a count. Supported Configurations This product is designed to work in most target systems configurations. However, certain design restrictions may apply. Refer to the ISE32 User's Manual for further information. (See "Documentation section") Required User-Supplied Equipment For use with SYS32TM/GENIXTM Systems: - Included with the GENIX Operating System Software Package. For use with VR32/System V /Series 32000 - Included with the System V/32000 Operating System Software Package. For use with VAXTM/UNIXTM Systems: - Valid DEC VAX-11TM configuration with available RS232 port. - Berkeley UNIX 4.2 bsd Operating System. - NSW-C-4VXR Series 32000 Cross Software Package. For use with VAXIVMSTM Systems: • Valid DEC VAX/11 configuration with available RS232 port. • VMSTM Operating System, Version 4.2 or later. • NSW-ASSEMB-9VMR or NSW-PASCAL-9VMR Series 32000 Cross Software Package. Event Trigger for External Test Equipment ISE32 events can trigger external test equipment, such as oscilloscopes and logic analyzers. This test equipment can be used in conjunction with the ISE32's debugging features to solve system timing problems. The external trigger signal is available at the status pod output: - BKSYNCH/-U (Output Sync) Self-Test Diagnostics At power-up, ISE32 runs a diagnostic program to verify ISE firmware integrity and proper hardware function. ISE32 Timing Options ISE32 includes the following timing options: - Sampling time can be set to sample either virtual or physical addresses - Status Pod external lines can be sampled at either data valid or address valid times - The emulation clock frequency can be set to one of the following frequencies: 2.5 MHz 5.0 MHz 10.0 MHz Target Board Frequency Specifications Environmental Power ISE Speed Considerations ISE32 utilizes standard, 10 MHz NS32032, NS32082 and NS32201 devices to perform control and emulation functions. When emulating, each device is connected to customer hardware via a target cable and associated cable transceivers. This arrangement delays the signal propagation between the Series 32000 components in the ISE32 POD and Series 32000 sockets in the customer hardware. These delays re- Operating Temperature +10·Cto +40·C Storage Temperature - 20·C to + 65·C 2.5A @ 115 VAC, 50/60 Hz, single phase 1.5A @ 220 VAC, 50/60 Hz, single phase. Approximately 1170 BTU. Physical ISE Support Box Height: Width: Depth: Emulation Pod Height: Width: Depth: 6-16 5.8 in. (14.7 cm) 18.5 in. (47.1 cm) 12.3 in. (31.2 cm) 2.1 in. (5.3 cm) 9.3 in. (23.6 cm) 10.0 in. (25.4 cm) Specifications (Continued) TTL Status Pod Cable Lengths Target Interface Electrical Characteristics- See Tables III through V. Height: 1.0 in. (2.5 cm) Width: 3.125 in. (7.9 cm) Depth: 6.125 in. (15.6 cm) ISE Support Box to Emulation Pod: 4.0 ft. (1.22M) ISE Support Box to TTL Status Pod: 6.0 1t. (1.B3M) Emulation Pod to Target Board: 1.0 ft. (0.30M) Order Information Complete ISE32 Units NSS-ISE32 NSS-ISE32E ISE32 (NS32032), 115 VAC ISE32 (NS32032), 220 VAC TABLE III. Electrical Characteristics for TCU Interface Signal Name Interface Device Outgoing Signals NTSO CTTL FCLK NDBE NRD NWR NRSTO RDY IOH 15 mA 15 mA 15mA 15mA 15 mA 15mA 15mA 15mA 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 Incoming Signals NPER NCWAIT NWAIT1 NWAIT2 NWAIT4 NWAITB XCTL1 NRWEN NRST1 Propagation Delay Time Tpd* Input And/Or Output Current 74F244 74F244 74ALS244 74ALS244 74F244 74ALS244 74F244 74F244 74ALS244 IOL t4BmA t4BmA t4BmA t4BmA t4BmA t4BmA t4BmA t4BmA IIH IlL 20 IlA 20 }LA 20 IlA 20 IlA 20 IlA 20 IlA 20 IlA 20 IlA 20 IlA 1.6mA 1.6mA 0.1 mA 0.1 mA 1.6mA 0.1 mA 1.6mA 1.6mA 0.1 mA 12.4 ns 12.4 ns 12.4 ns 12.4 ns 12.4 ns 12.4 ns 12.4 ns 12.4 ns 7.9 ns 7.9 ns 12.4 ns 12.4 ns 14.5 ns 12.4 ns 7.9 ns 7.9 ns 12.4 ns 'Interface device, plus cable. tFor Vee maintained between 4.75V and 5.25V. TABLE IV. Electrical Characteristics for MMU Interface Signal Name Input AndlOr Output Current IOH IOL IIH IlL Propagation Delay Time Tpd* 15mA t4BmA 20 IlA 0.1 mA 11.4 ns 15 rnA 15mA 15mA 15mA 15mA t4BmA t4BmA t4BmA t4BmA t4BmA - - - 12.4 ns 12.4 ns 12.4 ns 12.4 ns 12.4 ns 20 IlA O.4mA 19.4 ns Interface Device BIDIRECTIONAL SIGNAL NPAV 74ALS245 OUTGOING SIGNALS A24 MMUINT NABT NFLT NHLDAO 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 - - - INCOMING SIGNALS NHOLD 74LS126 - - 'Interface device, plus cable. tFor Vee maintained between 4.75V and 5.25V. 6·17 N r--------------------------------------------------------------------------, UJ TABLE V. Electrical Characteristics for CPU Interface C') !a Signal Name Input AndlOr Output Current IOH IOL IIH IlL Propagation Delay Time Tpd* Interface Device BIDIRECTIONAL SIGNAL NSPC 74ALS245 15 mA t48mA 20/LA 0.1 mA 12 ns ADOO AD01 AD02 AD03 AD04 AD05 AD06 AD07 AD08 AD09 AD10 AD11 AD12 AD13 AD14 AD15 AD16 AD17 AD18 AD19 AD20 AD21 AD22 AD23 D24 D25 D26 D27 D28 D29 D30 D31 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 15mA 15 mA 15 mA 15 mA 15 mA 15 mA 15 mA 15mA 15 mA 15 mA 15 mA 15 mA 15mA 15 mA 15 mA 15 mA 15 mA 15 mA 15 mA 15 mA 15mA 15 mA 15 mA 15 mA 15mA 15 mA 15 mA 15 mA 15 mA 15mA 15 mA 15 mA t48mA t48mA t48mA t48mA t48mA t48mA t48mA N8mA t48mA t48mA t48mA t48mA N8mA t48mA t48mA t48mA t48mA t48mA t48mA N8mA t48mA t48mA t48mA N8mA t48mA t48mA t48mA t48mA t48mA t48mA t48mA t48mA 20/LA 20/LA 20/LA 20/LA 20 ""A 20/LA 20 ""A 20/LA 20,...A 20/LA 20 ""A 20 ""A 20 ""A 20 ""A 20/LA 20/LA 20 ""A 20/LA 20/LA 20/LA 20 ""A 20/LA 20 ""A 20/LA 20 ""A 20 ""A 20 ""A 20/LA 20/LA 20 ""A 20 ""A 20 ""A 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 mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA mA 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns NNDIN NADS NBEO NBE1 NBE2 NBE3 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 74ALS245 15 mA 15 mA 15mA 15 mA 15 mA 15 mA t48mA t48mA t48mA t48mA t48mA t48mA 20 ""A 20 ""A 20/LA 20 ""A 20 ""A 20 ""A 0.1 0.1 0.1 0.1 0.1 0.1 mA mA mA mA mA mA 12 ns 12 ns 12 ns 12 ns 12 ns 12 ns 'Interface device, plus cable. "tFor Vee maintained between 4.75V and 5.25V. 6·18 Signal Name Outgoing signals NILO STO ST1 ST2 ST3 NPFS UNS BB NOS NBRO NHLOA Input AndlOr Output Current Interface Device 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74ALS244 74F244 74ALS244 IOH IOL 15mA 15mA 15mA 15mA 15mA 15 mA 15 mA 15 mA 15mA 15mA 15mA t48mA t48mA t48mA N8mA t48mA t48mA t48mA t48mA t48mA t48mA t48mA Incoming signals TGTPC NINTC NMI NBRI NHOLOC IIH IlL - - 20mA 20mA 20mA 20mA 0.1 mA 0.1 mA 1.6mA 0.1 mA 74ALS244 74ALS244 74F244 74ALS244 Propagation Delay Time Tpd* 13.0 ns 13.0 ns 13.0 ns 13.0 ns 13.0 ns 13.0 ns 13.0 ns 13.0 ns 13.0 ns 8.5 ns 13.0 ns 13.0 ns 19.6 ns 8.5 ns 19.6 ns 'Including internal logic, interface device, and cable. tFor Vee maintained between 4.75V and 5.25V. Documentation tion. (Included with the appropriate Series 32000 support software package.) NSP-ISE32VMS-M ISE32 User's Manual for VAX/ VMS operation. (Included with the appropriate Series 32000 cross-support software package.) NSP-ISE32GNX-M ISE32 User's Manual for SYS32/ GENIX and VAX/UNIX operation. (Included with the appropriate Series 32000 support/cross-support software package.) NSP-ISE32COF-M ISE32 User's Manual for VR32/ System V /Series 32000 opera- 6-19 ~ CO) I.LI ~ r---------------------------------------------------------------------------------, ISE32 Debugger Command Summary The following comprehensive list of ISE32 Debugger commands is in alphabetical order. Refer to the ISE32 User's Manual for a detailed description of each command. Command Begin Breakpoint Create Breakpoint Delete Breakpoint Print Breakpoint Revive Indirect File Debugger String Define Counter Define Latch Define Output Sync Define Stop Define Trace Disassemble Go Help In List Calls List Definition List Files List Information List Modules List Strings List Trace Map Create Map Print Memory Fill Function Command Load the program into memory and initializes registers. Creates breakpoint A, B, C, D at specified address or, creates RANGE breakpoint at specified address range. Deletes specified breakpoint. Print address and conditions of specified breakpoints. Revives specified breakpoint. Executes command file or debugger string. Sets debugger string. Defines set up for ISE counter 1 or 2. Defines the latch 0 or latch 1 event. Defines output sync event. Defines stop event. Defines the end, delay, and trace mode parameter for trace. Disassembles instructions. Starts execution of the program. Displays general help. Checks that the contents of address or register are within a specified range. List entries in a call. Lists current definitions. Lists nine entries of a selected file. Lists current ISE status. Lists modules in current program. Lists current debugger string values. Lists nine trace entries. Maps and/or protects 4 kbyte blocks in a specified address range. Prints current mapping. Fills specified address range with value. Memory Move Memory Search On Print Print Address Protection Create Protection Print Quit Repeat Replace Select Echo Select Full Select History Select Link Select Module Select Options Select Radix Step Step Call Step Down Step Instruction Step Until Step While 6·20 Function Moves memory content from address range to address range. Searches for value. Sets idbg32 response on condition. Prints content of address range or registers. Prints absolute address and module area associated with address. Creates protectionl translation for pages specified by address range. Prints protection level status. Terminates session. Repeats previous command. Replaces content of address or register. Selects echo mode. Selects full symbolic PC. Selects history file. Selects communication ·channel. Selects module. Select current ISE operation option. Select global radix. Execute specified number of machine instructions. Executes until a call or return. Executes one instruction inside a procedure, skips over call instructions. Executes specified number of instructions inside a module. Executes instructions until contents of address or register are within specified value. Executes instructions while contents of address or register are within specified value. .--------------------------------------------------------------------------00 "tJ r• National Semiconductor o m C SPLICE Development Too~ CD ~ 0' "lJ 3 - CD ::::J c} 2. TLlR/9347-1 • • • • • III Parallel I/O port reserved for future Download capabilities via serial connections 256 Kbytes of mappable memory Optional 1-Mbyte memory board, expands memory up to 8 Mbytes On-board monitor with power-on diagnostics Supports Series 32000 CPUs, including: NS32332 NS32CG16 . NS32032 NS32C032 NS32016 NS32C016 NS32008 highspeed download capabilities Programmable serial port baud rates CI CPU bus status test pOints for logic analyzer connections Ill! 4 LED indicators for diagnostic results and general user applications rJ RESET and NMI push buttons m 15 MHz maximum operation [l 1.0 Product Overview The SPLICE Development Tool provides a communication link between a Series 32000 target and a development system host. This connection allows users to download and map their software onto target memory and then debug this software using National Semiconductor's debuggers. SPLICE includes two RS232 serial ports for the system host/terminal. These ports are particularly useful for target systems that have no serial ports, such as embedded controller designs. SPLICE is also useful for designs with ROM-based software, or designs whose memory portion has not yet been built. SPLICE provides 256 Kbytes of SRAM which users can map into target memory. Using mapped memory considerably reduces software development time. SPLICE also uses the target system's chipset. This cost-effective feature is achieved through the use of CPU and MMU target cables. 6-21 '0 {!. 2.0 Description of Features C 2.1 PHYSICAL DESCRIPTION E Q, The SPLICE logic board is a 7" by 9" printed circuit board that is the base unit for all operating configurations. Accessory parts include an expansion memory board and target cables (see Sections 2.4 and 2.6). Figure 2 shows the physical layout of the SPLICE logic board. Each of these features are discussed in the following sections. CI) o ~C LU o ::::i D. en Regardless of the amount of memory used, SPLICE divides the memory into 4 equal, separate banks. Each bank may be mapped at non-overlapping starting addresses using the SPLICE, PROM-based monitor or DBG commands. See the GNX Symbolic Debuggers's Reference Manual (Publication No. 42451 0899-001 A) or SPLICE Hardware Reference Manual for details. The SPLICE monitor and I/O addressing occupy 256 Kbytes of memory. This block of memory will boot up at address zero. The user may relocate these 256 Kbytes to any address; if this block of memory is relocated, SPLICE requires 2 Kbytes of the first 64 Kbytes of RAM for a scratch pad area. 2.2 SERIAL CONNECTORS SPLICE provides two serial ports (P5 and P6) for connection to a terminal/host. SPLICE also supplies RS232 cables for connecting SPLICE to the hostlterminal (see Section 3 for connection diagrams). These ports are jumper configurable for DTE (Data Terminal Equipment) or DCE (Data Communication Equipment). DSR/DTR or CTS/RTS handshaking may also be selected. 2.4 MEMORY EXPANSION 1-Mbyte memory expansion boards are available as an option to the user. SPLICE supports expansion up to 8 Mbytes, in the following configurations only: SPLICE with 1 memory board, with 2 memory boards, with 4 memory boards, or with 8 memory boards. The memory boards connect beneath the SPLICE logic board to a 94-pin connector, P8. When using memory expansion boards, the SPLICE on-board memory is disabled. 2.3 MEMORY The SPLICE logic board contains 256 Kbytes of Static RAM. Each of the 32k x 8-bit memory devices has 150 ns access times. The memory capacity of SPLICE may be increased by adding 1 MByte memory expansion boards (see Section 2.4). When using memory expansion boards, the SPLICE on-board RAM is disabled. ------------8.25"------------ 000 00 '---' SERIAL 1/0(2.2) < 1J D P5 0 PARALLEL I/o (2.7) (2.10) [ RESET Nt.ll P8 - EXPANSION t.lEt.lORY (2.4) P9 Pl0 POWER CONNECTORS PROt.l BASED t.lONITOR (2.5) DIP SWITCH #3 BAUD RATE SELECTION (2.8) LEOs (2.10) P4 256 KBYTES SRAt.l (2.3) TEST POINTS 1-14 (2.9) P3 Tlt.lING CONTROL (2.6) 7.0" TEST POINTS 15-60 (2.9) P2 NS32382 t.lt.lU (2.6) PI CPU CONNECTOR (2.6) TL/R/9347-2 Numbers in parenthesis indicate text sections FIGURE 2. SPLICE Logic Board 6-22 r--------------------------------------------------------------------------, ~ "tJ 2.0 Description of Features (Continued) 2.5 MONITOR Four EPROMs contain the monitor firmware. When power is initially applied (cold boot) to SPLICE, the monitor performs four diagnostic tests. The diagnostics test the ROM, RAM, mapping RAM and UART. If a failure is detected, a message code will appear on the LEDs and on the terminal. Refer to the SPLICE Hardware Reference Manual for explanation of error codes. The main function of the monitor is to interpret and handle commands from the terminal or debugger. The SPLICE monitor communicates with National's Symbolic Debugger, DBG32. DBG32 resides on a development system host, as part of the GENIXTM Native and Cross (GNX) Language Tools, Release 2, revision C, or a subsequent revision of GNX functions with SPLICE. Some of the features of DBG32 include: - Assembly and mixed-language program debugging, - Symbolics - Source-level debugging - Single stepping, breakpoints - Multimodule program debugging - Variety of Radixes - Indirect files and History files - On-line help facility Refer to the GNX Symbolic Debugger's Reference Manual or the GNX datasheet for details. CPU/MMU CABLES Depending on the target design, SPLICE requires one or more of the following cables: NS32332 CPU cable NS32032/C032 CPU cable NS32016/C016/008 CPU cable NS32CG16 CPU cable NS32382 MMU cable Figure 3 shows the basic layout of the flex cable. 60140 PIN SPLICE CONNECTOR j rf' j u/~_......;I.;;;;;..;.=I_>DEVICE SOCKET DEVICE CONNECTOR TLlR/9347-3 Top View FIGURE 3. Flexible Printed Circuit Cable The "device connector" is inserted into the user's target socket, replacing the user's device. The user's device plugs into the "device socket." At the opposite end of the flex cable is a 60 pin connector for CPUs, or a 40 pin connector for the NS32382 MMU. These are installed on P1 and P2, respectively, on SPLICE. Targets using the NS32082 MMU do not require a cable. Refer to the Hardware Reference Manual for more details on the wiring, installation, and handling of cables. TIMING CONTROL CABLE The timing control cable is a twisted pair cable consisting of 26 flying leads. The following table lists the signals, pin numbers, and functional decription of each signal. This cable connects to P3 on SPLICE. Section 3.2 describes how to connect this cable to the target. 2.6 CABLE DESCRIPTION Two different cables are supplied to connect SPLICE with the target hardware: flexible printed circuit cable for CPU/MMU signals and a twisted pair, flying lead cable for timing control signals. Both types of cables are detailed in the following text. 6-23 r(; m C ~ 0' "CI 3 CD ~ ';} 2. '0 ~ cQ) E a. o 2.0 Description of Features (Continued) Signal Pin I/O Functional Description PAV 1 I CTTL 082RDYIN 3 5 I I 082RDOUT 7 0 RSTIN RSTOUT 9 11 0 BDEN 13 0 BDEN BBDEN BBDEN INT 15 17 19 21 0 0 0 0 DACK 23 0 TRIG1 25 0 TRIG2 26 0 Used to latch the address information from the CPU's AD bus when the NS32082 MMU is installed. NOTE: When the NS32382 MMU is used, the MMU's PAV pin is connected to SPLICE via the 382 MMU cable, and it is not necessary to connect this signal. A TTL compatible version of the PHI1 clock signal. When installing SPLICE, the signal that normally is connected to the ready input of the 082 MMU should be disconnected and connected to the SPLICE via P3-5. The output generated from SPLICE, after receiving the 082 ready input and ANDing it with SPLICE's ready signal, is connected to the ready input of the 082 MMU. A Schmitt triggered input connected to the reset circuitry of the target system. An active low, CMOS level synchronous reset output generated by ANDing the RSTIN signal with the SPLICE's reset circuitry output. The RSTOUT signal should be used to reset the target's circuitry. Active high Board Enable output. When asserted, the SPLICE ROM/IO or RAM is accessed. This Signal is connected to the user's target to disable the buffers and drivers of the CPU's address/data bus. Complementary output of BDEN. CMOS level version of BDEN. Complementary output of BBDEN. A CMOS level output generated by the DUART asserted whenever the DUART is ready to transmit or receive. An open-collector signal driven low when BDEN is asserted and SPLICE's data buffers are enabled. A TTL level output signal driven by the DUART's output port bit 2 on SPLICE. The user may program the state of this output using a special supervisory call. Like TRIG1, this is a TTL output signal driven by the DUART's output port 3 on SPLICE. The SPLICE monitor will drive this bit low during the monitor mode and set when running the user program. ~ c w o ::i a.. (f) I 2.7 PARALLEL 1/0 INTERFACE 2.10 INDICATORS AND PUSH BUTTONS P4 has been reserved for a future high speed download connection. SPLICE uses 4 LEDs to indicate failures during poweron diagnostics. The programmer may also use these as general purpose indicators. Two push buttons are on the SPLICE logic board: NMI and RESET. The reset circuit is jumper configurable to originate from SPLICE reset or the target reset. 2.8 PROGRAMMABLE BAUD RATES Various baud rates can be selected by setting positions 1, 2 and 3 of DIP switch 3 as follows: Baud Rate SW3-1 SW3-2 SW3-3 19200 9600 4800 2400 1800 1200 600 300 on off on off on off on off on on off off on on off off on on on on off off off off 2.11 OPERATING SPEEDS SPLICE operates at up to 15 MHz. When operating from target memory, full speed operation may be achieved. However, when accesses are made to SPLICE memory or the UART, wait states are required. The following is a table of required wait states: 2.9 TEST POINTS SPLICE has 60 test points which allow the user to trace, using a logic analyzer, the CPU's bus activity. Test Points Signals 1-14 15-46 47-60 P3-Timing Control Signals AD Bus Signals Control Signals from CPU 6-24 ROM/UART RAM FREQ.(MHz) 1 2 3 0 1 1 6 10 15 (J) "tJ 3.0 Required Operating Environment 3.2 SPLICE/TARGET INTERFACE In addition to the logic board and CPU/MMU cables, SPLICE requires the following equipment: - A regulated + 5 VDC power supply capable of supplying a 4A minimum - A host computer system with NSC's GENIX Native and Cross (GNX) Development Tools, Release 2, revision C or later - An RS232 compatible terminal The following sections describe how to connect SPLICE to the user's target and host. SPLICE connects to the user target through P1, P3, and if the NS32382 MMU is used, P2. P1 connects to the CPU cable which is, in turn, connected to the target CPU socket. P2 connects to the NS32382 MMU cable. P3 connects to the timing control cable. A minimum of five timing control signals must be connected to operate with SPLICE: CTIL, RSTIN, RSTOUT, BDEN, and PAV. SPLICE taps onto CTIL and PAV directly. RSTIN and RSTOUT will require the designer to disconnect the target reset circuitry and route it through SPLICE. BDEN is the most important signal. An extra OR gate (see Figure 68, G1) is required to OR the target board enable with the SPLICE board enable. ORing these signals together prevents bus collisions. The target board enable is taken from the CPU data buffers; the SPLICE board enable is P3-13, -14, -15, or -16 of the timing control cable. IMPORTANT: The target's CPU data buffers must be disabled to operate with SPLICE. Other signals may be required, depending on the target design. (Refer to Section 2.6 for details on other timing control cable signals.) When designing a board for use with SPLICE, the designer should allow easy access to these signals. Figure 6 illustrates how to connect the timing control cable to a typical NS32016 target. Figure 6A shows a typical circuit, and Figure 68 shows the target connected to SPLICE. 3.1 SPLICE/HOST INTERFACE SPLICE connects to the development host through RS232 cable(s). The monitor on SPLICE will interface with any host that has a DBG32. DBG32 is a symbolic debugger available in the GENIX Native and Cross Support (GNX) Development Tools software package. The SPLICE monitor functions with GNX Tools R2 rev. C or later. SPLICE can be connected to the host in one of two ways: Stand-aside mode or Transparent mode. Standaside mode is used when only one serial port is available from the host for SPLICE operation (Figure 4). Stand-aside mode is also convenient when SPLICE needs to be shared by different users. 4.0 Specifications/Characteristics Environment SPLICE is designed to operate in a laboratory environment. Sufficient air flow must be allowed to ensure all components stay within their specified temperature range. Temperature: Operative O°C to 55°C Non-operative - 40°C to + 60°C Humidity 10% to 90% relative, non-condensing Altitude Operative 15,000 feet TL/R/9347-4 FIGURE 4. Stand-Aside Mode Transparent mode is useful for remote hosts. Transparent mode uses both serial ports (P5 and P6), as shown in Figure 5. Power Requirements SPLICE requires a regulated + 5 VDC power source capable of supplying a 4A minimum. SPLICE has a DC-DC converter which generates the + 12 VDC and - 12 VDC required by the RS232 interface drivers. DC Characteristics Table 1 lists the DC characteristics for the logic circuits on SPLICE. AC Characteristics TL/R/9347 -5 Table 2 lists the AC characteristics for the signals of the SPLICE circuits. Figure 1 illustrates SPLICE access timing, RDY circuit timing, READ timing, NMI timing, and BACKOUT timing. FIGURE 5. Transparent Mode 6-25 r(; m c ~ 0" 3 "C CD ~ c} 2.. "0 {!. 4.0 Specifications/Characteristics (Continued) 5i E a. o ~ LU o ::i a. tn TABLE 1. DC Characteristics of I/O Signals Signal Max Input Current (~A) Min Output Current (mA) Max Input Cap. (pF) IIH IlL IOH IOL ADO-AD16 25 105 6.0 6.0 30 AD16-AD31 50 755 6.0 6.0 35 PAO-PA15 20 100 PA16-PA31 45 750 - - 10 5 PDO-PD7 50 500 15.0 64.0 5 ADSPAV 20 500 80 20 2000 500 - 5 CTTL (1) (2) - RSTIN 20 600 BWOBW1 20 600 BE1 BE2 BE3 HBE 50 700 FLT 25 250 - DDIN 1 1 BACKIN 20 500 NMIN 25 - - 20 5 5 5 - 5 - - 10 - - 5 250 5 5 MATNSATN 50 400 15.0 64.0 5 MACK SACK 50 400 15.0 64.0 5 RDYOUT - - 2.0 20.0 2.0 20.0 - - - 6.0 6.0 2.0 20.0 - - 1.0 20.0 6.0 6.0 - - - 0.4 2.4 - 0.4 2.4 - - - 2.0 20.0 - 2.0 20.0 - - 6.0 6.0 6.0 6.0 - 30.0 64.0 5 - 30.0 64.0 5 082RDYOUT RSTOUT BACKOUT NMIOUT INT TRIG1 TRIG2 BDEN BDEN BBDEN BBDEN PDIR PRESET - NOTE: (1) When W6 A-8 Is connected. (2) When W6 8-C is connected. 6·26 - ,--------------------------------------------------------------------------, 0 ." r(; 4.0 Specifications/Characteristics (Continued) m TABLE 2. AC Characteristics of SPLICE Name tcp Figure Description 7A Clock Period C Ref/Conditions Min Rising Edge CTTL to Next Rising Edge CTTL 50.0 Typ Max Units ~ ns "'CI - 3(I) tSDENAVa 7A BDEN Active (High) After Address Valid 27.0 33.5 ns tSDENa 7A BDEN Active (High) After ADS or PAV Active (Low) 34.0 44.0 ns lSDENa 7A BDEN Active (Low) After BDEN Active (High) 6.0 8.0 ns tSSDENa 7A BBDEN Active (High) After BDEN Active (High) 15.0 25.0 ns lSSDENa 7A BBDEN Active (Low) After BDEN Active (High) 21.0 33.0 ns tRDYia 7A RDYOUT Inactive (Low) After BDEN Active (High) 8.0 10.5 ns t332RDYa 7B RDYOUT Active (High) for 32332 After Rising Edge CTTL 9.0 11.8* 12.5 16.8*' ns tRDYa 7B RDYOUT Active (High) for 32008/016/032 After Rising Edge CTTL 7.5 10.5*' 11.0 15.5" ns tAADS n 7A Address Bits 0-31 Hold From After ADS Inactive (High) tRAMr 70 RAM Data Valid After Address Valid 246 ns tpROM r 70 PROM Data Valid After Address Valid 348 ns lDACKa 7B DACK Active (Low) After Rising Edge CTTL 19.0 27.0 ns tNMi 7C NMIOUT Active/Inactive After Rising Edge CTTL 15.0 25.0 ns lSACKOUTa 7E BACKOUT Active (Low) After BACKIN Active (Low) 2.0 5.8 ns tSACKOUTia 7E BACKOUT Inactive (High) After BACKIN Inactive (High) 1.0 5.8 ns 'W8 A-8 connected "W8 8-C connected 6-27 0' 4.5 ns :::J d 2. !1: 4.0 Specifications/Characteristics (Continued) CP E Q. o a:; ~ U! CTTL~" TCU Q w o ::i D.. RES ET ...L. --0 U) O-l TO OE OF DATA BUFFERS P NS32016 CPU 28 ROY NS32082 MMU ROY TARGET CLOCK RST PAY 44 13 - DBE 1 ABT ABT CLEAR 134 -[] 0 1 34 RSTI ~ 1 ROY 9 ADS 6 RSTO 8 TL/R/9347-6 FIGURE 6A. Typical Circuitry for a NS32016 Target TARGET TO OE OF DATA BUFFERS NS32D16 CPU 28 ROY NS32082 MMU 28 ROY CLOCK RST NS32201 TCU 16 CTTL PAY 44 ABT 34 CLEAR 34 P3-3 P3-S CTTL 082 RDYIN P3-11 082 RDYOUT RSTOUT 1 SPLICE CONNECTIONS - - - - - - ORIGINAL WIRING, CUT FOR SPLICE TL/R/9347 -7 FIGURE 6B. Modified NS32016 Target, with SPLICE Connections 6·28 ,--------------------------------------------------------------------------, W "D r4.0 Specifications/Characteristics (Continued) (; m ~P-h ~ h r---1 r---1 em ...J L I L I .. L I L I L c ~ a -a 3 - CD :::l ADO- 31 c} X'---- --+"I--","--..n ..- - - - 2. BDEN BBDEN ----+-....... RDYOUT "----illr------ TL/R/9347-8 FIGURE 7A. SPLICE Access Timing . ADS ar PAY ri-------4 BDEN _ _ _....... 'H--+-----• . .......- - - i 'H--+--_..I .... r-tRDYa RDYOUT - - - - . . . . _ (32008/016/032) ......--~l I r-' ~ r-t332RDYa H-J RDYOUT(32332) - - - . . . . . . , TUR/9347-9 FIGURE 7B. ROY Circuil Timing 6-29 '0 ~ cQ) E c. o ~ C LU o ::i a.. (J) 4.0 Specifications/Characteristics (Continued) eTTL FW4 {L-fl- ""'~~" r NMIOUT ~S TUR/9347-10 FIGURE 7C. NMI Timing -ADSorPAV - ---,L.Jr--------i S S1-S---- ADO-AD31~ So~~ I.VALID t RAM v DATA VALID _ tpROMv TL/R/9347-11 FIGURE 70. READ Timing TUR/9347-12 FIGURE 7E. Timing of BACKOUT when SPLICE is not Accessed 6-30 en "tI r 5.0 Ordering Information SPLICE Logic Boards: Note: Memory expansion boards disable 256 Kbytes of memory on the logic board. Users whose applications require more than 256 Kbytes of memory should order part number NSV·SPLlCE·1 MS. This configuration ships without the 256 Kbytes of SRAM on the logic board and with a 1·Mbyte expansion board. NSV-SPLlCE-256 SPLICE logic board and 256 Kbytes of on-board memory. NSV-SPLlCE-1 MB SPLICE logic board with 1Mbyte memory expansion board instead of 256 Kbytes of onboard memory. SPLICE logic boards ship with the following: SPLICE logic board 2 RS232 connectors 2 female-to-female connectors Power supply cable Timing control cable and clips Stand ofts SPLICE User's Manual SPLICE schematics ACCESSORIES NSV-SPLC-MEM-BD 1-Mbyte expansion memory board SPLICE cable for the NS320161 NSV-SPLCBL-016 C016/008 CPU NSV-SPLCBL-032 SPLICE cable for the NS320321 C032 CPU NSV-SPLCBL-CG16 SPLICE cable for the NS32CG16 CPU NSV-SPLCBL-332 SPLICE cable for the NS32332 CPU NSV-SPLCBL-382 SPLICE cable for the NS32382 MMU Note: The part numbers are the same for NS32016 and NS3200B CPU cables since both parts have the same pinouts. 6-31 o m c ~ 0" "0 3 CD CD ::J c} 2. Section 7 Software Support Section 7 Contents Series 32000 GENIX Native and Cross-Support (GNX) Language Tools (Release 2) . .. . .. .. . Series 32000 Ada Cross-Development System for SYS32/20 Host. .. .. .. . . .. .. . .. . . .. .. . Series 32000 Ada Cross-Development System for VAXIVMS Host. . . . . . . . . . . . . . . . . . . . . . . . GENIX V.3 Operating System........................................................ Series 32000 Real-Time Software Components VRTX, lOX, FMX and TRACER. . . . . . . . . . . . . Series 32000 EXEC ROMabie Real-Time Multitasking Executive. . . .. .. ... .. . .. .. . .. .. .... 7-2 7-3 7-7 7-11 7-16 7-19 7-39 r-------------------------------------------------------------------------~ ~ W ...iii' CD National Semiconductor til Co) N o o o Series 32000® GENIXTM Native and Cross-Support (GNXTM) Language Tools (Release 2) c;) m z >< Z m ~. m ::::II c. ...o (") TO ISE til CfI W C '0 't:J o ~ Q z ~ rm ::::II cc c m CD CD TliGG/B7BO-1 c} o iii • • • • • • • III Available in binary for the VAXTM UNIX® Implements AT&T's standard Common Object File Format (COFF) Optimizing C Compiler (optional) Optimizing FORTRAN 77 Compiler (optional) Pascal Compiler (optional) Series 32000 assembler and linker In-System Emulator Support Interactive remote debugger with helpful command interface 4.3 bsd operating system under derivatives of the Berkeley operating system li!I Available in binary for the VAX/VMSTM operating system 1.1 Available in binary on National Semiconductor Series 32000 Systems III Available in source for porting to other operating system environments Product Overview propriate command-line arguments and when linked with appropriate libraries, code generated by the GNX language tools can be executed in any Series 32000 target environment. In addition, these tools can be used to develop operating-system-independent code or code designed to run in conjunction with real-time kernels, such as National's EXEG and VRTX®/Series 32000. All of National's new language tools conform to the GOFF file format, thereby ensuring that modules produced by anyone set of tools can be linked with objects produced by any other set of GNX tools. The Series 32000 GNX Language Tools are a set of software development tools for the Series 32000 microprocessor family. Optional high-level language compilers work in conjunction with the standard components to provide tools that can be combined to meet a variety of development needs. GENIX Native and Cross-Support (GNX) Language Tools The Series 32000 GNX Language Tools are based on AT&T's Gommon Object File Format (GOFF). With ap- 7-3 • Standard Components nasm an assembler for GNX assembly language source code (produced either by a high-level language compiler or by an assembly language programmer) and produces an object file; supports NS32332 configuration register and 32-bit addressing; also supports NS32381, NS32382 chips; nmeld a linker that resolves references between object files and library routines and assigns relocated addresses to produce Series 32000 executable code; nar an archiver used to store frequently referenced objects in a library for convenient retrieval by the linker; nlorder finds ordering relation for an object library; libm.a a library that includes math routines that can be called from code written in assembly or high level languages. This library includes Bessel functions, exp, log, log10, pow, sqrt, floor, ceil, fmod, fabs, gamma, hypot, sinh, cosh, tanh, sin, cos, tan, asin, acos, atan, and atan2; idbg16, idbg32 debuggers for use with National's ISE16TM and ISE32™, respectively; debuggers for downloading and dedbg16 bugging code on boards that use the NS32008, NS32016, NS32032, or NS32332 CPU and associated monitors. mon16, mon32, monitors for use with OB32016, mon332, OB32000, OB32332, and OB32332 mon3328 plus Oevelopment Boards. Provided in PROMs and in assembly language source so the user can modify and install the monitor on user-designed Series 32000 hardware. nburn a PROM-programming utility that converts a COFF object file into ASCII hex, Intel hex, or Motorola S-record format output file. Suitable for driving a OATA 1/0 Model 19 PROM-programming. db library development board support routines, such as string, scanf, printf, atof, abs, regex, getc, putc, and puts; to be used with the development board monitor; A library of terminal 1/0 functions is also provided. These functions can be called by user-developed code· to allow a program running on a development board to print data to and accept data from the console terminal. Source to these routines is provided, should the user elect to expand or modify the functionality of these routines. In addition, functions from the C library, "libc.a", that do not rely on the kernel for execution, are included. cvtasm utility to assist in converting previous assembler syntaxes to GNX assembler syntax; nsize a utility for displaying the size of the text, uninitialized data, and initialized data segments of an object file; nstrip a utility to remove symbol table information from an object file; nnm a utility to display the symbol table of an object file. The following two programs are available for configurations designed for operation on a VAX under derivatives of the Berkeley UNIX 4.3 bsd operating system. ddt a debugger specifically designed for kernel debugging; dbmon a monitor for use with ddt provided on PROM and in assembly language source so the user can modify and install the monitor on user-built Series 32000 hardware. Optional Components Optimizing C Compiler The Optimizing C Compiler is derived from the UNIX C Compiler and supports the C language as defined by Kernighan and Ritchie. Enhancements include passing structures as arguments to functions, long variable names, single-precision floating constants, signed and unsigned bitfields. The compiler generates Series 32000 assembly code which is passed to the GNX assembler. The optimizer and code generator use state-of-the-art optimization techniques to process C code into assembly statements that approach hand-optimized assembly code in execution speed. Optimization techniques include register allocation by coloring, constant folding, subexpression and assignment elimination, copy propagation, peephole optimizations, and others. Optimizer processing can be controlled with switches to request optimization for space instead of speed, perform partial optimizations, specify addressing 7-4 Optional Components (Continued) Source Products modes and influence allocation of variables to registers. Code can be compiled with optimization disabled in order to generate debuggable code. C object modules can be linked with assembly, Pascal and FORTRAN 77 object modules for mixed-language development. The assembler, associated tools, and the optional C, Pascal, and FORTRAN 77 Compilers are provided in binary form for use on a VAX under the 4.2 bsd operating system. The source to all programs that make up the Series 32000 GNX Language Tools is available for porting to other UNIX operating system environments. Pascal Compiler National Semiconductor offers a full 90 day warranty period. Extended warranty provisions can be arranged by calling MCS Logistics at the toll-free numbers listed below. The MCS Service Technical Support Engineering Center has highly trained technical specialists available to assist customers over the telephone with any product related technical problems. for more information, please call: (800) 538-1866, (800) 672-1811 for California, (800) 223-3248 for Canada. Customer Support The Pascal compiler is an ISO-standard Pascal compiler derived from the 4.2 bsd "pc" compiler. The Pascal compiler supports several extensions to the standard Pascal language that are designed to simplify program development, such as separate compilation of individual modules. In addition, I/O of enumerated types, output of octal and hexadecimal numbers, and comparison of strings of unequal length are supported. The Pascal library, "libpc.a", includes several useful procedures and functions, for example, a random number generator, file manipulation procedures, and clock functions. Pascal object modules can be linked with assembly, C, and FORTRAN 77 object modules for mixed-language development. Pascal programs can call the terminal I/O functions described for the C Compiler. Licensing en CD :::!. m Co) N o o o G) m z >< z a~. I\) ::l a. o a ~ c "0 "0 o ~ G) z >< All binary versions of the Series 32000 GNX Language Tools require the execution of National's Binary User Agreement. Because the language tools include AT&T proprietary code, a System V source license is a prerequisite for obtaining source versions of these language tools. Optimizing FORTRAN 77 Compiler The Optimizing FORTRAN 77 Compiler is derived from the UNIX System V Release 2 "f77" Compiler. Enhancements include double-complex data types, recursion, hex constants, one-trip do loop option, short integers and bitwise Boolean operations. The compiler generates Series 32000 assembly code which is passed to the GNX assembler. The optimizer and code generator use state-of-the-art optimization techniques to process FORTRAN code into assembly statements that approach hand-optimized assembly code in execution speed. Optimization techniques include register allocation by coloring, constant folding, subexpression and assignment elimination, copy propagation, peephole optimizations and others. Optimizer processing can be controlled with switches to request optimization for space instead of speed, perform partial optimizations, specify addressing modes and influence allocation of variables to registers. Code can be compiled with optimization disabled in order to generate debuggable code. FORTRAN object modules can be linked with assembly, Pascal, and C object modules for mixed-language development. Part Numbers Binaries for Cross-Support Mode hosted on VAX under 4.2 bsd: NSW-ASM-BRVX The assembler ("nasm"), linker ("nmeld"), math library ("libm.a"), archiver ("nar"), ISE debugger ("idbg16/32") development-board -support library, development board debuggers ("ddt" and "dbg16"), monitors in source ("dbmon" and "mon16/32"), monitors in PROM, the PROM-burning utility ("nburn"), dblibrary, cvtasm, nsize, nstrip, and nnm. NSW-C-BRVX Optional C compiler to be used in conjunction with NSW-ASM-BRVX described above. NSW-F77-BRVX Optional FORTRAN 77 Compiler to be used in conjunction with NSWASM-BRVX described above. NSW-PAS-BRVX Optional Pascal Compiler to be used in conjunction with NSWASM-BRVX described above. All binaries for VAX/4.2 bsd are delivered on 9-track reel tape in "tar" format. 7-5 • o ! CI) C) ca ::s C) c ~ z>< e. 1:: oa. a. ::s i o "C C ca ~ iz >< Z w CJ C) C) C) N r-----------------------------------------------------------------------------, Part Numbers (Continued) Binaries for Cross-Support Mode hosted on VAX under VMS: NSW-ASM-BRVM The assembler ("nasm"), linker ("nmeld"), math library ("libm.a"), archiver ("nar"), ISE debugger development("idbg16/32") board-support library, development board debugger ("dbg16"), monitor in source ("mon16/32"), monitor in PROM, the PROMburning utility ("nburn"), dblibrary, cvtasm, nsize, nstrip, and nnm. NSW-C-BRVM Optional C Compiler to be used in conjunction with NSW-ASMBRVM described above. NSW-F77-BRVM Optional FORTRAN 77 Compiler to be used in conjunction with NSW-ASM-BRVM described above. NSW-PAS-BRVM Optional Pascal Compiler to be used in conjunction with NSWASM-BRVM described above. All binaries for VAXIVMS are delivered on 9-track reel tape in VMS BACKUP format. Source NSW-ASM-SRNN The source to NSW-ASM-BRVX, as described above. NSW-C-SRNN The source to NSW-C-BRVX, as described above. NSW-PAS-SRNN The source to NSW-PAS-BRVX, as described above. NSW-F77-SRNN The source to NSW-F77-BRVX, as described above. All source tapes are delivered on 9-track reel tape written in "tar" format. For future product releases contact your National Semiconductor sales representative or call Series 32000 Software Marketing at (408) 721-5551. Manuals Each software package is delivered with one copy of each appropriate manual. NSP-ASM-M-MS: Manual Set included with NSWASM-BRVM NSP-ASM-X-MS: Manual Set included with NSWASM-BRVX NSP-C-M: Manual included with NSW-CBRVM and NSW-C-BRVX NSP-PASCAL-M: Manual included with NSW-PASCAL-BRVM and NSW-C-BRVX NSP-F77-M: Manual included with NSW-F77BRVM and NSW-F77-BRVX C') oCI) ";: CI) U) Binaries hosted on SYS32/20 under System V: NSW-C-BLAF Optional C Compiler to be used in conjunction with NSW-ASM-BLAF described above. NSW-F77-BLAF Optional FORTRAN 77 Compiler to be used in conjunction with NSW-ASM-BLAF described above. NSW-PAS-BLAF Optional Pascal Compiler to be used in conjunction with NSWASM-BLAF described above. Above binaries for SYS32/20 are delivered on lowdensity (360 kbyte) 5% inch PC-DOS floppy disks in MS-DOS format. 7-6 r--------------------------------------------------------------------------.~ ~ CD National Semiconductor ::::!. CD til Co) N o o o Series 32000® Ada Cross-Development System for SVS32™ 120 Host ~ I» o (; til til SYS32/20 Host ~ SYS 32/20 Ada Complier Ada lHlS PROIXJCI CONFORMS TO ANSI/MIL-STO-181SA AS DETIJlMINED BY lHE AJPO UNDER ns CURRENT lESllNG PROCEDURES ~ 6CD ~ 0' 3 '0 -1 CD :::l CD 3 0...,. ~ Co) N ....... N o ::t: o til TL/GG/9307-2 • • • • • Series 32000 cross-support development environment for SVS32/20 Validated under 1.8 ACVC Derived from the VERDIXTM Ada Development System (VADSTM) Compiler support for Ada Pragmas and Representation Attributes Comprehensive Support Services available from National • • • • • • • • Generates GNXTM Common Object File Format (COFF) Debugging Tools Program Generation Utilities SPLICE support Extensive Ada Library Management Utilities Run-time system to support bare-board environment Ada VRTX® Interface Package (Optional) Source to Ada Run-Time System (Optional) Product Overview The Series 32000 Ada cross-compiler supports full Ada language program development on National's SYS32/20 host and is part of National's Validated Ada Development Environment (NVADE). NVADE provides a high performance Ada compiler that supports all required features of the Ada language and is fully compliant with ANSI/MIL-STD-1B15A. NVADE also provides a comprehensive set of tools specifically tailored to provide the optimum Ada Programming Support Environment (APSE) for a host of application development. 7-7 • 1 :::z::: C) C\I ...... C\I C') ~... .e E CLI ~.... c CLI E Do ~ Product Overview (Continued) The SYS32/20 Development system includes a highperformance add-in card that converts an IBM-PCI AT or compatible system into a Series 32000-based development environment. Once compiled, the Ada program will execute on either a Series 32000 development board or a customer target board. This "production quality" Ada compiler focuses on high performance, and is intended for large-scale development of real-time, embedded control, or training simulator software applications. The Series 32000 Ada Cross-Development System includes the Ada compiler, program library utilities, program generation utilities, library management and a complete run-time system. This product directly inter- c faces with GNX language tools provided with the SYS32/20 system, including GNX linker, DBG and IDBG debuggers, library management tools and other utility programs. The Series 32000 Ada Cross-Development System has been engineered and designed to run under OPUS5, the SYS32/20 Operating System derived from AT&T's UNIXTM System V. Therefore, rather than learning a new operating system, the programmer can immediately concentrate on Ada program development. To aid the user, complete on-line manual entries are provided. These can be configured to use either the UNIX man utility or a separate interactive help command, supplied with the product. Series 32000 Ada Cross-Development System for SYS32/20 Host :k e o CIS ~ C) C) C) C\I C') II) CLI ';:: ~ SYS32/20 Host (IBM PC/AT) DEBUGGING TOOLS TUGG/9307 -3 7-8 (J) ...CD'CD NVADE Components Ada Compiler In addition, the Series 32000 Ada Cross-Development System permits Ada Program Libraries to be hierarchically organized, so that units not local to one library can be found in other libraries. Thus, programmers can work without interference on local versions of individual program units, while retrieving the remainder of the program from higher-level libraries. NVADE also uses DIANA (Descriptive Intermediate Attributed Notation for Ada), which generates an intermediated representation for each unit. DIANA provides a tree-structured representation of an Ada program encoding the complete syntactic and semantic information of each individual Ada unit. The presence of DIANA as an integrated mechanism makes possible powerful editing, debugging and program query facilities, thus providing the means for simple and efficient incremental compilation. The Ada Compiler accepts as input Ada source and generates Series 32000 code that can be downloaded to, and executed on, a Series 32000-based target development board. The Series 32000 Ada Compiler supports the full Ada language. Features include shared or unshared generics, separates, in-lines, bit representation, machinecode insertion, monitor tasks and terminal I/O. The compiler generates GNX COFF (Common Object File Format) object files that can be linked with object files generated by other GNX compilers. The Ada compiler performs several optimizations, including value-tracking global register allocation, register assignment for commons and locals, common sub-expression removal, branch and dead code analysis, some constraint check removal, and local peephole optimizations. The Ada compiler operates as a re-entrant shareable process in the SYS32/20 host system, allowing the compiler to make full use of most operating system facilities. In addition, the Ada compiler provides features to aid in the development of real-time, embedded control and training simulator software applications. Some of these include Ada Pragmas as specified in Chapter 13 of the Ada Language Reference Manual (LRM), such as: Inline, Interface, Interface_Object, Pack, Page, Priority, Share_Body, and Suppress. Also included is a Machine Code Package which provides an interface for handling machine code insertion and generics (Unchecked_Dealiocation and Unchecked_Conversion) for controlling storage and type conversions. Debuggers The standard GNX debugger, DBG32, is used with the Series 32000 Ada Cross-Development System. DBG32 can be used to debug code on the SYS32/20 host and/or to download and remotely debug or execute code on a Series 32000 development board. DBG32 supports the use of National's SPLICE software debugging tool. Machine-level debug support is provided by the debugger. til Co) I\) o o o » c.. I» (") ...o til C{I C ~ CD 0' 't:I 3 -j CD ::::J -... 3 o ~ (J) Co) I\) ..... I\) o ::J: o !!L Linker Ada object files are linked by the standard GNX linker, which is called by the Ada compiler pre-linker. The GNX linker resolves references between object files and library routines and assigns relocated addresses to produce Series 32000 executable code. Program Generation Utilities Ada Run-Time System An Ada make utility, similar in operation to that found in the UNIX operating system, is provided to simplify program compilation by maintaining program unit dependancy information. This utility determines which files must be recompiled to produce a current executable file. This utility can also be used to ensure that the named unit is up-to-date, recompiling dependencies as necessary. Also provided is a source code formatter, easily configurable for individual Ada coding standards. The Series 32000 Ada Run-time System provides comprehensive support for tasking, debugging, exception handling and input/output. The Run-time System is linked with the user's generated Ada program. To facilitate resource utilization efficiency, major portions of the Run-time System have been optimized. Run-time source for customization is also available. Ada-VRTX Interface Package (Optional) The Ada Run-time System includes a large, rich, and elegant tasking system. VRTX (the Versatile RealTime Executive) provides a small, simple, compact and fast tasking system and may be a preferred alternative to using the Ada Run-time System, particularly for embedded microprocessor applications where space and timing are critical. The Ada-VRTX interface package (AVIP) offers Ada language users a convenient means of interfacing with VRTX. AVIP allows Ada programmers the ability to call any VRTX service from their Ada program. (The exceptions are Program Library Utilities The Ada language imposes stringent requirements on an Ada Program Library. While the language provides for separate compilation of program units, each unit is compiled in the "context" of previously compiled units. The compiler must have access to this context, and the context must be carefully organized in the form of a Program Library. This library has been designed to enhance the compiler performance. A set of utilities is provided to manage, manipulate, and display Program Library information. 7-9 • Program Library Utilities (Continued) Series 32000 Ada Cross-Development System for SYS32/20 Host NVADE Modules and Run-Time Environment E !- SERIES 32000 Ada COMPILER C G.I E a. o ~ c e= o ca "CI a. III o... o If til c (I) VAX/VMS Host Environment < 0" "t:I 3(I) (I) Ada Compiler 1 111.11111 1111111111111111 ::I [) IIIIIIIIU 111111111111 (I) THIS PROIlUCT CONfORMS TO ANSIjt.tIL-STO-1815A AS DETERMINED BY THE AJPO UNDER ITS CURRENT lESlING PROCEDURES -... 3 o ;; VAX 11/75089 XX TLlGG/9364-1 >< ...... < :s:: w :::I: o ~ • •• • • • • •• Series 32000 cross-support development environment for VAX/VMS host Validated under 1.8 ACVC Runs under VAX/VMS 4.4 Operating Systems and future revisions of VMS Derived from the VERDIXTM Ada Development System (VADSTM) Compiler Support for Ada Pragmas and Representation Attributes Comprehensive Support Services available from National • • •• • Generates GNXTM Common Object File Format (COFF) Program Generation Utilities SPLICE support Extensive Ada Library Management Utilities Run-time system to support bare-board environment Debugging Tools Ada VRTX® Interface Package (Optional) Source to Ada Run-Time System (Optional) Product Overview The Series 32000 Ada cross-compiler supports full Ada language program development on Digital Equipment Corporation's VAXIVMS hosts and is part of National's Validated Ada Development Environment (NVADE). NVADE provides a high performance Ada compiler that supports all required features of the Ada language and is fully compliant with ANSI/ MIL-STD-1815A. NVADE also provides a comprehensive set of tools specifically tailored to provide the optimum Ada Programming Support Environment (APSE) for host application development. 7-11 ,. Product Overview (Continued) Once compiled, the Ada program will execute on either a Series 32000 development board or a customer target board. This "production quality" Ada compiler focuses on high performance, and is intended for large-scale development of Series 32000 real-time, embedded control, or training simulator software applications. The VAXIVMS Ada Cross-Development System includes the Ada compiler, program library utilities, program generation utilities, library management utilities and a complete run-time system. This product directly interfaces with VAXIVMS GNX language tools provided, including GNX linker, DBG and IDBG de buggers, library management tools and other utility programs. The VAXIVMS Ada Cross-Development System has been engineered and designed to run under VAX! VMS 4.4 or later Operating Systems. Therefore, rather than learning a new operating system, the programmer can immediately concentrate on Ada program development. Series 32000 Ada Cross-Development System for VAX/VMS Host VAX/VMS Host DEBUGGING TOOLS TLlGG/9364-2 7-12 (J) CD .... NVADE Components Ada Compiler Program Library Utilities The Ada Compiler accepts as input Ada source and generates Series 32000 code that can be downloaded to, and executed on, a Series 32000-based target development board. The Series 32000 Ada Compiler supports the full Ada language. Features include shared or unshared generics, separates, in-lines, bit representation, machinecode insertion, interrupt tasks, monitor tasks and terminal I/O. The compiler generates GNX COFF (Common Object File Format) object files that can be linked with object files generated by other GNX compilers. The Ada compiler performs several optimizations, including value-tracking global register allocation, register assignment for commons and locals, common sub-expression removal, branch and dead code analysis, some constraint check removal, and local peephole optimizations. The Ada compiler operates as a re-entrant shareable process in the VAX/ VMS host system, allowing the compiler to make full use of most operating system facilities. In addition, the Ada compiler provides features to aid in the development of real-time, embedded control, and training simulator software applications. Some of these include Ada Pragmas as specified in Chapter 13 of the Ada Language Reference Manual (LRM), such as: Inline, Interface, Interface_Object, Pack, Page, Priority, Share_Body and Suppress. Also included is a Machine Code Package which provides an interface for handling machine code insertion and generics (Unchecked_Dealiocation and Unchecked_Conversion) for controlling storage and type conversions. The Ada Language imposes stringent requirements on an Ada Program Library. While the language provides for separate compilation of program units, each unit is compiled in the "context" of previously compiled units. The compiler must have access to this context, and the context must be carefully organized in the form of a Program Library. This library has been designed to enhance the compiler performance. A set of utilities is provided to manage, manipulate, and display Program Library information. In addition, the Series 32000 Ada Cross-Development System permits Ada Program Libraries to be hierarchically organized, so that units not local to one library can be found in other libraries. Thus, programmers can work without interference on local versions of individual program units, while retrieving the remainder of the program from higher-level libraries. NVADE also uses DIANA (Descriptive Intermediate Attributed Notation for Ada), which generates an intermediated representation for each unit. DIANA provides a tree-structured representation of an Ada program encoding the complete syntactic and semantic information of each individual Ada unit. The presence of DIANA as an integrated mechanism makes possible powerful editing, debugging and program query facilities, thus providing the means for simple and efficient incremental compilation. ii' e.,) I\) Q Q Q » c.. II) ....o o UI If c ~ CD 0' 'C 3 CD ::I 1 CD 3 ....o ~ >< ...... < :s:: (J) ::::t -g Debuggers The standard GNX debugger, DBG32, is used with the Series 32000 Ada Cross-Development System. DBG32 can be used to debug code on the VAX host and/or to download and remotely debug or execute code on Series 32000 development board. DBG32 supports the use of National's SPLICE software debugging tool. Full machine-level debug support is provided by the debugger. Program Generation Utilities An Ada make utility, similar in operation to that found in the UNIX® operating system, is provided to simplify program compilation by maintaining program unit dependency information. This utility determines which files must be recompiled to produce a current executable file. This utility can also be used to ensure that the named unit is up-to-date, recompiling dependencies as necessary. Also provided is a source code formatter, easily configurable for individual Ada coding standards. Linker Ada object files are linked with the standard GNX linker, which is called by the Ada compiler pre-linker. The GNX linker resolves references between object files and library routines and assigns relocated addresses to produce Series 32000 executable code . • 7-13 8 ::I: NVADE Components (Continued) (J) :E Series 32000 Ada Cross-Development System for VAX/VMS Host NVADE Modules and Run-Time Environment ::: >< ~ l- .e E .! SERIES 32000 Ada COMPILER £ EMBEDDED CJ TL/GG/9364-3 Ada Run-Time System nient means of interface with VRTX. AVIP allows Ada programmers the ability to call any VRTX service from their Ada program. (The only exceptions are the calls provided for user-defined interrupt handlers and for partition create and extend.) The actual operations performed by VRTX are identical in both assembly language and Ada. Thus, this package gives users both the elegant features of the Ada language and VRTX's unique tasking system. The Series 32000 Ada Run-Time System provides comprehensive support for tasking, debugging, exception handling and input/output. The Run-Time System is linked with the user's generated Ada program. To facilitate resource utilization efficiency, major portions of the Run-Time System have been optimized. Run-Time source code for customization is also available. Ada-VRTX Interface Package (Optional) PRE-REQUISITES The Ada Run-Time System consists of a large, rich and elegant tasking system. VRTX (the Versatile RealTime Executive) provides a small, simple, compact and fast tasking system and may be a preferred alternative to using the Ada Run-Time System, particulary for embedded microprocessor applications where space and timing are critical. This Ada-VRTX interface package (AVIP) offers Ada language users a conve- - VAXIVMS Host Computer 750-89XX VMS Operating System VAXIVMS GNX Assembler Package Supported Hardware/Software - 7-14 All VAXIVMS computers D832000, D8332-PLUS, VME532 target development system board with power supply en CD NVADE Components (Continued) NSW-AVIP-BRVM-2 Binary Ada VRTX Int. Pckg. Tape, Vax-11 1785, 83XX NSW-AVIP-BRVM-3 Binary Ada VRTX Int. Pckg. Tape, Vax-8500, 8530, 8600 NSW-AVIP-BRVM-4 Binary Ada VRTX Int. Pckg. Tape, Vax-8550, 8650, 8700 NSW-AVIP-BRVM-5 Binary Ada VRTX Int. Pckg. Tape, Vax-88XX, 89XX Shipping Package - Series 32000 Installation Instructions and Applications Notes 1600 bpi magnetic tape (9-track VMS copy format) Ada Language Reference Manual (ANSI/MIL-STD 1815A) Ada Compiler and support tools documentation Ordering Information NSW-ARTS-SRVM-1 Source Ada RUNTIME SYSTEM Tape, Vax-11 1750, 11/780, 82XX NSW-ARTS-SRVM-2 Source Ada RUNTIME SYSTEM Tape, Vax-11 1785, 83XX NSW-ARTS-SRVM-3 Source Ada RUNTIME SYSTEM Tape, Vax-8500, 8530, 8600 NSW-ARTS-SRVM-4 Source Ada RUNTIME SYSTEM Tape, Vax-8550, 8650, 8700 NSW-ARTS-SRVM-5 Source Ada RUNTIME SYSTEM Tape, Vax-88XX, 89XX Part Number NSW-Ada-BRVM-1 NSW-Ada-BRVM-2 NSW-Ada-BRVM-3 NSW-Ada-BRVM-4 NSW-Ada-BRVM-5 NSW-AVIP-BRVM-1 Binary Ada Cross Dev. System Tape, Vax-11 /750, 11/780, 82XX Binary Ada Cross Dev. System Tape, Vax-11 1785, 83XX Binary Ada Cross Dev. System Tape, Vax-8500, 8530, 8600 Binary Ada Cross Dev. System Tape, Vax-8550, 8650, 8700 Binary Ada Cross Dev. System Tape, Vax-88XX, 89XX NSP-Ada-VMS Binary Ada VRTX Int. Pckg. Tape, Vax-11 /750, 11/780, 82XX Additional Manual Sets for VAXIVMS Ada Development System .... m" (,,) N o o o ~ II) (") aen ({I C CD c; 0" 3 "a CD ::J ~ CD 3 o.... < l> >< ..... < :s::: en ::I: o !!L II 7-15 ~ :> ...... z> < ....... < (,) Shared Libraries A shared library is a library of subroutines that is accessed at run-time rather than being included in the program when the program is linked. As a result, programs that use shared libraries occupy less space on disk and in memory. In addition, when a library is modified, programs that use that library do not have to be recompiled to benefit from changes to that library. GENIXIV.3 binary is provided with a shared version of a subset of 'libc.a' and the Networking Services Library. Tools are provided for the user to generate additional shared libraries. Transport Level Interface (TLI) and Transport Provider Interface (TPI) GENIXIV.3 includes two significant libraries that help the protocol-developer produce protocols that conform to industry standards. The TLI library is composed of user-level functions that provide access to standard protocol services as defined by the ISO Transport Service Interface. The TPI library specifies capabilities that must be supplied by a transport provider and the required interface to those capabilities to maintain consistency with the TLI library. Together, the TLI and the TPI libraries create the means by which network-independent applications can be written. An application written using the TLI library will work without modification over any network implemented according to the TPI specification. GENIXIV.3 includes a new version of 'uucp' (based on the Honey-Danber 'uucp') that is implemented using the TLI library. Remote File Sharing, described below, is also implemented using the TLI library. Assist 'Assist' is a set of programs that provide on-line assistance to users of the GENIXIV.3 operating system. 'Assist' should not be confused with on-line manual pages; rather, 'Assist' is a menu-driven program that helps the user form correct command line syntax on a step-by-step basis. 'Assist' includes tools for building custom menus in addition to the menus provided as a part of the GENIXIV.3 operating system. File System Switch (FSS) FSS allows the operating system to support several different types of file systems simultaneously. For example a file system type could be implemented to permit users to access data stored on floppy diskettes created by other operating systems. Remote File Sharing (RFS) RFS is an example of the kind of network services that can be developed using Streams. RFS allows a group of computers to be linked together over a network so that resources belonging to one system (e.g., disk files, printers, and tape drives), can be made available to users on other systems. This availability is transparent to the user; the user does not have to know or issue any special commands to access a remote resource. RFS has built in security features as well. The local machine administrator decides which file systems will be available to the network and which remote resources the local users can access. Mandatory File and Record Locking Previous versions of the System V UNIX operating system supported voluntary file and record locking. Under voluntary file and record locking, a group of programs must voluntarily agree to honor locks that may have been placed on a file or a record. It was possible for a programmer to write a 'maverick' program that refused to honor voluntary locks. With mandatory file and record locking, a database designer is guaranteed that any locks the program places on a file or record will be honored by every program in the system. Mandatory locks guarantee the security of database applications. Demand-Paged Virtual Memory The GENIXIV.3 operating system supports programs that access up to 15 Mbytes (if using the NS32082 MMU) or % gigabyte (if using the NS32382 MMU) of virtual address space. In addition, the GENIXIV.3 operating system takes advantage of the memory protection scheme afforded by the MMU's separate user and supervisor address space. Optional Software KornShell The Korn shell is an optional command interpreter compatible with the Bourne shell and offers many features found in the C shell, such as 'aliases'. The Korn shell introduces new features such as 'vi editing mode', which allows the user to modify and enter previously entered commands with fewer keystrokes. CCompiler The GENIXIV.3 operating system includes a C compiler based on the Berkeley 4.2 bsd 'pcc' (portable C compiler). The C compiler and associated language 7-17 • ~ :> ...... ~ w ~ ,--------------------------------------------------------------------------, Tools for Documenters Customer Support Tools for Documenters, derived from AT&T's Documenters Workbench 2.0, is an optional set of software that contains programs that help users prepare documentation. The programs include text processors ('nroft', 'troff', and 'ditroff'), macro packages ('mm' and 'man'), preprocessors that prepare special kinds of text Ctbl' and 'eqn'), and postprocessors that prepare documents for handling by a particular output device, such as a printer or phototypesetter. The GENIXIV.3 operating system, whether provided in binary or source form, includes a 90-day warranty. During the warranty period, customers are entitled to toll-free telephone access to National's MCS Technical Support Engineering Center to receive assistance, report bugs and obtain workarounds. In addition, the customer will receive any update releases that become available from National Semiconductor at no additional charge. After the 90-day warranty has expired, extended support can be contracted by calling MCS Logistics at the toll-free numbers below: (800) 538-1866 in the USA, except California (800) 672-1811 in California (800) 223-3248 in Canada Outside the USA and Canada: (408) 749-7306 Machine Readable Documentation The optional Machine Readable Documentation includes source to all GENIXIV.3 manuals for those OEM's who plan to modify and print their own manual sets. Benefits AVAILABLE IN SOURCE FORM TO QUALIFIED CONTRACTORS OF NSC All source files required to produce a binary version of the GENIXIV.3 operating system are provided. These files include source code to the kernel (including demand-paged virtual memory code), all utilities, device drivers, libraries, the C compiler, assembler and linker. Kernel source code is adaptable to the NS32016, NS32032, and NS32332 CPU and the NS32082 and the NS32382 MMU by compilation switches. The GENIXIV.3 operating system is designed to run on hardware configurations that include the NS32201 Timing Control Unit, the NS32081 Floating Point Unit, and the NS32202 Interrupt Control Unit, a minimum of one RS232 serial port, 2 Mbytes of RAM, and a minimum 40 Mbytes of disk storage for the binary operating system. In addition, the GENIXIV.3 operating system source product includes a binary image of the root and lusr file systems which was generated from the provided source files. Licensing The GENIXIV.3 operating system is provided under license from National Semiconductor Corporation. The Source License under Contractor Provisions provides non-exclusive rights to use the GENIXIV.3 operating system source for internal purposes. A separate Binary Distribution License provides right to distribute binary copies and includes per copy royalty rates. To obtain licensing information, contact your National Semiconductor sales engineer. Ordering Information NSW-GV3-SRNX NSW-GV3-SCNX 7-18 GENIXIV.3 source on reel-toreel 9-track tape GENIXIV.3 source on 9-track cartridge tape ,--------------------------------------------------------------------------, CD ~ ~ ... National Semiconductor gj" Series 32000® Real-Time Software Components VRTX, lOX, FMX and TRACER (.) I\) c c c :::c CD I» !4 3' CD VRTX/Series 32000 R&D Package ~ o ~ C;; oo APPLICATION PROGRAM 3 "a I BASIC SYSTEM CALL HANDLERS TASK MANAGEMENT, COMMUNICATION AND SYNCHRONIZATION, AND MEMORY ALLOCATION PROM I RAM I o::J - USER-DEFINED SYS CALL HDLRS I/o SYSTEM CALL HANDLERS CD ::J en < :::c VRTX EXTENSIONS II MICROPROCESSOR I ISR CHAR I/O DEV I I ISR CLOCK I I ;! ISR o ,?< OTHER PERIPHERALS ." TLlGG/8781-1 s:: >< I» ::J C. • • • • • Real-time executive for Series 32000 embedded systems Can be installed in any Series 32000 hardware environment Manages multitasking with priority-based scheduler Manages memory pool, mailboxes, timing and terminal 1/0 Can reside in PROM and be located anywhere in memory • • • • • • The VRTX® ISeries 32000 executive is the central member of a set of silicon software building blocks used in Series 32000-based real·time embedded systems. The executive manages the multitasking environment and responds to operating system service requests from application tasks. The executive can be used alone or in combination with the other silicon software components to build a more complete operating system. The 10X® ISeries 32000 and FMX® ISeries 32000 components support a file system that is media-compatible with PC-DOS. The TRACERTM/Series 32000 is an interactive multi- No requirements for particular timers, interrupts or busses Has hooks at key processing points for easy customization Comprehensive manuals with many examples Hot-line technical support Integrated with interactive multitasking debugger (optional) Integrated with PC-DOS compatible file system (optional) tasking debugger that can be used in VRTX-based systems for debug, download and test. All the components can reside in PROM's installed in the target system. They can be placed anywhere in the address space and make minimal assumptions about the hardware environment. Small user-written routines supply information about the local implementation of interrupts, timers, 1/0 devices, etc. Application tasks interface to the components with Series 32000 SVC (Supervisor Call) interrupts, thus code for the components does not require linking with userwritten code. 7-19 -I :::c o» m :::c ,. ~r---------------------------------------------------------~ 1&.1 ~ I'a C '" >< ::E II. ag > sc ~ 8. E [3 ! I CII E ~ '" ~ Q Q Q IN ('I) rn CII 'i:: CII U) VRTX Features ment or for maintaining a counter in the task control block to monitor task execution. The VRTX/Series 32000 R&D Package contains the product, manuals and other documentation required to develop a real-time application using only the VRTX kernel. You can also purchase TRACER/Series 32000, lOX/Series 32000 and FMX/Series 32000 as separate R&D Packages or as bundled combinations. When the development phase is complete, contact the National Semiconductor Series 32000 Software Products Marketing Group to purchase a license to incorporate VRTX into products in production volumes. National also offers Host-Based Special Volume Agreements which include R&D Packages and the rights to make unlimited copies of VRTX on a designated workstation or CPU. Contact the Series 32000 Product Marketing Group for details. Task Management The basic logical unit controlled by VRTX is the task. The task is a logically complete path through user code that requires system resources. Each task has a priority level used by VRTX to determine how access to the CPU is allocated. Up to 256 priority levels are available. VRTX allocates the CPU sequentially to the highest priority task that is ready to execute. Tasks can create, delete, suspend, and modify the priority of themselves and other tasks. Task delays and timeslicing are also available. Intertask Communication and Synchronization Tasks can communicate and synchronize with other tasks via exchange of pointer-length messages through mailboxes. These permit mutual exclusion and resource-locking. VRTX also has directives for dynamically building and managing message queues. Interrupt Services Package Contents VRTX has directives for user-written interrupt handlers that provide the interface between tasks and devices. They permit the interrupt handler to influence the scheduling of critically important tasks. Additionally, almost all of the VRTX facilities are available to interrupt routines, so system services can be performed immediately upon receipt of an interrupt. The VRTX/Series 32000 R&D Package contains: One master copy of VRTX in two 2732 PROM's A boxtop license to make five copies of VRTX (USA only) Five sets of Hunter & Ready Silicon Software copyright labels Five VRTX/Series 32000 User's Guides A binder containing R&D documentation: Getting Started with Silicon Software Components How to Write a Board Support Package for VRTX Interfacing a Language to Silicon Software Components Application Notes Customer Support information VRTX Release Notes Memory Management VRTX provides directives for managing the free memory pool. To minimize fragmentation and overhead, storage is allocated and released as fixed size blocks from within memory partitions. Partitions can be built dynamically. There are no constraints on block size. Special Device Support Since many applications require a real-time clock and a character I/O device, support for them is integrated into VRTX. Designers need only supply a small hardware-dependent interrupt service routine for each. VRTX will then manage all the logical operations to supply the clock management and character I/O services to application tasks and interrupt handlers. VRTX Timing Summary Extensions VRTX accommodates applications with special requirements by supplying three hooks at key points in its execution. They permit the designer to modify VRTX processing without having to modify VRTX itself. Whenever VRTX reaches a hook it checks for the presence of an application routine. VRTX hooks are called at task create, delete, and context switch. There are no constraints on hook use.They can be used for saving/restoring the floating-point environ- 7-20 System Call 32332 Time (Cycles) System Call 32332 Time (Cycles) SC.-ACCEPT SC_GBLOCK SC_GETC SC_GTIME SC_LOCK SC-YCREATE SC_PEND SC_PEXTEND SC_POST SC_PUTC SC_QACCEPT 438 611 508 417 431 951 446 955 616 506 472 SC_QCREATE SC_QINQUIRY SC_QPEND SC_QPOST SC_RBLOCK SC_STIME SC_TCREATE SC_TDELAY SC_TDELETE SC_TINQUIRY Rechedule 614 470 551 622 702 415 984 1257 917 593 671 r--------------------------------------------------------------------------, 0CD The MCS Service Technical Support Engineering CenVRTX System Calls m' ter has highly trained technical specialists to assist Type Call Description .. Initialization VRT)LINIT VRT)LGO Initialize VRTX Start multitasking Task Management SC_TCREATE SC_TDELETE SC_TSUSPEND SC_TRESUME Create a task Delete a task Suspend a task Resume execution of suspended task Change task priority Get task status Disable task rescheduling Enable task rescheduling SC_TPRIORITY SC_TINOUIRY SC_LOCK SC_UNLOCK Communications Services SC_POST SC_PEND SCJCCEPT SC_OCREATE SC_OPOST SC_OPEND SC_OACCEPT SC_OINOUIRY Memory Management SC_GBLOCK SC_RBLOCK SC_PCREATE SC_PEXTEND Timer Services SC_GTIME SC_STIME SC_TDELAY SC_TSLICE UI_TIMER Character I/O SC_GETC SC_PUTC UI_RXCHR UI_TXRDY SC_WAITC Interrupt Services customers over the telephone with product related technical problems. For more information, please call: (800) 538-1866 in the USA except for California (800) 672-1811 within California (800) 223-3248 in Canada (408) 749-7306 for rest of world Licensing All R&D packages are licensed through a National Semiconductor Binary Software Licensing Agreement. In the United States, breaking the seal on the product package indicates acceptance of the terms of the license; no signature is required. For international sales a signed Binary Software License Agreement is required. If changes are required to the license agreement, contact the National Semiconductor Series 32000 Software Marketing Group before breaking the seal on the package. Post message to mailbox Pend for message at mailbox Accept message at mailbox Create message queue Post message to queue Pend for message from queue Accept message from queue Get queue status Ordering Information NSW-VRTX-BRVM VRTX/Series 32000 in two 2732 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAXIVMS BACKUP tape, manuals and R&D documentation. NSW-VRTX-BRVX VRTX/Series 32000 in two 2732 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAX/4.2 bsd "tar" tape, manuals and R&D documentation. NSW-VRTX-BLAF VRTX/Series 32000 in two 2732 EPROMs, and as files of S-records and define-byte records stored in MS-DOS format on a 5% inch PC-DOS floppy diskette, manuals and R&D documentation, NSW-VRTX-SPNN VRTX/Series 32000 source code listing. Get memory block Release memory block Create memory partition Extend memory partition Get system time Set system time Suspend task temporarily Enable round-robin scheduling Post time Increment from interrupt Get a character Put a character Post received character from interrupt Post transmit ready from interrupt Wait for special character ULENTER Enter interrupt handler UI_EXIT Exit from interrupt handler Co) N o o o ::D CD I» ~ 3 CD o o ~n; o o 3 'C o ::I CD ::I t il < ~ o ,?< 'T1 == >< I» ::I C. -I ::D l> om ::D Documentation NSP-VRTX-M VRTX/Series 32000 User's Guide • Customer Support National Semiconductor offers a one year complete technical support period, Extended support provisions can be arranged by calling MCS Logistics at the tollfree numbers which follow. 7-21 a: w 0 lOX/Series 32000 R&D Package c:c a: I- I 'C C C\:J I Application Tasks >< ::i IL Channel Module >< Q >< I- I a: > en cII) c 0 a. E Direct I/o Buffered I/O Module Module Request Management Module 0 0 ... I II) C\:J == DS_R _ a....._ 0 tn II) 1 ..... IS_R_ ,-I_ _ 1 ..... I/O Module S_R_ _ _..... ,-I_ _ _ _ B_IO_Ck_-_T_ra_n_sf_er_D_ev_~_e____~1 ~1 E L-____ i= ..!. Character _______ ch_a_ra_c_te_r_De_vl_ce______ ~ TL/GG/8781-3 C\:J II) a: 0 0 0 C'I •• Input/Output Executive Provides device-level input/output facilities for VRTX-based software system Handles the translation of read and write commands from tasks into specific operations on particular devices Handles the allocation of devices to tasks • Handles the conversion of data from device-specific formats into user-defined formats • Can work with most types of 110 devices • Has hooks and extension services for easy customization • Comprehensive manuals with many examples • Hot-line technical support lOX/Series 32000 is the Input/Output Executive, a companion software component for VRTX/Series 32000. lOX provides embedded microprocessor applications with a powerful set of input/output (I/O) facilities for use in a multitasking, real-time environment. Like VRTX, lOX is a silicon software component; it makes no assumptions about its target environment, and can thus be used unchanged in many different custom applications. lOX manages any number and kind of I/O devices in a real-time, multitasking application. lOX services allow several tasks to share a single device, with requests on that device processed according to an application-specified priority. Tasks can transfer data to or from devices in buffered or direct mode, using either sequential or random access. In buffered mode, lOX maintains one or more intermedi- ate buffers for a task using a device, minimizing the time of task suspension by overlapping physical 1/0 with task processing. Buffering isolates application tasks from the physical characteristics of devices, so that serial devices such as terminals can coexist with random access devices such as disks, both accessed by the same buffered lOX calls. lOX not only controls device resources, it integrates those devices into a unified framework, providing a consistent I/O interface with a large degree of device independence. Application code written using lOX's buffered I/O services can be transported with only minor modifications to other systems, even if those systems utilize completely different I/O devices. In fact, code written in a high-level language may require no change at all. C') en II) 'i: II) tn • • 7-22 r--------------------------------------------------------------------------.~ Device Support lOX supports three device types-block, disk and character devices. For each device type lOX provides a number of salient features: Device sharing lOX supports shared devices through constructs called channels. A channel is a data structure that represents a logical conduit, or path to a device. lOX provides separate position and error indicators for each channel open to a device, thus facilitating device sharing, critical in a multitasking environment. Disk position support lOX maintains position indicators for disks (or any random access devices), thus relieving the application from the responsibility for calculating or maintaining position. Terminal support lOX's terminal handling calls support echoing, type ahead and holding or disabling terminal output. For applications that require close control over device operations, lOX's direct mode provides a set of services that can transfer data or perform device-specific control operations and synchronization, yet still free the application programmer from some hardware-dependent considerations such as device addresses, command codes and interrupt handling" lOX Features Buffered 1/0 lOX's buffering services improve performance and free the application from device-specific data block sizes and formats by transferring data between the application and lOX-maintained buffers, overlapping physical 1/0 with application processing whenever possible. lOX manages the intermediate buffers to serve several purposes: Device Independence Application tasks can ignore the idiosyncrasies of device operation or block sizes and formats, and can transfer fixed or variable length records according to application needs, rather than device requirements. Overlapping 1/0 Buffered 1/0 overlaps application processing with file 110 operations, freeing the application from synchronizing such operations. Caching For random-access devices such as disks, lOX's buffering services improve performance by checking lOX buffers for the sector requested by the application, accessing the device only if the target sector is not buffer-resident. Variable record length support With lOX's buffering services, record size can be determined by the presence of a delimiter character in the input or output stream, rather than being tied to a fixed block size. Extensibility While lOX never has to be modified, it can nonetheless be extended to meet unique needs. A user-written 1/0 handler that directly manipulates hardware can be placed into the lOX higher-level functions. This facility can not only service unusual devices, but also emulate a physical device, such as a UNIX like "pipe" between separate processes. For less fundamental extensions lOX includes four software "hooks" that give the system programmer the capability to fine-tune lOX functionality so that it matches it's computer environment. lOX can also be extended by adding auxiliary file management software components (FMX). The IOXISeries 32000 R&D Package contains the product, manuals and other documentation required in conjunction with VRTXISeries 32000 to develop a real-time embedded application which requires advanced, multitasking, device-level 1/0 facilities for peripherals. You can also purchase TRACERISeries 32000 and FMXISeries 32000 as separate R&D Packages or as bundled combinations. Direct 1/0 Direct 1/0 allows the programmer to bypass lOX's buffering services whenever an application requires deterministic control over when and how an 1/0 operation occurs. Synchronous 1/0 The calling task is suspended until the requested operation is completed and either data or status or both have been returned. In this way a lock-step synchronization is enforced on an 1/0 operation. Asynchronous 1/0 An application using direct 1/0 can initiate one or more 1/0 operations and then continue with other processing, retrieving the results of the 1/0 later via a VRTX mailbox or message queue. This allows 1/0 to be overlapped with continued operation of the calling task. ... CD CD" til Co) N C C c :::0 CD DI !j 3" CD ~ g ;i ;;; o o 3 o "0 ::J CD ::J fit < :::0 ;J ~ ." s: >< DI ::J Q. ~ m :::0 Package Contents The IOXISeries 32000 R&D Package contains: One master copy of lOX in two 27128 PROMs A boxtop license to make five copies of lOX (USA only) Five Hunter & Ready Silicon Software copyright labels Five 10XISeries 32000 User's Guides and Installation Guides Customer Support Information Release Notes 7-23 • ~ ,----------------------------------------------------------------------, U.I ~ ~ t"C C C'a >< :ill LL. >< Q g > J!! c Q) c o c. E o o ~ C'a i Q) E i7 iij Q) ~ o o o C'II ('I) ~ ";:: ~ Customer Support NSW-IOX-SPNN lOX/Series 32000 source code listing. National Semiconductor offers a one year complete technical support period. Extended support provisions can be arranged by calling MCS Logistics at the tollfree numbers which follow. The MCS Service Technical Support Engineering Center has highly trained technical specialists to assist customers over the telephone with product related technical problems. For more information, please call: (800) 538-1866 in the USA except for California (800) 672-1811 within California (800) 223-3248 in Canada (408) 749-7306 for rest of world Documentation NSW-IOX-MS lOX/Series 32000 Installation Guide and User's Guide. lOX System Calls Type Licensing All R&D packages are licensed through a National Semiconductor Binary software Licensing Agreement. In the United States, breaking the seal on the product package indicates acceptance of the terms of the licenses; no signature is required. For international sales a signed Binary Software License Agreement is required. If changes are required to the license agreement, contact the National Semiconductor Series 32000 Marketing Group prior to breaking the seal on the package. National also offers a Host-Based Package which includes the R&D packages ordered and the rights to make unlimited copies of VRTX, lOX, FMX and TRACER on a designated workstation or CPU or a Target-Based Package which includes the rights to make unlimited copies of the purchased R&D Packages (VRTX, lOX, FMX or TRACER) for a specific target product. Initialization 10lNIT Initialize lOX 100PEN 10ClOSE 10POSN Open channel Close channel Set file position Buffered 1/0 Services 10GET 10PUT Read byles Writebyles Direct 1/0 Services 10READ 10WRITE 10WAIT 10RESET 10CNTRl Read block Write block Wait for 1/0 completion Reset channel Perform device control Device Definition Services 10DFBlK Define general-block device Define character device Define disk device Remove device definition Device Interface Services 10POST Extension Services 7-24 Description Channel Control Services Ordering Information NSW-IOX-BRVM lOX/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAXIVMS BACKUP tape, manuals and R&D documentation. NSW-IOX-BRVX lOX/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAX/4.2 bsd "tar" tape, manuals and R&D documentation. NSW-IOX-BLAF lOX/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records stored in MS-DOS format on 51,4 inch PCDOS floppy diskette, manuals and R&D documentation. Call 10DFCHR 10DFDSK 10RMDEV 10STMR 10CTMR 10TIMER Post 1/0 request completion Start device timer Cancel device timer Announce device timer interrupt 10RXCHR Put character into input buffer 10RXCHM Put multiple characters into input buffer 10ECHO Put character into echo buffer 10ECHOM Put multiple characters into echo buffer 10TXRDY Get character from output buffer 10TXRDM Get multiple characters from output buffer 10EXCPT Call exception routine 10ATCHC Attach 1/0 routine to lOX , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , 00 ...mCD' FMX/Series 32000 R&D Package ... Interrupt Dispatch Table SVC Trap r--+ VRTX Worl < "TI i: >< III ::;, C. ~ :XI ~ m :XI II ~ UJ r----------------------------------------------------------------------, FMX Features Configuration ~ File Management '0 FMX provides system calls for creating and deleting files, renaming files, and for getting and setting certain file characteristics. The file management calls and the directory management calls are implementations of the "generic file management operations" defined by lOX. lOX provides a thin layer of code that identifies these calls, then routes them to FMX for interpretation and execution. FMX is initialized via a special call, FDINIT. Initialization is the process' by which FMX sets the starting values of all its internal data structures and variables. FMX must be initialized before it can perform any operations. The FMX/Series 32000 R&D Package contains the product, manuals, and other documentation required in conjunction with VRTX/Series 32000 and IOX/Series 32000 to develop a real-time embedded application which requires advanced, multitasking, file management services. You can also purchase TRACERI Series 32000 as a separate R&D Package. ~ tC ca >< ::::E L&. >< 2 >< li: > .!! c CP c o a. E o o ~ ~ U) CP E i7 1i ~ o o o ~ :g ".::: ~ Directory Management Services FMX supports a hierarchical directory tree structure. It provides calls for creating directories in given directories and for deleting directories. Package Contents The FMX/Series 32000 R&D Package contains: One master copy of FMX in two 27128 EPROMs A boxtop license to make five copies of FMX (USA only) Five Hunter & Ready Silicon Software copyright labels Five FMX/Series 32000 User's Guides Customer Support Information Release Notes Volume Management Services A logical collection of directories on a disk is called a volume. FMX provides a set of system calls to determine the characteristics of a new disk and to introduce the new disk to the system. These functions include evaluating volume parameters; mounting, dismounting, and synchronizing volumes; and obtaining volume attributes. Formatting Customer Support Formatting is the process of writing the data addressing scheme on the disk or sub-disk. This addressing scheme makes it possible for the system to access precise locations on the disk so that data can be reliably written to and read from the disk. The FMX format system call, FDFMAT, provides the necessary tools to format disks in a variety of ways suitable for most. National Semiconductor offers a one year complete technical support period. Extended support provisions can be arranged by calling MCS Logistics at the tollfree numbers which follow. 7-26 ,--------------------------------------------------------------------------, ~ CD The MCS Service Technical Support Engineering Center has highly trained technical specialists to assist customers over the telephone with product related technical problems. For more information, please call: (800) 538-1866 in the USA except for California (800) 672-1811 within California (800) 223-3248 in Canada (408) 749-7306 for rest of world NSW-FMX-BLAF FMX/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records stored in MS-DOS format on a 5% inch PC-DOS floppy diskette, manuals and R&D documentation. FMX/Series 32000 source code listing. NSW-FMX-SPNN NSW-FMX-M All R&D packages are licensed through a National Semiconductor Binary software Licensing Agreement. In the United States, breaking the seal on the product package indicates acceptance of the terms of the licenses; no signature is required. For international sales a signed Binary Software License Agreement is required. If changes are required to the license agreement, contact the National Semiconductor Series 32000 Marketing Group prior to breaking the seal on the package. National also offers a Host-Based Package which includes the R&D packages ordered and the rights to make unlimited copies of VRTX, lOX, FMX and TRACER on a designated workstation or CPU or a Target-Based Package which includes the rights to make unlimited copies of the purchased R&D Packages (VRTX, lOX, FMX or TRACER) for a specific target product. FMX/Series 32000 User's Guide. FMX Service Calls Type Initialize FMX File Management Services FMCREAT FMDELET FMRENAM FMGATIR FMSATIR Create file Delete file Rename file Get file attributes Set file attributes Directory Management Services FMMKDIR FMRMDIR Make subdirectory Remove subdirectory File I/O Services FMOPEN Open file Formatting 7-27 Description FDINIT Ordering Information NSW-FMX-BRVM FMX/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAXIVMS BACKUP tape, manuals and R&D documentation. NSW-FMX-BRVX FMX/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAX/4.2 bsd "tar" tape, manuals and R&D documentation. Call Initialization Volume Management Services CD (II Co) I\) o o o :J:I IS !i 3' CD Documentation Licensing ::::!. ~ o ~ CiJ oo 3 "C o :::J CD :::J en < :J:I -I ~>< ~ ." 3: >< FDMOUNT FDDISMT FDSYNC FDEVOL FDQVOL Mount volume Dismount volume Synchronize volume Evaluate volume parameters Get volume attributes FDFMAT Format disk II) :::J C. -I :J:I » o m :J:I ~ LLI ,----------------------------------------------------------------------, ~ VRTX/Series 32000 Board Support Package for National's Series 32000-Based Boards t"CI C ca >< u.. == ~ g CONFIGURATION TABLE lOT U > J!! c VRTX WORKSPACE VRTX I TASK 1 TASK 2 CI) c o Co E o o e ~ I TIMER INTERRUPT HANDLER CI) E i7 USART Rx INTERRUPT HANDLER USART Tx INTERRUPT HANDLER m ~ o o o C'I CO) en CI) 'i: CI) U) TL/GG/B7B1 -2 Board support routines for popular National Series 32000 boards • Brings up a tested VRTX, lOX, FMX and TRACER application immediately • Includes all code to initialize and run VRTX, lOX, FMX and TRACER • The routines in this package provide all the code needed to build and run a simple VRTX application (with or without TRACER) on several of National's Series 32000 boards. The application, which is documented in the manual "How to Write a 80ard Support Package for VRTX", consists of two tasks, one of which receives characters from an interrupting character 1/0 device and posts them to a VRTX mailbox. The second task pends at the mailbox for the characters and outputs them to the 1/0 device using VRTX. The VRTX support routines for each board include: - Configuration table specific to the board, - Device initialization code for National's ICU chip (NS32202), - Initialization code for the timer and serial 110 channel, - Code to initialize the 32000 data structures including the Interrupt Dispatch Table, Module Table and stack, - Receive and transmit interrupt handler code, - Timer interrupt handler code, - The application configuration table. For designers wishing to have the TRACER debugger in the system, there are also board support routines with the code needed to run the application with TRACER. In addition to the code described above, these routines include: - TRACER configuration table, - TRACER initialization code, - TRACER character 1/0 handler code - VRTX/TRACER interface code. For lOX, an example device driver for a serial 1/0 device and a disk controller are provided, along with all of the necessary configuration support software. A FMX example is also provided which runs using either a ramdisk driver or a disk driver. Example disk drivers are provided for several disk controllers. VRTX, lOX, FMX and TRACER support routines are supplied for National's 0832016, 0832000 and 08332 development boards. • • 7-28 Includes code for sample VRTX, lOX, and FMX application Routines can be used as templates for other boards ,--------------------------------------------------------------------, w CD Product Contents For more information, please call: (800) 538-1866 in the USA except for California (800) 672-1811 within California (800) 223-3248 in Canada (408) 749-7306 for rest of world VRTX, lOX, FMX and TRACER board support routines (written in Series 32000 Assembly Language) for National's Series 32000 development boards: DB32016, DB32000 and DB332 Source code for sample tasks described in the manual Customer Support Information Installation Guide Release Documentation Licensing All R&D packages are licensed through a National Semiconductor Binary Software Licensing Agreement. In the United States, breaking the seal on the product package indicates acceptance of the terms of the license; no signature is required. For international sales a signed Binary Software License Agreement is required. If changes are required to the license agreement, contact the National Semiconductor Series 32000 Software Marketing Group before breaking the seal on the package. Prerequisites The syntax in the source code files in this product conform to the standards and conventions used in National's GNX Language Tools Packages. Designers wishing to assemble the files will need the GNX Language Tools or their equivalent. Users of other software development tools may have to modify the source code in order to conform to the requirements of their tools. See the National Semiconductor datasheet titled "Series 32000 GENIX Native and Cross-Support (GNX) Language Tools" for information about National's tools. Ordering Information NSW-VBSP-SRVM VRTX, lOX and FMX/Series 32000 Board Support Packages on 1600 bpi 9-track reel tape in VAXIVMS BACKUP format; manual and other documentation. NSW-VBSP-SRVX VRTX, lOX and FMX/Series 32000 Board Support Packages on 1600 bpi 9-track reel tape in VAX/4.2 bsd "tar" format; manual and other documentation. NSW-VBSP-SLAF VRTX, lOX and FMX/Series 32000 Board Support Packages stored in MS-DOS format on a SYS32/20 5% inch PC-DOS floppy diskette; manual and other documentation. Customer Support National Semiconductor offers a one year complete technical support period. Extended support provisions can be arranged by calling MCS Logistics at the tollfree numbers below. The MCS Service Technical Support Engineering Center has highly trained technical specialists to assist customers over the telephone with product related technical problems. 7-29 ::::l. CD (II c;.) ~ o o o :::D CD III !j 3' CD w o ~ Cil o o 3 'g o :::l CD :::l en < ~ o .?< ." == >< III :::l Co -I :::D ~ m :::D ~ w r--------------------------------------------------------------------, ~ ~ VRTX, lOX and FMX/Series 32000 Support Libraries I'C C «I >< ::E • Q >< • ~ • LL ~ > .f!l c CII C oc.. E o (.) ~ Irno CII E i7 m CII ~ Q Q Q N CO) Xl '0: CII rn • Routines encourage writing VRTX, lOX and FMX applications in C or Pascal Interface routines matched to National's GNX Language Tools Package available on same media as National's GNX tools C Run-Time Library extends C for concurrent programming • • • C Run-Time support for standard inputoutput (stdio) functions Integrates standard 1/0 run-time library (stdio) with real-time services of VRTX/OS Hook routines included to add floatingpoint support to VRTX The VRTX/Series 32000 C Run-Time Library This package provides libraries that simplify the writing of VRTX-based applications in C or Pascal rather than just Series 32000 Assembly Language. The VRTX, lOX and FMX Interface Library enables the designer to make system calls to VRTX, lOX and FMX from C or Pascal programs. The C Run-Time Library supports the standard function calls made from C programs and, where appropriate, invokes services from VRTX, lOX or FMX. Some of the run-time library routines require lOX and FMX as well as VRTX. The C Run-Time Library provides external run-time functions not provided by the C language, It contains character and file 1/0, string manipulation, floatingpoint routines, storage allocation and file management functions. The library functions make calls to the VRTX kernel and, for certain 1/0 operations, to lOX and FMX. Library functions return an error code if a call is made to a VRTXIOS component absent from the system. If VRTX is operating in a Series 32000 hardware environment with National's Floating-Point Unit (NS32081), the designer can use hook routines supplied in the library to expand VRTX task management to handle the floating-point environment. All C Run-Time Library functions are re-entrant, that is, they can be used asynchronously by several tasks. Tasks can share a common copy of function code to save memory space. When a task using a function is interrupted by another task before it finishes with the function, the interrupting task can use the same copy of the function code without corrupting the original task's data. The C Run-Time Library is delivered as a library of object modules (GNX "ar" format). As a convenience for the VRTX system designer, the library also contains the object modules for the C Interface Library and VRTX hook routines. Like the interface routines the hook routines are included in the package in source code form. Interface Libraries Since requests for VRTX, lOX and FMX services are made with supervisor calls (SVCs) that can only be performed from assembly language programs, a high level language program must cali interface routines to use VRTX, lOX and FMX services. The interface libraries are collections of Series 32000 assembly language routines that logically sit between a C or Pascal program and VRTX, lOX and FMX. When a function is called from the program, the appropriate library routine accepts the parameters from the caller and performs a Series 32000 supervisor cali (SVC) to VRTX, lOX and FMX. When VRTX, lOX and FMX return from processing the call, the routine transforms the results into the form expected by the caller and returns control. The VRTX, lOX and FMX Interface Libraries contain routines to handle calls for task management, intertask communications, memory management, timing services, simple character 1/0, allocating device resources, providing a consistent 1/0 interface, and disk file management. There are no routines for VRTX interrupt handler calls because interrupt handlers are typically written in assembly language and can issue SVCs directly. The interface routines are written in Series 32000 assembly language and delivered in source code form as well as in libraries of object modules (GNX "ar" format). The assembly language syntax and calling sequences conform to the conventions in National's GNX Language Tools packages. Package Contents VRTX, lOX, and FMX C Interface Library source code (in GNX assembly language) VRTX, lOX, and FMX C Interface Library as object module library (GNX "ar" format) VRTX Pascal Interface Library source code (in GNX assembly language) VRTX Pascal Interface Library as object module library (GNX "ar" format) C Run-Time Library as object module library (GNX "ar" format) 7-30 en (I) VRTX C Language User's Guide VRTX Pascal Language User's Guide lOX C User's Guide FMX C User's Guide C Run-Time Library User's Guide Customer Support Information Release Documentation & Installation Guide VRTX C Interface Routines and Calling Sequences Task Management sc_tcreate (task, tid, pri, &err) Create Task sc_tdelete (tid/pri, code, &err) Delete Task sc_tsuspend (tid/pri, code, &err) Suspend Task sc_tresume (tid/pri, code, &err) Resume Task sc_tpriority (tid, pri, &err) Change Task Priority tcb = sc_tinquiry (info, tid, &err) Task Inquiry sc_lock() Disable Rescheduling sc_unlock( ) Enable Rescheduling Communication and Synchronization sc_post (&mbox, msg, &err) Post Messge to Mailbox msg = sc_pend (&mbox, timeout, &err) Pend for Message from Mailbox msg = sc_accept (&mbox, &err) Accept Message from Mailbox sc_qcreate (qid, qsize, &err) Create Queue sc_qpost (qid, msg, &err) Post Message to Queue msg=sc_qpend (qid, timeout, &err) Pend for Message from Queue msg=sc_qaccept (qid, &err) Accept Message from Queue Memory Management block = sc_gblock (pid, &err) Get Memory Block sc_rblock (pid, block, &err) Release Memory Block sc_pcreate (pid, paddr, psize, bsize &err) Create Memory Partition sc_pextend (pid, paddr, psize, &err) Extend Memory Partition Real-Time Clock time = sc_gtime ( ) Get Time sc_stime (time) Set Time sc_delay (ticks) Delay Task sc_tslice (ticks) Enable Timeslicing Character I/O char = sc_getc ( ) Get Character sc_putc (char) Put Character sc_waitc (char, &err) Wait for Special Character 7-31 ...iii' III (,) I\J o o o ::c (I) III ~ 3' (I) -i... en o (I) oo 3 -c o ::l (I) ::l lil' < ::c --I .?< 5 ~>< 'TI :5: >< III ::l c.. --I ::c ~ o m ::c a:: w ~ J!:"C C ca >< :::E LL >< Q ~~ a:: > J!! c CI) c 8. E o o e I CI) E i7 m a:: g lOX C Interface Routines and Calling Sequences Direct lID Functions iocntrl (chnl, code, &info, opts, &err) bytes = ioread (chnl, buf, count, opts, &err) ioreset (chnl, opts, &err) iowrite (chnl, buf, count, opts, &err) iowait (chnl, opts, &arr) Perform Device Control Read a Block Reset lID Channel Write a Block Wait for Outstanding lID Buffered lID Functions bytes = iogat (chnl, buf, count, opts, &err) ioput (chnl, buf, count, opts, &err) Read Bytes Write Bytes Channel Control Functions chnl = ioopan (david, davtype, opts, &err) ioclose (chnl, opts, &arr) posn = ioposn (chnl, offsat, opts, &arr) Open a Channal Close a Channel Set Position lOX System Services-Block Devices iopost (&dsrb, opts, &err) iostmr (&dsrb, ticks, opts, &err) ioctmr (&dsrb, opts, &err) iotimer (opts, &err) Post lID Request Completion Start a Request Timer Cancel a Request Timer Announce lID Timer Interrupt lOX System Services-Character Devices rcnt = iorxchr (ddtep, chr, opts, &err) rcnt Put a Character into Receiver or Typehead Buffer Put Characters into Receiver or Typehead Buffer Put a Character into Echo Buffer Put Characters into Echo Buffer Get a Character from Transmitter or Echo Buffer Get Characters from Transmitter or Echo Buffer = iorxchm (ddtep, buf, len, opts, &err) rcnt = ioecho (ddtep, chr, opts, &err) rcnt = ioechom (ddtep, buf, len, opts, &err) chr = iotxrdy (ddtep, opts, &err) rcnt = iotxrdm (ddtep, buf, len, opts, &err) o N M m ';:: ~ lOX System Services-Device Definition ddtep = iodfchr (devid, &desc, &info, opts, &err) iodfblk (devid, &desc, &info, opts, &err) iodfdsk (devid, &desc, &info, opts, &err) iormdev (devid, opts, &err) Define a Character Device Define a Block Device Define a Disk Device Remove a Device Definition lOX System Services-Initialization, Extension, and Exception ioinit (&inipk, &err) ioatchc (&atcpk, &err) ioexcpt (ecode, opts, &err) Initialize lOX Attach an lID Handler Raise an lID Exception System Call Function sc_call (fcode, &packet, &err) Call a Component 7-32 r--------------------------------------------------------------------------.w FMX C Interface Routines and Calling Sequences ...iii'CD UI File Management Functions fmcreat (ref_chan, pathname, iniLalloc, options, &err) fmdelet (ref_chan, pathname, options, &err) fmgattr (ref_chan, pathname, &attr, &timpk, &file_len, options, &err) fmrenam (ref_chan, old, new, options, &err) fmsattr (ref_chan, path name, attr, &timpk, file_len, options, &err) Create a File Delete a File Get File Attributes Rename a File Set File Attributes Directory Management Functions fmmkdir (ref_chan, pathname, options, &err) fmrmdir (ref_chan, path name, options, &err) Create a Directory Remove a Directory File liD Functions channel = fmopen (ref_chan, path name, devtype, options, &err) ioclose (channel, options, &err) bytes = ioget (channel, buffer, count, options, &err) position = ioposn (channel, offset, options, &err) ioput (channel, buffer, count, options, &err) bytes = ioread (channel, buffer, count, options, &err) ioreset (channel, options, &err) iowait (channel, options, &err) iowrite (channel, buffer, count, options, &err) Open a Channel to a File Close a Channel Read Bytes Set Position Write Bytes Read a Block Reset liD Channel Wait for Outstanding liD Write a Block Volume Management Functions fddismt (device, options, &err) fdevol (&volpk, &err) fdfmat (&volpk, &err) rooLchan = fdmount (&volpk, &err) fdqvol (&volpk, &err) fdsync (device, options, &err) Dismount a Volume Evaluate Volume Parameters Format a Volume Mount a Volume Query Volume Attributes Synchronize a Volume (,) N o o o XI CD DI :!:j 3' CD w o ~ CiJ o o 3 o::l 't:I CD ::l UI < XI ~ (5 .?< ." iii: >< Initialization Function fdinit (&inipk, &err) Initialize FMX DI ::l C. Extension Functions hooLaddr = fdhook (func, hbuf) sc_call (fcode, &packet, &err) Build Hook Routines Call a Component -t XI » o m XI • 7-33 ~ ,--------------------------------------------------------------------------, U.I oII( ~ J'tJ C tV >< :::i!i LL. >< Q ~~ ~ > .!! c II) c o c.. E o .. o II) ~ (/) II) E i7 1U II) ~ o o o N VRTX Pascal Interface Routines and Calling Sequences Task Management sctcreate (task, tid, pri, err) Create Task sctdelete (tid/pri, code, err) Delete Task sctsuspend (tid/pri, code, err) Suspend Task sctresume (tid/pri, code, err) Resume Task sctpriority (tid, pri, err) Change Task Priority tcb: = sctinquiry (info, tid, err) Task Inquiry sclock () Disable Rescheduling scunlock () Enable Rescheduling Communication and Synchronization scpost (mbox, msg, err) Post Message to Mailbox msg: = scpend (mbox, timeout, err) Pend for Message from Mailbox msg: = scaccept (mbox, err) Accept Message from Mailbox scqcreate (qid, qsize, err) Create Queue scqpost (qid, msg, err) Post Message to Queue msg: = scqpend (qid, timeout, err) Pend for Message from Queue msg: = scqccept (qid, err) Accept Message from Queue Memory Management block: = scgblock (pid, err) Get Memory Block scrblock (pid, block, err) Release Memory Block Create Memory Partition scpcreate (pid, paddr, psize, bsize, err) Extend Memory Partition scpextend (pid, paddr, psize, err) Real-Time Clock time: = scgtime ( ) Get Time scstime (time) Set Time scdelay (ticks) Delay Task sctslice (ticks) Enable Timeslicing Character I/O char: = scgetc ( ) Get Character scputc (char) Put Character scwaitc (char, err) Wait for Special Character CI) fII II) ';: II) (/) 7-34 (J) .... (II C Run-Time Library Routines Character and String Routines bcmp isalnum bcopy isalpha bfill is ascii brev isblank bzero iscntrl ffs iscsym index iscsymf iswhite lower Integer Mathematical Routines abs atol labs rand isdigit islower isodigit isprint ispunct isspace isupper reverse isxdigit rindex sprintf sscanf strcat strchr strcmp strsave VRTX 1/0 gets getchar lOX & FMX Buffered 1/0 clearerr fflush fclose fgetc fdopen fgets feof fopen ferror fprintf fdreopen sprintf strcpy strcrspn strlen strncat strncmp strncpy strpbrk strspn strrchr toascii toint tolower toupper swab upper Co) N 0 0 0 ::D (II I» -;- -t 3" (II (J) atoi srand min max sign 0 :I»s Floating-Point Mathematical Routines acos atof exp asin cabs fabs atan ceil floor atan2 cos frexp square idexplo frexplo Exception Handling longjmp setjmp Miscellaneous Routines abort swab VRTX Memory Management calloc free CD" en hypot Idexp log log10 modf pow sin sqrt tan sinh cosh tanh .... (II 0 0 3 "1:J 0 ::s (II ::s - en < ::D exit -t ~>< malloc realloc rcopy puts printf putchar scanf fputc fputs fread freopen fscanf fileno fseek ftell fwrite getc getw frewind putc putw rewind setbuf setbuffer setnbf setlinebuf ungetc sscanf xprintf xscanf (5 ,?< .." :s::: >< I» ::s Q. -t ::D » 0 m ::D • 7-35 a: w ~ 'CI i >< ::E u.. >< 2 ~~ > .!! c III C oCL E o (.) i III E i7 m a: C) C) C) C'\I C") .Ie ;:: ~ Prerequisites NSW-VIL-SLAF VRTX/Series 32000 Support Libraries stored in MS-DOS format on a SYS32/20 5% inch PC-DOS floppy diskette; manuals and other documentation. NSW-IIL-SRVM lOX/Series 32000 Support libraries on 1600 bpi 9-track reel tape in VAXIVMS BACKUP format; manuals and other documentation. NSW-IIL-SRVX lOX/Series 32000 Support libraries on 1600 bpi 9-track reel tape in VAX/4.2 bsd "tar" format; manuals and other documentation . NSW-IIL-SLAF lOX/Series 32000 Support libraries stored in MS-DOS format on a SYS32/20 5% PC-DOS floppy diskette; manuals and other documentation. NSW-FIL-SRVM FMX/Series 32000 Support libraries on 1600 bpi 9-track reel tape in VAXIVMS BACKUP format; manuals and other documentation. NSW-FIL-SRVX FMX/Series 32000 Support libraries on 1600 bpi 9-track reel tape in VAX/4.2 bsd "tar" format; manuals and other documentation. NSW-FIL-SLAF FMX/Series 32000 Support libraries stored in MS-DOS format on a SYS32/20 5% PC-DOS floppy diskette; manuals and other documentation . Compiling source code files and linking members of object module libraries requires National's GNX language tools (in native or cross support versions) on the host system. See the National Semiconductor datasheet titled "Series 32000 GENIX Native and CrossSupport (GNX) Language Tools" for information. Customer Support National Semiconductor offers a one year complete technical support period. Extended support provisions can be arranged by calling MCS Logistics at the tollfree numbers below. The MCS Service Technical Support Engineering Center has highly trained technical specialists to assist customers over the telephone with product related technical problems. For more information, please call: (800) 538-1866 in the USA except for California (800) 672-1811 within California (800) 223-3248 in Canada (408) 749-7306 for rest of world Licensing All R&D packages are licensed through a National Semiconductor Binary Software Licensing Agreement. In the United States. Breaking the seal on the product package indicates acceptance of the terms of the license; no signature is required. For international sales a signed Binary Software License Agreement is required. If changes are required to the license agreement, contact the National Semiconductor Series 32000 Software Marketing Group before breaking the seal on the package. Documentation NSP-VC-M NSP-RTC-M NSP-VPAS-M NSP-IC-M NSP-FC-M Ordering Information NSW-VIL-SRVM VRTX/Series 32000 Support Libraries on 1600 bpi 9-track reel tape in VAXIVMS BACKUP format; manuals and other documentation. NSW-VIL-SRVX VRTX/Series 32000 Support Libraries on 1600 bpi 9-track reel tape in VAX/4.2 bsd "tar" format; manuals and other documentation. 7-36 VRTX C User's Guide C Run-Time Library User's Guide VRTX Pascal User's Guide lOX C User's Guide FMX C User's Guide .--------------------------------------------------------------------------,0 CD TRACER/Series 32000 R&D Package ... m' w N • • • • • C) C) C) Operates without modification in any VRTX/Series 32000 hardware environment Companion product to VRTX: displays VRTX TCB's, mailboxes, queues and buffers Operates independently of VRTX; does not run as a task Resides in PROM and can be located anywhere in memory Allows breakpoints by task or in userwritten system code Displays and modifies memory or registers by task Provides single-stepping, downloading and disassembly III Can be extended to support userdefined features Independent of software development environment Comprehensive manual with many examples I!III :xl • ;;j .. • m 3 CD oo ~ (i; n o 3 o ::s CD ::s 'a cessing can be extended by adding user-written routines (filters) at hooks called before command processing, and before displays are sent to the output terminal. This permits changes to command syntax, macro-like command expansion and customized displays. TRACER supports up to 16 breakpoints, each with a unique iteration count. Breakpoints can be set by task, which is useful for debugging code shared between tasks. Since TRACER operates outside the multitasking environment, it can set breakpoints in I/O routines, interrupt service routines, and in user-written system code. TRACER can display VRTX system structures such as task control blocks, mailboxes, queues and I/O buffers in tabular form with their contents interpreted in easy-to-read format rather than as memory locations. TRACER can examine a range of memory locations and display them in hex, ASCII or as disassembled code. The contents of a location can be changed, or all locations in a range can be set to a value. Registers can be displayed and modified for any task. For non-executing tasks, TRACER can display and modify the register values directly in the TCB. A disassembler within TRACER can translate binary code into assembly mnemonics. The TRACER on-line help facility also provides the programmer with a brief summary of TRACER command syntax and options. TRACER/Series 32000 is an interactive multitasking debugger designed for use with VRTX/Series 32000based systems. TRACER runs in parallel with the mUltitasking environment rather than as a task. This permits it to monitor and control program execution without competing with tasks for system resources like task control blocks and queues. It does not distort system behavior by affecting the competition of tasks for access to the CPU. Since TRACER has its own data structures, it does not depend on the correct execution of the VRTX-based system for its own execution. If bugs in an application task cause a system crash, TRACER survives and provides a means to diagnose the problem. There are no dependencies on the host system development environment. TRACER is not linked with user task code. Installation in a system requires only plugging the TRACER PROMs into the target board, building a configuration table to tell TRACER about the hardware environment, and supplying a small devicespecific interrupt handler for the TRACER communications I/O channel. TRACER can be hooked into a VRTX-based system during development, and removed completely for production. TRACER commands are entered interactively via a character-oriented device, usually a terminal. When a spare I/O channel is available, TRACER can use it; otherwise, it can share the terminal associated with VRTX's character I/O facility. TRACER command pro- ur < :xl ~ o .?< ." iii: >< I» ::s Q. ~ ~ m :xl II 7-37 ~ LLI r-----------------------------------------------------------------------, ~ I"D C ca >< ::iii LL. >< Q g> .! c II) c o D.. E o o t!! ~o en II) E i7 "ii II) ~ g ~ C') U) II) ·c II) en For more information, please cali: (800) 538-1866 in the USA except for California (800) 672-1811 within California (800) 223-3248 in Canada (408) 749-7306 for rest of world TRACER Command Summary Breakpoint Commands sb Set Breakpoint db Display Current Breakpoints rb Remove Breakpoint Licensing Memory and Register Commands sm Set Memory dm Display Memory in Hex and ASCII sr Set Registers for a Task dr Display Registers for a Task or System Routine Ali R&D packages are licensed through a National Semiconductor Binary Software Licensing Agreement. In the United States, breaking the seal on the product package indicates acceptance of the terms of the license; no signature is required. For international sales a signed Binary Software License Agreement is required. If changes are required to the license agreement, contact the National Semiconductor Series 32000 Software Marketing Group before breaking the seal on the package. Execution Control Commands rx Resume Execution xs Execute Single Step tc Switch to Command Mode tt Switch to Tasking Mode System Status Commands ds Display System Status dt Display Task Status dq Display Queue Status dx Display Mailbox Pends di Display Input Buffer Contents & Status Display Output Buffer Contents & Status do Ordering Information The TRACER/Series 32000 R&D package contains: One master copy of TRACER in two 27128 PROMs A boxtop license to make five copies of TRACER (USA only) Five sets of Hunter & Ready Silicon Software copyright labels Five TRACER/Series 32000 User's Guides Customer Support information TRACER 32000 release notes NSW-TRAC-BRVM TRACER/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAX/ VMS BACKUP tape, manuals and R&D documentation. NSW-TRAC-BRVX TRACER/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records on a 1600 bpi 9-track VAX/ 4.2 bsd "tar" tape, manuals and R&D documentation. NSW-TRAC-BLAF TRACER/Series 32000 in two 27128 EPROMs, and as files of S-records and define-byte records stored in MS-DOS format on a SYS32/20 5% inch PCDOS floppy diskette, manuals and R&D documentation. NSW-TRAC-SPNN TRACERISeries 32000 source code listing. Customer Support Documentation National Semiconductor offers a one year complete technical support period. Extended support provisions can be arranged by calling MCS Logistics at the tollfree numbers below. The MCS Service Technical Support Engineering Center has highly trained technical specialists to assist customers over the telephone with product related technical problems. NSP-TRAC-M Other Commands dl Download Code from Host System Ii List Disassembled Code he Display TRACER Commands & Arguments Package Contents 7-38 TRACER/Series 32000 User's Guide ~ en CD .... National Semiconductor iii' III Series 32000® EXEC ROMabie Real-Time Multitasking EXECUTIVE (,) I\) o o o m >< m (") ::JJ o :5: II) e- CD ::JJ CD USER TASKS II) ~ 3' CD :5: s:::: ;:;: ;::;: II) III ~ DEVICE DRIVERS :5' cc m >< m FILE SYSTEM (") c ...... 'User·definable interrupt handlers. TL/GG17291-1 III Provides a multitasking executive for .. ROM able • Reconfigurable • Real-time clock support for time-of-day and event scheduling • Allows up to 256 levels of task priority which can be dynamically assigned • Up to 256 logical channels for task communication • Free-memory pool control • Available for VAXTM/VMSTM, VAX/UNIX® and SYS32™ development environments real-time applications II Supports all Series 32000 CPUs .. Complete Source Code Package - Fully user configurable - Hardware independent .. Extensive user implementation support - Unique demo, program introduction - C and Pascal interface libraries - Sample terminal drivers -Integrated with Series 32000 development boards and monitor Product Overview time, such as intertask communications, system resource access based upon task priority, real-time clock control, and interrupt handling. These functions greatly simplify application development in such areas as instrumentation and control, test and measurement, and data communications. In these applications, EXEC provides an environment in which systems programmers can immediately implement software for their particular application without regard to the details of the system interaction. EXEC is National Semiconductor's real-time, multitasking executive for Series 32000 based applications. Its primary purpose is to simplify the task of designing application software and provides a base 'Jpon which users can build a wide range of applicatio(1 systems. EXEC requires only 2K bytes of RAM and only 4K bytes of ROM and is fully compatible with National Semiconductor's Series 32000 family and the Series 32000 development board family. EXEC allows the user to monitor and control multiple external events that occur asynchronously in real- 7-39 <: m ~ r-----------------------------------------------------------------------------~ > i= ;:, (.) ~ >< ~ 0) c :52 S :;:::l "S :::E EXEC executive is fully modular and can be readily configured to suit application needs. It is both hardware and location independent, thus providing a fundamental base on which to build a wide range of applications systems. In addition, it provides a buslike structure that helps to integrate software with the underlying hardware through predefined data structures and interconnect procedures. This architecture ensures maximum standardization for both compatibility and future expansion. is supported for the most sophisticated of multitasking systems. Real-Time Speed-Because EXEC was hand-coded in assembly language, several advantages with regard to speed are gained. Task swapping, channel and message management, and I/O interfacing are executed more quickly than could be expected of a system written in a higher level language. Direct Interrupt Processing-The EXEC architecture employs interrupt channels which allow devicespecific interrupt handling routines to interface directly with the interrupt source. This accomplishes servicing of interrupts without the overhead of task swapping, yet allows the operating system to maintain the integrity of the system. Combining this interrupt service architecture with a device-efficient nucleus results in an operating system that better supports demanding, real-time applications. User Configurability-EXEC executive-based applications may be configured from a wide range of facilities, selecting only those that meet the specific requirements of the application system. The resultant system contains only the modules necessary for its use, allowing the EXEC executive to fit a wide range of applications from small, special-purpose, dedicated applications to large, general-purpose systems. Event Driven-In the EXEC executive, each user task exists in its own "closed environment"-a virtual processor. Each virtual processor can synchronize with external/internal occurrences through events. EXEC supports a wide variety of events, including synchronization with task activities, external device operations, and the real-time clock. Memory Pool Manager-The EXEC executive has an integral memory pool manager. This feature not only reduces the amount of RAM required in an application system (potentially reduces board count), but also allows active modules more buffer area within any given space constraint. Q) E i7 1! a: Q) :is cu :::E oa: (.) ~ >< ~ o o o ~ oQ) ";: Q) (f) Features Structured Environment-The EXEC executive and its associated modules support and encourage modular, structured programming, thus providing a consistent structure from application to application, which allows experience gained and software written on one system to be easily transferred to another. Frequently, entire programs may be used in multiple applications, even if different CPU boards are involved. Hardware-Oriented Interface-The EXEC executive provides an intertask and task/executive communications architecture that is similar to hardware communications. Instead of an array of "mailboxes" (or "message centers"), EXEC uses channels. This interface is consistent throughout the range of facilities offered, thus reducing the number of concepts to be learned, providing greater control at the task level, and increasing the efficiency of the system and the programming effort. Wide Choice of CPUs-EXEC is compatible with the full line of 32-bit Series 32000 CPUs offered. These include the NS32008, NS32032, and the NS32C016. Users will be able to move a NS32016 system: • to an NS32008 for cost-effectiveness, • to an NS32032 for increased computing power, or • to an NS32C016 for low-power applications. Time-Of-Day Clock-The EXEC executive has an integral system/time-of-day clock. Included is a realtime clock configurable to a resolution of 1ms. This eliminates the need to allocate the extra memory otherwise required for this feature. Small Nucleus-The EXEC nucleus was hand-coded in assembly language rather than being compiled from intermediate or high-level languages. The resulting product is therefore smaller and allows the incorporation of more features within an optimum size. Priority-Oriented Scheduler-The EXEC scheduler ensures that the highest priority task that is ready to execute is given control, so the system is responsive to its external world. Dynamic reprioritization of tasks Internal Structure EXEC may be viewed as composed of a set of functions. These functions are: 1. Nucleus- performs task and channel management and controls executing memory. 2. Timer Manager-performs time-dependent control. 3. Dynamic Task Dispatcher-performs dynamic creation and installation of tasks at run-time. 4. Dynamic Channel Controller-performs dynamic creation and installation of software and interrupt channels at run-time. 5. Memory Pool Manager-performs memory allocation and deallocation. 7-40 ~----------------------------------------------------------------------,~ CD The Timer Manager, Dynamic Task Dispatcher, Dynamic Channel Controller, and the Memory Pool Manager all operate under direction of the Nucleus, which assigns tasks to run on the hardware CPU. :::l. • Intertask Communication CD 1. RECV(W) -Receive data from a channel and, optionally, wait for an event to occur. 2. SEND(W) -Send a message to a channel and, optionally, wait for an event to occur. 3. SIGNL -Synchronize with another task through event flags; signal completion. 4. BLDSC -Build software channel. • Interrupt Handling 1. INTEX -Interrupt exit from executive. 2. BLDIC -Build an interrupt channel. • Memory Pool Management 1. ALLOC -Allocate a block of pooled memory. 2. DALOC -Deallocate memory back to pool. • Timer Management 1. MRKT(W) -Mark a time delay and, optionally, wait for an event to occur. 2. CMRKT -Cancel previously posted mark-time event. 3. GTIMD -Get current time of day. 4. STIMD -Set current time of day. System Functions EXEC controls CPU allocation by resolving conflicting needs of individual tasks, and monitors external events. The Event Manager, Task Manager, Channel Manager, Memory Manager, and Timer Manager provide system facilities that are directly accessible from the user task level. A representative sampling of system functions are summarized below: • Task and Event Management 1. TSKBD -Build a task and schedule it to run. 2. SUSPD -Suspend a task. 3. GTPRI -Get task priority. 4. STPRI -Change run-time task priority. 5. WAITE -Wait for an event or combination of event to occur before resuming task processing. 6.TSTEV -Test the current state of an event. 1/1 Co) r.l o o o m >< m (") :::c o 3: III C" CD :::c CD !!!. ::t 3 CD 3: c:: ;:;: ;:::;: III 1/1 ;10;" S· CQ m >< m (") c: -I c::J HARDWARE INTERRUPT <: m TIMER INTERRUPT' USER TASKS c P U - - I-- DEVICE DRIVERS * FILE SYSTEM - -, • * * * * *-* _ _ _ _ _ _ _ FA.E!!-ITI~ RAM POOL TLlGG17291-2 • Mayor may not be from 32202 ICU. FIGURE 1. EXEC Structure 7·41 ~ > r-----------------------------------------------------------------------------, i= ;:) o ~ >< ~ 0) c ~ en S :;::: '3 :E CP E i7 1 a: CP :aCIS :E Ordering Information VAX/VMS Environment SYS32/20, SYS32/30 Environments Order Number: NSW-EXEC-SRVM* Shipping Configuration: Software on 1600 bpi magnetic tape (9-track VMS copy format). EXEC reference manual. Prerequisite: NSW-ASM-BRVM cross software package, at current revision level. Order Number: NSW-EXEC-SLAF Shipping Configuration: Software on SYS32 format streamer tape cartridge. EXEC reference manual. Prerequisite: SYS32/20 or SYS32/30 Development System with current revision level software. Documentation VAX/UNIX Environment EXEC ROMabie Real-Time Multitasking EXECUTIVE Reference Manual. Included with software package. May also be ordered separately. Order Number: NSP-EXEC-M Order Number: NSW-EXEC-SRVX' Shipping Configuration: Software on 1600 bpi magnetic tape (UNIX tar tape format). EXEC reference manual. Prerequisite: NSW-ASM-BRVX' cross software package, at current revision level. 'Software license agreement must be signed prior to order entry. o a: o ~ >< ~ o o o ~ m ';: CP U) 7-42 Section 8 Application Notes Section 8 Contents AB-26 Instruction Execution Times of FPU NS32081 Considered for Stand-Alone Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AB-27 Use of the NS32332 with the NS32082 and the NS32201 . . . . . . . . . . . . . . . . . . . . . . . . . . AN-383 Interfacing the NS32081 as a Floating-Point Peripheral. . . . . . . . . . . . . . • . . . . . . . . . . . . AN-404 10 MHz, No Wait States NS32016 System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AN-405 Using Dynamic RAM with Series 32000 CPUs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AN-406 Interfacing the Series 32000 CPUs to the MULTIBUS ........ . . . . . . . . . . . . . . . . . . . . AN-464 Effects of NS32082 Memory Management Unit on Processor Through Put. . . . . . . . . . AN-513 Interfacing Memory to the NS32532 .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AN-524 Introduction to Bresenham's Line Algorithm Using the SBIT Instruction; Series 32000 Note 5.......................................................................... AN-526 Block Move Optimization Techniques; Series 32000 Graphics Note 2 .. .. .... ... . .. AN-527 Clearing Memory with the 32000; Series 32000 Graphics Note 3. . . . . . . . . . . . . . . . . . . AN-528 Image Rotation Algorithm; Series 32000 Graphics Note 4. . . . . . . . . . . . . . . . . . . . . . . . . AN-529 80 x 86 to Series 32000 Translation; Series 32000 Graphics Note 6 . . . . . . . . . . . . . . . . AN-530 Bit Mirror Routine; Series 32000 Graphics Note 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-2 8-3 8-4 8-6 8-14 8-25 8-32 8-37 8-41 8-67 8-77 8-80 8-84 8-93 8-99 ~ National Semiconductor Application Brief 26 Systems & Applications Group Instruction Execution Times of FPU NS32081 Considered for Stand-Alone Configurations The table below gives execution timing information for the FPU NS32081. Operation The number of clock cycles nCLK is counted from the last SPC pulse, strobing the last operation word or operand into the FPU, and the Done-SPC pulse, which signals the CPU that the result is available (see Figure 1). The values are therefore independent of the operand's addressing modes and do not include the CPU/FPU protocol time. This makes it easy to determine the FPU execution times in stand-alone configurations. The values are derived from measurements, the worst case is always assumed. The results are given in clock cycles (CLK). Number of Clock·Cycles nClK Add, Subtract 63 Multiply Float 37 Multiply Long 51 Divide Float 78 Divide Long 108 Compare 38 SPC CLK TL/EE/8760-1 FIGURE 1 8-3 ~ m • 1\:1 Q) ~ i r---------------------------------------------------------------------------~ Use of the NS32332 with the NS32082 and the NS32201 National Semiconductor Application Brief 27 Systems Applications Group Care should be taken when the NS32332 is designed in a system with the NS32201 and the NS320B2. Two configurations need to be considered, one with MMU and one without. In a configuration without an MMU, TCU and CPU both run a four clock cycle bus (Figure 1). The ROY signal is the only incompatible signal between the CPU and TCU and therefore the ROY output of the TCU should not be directly connected to the ROY input of the NS32332. The NS32332 samples its ROY input in the middle of T3 while the NS32201 asserts its ROY output shortly after the middle of T2 and removes it shortly after the middle of T3, thus the NS32332 ROY input hold time (tROYh) is not met. To meet tROYh, the ROY output of the NS32201 should be clocked by the rising edge of the CTTL using a Ootype flip-flop (74AS74) and then taken to the NS32332. It should be noted that the NS32332 outputs the data in a write cycle in T3 unless OT/SOONE pin is sampled low on the rising edge of the reset in which case the data is output during T2. The OT/SOONE pin is implemented as of revision B of the NS32332. In a configuration with MMU the NS32332 runs a four clock cycle bus while the NS320B2 runs a five cycle bus. Two options can be exercised. The first option is extending the NS32332 bus cycle to five clocks by adding a blind wait state that bypasses the NS32201 (Figure 2). This configuration generally requires the minimum hardware modification for a 320xx based design to run the NS32332. Here the NS32201 output Signals can be used to interface the NS32332 and the NS320B2 to the memory or 1/0. Additional wait states can be inserted by clocking the ROY output of the TCU. The second option is to have the NS32332 run a four clock cycle bus (Figure 3). In this configuration the NS32201 output Signals cannot be used to interface the NS32332 to memory or 1/0; they can only be used to interface the NS320B2 to the memory. In this configuration a revision N of the NS320B2 should be used. TCU states T1 T2 T3 T4 NS32332 states T1 12 T3 T4 PHil PHIU 74AS74 NS32332 ADS output WAIT STATES IF NEEDED-TCU ROY output TCU ROY a.OCKm BY em (Q) TLlEE/8761-2 ] WEETS THE NS32332 SPEC TCU TSO TCU iiii. ViR TCU DOE TL/EE/8761-1 FIGURE 1. NS32332, TCU Timing Diagram, No Wait State, No MMU B-4 . ~ T1 TCUatat.s 12 NS32082 ....U statls T1 T....u T2 N532332statlS T1 T.... U T3 " " T3 m " " " N ..... PHil PHI 0 14532332 ADS output ..wu iiiV output 14532332 RDYlnput(bllnd walt) TCURDYoutput Teu RDY CLOCKED BY em TCUTSOoutput Teu Rii,WR outputs TLlEE/8761-3 FIGURE 2. NS32332, MMU, TeU Timing Diagram when NS32332 is Run with 1 Wait State Similar to Timing Diagram of NS32332 Adapter to D832000 Rii,Wi TCUslgnals TSO ._.:I....-+-_+-,./ ODE TL/EE/8761-4 FIGURE 3. NS32332, MMU, TeU Timing Diagram with No Wait State 8-5 ~ CD r----------------------------------------------------------------------------, ~ Interfacing the NS32081 as cc a Floating-Point Peripheral National Semiconductor Application Note 383 Microprocessor Applications Engineering This note is a guide for users who wish to interface the NS32081 Floating-Point Unit (FPU) as a peripheral unit to CPUs other than those of the Series 32000 family. This is not a particularly expensive procedure, but it requires some in-depth information not all of which is available in the NS32081 data sheet. Four basic topics will be covered here: Floating-point operands need not be held in registers; they may be supplied externally as part of the instruction sequence. Integer operands (appearing in conversion instructions) and values being transferred to or from the FSR must be supplied externally; they cannot be held in Floating-Point registers FO-F7. An overview of the architecture of the NS32081 as seen in a stand-alone environment. The protocol used to sequence it through the execution of an instruction. 1.2 INSTRUCTION SET AND ENCODING The encodings used for NS32081 instructions are shown in Figure 2. They fall within two formats, labeled from Series 32000 tradition "Format 9" and "Format 11". These formats are distinguished by their least-significant byte (the "10 Byte"). Execution of an FPU instruction starts by passing first the 10 Byte and then the rest of the instruction (the "Operation Word") to the FPU. Fields within an instruction are interpreted by the FPU in the same manner as documented in Chapter 4 of the Series 32000 Instruction Set Reference Manual, with the exception of the 5-bit General Addressing Mode fields (gen1, gen2). Since the FPU does not itself perform memory accesses, it does not need to use these fields for addressing calculations. The only use it makes of these fields is to determine for each operand whether the value is to be found internal to the FPU (that is, within a register FO-F7, or whether it is to be transferred to and/or from the FPU. See Figure 3. A value of 0-7 in a gen field specifies one of the FloatingPoint registers FO-F7, respectively, as the location of the corresponding operand. Any greater value specifies that the operand's location is external to the FPU and that its value will be transferred as part of the protocol. Any non-floating operand is always handled by the FPU as external, regardless of the addressing mode specified in its gen field. It is illegal to reference an odd-numbered register for a doubleprecision operand. If an odd register is referenced, the results are unpredictable. Special guidelines for connecting and programming the NS32081 as a peripheral component. A sample application of these guidelines in the form of a circuit interfacing the NS32081 to the Motorola 68000 microprocessor. References are made here to the NS32081 data sheet and the Series 32000 Instruction Set Reference Manual (Publication #420010099-001). The reader should have both these documents on hand. 1.0 Architecture Overview 1.1 REGISTER SET The register set internal to the NS32081 FPU is shown in Rgure 1. It consists of nine registers, each 32 bits in length: FSR The Floating-Point Status Register. As given in the data sheet, this register holds status and mode information for the FPU. It is loaded by executing the LFSR instruction and examined using the SFSR instruction. FO-F7 The Floating-Point Registers. Each can hold a single 32-bit single-precision floating-point value. To hold double-precision values, a register pair is referenced using the even-numbered register of the pair. ++- 32 ~ IFloating PI. Status I FSR 32 ~ Fo1...._ _ _ _ _...J F11 ~======~ ::I~==========~ F41 :=:::============~ Fsi :========~ Fsi 1.3 PINOUT The FPU is packaged in a 24-pin DIP (see Figure 4). The pin functions can be split into two groups: those that partiCipate in the communication protocol between the FPU and the host system, and those that reflect the familiar requirements of LSI components. The protocol uses the following pins of the FPU: 00-015 The 16-bit data bus. The DO pin holds the least-significant bit of data transferred on the bus. SPC A dual-purpose pin, low active. SPC is pulsed low from the host system as the data strobe for bus transfers. SPC is pulsed low by the FPU to signal that it has completed the internal execution phase of an instruction. F7!:==============: FIGURE 1. FPU Registers 8-6 r--------------------------------------------------------------------,~ Z 1.0 Architecture Overview (Continued) STO, STl cA The status code. This 2-bit value is sampled by the FPU on the falling edge of SPC, and informs it of the current protocol phase. STO is the least-significant bit of the value. The need filled by the status code is most relevant to Series 32000-based systems, where it serves to allow retry of aborted instructions and to disambiguate the protocol when the SPC signal is bussed among multiple slave processors. In microprocessor-based peripheral applications, the status code can generally be provided from the CPU's address lines. RST VCC The clock input. This is a TIL-level square wave which the FPU uses to sequence its internal calculations. The reset input. This signal is used to reset the FPU's internal logic. The 5-volt positive supply. GNDB, GNDl The grounding pins. GNDB serves as ground for the FPU's output buffers, and GNDl is used for the rest of the on-chip logic. FPU Internal Register: Fn, n=O ... 7 long Floating = Even Register Only 001 1 1 1 1 0 ~----------~--------~}\ OPERATION WORD ClK o 8 7 i The pins providing for standard requirements are: T ) ID BYTE 10111xlxlxl Format 9: lFSRISFSR/Conversions 111 X 1 X 1 X 1 xl o External to FPU Note: All 1 1 110 '-----~-----'} OPERATION WORD non~floating operands are always external. FIGURE 3. FPU Addressing Modes ID BYTE Format 11: Movement/Calculation FIGURE 2. FPU Instruction Formats 16 BIT DATA BUS AID SERIES 32000 CPU 0-15 STO S11 SPC ... Vee 010 00-15 r, STO NS32081 S11 FPU SPC rrr RST ClK 09 STO 08 S11 07 SPC 06 011 012 05 NS32081 FPU 04 RST CTn 013 014 03 NS32201 TCU 02 015 15 01 TL/EE/B3BB-l DO GNDl ClK 13 12 Top View FIGURE 4. NS32D81 FPU Connections 8-7 RST GNDB TL/EE/B3BB-2 C» Co) 2.0 Protocol The FPU requires a fixed sequence of transfers ("protocol") in its communication with the outside world. Each step of the protocol is identified by a status code (asserted to the FPU on pins sTO and sT1) and by its position in the sequence, as shown in Figure 5. Step 7 is, like Step 3, optional and repeatable depending on the instruction. Any external result of an instruction is read from the FPU in this step, least-significant word first. If the result is a 1-byte value, it is presented by the FPU on the least-significant half of the bus (00-07). Note: If in Step 6 the FPU indicates that an error has occurred, it is permissible, though not necessary, to continue the protocol through Step 7. No guarantee is made regarding the validity of the value read, but continuing through Step 7 will not cause any protocol problems. If at any time within the protocol another 10 byte is sent (sT = 11), the FPU will prepare itself internally to execute another instruction, throwing away the instruction that was in progress. This is done to support the Abort with Retry feature of the Series 32000 family. Status Combinations: 11: Write 10 Byte 01: Transfer Operation/Operand 10: Read Status Word Step 1 2 3 4 5 6 7 Status Action 11 CPU sends 10 Byte on least-significant byte of bus. 01 CPU sends Operation Word, bytes swapped on bus. 01 CPU sends required operands, gent first, least-significant word first. xx FPU starts internal execution. xx FPU pulses SPC low. 10 CPU reads Status Word (Error/Comparison Result). 01 CPU reads result (if any), least-significant word first. Because of this feature, however, there is an important consideration when using the FPU in systems that support multitasking: the operating system must not allow a task using the FPU to be interrupted in the middle of an instruction protocol and then transfer control to another task that is also using the FPU. The partially-executed instruction would be thrown away, leaving the first task with a garbage result when it continues. This situation can be avoided easily in software but, depending on the system, some cooperation may be required from the user program. Other solutions involving some additional hardware are also possible. FIGURE 5. FPU Instruction Protocol Steps 1 and 2 transfer the instruction to the FPU. Step 1 transfers the first byte of the instruction (the 10 Byte) and Step 2 transfers the rest of the instruction (the Operation Word). In Step 2, the two bytes of the Operation Word must be swapped on the bus; i.e. the most-significant byte of the Operation Word must be presented on the least-significant byte of the bus. Step 3 is optional and repeatable depending on the instruction. It is used to transfer to the FPU any external operands that are required by the instruction. The operand specified by gen t is sent first, least-significant word first, followed by the operand specified by gen2. If an operand is only one byte in length, it is transferred on the least-significant half of the bus. The FPU initiates Step 4 of the protocol, internal computation, upon receiving the last external operand word or, if there are no external operands, upon receiving the Operation Word of the instruction. During this time, the data bus may be used for any purpose by the rest of the system, as long as the SPC pin is kept pulled up by a resistor and is not actively driven. Step 5 occurs when the FPU completes the instruction. The FPU pulses the SPC pin low to acknowledge that it is ready to continue the protocol. This pulse is called the "Done pulse". The bus is not used during this step, and remains floating. In Step 6, the FPU is polled by reading a Status Word. This word indicates whether an exception has been detected by the FPU. In the Compare instruction (CMPf), it also displays the relationship between the operands and serves as the result. This transfer is mandatory, regardless of whether the information presented by the FPU is intended to be used. See Figure 3-6 of the data sheet. 3.0 Interfacing Guidelines There are some special interfaCing considerations that are required (see Figure 6): 1. The edges of the SPC pulse must have a fixed relationship to the clock signal (ClK) presented to the FPU. When writing information to the FPU, the pulse must start shortly after a rising edge of ClK and end shortly after the next rising edge of ClK. Failing to do so can cause the FPU to fail, often by causing it to freeze and not generate the Done pulse. This synchronous generation of SPC is also important when reading information from the FPU, but the SPC pulse is allowed to be two clocks in width. These requirements will be expressed in future Ns320B1 data sheets as a minimum setup time requirement between each edge of the SPC pulse and the next rising edge of ClK, currently set at 40 nanoseconds on the basis of preliminary characterization. The propagation delay in generating SPC through a Schottky flip-flop (e.g. 74574) and a low-power Schottky buffer (e.g. 74ls125A) is therefore acceptable at 10 MHz. ls technology is recommended for the buffer to minimize undershoot when driving SPC. 2. After the FPU generates the Done pulse, it is necessary to leave the SPC pin high for an additional two cycles of ClK before performing the Read Status Word transfer. 3. After performing the Read Status Word transfer, it is necessary to wait for an additional three cycles of ClK before reading a result from the FPU. B-B 4.0 An Interface to the MC68000 Microprocessor flip-flop within the Done Detector block. When the 68000 performs a Read cycle from the address that generates the POLL select signal, the contents of the flip-flop are placed on data bus bit D15. Since this is the sign bit of a l6-bit value, the 68000 can perform a fast test of the bit using a MOVE.w instruction and a conditional branch (BPL) to wait for the FPU. 4.1 HARDWARE A block diagram of the circuitry required to interface the MC68000 MPU to the NS32081 is shown in Figure 7. First the easy part. Direct connections are possible on the data bus, which is numbered compatibly (DO-D15 on both parts), the status pins STO-STl (connected to address lines A4-A5 from the 68000), and the clock (CLK on both). The system reset signal (RESET to and/or from the MC68000) should be synchronized with the clock before presenting it as RST to the FPU. All that remains to be done is to generate SPC pulses that are within specifications whenever the 68000 accesses the FPU, and to detect the Done pulse from the FPU in a man· ner that will allow the 68000 to poll for it. The approach selected for generating SPC pulses uses an address decoder that recognizes two separate address spaces; one to transfer information to or from the FPU (XFER), and one to poll for the Done pulse (POLL). The schematic for the SPC generator and the Done pulse detector is given in Figures 10a and 10b. The flip-flop labeled SPC generates the edges of the SPC pulse (on the signal SPCT). The timing chain (TA, TB) provides the enable control to the buffer driving SPC to the FPU, as well as the signal to terminate the SPC pulse (either TB or TC, depending on the direction of the data transfer). Note that the timing chain assumes a full·speed memory cycle of four clocks in accessing the FPU, and will fail otherwise. The circuit generating the Data Acknowledge signal to the 68000 (DTACK, not shown) must guarantee this. In any system that must use a longer access, some modification to the timing chain will be necessary. The 68000 signals AS (Address Strobe) and R/W (Read / not Write) are used to generate SPC timing. The flip-flop labeled DONE (Figure 10b) is the Done pulse detector. It is cleared by performing a data transfer into the FPU and is set by a Done pulse on SPC. A buffer, enabled by the POLL select signal, connects its output to data bus bit 15. Figure 8 shows the timing generated when the 68000 is writing to the FPU. The SPC pin is kept floating (held high by a pullup resistor) until bus state S4, at which point it is pulled low. On the next rising edge of CLK, SPC is actively pulled high, and is set floating afterward. It is not simply allowed to float high, as the resulting rise time can be unacceptable at speeds above about 4 MHz. A timing chain, required due to the 10-MHz 68000's treatment of its AS strobe, generates the signals TA, TB and TC, from which the SPC signal's state and enable are controlled. 4.2 SOFTWARE Some notes on programming the FPU in a 68000 environment: 1. The byte addressing convention in the 68000 differs from that of the Series 32000 family. In particular, a byte with an even address is transferred on the most-significant half of the bus by the 68000, but the FPU expects to see it on the least-significant byte. When transferring a single byte to or from the FPU, either do so with an odd address specified, or transfer the byte as the least-significant half of a 16-bit value at an even address. 2. The 68000 transfers 32-bit operands by sending the most-significant 16 bits first. The FPU expects values to be transferred in the opposite order. Make certain that operands are transferred in the correct order (the 68000 SWAP instruction can be helpful for this). Figure 9 shows the SPC timing for reading from the FPU. The basic difference is that SPC remains active for two clocks, so that the FPU holds data on the bus until it is sampled by the 68000. Again, SPC is actively driven high before being released. Note: Although SPC must be driven high before being released, it must not be actively driven for more than two clocks after the trailing edge of SPC. This is because the FPU can respond as quickly as three clocks after that edge with a Done pulse. A simpler scheme in which the SPC pulse is identical for both reading and writing (l-clock wide always, but starting % clock later with CLK into the FPU inverted) was considered, but was rejected because the data hold time presented by the 68000 on a Write cycle would be inadequate at 10 MHz. Any SPC pulse appearing while the XFER Select signal is inactive is interpreted as a Done pulse, which is latched in a A sample program that sequences the FPU through the execution of an ADDF instruction is listed in Figure 11. As this example is intended for clarity rather than efficiency, improvements are possible. The XFER select is assumed to be generated by addresses of the form 06xxxx (hex) and the POLL select is assumed to be generated by addresses of the form 07xxxx. 8-9 10 14\ OPERANDS OPCOOE ' ; (DONE) 1 , ' - - - - - - - - . , - - - . : t:;\ \lI SPC PULSE WIDTH: CRITICAL WHEN WRITING INTO FPU. MUST BE 1 CLOCK WIDE ClK _ SPC ( ~=i W RESULT STATUS '-r' =r AT lEAST 2 CLOCKS HERE ® AT LEAST 3 CLOCKS HERE ® !!!LLONG DELAYS BETWEEN SPC PULSES ( > 10 MIll/SEC.' ./ BUG IN REVISION D. TL/EE/8388-3 FIGURE 6. Interfacing to FPU: Cautions .. , A A MC68000 A'-~3 IJL ADDR. BUS Ai R/iii 10.0-.. + XFER ..A , , PPOll D SPC TIMING GEN. ADDR. STROBE .... STO. ST1 NS32081 FPU SPC REAO/WRITE I ClK RESET ~ ~ DSC t .......... 1 -Q -- ClK J RST LD Do - 0" .... .... SYSTEM RESET Do - 4 "DONE" DETECTOR 0,. .... .... ... ~ :s.7 0" . , ) DATA BUS TUEE/8388-4 FIGURE 7_ 68000-32081 Interface Block Diagram 8-10 ClK ADDR ~-<",, ____ ST_n_AN_D_SE_l_EC_T_VA_Ll_D_ _- - ' } - - - R/W TA I \ I TB I TC SPC DATA --------, -------------<: FIGURE 9. 68000 Read from FPU 8·11 VALID \... \... r}- TLlEE/B3BB-6 ('I) co ('I) z• c( 74L5D4 + + TO AS Q TC 745112 TC XFER ii Q RST CLKin '::" 74500 + o 74574 5PC 5PC (TO FPUj TL/EE/B3BB-7 FIGURE lOa. Schematic: SPC Timing Generator 74LS04 SPC >---d~----r~ 74lS125A XFER >-__________..1 DONE 015 >----+ (BUS) R ii AS roll>-------------------4-----~_' 74LS02 74lS04 RESET _~.......---. 0 S Q 74S74 RST R ii ------------4..-------------. RST 1-+-... L.-~"'" (TO FPU) ClK ~ ________________________________________ ~ClK (TO FPU) FIGURE lOb. Schematic: DONE Detector and RESET Synchronizer 8-12 TL/EE/B3BB-B Register Contents: AO Al A2 A3 = = = = 00070000 00060010 00060020 00060030 Address Address Address Address of DONE flip-flop. for ST=l transfer (Transfer Operand) • for ST=2 transfer (Read Status Word). for ST=3 transfer (Broadcast ID). DO Dl D2 D3 D4 D5 D7 = = = = OOOOOOBE 00000184 3FBOOOOO 3F800000 ID byte for ADDF instruction. Operation Word for ADDF. (Note bytes swapped.) First operand = 1.0. Second operand = 1.0. Receives Status Word from FPU. Receives result from FPU. Scratch register (for DONE bit test). START MOVE.W MOVE.W SWAP MOVE.L SWAP SWAP MOVE.L SWAP DO, Dl, D2 D2, D2 D3 D3, D3 POLL MOVE.W BPL (AO),D7 POLL Check the DONE flip-flop, loop until FPU is finished. (DONE bit is sign bit, tested by the MOVE instruction.) MOVE.W MOVE.L SWAP (A2),D4 (Al),D5 D5 Read Status Word. Read result. Swap halves of result. (A3) (Al) (Al) (Al) Send ID byte. Send Operation Word. Send operands. The swapping is included because the FPU expects the leastsignificant word first. (Can be avoided, with care.) FIGURE 11. Slngle·Preclsion Addition (Demo Routine) 8-13 ~.---------------------------------------------~~~ ~ 10 MHz, No Wait States ~ NS32016 System National Semiconductor Application Note 404 Microprocessor Applications Engineering INTRODUCTION Recent microprocessor applications such as high resolution graphics, multiuser workstations, data communication, industrial automation, etc. have placed growing demands on microprocessor throughputs. Higher throughputs, together with increasing complexity of microprocessor systems, require slave support in addition to high speed, powerful microprocessors. the memory for about 215 nanoseconds following the leading edge of the write strobe. It is assumed that the Address lines are valid at the memory pins at the time the read or write strobe goes active. SRAM INTERFACE: The Series 32000® Microprocessor family serves the needs of high end microprocessor applications. The NS32016 Central Processing Unit (CPU) has a powerful register and instruction set. The NS32082 Memory Management Unit (MMU) and the NS32081 Floating-Point Unit (FPU) function as slave processors for the CPU. All the chips in the family run at 10 MHz. Together, the chips provide the throughput required by high end microprocessor applications. This application note discusses the design considerations for building a 10 MHz NS32016 system with no wait states. Series 32000 Chip Set: The NS32016 system described here, uses the Series 32000 chip set consisting of: 1. The NS32016 Central Processing Unit (CPU) 2. The NS32082 Memory Management Unit (MMU) 3. The NS32081 Floating-Point Unit (FPU) 4. The NS32201 Timing Control Unit (TCU) 5. The NS32202 Interrupt Control Unit (ICU) Details of the five chips are provided in the Series 32000 Data Book. Figure 1 illustrates the interconnections of a simple NS32016 based system capable of running at 10 MHz without wait states. As shown in Figure 1, the CPU, MMU and FPU are interconnected on a multiplexed Address/Data Bus. The TCU provides the clocks and the control signals required by the system. The multiplexed bus is separated into Data and Address buses by using bidirectional Data bus drivers and fall-through Address latches. The ICU, being a peripheral, is interfaced to the demultiplexed Address and Data buses. The ICU Status input (ST1) is driven by a logical combination of ST1 from the CPU and address line A5. This allows the CPU to read both the INTA and RETI vectors from the SVCT register of the ICU. DESIGN CONSIDERATIONS The deSign of a 10 MHz Microprocessor system with no wait states requires system memory to run at comparable speeds. Typically, system memory consists of Read Only Memory (ROM) and Read/Write or Random Access Memory (RAM). A 10 MHz, NS32016-based system functioning without wait states requires careful memory timing consideration. A read cycle without wait states requires data from memory to be valid prior to the falling edge of the PHI2 clock during the T3 state of the CPU. This allows about 155 nanoseconds following the leading edge of the read strobe for data to be stable. In a memory write cycle, the data is available to With high speed, 8K x 8-bit Static RAMs (SRAMs) such as the NMC6264s, which have a 120-nanosecond maximum access time, an interface without wait states is feasible. Besides requiring no wait states, SRAMs do not require the refresh circuitry that Dynamic RAMs (DRAMs) need. Neither do they require the error checking and correcting circuitry that DRAMs need for correcting soft errors. The timing diagrams for SRAM Read and Write cycles with the MMU are illustrated in Figures 4 and 5 respectively. The SRAMs are organized into even and odd banks. The Write Enable (WE) Signals for the SRAMs are generated by logically combining address line AO and HBE with the WR signal from the TCU. Both even and odd SRAM banks are always enabled during Read cycles. EPROM INTERFACE: With current technology, EPROMs up to 64-Kbyte densities are available. In particular, the 27128 type EPROMs are available with 150-nanosecond maximum access times. These EPROMs can be used in the NS32016-based system without wait states. The timing diagram for the EPROM Read cycle, with the MMU is illustrated in Figure 3. The Output Enable (OE) inputs to the EPROMs are connected to the RD signal. This will cause both even and odd bytes of the set of EPROMs to be enabled for a byte or word read from the CPU. This does not affect the data as the CPU will read the appropriate byte(s). A single DMPAL16L8A device is used to generate all the required chip select Signals. I/O INTERFACE: CPU accesses to the serial communications devices require the insertion of at least two wait states. This is accomplished by activating the TCU WAIT2 input during such accesses. Furthermore, the leading edges of the Read and Write strobes are delayed by one clock cycle. This is necessary since the time delays of the Read and Write strobes from Address Valid, required by the communications devices, are larger than the delays provided by the 32000 chip set during normal bus accesses. The system uses two NS16450s. This facilitates its use in stand-alone, stand-aside or transparent configuration. The two NS16450s have their oscillator pins (XTAL 1 and XTAL2) connected to the crystal circuit as illustrated in Figure 1. The two NS16450s are interfaced to standard RS232C communication ports with jumpers. The jumpers allow the configuration of either port as a data-terminal or as a data-set. 8-14 ..-- +5V ~~ 10 k.o. EXT. RE ST3 STO U/S HilO~F~ PFS l - I A23 30~ r°t:-p.o. XIN XOUT +5(t ~ 'f Ul ~ WAIT ... Y r 4-:J- HOLD L ....... ST3 A231-- I::: ~ST1 STO 1= L.....- t:: L.- ~ u/S 1= A161= AD151-- PFS I-- GNDl GNDB NS320S2 MMU I::: 1= 1= NS32201 TCU FClK I PER CWAIT PHil WAITS PHI2 WAIT4 ROY RSTO WAITl TSO I-WAIT2 ODIN iIDl-- ADS VIR NS320S1 FPU ~10k.o. ~_ .--. SPC RST 1= ~ ~ lA4 RST/ABT ADS 2Yl1= lY41= ~]Al ... lG rrrl= A16 2G...., A16 ~ A15 ~ SO ~ I-DO I-- ~ ClK ~ HOLD llIi1N ,--t r-i r--t PHil PHI2 ROY RRSTI ~ A24 oo~ __ ~ 4 lSO 74AlS32 AD15 HlDAO ..... ".... " ~+5V EXT NM ..... ~_+5V 74LSOO I~ - J +5V )JlSDS ~ru~ I ° ~~h F ClK Cl ClK Cl ClK Cl ~ ~ .!p ~ ~ ~ ~ ~ AD AS BSI-~[ 0-15 1= 1= AD7 ~ ADO 1= 1= !QI= OCh ~ ~1 ~ ~ ~ A7 G ADS l..JvvIr..+ + 5V s0l= ~ ~ AS OCh AD7 ~ SO ~ A15 1= 1= ~ !P ~ !Q~ .... INT ~ G 115 PAY S0l= ~ ~ ADS ~M AT/sPC 2Al ~ I- ,.-.AO -23 2Y41= A23 A23 ~ 2M ~ STO 1= ADD I - FlT ~FlT 1-+ ~ I-- I::: ~ I-1= I-1= I-- 0151- 1= _AOll. I - PHil RSTI ABT PHI2 ADS ROY HlDA Ar/SPC HOLD ODIN IlO INT NMI HBE I-- +5V 1= 1= 1= RWEN/SYNC cm I - DBE I-- r1 ~ t:: ST A16 1= AD15 1= BBG 1000P~ i'fl ~F :--+ RSTI ~ NS32016 CPU +5V 20 MHz Fi IBll= DB G DlRI-~ AS BS I - 07 t::: GAl 1= 1= IBl 1= DO DlR I - - em HBE RST Ro ViR 6TSO TUEE/B506-7 FIGURE 1. Circuit Diagram for the 10 MHz No Walt States NS32016 Based System POP-NY II AN-404 AlSO iii[ iii ~ iiSi Sfl '" cm.>--/cu:- :r uu At--.,AO AIL--fAO A1L--fAO AI~AO TL/EE/8506-8 FIGURE 1. Circuit Diagram for the 10 MHz No Wait States NS32016 Based System (Continued) One port can be used to communicate with a host computer. The other can be used to interface the system to a terminal. If MON16 software is used, it is possible to communicate from the terminal to a host computer such as a National Semiconductor SYSI32™ or a VAXTM. Files stored in the host can be down-loaded into the NS32016-based system memory and executed at 10 MHz without wait states. The Non-Maskable Interrupt signal (NMI) is used to return from "runaway" programs to the monitor without destroying the contents of the Program Counter and Processor Status Register. The circuit shown in Figure 1 provides an NMI pulse signal to the CPU. PAL16LBA Part # Chip Select Generation National Semiconductor A23 A22 A2l A20 A19 AlB A17 A16 A15 GND A14 SICU CSRl CSR2 CSR3 CSR4 CSIO AB CSE VCC ICSE = IA23 • IA22 • IA2l • IA20 • IA19 • IA1B • IA17 • IA16 • IA15 ICSRl = IA23 • IA22 • IA2l • IA20 • IA19 • IA1B • IA17 • IA16 • A15 ICSR2 = IA23 • IA22 • IA2l • IA20 • IA19 • IA18 • IA17 • IA16 • A15 ICSR3 = IA23 • IA22 • IA2l • IA20 • IA19 • IA18 • IA17 • A16 • IA15 ICSR4 = IA23 • IA22 • IA2l • IA20 • IA19 • IA18 • IA17 • A16 • IA15 ICSIO = A23 • A22 • A2l • A20 • A19 • AlB • A17 • A16 • A15 • IA14 ISICU = A23 • A22 • A2l • A20 • A19 • A18 • A17 • A16 • A15 • A14 • • • • • IA14 A14 IA14 A14 IA8 FIGURE 2. PAL Equations in PALASMTM Format CONFIGURATION SWITCHES: RS232C JUMPER CONNECTIONS: Dip switches have been used in the circuit for system configuration as illustrated in Figure 1. The CPU reads them at power-on or system reset to set the baud rate of the 1/0 ports and the CPU configuration register. Switches S1, S2, S3 and S4 set the baud rate. Table I lists the various baud rates possible with MON16 software. Switch S5 indicates the presence of an FPU in the system and S6 indicates the presence of an MMU in the system [fable II). TABLE I If a particular port in the system is to be connected to a terminal, the associated jumpers need to be configured for a Data Set. With reference to Figure 1, the jumper connections for a Data Set configuration are as follows: S4 S3 S2 S1 Baud Rate ON ON ON ON ON ON ON ON OFF OFF OFF OFF OFF OFF OFF OFF ON ON ON ON OFF OFF OFF OFF ON ON ON ON OFF OFF OFF OFF ON ON OFF OFF ON ON OFF OFF ON ON OFF OFF ON ON OFF OFF ON OFF ON OFF ON OFF ON OFF ON OFF ON OFF ON OFF ON OFF 19200 9600 7200 4800 3600 2400 2000 1800 1200 600 300 150 134 110 75 50 a-c, b-d, e-g, f-h, i-j, k-1. If the port is to be connected to a host computer, the associated jumpers need to be configured for a Data Terminal. The jumper connections for a Data Terminal configuration are as follows: a-b, c-d, e-f, g-h, i-j, k-1. Note: a-b S5 Slave Processors ON ON OFF OFF ON OFF ON OFF MMU and FPU MMU FPU neither connect node 'a' to node ·b·. MEMORY MAP The memory map of the system described in this note is slightly different from the memory map of the 0832016 CPU board. This has been done to simplify the chip-select generation logic. This requires minor changes to some 'equate' statements in the MON16 modules in addition to the I/O drivers changes to support the NS16450s instead of the 8251s. Figure 2 shows the PAL equations. The memory map is shown in Table III. TABLE III TABLE II S6 ~> 8-17 Devices Memory Locations EPROMs SRAMs Serial Port 1 Serial Port 2 ICU-Registers CNFG Switches $000000-$007FFF $00BOOO-$017FFF $FFBOOO-$FFBOOF $FFB01 0-$FF801 F $FFFEOO-$FFFE3F $FF8003 ...,. o z ZI .j:o. C ( DUMMY READ CHAR PROCEDURE ) R D C H R RDCHR: • PROC ; PROCEDURE RDCHR (WAIT,TRM) RD_CHR: .BLKB ; PROCEDURE VALUE RD_WAIT :.BLKB ; WAIT/NOWAIT FLAG RD_TRM: •BLKB TERMINAL NUMBER •RETURNS .BLKW RETURN CHR,CHR-JRDY FLAG .VAR [Rl,R2] .BEGIN addr usrtl,rl Rl: ADDRESS OF TRMINAL A CMPQB TRMA,RD_TRM IF TRMINJ\LNUM < > 0 THEN BEQ RDCHRLP:B addr usrt2,rl Rl: ADDRESS OF TRMINAL B RDCHRLP: DO WHILE IN~DY=O AND RD_WAIT=TRUE tbitb iDL-rdy,usrtoff(rl) INPUT IN~DY BFS RDCHR3:B FOR DEBUG ONLY··· RDCHR3:B BR CMPQB TRUE, RD_WAIT BEQ RDCHRLP END; BR RDCHREX:B RDCHR3: MOVB O(Rl),RD_CHR ; RDCHR;=USART DATA ; RD_WAIT :=TRUE MOVQB TRUE,RD_WAIT RDCHREX: .ENDPROC P R C H R FUNCTION - ( PRINT CHARACTER ) SEND ONE CHARACTER TO TERMINAL CALLING SEQUENCE PRCHR(ENDF,WAIT,CHR,TRM) ENDF/WAIT BOOLEANO CHR TRM PRCHR: •PROC WAIT_PR:.BLKB CHR PR: • BLKB IN/OUT ON INPUT FLAGE WAIT TO END OF OPERATION OR REURN ON OUTPUT INDICATES END OF OPERATION CHARACTER INPUT CHARACTER TO BE PRINTED INTEGER INPUT TERMINAL NUMBER ; WAIT : BOOLEAN ; ASCII CHR 8·23 .j:o. TRLCHR:.BLKB TERMINAL NUMBER •RETURNS .BLKB OUTPUT WAIT WAIT:BOOLEAN .VAR [Rl,R2] .BEGIN addr usrtl,rl ;Rl: ADDRESS OF TERMINAL A CMPQ.B TRMA, TRLCHR ;IF TERMINALJUM<>O THEN BEQ. PRCHRLP:B addr usrt2, rl Rl: ADDRESS OF TERMINAL B PRCHRLP: tb1tb out __rdY,usrtoff (rl) ;IF TX-RDY = 0 BFS PRCHR3:B ;THEN BR PRCHR3:B ;···DEBUG ONLY"· CMPQ.B FALSE, WAIT__PR IF WAIT THEN REPEAT BNE PRCHRLP BR PRCHREX:B ; ELSE WAIT:=FALSE PRCHR3: MOVB CHR-PR,O (Rl) MOVQ.B TRUE, WAIT__PR ;ELSE WRITE (DATA-PORT, CHR) CONCLUSION This application note describes a method of designing a 10MHz, no-wait-state NS32016-based system with off-theshelf memory and I/O chips. The system has a powerful instruction set, suitable for high level language compilers. With available cross-support software (NSX16™) and firmware (MON16), the NS32016 system can be used to com- municate with a host computer such as a SYS/32. Programs can be written in high level languages such as C on the SYS/32. These programs can then be compiled and assembled to be down-loaded into the NS32016-based system memory to be executed. 8-24 l> z National Semiconductor Application Note 405 Microprocessor Applications Engineering Using Dynamic RAM With Series 32000® CPUs Recent advances in semiconductor technology have led to high-density, high-speed, low-cost dynamic random access memories (DRAMs), making large high-performance memory systems practical. DRAMs have complex timing and refresh requirements that can be met in different ways, depending on the size, speed, and processor interface requirements of the memory being designed. For low or intermediate performance, off-the-shelf components like the DP8419 can be used with a small amount of random logic. For higher performance, specialized high-speed circuitry must be designed This application note presents the results of a timing analysis, and describes a DRAM interface for the NS32016 optimized for speed, simplicity and cost. RAM Access Time in nsec 250 200 150 120 100 RAM Access Time in nsec 250 200 150 120 100 TIMING ANALYSIS RESULTS Figure 1 is related to a DRAM interface using the DP8419 DRAM controller. Descriptions of the circuitry for use with the DP8419 and related timing diagrams are omitted. See the "DP8400 Memory Interface Family Applications" book for details. INTERFACE DESCRIPTION The DRAM interface presented here has been optimized for overall access time, while requiring moderate speed DRAMs, given the CPU clock frequency. This may be significant when a relatively large DRAM array must be designed since a substantial saving can be achieved. The result of these considerations has been the design of a high-speed DRAM interface capable of working with a CPU clock frequency of up to 15-MHz and 100-nsec DRAM chips, without wait states. The only assumption has been that the DRAM array is directly accessible through the CPU local bus. 0 0 0 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 2 1 0 0 2 1 0 12 13 CPU Clock Frequency in MHz FIGURE 1. Memory Speed vs. CPU Wait States When Using the DP8419 DRAM Controller Figures 1 and 2 show the number of CPU wait states required during a DRAM access cycle, for different CPU clock frequencies and DRAM access times. The special-purpose interface requires fewer wait states than the DP8419-based interface, especially at high frequencies. These results assume a minimum amount of buffering between DRAM and CPU. The results do not apply when CPU and DRAM reside on different circuit boards communicating through the system bus, since extra wait states may be required to provide for synchronization operations and extra levels of buffering. U1 CPU Wait States Required 6 7 8 9 10 11 A future application note will discuss such features as error detection and correction, scrubbing, page mode and! or nibble mode support, in conjunction with future CPUs, such as the NS32332. Figure 2 shows the same data for a DRAM interface using standard TTL components, specially designed for the NS32016. • ~ o CPU Wait States Required 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 67891011 12131415 CPU Clock Frequency in MHz FIGURE 2. Memory Speed vs. CPU Wait States When Using Random Logic This configuration presents some speed advantages; for example, the amount of buffering interposed between CPU and DRAM array is minimal. This translates into shorter propagation delays for address, data and other relevant signals. Another advantage is that the interface can work in complete synchronization with the CPU. This significantly improves performance since no time is spent for synchronization. Reliability also improves since the possibility of metastable states in synchronizing flip-flops is eliminated. A block diagram of the DRAM interface is shown in Figure 3. Figures 4 through 7 show circuit diagrams and timing diagrams. Interface operation details follow. RAS AND CAS GENERATION This is the most critical part of the entire interface circuit. To avoid wait states during a CPU read cycle, the DRAM must provide the data before the falling edge of clock phase PH12 during state T3. This requires that the RAS signal be generated early in the CPU bus cycle to meet the DRAM access time. On the other hand, the RAS signal can be asserted only after the row address is valid and the RAS precharge time from a previous CPU access or refresh cycle has elapsed. 8-25 ~ o 'Ot' Z• cC r------------------------------------------------------------------------------------------, The interface circuit shown in Figures 4 and 5 relies on two advanced clock signals obtained from CTTL through a delay line and some standard TTL gates. The advanced clock signals, CTTLA and CTTLB, are used to clock the circuit that arbitrates between CPU access requests and refresh requests. The CTTLB signal is also used to enable an advanced RAS generation circuit, which causes the RAS signal to be asserted earlier than the CPU access-grant signal from the arbitration circuit. This speeds up the RAS signal by about 10 ns by avoiding the time required by the arbitration circuit to change state. mer is implemented by cascading two 4-bit counters. Both counters are clocked by the CTTLB signal; the first is a presettable binary counter that divides the clock signal by a specified value; the second can be either a BCD or a binary counter depending on the CPU clock frequency. With this arrangement, a refresh request is generated after a fixed time interval from the previous request, regardless of the CPU activity. A more sophisticated circuit that generates requests when the CPU is idle could also be implemented. However, such a circuit has not been considered here because the performance degradation due to the refresh is relatively small (less than 3.3 percent), and the improvement attainable by using a more sophisticated circuit would not justify the extra hardware required. A different delay line is used to generate the CAS signal and to switch the multiplexers for the column addresses. Note that the CAS signal during write cycles is delayed until the beginning of CPU state T3, to guarantee that the data being written to the DRAM is valid at the time CAS is asserted. The CAS signal is deasserted after the trailing edge of RAS to guarantee the minimum pulse width requirement. The timing diagrams in Figures 6 and 7 show the signal sequences for both read and write cycles. CONCLUSIONS The DRAM interface described in this application uses two TTL-buffered delay lines to obtain speed advantages. One delay line is used to time the CAS signal and to enable the column address. The other is used to generate the advanced clock signals from CTTL. Below 10 MHz, the advanced clocks might not be required, and the related delay line can be eliminated. When this is done, however, higher speed DRAMs must be used. If, on the other hand, advanced clocks must be used for frequencies lower than 10 MHz, a delay line with a larger delay (e.g. DDU-7J-100) might be needed. Delay lines are extremely versatile for this kind of application due to their accuracy and the fact that different delays are easily available to accommodate different DRAM types. The savings attainable by using slower DRAM chips, in addition to the reliability improvement and cleaner design, make delay lines a valid alternative, even though their cost is relatively high in comparison to standard TTL gates. ADDRESS MULTIPLEXING The multiplexing of the various addresses for the DRAM chips is accomplished via four 74AS153 multiplexer chips in addition to some standard TTL gates used to multiplex the top two address bits needed for 256k DRAMs. The resulting nine address lines are then buffered and sent to the DRAMs through series damping resistors. The function of these resistors is to minimize ringing. REFRESH The refresh circuitry includes an address counter, a timer and a number of flip-flops used to generate the refresh cycle and to latch the refresh request until the end of the refresh cycle. The address counter is an 8-bit counter implemented by cascading the two 4-bit counters of a 74LS393 chip. This counter provides up to 256 refresh addresses and is incremented at the end of each refresh cycle. The refresh timer is responsible for generating the refresh request signal whenever a refresh cycle is needed. This ti- 8-26 NS32000 CPU GROUP ..--- - '""" r REFRESH SEQUENCE LOGIC I- REFRESH ADDRESS COUNTER flACCESS REQUEST LDGIC ADS/PAY" TSO RST" r I CTIL" I ~S I- I-{>L.....- 1 ARBITER ~ ADVRAS ADVANCED RAS LOGIC f- DELAY LINE !~!~!Iml I~ I~ 13 I~ I~ 13 t t t t L-....t t ~ CAS BUFFERS I ?\ { CTILB CTILA 00 RAM BANK ODD RAS BUFFERS NRAS 01 RAM BANK EVEN j 1 RFRAS L CLOCK ADVANCE LOGIC RAM ADDRESS RFGNT ~ ~ --0 t RFREQ r---i' h DO 01 ~- ~L. REFRESH TIMER COLSEL i.~ CAS GEN. LOGIC , ODIN , , AD HBE TUEE/B517-1 FIGURE 3. DRAM Interface Block Diagram S017-NV II AN-405 RASO ~- - II :ASO I I I II II II II 111111111111111111111111111111111111111111111111 .lL 1::11::113 1::11::113 1::11::113 1::11::113 ::::= Ai cc u a: u IASI _ ~ASl CC c.,) c.,) ,-- ::= ,-- WE ~:~"g ~ ~~I RDAT15'-_ "g"g "g l I l I I I l I l ~ l ~I ~ l ~ l I I I l I l I l I ~l ~I _>__ __''___~ _ __'~_~ _ _.l.._ _' ' __ _>__ __''___~ _ __''___........_ ___''_ __''__ OAT _.l.., (1:23) AIS C-CD '" CD :::u 74AS32 74ASOO 1)2!~ WI L ~~ A17~·~ ~ r:::t:=I .. M 2Y IC3 ~ A 2CO ~ B - ~2GlG ~_ 2C3 FGNT ~ lCl 2Cl M lY M2Y L~ lC3 ~ A _ 2CO~ B - ~20A lA ~lOO 2A", lOA 1 b -2C3 'i"Ai'1Y1 f AS lA4 ~ 1Y4 2Al :;: 2Yl .All L ___ ...J G 2. ~ lG 'S 1 1Y 2Y A23 74AS27 A22 "------l A21= RA MINH A20 A19"-J ............ 2CO ROO 2C3 ROI ,,5 :;~ 1 ~ ~LL,/C'-'aW/2?"tRO;;i2 AD (0:15) M ~ B 2G lG ~ ~ lCO r---- ~ :::;; ~ ~ 'i'Yi"""iAi ~ I--t-- ~ 'i'1"""A1 .!!ill.. ,-,-- ~ 2Yl ~ 2All-----' ::1 I-----' 2Y4"'2A4. 2g - - 1G """-- R r- -" , - - - -....... ~ f---' f---' t;;:;;; _ BS ~ AS """"" DIR r-+-1G _ G _"--- ::Jl![ r-- ____ ~ ~ =:: --- BB "' AS u:: ~ ::1 I--- I:JM: r-- OIR r-- G --- - >0-------+--------' lY lC3~2:_ t::ft 2CO ~ ~ 2C3 - I--- 2Yl ~2Al ~ t:;:;: ::1 ;;:;;:;; ~ 2Y4"'2A4 """'" I r- 2G i--- 1t:=t~::;;;:flC3 ;;; A r-- ~ 'iii'"""""Ai ~ F =::::= I--- lY4~ ~ :::= lY4~1A4~ F rI--- r:co::::::::Bt . ROAT ~ 'i"Yi1A1' ....!L lA4 ;--::; -;:::::: 2A4 ~ 2Y4 ~2G~ - I r---, 220 V UfFr2 - D---I-.....--------I+-+-..:-===-....:...~ ~ ~~ f ~ IL~· ~~:::l~ <>---------4------------~ ~ fib ~ ~ U=~.~~:[)c----..J .. I Bii DIN RA MSEl RO (0:2) ODIN W ____ _ TLlEE/8517-2 FIGURE 4. DRAM Interface Circuit Diagram (a) +5 r-'VIIIr-+ + 5 ~--------------------.'~·~~+5 CTTL CTTLB CTTLA +5~ RFGNT D 74AS175 40 40 (B) .... 4il COLSEL RO (0:2) <> 74AS175 CD ~A~REO I 110 10 ~~(A) '""" ACGNT 220 ADVRAS RASI ~ 220 RASO 2211 CAS1 ~ ADS/PAV IIII"---C> D-- 2211 CASD ~ RST 2211 WE TSO RAMSEL D- I BODIN ~ d CWAIT I W7 00 12 HiE WAIT1 ~+5 AD TL/EE/8S17-3 FIGURE 5. DRAM Interface Circuit Diagram (b) SO~-N" it) 0 'OS' I Z T1 CTTL Interfacing Memory to the NS32532 National Semiconductor Application Note 513 Tony Radi The overall throughput of microprocessor systems often depends on the performance of the memory subsystem. To achieve optimum throughput with a high-performance microprocessor such as the NS32532, memory should operate with few or no wait states. The processor's clock frequency and the speed of memory components determine the number of wait states. This Application Note discusses design considerations for interfacing DRAM and SRAM to the NS32532. It covers four topics: word, and two contiguous words are a double-word. A word or double-word can start at any address, since there are no memory alignment requirements with the Series 32000® processors. Although addressable as bytes, memory is organized as double-words, where the address of a doubleword is the address of its least significant byte. While the NS32532 has no address alignment requirements, alignment affects the time to access a word or double-word. The processor more quickly accesses a doubleword whose address is a multiple of four than one whose address is otherwise; it takes two memory cycles to fetch non-double-word aligned data. The NS32532 supports the memory mapping of peripheral devices and coprocessors. Such devices can be located anywhere in the address space except for the upper 8 MB (addresses FF80000016 through FFFFFFFFI6), which are reserved. The following section describes the bus signals required for memory or 1/0 interfacing. • An overview of NS32532 memory interface requirements • A simple SRAM interface • An interleaved SRAM interface • A simple DRAM interface BACKGROUND The NS32532 microprocessor communicates with its environment via parallel busses and signals. These include a 32-bit data bus, a 32-bit address bus, a number of control signals, and five bus status pins. The processor has instruction and data caches as well as an on-chip Memory Management Unit (MMU) to reduce bus utilization, thereby increasing throughput. The MMU uses page tables in external memory to perform logical-to-physical address translation. In order to minimize page table accesses, the NS32532 maintains a Translation Look-aside Buffer (TLB) containing information about frequently-used addresses. When the TLB does not contain needed information, the NS32532 fetches it from the external page tables. The on-chip caches duplicate a subset of external memory. The contents of an on-chip cache are acquired in one clock cycle, while it takes a minimum of two clocks to fetch data from external memory. Therefore, on-chip caches substantially reduce average memory access time when they contain the code and data the processor needs. On each memory access, the processor initiates a memory access cycle while searching the internal cache. This reduces access time, since the memory cycle is already in process when the cache does not contain the needed information. During a read that fails to find the data in the cache (a cache miss), the memory cycle continues and the processor fetches the data from external memory. Unless declared non-cacheable, the information is placed in the internal instruction or data cache for future reference. Conversely, when the instruction or data cache contains the sought information (a cache hit), the processor cancels the memory access cycle. A memory write is always treated as a cache miss, so that external memory is updated; this is a "write through" cache policy. When an internal cache contains a copy of the memory location being updated, the processor also updates the cache using a "write allocate" cache policy, thus ensuring that both copies of the data are the same. MEMORY ORGANIZATION The 32-bit address bus of the NS32532 provides up to 4 Gbytes of memory in a uniform linear address space starting at zero and ending at 232 -1. Each memory location contains an eight-bit byte. Two contiguous bytes form a 8-41 BUS INTERFACE The NS32532 performs six types of bus operations: 1. Instruction fetch 2. Memory or I/O read 3. Memory or I/O write 4. Read or update page table entries 5. Acknowledge interrupt or completion of interrupt service routine 6. Transfer information to/from Slave Processor Cases 1 through 5 have identical bus timing characteristics and are discussed below. The only external difference among these cases is a six-bit code placed on the bus status pins (STo-ST5) during bus cycles for the purpose of identifying which operation is occurring. Case 6 has separate control signals; Slave Processor operation is not relevant to this Application Note and is not discussed here. The NS32532 can "burst read" up to four consecutive double-words from memory. This feature reduces the amount of time the processor spends on the memory bus while increasing the hit rate of internal caches. Details of burst operation appear later in this document. The I/O signals of the NS32532 support interfacing to memory, memory-mapped devices, slave processors, and external caches. The following control signals implement RAM interfacing on any system without the external cache: • 00-031: Bidirectional data bus. Either 8,16, or 32 bits of data are transferred at a time. Do is the least Significant bit. • Ao-A31: Address bus. Ao is the least Significant bit. • ADS: Address strobe. Indicates that a bus cycle has begun and a valid address is on the bus. This signal is the earliest indication of a bus cycle in progress. The bus cycle may potentially be cancelled in event of an internal cache hit. • BEo-BE3: Byte enable. These signals indicate which bytes should be selected for transfer. During write cycles, BEo-BE3 enable the memory banks for writing. During reads, they select the appropriate banks of an I/O device z .... UI Co) .... ~ ~ z - -- _. ~ ODIN [ AOS[ I\. V I\.V BMT [ I~ CONF [ ROY [ DO-3{ II \. ~ I)- X --< I\.V I\..V ~ i0 BMT [ If \. II CONF[ -- DATA OUT i/ ADS [ I~ t- V I f0- BEO-3, STO-4,U/S ~ I\, I\. V ~~ V I~ t- V \. 1/ [~ ,/1 (I/. 'I/, r//. r//, fA [I, rll, Vf, VI, 'I. '/ Vf, VI. 'f, '1/ X... I-- XuiS [: +X r-- X - iiEii-3,STO-4, Z ,//, ODIN [ ZrLL. (fL (fL 'II, rl/, fA /J 'II VII BOUT [ x AO-3{ V \. I-- /J ~ 7Ji i/ [ [t- V/, rll. r/l, VI. VI. VI, VI. 'I, VI/ X [:1)(i-- X I-- TLlEE/9452-1 TLlEE/9452-2 FIGURE 1. Basic Read Cycle FIGURE 2. Basic Write Cycle 8-42 .-----------------------------------------------------~~ A full-speed bus access occurs during two cycles of BClK, T1 and T2. The processor asserts ADS during the first half of T1 to indicate the start of a bus cycle for both reads and writes. From the beginning of T1 until completion of the bus cycle, the processor drives the address bus and other relevant control signals as the timing diagrams indicate. The processor asserts CONF in the middle of T1 if the bus cycle is not cancelled and T2 will be entered with the next clock cycle. BMT may be asserted at the start of the cycle and then deasserted before the time it is guaranteed valid. This is caused by an internal cache hit, which cancels the initiated bus cycle. A confirmed bus cycle completes at the end of T2 unless ROY is high, in which case the processor inserts additional T2 (wait) states. T2B BCLK [ BMT [ [ I~ T2B T2B I Tl OR Tl I -k!P- p-K!f-- (l~ 1/1 IL, ADS [ ~ h f'" \. / I\. V I\..V I~ Co) X IX l"r-- De r-- .x X ODIN [ U1 The second part of the burst consists of up to three nibbles in state T2B. In each of these nibbles, the processor reads a 32-bit data item. After each data read, address bits Ao-Al go to zero and A2-AS increment, and all byte enable out- Following state T2 is either state T1 of the next bus cycle or an idle T-state if the processor has no bus cycle to perform. 00-31 [ Ij ....• A burst cycle consists of two parts. The first is a regular (opening) cycle, in which the processor outputs its status and asserts the relevant control signals. The processor asserts BOUT to indicate that it wants to perform burst cycles. If the selected memory supports burst mode, it notifies the processor via BIN low. If the memory does not allow burst (BIN high) and the cycle extension has not been requested via ROY, the memory cycle terminates at the end of T2 and the processor deasserts BOUT. If the memory supports burst and the processor has not deasserted BOUT, the second part of the burst cycle occurs and BOUT remains active until termination of the operation. For write bus cycles, valid data is output from the middle of T1 until the end of the cycle (T2). Due to write-through implementation of the internal caches, write cycles are not cancelled. When one write cycle immediately follows another, the processor continues driving the bus with data from the previous operation until the middle of state T1 of the second bus cycle. AO-3{ z BURST CYCLES The NS32532 is capable of performing burst transfers, which increase bus efficiency and tend to raise the internal cache hit rate. Burst is only available in instruction fetch and data read cycles from 32-bit memories. Figure 3 is the burst cycle timing diagram, which assumes no wait states. -I I~ f-- V l/ \.. l/ \. - [~ ~ tl'h VII rt1L rt1L ~ h ~ Ii ~ -"- ~ /, VII III [ IX I\, / [~ ~ VII Vh VR ~ Li ~ Jj V\ LL VfL VLf, ~/h '(fh VI. [ STO-4,U/S [ I\, 1/ IX IX TL/EE/9452-3 FIGURE 3. Burst Read Cycle 8-43 • .,... r------------------------------------------------------------------------------------------, ~ II') z c:( puts BEo-BE3 are activated. If the RDY pin is high at the end of each T2B, the processor inserts additional T2B states to allow slow memories to work with the burst cycle. where the processor address bus lacks the necessary drive capability. High speed 8-bit transceivers, 74PCT245, provide isolation and additional drive capability for the data bus. The following sections discuss three simple designs. The first two work at up to 30 MHz, and the third at 30 MHz. The first design is a simple SRAM interface that requires no wait states on regular memory cycles. However, it requires one wait state in each nibble access at speeds higher than 20 MHz. The second design shows an interleaved memory implementation on burst access cycles, eliminating the single wait state of the first design and thus operating with memory at full speed. The third design shows a simple DRAM interface to the NS32532. This design inserts three wait states in a regular memory cycle, but only one wait state in each nibble transfer at 30 MHz. SIMPLE SRAM MEMORY INTERFACE TO THE NS32532 This section presents the results of a timing analysis and describes an SRAM interface for the NS32532 optimized for simplicity and cost. The interface does not utilize the processor's Bus Error and Bus Retry features. This design allows all memory writes and the opening cycle of memory reads to proceed without wait states at any frequency up to 30 MHz. It also supports the NS32532's burst mode without wait states at up to 20 MHz. For burst transfers at 25 MHz and 30 MHz, one wait state is inserted in each nibble via jumper WI. Figure 4 shows the timing diagram of the interface. All three designs use PAL ® devices for address decoding. Standard driver, 74AS1034, are used to increase drive T1 T2 Tl T2 T2B T2B T2B BCLK A D OUT BMT CONF DDIN BREQ TLlEE/9452-4 FIGURE 4_ Timing Diagram of the Simple SRAM Interface 8-44 The basis of the design is a state machine implemented by PAL 16R4D (see Appendix A for state diagram PAL equations and schematics). This PAL keeps track of the processor state and drives the RDY signal high if a wait state needs to be inserted in the nibble transfer. The processor increments A2-A3 during burst access cycles. Another PAL (16L8D) generates the write strobe for memory banks. The memory write strobe is generated by BMT during write cycles (DDIN high) and terminated by the rising edge of BCLK during T2. The memory write strobe is qualified with BEo-BE3 before being routed to the memory banks. ~ second PAl16L8D provides address decoding, generating the MEMRD signal when the memory is addressed in a read cycle with burst allowed. operation. This wait state causes only a 3% performance degradation on average. INTERLEAVED SRAM MEMORY INTERFACE TO THE NS32532 This section presents the results of a timing analysis and describes an NS32532 SRAM interface optimized for speed and Simplicity. The interface does not utilize the processor's Bus Error and Bus Retry features. Memory banks are accessed concurrently and the data is read in an interleaved fashion during burst transfers, thus eliminating the need for wait states during nibble cycles. This design provides for operation of the NS32532 at up to 30 MHz without wait states during regular and burst memory accesses. The latched A2 bit of the processor enables memory banks for read or write. Reads from memory banks are interleaved during burst access cycles. This way the address setup for one bank overlaps with the data read from another. Figure 5 shows the interface's timing diagram. This SRAM interface uses 25 ns static RAMs, Fast or Advanced Schottky TTL gates, and D type PALs to achieve no wait state operation during regular memory cycles. During burst m~mory transfers at processor speeds over 20 MHz, one walt state is required in each nibble cycle for correct T1 CSN T2 Tl T2 T2B T2B T2B ~~____________________________~;- TL/EE/9452-5 FIGURE 5. Timing Diagram of the Interleaved SRAM Interface 8-45 .... ~.-------------------------------------------------------------------~ II) z• cc Four PALs implement the design: two for the processor state machine and specific memory control signals, one for generating write strobes, and one for address decoding (see Appendix B for state diagram PAL equations and schematics). PAL16R4D implements the state machine. It uses the latched A2-Aa bits to control the selection of memory banks during a burst access, alternating the assertion of RDL and RDU in successive cycles. The Aa value is set up in a given cycle, for a bank that will be enabled in the subsequent cycle via RDL or RDU inputs. Aa should fall through the D flip-flops in order to meet the address setup time for the SRAM in the opening cycle. To do this,a pulse is generated by qualifying a skewed clock (DCLK) with ADS. This pulse clocks Aa in the D flip-flops. For proper operation at different processor frequencies, the jumpers should be installed as follows: ing edge of BCLK during T2. The memory strobe is qualified with BEo-BEa before being routed to the memory banks. The third PAL (16L8D) is the address decoder. It generates MEMRD when the memory is addressed in read cycles and burst is allowed. 74AS1034 is used as the buffer driver where the processor output pins lack the necessary drive capability. This SRAM interface uses 25 ns static RAMs, Fast or Advanced Schottky TTL gates, and type D PALs to achieve no wait state operation during regular memory cycles. During burst transfers, the interleaving of memory banks allows no wait state operation of the processor up to 30 MHz. SIMPLE DRAM INTERFACE TO THE NS32532 This section presents the results of a timing analysis and describes a DRAM interface to the NS32532 optimized for speed and simplicity. The interface, which operates at 30 MHz and does not utilize the Bus Error and Bus Retry features of the processor, uses 80 ns DRAMs to minimize the number of wait states. All RAS signals are activated during a normal DRAM access and refresh cycle. During write cycles, only the CAS signals corresponding to the enabled bytes are active, while all CAS signals are active during reads. Figure 6 shows the interface timing diagram. • 1-2 for 30 MHz • 3-4 for 25 MHz • 5-6 for 20 MHz After the opening cycle, the Set and Clear inputs of the D flip-flops change the As value under control of the state machine PAL. PAL16L8D generates the memory write strobe from BMT during write cycles (DDIN high) and terminates it on the ris- A<2-11> t.tA REfRESH ADDRESS MD WE ~ - - - - _...../ ,'------- ",-. TLlEE/9452-6 FIGURE 6. Timing Diagram of the Simple DRAM Interface 8-46 eight /Ls. Clocked by BCLK, it must be modified if this interface operates at speeds other than 30 MHz. To make the PAL accommodate different speeds, a load term can be used in the PAL equations, with PAL inputs jumpered to ground or Vee. PAL16L8D generates the CAS strobes for the memory banks. In read cycles, all CAS strobes are asserted on the assumption that memory is cacheable, whereas in write cycles, the CAS strobes are qualified with BEo-BE3 before being routed to the memory banks. The memory write strobe is derived from DDIN. The data transceivers establish their direction from DDIN and are enabled by CONF. The data transceivers are recommended, but not necessary to have this interface operating. The design uses five PALs: two for generating refresh address and refresh request, one for the state machine, one for generating CAS strobes, and one for address decoding (see Appendix C for state diagram PAL equations and schematics). PAL16R8D implements the state machine. It keeps track of the processor state and drives the RDY signals high when wait states are inserted into bus cycles. This design uses static column DRAM, although it could use nibble mode DRAM with a simple modification to the state machine. Static column DRAM simplifies the design since the processor drives and increments A2-A3 during burst access cycles without the need to toggle CAS. With nibble mode DRAM, the CAS lines must be toggled during nibble cycles. Two PAL20X10s generate the refresh address and refresh request. One PAL is the refresh address counter, which increments at the end of each refresh period. Its outputs drive the address lines of the DRAMs (row address) during the refresh period. The other PAL is the refresh interval counter, generating a refresh request (RFRQ) approximately every This DRAM interface uses 80 ns column DRAMs, Fast or Advanced Schottky TIL gates, and type D PALs. It achieves regular memory transfers in five cycles and burst nibbles in two cycles. It is possible to operate the NS32532 with fewer wait states by employing RAS prediction. A future Application Note will discuss features such as RAS prediction and error detection and correction. 8-47 .,... r---------------------------------------------------------------------------------, Appendix A z• ~ II) c( State Diagram of the Simple SRAM Interface AS TL/EE/9452-7 Note 1: This condition is a subset of I AS'BREO condition. PAl16R4D STATE MACHINE PAL STATE MACHINE PAL, WAIT STATE GENERATOR NATIONAL SEMICONDUCTOR CORP, SANTA CLARA, CALIFORNIA ClK NC NC WAIT RST BURST NC AS BREQ GND OE NC ABC D NC NC NC VCC A : = A' B • ID • IBREQ • IWAIT' RST + A • C • ID • IBREQ • IWAIT • RST B := A' B' ID' IBREQ' WAIT' RST + A' C' ID' IBREQ' WAIT' RST + IA' B' C' D' RST C : = A' B • C • ID • AS • IBURST • RST D := A' B' C' AS' IBURST' RST + A' B' ID' AS' IBURST' RST + A • B • ID • IBREQ • WAIT' RST + A • C • ID • IBREQ • WAIT' RST + 1A • B • C • D • RST 8-48 . l> z PAL16L8D .... U1 WRITE STROBE GENERATOR Co) WRITE STROBE GENERATOR FOR SRAM BANKS NATIONAL SEMICONDUCTOR. SANTA CLARA. CALIFORNIA BED BE1 BE2 BE3 BODIN A 16 CONF BMT NC GND BCLK WLD WL2 WL3 WUD WU1 WU2 WU3 WL 1 VCC fWLD fBMT • BODIN' fBED • fA 16 + BCLK • fCONF • BODIN' fBED • fA 16 fWL1 fWL2 fBMT' BODIN' fBE1 • fA16 fBMT • BODIN' fBE2 • fA 16 + BCLK' fCONF' BODIN' fBE1 • fA16 + BCLK • fCONF • BODIN' fBE2 • fA 16 + BCLK' fCONF * BODIN * fBE3 * fA16 + BCLK' fCONF * BODIN * fBED' A16 + BCLK' fCONF' BODIN' fBE1 * A16 fWL3 fBMT' BODIN' fBE3' fA16 fWUD fWU1 fWU2 fBMT' BODIN' fBED' A16 fBMT' BODIN * fBE1 * A16 fBMT' BODIN * fBE2' A16 fWU3 fBMT' BODIN' fBE3 + BCLK' fCONF' BODIN' fBE2' A16 * A16 + BCLK * fCONF * BODIN * fBE3' A16 PAL16L8D ADDRESS DECODE PAL ADDRESS DECODER FOR THE SRAM BANKS NATIONAL SEMICONDUCTOR. SANTA CLARA. CALIFORNIA F1 F2 F3 A17 A16 NC NC NC NC GND BODIN NC CSL CSU NC NC NC BURST NC VCC fCSL F1 • F2' F3' fA16' fA17 fCSU F1 • F2' F3' A16' fA17 fBURST = F1' F2' F3' fA17' fBDDIN 8-49 0(0-31> NS32532 AI A2 A3 A4 A5 A6 A7 AS A9 Al0 All A12 A13 A14 A15 A16 A17 AIS A19 A20 A21 A22 A23 A24 A25 A26 A27 A2S A29 A30 A31 BCLK BCLK PFS ir.-.....+- ifS US HLOA CASEC AOS BMT CONr 0Q!t! -'lJ! If.!'''-IH-++-- BO.!!I~Cm+: BIN It SPC SON rSSR 10lNH IOOEC ClOUT ROY BWI BEO BEl BE2 BE3 TUEE/9452-10 8-50 . :J> z D(D-31> ~ CJ'I ..... Co) AL(2-15> A(2-15> iOi i02 i03 i04 iDs ili6 13 14 15 16 17 18 74AS1034 2 BURST 2· -Y!ot..;.''4 0+_-;H p-_. • TLfEEf9452-11 8-51 ....an r---------------------------------------------------------------------------------, ~ Z• c( AL<2-15> 0<0-3> 0<4-7> 0<8-11> 0<12-15> 0<0-31> AU<2-15> TUEE/9452-12 8·52 » z I .... c.n Co) 0<16-19> 0<20-23> 0<24-27> 0<28-31> TL/EE/9452-13 8-53 .... ,---------------------------------------------------------------------------------, ~ ~ :i AppendixB State Diagram of the Interleaved SRAM Interface As°BREQ(NOT A BURST CYCLE) +AS°t.lEt.lRD (NOT A t.lREAD CYCLE) +As°CONr TL/EE/9452-14 8-56 » z . D<0-31> ~ U1 ..... W Al<4-16>__.,. AS1034 _ _ _ _ _~I~V2~~. . . . . . . AU.<.4.-I.6.>--.,.~ . -----',2 5~ ~~~~5311A 1~ ' _____-¥-I 3 ~ lYp ~~~ 4YI~O ~ 4A 13 SA SY rr2- , I'~---""""i~""""_ ASI034 1~~ 1~~~~~312A ~ tH -----;.!~ lA IY ' - - - - - - - iSH2A 2Y '-----i9H3A 3YI'8""""""', '----.,.;11i14A 4Y~ '----.;,13i1SA S Y p ~ rs---, ~ 3A 3Y I~ ~ 114A 2Y 4Y~ 13JLJ}p:LJ 14----' I ~____...!',' ~~~ ~ ' _ _ _--;HS 3A 3yI6 '----...,I,;t~ 4A 4Yrfo-, '------,1..... 3 SA SYt'1'2"""", '-------''''I~........- 10 _----~I~3~ A<4-16> V A<4-16> -v---- A<0-31> A ~ 74F260 PAll6l8D ~ ).~_S::::::::::~1~12 \.----:T2J ~ 2 12 QII±t ~ ~13 02 ~ \.--;-Q"T Ii 6 ,..I-.-m --no '"""'---t'2' ."-1'--n ...............:74F260 ..,ll 18 19 10SI"fij" ,...........1! 110 106 1-~~~~~:~~r-~I7~===S==~-+ A3 74AS1034 I 2 -i:~ m!lLiilll+~")'~----....,'"'1 ~ 16 m 3 -4 17 I§l~ ~ 18 -ilL imlRii ~~_1-______~~2~D P:O~~:~ ___ ----__ ~3~1~9_--!oLA~3H-'" 3 CCl Q 6 '\..AL....g 06 06i~I~6"-.......LA",,2"t-1 ~ DS OS ~ ~ D4 04 -! -4 02 I%03 Ol~ ~ D2 D3 Dl ¥- t ..... DO .lt0 fL OE ~ 11 1 ~1 10 LJ..--I.-----+tt'92 D PR 0 fI 'f"'-"""!+,-J1.'I) 3 II r CCl -0 r:::l±~====::f~=:jlL-J "'""'"74AS08 ~ 03 6 °04S 8 6· - - 'S 8·--·7 A3U 13 +t::::::::::~~+t==i1'1"jj'""""""=lQI .!.L 00U-4F 2' - -,"I ~ 1 IN 02~1L.0-4:4';':_)(_>''!.3-+-H .....L..L.1_-i-I' elK iOi ~ 12 01 9 8 -It-w ~ -~ 11 ~ - 1 ' 2 ~tti 13 104 f'-"- -- .. ~ 14 ----.::~===;:==-+J 4AS04 ~:~ Oi ~ 2 12 13 -4 -i 14IS m H H 16 17 8 18 Uf9 19 12 _02 ,13 !Q! '# m il* ~iJg ~% !lM 17 ~ I 2 ~--iI---4-4I-HI-r--*-8ii117~ 1i'03UtI7~:t~~~f=I=========R~D~l::: ,l! 18 04 11 ;;;02'Ll':~l--I-+-I-' I 1--.2.Wt.1 1'~1J.2. ROU • TLlEE/9452-15 8-57 ~ ..- r-----------------------------------------------------------------------------, ~ ~ AL<4-16> ,A3L I 0<0-3> CY7C166A .... f AO ..: 9 AI ..: 0 A2 A3 .-'t A4 AS A6 .... 4 A7 ....."""! AS c ~ A9 ~ Al0 ..:.;7 ~ 1/00 1/01 1/02 1/03 I§ I 0<4-7> CY7CI66A ~ ....~'"",f AOAI 1/00 1/01 A2 1/02 A3 1/03 A4 L - . AS A6 WEilLLA7 ~S AS i....6 A9 i....7 Al0 i....8 All OE~ 1......9 A12 CE - ...A_13__--' i...."": i....i....- WE lL- ~m ~~ - ...A_13___CE....1J N O l CY7C166A ....19 Lft AO 1/00 ~ .... AI 1/01 ....::i ~ ~ A4 1/02 1/03 :---.JAS ~ A6 ....' A 7 ~ WElL- .5AS A9 Al0 All ~ A12 A13 OE~ C-E 0<12-15> t_ CY7CI66A ....~AO I/OO~ i....19 AI 1/01 ~ L 20 A2 A3 1 A4 1/02 1/03 ..... ~AS N:; WEilL- ~ ~!~ OE~ A12 CE ...A_13__--' ROL CWLO ~ WL1 ~ WL2 ... WL3 ... 0<0-31> , ... AU<4-16> A3U I ~ 0<0-3> CY7C166A AO 1/00 A3 A4 AS A6 1/03 ~ :~ :~g~ ..: i....- L -. ~ ~ !~ A9 Al0 All ~ A12 A13 ~ WE ilL- OE~ C-E 0<4-7> 0 0<12-15> L CY7C166A L CY7C166A l CY7CI66A 'ti AOAI 1/00 U§ .i.....-B. . ¥s AOAI 1/00 ~ ~ 'ti AOAI 1/00 ~ ~ 1/01 1/01 1/01 o A2 1/02 ~ 0 A2 1/02 .... 20 1/02 9 i....-21 A3 ~A4 l'--i ~ ~ A7 AS A9 Al0 A2 ~~ 1/03 WE ,. - ~~ N-54 A7AS N A9 1/03 WElL- ~1 A3A4 "-....,l AS ~ A6 f'03 I WElL- .....'A7 AS ~A9 ....5 I-.. ~m :~ ~ !1~ ~~ ~~~!1~ ~~ A12 A13 CE A12 A13 CE ROU WUO WUl TL/EE/9452-16 8·58 ,--------------------------------------------------------------------, ~ z ....W• UI TLlEE/9452-17 8-59 .... r------------------------------------------------------------------------------------------, ~ It) Z z PAL16R8D I U1 ..... Co) STATE MACHINE PAL STATE MACHINE FOR DRAM CONTROLLER NATIONAL SEMICONDUCTOR, SANTA CLARA, CALIFORNIA CLK RFRO CONF BREO RAM NC IRST NC NC GND OE A B NC C D E F G VCC IA A • B • IC • D • E • F • G • iRFRO + A * B * IC • D • E • IF * IG * IRFRO + I A • B • IC • D • E' F' G + I A • B • C • ID • E * F' G IB A • B • IC • D • E • F' G • ICONF • RFRO • IRAM + A * IB • C * ID • E' IF' G * BREO + A • IB • C • D • E • F • G + A • IB • C • D • E • IF * IG + A • IB • C * ID • IF • G • IBREO IC A • B * IC • D • E • IF • IG • RFRO + A • B • IC • D • E * F * G • CONF • RFRO + IRST + A' B' ID • E • F' G + A' IB • C • D • IE • IF * G + A' IB • C • ID • IE • IF' G • BREO + A' B • IC • D' E * F' G • IRFRO + A' B • IC • D' E * IF • IG * IRFRO A • IB • C • D • E • F * G + A • IB • C • D • E • IF • IG + I A * B * IC • D • E • F • G + I A * B • C • D * IE * F • G + A * B • C • ID • E • F • G A • IB • C • ID • E • IF • G • BREO + A • IB • C • D • E • IF * IG + I A • B * C • ID • E • F • G ID IE IF ,- IG A • IB • C • D * E • F • G + A' IB • C • IE • IF' G + A' IB • C • ID • IF' G A • IB • C • IE • IF • G + A' IB • C • D * E' IF * IG + A' IB • C • ID • IF • G • IBREO PAL 16L8D ICASnPAL GENERATES ICASn FOR DRAM BANKS NATIONAL SEMICONDUCTOR, SANTA CLARA, CALIFORNIA NC CASI DDIN NC BEO BE1 BE2 BE3 NC GND NC NC CASO CAS1 CAS2 CAS3 NC NC NC VCC ICASI • IDDIN + ICASI • IBEO • DDIN ICASO ICAS1 ICAS2 ICAS3 ICASI * IDDIN + ICASI • IBE1 • DDIN ICASI * IDDIN + ICASI • IBE2 • DDIN ICASI • IDDIN + ICASI * IBE3 • DDIN PAL16L8D ADDRESS DECODE PAL ADDRESS DECODER FOR DRAM INTERFACE NATIONAL SEMICONDUCTOR, SANTA CLARA, CALIFORNIA A31 A30 A29 A28 A27 A26 A25 A24 A23 GND A22 RAM RAML RAMU NC NC NC NC NC VCC IRAM = IA31 */A30 */A29 */A28 */A27 */A26 * IA25 */A24 '/A23 IRAML = IRAMU = IA31 */A30 */A29 * IA28 */A27 '/A26 '/A25' IA24 '/A23 */A22 IA31' IA30 */A29' IA28' IA27 * IA26 '/A25 */A24 */A23' IA22 • 8-61 ... ,---------------------------------------------------------------------------------, ~ II) :Z cc PAL20X10A REFRESH INTERVAL COUNTER SO MHZ REFRESH INTERVAL COUNTER PAL NATIONAL SEMICONDUCTOR, SANTA CLARA, CALIFORNIA BCLK NC NC NC NC NC NC NC NC NC RFACK GND OE 00 01 02 OS 04 OS 06 07 NC RFRO VCC 100 100 + 107 * 106 * lOS :+:VCC ,= 101 + 107 * 106 " lOS 101 :+: 107" 106 * lOS + 100 ,= 102 + 107 * 106 * lOS 102 :+: 107' 106' lOS + 101 + 100 ,= lOS + 107 • 106 * lOS lOS :+: 107' 106 * lOS + 102 * 101 * 100 104 104 + la7 * la6 • las :+: la7' la6" las + lOS' 102" 101 * lao las + la7 * la6 • las lOS : +: la7 • 106 * las + la4 * las * la2 • la1 * lao la6 la6 + la7 * 106 * lOS :+: 107' la6 * lOS + lOS * 104 * las * la2 * la1 * 100 ,= la7 + la7 • la6 * las la7 :+: la7 * la6 * las + la6' las * 104 * las * la2 * la1 * lao IRFRO ,= RFRO * a7 * a6 * as * a4 * as * a2 * 01" ao + IRFRa * IRFACK :+: IRFRa PAL20X10A REFRESH ADDRESS COUNTER REFRESH ADDRESS GENERATOR FOR DRAM BANKS NATIONAL SEMICONDUCTOR, SANTA CLARA, CALIFORNIA ClK NC NC NC NC NC NC NC NC NC NC GND OE AO A1 A2 AS A4 AS A6 A7 AS A9 VCC IAO:= lAO :+: VCC IA1 := IA1 :+: AO IA2:= IA2 :+: A1 * AO IAS:= lAS :+: A2*A1*AO IA4:= IA4 :+: AS*A2"A1*AO IAS:= lAS :+: A4*AS*A2*A1*AO IA6:= IA6 :+: AS*A4*AS*A2*A1*AO IA7:= IA7 :+: A6*AS*A4*AS*A2*A1*AO MS:= MS:+:~*M*M*A4"~'~'M"M IA9:= IA9 :+: AS*A7*A6*AS*A4*AS"A2*A1*AO S-62 ~----------------------------------------------------~~ ZI .... U1 0<0-31> .lillilll I!~ lOA Co) ~ ~ ?~ ~ ~~~~ ~ ~~ !./ ~ 2~1L3Y~ IFL~ ~ 0<0-7> nl!- 18 .ill£illl I?: ~ I~~ ~ I~~ ~ ~~ ~ ~~ nn STO 119f"" sn ST2 ST3 ST4 no n. ~ ~ 06 ~~ ~ 0<16-23> ii t:~ ~ ~,u V NS32532 n lilliW ~ ~ ;: ~:::H~ ~: ~ I~ ~: P I~~. 2: 1~ 0<0-31>. .iffi Jiii :NMi ~ ;;; I~ r ~ iiP AO AI A2 A3 A4 A5 A6 A7 A8 A9 Al0 All A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24 A25 A26 A27 A28 A29 A30 A31 BCLK BCLK PFS ~ ~ P P ~ P P ~ p ~ E li~ ~~ r-I!~ ,.- 15 16 I I ~ I~ I ~ i - I!~ - DI!!.2. r--~ ~ ~ P P ~ P ~ ~ ~ J~ HLOA CASEC ADS BMT CONf ODIN jj] BOUT ~ ~ I",. 1~, .. I~,': '2 74AS1034 i-rt?~ r I BiN ~i ~~~ fSSR IOINH IOOEC ClOUT ROY BWO BWI BEO BEl BE2 BE3 +5~ ~.Ilcn~ ... r Ii '- ,-. • JP~RI3~12~0~"tl0 .jOt;1 . • ili : RDY 1..r-'\3 ~ TL/EE/9452-1 B 8-63 D<0-31> ~ MA<0-9> MA<0-3> MA<8-9> 74AS10D4 74AS1004 2 RASO RASI RAS2 BEii BE. BEl 1 PAL16L8D 2 11 ii1 12 3 12 02 19 4 13 5 14 6 15 7 16 8 17 9 18 11 RAS3 74AS1034 CASO CASI CAS2 :~O 8 CAS3 TLIEEI9452-'9 8·64 » z ...en I RASO CASO CAl 1.40<0-7> ~0-9> BMA ~ ~IA lY~ ~ 2A 9 3A ~ 4A '-ll SA rC511002 2Y~ 3Y~ ~ !i A3 A4 ~ ~ AS AO 4Y~ N 5Y ~ ~ ~ ~IA lY~ ~ 2A ~3A ~ 4A SA ~ ~ -...1 2Y~ 3Y B 4YIfo'\ 5Y It'r" A6 A7 A8 A9 '-ll2.......!!~ DIN DOUr rC511002 h:::: ~ ~ !i AO 1.2....RAS L CAS WEl ~ ~ ~ ~ ~ -......J.a A3 A4 AS A6 A7 A8 A9 DIN Dour rC511002 h:::: ~ N !i AO ~ 1.2....RAS L CAS WEl A3 A4 ~ AS ~ A6 ~ A7 ~ A8 ~ A9 DIN Dour h:::: CAS rLL- RAS L WEl AS1034 N~~ ~ 4 2Y ~ 3Y 4Y SA 5Y ~ 6A 6Y .-............ l'42A ~ 3A NJ. i'J.l ll-. t:::t ~ P lA 2A ~3A lY 2Y 3Y.g....I ~4A 4Y~ ~ SA 5Y:1Y ~ ~ ~IA 2A ~ 3A NJ. 4A MD t..; i'li" 4A BMA - 5 rC511002 ~ ~ !i DIN Dour A3 A4 ~ AS ~ A6 ~ A7 ~ A8 ~ A9 CAS AO ~ lYp 2Y 3Y 4Y It'" Ifli'. ~ SA 5Y~ ~ 1.40<16-23> AS1034 BMA<0-9> Nr;t"'1yth N2A ~ 3A N4A NJ. SA 2Y~ 3Y tt-.. 4Y~ 5Y~ "-!l~~ WEI RASI '- CASI MD<0-31> N rC511002 ~ f1LRAS tL WE1 rC511002 DINJ.l....;' A2 Dour ~A3 ~!~ ~A6 ~A7 ~A8 A9 WE2 RAS2 , CAS2 ~ A3 A4 AS A6 ~ A7 ~ AB ~ A9 Nf rC511002 DIN Dour ~ CAS f1LtL RAS WE1 rC511002 t.,..-: AO ~Al ~ N !i AD ~AO N Al ~A2 WEl 2 AS ~A6 :--44 A7 "-ll !~ ~ A9 DIN Dour ~ CAS f1L- "::~ rC511002 DINk/ Dour J.l....;' ~ !~ AO ~ ~A3 A4 1.2....RAS L CAS ~ N !iA3 A4 ~ ~ AS A6 A7 ~ ~ A8 AO 1.2....RAS L CAS WEi ::::#. ~ :--44 "-ll A3 A4 AS A6 A7 AS A9 DIN Dour ~ CAS 1.2....- RAS tL WEi MD<24-31> BMA ~ rC511002 AD DIN Al Dour A2 A3 A4 AS ~ A6 CAS ~ A7 RAS AS ~ ~ A9 ~ t---+.l WE3 '- RAS3 CAS3 rC511002 ~ ;:::i ~ !i AO rLL- L WEi ~ ~ N4 "-ll A3 A4 AS A6 A7 AB A9 DIN Dour CAS RAS rC511002 ~ rLL- L WE1 ~ N !i AO ~ A3 A4 ~ AS ~ A6 ~ A7 A8 ~ ~ A9 DIN Dour CAS RAS ~ 1.2....L WEi TLlEE/9452-20 8-65 TL/EE/9452-21 8-66 Introduction to Bresenham's Line Algorithm Using the SBIT Instruction; Series 32000® Graphics Note 5 National Semiconductor Application Note 524 Nancy Cossitt 1.0 INTRODUCTION The algorithm assumes the line has positive slope less than one, but a simple change of variables can modify the algorithm for any slope value. This will be detailed in section 2.2. Even with today's achievements in graphics technology, the resolution of computer graphics systems will never reach that of the real world. A true real line can never be drawn on a laser printer or CRT screen. There is no method of accurately printing all of the points on the continuous line described by the equation y = mx + b. Similarly, circles, ellipses and other geometrical shapes cannot truly be implemented by their theoretical definitions because the graphics system itself is discrete, not real or continuous. For that reason, there has been a tremendous amount of research and development in the area of discrete or raster mathematics. Many algorithms have been developed which "map" real-world images into the discrete space of a raster device. Bresenham's line-drawing algorithm (and its derivatives) is one of the most commonly used algorithms today for describing a line on a raster device. The algorithm was first published in Bresenham's 1965 article entitled "Algorithm for Computer Control of a Digital Plotter". It is now widely used in graphics and electronic printing systems. This application note will describe the fundamental algorithm and show an implementation on National Semiconductor's Series 32000 microprocessor using the SBIT instruction, which is particularly well-suited for such applications. A timing diagram can be found in Figure 8 at the end of the application note. Bresenham's line-drawing algorithm uses an iterative scheme. A pixel is plotted at the starting coordinate of the line, and each iteration of the algorithm increments the pixel one unit along the major, or x-axis. The pixel is incremented along the minor, or y-axis, only when a decision variable (based on the slope of the line) changes sign. A key feature of the algorithm is that it requires only integer data and simple arithmetic. This makes the algorithm very efficient and fast. < slope < 1 Given (Xi, Yi) as the previously plotted pixel location for the line segment, the next pixel to be plotted is either (Xi + 1, Yi) or (Xi + 1, Yi + 1). Bresenham's algorithm determines which of these two pixel locations is nearer to the actual line by calculating the distance from each pixel to the line, and plotting that pixel with the smaller distance. USing the familiar equation of a straight line, y = mx + b, the y value corresponding to Xi + 1 is + 1) + b Y = m(xi The two distances are then calculated as: dl = y - Yi dl = m(xi d2 d2 = (Yi + 1) + b - Yi = (Yi + 1) - Y + 1) - m(xi + 1) - b and, dl - d2 = m(xi 2.0 DESCRIPTION Y-axis 2.1 Bresenham's Algorithm for 0 Figure 1 shows a line segment superimposed on a raster grid with horizontal axis X and vertical axis Y. Note that Xi and Yi are the integer abscissa and ordinate respectively of each pixel location on the grid. + 1) + b - dl - d2 = 2m(xi Yi - (Yi + + 1) + m(xi + 1) + b 1) - 2Yi + 2b - 1 Multiplying this result by the constant dx, defined by the slope of the line m = dy/dx, the equation becomes: dx(dl-d2) = 2dY(Xi) - 2dx(Yi) +c where c is the constant 2dy + 2dxb - dx. Of course, if d2 > dl, then (dl-d2) < 0, or conversely if dl > d2, then (dld2) > O. Therefore, a parameter Pi can be defined such that Pi = dx(dl-d2) Pi = 2dY(Xi) - 2dx(Yi) +c f-t-t-t-t-t-t-t-l-l-l-l-I.. ~ Yi +l .....................~ J:...o. Yi ................• ... ~. ~Itlt X-axis TLlEE/9665-2 TL/EE/9665-1 FIGURE 1 Distances d1 and d2 are compared. The smaller distance marks next pixel to be plotted. FIGURE 2 8-67 ~ r-------------------------------------------------------------------------------~ N LI) :Z c( If Pi > 0, then d1 > d2 and Yi + 1 is chosen such that the next plotted pixel is (Xi + 1, Yi). Otherwise, if Pi < 0, then d2 > d1 and (Xi + 1, Yi + 1) is plotted. (See Figure 2.) Similarly, for the next iteration, Pi + 1 can be calculated and compared with zero to determine the next pixel to plot. If Pi + 1 < 0, then the next plotted pixel is at (Xi + 1 + 1, Yi + 1); if Pi + 1 > 0, then the next point is (Xi + 1 + 1, Yi + 1 + 1). Note that in the equation for Pi + 1, Xi + 1 = Xi + 1. Another change of variables can be performed on the incremental values to accommodate those lines with slopes greater than 1 or less than -1. The coordinate system containing the line is rotated 90 degrees so that the X-axis now becomes the V-axis and vice versa. The algorithm is then performed on the rotated line according to the sign of its slope, as explained above. Whenever the current position is incremented along the X-axis in the rotated space, it is actually incremented along the V-axis in the original coordinate space. Similarly, an increment along the V-axis in the rotated space translates to an increment along the X-axis in the original space. Figure 4a., g. and h. illustrates this translation process for both positive and negative lines with various starting pOints. Pi + 1 = 2dY{Xi + 1) - 2dx{Yi + 1) + c Subtracting Pi from Pi + 1, we get the recursive equation: Pi + 1 = Pi + 2dy - 2dx{Yi + 1 - Yi) Note that the constant c has conveniently dropped out of the formula. And, if Pi < 0 then Yi + 1 = Yi in the above equation, so that: 3.0 IMPLEMENTATION IN C Bresenham's algorithm is easily implemented in most programming languages. However, C is commonly used for many application programs today, especially in the graphics area. The Appendix gives an implementation of Bresenham's algorithm in C. The C program was written and executed on a SVS32/20 system running UNIX on the NS32032 processor from National. A driver program, also written in C, passed to the function starting and ending points for each line to be drawn. Figure 6 shows the output on an HP laser jet of 160 unique lines of various slopes on a bit map of 2,000 x 2,000 pixels. Each line starts and ends exactly 25 pixels from the previous line. The program uses the variable bit to keep track of the current pixel position within the 2,000 x 2,000 bit map (Figure 5). When the Bresenham algorithm requires the current position to be incremented along the X-axis, the variable bit is incremented by either + 1 or -1, depending on the sign of the slope. When the current position is incremented along the V-axis (I.e., when p > 0) the variable bit is incremented by + warp or -warp, where warp is the vertical bit displacement of the bit map. The constant last bit is compared with bit during each iteration to determine if the line is complete. This ensures that the line starts and finishes according to the coordinates passed to the function by the driver program. Pi+1=Pi+ 2dy or, if Pi> 0 then Yi + 1 = Yi + 1, and Pi + 1 = Pi + 2{dy-dx) To further simplify the iterative algorithm, constants c1 and c2 can be initialized at the beginning of the program such that c1 = 2dy and c2 = 2{dy-dx). Thus, the actual meat of the algorithm is a loop of length dx, containing only a few integer additions and two compares (Figure 3). 2.2 For Slope < 0 and ISlopel > 1 The algorithm fails when the slope is negative or has absolute value greater than one (Idyl> Idxl). The reason for this is that the line will always be plotted with a positive slope if xi and Yi are always incremented in the positive direction, and the line will always be "shorted" if Idxl < Idyl since the algorithm executes once for every X coordinate (i.e., dx times). However, a closer look at the algorithm must be taken to reveal that a few simple changes of variables will take care of these special cases. For negative slopes, the change is simple. Instead of incrementing the pixel along the positive direction (+ 1) for each iteration, the pixel is incremented in the negative direction. The relationship between the starting point and the finishing point of the line determines which axis is followed in the negative direction, and which is in the positive. Figure 4 shows all the possible combinations for slopes and starting points, and their respective incremental directions along the X and V axis. do while count < > dx i f (p < 0) then p+ = cl else p+ = c2 next_y = prev_y + y_inc next_x = prev_x + x_inc plot (next_x,next_y) count + = 1 /* PSEUDO CODE FOR BRESENHAM LOOP */ FIGURE 3 8-68 p2 start p1: unc = y' _inc = 0 y_inc = start p2: >L-inc y~nc m=lnf x'~nc = = y' _inc = x'~nc = = start p1: ><-inc y_inc +1 start p2: ><-inc y_inc a - 1 ~ ~ ~ ~ +1 0 -1 0 p2 pI m=O pI TL/EE/966S-4 TL/EE/966S-3 b. a. p2 pI ~ ~ +1 -1 start p1: ,,--inc y-inc ~ ~ - 1 start p2: ><-inc y-inc ~ ~ start p1: ,,--inc y_inc start p2: ><-inc y_inc = +1 ~ TL/EE/966S-S TL/EE/966S-6 c. d. start p1: "--inc y-inc start P2:;-inc ~ ~ ~ +1 -1 -1 p2 ~_inC~+1 -1 <-inc y~nc = x'-inc = +1 ~ y' -incl ~ -1 m>1 p2 TLlEE/9665-9 pI g. TLlEE/966S-10 h. Note: a., g., and h. are rolated 90 degrees left and x'. y' refer to the original axis. FIGURE 4 8-69 blt=O .....~IIIIIIIIIIIP..................piIII!IIIII.................~~bit= 1,999 I--t--t-+-+-I-HH---t-+-+-+-+-+-++++-t",,~~-+-+-+_>warp =2,000 ~ bit = starting .: . , ~ r-position ......1--+-r-.-+-+++-+.tiiiI-"",d'io""""""'-+-+-+-+-+-+--+-+-+-+-+--+--HH-I""""- bit = current ~ position TL/EE/9665- 11 Bit Map is 500 kbytes, 2k x 2k Bits Base Address of Bit Map is 'Bit-Map' FiGURE 5 8-70 :I> z Graphics Image (2000 x 2000 Pixels), 300 DPI • U1 N .a:o. TLlEE/9665-12 FIGURE 6. Star-Burst Benchmark-This Star-Burst Image was done on a 2k x 2k pixel bit map. Each line is 2k pixels in length and passes through the center of the image, bisecting the square. The lines are 25 pixel units apart, and are drawn using the LINE_DRAW.S routine. There are a total of 160 lines. The total time for drawing this Star-Burst is 2.9 sec on 10 MHz NS32C016. 8-71 ~ C\oI "9 z4( r---------------------------------------------------------------------------------, The SBIT instruction greatly increases the speed of the algorithm. Notice the method of setting the pixel in the C program given in the Appendix: 4.0 IMPLEMENTATION IN SERIES 32000 ASSEMBLY: THE SBIT INSTRUCTION National's Series 32000 family of processors is well·suited for the Bresenham's algorithm because of the SBIT instruction. Figure 7 shows a portion of the assembly version of the Bresenham algorithm illustrating the use of the SBIT instruction. The first part of the loop, handles the algorithm for p < o and .CASE2 handles the algorithm for p > O. The main loop is unrolled in this manner to minimize unnecessary branches (compare loop structure of Figure 7 to Figure 3). The SBIT instruction is used to plot the current pixel in the line. bit-fllap[bitl8] I = biLpos[(bit & 7)] This line of code contains a costly division and several other operations that are eliminated with the SBIT instruction. The SBIT instruction helps optimize the performance of the program. Notice also that the algorithm can be implemented using only 7 registers. This improves the speed performance by avoiding time·consuming memory accesses. 5.0 CONCLUSION An optimized Bresenham line·drawing algorithm has been presented using the SYS32/20 system. Both Series 32000 assembly and C versions have been included. Figure 8 presents the various timing results of the algorithm. Most of the optimization efforts have been concentrated in the main loop of the program, so the reader may spot other ways to optimize, especially in the set-up section of the algorithm. The SBIT instruction uses bit-fllap as a base address from which it calculates the bit position to be set by adding the offset bit contained in register r1. For example, if bit, or R1, contains 2,000', then the instruction: r1,@ biLmap sbitd will set the bit at position 2,000, given that biLmap is the memory location starting at bit 0 of this grid. In actuality, if base is a memory address, then the bit position set is: Several variations of the Bresenham algorithm have been developed. One particular variation from Bresenham himself relies on "run·length" segments of the line for speed optimization. The algorithm is based on the original Bresenham algorithm, but uses the fact that typically the decision variable p has one sign for several iterations, changing only once in-between these "run·length" segments to make one vertical step. Thus, most lines are composed of a series of horizontal "run· lengths" separated by a single vertical jump. (Consider the special cases where the slope of the line is exactly 1, the slope is 0 or the slope is infinity.) This algorithm will be explored in the NS32CG1S Graphics Note 5, AN-522, "Line Drawing with the NS32CG1S", where it will be optimized using speCial instructions of the NS32CG16. offset MOD8 within the memory byte whose address is: base + (offset DIV 8) So, for the above example, 2,000 MOD 8 = 0 + 2,000 DIV 8 = bit-fllap + 250 bit 0 of byte (bit-fllap + 250) is set. This bit correbit-fllap Thus, sponds to the first bit of the second row in Figure 5. •All numbers are in decimal. # Main loop of Bresenham algorithm .LOOP: #p .CASE2: #P < > Register and Memory 0: move in x direction only Contents cmpqd $0,r4 ble .CASE2 rO addd rO,r4 rl addd r5,rl = = cl constant bit current position sbitd rl,@_bit_map r2 cmpd r3,rl r3 bne .LOOP r4 exit [r3,r4,r5,rS,r7] r5 ret $0 rS = = = = = = c2 constant lasLbit p decision var x_inc increment unused register .align 4 r7 0: move in x and y direction _bit_map addd r2,r4 first byte in bit map addd r7,rl addd r5,rl sbitd rl,@_biLmap cmpd rl,r3 bne .LOOP exit [r3,r4,r5,rS,r7] ret $0 FIGURE 7 Note: Instructions followed by the letter 'd' indicate '"double word'" operations. 8-72 y_inc increment = address of Set-up time per line is measured from the start of LINE-DRAW.S only. The overhead of calling the LINEDRAW routine, starting the timer and creating the endpoints of the vector are not included in this time. Set-up time does include all register set·up and branching for the Bresenham algorithm up to the entry pOint of the main loop. Timing Performance 2k x 2k Bit Map 2k Pix/Vector 160 Lines per Star-Burst Version Parameter Set-up Time Per Vector Vectors/Sec Pixels/Sec Total Time Star-Burst Benchmark NS32000 Assembly with SBIT NS32C016-10 NS32C016-15 45/Ls 54 82 109,776 164,771 2.9s Vectors/Second is determined by measuring the number of vectors per second the LINE-DRAW routine can draw, not including the overhead of the DRIVER.C and START.C routines, which start the timer and calculate the vector endpoints. All set-up of registers and branching for the Bresenham algorithm are included. Pixels/Second is measured by dividing the Vectors/Second value by the number of pixels per line. Total Time for the Star-Burst benchmark is measured from start of benchmark to end. It does inClude all overhead of START.C and DRIVER.C and all set-up for L1NE-DRAW.S. This number can be used to approximate the number of pages per second for printing the whole StarBurst image. 30".5 1.9s FIGURES 8-73 National Semiconductor Corporation. CTP version 2.4 -- line_draw.s -• file "line draw.sM .comm-_bit map,4997S, .globl lIne draw .set WARP ,I", .align 4 line_draw: enter [r3,r4,rS,r6,r71,l2 movd l2!~),r5 movd B( p ,r6 movd r5,rl muld $(WARP),rl addd r6,rl movd 2,(fp),r4 subd r5,r4 absd r4,r3 l1lDvd l6(fp) ,r2 subd r6,r2 abad r2,r6 cmpd r3,r6 ble .LLl cmpqd $(,),r4 .LL2 ~~r WARP,rS br .LL3 • align 4 .LL2: addr -WARP,rS .LL3: cmpqd $(,),r2 bge .LL4 movqd $(1),r7 br .LLS • align 4 .LL4: movqd $(-l),r7 .LL5: movd r6,r, addd r"r, subd rl,r6 addr ,[r6:wl,r2 movd r"r4 aubd r3,r4 movd 2, (fp) ,r3 muld $(WARP),r3 addd l6(fp),r3 br .LL6 •align 4 .LL1: .LL7: .LL8: .LL9: cmpqd bge addr br • align 4 $(,),r4 .LL7 WARP,r7 .LLB addr -WARP,r7 cmpqd bge movqd br • align 4 $(,),r2 .LL9 $(l),rS .LLl, movqd $(-l),rS • initialize t r5~ys t r6~s t initialize starting 'bit' t bitmwarp*ys+xs • rl=bit • r4-yf • r4 a dy : ~~:k~YI • • • • • • • r2=dx r6-ldXl branch if slope l if dy<, want x_inc<, else x inc is pos x_inc~+/-warp because of rotate if dx , then y_inc=+warp TUEE/9885-13 .LL6: .LLl1: addr movd subd addd movd subd movd muld addd jI[r3:wl,rjl r3,r2 r6,r2 r2,r2 r"r4 r6,r4 2,(fp),r3 $ (WARP) ,r3 l6(fp) ,r3 cmpqd ble addd addd sbitd cmpd bne exit ret .align 4 $('),r4 .LLll rjl,r4 r5,rl rl,@ bit_map r3,rI .LL6 addd addd addd sbitd cmpd bne exit ret r2-2*ldy-dxl=C2 ~~~~r;~:-r:st_bitar3 , • • • t main loop for algorithm check sign of p branch if pos add cl to p inc bit by x_inc only t plot bit t end only if bit=last_bit [r3,r4,r5,r6,r7) $(111) • • •, p>, then inc in y dir add c2 to p add y inc to bit add x-inc to bit plot fiit when bit-last_bit snd only TUEE/8885-14 8-74 » z . en '* This program calculates points on a line using Bresenham's iterative *' '* method. *' 'include 'define xbytes 25_ '* number of bytes along x-axis*, 'define warp xbytes * 8 '* number of bits along x axis*, 'define maxy 1999 '* number of lines in y axis*, unsigned char bit_map[xbytes*maxyj; '* array contains bit map*, static unsigned char bit-pos[]=ll,2,4,8,16,32,64,128); '* look-up table for setting bit *' line_draw(xs,ys,xf,yf) int '* starting Is) and finishing If) points N "'" *' xs,ys,xf,yf; int ~t~r~~tigrt~_inc, p,Cl,C2;- '* '* *' *' *' *' *' *' deltas and increments *' '* current and last bit positions decision variable p and constants dxaxf-xs; ~rt~~;~:~arp)+xs; '* initialize bit to first bit pos '* calculate last bit on line last_bit= (yf*warp) +xf; if (abs(dy) > abs(dx» I if (dy>_) x_inc=warp; else x_inelll -warp; if (dx>_) y_inc=l; else y inc= -II cl=2*abs(iIx)I c2=2*(abs(dx)-abs(dy»I p=2*abs(dx)-abs(dy)I ) else y_inc=warp; y_inc= -warp; if (dx>_) else /* y_axis is now original x_axis */ /* calculate Bresenham's constants */ 1* p is decision variable now rotated */ '* abs(slope)<1 use original axis *' i f (dy>_) else '* abs(slope»1 must rotate space '* see Figure 5 a.,g.,and h. '* x_axis is now original y_axis */ '* y_inc is +/-warp number of bits */ x inca l; '* move forward one bit *' x 1nc= -1; /* or backward one bit */ - Cl=2*abs(iIy)I '* calculate constants and p *' c2=2*(abs(dy)-abs(dx»I p=2*abs(dy)-abs(dx)I '* Bresenham's Algorithm *' do '* do once for each x increment, i.e. dx times */ I if (p<_) else ( p+=cl; ~t~~bnc, '* '* no y movement if p<_ */ move in y dir if p>_ */ /* always increment x */ '* bit is set by calculating bit MOD 8, which is */ TL/EE/9665-15 '* same as bit & 7, then looking up appropriate */ '* bit in table bit-pos. This bit pos is then set *' /* in byte bit/8 *' bit map[bit/8] 1- bit-pos[(bit&7)]I while (bitl-last_bit); TUEE/9665-16 8-75 1* Program driver.c feeds line vectors to LINE_DRAW.S forming Star-Burst. "j #include #define xbytes #define maxx #define maxy 25~ unsigned char bit_map[xbytes*maxY]i 1999 1999 main() int i,counti 1* generate Star-Burst image *1 for (count=l;count<=l~~~;test++)( for (i=~;i<=maxy;i+=25) line draw(~,i,maxx,maxy-i)i for (i=~ii<=maxx;i+=25) line_draw(i,maxy,maxx-i,~}; TL/EE/9665-17 I~ start timer and call main procedure of DRIVER.C to draw lines *1 start() ( long "timer *timer = J'; (long") return(*timer) ; ~x6~~; 1* write a zero to timer location *1 main(~,~); j" Show argc as zero, argv 1* return, in r~, the current time ->~ *1 *j TLlEE/9665-18 8-76 . :J> z National Semiconductor Application Note 526 Dave Rand Block Move Optimization Techniques Series 32000® Graphics Note 2 U1 I\) en 1.0 INTRODUCTION 2.0 DESCRIPTION This application note discusses fast methods of moving data in printer applications using the National Semiconductor Series 32000. Typically this data is moved to or from the band of RAM representing a small portion (or slice) of the total image. The length of data is fixed. The controller design may require moving data every few milliseconds to image the page, until a total of 1 page has been moved. This may be (at 300 OPI, for example) (8.5 x 300) X (11 X 300), or 1,051,875 bytes. In current controller designs the width is often rounded to a word boundary (usually 320 bytes at 300 OPI). This technique uses 1,056,000 bytes, or 528,000 words. The move string instructions (MOVSi) in the 32000 are very powerful, however, when all that is needed is a string copy, they may be overkill. The string instructions include string translation, conditionals and byte/word/double sizes. If the application needs only to move a block of data from one location to another, and that data is a known size (or at least a multiple of a known size), using unrolled MOVO instructions is a faster way of moving the data from A to 8 on the NS32032 and NS32332. ; Version 1.0 3.0 IMPLEMENTATION A code sample follows which makes use of a block size of 128 bytes. To move 256 bytes, for example, RO should contain 2 on entry. Sun Mar 29 12:57:20 1987 ;A subroutine to move blocks of JTeIl1Ory. Uses a granularity of ;128 bytes. Inputs: rO = number of 128 byte blocks to move rl = source block address r2 = destination block address ;Listing continues on following page TLIEE19696-1 8-77 CD N II) Z• OutputS: c( rO = 0 rl = source block address + (128 * blocks) r2 = destination block address + (128 * blocks) ;Notes: This algorithn corresponds closely to the MOVSD instruction, except that rO contains the number of 128 byte blocks, not 4 byte double words. The output values are the same as if a MOVSD instruction were used. movmem: cmpqd O,rO beq mvexit . align 4 mvlpl: movd O(rl).O(r2) 4(rl) ,4(r2) movd 8(rl),8(r2) movd movd 12(rl) ,12(r2) movd 16(rl).16(r2) movd 20(rl) ,20(r2) movd 24(rl).24(r2) movd 28(rl) ,28(r2) movd 32(rl) ,32(r2) movd 36(rl) ,36(r2) movd 40(rl),40(r2) movd 44(rl),44(r2) movd 48(rl) ,48(r2) movd 52(rl) ,52(r2) movd 56(rl) ,56(r2) movd 60(rl) ,60(r2) movd 64(rl).64(r2) movd 68(rl),68(r2) movd 72(rl).72(r2) movd 76(rl).76(r2) movd 80(rl).80(r2) movd 84(rl),84(r2) movd 88(rl) ,88(r2) movd 92(rl).92(r2) 96(rl) ,96(r2) movd movd lOO(rl).100(r2) movd 104( rl ).104( r2) movd 108(rl).108(r2) movd 112(rl).112(r2) movd U6( rl ).116( r2) movd 120(rl),120(r2) movd 124(rl).124(r2) addr 128( rl). rl addr 128(r2),r2 acbd -l,rO,mvlpl mvexit: ret $0 ; if no blocks to move ;exit now . ;move one block of data ;quick way of adding 128 ;loop for rest of blocks TLlEE/9696-2 8-78 . J> 4.0 TIMING move 256 bytes, this algorithm takes 126.8 /-'S. The loop overhe.ad (the AD DR and ACBD instructions) is about 5%. Doubling the block size (to 256 bytes) would reduce the loop overhead to 2.5%, and reducing the block size (to 64 bytes) would increase the loop overhead to 10%. In comparison, the 32032 MOVSD instruction takes about 690 clocks to move a 128-byte block. On the 32016 (1 wait state. @ 10 MHz, 16-bit bus), this code executes in 1150 clocks per 128-byte block. Thus, to move 256 bytes, this algorithm takes 230.0 p.s. The loop overhead on the 32016 is about 2.5%. In comparison, the 32016 MOVSD instruction would take about 1,074 clocks. Thus, the MOVSD instruction is faster, and makes better use of the available bus bandwidth of the NS32016. All timing assumes word aligned data (double word aligned for 32·bit bus). Unaligned data is permitted, but will reduce the speed. On the 32532 (no wait states, @ 30 MHz, 32-bit bus), this code executes in 204 clocks, assuming burst mode access is available. To move 256 bytes, this routine would take 13.6 p.s. The MOVSD instruction takes about 156 clocks to move a 128-byte block. The MOVSD instruction is the best choice, therefore, on the 32532. On the 32332 (no wait states, @ 15 MHz, 32-bit bus), this code executes in 458 clocks per 128-byte block. Thus, to move 256 bytes, this algorithm takes 61.1 p.s. The loop overhead (the ADDR and ACBD instructions) is about 10%. Doubling the block size (to 256 bytes) would reduce the loop overhead to 5%, and reducing the block size (to 64 bytes) would increase the loop overhead to 20%. In comparison, the 32332 MOVSD instruction takes about 721 clocks to move a 128-byte block. On the 32032 (no wait states. @ 10 MHz, 32-bit bus), this code executes in 634 clocks per 128-byte block. Thus, to 5.0 CONCLUSIONS The MOVSi instructions on the NS32016 provide a very fast memory block move capability, with variable size. On the NS32332 and NS32032, however, unrolled MOVD instructions are faster due to the larger bus bandwidth of the NS32332 and NS32032. 8-79 z UI ~ en r-. N It) Z• c( Clearing Memory with the 32000; Series 32000® Graphics Note 3 National Semiconductor Application Note 527 Dave Rand 1.0 INTRODUCTION In printer applications, large amounts of RAM may need to be initialized to a zero value. This application note describes a fast method. 3.0 IMPLEMENTATION This routine is written to clear blocks of 128 bytes. This provides an optimal tradeoff between loop size (granularity) and loop overhead. This can be modified to use a different size. For example, to use a block size of 64 bytes, simply delete 16 of the MOVQD O,TOS instructions from the listing. As well, since the value of r1 is now the number of 64 byte groups, one of the ADDD R2,R2 instructions (prior to the loading of the stack pointer) must be removed. Since the 32000 has two stacks, interrupts will be handled properly using this code. If only a fixed buffer size needs to be cleared, the code can be further unrolled to clear that area (i.e., increase the number of MOVQD O,TOS instructions.) 2.0 DESCRIPTION While several different methods of initializing memory to all zeros are available, here is one that works very well on the Series 32000. While the current version clears memory only in blocks of 128 bytes, other block sizes are possible by extending the algorithm. ; Version 1.1 Sun Mar 2910:22:191987 ;Subroutine to clear a block of memory. The granularity of this ;algoriti"m is 128 bytes. to reduce the looping overhead. Inputs: rO = start of block r1 = number of 128-byte groups to clear Outputs: All regi sters preserved. ;Listing continues on following page TL/EE/9697-1 8·80 cmpqd D, rl beq clexit:w [rD, rl, r2] save rl,r2 IOOvd addd r2,r2 addd r2,r2 r2,r2 addd r2,r2 addd addr 4(rD)[r2:q].rD sprd sp,r2 lprd sp,rD .align 4 IOOvqd D,tos c12: IOOvqd D,tos IOOvqd D,tos IOOvqd D,tos IOOvqd D,tos IOOvqd D,tos IOOvqd D, tos IOOvqd O,tos IOOvqd D, tos IOOvqd D,tos movqd D,tos movqd 0, tos movqd D,tos movqd D,tos IOOvqd D,tos IOOvqd O,tos IOOvqd D,tos IOOvqd D,tes IOOvqd D,tos IOOvqd D,tos IOOvqd D,tos IOOvqd 0, tos IOOvqd D,tos IOOvqd D,tos IOOvqd O,tos IOOvqd D,tos IOOvqd D,tos IOOvqd D,tos IOOvqd D,tos movqd D, tos IOOvqd D,tos IOOvqd D,tos -l,rl,c12 acbd lprd sp,r2 restore [rD, rI, r2] clexit: ret 0 cl ram: » z • c.n N ..... ;any blocks to clear? ;no, exit now. ; save our work j ng regi sters ;here we set rD = rD + (rl * 128) + 4 ;length *= 2 ;*4 ;*8 ;*16 ;get starting point + 4 ; save current stack ;move to last double ;clear a double ; restore stack poi nter ; restore our saved regi sters TLlEE/9697-2 FIGURE 1 8-81 [II ..... C'I II) Z• e cmpqd beq .align movqd c12: movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd movqd I1Ilvqd movqd movqd I1Ilvqd movqd movqd movqd addd acbd clexlt: ret clram: O.rl clexit:w 4 O.OO(rO) O.04(rO) O.08(rO) O.12(rO) O.16(rO) O.20(rO) O.24(rO) O.28(rO) O.32(rO) O.36(rO) O.40(rO) O.44(rO) O.48(rO) O.52(rO) O.56(rO) O.60(rO) O.64(rO) O.68(rO) O.72(rO) O.76(rO) O.80(rO) O.84(rO) O.sa(rO) O.92(rO) O.96(rO) O.IOO(rO) O.I04(rO) O.I08(rO) O.1l2(rO) O.116(rO) O.120(rO) O.124(rO) $128.rO -1.rl.c12 0 ;any blocks to clear? ;no. ex1 t now. ;clear a double TL/EE/9697-3 FIGURE 2 8·82 r----------------------------------------------------------------.~ 4.0 TIMING RESULTS On the NS32016, NS32032 and NS32332, 4 clock cycles per write are required. To clear one page of 300 DPI 8% x 11 (1,056,000 bytes), for example, requires 264,000 double words to be written. The optimal time for this, using 100% of the bus bandwidth on a 16 bit bus, would be 528,000' 400 ns, or 211.2 ms, @ 10 MHz. All timing data assumes word aligned data (double word aligned for 32 bit bus). Unaligned data is permitted, but will reduce the speed somewhat. On the NS32332 (no wait states. @15 MHz, 32 bit bus), this code clears the full page image in 178 ms. On the NS32032 (no wait states. @10 MHz, 32 bit bus), this code clears the full page image in 324 ms. On the NS32016 (1 wait state. @10 MHz, 16 bit bus), this code clears the full page image in 509 ms. Z U, ...... I\) Doubling the block size (to 256 bytes) would increase the speed by 1%-2%, on the code sample. On the NS32532, a better approach is to use the register indirect method of referencing memory, as is shown in Figure 2. With this approach, the page memory can be cleared in 19 ms, assuming a no wait state 30 MHz system, with a 32 bit bus. The optimal time, using 100% of the bus bandwidth of the NS32532 (2 clock bus cycle) would be 264,000 • 66.6 ns, or 17.6 ms. • 8-83 co ,--------------------------------------------------------------------------------, N National Semiconductor Application Note 528 Dave Rand In Image Rotation Algorithm ~ Series 32000® Graphics Note 4 1.0 INTRODUCTION Fast image rotation of 90 and 270 degrees is important in printer applications, since both Portrait and Landscape orientation printing may be desired. With a fast image rotation algorithm, only the Portrait orientation fonts need to be stored. This minimizes ROM storage requirements. This application note shows a fast image rotation algorithm that may be used to rotate an 8 pixel by 8 line image. Larger image sizes may be rotated by successive application of the rotation primitive. ROTIMG deals with the 8 by 8 destination character as 8 sequential bytes in two registers (R2 and R3), as follows: Destination Font Matrix Low Address OxOOOOOOOO 00000000 OXOOOOOOOO 00000001 OxOOOOOOOO 00000100 OxOOOOOOOO 00000101 Entry Definition o 1 2 3 double 0,0 double 1,0 double 256,0 double 257,0 253 254 255 double 16842753,16843009 double Ox01010100,Ox01010101 double Ox01010101,Ox01010101 Each byte within each eight byte table entry represents one bit of output data. By indexing into the table, and ORing the table's contents with R2 and R3, we set the destination byte if the corresponding source bit is set. In this manner, the character is rotated. 2 3 5 6 Definition 0 1 2 3 Ox0101010101010001 253 254 Ox0101010101010100 255 Ox0101010101010101 The bytes in the table are standard LSB to MSB format. Since there is no quad-byte assembler pseudo-op (other than LONG, which is floating point), we must reverse the 'double' declaration to get the correct byte ordering, as is shown below: 2.0 DESCRIPTION This Rotate Image algorithm (developed by the Electronic Imaging Group at National Semiconductor) does a very fast 8 by 8 (64 bit) rotation of font data. Note also that this algorithm does not exclusively deal with fonts, but any 64 bit image. Larger images can be rotated by breaking the image down into 8 x 8 segments, and using a 'source warp' constant to index into the source data. The source data is pOinted to by RO on entry. A 'source warp' is contained in R 1, and is added to RO after each read of the source font. This allows the rotation of 16 by 16, 32 by 32 and larger fonts. 4 Entry = R2 = R3 4 8 3 2 7 6 3.0 IMPLEMENTATION What we are doing is setting the LS Bit of the destination byte if the source bit corresponding to that byte is set. We then shift the entire 64 bit destination left one bit, and repeat this process until we have set all eight bits, and processed all eight bytes of source information. The source data for an 8 by 8 character ">" appears below: 5 7 B High Address ROTIMG uses an external table (a pOinter to the start of the table is located in register R4) to speed the rotation and to minimize the code. This table consists of 256 64 bit entries, or a total of 2,048 bytes. The table may be located code (PC) or data (SB) relative. The complete table is at the end of this document (see Figure 1). A few entries of the table are reproduced above. 8-84 Character Table for' >' Byte Bit Number 01234567 001000000 100100000 200010000 300001000 400001000 500010000 600100000 701000000 Hex Value 02 04 08 10 10 08 04 02 » z The ROTIMG algorithm, expressed in 32000 code, appears below: I UI N , , I CD IRotate image emul ation code , , , , Inputs: RO = Source font address RI = Source font warp R4 = Rotate table address , , , Outputs: R2 = Destination font low 4 bytes (lsb->msb, 0 - 3) R3 = Destination font high 4 bytes (lsb->msb, 4 - 7) , , ROTIfotG: rot1p: save [rO,rS,r6,r7] movqd O,r2 r2,r3 movd r2,rS movd 8,r6 addr O(rO). rS movb rl,rO addd r2,r2 addd r3,r3 addd r4[rS:q] ,r7 addrd O(rl}, r2 ord 4(r7). r3 ord acbd -l.r6,rotlp [rO,rS,r6,r7] restore $0 ret 'save regi sters we wi 11 use 'clear destination font 'clear high bits of dest. 'clear high bits of temp. Ideal with 8 bytes of src. #get a byte of source #add source warp 'shift destination left one bit 'top 32 bi ts too 'get poi nter to table lor in low bits 'or in high bits land back for more 'restore regi sters 'and return TL/EE/969B-l Now, let's look at what happens to the data, given the example lont 01 Loop # Source Font R3 R2 02 hex 04 08 10 10 08 04 02 00000000 00000000 00000000 00000000 00000001 00000003 00000006 OOOOOOOC 00000018 00000000 00000100 00010200 01020400 02040800 04081000 09102000 12214000 24428100 0 2 3 4 5 6 7 8 '>'. ;0 destination ;Iirst bits in ;next bits in ;and so on ;Iast iteration Now, arranging this in the appropriate order gives us: Destination Character Table for' > " 90 degree Byte Bit Number 01234567 000000000 110000001 201000010 300100100 400011000 500000000 600000000 700000000 Destination Character Table for' >', 270 degree Hex Value Byte 00 81 42 24 18 00 00 00 Bit Number 01234567 000000000 100000000 200000000 300011000 400100100 501000010 610000001 700000000 Hex Value 00 00 00 18 24 42 81 00 Note that by re-ordering the output data, we may rotate 90 or 270 degrees. This may also be accomplished by using a different table (see Figure 2). 8-85 • 4.0 TIMING With unrolled 32000 code, the time for this algorithm is about 588 clocks on the 32016. Subtracting the font read time from this (about 113 clocks), the actual time for rotation is 475 ciJcks. On the 32332, the time is about 388 clocks. On the 32532, the unrolled loop time is 120-180 clocks, depending on burst mode availability. Repetition of the character data also affects the 32532, due to the data cache. See Figure 3 for an unrolled code listing. This table is used for the ROTIMG code. It is 256 entries of 64 bits each (8 bytes' 256 = 2048 bytes). There are two entries per line. This table is used for 90· rotation. rottab1: .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double 0x00000000,0x00000000,0x00000001,0x00000000 ;0,1 0x000001OO,0x00000000,0x0000010t,0x00000000 ;2,3 0x0001OOOO,0x00000000,0x0001OOOl,0x00000000 ;4,5 OxOOOlOlOO,OxOOOOOOOO,OxOOOlOlOl,OxOOOOOOOO ;6,7 OxOlOOOOOO,OxOOOOOOOO,OxOlOOOOOl,OxOOOOOOOO ;••• OxOlOOOlOO,0x00000000,0x01OOOlOl,0x00000000 OxOlOlOOOO,0x00000000,OxOl01OOO1,0x00000000 OxOlOlOlOO,0x00000000,OxOl010101,0x00000000 OxOOOOOOOO,OxOOOOOOOl,OxOOOOOOOl,OxOOOOOOOl OxOOOOOlOO,0x00000001,OxOOOOOlOl,0x00000001 OxOOOlOOOO,OxOOOOOOOl,OxOOOlOOO1,0x00000001 0x00010100,OxOOOOOOOl,OxOOOlO101,0x00000001 OxOlOOOOOO,0x00000001,0x01OOOOO1,0x00000001 0x01OOO1OO,OxOOOOOOOl,0x01OOO10l,0x00000001 OxOlOlOOOO,OxOOOOOOOl,0x01010001,0x00000001 OxOlOlOlOO,OxOOOOOOOl,OxOlOl010l,0x00000001 0x00000000,0x000001OO,OxOOOOOOOl,OxOOOOOlOO OxOOOOOlOO,OxOOOOOlOO,OxOOOOOlOl,OxOOOOOlOO OxOOOlOOOO,OxOOOOOlOO,OxOOOlOOOl,OxOOOOOlOO OxOOOlOlOO,OxOOOOOlOO,OxOOOlOlOl,OxOOOOOlOO OxOlOOOOOO,OxOOOOOlOO,0x01OOOOOl,OxOOOOOlOO OxOlOOOlOO,0x000001OO,OxOlOOOlOl,OxOOOOOlOO OxOlOlOOOO,OxOOOOOlOO,OxOlOlOOOl,OxOOOOOlOO OxOlO10100,0x000001OO,OxOlOlOlOl,OxOOOOOlOO OxOOOOOOOO,OxOOOOOlOl,OxOOOOOOOl,OxOOOOOlOl OxOOOOOlOO,OxOOOOOlOl,OxOOOOO101,OxOOOOOlOl OxOOOlOOOO,OxOOOOOlOl,OxOOOlOOOl,OxOOOOOlOl 0x00010100,OxOOOOOlOl,OxOOOlO101,OxOOOOOlOl OxOlOOOOOO,OxOOOOOlOl,OxOlOOOOOl,OxOOOOOlOl OxOlOOOlOO,OxOOOOOlOl,OxOlOOOlOl,OxOOOOOlOl 0x01010000,OxOOOOOlOl,OxOlOlOOOl,OxOOOOOlOl 0x0101O100,OxOOOOOlOl,OxOlOlO101,OxOOOOOlOl OxOOOOOOOO,OxOOOlOOOO,OxOOOOOOOl,OxOOOlOOOO OxOOOOOlOO,OxOOOlOOOO,OxOOOOOlOl,OxOOOlOOOO OxOOOlOOOO,OxOOOl0000,OxOOOlOOOl,OxOOOlOOOO 0x00010100,OxOOOlOOOO,OxOOOlOlOl,OxOOOlOOOO OxOlOOOOOO,OxOOOlOOOO,OxOlOOOOOl,OxOOOlOOOO OxOlOOOlOO,OxOOOlOOOO,OxOlOOOlOl,OxOOOlOOOO 0x01010000,OxOOOlOOOO,OxOlOlOOOl,OxOOOlOOOO 0x01010100,OxOOOlOOOO,0x01010101,OxOOOlOOOO 0x00000000,OxOOOl0001,OxOOOOOOOl,OxOOOlOOOl OxOOOOOlOO,OxOOOlOOOl,OxOOOOOlOl,OxOOOlOOOl OxOOOlOOOO,OxOOOlOOOl,OxOOOlOOOl,OxOOOlOOOl OxOOOlOlOO,0x0001OOO1,0x00010101,OxOOOlOOOl 0x01OOOOOO,0x0001OOO1,0x01OOOOOl,OxOOOlOOOl 0x01OOO1OO,0x0001OOO1,0x01OOO10l,OxOOOlOOOl 0x0101OOOO,0x0001OOOl,0x0101OOOl,0x0001OOOl OxOl0101OO,0x0001OOO1,0x01010101,OxOOOlOOOl OxOOOOOOOO,OxOOOlOlOO,OxOOOOOOOl,OxOOOlOlOO TL/EE/969B-2 FIGURE 1 8-86 r----------------------------------------------------------------------, .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double .double U1 N CIO OxOOOOOlOO,OxOOOlOlOO,OxOOOOOlOl,OxOOOlOlOO OxOOOlOOOO,0x00010100,OxOOOlOOOl,OxOOOlOlOO OxOOOlOlOO,OxOOOlOlOO,OxOOOlO101,OxOOOlOlOO OxOlOOOOOO,OxOOOlOlOO,OxOlOOOOOl,OxOOOlOlOO OxOlOOOlOO,OxOOOlOlOO,OxOlOOOlOl,OxOOOlOlOO 0x0101OOOO,0x000101OO,0x010lOOO1,0x000101OO OxOlOlOlOO,OxOOOl01OO,OxOlOlOlOl,OxOOOl01OO 0x00000000,OxOOOl010l,0x00000001,OxOOOlO101 OxOOOOOlOO,OxOOOlOlOl,OxOOOOOlOl,OxOOOlO101 OxOOOlOOOO,OxOOOlOlOl,OxOOOlOOOl,OxOOOlOlOl OxOOOlOlOO,OxOOOlOlOl,OxOOOlOlOl,OxOOOlO101 OxOlOOOOOO,OxOOOlOlOl,OxOlOOOOOl,OxOOOlOlOl OxOlOOOlOO,OxOOOlOlO1,OxOlOOO101,OxOOOlO101 0x01010000,OxOOOlOlOl,OxOlOlOOOl,OxOOOlO101 OxOlO10100,OxOOOlOlOl,OxOlOlOlOl,OxOOOlOlOl OxOOOOOOOO,OxOlOOOOOO,OxOOOOOOOl,OxOlOOOOOO OxOOOOOlOO,OxOlOOOOOO,OxOOOOOlOl,OxOlOOOOOO OxOOOlOOOO,OxOlOOOOOO,OxOOOlOOOl,OxOlOOOOOO 0x00010lOO,OxOlOOOOOO,0x00010101,OxOlOOOOOO OxOlOOOOOO,OxOlOOOOOO,OxOlOOOOOl,OxOlOOOOOO OxOlOOO1OO,OxOlOOOOOO,OxOlOOO101,OxOlOOOOOO OxOlOlOOOO,OxOlOOOOOO,OxOlOlOOOl,OxOlOOOOOO OxOlO10100,OxOlOOOOOO,OxOlO10101,OxOlOOOOOO OxOOOOOOOO,OxOlOOOOOl,OxOOOOOOOl,OxOlOOOOOl OxOOOOOlOO,OxOlOOOOOl,OxOOOOOlOl,OxOlOOOOOl OxOOOlOOOO,OxOlOOOOOl,OxOOOlOOOl,OxOlOOOOOl 0x00010100,OxOlOOOOOl,OxOOOlO101,OxOlOOOOOl OxOlOOOOOO,OxOlOOOOOl,OxOlOOOOOl,OxOlOOOOOl OxOlOOOlOO,OxOlOOOOOl,OxOlOOO101,OxOlOOOOOl 0x01010000,OxOlOOOOOl,OxOlOlOOOl,OxOlOOOOOl 0x01010100,OxOlOOOOOl,OxOl010101,OxOlOOOOOl 0x00000000,0x01OOO1OO,OxOOOOOOOl,0x01OOO1OO OxOOOOOlOO,OxOlOOOlOO,OxOOOOOlOl,OxOlOOOlOO OxOOOlOOOO,OxOlOOOlOO,OxOOOlOOOl,OxOlOOOlOO OxOOOlOlOO,OxOlOOOlOO,OxOOOl010l,OxOlOOOlOO OxOlOOOOOO,OxOlOOOlOO,OxOlOOOOOl,OxOlOOOlOO OxOlOOOlOO,OxOlOOOlOO,OxOlOOO101,OxOlOOOlOO OxOlOlOOOO,OxOlOOOlOO,OxOlOlOOOl,OxOlOOOlOO OxOlOlO100,OxOlOOOlOO,OxOlOlOlOl,OxOlOOOlOO 0x00000000,OxOlOOOlOl,OxOOOOOOOl,OxOlOOO101 OxOOOOOlOO,OxOlOOO10l,OxOOOOOlOl,OxOlOOOlOl OxOOOlOOOO,OxOlOOOlOl,OxOOOlOOOl,OxOlOOOlOl OxOOOlOlOO,OxOlOOOlOl,OxOOOlO101,OxOlOOO101 OxOlOOOOOO,OxOlOOOlOl,OxOlOOOOOl,OxOlOOOlOl OxOlOOO1OO,OxOlOOOlOl,OxOlOOO101,OxOlOOO101 OxOlOlOOOO,OxOlOOOlOl,OxOlOlOOOl,OxOlOOO101 0x01010100,OxOlOOO101,OxOlOlO101,OxOlOOOlOl 0x00000000,OxOl01OOOO,OxOOOOOOOl,0x010lOOOO OxOOOOOlOO,OxOlOlOOOO,0x0000010l,OxOlOlOOOO OxOOOlOOOO,OxOlOlOOOO,OxOOOlOOOl,OxOlOlOOOO OxOOOlO100,OxOlOlOOOO,0x00010101,OxOlOlOOOO OxOlOOOOOO,OxOlOlOOOO,OxOlOOOOOl,OxOlO10000 OxOlOOOlOO,0x01010000,OxOlOOOlOl,OxOlOlOOOO OxOlOlOOOO,OxOl01OOOO,OxOlOlOOOl,OxOlOlOOOO OxOlOlOlOO,OxOlOlOOOO,OxOlOlO101,OxOlOlOOOO TL/EE/9698-3 FIGURE 1 (Continued) 8-87 ~ z, • co N r---------------------------------------------------------------------------------, 1.1) z• msb, 0 - 3) R3 = Destination font high 4 bytes (lsb->msb, 4 - 7} ROTlMG: movqd movd movd movb addd addd addd addr ord ord movb addd addd addd addr ord ord movb addd addd addd addr ord ord movb addd addd addd addr ord ord movb addd D,r2 r2,r3 r2,rS O(rD), rS rl,rO r2,r2 r3,r3 r4[r5:q] ,r6 O(r6),r2 4(r6),r3 O(rO),rS rl,rO r2,r2 r3,r3 r4 [rS: q] ,r6 O(r6),r2 4(r6), r3 O(rD),r5 rl,rO r2,r2 r3,r3 r4 [r5:q]. rS O(rS),r2 4(rS),r3 O(rO),r5 rl,rO r2,r2 r3,r3 r4[r5:q] ,rS O(rS),r2 4(r6),r3 O(rO), r5 rl,rO 'clear destination font 'clear high bits of dest. 'clear high bits of temp. Iget a byte of source #add source warp Ishift destination left one #top 32 bi ts too 'get poi nter to table lor in low bits lor in high bits 'get a byte of source 'add source warp 'shift destination left one #top 32 bits too 'get poi nter to table 'or in low bits lor in high bits Iget a byte of source ladd source warp Ishift destination left one #top 32 bi ts too 'get poi nter to table 'or in low bits 'or in high bits 'get a byte of source ladd source warp Ishi ft destination left one Itop 32 bi ts too Iget poi nter to table lor in low bits lor in high bits Iget a byte of source ladd source warp bit bit bit bit TL/EE/969B-B FIGURE 3 8-91 co . C'I In Z z U1 N CD Comments Suggest changing algorithm to use ADDPi Suggest changing algorithm to use ADDPi/SUBPi Suggest changing algorithm to use SUBPi ADDCi ADDi ANDi CHECKi BSR/JSR MOVXBW BICPSRB$1 BICPSRW $Ox800 CMPi CMPSi MOVXWD ADDQi-1* DIVi ENTER[reglistl,d WAIT DIVi/QUOi You may directly sign-extend data while moving Usually not required Direction encoded within string instructions Supervisor mode instruction Usually not required Many options available You may directly sign-extend data while moving Suggest changing algorithm to use ADDPi Suggest changing algorithm to use SUBPi Watch for flag usage Note: Series 32000 uses signed division Builds stack frame, saves regs, allocates stack space Usually used for Floating Point-see Series 32000 FP instructions DIVi rounds towards -infinity, QUOi to zero MUll ADDQi 1* SVC FLAG RETI $0 BHI BHS BLT BLS BEQ BGT BGE BLT BLE BR/JUMP BNE Series 32000 uses memory-mapped I/O Watch for flag usage Series 32000 uses memory mapped I/O Not exact conversion, but usually used to call O/S Trap on overflow Causes Interrupt Acknowledge cycle Unsigned comparison Unsigned comparison Unsigned comparison Unsigned comparison Use CMPQi 0, followed by BEQ Equal comparison Signed comparison Signed comparison Signed comparison Signed comparison Not Equal comparison Subroutines should be used for these instructions as most Series 32000 code will not need these operations. SPRB UPSR,xxx may be useful Segment registers not required on Series 32000 AD DR EXlT[reglistl MOVilADDQD ACBi-1 Restores regs, unallocates frame and stack Segment registers not required SBITli, CBITIi interlocked instructions MOV instruction followed by address increment ACBi may use memory or register 8-97 • G) '" II) Z• CC 80x86 LOOPE LOOPNE LOOPNZ LOOPZ MOV MOVS MUL NEG NOP NOT OR OUT OUTS POP POPA POPF PUSH PUSHA PUSHF RCL RCR REP RET ROL ROR SAHF SAL SAR SBB SCAS SHL SHR STC STD STI STOS SUB TEST WAIT XCHG XLAT XOR Series 32000 TABLE I (Continued) Comments BEQ followed by ACBi may be used BNE followed by ACBi may be used BNE followed by ACBi may be used BEQ followed by ACBi may be used MOVi MOVSi MULi NEGi NOP COMi ORi MOViTOS, RESTORE [rO,r1 .• r7] LPRB UPSR,TOS MOVixx,TOS SAVE [rO,r1 .. r7] SPRB UPSR,TOS ROTio ROTi" RET ROTi ROTi ASHi ASHi SUBCi SKPSi LSHi LSHi BISPSRB$1 BISPSRW $Ox800 MOVilADDQD SUBi Many options available Series 32000 uses signed multiplication Two's complement One's complement Series 32000 uses memory mapped 1/0 Series 32000 uses memory mapped 1/0 TOS addressing mode auto increments/decrements SP Restores list of registers User mode loads 8 bits, supervisor 16 bits of PSR Any data may be moved to TOS Saves list of registers User mode stores 8 bits, supervisor 16 bits of PSR Does not rotate through carry Does not rotate through carry Series 32000 string instructions use 32-bit counts Rotates work in both directions LPRB UPSR,xx may be useful Arithmetic shift Arithmetic shift works both directions Many options available Logical shift Logical shift works both directions Direction is encoded in string instructions Supervisor mode instruction MOV instruction followed by address increment TBITi may be used as a substitute MOVi x[RO:b], XORi MOVi x,temp; MOVi y,x; MOVi temp,y Scaled index addressing mode 8-98 r------------------------------------------------------------------o~ ~~ National Semiconductor Application Note 530 Dave Rand Bit Mirror !RolUlitoll1le; Series 32000® Gli"a~hDcs Note 7 1.0 INTRODUCTION The bit mirror routine is designed to reorder the bits in an image. The bits are swapped around a fixed point, that being one half of the size of the data, as is shown for the byte mirror below. These routines can be used for conversion of 68000 based data. 2.0 DESCRIPTION Source Result of Mirror 7 6 Bit Number 5 4 3 2 I 0 0 I I 0 0 1 0 0 1 The "mirror", in this case, is between bits 3 and 4. 1 0 0 I Hex Value 1 0 B2 4D Several different algorithms are available for the mirror operation. The best algorithm to mirror a byte takes 20 clocks on a NS32016 (about 2.5 clocks per bit), and uses a 256 byte table to do the mirror operation. The table is reproduced at the end of this document. To perform a byte mirror, the following code may be used. The byte to be mirrored is in RO, and the destination is to be Rl. MOVB mirtab[rO:b] ,rl or·ti rror a byte TLlEE/9700-1 An extension of this algorithm is used to mirror larger amounts of data. To mirror a 32·bit block of data from one location to another, the following code may be used. Register RO points to the source block, register R I points to the destination. R2 is used as a temporary value. MOYlBO MOVB MOVB MOVB MOVB MOVB MOVB MOVB O(rO).r2 mirtab[r2:b] ,3(rt) l(rO). r2 mi rtab [r2: b] ,2 (rl) 2(rO).r2 mirtab[r2:b] ,l(rl) 3(rO),r2 mirtab[r2:b] .O(rl) #get fi rst byte iJstore in last place #get next byte tlstore in next place #get the thi rd byte Ustore in next place Uget the 1ast byte Ilfirst place TL/EE/9700-2 This code uses 33 bytes of memory, and just 169 clocks to execute. Larger blocks of data can be mirrored with this method as well, with each additional byte taking about 40 clocks. Registers can also be mirrored with this method, with just a few more instructions. To mirror RO to RI, for example, the following code could be used. R2 is used as a temporary variable. MOVlBO MOVa LSHD LSHD MOVa MOVB LSHD LSHD MOVB MOVB LSHD LSHD MOVB MOYB rO. r2 mi rtab [r2: bJ, rl $8.rl $-B. rO rO. r2 mi rtab [r2: b] ,rl $8. rl $-8. rO rO. r2 mi rtab [r2: b] •rl SB.rl $-8. rO rO. r2 mi rtab [r2: b] •rl ;1get 1sbyte Urni rror the byte (!move into higher byte of destination (land of source #get 1sbyte I,'mi rror the byte (!move into higher byte of destination Hand of source Hget 1sbyte Urni rror the byte #move into higher byte of destination #and of source #get 1sbyte ~'mi rror the byte TL/EE/9700-3 8·99 C) C") II) z• cc r---------------------------------------------------------------------------------~ This code occupies 49 bytes, and executes in 286 clocks on an NS32016. If space is at a premium, a shorter table may be used, at the expense of time. Each nibble (4 bits) instead of each byte is processed. This means that the table only requires 16 entries. To mirror a byte in RO to R1, the following code can be used. R2 is used as a temporary variable. MOVB ANOO MOVB LSHD LSHO MOVB ANDD ORB rO,r2 $15, r2 ml rtb16[r2:b], rl $4,rl $-4, rO rO,r2 $15, r2 mi rtb16[r2:b], rl 'get 1sbyte #mask to get 1s nibble #ml rror the nl bb1e 'high nibble of destination land of souree 'get 1sbyte #mask to get 1s nibble #mIrror the ni bb1e TL/EE/9700-4 This code requires 32 bytes of memory, and executes in 125 clock cycles on an NS32016. A slightly faster time (100 clocks) may be obtained by adding a second table for the high nibble, and eliminating the LSHD 4,r1 instruction. TABLES MIRTAB is a table of all possible mirror values of 8 bits, or 256 bytes. MIRTB16 is a table of all possible mirror values of 4 bits, or 16 bytes. These tables should be aligned for best performance. They may reside in code (PC relative), or data (S8 relative) space. mirtab: •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte •byte . byte •byte •byte •byte •byte . byte . byte •byte •byte •byte •byte . byte . byte . byte OxOO,Ox80, Ox40,OxeO, Ox20, OxaO, Ox60,OxeO, OxlO, 0x90, OxSO OxdO,Ox30,OxbO,Ox70,OxfO OxOO , Ox88 , Ox48 ,OxeB, Ox2B, Oxa8, Ox6B ,0xeB, OxlB, Ox9B, OxSB Oxd8 ,Ox38, OxbB,Ox7B,Oxf8 Ox04, Ox84, Ox44 , Oxe4, Ox24 , Oxa4 , Ox64 , Oxe4, Ox14, Ox94, Ox54 Oxd4, Ox34, Oxb4, Ox74, Oxf4 OXOC, Ox8e, Ox4c, Oxee, Ox2e, Oxae, Ox6c, Oxee, Oxle, Oxge, Ox5c Oxdc, Ox3e, Oxbc, Ox7e, Oxfe Ox02 ,OxB2, Ox42 , Oxe2, Ox22 ,Oxa2, Ox62 ,Oxe2, Ox12, Ox92 , OxS2 Oxd2 ,Ox32, Oxb2, Ox72, Oxf2 OxOa ,OxBa, Ox4a, Oxea, Ox2a, Oxaa, Ox6a ,Oxea, Oxla, Ox9a, OxSa Oxda,Ox3a, Oxba, Ox7a, Ox fa Ox06 ,OxB6, Ox46 , Oxe6, Ox26, Oxa6, Ox66 , Oxe6, Ox16, Ox96, OxS6 Oxd6,Ox36,Oxb6,Ox76,Oxf6 OxOe, OxBe, Ox4e, Oxee, Ox2e ,Oxae, Ox6e ,Oxee, Oxle, Oxge, OxSe Oxde, Ox3e, Oxbe, Ox7e, Oxfe OxOl,OxBl, Ox4l ,Oxel ,Ox2l ,Oxal,Ox6l,Oxel,Oxll ,0x9l, Ox5l Oxdl,Ox3l, Oxbl, Ox71, Oxfl Ox09 ,OxB9, Ox49 , Oxe9, Ox29 ,Oxa9, Ox69 ,Oxe9, Oxl9, Ox99 , OxS9 Oxd9, Ox39 , Oxb9, Ox79, Oxf9 OxOS, OxBS, Ox45, OxeS, Ox2S ,Oxa5, Ox65, Oxe5, OxlS, Ox9S, OxSS OxdS,Ox35,OxbS,Ox75,Oxf5 OxOd,OxBd, Ox4d, Oxed, Ox2d, Oxad, OxSd, Oxed, Oxld, Ox9d, OxSd Oxdd,Ox3d,Oxbd,Ox7d,Oxfd Ox03 ,Ox83, Ox43 , Oxe3, Ox23 , Oxa3, Ox63 , Oxe3, Ox13, Ox93, OxS3 Oxd3, Ox33, Oxb3, Ox73, Oxf3 OxOb,Ox8b, Ox4b, Oxeb, Ox2b, Oxab, Ox6b,Oxeb, Oxlb, Ox9b, OxSb Oxdb,Ox3b,Oxbb,Ox7b,Oxfb Ox07 ,OxB7, Ox47 ,Oxe7 ,Ox27 ,Oxa7 ,Ox67 ,Oxe7, Oxl7 ,Ox97, Ox57 Oxd7 ,Ox37 ,Oxb7 ,Ox77 ,Oxf7 OxOf, Ox8f, Ox4f ,Oxef, Ox2f, Oxaf, Ox6f ,Oxef, Oxl f, Ox9f, OxSf Oxdf,Ox3f,Oxbf,Ox7f,Oxff •byte . byte OxO, Ox8, Ox4, Oxe, Ox2, Oxa, Ox6, Oxe, Oxl, Ox9, Ox5 Oxd,Ox3,Oxb,Ox7, Oxf mlrtb16: 8-100 TL/EE/9700-5 Section 9 NSC800 Family Section 9 Contents NSC800 High-Performance Low-Power CMOS Microprocessor. . . . . . . . . . . . . . . . . . . . . . . . . . . NSC810A RAM-I/O-Timer........................................................... NSC831 Parallel 1/0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NSC888 NSC800 Evaluation Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Comparison Study NSC800 vs. 8085/80C85/Z80/Z80 CMOS............................ Software Comparison NSC800 vs. 8085, Z80 .......................................... 9·2 9-3 9-76 9-97 9-111 9-115 9-118 z ~ ~National CD Q Q ~ Semiconductor microCMOS NSC800™ High-Performance Low-Power CMOS Microprocessor General Description Features The NSC800 is an 8-bit CMOS microprocessor that functions as the central processing unit (CPU) in National Semiconductor's NSC800 microcomputer family. National's microCMOS technology used to fabricate this device provides system designers with performance equivalent to comparable NMOS products, but with the low power advantage of CMOS. Some of the many system functions incorporated on the device, are vectored priority interrupts, refresh control, power-save feature and interrupt acknowledge. The NSC800 is available in dual-in-line and surface mounted chip carrier packages. • Fully compatible with Z801i> instruction set: Powerful set of 158 instructions 10 addressing modes 22 internal registers • Low power: 50 mW at 5V Vee • Unique power-save feature • Multiplexed bus structure • Schmitt trigger input on reset • On-chip bus controller and clock generator • Variable power supply 2.4V-6.0V • On-Chip 8-bit dynamic RAM refresh circuitry • Speed: 1.0 instruction cycle at 4.0 MHz NSC800-4 4.0 MHz NSC800-3 2.5 MHz NSC800-1 1.0 MHz • Capable of addressing 64k bytes of memory and 256 1/0 devices • Five interrupt request lines on-chip The system designer can choose not only from the dedicated CMOS peripherals that allow direct interfacing to the NSC800 but from the full line of National's CMOS products to allow a low-power system solution. The dedicated peripherals include NSC810A RAM I/O Timer, NSC858 UART, and NSC831 1/0. '"'S All devices are available in commercial, industrial and military temperature ranges along with two added reliability flows. The first is an extended burn in test and the second is the military class C screening in accordance with Method 5004 of MIL-STD-883. Block Diagram D'I81 B'IBI F' l' E' C' 181 181 181 IBI A H D B F l E C 181 181 181 181 H" 181 IBI 181 181 181 REGISTER ARRAY 1161 IX IY 1161 R 181 1181 STACK POINTER 1161 PROGRAM COUNTER 1161 ClK OUT INCREMENTER oECREMENTER (16) ADDRESS LATCH iiii RFSH XIN_ TIMING AND CONTROL XoUT_ WR ALE Pi SO BACK RESET RESET iN OUT ADDRESS 8US ADDRESS/DATA BUS TL/C/5171-73 9-3 Table of Contents 1.0 ABSOLUTE MAXIMUM RATINGS 9.0 TIMING AND CONTROL 2.0 OPERATING CONDITIONS 9.5 Bus Access Control 3.0 DC ELECTRICAL CHARACTERISTICS 9.6 Interrupt Control 4.0 AC ELECTRICAL CHARACTERISTICS NSC800 SOFTWARE 5.0 TIMING WAVEFORMS 10.0 INTRODUCTION NSC800 HARDWARE 11.0 ADDRESSING MODES 6.0 PIN DESCRIPTIONS 11.1 Register 6.1 Input Signals 11.2 Implied 6.2 Output Signals 11.3 Immediate 6.3 Input/Output Signals 11.4 Immediate Extended 11.5 Direct Addressing 7.0 CONNECTION DIAGRAMS 11.6 Register Indirect 8.0 FUNCTIONAL DESCRIPTION 11.7 Indexed 8.1 Register Array 11.8 Relative 8.2 Dedicated Registers 11.9 Modified Page Zero 8.2.1 Program Counter 11.10 Bit 8.2.2 Stack Pointer 12.0 INSTRUCTION SET 8.2.3 Index Register 8.2.4 Interrupt Register 12.1 Instruction Set Index/Alphabetical 8.2.5 Refresh Register 12.2 Instruction Set Mnemonic Notation 12.3 Assembled Object Code Notation 8.3 CPU Working and Alternate Register Sets 8.3.1 CPU Working Registers 12.4 8-Bit Loads 8.3.2 Alternate Registers 12.5 16-Bit Loads 12.6 8-Bit Arithmetic 12.7 16-Bit Arithmetic 8.4 Register Functions 8.4.1 Accumulator 12.8 Bit Set, Reset, and Test 8.4.2 F Register-Flags 12.9 Rotate and Shift 8.4.3 Carry (C) 12.1 0 Exchanges 8.4.4 Adds/Subtract (N) 12.11 Memory Block Moves and Searches 8.4.5 Parity/Overflow (PIV) 12.12 Input/Output 8.4.6 Half Carry (H) 12.13 CPU Control 8.4.7 Zero Flag (Z) 12.14 Program Control 8.4.8 Sign Flag (S) 12.15 Instruction Set: Alphabetical Order 8.4.9 Additional General Purpose Registers 12.16 Instruction Set: Numerical Order 8.4.10 Alternate Configurations 8.5 Arithmetic Logic Unit (ALU) 13.0 DATA ACQUISITION SYSTEM 8.6 Instruction Register and Decoder 14.0 NSC800M/883B MIL STD 883/CLASS C SCREENING 9.0 TIMING AND CONTROL 15.0 BURN-IN CIRCUITS 9.1 Internal Clock Generator 16.0 ORDERING INFORMATION 9.2 CPU Timing 17.0 RELIABILITY INFORMATION 9.3 Initialization 9.4 Power Save Feature 9-4 z 1.0 Absolute Maximum Ratings If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Storage Temperature Voltage on Any Pin with Respect to Ground ~ NSC800-3 ~ TA NSC800-4 7V ~ TA TA TA 300'C Parameter TA TA 1W 3.0 DC Electrical Characteristics Vee = TA TA -0.3V to Vee +0.3V lead Temp. (Soldering, 10 seconds) Symbol NSC800-1 -65'Cto + 150'C Maximum Vee Power Dissipation (J) 2.0 Operating Conditions (Note 1) 5V ± 10%, GND = = = = = = = = = (") «XI o O'C to +70'C o -40'C to +85'C O'C to +70'C -40'C to +85'C -55'C to + 125'C O'C to +70'C - 40'C to + 85'C -55'Cto +125'C OV, unless otherwise specified. Max Units VIH logical 1 Input Voltage 0.8 Vee Vee V VIL logical 0 Input Voltage 0 0.2 Vee VHY Hysteresis at RESET IN input VOHl logical 1 Output Voltage VOH2 logical 1 Output Voltage VaLl logical 0 Output Voltage VOL2 logical 0 Output Voltage = 5V lOUT = -1.0 mA lOUT = -10/LA lOUT = 2mA lOUT = 10 /LA IlL Input leakage Current IOL lee lee Active Supply Current lee Active Supply Current IQ Quiescent Current Ips Conditions Min 0.25 Vee Typ 0.5 V V 2.4 V Vee -0.5 V 0 0.4 0 0.1 V 0:;;; VIN:;;; Vee -10.0 10.0 /LA Output leakage Current 0:;;; VIN:;;; Vee -10.0 Active Supply Current = 0, f(XIN) = 2 MHz, TA = 25'C lOUT = 0, f(XIN) = 5 MHz, T A = 25'C lOUT = 0, f(XIN) = 8 MHz, T A = 25'C lOUT = 0, PS = 0, VIN = OorVIN = Vee f(XIN) = 0 MHz, T A = 25'C, XIN = 0, ClK = lOUT = 0, PS = 0, VIN = 0 orVIN = Vee f(XIN) = 5.0 MHz, T A = 25' Power-Save Current 8 lOUT 1 V 10.0 /LA 11 rnA 10 15 rnA 15 21 rnA 2 5 rnA 5 7 mA CIN Input Capacitance 6 10 pF COUT Output Capacitance 8 12 pF Vee Power Supply Voltage 5 6 V (Note 2) 2.4 Note 1: Absolute Maximum Ratings indicate limits beyond which permanent damage may occur. Continuous operation at these limits is not intended and should be limited to those conditions specified under DC Electrical Characteristics. Note 2: CPU operation at lower voltages will reduce the maximum operating speed. Operation at voltages other than 5V ± 10% is guaranteed by design, not tested. 9-5 o o ~ Z 4.0 AC Electrical Characteristics Vcc = Symbol Parameter NSC800·1 5V ± 10%, GND = OV, unless otherwise specified NSC800 NSC800·4 Min Max Min Max Min Max Units Notes Ix Period at XIN and XOUT Pins 500 3333 200 3333 125 3333 ns T Period at Clock Output (= 2tx) 1000 6667 400 6667 250 6667 ns tR Clock Rise Time 110 110 80 ns Measured from 10%-90% of signal IF Clock Fall Time 70 60 50 ns Measured from 10%-90% of signal tL Clock Low Time 435 150 85 ns 50% duty cycle, square wave input on XIN tH Clock High Time 450 145 75 ns 50% duty cycle, square wave inputonXIN tACC(OP) ALE to Valid Data 1340 490 300 ns Add t for each WAIT STATE tACC(MR) ALE to Valid Data 1875 620 375 ns tAFR AD(0-7) Float after RD Falling 0 0 0 ns tBABE BACK Rising to Bus Enable 1000 400 250 ns tBABF BACK Falling to Bus Float 50 ns tBACL BACK Fall to CLK Falling 50 50 125 425 55 ns ns tSRH BREQ Hold Time tSRS BREQ Set-Up Time tCAF Clock Falling ALE Falling 0 70 0 65 0 55 ns leAR Clock Rising to ALE Rising 0 100 0 100 0 80 ns leRO Clock Rising to Read Rising 100 90 80 ns leRF Clock Rising to Refresh Falling 80 70 60 ns tOAI ALE Failing to INTA Falling 445 tOAR ALE Falling to RD Falling 400 575 160 250 90 160 ns tOAW ALE Falling to WR Falling 900 1010 350 420 200 255 ns to(BACK)1 ALE Falling to BACK Falling to(BACK)2 BREQ Rising to BACK Rising to(l) ALE Falling to INTR, NMI, RSTA-C, PS, BREQ, Inputs Valid tOPA Rising PS to Falling ALE to(WAIn ALE Falling to WAIT Input Valid 0 0 0 100 50 45 160 2460 500 1610 200 1360 500 1685 200 700 760 250 9-6 ns 600 125 475 550 ns 85 975 125 Add t for each WAIT STATE ns Add t for each WAIT state Add t for opcode fetch cycles 475 ns 250 ns Add t for each WAIT state Add t for opcode fetch cycles 500 ns See Figure 14 also 125 ns z 4.0 AC Electrical Characteristics Vcc = NSC800-1 5V ± 10%, GND NSC800 = OV, unless otherwise specified (Continued) NSC800-4 Symbol Parameter TH(ADH)1 A(8-15) Hold Time During Opcode Fetch 0 0 0 ns TH(ADH)2 A(8-15) Hold Time During Memory or 10, RD and WR 400 100 60 ns Min Max Min Max Min Units Max TH(ADL) AD(0-7) Hold Time 100 60 30 ns THfWD) Write Data Hold Time 400 100 75 ns tlNH Interrupt Hold Time 0 0 0 ns tiNS Interrupt Set-Up Time 100 50 45 ns tNMI Width of NMllnput 50 30 20 ns tRDH Data Hold after Read 0 0 0 ns tRFLF RFSH Rising to ALE Falling 60 50 40 ns tRL(MR) RD Rising to ALE Rising (Memory Read) 390 100 45 ns \s(AD) AD(0-7) Set-Up Time 300 45 40 ns \s(ALE) A(8-15), SO, 51, 101M Set-UpTime 350 70 50 ns \sfWD) Write Data Set-Up Time 385 75 30 ns tW(ALE) ALE Width 430 130 100 ns tWH WAIT Hold Time 0 0 0 ns tw(l) Width of INTR, RSTA-C, PS,BREQ 500 200 125 ns tW(INTA) INTA Strobe Width 1000 400 200 ns tWL WR Rising to ALE Rising 450 130 70 ns tw(RD) Read Strobe Width During Opcode Fetch 960 360 185 ns ns tw(RFSH) Refresh Strobe Width 1925 725 395 tws WAIT Set-Up Time 100 70 55 ns tW(WAIT) WAIT Input Width 550 250 175 ns tW(WR) Write Strobe Width 985 390 220 ns tXCF XIN to Clock Falling 25 100 20 95 5 XIN to Clock Rising 25 85 20 85 5 tXCR Note 1: Test conditions: t = 1000 ns for NSC800·1, 400 ns for NSC800, 250 ns for NSC800·4. Note 2: Oulputtlmings are measured with a purely capacitive load of 100 pF. 9-7 Notes 80 ns 80 ns Add two t states for first INTA of each interrupt response string Add t for each WAIT state Add t for each WAIT State Add t/2 for Memory Read Cycles Add t for each WAIT state ~ CD o o C) .-------------------------------------------------------------------------------~ C) ~ 5.0 Timing Waveforms (J) z Opcode Fetch Cycle ~-------------------------Ml------------------------~ ------I~----T2 -----I-----T3 ------t------·T4 _ _ X1N ClK ALE A(8-15) 101M. 50.51 WAIT ---"1'---+--....:.-~+_--+_"f'--~-------------+__ .............. ....... --~ ..................... ~ ....... -+~~~~ .............................................................................-- ~ ·~-~w~----------------------------------------- -----!-:---',.. TLlC/5171-3 Memory Read and Write Cycle ClK ALE A(8-15) ---'1'---+---+--+-.;........;..-:.-------!-"["'\,--- Rii L-l::~~!G;::l=~~===~~~~~,l--- AD(0-7) - - -....... (WRITE) ----'l''--''''"'''":'-.;..-..:....If1'o-+_---------''fI'+--- WAIT __............................+--....... -J.~ ---.!!R~il0 INTA. RST AC PS- 101M. SO. 51 IO/ij=O.SO=~=.SI=~= ____-J~..............- -.......- -.......- -..............~~~.....................~ Tl/C/5171-4 9·8 5.0 Timing Waveforms z en o (Continued) CI) o o Interrupt-Power-Save Cycle eLK ALE INTEl, HSTA, RSTB.RSTC~~::::~~::~~::~::~=+~:::::::::::E~~r==;,;rr.~=rj:::::::::: iNTA INDTE 21 TLlC/5171-5 Note 1: This t state is the last t state of the last M cycle of any instruction. Note 2: Response to INTR inpul. Note 3: Response to PS inpul. Bus Acknowledge Cycle ANY t.1 CYClE--<+---- BUS AVAILABLE STATES - - -.. ClK AD (0 - 7) A(B-15) _ _ _ _I -_ _ _ _ _-+_~ I:::r_t_BA_BE_ __ -- -- - -- - -------- ~L. _ _ _ __ 1- 101M. RD. ViR ALE' TL/C/5171-6 "Waveform not drawn to proportion. Use only for specifying test pOints. AC Testing Input/Output Waveform AC Testing Load Circuit TL/C/5171-7 TL/C/5171-8 9-9 o o CO o(J) z r--------------------------------------------------------------------------, NSC800 HARDWARE 6.0 Pin Descriptions 6.1 INPUT SIGNALS CPU stops executing at the end of current instruction and keeps itself in the low-power mode. Normal operation resumes when PS returns high (see Power Save Feature description). Reset Input (RESET IN): Active low. Sets A (8-15) and AD (0-7) to TRI-STATE® (high impedance). Clears the contents of PC, I and R registers, disables interrupts, and activates reset out. CRYSTAL (XIN, XOUT): XIN can be used as an external clock input. A crystal can be connected across XIN and XOUT to provide a source for the system clock. Bus Request (BREQ): Active low. Used when another device requests the system bus. The NSC800 recognizes BREQ at the end of the current machine cycle, and sets A(8-15), AD(0-7), 10/M, RD, and WR to the high impedance state. RFSH is high during a bus request cycle. The CPU acknowledges the bus request via the BACK output signal. 6_2 OUTPUT SIGNALS Bus Acknowledge (BACK): Active low. BACK indicates to the bus requesting device that the CPU bus and its control signals are in the TRI-STATE mode. The requesting device then commands the bus and its control signals. Non-Maskable Interrupt (NMI): Active low. The non-maskable interrupt, generated by the peripheral device(s), is the highest priority interrupt. The edge sensitive interrupt requires only a pulse to set an internal flip-flop which generates the internal interrupt request. The NMI flip-flop is monitored on the same clock edge as the other interrupts. It must also meet the minimum set-up time spec for the interrupt to be accepted in the current machine instruction. When the processor accepts the interrupt the flip-flop resets automatically. Interrupt execution is independent of the interrupt enable flip-flop. NMI execution results in saving the PC on the stack and automatic branching to restart address X'0066 in memory. Address Bits 8-15 [A(8-15)1: Active high. These are the most significant 8 bits of the memory address during a memory instruction. During an I/O instruction, the port address on the lower 8 address bits gets duplicated onto A(815). During a BREQ/BACK cycle, the A(8-15) bus is in the TRI-STATE mode. Reset Out (RESET OUT): Active high. When RESET OUT is high, it indicates the CPU is being reset. This signal is normally used to reset the peripheral devices. Input/Output/Memory (101M): An active high on the 101M output signifies that the current machine cycle is an input! output cycle. An active low on the 10/M output signifies that the current machine cycle is a memory cycle. It is TRISTATE during BREQ/BACK cycles. Restart Interrupts, A, B, C (RSTA, RSTB, RSTC): Active low level sensitive. The CPU recognizes restarts generated by the peripherals at the end of the current instruction, if their respective interrupt enable and master enable bits are set. Execution is identical to NMI except the interrupts vector to the following restart addresses: Restart Name Address (X') 0066 RSTA 003C 0034 RSTB RSTC 002C INTR (Mode 1) 0038 Refresh (RFSH): Active low. The refresh output indicates that the dynamic RAM refresh cycle is in progress. RFSH goes low during T3 and T4 states of all M1 cycles. During the refresh cycle, AD(0-7) has the refresh address and A(B-15) indicates the interrupt vector register data. RFSH is high during BREQ/BACK cycles. Address latch Enable (ALE): Active high. ALE is active only during the T1 state of any M cycle and also T3 state of the M1 cycle. The high to low transition of ALE indicates that a valid memory, 1/0 or refresh address is available on the AD(0-7) lines. Read Strobe (RD): Active low. The CPU receives data via the AD(0-7) lines on the trailing edge of the RD strobe. The RD line is in the TRI-STATE mode during BREQ/BACK cycles. The order of priority is fixed. The list above starts with the highest priority. Interrupt Request (INTR): Active low, level sensitive. The CPU recognizes an interrupt request at the end of the current instruction provided that the interrupt enable and master interrupt enable bits are set. INTR is the lowest priority interrupt. Program control selects one of three response modes which determines the method of servicing INTR in conjunction with INTA. See Interrupt Control. Write Strobe (WR): Active low. The CPU sends data via the AD(0-7) lines while the WR strobe is low. The WR line is in the TRI-STATE mode during BREQ/BACK cycles. Clock (elK): ClK is the output provided for use as a system clock. The ClK output is a square wave at one half the input frequency. Wait (WAIT): Active low. When set low during RD, WR or INTA machine cycles (during the WR machine cycle, wait must be valid prior to write gOing active) the CPU extends its machine cycle in increments of t (wait) states. The wait machine cycle continues until the WAIT input returns high. Interrupt Acknowledge (INTA): Active low. This signal strobes the interrupt response vector from the interrupting peripheral devices onto the AD(0-7) lines. INTA is active during the M1 cycle immediately following the t state where the CPU recognized the INTR interrupt request. The wait strobe input will be accepted only during machine cycles that have RD, WR or INTA strobes and during the machine cycle immediately after an interrupt has been accepted by the CPU. The later cycle has its RD strobe suppressed but it will still accept the wait. Two of the three interrupt request modes use INTA. In mode 0 one to four INTA signals strobe a one to four byte instruction onto the AD(0-7) lines. In mode 2 one INTA signal strobes the lower byte of an interrupt response vector onto the bus. In mode 1, INTA is inactive and the CPU response to INTR is the same as for an NMI or restart interrupt. Power-Save (PS): Active low. PS is sampled during the last t state of the current instruction cycle. When PS is low, the 9-10 z o co en 6.0 Pin Descriptions (Continued) Status (SO, S1): Bus status outputs provide encoded information regarding the current M cycle as follows' Status Machine Cycle Opcode Fetch Memory Read Memory Write 1/0 Read 1/0 Write Halt' Internal Operation' Acknowledge of Int" Control SO S1 101M RD WR 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 6.3INPUT/OUTPUT SIGNALS Multiplexed Address/Data [AD(O-7)]: Active high Input data to CPU. At RD Time: At WR Time: Output data from CPU. At Falling Edge Least significant byte of address of ALE Time: during memory reference cycle. a-bit port address during I/O reference cycle. During BREQ/ High impedance. BACK Cycle: 0 1 0 1 1 • ALE is not suppressed in this cycle . • ·This is the cycle that occurs immediately after the CPU accepts an interrupt (RSTA. RSTB. RS'fC. INTR. NMI). Note 1: During halt, CPU continues to do dummy opcode fetch from location following the halt instruction with a halt status. This is so CPU can continue to do its dynamic RAM refresh. Note 2: No early status is provided for interrupt or hardware restarts. 7.0 Connection Diagrams Chip Carrier Package Dual·ln·Line Package AB A9 AID All A12 A13 A14 A15 eLK XDUT XIN ADO ADI AD2 AD3 AD4 AD5 AD6 AD7 GND vee AI2 All AID A9 A8 PS \ WAif N5CBDD Top View 31 30 29 2B 27 26 25 24 23 22 21 NC RESET OUT BRED J AI3 7 6 5 4 3 2 I 4443 42 414~9 BACK RESET OUT BREO BACK 101M RESET IN 10 11 12 13 14 15 16 17 lB 19 20 Vee PS WAIT AI4 AI5 ClK XDUT NC XIN ADO ADI AD2 AD3 iiii Viii ALE 50 iiFSi1 B 3B 9 37 10 36 II 35 12 NSCBOO 34 13 33 14 32 15 31 16 3D 17 29 1819202122232425262728 NC 51 INTA INTR R5TC R5TB R5TA 101M RESET IN iiii Viii NC ALE SO RFSH SI INTA t\ AD4 A05 AD6 AD7 GND NMI iiS'fl\' RSTB HSTC INTH Top View TLlC/5171-11 Order Number NSC800E or V See NS Package E44B or V44A Jm1 TLlC/5171-10 Order Number NSC800D or N See NS Package D40C or N40A 9-11 Q Q C) C) r------------------------------------------------------------------------------------------, co 8.0 Functional Description (1) This section reviews the CPU architecture shown below, focusing on the functional aspects from a hardware perspective, including timing details. (.) z (25) (26) INTR INTA (23) (24) Am liSfC As illustrated in Figure 1, the NSC800 is an 8-bit parallel device, The major functional blocks are: the ALU, register array, interrupt control, timing and control logic, These areas are connected via the 8-bit internal data bus, Detailed descriptions of these blocks ae provided in the following sections. (21) NMI F' l' E' C' H' (8) 0' (8) 8' (8) A (8) (8) (8) 8 (8) POWER SUPPLY { l IX IY ~VCC (8) (8) (8) (8) (8) (8) (8) (8) REGISTER ARRAY (16) (16) (8) R (8) STACK POINTER (16) (20) _GND PROGRAM COUNTER (16) elK OUT RFSH iiii (9) (28) (32) INCREMENTER DECREMENTER (16) ADDRESS LATCH ~~~)~ TIMING AND CONTROL XOUT (10) Wii ~) ALE ~ PS • SO ~ Sl ~ 10/M BRED 8ACK ~ • • iiESE'i RESET A(8-15) M ADDRESS BUS (33) (37) m AD(0-7) ADDRESS/DATA BUS TLiC/5171-9 Note: Applicable pinout for 40·pin dual-in-line package within parentheses FIGURE 1. NSC800 CPU Functional Block Diagram 9-12 8.0 Functional Description z en o (Continued) Q) 8.1 REGISTER ARRA V 8.2.2 Stack Pointer (SP) The NSC800 register array is divided into two parts: the dedicated registers and the working registers, as shown in Figure 2. The 16·bit stack painter contains the address of the current top of stack that is located in external system RAM. The stack is organized in a last-in, first-out (UFO) structure. The pointer decrements before data is pushed onto the stack, and increments after data is popped from the stack. Various operations store or retrieve, data on the stack. This, along with the usage of subroutine calls and interrupts, allows simple implementation of subroutine and interrupt nesting as well as alleviating many problems of data manipulation. 8.2.3 Index Register (IX and IV) . Alternate Reg. Set Main 'teg. Set \( ( \ Accumulator Flags Accumulator Flags A F A' F' B C B' C' D E D' E' H L H' L' Interrupt Vector I I Working } Registers The NSC800 contains two index registers to hold independent, 16-bit base addresses used in the indexed addressing mode. In this mode, an index register, either IX or IY, contains a base address of an area in memory making it a pointer for data tables. In all instructions employing indexed modes of operation, another byte acts as a signed two's complement displacement. This addressing mode enables easy data table manipulations. Memory Refresh R Index Register IX Index Register IV Dedicated Registers Stack Pointer SP 8.2.4 Interrupt Register (I) Program Counter PC When the NSC800 provides a Mode 2 response to INTR, the action taken is an indirect call to the memory location containing the service routine address. The pointer to the address of the service routine is formed by two bytes, the high-byte is from the I Register and the low·byte is from the interrupting peripheral. The peripheral always provides an even address for the lower byte (LSB=O). When the processor receives the lower byte from the peripheral it concatenates it in the following manner: FIGURE 2. NSC800 Register Array 8.2 DEDICATED REGISTERS There are 6 dedicated registers in the NSC800: two 8·bit and four 16·bit registers (see Figure 3). Although their contents are under program control, the pro· gram has no control over their operational functions, unlike the CPU working registers. The function of each dedicated register is described as follows: CPU Dedicated Registers Program Counter PC Stack Pointer SP Index Register IX Index Register IY Interrupt Vector Register I Memory Refresh Register R I (16) (16) (16) (16) (8) (8) I Register 8 bits I External byte i The LSB of the external byte must be zero. FIGURE 4a. Interrupt Register The even memory location contains the low·order byte, the next consecutive location contains the high-order byte of the painter to the beginning address of the interrupt service routine. 8.2.5 Refresh Register (R) FIGURE 3. Dedicated Registers 8.2.1 Program Counter (PC) For systems that use dynamic memories rather than static RAM's, the NSC800 provides an integral 8-bit memory refresh counter. The contents of the register are incremented after each opcode fetch and are sent out on the lower portion of the address bus, along with a refresh control signal. This provides a totally transparent refresh cycle and does not slow down CPU operation. The program can read and write to the R register, although this is usually done only for test purposes. The program counter contains the 16·bit address of the cur· rent instruction being fetched from memory. The PC incre· ments after its contents have been transferred to the ad· dress lines. When a program jump occurs, the PC receives the new address which overrides the incrementer. There are many conditional and unconditional jumps, calls, and return instructions in the NSC800's instruction reper· toire that allow easy manipulation of this register in control· ling the program execution (i.e. JP NZ nn, JR Zd2, CALL NC, nn). 9-13 o o 8.0 Functional Description (Continued) B.3 CPU WORKING AND ALTERNATE REGISTER SETS 8.4 REGISTER FUNCTIONS B.3.1 CPU Working Registers 8.4.1 Accumulator (A Register) The portion of the register array shown in Figure 4b represents the CPU working registers. These sixteen 8-bit registers are general-purpose registers because they perform a multitude of functions, depending on the instruction being executed. They are grouped together also due to the types of instructions that use them, particularly alternate set operations. The A register serves as a source or destination register for data manipulation instructions. In addition, it serves as the accumulator for the results of 8-bit arithmetic and logic operations. The A register also has a special status in some types of operations; that is, certain addressing modes are reserved for the A register only, although the function is available for all the other registers. For example, any register can be loaded by immediate, register indirect, or indexed addressing modes. The A register, however, can also be loaded via an additional register indirect addressing. The F (flag) register is a special-purpose register because its contents are more a result of machine status rather than program data. The F register is included because of its interaction with the A register, and its manipulations in the alternate register set operations. Another special feature of the A register is that it produces more efficient memory coding than equivalent instruction functions directed to other registers. Any register can be rotated; however, while it requires a two-byte instruction to normally rotate any register, a single-byte instruction is available for rotating the contents of the accumulator (A register). B.3.2 Alternate Registers The NSC800 registers designated as CPU working registers have one common feature: the existence of a duplicate register in an alternate register set. This architectural concept simplifies programming during operations such as interrupt response, when the machine status represented by the contents of the registers must be saved. B.4.2 F Register - Flags The NSC800 flag register consists of six status bits that contain information regarding the results of previous CPU operations. The register can be read by pushing the contents onto the stack and then reading it, however, it cannot be written to. It is classified as a register because of its affiliation with the accumulator and the existence of a duplicate register for use in exchange instructions with the accumulator. The alternate register concept makes one set of registers available to the programmer at any given time. Two instructions (EX AF, A'F' and EXX), exchange the current working set of registers with their alternate set. One exchange between the A and F registers and their respective duplicates (A' and F') saves the primary status information contained in the accumulator and the flag register. The second exchange instruction performs the exchange between the remaining registers, B, C, D, E, H, and L, and their respective alternates B', C', D', E', H', and L'. This essentially saves the contents of the original complement of registers while providing the programmer with a usable alternate set. CPU Main Working Register Set Accumulator A (8) (8) Register B Register D (8) (8) Register H CPU Alternate Working Accumulator A' Register B' Register D' Register H' Flags F Register C Register E Register L (8) (8) (8) (8) Register Set (8) Flags F' (8) Register C' (8) Register E' (8) Register L' (8) (8) (8) (8) Of the six flags shown in Figure 5, only four can be directly tested by the programmer via conditional jump, call, and return instructions. They are the Sign (S), Zero (Z), Parity/ Overflow (PlY), and Carry (C) flags. The Half Carry (H) and Add/Subtract (N) flags are used for internal operations related to BCD arithmetic. BIT7 BIT 0 1 I z I" I" 1 1 S H P/V I N C 1 I LCARRY L - - ADO/SUBTRACT "-----PARITY OVERFLOW L . . - - - - - - - H A L F CARRY L..----------ZERO "-------------SIGN TLIC/5171-23 FIGURE 5. Flag Register FIGURE 4b. CPU Working and Alternate Registers 9-14 8.0 Functional Description z en o (Continued) Q) 8.4.3 Carry (C) The following operations affect the PIV flag according to the parity of the result of the operation: A carry from the highest order bit of the accumulator during an add instruction. or a borrow generated during a subtraction instruction sets the carry flag. Specific shift and rotate instructions also affect this bit. Logic Operations • Two specific instructions in the NSC800 instruction repertoire set (SCF) or complement (CCF) the carry flag. Input Register Indirect Other operations that affect the C flag are as follows: • • • Adds Subtracts Logic Operations (always resets C flag) • Rotate Accumulator Rotate and Shift Rotate Digits Decimal Adjust The following operations affect the PIV flag according to the overflow result of the operation. o Adds (16 bit with carry, 8-bit with/without carry) • • Subtracts (16 bit with carry, 8-bit with/without carry) Increments and Decrements • Rotate and Shifts • Decimal Adjust • Negation of Accumulator Other operations do not affect the C flag. 8.4.4 Adds/Subtract (N) • Negation of Accumulator The PIV flag has no significance immediately after the following operations. Block I/O o Bit Tests This flag is used in conjunction with the H flag to ensure that the proper BCD correction algorithm is used during the decimal adjust instruction (DAA). The correction algorithm depends on whether an add or subtract was previously done with BCD operands. In block transfers and compares, the PIV flag indicates the status of the BC register, always ending in the reset state after an auto repeat of a block move. Other operations do not affect the PIV flag. 8.4.6 Half Carry (H) The operations that set the N flag are: • • • This flag indicates a BCD carry, or borrow, result from the low-order four bits of operation. It can be used to correct the results of a previously packed decimal add, or subtract, operation by use of the Decimal Adjust Instruction (DAA). Subtractions Decrements (8-bit) Complementing of the Accumulator The following operations affect the H flag: • Adds (8-bit) • Block I/O • Block Searches • Negation of the Accumulator The operations that reset the N flag are: • • • • • • o Adds Increments Logic Operations o o Subtracts (8-bit) Increments and Decrements Decimal Adjust Negation of Accumulator Always Set by: Logic AND Complement Accumulator Bit Testing Rotates Set and Complement Carry o Input Register Indirect Always Reset By: Logic OR's and XOR's Rotates and Shifts Set Carry Input Register Indirect Block Transfers Load of the I or R Registers Bit Tests Other operations do not affect the N flag. 0 • • Block Transfers Loads of I and R Registers 8.4.5 Parity/Overflow (P/V) The H flag has no significance immediately after the following operations. o 16-bit Adds with/without carry o 16-Bit Subtracts with carry The Parity/Overflow flag is a dual-purpose flag that indicates results of logic and arithmetic operations. In logic operations, the PIV flag indicates the parity of the result; the flag is set (high) if the result is even, reset (low) if the result is odd. In arithmetic operations, it represents an overflow condition when the result, interpreted as signed two's complement arithmetic, is out of range for the eight-bit accumulator (Le. -128 to + 127). o Complement of the carry Block I/O o Block Searches o Other operations do not affect the H flag. 9-15 o o C) r-------------------------------------------------------------------------------~ C) co 8.0 Functional Description z 8.4.7 Zero Flag (Z) o en (Continued) 8.4.9 Additional General-Purpose Registers The other general-purpose registers are the B, C, D, E, H and L registers and their alternate register set, B', C', D', E', H' and L'. The general-purpose registers can be used interchangeably. In addition, the Band C registers perform special functions in the NSC800 expanded I/O capabilities, particularly block I/O operations. In these functions, the C register can address I/O ports; the B register provides a counter function when used in the register indirect address mode. Loading a zero in the accumulator or when a zero results from an operation sets the zero flag. The following operations affect the zero flag. • Adds (16·bit with carry, 8·bit with/without carry) • Subtracts (16·bit with carry, 8-bit with/without carry) • • Logic Operations Increments and Decrements • Rotate and Shifts • • • • Rotate Digits Decimal Adjust Input Register Indirect Block I/O (always set after auto repeat block I/O) • • Block Searches Load of I and R Registers When used with the special condition jump instruction (DJNZ) the B register again provides the counter function. 8.4.10 Alternate Configurations The six 8-bit general purpose registers (B,C,D,E,H,L) will combine to form three l6-bit registers. This occurs by concatenating the Band C registers to form the BC register, the D and E registers form the DE register, and the Hand L registers form the HL register. • Bit Tests • Negation of Accumulator The Z flag has no signficance immediately after the following operations: Having these l6-bit registers allows 16·bit data handling, thereby expanding the number of l6-bit registers available for memory addressing modes. The HL register typically provides the pointer address for use in register indirect addressing of the memory. The DE register provides a second memory pointer register for the NSC800's powerful block transfer operations. The BC register also provides an assist to the block transfer operations by acting as a byte-counter for these operations. • Block Transfers Other operations do not affect the zero flag. 8.4.8 Sign Flag (S) The sign flag stores the state of bit 7 (the most-significant bit and sign bit) of the accumulator following an arithmetic operation. This flag is of use when dealing with signed numbers. The sign flag is affected by the following operation according to the result: • • Adds (16-bit with carry, 8-bit with/without carry) Subtracts (16-bit with carry, 8-bit with/without carry) • • Logic Operations Increments and Decrements • Rotate and Shifts • Rotate Digits • • Decimal Adjust Input Register Indirect 8.5 ARITHMETIC-LOGIC UNIT (ALU) The arithmetic, logic and rotate instructions are performed by the ALU. The ALU internally communicates with the registers and data buffer on the 8-bit internal data bus. 8.6 INSTRUCTION REGISTER AND DECODER During an opcode fetch, the first byte of an instruction is transferred from the data buffer (i.e. its on the internal data bus) to the instruction register. The instruction register feeds the instruction decoder, which gated by timing signals, gen· erates the control signals that read or write data from or to the registers, control the ALU and provide all required external control signals. • Block Search • Load of I and R Registers • Negation of Accumulator The S flag has no significance immediately after the following operations: • • Block I/O Block Transfers • Bit Tests Other operations do not affect the sign bit. 9-16 z en oCCI 9.0 Timing and Control o 9.1 INTERNAL CLOCK GENERATOR o An inverter oscillator contained on the NSC800 chip pro· vides all necessary timing signals. The chip operation frequency is equal to one half of the frequency of this oscillator. ClK XIN The oscillator frequency can be controlled by one of the following methods: f(XTAl) 2 XOUT .-J\N'Ir-" RS NOTE 1 1. leaving the XOUT pin unterminated and driving the XIN pin with an externally generated clock as shown in Figure 6. When driving XIN with a square wave, the minimum duty cycle is 30% high. 2 MHz < f(XTAL) 2 R~IM!l Cl ~20 C2~34 pF pF (Recommended) f,. EXTERNAL Tl/C/5171-14 FIGURE 7. Use Of Crystal fIX'N) ClK 2 CLOCK The CPU has a minimum clock frequency input (@ XIN) of 300 kHz, which results in 150 kHz system clock speed. All registers internal to the chip are static, however there is dynamic logic which limits the minimum clock speed. The input clock can be stopped without fear of losing any data or damaging the part. You stop it in the phase of the clock that has XIN low and ClK OUT high. When restarting the CPU, precautions must be taken so that the input clock meets these minimum specification. Once started, the CPU will continue operation from the same location at which it was stopped. During DC operation of the CPU, typical current drain will be 2 mA. This current drain can be reduced by placing the CPU in a wait state during an opcode fetch cycle then stopping the clock. For clock stop circuit, see Figure 8. TLlG/5171-13 FIGURE 6. Use of External Clock 2. Connecting a crystal with the proper biasing network between XIN and XOUT as shown in Figure 7. Recommended crystal is a parallel resonance AT cut crystal. Note 1: If the crystal frequency is 2 MHz or less a series resistor, Rs. (470n to 1500n) should be connected between XOUT and R. XTAL and Cz. Additionally. the capacitance of Cl and C2 should be increased by 2 to 3 times the recommended value. +5V NSC800 (PIN 9) CLOCK OUT 5K TO NSC800 X'N 1" Z1pF l ' Z1pF 1" TLlC/5171-36 FIGURE 8. Clock Stop Circuit 9·17 • g o en z 9.0 Timing and Control (Continued) During an input or output instruction, the CPU duplicates the lower half of the address [AD(0-7)] onto the upper address bus [A(8-15)1. The eight bits of address will stay on A(815) for the entire machine cycle and can be used for chip selection directly. Figure 9 illustrates the timing relationship for opcode fetch cycles with and without a wait state. 9.2 CPU TIMING The NSC800 uses a multiplexed bus for data and address· es. The 16·bit address bus is divided into a high·order 8·bit address bus that handles bits 8-15 of the address, and a low·order 8·bit multiplexed address/data bus that handles bits 0-7 of the address and bits 0-7 of the data. Strobe outputs from the NSC800 (ALE, RD and WR) indicate when a valid address or data is present on the bus. 10/M indio cates whether the ensuing cycle accesses memory or I/O. TLlC/5171-15 FIGURE 9a. Opcode Fetch Cycles without WAIT States TL/C/5171-16 FIGURE 9b. Opcode Fetch Cycles with WAIT States 9·18 9.0 Timing and Control ztJ) o (Continued) CI) During the opcode fetch, the CPU places the contents of the PC on the address bus. The falling edge of ALE indicates a valid address on the AD(O-7) lines. The WAIT input is sampled during t2 and if active causes the NSC800 to insert a wait state (tw). WAIT is sampled again during tw so that when it goes inactive, the CPU continues its opcode fetch by latching in the data on the rising edge of RD from the AD(O-7) lines. During t3, RFSH goes active and AD(O7) has the dynamic RAM refresh address from register R and A(8-15) the interrupt vector from register I. o o eLK ALE AD(O-7) iiii ADI0-7) A(B-15) 101M. so. S1 Tl/C/S171-17 FIGURE 10a. Memory Read/Write Cycles without WAIT States TL/C/S171-18 FIGURE 10b. Memory Read and Write with WAIT States 9-19 • g u U) z 9.0 Timing and Control (Continued) Figure t 1 shows the timing for input and output cycles with and without wait states. The CPU automatically inserts one wait state into each I/O instruction to allow sufficient time for an 110 port to decode the address. Figure 10 shows the timing for memory read (other than opcode fetchs) and write cycles with and without a wait _ t state. The RD stobe is widened by "2 (half the machine state) for memory reads so that the actual latching of the input data occurs later. TLlC/5171-19 FIGURE 11a.lnput and Output Cycles without WAIT States TL/C/5171-20 'WAIT state automatically inserted during 10 operation. FIGURE 11b.lnput and Output Cycles with WAIT States 9-20 .-----------------------------------------------------~z 9.0 Timing and Control (I) (Continued) o Vee 01) o o 9.3 INITIALIZATION RESET IN initializes the NSC800; RESET OUT initializes the peripheral components. The Schmitt trigger at the RESET jjiJ input facilitates using an R-C network reset scheme during power up (see Figure 12). R 10k To ensure proper power-up conditions for the NSC800, the following power-up and initialization procedure is recommended: Vee NSCBOO RESET IN RESET OUT INDICATES WHEN CPU IS BEING RESET GND 1. Apply power (Vee and GND) and set RESET IN active (low). Allow sufficient time (approximately 30 ms if a crystal is used) for the oscillator and internal clocks to stabilize. RESET IN must remain low for at least 3t state (ClK) times. RESET OUT goes high as soon as the active RESET IN signal is clocked into the first flip-flop after the on-chip Schmitt trigger. RESET OUT signal is available to reset the peripherals. TLIC15171-21 FIGURE 12. Power-On Reset 9.4 POWER-SAVE FEATURE The NSC800 provides a unique power-save mode by the means of the PS pin. PS input is sampled at the last t state of the last M cycle of an instruction. After recognizing an active (low) level on PS, The NSC800 stops its internal clocks, thereby reducing its power dissipation to one hal'. of operating power, yet maintaining all register values and internal control status. The NSC800 keeps its oscillator running, and makes the ClK signal available to the syst~m. When in power-save the ALE strobe will be stopped high and the address lines [AD(0-7), A(8-15)) will indicate the next machine address. When PS returns high, the opcode fetch (or M1 cycle) of the CPU begins in a normal manner. Note this M1 cycle could also be an interrupt acknowledge cycle if the NSC800 was interrupted simultaneously with PS (i.e. PS has priority over a simultaneously occurring interrupt). However, interrupts are not accepted during power save. Figure 14 illustrates the power save timing. 2. Set RESET IN high. RESET OUT then goes low as the inactive RESET IN signal is clocked into the first flip-flop after the on-chip Schmitt trigger. Following this the CPU initiates the first opcode fetch cycle. Note: The NSC800 initialization includes: Clear PC to X'OOOO (the first opcode fetch, therefore, is from memory location X'OOOO). Clear registers I (Interrupt Vector Base) and R (Refresh Counter) to X'OO. Clear interrupt control register bits lEA, IEB and IEC. The interrupt control bit lEI is set to 1 to maintain INS8080AlZ80A compatibility (see INTERRUPTS for more details). The CPU disables maskable interrupts and enters INTR Mode O. While RESET IN is active (low), the A(8-15) and AD(0-7) lines go to high impedance (TRI-STATE) and all CPU strobes go to the inactive state (see Figure 13). POWER-ON RESET ACTIVE MANUAL RESET ACTIVE FiRST ADDRESS RESET OUT +..1 RESET (INTERNAL) _ _ CPU SIGNALS OUTPUT ALE "'ZW2~t7ll~m~---+---.:~;::==~:~====i--i---tJr=== I Z I ADRR~ij~ l/ffmununnJ:/H1 I' I 1----t----k~~[:~!~;:===~--r_--_tI(OP!C~-~OO~OOE:: RISIN~R~lo~R~I;~ -I TLlC15171-74 FIGURE 13. NSC800 Signals During Power-On and Manual Reset 9-21 c c co ~ 9.0 Timing and Control (Continued) Z AO(O-7)----+-----+'"\ ~--,-+----_+---+_+----_1:__----I_--- so. sf(~o)~ ____-;-____-T... ,---+----_+----f:-+===~....I_----I_--ALE TL/C/5171-2S FIGURE 14. NSC800 Power-Save elK AD(O-7)--+----....r-----,..." WR_-+_____r-____,...J ~-.rn RD, .. ----- ALE 50,51 TL/C/5171-22 'SO, SI during BREO will indicate same machine cycle as during the cycle when Bi'fEQ was accepted. tz = time states during which bus and control signals are in high impedance mode. FIGURE 15. Bus Acknowledge Cycle 9.6 INTERRUPT CONTROL In the event BREa is asserted (low) at the end of an instruction cycle and PS is active simultaneously, the following occurs: The NSC800 has five interrupt/restart inputs, four are maskable (RSTA, RSTB, RSTC, and INTR) and one is non-maskable (NMI). NMI has the highest priority of all interrupts; the user cannot disable NMI. After recognizing an active input on NMI, the CPU stops before the next instruction, pushes the PC onto the stack, and jumps to address X'0066, where the user's interrupt service routine is located (I.e., restart to memory location X'0066). NMI is intended for interrupts requiring immediate attention, such as power-down, control panel, etc. 1. The NSC800 will go into BACK cycle. 2. Upon completion of BACK cycle if PS is still active the CPU will go into power-save mode. 9.5 BUS ACCESS CONTROL Figure 15 illustrates bus access control in the NSC800. The external device controller produces an active BREa signal that requests the bus. When the CPU responds with BACK then the bus and related control strobes go to high impedance (TRI-STATE) and the RFSH signal remains high. It should be noted that (1) BREa is sampled at the last t state of any M machine cycle only. (2) The NSC800 will not acknowledge any interrupt/restart requests, and will not peform any dynamic RAM refresh functions until after BREa input signal is inactive high. (3) BREa Signal has priority over all interrupt request signals, should BREa and interrupt request become active simultaneously. Therefore, interrupts latched at the end of the instruction cycle will be serviced after a simultaneously occurring BREa. NMI is latched during an active BREa. RSTA, RSTB and RSTC are restart inputs, which, if enabled, execute a restart to memory location X'003C, X'0034, and X'002C, respectively. Note that the CPU response to the NMI and RST (7\, S, C) request input is basically identical, except for the restored memory location. Unlike NMI, however, restart request inputs must be enabled. Figure 16 illustrates NMI and RST interrupt machine cycles. Ml cycle will be a dummy opcode fetch cycle followed by M2 and M3 which are stack push operations. The following instruction then starts from the interrupts restart location. Nole: Ali does not go low during this dummy opcode fetch. A unique indication of INTA can be decoded using 2 ALEs and RD. 9-22 9.0 Timing and Control z en oco (Continued) LAST M CYCLE OF INSTRUCTION 12 ~'tr~~i-I--Il CLK --ururururururu-r--- ------ ------ ------ ------ ------ NMiDR - - - , RSTA,ii,c ALE o o M1------------.j 13 14 16- --~~ OF THE I -----'-1-'------------- -------. -------. -------. --------1--- PROGRAM COUNTER ONTO '-+----+----4-- ~~~I~~ACK ---4---.j...t +-___+-.tX\,;,A;;..D(:;.O_-7;.:.)-r~------I-( AD(O-7) _ _ _ AD(D-7) )------- - - - - - - - A(8-1S) _____I -_ _+X"-_~I_--_+"IX---!_---I----_r,-1-. ------ ------ ------ WAIT - - - - - - - - - - - . ------r-~-· ____________________ _ ____________ ~OOE1)----- ~ ~ / -+___-!II'IX.._ _ _r-__..;,IO;,:./,;;;M_=.:,O,:.:S.:.O_=.;,;I,:,:S;.,1=;-:..1---+-----4)(,'-- IOIM,SO,SI _ _ _ I I TLiC/5171-24 Note ,: This is the only machine cycle that does not have an RD, WR, or INTA strobe but will accept a wait strobe. FIGURE 16. Non-Maskable and Restart Interrupt Machine Cycle dress. The first byte of each entry in the table is the least significant (low-order) portion of the address. The programmer must obviously fill this table with the desired addresses before any interrupts are to be accepted. The NSC800 also provides one more general purpose interrupt request input, INTR. When enabled, the CPU responds to INTR in one of the three modes defined by instruction IMO, IMI, and 1M2 for modes 0, I, and 2, respectively. Following reset, the CPU automatically enables mode O. Note that the programmer can change this table at any time to allow peripherals to be serviced by different service routines. Once the interrupting device supplies the lower portion of the pointer, the CPU automatically pushes the program counter onto the stack, obtains the starting address from the table and does a jump to this address. The interrupts have fixed priorities built into the NSC800 as: NMI 0066 (Highest Priority) RSTA 003C RSTB 0034 RSTC 002C (Lowest Priority) 0038 Interrupt Enable, Interrupt Disable. The NSC800 has two types of interrupt inputs, a non-maskable interrupt and four software maskable interrupts. The non-maskable interrupt (NMI) cannot be disabled by the programmer and will be accepted whenever a peripheral device requests an interrupt. The NMI is usually reserved for important functions that must be serviced when they occur, such as imminent power failure. The programmer can selectively enable or disable maskable interrupts (INT, RSTA, RSTB and RSTC). This selectivity allows the programmer to disable the maskable interrupts during periods when timing constraints don't allow program interruption. There are two interrupt enable flip-flops (IFF, and IFF2) on the NSC800. Two instructions control these flip-flops. Enable Interrupt (EI) and Disable Interrupt (01). The state of IFF, determines the enabling or disabling of the maskable interrupts, while IFF2 is used as a temporary storage location for the state of IFF,. Interrupt (INTR) Mode 0: The CPU responds to an interrupt request by providing an INTA (interrupt acknowledge) strobe, which can be used to gate an instruction from a peripheral onto the data bus. The CPU inserts two wait states during the first INTA cycle to allow the interrupting device (or its controller) ample time to gate the instruction and determine external priorities (Figure 18). This can be any instruction from one to four bytes. The most popular instruction is one-byte call (restart instruction) or a threebyte call (CALL NN instruction). If it is a three-byte call, the CPU issues a total of three INTA strobes. The last two (which do not include wait states) read NN. Nole: If the instruction stored in the ICU doesn't require the PC to be pushed onto the stack (eq. JP nn), then the PC will not be pushed. Interrupt (INTR) Mode 1: Similar to restart interrupts except the restart location is X'0038 (Figure 18). Interrupt (INTR) Mode 2: With this mode, the programmer maintains a table that contains the 16-bit starting address of every interrupt service routine. This table can be located anywhere in memory. When the CPU accepts a Mode 2 interrupt (Figure 17), it forms a 16-bit pOinter to obtain the desired interrupt service routine starting address from the table. The upper 8 bits of this pointer are from the contents of the I register. The lower 8 bits of the pointer are supplied by the interrupting device with the LSB forced to zero. The programmer must load the interrupt vector prior to the interrupt occurring. The CPU uses the pOinter to get the two adjacent bytes from the interrupt service routine starting address table to complete 16-bit service routine starting ad9-23 o o CO (.) tn Z 9.0 Timing and Control (Continued) A reset to the CPU will force both IFF, and IFF2 to the reset state disabling maskable interrupts. They can be enabled by an EI instruction at any time by the programmer. When an EI instruction is executed, any pending interrupt requests will not be accepted until after the instruction following EI has been executed. This single instruction delay is necessary in situations where the following instruction is a return instruction and interrupts must not be allowed until the return has been completed. The EI instruction sets both IFF, and IFF2 to the enable state. When the CPU accepts an interrupt, both IFF, and IFF2 are automatically reset, inhibiting further interrupts until the programmer wishes to issue a new EI instruction. Note that for all the previous cases, IFF, and IFF2 are always equal. The function of IFF2 is to retain the status of IFF, when a non-maskable interrupt occurs. When a non-maskable interrupt is accepted, IFF, is reset to prevent further interrupts until reenabled by the programmer. Thus, after a non-maskable interrupt has been accepted, maskable interrupts are disabled but the previous state of IFF, is saved by IFF2 SUPPLIED BY I REGISTER 15 8 7 TL/C/5171-27 FIGURE 17. Interrupt Mode 2 9-24 co o ::! 3 ::J CC $I) ::J Q. elK C') o ::J TIlT ~ o ALE "0 o :aS' c ADIO-7} CD .e AIB-1S) <0 NOTE 2 INTA '" U1 RFSH WAIT 101M. SO. 51 Rli TL/C/5171-25 'tw is the CPU generated WAIT state in response to an interrupt request. Note 1: t5 wilt only occur in mode 1 and mode 2. During t5 the stack pointer is decremented. Note 2: A jump to the appropriate address occurs here in mode 1 and mode 2. The CPU continues gathering data from the interrupting peripheral in mode 0 for a total of 2-4 machine cycles. In mode 0 cycles M2-M4 have only 1 wait state. FIGURE 18. Interrupt Acknowledge Machine Cycle OOSOSN I 0 0 CO 0 (J) Z 9.0 Timing and Control (Continued) so that the complete state of the CPU just prior to the nonmaskable interrupt may be restored. The method of restoring the status of IFF1 is through the execution of a Return Non-Maskable Interrupt (RETN) instruction. Since this instruction indicates that the non-maskable interrupt service routine is completed, the contents of IFF2 are now copied back into IFF1, so that the status of IFF1 just prior to the acceptance of the non-maskable interrupt will be automatically restored. Operation Initialize EI INTR 2 3 Name lEI IEC IEB lEA 0 EI Interrupt Disable and INTR Being Serviced Interrupt Enabled after next instruction Interrupt Enabled RET • • • NMI 0 Interrupt Disabled • • • lEI Interrupt Enabled RETN • TLlC/5171-26 Bit 0 0 • • • The ICR is internal to the NSCBOO CPU, but is addressed through the I/O space at I/O address port X'BB. Each bit in the register controls a mask bit dedicated to each maskable interrupt, RSTA, RSTB, RSTC and INTR. For an interrupt request to be accepted on any of these inputs, the corresponding mask bit in the ICR must be set (= 1) and IFF1 and IFF2 must be set. This provides the programmer with control over individual interrupt inputs rather than just a systern wide enable or disable. lEG Comment Interrupt Disabled Interrupt Enabled after next instruction • • • Interrupt Control Register. The interrupt control register (JCR) is a 4-bit, write only register that provides the programmer with a second level of maskable control over the four maskable interrupt inputs. lED IFF2 0 • • • Figure 19 depicts the status of the flip flops during a sample series of interrupt instructions. lEA IFF1 0 INTR 0 0 Interrupt Disabled 0 0 Interrupt Disabled and NMI Being Serviced 0 0 Interrupt Disabled and INTR Being Serviced • • • Function Interrupt Enable for INTR Interrupt Enable for RSTC Interrupt Enable for RSTB Interrupt Enable for RSTA NMI • • For example: In order to enable RSTB, CPU interrupts must be enabled and IEB must be set. • RETN At reset, lEI bit is set and other mask bits lEA, IEB, IEC are cleared. This maintains the software compatibility between NSCBOO and ZBOA. • • • Execution of an I/O block move instruction will not affect the state of the interrupt control bits. The only two instructions that will modify this write only register are OUT (C), r and OUT (N), A. EI RET Interrupt Enabled after next instruction Interrupt Enabled • • • FIGURE 19.IFF1 and IFF2 States Immediately after the Operation has been Completed 9-26 .--------------------------------------------------------------------------,z en oCD NSC800 SOFTWARE Q Q 10.0 Introduction 11.3 IMMEDIATE The most straightforward way of introducing data to the CPU registers is via immediate addressing, where the data is contained in an additional byte of multi-byte instructions. Example: Instruction: Load the E register with the constant value X'7C. Mnemonic: LD E,X'7C Opcode: This chapter provides the reader with a detailed description of the NSC800 software. Each NSC800 instruction is described in terms of opcode, function, flags affected, timing, and addressing mode. 11.0 Addressing Modes The following sections describe the addressing modes supported by the NSC800. Note that particular addressing modes are often restricted to certain types of instructions. Examples of instructions used in the particular addressing modes follow each mode description. The 10 addressing modes and 158 instructions provide a flexible and powerful instruction set. 11.1 REGISTER The most basic addressing mode is that which addresses data in the various CPU registers. In these cases, bits in the opcode select specific registers that are to be addressed by the instruction. Example: Instruction: Load register B from register C Mnemonic: LD B,C Opcode: t 10111 0,0,0 10,0,1 I 0 , 1, 1, 1, t , t , 0 ,0 +L.--------Selects register E l- Second Byte TL/C/5171-52 In this instruction, the E register is addressed with register addressing, while the constant X'7C is immediate data in the second byte of the instruction. 11.4 IMMEDIATE EXTENDED As immediate addressing allows 8 bits of data to be supplied by the operand, immediate extended addressing allows 16 bits of data to be supplied by the operand. These are in two additional bytes of the instruction. Example: Instruction: Load the 16-bit IX register with the constant value X' ABCD. Mnemonic: LD IX,X'ABCD Opcode: I TL/C/5171-50 In this instruction, both the Band C registers are addressed by opcode bits. I I 11 I t 0 t I t I t , 0 I 1 f 11.2 IMPLIED The implied addressing mode is an extension to the register addressing mode. In this mode, a specific register, the accumulator, is used in the execution of the instruction. In particular, arithmetic operations employ implied addressing, since the A register is assumed to be the destination register for the result without being specifically referenced in the opcode. Example: Instruction: Subtract the contents of register D from the Accumulator (A register) l- Defines opcode (First Byte) L . - - - - - - - - S e l e c t s I X register I 0 I 0 I t , 0 I 0 I 0, 0, 1 l- Defines opcode (Second Byte) I t I 1 I 0 I 0 I tIt I 0 I t l- Constant CD (Third Byte) It, 0 I 1I0 , 1I0 I 1I t l- Constant AB (Fourth Byte) D TL/C/5171-53 In this instruction, register addressing selects the IX register, while the 16-bit quanity X'ABCD is immediate data supplied as immediate extended format. 111°1°111°1°111°1 t 0 ,0 0 , .....- - - - - - - X ' 7 C ·a..----Selects register C L---------Selects register B L.------------Deflnesopcode Mnemonic: SUB Opcode: I 1, t i t , t , 0 l- First Byte I t... ----Selects register D L.---------Oefines opcode TUC/5171-51 • In this instruction, the D register is addressed with register addressing, while the use of the A register is implied by the opcode. 9-27 o o CIO 11.0 Addressing Modes z 11.5 DIRECT ADDRESSING oCJ) (Continued) Indexed addressing is particularly useful in dealing with lists of data. Example: Direct addressing is the most straightforward way of ad· dressing supplies a location in the memory space. Direct addressing, 16·bits of memory address information in two bytes of data as part of the instruction. The memory address could be either data, source of destination, or a location for program execution, as in program control instructions. Instruction: Increment the data in memory location X'1020. The IY register contains X'1000. Mnemonic: JP (IY + X'20) Mnemonic: INC Opcode: Example: Instruction: Jump to location X'0377 r - - - - - - - - S e l e c t s I Y register X'0377 Opcode: 11 , 1 , 0 , 0 , 0 , 0 , 1 , 1 Defines increment opcode -Defines jump opcode I0I0I 1 :=10=,1=,=1:!::'=1='=0=,=1=,=1=,=1::;1 ] -Constant X'0377 10,0,0,0,0,0,1,11 I 0I 0I 0I 0I 0 I- Displacement to I Y index register (Th Ird Byte) This instruction loads the Program Counter (PC) is loaded with the constant in the second and third bytes of the in· struction. The program counter contents are transferred via direct addressing. TLlC/5171-54 The indexed addressing mode uses the contents of index registers IX or IY along with the displacement to form a pointer to memory. 11.6 REGISTER INDIRECT Next to direct addressing, register indirect addressing pro· vides the second most straightforward means of addressing memory. In register indirect addressing, a specified register pair contains the address of the desired memory location. The instruction references the register pair and the register contents define the memory location of the operand. Example: Instruction: Add the contents of memory location X'0254 to the A register. The HL register contains X'0254. Mnemonic: ADD A,(HL) 11.8 RELATIVE Certain instructions allow memory locations to be ad· dressed as a position relative to the PC register. These in· structions allow jumps to memory locations which are off· sets around the program counter. The offset, together with the current program location, is determined through a dis· placement byte included in the instruction. The formation of this displacement byte is explained more fully in the "In· structions Set" section. Opcode Instruction: Jump to a memory location 7 bytes beyond the current location. 11,0,0,0,0,1,1,01 Mnemonic: JR Opcode: Example: This instruction uses implied addressing of the A and HL registers and register indirect addressing to access the data pointed to by the HL register. I0 0 0 1 $+7 1 0 0 0 I-Defines relative jump opcode L~'__~'~'~~'__~'__'~~'~. 11.7 INDEXED The most flexible mode of memory addressing is the in· dexed mode. This is similar to the register indirect mode of addressing because one of the two index registers (IX or IY) contains the base memory address. In addition, a byte of data included in the instruction acts as a displacement to the address in the index register. I 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 I-DiSPlacement to be applied to the PC The program will continue at a location seven locations past the current PC. 9·28 z en oCD 11.0 Addressing Modes (Continued) 11.9 MODIFIED PAGE ZERO Program execution continues at location X'002S after execution of a single-byte call employing modified page zero addressing. A subset of NSCSOO instructions (the Restart instructions) provides a code·efficient single-byte instruction that allows CALLs to be performed to anyone of eight dedicated locations in page zero (locations X'OOOO to X'OOFF). Normally, a CALL is a 3-byte instruction employing direct memory addressing. 11.10 BIT The NSCSOO allows setting, resetting, and testing of individual bits in registers and memory data bytes. Example: Example: Operation: Set bit 2 in the L register Instruction: Perform a restart call to location X'002S. Mnemonic: RST Mnemonic: SET X'2S 2,L Opcode: Opcode: I I 11 I 1 I 0 J 0 I 1 J 0 I 1 I 1 Defines restart operation opcode 11,111,0,111,1,11 I I- Defines set bit I 11,110,1,011,0,11 t I tL..------Selects one of eight resta rt locations t Selects L register Selects bit 2 of selected byte TLlC/5171-56 TLlC/5171-55 Bit addressing allows the selection of bit 2 in the L register selected by register addressing. Ip I OOH I OSH I 10H I 1SH I 20H I 2SH I 30H I 3SH I I t I 000 I 001 I 010 I 011 I 100 I 101 I 110 I 111 I 9-29 o o o o CO (.) 12.0 Instruction Set z This section details the entire NSC800 instruction set in terms of en The instructions are grouped in order under the following functional headings: • Opcode • 8-Bit Loads • Instruction • 16-Bit Loads • Function • 8-Bit Arithmetic • Timing • 16-Bit Arithmetic • Addressing Mode • Bit Set, Reset, and Test • Rotate and Shift • Exchanges • Memory Block Moves and Searches • Input/Output • CPU Control • Program Control 12.1 Instruction Set Index Alphabetical Assembly Mnemonic Operation Page ADCA,ml ADCA,n ADCA,r ADC HL,pp ADDA,m1 ADDA,n ADDA,r ADDHL,pp ADD IX,pp ADD IY,pp ADDss,pp ANDml ANDn ANDr Add, with carry, memory location contents to Accumulator Add, with carry, immediate data n to Accumulator Add, with carry, register r contents to Accumulator Add, with carry, register pair pp to HL Add memory location contents to Accumulator Add immediate data n to Accumulator Add register r contents to Accumulator Add register pair pp to HL Add register pair pp to IX Add register pair pp to IY Add register pair pp to contents of register pair ss Logical 'AND' memory contents to Accumulator Logical 'AND' immediate data to Accumulator Logical 'AND' register r contents to Accumulator 9-42 9-40 9-38 9-45 9-42 9-40 9-38 9-45 9-45 9-45 9-45 9-43 9-41 9-38 BITb,ml BITb,r Test bit b of location ml Test bit b of register r 9-47 9-46 CALLcc,nn CALLnn CCF CPm1 CPn CPr CPD CPDR 9-58 9-58 9-40 9-44 9-42 9-39 9-52 9-53 CPL Call subroutine at location nn if condition cc is true Unconditional call to subroutine at location nn Complement carry flag Compare memory contents with Accumulator Compare immediate data n with Accumulator Compare register r to contents with Accumulator Compare location (HL) and Accumulator, decrement HL and BC Compare location (HL) and Accumulator, decrement HL and BC; repeat until BC = 0 Compare location (HL) and Accumulator, increment HL, decrement BC Compare location (HL) and Accumulator, increment HL, decrement BC; repeat until BC = 0 Complement Accumulator (1 's complement) DAA DECm1 DECr DECrr Decimal adjust Accumulator Decrement data in memory location ml Decrement register r contents Decrement register pair rr contents 9-40 9-44 9-39 9-46 CPI CPIR 9-30 9-52 9-53 9-39 z (I) 12.1 Instruction Set Index (Continued) 0 CD 0 0 Alphabetical Assembly Mnemonic Operation Page DI DJNZ,d Disable interrupts Decrement B and jump relative B oF 0 9-56 9-58 EI EX (SP),ss EXAF,A'F' EXDE,HL EXX Enable interrupts Exchange the location (SP) with register ss Exchange the contents of AF and A'F' Exchange the contents of DE and HL Exchange the contents of BC, DE and HL with the contents of B'C, D'E' and H'L', respectively 9-56 9-52 9-51 9-51 9-52 HALT Halt (wait for interrupt or reset) 9-56 IMO IM1 1M2 INA,(n) INr,(C) INCm1 INCr INCrr IND INDR INI INIR Set interrupt mode 0 Set interrupt mode 1 Set interrupt mode 2 Load Accumulator with input from device (n) Load register r with input from device (C) Increment data in memory location m1 Increment register r Increment contents of register pair rr Load location (HL) with input from port (C), decrement HL and B Load location (HL) with input from port (C), decrement HL and B; repeat until B = 0 Load location (HL) with input from port (C), increment HL, decrement B Load location (HL) with input from port (C), increment HL, decrement B; repeat until B = 0 9-56 9-57 9-57 9-54 9-54 9-44 9-39 9-45 9-54 9-56 9-54 9-55 JPcc,nn JPnn JP(ss) JRd JR kk,d Jump to location nn, if condition cc is true Unconditional jump to location nn Unconditional jump to location (ss) Unconditional jump relative to PC + d Jump relative to PC + d, if kk true 9-57 9-57 9-57 9-57 9-57 LDA,I LDA,m2 LDA,R LDI,A LDm1,n LDm1.r LDm2.A LD (nn),rr Load Accumulator with register I contents Load Accumulator from location m2 Load Accumulator with register R contents Load register I with Accumulator contents Load memory with immediate data n Load memory from register r Load memory from Accumulator Load memory location nn with register pair rr Load register r from memory Load register with immediate data n Load register R from Accumulator Load destination register rd from source register rs Load register pair rr from memory location nn Load register pair rr with immediate data nn Load SP from register pair ss Load location (DE) with location (HL), decrement DE, Hl. and BC Load location (DE) with location (HL), decrement DE, HL and BC; repeat until BC = 0 Load location (DE) with location (HL), increment DE and HL, decrement BC Load location (DE) with location (HL), increment DE and HL, decrement BC; repeat until BC = 0 9-34 9-35 9-34 9-34 9-35 9-34 9-35 9-36 9-35 9-34 9-34 9-34 9-37 9-36 9-36 9-52 9-53 9-52 9-53 Negate Accumulator (2's complement) No operation 9-40 9-56 LDr,m1 LDr,n LDR,A LD rd,rs LD rr,(nn) LD rr,nn LDSP,ss LDD LDDR LDI LDIR NEG NOP 9-31 II g U tn Z 12.1 Instruction Set Index (Continued) Alphabetical Assembly Mnemonic Operation Page 9-42 9-41 9-39 9-56 9-55 OUT (C),r OUT (n),A OUTO OUTI Logical 'OR' of memory location contents and accumulator Logical 'OR' of immediate data n and Accumulator Logical 'OR' of register r and Accumulator Load output port (C) with location (HL), decrement HL and B; repeat until B = 0 Load output port (C) with location (HL), increment HL, decrement B; repeat until B = 0 Load output port (C) with register r Load output port (n) with Accumulator Load output port (C) with location (HL), decrement HL and B Load output port (C) with location (HL), increment HL, decrement B POPqq PUSHqq Load register pair qq with top of stack Load top of stack with register pair qq 9-37 9-37 RESb,ml RESb,r RET RETcc RETI RETN RLml RLr RLA RLCml RLCr RLCA RLD RRml RRr RRA RRCml RRCr RRCA RRD RSTP Reset bit b of memory location ml Reset bit b of register r Unconditional return from subroutine Return from subroutine, if cc true Unconditional return from interrupt Unconditional return from non-maskable interrupt Rotate memory contents left through carry Rotate register r left through carry Rotate Accumulator left through carry Rotate memory contents left circular Rotate register r left circular Rotate Accumulator left circular Rotate digit left and right between Accumulator and memory (HL) Rotate memory contents right through carry Rotate register r right through carry Rotate Accumulator right through carry Rotate memory contents right circular Rotate register r right circular Rotate Accumulator right circular Rotate digit right and left between Accumulator and memory (HL) Restart to location P 9-46 9-46 9-58 9-58 9-58 9-59 9-49 9-47 9-47 9-49 9-47 9-47 9-51 9-50 9-48 9-50 9-49 9-47 9-48 9-51 9-59 SBCA,ml SBCA,n SBCA,r SBCHL,pp SCF SETb,ml SETb,r SLAml SLAr SRAml SRAr SRLml SRLr SUBml SUBn SUBr Subtract, with carry, memory contents from Accumulator Subtract, with carry, immediate data n from Accumulator Subtract, with carry, register r from Accumulator Subtract, with carry, register pair pp from HL Set carry flag Set bit b in memory location ml contents Set bit b in register r Shift memory contents left, arithmetic Shift register r left, arithmetic Shift memory contents right, arithmetic Shift register r right, arithmetic Shift memory contents right, logical Shift register r right, logical Subtract memory contents from Accumulator Subtract immediate data n from Accumulator Subtract register r from Accumulator 9-42 9-41 9-38 9-45 9-40 9-46 9-46 9-50 9-48 9-50 9-48 9-50 9-48 9-42 9-41 9-38 XORml XORn XORr Exclusive 'OR' memory contents and Accumulator Exclusive 'OR' immediate data n and Accumulator Exclusive 'OR' register r and Accumulator 9-44 9-41 9-39 ORml ORn ORr OTOR OTIR 9-32 9-54 9-55 9-55 9-54 z en 12.0 Instruction Set (Continued) 0 0) 12.2 INSTRUCTION SET MNEMONIC NOTATION 12.3 ASSEMBLED OBJECT CODE NOTATION Register Codes: Register rp Register Register rs BC B 000 00 00 BC 001 C 01 DE DE 01 0 010 10 HL 10 HL 011 E 11 SP 11 AF In the following instruction set listing, the notations used are shown below. b: Designates one bit in a register or memory location. Bit address mode uses this indicator. cc: Designates condition codes used in conditional Jumps, Calls, and Return instruction; may be: NZ = Non-Zero (Z flag = 0) 100 101 111 Z = Zero (Z flag=1) NC = Non-Carry (C flag = 0) C = Carry (C flag = 1) PO = Parity Odd or No Overflow (PIV=O) PE = Parity Even or Overflow (P IV = 1) P = Positive (S = 0) d: kk: m1: m2: n: nn: p: pp: qq: r: rr: ss: XL: XH: ( ): H L A pp 00 01 10 11 Conditions Codes: cc Mnemonic 000 NZ 001 Z 010 NC 011 C 100 PO 101 PE 110 P 111 M Mnemonic kk 00 NZ 01 Z 10 NC 11 C M = Negative (S = 1) Designates an 8-bit signed complement displacement. Relative or indexed address modes use this indicator. Subset of cc condition codes used in conjunction with conditional relative jumps; may be NZ, Z, NC or C. Designates (HL), (IX+d) or (IY+d). Register indirect or indexed address modes use this indicator. Designates (BC), (DE) or (nn). Register indirect or direct address modes use this indicator. Any 8-bit binary number. Any 16-bit binary number. Designates restart vectors and may be the hex values 0, 8, 10, 18, 20, 28, 30 or 38. Restart instructions employing the modified page zero addressing mode use this indicator. Designates the BC, DE, SP or any 16-bit register used as a destination operand in 16-bit arithmetic operations employing the register address mode. Designates BC, DE, HL, A, F, IX, or IY during operations employing register address mode. Designates A, B, C, 0, E, H or L. Register addreSSing modes use this indicator. Designates BC, DE, HL, SP, IX or IY. Register addreSSing modes use this indicator. Designates HL, IX or IY. Register addressing modes use this indicator. Subscript L indicates the lower-order byte of a 16-bit register. Subscript H indicates the high-order byte of a 16-bit register. parentheses indicate the contents are considered a pointer address to a memory or 1/0 location. Restart Addresses: t T X'OO 000 001 X'08 010 X'10 X'18 011 X'20 100 X'28 101 X'30 110 111 X'38 9-33 Register BC DE IX SP qq 00 01 10 11 Register BC DE HL AF True Flag Condition Z=O Z=1 C=O C=1 PIV=O PIV=1 S=O S=1 True Flag Condition Z=O Z=1 C=O C=1 0 0 gr-------------------------------------------------------------~ CD 12.4 8-Bit Loads z REGISTER TO REGISTER otI) 765 LD rd, ra Load register rd with rs: ,rd, Timing: Addressing Mode: I fs o Addressing Mode: M cycles-1 Tstates-4 Register LD R,A Load Refresh register (R) with contents of the Accumulator. R - A No flags affected 765 4 3 2 1 0 11,1,1,0,1,1,0,11 10,1,0,0,1,1,1,11 Timing: M cycles - 2 T states - 9 (4, 5) Register Addressing Mode: LD r,n Load register r with immediate data n. r n No flags affected 7 6 5 4 3 2 1 0 10,01 10,1,0,1,0,1,1,11 M cycles - 2 T states - 9 (4, 5) Register r, 11, 1 ,01 n 1 1 Timing: M cycles-2 T states - 7 (4, 3) Source - Immediate Destination - Register LD I,A Load Interrupt vector register (I) with the contents of A. Addressing Mode: I - A 7 6 5 REGISTER TO MEMORY 432 No flags affected 1 0 LD 11,1,1,0,1,1,0,11 Addressing Mode: M cycles - 2 T states - 9 (4, 5) Register 10 , 1 , 1 , 1 , 0 1 R r, 1 LD (HL), r M cycles- 2 T states - 7 (4,3) Source - Register Addressing Mode: Destination - Register Indirect 76543210 LD (IX + d), r(for Nx = 0) 1 1 Nx 1 1 1 0 1 " '" , 'LD(IY+d),r(forNx=1) Timing: LD A,R Load Accumulator with contents of R register. A - m" r Load memory from reigster r. m1 - r No flags affected 7 6 5 4 3 2 1 0 10,1,0,0,0,1,1,11 Timing: I M cycles - 2 T states - 9 (4, 5) Register ! 11,1,1,0,1,1,0,11 Addressing Mode: 0 Timing: LD A,I Load Accumulator with the contents of the I register. A I S: Set if negative result Z: Set if zero result H: Reset PIV: Set according to IFF2 (zero if interrupt occurs during operation) N: Reset C: Not affected 7 6 5 4 3 2 1 0 Timing: 321 10, 1 ,0, 1 , 1 , 1 , 1 , 1 No flags affected rd rs 7654321 10 , 1 1 4 11,1,1,0,1,1,0,11 S: Set if negative result Z: Set if zero result H: Reset PIV: Set according to IFF2 (zero if interrupt occurs during operation) N: Reset C: Not affected I 10,1, I ,1,01 r, d Timing: Addressing Mode: 9-34 M cycles- 2 T states - 19 (4, 4, 3, 5, 3) Source - Register Destination - Indexed z ~ CD 12.4 8-Bit Loads (Continued) m2 +- A 7 6 5 4 3 2 0 1 0 1 LD (BC), A 7 6 5 4 3 2 1 0 LD (DE), A I°,1 I Timing: M cycles-2 Addressing Mode: T states - 7 (4, 3) Source - Register (Implied) Destination - 7 6 LD r,ml Load register r from memory location ml. r +- m1 No flags affected No flags affected I° ° ° ° ° °I 10,0,0,1,0,0,1 ,°I 543 2 I:) I:) MEMORY TO REGISTER LD m2,A 'Load memory from the Accumulator. 11, 1 , ° 1 LD R, (HL) M cycles-2 T states-7 (4, 3) Addressing Mode: Source-Register Indirect Destination-Register Register Indirect 7 6 1 0 I°,°,2 , 2 , °,°,1 , °ILD (nn), A r, Timing: 5 4 3 2 1 0 LDr, (IX 11 , 1 , Nx , 1 , 1 , 1 , °, 1 1 LD r, (IV + d)(forNx=O) + d)(for Nx= 1) n (low-order byte) d n (high-order byte) Timing: M cycles-4 Addressing Mode: T states - 3 (4, 3, 3, 3) Source - Register (Implied) Destination - Direct 4 3 2 1 Source-Indexed Destination-Register A +- m2 7 I LD(HL), n M cycles-3 T states-10 (4, 3, 3) Addressing Mode: Source-Immediate Destination-Register Indirect 11,l,NX,l,l,l,O,l 5 No flags affected 4 3 2 1 0 °,°,°,°, °, ° 1 , 1 , Timing: Timing: 43210 6 1 LDA, (BC) LD A, (DE) 10,0,0,1,1,0,1,01 n 5 Addressing Mode: No flags affected 0 I°,°,1 , 1 , °,1 , 1 , °I 7 6 M cycles-5 T states-19 (4, 4, 3, 5, 3) A,m2 LD Load the Accumulator from memory location m2. LD ml,n Load memory with immediate data. ml +- n 7 6 5 Timing: M cycles-2 T states-7 (4, 3) Source-Register Indirect Destination-Register (Implied) Addressing Mode: LD (IX + d), n(for Nx = 0) LD (IV + d), n(for Nx = 1) 7 6 5 4 3 2 1 0 I°,°,1 , 1 , 1 , °,1 , °1 n (low-order byte) LD A, (nn) 1 10,0, n (high-order byte) d M cycles-4 T states-13 (4, 3, 3, 3) Addressing Mode: Source-Immediate Extended Destination-Register (Implied) n Timing: M cycles-5 Addressing Mode: Source-Immediate T states-19 (4,4,3,5,3) Destination-Indexed 9-35 1 Timing: 12.5 16-Bit Loads REGISTER TO REGISTER REGISTER TO MEMORY LD rr, nn Load 16-bit register pair with immediate data. rr, +- nn No flags affected 76543210 LDBC,nn LD (nn), rr Load memory location nn with contents of 16-bit register, rr. (nn) +- rrL No flags affected (nn + 1) +- rrH 765 432 1 0 LD (nn), HL 10,0,1,0,0,0,1,01 (note an alternate opcode below) I°,°I 1 rp I°,°,°,1 I n (low-order byte) LD DE, nn LD HL, nn 1 LD SP, nn n (low-order byte) n (high-order byte) n (high-order byte) Timing: M cycles-3 T states-10 (4, 3, 3) Source-Immediate Extended Addressing Mode: Destination-Register 7 6 5 43210 LD IX, nn (for NX = 0) Timing: Addressing Mode: 7 6 5 4 3 2 1 M cycles-5 T states-16 (4, 3, 3, 3, 3) Source-Register Destination-Direct 0 LD (nn), BC °, °, °, I I°,°, LD IV, nn (for NX = 1) 1,1,1, 0,0,1,0,0,0,0,1 1 1,1, rp 1 LD (nn), DE LD (nn), HL 1 ,1 LD (nn), SP n (low-order byte) n (low-order byte) n (high-order byte) n (high-order byte) M cycles-4 T states-14 (4, 4, 3, 3) Source-Immediate Extended Destination-Register Timing: Addressing Mode: M cycles-6 T states-20 (4, 4, 3, 3, 3, 3) Addressing Mode: Source-Register Destination-Direct 7 6 5 43210 LD (nn), IX (for Nx = 0) 1 , 1 , NX , 1 , 1 , 1 , 1 LD (nn) IV (for Nx = 1) Timing: LD SP,55 Load the SP from 16-bit register ss. SP +- ss No flags affected 765 4 3 2 1 0 11 , 1 , 1 , 1 , 1 , °,°, 11 °, LD SP, HL Timing: M cycles-1 Tstates-6 Addressing Mode: Source-Register Destination-Register (Implied) 7 6 5 43210 LD SP, IX (for NX = 0) n (low-order byte) n (high-order byte) Timing: LD SP,IV (for Nx = 1) Timing: Addressing Mode: Addressing Mode: M cycles-2 T states-10 (4, 6) Source-Register Destination-Register (Implied) 9-36 M cycles-6 T states-20 (4, 4, 3, 3, 3, 3) Source-Register Destination-Direct 12.5 16-Bit Loads (Continued) 7 PUSH qq Push the contents of register pair qq onto the memory stack. (SP - 1) ~ qqH No flags affected (SP - 2) ~ qqL SP ~ SP - 2 7 6 5 4 3 2 1 0 PUSH BC 1 1 1 rs 1 . , . , 10 . , 1 , ° , 1 1 PUSH DE . PUSH HL 7 6 5 4 3 2 11 , 1 , Nx , 1 , 1 , 1 , ° °, 1 Timing: Addressing Mode: 11 2 1 0 LD LD LD LD BC, (nn) DE, (nn) HL, (nn) SP, (nn) n (high-order byte) M cycles-6 T states-20 (4, 4, 3, 3, 3, 3) Source-Direct Addressing Mode: Destination-Register 7 6 5 43210 LD IX, (nn)(for Nx = 0) Timing: M cycles-3 T states-11 (5, 3, 3) Source-Register Destination-Register Indirect (Stack) Addressing Mode: 3 n (low-order byte) PUSHAF Timing: 654 LD IV, (nn) (for Nx = 1) PUSH IX (for Nx=O) PUSH IV (for Nx= 1) n (low-order byte) n (high-order byte) M cycles-3 T states-15 (4, 5, 3, 3) Source-Register Destination-Register Indirect (Stack) Timing: M cycles-6 T states-20 (4, 4, 3, 3, 3, 3) Source-Direct Destination-Register Addressing Mode: POP qq Pop the contents of the memory stack to register qq. No flags affected qqL ~ (SP) qqH ~ (SP + 1) SP ~ SP + 2 7 6 5 4 3 2 1 0 POP BC MEMORY TO REGISTER LD rr, (nn) Load 16-bit register from memory location nn. rrL ~ (nn) No flags affected rrH ~ (nn + 1) 7 6 5 4 3 2 1 0 LD HL, (nn) 10,0,1,0,0,0,1,01 (note an alternate opcode below) n (low-order byte) 1 . 111 , . r,s 10 . , °° , DE , 11 . POP POP HL POPAF M cycles-3 T states-10 (4, 3, 3) Source-Register Indirect Addressing Mode: (Stack) Destination-Register 7 6 5 43210 POP IX (for Nx=O) 11 , 1 , Nx , 1 , 1 , 1 , 11 POP IV (for Nx= 1) Timing: n (high-order byte) Timing: Addressing Mode: M cycles-5 T states-16 (4, 3, 3, 3, 3) Source-Direct Destination-Register °, Timing: Addressing Mode: 9-37 M cycles-4 T states-14 (4,4,3,3) Source-Register Indirect (Stack) Destination-Register z en n co o o CI CI CD (,) 12.6 a-Bit Arithmetic Z REGISTER ADDRESSING ARITHMETIC rn Op ADD ADC INC SUB SBC DEC NEG 7 Hex Hex Value Value Number C H C In In Added After Before Before Upper Lower To DAA DAA DAA Digit Digit Byte (Bits 7-4) (Bits 3.0) 0 0 0 0 0 0 0 0 0-9 0-8 0-9 A-F 9-F A-F 0-2 0-2 0-3 0 0 1 0 0 0-9 0-8 7-F 6-F 0 0 0 0 0-9 A-F 0-3 0-9 A-F 0-3 0-9 A-F 0-3 00 06 06 60 66 66 60 66 66 0 0 0 0-9 6-F 0-9 6-F 00 FA AO 9A 0 0 6 5 4 3 2 Addressing Mode: Destination-Implied SUB r Subtract the contents of register r from the Accumulator. S: Set if result is negative Z: Set if result is zero H: Set if borrow from bit 4 PIV: Set if result exceeds 8-bit 2's complement range N: Set C: Set according to borrow 7 6 543 2 1 0 I M cycles-1 Addressing Mode: T states-4 Source-Register Destination-Implied I r! Timing: M cycles-1 Addressing Mode: Tstates-4 Source-Register Destination-Implied SBC A,r Subtract contents of register r and the carry bit C from the Accumulator. A +- A - r - CY S: Set if result is negative Z: Set if result is zero H: Set if borrow from bit 4 PIV: Set if result exceeds 8-bit 2's complement range N:Set c: Set according to borrow 1 Timing: I M cycles-1 Tstates-4 Source-Register 7 6 5 432 1 0 ,r, 0 Timing: ADD A,r Add contents of register r to the Accumulator. A +- A + r S: Set if negative result Z: Set if zero result H: Set if carry from bit 3 PIV: Set according to overflow condition N: Reset C: Set if carry from bit 7 11,0,0,0,01 1 11,o,o,o,l1,r, 765 ADC A,r Add contents of register r, plus the carry flag, to the Accumulator. S: Set if negative result A +- A + r + CY Z: Set if zero result H: Set if carry from bit 3 PIV: Set if result exceeds 2's complement range N: Reset C: Set if carry from bit 7 4 3 2 1 0 Timing: M cycles-1 Addressing Mode: T states-4 Source-Register Destination-Implied AND r Logically AND the contents of the r register and the Accumulator. S: Set if result is negative A +- A 1\ r Z: Set if result is zero H:Set PIV: Set if result parity is even N: Reset C: Reset 9-38 12.6 8-Bit Arithmetic z CJ) o (Continued) 7 6 5 4 3 2 1 0 11,0,1,0,01 7 6 5 4 r, 10,01 Timing: M cycles-1 Addressing Mode: T states-4 Source-Register Destination-Implied M cycles-1 Addressing Mode: T states-4 Source-Register Destination-Implied 11 , 0, ,0, o Timing: M cycles-1 Addressing Mode: T states-4 Source-Register r , Addressing Mode: Destination-Implied Decrement the contents of register r. S: Set if result is negative Z: Set if result is zero H: Set according to a borrow from bit 4 P/V: Set only if r was X'80 prior to operation N: Set C:N/A 7 Addressing Mode: T states-4 Source-Register Destination-Implied r DEC r , M cycles-1 M cyc1es-1 T states-4 Source-Register Timing: 1 0 Timing: 6 10, 0 1 INC Increment register r. r +- r + 1 o ,0,01 Destination-Register XOR r Logically exclusively OR the contents of the r register with the Accumulator. S: Set if result is negative Z: Set if result is zero H: Reset P/V: Set if result parity is even N: Reset C: Reset 5 432 Q) 0 1 Timing: 7 6 r, 1 CP r Compare the contents of register r with the Accumulator and set the flags accordingly. S: Set if result is negative A - r Z: Set if result is zero H: Set if borrow from bit 4 P/V: Set if result exceeds 8-bit 2's complement range N: Set C: Set according to borrow 7 6 5 4 3 2 1 0 OR Logically OR the contents of the r register and the Accumulator. A +- A V r S: Set if result is negative Z: Set if result is zero H: Reset P/V: Set if result parity is even N: Reset C: Reset 7 6 543 2 1 0 r, 3 2 5 4 3 r , 2 1 0 ,0 , 1 1 Timing: M cycles-1 Addressing Mode: T states-4 Source-Register Destination-Register CPL Complement the Accumulator (1 's complement). A +- A S:N/A S: Set if result is negative Z: Set if result is zero H: Set if carry from bit 3 Z: N/A P/V: Set only if r was X'7F before H: Set operation P/V: N/A N: Reset N: Set C:N/A C: N/A 9-39 • C) C) co o (/) z r---------------------------------------------------------------------------------12.6 8-Bit Arithmetic 7 6 5 4 3 2 1 (Continued) 0 DAA Adjust the Accumulator for BCD addition and subtraction operations. To be executed after BCD data has been operated upon the standard binary ADD, ADC, INC, SUB, SBC, DEC or NEG instructions (see "Register Addressing Arithmetic" table). 10,0,1,0,1,1,1,11 Timing: M cycles-1 Addressing Mode: Tstates-4 Implied S: Set according to bit 7 of result NEG Negate the Accumulator (2's complement). Z: Set if result is zero A - H: Set according to instructions 0 - A S: Set if result is negative PIV: Set according to parity of result Z: Set if result is zero N:N/A H: Set according to borrow from bit 4 C: Set according to instructions 7 PIV: Set only if Accumulator was X'80 prior to operation 5 4 3 2 1 0 10,0,1,0,0,1,1,11 N:Set 7 6 5 4 3 2 6 M cycles-1 Timing: C: Set only if Accumulator was not X'OO prior to operation 1 0 Tstates-4 Addressing Mode: Implied IMMEDIATELY ADDRESSED ARITHMETIC 11,1,1,0,1,1,0,11 ADD A,n 10,1,0,0,0,1,0,01 Add the immediate data n to the Accumulator. Timing: A - M cycles-2 Addressing Mode: A + S: Set if result is negative n T states-8 (4, 4) Z: Set if result is zero Implied H: Set if carry from bit 3 PIV: Set if result exceeds 8-bit 2's complement range CCF Complement the carry flag. CY-CY S:N/A Z:N/A 7 6 5 4 3 2 N: Reset C: Set if carry from bit 7 1 0 H: Previous carry 11,1,0,0,0,1,1,01 PIV:N/A 7 6 5 4 3 2 N: Reset C: Complement of previous carry 1 0 n 1 M cycles-2 Timing: T states-7 (4, 3) 10,0,1,1,1,1,1,11 Addressing Mode: M cycles-1 Timing: Source-Immediate Destination-Implied T states-4 ADC A,n Add, with carry, the immediate data n and the Accumulator. Implied Addressing Mode: SCF A - Set the carry flag. CY - Z:N/A 4 3 2 7 M cycles-1 T states-4 Addressing Mode: S: Set if result is negative C: Set according to carry from bit C: Set 1 0 10,0, 1 , 1 , 0 , 1 , 1 , 1 1 Timing: CY N: Reset N: Reset 5 + PIV: Set if result exceeds 8-bit 2's complement range PIV:N/A 6 n H: Set if carry from bit 3 H: Reset 7 + Z: Set if result is zero S:N/A 1 A Implied 9-40 12.6 8-Bit Arithmetic 7 6 5 4 3 2 1 z (J) oCD (Continued) 0 o o n AND 11,1,0,0,1,1,1,01 The immediate data n is logically AND'ed to the Accumulator. A +- A 1\ n n Timing: S: Set if result is negative Z: Set if result is zero M cycles-2 H: Set T states-7 (4, 3) Addressing Mode: PIV: Set if result parity is even Source-Immediate N: Reset Destination-Implied C: Reset n SUB 7 Subtract the immediate data n from the Accumulator. A +- A - n 6 5 4 3 Z: Set if result is zero n M cycles-2 Timing: P IV: Set if result exceeds 8-bit 2's complement range T states-7 (4, 3) N: Set Addressing Mode: C: Set according to borrow condition 6 5 432 1 OR 0 n The immediate data n is logically OR'ed to the contents of the Accumulator. A +- A V s S: Set if result is negative n Z: Set if result is zero Timing: M cycles-2 Addressing Mode: Source-Immediate H: Reset PIV: Set if result parity is even T states-7 (4, 3) N: Reset C: Reset Destination-Implied 7 6 5 4 3 2 1 0 A,n 11,1,1,1,0,1,1,01 Subtract, with carry, the immediate data n from the Accumulator. A +- A - n - CY n S: Set if result is negative Z: Set if result is zero M cycles-2 Addressing Mode: Source-Immediate T states-7 (4, 3) Destination-Implied N: Set XOR C: Set according to borrow condition 6 5 4 3 2 1 A +- A (!l n S: Set if result is negative Z: Set if result is zero H: Reset n Addressing Mode: n The immediate data n is exclusively OR'ed with the Accumulator. 0 11,1,0,1,1,1,1,01 Timing: 1 Timing: H: Set if borrow from bit 4 PIV: Set if result exceeds 8-bit 2's complement range 7 Source-Immediate Destination-Implied 11,1,0,1,0,1,1,01 SBC 1 0 11,1,1,0,0,1,1,01 S: Set if result is negative H: Set if borrow from bit 4 7 2 PIV: Set if result parity is even M cycles-2 N: Reset T states-7 (4, 3) C: Reset Source-Immediate Destination-Implied 9-41 C) C) co o z U) 12.6 8-Bit Arithmetic 7 6 5 4 3 2 11,1,1,0,1,1 1 (Continued) 0 7 ,01 6 n 11,0, Timing: 5 4 3 2 ° ADD A, (IX + d)(for Nx = 0) 1 I ADD A, (lY + d) (for Nx = 1) 1 0 11 , 1 , Nx , 1 , 1 , 1 , °, ,0,0,1,1,01 M cycles-2 d T states-7 (4, 3) Addressing Mode: M cycles-5 Timing: Source-Immediate T states-19 (4, 4, 3, 5, 3) Destination-Implied CP Source-Indexed Addressing Mode: n Destination-Implied Compare the immediate data n with the contents of the Accumulator via subtraction and return the appropriate flags. The contents of the Accumulator are not affected. A - n ADC A,m1 Add the contents of the memory location m1 plus the carry to the Accumulator. A A + m1 + CY S: Set if result is negative Z: Set if result is zero H: Set if carry from bit 3 PIV: Set if result exceeds 8-bit 2's complement range N: Reset C: Set according to carry from bit 7 7 6 543 2 1 0 S: Set if result is negative Z: Set if result is zero H: Set if borrow from bit 4 7 6 5 4 3 PIV: Set if result exceeds 8-bit 2's complement range N: Set C: Set according to borrow condition 2 1 0 11,0,0,0,1,1,1 n I T states-7 (4, 3) T states-7 (4, 3) Addressing Mode: Addressing Mode: Destination-Implied 76543210 11 , 1 , Nx , 1 , 1 , 1 , ADD A,m1 Add the contents of the memory location m1 to the Accumulator. + m1 11,0, S: Set if result is negative Z: Set if result is zero ° Addressing Mode: + d) (for Nx=l) Source-Indexed Destination-Implied SUB m1 Subtract the contents of memory location m1 from the Accumulator. ADD A, (HL) A - M cycles-2 T states-7 (4, 3) Addressing Mode: + d) (for Nx= 0) ADCA, (lY T states-19 (4, 4, 3, 5, 3) 1 0 _0..J,~1--,-,_l..J'L...0--,1 Timing: ADC A, (IX M cycles-5 Timing: 7 LI_1...1'_0-,-,_0...1,_0-,-, 11 ,0,1,1,1,01 C: Set according to carry from bit 432 °, d H: Set if carry from bit 3 PIV: Set if result exceeds 8-bit 2's complement range N: Reset 765 Source-Register Indirect Immediate MEMORY ADDRESSED ARITHMETIC A ADC A, (HL) M cycles-2 M cycles-2 Timing: A - ,° Timing: A - m1 S: Set if result is negative Z: Set if result is zero H: Set if borrow from bit 4 PIV: Set if result exceeds 8-bit 2's complement range N:Set C: Set according to borrow condition Source-Register Indirect Destination-Implied 9-42 z 12.6 8-Bit Arithmetic 7 6 5 4 3 2 1 en (") CO (Continued) 0 11 , 0 , 0 , 1 , 0 , 1 , 1 , 0 I AND m1 The data in memory location m1 is logically AND'ed to the Accumulator. SUB (HL) Timing: M cycles-2 Addressing Mode: T states-7 (4, 3) Source-Register Indirect A ~ A 1\ m1 S: Set if result is negative Z: Set if result is zero H: Set Destination-I mplied PIV: Set if result parity is even 76543210 11 , 1 , Nx , 1 , 1 , 1 , 0 , 1 + d) (for Nx=O) SUB (IY + d) (for Nx = 1) SUB (IX I N: Reset 7 6 5 4 3 2 1 C: Reset 0 11 ,0, 0 ,1 ,0,1 ,1 ,01 11 , 0 , 1 , 0 , 0 , 1 , 1 , 0 d Source-Register Indirect Addressing Mode: Destination-Implied Source-Indexed 7 Destination-Implied 6 5 43210 11,1, Nx, 1 ,1 ,1 ,0,1 SBC A,m1 Subtract, with carry, the contents of memory location m1 from the Accumulator. A ~ A - m1 - CY S: Set if result is negative H: Set if carry from bit 3 Destination-Implied OR m1 The data in memory location m1 is logically OR'ed with the Accumulator. SBC A, (HL) A ~ A V m1 S: Set if result is negative Z: Set if result is zero M cycles-2 T states-7 (4, 3) Addressing Mode: H: Reset PIV: Set if result parity is even Source-Register Indirect N: Reset Destination-Implied 76543210 11,1, NX, 1,1,1,0,11 + d) (for Nx = 0) + d) (for Nx= 1) Source-Indexed Addressing Mode: C: Set according to borrow condition 1 0 Timing: AND (IY T states-19 (4, 4, 3, 5, 3) N: Set I AND (IX M cycles-5 Timing: PIV: Set if result exceeds 8-bit 2's complement range 11 , 0 , 0 , 1 , 1 , 1 , 1 , 0 I d Z: Set if result is zero 7 6 5 4 3 2 AND (HL) T states-7 (4, 3) T states-19 (4, 4, 3, 5, 3) Addressing Mode: I M cycles-2 Timing: M cycles-5 Timing: o o SBC A, (IX + d) (for Nx = 0) SBCA, (IV + d) (forNx=1) 7 6 5 4 3 2 1 C: Reset 0 11 , 0 , 1 , 1 , 0 , 1 , 1 , 0 11,0,0,1,1,1,1,01 I OR (HL) M cycles-2 Timing: T states-7 (4, 3) d Timing: Addressing Mode: Addressing Mode: M cycles-5 T states-19 (4, 4, 3, 5, 3) Source-Register Indexed Destination-Implied 7 6 5 43210 Source-Indexed Destination-Implied ,1 ,0 ,1 , 1 ,0 OR (IX + d) (for Nx=O) OR (IY + d) (for Nx= 1) I d Timing: M cycles-5 T states-19 (4, 4, 3, 5, 3) Addressing Mode: Source-Indexed Destination-Implied 9-43 • 12.6 8-Bit Arithmetic (Continued) XOR m1 The data in memory location m1 is exclusively OR'ed with the data in the Accumulator. A - A ED m1 5: Set if result is negative Z: Set if result is zero N: Reset 2 1 Addressing Mode: 5 Source-Indexed Destination-Implied H: Set according to carry from bit 3 PIV: Set if data was X'7F before operation XOR (HL) M cycles-2 T states-7 (4, 3) Source-Register Indexed N: Reset C:N/A 7 6 5 4 3 2 1 0 I0 , 0 , 1 , 1 , 0 , 1 , 0 , 0 1 Destination-Implied 7 6 Addressing Mode: C: Reset 0 11 , 0 , 1 , 0 , 1 , 1 , 1 , 0 1 Timing: M cycles-5 T states-19 (4, 4, 3, 5, 3) INC m1 Increment data in memory location m1. 5: Set if result is negative Z: Set if result is zero H: Reset PIV: Set if result parity is even 76543 Timing: 43210 11 , 1 , Nx , 1 , 1 , 1 , 0 , 1 1 XOR (IX + d) (for Nx = 0) XOR (IV + d)(for Nx= 1) INC (HL) Timing: M cycles-3 T states-11 (4, 4, 3) Addressing Mode: Source-Register Indexed Destination-Register Indexed 7 6 d Timing: 5 43210 M cycles-5 INC (IX INC (IV + d)(for Nx = 0) + d) (for Nx= 1) T states-19 (4, 4, 3, 5, 3) Addressing Mode: 10,0, Source-Indexed Destination-Implied d CP m1 Compare the data in memory location m1 with the data in the Accumulator via subtraction. A - m1 5: Set if result is negative Z: Set if result is zero H: Set if borrow from bit 4 PIV: Set if result exceeds S-bit 2's complement range N: Set C: Set according to borrow condition 7 6 5 4 3 2 1 0 11 , 0 , 1 , 1 , 1 , 1 , 1 , 0 1 M cycles-2 T states-7 (4, 3) Addressing Mode: Source-Register Indirect Destination-Implied 7 6 5 43210 CP (IX CP (IV M cycles-6 T states-23 (4, 4, 3, 5, 4, 3) Addressing Mode: Source-Indexed Destination-Indexed DEC m1 Decrement data in memory location m1. 5: Set if result is negative Z: Set if result is zero H: Set according to borrow from bit 4 PIV: Set only if m1 was X'SO before operation CP (HL) Timing: 11 , 1 , Nx , 1 , 1 , 1 , 0 , 1 1 Timing: N:Set C:N/A + d)(for Nx = 0) + d) (for Nx= 1) ,1,1,1,1,01 d 9-44 r---------------------------------------------------------------------------------, 12.6 8-Bit Arithmetic 7 6 5 4 3 2 1 PIV: Set if result exceeds 16·bit 2's complement range (Continued) 0 Ia , a , 1 , 1 , a , 1 , a , 1 I N: Reset C: Set if carry out of bit 15 DEC (HL) 765 Timing: M cycles- 3 Addressing Mode: T states - 11 (4, 4, 3) Source - Register Indexed Destination dexed 7 6 43210 5 11 , 1 , Nx , 1 , 1 , 1 , Register 4 3 2 1 o00 o o 0 11,1,1,0,1,1,0,11 Ia , 1 I pp In· 11, 0, ,0 DEC (lY + d) (for Nx = 1) I Timing: M cycles- 4 T states - 15 (4, 4, 4, 3) Addressing Mode: Source - Register Destination - Register DEC (IX + d) (for Nx = 0) a,1 I ~ U) 10 , 0 , SBC HL,pp Subtract, with carry, the contents of the 16·bit pp register from the 16·bit H L register. HL +- HL - pp - CY S: Set if result is negative d Timing: M cycles- 6 T states - 23 (4, 4, 3, 5, 4, 3) Addressing Mode: Source - Indexed Destination - Indexed Z: Set if result is zero H: Set according to borrow from bit 12 PIV: Set if result exceeds 16·bit 2's complement range N:Set 12.7 16-Bit Arithmetic ADD sS,pp Add the contents of the 16·bit register pp to the contents of the 16·bit register ss. ss+-ss+pp C: Set according to borrow condi· tion S:N/A Z:N/A H: Set if carry from bit 11 PIV:N/A N: Reset C: Set if carry from bit 15 7 6 5 432 I0 , a I pp 11, 0 , 1 pp 10 , a , , aI M cycles-4 Timing: 0 T states - a , 1 I ADD HL, pp Addressing Mode: T states Addressing Mode: 11 (4, 4, 3) 76543210 ADD IX, pp (for NX = 0) 11 , 1 , Nx , 1 , 1 , 1 , 0 , 1 ADD IY, pp (for Nx = 1) pp INC rr Increment the contents of the 16·bit register rr. Source - Register Destination - Register ,-------------------, I 15 (4, 4, 4, 3) Source - Register Destination - Register M cycles- 3 Timing: 10,01 o 765432 rr +- rr + 1 7 6 5 4 10 , 0 I rp , 3 2 1 No flags affected 0 INC BC I. 0, a , 1 , 1 I.INCHL INC DE INCSP 11,0,0,11 Timing: M cycles-4 T states -15 (4, 4, 4, 3) Timing: Addressing Mode: Source - Register Destination - Register Addressing Mode: M cycles-1 T states- 6 Register 76543210 HL,pp ADC The contents of the 16·bit register pp are added, with the carry bit, to the HL register. HL +- HL + pp + CY S: Set if result is negative Z: Set if result is zero 11 , 1 , NX , 1 , 1 , 1 , 10 , a, 1 I INC IX (for Nx = 0) INC IY (for Nx= 1) a, Timing: M cycles- 2 T states - Addressing Mode: H: Set according to carry out of bit 11 9·45 Register 10 (4, 6) • s z 12.7 16-Bit Arithmetic (Continued) DEC 7 6 5 432 1 0 11 , 1 , 0 , 0 , 1 , 0 , 1 , 1 1 rr Decrement the contents of the HI-bit register rr. rr - 7 rr - 1 6 5 001 1 . , . ;p_ 4 3 2 10, 1 No flags affected DEC BC 0 1 ,b, 1 r , Timing: 1 1 0 1 11DECDE . , , , . DEC HL M cycles-2 T states - 8 (4, 4) Bit/Register Addressing Mode: DECSP MEMORY Timing: M cycles-1 Addressing Mode: Tstates Register 76543210 SET b,m1 Bit b in memory location m1 is set. 6 m1b - 7 DEC IX (for Nx=O) 6 11 , 1 , DEC IV (for Nx= 1) 1 5 No flags affected 432 °,°, °, 1 , 1 0 1 , 1 1 SET b, (HL) 10 ,0 , Timing: M cycles-2 T states -10 (4, 6) Timing: M cycles-4 T states -15 (4, 4, 4, 3) Addressing Mode: Register Addressing Mode: Bit/Register Indirect 76543210 SET b, (lX+d) (for Nx=O) 12.8 Bit Set, Reset, and Test SET b, (lV+d) (for Nx= 1) REGISTER 1,1, b,r SET Bit b in register r is set. Rb - 1 ° ,0,1,0,1,1 d No flags affected 76543210 11,1,0,0,1,0,1,11 , r M cycles-6 Addressing Mode: T states - 23 (4, 4, 3, 5, 4, 3) Bitllndexed I Timing: M cycles-2 T states - 8 (4, 4) Addressing Mode: Bit/Register RES b,m1 Bit b in memory location m1 is reset. m1b 7 6 RES b,r Bit b in register r is reset. ° rb - Timing: 11 , 1 , No flags affected ° °, 5 4 3 0, 2 1 ,0, ,1 1 76543210 ° 1 ,b, ,r 1 M cycles-4 T states - 15 (4, 4, 4, 3) Addressing Mode: Bit/Register Indirect , T states - Addressing Mode: ,° b, M cycles-2 Timing: 76543210 8 (4, 4) 1 , 1 , Nx , 1 , 1 , 1 , Bit/Register RES b, (HL) Timing: 11,1,0,0,1,0,1,11 11 , No flags affected 0 RES b, (IX+d) (for Nx=O) °, 1 RES b, (IV+d) (for Nx= 1) BIT b,r Bit b in register r is tested with the result put in the Z flag. Z - ib S: Undefined Z: Inverse of tested bit d H:Set P/V: Undefined 1 ,0 , , b, Timing: N: Reset , 1 ,1 , ° M cycles-6 T states - C:N/A Addressing Mode: 9-46 Bitllndexed 23 (4, 4, 3, 5, 4, 3) z 7 12.8 Bit Set, Reset, and Test (Continued) BIT 1 B,m1 Bit b in memory location m1 is tested via the Z flag. Z - m1b 6 5 4 3 2 °,°,°,°,°, 1 I 1 , 1 , 1 Timing: S: Undefined Z: Inverse of tested bit H:Set U) oCD 0 o RLCA o M cycles - 1 T states- 4 Addressing Mode: Implied (Note RLCA does not affect S, Z, or PIV flags.) PIV: Undefined r RL N: Reset Rotate register r left through carry. C:N/A 7 6 5 4 3 2 1 ~~7-.------0""~ 0 11 , 1 , 0 , 0 , 1 , 0 , 1 , 1 I BIT b, (HL) r TLlC/5171-56 Timing: M cycles- 3 T states -12 (4, 4, 4) Addressing Mode: Bit/Register Indirect 76543210 BIT b, (IX + d) (for Nx = 0) 1 , 1 , Nx , 1 , 1 , 1 , 1 BIT b, (IY+d) (for Nx= 1) S: Set if result is negative Z: Set if result is zero H: Reset PIV: Set if result parity is even °, 1,1, ° 7 ,0,1,0,1,1 d °, 10 , 1 6 5 4 3 2 °,°, °, °,°,1 , ° 11 , 1 , 1 , 1 N: Reset C: Set according to bit 7 of r 1 0 1 , 1 I RL r r, I (Note alternate for L--'--'--'---'-_'--'--'-....J A register below) 1 Timing: M cycles-5 T states - 20 (4, 4, 3, 5, 4) Timing: Addressing Mode: Bit/Indexed Addressing Mode: 7 12.9 Rotate and Shift 1 REGISTER 6 M cycles-2 T states - 8 (4, 4) 5 4 3 °,°,°, °, 1 , Register 2 1 1 , 1 , 1 Rotate register r left circular. I RLA M cycles-1 Tstates- 4 Timing: RLC 0 Addressing Mode: Implied (Note RLA does not affect S, Z, or PIV flags.) RRC r Rotate register r right circular. r TL/C/5171-57 S: Set if result is negative Z: Set if result is zero r H: Reset TL/C/5171-59 P IV: Set if result parity is even 7 6 4 3 2 S: Set if result is negative C: Set according to bit 7 of r Z: Set if result is zero H: Reset 1 0 °,°, °, I °,°,°,°, I 11 , 1 , 10 , 5 N: Reset 1 , 1 , 1 P IV: Set if result parity is even RLC r N: Reset C: Set according to bit (Note alternate for L--'--'---'---J'--'--'--'---J A register below) Timing: M cycles- 2 T states - 8 (4, 4) Addressing Mode: Register 9-47 ° of r C) C) co o(/) z r---------------------------------------------------------------------------------, 12.9 Rotate and Shift (Continued) 765432 11 , 1 , 0 , 0, 0 ,0, PIV: Set if result parity is even 1 N: Reset RRC r C: Set according to bit 7 of r 7 (Note alternate for A register below) 10 , 0 , 0 , 0 , 1 Timing: M cycles T states - Addressing Mode: 6 5 4 3 2 1 0 11,1,0,0,1,0,1,1 2 10 , 0, 8 (4, 4) Register r , ,0 , 0 I M cycles - Timing: 76543210 T states - LI_0~,_0_L,_0~,_0~,_1_L_J__~,_1~1 Addressing Mode: RRCA M cycles - Timing: Register SRA 1 Shift register r right arithmetic. T states- 4 Addressing Mode: 2 8 (4, 4) Implied (Note RRCA does not affect S, Z, or PIV flags.) RR TLiC/5171-62 Rotate register r right through carry. S: Set if result is negative t=:i~7------------~--O~ Z: Set if result is zero H: Reset PIV: Set if result parity is even r N: Reset TL/C/5171-60 S: Set if result is negative 7 Z: Set if result is zero 6 5 4 3 2 11 , 1 , 0 , 0 , 1 , 0 , 1 , H: Reset PIV: Set if result parity is even r , N: Reset 7 6 5 4 o 0 3 C: Set according to bit 0 of r 2 1 0 Timing: o Addressing Mode: 0 C: Set according to bit 0 of r 1 0 M cycles T states - RRr 2 8 (4, 4) Register SRL o 0 0 Timing: Shift register r right logical. (Note alternate for A register below) M cycles- 2 T states - Addressing Mode: 765432 r TL/C/5171-63 0 S: Reset LI0~,_0_L,_0~,_1~__L_~_L,_1~1 Z: Set if result is zero RRA M cycles - Timing: 8 (4, 4) Register H: Reset 1 PIV: Set if result parity is even T states-4 N: Reset Addressing Mode: Implied (Note RRA does not affect S, Z, or PIV flags.) SLA 7 r 6 5 4 3 2 C: Set according to bit 0 of r 1 0 11 , 1 , 0 , 0 , 1 , 0 , 1 , 1 1 Shift register r left arithmetric. 10 , 0 , 1 , 1 , 1 ~77.4======~O~r--O Timing: r r, 1 M cycles- 2 T states - TLiC/5171-61 Addressing Mode: S: Set if result is negative Z: Set if result is zero H: Reset 9-48 Register 8 (4, 4) z en oco 12.9 Rotate and Shift (Continued) 7 MEMORY RLC 6 11 , 1 , ml Rotate date in memory location ml left circular. 5 4 0 321 C) C) °,°, °, ,°, ° 1 , 10,0,0, 1 , 1 1 RL (HL) 1 ,1 , 1 Timing: M cycles - 4 T states -15 (4, 4, 4, 3) Addressing Mode: Register Indirect 76543210 TLlC/5171-64 1 , 1 , Nx , 1 , 1 , 1 , S: Set if result is negative Z: Set if result is zero 1,1, H: Reset PIV: Set if result parity is even ° °, RL (IX + d) (for Nx = 0) 1 RL (IY+d) (for NX= 1) ,0,1,0,1,1 d N: Reset 7 6 5 11 , 1 , 432 °,°, °, 1 , 10,0,0,0,0, C: Set according to bit 7 of ml 1 0 1 , 1 , 1 , ° I Register indirect 76543210 ° M cycles - 6 T states - 23 (4, 4, 3, 5, 4, 3) Addressing Mode: 1 Addressing Mode: 1,1, ,1,0,1,1,0 Timing: M cycles- 4 T states - 15 (4, 4, 4, 3) °, ° RLC (HL) Timing: 1 , 1 , Nx , 1 , 1 , 1 , 0,0, 11 RRC Indexed ml Rotate the data in memory location ml right circular. RLC (IX+d) (for Nx=O) RLC (IY+d) (for Nx= 1) ,0,1,0,1,11 TL/C/5171-66 d S: Set if result is negative Z: Set if result is zero Timing: M cycles-6 T states - 23 (4, 4, 3, 5, 4, 3) Addressing Mode: Indexed RL H: Reset PIV: Set if result parity is even N: Reset C: Set according to bit 7 6 5 4 3 2 1 0 ml 11 , 1 , Rotate the data in memory location ml left though carry. °,°, °, 1, 1, 11 ° of ml RRC (HL) 10 ,0,0,0,1,1,1,01 Timing: M cycles - 4 T states - 15 (4, 4, 4, 3) Addressing Mode: Register Indirect 76543210 TL/C/5171-65 S: Set if result is negative Z: Set if result is zero 1 , 1 , Nx , 1 , 1 , 1 , H: Reset 1,1, ° PIV: Set if result parity is even °, 1 RRC (IX + d) (for Nx = 0) RRC (IY + d) (for Nx = 1) ,0, 1 , 0,1 , 1 d N: Reset C: Set according to bit 7 of ml 0,0, 9-49 ° ,0,1,1,1,0 Timing: M cycles - 6 T states - 23 (4, 4, 3, 5, 4, 3) Addressing Mode: Indexed C) C) ~z r---------------------------------------------------------------------------------, 12.9 Rotate and Shift (Continued) 76543210 RR ml Rotate the data in memory location ml right through the carry. 11 , 1 , Nx , 1 , 1 , 1 , °, I 1 + d) (for Nx = + d) (for Nx = SLA (IX SLA (IV 0) 1) 11,1,0,0,1,0,1,11 I d 10,0, ,0,0,1,1,01 Timing: S: Set if result is negative Z: Set if result is zero M cycles- 6 T states - 23 (4, 4, 3, 5, 4, 3) Addressing Mode: Indexed H: Reset SRA TL/C/5171-67 ml Shift the data in memory location ml right arithmetic. P IV: Set if result parity is even N: Reset C: Set according to bit 76543210 11,1,0,0,1,0,1,11 ° of ml RR(HL) TL/C/5171-69 S: Set if result is negative Z: Set if result is zero 10,0,0,1,1,1,1,01 Timing: M cycles-4 Addressing Mode: T states - 15 (4, 4, 4, 3) Register Indirect 76543210 1 , 1 , Nx , 1 , 1 , 1 , 1,1, ° H: Reset + d) (for Nx = RR (IV + d) (for Nx = RR (IX °, 1 PIV: Set if result parity is even N: Reset 0) 7 ° 5 4 C: Set according to bit 3 2 1 0 1) 11,1,0,0,1,0,1,11 ,0,1,0,1,1 ° of ml SRA(HL) 10,0,1,0,1,1,1,01 d 0,0, 6 M cycles-4 Timing: ,1,1,1,1,0 T states - Timing: M cycles-6 T states - 23 (4, 4, 3, 5, 4, 3) Addressing Mode: Indexed Addressing Mode: 76543210 SRA (IX 1 , 1 , Nx , 1 , 1 , 1 , 0 , 1 SLA ml Shift the data in memory location ml left arithmetic. 15 (4, 4, 4, 3) Register Indirect SRA (IV + d) (for Nx = + d)(for Nx = 0) 1) 1,1,0,0,1,0,1,1 d 0,0, ,0,1,1,1,0 Timing: M cycles-6 TL/C/5171-68 T states - S: Set if result is negative Z: Set if result is zero H: Reset Addressing Mode: 23 (4, 4, 3, 5, 4, 3) Indexed SRL ml Shift right logical the data in memory location mI. PIV: Set if result parity is even N: Reset C: Set according to bit 7 of ml 7 6 5 432 1 0 ml 11,1,0,0,1,0,1,11 SLA(HL) TL/C/5171-70 10,0,1,0,0,1,1,01 S: Reset Timing: M cycles-4 T states -15 (4, 4, 4, 3) Z: Set if result is zero H: Reset Addressing Mode: Register Indirect PIV: Set if result parity is even N: Reset C: Set according to bit 0 of ml 9·50 r--------------------------------------------------------------------------,z ~ CD 12.9 Rotate and Shift (Continued) 7 6 5 4 3 2 1 0 RRD SRL(HL) 11,1,0,0,1,0,1,11 1o, °, 1,1,1,1,1, ° Addressing Mode: 76543210 1 , 1 , Nx , 1 , 1 , 1 , 1,1, ° + i:.§]o 1 Timing: 17-4 I M cycles-4 T states - 15 (4, 4, 4, 3) Register Indirect + d) (for Nx = SRL (IY + d) (for Nx = SRL (IX °, 1 1ACC 1 1) d 0,0, ,1,1,1,1, ° M cycles-6 T states - 23 (4, 4, 3, 5, 4, 3) Indexed Addressing Mode: 7 6 5 4 3 S: Set if result is negative Z: Set if result is zero H: Reset PIV: Set if result parity is even N: Reset C:N/A 2 0 11,1,1,0,1,1,0,1 REGISTER/MEMORY 10,1,1,0,0,1,1,1 RLD Timing: + Tii3 Rotate digit left and right between the Accumulator and memory (HL). 1 -41 7 1ACC 1 0 Addressing Mode: 12.10 Exchanges 1(HL) EX DE,HL Exchange the contents of the 16-bit register pairs DE and HL. No flags affected DE HL 765432 o S: Set if result is negative Z: Set if result is zero H: Reset PIV: Set if result parity is even N: Reset C:N/A 765432 0 1o , 1 , °, Timing: Addressing Mode: ,1 1 ,1 , 1 1 M cycles- 5 T states - 18 (4, 4, 3, 4, 3) Implied/Register Indirect REGISTER/REGISTER TL/C/5171-71 ,° 1(HL) TL/C/5171-72 0) ,0,1,0,1,1 Timing: o o Rotate digit right and left between the Accumulator and memory (HL). Timing: Addressing Mode: M cycles-1 T states-4 Register EX AF,A'F' The contents of the Accumulator and flag register are exchanged with their corresponding alternate registers, that is A and F are exchanged with A' and F'. M cycles- 5 T states - 18 (4, 4, 3, 4, 3) Implied/Register Indirect A - A' No flags affected F F' 76543210 10,0,0,0,1,0,0,01 Timing: Addressing Mode: M cycles-1 T states - 4 Register • 9-51 C) . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , C) ~z LOO Move data from memory location (HL) to memory location (DE), and decrement memory pointer and byte counter BC. 12.10 Exchanges (Continued) EXX Exchange the contents of the BC, DE, and HL registers with their corresponding alternate register. BC - B'C' DE - D'E' HL - H'L' 765 4 (DE) - No flags affected HL - (HL) S: NtA Z: N/A HL - 1 P/V: Set if BC -1 *0, otherwise reset 3 2 1 0 N: Reset C:N/A 11,1,0,1,1,0,0,11 Timing: 7 6 5 4 3 2 M cycles-1 Addressing Mode: 1 0 11,1,1,0,1,1,0,11 T states- 4 Implied 11,0,1,0,1,0,0,01 REGISTER/MEMORY EX H: Reset M cycles-4 Timing: (SP),55 T states -16 (4, 4, 3, 5) Exchange the two bytes at the top of the external memory stack with the 16-bit register ss. Addressing Mode: (SP) - CPI Compare data in memory location (HL) to the Accumulator, increment the memory pointer, and decrement the byte counter. The Z flag is set if the comparison is equal. (SP SSL + 1) 7 6 - 5 No flags affected SSH 4 320 11 , 1 , 1 , 0 , 0 , 0 , 1 , 1 1 EX (SP), HL M cycles - Timing: T states Addressing Mode: A - (HL) HL _ HL 5 BC - 19 (4, 3, 4, 3, 5) 76543210 1 S: Set if result of comparison subtract is negative BC - 1 Z: Set if result of comparison is + Z-1 Register/Register Indirect if A = (HL) EX (SP), IX (for NX = 0) 11 , 1 , NX , 1 , 1 , 1 , 0 , 1 1 T states - 76543210 23 (4, 4, 3, 4, 3, 5) Register/Register Indirect 11,1,1,0,1,1,0,11 12.11 Memory Block Moves and Searches 11,0,1,0,0,0,0,11 Timing: Addressing Mode: LOI (HL) DE + 1 HL HL + 1 BC-BC-1 S: N/ A Z: N/A A - (HL) S: Set if result is negative H: Reset HL - 1 HL BC-BC-1 Z: Set if result of comparison is Z-1 H: Set according to borrow from P/V: Set if BC -1 *0, otherwise reset if A = (HL) N: Reset C:N/A 11,0,1,0,0,0,0,01 Addressing Mode: bit 4 N:Set 11,1,1,0,1,1,0,11 M cycles-4 T states - zero P/V: Set if BC reset C: N/A 76543210 Timing: 16 (4, 4, 3, 5) Register Indirect CPO Compare data in memory location (HL) to the Accumulator, and decrement the memory pointer and byte counter. The Z flag is set if the comparison is equal. Move data from memory location (HL) to memory location (DE), increment memory pointers, and decrement byte counter BC. (DE) - M cycles-4 T states - SINGLE OPERATIONS DE - 1* 0, otherwise N: Set C:N/A M cycles- 6 Addressing Mode: zero H: Set according to borrow from bit 4 P/V: Set if BC reset EX (SP),IY (for Nx = 1) ,0 , 0 ,0,1 , 1 1 Timing: Register Indirect 16 (4, 4, 3, 5) Register Indirect 9-52 1* 0, otherwise z en o 12.11 Memory Block Moves and Searches (Continued) 765432 0 11,1,1,0,1,1,0, 11 ,0, 1 ,0, 1 ,0,0, Timing: M cycles - 4 T states - 16 (4, 4, 3, 5) Addressing Mode: Register Indirect REPEAT OPERATIONS LOIR Move data from memory location (HL) to memory location (DE), increment memory painters, decrement byte counter BC, and repeat until BC = o. (DE) - DE - 5: NI A (HL) DE Z:N/A + 1 HL HL + 1 BC BC - 1 Repeat until BC = 0 765 4 3 H: Reset P/V: Reset N: Reset C:N/A 2 11,1,1,0,1,1,0,1 11,0,1,1,0,0,0,1 Timing: ForBC"",, 0 0 11,1, ,0,1,1,0,11 11,0, ,1,0,0,0,01 Timing: For BC"",,O M cycles - ForBC = 0 CPOR Compare data in memory location (HL) to the contents of the Accumulator, decrement the memory pointer and byte counter BC, and repeat until BC = 0, or until (HL) equals the Accumulator. A - (HL) 5: Set if sign of subtraction performed for comparison is negaHL HL - 1 tive BC BC - 1 Z: Set according to equality of A Repeat until BC = 0 and (HL), set if true or A = (HL) H: Set according to borrow from bit 4 Register Indirect LOOR Move data from memory location (HL) to memory location (DE), decrement memory pointers and byte counter BC, and repeat until BC = o. (DE) (HL) 5: NI A Z:N/A DE-DE-1 H: Reset HL HL - 1 P/V: Reset BC-BC-1 Repeat until N: Reset BC = 0 C:N/A 7 6 5 4 3 2 0 ,0,1,1,0,11 11,0, ,1,1,0,0,01 Timing: For BC"",,O M cycles T states For BC=O M cycles - 21 (4, 4, 3, 5, 5) M cycles-4 T states - 16 (4, 4, 3, 5) Register Indirect Addressing Mode: (Note that each repeat is accomplished by a decrement of the PC, so that refresh, etc. continues for each cycle.) 5 (Note that each repeat is accomplished by a decrement of the BC, so that refresh, etc. continues for each cycle.) 11,1, M cycles- 5 T states - T states - 21 (4, 4, 3, 5, 5) For BC=O M cycles - 4 T states - 16 (4, 4, 3, 5) Addressing Mode: 01) CPIR Compare data in memory location (HL) to the Accumulator, increment the memory, decrement the byte counter BC, and repeat until BC = 0 or (HL) equals A. A - (HL) 5: Set if sign of subtraction perHL _ HL + 1 formed for comparison is negative BC-BC+1 Z: Set if A = (HL), otherwise reset Repeat until BC = 0 H: Set according to borrow from or A = (HL) bit 4 P/V: Set if BC - 1 """ 0, otherwise reset N:Set C:N/A 765432 0 P/V: Set if BC reset N: Set C:N/A 765432 1 """ 0, otherwise 0 11,1,1,0,1,1,0,1 11,0,1,1,1,0,0,1 Timing: 5 ForBC"",, 0 M cycles- 5 T states - 21 (4, 4, 3, 5, 5) ForBC = 0 M cycles- 4 21 (4, 4, 3, 5, 5) 4 T states - 16 (4, 4, 3, 5) Addressing Mode: Register Indirect (Note that each repeat is accomplished by a decrement of the BC, so that refresh, etc. continues for each cycle.) T states - 16 (4, 4, 3, 5) Addressing Mode: Register Indirect (Note that each repeat is accomplished by a decrement of the BC, so that refresh, etc. continues for each cycle.) 9-53 o o or---------------------------------------------------------~ o ~Z 12.12 Input/Output IN PIV: Undefined A,(n) N:Set Input data to the Accumulator from the I/O device at address N. G:N/A 7 No flags affected A - (n) 765 43210 6 5 4 3 2 1 0 11,1,1,0,1,1,0,11 11 , 1 ,0, 1 , 1 ,0, 1 11,0,1,0,0,0,1,01 n Timing: Timing: T states Addressing Mode: Source - Destination - Register r,(C) (G) S: Set if result is negative Z: Set if result is zero (C) - H: Reset PIV: Set if result parity is even (HL) 8 - 8-1 HL - HL + H: Undefined 1 PIV: Undefined N: Set G:N/A 5 4 3 2 G:N/A 1 0 7 11,1,1,0,1,1,0,11 10,11 M cycles - Addressing Mode: Source - T states - 5 432 1 0 11,0,1,0,0,0,1,11 3 Timing: 12 (4, 4, 4) M cycles T states - Register Indirect Destination - Addressing Mode: Register (C) - 6 Destination - 4 3 o 2 (HL) HL - 10,0, 8 - Timing: M cycles-3 Addressing Mode: Source - T states - HL - S: Undefined Z: Set if 8 -1 = 0, otherwise reset H: Undefined 8 - 1 N:Set 12 (4, 4, 4) G:N/A 7 Register Indirect 6 5 4 321 0 11,1,1,0,1,1,0,11 INI 8 - Register Indirect PIV: Undefined Input data from the I/O device addressed by the contents of register G to the memory location pointed to by the contents of the HL register. The HL pOinter is incremented and the byte counter 8 is decremented. (HL) - (G) HL - 1 Register Destination - Register In- INO Input data from I/O device at port address (G) to memory location (HL), and decrement HL memory pointer and byte counter 8. No flags affected r 5 4 16 (4, 5, 3, 4) Implied/Source direct (C), r OUT Output register r to the I/O device addressed by the contents of register G. 7 6 11,1,1,0,1,1,0,11 10,0,01 Timing: Register Indirect S: Undefined Z: Set if 8-1 =0, otherwise reset N: Reset 7 6 Register In- OUTI Output data from memory location (HL) to the I/O device at port address (G), increment the memory pointer, and decrement the byte counter 8. Input data to register r from the I/O device addressed by the contents of register G. If r = 110 only flags are affected. r - 4 Implied/Source direct Addressing Mode: 11 (4, 3, 4) Direct Destination - IN M cycles - T states -16 (4, 5, 3, 4) M cycles- 3 (G) 8-1 HL +1 11,0,1,0,1,0,1,01 Timing: S: Undefined Z: Set if 8 -1 = 0, otherwise reset Addressing Mode: H: Undefined M cycles - 4 T states - 16 (4, 5, 3, 4) Implied/Source direct Destination - 9-54 Register In- Register Indirect z o UJ 12.12 Input/Output (Continued) OUT 7 (n),A Output the Accumulator to the I/O device at address n. (n) ~ A 7 6 11 11 1 1 5 1 4 3 o 1 1 , 0 , 0 , 1 ,01 1 0 QI) o 0 0 1 1 1 1 1 1 2 1 11 No flags affected 5 4 3 2 1 0 11 , 0 , 1 1 , 0 , 1 ,0,0, 1 1 6 Timing: For B oF 0 M cycles- 5 T states - n ForB = 0 M cycles- 3 Timing: T states Addressing Mode: Source - Addressing Mode: 11 (4, 3, 4) Data is output to the I/O device at port address (C) from memory location (HL), the HL memory pointer is incremented, and the byte counter B is decremented. The cycles are repeated until B = O. 0, otherwise reset H: Undefined P/V: Undefined (Note that B is tested for zero after it is decremented. By loading B initially with zero, 256 data transfers will take place.) N: Set C:N/A 7 6 11 11 1 1 0 1 5 4 3 2 1 1 1 ,0 , 1 1 ,0 , 1 1 1 Timing: 1 1 16 (4, 5, 3, 4) Implied/Source direct Destination - 7 Register In- HL + 1 B-1 Repeat until B = 0 5 1 1 11 1 0 , 1 1 4 3 1 ,0 , 1 11 Timing: 2 1 C:N/A 0 1 1 , 0 , 11 1 1 1 0 1 0 For B oF 0 1 1 1 1 I M cycles T states - For B = 0 Addressing Mode: 5 21 (4, 5, 3, 4, 5) 4 M cycles T states - (Note that B is tested for zero after it is decremented. By loading B initially with zero, 256 data transfers will take place.) (HL) ~ (C) S: Undefined ~ 6 Register Indirect Data is input from the I/O device at port address (C) to memory location (HL), the HL memory pointer is incremented, and the byte counter B is decremented. The cycle is repeated until B = O. ~ Z: Set P/V: Undefined 0 4 INIR HL = N: Set T states - B S: Undefined H: Undefined Repeat until B M cycles - Addressing Mode: ~ (HL) HL ~ HL + 1 B ~ B-1 (C) 1 0 1 ,0, 1 0 Register Indirect OTIR S: Undefined = Register In- (Note that at the end of each data transfer cycle, interrupts may be recognized and two refresh cycles will be performed.) Data is output from memory location (HL) to the I/O device at port address (C), and the HL memory pointer and byte counter B are decremented. Z: Set if B-1 16 (4, 5, 3, 4) Destination - Direct aUTO (C) ~ (HL) B ~ B-1 HL ~ HL - 1 4 T states - Implied/Source direct Register Destination - 21 (4, 5, 3, 4, 5) M cycles - 16 (4, 5, 3, 4) Implied/Source direct Destination - Register In- Register Indirect (Note that at the end of each data transfer cycle, interrupts may be recognized and two refresh cycles will be performed.) Z: Set H: Undefined P/V: Undefined N: Set C: N/A 9-55 o o ClCI 12.12 Input/Output (Continued) 12.13 CPU Control z INOR NOP Data is input from the I/O device at address (C) to memory location (HL), then the HL memory pointer is byte counter B are decremented. The cycle is repeated until B = O. The CPU performs no operation. oen 7 6 5 4 3 2 (Note that B is tested for zero after it is decremented. By loading B initially with zero, 256 data transfers will take place.) (HL) +- (C) S: Undefined HL +- HL - 1 Z: Set B +- B-1 Timing: 6 5 4 3 2 1 Addressing Mode: HALT C: N/A 0 7 *0 M cycles T states - ForB = 0 T states - 5 4 3 2 1 Timing: 5 No flags affected 0 M cycles-1 T states - 21 (4, 5, 3, 4, 5) Addressing Mode: M cycles-4 Addressing Mode: 6 10, 1 , 1 , 1 ,0, 1 , 1 ,01 11 ,0, 1 , 1 ,0,0, 1 ,01 For B 16 (4, 5, 3, 4) Implied/Source direct 4 N/A 01 Register In- Disable system level interrupts. IFF1 +- 0 Register Indirect Destination - No flags affected IFF2 +- 0 (Note that after each data transfer cycle, interrupts may be recognized and two refresh cycles are performed.) 7 6 5 4 3 2 1 0 11 , 1 , 1 , 1 , 0 , 0 , 1 , 1 1 OTOR Timing: Data is output from memory location (HL) to the I/O device at port address (C), then the HL memory pointer and byte counter B are decremented. The cycle is repeated until B = O. (C) +- (HL) S: Undefined HL +- HL - 1 Z: Set B +- B-1 7 6 5 4 3 2 EI The system level interrupts are enabled. During execution of this instruction, and the next one, the maskable interrupts will be disabled. IFF1 +- 1 No flags affected IFF2 +- 1 7 6 543 PIV: Undefined 1 2 1 0 N: Set 11 , 1 , 1 , 1 , 1 , 0 , 1 , 1 1 C:N/A Timing: M cycles-1 0 T states - 11 , 1 , 1 , 0 , 1 , 1 , 0 , 1 Addressing Mode: 11 ,0, 1 , 1 , 1 ,0, 1 , 1 1M 0 The CPU is placed in interrupt mode O. ForB *0 M cycles T states - For B = 0 M cycles T states - Addressing Mode: 1 4 N/A Addressing Mode: H: Undefined Repeat until B = 0 M cycles T states - (Note that B is tested for zero after it is decremented. By loading B initially with zero, 256 data transfers will take place.) Timing: 4 N/A The CPU halts execution of the program. Dummy op-code fetches are performed from the next memory location to keep the refresh circuits active until the CPU is interrupted or reset from the halted state. 11 , 1 , 1 , 0 , 1 , 1 , 0 , 1 1 Timing: M cycles-1 T states - N: Set 7 No flags affected 0 10,0,0,0,0,0,0,01 H: Undefined PIV: Undefined Repeat until B = 0 1 5 7 6 543 21 (4, 5, 3, 4, 5) 4 4 N/A 2 1 No flags affected 0 11 , 1 , 1 , 0 , 1 , 1 , 0 , 1 1 16 (4, 5, 3, 4) Implied/Source direct Destination - Register InTiming: Register Indirect M cycles T states - (Note that after each data transfer cycle the NSC800 will accept interrupts and perform two refresh cycles.) Addressing Mode: 9-56 N/A 2 8 (4, 4) z 12.13 CPU Control 76543210 (Continued) 1M 11 , 1 , Nx , 1 , 1 , 1 , The CPU is placed in interrupt mode 1. No flags affected 7 6 5 4 3 2 1 0 Timing: °, 11 Addressing Mode: Timing: PC nn, otherwise continue 7 6 5 4 3 2 1M 2 The CPU is placed in interrupt mode 2. No flags affected 7 6 5 4 3 2 1 0 1 0 1o , 1 , 11,1,1,0,1,1,0,11 n (low-order byte) 10,1,0,1,1,1,1,01 n (high-order byte) Timing: M cycles-2 T states - B (4, 4) N/A Addressing Mode: Timing: 1 M cycles-3 T states - 10 (4, 3, 3) Direct Addressing Mode: 12.14 Program Control ° JR d Unconditional jump to program location calculated with respect to the program counter and the displacement d. JUMPS nn Unconditional jump to program location nn. PC PC + d 7 654 3 PC 7 6 10,0,0,1,1,0,0,01 JP No flags affected nn 5 4 3 2 1 o JP cC,nn Conditionally jump to program location nn based on testable flag states. If cc true, No flags affected M cycles- 2 T states - B (4, 4) N/A Addressing Mode: JP (IY) (for Nx = 1) M cycles- 2 T states - B (4, 4) Register Indirect 11,1,1,0,1,1,0,11 10,1,0,1,0,1,1,01 JP (IX) (for Nx = 0) ~ CD ° 11,1,0,0,0,0,1,11 2 1 No flags affected 0 d-2 Timing: n (low-order byte) M cycles- 3 T states -12 (4, 3, 5) PC Relative Addressing Mode: n (high-order byte) JP JR kk,d Conditionally jump to program location calculated with respect to the program counter and the displacement d, based on limited testable flag states. If kk true, No flags affected PC - PC PC + d, otherwise continue 7 6 5 4 3 2 M cycles- 3 T states - 10 (4, 3, 3) Direct Timing: Addressing Mode: (ss) Unconditional jump to program location pOinted to by register ss. ss 7 6 5 4 321 11 , 1 , 1 , No flags affected 0 °, °,°, 1, Timing: Addressing Mode: 11 10,0,11 ~k 1 0 10,0,01 JP (HL) d-2 M cycles-1 Tstates-4 Register Indirect ifkk met (true) if kk not met (not true) Addressing Mode: Timing: 9-57 M cycles- 3 T states - 12 (4, 3, 5) M cycles - 2 T states - 7 (4, 3) PC Relative o 12.14 Program Control (Continued) RETURNS RET DJNZ d Decrement the B register and conditionally jump to program location calculated with respect to the program counter and the displacement d, based on the contents of the B register. B-1 No flags affected B If B = 0 continue, else PC PC + d 7 6 5 432 1 0 Unconditional return from subroutine or other return to program location pointed to by the top of the stack. PCl - 10,0,0,1,0,0,0,01 M cycles-3 T states -13 (5, 3, 5) M cycles-2 T states - 8 (5, 3) PC Relative IfB = 0 Addressing Mode: 7 call to subroutine at location nn. No flags affected 765 4 321 11,11 2 nn 6 5 M cycles-3 T states - 10 (4, 3, 3) Register Indirect PCl (SP) PCH (SP + 1) SP - SP + 2, else continue CALL PCH PCl ,cc, Timing: 4 321 If cc true 11,1,0,0,1,1,0,11 If cc not true 1 Addressing Mode: Unconditional return from interrupt handling subroutine. Functionally identical to RET instruction. Unique opcode allows monitoring by external hardware. M Cycles-5 T states - 17 (4, 3, 4, 3, 3) Direct Timing: Addressing Mode: PCl - 7 No flags affected 6 5 4 3 1 0 10,1,0,0,1,1 , 0 , 1 1 Timing: Addressing Mode: 1 0 n (low-order byte) n (high-order byte) If cc true If cc not true Addressing Mode: 2 11,1,1,0,1,1,0,11 (SP -1) PCH (SP - 2) PCl SP-SP-2 Timing: (SP) PCH (SP + 1) SP SP + 2 cc,nn Conditional call to subroutine at location nn based on testable flag stages. No flags affected If cctrlJe, CALL 3 2 M cycles-3 T states - 11 (5, 3, 3) M cycles-l Tstates- 5 Register Indirect RETI n (high-order byte) PC nn, else continue 7 6 5 4 0 10,0,01 0 n (low-order byte) 0 Addressing Mode: RET cc Conditional return from subroutine or other return to program location pointed to by the top of the stack. If cc true, No flags affected CALLS PC - 1 Timing: IfB #0 0 nn Unconditional (SP - 1) (SP - 2) SP SP - No flags affected 11 , 1 ,0,0, 1 ,0,0, 1 1 d-2 Timing: (SP) PCH (SP + 1) SP SP + 2 7 6 5 4 3 2 M cycles-5 T states 17 (4, 3, 4, 3, 3) M cycles - 3 T states - 10 (4, 3, 3) Direct 9-58 M cycles - 4 T states - 14 (4, 4, 3, 3) Register Indirect ~------------------------------------------------~z 12.14 Program Control ~ (Continued) CD RETN Unconditional return from non-maskable interrupt handling subroutine. Functionally similar to RET instruction, except interrupt enable state is restored to that prior to non-maskable interrupt. PCl +- (SP) PCH +- (SP SP +- SP Q Q RESTARTS RST No flags affected + (SP - 1) +- PCH 1) +2 SP +- SP - 2 PCH +- 0 0 PCl +- P 11,1,1,0,1,1,0,11 7 6 5 432 11 10,1,0,0,0,1,0,11 Timing: Addressing Mode: No flags affected (SP - 2) +- PCl IFF1 +- IFF2 7 6 5 4 321 P The present contents of the PC are pushed onto the memory stack and the PC is loaded with dedicated program locations as determined by the specific restart executed. M cycles - 4 T states - 14 (4, 4, 3, 3) Timing: Register Indirect 0 M cycles- 3 T states - Addressing Mode: 1 11 , 1 , 11 11 (5, 3, 3) Modified Page Zero • 9-59 0 0 CO 0 Z rn 12.15 Instruction Set: Alphabetical Order ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADC ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD AND AND AND AND AND AND AND AND AND AND AND BIT BIT BIT BIT A,(HL) A,(lX+d) A,(IY+d) A,A A,B A,C A,D A,E A,H A, L A,n HL,BC HL, DE HL,HL HL,SP A,(HL) A,(IX+d) A,(IY+d) A,A A,B A,C A,D A,E A,H A, L A,n HL, BC HL,DE HL, HL HL,SP IX,BC IX,DE IX,IX IX,SP IY,BC IY,DE IY,IY IY,SP (HL) (IX+d) (IY+d) A B C D E H L n O,(HL) O,(IX+d) 0, (IY+d) O,A BE DDBEd FDBEd BF BB B9 BA BB BC BD CEn ED4A ED5A ED6A ED7A B6 DDB6d FDB6d B7 BO B1 B2 B3 B4 B5 C6n 09 19 29 39 DD09 DD19 DO 29 0039 FD09 FD19 FD29 FD39 A6 DDA6d FDA6d A7 AO A1 A2 A3 A4 A5 E6n CB46 DDCBd46 FDCBd46 CB47 (nn) ~ address of memory location d ~ signed displacemenl nn~Data d2~d-2 (16 bil) BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT n ~ Dala (8 bit) 9-60 O,B o,C 0,0 O,E O,H O,L 1, (HL) 1,(lX+d) 1,(IY+d) 1,A 1, B 1,C 1,0 1, E 1,H 1, L 2, (HL) 2,(lX+d) 2,(IY+d) 2,A 2,B 2,C 2,0 2,E 2,H 2,L 3,(HL) 3, (lX+d) 3,{IY+d) 3,A 3,B 3,C 3,0 3,E 3,H 3,L 4,(HL) 4,(IX+d) 4,(IY+d) 4,A 4,B 4,C 4,0 4,E 4,H 4,L 5,(HL) 5,(lX+d) 5,(IY+d) 5,A 5,B 5,C 5,0 CB40 CB41 CB42 CB43 CB44 CB45 CB4E DDCBd4E FDCBd4E CB4F CB4B CB49 CB4A CB4B CB4C CB4D CB56 DDCBd56 FDCBd56 CB57 CB50 CB51 CB52 CB53 CB54 CB55 CB5E DDCBd5E FDCBd5E CB5F CB5B CB59 CB5A CB5B CB5C CB5D CB66 DDCBd66 FDCBd66 CB67 CB60 CB61 CB62 CB63 CB64 CB65 CB6E DDCBd6E FDCBd6E CB6F CB6B CB69 CB6A z en 12.15 Instruction Set: Alphabetical Order (Continued) BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT BIT CALL CALL CALL CALL CALL CALL CALL CALL CALL CCF CP CP CP CP CP CP CP CP CP CP CP CPD CPDR CPI CPIR CPL DAA DEC DEC DEC 5,E 5,H 5,L 6, (HL) 6,(IX+d) 6, (IY+d) 6,A 6,B 6,C 6,D 6,E 6, H 6,L 7, (HL) 7,(1X+d) 7,(IY+d) 7,A 7,B 7,C 7,D 7,E 7,H 7,L C,nn M,nn NC,nn nn NZ, nn P,nn PE,nn PO, nn Z,nn (HL) (IX+d) (IY+d) A B C D E H L n (HL) (IX+d) (IY+d) CB6B CB6C CB6D CB76 DDCBd76 FDCBd76 CB77 CB70 CB71 CB72 CB73 CB74 CB75 CB7E DDCBd7E FDCBd7E CB7F CB7B CB79 CB7A CB7B CB7C CB7D DCnn FCnn D4nn CDnn C4nn F4nn ECnn E4nn CCnn 3F BE DDBEd FDBEd BF BB B9 BA BB BC BD FEn EDA9 EDB9 EDAl EDBl 2F 27 35 DD35d FD35d (nn) = Address of memory location d = signed displacement nn = Data (16 bit) d2=d-2 DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DI DJNZ EI EX EX EX EX EX EXX HALT 1M 1M 1M IN IN IN IN IN IN IN IN INC INC INC INC INC INC INC INC INC INC INC INC INC INC INC INC IND INDR INI n = Data (8 bit) 9-61 0CII) A B BC C D DE E H HL IX IY L SP d2 (SP),HL (SP), IX (SP),IY AF,A'F' DE,HL 0 1 2 A, (C) A, (n) B,(C) C,(C) D,(C) E,(C) H,(C) L, (C) (HL) (IX+d) (IY+d) A B BC C D DE E H HL IX IY L SP 3D 05 OB OD 15 lB 10 25 2B DD2B FD2B 2D 3B F3 10d2 FB E3 DDE3 FDE3 OB EB D9 76 ED 46 ED56 ED5E ED7B DBn ED40 ED4B ED50 ED5B ED60 ED6B 34 DD34d FD34d 3C 04 03 OC 14 13 lC 24 23 DD23 FD23 2C 33 EDAA EDBA EDA2 0 0 • 0 0 CO (J (/) z 12.15 Instruction Set: Alphabetical Order (Continued) INIR JP JP JP JP JP JP JP JP JP JP JP JP JR JR JR JR JR LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD (HL) (IX) (IV) C,nn M,nn NC,nn nn NZ,nn P,nn PE,nn PO, nn Z,nn C,d2 d2 NC,d2 NZ,d2 Z,d2 (BC),A (DE), A (HL),A (HL), B (HL),C (HL), D (HL), E (HL), H (HL), L (HL),n (IX+d),A (IX+d),B (IX+d),C (lX+d),D (IX+d),E (lX+d),H (IX+d), L (IX + d), n (IV+d), A (IV+d),B (IV+d),C (IV+d),D (IV+d), E (IV+d),H (IV+d), L (IV+d), n (nn),A (nn),BC (nn),DE (nn),HL (nn),IX (nn),IV (nn),SP A,(BC) A,(DE) EDB2 E9 DDE9 FDE9 DAnn FAnn D2nn C3nn C2nn F2nn EAnn E2nn CAnn 38d2 18d2 30d2 20d2 28d2 02 12 77 70 71 72 73 74 75 36n DD77d DD70d DD71d DD72d DD73d DD74d DD75d DO 36dn FD77d FD70d FD71d FD72d FD73d FD74d FD75d FD36dn 32nn ED 43nn ED 53nn 22nn DO 22nn FD22nn ED 73nn OA 1A (nn) ~ Address of memory location d ~ signed displacement nn ~ Data (16 bit) d2~d-2 LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD n ~ Data (8 bit) 9-62 A,(HL) A,(IX+d) A,(IV+d) A, (nn) A,A A,B A,C A,D A,E A,H A,I A, L A,n B,(HL) B,(IX+d) B,(IV+d) B,A B,B B,C B,D B,E B,H B,L B,n BC,(nn) BC,nn C,(HL) C,(IX+d) C,(IV+d) C,A C,B C,C C,D C,E C,H C,L C,n D,(HL) D,(lX+d) D,(IV+d) D,A D,B D,C D,D D,E D,H 0, L D,n DE,(nn) DE,nn E,(HL) E,(IX+d) E,(IV+d) 7E DD7Ed FD7Ed 3Ann 7F 78 79 7A 7B 7C ED 57 7D 3En 46 DD46d FD46d 47 40 41 42 43 44 45 06n ED4B 01nn 4E DD4Ed FD4Ed 4F 48 49 4A 4B 4C 40 OEn 56 DD56d FD56d 57 50 51 52 53 54 55 16 n ED5Bnn 11nn 5E DD5Ed FD5Ed z en 12.15 Instruction Set: Alphabetical Order (Continued) LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LD LDD LDDR LDI LDIR NEG NOP OR OR OR OR OR E,A E,B E,C E,D E,E E, H E,L E,n H, (HL) H,(IX+d) H,(IY+d) H,A H,B H,C H,D H,E H,H H,L H,n HL, (nn) HL, nn I,A IX, (nn) IX, nn IY, (nn) IY, nn L,(HL) L,(lX+d) L,(lY+d) L,A L, B L,C L,D L,E L, H L,L L,n SP, (nn) SP,HL SP,IX SP,IY SP,nn 5F 58 59 5A 5B 5C 5D 1E n 66 DD66d FD66d 67 60 61 62 63 64 65 26 n 2Ann 21nn ED47 DD2Ann DD 21nn FD2Ann FD21nn 6E DD6Ed FD6Ed 6F 68 69 6A 6B 6C 6D 2En ED7Bnn F9 DDF9 FDF9 31nn EDA8 EDB8 EDAO EDBO EDn 00 B6 DDB6d FDB6d B7 BO (HL) (lX+d) ' (IY+d) A B (nn) = Address of memory location d = signed displacement nn=Data (16 bit) d2=d-2 OR OR OR OR OR OR OTDR OTIR OUT OUT OUT OUT OUT OUT OUT OUT OUTO OUTI POP POP POP POP POP POP PUSH PUSH PUSH PUSH PUSH PUSH RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES n = Data (8 bit) 9-63 0 01) C D E H L n (C),A (C), B (C),C (C), D (C),E (C),H (C),L n,A AF BC DE HL IX IY AF BC DE HL IX IY O,(HL) O,(IX+d) O,(IY+d) O,A O,B O,C O,D O,E O,H O,L 1, (HL) 1, (IX+d) 1,(lY+d) 1,A 1, B 1,C 1,D 1, E 1, H 1, L 2,(HL) 2,(IX+d) 2, (IY+d) B1 B2 B3 B4 B5 F6 n EDBB EDB3 ED79 ED41 ED49 ED51 ED59 ED61 ED69 D3n EDAB EDA3 F1 C1 D1 E1 DDE1 FD E1 F5 C5 D5 E5 DDE5 FDE5 CB86 DDCBd86 FDCBd86 CB87 CB80 CB81 CB82 CB83 CB84 CB85 CB8E DDCBd8E FDCBd8E CB8F CB88 CB89 CB8A CB8B CB8C CB8D CB96 DDCBd96 FDCBd96 0 0 • «:) «:) CD (.) tn Z 12.15 Instruction Set: Alphabetical Order (Continued) RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES RES 2,A 2,B 2,C 2,D 2,E 2,H 2,L 3,(HL) 3,(IX+d) 3,(lY+d) 3,A 3,B 3,C 3,D 3,E 3,H 3,L 4,(HL) 4,(IX+d) 4,(IY+d) 4,A 4,B 4,C 4,D 4,E 4, H 4,L 5, (HL) 5, (IX+d) 5,(lY+d) 5,A 5,B 5,C 5, D 5,E 5,H 5,L 6,(HL) 6,(IX+d) 6,(IY+d) 6,A 6,B 6,C 6,D 6,E 6,H 6,L 7, (HL) 7, (IX+d) 7, (lY+d) 7,A 7,B 7,C CB97 CB90 CB91 CB92 CB93 CB94 CB95 CB9E DDCBd9E FDCBd9E CB9F CB98 CB99 CB9A CB9B CB9C CB9D CBA6 DDCBdA6 FDCBdA6 CBA7 CBAO CBA1 CBA2 CBA3 CBA4 CBA5 CBAE DDCBdAE FDCBdAE CBAF CBA8 CBA9 CBAA CBAB CBAC CBAD CBB6 DDCBdB6 FDCBdB6 CBB7 CBBO CBB1 CBB2 CBB3 CBB4 CBB5 CBBE DDCBdBE FDCBdBE CBBF CBB8 CBB9 (nn) = Address of memory location d = signed displacement nn = Data (t6 bit) d2=d-2 RES RES RES RES RET RET RET RET RET RET RET RET RET RETI RETN RL RL RL RL RL RL RL RL RL RL RLA RLC RLC RLC Rl,.C RLC RLC RLC RLC RLC RLC RLCA RLD RR RR RR RR RR RR RR RR RR RR RRA RRC RRC RRC RRC n = Data (8 bit) 9-64 7,D 7,E 7,H 7,L C M NC NZ P PE PO Z (HL) (IX+d) (IY+d) A B C D E H L (HL) (IX+d) (IY+d) A B C D E H L (HL) (IX+d) (IY+d) A B C D E H L (HL) (IX+d) (IY+d) A CBBA CBBB CBBC CBBD C9 D8 F8 DO CO FO E8 EO C8 ED4D ED45 CB16 DDCBd16 FDCBd16 CB17 CB10 CB 11 CB12 CB13 CB14 CB15 17 CB06 DDCBd06 FDCBd06 CB07 CBOO CB01 CB02 CB03 CB04 CB05 07 ED6F CB1E DDCBd1E FDCBd1E CB1F CB18 CB19 CB1A CB1B CB1C CB1D 1F CBOE DDCBdOE FDCBdOE CBOF zen n 01:1 12.15 Instruction Set: Alphabetical Order (Continued) RRC RRC RRC RRC RRC RRC RRCA RRD RST RST RST RST RST RST RST RST SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SBC SCF SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET (nn)~Address nn~ B C D E H L 0 08H 10H 18H 20H 28H 30H 38H A,(HL) A,(IX+d) A,(IY+d) A,A A,B A,C A,D A,E A,H A, L A, n HL, BC HL,DE HL,HL HL,SP O,(HL) O,(IX+d) O,(IY+d) O,A O,B O,C O,D O,E O,H O,L 1, (HL) 1, (IX+d) 1, (IY+d) 1,A 1, B 1, C 1, D 1, E 1,H 1, L 2, (HL) of memory location Data (16 bit) CB08 CB09 CBOA CBOB CBOC CBOD OF ED67 C7 CF D7 DF E7 EF F7 FF 9E DD9Ed FD9Ed 9F 98 99 9A 9B 9C 9D DEn ED42 ED52 ED62 ED72 37 CBC6 DDCBdC6 FDCBdC6 CBC7 CBCO CBC1 CBC2 CBC3 CBC4 CBC5 CBCE DDCBdCE FDCBdCE CBCF CBC8 CBC9 CBCA CBCB CBCC CBCD CBD6 SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET SET d ~ displacement d2~d-2 n ~ Data (8 bit) 9-65 2, (IX+d) 2, (IY+d) 2,A 2,B 2,C 2, D 2,E 2,H 2,L 3,(HL) 3, (IX+d) 3, (IY+d) 3,A 3,B 3,C 3,D 3,E 3,H 3,L 4, (HL) 4, (IX+d) 4, (IY+d) 4,A 4,B 4,C 4, D 4,E 4, H 4,L 5, (HL) 5,(IX+d) 5,(IY+d) 5,A 5,B 5,C 5,D 5,E 5,H 5,L 6, (HL) 6, (IX+d) 6, (IY+d) 6,A 6,B 6,C 6, D 6,E 6,H 6,L 7, (HL) 7, (IX+d) 7, (IY+d) 7,A DDCBdD6 FDCBdD6 CBD7 CBDO CBD1 CBD2 CB D3 CBD4 CB D5 CBDE DDCBdDE FDCBdDE CBDF CBD8 CBD9 CBDA CBDB CBDC CBDD CBE6 DDCBdE6 FDCBdE6 CBE7 CB EO CBE1 CBE2 CBE3 CBE4 CBE5 CBEE DDCBdEE FDCBdEE CBEF CB E8 CBE9 CBEA CBEB CBEC CBED CBF6 DDCBdF6 FDCBdF6 CBF7 CBFO CB F1 CBF2 CBF3 CBF4 CBF5 CBFE DDCBdFE FDCBdFE CBFF 0 0 • Q Q CD CJ Z U) 12.15 Instruction Set: Alphabetical Order (Continued) SET SET SET SET SET SET SLA SLA SLA SLA SLA SLA SLA SLA SLA SLA SRA SRA SRA SRA SRA SRA SRA SRA SRA SRA SRL SRL SRL 7,B 7,C 7,D 7,E 7,H 7,L (HL) (lX+d) (IY+d) A B C D E H L (HL) (IX+d) (IY+d) A B C D E H L (HL) (IX + d) (IY+d) CBF8 CBF9 CBFA CBFB CBFC CBFD CB26 DDCBd26 FDCBd26 CB27 CB20 CB21 CB22 CB23 CB24 CB25 CB2E DDCBd2E FDCBd2E CB2F CB28 CB29 CB2A CB2B CB2C CB2D CB3E DDCBd3E FDCBd3E SRL SRL SRL SRL SRL SRL SRL SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB SUB XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR XOR A B C D E H L (HL) (IX+d) (IY+d) A B C D E H L n (HL) (IX+d) (lY+d) A B C D E H L n CB3F CB38 CB39 CB3A CB3B CB3C CB3D 96 DD96d FD96d 97 90 91 92 93 94 95 D6n AE DDAEd FDAEd AF A8 A9 M AB AC AD EEn 12.16 Instruction Set: Numerical Order OpCode Mnemonic OpCode Mnemonic OpCode Mnemonic 00 01nn 02 03 04 05 06n 07 08 09 OA OB OC OD OEn OF 10d2 11nn 12 13 14 NOP LDBC,nn LD(BC),A INCBC INCB DECB LDB,n RLCA EXAF,A'F' ADDHL,BC LDA,(BC) DECBC INCC DECC LDC,n RRCA DJNZd2 LD DE,nn LD(DE),A INC DE INCD 15 16n DECD LDD,n RLA JRd2 ADDHL,DE LDA,(DE) DEC DE INCE DECE LDE,n RRA JR NZ,d2 LDHL,nn LD(nn),HL INCHL INCH DECH LDH,n DAA JRZ,d2 ADDHL,HL 2Ann 2B 2C 2D 2En 2F 30d2 31nn 32nn 33 34 35 36n 37 38 39 3Ann 3B 3C 3D 3En LD HL,(nn) DECHL INCL DECL LDL,n CPL JRNC,d2 LDSP,nn LD(nn),A INCSP INC (HL) DEC (HL) LD(HL),n SCF JRC,d2 ADDHL,SP LDA,(nn) DECSP INCA DECA LDA,n 17 18d2 19 1A 1B 1C 10 1En 1F 20d2 21nn 22nn 23 24 25 26n 27 28d2 29 (nn) = Address of memory location d = displacement nn=Data (16 bit) d2=d-2 n=Data (8 bit) 9-66 z en 12.16 Instruction Set: Numerical Order (Continued) OpCode Mnemonic OpCode Mnemonic 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 CCF LDB,B LDB,C LDB,D LDB,E LDB,H LDB,L LD B,(HL) LDB,A LDC,B LDC,C LDC,D LDC,E LDC,H LDC,L LDC,(HL) LDC,A LDD,B LDD,C LDD,D LDD,E LDD,H LDD,L LDD,(HL) LDD,A LDE,B LDE,C LDE,D LDE,E LDE,H LDE,L LDE,(HL) LDE,A LDH,B LDH,C LDH,D LDH,E LDH,H LDH,L LD H,(HL) LDH,A LDL,B LDL,C LDL,D LDL,E LDL,H LDL,L LD L,(HL) LDL,A LD(HL),B LD(HL),C LD(HL),D LD(HL),E 74 75 76 LD(HL),H LD(HL),L HALT LD (HL),A LDA,B LDA,C LDA,D LDA,E LDA,H LDA,L LDA,(HL) LDA,A ADDA,B ADDA,C ADDA,D ADDA,E ADDA,H ADDA,L ADDA,(HL) ADDA,A ADCA,B ADCA,C ADCA,D ADCA,E ADCA,H ADCA,L ADCA,(HL) ADCA,A SUBB SUBC SUBD SUBE SUBH SUBL SUB (HL) SUBA SBCA,B SBCA,C SBCA,D SBCA,E SBCA,H SBCA,L SBCA,(HL) SBCA,A ANDB ANDC ANDD ANDE ANDH ANDL AND (HL) ANDA XORB 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F AO A1 A2 A3 A4 A5 A6 A7 A8 (nn) = Address of memory location d = displacement nn~Data d2~d-2 (16 bit) n ~ Data (B-bit) 9-67 0 Q) OpCode Mnemonic A9 XORC XORD XORE XORH XORL XOR(HL) XORA ORB ORC ORD ORE ORH ORL OR (HL) ORA CPB CPC CPD CPE CPH CPL CP(HL) CPA RETNZ POPBC JPNZ,nn JPnn CALL NZ,nn PUSHBC ADDA,n RSTO RETZ RET JP Z,nn RLCB RLCC RLCD RLCE RLCH RLCL RLC(HL) RLCA RRCB RRCC RRCD RRCE RRCH RRCL RRC(HL) RRCA RLB RLC RLD AA AB AC AD AE AF BO B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF CO C1 C2nn C3nn C4nn C5 C6n C7 C8 C9 CAnn CBOO CB01 CB02 CB03 CB04 CB05 CB06 CB07 CB08 CB09 CBOA CBOB CBOC CBOD CBOE CBOF CB10 CB11 CB12 Q Q • Q Q co (,) en Z 12.16 Instruction Set: Numerical Order (Continued) OpCode Mnemonic OpCode Mnemonic OpCode Mnemonic CB13 CB14 CB15 CB16 CB17 CB1S CB19 CB1A CB1B CB1C CB1D CB1E CB1F CB20 CB21 CB22 CB23 CB24 CB25 CB26 CB27 CB2S CB29 CB2A CB2B CB2C CB2D CB2E CB2F CB38 CB39 CB3A CB3B CB3C CB3D CB3E CB3F CB40 CB41 CB42 CB43 CB44 CB45 CB46 CB47 CB48 CB49 CB4A CB4B CB4C CB4D CB4E RLE RLH RLL RL(HL) RLA RRB RRC RRD RRE RRH RR L RR(HL) RRA SLAB SLAC SLAD SLAE SLAH SLAL SLA(HL) SLAA SRAB SRAC SRAD SRAE SRAH SRAL SRA(HL) SRAA SRLB SRLC SRLD SRLE SRLH SRLL SRL(HL) SRLA BITO,B BITO,C BITO,D BITO,E BITO,H BITO,L BITO,(HL) BITO,A BIT1,B BIT1,C BIT1,D BIT 1,E BIT1,H BIT1,L BIT 1,(HL) CB4F CB50 CB51 CB52 CB53 CB54 CB55 CB56 CB57 CB5S CB59 CB5A CB5B CB5C CB5D CB5E CB5F CB60 CB61 CB62 CB63 CB64 CB65 CB66 CB67 CB6S CB69 CB6A CB6B CB6C CB6D CB6E CB6F CB70 CB71 CB72 CB73 CB74 CB75 CB76 CB77 CB78 CB79 CB7A CB7B CB7C CB7D CB7E CB7F CB80 CBS1 CB82 BIT1,A BIT2,B BIT2,C BIT 2,0 BIT2,E BIT2,H BIT2,L BIT2,(HL) BIT2,A BIT3,B BIT3,C BIT3,D BIT3,E BIT3,H BIT3,L BIT3,(HL) BIT3,A BIT4,B BIT4,C BIT4,D BIT4,E BIT4,H BIT4,L BIT4,(HL) BIT4,A BIT5,B BIT5,C BIT5,D BIT5,E BIT5,H BIT5,L BIT5,(HL) BIT5,A BIT6,B BIT6,C BIT6,D BIT6,E BIT6,H BIT6,L BIT6,(HL) BIT6,A BIT7,B BIT7,C BIT7,D BIT7,E BIT7,H BIT7,L BIT7,(HL) BIT7,A RESO,B RESO,C RES 0,0 CBS3 CBS4 CBS5 CBS6 CBS7 CBSS CBS9 CBSA CBSB CBSC CBSD CBSE CBSF CB90 CB91 CB92 CB93 CB94 CB95 CB96 CB97 CB98 CB99 CB9A CB9B CB9C CB9D CB9E CB9F CBAO CBA1 CBA2 CBA3 CBA4 CBA5 CBA6 CBA7 CBA8 CBA9 CBAA CBAB CBAC CBAD CBAE CBAF CBBO CBB1 CBB2 CBB3 CBB4 CBB5 CBB6 RESO,E RESO,H RESO,L RESO,(HL) RESO,A RES 1,B RES1,C RES 1,0 RES 1,E RES 1,H RES 1,L RES 1,(HL) RES 1,A RES2,B RES2,C RES2,D RES2,E RES2,H RES2,L RES2,(HL) RES2,A RES3,B RES3,C RES3,D RES3,E RES3,H RES3,L RES3,(HL) RES3,A RES4,B RES4,C RES4,D RES4,E RES4,H RES4,L RES4,(HL) RES4,A RES5,B RES5,C RES5,D RES5,E RES5,H RES5,L RES5,(HL) RES5,A RES6,B RES6,C RES6,D RES6,E RES6,H RES6,L RES6,(HL) (nn) ~ Address of memory location d ~ displacement nn ~ Data (16 bit) d2~d-2 n ~ Data (8-bit) 9-68 z en 12.16 Instruction Set: Numerical Order (Continued) (") OpCode Mnemonic OpCode Mnemonic OpCode Mnemonic CBB7 CBB8 CBB9 CBBA CBBB CBBC CBBD CBBE CBBF CBCO CBC1 CBC2 CBC3 CBC4 CBC5 CBC6 CBC7 CBC8 CBC9 CBCA CBCB CBCC CBCD CBCE CBCF CBDO CBDl CBD2 CBD3 CBD4 CBD5 CBD6 CBD7 CBD8 CBD9 CBDA CBDB CBDC CBDD CBDE CBDF CBEO CBE1 CBE2 CBE3 CBE4 CBE5 CBE6 CBE7 CBE8 CBE9 CBEA CBEB RES6,A RES7,B RES 7,C RES 7,D RES 7,E RES7,H RES7,L RES 7,(HL) RES 7,A SETO,B SETO,C SETO,D SETO,E SETO,H SETO,L SETO,(HL) SETO,A SET1,B SET1,C SET1,D SET1,E SET1,H SET1,L SET 1,(HL) SET1,A SET2,B SET2,C SET2,D SET2,E SET2,H SET2,L SET2,(HL) SET2,A SET3,B SET3,C SET3,D SET3,E SET3,H SET3,L SET3,(HL) SET3,A SET 4,B SET4,C SET 4,D SET 4,E SET 4,H SET 4,L SET 4,(HL) SET 4,A SET5,B SET5,C SET5,D SET5,E CBEC CBED CBEE CBEF CBFO CBF1 CBF2 CBF3 CBF4 CBF5 CBF6 CBF7 CBF8 CBF9 CBFA CBFB CBFC CBFD CBFE CBFF CCnn CDnn CEn CF DO D1 D2nn D3n D4nn D5 D6n D7 D8 D9 DAnn DBn DCnn DD09 DD19 DD21nn DD22 DD23 DD29 DD2Ann DD2B DD34d DD35d DD36dn DD39 DD46d DD4Ed DD56d DD5Ed SET5,H SET5,L SET5,(HL) SET5,A SET6,B SET6,C SET6,D SET6,E SET6,H SET6,L SET6,(HL) SET6,A SET 7,B SET7,C SET7,D SET7,E SET7,H SET7,L SET7,(HL) SET7,A CALLZ,nn CALLnn ADCA,n RST8 RETNC POP DE JP NC,nn OUT (n),A CALL NC,nn PUSH DE SUBn RST10H RETC EXX JP,C,nn INA,(n) CALLC,nn ADDIX,BC ADDIX,DE LD IX,nn LD(nn),IX INCIX ADDIX,IX LD IX,(nn) DEC IX INC (IX+d) DEC (IX+d) LD (IX+d),n ADDIX,SP LDB,(IX+d) LDC,(IX+d) LDD,(IX+d) LD E,(IX+d) DD66d DD6Ed DD70d DD71d DD72d DD73d DD74d DD75d DD77d DD7Ed DD86d DDSEd DD96d DD9Ed DDA6d DDAEd DDB6d DDBEd DDCBd06 DDCBdOE DDCBd16 DDCBd1E DDCBd26 DDCBd2E DDCBd3E DDCBd46 DDCBd4E DDCBd56 DDCBd5E DDCBd66 DDCBd6E DDCBd76 DDCBd7E DDCBd86 DDCBd8E DDCBd96 DDCBd9E DDCBdA6 DDCBdAE DDCBdB6 DDCBdBE DDCBdC6 DDCBdCE DDCBdD6 DDCBdDE DDCBdE6 DDCBdEE DDCBdF6 DDCBdFE DDE1 DDE3 DDE5 DDE9 LDH,(IX+d) LDL,(IX+d) LD(IX+d),B LD(IX+d),C LD(IX+d),D LD (IX+d),E LD(IX+d),H LD(IX+d),L LD(IX+d),A LD A,(IX+ d) ADD A,(IX + d) ADCA,(lX+d) SUB (IX+d) SBC A,(IX + d) AND (IX+d) XOR(IX+d) OR (lX+d) CP(IX+d) RLC(lX+d) RRC(IX+d) RL(IX+d) RR(IX+d) SLA(IX+d) SRA(IX+d) SRL(IX+d) BIT O,(IX + d) BIT 1,(IX + d) BIT 2,(IX + d) BIT 3,(IX + d) BIT 4,(IX + d) BIT 5,(IX + d) BIT6,(IX+d) BIT7,(IX+d) RES O,(IX + d) RES 1,(IX+d) RES 2,(IX + d) RES 3,(IX + d) RES 4,(IX + d) RES 5,(IX + d) RES 6,(IX + d) RES 7 ,(IX + d) SET O,(IX + d) SET 1,(IX+d) SET2,(IX+d) SET3,(lX+d) SET 4,(IX + d) SET 5,(IX + d) SET6,(lX+d) SET 7 ,(IX + d) POP IX EX (SP),IX PUSH IX JP(IX) (nn) ~ Address of memory location nn~Data (16 bit) d = displacement d2~d-2 n ~ Data (a-bit) 9-69 CD 0 0 II 0 0 CO (.) tJ) Z 12.16 Instruction Set: Numerical Order (Continued) OpCode Mnemonic DDF9 DEn DF EO E1 E2nn E3 E4nn E5 E6n E7 E8 E9 EAnn EB ECnn ED40 ED41 ED42 ED43nn ED44 ED45 ED46 ED47 ED48 ED49 ED4A ED4Bnn ED4D ED50 ED51 ED52 ED53nn ED56 ED57 ED58 ED59 ED5A ED5Bnn ED5E ED60 ED61 ED62 ED67 ED68 ED69 ED6A ED6F ED72 ED73nn ED78 ED79 ED7A LDSP,IX SCBA,n RST18H RET PO POPHL JP PO,nn EX (SP),HL CALLPO,nn PUSH HL ANDn RST20H RETPE JP(HL) JP PE,nn EXDE,HL CALLPE,nn IN B,(C) OUT (C),B SBC HL,BC LD (nn),BC NEG RETN IMO LDI,A INC,(C) OUT (C),C ADCHL,BC LDBC,(nn) RETI IND,(C) OUT (C),D SBCHL,DE LD (nn),DE 1M 1 LDA,I INE,(C) OUT (C), E ADCHL,DE LDDE,(nn) 1M2 INH,(C) OUT (C),H SBCHL,HL RRD INL,(C) OUT (C),L ADCHL,HL RLD SBC HL,SP LD(nn),SP INA,(C) OUT (C),A ADCHL,SP (nn) = Address of memory localion d = displacemenl nn=Dala (16 bil) d2=d-2 OpCode Mnemonic OpCode Mnemonic ED7Bnn EDAO EDA1 EDA2 EDA3 EDA8 EDA9 EDAA EDAB EDBO EDB1 EDB2 EDB3 EDB8 EDB9 EDBA EDBB EEn EF FO F1 F2nn F3 F4nn F5 F6n F7 Fa F9 FAnn FB FCnn FD09 FD19 FD21nn FD22nn FD23 FD29 FD2Ann FD2B FD34d FD35d FD36dn F039 FD46d FD4Ed FD56d FD5Ed FD66d FD6Ed FD70d FD71d FD72d LDSP,(nn) LDI CPI INI OUTI LDD CPD IND OUTO LDIR CPIR INIR OTIR LDDR CPDR INDR OTDR XORn RST28H RETP POPAF JP P,nn DI CALLP,nn PUSHAF ORn RST30H RETM LDSP,HL JPM,nn EI CALLM,nn ADDIY,BC ADDIY,DE LD IY,nn LD (nn),IY INCIY ADDIY,IY LD IY,(nn) DECIY INC (lY+d) DEC (IY+d) LD(IY+d),n ADDIY,SP LDB,(IY+d) LDC,(IY+d) LDD,(lY+d) LD E,(IY+d) LDH,(IY+d) LD L,(IY+d) LD(IY+d),B LD(IY+d),C LD(IY+d),D FD73d FD74d FD75d FD77d FD7Ed FD86d FD8Ed FD96d FD9Ed FDA6d FDAEd FDB6d FDBEd FDE1 FDE3 FDE5 FDE9 FDF9 FDCBd06 FDCBdOE FDCBd16 FDCBd1E FDCBd26 FDCBd2E FDCBd3E FDCBd46 FDCBd4E FDCBd56 FDCBd5E FDCBd66 FDCBd6E FDCBd76 FDCBd7E FDCBd86 FDCBd8E FDCBd96 FDCBd9E FDCBdA6 FDCBdAE FDCBdB6 FDCBdBE FDCBdC6 FDCBdCE FDCBdD6 FDCBdDE FDCBdE6 FDCBdEE FDCBdF6 FDCBdFE FEn FF LD(IY+d),E LD(IY+d),H LD(IY+d),L LD(IY+d),A LDA,(IY+d) ADD A,(IY + d) ADC A,(IY + d) SUB (IY+d) SBC A,(IY + d) AND (IY+d) XOR(IY+d) OR (IY+d) CP(IY+d) POPIY EX (SP), IY PUSHIY JP(IY) LDSP,IY RLC(IY+d) RRC(IY+d) RL(IY+d) RR (IY+d) SLA (IY+d) SRA(IY+d) SRL(IY+d) BIT O,(IY + d) BIT 1,(lY+d) BIT 2,(IY + d) BIT 3,(IY + d) BIT4,(IY+d) BIT 5,(IY + d) BIT6,(IY+d) BIT7,(lY+d) RESO,(IY+d) RES 1,(IY + d) RES 2,(IY + d) RES3,(lY+d) RES4,(lY+d) RES 5,(lY+d) RES 6,(IY + d) RES7,(IY+d) SET O,(IY + d) SET 1,(IY + d) SET 2,(IY + d) SET3,(lY+d) SET 4,(IY + d) SET 5,(IY + d) SET 6,(IY + d) SET7,(IY+d) CPn RST38H n = Data (a-bil) 9-70 13.0 Data Acquisition System the need for battery operation or at least battery backup. At some fixed times or at some particular time durations, the system takes readings by selecting one of the analog input channels, commands the AID to perform a conversion, reads the data, and then formats it for transmission; or, the system checks the readings against set points and transmits a warning if the set paints are exceeded. With the addition of the RTC, the host need not command the remote system to take these readings each time it is necessary. The NSC800 could simply set up the RTC to interrupt it at a previously defined time and when the interrupt occurs, make the readings. The resultant values could be stored in the NSC810A for later correlation. In the example of temperature monitoring in a building, it might be desired to know the high and low temperatures for a 12-hour period. After compiling the information, the system could dump the data to the host over the communications link. Note from the schematic that the current for the communication link is supplied by the host to remove the constant current drain from the battery supply. The required clocks for the two peripheral devices are generated by the two timers in the NSC810A. Through the use of various divisors, the master clock generated by the NSC800 is divided down to produce the clocks. Four examples are shown in the table following Figure 20. A natural application for the NSC800 is one that requires remote operation. Since power consumption is low if the system consists of only CMOS components, the entire package can conceivably operate from only a battery power source. In the application described herein, the only source of power will be from a battery pack composed of a stacked array of NiCad batteries (see Figure 20). The application is that of a remote data acquisition system. Extensive use is made of some of the other LSI CMOS components manufactured by National: notably the ADC0816 and MM58167. The ADC0816 is a 16-channel analog-todigital converter which operates from a 5V source. The MM58167 is a microprocessor-compatible real-time clock (RTC). The schematic for this system is shown in Figure 20. All the necessary features of the system are contained in six integrated circuits: NSC800, NSC810A, NSC831, HN6136P, ADC0816, and MM58167. Some other small scale integration CMOS components are used for normal interface requirements. To reduce component count, linear selection techniques are used to generate chip selects for the NSC810A and NSC831.lncluded also is a current loop communication link to enable the remote system to transfer data collected to a host system. In order to keep component count low and maximize effectiveness, many of the features of the NSC800 family have been utilized. The RAM section of the NSC810A is used as a data buffer to store intermediate measurements and as scratch pad memory for calculations. Both timers contained in the NSC810A are used to produce the clocks required by the AID converter and the RTC. The Power-Save feature of the NSC800 makes it possible to reduce system power consumption when it is not necessary to collect any data. One of the analog input channels of the AID is connected to the battery pack to enable the CPU to monitor its own voltage supply and notify the host that a battery change is needed. All the crystal frequencies are standard frequencies. The various divisors listed are selected to produce, from the master clock frequency of the NSC800, an exact 32,768 Hz clock for the MM58167 and a clock within the operating range of the AID converter. The MM58167 is a programmable real-time clock that is microprocessor compatible. Its data format is BCD. It allows the system to program its interrupt register to produce an interrupt output either on a time of day match (which includes the day of the week, the date and month) and/or every month, week, day, hour, minute, second, or tenth of a second. With this capability added to the system, precise time of day measurements are possible without having the CPU do timekeeping. The interrupt output can be connected, through the use of one port bit of the NSC810A, to put the CPU in the power-save mode and reenable it at a preset time. The interrupt output is also connected to one of the hardware restart inputs (RSTB) to enable time duration measurements. This power-down mode of operation would not be possible if the NSC800 had the duties of timekeep- In operation, the NSC800 makes readings on various input conditions through the ADC0816. The type of devices connected to the AID input depends on the nature of the remote environment. For example, the duties of the remote system might be to monitor temperature variations in a large building. In this case, the analog inputs would be connected to temperature transducers. If the system is situated in a process control environment, it might be monitoring fluid flow, temperatures, fluid levels, etc. In either case, operation would be necessary even if a power failure occurred, thus 9-71 z en oco o o NSC800 ....w Vee Ir 4- * T -:!: 1" co .!..J '" 60pf E ~EE TEXT FOR FREQUENCIES roc EXPAND A12 ADC CSO A13 P8 ADD CSl START ALE ; .---- IO/iA c: PA(o-7) ,--- Ii PS RD TOOUT WR WR TIIN ..... S.lK 2N2222 CIK I- AO(O-7) PB CS PCl 3 '§ 3- XMIT TO REMOTE 5' t: J! +--l -= 5.~ ~---201 RECV PA(0-7) NSC810A A13 ~ V-= ~ 2N2222 IOTjiA I.lIoI74HC32 MM74HC04 CD .---20 mA l10UT I - - CSC IN ALE lojil I~ - ~ (SEE ADC0816 DATA SHEET) MM74HC04 RO RESET OUT RSTB ~ REFERENCE GENERATOR -= rvee ALE 0- ::; 0" VSAT1 P03I-- XOUT Vee 0" PCO iffi AD(0-7) 1.SK c::: 15 ANALOG CHANNElS V~_) NScaOO T () .Q ClK ...-ViR I- » I: 1N1J ICOMMON COMPARATOR IN 0(0-7) V,,~+) .--- ALE XIN A(8-15) AO(o-~~ca31 c am II: III: III: II: II: AD8 AS b TC INl I I ADA A9 A8 RSTA E Al0 A9 M"74HC041 20pF Vee ADC0816 Al0 Vee INO PCO I TOIN ~ I--- ViR INT OUT .,f-----2- -= MM58167 i--- AD I - - Al I - - A2 i--- A3 i--- A4 i--- cs i--- iffi V AO(o-7) 74H0373 ~ H 7) ft-;;; '. 0(1-8) Q(1-8) Vee GND I-- h lf~ ~~ RO 0(1 A(~12)H -= _ ...... _ A15 0(0-7) HN6136P POWER DOWN MM74HC04 R~~~ 2500 0(0-7) oro A15 _ CS ~~ OE2 GND -= FIGURE 20. Remote Data Acquisition TL/C/5171-34 Z 13.0 Data Acquisition System tn oCD (Continued) ing. When in the power-save mode, the system power requirements are decreased by about 50%, thus extending battery life. signal which is connected to the RSTA interrupt input of the NSC800. When operating, the system shown consumes about 125 mw. When in the power-save mode, power consumption is decreased to about 70 mw. If, as is likely, the system is in the power-save mode most of the time, battery life can be quite long depending on the amp-hour rating of the batteries incorporated into the system. For example, if the battery pack is rated at 5 amp-hours, the system should be able to operate for about 400-500 hours before a battery charge or change is required. As shown in the schematic (refer to Figure 20), analog input INO is connected to the battery source. In this way, the CPU can monitor its own power source and notify the host that it needs a battery replacement or charge. Since the battery source shown is a stacked array of 7 NiCads producing 8.4V, the converter input is connected in the middle so that it can take a reading on two or three of the cells. Since NiCad batteries have a relatively constant voltage output until very nearly discharged, the CPU can sense that the "knee" of the discharge curve has been reached and notify the host. Communication with the peripheral devices (MM58167 and ADC0816) is accomplished through the 1/0 ports of the NSC810A and NSC831. The peripheral devices are not connected to the bus of the NSC800 as they are not directly compatible with a multiplexed bus structure. Therefore, additional components would be required to place them on the microprocessor bus. Writing data into the MM58167 is performed by first putting the desired data on Port A, followed by selecting the address of the internal register and applying the chip select through the use of Port B. A bit set and clear operation is performed to emulate a pulse on the bit of Port B connected to the WR input of the MM58167. For a read operation, the same sequence of operations is performed except that Port A is set for the input mode of operation and the RD line is pulsed. Similar techniques are used to read converted data from the AID converter. When a conversion is desired, the CPU selects a channel and commands the ADC0816 to start a conversion. When the conversion is complete, the converter will produce an End-of-Conversion Typical Timer Output Frequencies Crystal Frequency CPU Clock Output Timer 0 Output Timer 1 Output 2.097152 MHz 1.048576 MHz 262.144 kHz divisor = 4 32.768 kHz divisor = 8 3.276800 MHz 1.638400 MHz 327.680 kHz divisor = 5 32.768 kHz divisor = 10 4.194304 MHz 2.097152 MHz 262.144 kHz divisor = 8 32.768 kHz divisor = 8 4.915200 MHz 2.457600 MHz 491.520 kHz divisor = 5 32.768 kHz divisor = 15 9-73 o o g B en z 14.0 NSC800M/883B MIL-STD-833 Class C Screening National Semiconductor offers the NSC800D and NSC800E with full class 8 screening per MIL-STD-883 for Military! Aerospace programs requiring high reliability. In addition, this screening is available for all of the key NSC800 peripheral devices. Electrical testing is performed in accordance with RESTS800X, which tests or guarantees all of the electrical performance characteristics of the NSC800 data sheet. A copy of the current revision of RETS800X is available upon request. 100% Screening Flow Test Requirement MIL-STD-883 Method/Condition Internal Visual Stabilization Bake Temperature Cycling Constant Acceleration Fine Leak Gross Leak Burn-In 100% 100% 100% 100% 100% 100% 100% 20108 1008 C 24 Hrs. @ + 150'C 1010 C 10 Cycles - 65'C! + 150'C 2001 E 30,000 G's, Yl Axis 1014AorB 1014C 1015160 Hrs. @ + 125'C (using burn-in circuits shown below) + 25'C DC per RETS800X 10% Max + 125'C AC and DC per RETS800X - 55'C AC and DC per RETS800X + 25'C AC per RETS800X 5005 Final Electrical PDA QA Acceptance Quality Conformance External Visual 100% 100% 100% 100% Sample Per Method 5005 100% 2009 15.0 Burn-In Circuits 5240HR NSC800D/883B (Dual-in-Line) . , , •• " . IS 7 100kHz 5.5V 31 • ,• 51 55. 1D tiH I 5241HR NSC800E/883B (Lead less Chip Carrier) 33 51 I 1.5kHz (NOTfZI "31 30 10 " " "" " "" " "" NC-;; 11 "" " 11 1B r ,"i,, 44143142 411.0 4 I ,• NC-T, 1'07£'1 ., 1D 3B 3751 51 44-PINLfADLESS PACKAGE " " -li-'c " 31 30 " 11 23 1.5 kHz (NOTE 2) 3B NC-¥. 100kHz (NOTEZ) .. .. 1819 20 21 21:3 24rSre 21ra " 'c TL/C/5171-32 Top View .... TUC/5171-33 All resistors 2.7 kll unless marl : Vee is the 5V supply pin. Ground (GND): Ground reference pin. PC3/TG: TG is the timer gating signal. PC4/T1IN: T11N is the clock input for timer 1. PCS/T10UT: T10UT is the programmable output of timer 1. 8.0 Connection Diagrams Chip Carrier Dual-In-Llne Package PC5/T1DUT PC3ITG PC4/T1IN TOIN RESET PC5/Tl0UT TOOUT lOT/iii CE 1. liii WR ALE ADO ADl AD2 AD3 AD4 AD5 AD6 AD7 GND 10 11 12 13 14 15 16 17 18 19 20 NSC810A 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 TOIN PC3/ TG vee ~~\IN Vee PC2I5fii PCl/8F PCo/lIlTli PB7 PB6 PB5 P84 PB3 PB2 P81 P80 PA7 PA6 PA5 PA4 PA3 PA2 PAl PAO TDDUT IDT/M CE liii Wii NC ALE ADO ADl AD2 AD3 PC1/BF 11 ~ PCI~B7 C 6 5 4 3 2 1 44 43 42 41 40 7 • 8 9 10 11 12 NSC810A 13 14 15 16 17 18 1920 21 22 23242526 27 28 ///// f 39 3B 37 36 35 34 33 32 31 30 29 PB6 PB5 PB4 PB3 PB2 NC PBl PBO PA7 PA6 PA5 t \ \\"'" AD4 AD5 AD6 AD7 GND NC PAO PAl PA2 PA3 PA4 TL/C/5517-11 Top View NC= no connect TLiC/5517-10 Order Number NSC810AE or NSC810AV See NS Package Number E44B or V44A Top View Order Number NSC810AD or NSC810AN See NS Package Number D40C or N40A 9-82 9.0 Functional Description Figure 1 is a detailed block diagram of the NSC810A. The functional description that follows describes the RAM, 1/0 and TIMER sections. input must be low (RAM select) and the CE input must be high at the falling edge of ALE to address the RAM. Address bit AD7 is a "don't care" for RAM addressing. Timing for RAM read and write operations is shown in the timing dia· grams. The RAM is 128 x 8. 9.1 RANDOM ACCESS MEMORY (RAM) The memory portion of the RAM·I/O·timer is accessed by a 7·bit address input to pins ADO through ADS. The 10T/fiij 9.2 DETAILED BLOCK DIAGRAM INTERNAL DATA BUS ... , ,.., 8 CE---+ MOR Wii~ l iiil...!.... HANDSHAKE LOGIC CONTROL LOGIC ~ 10T/M..!..... ,.. " 11 ALE---+ PORT A ,.. PAD-PAT "'II J-+ DOR A 1', --"0..' RESET~ .... 21-28 ... --"0.. ..oil ,..... .... "I .... 29-36 ... RAM 102481TS (128 x81 PGRT B ..oL --"0.. "I I' ... , ~ ODR B "'. ... .... ADO·ADT .... 12-19 II. " '" ADDRESS I DATA BUFFERS AND LATCHES "'- --... 1"'11 ,.. " 3T-39. 1.2. 5 -,.. ,.., I T1 COMMAND TO COMMAND L 3 TOIN_ • TO PRESCALE PRESCALE Vee.!!.. .... ,..... ~ Ito..,.. .... .... PORT C ........ TIMER MOD~ REGISTERS .... . .... Jo.. " I' ... '" "'- --... " ..oL .... ,.. P8D-PST .... ~ 11 HIGH ORDER 11 LOW OROER _i --... ,.. - +-i ! TO HIGH ORDER TO LOW ORDER I' .... PCO-Pcs" HANDSHAKE AND TIMER FUNCTIONS ~ ODR C II. r..:... 6 T1 PRESCALE I TODUT GND..!!.. TLlC/5517-12 FIGURE 1 9·83 9.0 Functional Description (Continued) TABLE I. 110 and Timer Address Designations 9.3 1/0 PORTS The three 1/0 ports, labeled A, B, and C, can be pro· grammed to be almost any combination of Input and Output bits. Ports A and B are configured as 8 bits wide, while port C is 6 bits. There are four different modes of operation for the ports. Three of the modes are for timed transfer of data between the peripheral and the NSC810A, this is called strobed 1/0. The fourth mode is for direct transfer without handshaking with the peripheral. 8-Bit Address Field Designation R(Read) Bits 1/0 Port, Timer, etc. W(Wrlte) 7 6 5 4 3 2 1 0 The NSC810A can be programmed to operate in four differ· ent modes. One of these modes (Basic 1/0) allows direct transfer of 1/0 data without any handshaking between the NSC810A and the peripheral. The other three modes (Strobed 1/0) provide for timed transfers of 1/0 data with handshaking between the NSC810A and the peripheral. The determination of the mode, data direction and data is done by five registers which are, handily, under program control. The Mode Definition Register (MDR), oddly enough, determines which mode the device will operate in, while the Data Direction Register (DDR) establishes the direction of the data transfer. The Data register contains the data that is being sent or has been received. The other two registers (bit-set, bit-clear) allow the individual bits in the data register to be set or cleared without affecting the other bits. Each port has its own set of these registers, except the MDR which affects ports A and Conly. In the strobed 1/0 modes, port C bits 0, 1 and 2 function as INTR (for the processor), BF, and STB respectively. 9.3.1 Registers As can be seen in Table I, all the registers affecting 1/0 transfer are grouped at the lower address locations, this allows quicker handling and more maneuverability in tight data transfers. Also note in Table I that the NSC810A uses 23 1/0 addresses out of a block of 26. The upper three bits of the address are determined by the chip enable address. • Mode Definition Register (MDR) As noted above this register defines the operating mode for ports A and C (port B is always in the basic 1/0 mode). The upper 3 bits of port C will also be in the basic 1/0 mode even when the lower 3 bits are being used for handshaking. 0 0 0 0 Port A (Data) x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Port B (Data) Port C (Data) Not Used DDR- PortA DDR - PortB DDR- PortC Mode Definition Reg. Port A - Bit-Clear Port B - Bit-Clear Port C - Bit-Clear Not Used Port A - Bit-Set Port B - Bit-Set Port C - Bit-Set Not Used x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 Timer 0 (LB) Timer 0 (HB) Timer 1 (LB) Timer 1 (HB) STOP Timer 0 START Timer 0 STOP Timer 1 START Timer 1 Timer 0 Mode Timer 1 Mode x x x x x x x x x x x x x x x x x x 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 Not Used Not Used Not Used Not Used Not Used Not Used R/W R/W R/W .. W W W W W W W .. .. ···• W W W W W W W R/W R/W .... .... .... x = don't care LB ~ low-order byte HB ~ high-order byte • A write accesses the modulus register, a read the read buffer. •• A read from an unused location reads invalid data. a write does not affect any operation of NSCB10A. The four modes are as follows: Mode O-Basic 1/0 (Input or Output) Mode 1-Strobed Mode Input Mode 2-Strobed Mode Output (Active Peripheral Bus) TABLE II. Mode Definition Register Bit Assignments Mode 3-Strobed Mode Output (TRI-STATE Peripheral Bus) Mode The address assignment of the MDR is xxx00111 as shown in Table I. Table II specifies the data that must be loaded into the MDR to select the mode. 0 1 2 3 • Data Direction Registers (DDR) Each port has a DDR that determines whether an individual port bit will be an input or an output. This can be considered the traffic light for the transfer of data between the CPU and the peripheral. Each port bit has a corresponding bit in this register. If the DDR bit is set (1) the port bit is an output; if it is cleared (0) the port bit is an input. The DDR bits cannot be written to individually. The register as a whole must be set to be consistent with all desired port bit directions. 9-84 Bit 7 6 5 4 3 2 1 0 x x x x x x x x x x x x x x x x x x x x x x x 0 1 1 1 0 1 0 1 1 9.0 Functional Description z en (Continued) QC) TABLE III. Bit-Set and Clear Examples Any write or read to the port bits contradicting the direction established by the DDR will not affect the port bits output or input. However, a write to a port bit, defined as an input, will modify the output latch and a read to a port bit, defined as an output, will read this output latch. See Figure 2. • Data Registers Operation PortB These registers contain the actual data being transferred between the CPU and the peripheral. In Basic 1/0, data presented by the peripheral (read cycle) will be latched on the falling edge of RD. Data presented by the CPU (write cycle) will be valid after the rising edge of WR (see AC characteristics for exact timing). SetB7 CiearB2 andBO SetB4, B3 and B1 Address xxx01101 xxx01001 xxx01101 Data 10000000 00000101 00011010 Port Pins Prior State Next State 00001111 10001111 10001111 10001010 10001010 10011010 9.3.2 Modes Two data transfer modes are implemented: Basic 1/0 and Strobed 1/0. Strobed 1/0 can be further subdivided into three categories: Strobed Input, Strobed Output (active peripheral bus) and Strobed Output (TRI-STATE peripheral bus). The following descriptions detail the functions of these categories. • Basic 1/0 Basic I/O mode uses the RD and WR CPU bus signals to latch data at the peripheral bus. This mode is the permanent mode of operation for ports Band C. Port A is in this mode if the MDR is set to mode o. Read and write byte operations and bit operations can be done in Basic 1/0. Timing for these modes is shown in the AC Characteristics Table and described with the data register definitions. When the NSC810A is reset, all registers are cleared to zero. This results in the basic mode of operation being selected, all port bits are made inputs and the output latch for each port bit is cleared to zero. The NSC810A, at this pOint, can read data from any peripheral port without further setup. If outputs are desired, the CPU merely has to program the appropriate DDR and then send data to the data ports. During Strobed 1/0, data presented by the peripheral must be valid on the rising edge of STB. Data received by the peripheral will be valid on the rising edge of STB. Data latched by the port on the rising edge of STB will be preserved until the next CPU read or STB signal. • Bit Set-Clear Registers The 1/0 features of the RAM-I/O-timer allow modification of a single bit or several bits of a port with the Bit-Set and BitClear commands. The address selected indicates whether a Bit-Set or Clear will take place. The incoming data on the addressl data bus is latched at the trailing edge of the WR strobe and is treated as a mask. All bits containing 1s will cause the indicated operation to be performed on the corresponding port bit. All bits of the mask with Os cause the corresponding port bits to remain unchanged. Three sample operations are shown in Table III using port B as an example. INTERNAL DATA BUS o ..... WRISET) MODE TLIC15517-13 FIGURE 2 9-85 o » 9.0 Functional Description (Continued) PAO-7 input latches on the leading (negative) edge of STB, causing BF to go high (true). On the trailing (positive) edge of STB the data is latched and the interrupt signal, INTR, becomes valid indicating to the CPU that new data is available. INTR becomes valid only if the interrupt is enabled, that is the output data latch for PC2 is set to 1. • Strobed 1/0 Strobed 1/0 Mode uses the STB, BF and INTR signals to latch the data and indicate that new data is available for transfer. Port A is used for the transfer of data when in any of the Strobed modes. Port B can still be used for Basic 1/0 and the lower 3-bits of port C are now the three handshake signals for Strobed 1/0. Timing for this mode is shown in the AC Characteristic Tables. When the CPU reads port A, address x'OO, the trailing edge of the RD strobe causes BF and INTR to become inactive, indicating that the strobed input cycle has been completed. Initializing the NSC810A for Strobed 1/0 Mode is done by loading the data shown in Table IV Into the specified register. The registers should be loaded in the order (left to right) that they appear in Table IV. • Strobed Output-Active (Mode 2) During strobed output operations, an external device can read data from port A using the STB signal. Data is initially loaded into port A by the CPU writing to I/O address x'OO. On the trailing edge of WR, INTR is set inactive and BF becomes valid indicating new data is available for the external device. When the external device is ready to accept the data in port A it pulses the STB signal. The rising edge of STB resets BF and activates the INTR signal. INTR becomes valid only if the interrupt is enabled, that is the output latch for PC2 is set to 1. INTR in this mode indicates a condition that requires CPU intervention (the output of the next byte of data). • Strobed Output-TRI-STATE (Mode 3) TABLE IV. Mode Definition Register Configurations Mode DDR PortA MDR Basic I/O xxxxxxxO Strobed Input DDR PortC PortC Output Latch Port bit directions are determined by the bits of each port's DDR xxxxxx01 00000000 xxx011 xxx1xx Strobed Output xxxxx011 (Active) 11111111 xxx011 xxx1xx Strobed Output xxxxx111 (TRI-STATE) 11111111 xxx011 xxx1xx The Strobed Output TRI-STATE Mode and the Strobed Output active (peripheral) bus mode function in a similar manner with one exception. The exception is that the data signals on PAO-7 assume the high impedance state at all times except when accessed by the STB signal. Strobed Mode 3 is identical to Strobed Mode 2, except as indicated above. • Strobed Input (Mode 1) During strobed input operations, an external device can load data into port A with the STB signal. Data is input to the Example Mode 1 (Strobed Input): INTR BF Results of Action Reset NSC810A Load 01 'H into MDR H H L L Load OO'H into DDRA H L Load 03'H into DDRC H L Load 04'H into Port C Bit-Set Register H L Basic input mode all ports. Strobed input mode entered; no byte loads to port C after this step; bit-set and clear commands to INTR and BF no longer work. Sets data direction register for port A to input; data from port A peripheral bus is available to the CPU if the STB signal is used, other handshake signals aren't initialized, yet. Sets data direction register of port C; buffer full signal works after this step and it is unaffected by the bit-set and clear registers. Sets output latch (PC2) to enable INTR; INTR will latch active whenever STB goes low; INTR can be disabled by a bit-clear to PC2.· STB pulses low L H CPU reads Port A H L Action Taken INITIALIZATION OPERATION Data on peripheral bus is latched into port A; INTR is cleared by a CPU read of port A or a bit-clear of STB. CPU gets data from port A; INTR is cleared; peripheral is signalled to send next byte via an inactive BF signal. Repeat last two steps until EaT at which time CPU sends bit-clear to the output latch (PC2) . • Port C can be read by the CPU at anytime, allowing polled operation instead of interrupt driven operation. 9-86 9.0 Functional Description (Continued) Example Mode 2 (Strobed Output-active peripheral bus): Action Taken INTR BF Reset NSC810A Load 03'H into MDR H H L L Load FF'H into DDRA H L Load 03'H into DDRC H L Load 04'H into Port C Bit-Set Register L L H H L L Results of Action INITIALIZE basic input mode all ports. strobed output mode entered; no byte loads to port C after this step; bit-set and clear commands to INTR and BF no longer work. Sets data direction register for port A to output; data from port A is available to the peripheral if the STB signal is used other handshake signals aren't initialized, yet. Sets data direction register of port C; buffer full signal works after this step and it is unaffected by the bit-set and clear registers Sets output latch (PC2) to enable INTR; active INTR indicates that CPU should send data; INTR becomes inactive whenever the CPU loads port A; INTR can be disabled by a bit-clear to STB. * OPERATION CPU writes to PortA STB pulses low Data on CPU bus is latched into port A; INTR is set by the CPU write to port A; active BF indicates to peripheral that data is valid; Peripheral gets data from port A; INTR is reset active; The active INTR signals the CPU to send the next by1e. Repeat last two steps until EOT at which time CPU sends bit-clear to the output latch (PC2). 'Port C can be read by the CPU at any time, allowing polled operation instead of interrupt driven operation. In addition to its timing function, STB enables port A outputs to active logic levels. This Mode 3 operation allows other data sources, in addition to the NSC810A, to access the peripheral bus. • Handshaking Signals STB (Strobe) is an active low input from the peripheral device, signalling a data transfer. The NSC810A latches data on the rising edge of STB if the port bit is an input and the peripheral should latch data on the rising edge of STB if the port bit is an output. BF (Buffer Full) is a high active output from the NSC810A. For input port bits, it indicates that new data has been received from the peripheral. For output port bits, it indicates that new data is available for the peripheral. In the Strobed mode of operation, the lower 3-bits of port C transmit/receive the handshake signals (PCO = INTR, PC1 = BF, PC2 = STB). INTR (Strobe Mode Interrupt) is an active-low interrupt from the NSC810A to the CPU. In strobed input mode, the CPU reads the valid data at port A to clear the interrupt. In strobed output mode, the CPU clears the interrupt by writing data to port A. The INTR output can be enabled or disabled, thus giving it the ability to control strobed data transfer. It is enabled or disabled, respectively, by setting or clearing bit 2 of the port C output data latch (STB). PC2 is always an input during strobed mode of operation, its output data latch is not needed. Therefore, during strobed mode of operation it is internally gated with the interrupt signal to generate the INTR output. Reset clears this bit to zero, so it must be set to one to enable the INTR pin for strobed operation. Once the strobed mode of operation is programmed, the only way to change the output data latch of PC2 is by using the Bit-Set and Clear registers. The port C by1e write command will not alter the output data latch of PC2 during the strobed mode of operation. Note: In either input or output mode the BF may be cleared by rewriting the MDR. 9.4 TIMERS The NSC810A has two timers. These are independently programmable, 16-bit binary down-counters. Full count is reached at n + 1, where n is the count loaded into the modulus registers. Timer outputs provide six distinct modes of operation and allow the CPU to check the present count at any1ime. Each timer has an independent clock input and output. Start and stop words from the CPU can individually start and stop the timers in any of the modes. A common gate signal can start and stop both timers in three of the six modes. Timer 0 has three possible input clock prescalers -;- 1, -;- 2 and -;- 64. Timer 1 has two possible input clock prescalers -;- 1 and -;- 2. Primary components of one timer are shown in Figure 3 . The timer mode register is a read/write register providing 9-87 • < o ..... CO o(J) z ,-------------------------------------------------------------~ 9.0 Functional Description (Continued) INTCLK and can be read without stopping the timers (see single/ double precision). the primary characterization of the timer output. The start! stop logic and prescaler block divides the clock input by the prescale factor, passing the output (INTCLK) to the binary down-counter. This block also gates the clock input signal (TIN) with the timer gate signal (TG). The timer block loads the modulus from the modulus register and uses (INTCLK) to count to zero. It loads the current count into the read buffer block where the CPU can access it at anytime. This timer block also indicates to the output control logic when the modulus is loaded (or reloaded) and when the count reaches O. The output control logic block drives the output pins according to the timer mode register and the timer block. The output of the timer block (Figure 3) (terminal count) is related to the input TIN by: . terminal count = [ • Timer Mode Register The timer mode register determines the operating configuration and the active input and output signal levels. Each timer has its own timer mode register, allowing independent operation. The timer mode register (TMR) may be written or read at any time; however, to assure accurate timing it is important to modify the mode only when the timer is stopped (see Timer Programming). The timer mode is selected from one of six modes by TMR bits 0, 1, and 2 (see Table V). Bits 3 and 4 select the prescale value if the prescaler is to be used. Bits 5, 6 and 7 select the modulus width (8- or 16bits), gate input polarity, and timer output polarity (activehigh or low), respectively. The bit functions of the TMR are illustrated in Figure 4. TIN p 2(m + 1)1 where: TIN = the input frequency p = TMR the programmed prescale 7 6 5 4 3 2 , 0 ~TlMINGMOOE ~ ll§~ m = the modulus PRESCALE VALUE This relationship can be seen directly (TOUT) in Mode 5 (square wave) as it is not masked by the subsequent output logic. SINGLE/DOUBLE PRECISION GATE INPUT POLARITY TIMER OUTPUT POLARITY 9.4.1 Registers TLIC/5517-15 FIGURE 4. Timer Mode Register There are five control registers for each timer. These are shown in the second group of Table I. They determine all timer functions and outputs. TABLE V. Mode Selection Bit • Modulus Registers and Read Buffer There are two modulus registers per timer (low byte, high byte). These are write only registers, and the two 8-bit values loaded by the CPU are combined into a 16-bit modulus for the timer's down counter. When the CPU reads from the modulus register addresses, it actually accesses the read buffers. These contain the low and high byte of the decremented modulus. This count is constantly updated by the timer block on the falling edge of 2 1 0 - Timer Function 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 - Timer Stopped and Reset Event Counter Event Timer (Stopwatch) Event Timer (Resetting) One Shot Square Wave Pulse Generator Timer Stopped and Reset - READ BUFFER CONTROL TIN(CLKI TG(GATEI INTClK '6 TIMER WR-+ ('61 TERMINAL COUNT OUTPUT CONTROL LOGIC TOUT CONTROL FIGURE 3. Timer Internal Block Diagram (One of Two Timers) 9-88 TLiC/5517-,4 9.0 Functional Description (Continued) - Timer Prescaler - There is a prescale function associated with each timer. It serves as an additional divisor to lengthen the counts for each timer circuit. The value of the divisor is fixed and selectable in each TMR, as shown below. TMRO Bits 4 3 a a a The output for T1 is multiplexed with port C, bit 5. (Similarly T11N is multiplexed with port C, bit 4.) When any timer mode other than a or 7 is specified for T1, or when mode 2, mode 3, or mode 4 is specified for TO, the three port C pins, bit 3, bit 4, and bit 5, become TG, T11N and T10UT, respectively. Prescale +1 +2 +64 • Start and Stop Registers This is the software start and stop for the timers. There is one start and one stop register for each timer. Writing any data to the start register of a timer starts that timer or transfers start and stop control to TG (in the gated modes 2, 3 and 4). Writing any data to the stop register stops the timer and removes start and stop control from TG (in the gated modes 2, 3 and 4). Restarting the timers causes the modulus to be reloaded for all gated timer modes (2, 3 and 4). The +64 is not available on timer 1; TMR1 bit 4 is a "don't care," Bits TMR1 4 3 Prescale x x a +1 +2 The timer prescale divides the input clock (TIN) and provides the output (INTCLK) to the drive the timer block (Figure 3). - During software restarts of the timers (write to the STOP register and then to the START register) the modulus will be reloaded only if the internal clock signal (INTCLK) is in the high level or makes at least one transition to the high level between the time that the STOP and START registers are written. If INTCLK doesn't meet one of these criteria then the modulus will not be reloaded and the timer will continue to count down from where it was stopped.· Single/Double Precision Bit 5 of the TMR determines whether a single or double byte can be accurately read from the read buffer. This option does not affect the use of the modulus registers by the timer block (i.e., the modulus used is always a double byte regardless of the precision mode selected). Since it is difficult, if not impossible, to know the level of INTCLK in non-gated modes the recommended practice for restart operation is to reload the modulus after stopping the timer using the 4 step programming procedure in the Timer Programming section of this datasheet. In gated modes INTCLK always stops high. The read buffer keeps track of the count and is constantly being updated by the timer block. In order to allow the CPU to read the read buffer, the NSC810A must discontinue updates to this buffer during the read. The precision bit determines whether one or two bytes in the read buffer will be frozen during the read process. In double precision mode, the NSC810A freezes high and low bytes in the read buffer for two consecutive read cycles. In the single precision mode, the NSC810A freezes the read buffer for only one read cycle. Read accesses should be done as follows. 'NOTE: INTCLK is coupled via the prescaler to TIN and reacts to the TIN clock input regardless of whether the timer is started or stopped. - Start/Stop Timing Figure 5 shows the relationships between the WR signal (start register), TIN and INTCLK for both the non-gated and gated modes. The TG signal is only sampled during the positive half of the TIN cycle. This means that when the gated modes are used the internal clock (INTCLK) is never stopped in the low state. Hence, when TG goes active high INTCLK is restarted on the next high-to-Iow transition of TIN. When TG goes inactive low INTCLK will stop as soon as TIN is high. When the TMR bit 5 is: 0- (double byte) read or write the low byte first, then the high byte to maintain proper read/write communications. 1- (single byte) In this mode either the high or low byte of the count can be read at any given instant but not both bytes consecutively. Always write the low byte first, then the high byte to load the modulus. 9.4.2 Timer Pins The following example illustrates this point. If the read buffer had a value of 0200 when the low byte was read and the down-counter decremented to 01FF before the high byte was read, then in the double precision mode the CPU would have read 00 and 02, respectively. In the single precision mode the CPU would have read 00 and 01. TIN, TOUT, and TG a Timer has dedicated pins for its clock, TOIN, and its output, TOOUT. Timer 1 must borrow its input and output pins from port C. This is accomplished by writing to the TMR for timer 1. If mode 1, 2, 3, 4, 5 or 6 is specified in TMR1, the pins from port C (PC3, PC4 and PC5) are automatically made available to the timer(s) for gating (TG), T11N and T10UT, respectively. These pins are also taken from port C any time timer a is in mode 2, 3, 4, so that it has a TG pin. In order to change pins PC3, PC4 and PC5 back to their original configuration as Basic I/O, the timer mode registers must be reset by selecting mode a or 7. NOTE: In the double precision mode, the high byte should be read immediately after the low byte. Do not access any other registers or unused address locations between the reads. - Timer Output Polarity Like the gating function, the polarity of the output signal is programmable via bit 7 of the TMR. A zero will cause an active-low output; a one will generate an active-high output. Gate Input Polarity In modes 2, 3 and 4, the TG input is the common hardware control for starting and stopping the timers. The polarity of the gate input may be selected by the contents of bit 6 of the TMR. If bit 6 equals 0, the gate signal will be active-high or positive edge for mode 4; if bit 6 equals 1, the gate polarity will be active-low or negative edge for mode 4. Modes 2 and 3 are level sensitive. Mode 4 is edge sensitive. TG (PC3), the timer gate, is used for hardware control to start/stop (or trigger) the timers. The timer gate may be used individually by either timer or simultaneously by both timers. For modes 2 and 3, the timer starts on the gate-active transition assuming the start address was previously written. If 9-89 z tJ) oco .... ~ NSC810A CD o ." C ~ n o· ~ !. TIN cCD en ...n is· - Wii o· ~ 1;> ADDRESS ~ '" c: CD .e. INTCLKFOR NON-GATED MODES (1, 5, 6) CD cO o TO (TMAS.O) , INTCLKFOR GMED MODES 12, 3, 4) TLlC/5517-16 FIGURE 5. Start/Stop Timing Note: Diagonal lines indicate interval of invalid data. twsp-WR set-up for stopping timer 150 ns. For mode 4 (one shot), only start-timing applies. tGs-r-TG (gate) set-up for starting timer 100 ns. tws-r-WR set-up for starting timer 150 ns. tGSp-TG (gate) set-up for stopping timer 100 ns. CD ONE CYCLE (:) INltLK ." C :::l - Wi! - - - - - - - . . . . , () START REGISTER O· ~----------------------------------------+------------, READ BUFFER :::l ~ C (ACTI~~~~~ --------------------------"'1:=1 TLlC/5517-17 CD til () ~. FIGURE 6a. Event Counter Mode (Mode 1) "C O· :::l INltLK oo ;a. Viii - - - -... :r c: START REGISTER < OUTPUT (ACTIVE-LOW) TLiC/5517-20 FIGURE Sd. One Shot (Mode 4) ::l oo 3- :it: CD S INTCLK '"cO V) Wii START REGISTER OUTPUT (ACTIVE LOW) TLiC/5517-21 FIGURE Se. Square Wave (Mode 5) !----r- ONE CYCLE INTClK Wii START REGISTER OUTPUT {ACTIVE LOW} TLiC/5517-22 FIGURE Sf. Pulse Generator (Mode S) "O~8~SN iii ~ .,... co U t/) Z 9.0 Functional Description (Continued) • One Shot Mode (mode 4, TMR bits = 100) 2. Write timer mode register again, this time loading it for your requirements. In this gated mode, the timer holds the modulus count until the active gate edge (see Figure 6d). The output immediately becomes valid and remains valid as the counter decrements. The gating signal may go inactive without affecting the count. If TG (the gate) becomes inactive and returns active prior to the terminal count, the modulus will be reloaded, retriggering the one shot period. When the timer reaches the terminal count, the output becomes inactive (see NOTE). The gate, in this mode, is edge sensitive; the active edge is defined by the TMR. 3. Write the modulus values, low byte first, high byte second. 4. Start the timers. The timer read buffer is only updated when the internal timer clock (INTCLK) makes a negative-going transition. Therefore, enough input clock cycles (TIN) must occur to cause a transition of INTCLK given the programmed pre-scaler. After the first transition, the new modulus will be loaded into the read buffer and it can then be read by the CPU. NOTE: The one shot cannot be retriggered during its last internal count (INTCLK) regardless of prescaler selected. Therefore, using the divide by 1 prescaler, it cannot be retriggered during the last clock (TIN), using the divide by 2 prescaler during the last two clocks (TIN) and using the divide by 64 prescaler during the last 64 clocks (TIN). • Square Wave Mode (mode 5, TMR bits To guarantee the integrity of the data during a read operation, updates to the timer read buffer are blocked out. If an update is blocked out due to a read, the read buffer will not be updated until the next active transition of INTCLK. Thus, it would appear as if a count was skipped between reads. For example, if the output latches were FF when a block out (read) occurred, the next update could occur at FD, thereby giving an appearance that the count FE was skipped. In actuality the correct number of clocks has occurred for the read buffer to hold FD. = 101) In this non-gated mode, the output will go active as soon as the timer is started. The counter decrements for each clock period (INTCLK) and complements its output when zero is reached (see Figure 6e). The modulus is then reloaded and counting continues. Assuming a regular clock input, the output will then be a square wave with a period equal to twice the prescale value times the value loaded into the modulus + 1 (see equation Timer section intro.). Therefore, varying the modulus will vary the period of the square wave. Writing the modulus value when the timer is running does not update the timer immediately. The new value written will get into the timer when the timer reaches its terminal count and reloads its value. If the timer is stopped and a modulus is written the new modulus value will get into the timer when the internal clock is high during the modulus write or on the next low to high internal clock transition. The next time the timer reaches its terminal count it will load the new modulus into the timer. One way to guarantee the new modulus will get into the timer is to follow steps 1 through 4. Although this procedure guarantees that the data will get into the timer you will not be able to read it back until you get a negative-going transition on the internal clock. • Pulse Generator (mode 6, TMR bits = 110) In this non-gated mode, the counter decrements for each period of INTCLK (see Figure 61). When the terminal count is reached the output becomes valid for % of the TIN clock width for a prescale of + 1, for one full TIN clock width for a prescale of + 2 and for 32 TIN clock widths for a pre scale of + 64. The modulus is then reloaded and the sequence is repeated. Varying the prescale and modulus varies the frequency of the pulse. Rewriting modulus does not reset the prescaler. The only way to reset the prescaler is to write the mode register and have the internal clock signal be high for some period between the write of the mode register and the start of the timer. Once again, steps 1 through 4 will reset the prescaler. 9.4.4 Timer Programming The following is the proper sequence to program the timer and should always be used: 1. Write timer mode register selecting mode 0 or 7. This stops the timer, resets the prescaler, and sets internal clock high. 9-94 z en 10.0 NSC810A/883 MIL-STD-883 Class B Screening National Semiconductor offers the NSCS10AD and NSCS10AE with full class B screening per MIL-STD-SS3 for Military/ Aerospace programs requiring high reliability. In addition, this screening is available for all of the key NSCSOO peripheral devices. (') Q) ...... Electrical testing is performed in accordance with RETSS10AX, which tests or guarantees all of the electrical performance characteristics of the NSCS10A data sheet. A copy of the current revision of RETSS10AX is available upon request. The following table is the MIL-STD-S83 flow as of the date of publication. Test MIL-STD-883 Method/Condition Requirement Internal Visual Stabilization Bake Temperature Cycling Constant Acceleration Fine Leak Gross Leak Burn-In 2010 B 100S C 24 Hrs. @ + 150·C 1010Cl0Cycies -65·C/ +150·C 2001 E 30,000 G's, Yl Axis 1014AorB 1014C 1015160Hrs.@ +125·C(using burn-in circuits shown below) + 25·C DC per RETS81 OAX 5% Max + 125·C AC and DC per RETS81 OAX -55·CACand DC per RETS810AX +25·C AC per RETSS10AX 5005 5056 2009 100% 100% 100% 100% 100% 100% 100% Final Electrical PDA QA Acceptance Quality Conformance External Visual 11.0 Burn-In Circuit 51 CLDCK3 51 CLDCK 2 Input Clocks 5.5 Vac 10 40 I-"VVI...... 39 38 37 36 35 34 1-".,..,........ 33L...JOCAA_ -r-r5...1 INri 10 11 12 13 14 15 16 17 18 19 20 100% 100% 100% Sample per Method 5005 100% 12.0 Timing Diagram 5242HR NSC810AD/883B (Dual-In-Line) CLOCK 1 100% av 4.5V CLOCK 3 3". -+-..... _.., DV- 32 31 30 1-".,..,........ 29 28 27 261-"VVI...... 251-"VVI...... 241-"VVI...... 23 1-".,..,......... 22 .......,..,......... 21 1-".,..,....-41 TL/C/5517-24 Note 1: All resistors ±5%, erating life circuit. V. watt unless otherwise deSignated, 12S'C op· Note 2: E package burn·in circuit 5244HR is functionally identical to the 0 package. Note 3: All resistors 2.7 kO unless marked otherwise. Note 4: All clocks OV to 4.5V. Note 5: Device to be cooled down under power after burn-in. ":" TL/C/5517-23 9-95 ~ 13.0 Ordering Information NSC810A X X 11 X X r "";obm"s,_,,, A + =A+ 1883= MIL·STD·883 Screening (Note 1) I = Industrial Temperature (- 40'C to + 85'C) M Military Temperature (- 55'C to + 125'C) No Designation = Commercial Temperature (O'C to 70'C) = = 1-1 1 MHz Clock Output ' - - - - - - - - - ; -3=2.5 MHz Clock Output 4 = 4 MHz Clock Output 1- L...._ _ _ _ _ _ _ _-/ 0= Ceramic Package N = Plastic Package E = Ceramic Leadless Chip Carrier (LCC) V = Plastic Leaded Chip Carrier (PCC) TUC/5517-25 Note 1: Do not specify a temperature option; all parts are screened to military temperature. 14.0 Reliability Information Gate Count Transistor Count 4000 14,000 9·96 z en oQC) ~National ..... Co) ~ Semiconductor microCMOS NSC831 Parallel 1/0 General Description Features The NSC831 is an I/O device which is fabricated using microCMOS silicon gate technology, functioning as an input/output peripheral interface device. It consists of 20 programmable input/output bits arranged as three separate ports, with each bit individually definable as an input or output. The port bits can be set or cleared individually and can be written to or read from in bytes. Several types of strobed mode operations are available through Port A. II Three programmable I/O ports III Single 5V Power Supply Very low power consumption Fully static operation III Single-instruction I/O bit operations • Directly compatible with NSC800 family • Strobed modes available on Port A 1:11 EI For military applications the NSC831 is available with class B screening in accordance with methods 5004 of MIL-STD883. Microcomputer Family Block Diagram ~ ADD·AD7 INTR RSTA, B. C NMI AB·A15 INTA so 51 RFSH BRED ftij NSCBDD CPU WR ALE BACK 101M WAIT PS RESET OUT Vee RESET IN PORT A B BITS "* A13 A12 CSii CSf NSCB31 1/0 PORT B B BITS ftij WR ALE PORT C 4 BITS RESET TL/C/5594-1 9-97 ~ Cf) r-----------------------------------------------------------------------------, co ~ Z Table of Contents 1.0 ABSOLUTE MAXIMUM RATINGS 8.0 FUNCTIONAL DESCRIPTION 2.0 OPERATING RANGE 8.1 Block Diagram 8.2 1/0 Ports 3.0 DC ELECTRICAL CHARACTERISTICS 8.3 Registers 4.0 AC ELECTRICAL CHARACTERISTICS 8.4 Modes 9.0 NSC8311NSC883B MIL·STD-883/CLASS B SCREENING 5.0 TIMING WAVEFORMS 6.0 PIN DESCRIPTIONS 10.0 BURN·IN CIRCUIT 6.1 Input Signals 11.0 TIMING DIAGRAM 6.2 Input/Output Signals 12.0 ORDERING INFORMATION 7.0 CONNECTION DIAGRAMS 13.0 RELIABILITY INFORMATION 9·98 1.0 Absolute Maximum Ratings 2.0 Operating Range Vee = If Military/Aerospace specified devices are required, contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Storage Temperature Range -65'Cto + 150'C Voltage at Any Pin With Respect to Ground -0.3V to Vee + 0.3V 7V Vee Lead Temp. (Soldering, 10 seconds) 300'C Power Dissipation 1W NSC831-1: O'C -40'C NSC831·3: -40'C - 55'C NSC831·4: O'C -40'C -55'C to to to to to to to z en oCO 5V ±10% ....Co:I +70'C +85'C + 85'C + 125'C +70'C +85'C + 125'G Note: Absolute maximum ratings are those values beyond which the safety of the device cannot be guaranteed Continuous operation at these limits is not intended; operation should be limited to those conditions specified under DC Electrical Characteristics. 3.0 DC Electrical Characteristics Vee = Symbol Parameter 5V ± 10%, GND = OV, unless otherwise specified Max Units Logical 1 Input Voltage 0.8 Vee Vee V VIL Logical 0 Input Voltage 0 0.2 Vee V Logical 1 Output Voltage VOL Logical 0 Output Voltage Min Typ VIH VOH Test Conditions IOH = -1.0mA 2.4 V lOUT = -10 JJ-A 4.0V V IOL = 2mA 0 0.4 V lOUT = 10 JJ-A 0 0.1 V JJ-A IlL Input Leakage Current 0,;; VIN';; Vee -10.0 10.0 IOL Output Leakage Current 0,;; VIN';; Vee -10.0 10.0 JJ-A lee Active Supply Current lOUT = 0, twey = 750 ns 15 20 mA 10 Quiescent Current RESET =0, RD = 1, WR = 1, ALE = X, VIN = 0, or VIN = Vee No Input Switching, TA = 25'C 10 100 JJ-A GIN Input Capacitance 4 7 pF COUT Output Capacitance 6 10 pF 5 Power Supply Voltage (Note 1) V 2.4 6 Vee Note 1: Operation at lower power supply voltages will reduce the maximum operating speed. Operation at voltages other than 5V ± 10% Is guaranteed by design, not tested. ICC vs. SPEED 10 ..1.~ .... /~ .s 15 a:: a:: 8 ~ => '" ~ 5 '/ V .V 4500 3000 1500 1000 750 3 4 twev (ns) 0 1 2 NSC 800 CLOCK SPEED' (MHz) TL/C/5594-2 'When NSe831 is used with NScaOO 9-99 4.0 AC Electrical Characteristics Vcc = Symbol 5V ± 10%, GND = OV Test Conditions Parameter NSC831-1 NSC831-3 NSC831-4 Units Min Max Min Max Min 400 Max 250 tACC Access Time from ALE tAH ADO-AD7, CE, 101M Hold Time 100 60 30 ns tALE ALE Strobe Width (High) 200 130 75 ns tARW ALE to RD or WR Strobe 150 120 75 ns tAS ADO-AD7, CE, 101M Setup Time 100 45 40 ns tOH Data Hold Time 150 90 40 ns too Port Data Output Valid tos Data Setup Time tpE Peripheral Bus Enable tpH Peripheral Data Hold Time 150 tps Peripheral Data Setup Time 100 tpz Peripheral Bus Disable (TRI-STATE®) 150 150 150 ns tR8 RD to BF Output 300 300 300 ns tRO Read Strobe Width tROD Data Bus Disable tRI RD to INTR Output CL = 150 pF 1000 350 100 320 80 320 0 200 125 220 0 0 100 320 75 300 ns ns 50 320 ns ns 200 100 75 400 300 50 ns ns ns 75 ns 300 ns 300 ns tRWA RD or WR to Next ALE Isa STB to BF Valid tSH Peripheral Data Hold With Respect to STB lSI STB to INTR Output tss Peripheral Data Setup With Respect to STB 100 75 50 Isw STBWidth 400 320 220 twa WR to BF Output tWI WR to INTR Output tWR WR Strobe Width 400 320 220 ns twCY Width of Machine Cycle 3000 1200 750 ns Nole: Test conditions: twCY ~ 125 150 300 125 300 ns 300 300 300 320 ns 100 300 340 ns ns ns 300 ns 300 ns 3000 ns for NSC831-1, 1200 ns for NSC831-3, 750 ns for NSC831-4 AC TESTING INPUT/OUTPUT WAVEFORM ===x: 45 100 300 0.8 Vee 0.2 Vee 0.8 Vee 0.2 Vee AC TESTING LOAD CIRCUIT x= I TLlC/5594-3 DEVICE UNDER TEST 1'100 PF TL/C/5594-4 9-100 z en oCXI 5.0 Timing Waveforms ... Co) Read Cycle (Read from Port) 101M CE AD (0-71 ALE no PERIPHERAL (PDRT) BUS TLlC/5594-5 Note: Diagonal lines indicate interval of invalid data. Write Cycle (Write to Port) TLlC/5594-6 Note: Diagonal lines indicate interval of invalid data. 9-101 ~ CO) B ,-----------------------------------------------------------------------------------------------, 5.0 Timing Waveforms (Continued) U) Z Strobed Mode Input PERIPHERAL (PORT A) BUS BF INTR 101M CE ALE PORT A - AD (D-7) TL/C/5594-7 Note: Diagonal lines indicate interval of invalid data. Strobed Mode Output IOJM~ 'I11I//////II/ CE B< AD (0-7) PDRTAADDR ALE ~OATAIN _ I':~:--------------------- \ BF m ACTIVE (MDDE 2) PORTA BUS -ID0:to-+----+---_ X DlD DATA { _ !!!-~T~M~E:!L _____ _ - - NEW DATA lPEt ------'--{ TLlC/5594-B Note: Diagonal lines indicate interval of invalid data. 9-102 r--------------------------------------------------------------------------, Z en 6.0 Pin Descriptions o 7.0 Connection Diagrams (1) The following describes the function of all NSC831 input/ output pins. Some of these descriptions reference internal circuits. c.) ...... Dual-In-Line Package 40 39 38 37 36 PAD 6.1 INPUT SIGNALS Master Reset (RESET): An active-high input on the RESET pin initializes the chip causing the three 1/0 ports (A, Band C) to revert to the input mode. The three ports, the three data direction registers and the mode definition register are reset to low (0). RESET Chip Enable (CEo, CE1): The CE inputs must be active at the falling edge of ALE. At ALE time, the CE inputs are latched to provide access to the NSC831. CSO Vee 3S PA5 34 PA6 CS1 jjjj 33 PA7 WR 10 NSC831 ALE 11 12 ADO ADl 13 Read (RD): when the RD input is an active low, data is read from the ADO-AD? bus. :~: :: Write (WR): When the CE inputs are active an active low WR input causes the selected output port to be written with the data from the ADO-AD? bus. Address Latch Enable (ALE): The trailing edge (high to low transition) of the ALE input signal latches the addressl data present on the ADO-AD? bus, plus the input control signals on CEo and CE1. Power (Vecl: 5V power supply. Ground (Vss): Ground reference. Vee PAl PA2 PA3 PA4 AD4 ADS AD6 AD7 V ss 17 18 19 20 32 31 30 29 28 27 26 25 24 23 PCoIINTR PC1/BF PC2/STB PC3 PBo PBl PB2 PB3 PB4 PBS 22 PB6 21 PB7 TL/C/5594-9 Top View *Tie pins 2, 3, and 4 to either Vee or Vss. 6.2 INPUT/OUTPUT SIGNALS Order Number NSC831D or N See NS Package Number D40C or N40A Bidirectional Address/Data Bus ADO-AD7: The lower 8 bits of the 1/0 address are applied to these pins, and latched by the trailing edge of ALE. During read operations, 8 bits are present on these pins, and are read when RD is low. During an 1/0 write cycle, Port A, B, or C is written with the data present on this bus at the trailing edge of the WR strobe. Leadless Chip Carrier RESET PAD NC Vee PAl PA2 PA3 PA4 / Ports A, B, C (PAO-PA7, PBO-PB7, PCO-PC3): These are general purpose 1/0 pins. Their input/output direction is determined by the contents of the Data Direction Register (DDRs). PAS PA6 CSO Vee CS1 PA7 PCOJlNTR PClI8F NC Ali WR NC ALE ADO ADl AD2 AD3 PC2/STB PC3 PBO PBl PB2 AD4 AD5 AD6 AD7 Vss NC PB7 PB6 PBS PB4 PB3 NC = NO CONNECT TL/C/5594-10 Top View Order Number NSC831E See NS Package Number E44A 9-103 ,.. CO) r-------------------------------------------------------------------------------------~ co 8.0 Functional Description U) Refer to Figure 1 for a detailed block diagram of the NSC831, while reading the following paragraphs. Input/Output (1/0): The 110 of the NSC831 contains three sets called Ports. There are two ports (A and B) which contain 8 bits each and one port (Port C) which has 4 bits. Any bit or combination of bits in a port may be addressed with Set or Clear commands. A port can also be addressed as an U Z 8-bit word (4 bits for Port C). When reading Port C, bits 4-7 will be read as ones. All ports share common functions of Read, Write, Bit-Set and Bit-Clear. Additionally, Port A is programmable for strobed (handshake mode input or output. Port C has a programmable second function for each bit associated with strobed modes. Table I defines the ad· dress location of the ports and control registers. 8.1 BLOCK DIAGRAM CONTROL LOGIC (1.33·391 PORT A PAO-PA7 (Z-41 iiiI.~ A8-AID • • (Zl-Z8) ADDRESS 8UFFERS PORT 8 PBD-PB7 (lZ-191 ADD-AD7 4111i1iliil~ (40) Vcc~ ADDRESSI DATA BUFFERS AND LATCHES (29-32) PORT C PCO-PC3 HANDSHAKE INTERNAL DATA BUS GND~ TL/C/5594-11 Note: Applicable pinout for 40 pin dual-in·line package within parentheses. FIGURE 1 9-104 8.0 Functional Description z o (f) (Continued) IX) The address assignment of the MDR is xxx00111 as shown in Table I. The upper 3 "don't care" bits are determined by the users decode logic (chip enable address). Table II specifies the data that must be loaded into the MDR to select the mode. • Data Direction Registers (DDR) 8.2 1/0 PORTS There are three 1/0 ports (labeled A, Band C) on the NSC831. Ports A and Bare 8-bits wide; port C is 4-bits wide. These ports transfer data between the CPU bus and the peripheral bus and vice versa. The way in which these transfers are handled depends upon the currently programmed operating mode. Each port has a DDR that determines whether an individual port bit will be an input or an output. If DDR for the port bit is set to a 1, then that port bit is an output. If its DDR is reset to a 0, then it is an input. The DDR bits cannot be individually written to; the entire DDR register is affected by a write to the DDR. Thus, all data bits written must be consistent for all desired port bit directions. The NSC831 can be programmed to operate in four different modes. One of these modes (Basic 1/0) allows direct transfer of 1/0 data without any handshaking between the NSC831 and the peripheral. The other three modes (Strobed 1/0) provide for timed transfers of 1/0 data with handshaking between the NSC831 and the peripheral. Determination of the NSCB31 port's mode, data direction and data is done by five registers which are under program control. The Mode Definition Register determines in which of the four 1/0 modes the chip will operate. Another register (Data Direction Register) establishes the data direction for each bit in that port. The Data Register holds data to be transferred or that which was received. The final two registers per port allow individual data register bits to be cleared (Bit-Clear Register) or data register bits to be set (Bit-Set Register). TABLE I. 1/0 and Timer Address Designations 8-Bit Address Field Designation R (Read) Bits 1/0 Port, Timer, etc. W(Write) 7 6 5 4 3 2 1 0 x x x x x x x x x Operation during Strobed 1/0 utilizes two of the port C pins for handshaking and one port C pin to interrupt the CPU. x x x x x x x x x x x 8.3 REGISTERS As indicated in the overview, programmable registers control the flow of data through the ports. Table I shows the registers of the NSC831. All registers affecting 1/0 transfers are in the first grouping of this table. x x x x x x x x x x • Mode Definition Register (MDR) The MDR determines the operating mode for port A and whether or not the lower 3-bits of port C will be used for handshaking (Strobed 1/0). Port B always transfers data via the Basic 1/0 mode, regardless of how the MDR is programmed. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 x = don't care LB ~ 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 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 PortA (Data) Port B (Data) Port C (Data) Not Used DDR - PortA DDR- Port B DDR- PortC Mode Definition Reg. Port A - Bit-Clear Port B - Bit-Clear Port C - Bit-Clear Not Used Port A - Bit-Set Port B - Bit-Set Port C - Bit-Set Not Used R/W R/W R/W ** W W W W W W W " W W W '* low-order byte HB ~ high-order byte The four modes are as follows: " A write accesses the modulus register, a read the read buffer. "'" A read from an unused location reads invalid data, a write does not affect any operation of NSC831. Mode O-Basic 1/0 (Input or Output) Mode 1-Strobed Mode Input Mode 2-Strobed Mode Output (Active Peripheral Bus) TABLE II. Mode Definition Register Bit Assignments Mode 3-Strobed Mode Output (TRI-STATE Peripheral Bus) Mode 0 1 2 3 9-105 Bit 7 6 5 4 3 2 1 0 x x x x x x x x x x x x x x x x x x x 0 1 x 0 1 1 0 1 1 1 x x x C.:I ..... -r-----------------------------------------~ CO) ClCI ~ Z 8.0 Functional Description (Continued) Any write or read to the port bits contradicting the direction established by the DDR will not affect the port bits output or input. However, a write to a port bit, defined as an input, will modify the output latch and a read to a port bit, defined as an output, will read this output latch. See Figure 2. TABLE III. Bit-Set and Clear Examples Operation Port B • Data Registers These registers contain the actual data being transferred between the CPU and the peripheral. In Basic I/O, data presented by the peripheral (read cycle) will be latched on the falling edge of RD. Data presented by the CPU (write cycle) will be valid after the rising edge of WR (see AC characteristics for exact timing). During Strobed I/O, data presented by the peripheral must be valid on the rising edge of STB. Data received by the peripheral will be valid on the rising edge of STB. Data latched by the port on the rising edge of STB will be preserved until the next CPU read or STB signal. • Bit Set-Clear Registers The I/O features of the RAM-I/O-timer allow modification of a single bit or several bits of a port with the Bit-Set and BitClear commands. The address selected indicates whether a Bit-Set or Clear will take place. The incoming data on the address/data bus is latched at the trailing edge of the WR strobe and is treated as a mask. All bits containing 1s will cause the indicated operation to be performed on the corresponding port bit. All bits of the mask with Os cause the corresponding port bits to remain unchanged. Three sample operations are shown in Table III using port B as an example. INTERNAL DATA BUS SetB7 CiearB2 andBO SetB4,B3 and B1 Address xxx01101 xxx01001 xxx01101 Data 10000000 00000101 00011010 Port Pins Prior State Next State 00001111 10001111 10001111 10001010 10001010 10011010 8.4 MODES Two data transfer modes are implemented: Basic I/O and Strobed I/O. Strobed I/O can be further subdivided into three categories: Strobed Input, Strobed Output (active peripheral bus) and Strobed Output (TRI-STATE peripheral bus). The following descriptions detail the functions of these categories. • Basic 1/0 Basic I/O mode uses the RD and WR CPU bus signals to latch data at the peripheral bus. This mode is the permanent mode of operation for ports Band C. Port A is in this mode if the MDR is set to mode O. Read and write byte operations and bit operations can be done in Basic I/O. Timing for these modes is shown in the AC Characteristics Table and described with the data register definitions. I When the NSCB31 is reset, all registers are cleared to zero. This results in the basic mode of operation being selected, all port bits are made inputs and the output latch for each port bit is cleared to zero. The NSCB31, at this pOint, can read data from any peripheral port without further set-up. If outputs are desired, the CPU merely has to program the appropriate DDR and then send data to the data ports. WR(SET) MODE TL/C/5594-12 FIGURE 2 9-106 z 8.0 Functional Description (Continued) • Strobed 1/0 Strobed lID Mode uses the STB, BF and INTR signals to latch the data and indicate that new data is available for transfer. Port A is used for the transfer of data when in any of the Strobed modes. Port B can still be used for Basic lID and the lower 3-bits of port C are now the three handshake signals for Strobed lID. Timing for this mode is shown in the AC Characteristic Tables. causing BF to go high (true). On the trailing (positive) edge of STB the data is latched and the interrupt signal, INTR, becomes valid indicating to the CPU that new data is available. INTR becomes valid only if the interrupt is enabled, that is the output data latch for PC2 is set to 1. When the CPU reads port A, address x'OO, the trailing edge of the RD strobe causes BF and INTR to become inactive, indicating that the strobed input cycle has been completed. Initializing the NSC831 for Strobed lID Mode is done by loading the data shown in Table IV into the specified register. The registers should be loaded in the order (left to right) that they appear in Table IV. • Strobed Output-Active (Mode 2) During strobed output operations, an external device can read data from port A using the STB signal. Data is initially loaded into port A by the CPU writing to lID address x'OO. On the trailing edge of WR, INTR is set inactive and BF becomes valid indicating new data is available for the external device. When the external device is ready to accept the data in port A it pulses the STB signal. The rising edge of STB resets BF and activates the INTR signal. INTR becomes valid only if the interrupt is enabled, that is the output latch for PC2 is set to 1. INTR in this mode indicates a condition that requires CPU intervention (the output of the next byte of data). TABLE IV. Mode Definition Register Configurations Mode DDR PortA MDR Basic 110 xxxxxxxO DDR PortC PortC Output Latch Port bit directions are determined by the bits of each port's DDR Strobed Input xxxxxxOl 00000000 xxxOll xxxI xx Strobed Output (Active) xxxxxOll 11111111 xxxOll xxxI xx Strobed Output xxxxxlll (TRI-STATE) 11111111 xxxOll xxxI xx • Strobed Output-TRI-STATE (Mode 3) The Strobed Output TRI-STATE Mode and the Strobed Output active (peripheral) bus mode function in a similar manner with one exception. The exception is that the data signals on PAO-7 assume the high impedance state at all times except when accessed by the STB signal. Thus, in addition to its timing function, STB enables port A outputs to active logic levels. This Mode 3 operation allows other data sources, in addition to the NSC831, to access the peripheral bus. Strobed Mode 3 is identical to Strobed Mode 2, except as indicated above. • Strobed Input (Mode 1) During strobed input operations, an external device can load data into port A with the STB signal. Data is input to the PAO-7 input latches on the leading (negative) edge of STB, Example Mode 1 (Strobed Input): INTR SF Results of Action Reset NSC831 Load 01'H into MDR H H L L Load OO'H into DORA H L Load 03'H into DDRC H L Load 04'H into Port C Bit-Set Register H L Basic input mode all ports. Strobed input mode entered; no byte loads to port C after this step; bit-set and clear commands to INTR and BF no longer work. Sets data direction register for port A to input; data from port A peripheral bus is available to the CPU if the STB signal is used, other handshake signals aren't initialized, yet. Sets data direction register of port C; buffer full signal works after this step and it is unaffected by the bit-set and clear registers. Sets output latch (PC2) to enable INTR; INTR will latch active whenever STB goes low; INTR can be disabled by a bit-clear to PC2.· STB pulses low L H CPU reads Port A H L Action Taken INITIALIZATION OPERATION Data on peripheral bus is latched into port A; INTR is cleared by a CPU read of port A or a bit-clear of STB. CPU gets data from port A; INTR is cleared; peripheral is signalled to send next byte via an inactive BF signal. Repeat last two steps until EDT at which time CPU sends bit-clear to the output latch (PC2). *Port C can be read by the CPU at anytime, allowing polled operation instead of interrupt driven operation. 9-107 ~ CO .... Co) - CW) ~ Z r-----------------------------------------------------------------------------~ 8.0 Functional Description (Continued) Example Mode 2 (Strobed Output-active peripheral bus): INTR BF Results of Action Reset NSC831 Load 03'H into MDR H H L L Load FF'H into DDRA H L Load 03'H into DDRC H L Load 04'H into Port C Bit-Set Register L L Basic input mode all ports. Strobed output mode entered; no byte loads to port C after this step; bit-set and clear commands to INTR and BF no longer work. Sets data direction register for port A to output; data from port A is available to the peripheral if the STB signal is used other handshake signals aren't initialized, yet. Sets data direction register of port C; buffer full Signal works after this step and it is unaffected by the bit-set and clear registers Sets output latch (PC2) to enable INTR; active INTR indicates that CPU should send data; INTR becomes inactive whenever the CPU loads port A; INTR can be disabled by a bit-clear to STB.· H H L L Action Taken INITIALIZE OPERATION CPU writes to PortA STB pulses low Data on CPU bus is latched into port A; INTR is set by the CPU write to port A; active BF indicates to peripheral that data is valid; Peripheral gets data from port A; INTR is reset active; The active INTR Signals the CPU to send the next byte. Repeat last two steps until EOT at which time CPU sends bit-clear to the output latch (PC2). ·Port C can be read by the CPU at any time, allowing polled operation instead of interrupt driven operation. Once the strobed mode of operation is programmed, the only way to change the output data latch of PC2 is by using the Bit-Set and Clear registers. The port C byte write command will not alter the output data latch of PC2 during the strobed mode of operation. • Handshaking Signals In the Strobed mode of operation, the lower 3-bits of port C transmit/receive the handshake signals (PCO= INTR, PC1 =BF, PC2=STB). INTR (Strobe Mode Interrupt) is an active-low interrupt from the NSC831 to the CPU. In strobed input mode, the CPU reads the valid data at port A to clear the interrupt. In strobed output mode, the CPU clears the interrupt by writing data to port A. STB (Strobe) is an active low input from the peripheral device, signalling a data transfer. The NSC831 latches data on the rising edge of STB if the port bit is an input and the peripheral should latch data on the rising edge of STB if the port bit is an output. The INTR output can be enabled or disabled, thus giving it the ability to control strobed data transfer. It is enabled or disabled, respectively, by setting or clearing bit 2 of the port C output data latch (STB). BF PC2 is always an input during strobed mode of operation, its output data latch is not needed. Therefore, during strobed mode of operation it is internally gated with the interrupt Signal to generate the INTR output. Reset clears this bit to zero, so it must be set to one to enable the INTR pin for strobed operation. (Buffer Full) is a high active output from the NSC831. For input port bits, it indicates that new data has been received from the peripheral. For output port bits, it indicates that new data is available for the peripheral. Note: In either input or output mode the SF may be cleared by rewriting the MOR. 9-108 9.0 NSC831/883B MIL-STD-883 Class B Screening Electrical testing is performed in accordance with RETS831X, which tests or guarantees all of the electrical performance characteristics of the NSC831 data sheet. A copy of the current revision of RETS831X is available upon request. The following table is the MIL-STD-883 flow as of the date of publication. National Semiconductor offers the NSC831 D and NSC831 E with full class B screening per MIL-STD-883 for Military/ Aerospace programs requiring high reliability. In addition, this screening is available for all of the key NSC800 peripheral devices. 100% Screening Flow Test MIL-STD-883 Method/Condition Requirement Internal Visual Stabilization Bake Temperature Cycling Constant Acceleration Fine Leak Gross Leak Burn-In 2010 B 1008C 24 Hrs. @ + 150'C 1010C 10 Cycles -65'C/ + 150'C 2001 E 30,000 Gs, Y1 Axis 1014AorB 1014C 1015160 Hrs. @ + 125'C (using burn-in circuits shown below) + 25'C DC per RETS831X 5% Max + 125'C AC and DC per RETS831X -55'C AC and DC per RETS831X + 25'C AC per RETS831X 5005 100% 100% 100% 100% 100% 100% 100% Final Electrical PDA QA Acceptance Quality Conformance External Visual 11.0 Timing Diagram 5242HR NSC831AD/883B (Dual-In-Llne) Input Clocks 2"s 5.5 Voc 4. 5V CWCKl OV 10 51 CLOCK 1 'A, 51 CWCK2 51 CLOCK 3 -", -" ';:- 100% 100% 100% Sample per Method 5005 100% 2009 10.0 Burn-In Circuit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 100% 40 39 38 37 36 35 34 CLOCK 2 ·1· n ps+I·>-·+1.--8 PSt1=t2 pS r2--n rL ·1· 8"s -~---! 4.5V - - OV-+-~ 3PS+--! ·12 ps ~....,...- 1-3 PS++7 ps---j ,-. ': __ ~~y .~" 33 32 31 30 29 28 27 26 25 24 23 22 21 I· Tl- L !---10pS TLIC15594-14 Note 1: All reSistors ±5%, % watt unless otherwise deSignated, 125°C op· erating life circuit. Note 2: E package burn-in circuit 5244HR is functionally identical to the 0 package. '. Note 3: All resistors 2.7 kfi unless marked otherwise. Note 4: All clocks OV to 4.5V. TLIC15594-13 Note 5: Device to be cooled down under power after 9-109 burnain. ...co ,---------------------------------------------------------------------------------, (I) ~ Z 12.0 Ordering Information NSC831 X X X x 11 ifA1883+ ==AMIL-8TO·883 + R,II••IIIIyScreening . ' ' " " ' "(Note 1) I = Industrial Temperature (_40DC to + 85 DC) M = Military Temperature (-55 DC to = + 125DC) No Designation = Commercial Temperature (ODC to + 70 DC) '------l,- 1-1 = 1 MHz Clock Output 3 = 2.5 MHz Clock Output -4 = 4 MHz Clock Output I 0 = Ceramic Package '---------1 N = Plastic Package E = Ceramic Leadless Chip Carrier (LCC) I TL/C/5594-15 Note 1: Do not specify a temperallJre option: all parts are screened to military temperature. 13.0 Reliability Information (NSC831) Gate Count 1900 Transistor Count 7400 9-110 ,--------------------------------------------------------------------------, z (J) R National Semiconductor o Q) Q) Q) NSC888 NSC800™ Evaluation Board microCMOS .~.' TL/C/8533-1 • • • • • • • II 1k x 8 microCMOS RAM with sockets for up to 4k x 8 RAM [J Socket for additional 2k x 8, 2716 compatible memory component ~ Wire wrap area II Edge connectors for system expansion eI Single-step operation mode II!iI Fully assembled and tested NSC800 8-Bit microCMOS CPU Executes Z80® Instruction Set 20 programmable parallel I/O lines Two 16-Bit programmable counters/timers Powerful 2k x 8 monitor program Five levels of vectored prioritized interrupts RS232 Interface Product Overview The board includes an NSC800 CPU plus RAM, EPROM, 110, Timers and interface components yet draws only 30 mA from the + 5V supply and 3 mA from the - 5V supply. Although designed primarily as an assessment vehicle, the NSC888 can be readily programmed and adapted to a variety of uses. Wire wrap area is provided on-board for the user to build up additional circuitry or interfaces, thus tailoring this high-performance, lowpower microprocessor board to meet individual needs. The NSC888 is a self-contained microprocessor board which enables the user to quickly evaluate the performance and features of the NSC800 product family. This fully assembled, tested board requires only the addition of a ± 5V supply and an RS232 interface cable to the user's terminal to begin NSC800 evaluation. A powerful system monitor is provided on the board which controls serial communications via the RS232 port. The monitor also includes command functions to load, execute and debug NSC800 programs. 9-111 m m .-----------------------------------------------------------------------------~ m Functional Description Z Figure 1 and Figure 2 provide information on the organization of the NSC888 board. Please refer to these figures for the following discussion. • An additional EPROM socket is also on-board which accepts a 2k byte 2716 compatible memory component. Central Processor Input/Output The powerful NSC800 is the central processor for the NSC888. It provides bus control, clock generation and extensive interrupt capability. Featuring a multiplicity of programmable registers and sophisticated addressing modes, the NSC800 executes the Z80 instruction set. • Parallel I/O ~ The NSC888 provides 20 programmable parallel 1/0 lines implemented using the 1/0 ports of the NSC810A RAM-I/O-Timer. The port bits may be individually defined as input or output, and can also be written to or read from in bytes. The 1/0 lines are conveniently brought to a 50 contact edge connector for user interface. Memory -128 bytes of RAM are provided by the NC810A RAM-I/O-Timer and are used by the monitor program for the system stack. - 1024 bytes of RAM are provided by two 1k x 4 NMC6514's. Sockets are provided for six additional NMC6514's, for a total of 4k bytes of RAM. - A 2k byte EPROM system monitor is provided onboard which includes facilities to load, execute and debug a users program. • Serial I/O An RS232 connector and accompanying support circuitry are provided on-board. Two 1/0 lines from the NSC810A RAM-I/O-Timer are used for the serial communications function, which is controlled exclusively by software. The baud rate is determined upon system initialization by the character bit rate from the users terminal. The maximum baud rate is 2400 baud. Block Diagram EXTERIIAL COIITROL BUS Ala·151 R/W MEMORY IIscaoo CPU 4Kx 8 iii 4K SINGLE STEP MODE A 10·71 READ DNLY MEMORY DEMUl· TlPLEXER 82PCI2 ADDRESS DATA COMMUIII· CATION INTERFACE DATA XMIT }.I/O TLICIBS33-2 FIGURE 1 9-112 Functional Description The commands supported by the NSC888 system monitor are as follows: a B - Select a new baud rate a D - Display memory o F - Fill memory between ranges a G - Execute program with break points a H - Hexadecimal math routine a J - Non-destructive memory test o K - Store 16-bit value in memory o M - Move a block of data a P - Put ASCII characters in memory a Q - Query I/O ports aS - Substitute and/or examine memory a T - Type memory contents in ASCII a V - Verify two blocks of data a X - Examine or modify CPU registers o Y - Memory search for string These commands are fully explained in the NSC888 Hardware/Software Users Manual. (Continued) Timers The NSC888 provides two fully programmable binary 16-bit counters/timers utilizing the NSC810A RAM-II O-Timer. These signals are also brought to the parallel I/O connector. Each timer may operate in any of six different modes: • Event Counter o Accumulative Timer o Restartable Timer • One Shot • Square Wave • Pulse Generator Connectors • Parallel I/O The parallel I/O lines and timer lines from the NSC810A RAM-I/O-Timer, plus interrupt lines from the CPU are brought to this 50 contact edge connector. • System Bus All NSC800 CPU lines except XIN are brought to this 86 contact edge connector. In addition, the -5V line is also brought to the system bus connector. Single Step/Power Save The NSC888 provides a unique single-step mode, utilizing the Power Save input of the NSC800 CPU. This input, when activated, reduces CPU power consumption from 50 mW to only 25 mW. It also allows the user to single-step through a program, checking and modifying code. This function is controlled via a switch on the board. • RS232 This connector is provided for system interface to the users terminal. Interrupts The NSC888 utilizes the powerful interrupt processing capability of the NSC800 CPU. Interrupts are routed via a jumper matrix to the five interrupt inputs of the NSC800. Each input, which may be from the NSC810A I/O ports, NSC810A timers or off board via the system bus connector, generates a unique memory address (see Table I). All interrupts with the exception of NMI can be masked via software. Interrupt lines are also brought to the parallel I/O connector. Specifications Microprocessor CPUData WordInstruction WordCycle Time- TABLE I. Interrupt Input Memory Address NMI RSTA RSTB RSTC INTR 0066H 003CH 0034H 002CH 0038H* Type Priority Non-maskable Maskable Maskable Maskable Maskable Highest System ClockRegisters- Number of InstructionsAddress Capability- Lowest 'mode 1 NSC888 Firmware The NSC888 system monitor is provided by a preprogrammed EPROM. This comprehensive monitor includes facilities to load, execute and debug programs. The monitor allows the user to examine and modify any RAM memory location or CPU register. It permits the insertion of break points to facilitate debugging. Programs can be executed starting at any location. 9-113 NSC800 8 bits 8, 16, 24, 32 bits 2.00 JLs (minimum instruction time) 2.00 MHz 14 general purpose (8-bit) 2 index registers (16-bit) 1 stack pointer (16-bit) 1 program counter (16-bit) 158 64k bytes Memory RAM- ROM/EPROMAccess Time- 1152 bytes on-board plus sockets for an additional 3k bytes Sockets for 4k bytes on-board 625 ns for opcode fetch 875 ns for memory read z en oOCI OCI OCI ~ ~ ~ o U) z ,---------------------------------------------------------------------------------, Specifications Order Information (Continued) Connectors System Bus Parallel I/O Serial I/O Power NSC888 86-pin double-sided card cage edge connector on 0.156 inch centers 50-pin double-sided edge connector on 0.1 inch centers Recommended mating connector: 3M 3415-0001 AMP 2-86792-3 Standard RS232 connector Includes CPU, 1152 bytes of RAM, sockets for additional 3k bytes of RAM, 2k byte monitor with additional socket for 2k byte ROM/EPROM, 20 I/O lines, RS232 interface, wire wrap area. Documentation The NSC888 Hardware/ Software Users Manual and NSC800 Microprocessor Family Handbook are shipped with the NSC888 Evaluation Board + 5V 30 mA (27C16 EPROM monitor) or 90 mA (2716 EPROM monitor) -5V3 mA Physical Height Width 6.75 (17.15 cm) 7.85 (19.94 cm) TL/C/B533-3 FIGURE 2. NSC888 Evaluation Board 9-114 (') o 3 Comparison Study NSC800 vs. 808S/80C8S Z80® /Z80 CMOS "C ...(ii' QI o :::I ~ TABLE I. Machine Cycle Status - N5C800 and 8085 Introduction The NSC800 is an 8-bit parallel processor with a Z80 compatible instruction set manufactured using National's microCMOS process. This process combines the speed of silicon gate NMOS with the low power inherent to CMOS. The NSC800 has a 16-bit address bus which consists of the upper eight address bits (A8-A15) and the lower eight address bits (ADO-AD?). Address bits AO-A? are time multiplexed on the 8-bit bidirectional address/data bus (ADOAD?). There are several advantages to using a multiplexed address/data bus. Multiplexing frees pins on the CPU and peripheral packages for other purposes, such as status outputs, DMA control lines, and multiple interrupts. This can reduce system component count. Fewer bus signal lines are required for device interconnections in most applications (16 lines for multiplexed bus systems vs. 24 lines for nonmultiplexed systems). This reduces PC board complexity. Peripherals of the NSC800 Family include: 50 S1 101M Status 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 Memory Write Memory Read I/O Write I/O Read Opcode Fetch Bus Idle' Halt I: C. '< Z en (') Q:) o o ~ Q:) oQ:) UI "Q:) o (') 'ALE not suppressed during Bus Idle Direct Memory Access (DMA) control Signals BREQ and BACK of the NSC800 perform the same functions as HOLD and HLDA on the 80B5. The NSCBOO allows simple wire ORing by using active low states for the DMA control signals. An active low on the BREQ (Bus Request) line, tested during the last T state of the current M cycle, initiates a DMA condition. The N8C800 will then respond with an active low BACK (Bus Acknowledge) Signal causing the address, data and control buses (TRI-STATE® circuits) to go to the high impedance state, and notifies the interrupting device that the system bus is available for use. There is a difference in the timing relationship between these functions for the two processors. The BOB5 responds with HLDA, onehalf T state after it recognizes HOLD. The N8C800 responds with BACK, one T state after it recognizes BREQ. NSC810A RAM I/O Timer NSC831 I/O NSC858 UART In addition to the above parts, a complete family of low power speed compatible logic and interface parts is also available. NSC800 VS. 8085 During Input/Output cycles for peripherals, the N8C800 automatically inserts one wait state. This reduces the external hardware required for slow peripherals. The BOB5 does not insert its own wait state during these I/O cycles. When they are needed, the 60B5 user must design his system to contain the additional hardware required to do the wait state insertion. When more than one wait state is required, additional wait states can be added to the 1/0 cycles in a similar way on both the N8CBOO and the 8085. On the N8CBOO, this is accomplished by bringing the WAIT control signal active low during T2 of an I/O or memory cycle. The 80B5 is controlled in the same way through the use of the READY line. The N8CBOO instruction set is Z80 compatible and more powerful than the 80B5's. The N8CBOO does not support the RIM and 81M instructions of the 8085 (RIM and 81M can be emulated with I/O instructions), but has an improved instruction set for enhanced system performance. The NSCBOO has two functions, RFSH and PS, instead of the two serial I/O lines SOD and SID. RFSH (Refresh) is a status signal which indicates that an eight bit refresh address is present on the address/data bus (ADO-AD?). The refresh address occurs during T3 of each M1 (opcode fetch) cycle. The internal refresh counter is incremented after In terms of bus structure, the N8CBOO is similar to the 8085. Both processors utilize a multiplexed bus and timing relationships are approximately the same. The 80B5 does not guarantee that output data on ADO-AD? are valid on both the leading and trailing edges of WR. For the N8C800, data are valid on both the leading and trailing edges of WR. Both the NSC800 and the BOB5 use ALE, SO, 81, and 10/M to indicate status. The lower eight address bits are guaranteed to be valid on the data bus at the trailing edge (high to low transition) of ALE (Address Latch Enable). This signal is used by the external system components to separate the address and data buses. When the only components utilized in the system are members of the NSCBOO family (which contain on-chip demultiplexers), ALE needs only to be connected to the enable inputs. If non-N8C800 family components are used, ALE can be used to enable an B-bit latch to perform the function of bus separation. Decoding status bits 80 and 81, in conjunction with 10/M, notifies the external system of the type of the ensuing M cycle. TABLE I shows a truth table of the encoded information. During a halt status the N8CBOO will continue to refresh dynamic RAM. Z80® is a registered trademark of Zllog Corporation. 9-115 Q:) UI N Q:) o "N Q:) o (') == oen • o o :E o I:) ~ I:) ~ \I) co g r--------------------------------------------------------------------------, each instruction cycle. This counter output can be employed by the user's dynamic RAM refresh circuits. The PS (Power Save) control input, when active, causes the CPU to stop all intemal clocks at the end of the current instruction, which reduces power consumption. The on-chip oscillator and ClK remain active for any required extemal timing. The NSCaOO leaves all buses unchanged during this time, which has the effect of reducing power consumption on other CO ...... \I) g! I:) I:) co oo z >'C :s U; c o U) .;:: ca a.. E 8 TABLE II indicates the major differences between the NSCaOO and the aoa5 presented in tabular form for quick reference. TABLE II. NSC800 vs. 8085/80C85 Comparison CO I:) CO CMOS parts in the system since the buses are not changing states. All intemal registers and status conditions are maintained, and when PS subsequently goes high, the opcode fetch cycle begins in a normal fashion. Ite'm Power Consumption Bus Drive Capacity Dynamic RAM Refresh Counter Automatic WAIT State on 110 Number of instruction types Number of Programmer Accessible Registers Block 110 and Search NSC800 8085 80C85 50mW@5V 1 std. TIL (100 pF) Yes, a-bit Yes 15B a50mW@5V 1 std. TIL (100 pF) No No ao 50mW@5V 1 std. TIL (150 pF) No No ao 22 Yes 10 No 10 No Nscaoo VS. zao/zao CMOS The NSCaOO contains the same complement of intemal registers as the zao and maintains instruction set and opcode compatibility. S. The NSCBOO provides three interrupts that are not available on the zao: RSTA, RSTB, RSTC. This gives the NSCBOO five levels of vectored, prioritized interrupts with no external logic. The general purpose interrupt (INTR) and Non-maskable Interrupt (iiIMi) are identical to the za~. INTR has the same three modes of operation in both processors: Modes 0, 1, and 2. Upon initialization, the NSCaOO is in mode 0 to maintain BOBO code compatibility. NMI, when active, causes a restart to location X'66 as is the case with the zao. Being a non-maskable interrupt, NMI cannot be disabled. The additional interrupts RSTA, RSTB, and RSTC cause restarts to locations X'SC, X'S4, and X'2C respectively. The priority levels of the five interrupts are: NMI (highest), RSTA, RSTB, RSTC, and INTR (lowest). For the NSCaOO, Interrupt acknowledge (lNTA) is provided on a dedicated output pin and need not be decoded extemally.asis the case with the ZBO. With the status outputs (SO, Sl, 10/M), early read/write information is obtainable. This is impossible to derive from the zao. Machine cycle timing for the standard speed version of the NSCaOO compares directly with the zao. Although the software execution speeds are comparable, the NSCBOO offers architectural advantages. The bus structures of the NSCaOO and the ZBO are quite different. The NSCBOO uses a multiplexed address/data bus. The zao has separate address and data buses. As stated earlier, the separate bus structure requires additional signal lines for interconnection and gives up some package pins which could be used for other purposes. The main differences between the NSCBOO and the zao, in addition to the bus structures, are the refresh counter, onchip clock generation, and the interrupt capability. 1. The NSCaOO contains an a-bit refresh counter as opposed to a 7-bit refresh counter in the zao. (This enables refresh of a 64K dynamic RAM system memory). The refresh timing of the NSCaOO is functionally identical to that of the zao. Refer to TABLE III for comparison of the major differences between the NSCBOO and the zao. 2. The on-chip clock generation reduces the system component count. In place of an extemal clock generator chip, the NSCaOO needs only a crystal or RC circuit to produce the system clock. TABLE III. NSC800 vs. Z80/Z80 CMOS Comparison Item NSC800 Z80 Z80CMOS Power Consumption Instruction Execution (Minimum) On-Chip Clock Generator Number of On-Chip Vectored Interrupts Early Read/Write Status Dynamic RAM Refresh Counter 50mW@5V 750mW@5V 75mW@5V 1 /-Ls 1 /-Ls l/-Ls Yes No No 5 2 2 Yes Yes, a-bit No Yes,7-bit No Yes,7-bit 9-116 SUMMARY NSC800 Family Devices (microCMOS) National's NSCBOO has a ZBO compatible instruction set, which is more powerful than the BOB5. NSCBOO external hardware requirements are less because of on-chip automatic wait state insertion, clock generation and five levels of vectored prioritized interrupts. MMB2PCOB B-Bit Bidirectional Transceiver MMB2PC121nputiOutput Port Not.: The above devices are pin for pin and function compatible with the standard TIL, CMOS or NMOS versions currently available. The BOB5 and the NSCaOO have similar bus structures, and timing. The key advantages of the NSCBOO over the BOB5 are the larger instruction set, more registers accessible to programmers, low power consumption, and a dynamic RAM refresh counter. The main advantages of the NSCBOO compared to the zao are the multiplexed address/data bus, an B·bit refresh counter for dynamic RAMs, on-chip clock generation, and five interrupts. The speed of the NSCBOO and ZBO is the same but, the NSCBOO has very low power consumption. oo 3 .. "CI III U'j' o :::J ~ C C. '< Z fJ) oco o o pi co o co S:!! co o oco U1 N co o ...... N co o o :s: ofJ) • 9-117 g N ." 8co Software Comparison NSC800 vs. 8085, Z80® ~ o o co ~ Z c oII) -;:: as CL. E o o ~ ~o en Introduction register and any 110 location. There are also block 1/0 instructions which allow moving data blocks of up to 256 bytes directly from memory to any peripheral location or from any peripheral location to a block of memory. Bit manipulation instructions can set, test or reset any bit in the accumulator, any general purpose register or any memory location. The NSCBOO is an B-bit parallel microprocessor fabricated using National's microCMOS process. This process allows fabrication of a microprocessor family that has the performance of silicon gate NMOS along with the low power inherentto CMOS. The NSCBOO instruction set is a superset of the BOBO's instruction set. It comprises over 900 operation codes falling into 15B instruction types. The instruction categories are: • Load and Exchange • Arithmetic and Logie • Rotate and Shift • Jump and Call • Input/Output • Bit manipulation (set, test, reset) • Block Transfer and Search • CPU control The load instructions allow the movement of data into and out of the CPU, between internal registers, plus the capability to load immediate data into internal registers. The exchange instructions allow swapping of data between two registers. The block transfer instructions allow a single instruction to move any size block of memory to any other location in memory. Through the use of the block search instructions, any size block of memory can be searched for a particular byte of data. Finally, the CPU control group allows user control over the various modes of CPU operation, such as enabling and disabling interrupts or selling modes of interrupt response. The following sections will compare the instruction set of the NSCBOO with those of the 8085 and the Z80. NSC800 vs. 8085 The 8085 instruction set consists of 246 op codes falling into 80 instruction types. With the exception of RIM and SIM, the NSC800 is instruction and op code compatible with the 80B5. The RIM and SIM instructions are not supported because the NSC800 does not have the SID and SOD serial 1/0 lines. The interrupt mask on the NSC800 is accessible by writing the mask word to 1/0 location X'BB. The bit positions for the interrupt enables are shown below: The arithmetic and logic instructions operate on the data in the accumulator (primary working register) and in the other registers. Status flags are set or reset depending on the result of the particular operation executed. This group includes B·bit and 16·bit operations. The rotate and shift instructions allow any register or memory location to be rotated or shifted, left or right, with or without carry. These can be either an arithmetic or logic type. The jump and call group includes several different types: one byte calls, two byte relative jumps, conditional branching, and three byte calls and jumps, which can reach any location in memory. Calls push the current contents of the Program Counter onto the stack before branching to the new program address to facilitate subroutine execution. Input/Output instructions allow communications between the NSCBOO and external peripheral devices. There are 255 (location X'BB is used for an interrupt mask) unique peripheralllO locations available to the NSCBOO. 1/0 instructions can move data between any memory location or internal Bit 7 6 5 4 3 2 o 9-11B Location X'BB Bit Assignments Interrupt Enable for N/A N/A N/A N/A RSTA RSTB RSTC INTR NI A = not used: a don't care bit. r---------------------------------------------------------------------------------, As an example. to enable interrupts on the RSTA input, a logic '1' is written into bit 3 of 110 location X'SS. If the master interrupt enable has been set by executing the Enable Interrupt (El) instruction, interrupts will now be accepted on RSTA only. The differences between the flag registers on the NSCBOO and the 80B5 are identified below: Other than the method of enabling and disabling individual interrupts and the RIM and SIM instructions themselves, the NSC800 instruction set is a superset of the 8085's instruction set. 2. In the NSC800, the PIV flag will not match the B085's P flag after an B-bit arithmetic operation, since it acts as an overflow bit for the NSC800, but acts as a parity bit for these operations in the BOBS. The following benchmark demonstrates the code reduction and throughtput improvement obtained by using one of the special NSC800 instructions over the same function implemented with the limited 8085 instruction set. The function is to move a 512-byte block of data from one section of memory to another. 8085 3. Sit position D2 (changed for the NSC800) is a dual purpose flag; it indicates the parity of the result in the accumulator when logical operations are performed and also represents overflow when Signed two's complement arithmetic operations are performed. An overflow occurs when the result of a two's complement operation within the accumulator is out of range. Bytes 3 3 3 1 LOOP: 1 3 Mnemonics LXI H,SOURCE LXI D,DEST LXI B,COUNT MOV A,M STAX D INX H INX D DCX B MOV A,C ORA B JNZ LOOP Total: 19 1. Sit position D1 (additional on the NSCBOO) contains an add/subtract flag that is used internally for proper operation of SCD instructions. Cycles 4. For general Compare operations, the NSC800 uses the PIV flag as an overflow bit, while the 8085 uses the P flag for parity. 5. The H flag (bit position D4) on the NSCBOO is functionally the same as the auxiliary carry on the 8085. 10 10 10 7 7 6. For Double Precision Addition, the NSCBOO leaves the H flag undefined, while the BOBS does not affect the AC flag for this operation (DAD). 6 6 6 4 4 7. For Rotate operations, the NSCBOO resets the H flag, while the 80B5 leaves the AC flag unaffected for these operations. B. When Complementing the Accumulator, the NSCBOO sets the H flag (H = 1), while the 80B51eaves the AC flag unaffected. 10 Total: 80 9. When Complementing Carry, the NSC800 leaves the H flag undefined, while the 80B5 leaves the AC flag unaffected. NSC800 Bytes 3 3 3 2 Mnemonics LD HL,SOURCE DE,DEST LD BC,COUNT LD LDIR Total: 11 Cycles 10. When Setting the Carry, the NSCBOO clears the H flag (H = 0), while the 80B5 leaves the AC flag unaffected. 10 10 10 21 Nscaoo Vs. zao The instruction set and op codes of the NSCBOO are identical to those of the ZBO. Software written for the ZBO will run on the NSCBOO without change, unless 110 location X'SS is used. Another location should be assigned since location X'SS is an on-chip write-only register used for the interrupt mask. Since the NSCBOO executes code at the same cycle time as the Z80, any software timing loops will also remain the same, and no change is necessary. The NSC800 expanded interrupt capability is transparent to the user unless specifically evoked by the user software. Total: 51 The use of the LDIR instruction of the NSC800 results in a 47.5% increase in throughput and a 42% decrease in the number of bytes required to implement the function when compared with the 8085 implementation. The time required to make the move is approximately 2.69 ms for the NSCBOO and approximately 5.12 ms for the 80B5. Note that even though the BOBS runs at a faster cycle time (200 ns vs. 250 ns), the improved instruction set of the NSCBOO produces an increase in system performance. The NSCBOO has B-bit refresh rather than the 7-bit refresh scheme of the Z80. Therefore, the state of the 8th bit will be indeterminate since it is part of the R Register and so included in refresh operations. The NSC800 includes all 8085 flags plus some additional flags. The flag formats for the NSCBOO and 80B5 are: NSC800 Flags (Z80 Flags) I: I: I ~ I : I ~ I P~V I N I ~I 8085 Flags o CY 9-119 The status flags on the NSCBOO are identical to those on the ZBO. There is no difference between the positions of the individual bits in the flag register, nor in the manner in which the flags are set or reset due to an arithmetic or logical operation. Testing of the flags is also the same. (n o ~... CD o o 3 '1:J I» ...iii' o :::l Z (n oco o o ~ co co o U1 N co o Section 10 Physical Dimensionsl Appendices Section 10 Contents Glossary of Terms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Physical Dimensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bookshelf Distributors 10·2 10-3 10-10 Glossary In our efforts to be concise and precise, we often invent new words or acronyms to use as shorthand representations of "things" that require much longer names if the jargon is not used. Being humans, we then become very impressed with our ability to exclude those not in "the know" and another "in" group is formed. This glossary has been developed to help bridge this language gap. We know it will help. We hope you will use it. Abort-The first step of recovery when an instruction or its operand(s) is not available in main memory. An Abort is initiated by the Memory Management Unit (MMU) and handled by the CPU. Absolute Address-An address that is permanently aSSigned to a fixed location in main memory. In assembly code, a pattern of characters that identifies a fixed storage location. Access Time-The time interval between when a request for information is made and the instant this information is available. Access Class-The five Series 32000 access classes are memory read, memory write, memory read-modify-write, memory address, and register address. The access class informs the Series 32000 CPU how to interpret a reference to a general operand. Each instruction assigns an access class to each of it two operands, which in turn fully defines the action of any addressing mode in referencing that operand. Accumulator-A register which stores the result of an ALU operation. Ada-A high level language deSigned for the Department of Defense. It gives preference to full English words. It is meant to be the standard military language. Address-An expression, usually numerical, which designates a specific location in a storage or memory device. Address-Data Reglster-A register which may contain either address or data, sometimes referred to as a general-purpose register. Address Strobe-Control signal used to tell external devices when the address is valid on the external address bus. Address Translation-The process by which a logical address emanating from the CPU is transformed into a physical address to main memory. This is performed by the Memory Management Unit (MMU) in Series 32000 systems. Logical address to Physical address mapping is established by the operating system when it brings pages into main memory. Addressing Mode-The manner in which an operand is accessed. Series 32000 CPUs have nine addressing modes: Register, Register Relative, Memory Relative, Immediate, Absolute, External, Top-of Stack, Memory Space, and Scaled Indexing. Algorithm-A set of procedures to which a given result is obtained. Alignment-The issue of whether an instruction must begin on a byte, double byte, or quad byte address boundary. ALU-Arithmetic Logic Unit. A computational subsystem which performs the arithmetic and logical operations of a digital system. Array-A structured data type conSisting of a number of elements, all of the same data type, such that each data element can be individually identified by an integer index. Arrays represent a basic storage data type used in all high-level languages. ASCII-(American National Standard Code for Information Interchange, 1968). This standard code uses a character set generally coded as 7-bit characters (8-bits when using parity check). Originally defined to allow human readable information to be passed to a terminal, it is used for information interchange among data processing systems, communication systems, and associated equipment. The ASCII set consists of alphabetic, numeric, and control characters. Synonymous with USASCII. Assemble-To prepare a machine language program (also called machine code or object code) from a symbolic language program by substituting absolute operation codes for symbolic operation codes and absolute or relocatable addresses for symbolic addresses. Machine code is a series of ones and zeros which a computer "understands". Assembler-This program changes the programmer's source program (written in English assembly language and understandable to the programmer) to the 1's and O's that the machine "understands". In particular, the Assembler converts assembly language to machine code. This machine code output is called the OBJECT file. Assembly Language-A step up in the language chain. This is a set of instructions which is made up of alpha numeric characters which, with study, are understandable to the programmer. Different type of machines have different assembly languages, so the assembly language programmer must learn a different set of instructions each time s/he changes machine. Associative Cache-A dual storage area where each data entry has an associated "tag" entry. The tags are simultaneously compared to the input value (a logical address) in the case of the MMU, and if a matching tag is found, the associated data entry is output. An associative cache is present within the MMU in Series 32000 systems to provide logical-to-physical address translation. Asynchronous Device-A device in which the speed of operation is not related to any frequency in the system to which it is connected. BASIC-This acronym stands for Beginner's All-purpose Symbolic Instruction Code. BASIC is one of the most "English like" of the high level languages and is usually the first programming language learned. Baud Rate-Data transfer rate. For most serial transmission protocols, this is synonymous with bits-per-second (bps). BCD-Binary Coded Decimal. A binary numbering system for coding decimal numbers. A 4-bit grouping provides a binary value range from 0000 to 1001, and codes the decimal digits "0" through "9". To count to 9 requires a single 4-bit grouping; to count to 99 takes two groupings of 4 bits; to count to 999 takes three groupings of 4 bits, etc. Benchmark-In terms of computers, this refers to a software program designed to perform some task which will demonstrate the relative processing speed of one computer versus another. 10-3 Glossary (Continued) Bit-An abbreviation of "binary digit". It is a unit of information represented by either a one or a zero. Bit Field-A group of bits addressable as a single entity. A bit field is fully specified by the location of its least significant bit and its length in bits. In Series 32000 systems, bit fields may be from one to 32 bits in length. Branch-A nonsequential flow in a software instruction stream. Breakpoint-A place in a routine specified by an instruction, instruction digit, or other condition, where the software program flow will be interrupted by external intervention or by a monitor routine. Buffer-An isolating circuit used to avoid reaction of a driven circuit on the corresponding driver circuit. Buffers also supply increased current drive capacity. Bus-A group of conductors used for transmitting signals or power. Bus Cycle-The time necessary to complete one transfer of information requiring the use of external address, data and control buses. Byte-Eight bits. Byte Enable-BEO to BE3. CPU control signals which activate memory banks, each bank providing one byte of data per address. C-A highly structured high level language developed by Bell Laboratories to optimize the size and efficiency of the program. This language has gained much popularity because it allows the prograrnmer to get close to the hardware (low level) as well as being a high level language. Before C, the programmer who had to address the hardware had to use assembly language or machine code. Cache-See Associative Cache. Cache Hit-In the MMU, logical-to-physical address translation takes place via the associative cache. For this to happen, the addressed page must be resident in physical memory such that a logical address tag is present in the MMU's translation cache. Cache Miss-When a logical address is presented to the MMU, and no physical address translation entry is found in the MMU's associative cache. Cascaded-Stringing together of units to expand the operation of the unit. Interrupt Control Units present in a Series 32000 system which are in addition the Master ICU are referred to as "cascaded" ICUs; i.e., interrupts cascade from a second-level ICU through the master ICU to the CPU. Clock-A device that generates a periodic signal used for synchronization. Clock Cycle-After making a low-to-high transition, the clock will have completed one cycle when it is about to make another low-to-high transition. This time is equal to Iff where f = the clock frequency. COBOL-This acronym stands for "Common Business Oriented Language". It is a language especially good for bookkeeping and accounting. COFF-COMMON OBJECT FILE FORMAT is a standard way of constructing files developed by AT&T for the express purpose of making all files similar. This will help reduce the situation where large files developed by one organization won't run on another organization's equipment simply because the software interfaces are different. It provides a great potential for savings in both time and money. Compile-To take a program written in a High-Level Language such as C, Pascal, or FORTRAN and convert it into an objectcode format which can be loaded into a computer's main memory. During compilation, symbolic HLL statements, called source code, are converted into one or more machine instructions which the CPU "understands". A compiler also calls the assemble function. Compiler-The program that converts from Source to Machine Code. The conversion is from a particular high level language to machine code. For example, the C compiler will convert a C source program written by a programmer to machine code. This machine code output is in the same format as that of the assembler and is also called an OBJECT file. CPU-Central Processing Unit. The portion of a computer system that contains the arithmetic logic unit, register file, and other control oriented subsystems. It performs arithmetic operations, controls instruction processing, and provides timing signals and other housekeeping operations. Cross Support-The alternative to using a "Native" development like SYS32 to develop your programs is to use Cross Support software. "Native" means that the CPU in the development system is the same as the CPU in the system being developed. Cross support software is all of the necessary programs for development that operate on one CPU, but generate code for another CPU. Use of the VAX to generate Series 32000 code is a good example of cross support. Demand-Paged Virtual Memory-A virtual memory method in which memory is divided into blocks of equal size which are referred to as pages. These pages are then moved back and forth between main memory and secondary storage as required by the CPU. Demand paging reduces the problem of memory fragmentation which results in unused memory space. Dispatch Table-In Series 32000 systems, this is an area of memory which contains interrupt descriptors for all possible hardware interrupts and software traps. The interrupt descriptor directs the CPU to the module descriptor for the procedure which is designed to handle that particular interrupt. Dlsplacement-A numerical offset from a known point of reference. Displacements are used in programming to facilitate position independent code, such that a given program can be loaded anywhere in memory. In Series 32000 processors, a displacement is contained in the instruction itself. 10-4 .--------------------------------------------------------------------.Q Glossary (Continued) 0' DMA-Direct Memory Access. A method that uses a small processor (DMA Controller) whose sole task is that of controlling input-output or data movement. With DMA, data is moved into or out of the system without CPU intervention once the DMA controller has been initialized by the CPU and activated. .:c! Double-Precislon-With reference to 32000 floating-point arithmetic, a double-precision number has a 52-bit fraction field, 11bit exponent field and a sign bit (64-bits total). Double Word-Two words, i.e., 32 bits. Editor-A program which allows a person to write and modify text. This program can be as complicated as the situation requires, from the very simple line editor to the most complicated word processor. Letters, numbers and unprintable control characters are stored in memory so that they can be recalled for modification or printing. The programmer uses this device to enter the program into the computer. At this stage, the program is recognizable to both the programmer and the computer as lines of English text. This English version of the program is known as the SOURCE. Emulate-To imitate one system with another, such that the imitating system accepts the same data, executes the same programs, and achieves the same results as the imitated system. Exception-An occurrence which must be resolved through CPU intervention. An exception results in the suspension of normal program flow. In Series 32000 systems, exceptions occur as a result of a hardware reset, interrupt or software traps. Execution of floating-point instructions may also result in occurrences which must be resolved through CPU intervention. Exponent-In scientific notation, a numeral that indicates the power to which the base is raised. EXEC2-NSC's Real Time Executive for Series 32000. FIFO-First-in first-out. A FIFO device is one from which data can be read out only in the same order as it was entered, but not necessarily at the same rate. Floating-Point-A method by which computers deal with numbers having a fractional component. In general, it pertains to a system in which the location of the decimal/binary point does not remain fixed with respect to one end of numerical expressions, but is regularly recalculated. The location of the point is usually given by expressing a power of the base. FORTRAN-A high level language written for the scientific community. It makes heavy use of algebraic expressions and arithmetic statements. FP-Frame Pointer. CPU register which pOints to a dynamically allocated data area created at the beginning of a procedure by the ENTER instruction. FPU-Floating-Point Unit is a slave processor in Series 32000 systems which implements in hardware all calculations needed to support floating-point arithmetic, which otherwise would have to be implemented in software. The NS32081 FPU provides highspeed floating point instructions for single (32-bit) and double (64-bit) precision. Supports IEEE standard for binary floating point arithmetic. Compatible with NS32032, NS32C032, NS32016, NS32C016 and NS32008 CPUs. Fragmented-The term used to describe the presence of small, unused blocks of memory. The problem is especially common in segmented memory systems, and results in inefficient use of memory storage. Frame-A block of memory on the stack that provides local storage for parameters in the current procedure. GENIX-The NSC version of the UNIX operating system, ported to work with the Series 32000. It also has all of the necessary utilities added so that program development can be accomplished. Hardware-Physical equipment, e.g., mechanical, magnetic, electrical, or electronic devices, as opposed to the software programs or method in which the hardware is used. High Level Languages-These are languages which are not dependent on the type of computer on which they run. A program written in a high level language will generally run on any computer for which there is a compiler for that language. This feature makes high level languages "Portable", i.e., the same program will run on many different types of computers. A HLL requires a compiler or interpreter that translates each HLL statement into a series of machine language instructions for a particular machine. ICU-Interrupt Control Unit. A memory-mapped microprocessor support chip in Series 32000 systems which handles external interrupts as well as additional software traps. The ICU provides a vector to the CPU to identify the servicing software procedure. Indexing-In computers, a method of address modification that is by means of index registers. Index Register-A register whose contents may be added to or subtracted from the operand address. Indirect Addressing-Programming method where the initial address is the storage location of a word which is the actual address. This indirect address is the location of the data to be operated upon. Instruction-A statement that specifies an operation and the values or locations of its operands, i.e., it tells the CPU what to do and to what. Instruction Cycle-The period of time during which a programmed system executes a particular instruction. Instruction Fetch-The action of accessing the next instruction from memory, often overlapped by its partial execution. Instruction Queue-With Series 32000 CPUs, this is a small area of RAM organized as a FIFO buffer which stores prefetched instructions until the CPU is ready to execute them. Interpreter-A program which translates HLL statements into machine instructions at run time, i.e., while the program is executing, and is co-resident with the user program. 10-5 m Glossary (Continued) Interrupt-To signal the CPU to stop a software program in such a way that it can be resumed and branch to another section of code. Interrupts can be caused by events external or internal to the CPU, and by either software or hardware. INTBASE-Interrupt Base Register. In the Series 32000, a 32-bit CPU register which holds the address of the dispatch table containing addresses for interrupts and traps. ISE-In-System Emulator. A computer system which imitates the operation of another in terms of software execution. In microprocessor system development, the ISE takes the place of the microprocessor by means of a connector at the end of an umbilical cable. Not only does the ISE perform all the functions of the microprocessor, but it also allows the engineer to debug his system by setting breakpoints on various conditions, permits tracing of program flow, and provides substitution memory which may be used in place of actual target system memory. ISV-Independent Software Vendor. A vendor, independent from National Semiconductor, who ports or develops software for Series 32000 components. They in turn sell this software to our customers who are designing Series 32000 based products. Kernel-This is the name given to the core of the operating system. Other programs are added to the kernel to provide the features of the operating system. The kernel provides control and synchronization. Language-A set of characters and symbols and the rules for using them. In our context, it is the "English like" format of the instructions which are understood by both the programmer and the computer. Library-High level languages as well as assembly language contain many routines which are used over and over again. To prevent the programmer from having to write the routine every time it is needed, these routines are stored in libraries to be referenced each time they are needed. These libraries are also OBJECT files. Linear Address Space-An address space where addresses start at location zero and proceed in a linear fashion (i.e., with no holes or breaks) to the upper limit imposed by the total number of bits in a logical address. Link Base-In the Series 32000, Module Descriptor entry which pOints to a table in memory containing entries which reference variables or entry points in Modules external to the one presently executing. Linker-Large programs are generally broken down to component parts and farmed out to several programmers. Each one of these parts is called a MODULE. Each programmer will develop the module using either high level or assembly language, then "assemble" assembly language modules or "compile" high level language modules. A programmer tells the linker how to connect these modules to make the program run. The linker makes these connections, resolves all questions about data needed by one module, but contained in another, finds all library routines, and cleans up any other loose ends. The output from the linker is called BINARY file and is the file that will run on the computer. Logical Address Space-The range of addresses which a programmer can assign in a software program. This range is determined by the length of the computer's address registers. LSB-Least Significant Bit. The bit in a string of bits representing the lowest value. Machine Code-The code that a computer recognizes. Specifies internal register files and operations that directly control the computer's internal hardware. Machine Language-The ones and zeros which are "understood" by the machine. This is often called "Binary Code." The programmer must be able to understand the bit patterns to be able to decipher the language. Each machine has a unique machine language. Main Memory-The program and data storage area in a computer system which is physically addressed by the microprocessor or MMU address lines. Mantissa-In a floating-point number, this is the fractional component. Mapping-The process whereby the operating system assigns physical addresses in main memory to the logical addresses assigned by the software. Memory-Mapped-Referring to peripheral hardware devices which are addressed as if they were part of the computer's memory space. They are accessed in the same manner as main memory, i.e., through memory read/write operations. Microcode-A sequence of primitive instructions that control the internal hardware of a computer. Their execution is initiated by the decoding of-a software instruction. Microcode is maintained in special storage and often used in place of hardwired logic. Microcomputer-A computer system whose Central Processing Unit is a Microprocessor. Generally refers to a board-level product. Minicomputer-A "box-level" computer with system capabilities generally between that of a microcomputer and a mainframe. MMU-Memory Management Unit. This is a slave processor in Series 32000 which aids in the implementation of demand-paged virtual memory. It provides logical to physical address translation and initiates an instruction abort to the CPU when a desired memory location is not in main memory. MOD-Mod Register. In the Series 32000, a 16-bit CPU register which holds the address of the Module Descriptor of the currently executing software module. Module-An independent subprogram that performs a specific function and is usually part of a task, i.e., part of a larger program. Module Descriptor-In the Series 32000, a set of four 32-bit entries found in main memory. Three are currently defined and point to the static data area, link table, and first instruction of the module it describes. The fourth is reserved. 10-6 Glossary (Continued) Modularlty-A software concept which provides a means of overcoming natural human limitations for dealing with programming complexity by specifying the subdivision of large and complex programming tasks into smaller and simpler subprograms, or modules, each of which performs some well-defined portion of the complete processing task. MSB-Most Significant Bit. The bit in a string of bits representing the highest value. NET-Short for NETWORK and describes a number of computers connected to each other via phone or high speed links. A net is convenient for exchanging common information in the form of "mail" as well as for data exchange. NMI-Nonmaskable Interrupt. A hardware interrupt which cannot be disabled by software. It is generally the highest priority interrupt. Object Code-Output from a compiler or assembler which is itself executable machine code (or is suitable for processing to produce executable machine code). Operand-In a computer, a datum which is processed by the CPU. It is referenced by the address part of an instruction. Operating System-A collection of integrated service routines used by the computer to control the sequence of programs. The operating system consists of software which controls the execution of computer programs and which may provide storage assignment, input/output control, scheduling, data management, accounting, debugging, editing, and related services. Their sophistication varies from small monitor systems, like those used on boards, to the large, complex systems used on main frames. Operating System Mode-In this mode, the CPU can execute all instructions in the instruction set, access all bits in the Processor Status Register, and access any memory location available to the processor. Operator-In the description of an instruction, it is the action to be performed on operands. Page Fault-A hardware generated trap used to tell the operating system to bring the missing page in from secondary storage. Page Swap-The exchange of a page of software in secondary storage with another page located in main memory. The operating system supervises this operation, which is executed by the CPU and involves external devices such as disk and DMA controllers. Page Table-A 1K-byte area in main memory containing 256 entries which describe the location and attributes of all pointer tables, i.e., a list of pointer table addresses. Perlpheral-A device which is part of the computer system and operates under the supervision of the CPU. Peripheral devices are oiten physically separated from the CPU. Pascal-A high level language designed originally to teach structured programming. It has become popular in the software community and has been expanded to be a versatile language in industry. Physical Address-The address presented to main memory, either by the CPU or MMU. Pointer Table-A 512-byte page located either in main memory or secondary storage containing 128 entries. Each entry describes an individual page of the software program. Each page of the software program may reside in main memory or in secondary storage. Pop-To read a datum from the top of a stack. PORT-To port an operating system is to cause that particular operating system to operate with a defined hardware package. GENIX is the NSC version of UNIX which has been ported to SYS32. The operating system for other Series 32000 based systems will differ in some degree from SYS32 and the NSC GENIX binary will not operate. It is now necessary to modify GENIX to fit the situation caused by the new hardware. The GENIX SOURCE is used because this is the program that is most readily understood by the programmer. The source is changed, compiled, and linked to get a new binary for that particular machine. Primitive Data Type-A data type which can be directly manipulated by the hardware. With Series 32000, these are integers, floating-point numbers, Booleans, BCD digits, and bit fields. Procedure-A subprogram which performs a particular function required by a module, i.e., by a larger program; an ordered set of instructions that have a general or frequent use. Process-A task. Program Base-Module Descriptor entry which pOints to the first instruction in the module being described. Program Counter-CPU register which specifies the logical address of the currently executing instruction. Protection-The process of restricting a software program's access to certain portions of memory using hardware mechanisms. Typically done at the operating system and page level. PSR-Processor Status Register. A 16-bit register on Series 32000 CPU's which contains bits used by the software to make decisions and determine program flow. Push-to write a datum to the top of a stack. Quad word-Four words, i.e., 64 bits. Queue-A First-In-First-Out data storage area, in which the data may be removed at a rate different from that at which it was stored. Real Time-The actual time in human terms, related to a process. In a UNIX system, real time is total elapsed time, CPU time is the percent of time a process is actually in the CPU. Sys time is the time spent in system mode, and user time is the time spent in user mode. 10-7 Glossary (Continued) Real Time Operating Systems-An operating system which operates with a known and predictable response time limit; so that it can control a physical event. Record-A structured data type with multiple elements, each of which may be of a different data type, e.g., strings, arrays, bytes, etc. Register-A temporary storage location, usually in the CPU, which holds digital data. Relative Address-The number that specifies the difference between the base address and the absolute address. Relocatable-In reference to software programs, this is code which can be loaded into any location in main memory without affecting the operation of the program. Return Address-The address to which a subroutine call, interrupt or trap subroutine will return after it is finished executing. Routine-A procedure. Royalty-Royalty is money paid to the inventor for each item of product sold. A good analogy to use is the music business. Any time a song is used, the songwriter is paid a royalty. Think of UNIX as a song and GENIX or SYSTEM V as special arrangements. For each shipment of GENIX or SYSTEM V, the customer pays a royalty to NSC who, in turn, pays a royalty to AT&T. S8-ln the Series 32000 Static Base Register. Points to the start of the static data area for the currently executing module. Secondary Storage-This is generally slow-access, nonvolatile memory such as a hard-disk which is used to store the pages of software programs not currently needed by the CPU. Segmented Address Space-Term used to describe the division of allocatable memory space into blocks of segments of variable size. Setup Time-The minimum amount of time that data must be present at an input to ensure data acceptance when the device is clocked. Slave Processor-A processor which cooperates with the main microprocessor in executing certain instructions from the instruction stream. A slave processor generally accelerates certain functions which increases overall system throughput. Examples of slave processors are the FPU and MMU of Series 32000. Software-Programs or data structures that execute instructions or cause instructions to be executed and that will cause the computer to do work. Software License-NSC does not sell software. Rather, we license the right to use our software. A software license is required for all Series 32000 software. We use the license to protect NSC's interests and to assist in honoring our commitment to AT&T. The license is also the vehicle which we use to track customers so that updates can be issued in a timely manner. Software Q/ A-It is the charter of the Quality Assurance people to ensure that when a software product reaches the customer that it is "bug" free. In the real world, it is impossible to test every combination of functions, so some bugs do get through. The Q/ A engineer develops test programs which rigorously test the product prior to its introduction to the market place. SP1-ln the Series 32000, User Stack Pointer. Points to the top of the User Stack and is selected for all stack operations while in User Mode. SPO-In the Series 32000, Interrupt Stack Pointer. Points to the top of the interrupt stack. It is used by the operating system whenever an interrupt or trap occurs. Stack-A one-dimensional data structure in which values are entered and removed one datum at a time from a location called the Top-of-Stack. To the programmer, it appears as a block of memory and a variable called the Stack Pointer (which points to the top of the stack). Stack Pointer-CPU register which pOints to the top of a stack. Static Base Register-A 32-bit CPU register which pOints to the beginning of the static data area for the currently executing module. String-An array of integers, all of the same length. The integers may be bytes, words, or double words. The integers may be interpreted in various ways (see ASCII). Subroutine-A self-contained program which is part of a procedure. Symmetry-A computer architecture is said to be symmetrical when any instruction can specify any operand length (byte, word or double word) and make use of any address-data register or memory location while using any addressing mode. Synchronous-Refers to two or more things made to happen in a system at the same time, by means of a common clock signal. Tag-A label appended to some data entry used in a look-up process whereby the desired datum can be identified by its tag. Task-The highest-level subdivision of a user software program. The largest program entity that a computer's hardware directly deals with. TCU-Timing Control Unit. A device used to provide system clocks, bus control signals and bus cycle extension capability for Series 32000. Trap-An internally generated interrupt request caused as a direct and immediate result of the encounter of an event. T·State---One clock period. If the system clock frequency is 10 MHz, one T-State will take 100 ns to complete. Operations internal and external to the CPU are synchronized to the beginning and middle of the T-States. There are four T-States in a normal Series 32000 CPU bus cycle. 10-8 Glossary (Continued) UNIXTM-An operating system developed at Bell Laboratories in the early 1970s. Software programs that run under UNIX are written in the high-level language C, making them highly portable. UNIX systems do not distinguish user programs from operating system programs in either capability or usage, and they allow users to route the output of one program directly into the input of another. This operating is unique and is becoming very popular in the microcomputer world. USENET-A net to which UNIX systems in the United States connect. Some systems in Europe and Australia also use this net for the purpose of passing information. User-A software program. The total set of tasks (instructions) that accomplish a desired result. Tasks are managed by the operating system. User Mode-Machine state in which the executing procedure has limited use of the instruction set and limited access to memory and the PSR. uucp--Software which allows UNIX computers to pass information to other UNIX systems. Varlable-A parameter that can assume any of a given set of values. Vector-Byte provided by the ICU (Interrupt Control Unit) which tells the CPU where within the DeSCriptor table the descriptor is located for the interrupt it has just requested. Virtual Address-Address generated by the user to the available address space which is translated by the computer and operating system to a physical address of available memory. Virtual Memory-The storage space that may be regarded as addressable main storage by the system. The operating system maps Virtual addresses into physical (main memory) addresses. The size of virtual memory is limited by the method of memory management employed and by the amount of secondary storage available, not by the actual number of main storage locations, so that the user does not have to worry about real memory size or allocation. VMS-This is the operating system designed by Digital Equipment Corporation for their VAX series of computers. The original Series 32000 software was developed on a VAX which was being controlled by the VMS Operating System. Wait-State-An additional clock period added to a CPU memory cycle which gives an external memory device additional time to provide the CPU with data. Also used by bus arbitration circuitry to hold the CPU in an idle state until access to a shared resource is gained. Wlnchester-Small, hard-disk media commonly found in personal computers. Word-A character string or bit string considered as the primary data entity. For historical reasons, a word is a group of 16 bits in Series 32000 systems. 10-9 !o "iii c CD E Q ~National ~ Semiconductor 1j All dimensions are in inches (millimeters) 1.230 1--------(31.24'--------1 i MAX D. 0.568-0.605 ND.1IDENT 0.165 (4.1911 MAX 0.050 ± 0.005 (1.270 ± 0.127) TYP -L-~__~========c=~~-t ---, r II 0.008-0.015 (0.2113-0.3811 - 0.005 (0.127) MIN I-- ~ 0.590-0.620 ~ YP 0.005 (0.127)MIN (14.99-15.7&) 0.098 (2.489) MAX TVP 0.020-0.060 (0.508-1.524) -I D.100 to.Ol0 (2.540.0.254) TVP _I 0.150 (3.810) MIN 0.125-0.200 (3.175-5.080) 024C {REV GI NS Package D24C 1.008 1---(25.60)--1 I MAX I 0.610 116M) r; r"T':T"1":T"=. .,. "r-r.,i=;:; : ; ;: : ;:; : :;:; : ; ; : ;:; :~;: :;:;r: ; ; . =.".,. .",:r_r.,.,. . ,.",J MAX PINIDENT NO.1 ., r- 0.045 11.143) MAXTYP V! D.D0I~.015 0.201-0.3lll 1---- 0.590~.&20 114.99-15.15)-1 REF TVP ~~~!~~~TlCAL OUlWARD TVP 0.100 ±a.Ol0 _I 12.540 ±O.254) 1 TVP 0.D15-0m _11_ 10.311-0.58411 1 TYP 0.125 13.175) MIN lMOClREY'HI NS Package D40C 10-10 r-----------------------------------------------------------------------------,~ . ., .. .. . .. . .. II lAM (81.11I MAX " " " 31 " " 33 D " " " II " " . 11 O.IBO (14.13) ) IPIN '1 n 11 M I' tl n II m n .1 H U ~ (lUll) CD :l til 0" :l til (~:~) 0.110-0200 I--..!:!!!.MAX~~ 1 c 3" D.l10 I1UI) ~ N•• lI.'NT .1 ~ ~ MAX TV. 1----.1 o ~TYP to.zG3-OlIU 11.510-1.&20 (14..at-1S.lS) REF LEADS VERTICAL TD 110 MAX OUTWARD TV' NS Package D48A 0.020 (REf} (0.508) x 45' 0.065-0.076 ~rv~rv~~(1~.6~51~-~1, ~ r-- ... D 0.650±0.010 (16.51 ±0.254) sa TOP VIEW BonaMVlEW SIDE VIEW e...AIRevCl NS Package E44A 1I ·. ·_· . ll- 1-0.050 (1~) (1.753-2.159) t I D.050±D.OO8 ji1iij"ffiDij TYP PIN NO.1 INDEX LoiITsiIT.i5ii .....o. ,. TOP VIEW o.L (•• 203) RAD &8 PlC'S BOTTOM VI!W NS Package E68B 10·11 j (1.O05± •• 254) -~ TV' Sill( VIEW EMBtllEIIC) U) c o "iii c cu .. t-------I!:.::=~~:)------ ·-ll E is 13 1j 0.0&2 I- (1.575) RAD D. PIN NO. IIDENT (±) (±) 11 I 0.540.0.005 ~~~~~~~T.M=r.~~~~~~fT.w=~~!::Jl.O'121) 1 Z DDnED OUTLINES REFLECT ALTERNATE MOLDED BODY CONFIGURATION 0.030 (0.7&2) MAX 0.16OtO.00S 8S"±S" 1_ 0.625 ~::: _I r--(16.875+O·63S)~ -o.3BI N24A (REV E) NS Package N24A 0.0&2 ".5151 RAD PIN NO. IIDENT 1 G @ ~~ ~rr9f,F~9F.~rr9F.F~9F.~ff=~T.W=ffiFT.W9~~=ffiFT.i9~T.a=rn~:::l0'I~) 0.030 (0.162) 0.050 MAX NS Package N40A 10-12 ....""'. r------------j~~:~~I-------------t 4J , 45 43 42 ., 3635 " 3 " , , tt ~ 0.U5-D.1" :E-. ~ .. ~I-~~ iiiiii Mo. .!:1!!=.!!:!!! 11.21±D.3I1) 12.&4±a2s.) (Un±o.D1&) .... 0.050 jiiijTYP TYP . (3.175-3.113) NS Package N48A 1·.0----- "I~i'·~=o"'!:~::=~~;,)-------.I _1' 4 .40)-1 I-I~~)-.-I 0.561 MAX 1.162 1'•.51) ~U CHIP CAPACITOR 'PICS ~iW1]-L~ ".270) (2.&&7-3.5561 TYP NS Package U68D 10-13 [ 0.100 1-11.540) TYP 1 + - - - - - - 1,3110,.0,029, _ _ _ _ _-1 133,OhO,1081 9.728",0.015 I---I~:::::::~---- j1i.ii';i.ii1f ~----~~I--~~I 1+-----1~7~::::~- @o ~ M @ ~ 0 L@@ K@@ J@@ H@@ a@@ F@@ E@@ D@@ C@@O ·-·I~ @@ @@ @@ @@ @@ @@ @@ @@ @@ 1.2110 i3D.iii .@~@@@@@@@@@~@ rLrJt @@@@@@@@ ~-./ CliP CAPAClIlJR 3 PLC3 Z 3 4 & ~ ORIENTATION"N NS Package U84C 10·14 @@-f---L 1r 11 0.016-0.0z0 10.4011 -0.1081 STlNDOFFPlH .m'~~~=-~~~~~~~~~~~~ ®®®®®®®®®®®® .®O®®®®®®®®®®@® C®® ®®®®®®®®O®® n a.430±D.lIl0 (10.U:!:O.2$ot) D®®®'O"®®® ®®® ®®® F ®®® ®®® G®®® ®®® H®®® ®®® J ®®® ®®® ,®®® ®®® L ®®® ®®® .®® ®®®®®®®® ®® .®@®®®®®®®®®®@O ®®®®®®®®®®®O 14 13 12 11 10 8 & 1 & 5 4 3 Z 1 uoounza (35.SS±O.5QI) 0.43D±O.OI0 il~) ~ CHI'cm.t1T01 -++-....;·;..;"";;:;...----L--'- 45')( {::::, TYP-O.......--.-.I-OO-.•.,.. ~I 2PlC. 0.100--1 lU401 IWIIATOR all' 0014-0096 24311 tt (lUll ..... (WUj T1P I+- 0.119-0.151 ':~t'TI ilul'~n ~ ~ ~ ~ ~ ~ Tn ~" T t~:~=~':I- (~.~~=:::)-ll- 4PlCS TYP 0.t2 (0.0511 11.m-t.3f1) RADMIH TYP NS Package U125A - ·• . I... 1.l111-U\2 (3U8-3U., _jUij1YP 00 ®®®®®®®®®®®®® ®@®®®®®®®®®®®@® , ®®®®®®®®®®®®®®® ·, ®®®®®®®®®®®®®®® ®®®® I~~~~ ®®®® ®®®® J ®®®® ®®®® ®®®® ®®®® ®®®® ®®®® F ®®®® ®®®® , ®®®® 1(0)(0)(0)(0) ®®®®®®®®®®®®®®® L D H · ." .1.. (11. liT' D c ®®®®®®®®®®®®®~~ • ®@®®®®®®®®®®®@® ['--jUl.-a. -0 . Alp ® ® ® ® ® ® ® ® ® ® ® ® ® INWIII,.. Alll10El I O.I00-D.US ~ t ~ "·BJ~I~ InnrnTIfl~~ (1.271, Tn 41'tCS NS Package U172B 10-15 , .. . , , (11. I • II It 11 " II II o C r-----------------------------------------------------------------------------, o 'iii c CD E is li 'i.e • @@@@@@@@@@@@@@@@ ~ a. ~ rrll==========~II==~~~ CHIP~R "LCI ""' @@@~@@@@@@@@~@@@ ,@@@~@@@@@@@@~@@@ • @@@~@@@@@@@@~@@@ I .... • @@@ L @@@ , @@@ • @@@ • @@@ • @@@ f @@@ • @ @ @ ~~~""""",,=:=;~~~~~~~=I=d---1 1 Z 3 • I I 1 I • 10 I+-----------~~;:·:I-----------I NS Package U175A 0.020 iD.5oii MIN 0,104-0.118 (2.642-2.997) r Q "1 0.126 (10.98) .!!!i!!. (24.13) 0.0lIl=0.8011 (1.210=10.82) o~~I~M N10M REF SO 0.818-0." (211.02-21.27) SQUARE (I.ZlD) 0.330 (1.382) Ref ! OIANOM -L PEDESTAL 44.,'r'\.n.n.r;.n..r,..,.,..".,,",",",n-rH'H'H"H"'T' 2& 43 21 0.826 _ _ _ _--<.. ~I ~....._______ (20.98) NOM VEl8AIREVQ) NS Package V68A 10·16 0.526 (13.3S) F J C NOM ~~0~~!~5~~~ (1.270-12.70) 0.230 (5.B42) OIA NOM 18 (PBlESTAL) 2B (1.143) ~ 0.032-0.040 (D.BI3 1.018) (0.5OB) MAX MIN (0.127-0.3Bl) 0.026 - 0.032 (D.860 -0.813) TYP MAX (17.40-17.65) SQUARE 0.104-0.118 (2.642 - 2.997) V.UA(REYHI NS Package V44A 10·17 NOTES NOTES ~National D Semiconductor Bookshelf of Technical Support Information National Semiconductor Corporation recognizes the need to keep you informed about the availability of current technical literature. This bookshelf is a compilation of books that are currently available. The listing that follows shows the publication year and section contents for each book. Please contact your local National sales office for possible complimentary copies. A listing of sales offices follows this bookshelf. We are interested in your comments on our technical literature and your suggestions for improvement. Please send them to: Technical Communications Dept. M/S 23-200 2900 Semiconductor Drive P.O. Box 58090 Santa Clara, CA 95052-8090 For a recorded update of this listing plus ordering information for these books from National's Literature Distribution operation, please call (408) 749-7378. ALS/AS LOGIC DATABOOK-1987 Introduction to Bipolar logic • Advanced low Power Schottky. Advanced Schottky ASIC DESIGN MANUAL/GATE ARRAYS & STANDARD CELLS-1987 SSI/MSI Functions. Peripheral Functions. lSllVlSI Functions. DeSign Guidelines. Packaging CMOS LOGIC DATABOOK-1988 CMOS AC Switching Test Circuits and Timing Waveforms. CMOS Application Notes. MM54HC/MM74HC MM54HCT/MM74HCT. CD4XXX. MM54CXXX/MM74CXXX. Surface Mount DATA CONVERSION/ACQUISITION DATABOOK-1984 Selection Guides. Active Filters. Amplifiers. Analog Switches. Analog-to-Digital Converters Analog-to-Digital Display (DVM) • Digital-to-Analog Converters • Sample and Hold • Sensors/Transducers Successive Approximation Registers/Comparators. Voltage References DATA COMMUNICATION/LAN/UART DATABOOK-Rev. 1 lAN IEEE 802.3 • High Speed Serial/IBM Data Communications • ISDN Components. UARTs Modems • Transmission Line Drivers/Receivers INTERFACE DATABOOK-1988 Transmission Line Drivers/Receivers· Bus Transceivers. Peripheral Power Drivers • Display Drivers Memory Support. Microprocessor Support. level Translators and Buffers. Frequency SynthesiS • Hi-Rei Interface INTERFACE/BIPOLAR LSI/BIPOLAR MEMORY/PROGRAMMABLE LOGIC DATABOOK-1983 Transmission Line Drivers/Receivers. Bus Transceivers. Peripheral/Power Drivers level Translators/Buffers. Display Controllers/Drivers. Memory Support. Dynamic Memory Support Microprocessor Support. Data Communications Support. Disk Support. Frequency Synthesis Interface Appendices. Bipolar PROMs. Bipolar and ECl RAMs. 2900 Family/Bipolar Microprocessor Programmable logic INTUITIVE IC CMOS EVOLUTION-1984 Thomas M. Frederiksen's new book targets some of the most significant transitions in semiconductor technology since the change from germanium to silicon. Intuitive IC CMOS Evo/ution highlights the transition in the reduction in defect densities and the development of new circuit topologies. The author's latest book is a vital aid to engineers, and industry observers who need to stay abreast of the semiconductor industry. INTUITIVE IC OP AMPS-1984 Thomas M. Frederiksen's new book, Intuitive Ie Op Amps, explores the many uses and applications of different IC op amps. Frederiksen's detailed book differs from others in the way he focuses on the intuitive groundwork in the basic functioning concepts of the op amp. Mr. Frederiksen's latest book is a vital aid to engineers, designers, and industry observers who need to stay abreast of the computer industry. LINEAR APPLICATIONS HANDBOOK-1986 The purpose of this handbook is to provide a fully indexed and cross-referenced collection of linear integrated circuit applications using both monolithic and hybrid circuits from National Semiconductor. Individual application notes are normally written to explain the operation and use of one particular device or to detail various methods of accomplishing a given function. The organization of this handbook takes advantage of this innate coherence by keeping each application note intact, arranging them in numerical order, and providing a detailed Subject Index. LINEAR 1 DATABOOK-1988 Voltage Regulators • Operational Amplifiers. Buffers. Voltage Comparators. Instrumentation Amplifiers. Surface Mount LINEAR 2 DATABOOK-1988 Active Filters. Analog Switches/Multiplexers. Analog-to-Digital. Digital-to-Analog. Sample and Hold Sensors. Voltage References. Surface Mount LINEAR 3 DATABOOK-1988 Audio Circuits. Radio Circuits. Video Circuits. Motion Control • Special Functions • Surface Mount LINEAR SUPPLEMENT DATABOOK-1984 Amplifiers. Comparators • Voltage Regulators. Voltage References. Converters. Analog Switches Sample and Hold. Sensors. Filters. Building Blocks. Motor Controllers. Consumer Circuits Telecommunications Circuits. Speech. Special Analog Functions LS/S/TTL DATABOOK-1987 Introduction to Bipolar logic. low Power Schottky. Schottky. TTL • low Power MASS STORAGE HANDBOOK-Rev. 2 Winchester Disk Preamplifiers. Winchester Disk Servo Control. Winchester Disk Pulse Detectors Winchester Disk Data Separators/Synchronizers and ENDECs • Winchester Disk Data Controller SCSI Bus Interface Circuits. Floppy Disk Controllers MEMORY SUPPORT HANDBOOK-1986 Dynamic Memory Control. Error Checking and Correction • Microprocessor Interface and Applications Memory Drivers and Support NON-VOLATILE MEMORY DATABOOK-1987 CMOS EPROMs • EEPROMs • Bipolar PROMs SERIES 32000 DATABOOK-1986 Introduction. CPU-Central Processing Unit. Slave Processors. Peripherals. Data Communications and LAN's Disk Control and Interface • DRAM Interface • Development Tools. Software Support • Application Notes RANDOM ACCESS MEMORY DATABOOK-1987 StatiC RAMs. TTL RAMs. TTL FIFOs • ECl RAMs RELIABILITY HANDBOOK-1986 Reliability and the Die. Internal Construction. Finished Package. MIL-STD-883 • MIL-M-3851 0 The Specification Development Process. Reliability and the Hybrid Device. VLSIIVHSIC Devices Radiation Environment. Electrostatic Discharge • Discrete Device • Standardization Quality Assurance and Reliability Engineering. Reliability and Documentation. Commercial Grade Device European Reliability Programs. Reliability and the Cost of Semiconductor Ownership Reliability Testing at National Semiconductor. The Total Militaryl Aerospace Standardization Program 883B/RETSTM Products. MILS/RETSTM Products. 883/RETSTM Hybrids. MIL-M-3851 0 Class B Products Radiation Hardened Technology. Wafer Fabrication. Semiconductor Assembly and Packaging Semiconductor Packages. Glossary of Terms. Key Government Agencies. ANI Numbers and Acronyms Bibliography. MIL-M-3851 0 and DESC Drawing Cross Listing TELECOMMUNICATIONS-1987 Line Card Components. Integrated Services Digital Network Components. Modems Analog Telephone Components. Application Notes THE SWITCHED-CAPACITOR FILTER HANDBOOK-1985 Introduction to Filters. National's Switched-Capacitor Filters • Designing with Switched-Capacitor Filters Application Circuits. Filter Design Program. Nomographs and Tables TRANSISTOR DATABOOK-1982 NPN Transistors. PNP Transistors. Junction Field Effect Transistors. Selection Guides. Pro Electron Series Consumer Series • NAiNB/NR Series • Process Characteristics Double-Diffused Epitaxial Transistors Process Characteristics Power Transistors. Process Characteristics JFETs • JFET Applications Notes VOLTAGE REGULATOR HANDBOOK-1982 Product Selection Procedures. Heat Flow & Thermal Resistance • Selection of Commercial Heat Sink Custom Heat Sink Design. Applications Circuits and Descriptive Information • Power Supply Design Data Sheets 48-SERIES MICROPROCESSOR HANDBOOK-1980 The 48-Series Microcomputers. The 48-Serles Single-Chip System. The 48-Series Instruction Set Expanding the 48-Series Microcomputers. Applications for the 48-Series • Development Support Analog I/O Components. Communications Components. Digital I/O Components • Memory Components Peripheral Control Components ~ National D Semiconductor
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19 Create Date : 2017:06:23 11:44:26-08:00 Modify Date : 2017:06:23 12:23:02-07:00 Metadata Date : 2017:06:23 12:23:02-07:00 Producer : Adobe Acrobat 9.0 Paper Capture Plug-in Format : application/pdf Document ID : uuid:b613d6fa-38f2-6347-a3cc-33e5b378ddaf Instance ID : uuid:b6553ba3-ad8b-294b-b4cb-df1b665ad0b3 Page Layout : SinglePage Page Mode : UseNone Page Count : 1072EXIF Metadata provided by EXIF.tools